1. 24 Feb, 2021 1 commit
    • Yair Gottdenker's avatar
      moving CoroSocket to folly/experimental/coro · d2e690a6
      Yair Gottdenker authored
      Summary: This is the second attempt, the first one was D22958650. Decided to do a different diff as some affected files were moved from experimental/afrind/coro/h2proxy to proxygen/facebook/lib/experimental/coro/ which created some confusion while arc pulling
      
      Reviewed By: yfeldblum
      
      Differential Revision: D25432869
      
      fbshipit-source-id: a183898302a79084d890548b9b7ecc4409f501d2
      d2e690a6
  2. 23 Feb, 2021 10 commits
    • Andrew Gallagher's avatar
      Make `executable_path()` work on apple platforms · be76ab69
      Andrew Gallagher authored
      Summary:
      `/proc/self/exe` doesn't exist on apple platforms, so provide an
      implementation that does.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D26599826
      
      fbshipit-source-id: e00dde59d639063e59cb97feb75caf0a49a01954
      be76ab69
    • Yedidya Feldblum's avatar
      move order_preserving_reinsertion_view · b8116108
      Yedidya Feldblum authored
      Summary: Move `order_preserving_reinsertion_view` to a new header `folly/container/View.h` and revise its customization facility in terms of `folly::tag_invoke`.
      
      Reviewed By: iahs
      
      Differential Revision: D25787117
      
      fbshipit-source-id: b7ccd3b6a1413a2639ef1beb1f1ee23bbed045e3
      b8116108
    • Udip Pant's avatar
      upgrade katran's libbpf dependency to 0.3 · 186ce88c
      Udip Pant authored
      Summary:
      This'll move getdeps dependency for katran to 0.3 (which is already the case
      for travis build)
      
      Reviewed By: avasylev
      
      Differential Revision: D26129525
      
      fbshipit-source-id: ec9d0615a3e02d75454a3f9dd974ac5c7589e40a
      186ce88c
    • Dan Melnic's avatar
      IoUringBackend benchmarks · 1e8decf5
      Dan Melnic authored
      Summary: IoUringBackend benchmarks
      
      Reviewed By: kevin-vigor
      
      Differential Revision: D26594012
      
      fbshipit-source-id: c6a08e6ec13b736c32619958713706118e2f1a49
      1e8decf5
    • Yedidya Feldblum's avatar
      no need to overload return_value · 0e34d328
      Yedidya Feldblum authored
      Summary: No need to overload coroutine `promise_type::return_value` to handle initializer list expressions - just template and default the parameter.
      
      Reviewed By: Orvid
      
      Differential Revision: D26508901
      
      fbshipit-source-id: 61c4a2225355b0044638cd89b9153d599317a453
      0e34d328
    • Misha Shneerson's avatar
      Fix EventBaseLocal destruction · 261d05eb
      Misha Shneerson authored
      Summary: When EventBase is destructed, the underlying local storage should be destructed prior to event loop being destroyed.
      
      Reviewed By: andriigrynenko
      
      Differential Revision: D26583298
      
      fbshipit-source-id: 9bfb8442b2a827aa2b3564b27ea765ec1e7b26a2
      261d05eb
    • Orvid King's avatar
      Workaround MSVC 2019.8 bug with ranges::enable_view by including the definition · 941f7020
      Orvid King authored
      Summary: Owing to a set of bugs, it is not currently possible to actually declare ranges::enable_view without actually defining it, so we have to include the actual definition when we're in compilation units with it available. If the definition is not available, then the `const` form is sufficient to keep things compiling.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D26337214
      
      fbshipit-source-id: fb042b62967e3e6f536e8268e1b6dd6ccd20b810
      941f7020
    • Yedidya Feldblum's avatar
      fix get_underlying constexpr-specification mismatch · a50bffda
      Yedidya Feldblum authored
      Summary: Some compilers fail when `friend` declarations have mismatched `constexpr`-specifiers.
      
      Reviewed By: Mizuchi
      
      Differential Revision: D26601032
      
      fbshipit-source-id: a49e327ff9353ddb21eac96776f97d4089c85374
      a50bffda
    • Yedidya Feldblum's avatar
      use std::filesystem in File tests · b4a6fc01
      Yedidya Feldblum authored
      Summary: Use `std::filesystem` or `std::experimental::filesystem`, via `folly/portability/Filesystem.h`, in `folly/test/FileTest.cpp`. Replaces the use of `boost::filesystem`.
      
      Reviewed By: Orvid
      
      Differential Revision: D26572916
      
      fbshipit-source-id: f769e00b2772f3bfaed899f5694d89db87089e35
      b4a6fc01
    • Yedidya Feldblum's avatar
      fix folly::fs::lexically_normal · 54bd7398
      Yedidya Feldblum authored
      Summary:
      Make the implementation of `folly::fs::lexically_normal` match C++17 `std::filesystem::path::lexically_normal`. The implementation from `boost::filesystem::path::lexically_normal` is easy to fall back on but has some differences.
      
      The implementation is copied mutatis mutandis from https://github.com/gulrak/filesystem/ at tag v1.5.0, in which `ghc::filesystem` is a complete portable standalone implementation of the `std::filesystem` spec and released under the MIT license.
      
      Reviewed By: Orvid
      
      Differential Revision: D26572520
      
      fbshipit-source-id: 5ce03f37c078ee4f62e3480d4abc259199867c8e
      54bd7398
  3. 22 Feb, 2021 5 commits
    • Yedidya Feldblum's avatar
      Prefer to nest helper functions in coro tests · 9c47cb9c
      Yedidya Feldblum authored
      Summary: [Folly] Prefer to nest helper functions in coro tests within the specific tests which use them.
      
      Reviewed By: ispeters, Orvid
      
      Differential Revision: D20324066
      
      fbshipit-source-id: 4134145c406f2d1fdeaddf9a7d244c1bd25ec60b
      9c47cb9c
    • Yedidya Feldblum's avatar
      work around miscompile in parallel-map test · 4f5128bb
      Yedidya Feldblum authored
      Summary: Some versions of gcc miscompile the code in the parallel-map exception test. Work around the miscompile by adding an extra log line.
      
      Reviewed By: Orvid
      
      Differential Revision: D26509079
      
      fbshipit-source-id: 1474437d96aeabad0294bcb395b7baec229eb9ba
      4f5128bb
    • Yedidya Feldblum's avatar
      fix casing of check_cxx_compiler_flag · f4f3b9c2
      Yedidya Feldblum authored
      Summary: The CMake function `check_cxx_compiler_flag` is snake-case rather than uppercase.
      
      Reviewed By: vitaut
      
      Differential Revision: D26573998
      
      fbshipit-source-id: 91d5e2cea933d35967d013b2344e50f52fb6ba77
      f4f3b9c2
    • Yedidya Feldblum's avatar
      tweak try_and_catch test for windows · a3c7ccef
      Yedidya Feldblum authored
      Summary: Tweak a test that relies on hardcoding the expected result of `std::exception().what()` instead to call that and use the result without hardcoding it.
      
      Differential Revision: D26573226
      
      fbshipit-source-id: 3802d12186c96b864e2680d99f5cfca185235f8d
      a3c7ccef
    • Misha Shneerson's avatar
      FiberManager's shutdown only waits for remote tasks to drain · 9e8bcdc8
      Misha Shneerson authored
      Reviewed By: andriigrynenko
      
      Differential Revision: D26572552
      
      fbshipit-source-id: 035e1313cd4dec070555b5cd41efc58a0b4a948a
      9e8bcdc8
  4. 20 Feb, 2021 4 commits
    • Yedidya Feldblum's avatar
      revise EventBaseLocal interface · 830810d1
      Yedidya Feldblum authored
      Summary:
      Revise `EventBaseLocal` interface to export the suite `emplace`, `try_emplace`, `emplace_with`, and `try_emplace_with`, and adding initializer-list overloads for completeness.
      
      This mirrors the interface of `DelayedInit`.
      
      Differential Revision: D26262870
      
      fbshipit-source-id: 951e2f781a1b5546d96adb2e77aa1cadfbff2d6b
      830810d1
    • Yair Gottdenker's avatar
      changing AsyncServerSocket::acceptError to receive exception_wrapper · 5a74908e
      Yair Gottdenker authored
      Reviewed By: yfeldblum
      
      Differential Revision: D25514804
      
      fbshipit-source-id: 7e6ad5c6063d2cf5047f656c0f2336b34576c60b
      5a74908e
    • Andrii Grynenko's avatar
      Make ExecutorLoopController cancel local callback in destructor · a9fdc51d
      Andrii Grynenko authored
      Summary: EventBaseLoopController does this already. This way it's safe to destroy FiberManager even if some local callback is left in the executor.
      
      Differential Revision: D26563934
      
      fbshipit-source-id: 0845e5c532634fa9c53694cd67e983886cea82de
      a9fdc51d
    • Yedidya Feldblum's avatar
      filesystem portability header · 22e61b3f
      Yedidya Feldblum authored
      Summary:
      A portability header for `<filesystem>` backed up by `<experimental/filesystem>`.
      
      The only thing it does is figure out the right header to include and the right namespace to import so that folly code which already may assume C++17 can use names via `folly::fs`.
      
      And polyfills `lexically_normal`.
      
      Reviewed By: Orvid
      
      Differential Revision: D26453988
      
      fbshipit-source-id: 7a7b2e7a312f5d0438d60bc866b109240d096520
      22e61b3f
  5. 19 Feb, 2021 7 commits
    • Robin Cheng's avatar
      Fix memory ordering for EventBase::isRunning(). · 621b5b0b
      Robin Cheng authored
      Summary: Technically speaking the contract of isRunning() is unclear on whether it can be used as a synchronization mechanism; it could, e.g. be used solely for diagnostics purposes, in which case memory_order_relaxed would be enough. But it is used at least to implement waitUntilRunning(), so memory_order_acquire/memory_order_release is needed to achieve proper synchronization.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D26436697
      
      fbshipit-source-id: 2be07c473e1cb286e6044fa677304816921e888d
      621b5b0b
    • Nick Terrell's avatar
      Reset contexts when returning to pool · 87d9f1da
      Nick Terrell authored
      Summary:
      Currently, the first thing you want to do when getting a context from the pool is
      reset it, because you don't know the state the last user left it in. This is bug
      prone, because you may forget to reset the context. Instead, the pool should
      handle the resetting logic, so it cannot be forgotten.
      
      This diff adds a `Resetter` to the pool, and the reset function is called every
      time a context is returned to the pool. I chose to reset when returning to the
      pool instead of when retrieving a context because that gives the context a
      chance to free any resources it doesn't expect to need in the future before it
      potentially becomres idle.
      
      Reviewed By: Cyan4973
      
      Differential Revision: D26439710
      
      fbshipit-source-id: 8b9afa3db2fda4d167f0fd5307791e8a8a4f283c
      87d9f1da
    • Nick Terrell's avatar
      Surrender the ZSTD_{C,D}Ctx on (de)compression end · 7dd7df55
      Nick Terrell authored
      Summary: We already cache the contexts in the context pool. We don't also need to cache the contexts in the `Codec` when the user keeps the codec around. This will allow us to better utilize the contexts, and potentially reduce memory usage.
      
      Reviewed By: felixhandte
      
      Differential Revision: D26356275
      
      fbshipit-source-id: 6d80326f469de61094478c73b6fe557eebcd7a22
      7dd7df55
    • Yedidya Feldblum's avatar
      mark type_info_of param as [[maybe_unused]] · bdd1109c
      Yedidya Feldblum authored
      Summary: Mark the param to `folly::type_info_of` param as `[[maybe_unused]]` since, when RTTI is unavailable, it is unused.
      
      Differential Revision: D26537864
      
      fbshipit-source-id: 3fd0a1bb0d3ecbbcdc5e07f153e321a0b8537478
      bdd1109c
    • Yedidya Feldblum's avatar
      let [[maybe_unused]] wrapper support msvc · 77f0c0d9
      Yedidya Feldblum authored
      Summary: Let `FOLLY_MAYBE_UNUSED` which wraps `[[maybe_unused]]` support MSVC even when the latter misreports `__cplusplus`.
      
      Differential Revision: D26537706
      
      fbshipit-source-id: 37554b7f9d27332088b72de41e53a5b85ef46327
      77f0c0d9
    • Yedidya Feldblum's avatar
      in uncaught_exceptions, if windows, assume c++17 · 36eb535c
      Yedidya Feldblum authored
      Summary: This permits removal of the `_getptd()`-based implementation of `folly::uncaught_exceptions` sometimes used on windows, in favor of forwarding to `std::uncaught_exceptions`.
      
      Reviewed By: akrieger
      
      Differential Revision: D26509011
      
      fbshipit-source-id: b8fd14df91fcd849420d3c52328cb080b528245b
      36eb535c
    • Misha Shneerson's avatar
      Fix ASAN violations when shutting down FiberManager from python · 36dbf002
      Misha Shneerson authored
      Reviewed By: andriigrynenko
      
      Differential Revision: D26497717
      
      fbshipit-source-id: 35307fce7f9e85882f8f9e5a6bdfe651122727a3
      36dbf002
  6. 18 Feb, 2021 5 commits
    • Yedidya Feldblum's avatar
      ensure all lang tests are in the cmake build · 1d97d5b6
      Yedidya Feldblum authored
      Summary: Ensure all the tests in `folly/lang/test/` are in the cmake build. For disambiguation, prefix them all with `lang_`.
      
      Reviewed By: Orvid
      
      Differential Revision: D26496837
      
      fbshipit-source-id: 185a7990c2c7f535123229a07436e901dca6ae7f
      1d97d5b6
    • Orvid King's avatar
      Use nullptr not 0 for fallback in cpp demangle code · ee838173
      Orvid King authored
      Summary: This returns a char* so correct return is nullptr, not 0.
      
      Reviewed By: usikder
      
      Differential Revision: D26122982
      
      fbshipit-source-id: 8c62520403fce966f83939be7cc03f6dc6be4aee
      ee838173
    • Yedidya Feldblum's avatar
      cut log lines in uncaught_exceptions test · 0effaa94
      Yedidya Feldblum authored
      Summary: Cut log lines in `folly::uncaught_exceptions` test cases. Having log lines is helpful when debugging test failures but we can always add them in when necessary. This makes running the test binary directly less noisy, and running test binaries directly is an important case not to be overlooked.
      
      Reviewed By: markisaa
      
      Differential Revision: D26504200
      
      fbshipit-source-id: 00e06e1396b9ccc9cdd739ace1007726ebaa3d88
      0effaa94
    • Yedidya Feldblum's avatar
      getdeps show-build-dir · 646b9998
      Yedidya Feldblum authored
      Summary: A show-build-dir subcommand. Possibly useful for building a project and then running only one test or benchmark binary directly.
      
      Reviewed By: wez
      
      Differential Revision: D26502869
      
      fbshipit-source-id: 0d8f6c42a2bbeb2440503a39c7fc770e3b3e4fff
      646b9998
    • Yedidya Feldblum's avatar
      cut std::hash specialization for int128 · cb2d12eb
      Yedidya Feldblum authored
      Summary:
      Cut `std::hash` specialization in folly for `signed __int128` and `unsigned __int128`.
      
      There are cases where folly does polyfill things in the global and standard namespaces, but in order for folly to play nicely with other libraries this practice is overall to be avoided.
      
      Reviewed By: nlutsenko
      
      Differential Revision: D26455137
      
      fbshipit-source-id: 948140513b8daf6fe777d04ea42346d69c5eb03f
      cb2d12eb
  7. 17 Feb, 2021 4 commits
    • Yedidya Feldblum's avatar
      no fancy macros in the enumerate tests · fbba2051
      Yedidya Feldblum authored
      Summary: Avoid the use of fancy macros in the `folly::enumerate` test suite in order to facilitate cmake's gtest integration.
      
      Reviewed By: Orvid
      
      Differential Revision: D26477530
      
      fbshipit-source-id: 1838709e76016c389b052a9523a0681c58b8af96
      fbba2051
    • Yedidya Feldblum's avatar
      cut EventBaseLocal::emplace overload taking pointer · 04d6ac76
      Yedidya Feldblum authored
      Summary: Cut the `EventBaseLocal::emplace` overload taking a pointer since it is unused and to consolidate on the approach of not letting internals leak.
      
      Differential Revision: D26246689
      
      fbshipit-source-id: 0d9dc1bfcc3d37dc980142b221ee4443b98205a3
      04d6ac76
    • Lee Howes's avatar
      Switch SerialExecutor to default to the immutable global executor · 0f4db9c7
      Lee Howes authored
      Summary: Use the global immutable executor by default and remove the default entirely for the deprecated form.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D26414638
      
      fbshipit-source-id: b48fe4683165e7f29e8003560f2917e143138bb0
      0f4db9c7
    • Yedidya Feldblum's avatar
      let File tests not use /etc/hosts · f45ed0ab
      Yedidya Feldblum authored
      Summary: Let `File` tests not use `/etc/hosts` since that file is not portable across all systems. Likewise the fs-util tests using `/usr/lib` and `/usr/bin`.
      
      Reviewed By: chadaustin
      
      Differential Revision: D26447117
      
      fbshipit-source-id: 669a3d7e0ea4efd54ca2efd5c15d8a21227b5c8c
      f45ed0ab
  8. 16 Feb, 2021 2 commits
    • Yedidya Feldblum's avatar
      Let some utility functions be invocable objects · 993de579
      Yedidya Feldblum authored
      Summary:
      [Folly] Let some utility functions be invocable objects: `to_signed`, `to_unsigned`, `to_narrow`, `to_underlying`.
      
      Additionally, force the template type param to be deduced.
      
      Reviewed By: markisaa
      
      Differential Revision: D21959729
      
      fbshipit-source-id: eedd9f2f84efb62c99ed0d5f65123a7fe000cf0a
      993de579
    • Lior Israeli's avatar
      Remove seperate logic for first value in histogram · 57b8506e
      Lior Israeli authored
      Summary:
      Currently there is logic that keeps histograms which only have one value reported to it separately.
      
      The multi level histogram keeps the histogram for several time buckets. Just in case we had only one value added, it will keep reporting the value even if it was reported long ago and shouldn't appear in the time window level we are querying.
      
      This is inconsistent with non histogram metrics (`avg` for example) reported from the same histogram, which don't have this logic.
      
      A scenario would look like this:
      1. Report value 5 to histogram
      2. Immediately query the 60 second level -> `avg` reports 5, `p50` reports 5.
      3. Wait 2 minutes
      4. look at the 60 second level -> `avg` reports 0 (no value in the last 60 seconds) but `p50` keeps reporting 5.
      
      I think this does more harm than good, so I suggest to kill this behavior.
      
      Reviewed By: simpkins
      
      Differential Revision: D26339016
      
      fbshipit-source-id: 120485f8b78876e60ce66a534edcf86e7d9a836d
      57b8506e
  9. 14 Feb, 2021 2 commits
    • Yedidya Feldblum's avatar
      no shared_ptr in EventBaseLocal · 38c1a117
      Yedidya Feldblum authored
      Summary: [folly] no `shared_ptr` storage in `EventBaseLocal` since its refcount operations are unnecessary. Pare it down to `unique_ptr` with a straightforward fun-ptr deleter.
      
      Reviewed By: iahs
      
      Differential Revision: D26246619
      
      fbshipit-source-id: 3d0214ccb6c4730ca7b573065b4468a0dce85d40
      38c1a117
    • Yedidya Feldblum's avatar
      thunk · 619ff1d1
      Yedidya Feldblum authored
      Summary:
      Introduce `folly::detail::thunk`, a carefully curated collection of generic general-purpose thunk templates: `make`, `ruin`, `ctor`, `dtor`.
      
      Initial uses in `StaticSingletonManager` and `to_erased_unique_ptr`.
      
      Reviewed By: vitaut
      
      Differential Revision: D26417824
      
      fbshipit-source-id: 482f4154a957b3c3dbeede726ed870a8d10c2a32
      619ff1d1