- 26 Jul, 2019 1 commit
-
-
Nick Terrell authored
Summary: Note that we only provide the strong exception guarantee for single key insertion and emplacement when `std::is_nothrow_constructible<value_type>::value == true`. We could `static_assert()` that in `sorted_vector_set`, since it seems to hold for all contbuilds. But for `sorted_vector_map` there are quite a few contbuilds broken by that static assert. So I've chosen not to static assert in `sorted_vector_set` for consistency. `insert()`, `emplace*()` and `erase()` take `const_iterator` in compliance with C++11. `erase()` has an overload that takes an `iterator` in C++17, but since we are backed by a vector I don't think that is necessary. Add `emplace_hint()` variants. Reviewed By: yfeldblum Differential Revision: D16427231 fbshipit-source-id: 4bcf6fd01d9b1320548d12b152d1cef9291c2dd2
-
- 25 Jul, 2019 4 commits
-
-
Chad Austin authored
Summary: While wrapping my head around the TDigest code, I made a few small drive-by clean-ups. Reviewed By: yfeldblum Differential Revision: D16478284 fbshipit-source-id: aaf289a57ef633f0f1527263beffb7c0edf596d1
-
Nathan Bronson authored
Summary: The standard requires that operator== for associative containers check key equality using operator==, which may be a refinement of the container's key_eq. (The requirement is expressed via equal_range and std::is_permutation, but has the same effect.) The straightforward way to implement this results in duplicate key comparisons. This diff adds a containsEqualValue method that can avoid the second check, and uses it for map and set operator==. Reviewed By: yfeldblum Differential Revision: D16455735 fbshipit-source-id: 8ccd0743f8c11bee5d91c065214cead96dd8b72c
-
Chad Austin authored
Summary: Eden no longer depends on fboss/common/
🌈 Reviewed By: simpkins Differential Revision: D16062879 fbshipit-source-id: e6cf6eed408ca6e688ff2b9b532b15aa96902ac1 -
Chad Austin authored
Summary: Add a dependency from the eden open source build to the fb303 open source build and switch EdenServiceHandler to BaseService. Reviewed By: simpkins Differential Revision: D15528156 fbshipit-source-id: 2ca5c31dd9fcc9bac43fd399b27f33b6f2c5ebfc
-
- 24 Jul, 2019 7 commits
-
-
Nanshu Chen authored
Summary: Given a cpp folly::coro::AsyncGenerator, a python async generator/iterator may be built and bridged to it. Users may use `async for ...` syntax to consume data from it. Reviewed By: yfeldblum Differential Revision: D16404979 fbshipit-source-id: dd2dfd52d00bd1a3e30e838359a27458744f6461
-
Matt Glazar authored
Summary: Some people want to use getdeps with Python 2.7. This looks easy to do, so take a step toward Python 2.7 support by fixing getdeps' tests when run with Python 2.7. For Python 3, this diff should not change behavior. This diff should address https://github.com/facebook/bistro/issues/35. Reviewed By: snarkmaster Differential Revision: D16435667 fbshipit-source-id: f5c262b12995b609263341c4de26dac7f9b12b70
-
Christian Clauss authored
Summary: This is just https://github.com/facebook/bistro/pull/37/, backported to `fbcode_builder`. snarkmaster Pull Request resolved: https://github.com/facebook/bistro/pull/37 Test Plan: Push and watch Travis Reviewed By: simpkins Differential Revision: D16453080 Pulled By: snarkmaster fbshipit-source-id: a15eaead931f046c41e50f8e3b412ef68b172d65
-
Nick Terrell authored
Summary: `dynamic::hash()` would copy every key-value pair in the object accumulator hash because of two bugs in the code: 1. The lambda took `auto` instead of `auto const&` 2. The hasher was `hash<pair<dynamic, dynamic>>` not `hash<pair<dynamic const, dynamic>>` meaning a conversion was needed. These bugs together caused 2 copies for each sub-object. Since the copies are recursive, each object got copied 2*depth times. Reviewed By: yfeldblum Differential Revision: D16452213 fbshipit-source-id: 64a55e1640abb022c148183646e9f9720fd8482e
-
Alastair Harrison authored
Summary: This is a proposed fix for issue: https://github.com/facebook/folly/issues/1193 Using `folly::resizeWithoutInitialization` with libc++ and the address sanitizer causes false positive 'container overflow' failures. This PR only addresses the problem for resizing `std::vector`. Presumably the version of `folly::resizeWithoutInitialization` for `std::string` has the same problem, but I have not verified this. ### Potential issues This PR assumes that the `__sanitizer_annotate_contiguous_container` is available in libc++, and that the `std::vector` implementation has been annotated with it. The latter occurred in ~2014: http://llvm.org/viewvc/llvm-project/libcxx/trunk/include/vector?r1=191987&r2=208319&pathrev=208319 If there are people using C++14 compilers with versions of libc++ predating the addition of the `std::vector<T>::__annotate_contiguous_container` member function then this fix will fail to compile. I'm not aware of any sane way to detect the exact version of libc++ being used. Perhaps a suitable mitigation for those (few?) people with a C++14 compiler and pre-2015 libc++ implementation would be to provide a `FOLLY_` macro to disable the annotation. Pull Request resolved: https://github.com/facebook/folly/pull/1194 Reviewed By: yfeldblum Differential Revision: D16445890 Pulled By: nbronson fbshipit-source-id: ef33bbd5cc12c71822985c5174bf8e47e6eb3757
-
Yedidya Feldblum authored
Summary: [Folly] Extract type aliases in `LtHash` members to avoid unnatural line breaks and indentation. Reviewed By: modocache Differential Revision: D16453375 fbshipit-source-id: 8d68458ba3ba7bf79fef82986f4f170e3b74ddd6
-
Yedidya Feldblum authored
Summary: [Folly] Apply `clang-format` to `folly/experimental/crypto/`. Reviewed By: modocache Differential Revision: D16453122 fbshipit-source-id: 5a24b20dba3ab472cd490afaaa24e7ab1c1295ec
-
- 23 Jul, 2019 4 commits
-
-
Adam Simpkins authored
Summary: getdeps allowed common arguments to be specified either before or after the subcommand name. However, the arguments were only actually honored if they were specified on the command line after the subcommand name. Specifying any of these arguments before the subcommand would simply be ignored, and the default value would be used. This happened since the subcommand argument's default value overwrote the value specified by the user from the main command parser. This fixes the behavior by using `argparse.SUPPRESS` so that argparse won't set the value at all if it was not specified. This allows the value from the main parser to be used correctly if the argument was not seen by the subcommand parser. Reviewed By: chadaustin Differential Revision: D16435358 fbshipit-source-id: f3893ef7a27fb018247f249f313d6438472e0140
-
Nick Terrell authored
Summary: F14NodeSet::insert() leaks memory when construction throws. Reviewed By: yfeldblum, nbronson Differential Revision: D16399317 fbshipit-source-id: 4c9385288dd212469dfbd10b3e990b3533dc66d3
-
Dan Melnic authored
Summary: eachToTuple: use to<fbstring>(delim) instead of delim Reviewed By: yfeldblum Differential Revision: D16419866 fbshipit-source-id: 7a57f41ea210c569284f6c619784adc95f03b26e
-
Andrii Grynenko authored
Reviewed By: yfeldblum Differential Revision: D16426555 fbshipit-source-id: 0211c58b6919dc412b9cd7a029f0543d0060b40b
-
- 22 Jul, 2019 4 commits
-
-
Andrii Grynenko authored
Differential Revision: D16368120 fbshipit-source-id: 0511e2f84b3bf8d1affbfbeecd05c04cb0269037
-
Paul Gossman authored
Summary: This file is included in `coro/TimedWait.h` and `coro/Collect.h`, so inclusion of those two headers is causing redefinition errors. Reviewed By: yfeldblum Differential Revision: D16414841 fbshipit-source-id: 103fa87a7c978d256e58eb67089b4cb984d362e4
-
Chad Austin authored
Summary: The /EHa flag tells MSVC to catch asynchronous (structured) exceptions in `catch(...)` blocks. This is generally a bad idea, because structured exceptions include page faults, stack overflow, division by zero, and illegal instructions, at which point attempting to run further arbitrary C++ code will have wonky effects in the best case. It would probably also clobber any state required to debug the original failure. Reviewed By: Orvid Differential Revision: D16390933 fbshipit-source-id: 2997daaf350680dc9d0c7da3cabab8749e8ecb82
-
Nick Terrell authored
Summary: The documentation claims that the constructor only throws `std::invalid_argument`, but it could throw a `ConversionError`. Reviewed By: Orvid Differential Revision: D16387303 fbshipit-source-id: 887a84f48a49acdc0516605f8204432bfd8ca800
-
- 21 Jul, 2019 2 commits
-
-
Lee Howes authored
Summary: Cut remaining explicit class template instantiations in futures. Reviewed By: mengz0 Differential Revision: D16366146 fbshipit-source-id: e755188bd4378ca713b2d73b74def76f9ad837a7
-
Nanshu Chen authored
Summary: It doesn't have any thrift specific code. Moving it to folly allows other folly Cython code use cFollyOptional. Reviewed By: fried Differential Revision: D16388752 fbshipit-source-id: 459c564571ba01fb8f22996227120ba631ffc05c
-
- 19 Jul, 2019 5 commits
-
-
Adam Simpkins authored
Summary: If `path_search()` returns that CMake is not available, raise an Exception and fail the build. This makes the failure somewhat easier to to identify. Without this the code would continue and would try to invoke `subprocess` with a value of `None` in the command argument list. This error is slightly harder to debug, since it isn't clear which command argument or environment variable is not a string. Reviewed By: chadaustin Differential Revision: D16354623 fbshipit-source-id: be972b02cb13bc70db0f867da70e5bf4c6cec46d
-
Adam Simpkins authored
Summary: The scratch path is used as part of the hash computation for each project. We need to make sure this path is always normalized to ensure that we compute the hashes consistently. Reviewed By: chadaustin Differential Revision: D16354624 fbshipit-source-id: 39b5362620bdc247cd7e7f1333dac319b354dc6f
-
Adam Simpkins authored
Summary: getdeps currently ends up calling `path_search()` repeatedly searching for various C/C++ compilers in $PATH. It ends up doing this multiple times for each dependency as it computes the project hashes. This updates the `path_search()` function to cache its results so that we don't keep performing the same searches on the file system over and over again. Reviewed By: chadaustin Differential Revision: D16354625 fbshipit-source-id: 116293bd2f636632517d26436b2332e6c10624f1
-
Dan Melnic authored
Summary: Fix mem leak due to observer not being freed Reviewed By: yfeldblum Differential Revision: D16234386 fbshipit-source-id: 54ea9e904cf6cde0e24edf1511c2e3b46a58376f
-
Chad Austin authored
Summary: This particular `std::min` is ambiguous on macOS. Reviewed By: simpkins Differential Revision: D16352637 fbshipit-source-id: d444b4b5f22c94b76da5463493efe433829bbba5
-
- 18 Jul, 2019 1 commit
-
-
Nanshu Chen authored
Summary: 1. Py_INCREF when holding py future object in bridge function. Py_DECREF in a scope guard. 2. fix typo("folly::coroTask" should be "folly::coro::Task") Reviewed By: yfeldblum, andriigrynenko Differential Revision: D16341866 fbshipit-source-id: 1d5b946596cd86c4a949e2c66f007a6140046506
-
- 17 Jul, 2019 2 commits
-
-
Chad Austin authored
Summary: eden.thrift includes fb303_core.thrift, so any cmake target that depends on eden.thrift should pull in fb303_core.thrift's include directories and libraries. Implement that machinery in CppThriftLibrary.cmake. Reviewed By: wez Differential Revision: D16062657 fbshipit-source-id: d5d962960e767a138a9b634a12aebccf72d6ef43
-
Chad Austin authored
Summary: Add a manifest and CMakeLists.txt for building fb303 with cmake. Reviewed By: wez Differential Revision: D15480895 fbshipit-source-id: d47f6ef9b9383b79b31a6170c7d4c9e8337de4d8
-
- 16 Jul, 2019 3 commits
-
-
Lee Howes authored
Summary: Deprecate Future::then(executor, callback) pending removal. This form of Future::then is ambiguous, and does not yet implement the stronger typing of thenValue and thenTry. It is also tempting to use instead of via, where it is not obvious that it has the behaviour of wrapping a via call in a push and pop of the current executor: .pushCurrentExecutor().via(executor).then(callback).popCurrentExecutor(). With the addition of inline continuations, we can instead make the nesting explicit at low cost by making it an inline continuation that launches an asynchronous task on the passed executor. Reviewed By: yfeldblum Differential Revision: D16282826 fbshipit-source-id: a94c994cf02f43f7a2bd857237885b25591fa9aa
-
Chad Austin authored
Summary: Fix an error about source directories being included in the include path in add_thrift_cpp2_library. I don't know why this was failing for fb303 and not for other projects, but adding a generation expression appears to fix the issue. Reviewed By: strager Differential Revision: D15725024 fbshipit-source-id: 6c02fed6c6703733cf9e0b130c0f90b70e3ea300
-
Rui Zhang authored
Summary: Adds a callback interface to facilitate adding elision support for folly::Singleton. Planned to add context-aware elision support which will use an adaptation method based on the interface's callsite information (ie, the type of the Singleton instance, T, and the type of the callback function, F). Reviewed By: nbronson Differential Revision: D15970597 fbshipit-source-id: 1010322c64d1b7900b4bef5b35059238efabb071
-
- 15 Jul, 2019 3 commits
-
-
Giuseppe Ottaviano authored
Reviewed By: yfeldblum, luciang Differential Revision: D16164723 fbshipit-source-id: ed0c4b2dddb09c8d97a8aca9379e4ea9b107a92c
-
Nanshu Chen authored
Reviewed By: andriigrynenko Differential Revision: D14637661 fbshipit-source-id: 0f8852e30ff554e9f0125e2d918054e4bc1e5af5
-
Nanshu Chen authored
Reviewed By: yfeldblum Differential Revision: D16214195 fbshipit-source-id: 4841b0ba3188f19aba7a0e2c2ffd04d2f5f55220
-
- 12 Jul, 2019 2 commits
-
-
Dan Melnic authored
Summary: TSAN: AtForkList::child() - ignore reads, writes and sync (Note: this ignores all push blocking failures!) Reviewed By: yfeldblum Differential Revision: D16196384 fbshipit-source-id: 28ea3b9fdb317eaffcb428f6ae705d5c4e5de887
-
Adam Simpkins authored
Summary: Fix dyndeps.py to find dumpbin.exe in more situations. Previously the code looked for dumpbin.exe under Visual Studio directories named either `BuildTools` or `Community`. On a system with an MSVC 2017 Professional install it is instead located under a directory named `Professional`. This updates the glob to allow any directory name here. Reviewed By: pkaush Differential Revision: D16207692 fbshipit-source-id: 1a57ec29653a89fd3e751b3e4408a298b4632b11
-
- 11 Jul, 2019 2 commits
-
-
Ahmed Soliman authored
Summary: We expose iobuf to Python via the folly.iobuf Python extension. The code for this extension has historically been in the fbthrift source tree. Move it to folly so that folly produces folly extensions and thrift produces thrift extensions. Without this change we end up with the folly.iobuf Cython extension being packaged with thrift rather than folly, leading the need for a number of work-arounds to allow Python and Cython to find folly.iobuf without stopping their searches on folly.executor. The tests for IOBuf python extension has been added to folly while maintaining the thrift-specific IOBuf tests in thrift. Reviewed By: vitaut Differential Revision: D14405645 fbshipit-source-id: 662a4e32c219f6d044bb6e903a2525ec1b4059c5
-
Puneet Kaushik authored
Summary: is_objfile() is used to find the executable files in the given project. Getdeps will only find and copy the dependencies of the binaries identified by this function. On Windows we will copy only the dependencies for an exe file. Reviewed By: chadaustin Differential Revision: D16185962 fbshipit-source-id: f6b5089401b242514a845e3a97b3804051d93c1c
-