1. 08 Sep, 2020 4 commits
    • Lee Howes's avatar
      Add getTry back into folly::Future, with blocking behaviour consistent with... · 93b940f7
      Lee Howes authored
      Add getTry back into folly::Future, with blocking behaviour consistent with get() and with SemiFuture::getTry().
      
      Summary:
      Formerly Future::getTry was non-blocking, and exhibited confusing behaviour of throwing on timeouts, but returning a try containing exceptions related to the workload of the future. This was inconsistent with Future::get, and thus surprising.
      
      An earlier change safely removed this broken version of the operation. Here we add it back in with consistent behaviour.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D23477042
      
      fbshipit-source-id: afda6b37c86531dab43ac31ec6d605cc6c5d670c
      93b940f7
    • Yedidya Feldblum's avatar
      A few nits for constexpr_strlen, constexpr_strcmp · faaf3a5d
      Yedidya Feldblum authored
      Summary: [Folly] A few nits for `constexpr_strlen`, `constexpr_strcmp`.
      
      Reviewed By: ericniebler
      
      Differential Revision: D23547224
      
      fbshipit-source-id: f232861f5cc4dbd5eb77c4bbe3b9766fd233e9f5
      faaf3a5d
    • Robin Cheng's avatar
      Fix a simple race condition FutureDAGTest. · d6931011
      Robin Cheng authored
      Summary:
      In the "Complex" test we can have nodes running at the same time. So
      appending to the same vector concurrency isn't safe. Protecting that with a
      mutex.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D23545746
      
      fbshipit-source-id: b6f6e8b7204cf63c7e8fbbd8fc5134cb66c8180a
      d6931011
    • Ivan Egorov's avatar
      Avoid VLA in DWARF symbolizer · 3427f219
      Ivan Egorov authored
      Summary: Variable length arrays are an extension to C++ standard that is not universally supported. Use a fixed size array instead.
      
      Differential Revision: D23563131
      
      fbshipit-source-id: 743e65838e83286ea28d8de10cd9d4416e6e4e91
      3427f219
  2. 07 Sep, 2020 1 commit
  3. 06 Sep, 2020 2 commits
    • Ivan Egorov's avatar
      Add a note into constexpr_strcmp · 18fd6fc8
      Ivan Egorov authored
      Summary: This explains why the commonly used `int(*s1 - *s2)` was changed to a slightly less obvious alternative.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D23537394
      
      fbshipit-source-id: 152554bc9864cdf25c569216d21b0c04bea67e9d
      18fd6fc8
    • Orvid King's avatar
      Include ostream in SymbolizedFrame · 809c5665
      Orvid King authored
      Summary: This is used so needs to be included. MSVC 2019's STL exposes this.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D23497796
      
      fbshipit-source-id: 612e0fb91c5d5637c25d062a4b3afc0c67344012
      809c5665
  4. 05 Sep, 2020 1 commit
    • Yedidya Feldblum's avatar
      Fix StaticSingletonManager::create_<true> · 2a6bb416
      Yedidya Feldblum authored
      Summary: [Folly] Fix `StaticSingletonManager::create_<true>` which is missing the `noexcept` specification.
      
      Reviewed By: Mizuchi, xavierd
      
      Differential Revision: D23552042
      
      fbshipit-source-id: 629ad215602125a3e6322b36948df78c62fbef15
      2a6bb416
  5. 04 Sep, 2020 8 commits
    • Yedidya Feldblum's avatar
      Limit StaticSingletonManager check functions · fef268ac
      Yedidya Feldblum authored
      Summary: [Folly] Limit `StaticSingletonManager` check functions to `StaticSingletonManager` calls.
      
      Reviewed By: Alfus
      
      Differential Revision: D23544598
      
      fbshipit-source-id: 081d324064025d5fc86bb20b9b685c2591f01642
      fef268ac
    • Yedidya Feldblum's avatar
      Let noexcept StaticSingletonManager::create be outline · 25878e4b
      Yedidya Feldblum authored
      Summary: [Folly] Let `noexcept` member function template `StaticSingletonManager::create` be outline to avoid pathological inline path behavior.
      
      Reviewed By: iahs
      
      Differential Revision: D23522488
      
      fbshipit-source-id: 5ec9ed271b814f4496812e226e0f0929f65565a2
      25878e4b
    • Yedidya Feldblum's avatar
      Add missing < 0 tests for constexpr_strcmp · 1c185362
      Yedidya Feldblum authored
      Summary: [Folly] Add missing `< 0` tests for `constexpr_strcmp` to verify that the implementation is symmetric.
      
      Reviewed By: Mizuchi
      
      Differential Revision: D23482134
      
      fbshipit-source-id: d3cb1fe8ce4690a34a12620eb57e7a8ff57ad8a1
      1c185362
    • Yedidya Feldblum's avatar
      Make is_same failures easier to diagnose in constexpr_strlen tests · eaca25f6
      Yedidya Feldblum authored
      Summary: [Folly] Make `is_same` failures easier to diagnose in `constexpr_strlen` tests.
      
      Reviewed By: Mizuchi
      
      Differential Revision: D23481769
      
      fbshipit-source-id: a990e1b96381f976feb7b4d3efda860f38fb6fe3
      eaca25f6
    • Andrew Huang's avatar
      Fix SSLSessionTest for TravisCI (Ubuntu) · 7d52648f
      Andrew Huang authored
      Summary:
      These tests pass in our build system, and fail on other platforms (Ubuntu, Darwin). Specifically, they cause our folly's CI to fail, since it's run on Ubuntu.
      
      The tests fail because TLS 1.3 is being enabled for these tests. In retrospect, that *should* cause session resumption to fail, since no additional reads are being done on the socket after the handshake. I'm not quite sure yet why they pass in our build system.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D23513991
      
      fbshipit-source-id: 0a401d19300d8ca7da3f9b5f8263959eac826f8c
      7d52648f
    • Yedidya Feldblum's avatar
      Some machine code check functions for terminate_with · 0887fa5e
      Yedidya Feldblum authored
      Summary:
      [Folly] Some machine code check functions for `terminate` and `terminate_with`.
      
      Demonstrates the impact of adding the extra argument.
      
      Reviewed By: magedm
      
      Differential Revision: D23523207
      
      fbshipit-source-id: c37ae61e59ca060e7e370db425cb937341bd6e09
      0887fa5e
    • Robin Cheng's avatar
      Fix simple race conditions in FunctionSchedulerTest by using atomic. · 322fdec2
      Robin Cheng authored
      Summary: This is pretty self-explanatory.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D23514563
      
      fbshipit-source-id: 39b5796c742bfacc830c0154bf72bbd190501e33
      322fdec2
    • Orvid King's avatar
      Include portabilty/String.h for strndup and strcasecmp · 7aae308f
      Orvid King authored
      Summary: Windows needs it
      
      Reviewed By: yfeldblum
      
      Differential Revision: D23497837
      
      fbshipit-source-id: e4fa8fadb3a7ac26e602ff5fbddaef0976d47b0d
      7aae308f
  6. 03 Sep, 2020 17 commits
    • Eric Niebler's avatar
      use kIsDebug instead of NDEBUG in checkNullTerminated · 340f7d54
      Eric Niebler authored
      Summary: Avoid a needless use of the preprocessor in FixedString.h by using `kIsDebug` instead of the `NDEBUG` preprocessor macro in `checkNullTerminated`.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D23411248
      
      fbshipit-source-id: 78990ade25bcfa3956f917b2b285c096b76ecb09
      340f7d54
    • Eric Niebler's avatar
      Avoid use of string functions in constexpr context when the compiler can't support that · 08e26148
      Eric Niebler authored
      Summary:
      It's insufficient to infer support for `constexpr` `std::strlen` by merely testing that we're using libstdc++ on a compiler other than clang. Some other compilers besides gcc can be using libstdc++ that _don't_ have `constexpr` `std::strlen`.
      
      Rather, use the compiler itself to detect support for either (a) the builtins, or (b) a `constexpr` implementation of the stdlb function, falling back to a custom `constexpr` implementation otherwise.
      
      Also, handle MSVC, which supports `__builtin_strlen` but which doesn't support either `__has_feature` or `__has_builtin`.
      
      Give `constexpr_strcmp` the same handling, but leave MSVC out of the fun because it doesn't provide `__builtin_strcmp`.
      
      Also, remove the unnecessary include of `<type_traits>`.
      
      Finally, make these functions `noexcept` for good measure.
      
      Extra info: The overload sets in the `detail` namespace in this diff are a little magical. The first overload only compiles if (a) the string literal `"a"` can be `static_cast` to `const Char*` (that is, only if `Char` is `char`), and (b) if `FOLLY_DETAIL_STR???` yields a compile-time constant (so it can be used to initialize a non-type template parameter). If both of those things are true, that overload is preferred because the last argument requires no conversion. If either of those two conditions is false, that overload has a substitution failure and is removed from consideration. Then the second overload is selected.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D23407997
      
      fbshipit-source-id: f5838c578cb62b8fd777052223222882a6575429
      08e26148
    • Lee Howes's avatar
      Embed folly logo in README.md · 2875e290
      Lee Howes authored
      Summary: References the folly logo from within README.md.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D23490077
      
      fbshipit-source-id: 103c0a7838f9f9982c542e5a82e8382a45d8a0b7
      2875e290
    • Lee Howes's avatar
      Add folly logo to repo. · bdd26db3
      Lee Howes authored
      Summary: This adds the folly logo svg to the repo to make it available at a stable location.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D23503775
      
      fbshipit-source-id: 4ba0410c6f49d1ebc5b88c21c0ba8b60f9bf96d4
      bdd26db3
    • Yedidya Feldblum's avatar
      Revise is_constexpr_default_constructible_v and is_constexpr_default_constructible · c99481f5
      Yedidya Feldblum authored
      Summary: [Folly] Revise `is_constexpr_default_constructible_v` as a variable and as eager, and `is_constexpr_default_constructible` as a type and as deferred.
      
      Reviewed By: Mizuchi
      
      Differential Revision: D23371343
      
      fbshipit-source-id: 192b5df78053c89acadab285b6dfb9ab52b14528
      c99481f5
    • Nathan Bronson's avatar
      add #pragma once to some header files that were missing them · e1180516
      Nathan Bronson authored
      Reviewed By: yfeldblum, Mizuchi
      
      Differential Revision: D23436113
      
      fbshipit-source-id: 940cdca0d1d674ab4929b8f88ce48438fa0e4b25
      e1180516
    • Dan Melnic's avatar
      Check result against kBlockSize · 832a9353
      Dan Melnic authored
      Summary: Check result against kBlockSize
      
      Reviewed By: kevin-vigor
      
      Differential Revision: D23501893
      
      fbshipit-source-id: b6a43474422049c93f02e0b5defd300a471bccf5
      832a9353
    • Ivan Murashko's avatar
      Fix for compilation errors on a build without precompiled headers (#1438) · 5758ff24
      Ivan Murashko authored
      Summary:
      Pull Request resolved: https://github.com/facebook/folly/pull/1438
      
      The file `folly/experimental/io/test/IoTestTempFileUtil.h` does not have `pragma once` and can be included several times. It produces compilation errors.
      
      Reviewed By: Orvid
      
      Differential Revision: D23496733
      
      fbshipit-source-id: 0309847f60992b21d07b2377d49539d78570fb09
      5758ff24
    • Raul Tambre's avatar
      CMake: Handle generator expressions requiring a target for pkg-config (#1433) · eedb340b
      Raul Tambre authored
      Summary:
      CMake's find modules may have target-based generator expressions, which get propagated to us when generating the pkg-config file.
      CMake 3.19 introduces the TARGET argument to file(GENERATE), which allows resolving such generator expressions and will avoid future issues.
      A workaround proposed by adriaandegroot is added for CMake 3.18.
      
      Additionally changed list->string conversion to use list(JOIN) instead of string replacement.
      
      Fixes https://github.com/facebook/folly/issues/1414.
      
      Pull Request resolved: https://github.com/facebook/folly/pull/1433
      
      Reviewed By: yfeldblum
      
      Differential Revision: D23433365
      
      Pulled By: Orvid
      
      fbshipit-source-id: 6ef5f180e13b41f0c92137f53fd8c19ba6355dd6
      eedb340b
    • Yedidya Feldblum's avatar
      Fix possible UB in constexpr_strcmp · 9be79676
      Yedidya Feldblum authored
      Summary: [Folly] Fix possible UB in `constexpr_strcmp` since signed arithmetic wraparound is undefined.
      
      Differential Revision: D23435902
      
      fbshipit-source-id: f71103f58f9a1a69dbc7fa462703605d1fc78348
      9be79676
    • Andrii Grynenko's avatar
      Don't rely on pthread_atfork when possible · 2948741d
      Andrii Grynenko authored
      Summary:
      Because of https://github.com/google/sanitizers/issues/1116, any races detected during pthread_atfork deadlock the process.
      For forks issued from folly we can use an instrumented fork version to minimize the amount of code running via pthread_atfork.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D23281093
      
      fbshipit-source-id: fd4d3bf06b7992ff314f631ed899854a8b3f6c4b
      2948741d
    • Yedidya Feldblum's avatar
      Cut FOLLY_CREATE_HAS_MEMBER_TYPE_TRAITS · f57cccc9
      Yedidya Feldblum authored
      Summary: [Folly] Cut `FOLLY_CREATE_HAS_MEMBER_TYPE_TRAITS` since its margin of utility is too small given `folly::is_detected`.
      
      Reviewed By: Mizuchi
      
      Differential Revision: D23371271
      
      fbshipit-source-id: 6db49163d54ffd4d862bb98345d0e71b4d114674
      f57cccc9
    • Robin Cheng's avatar
      Make SmallLocksTest pass under TSAN if halt_on_error=0. · ec658b16
      Robin Cheng authored
      Summary: When setting halt_on_error to 0 (which is the default setting now for TSAN in fbcode because we want to catch all bugs), a deadlock does not immediately cause an issue. So we include exit(0) as part of the death test to handle that case.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D23493015
      
      fbshipit-source-id: fb4910edddab11e1cd00e402b6b7350a6dc941a7
      ec658b16
    • Katie Mancini's avatar
      add re2 as cmake dependency · 81ee35a5
      Katie Mancini authored
      Summary:
      We use Re2 in D22877942 for parsing multiple path prefix data fetch logging,
      this introduces the dependency for eden's opensource builds.
      
      Reviewed By: chadaustin
      
      Differential Revision: D23431175
      
      fbshipit-source-id: 44b399e92cb89ba1403295ecd10bc8f8d769b02c
      81ee35a5
    • Yedidya Feldblum's avatar
      Simplify the fallback constexpr strlen, strcmp · 4a8a285d
      Yedidya Feldblum authored
      Summary: [Folly] Simplify the fallback implementations of `constexpr_strlen` and `constexpr_strcmp` by taking advantage of C++14 `constexpr` syntax.
      
      Differential Revision: D23416900
      
      fbshipit-source-id: 93a969282faa61b3c9ff8e75519ad4e6edd71e4e
      4a8a285d
    • Robin Cheng's avatar
      Adjust stack limits for StackTraceSizeLimitTest for TSAN. · ec9d37a5
      Robin Cheng authored
      Summary: TSAN just needs more stack doing this...
      
      Reviewed By: yfeldblum
      
      Differential Revision: D23484864
      
      fbshipit-source-id: e5412982349f73f8ead795403dfbde2830f4e5fd
      ec9d37a5
    • Robin Cheng's avatar
      Skip a test in StackTraceTest under TSAN because it calls signal unsafe functions. · 8b53f907
      Robin Cheng authored
      Summary: Apparently the code says, being signal unsafe is OK because the signal is created with raise(). So let's just skip that test under TSAN.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D23484012
      
      fbshipit-source-id: 697234b9f57db97c6c6aaf8131058d3ecec3d059
      8b53f907
  7. 02 Sep, 2020 7 commits
    • Shai Szulanski's avatar
      Drop unit in folly::coro::toTask · 2044c0c6
      Shai Szulanski authored
      Summary:
      To preserve void type in roundtrip
      Doing this generically is pretty gross (you need to check if awaiter_type<decltype(co_viaIfAsync({}, SemiAwaitable))> has a member await_resume_try), while the cost of adding explicit overloads is low as there are only two types we care about, so I chose to do it that way.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D23407270
      
      fbshipit-source-id: cc952e2d8fa4297dbe363e22e99192fdf858134f
      2044c0c6
    • Lewis Baker's avatar
      Add Timekeeper parameter to folly::coro::retryWithExponentialBackoff() · 659deb38
      Lewis Baker authored
      Summary:
      The Timekeeper parameter can be used to pass in manually-controlled time-sources
      for testing purposes if required.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D23386677
      
      fbshipit-source-id: bea09292b00f6cd018568d26e5409d2c7ff01dbe
      659deb38
    • Yedidya Feldblum's avatar
      Test constexpr_strlen, constexpr_strcmp fallbacks · 6b2d55ec
      Yedidya Feldblum authored
      Summary: [Folly] Test `constexpr_strlen`, `constexpr_strcmp` fallback implementations alongside the main implementations, since the main implementations may fall back to the fallback implementations on some platforms but not on others, and we may only be testing on the other platforms.
      
      Differential Revision: D23432301
      
      fbshipit-source-id: 271705cb8c2b1ab6d11c1be20e2c3023cacab583
      6b2d55ec
    • Yedidya Feldblum's avatar
      Cut FOLLY_CREATE_HAS_MEMBER_FN_TRAITS · 3b18d435
      Yedidya Feldblum authored
      Summary: [Folly] Cut `FOLLY_CREATE_HAS_MEMBER_FN_TRAITS` since it is unused and does not match the current invoker model, replacing uses which need it with `FOLLY_CREATE_MEMBER_INVOKER`.
      
      Reviewed By: vitaut
      
      Differential Revision: D23371070
      
      fbshipit-source-id: 7fb0f5af21321a5056e06933ebd364a0a48a8fa1
      3b18d435
    • Shai Szulanski's avatar
      Add folly::coro::makeTask · d61f81cc
      Shai Szulanski authored
      Summary: Reduce boilerplate when defining simple coroutines, e.g. in tests
      
      Reviewed By: yfeldblum
      
      Differential Revision: D23404552
      
      fbshipit-source-id: a19e9cb6640e3897d3c166499014ebe4c19fbf04
      d61f81cc
    • Giuseppe Ottaviano's avatar
      Fix atomic_shared_ptr tests · 69f66b7e
      Giuseppe Ottaviano authored
      Summary: D9312236 (https://github.com/facebook/folly/commit/bc16b096b1f6659e29379a650998bbfcf0c03eca) made these tests conditional on using libstdc++, but the header that defines the macro is not included prior to the `#ifdef`, so the tests (and benchmarks) are disabled unconditionally.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D23469536
      
      fbshipit-source-id: 2ab0b2d28748419d88e946eff9b09b98d361dedb
      69f66b7e
    • Yedidya Feldblum's avatar
      Revise is_transparent_v and is_transparent · c5adaa59
      Yedidya Feldblum authored
      Summary: [Folly] Revise `is_transparent_v` as a variable and as eager, and atop `is_detected`, and `is_transparent` as a type and as deferred.
      
      Reviewed By: Mizuchi
      
      Differential Revision: D23367991
      
      fbshipit-source-id: be30184b04e2a1977db3faccd57e947dd33282ce
      c5adaa59