1. 19 Feb, 2019 5 commits
    • Mingtao Yang's avatar
      SSLContext: Disable TLSv1.3 support by default · 7fabe818
      Mingtao Yang authored
      Summary:
      OpenSSL 1.1.1 adds TLSv1.3 support, but changes several semantics (e.g.
      assumptions on SSL_get_session() returning resumable sessions) that require
      some work to address. A lot of our AsyncSocket tests fail (e.g. tests for
      resumption will automatically fail, since TLSv1.3 has no resumption support),
      and would need to be updated to explicitly disable TLSv1.3.
      
      The plan is to eventually remove this after these items are addressed.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D14073093
      
      fbshipit-source-id: 181b05395ed35aaa7deb00b8968ff4d371b683f4
      7fabe818
    • Joe Loser's avatar
      Cut backport of std::exchange (#1021) · e03e7630
      Joe Loser authored
      Summary:
      - Backporting `std:exchange` is no longer needed as Folly requires C++14
        support and C++14-compliant vendors have `std::exchange` in their
        standard library, notably including GCC 4.9.
      - Cut backport of `std::exchange` and fix call sites to explicitly use
        `std::exchange` where they were previously relying on `exchange` being
        found in the `folly` namespace.
      Pull Request resolved: https://github.com/facebook/folly/pull/1021
      
      Reviewed By: Orvid
      
      Differential Revision: D14119875
      
      Pulled By: yfeldblum
      
      fbshipit-source-id: 686a8e812f6728281b432eae1586de28d21da9dd
      e03e7630
    • Paul Jewell's avatar
      Adding DynamicConstructor specialization for enums · 6e296e64
      Paul Jewell authored
      Summary:
      A specialization for reading into enums from serialized form was added a while back. Unfortunately, no corresponding change to serialize from enums into a dynamic was added.
      
      This change adds the corresponding DynamicConstructor specialization for enums to allow serializing enums and objects containing enums.
      
      Reviewed By: ot, shixiao
      
      Differential Revision: D14091417
      
      fbshipit-source-id: 15ef8bc46843cd668b4b2c991e84167dabaf69fa
      6e296e64
    • Yedidya Feldblum's avatar
      kHasRtti · e11c6fe8
      Yedidya Feldblum authored
      Summary: [Folly] `kHasRtti` to parallel `FOLLY_HAS_RTTI`.
      
      Reviewed By: Orvid
      
      Differential Revision: D14129217
      
      fbshipit-source-id: ce60fd0b47c64c19b515d21db55aa88ba37ca637
      e11c6fe8
    • 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