1. 18 Jul, 2017 4 commits
    • Christopher Dykes's avatar
      Ensure the allocator types in the string keyed tests have value_types matching... · 4fb9440e
      Christopher Dykes authored
      Ensure the allocator types in the string keyed tests have value_types matching the value type of the collection
      
      Summary:
      Because MSVC's standard library implementation is now checking that this is actually the case:
      ```
      error C2338: set<T, Compare, Allocator> requires that Allocator's value_type match T (See N4659 26.2.1 [container.requirements.general]/16 allocator_type) Either fix the allocator value_type or define _ENFORCE_MATCHING_ALLOCATORS=0 to suppress this diagnostic.
      ```
      
      I've gone with the "Fix the `value_type`" approach.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5441017
      
      fbshipit-source-id: b30403d2e48f815177cac29c4e6eec4e79583660
      4fb9440e
    • Phil Willoughby's avatar
      Relax alignment restriction in CachelinePadded · d8c4d15e
      Phil Willoughby authored
      Summary: 32-bit iOS environments were triggering the previous condition with LifoSem.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5442057
      
      fbshipit-source-id: 64ee32b4ad35150c7f295a2a30bbede8fa13e79e
      d8c4d15e
    • Christopher Dykes's avatar
      Add support for tagging a test as BROKEN in the CMake build · 05e06a97
      Christopher Dykes authored
      Summary: Also use it to disable function_test and indexed_mem_pool_test for now while the source of their breakage is being investigated.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5440415
      
      fbshipit-source-id: 630c884ccd2db660bfc3e4529a2d35941d3bd0d3
      05e06a97
    • Dan Melnic's avatar
      Lua exception handling test · 3179d446
      Dan Melnic authored
      Summary: Lua exception handling test - start with the failing test first - code from D5431445
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5432254
      
      fbshipit-source-id: 87f5934f28ac6ef7b55314acb3c150b9ccf6c799
      3179d446
  2. 17 Jul, 2017 5 commits
    • Christopher Dykes's avatar
      Don't build the async signal handler test on Windows · 5d055a09
      Christopher Dykes authored
      Summary: `AsyncSignalHandler` is not currently supported on Windows, so we shouldn't be attempting to build it.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5437276
      
      fbshipit-source-id: b3f281bfc501444bb22056860ee785a2beb9b671
      5d055a09
    • Tommy Nguyen's avatar
      Use more libstdc++ specific macro · 38916b96
      Tommy Nguyen authored
      Summary:
      - The __GNUC__ macro is used by other compilers like Clang and
        ICC, but ext/stdio_filebuf.h is a libstdc++ only extension.
      
      fixes #636
      Closes https://github.com/facebook/folly/pull/637
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5434532
      
      Pulled By: Orvid
      
      fbshipit-source-id: ce4f966a74aa9f82ae907c67807ac87ec1588173
      38916b96
    • Christopher Dykes's avatar
      Enable a couple of AsyncFileWriter tests on Windows · 0661c282
      Christopher Dykes authored
      Summary:
      There is no longer anything keeping them from working on Windows.
      Except for that `signal(SIGPIPE, SIG_IGN)` call; that has to stay disabled.
      
      Reviewed By: simpkins
      
      Differential Revision: D5308007
      
      fbshipit-source-id: 74a392cf484404f41a6c51e50b5a9e6fbd05b4a9
      0661c282
    • Yedidya Feldblum's avatar
      Let exception_wrapper::handle, when empty, show the right error message · 6139d03f
      Yedidya Feldblum authored
      Summary:
      [Folly] Let `exception_wrapper::handle`, when empty, show the right error message.
      
      The error message currently says that `throw_exception` cannot be called on an empty `exception_wrapper`, but should say that `handle` cannot be called on an empty `exception_wrapper`.
      
      Reviewed By: Orvid
      
      Differential Revision: D5432380
      
      fbshipit-source-id: ffa69c7675ee332e596e861e59ea273c39fc4717
      6139d03f
    • Yedidya Feldblum's avatar
      CodeMod: Prefer ADD_FAILURE() over EXPECT_TRUE(false), et cetera · b15db0d8
      Yedidya Feldblum authored
      Summary:
      CodeMod: Prefer `ADD_FAILURE()` over `EXPECT_TRUE(false)`, et cetera.
      
      The tautologically-conditioned and tautologically-contradicted boolean expectations/assertions have better alternatives: unconditional passes and failures.
      
      Reviewed By: Orvid
      
      Differential Revision:
      D5432398
      
      Tags: codemod, codemod-opensource
      
      fbshipit-source-id: d16b447e8696a6feaa94b41199f5052226ef6914
      b15db0d8
  3. 15 Jul, 2017 1 commit
    • Christopher Dykes's avatar
      Use long long for the 64-bit fingerprint table · eb0730c9
      Christopher Dykes authored
      Summary: Because these are always 64-bit values. This hasn't actually been an issue but is the correct thing to do.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5425658
      
      fbshipit-source-id: 5bc204b3d1af2c710bd8b1665211d2971ccf7be7
      eb0730c9
  4. 14 Jul, 2017 8 commits
    • Christopher Dykes's avatar
      Replace all includes of pthread.h with the portability header · d63e7a1b
      Christopher Dykes authored
      Summary: It is a non-portable include as it is include-order sensitive.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5427885
      
      fbshipit-source-id: 50850064fc8fa3ed6f8fc235f31edbda4144663c
      d63e7a1b
    • Christopher Dykes's avatar
      Switch future's Core<T> to std::is_nothrow_constructible · 61684201
      Christopher Dykes authored
      Summary:
      MSVC has issues with the way it was written, so just use the standard version instead.
      
      Upstream bug report: https://developercommunity.visualstudio.com/content/problem/80433/incorrect-error-c2462-cannot-define-a-type-in-a-ne.html
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5427029
      
      fbshipit-source-id: ae3737175d5b8e9738ed6b9573412d1d566b0e1c
      61684201
    • Christopher Dykes's avatar
      Add an sfmt19937 benchmark (again) · 112ec135
      Christopher Dykes authored
      Summary: `__gnu_cxx::sfmt19937` is 3.5x faster than `std::mt19937` according to the benchmark.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5410705
      
      fbshipit-source-id: d503544a0b9b1b0c614a27466a297a4e6902fc15
      112ec135
    • Phil Willoughby's avatar
      Re-align LifoSem · 6678c4e6
      Phil Willoughby authored
      Summary:
      Previously it generated a warning if compiled with -Wover-align because its alignment exceeded alignof(std::max_align_t).
      
      This also meant that heap-allocated LifoSem objects were not guaranteed to be on their own cache-line, potentially degrading performance.
      
      This change adds padding before the important part of the LifoSem (to match the existing after-padding) and reduces its alignment requirement.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5380700
      
      fbshipit-source-id: 7fdd593a58a2e0c7b03df11152ee4bb66f57e717
      6678c4e6
    • Christopher Dykes's avatar
      Fix building the stl_vector tests with -Wshadow-compatible-local · 4203522c
      Christopher Dykes authored
      Summary: It was shadowing locals.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5422356
      
      fbshipit-source-id: 91da6fcf0b2ea3821394068e9847976e04f43ca9
      4203522c
    • Eli Lindsey's avatar
      replace getnameinfo with inet_ntop in v6 string formatting · a45eee72
      Eli Lindsey authored
      Summary: Some implementations of getnameinfo are triggering reverse DNS lookups despite us specifying NI_NUMERICHOST. Avoid all that by instead producing our string representations of v6 addresses manually via inet_ntop and if_indextoname.
      
      Reviewed By: yangchi
      
      Differential Revision: D5415477
      
      fbshipit-source-id: 67853a85db6517d374d94c8261e56400f4c00fc5
      a45eee72
    • Phil Willoughby's avatar
      Update CachelinePadded · 46a851f4
      Phil Willoughby authored
      Summary:
      The C++ standard doesn't guarantee alignment of things bigger than std::max_align_t which is typically 16 bytes. This means that to ensure something is the only thing on a cache-line we need padding on each side of it to exclude anything else.
      
      CachelinePadded<T> will now be larger than it was before, and reinterpret_cast to/from T is no longer valid.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5380849
      
      fbshipit-source-id: 20f275c875eb4bede4aef19ac7224913ce9b6d51
      46a851f4
    • Xiangyu Bu's avatar
      Break long lines in SSLContext. · 130d4f66
      Xiangyu Bu authored
      Summary: Break a few long lines in folly::SSLContext.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5418517
      
      fbshipit-source-id: fc2ac310d1f931a1f8a4af077aa5cde347b1042d
      130d4f66
  5. 13 Jul, 2017 6 commits
    • Christopher Dykes's avatar
      Fix the build of the socket tests on Windows · 7113180a
      Christopher Dykes authored
      Summary: There were references to things that don't exist or have an equivalent on Windows.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5099802
      
      fbshipit-source-id: 9a5a2d0e5cb3a33ecad00bf8a2e1c13315a015cc
      7113180a
    • Christopher Dykes's avatar
      Add support for closing a TemporaryFile early · 050671f8
      Christopher Dykes authored
      Summary:
      The file itself will still get removed when `TemporaryFile` is destroyed, but closing it before then allows it to be read when on Windows, because `TemporaryFile` opens the temporary file with `O_EXCL`, so Windows denies read access of the file to everything else.
      This is needed to fix one of the AsyncFileWriter tests on Windows.
      
      Reviewed By: simpkins
      
      Differential Revision: D5307719
      
      fbshipit-source-id: bd65962cc3d34f382cc7b0b55dbf2659ed5ebfce
      050671f8
    • Christopher Dykes's avatar
      Force string pooling to workaround a codegen bug · 6ecf60a9
      Christopher Dykes authored
      Summary:
      There are bugs in MSVC's codegen that causes `StringPiece`'s evaluated in a `constexpr` context to have the start pointer point to one copy of the string and the end pointer point to another. Using the `StringPiece` at compile-time is perfectly fine, it just has the wrong values at runtime.
      We can work around this issue by enabling string pooling in all modes.
      
      Original bug report:
      https://developercommunity.visualstudio.com/content/problem/3216/c-incorrect-data-duplication-in-constexpr-context.html
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5409753
      
      fbshipit-source-id: 24e2b343209ba7c86d0dd39a1358d0abe9ee6d4d
      6ecf60a9
    • Ankit Shah's avatar
      Getters and setters for ECDSA_SIG · 4f6e47f9
      Ankit Shah authored
      Summary:
      Added getters and setters for ECDSA_SIG to allow for compatibility
      between OpenSSL 1.1.0 and 1.0.2
      
      Reviewed By: knekritz
      
      Differential Revision: D5408934
      
      fbshipit-source-id: 7a3d9df774728c81270cc4da34c75202018e430d
      4f6e47f9
    • Yedidya Feldblum's avatar
      Sort #include lines · 520e20a8
      Yedidya Feldblum authored
      Summary: [Folly] Sort `#include` lines, as required by `clang-format`.
      
      Reviewed By: igorsugak, Orvid
      
      Differential Revision: D5405153
      
      fbshipit-source-id: 3bb1c2b84271bcf7a195e07680777dbfdd499823
      520e20a8
    • Eli Lindsey's avatar
      Revert D5408572: replace getnameinfo with inet_ntop in v6 string formatting · 4ac665a6
      Eli Lindsey authored
      Summary: This reverts commit 69b0171a9a54738045f9041381aea5512b17eb13
      
      Differential Revision: D5408572
      
      fbshipit-source-id: 3ec8ce96575b632fb134be99cc0d2538a01a7d85
      4ac665a6
  6. 12 Jul, 2017 4 commits
    • Eli Lindsey's avatar
      replace getnameinfo with inet_ntop in v6 string formatting · 0d38f577
      Eli Lindsey authored
      Summary: Some implementations of getnameinfo are triggering reverse DNS lookups despite us specifying NI_NUMERICHOST. Avoid all that by instead producing our string representations of v6 addresses manually via inet_ntop and if_indextoname.
      
      Differential Revision: D5408572
      
      fbshipit-source-id: 69b0171a9a54738045f9041381aea5512b17eb13
      0d38f577
    • Mickey Phoenix's avatar
      Fix documentation for folly's to<double>() method's handling of 'NaN' and unparseable inputs · 604c1b15
      Mickey Phoenix authored
      Summary:
      The documentation for folly::to<double>()'s handling of unparseable inputs (including "") is incorrect.  Additionally, the documentation does not document to<double>()'s handling of the inputs "NaN", "-NaN", "inf", "infinity", "-inf", and "-infinity".
      
      This corrects the documentation.
      
      See https://github.com/facebook/folly/blob/3272dfdbe243e0ac02acca1dd82bc391d1da079a/folly/docs/Conv.md under the heading "Parsing floating-point types" for the incorrect documentation as rendered.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5367656
      
      fbshipit-source-id: 22b38e2bb85d2e647975798360ead39eed6caae8
      604c1b15
    • Tom Jackson's avatar
      Don't use range construction for associative containers in convertTo() · 96a65f54
      Tom Jackson authored
      Summary: This avoids having exceptions occur while constructing hashtables.
      
      Reviewed By: ot, yfeldblum
      
      Differential Revision: D5384419
      
      fbshipit-source-id: ba2de8cffa46df550bdc62abbe529801249e45cd
      96a65f54
    • Phil Willoughby's avatar
      Improve launder · fccb5ab6
      Phil Willoughby authored
      Summary:
      Should now work on GCC-compatible compilers, and all other compilers which don't attempt any inter-TU optimizations.
      
      Moved out of Utility.h because it now requires a supporting .cpp file and some clients presume that Utility.h can be used header-only.
      
      Reviewed By: ot
      
      Differential Revision: D5381042
      
      fbshipit-source-id: 7e954fed47de4386c85d46a61d56a8fe7fc516f4
      fccb5ab6
  7. 11 Jul, 2017 8 commits
    • Christopher Dykes's avatar
      Revert D5393697: [Folly] Add an sfmt19937 benchmark · dcb41c96
      Christopher Dykes authored
      Summary: This reverts commit bc725838dc7f62d030c7e68bc6d229042df2b46c
      
      Differential Revision: D5393697
      
      fbshipit-source-id: 4b9ef1e733b0ad73e6deea7ac8a52dfe785b4f2b
      dcb41c96
    • Benjamin Renard's avatar
      add helper method to generate same crc32 results as php and boost::crc_32_type · 13feee4b
      Benjamin Renard authored
      Summary:
      This revision adds a helper method in folly/Checksum.h, that returns the same crc32 value as php's built-in implementationa and boost::crc_32_type.
      
      folly's default implementation only differs from the final xor (with 0xFFFFFFFF for boost and php, 0 for folly), which is added here.
      
      Reviewed By: djwatson
      
      Differential Revision: D5396671
      
      fbshipit-source-id: 14874af2d5a80408c772875142de6e340ce01038
      13feee4b
    • Christopher Dykes's avatar
      Add an sfmt19937 benchmark · 4169222e
      Christopher Dykes authored
      Summary: `__gnu_cxx::sfmt19937` is 3.5x faster than `std::mt19937` according to the benchmark.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5393697
      
      fbshipit-source-id: bc725838dc7f62d030c7e68bc6d229042df2b46c
      4169222e
    • Peter DeLong's avatar
      Allow fiber to be called on both type Fiber and Fiber* · 3f97ccef
      Peter DeLong authored
      Summary: The fiber command can now be run on a value of type folly::fibers::Fiber or a value of type folly::fibers::Fiber*
      
      Reviewed By: andriigrynenko
      
      Differential Revision: D5393491
      
      fbshipit-source-id: 1f48e08288f75c59852c939062db616eb06cea73
      3f97ccef
    • Giuseppe Ottaviano's avatar
      Use Baton (again) in EventBase::runInEventBaseThreadAndWait · 6e904443
      Giuseppe Ottaviano authored
      Summary:
      `Baton` is more lightweight than a mutex+condition variable, and the code is much simpler. This was actually the original implementation, but the dependency had to be dropped because `Baton` was unsupported on some architectures. That is not a problem anymore.
      
      Also reorganize the includes to follow the conventions.
      
      Reviewed By: andriigrynenko, yfeldblum
      
      Differential Revision: D5396631
      
      fbshipit-source-id: d782cf271eb35723aaeb3c372e1c1dafeaaf0f0a
      6e904443
    • Xiangyu Bu's avatar
      Update providedCiphersStr_ in one place. · 9d23df15
      Xiangyu Bu authored
      Summary:
      The function `setCipherList` seems to forget to update the data member
      `providedCipherString_`. This diff updates `providedCiphersString_` at
      a single place `setCiphersOrThrow()`, and adds two test cases to make
      sure the derived `SSL*` uses the desired set of ciphers.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5372758
      
      fbshipit-source-id: 8144ab3bc518b2b9fa8090af62f3bd6475bbbece
      9d23df15
    • Yedidya Feldblum's avatar
      Compute masks in IPAddressV6 · 9b6eade1
      Yedidya Feldblum authored
      Summary:
      [Folly] Compute masks in `IPAddressV6`.
      
      At runtime, instead of storing a 2Kb masks array in the binary.
      
      Reviewed By: WillerZ, ot
      
      Differential Revision: D5369901
      
      fbshipit-source-id: 031a4eeda1670021236d8ab97f6e85e753675ae5
      9b6eade1
    • Peter DeLong's avatar
      Add function to folly_fibers.py to get the address of a specific fiber from a fiberManager · d6f902fb
      Peter DeLong authored
      Summary: Add a fiber_address(fiberManager, index) function so that you can programatically get the address of a given fiber in a fiberManager
      
      Reviewed By: andriigrynenko
      
      Differential Revision: D5377605
      
      fbshipit-source-id: b9504f7d253e8f702e9329c6f08ff406d4296a6e
      d6f902fb
  8. 10 Jul, 2017 2 commits
  9. 09 Jul, 2017 1 commit
    • Yedidya Feldblum's avatar
      In-place construction for Future · e8527d2e
      Yedidya Feldblum authored
      Summary:
      [Folly] In-place construction for `Future`.
      
      Using `in_place` as the first argument. Avoid constructing a contained object and then moving it into the `Future`, which may be more expensive, by providing an unambiguous way to specify perfect forwarding.
      
      And a matching overload of `makeFuture` for no particularly good reason.
      
      Differential Revision: D5362324
      
      fbshipit-source-id: e612965f34ed0fae5fac17db631f7eab9984c696
      e8527d2e
  10. 08 Jul, 2017 1 commit