1. 21 Jul, 2017 3 commits
    • Yedidya Feldblum's avatar
      Style tweaks to max_align_v calculation · 1804caee
      Yedidya Feldblum authored
      Summary:
      [Folly] Style tweaks to `max_align_v` calculation.
      
      * Change ns from `folly::detail` since that can be crowded and many other folly libraries may include this header.
      * Extract a 2-param `max` alias.
      * Fix an incorrectly hardcoded `size_t`.
      
      Reviewed By: WillerZ
      
      Differential Revision: D5468758
      
      fbshipit-source-id: 14a3f67323020a3cfce2b3b46f5f64f3e6125027
      1804caee
    • Yedidya Feldblum's avatar
      Apply clang-format to folly/tracing/ · efce8553
      Yedidya Feldblum authored
      Summary: [Folly] Apply `clang-format` to `folly/tracing/`.
      
      Reviewed By: Orvid
      
      Differential Revision: D5460511
      
      fbshipit-source-id: c7a7d34211044a1b76934f184a8552a96d0bad91
      efce8553
    • Yedidya Feldblum's avatar
      Parse suffixes without switch-fallthrough in huge-pages · af8f1710
      Yedidya Feldblum authored
      Summary: [Folly] Parse suffixes without switch-fallthrough in huge-pages. It is clever, but weird. We can use an immediately-executed lambda expression to make it convenient.
      
      Reviewed By: Orvid
      
      Differential Revision: D5467585
      
      fbshipit-source-id: 02ddb97641db97e38e3f40388ecc522eccd436cb
      af8f1710
  2. 20 Jul, 2017 8 commits
    • Yedidya Feldblum's avatar
      Apply clang-format to folly/experimental/bser/ · 060471a0
      Yedidya Feldblum authored
      Summary: [Folly] Apply `clang-format` to `folly/experimental/bser/`.
      
      Reviewed By: Orvid
      
      Differential Revision: D5460552
      
      fbshipit-source-id: e103f8920eb29b7c14688f5bbb3e28129ef35e96
      060471a0
    • Yedidya Feldblum's avatar
      Drop a remnant of gcc48 support in futures · 93dc9876
      Yedidya Feldblum authored
      Summary: [Folly] Drop a remnant of gcc48 support in futures. Because gcc48 is no longer supported.
      
      Reviewed By: Orvid, meyering
      
      Differential Revision: D5460788
      
      fbshipit-source-id: 86e2985a0980357641d18f59fd25b9667ec30ab0
      93dc9876
    • Jeff Cai's avatar
      fix ExceptionWrapper comment · 663e27f9
      Jeff Cai authored
      Summary:
      Fix comment for exception_wrapper's `operator bool()`.
      It reads "return `true` if `*this` is not holding an exception"
      but the actual behavior is to return `true` if `*this` *is* holding
      an exception.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5456386
      
      fbshipit-source-id: ec3a472ea441476d835881e94036a3957bb2ab32
      663e27f9
    • Phil Willoughby's avatar
      Introduce folly::max_align_t and folly::max_align_v · 2177f05a
      Phil Willoughby authored
      Summary:
      `folly::max_align_t` is a portable replacement for `std::max_align_t`.
      
      `folly::max_align_v` is a `constexpr size_t` with the same value as `alignof(folly::max_align_t)`
      
      32-bit iOS environments have `alignof(std::max_align_t) == 4`, which is not correct. This is more
      correct in that I have not yet found a more-aligned basic type.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5442333
      
      fbshipit-source-id: 0a93e48a730d65ef76e04f132b5976c93587b14c
      2177f05a
    • Subodh Iyengar's avatar
      Add folly non null · 339c14d3
      Subodh Iyengar authored
      Summary:
      Add non null annotation to
      folly to help with linters
      complaining when a pointer could
      be null, however it never is.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5453255
      
      fbshipit-source-id: cf7ccbcc86d171ef4f6d373b6f751f709e4587b1
      339c14d3
    • Yedidya Feldblum's avatar
      Move futures helper types into folly::futures::detail · 5a81b5df
      Yedidya Feldblum authored
      Summary:
      [Folly] Move futures helper types into `folly::futures::detail`.
      
      From `folly::detail`, where it would be easier to collide. Especially for names like `Core`.
      
      Reviewed By: WillerZ
      
      Differential Revision: D5460766
      
      fbshipit-source-id: 3f7bff784bbb89c7c86d2f1824323d71321c7ad6
      5a81b5df
    • Benjamin Reesman's avatar
      do not crash process by default when ExceptionTracer fails to reflect over cxxabi · 05a686a7
      Benjamin Reesman authored
      Summary: It is possible in certain cirucmstances for the cxxabi reflection code in `ExceptionTracer` to fail to cope with exceptions that we've seen in production and it currently aborts the process in that case. This diff switches this to `DFATAL`/`DCHECK`.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5431445
      
      fbshipit-source-id: c3d68372c2fadbb518f78fe99e817db611953d22
      05a686a7
    • Tom Jackson's avatar
      Visit, for monitoring or mutating pipelines · e1fb97e7
      Tom Jackson authored
      Summary: The pattern `mapped([](auto&& i) { ...; return std::move(i); }` is quite common. Evidently people need some good mechanism to just observe or possibly mutate items in pipelines. Note that this is still lazy, it is only called when the pipeline is run.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5457196
      
      fbshipit-source-id: 3a892b8895e02dd8fcd6a7fd4d3b27063d1b071f
      e1fb97e7
  3. 19 Jul, 2017 5 commits
    • Victor Gao's avatar
      change the definition of FOLLY_MAYBE_UNUSED · 4b807f9e
      Victor Gao authored
      Summary:
      Currently gcc does not support attributes declared using square brackets well and some builds might break because of this.
      
      Since `__attribute__((...))` works for both clang and gcc, we should switch to it for now.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5456734
      
      fbshipit-source-id: d7a8bf1389afc5d60604f22d37c93611dc46259c
      4b807f9e
    • Dave Watson's avatar
      3-way crc32c · 74102328
      Dave Watson authored
      Summary: Current folly version uses a single crc32c.  crc32c has a latency of 3, so pipelining three in a row makes it nearly 3x faster (for data all in cache).
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5418228
      
      fbshipit-source-id: d3a250e1b4fe1f0bc99b44c660df94cf233aebd6
      74102328
    • Xiangyu Bu's avatar
      Add SSLOptions to Makefile.am. · 98df5db5
      Xiangyu Bu authored
      Summary: Add paths of SSLOptions.{cpp, h} to folly/Makefile.am.
      
      Reviewed By: Orvid
      
      Differential Revision: D5453343
      
      fbshipit-source-id: ba0b8b065ed964dfff1757533db17e31aa672e83
      98df5db5
    • Eli Lindsey's avatar
      append the interface index instead of throwing an exception when the scope id lookup fails · 8114790f
      Eli Lindsey authored
      Summary: As written, this str() method depends on the current state of the host - if an interface disappears (as is commong with eg. mobile, ipsec, etc.) then attempting to generate a string representation of this v6 address will currently throw an exception. Instead, we're going toignore the lookup failure and append the index i; this form is interchangeable, though slightly less legible.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5443618
      
      fbshipit-source-id: bbd3b4edaee8098671140af7400377d5e2b1937b
      8114790f
    • Dave Watson's avatar
      AtomicCoreCachedSharedPtr · 3d63fc96
      Dave Watson authored
      Summary: A folly::atomic_shared_ptr version of CoreCachedSharedPtr.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5389603
      
      fbshipit-source-id: 942700cd66f5f5219418f4c6112146dc40351aa0
      3d63fc96
  4. 18 Jul, 2017 7 commits
    • Christopher Dykes's avatar
      Support if_indextoname in the socket portability header · e6fa347e
      Christopher Dykes authored
      Summary: Windows doesn't have `net/if.h` and instead needs `iphlpapi.h` included, and `ntddndis.h` is ultimately needed to get the definition of `IF_NAMESIZE`.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5438188
      
      fbshipit-source-id: 48a786f7d10ca4b8479bb20b257ed1e857431654
      e6fa347e
    • Victor Gao's avatar
      add FOLLY_MAYBE_UNUSED · b10cedce
      Victor Gao authored
      Summary: This adds a macro `FOLLY_MAYBE_UNUSED` in `folly/CppAttributes.h` that can be used to suppress `-Wunused` warnings.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5444742
      
      fbshipit-source-id: b16e8efefd76282498ad6114bac9548064cf38d5
      b10cedce
    • Xiangyu Bu's avatar
      Functions to set common ciphers and sig algs for SSLContext. · 99b781df
      Xiangyu Bu authored
      Summary:
      This diff contains some helper functions that set a `SSLContext` object with recommended
      lists of ciphers and signature algorithms for given scenarios. In addition, DES and CHACHA are removed from the cipher list.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5373599
      
      fbshipit-source-id: 04de11fe90cac734caa12a80e56f70532803f94e
      99b781df
    • 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
  5. 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
  6. 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
  7. 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
  8. 13 Jul, 2017 3 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