- 02 Nov, 2018 11 commits
-
-
Orvid King authored
Summary: This silences HowToEven's nullability warning. Reviewed By: yfeldblum Differential Revision: D12889459 fbshipit-source-id: c460bf3bbb6c4c10df5a2aabbf99689c31bc2d21
-
Andrii Grynenko authored
Summary: Existing tail call optimization implementation only works if the returned future already had callback set by the time the future returned by .then() callback is completed, which makes it's behavior racy. This diff takes a slightly different approach by adding a new mode to Core, which makes it forward callback to another Core, once the callback is set. Reviewed By: yfeldblum Differential Revision: D12837044 fbshipit-source-id: 13ad822d8dfdcef8bb5a28108c24195ae911550b
-
Nathan Bronson authored
Summary: AnnotateBenignRaceSized is prototyped with a long size arg in some third-party libraries and a size_t arg in others. This diff moves folly's prototypes for the TSAN hooks out of a widely-included header file so that the incompatible declarations can coexist. This function is declared with C linkage, so the mismatch is not a problem at link time. Reviewed By: yfeldblum Differential Revision: D12881785 fbshipit-source-id: af1b7404d9c3d9b728105591c112143d7388f4f9
-
Orvid King authored
Summary: As-per title, these functions need NetworkSocket support. Reviewed By: yfeldblum Differential Revision: D12813114 fbshipit-source-id: cc49aa9478d728ff3d1bd4fcb8957083066f7d8a
-
Orvid King authored
Summary: More along the path. Reviewed By: yfeldblum Differential Revision: D10847193 fbshipit-source-id: 5d946855c00752d23c012f2c91f07d276760d371
-
Orvid King authored
Summary: Add overloads to various places and forward the file descriptor versions to the NetworkSocket forms. Reviewed By: yfeldblum Differential Revision: D10843917 fbshipit-source-id: f1b6958eac2f23dc788e1a3a3557baeed38284f1
-
Orvid King authored
Summary: The first step on the path Reviewed By: yfeldblum Differential Revision: D10355407 fbshipit-source-id: 01eec439ae65484e233d5fe94977643d7ab2ed6d
-
Orvid King authored
Summary: Currently it's just leaking file descriptors, stop that by backing it with the map. Reviewed By: yfeldblum Differential Revision: D10842827 fbshipit-source-id: 434d7463ede1639e0fa2edf0be438aa561b39b16
-
Chad Austin authored
Summary: In a minor way, this improves folly::Optional's compliance with std::optional. `op = folly::none` used to work by instantiating an empty optional and passing that in. This is more direct. The existence of this assignment operator is why folly::None must not have a default constructor to support `op = {}` syntax for disengaging the optional. Reviewed By: yfeldblum Differential Revision: D12842963 fbshipit-source-id: 757bb66030a667ef0bc1cbe56d150740e712ed45
-
Orvid King authored
Summary: Lookups through the map are free on platforms where the socket type is a file descriptor, but this lookup is needed to make incremental conversion of Folly APIs viable. Reviewed By: yfeldblum Differential Revision: D10304788 fbshipit-source-id: 286e206986743f9484f687f6efc0ae7f0e363fd0
-
Orvid King authored
Summary: The end goal will be to have all calls to the sockets APIs go through the agnostic API rather than the current approach, as the current approach causes a limit of ~64k sockets, due to file descriptor limitations on Windows. All this diff does for now is create a sockets API that is not backed by file descriptors on Windows. This also shifts the sockets portability layer to be backed by these APIs until the sockets portability layer is removed. Reviewed By: yfeldblum Differential Revision: D10235797 fbshipit-source-id: 1c073231290da48832608f6fec272c3d675bdfd7
-
- 01 Nov, 2018 4 commits
-
-
Chad Austin authored
Summary: It's never useful to write `folly::None()` or `folly::None{}` instead of using `folly::none`, so disallow the former. This brings `folly::none` closer to `std::nullopt`. Reviewed By: yfeldblum Differential Revision: D12842421 fbshipit-source-id: 7a3526c8ab16cda8eed1c60650d2cae939c9f96a
-
Nathan Bronson authored
Summary: Original commit changeset: 10d2921df998 Differential Revision: D12881285 fbshipit-source-id: d61353c3e936543d2e27643e5c0d584079cd2a72
-
Dan Melnic authored
Summary: Fix a dbgo-asan undefined reference to 'folly::detail::BufferedStat<folly::TDigest, std::chrono::_V2::steady_clock>::flush()' linker error Reviewed By: yfeldblum Differential Revision: D10458537 fbshipit-source-id: 8846440494e83955a43f9d4477885521f34ae7f9
-
Kirk Shoop authored
Summary: migrated tests fixed some bugs introduced while tests were disabled Reviewed By: yfeldblum Differential Revision: D10515231 fbshipit-source-id: 34cddb6588c4da9cd05256111bf9626b013dd4fa
-
- 31 Oct, 2018 4 commits
-
-
Nathan Bronson authored
Summary: This diff allows you to override the function attributes for TSAN hooks at compile time using -DFOLLY_ATTR_FOR_SANITIZE_THREAD_HOOKS=xyz. This is useful for builds that statically link with a library like abseil that has its own declarations for the hooks. Reviewed By: yfeldblum, kennyyu Differential Revision: D12866286 fbshipit-source-id: 10d2921df998d5dc11f86a5383111d650d31dd8e
-
Nathan Bronson authored
Summary: This diff adds folly types HeterogeneousAccessLess<T>, HeterogeneousAccessEqualTo<T>, and HeterogeneousAccessHash<T> that are suitable as the default functor types for containers that support heterogeneous access, and it makes those the default for F14 maps and sets. The new functor types will be marked as transparent when possible, otherwise they will fall back to the non-transparent std::less<T>, std::equal_to<T>, and std::hash<T> respectively. Heterogeneous lookup is provided for types that are implicitly convertible to Range<T const*>, where T is an integral type. This includes std::string, std::string_view (when available), folly::StringPiece, folly::MutableStringPiece, std::array, std::vector, folly::small_vector. HeterogeneousAccessHash<T> will use folly::hasher<folly::Range< T::value_type const*>> for hashing when it provides a transparent hash, except that for libstdc++ and libc++ we special-case the case hashing Range<char const*> to use the same hash function as std::string. That makes this diff performance neutral for existing use cases. Reviewed By: ot Differential Revision: D8768761 fbshipit-source-id: ded7c86e30479409cf838ac8219241622a4e2332
-
Jason Rahman authored
Summary: The SemiFuture::promise_type class didn't properly handle move only types in return_value(). Added overload to handle T&& case properly. Reviewed By: lewissbaker Differential Revision: D12837450 fbshipit-source-id: 74edbb2d9de32abc2859f337047ca4e32414de7f
-
Yedidya Feldblum authored
Summary: [Folly] Let EventBaseLocal::getOrCreateFn take the callable by value, rather than by non-const lvalue ref. This lets temporaries, including lambda expression temporaries, be passed as the callable argument. Reviewed By: andriigrynenko Differential Revision: D12831069 fbshipit-source-id: 4c61f2cd3fb3eeaab6e7c72d2b0458b657c9d107
-
- 30 Oct, 2018 7 commits
-
-
Kyle Nekritz authored
Summary: We have had several bugs due to this, running tests with an error in the stack by default should help catch them. Reviewed By: xybu Differential Revision: D12843909 fbshipit-source-id: 82432b338f24b4a566c6290d39e34cf2e55092ca
-
Andrii Grynenko authored
Summary: The is_same check was unnecessary. The type of the future which .then() is called on, doesn't matter because it's core is not participating in the callback stealing. Reviewed By: yfeldblum Differential Revision: D12836654 fbshipit-source-id: 8dcf3f0a4e44e01a1efda9534edafce9a591e9cf
-
Kyle Nekritz authored
Summary: Otherwise this function throws if there was an error left in the stack. Reviewed By: AjanthanAsogamoorthy Differential Revision: D12840871 fbshipit-source-id: 233c10e0448c937a68bf8f09d24ccaa12fcc57a4
-
Chad Austin authored
Summary: I spent a day trying to convert some code from folly::Optional to std::optional. One hour of that was making the necessary syntax changes. The rest was diagnosing why certain bits of code broke. The reason turned out to be that `folly::Optional` allowed construction from nullptr and that `std::optional<bool>{folly::none}` would result in `std::make_optional(false)`, not `std::nullopt`. Instead of implementing folly::none with a pointer-to-member, copy the implementation of the upcoming std::nullopt. As teams switch to C++17, this should smooth the migration. Reviewed By: yfeldblum Differential Revision: D10475780 fbshipit-source-id: 3a072b5e7e95209721d871361f5a24e3e30472cd
-
Lee Howes authored
Summary: Make deprecation messages firmer. Reviewed By: WillerZ Differential Revision: D10855134 fbshipit-source-id: 181bc0ed6d5ccaefdca22264182e8fbe47c1a9b9
-
Aaryaman Sagar authored
Summary: Add a missing initializer list constructor and variadic argument emplacing make_optional variants. Reviewed By: yfeldblum, ot Differential Revision: D8918866 fbshipit-source-id: a343602f91b5e0ee0b5c293ca929a699b6104996
-
Aaryaman Sagar authored
Summary: This shaves off 0.5ns Reviewed By: yfeldblum Differential Revision: D10320634 fbshipit-source-id: 1a790df14b128b3b02c810ec45ba48c2ce5e4612
-
- 28 Oct, 2018 1 commit
-
-
Jason Rahman authored
Summary: FutureAwaitable currently does not properly handle the case where an already fulfilled future is awaited on. In particular, await_ready() is based on the value of future_.isReady(), while await_resume() pulls the value from result_, regardless of whether or not result_ has been correctly initialized by the callback registered in await_suspend. When an already fulfilled future is awaited on, await_ready() will return true immediately, and await_suspend() will be bypassed and await_resume() called immediately, throwing an exception since result_ hasn't been initialized. Reviewed By: lewissbaker Differential Revision: D12816274 fbshipit-source-id: f5f697e433c1621f829af6f5509d08bac2229ddb
-
- 27 Oct, 2018 6 commits
-
-
Orvid King authored
Summary: MSVC was complaining very loudly about these being implicitly truncated to `int`s in the initialization of OptionsMap, so declare them as `int`. Reviewed By: yfeldblum Differential Revision: D10861911 fbshipit-source-id: 0d5c52fe4b5e59c5e101546093a13849fe3b2a7a
-
Orvid King authored
Summary: It doesn't exist on Windows, so only include it when it's acutally used. Reviewed By: yfeldblum Differential Revision: D10861997 fbshipit-source-id: 04156a09f2fab83ae3b958c1cbcd41c347d5f9e8
-
Andrew Gallagher authored
Summary: This was actually just incorrectly masking a inconsistency between `folly/memory/Malloc.h` and `<jemalloc/jemalloc.h>` and the proper fix is D10866789. Reviewed By: elsteveogrande Differential Revision: D12207144 fbshipit-source-id: 2ecf818c04c8e124bcfe96433a7269b3deadb502
-
Yedidya Feldblum authored
Summary: [Folly] Fix as_const detection for libc++, which has the function in C++17 mode as of clang-v5 but which does not define the recommended feature-test macro `__cpp_lib_as_const`. (Note: this ignores all push blocking failures!) Reviewed By: ngoyal Differential Revision: D12812804 fbshipit-source-id: 25e01be2688346e9e434a44cf01df142129ae339
-
Xiangyu Bu authored
Summary: Current behavior of OpenSSLCertUtils::readCertsFromBuffer() is that it stops parsing as soon as it encounters the first error. We don't know if the error is EOF or something else. Sometimes we want to reject the result if the buffer is malformed instead of accepting a partially parsed result. This diff makes the API throw when given malformed cert buffer. Reviewed By: anirudhvr Differential Revision: D10467792 fbshipit-source-id: 2c15266e5f00866dfaafe0a5ce88d24459e8b561
-
Andrii Grynenko authored
Summary: Adding support for SemiFutures with deferred work. Reviewed By: yfeldblum Differential Revision: D12812057 fbshipit-source-id: 7da73124d27063eb730be1abe134ae9838494af0
-
- 26 Oct, 2018 3 commits
-
-
Lee Howes authored
Summary: Part of the larger project to modify Future<T>::then to be r-value qualified and use Future<T>::thenTry or Future<T>::thenValue. The goal is to disambiguate folly::Future and to improve type and lifetime safety of Future and its methods. Codemod: future<T>.then(callable with operator()(not-a-try)) to future<T>.thenValue(callable with operator()(not-a-try)). future<T>.then(callable with operator()()) to future<T>.thenValue(callable with operator()(auto&&)). future<T>.then(callable with operator()(auto)) to future<T>.thenValue(callable with operator()(auto)). future<T>.then(callable with operator()(folly::Try<T>)) to future<T>.thenTry(callable) Reviewed By: Orvid Differential Revision: D10859128 fbshipit-source-id: 6df42d7d9bee324a118c114ff7ada76f93d94268
-
Aaryaman Sagar authored
Summary: FunctionRef was lacking benchmarks, this adds a couple very basic ones to compare against strategies like std::function, std::function with std::reference_wrapper and folly::Function. With small and large closures Reviewed By: yfeldblum Differential Revision: D10863252 fbshipit-source-id: 40c3296095c693830d9fe6b4488f4708d4916af6
-
Song Zhou authored
Reviewed By: yfeldblum Differential Revision: D10851133 fbshipit-source-id: 72493988c4d32011b1ee76af7191d3bbe5fe43b2
-
- 25 Oct, 2018 4 commits
-
-
David Lam authored
Summary: Would help make these types of errors easier to debug Reviewed By: yfeldblum, ot Differential Revision: D10857148 fbshipit-source-id: fbb1defbde2f3695e91da92ca502c0a0aed4c7ec
-
Orvid King authored
Summary: This test is the definition of how not to write a reliable test, resulting in extreme flakyness and timeouts, so nuke it. Reviewed By: yfeldblum Differential Revision: D10856270 fbshipit-source-id: d8b585d439c091e763075a604d2fe21b517ae93c
-
Jatin Kumar authored
Summary: Cognitive overhead of remembering to use mode/opt while running benchmarks is just too much and easy to forget. Adding a warning message at the bottom of the benchmark result output so that the user gets a signal. Reviewed By: yfeldblum Differential Revision: D10274914 fbshipit-source-id: a84932fa16744da9bd025ed5b01df14f95550145
-
Harsh Poddar authored
Summary: There is a bug in the coloring logic which leads to the color not being cleared after statement until we log a message with INFO severity. Reviewed By: yfeldblum Differential Revision: D10519966 fbshipit-source-id: 9606f24c3436eb11f3f2e313dfe5dea81d3681db
-