- 28 Jul, 2019 1 commit
-
-
Nathan Bronson authored
Summary: Cache locality information under /sys is dispersed across a very large number of files. This is a problem for short-lived processes due to direct overheads and lock contention in the kernel. This diff switches to a heuristic strategy that infers the interference pattern from /proc/cpuinfo instead of computing it exactly. This doesn't necessarily produce exactly the correct cache hierarchy info, but it yields the correct topological sort for machines that have only core-local and socket-local cache locality. Differential Revision: D16459331 fbshipit-source-id: a322c126d1a4775d015bfb81451dbc6ad6fcc0fd
-
- 26 Jul, 2019 4 commits
-
-
Matt Glazar authored
Summary: flake8 (in Python 2.7 mode) complains that `typing` is mentioned in type annotations but is not defined: ``` fbcode_builder/getdeps/buildopts.py:251:21: F821 undefined name 'typing' subst_mapping, # type: typing.Mapping[str, str] ^ fbcode_builder/getdeps/buildopts.py:253:5: F821 undefined name 'typing' # type: (...) -> typing.Optional[str] ^ 2 F821 undefined name 'typing' 2 ``` Import `typing` explicitly to silence this warning. Because `typing` may be unavailable, import it conditionally. (Because it's only referenced in comments, failing to import `typing` should have no effect at run time.) Reviewed By: snarkmaster Differential Revision: D16435696 fbshipit-source-id: 78a4a7b07acc46aa998f02b54b1a6e52c1daafde
-
Nick Wolchko authored
Summary: We need to wrap coro_.resume() with a RequestContextScopeGuard so that if the task changes the request context, we restore it after the coroutine suspends itself. Reviewed By: lewissbaker Differential Revision: D16497375 fbshipit-source-id: 439a6f41b2294e56d2ec1b0013a6013524b5ae6a
-
Julio C. Rocha authored
Summary: Allow builds for 64-bit ARM (MSVC) to use the same implementation of `__builtin_clzll` as ARM and x86 architectures. Pull Request resolved: https://github.com/facebook/folly/pull/1191 Test Plan: Imported from GitHub, without a `Test Plan:` line. Reviewed By: yfeldblum Differential Revision: D16350573 Pulled By: Orvid fbshipit-source-id: f25087b3a53de09767f505ee8c7d971a6d957189
-
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
-