1. 12 Jun, 2018 3 commits
    • Alex Guzman's avatar
      Pull sodium fbcode_builder spec out · dc6ade21
      Alex Guzman authored
      Summary: Makes a spec for libsodium.
      
      Reviewed By: knekritz
      
      Differential Revision: D8228801
      
      fbshipit-source-id: 18f623bce0bbc07f711129b15b78d56b6c852bf7
      dc6ade21
    • Yedidya Feldblum's avatar
      A cache for InlineExecutor singleton · c7d8ba07
      Yedidya Feldblum authored
      Summary: [Folly] A cache for `InlineExecutor` singleton, which can be inlined into callers with little extra code compared to calling the backing function directly.
      
      Reviewed By: marshallcline
      
      Differential Revision: D8339793
      
      fbshipit-source-id: d2be0128e617cfefe66809eb44ce40e1a8ae2dfb
      c7d8ba07
    • Yedidya Feldblum's avatar
      Write Promise::setException in terms of Promise::setTry · 3dd9d51b
      Yedidya Feldblum authored
      Summary: [Folly] Write `Promise::setException` in terms of `Promise::setTry`.
      
      Reviewed By: marshallcline
      
      Differential Revision: D8344928
      
      fbshipit-source-id: 90e21219f054329eca7ae1a6c2ca731a16328b6f
      3dd9d51b
  2. 11 Jun, 2018 5 commits
  3. 09 Jun, 2018 4 commits
    • Yedidya Feldblum's avatar
      A shorter name for executor local variable in Future methods · 467571e4
      Yedidya Feldblum authored
      Summary:
      [Folly] A shorter name for executor local variable in `Future` methods. Reads more nicely, with less awkward formatting.
      
      When the scope of a local variable's use is just a few lines, long names are not quite so critical.
      
      Reviewed By: marshallcline
      
      Differential Revision: D8339451
      
      fbshipit-source-id: 5d50cf0ce3473c1a79afeeddb9e1257cccf73e31
      467571e4
    • Yedidya Feldblum's avatar
      No need for qualifying InlineExecutor in Futures · ac16a6fc
      Yedidya Feldblum authored
      Summary: [Folly] No need for qualifying `InlineExecutor` in `Futures` - they are both in `namespace folly` already.
      
      Reviewed By: marshallcline
      
      Differential Revision: D8307058
      
      fbshipit-source-id: 17a0ecde1e57f1c0c88cbac09bbd1bb3daf7a24e
      ac16a6fc
    • Yedidya Feldblum's avatar
      Use InlineExecutor singleton in Future wait · 2b4f07ee
      Yedidya Feldblum authored
      Summary:
      [Folly] Use `InlineExecutor` singleton in `Future` wait v.s. letting the executor be `nullptr`.
      
      The effect is the same, but just more explicit.
      
      Reviewed By: marshallcline
      
      Differential Revision: D8306902
      
      fbshipit-source-id: fc90704de670b1ca9956253383fadad3be297847
      2b4f07ee
    • Andrii Grynenko's avatar
      VirtualExecutor · fc75fc56
      Andrii Grynenko authored
      Summary:
      Executor adaptor which allows joining only tasks scheduled through this VirtualExecutor instance without joining all other tasks in a wrapped Executor.
      This is very similar to VirtualEventBase, but works for any Executor.
      
      Reviewed By: yfeldblum, aary
      
      Differential Revision: D8342064
      
      fbshipit-source-id: 420b6390e2da88c4826e6d22bc8f3b3585525214
      fc75fc56
  4. 08 Jun, 2018 7 commits
    • Yedidya Feldblum's avatar
      Ensure sleep duration in logging RateLimiter test · 12e65c2d
      Yedidya Feldblum authored
      Summary: [Folly] Ensure sleep duration in logging `RateLimiter` test to make sure that there is no chance of waking up from the sleep too early.
      
      Reviewed By: Orvid
      
      Differential Revision: D8330018
      
      fbshipit-source-id: f1222e1da50f8360267f9e1c5e0f24897b7b8f47
      12e65c2d
    • Nathan Bronson's avatar
      clang-format in preparation for changes · 51196c8d
      Nathan Bronson authored
      Reviewed By: shixiao
      
      Differential Revision: D8333485
      
      fbshipit-source-id: 02f74700272b663474c2f02535265ffb6f4bcd22
      51196c8d
    • Marshall Cline's avatar
      add method-level contracts to SemiFuture & Future · 9d6a5522
      Marshall Cline authored
      Summary:
      method-level contracts
      
      (Note: this ignores all push blocking failures!)
      
      Reviewed By: yfeldblum
      
      Differential Revision: D8132350
      
      fbshipit-source-id: d79b1d88a38ea97de8d0e841e822805aff3959ae
      9d6a5522
    • Saif Hasan's avatar
      Fix oss build · 71bfdd3e
      Saif Hasan authored
      Summary:
      fbthrift needs to link against newer version of krb5 library to avoid linking
      issue during OpenR build.
      
      ```
      libsecurity.so: undefined reference to `error_message(long)'
      ```
      
      Reviewed By: yfeldblum
      
      Differential Revision: D8330387
      
      fbshipit-source-id: 34f3f7361c99bb38adf558a52ef05e9d3156640d
      71bfdd3e
    • Tingzhe Zhou's avatar
      FlatCombiningPriorityQueue: Add interface · 12342f02
      Tingzhe Zhou authored
      Summary:
      Make the interface consistent with the other queue algorithms.
      push
      try_push
      try_push_for
      try_push_until
      pop
      try_pop
      try_pop_for
      try_pop_until
      peek
      try_peek
      try_peek_for
      try_peek_until
      
      Reviewed By: yfeldblum, djwatson
      
      Differential Revision: D8262170
      
      fbshipit-source-id: 0299e947a0069eacafd1315c920ec6e1b36675f3
      12342f02
    • Andrii Grynenko's avatar
      Implement weak reference for DefaultKeepAliveExecutor · 2825daef
      Andrii Grynenko authored
      Summary: Weak reference can be used if it's ok for some tasks to be dropped when Executor is destroyed.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D8309958
      
      fbshipit-source-id: 8ecc86a8be181a9eb695aa12305b2a30b6f4b60e
      2825daef
    • Michael Park's avatar
      Added `SemiFuture::within` · bba17c09
      Michael Park authored
      Summary:
      Moved `Future::within` to `FutureBase::withinImplementation`, and changed it to return a `SemiFuture`.
      `SemiFuture::within` uses it directly, and `Future::within` uses it then attaches the current executor or falls back to the inline executor to preserve existing behavior.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D8269907
      
      fbshipit-source-id: 76e235a2ecb2c648603961d0ac0ac17bf646d027
      bba17c09
  5. 07 Jun, 2018 3 commits
    • Yedidya Feldblum's avatar
      Support self-copy in small_vector · a1dd1ce6
      Yedidya Feldblum authored
      Summary:
      [Folly] Support self-copy in `small_vector`.
      
      And refactor move-assignment to look like the fixed copy-assignment for symmetry.
      
      Reviewed By: Ahmed-Salama
      
      Differential Revision: D8321122
      
      fbshipit-source-id: 2c8b26ad6c4e538266082df29276b827cf4505fc
      a1dd1ce6
    • Xiao Shi's avatar
      EASY: fix small bug in fallback F14 visitAllocationClasses · e1df88af
      Xiao Shi authored
      Summary: When vector intrinsics are not available, `visitAllocationClasses` fails to compile as it is a member function of a template class and it invokes a member function of a template base class without explicit `this->`.
      
      Reviewed By: yfeldblum, nbronson
      
      Differential Revision: D8300168
      
      fbshipit-source-id: 1c1619bd1c864535648e531b218d2cf1ffef767b
      e1df88af
    • Alexander Blom's avatar
      Make AsyncSocket spam logs less · 1bc8c91c
      Alexander Blom authored
      Summary:
      VLOG(1) shows up in Android logs, which is annoying as some of our
      tools try to repeatedly connect.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D8297987
      
      fbshipit-source-id: 45cf4320d2e2fcf570117fee6aef133b2d9986e6
      1bc8c91c
  6. 06 Jun, 2018 4 commits
    • Caleb Marchent's avatar
      Look for tags along the master branch checkout out Zstd · 99082ae3
      Caleb Marchent authored
      Summary:
      There is no guarantee that the default branch in git is 'master'; so
          unless specified we checkout a tag along the 'dev' branch, which is not
          intended as it is the master branch that tracks releases for Zstd.
      
      Reviewed By: jstrizich
      
      Differential Revision: D8297843
      
      fbshipit-source-id: 8497dc75c399ae7c86e27b28fdb73898ef4b1a4e
      99082ae3
    • Michael Park's avatar
      Minor comment fix and a couple of typos · f2319a6c
      Michael Park authored
      Summary: `s/Future/SemiFuture/` on `SemiFuture` ctor and fixed typo `s/Timeekeeper/Timekeeper/`.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D8290658
      
      fbshipit-source-id: 99ddbdecc0302e620bd2b4ebce74c6080cf81aec
      f2319a6c
    • Lee Howes's avatar
      Make Future<T>::delayed complete on correct executor 5/n: Add back... · ed88a3a3
      Lee Howes authored
      Make Future<T>::delayed complete on correct executor 5/n: Add back Future::delayed with correct behaviour
      
      Summary:
      Overall plan to modify Future<T>::delayed to complete on the same
      executor as the input future.
      
      [folly::Futures] Make Future<T>::delayed complete on correct executor 5/n:
       * Add back future::delayed.
       * Have Future::delayed complete on input executor.
       * r-value qualify Future::delayed
      
      Reviewed By: yfeldblum, marshallcline
      
      Differential Revision: D8238220
      
      fbshipit-source-id: 79afa8cc9a9fe588609ad186ad62f714ee322f7d
      ed88a3a3
    • Yedidya Feldblum's avatar
      Let Sychronized move-constructor not lock the source · 36502346
      Yedidya Feldblum authored
      Summary: [Folly] Let `Sychronized` move-constructor not lock the source object, since it is an rvalue-reference and the move-constructor code may therefore be assumed to have the only live reference to the source. Same with the move-assignment operator.
      
      Reviewed By: aary
      
      Differential Revision: D8219883
      
      fbshipit-source-id: f62ff87197ac4b9ceed290a73a05062ab8ed45c4
      36502346
  7. 05 Jun, 2018 5 commits
    • Felix Handte's avatar
      Init on First Use and Retain LZ4F Contexts · 8acd0060
      Felix Handte authored
      Summary:
      Reusing a context can provide significant efficiency benefits.
      
      Depends on D8172871.
      
      Reviewed By: yfeldblum, terrelln
      
      Differential Revision: D8287767
      
      fbshipit-source-id: 2565e7a959b2ac0911f0a4d6e1596f9da6d12ee8
      8acd0060
    • Felix Handte's avatar
      Init on First Use and Retain LZ4 Contexts · 5b5e8e88
      Felix Handte authored
      Summary:
      Reusing a context can provide significant efficiency benefits.
      
      Depends on D8172801.
      
      Reviewed By: yfeldblum, terrelln
      
      Differential Revision: D8172871
      
      fbshipit-source-id: f92c85410a35643502d28922583ee0ed0b4386c9
      5b5e8e88
    • Neel Goyal's avatar
      Clear errors when reading pems · f1e3312e
      Neel Goyal authored
      Summary: Clear/read OpenSSL errors after certain ops.
      
      Reviewed By: mingtaoy
      
      Differential Revision: D8277088
      
      fbshipit-source-id: aa436657c3bca3a081cd56858e09da57a03cda05
      f1e3312e
    • Dan Melnic's avatar
      Use static FOLLY_TLS ThreadEntry to avoid an ASAN deadlock due to new after fork · da72e6e9
      Dan Melnic authored
      Summary: Use static FOLLY_TLS ThreadEntry to avoid an ASAN deadlock due to new after fork
      
      Reviewed By: philippv
      
      Differential Revision: D8272580
      
      fbshipit-source-id: e2dc069e81d15f14be9f96a26d30de7482ced0cf
      da72e6e9
    • Sergey Zhupanov's avatar
      Drop the dependency on boost algorithm for Uri. · 79bd4f82
      Sergey Zhupanov authored
      Summary: Replaced boost::algorithm::to_lower() with std::transform()
      
      Reviewed By: yfeldblum
      
      Differential Revision: D8264760
      
      fbshipit-source-id: f6faa46c0bbced3a08c02b93eacbb58eb6927890
      79bd4f82
  8. 04 Jun, 2018 4 commits
    • Nick Terrell's avatar
      Fix support for zstd-1.3.[23] · 5b2c689c
      Nick Terrell authored
      Summary:
      * One function needed renaming
      * One bug needed to be worked around (content size defaulting to 0)
      
      Reviewed By: yfeldblum
      
      Differential Revision: D8264565
      
      fbshipit-source-id: 1abe5fb79b525108e64857dc28d5582372fcc165
      5b2c689c
    • Phil Willoughby's avatar
      rlock() should work with const input · 4a20bbed
      Phil Willoughby authored
      Summary: The instance method is permitted on `const` objects, so the ADL method should also accept a `const&` input.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D8240295
      
      fbshipit-source-id: 960aa5567afea3f52b91c1b83566820f5ecefc4d
      4a20bbed
    • Daniel Xu's avatar
      Use coarse_steady_clock instead of steady_clock · 57ebbcd1
      Daniel Xu authored
      Summary:
      IntervalRateLimiter was already operating on millisecond
      granularity. coarse_steady_clock offers better performance because
      it's on millisecond granularity.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D8245042
      
      fbshipit-source-id: 7ce0e347c0498ff2741adc727577c3bb2ce63979
      57ebbcd1
    • Dan Melnic's avatar
      Iterate only through the threads that have in use entries - v2 · 0865b933
      Dan Melnic authored
      Summary: Iterate only through the threads that have in use entries - v2
      
      Reviewed By: djwatson
      
      Differential Revision: D8143429
      
      fbshipit-source-id: 51098ff8e1fef7aaf9f1c0f2ddbf7ebb579cbeb4
      0865b933
  9. 03 Jun, 2018 2 commits
    • Yedidya Feldblum's avatar
      Cut FOLLY_IS_TRIVIALLY_COPYABLE macro · 61e32c4c
      Yedidya Feldblum authored
      Summary:
      [Folly] Cut `FOLLY_IS_TRIVIALLY_COPYABLE` macro, replacing all uses with `folly::is_trivially_copyable`.
      
      And cut `folly::IsTriviallyCopyable` with member-type-detection support, and move `folly::traits_detail::is_trivially_copyable` to `folly::is_trivially_copyable`.
      
      `FOLLY_IS_TRIVIALLY_COPYABLE` and `folly::IsTriviallyCopyable` were there to support gcc < 5.
      
      Reviewed By: Orvid
      
      Differential Revision: D8246972
      
      fbshipit-source-id: 8af9bbdbfac8671a61ebaa200dbfd2426a40d2eb
      61e32c4c
    • Nathan Bronson's avatar
      switch F14 bit mixer to use hardware CRC32 when available · 101c87e4
      Nathan Bronson authored
      Summary:
      x86_64 chips with SSE >= 4.2 and many aarch64 chips have
      CRC32-specific instructions with excellent latency.  This diff switches
      the bit mixer applied to untrusted hash functions to use these instructions.
      This is a noticeable win for the F14 uses that are CPU front-end bound.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D8245688
      
      fbshipit-source-id: f6a1c1c2a6365201178c653cd5d8c04fbac8d78e
      101c87e4
  10. 02 Jun, 2018 1 commit
    • Lee Howes's avatar
      Make Future<T>::delayed complete on correct executor 4/n: Remove Future::delayed · b6c0f8df
      Lee Howes authored
      Summary:
      Overall plan to modify Future<T>::delayed to complete on the same executor as the input future.
      
      4/n: Remove Future::delayed completely to ensure that all users are on delayedUnsafe so that when we put delayed in with correct behaviour there is no incorrect use.
      
      Reviewed By: marshallcline
      
      Differential Revision: D8223327
      
      fbshipit-source-id: c675d2d51afa2131eee5871afea45f1c6cc65a77
      b6c0f8df
  11. 01 Jun, 2018 2 commits
    • Sergey Zhupanov's avatar
      Minor folly cleanup. · 84d98c46
      Sergey Zhupanov authored
      Summary: Minor refactoring of several fbcode/folly/ classes.  Primarily constification, replacing custom code with call to boost, etc.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D8239891
      
      fbshipit-source-id: 14cb109b5deb27f8949b7889d195fcba29e2038c
      84d98c46
    • Nathan Bronson's avatar
      F14 enable trivial object optimizations for custom allocators · 8dfae42b
      Nathan Bronson authored
      Summary:
      F14 can apply some additional optimizations for trivially
      copyable and trivially destructible values in the case that the allocator
      doesn't do anything special in its construct and destroy methods.
      Previously this was gated based on whether the allocator was exactly
      std::allocator, but that causes this optimization to be missed in some
      important cases.  This diff extends the checking machinery to test if
      there is actually a default construct or destroy method in the allocator
      (they are optional) and to test if there is a manual override of the
      conservative default check.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D8191437
      
      fbshipit-source-id: c55b8f32427c3f0eff5c8ef42d7b51a57b0cbd1f
      8dfae42b