1. 30 Aug, 2017 6 commits
    • Michael Lee's avatar
      Include `<array>` for test · faa5f598
      Michael Lee authored
      Summary: <array> is sometimes necessary for using `std::array`. Fix up
      
      Reviewed By: aary
      
      Differential Revision: D5740866
      
      fbshipit-source-id: 13bafadd26fdd0f2eff3513115b43811682e7cda
      faa5f598
    • Aaryaman Sagar's avatar
      Conditionally compiled for_each with constexpr · f45b792f
      Aaryaman Sagar authored
      Summary:
      Code was breaking in versions of C++ where constexpr functions are
      required to have one line bodies
      
      Reviewed By: yfeldblum, mzlee
      
      Differential Revision: D5739062
      
      fbshipit-source-id: 6c509f1daf77751d33ce9c173a0d7f1d3bd2a006
      f45b792f
    • Maged Michael's avatar
      Dynamic MPMCQueue: Eliminate cases of enqueue indefinite blocking and failure... · 9ce176b1
      Maged Michael authored
      Dynamic MPMCQueue: Eliminate cases of enqueue indefinite blocking and failure in the extensible version that impossible under the default pre-allocated version
      
      Summary:
      Currently under the extensible version (Dynamic == true), some enqueue operations may block indefinitely or fail (return false) even though such outcomes are impossible under the default (Dynamic == false) pre-allocated version.
      
      This diff eliminates such cases by changing the algorithms for the extensible version. Some of the high-level changes:
      - The offset formula for an expansion guarantees that no enqueue operation left behind in a closed array does not have an existing dequeue operation that unblocks it. The old formula was 1 + max(head, tail). The new formula is max(head, current offset) + current capacity.
      - Conditional operations validate state after the success of CAS.
      
      Reviewed By: djwatson
      
      Differential Revision: D5701013
      
      fbshipit-source-id: 4917c5b35b7e2a2fddfd2e11fb5aeb478502137c
      9ce176b1
    • Yedidya Feldblum's avatar
      constexpr_log2 · f7ec2efe
      Yedidya Feldblum authored
      Summary:
      [Folly] `constexpr_log2`.
      
      Useful for anything that needs to compute log2 at compile time.
      
      Reviewed By: eduardo-elizondo
      
      Differential Revision: D5734727
      
      fbshipit-source-id: 8eab7991eea2104570eecd8e84ede6160bb0b549
      f7ec2efe
    • Yedidya Feldblum's avatar
      Shrink MicroSpinLock.h transitive includes and inline methods · 70137200
      Yedidya Feldblum authored
      Summary: [Folly] Shrink `MicroSpinLock.h` transitive includes and inline methods.
      
      Reviewed By: meyering
      
      Differential Revision: D5732693
      
      fbshipit-source-id: 386816f0d97c145ff8a4180d41c8a682694aa6cb
      70137200
    • Xiao Shi's avatar
      rm old comment on HHWheelTimer::UniquePtr · 985a7f47
      Xiao Shi authored
      Summary: This comment is outdated.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5730049
      
      fbshipit-source-id: f6088c4354210fafb019656cdf8246abf90fbc06
      985a7f47
  2. 29 Aug, 2017 7 commits
  3. 28 Aug, 2017 3 commits
    • Christopher Dykes's avatar
      Enable auto-deps in all of Folly · 2ccbaf9e
      Christopher Dykes authored
      Summary: This enables the last of the magic internally.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5719795
      
      fbshipit-source-id: fb59a0d7873e9a9f3b73f556b42b647091ca7e67
      2ccbaf9e
    • Yedidya Feldblum's avatar
      Shrink MicroSpinLock.h transitive includes and inline methods · 053fb025
      Yedidya Feldblum authored
      Summary: [Folly] Shrink `MicroSpinLock.h` transitive includes and inline methods.
      
      Reviewed By: Orvid
      
      Differential Revision: D5714883
      
      fbshipit-source-id: 1744685ff9fa8d3620aef2545c8fe3ebc481df06
      053fb025
    • Patryk Zaryjewski's avatar
      Make cancelling and rescheduling of functions O(1) · 951a822c
      Patryk Zaryjewski authored
      Summary: Currently FunctionScheduler calls that cancel/restart timer for a function of particular id are O(n). By introducing hashmap that translate id to pointer of particular RepeatFunc, we make it O(1).
      
      Reviewed By: simpkins
      
      Differential Revision: D5668557
      
      fbshipit-source-id: e5e8bf9bd75b6d5d42f0bfa398d476703e5801fa
      951a822c
  4. 25 Aug, 2017 5 commits
    • Aaryaman Sagar's avatar
      gcc 6.2 was not accepting the current definition of void_t · db9fd491
      Aaryaman Sagar authored
      Summary:
      The current definition of void_t was leading to errors because unused
      template parameters are ignored and SFINAE SFIAEs
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5700825
      
      fbshipit-source-id: d23336070c217e8594980d6db710cb417b014236
      db9fd491
    • Marko Novakovic's avatar
      Added a flag FOLLY_FORCE_EXCEPTION_COUNT_USE_STD · 04a42b09
      Marko Novakovic authored
      Summary:
      The flag FOLLY_FORCE_EXCEPTION_COUNT_USE_STD forces
      the usage of std:uncaught_exceptions() for folly's
      implementation of uncaught_exceptions()
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5542302
      
      fbshipit-source-id: 2c2f507ab9dde916a160a9c370a267cdcfd7203a
      04a42b09
    • Stella Lau's avatar
      Enforce forward progress with StreamCodec · 91022bb0
      Stella Lau authored
      Summary:
      - Throw exception if no forward progress was made with `StreamCodec.compress()` and `StreamCodec.uncompress()`
      - Prevents infinite looping behavior when no forward progress was made
      - Update tests
      
      Reviewed By: terrelln
      
      Differential Revision: D5685690
      
      fbshipit-source-id: 969393896b74f51250f0e0ce3af0cd4fedcab49a
      91022bb0
    • Qinfan Wu's avatar
      Fix typo in Function.h · 82ee3be4
      Qinfan Wu authored
      Summary: [Folly] Fix typo in `Function.h`.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5703550
      
      fbshipit-source-id: 9dc09697fd09db6c65b1a4f2d8bdf44451b4aab2
      82ee3be4
    • Greg Nisbet's avatar
      add public kSlotSize to IndexedMemPool · 37c61971
      Greg Nisbet authored
      Summary:
      add public kSlotSize to IndexedMemPool,
      needed to support getting the approximate memory footprint of the pool
      (since a Slot has two atomic uint32_t's more than a bare Elem)
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5690225
      
      fbshipit-source-id: 667da6b67b339038b92b0e5acde17219fe1c85c5
      37c61971
  5. 24 Aug, 2017 9 commits
    • Aaryaman Sagar's avatar
      Added rvalue and const rvalue overloads to Try · 51647aaa
      Aaryaman Sagar authored
      Summary:
      Try was missing some important-ish overloads that help it behave well
      in rvalue contexts
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5692021
      
      fbshipit-source-id: c34627b56eb52dceaeb1f00ae930ee3bc6e00306
      51647aaa
    • Aaryaman Sagar's avatar
      unwrapTryTuple only accepted rvalue tuple types · 374d408b
      Aaryaman Sagar authored
      Summary:
      unwrapTryTuple only accepted rvalue tuple types, this diff fixes that
      to work with forwarding reference tuple types.
      
      Also reduces the number of template instantiations
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5682996
      
      fbshipit-source-id: ee6dd2c20d8dfca33e769a98a6ca56fa96c73b72
      374d408b
    • Andrii Kryzhyk's avatar
      Create generic method to extract mac address from EUI-64 constructed addresses · de75bdc4
      Andrii Kryzhyk authored
      Summary: Link local is not the only type of address that is based on mac address, therefore create generic function to extract mac address from EUI-64 autoconfigured addresses using the same logic as for getMacAddressFromLinkLocal
      
      Reviewed By: pallotron
      
      Differential Revision: D5697781
      
      fbshipit-source-id: 4d69085a1d8f08e06496b8a9b638ac7ff31c6c3a
      de75bdc4
    • Peter DeLong's avatar
      Improve formatting of scripts and test files · f2d4ac87
      Peter DeLong authored
      Summary: Reformatted the scripts and test files to look better and also to avoid lint warnings in the future
      
      Reviewed By: andriigrynenko
      
      Differential Revision: D5673856
      
      fbshipit-source-id: 5818625ec14d18ef3b9b804df53949afefc3b98f
      f2d4ac87
    • Stella Lau's avatar
      Add LZMA streaming interface · 9dc004f8
      Stella Lau authored
      Summary:
      - Replace LZMA2Codec with LZMA2StreamCodec
      - Update tests to reflect LZMA2_VARINT_SIZE requiring data length
      
      Reviewed By: terrelln
      
      Differential Revision: D5625388
      
      fbshipit-source-id: 3303c6dda5d41f40615c87504a46923815b0b716
      9dc004f8
    • Yedidya Feldblum's avatar
      Try::exception overload for Try&& · 4d4a549d
      Yedidya Feldblum authored
      Summary:
      [Folly] `Try::exception` overload for `Try&&`.
      
      For consistency with `Try::value`.
      
      Reviewed By: WillerZ
      
      Differential Revision: D5691758
      
      fbshipit-source-id: 9904b2a5c90f4575a3c09dc012658d359d11fdd9
      4d4a549d
    • Christopher Dykes's avatar
      Rename FOLLY_A64 to FOLLY_AARCH64 · aa86aa27
      Christopher Dykes authored
      Summary:
      `FOLLY_AARCH64` is more descriptive.
      (searching for A64 tells you nothing, searching for aarch64 tells you a lot)
      
      Reviewed By: yfeldblum, andrewjcg
      
      Differential Revision: D5663075
      
      fbshipit-source-id: 8f31fde4aa394f5452305929541af6d38e4d8a37
      aa86aa27
    • shane's avatar
      update README for ubuntu 16.04 LTS + custom boost installation details · a901072c
      shane authored
      Summary:
      the README didn't have explicit instructions for ubuntu 16.04 LTS...  now it does.
      
      i also added a section for how to handle building folly w/a custom boost installation.
      Closes https://github.com/facebook/folly/pull/664
      
      Reviewed By: eduardo-elizondo
      
      Differential Revision: D5694143
      
      Pulled By: yfeldblum
      
      fbshipit-source-id: e2786d045c3459cac49c8b052d90ca24d10f7922
      a901072c
    • Alison Tsai's avatar
      macro to enable scoped trace section functionality · f74bfffc
      Alison Tsai authored
      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
      f74bfffc
  6. 22 Aug, 2017 5 commits
    • Yedidya Feldblum's avatar
      Use simple exception_wrapper ctor in the Promise::setException test · 116ae463
      Yedidya Feldblum authored
      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
      116ae463
    • Aaryaman Sagar's avatar
      Added a for_each function to iterate through ranges · 05db64e6
      Aaryaman Sagar authored
      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
      05db64e6
    • Mingtao Yang's avatar
      Explicitly initialize AsyncSocket in MockAsyncSSLSocket · 02fe20e3
      Mingtao Yang authored
      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
      02fe20e3
    • Yedidya Feldblum's avatar
      Use exception_wrapper::from_exception_ptr in Try and Promise · 1eccb2e6
      Yedidya Feldblum authored
      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
      1eccb2e6
    • Stella Lau's avatar
      Add zlib-specific codec initialization · 2ca5653c
      Stella Lau authored
      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
      2ca5653c
  7. 21 Aug, 2017 2 commits
    • Yedidya Feldblum's avatar
      exception_wrapper::from_exception_ptr · f372f154
      Yedidya Feldblum authored
      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
      f372f154
    • Phil Willoughby's avatar
      SynchronizedPtr · 4560ebca
      Phil Willoughby authored
      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
      4560ebca
  8. 19 Aug, 2017 1 commit
    • Xiangyu Bu's avatar
      Recommended cipher list for server side. · f2ddd0ef
      Xiangyu Bu authored
      Summary: A SSLOptions recommended for cipher use.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5614280
      
      fbshipit-source-id: a6b1adfa8d168f35c7bc7d4088c4073c3f4084a5
      f2ddd0ef
  9. 18 Aug, 2017 2 commits
    • Xiangyu Bu's avatar
      Let SSLContext::setCipherList accept generic container type. · 0e0710e3
      Xiangyu Bu authored
      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
      0e0710e3
    • Dave Watson's avatar
      Drop jemalloc specific smartRealloc integration · 389f2c45
      Dave Watson authored
      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
      389f2c45