1. 19 Feb, 2019 1 commit
    • Greg McGary's avatar
      Fix "use std::launder" predicate for Android NDKs · 60db6d71
      Greg McGary authored
      Summary:
      The current predicate yields false positive for NDK r17. NDK r18 has launder without defining `__cpp_lib_launder`. NDK r19 finally gets it right by defining `__cpp_lib_launder`.
      
      r17: launder? no,  `__cpp_lib_launder` undefined, `_LIBCPP_VERSION == 6000`
      r18: launder? yes, `__cpp_lib_launder` undefined, `_LIBCPP_VERSION == 7000`
      r19: launder? yes, `__cpp_lib_launder == 201606L`, `_LIBCPP_VERSION == 8000`
      
      Reviewed By: yfeldblum
      
      Differential Revision: D14098189
      
      fbshipit-source-id: 315dba44c6474407a8f4c1d25c81fff057d5f7db
      60db6d71
  2. 18 Feb, 2019 1 commit
    • Yedidya Feldblum's avatar
      Use StaticSingletonManager for LoggerDB::get() · a04d119c
      Yedidya Feldblum authored
      Summary:
      [Folly] Use `StaticSingletonManager` for `LoggerDB::get()` inline fast path.
      
      This also simplifies the singleton setup overall.
      
      Note that the inline slow path here is not quite as small as doing the strategy directly would be since three pointers need to be passed to the outline slow path.
      
      Reviewed By: simpkins
      
      Differential Revision: D14016983
      
      fbshipit-source-id: ea2646f8efd5c2dbcdece4ebd3b88949bc3d4294
      a04d119c
  3. 16 Feb, 2019 1 commit
  4. 15 Feb, 2019 2 commits
  5. 14 Feb, 2019 7 commits
    • Michael Liu's avatar
      Apply modernize-use-override (2nd iteration) · a4c0fd99
      Michael Liu authored
      Summary:
      Use C++11’s override and remove virtual where applicable.
      Change are automatically generated.
      
      Reviewed By: shixiao
      
      Differential Revision: D14089910
      
      fbshipit-source-id: 12c776ea06094ee77c7e07263397dab3419c5309
      a4c0fd99
    • Robert Copeland's avatar
      fix compilation of ExceptionTracer on ARM · 934a40e2
      Robert Copeland authored
      Summary:
      On ARM gcc, the unwind header defines exception_class as a char[8] rather
      than a uint64_t.  Consequently compilation of exception_tracer fails on ARM
      with the following error:
      
          .../folly/experimental/exception_tracer/ExceptionTracer.cpp: In function 'bool folly::exception_tracer::{anonymous}::isAbiCppException(const __cxxabiv1::__cxa_exception*)':
          .../folly/experimental/exception_tracer/ExceptionTracer.cpp:107:45: error: invalid operands of types 'const char [8]' and 'unsigned int' to binary 'operator&'
              return (exc->unwindHeader.exception_class & 0xffffffff) == cppClass;
                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
      
      Construct a uint64_t for this platform.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D13763587
      
      fbshipit-source-id: 011cf13cdfcd1fffdeab8c384f7274f20faecbe5
      934a40e2
    • Andrii Grynenko's avatar
      Remove priority from Core · 4c132efd
      Andrii Grynenko authored
      Summary: Wrap Executor in ExecutorWithPriority if custom priority is passed.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D14079222
      
      fbshipit-source-id: 56917827f54115b90ca237c71321f7db327355e1
      4c132efd
    • Arushi Aggarwal's avatar
      Add functions for bridging semi futures · cd6352dd
      Arushi Aggarwal authored
      Reviewed By: yfeldblum
      
      Differential Revision: D14062156
      
      fbshipit-source-id: 2cdc32fc9834bd165fa8011ca1d336edaf05f653
      cd6352dd
    • Lee Howes's avatar
      Remove delayedUnsafe entirely · 7e209f43
      Lee Howes authored
      Summary:
      delayedUnsafe was deprecated.
      
      All callers have been removed. This removes the core code so that it will not sneak back in.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D14029673
      
      fbshipit-source-id: 0384364a8e0ab8953e9746b91e3b6e7b2e5d7c67
      7e209f43
    • Yedidya Feldblum's avatar
      A test verifying Function with max-align callables · 44e37ec5
      Yedidya Feldblum authored
      Summary: [Folly] A test verifying `Function` behaves as expected with max-align callables.
      
      Reviewed By: aary
      
      Differential Revision: D14077496
      
      fbshipit-source-id: 8a9efaee3cc4c5d69c6a94eb5ad1928d241eb4e0
      44e37ec5
    • Lee Howes's avatar
      Add futures::sleepUnsafe to allow migration to sleep returning a SemiFuture · f3eab11b
      Lee Howes authored
      Summary: Clone sleep as sleepUnsafe as a codemod target to migrate callsites to a SemiFuture-returning sleep.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D14072020
      
      fbshipit-source-id: 3dc88378732ca203c168ea2e4371508ee376cc43
      f3eab11b
  6. 13 Feb, 2019 5 commits
    • Andrii Grynenko's avatar
      Make sure doCallback() doesn't write into Executor if it's nullptr · 97baa137
      Andrii Grynenko authored
      Summary: SemiFuture implementation assumes that it's always safe to read Executor (if Executor is DeferredExecutor - then SemiFuture can never be completed until via is called, otherwise Executor is nullptr and we should never overwrite it). doCallback() however was unconditionally overwritting Executor, which resulted in TSAN reports.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D14063047
      
      fbshipit-source-id: 7553c8a2d0cbda05ad07b87297a334a69ee77f9c
      97baa137
    • Caleb Marchent's avatar
      Include range in the folly python extensions (#1013) · 9d8a3f73
      Caleb Marchent authored
      Summary:
      range.pxd needs to be exported; so that fbtrhift-py3 can compile against it
      Pull Request resolved: https://github.com/facebook/folly/pull/1013
      
      Reviewed By: yfeldblum
      
      Differential Revision: D13987018
      
      Pulled By: calebmarchent
      
      fbshipit-source-id: 7b7e6f62e5bc23e70a3c263fb3b33cf1d439e439
      9d8a3f73
    • Yedidya Feldblum's avatar
      Remove disabled code from FOR_EACH_RANGE · f2c0cfdd
      Yedidya Feldblum authored
      Summary: [Folly] Remove disabled code from `FOR_EACH_RANGE`.
      
      Reviewed By: aary
      
      Differential Revision: D14062987
      
      fbshipit-source-id: 6d01e76debc46398ceae3be435691c20595d393e
      f2c0cfdd
    • Yedidya Feldblum's avatar
      pretty_name · 86ec30e9
      Yedidya Feldblum authored
      Summary:
      [Folly] `pretty_name`, for getting static type pretty-names without RTTI.
      
      Available as constant expressions - no runtime overhead.
      
      Depends on per-platform non-specified magic symbols. May not work everywhere.
      
      Reviewed By: aary
      
      Differential Revision: D14019723
      
      fbshipit-source-id: e50557261024298cd37957b94dad3a10c927ee97
      86ec30e9
    • Yedidya Feldblum's avatar
      Cut macro FOR_EACH_RANGE_R · ff5f718e
      Yedidya Feldblum authored
      Summary: [Folly] Cut macro `FOR_EACH_RANGE_R`.
      
      Reviewed By: aary, danobi
      
      Differential Revision: D14058731
      
      fbshipit-source-id: d31c0673785d467665598e2138b6b6082d9629ab
      ff5f718e
  7. 12 Feb, 2019 4 commits
  8. 11 Feb, 2019 3 commits
  9. 10 Feb, 2019 1 commit
    • Yedidya Feldblum's avatar
      Always define FOLLY_HAS_RTTI · df5a0575
      Yedidya Feldblum authored
      Summary: [Folly] Always define `FOLLY_HAS_RTTI` to either `0` or `1`.
      
      Reviewed By: LeeHowes
      
      Differential Revision: D14018830
      
      fbshipit-source-id: 5212f3f6269067fc6326e293cedb243e650f71db
      df5a0575
  10. 09 Feb, 2019 2 commits
    • Dongyi Ye's avatar
      Add an option to use clientAddress hash to despatch UDP packets. · 150a10cf
      Dongyi Ye authored
      Summary:
      Currently udp socket send packet to listener in a round robin fashion. This will cause issue if there are more than one packet in one "session". Because packets from one session could be routed to two different listeners.
      
      This diff added a packet dispatch option which use clientAddress (address family + ip + port) hashing. In this way, the packets from same client will always routed to same listener when the total number of listener is consistent.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D13994665
      
      fbshipit-source-id: e450c2fcbc95c55cb37cb5cda13c5df6d8119812
      150a10cf
    • Yedidya Feldblum's avatar
      Make Init non-moveable · 35b194e8
      Yedidya Feldblum authored
      Summary: [Folly] Make Init non-moveable to break code that could trigger early invocation of the moved-from instance's destructor when copy elision is not applied.
      
      Reviewed By: markisaa
      
      Differential Revision: D14002508
      
      fbshipit-source-id: faf8de587c0573d14d9b1082b7f531e147c48ed7
      35b194e8
  11. 08 Feb, 2019 9 commits
    • Yedidya Feldblum's avatar
      Detect libc++ std version in folly::chrono backports · 7f0aea22
      Yedidya Feldblum authored
      Summary: [Folly] Detect libc++ std version in `folly::chrono` backports, since libc++ does not define the recommended feature macros.
      
      Reviewed By: wez
      
      Differential Revision: D14002296
      
      fbshipit-source-id: 022085658aee3a453c5aea714f75f27013825c6f
      7f0aea22
    • Orvid King's avatar
      Remove AsyncSocket.getFd · 5bcb4a7a
      Orvid King authored
      Summary: It's dead now.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D13629451
      
      fbshipit-source-id: f4a79919ba20a13b6afd59b5e4605bf8faa3c6ad
      5bcb4a7a
    • Orvid King's avatar
      Shift calls of AsyncServerSocket.getSocket to AsyncServerSocket.getNetworkSocket · 44b142c4
      Orvid King authored
      Summary: The file-descriptor backed API will be going away.
      
      Reviewed By: yfeldblum, ryantimwilson
      
      Differential Revision: D13603038
      
      fbshipit-source-id: d89d3a3836ab551ec92c2fb1f74248cc2119ba03
      44b142c4
    • Adam Norton's avatar
      EvictingCacheMap::insert · 57e26df8
      Adam Norton authored
      Summary: Add insert method to mimic std::unordered_map::insert. Allows for insertion without overwriting an existing element.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D13928583
      
      fbshipit-source-id: 54f0eb5069b753bcaca55b04c09968d12dceb5e3
      57e26df8
    • Andrii Grynenko's avatar
      Implement blockingWait for coro::Task · df20b646
      Andrii Grynenko authored
      Reviewed By: lewissbaker
      
      Differential Revision: D14002394
      
      fbshipit-source-id: 8f0422d66c6b6859ec42a6ee5ea58c97e9a15de9
      df20b646
    • Wez Furlong's avatar
      folly: resolve ambiguous floor overload on macos · 3f488e75
      Wez Furlong authored
      Summary:
      This manifested once D13765262 landed, but is likely
      more closely related to the changes in D4375603:
      
      ```
      In file included from /Users/facebook/wez-fbsource/fbcode/watchman/external/folly/folly/io/async/TimeoutManager.cpp:21:
      /Users/facebook/wez-fbsource/fbcode/watchman/external/folly/folly/Chrono.h:153:32: error: call to 'floor' is ambiguous
        return detail::round_impl(d, floor<To>(d));
                                     ^~~~~~~~~
      /Users/facebook/wez-fbsource/fbcode/watchman/external/folly/folly/io/async/TimeoutManager.cpp:77:44: note: in instantiation of function template specialization 'folly::chrono::round<std::__1::chrono::duration<long
            long, std::__1::ratio<1, 1000> >, long long, std::__1::ratio<1, 1000000>, void>' requested here
        timeout_type timeout_ms = folly::chrono::round<timeout_type>(timeout);
                                                 ^
      /usr/local/fbprojects/packages/xcode/104/xcode_10.1.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/chrono:444:1: note: candidate function [with _ToDuration =
            std::__1::chrono::duration<long long, std::__1::ratio<1, 1000> >, _Rep = long long, _Period = std::__1::ratio<1, 1000000>]
      floor(const duration<_Rep, _Period>& __d)
      ^
      /Users/facebook/wez-fbsource/fbcode/watchman/external/folly/folly/Chrono.h:127:14: note: candidate function [with To = std::__1::chrono::duration<long long, std::__1::ratio<1, 1000> >, Rep = long long, Period =
            std::__1::ratio<1, 1000000>, $3 = void]
      constexpr To floor(std::chrono::duration<Rep, Period> const& d) {
                   ^
      ```
      
      this diff resolves the ambiguity in favor of `folly::chrono::floor`.
      
      Reviewed By: bolinfest
      
      Differential Revision: D14000897
      
      fbshipit-source-id: 669dbf3573c3799cb21e14f247acc8d053afe746
      3f488e75
    • Adam Simpkins's avatar
      logging: move the fatal_helper test program to test/helpers · b23981b8
      Adam Simpkins authored
      Summary:
      Move `FatalHelper.cpp` to the new folly/logging/test/helpers directory created
      in D13984692.
      
      Reviewed By: yfeldblum, dmaone
      
      Differential Revision: D13994517
      
      fbshipit-source-id: e2b7e4b4f649fed5b882df47424d24e4fc4f717a
      b23981b8
    • Adam Simpkins's avatar
      logging: fix a crash when using logging after main() returns · 4a2619fe
      Adam Simpkins authored
      Summary:
      Fix a problem where `LoggerDB::get()` could crash when called after `main()`
      has returned.
      
      The `LoggerDBSingleton` object may have been destroyed already, so calling
      `LoggerDBSingleton::getDB()` was not allowed.  This updates the code to just
      store the singleton in a simple raw pointer, and only use the singleton helper
      object for flushing log handlers.
      
      Reviewed By: dmaone
      
      Differential Revision: D13984692
      
      fbshipit-source-id: a0c8550af367458ca39fefa9090e3165ad6a82bb
      4a2619fe
    • Eric Niebler's avatar
      get folly/experimental/pushmi building with gcc-5 again · de4ce899
      Eric Niebler authored
      Summary: Judging from the number of things that needed fixing, pushmi has been busted on gcc-5 for some time.
      
      Reviewed By: yfeldblum, kirkshoop
      
      Differential Revision: D13979146
      
      fbshipit-source-id: 95def0ef6289b41e116a55359476ffec91787706
      de4ce899
  12. 07 Feb, 2019 2 commits
    • Orvid King's avatar
      Remove the fd overload of BlockingSocket::BlockingSocket() · 4435c335
      Orvid King authored
      Summary: It's not needed
      
      Reviewed By: yfeldblum
      
      Differential Revision: D13993615
      
      fbshipit-source-id: 7e53224d39502b96e13bff352dab778df4782a1c
      4435c335
    • Yedidya Feldblum's avatar
      Fix SingletonRelaxedCounter in T::~T() of ThreadLocal<T> · 9a9dfd3b
      Yedidya Feldblum authored
      Summary:
      [Folly] Fix `SingletonRelaxedCounter` in `T::~T()` of `ThreadLocal<T>`.
      
      Given a type `T` which has a dtor which increments some `SingletonRelaxedCounter`, and given some use of a `ThreadLocal<T>` where, within some given thread, the only time `SingletonRelaexCounter` is incremented is in the `T` dtor, there would be a leak of the `LocalLifetime` and this leak would cause subsequent `SingletonRelaxedCounter::count()` to segfault with access to a deallocated local counter.
      
      C++ `thread_local` destructors run before `pthread` thread-specific destructors. If a `pthread` thread-specific destructor triggers initialization of a C++ `thread_local`, then that `thread_local` will be leaked in that its destructor will never be run.
      
      Fix this with `ThreadLocal` by detecting when `ThreadLocal` per-thread destructors have begun running. This is a larger issue with `pthread` thread-specific objects overall, but as long as we stick to using `ThreadLocal`, it can be papered over.
      
      Reviewed By: davidtgoldblatt
      
      Differential Revision: D13970469
      
      fbshipit-source-id: a4c7f36d2c0d63f8f0e363ddb9d35a44b027aea6
      9a9dfd3b
  13. 06 Feb, 2019 2 commits
    • Andrii Grynenko's avatar
      Remove Executor* APIs · 0779c7fa
      Andrii Grynenko authored
      Summary: Executor::KeepAlive<> is now implicitly constructible from Executor*.
      
      Reviewed By: capickett
      
      Differential Revision: D13954744
      
      fbshipit-source-id: 523a860a337429a995152dc7171c0f6e8be8cecb
      0779c7fa
    • Lee Howes's avatar
      Add explicit deprecation to delayedUnsafe · 293afa64
      Lee Howes authored
      Summary: Deprecate delayedUnsafe to stop people adding it to code.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D13949215
      
      fbshipit-source-id: ffc4eec113964a0b247f16f3c37f3f8c69fbb0df
      293afa64