1. 17 Aug, 2017 3 commits
    • Phil Willoughby's avatar
      Remove a use of SFINAE in the Range constructor. · 6078246a
      Phil Willoughby authored
      Summary:
      Specifically, the constructor `implicit Range(Iter)` is now declared and defined for all `Range` specializations. It is an error to use it, and we `static_assert`, unless `Iter` is `char const *` or `char *`.
      
      Performance effect
       ---
      Measuring compilation-time on a file that just make ~40k StringPieces, compiled with -O3. All compilers produced identical code before/after this change.
      
      * clang-trunk: 4% improvement
      * gcc-5: no change
      * gcc-4.9: 11% improvement
      * gcc-7.1: 5% improvement
      
      Could this possibly break any existing code?
       ---
      Yes. If you have a function that's overloaded for both `Range<char const*>` and `Range<X>` and your input object is not `char const*` and is implicitly convertible to both `char const*` and `X`: that is now ambiguous whereas before it would unambiguously pick the `Range<char const*>` overload. I don't consider this scenario likely.
      
      Why should this work?
       ---
      Using SFINAE is more expensive at compile time (with some compilation environments) than not using it. It's necessary to use SFINAE when there is an alternative function which will be used in preference when the substitution fails, but when that is not the case it is on average cheaper to make the function always exist and use static_assert to disallow the bad uses of it. A bonus is that the caller gets a more comprehensible error message.
      
      Reviewed By: nbronson
      
      Differential Revision: D5639502
      
      fbshipit-source-id: 13469f2995a487398734f86108087fdc8e32ad71
      6078246a
    • Philip Jameson's avatar
      Optionally run autoconf · 1eb414a3
      Philip Jameson authored
      Summary:
      This makes it so that the //folly:config rule can run autoconf to create folly-config
      
      - Uses cxx_genrule get compiler settings and paths to dependent libraries
      - Goes around a couple of oddities in the way that buck exports some of its macros
      - While it uses buck_cxx_library, that's okay to use outside of facebook's internal repos.
      
      Reviewed By: meyering
      
      Differential Revision: D5620729
      
      fbshipit-source-id: 0d2d8e3bda92182dcdcd3e80cb12a3756b3816ac
      1eb414a3
    • Rushy Panchal's avatar
      Add prepareSkipTo() method to EliasFanoReader · 29c72a13
      Rushy Panchal authored
      Summary:
      `prepareSkipTo(x`) allows the client of EliasFanoReader to "hint" that
      `skipTo(x)` will be called in the near future. The primary benefit of doing so
      is that memory which is needed for `skipTo(x)` can be prefetched to minimize
      cache misses incurred when calling `skipTo(x)`.
      
      Reviewed By: ot, philippv
      
      Differential Revision: D5508995
      
      fbshipit-source-id: 4876b566256849f76193db3dc0404768aeeeb30d
      29c72a13
  2. 16 Aug, 2017 3 commits
    • Shu Zhang's avatar
      Add ConcurrentHashMap installable · 5dd29df0
      Shu Zhang authored
      Summary:
      ConcurrentHashMap is a newly added feature and we wanted to test it in our enviornment, making it installable.
      
      Built & Installed on ubuntu 14 env.
      Closes https://github.com/facebook/folly/pull/659
      
      Reviewed By: djwatson
      
      Differential Revision: D5629159
      
      Pulled By: yfeldblum
      
      fbshipit-source-id: 8a40e768f3db7918a3b284059f2efa0b7ecb9aca
      5dd29df0
    • Mirek Klimos's avatar
      folly::ElfFile - add support to iterate over program headers · fbc0b24a
      Mirek Klimos authored
      Summary: Adding iterateProgramHeaders, similar to iterateSections, just iterates over program headers instead of section headers. I want this to get the size of the first PT_LOAD header.
      
      Differential Revision: D5602575
      
      fbshipit-source-id: f73989cade20214f884571c1099761ecaa4841f7
      fbc0b24a
    • Maged Michael's avatar
      Fix destruction order · 520148aa
      Maged Michael authored
      Summary:
      - Added `hazptr.cpp` and `memory_resource.cpp`. Moved singleton code to source.
        - Changed the singleton for the default `hazptr_domain` to a global.
        - Changed hazptr_stats singleton to a global.
        - Moved the thread caching calls from the hazptr_domain functions to the constructor/destructor of hazptr_holder.
        - Changed the TLS singletons to TLS globals.
        - Changed some inlining directives.
        - Leak the hazptr_rec-s in the default domain
      
      Reviewed By: davidtgoldblatt, djwatson
      
      Differential Revision: D5553753
      
      fbshipit-source-id: da69eecec55c0f78fb8ef5591f9aeffee99ff3fa
      520148aa
  3. 15 Aug, 2017 1 commit
  4. 14 Aug, 2017 3 commits
    • Peter DeLong's avatar
      Add hooks to track which threads belong to which thread pools · b32c4feb
      Peter DeLong authored
      Summary:
      Keep track of which threads belong to which thread pools for use when debugging.
      This will be paired with a gdb script that associates threads with their thread pools
      
      Reviewed By: andriigrynenko
      
      Differential Revision: D5514729
      
      fbshipit-source-id: 57ada4dd1aaaec5d7026e4eee05b0ec4e7434c77
      b32c4feb
    • Nick Wolchko's avatar
      allow comparing Optional<T> with none · 23de25b8
      Nick Wolchko authored
      Summary:
      `std::optional` supports comparing with `std::nullopt`, so
      `folly::Optional` should do the same with `folly::none`.
      This also involves marking hasValue() noexcept to be the same as `std::optional`.
      
      Reviewed By: yfeldblum, WillerZ
      
      Differential Revision: D5617825
      
      fbshipit-source-id: a4b863dd61c3a86223fb21a5b7759e7c295fd272
      23de25b8
    • Xiangyu Bu's avatar
      AsyncSSLSocket::get/setClientCertValidationResult API. · 7289b921
      Xiangyu Bu authored
      Summary:
      The added API will be used for storing and retrieving validation result of client cert.
      
      At some point we may change "client" to "peer" to make it generic.
      
      Reviewed By: anirudhvr
      
      Differential Revision: D5610404
      
      fbshipit-source-id: 2feb03abc0594af4c68db33d8885ea214867148a
      7289b921
  5. 10 Aug, 2017 1 commit
    • Nathan Bronson's avatar
      small_vector default constructor shouldn't be explicit · 3b856e50
      Nathan Bronson authored
      Summary:
      Containers should not tag their default constructor explicit,
      because it means that you can't return an empty one with "return {};".
      This diff removes the explicit tag from small_vector's default
      constructor.
      
      Reviewed By: meyering
      
      Differential Revision: D5602749
      
      fbshipit-source-id: 2a4a356134c69d01e3b040719dc6ffca0fe97e75
      3b856e50
  6. 09 Aug, 2017 4 commits
    • Nick Jiang's avatar
      fix sorted_vector_{set,map} bulk_insert deduplication · ae32b8a5
      Nick Jiang authored
      Summary: this fixes the case where bulk inserting a range where the smallest element is equal to the largest element of the current set/map fails to deduplicate that element.
      
      Reviewed By: mlogan, yfeldblum
      
      Differential Revision: D5593284
      
      fbshipit-source-id: 487500ee7a5e33f27c24321ad4a3c07a669fc26c
      ae32b8a5
    • Yedidya Feldblum's avatar
      Explicitly handle gcc in FOLLY_MAYBE_UNUSED · eb8f3c3c
      Yedidya Feldblum authored
      Summary:
      [Folly] Explicitly handle gcc in `FOLLY_MAYBE_UNUSED`.
      
      Fixes build break from {D5562220}.
      
      Reviewed By: Orvid
      
      Differential Revision: D5594288
      
      fbshipit-source-id: 5aa2dcb6133d53a0eb20d34b67c8e4407dd2b7ca
      eb8f3c3c
    • Yedidya Feldblum's avatar
      Cut unnecessary parens in IPAddress.h · 13f2e056
      Yedidya Feldblum authored
      Summary: [Folly] Cut unnecessary parens in `IPAddress.h`.
      
      Reviewed By: meyering
      
      Differential Revision: D5589756
      
      fbshipit-source-id: 6499e0db2aeb232356e2808fc59a35869b5dad0a
      13f2e056
    • Yedidya Feldblum's avatar
      Let IPAddressV4::bitCount and IPAddressV6::bitCount be constexpr · 9432d632
      Yedidya Feldblum authored
      Summary: [Folly] Let `IPAddressV4::bitCount` and `IPAddressV6::bitCount` be `constexpr`.
      
      Reviewed By: meyering
      
      Differential Revision: D5589954
      
      fbshipit-source-id: f4208efd62e71f47a7c87bdc8ddd421f93413c29
      9432d632
  7. 08 Aug, 2017 2 commits
    • Yedidya Feldblum's avatar
      Apply clang-format to folly/**/*Address*.* · 0b856bd5
      Yedidya Feldblum authored
      Summary: [Folly] Apply `clang-format` to `folly/**/*Address*.*`.
      
      Reviewed By: Orvid
      
      Differential Revision: D5581523
      
      fbshipit-source-id: 97b5270e43e279e7deb9606524d5fee844a50649
      0b856bd5
    • Phil Willoughby's avatar
      Add a UDL suffix to define a StringPiece · d44f36ab
      Phil Willoughby authored
      Summary:
      Use it like this:
      ```
      using namespace folly::string_piece_literals;
      StringPiece p = "A literal string"_sp;
      ```
      
      In some compilation environments it can be more efficient than the implicit
      conversion from `char const *` to `StringPiece`.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5562782
      
      fbshipit-source-id: ce715edc65b1510761e127bf89a6936370253a68
      d44f36ab
  8. 07 Aug, 2017 1 commit
    • Sargun Vohra's avatar
      Don't allow Future::onError([](exception_wrapper&){}) to compile · 148df69f
      Sargun Vohra authored
      Summary: `Future::onError` does not work with a function that takes `exception_wrapper&`, so it should not compile. `exception_wrapper`, `const exception_wrapper&`, and `exception_wrapper&&` are unaffected.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5556083
      
      fbshipit-source-id: 45d096d9fee00322eeec6b9b9b1dcbef55cced03
      148df69f
  9. 06 Aug, 2017 2 commits
    • Yedidya Feldblum's avatar
      Consistent use of sformat in address-related files · d7d34a09
      Yedidya Feldblum authored
      Summary:
      [Folly] Consistent use of `sformat` in address-related files.
      
      V.s. `format(/*...*/).str()` and v.s. `to<std::string>`.
      
      Reviewed By: meyering
      
      Differential Revision: D5570334
      
      fbshipit-source-id: 83aedf9a694721fb209e62e94f1a5c5ecd355e81
      d7d34a09
    • Yedidya Feldblum's avatar
      Apply clang-format to folly/**/*Range*.* · fc10d0b8
      Yedidya Feldblum authored
      Summary: [Folly] Apply `clang-format` to `folly/**/*Range*.*`.
      
      Reviewed By: meyering
      
      Differential Revision: D5570553
      
      fbshipit-source-id: 230aa8557c2d402d741aaa541f96f4634dd13d3b
      fc10d0b8
  10. 04 Aug, 2017 3 commits
    • Xiangyu Bu's avatar
      Test server-side getPeerCert(). · e4c892c7
      Xiangyu Bu authored
      Summary: Make sure server can get client cert using AsyncSSLSocket::getPeerCert() call.
      
      Reviewed By: anirudhvr
      
      Differential Revision: D5557303
      
      fbshipit-source-id: d95696f592e3b3f67acba9f92add32b91c29a000
      e4c892c7
    • Xiangyu Bu's avatar
      Clang-format AsyncSSLSocketTest.cpp. · b6a67aee
      Xiangyu Bu authored
      Summary: ... as titled.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5558742
      
      fbshipit-source-id: b63b121cde8db93de4cabc80563539297611d600
      b6a67aee
    • Marko Novakovic's avatar
      Replacing instances of __CLANG__ with __clang__ · 647dba2f
      Marko Novakovic authored
      Summary:
      Clang compiler does not define `__CLANG__` macro and
      only defines `__clang__`, but we use `__CLANG__` in a
      few places in the code which was probably done by mistake.
      This should make the code behave in the intended way.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5542162
      
      fbshipit-source-id: 74d24ba9464d8faec160d73e6c582967d3c80c19
      647dba2f
  11. 03 Aug, 2017 2 commits
    • Alex Guzman's avatar
      Add X509_EXTENSION unique pointer · d0f5d850
      Alex Guzman authored
      Summary: Adds unique pointer type for X509_EXTENSION
      
      Reviewed By: knekritz
      
      Differential Revision: D5556504
      
      fbshipit-source-id: b84190f20dd0a2ee9f5f07f197caf53a9a063af7
      d0f5d850
    • Adam Norton's avatar
      Reduce Code Duplication In NotificationQueue With Universal Reference · 11a44379
      Adam Norton authored
      Summary: Remove a bunch of identical code that only exists to provide interfaces for both `const MessageT&` and `MessageT&&` arguments.
      
      Reviewed By: ot
      
      Differential Revision: D5540560
      
      fbshipit-source-id: ae7b9345b64130fc748033be2e0587c4f83345a7
      11a44379
  12. 02 Aug, 2017 2 commits
  13. 01 Aug, 2017 6 commits
    • Alex Guzman's avatar
      Create X509_STORE ptr type · b01e4d75
      Alex Guzman authored
      Summary: What it says on tin
      
      Reviewed By: knekritz
      
      Differential Revision: D5533819
      
      fbshipit-source-id: e3ba89f02d20d171fbcb8ed2853267d37bd86756
      b01e4d75
    • Yedidya Feldblum's avatar
      Cut debugging code from SocketAddress · 6065a18c
      Yedidya Feldblum authored
      Summary:
      [Folly] Cut debugging code from `SocketAddress`.
      
      Specifically from its `ExternalUnixAddr` helper class, which is probably not broken.
      
      Reviewed By: simpkins
      
      Differential Revision: D5530685
      
      fbshipit-source-id: adfc46ec1c1a142e9914051e8a97b39f41d71630
      6065a18c
    • Phil Willoughby's avatar
      C++11 support for Replaceable · ccb56f3c
      Phil Willoughby authored
      Summary: Also add tests for the `is_replaceable` trait.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5526317
      
      fbshipit-source-id: 92559d55fbb8d115856ef9e8f86b42e327f74e56
      ccb56f3c
    • Neel Goyal's avatar
      Add TLS 1.2+ version for contexts · b669462b
      Neel Goyal authored
      Summary: Add an SSL Version that specifies only TLS 1.2 and up.  This prevents any client with less than TLS 1.2 from connecting.
      
      Reviewed By: knekritz
      
      Differential Revision: D5537423
      
      fbshipit-source-id: 131f5b124af379eaa2b443052be9b43290c41820
      b669462b
    • Neel Goyal's avatar
      Change AsyncUDP's readCallback to be protected. · 432d60d6
      Neel Goyal authored
      Summary: Change AsyncUDPSocket's ReadCallback to be protected so that subclasses can have access to it.
      
      Reviewed By: yangchi
      
      Differential Revision: D5376012
      
      fbshipit-source-id: 7ec21d9bfe6bde525253adea7abf5dea15fb7fa0
      432d60d6
    • Yedidya Feldblum's avatar
      DRY some methods in IPAddress · 6a3a9eb0
      Yedidya Feldblum authored
      Summary:
      [Folly] DRY some methods in `IPAddress`.
      
      Specifically, the ones which just delegate to either `asV4()` or to `asV6()`.
      
      Reviewed By: mzlee
      
      Differential Revision: D5529797
      
      fbshipit-source-id: 4dd3dc893ab19281325700b85400c1c1aadfd77f
      6a3a9eb0
  14. 31 Jul, 2017 6 commits
    • Yang Chi's avatar
      Make sendmsg in AsyncUDPSocket overridable · 53b24a32
      Yang Chi authored
      Summary: Add a protected virtual sendmsg method to AsyncUDPSocket. And make it default to call the system sendmsg function. This enables subclasses of AsyncUDPSocket to be able to override the behavior of sendmseg, also makes AsyncUDPSocket easier to mock and test.
      
      Reviewed By: afrind
      
      Differential Revision: D5459745
      
      fbshipit-source-id: b0227bf7503b1096cb1f0bfc8b9c784db2f2e45d
      53b24a32
    • Yedidya Feldblum's avatar
      No need for strncpy in passwordCallback · e74ceef6
      Yedidya Feldblum authored
      Summary:
      [Folly] No need for `strncpy` in `passwordCallback`.
      
      Careful reading of the documentation:
      
      > The pem_passwd_cb must write the password into the provided buffer `buf` which is of size `size`.
      >
      > https://wiki.openssl.org/index.php?title=Manual:SSL_CTX_set_default_passwd_cb(3)&oldid=761
      
      No mention is made of a requirement on the password being written into `buf` that it be null-terminated.
      
      Reviewed By: knekritz, meyering
      
      Differential Revision: D5524814
      
      fbshipit-source-id: 6cfc588cdf3675281ffe39e6af376f3f0631d1b0
      e74ceef6
    • Phil Willoughby's avatar
      Remove template helper constants · ea815395
      Phil Willoughby authored
      Summary: Not supported by some environments.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5526180
      
      fbshipit-source-id: 2c2b6f7627860c5f896532b90601c817530e6b69
      ea815395
    • Yedidya Feldblum's avatar
      Consistency in namespace-closing comments · d4aacd24
      Yedidya Feldblum authored
      Summary: [Folly] Consistency in namespace-closing comments.
      
      Reviewed By: Orvid
      
      Differential Revision: D5524744
      
      fbshipit-source-id: ced4dd2398ed6baa3ad5b68b74eee6a5d6b2b103
      d4aacd24
    • Yedidya Feldblum's avatar
      Formatting for template parameters · adf4a5ac
      Yedidya Feldblum authored
      Summary: [Folly] Formatting for template parameters.
      
      Reviewed By: Orvid
      
      Differential Revision: D5525123
      
      fbshipit-source-id: 4feb772300cfdd6ae3168fe9f59f5a951fb85d0e
      adf4a5ac
    • Yedidya Feldblum's avatar
      Simplify the StateSize helper in Random · da591fe6
      Yedidya Feldblum authored
      Summary:
      [Folly] Simplify the `StateSize` helper in `Random`.
      
      * Using member type aliases rather than class constants means we can remove definitions.
      * Partially specializing over all RNG types with `state_size` class constants means we can remove the `mersenne_twister` specializations, which have many template parameters and are a pain.
      
      Reviewed By: Orvid
      
      Differential Revision: D5525144
      
      fbshipit-source-id: bc27f112ed0d9b55befe9dabe08c4d345a402435
      da591fe6
  15. 30 Jul, 2017 1 commit
    • Yedidya Feldblum's avatar
      Outline throw statements in format · 2562ef37
      Yedidya Feldblum authored
      Summary: [Folly] Outline `throw` statements in `format`.
      
      Reviewed By: Orvid
      
      Differential Revision: D5523933
      
      fbshipit-source-id: 371c9ecc707e48dcc05fa4aab4fd326111466161
      2562ef37