Permalink
Commits on Aug 24, 2017
  1. macro to enable scoped trace section functionality

    Alison Tsai committed with facebook-github-bot Aug 23, 2017
    Summary: Add a macro to enable optional scoped trace section functionality (user-defined). This macro will have no effect unless configured to do so. This change means that if proxygen is being upgraded, folly must also be updated.
    
    Reviewed By: mzlee
    
    Differential Revision: D5635123
    
    fbshipit-source-id: 7db17f6ae8c0d1484cf9fad043eb42717279bd0a
Commits on Aug 22, 2017
  1. Use simple exception_wrapper ctor in the Promise::setException test

    yfeldblum committed with facebook-github-bot Aug 22, 2017
    Summary:
    [Folly] Use simple `exception_wrapper` ctor in the `Promise::setException` test.
    
    And add a new case testing with `exception_ptr`.
    
    Reviewed By: andrewjcg
    
    Differential Revision: D5683035
    
    fbshipit-source-id: e8276166dacbe09a9a745271d636db44c593058c
  2. Added a for_each function to iterate through ranges

    aary committed with facebook-github-bot Aug 22, 2017
    Summary:
    Adding a for_each function that allows generalized indexed and breakable iteration through ranges, these can either be runtime ranges (i.e. entities for which std::begin and std::end work) or compile time ranges (as deemed by the presence of a std::tuple_length<>, get<> (ADL resolved) functions)
    
    The function is made to provide a convenient library based solution to the proposal p0589r0, which aims to generalize the range based for loop even further to work with compile time ranges
    
    A drawback of using range based for loops is that sometimes you do not have access to the index within the range.  This provides easy access to that, even with compile time ranges.
    
    Further this also provides a good way to break out of a loop without any overhead when that is not used.
    
    A simple use case would be when using futures, if the user was doing calls to n servers then they would accept the callback with the futures like this
    
       auto vec = std::vector<std::future<int>>{request_one(), ...};
       when_all(vec.begin(), vec.end()).then([](auto futures) {
         folly::for_each(futures, [](auto& fut) { ... });
       });
    
    Now when this code switches to use tuples instead of the runtime std::vector, then the loop does not need to change, the code will still work just fine
    
       when_all(future_one, future_two, future_three).then([](auto futures) {
         folly::for_each(futures, [](auto& fut) { ... });
       });
    
    Reviewed By: yfeldblum
    
    Differential Revision: D5557336
    
    fbshipit-source-id: 79fcbafa7e1671f8856f0dcb7bf7996435dadeaa
  3. Explicitly initialize AsyncSocket in MockAsyncSSLSocket

    mingtaoy committed with facebook-github-bot Aug 22, 2017
    Summary:
    Even though MockAsyncSSLSocket's initializes AsyncSSLSocket, which should
    initialize AsyncSocket, this does not actually happen because AsyncSSLSocket
    virtually inherits from AsyncSocket.
    
    Because of this, prior to this diff, the MockAsyncSSLSocket was not properly
    setting its EventBase.
    
    Reviewed By: knekritz
    
    Differential Revision: D5676596
    
    fbshipit-source-id: 5f3c0e848179cb5eb4d2dc4921a11e7c04d7c0e0
  4. Use exception_wrapper::from_exception_ptr in Try and Promise

    yfeldblum committed with facebook-github-bot Aug 22, 2017
    Summary:
    [Folly] Use `exception_wrapper::from_exception_ptr` in `Try` and `Promise`.
    
    It does just what we need; DRY.
    
    Reviewed By: andrewjcg
    
    Differential Revision: D5674663
    
    fbshipit-source-id: 73e46df62c06736c4eaf013d05dfea819cbec515
  5. Add zlib-specific codec initialization

    stellamplau committed with facebook-github-bot Aug 22, 2017
    Summary:
    - Create interface to initialize zlib codec using specific parameters
    - This enables the raw inflate/deflate and auto inflate options
    - Add tests for option initialization
    
    Reviewed By: terrelln, yfeldblum
    
    Differential Revision: D5649980
    
    fbshipit-source-id: fd36e8edc0e8c528cd6c9d8f39e8ef839b6acfef
Commits on Aug 21, 2017
  1. exception_wrapper::from_exception_ptr

    yfeldblum committed with facebook-github-bot Aug 21, 2017
    Summary:
    [Folly] `exception_wrapper::from_exception_ptr`.
    
    A handry helper for converting from `std::exception_ptr` to `folly::exception_wrapper`.
    
    Reviewed By: ericniebler
    
    Differential Revision: D5668179
    
    fbshipit-source-id: a81a60cb22a2a697714268e027af62dd8825d2c3
  2. SynchronizedPtr

    WillerZ committed with facebook-github-bot Aug 21, 2017
    Summary: Fairly minimal API to start with. Refer to the comments for the rationale/usage.
    
    Reviewed By: yfeldblum
    
    Differential Revision: D5554854
    
    fbshipit-source-id: 173bf7c40e70b55bf6afb8c4bc9e83d48f90b6ee
Commits on Aug 19, 2017
  1. Recommended cipher list for server side.

    Xiangyu Bu committed with facebook-github-bot Aug 18, 2017
    Summary: A SSLOptions recommended for cipher use.
    
    Reviewed By: yfeldblum
    
    Differential Revision: D5614280
    
    fbshipit-source-id: a6b1adfa8d168f35c7bc7d4088c4073c3f4084a5
Commits on Aug 18, 2017
  1. Let SSLContext::setCipherList accept generic container type.

    Xiangyu Bu committed with facebook-github-bot Aug 18, 2017
    Summary:
    Make SSLContext::setCipherList() and SSLContext::setSignatureAlgorithms()
    accept std::array besides std::vector so that cipher lists in SSLOptions
    can be initialized POD.
    
    Reviewed By: yfeldblum
    
    Differential Revision: D5578758
    
    fbshipit-source-id: 7e5c2e9a75600e93c89e7b13a9042434a4189384
  2. Drop jemalloc specific smartRealloc integration

    djwatson committed with facebook-github-bot Aug 18, 2017
    Summary:
    This was added several jemalloc versions ago, and is no longer a win.
    
    From microbenches in folly/test, this codepath is successful less than .5% of the time.
    
    There are a handful of other places directly using this (fbvector, IOBuf, ThreadLocal),
    but should probably change them individually.
    
    Reviewed By: interwq
    
    Differential Revision: D5596678
    
    fbshipit-source-id: 354d7204f61df0eace4d98d930d0f6e06a90ffde
  3. Remove outdated comments referencing removed TAsyncSSLServerSocket

    David Lam committed with facebook-github-bot Aug 18, 2017
    Summary:
    TAsyncSSLServerSocket was deleted in D1806807, so we should remove
    these comments.
    
    Reviewed By: yfeldblum
    
    Differential Revision: D5657431
    
    fbshipit-source-id: ca875293737ad8ba0a8c028c9bfa5651f4a6065f
  4. Fix incorrect format in Overview markdown

    tzutalin committed with facebook-github-bot Aug 18, 2017
    Summary:
    The format is incorrect in [Overview.md](https://github.com/facebook/folly/blob/master/folly/docs/Overview.md)
    Closes #661
    
    Reviewed By: eduardo-elizondo
    
    Differential Revision: D5657083
    
    Pulled By: yfeldblum
    
    fbshipit-source-id: a9cedb413cbb3d455f4c1e5f785d05a33f8182c8
Commits on Aug 17, 2017
  1. Fix undefined behavior when decoding varint

    stellamplau committed with facebook-github-bot Aug 17, 2017
    Summary: Left shifting `0x7f` by `63` is undefined behavior (i.e. when decoding `0xFFFF...`)
    
    Reviewed By: yfeldblum, terrelln
    
    Differential Revision: D5653353
    
    fbshipit-source-id: c74c9f43a9bc82d15a2223df853dc533cea1478b
  2. Add getSSLContext() to AsyncSSLSocket

    mingtaoy committed with facebook-github-bot Aug 17, 2017
    Reviewed By: knekritz
    
    Differential Revision: D5632201
    
    fbshipit-source-id: 5db380379ab6cb608922c77dd716bfc4410b2cd8
  3. Change AsyncSSLSocket getSecurityProtocol to handle unencrypted mode

    ngoyal committed with facebook-github-bot Aug 17, 2017
    Summary: Return empty string for `getSecurityProtocol` if the socket is good and the handshake failed, otherwise "TLS"
    
    Reviewed By: knekritz
    
    Differential Revision: D5647637
    
    fbshipit-source-id: b95cbf39e4bb7f89b1ebcbc0238c2becba7ad42a
  4. Remove a use of SFINAE in the Range constructor.

    WillerZ committed with facebook-github-bot Aug 17, 2017
    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
  5. Optionally run autoconf

    Philip Jameson committed with facebook-github-bot Aug 17, 2017
    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
  6. Add prepareSkipTo() method to EliasFanoReader

    panchr committed with facebook-github-bot Aug 17, 2017
    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
Commits on Aug 16, 2017
  1. Add ConcurrentHashMap installable

    shuzhang1989 committed with facebook-github-bot Aug 16, 2017
    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 #659
    
    Reviewed By: djwatson
    
    Differential Revision: D5629159
    
    Pulled By: yfeldblum
    
    fbshipit-source-id: 8a40e768f3db7918a3b284059f2efa0b7ecb9aca
  2. folly::ElfFile - add support to iterate over program headers

    myreg committed with facebook-github-bot Aug 16, 2017
    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
  3. Fix destruction order

    magedm committed with facebook-github-bot Aug 16, 2017
    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
Commits on Aug 15, 2017
  1. try to fix folly, wangle, etc open-source build

    snarkmaster committed with facebook-github-bot Aug 15, 2017
    Summary: add missing source files to Makefile
    
    Reviewed By: andriigrynenko
    
    Differential Revision: D5630758
    
    fbshipit-source-id: 0f04c11b65fd3a6f4f33e34ae57c0fcba8671e97
Commits on Aug 14, 2017
  1. Add hooks to track which threads belong to which thread pools

    Peter DeLong committed with facebook-github-bot Aug 14, 2017
    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
  2. allow comparing Optional<T> with none

    Nick Wolchko committed with facebook-github-bot Aug 14, 2017
    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
  3. AsyncSSLSocket::get/setClientCertValidationResult API.

    Xiangyu Bu committed with facebook-github-bot Aug 14, 2017
    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
Commits on Aug 10, 2017
  1. small_vector default constructor shouldn't be explicit

    nbronson committed with facebook-github-bot Aug 10, 2017
    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
Commits on Aug 9, 2017
  1. fix sorted_vector_{set,map} bulk_insert deduplication

    Nick Jiang committed with facebook-github-bot Aug 9, 2017
    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
  2. Explicitly handle gcc in FOLLY_MAYBE_UNUSED

    yfeldblum committed with facebook-github-bot Aug 9, 2017
    Summary:
    [Folly] Explicitly handle gcc in `FOLLY_MAYBE_UNUSED`.
    
    Fixes build break from {D5562220}.
    
    Reviewed By: Orvid
    
    Differential Revision: D5594288
    
    fbshipit-source-id: 5aa2dcb6133d53a0eb20d34b67c8e4407dd2b7ca
  3. Cut unnecessary parens in IPAddress.h

    yfeldblum committed with facebook-github-bot Aug 9, 2017
    Summary: [Folly] Cut unnecessary parens in `IPAddress.h`.
    
    Reviewed By: meyering
    
    Differential Revision: D5589756
    
    fbshipit-source-id: 6499e0db2aeb232356e2808fc59a35869b5dad0a
  4. Let IPAddressV4::bitCount and IPAddressV6::bitCount be constexpr

    yfeldblum committed with facebook-github-bot Aug 9, 2017
    Summary: [Folly] Let `IPAddressV4::bitCount` and `IPAddressV6::bitCount` be `constexpr`.
    
    Reviewed By: meyering
    
    Differential Revision: D5589954
    
    fbshipit-source-id: f4208efd62e71f47a7c87bdc8ddd421f93413c29
Commits on Aug 8, 2017
  1. Apply clang-format to folly/**/*Address*.*

    yfeldblum committed with facebook-github-bot Aug 8, 2017
    Summary: [Folly] Apply `clang-format` to `folly/**/*Address*.*`.
    
    Reviewed By: Orvid
    
    Differential Revision: D5581523
    
    fbshipit-source-id: 97b5270e43e279e7deb9606524d5fee844a50649
  2. Add a UDL suffix to define a StringPiece

    WillerZ committed with facebook-github-bot Aug 8, 2017
    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
Commits on Aug 7, 2017
  1. Don't allow Future::onError([](exception_wrapper&){}) to compile

    sargunv committed with facebook-github-bot Aug 7, 2017
    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
Commits on Aug 6, 2017
  1. Consistent use of sformat in address-related files

    yfeldblum committed with facebook-github-bot Aug 6, 2017
    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