1. 01 Mar, 2018 9 commits
    • Adam Simpkins's avatar
      logging: add an FB_LOG_RAW() macro · 634f2652
      Adam Simpkins authored
      Summary:
      `FB_LOG_RAW()` is similar to `FB_LOG()` but allows the caller to pass in the
      log level as a variable, and to specify an alternate file name and line number.
      
      This is useful for callers that wish to implement their own logging utility
      functions that log a message, but pass through their caller's file name and
      line number.
      
      Reviewed By: wez
      
      Differential Revision: D7128091
      
      fbshipit-source-id: 1fec158a9312b9c9dc53cf3dc87004d42f9806c6
      634f2652
    • Xiao Shi's avatar
      add hashers for __int128 and unsigned __int128 · b2b96f59
      Xiao Shi authored
      Summary: Add hashers for signed and unsigned int128 for platforms that have them.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D7101875
      
      fbshipit-source-id: ab5df6d06c7f292204318e479d172560ae2a4ec6
      b2b96f59
    • Xiao Shi's avatar
      adjust config for FOLLY_SUPPLY_MISSING_INT128_TRAITS · b4881fa5
      Xiao Shi authored
      Summary:
      * remove the redundant `!defined(_WIN32)` condition;
      * llvm added traits for (u)int128 in
        https://reviews.llvm.org/D2917; and std::hash in
        https://reviews.llvm.org/rL266587.
      
      Reviewed By: nbronson
      
      Differential Revision: D7111138
      
      fbshipit-source-id: 91a05354846575677eddd48c8b8f4e05c53b01cb
      b4881fa5
    • Ian Petersen's avatar
      Remove some undefined behaviour from const Lazy. · 6229600d
      Ian Petersen authored
      Summary:
      operator()() const uses const_cast to forward its implementation
      to operator()(), which invokes UB when writing to the internal state.
      This change marks the internal state mutable, which means we can delete
      the const_cast.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D7089568
      
      fbshipit-source-id: 09f726e6399a95987075d6170ce6fb8103189552
      6229600d
    • Amir Livneh's avatar
      Add compatibility function for X509_STORE_up_ref() · 35970f56
      Amir Livneh authored
      Reviewed By: yfeldblum
      
      Differential Revision: D7111876
      
      fbshipit-source-id: eba9e29321e0ac89084ceae410bdcb4ebb86f91c
      35970f56
    • Yedidya Feldblum's avatar
      Switch away from using the legacy Synchronized macros · 65105e81
      Yedidya Feldblum authored
      Summary: [Folly] Switch away from using the legacy `Synchronized` macros within Folly.
      
      Reviewed By: simpkins
      
      Differential Revision: D7118324
      
      fbshipit-source-id: 328ecdd572d84bb99a28ddb8689bdc4ae08421a6
      65105e81
    • Yedidya Feldblum's avatar
      Cut build config items for bits/functexcept.h · 2d40a641
      Yedidya Feldblum authored
      Summary:
      [Folly] Cut build config items for `bits/functexcept.h`.
      
      Folly no longer uses the non-portable functions declared in that internal libstdc++ header.
      
      Reviewed By: mzlee
      
      Differential Revision: D7119064
      
      fbshipit-source-id: 6879dc6a5bc490726b188d65d7686a2eca136980
      2d40a641
    • Lee Howes's avatar
      Remove Promise::getFuture from Future-inl.h 1/4 - simple cases · 8e00d117
      Lee Howes authored
      Summary:
      Removing calls to folly::Promise::getFuture from Future-inl.h's simpler cases. Replacing with getSemiFuture.
      
      In the case of the collect variants I continue to return a Future, completing inline, until those functions are modified to return SemiFuture.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D7103938
      
      fbshipit-source-id: 3737887a934cd0fe8f7c1511ae2ba252ea047a49
      8e00d117
    • Joe Loser's avatar
      Fix unused variable error in AsyncUDPSocket · 4503a319
      Joe Loser authored
      Summary:
      Some OSes do not define `IP_MTU_DISCOVER` or `IPV6_MTU_DISCOVER`. As such, this would result in the function argument parameter `df` being unused, which is a warning that is then treated as an error.
      
      Earlier today (2806dda4), this logic was added about setting the DF which broke Mac builds.
      Closes https://github.com/facebook/folly/pull/791
      
      Reviewed By: igorsugak
      
      Differential Revision: D7116863
      
      Pulled By: yfeldblum
      
      fbshipit-source-id: 5092891c8977a44ab58723f8cef352dd4eaa1210
      4503a319
  2. 28 Feb, 2018 8 commits
    • Igor Sugak's avatar
      fix multiple invalid-null-argument UBSAN errors in io/Cursor.h · 417d7131
      Igor Sugak authored
      Summary:
      Exposed by UBSAN:
      {P59121025}
      {P59121310}
      {P59121558}
      
      Add appropriate checks to avoid the UB.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D7112776
      
      fbshipit-source-id: 82bd9f85ed4c82aa1b030a38d6ad9358e8f2d38a
      417d7131
    • Yang Chi's avatar
      Add an API to AsyncUDPSocket to set DF bit · 2806dda4
      Yang Chi authored
      Summary: Some application requires IP not to fragment the the datagram. Add an API to AsyncUDPSocket to set such option.
      
      Reviewed By: siyengar
      
      Differential Revision: D5421406
      
      fbshipit-source-id: 6cd3ab262f1420e22eb0948e0e2bfef77b7b6e92
      2806dda4
    • Joe Loser's avatar
      Fix DynamicConverter to work with vector<bool> · 2b5eff82
      Joe Loser authored
      Summary:
      Introduce a specialization for `std::vector<bool>` as the existing
      specialization for "other ranges" is not sufficient for binding the
      proxy iterator (`bit_const_reference`) to an lvalue when iterating over
      the `vector<bool>`.
      
      I do not think you can simply change the type from `const auto&` to `auto&&` when iterating over the container for the "other ranges" specialization.  This is because we cannot bind an rvalue to an lvalue reference (which is the function argument type for our `construct` specializations).
      
      See #752 and https://github.com/facebook/folly/pull/756 for more info.
      Closes https://github.com/facebook/folly/pull/781
      
      Reviewed By: andrewjcg
      
      Differential Revision: D7078659
      
      Pulled By: yfeldblum
      
      fbshipit-source-id: 0089183a3c68d20ed14e483859e950dfb4ae729e
      2b5eff82
    • Joe Loser's avatar
      Add find module for Snappy · 29fb51a6
      Joe Loser authored
      Summary:
      Add a find_package module for Snappy
      Closes https://github.com/facebook/folly/pull/783
      
      Reviewed By: simpkins
      
      Differential Revision: D7079554
      
      Pulled By: yfeldblum
      
      fbshipit-source-id: bf5dc3f3c37367f43fcbf8b40aaa3bb0a030bee5
      29fb51a6
    • Xiao Shi's avatar
      refactor fbvector test and benchmark, enable test, DRY · 0ac0f114
      Xiao Shi authored
      Summary:
      Previously, there are a number of tests in `FBVectorTestBenchmarks.cpp.h` that
      are not used anywhere. This diff separates out the tests from the benchmarks
      and actually include them in `FBVectorTest.cpp`.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D7103453
      
      fbshipit-source-id: 9427bb1ddcebefb2bbd2c91707fdd572890dc42e
      0ac0f114
    • Mingtao Yang's avatar
      Make OpenSSLVersionFinder static methods free functions · d2bc1134
      Mingtao Yang authored
      Summary:
      getOpenSSLNumericVersion was not static, while getOpenSSLLongVersion() was.
      Rather than change it to static, these functions should simply be free
      functions.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D7094066
      
      fbshipit-source-id: 808a9d169100c9d94d466d9348418a4e8a50c751
      d2bc1134
    • Yedidya Feldblum's avatar
      Tweak throw_exception condition · 2f331d91
      Yedidya Feldblum authored
      Summary: [Folly] Tweak throw_exception condition, fixing reference to `__GNUC__` and restructuring to make adding checks for alternative compilers more trivial.
      
      Reviewed By: mzlee
      
      Differential Revision: D7102307
      
      fbshipit-source-id: e4e00ded71f37db8fa93822744b608b42960a58a
      2f331d91
    • Enji Cooper's avatar
      Fix typos ("and and" -> "and") · 3383a04e
      Enji Cooper authored
      Reviewed By: yfeldblum
      
      Differential Revision: D7091797
      
      fbshipit-source-id: cbba7e5c17e1b6d4446570fb7a2b888db8bcd17e
      3383a04e
  3. 27 Feb, 2018 4 commits
    • Dave Watson's avatar
      more ConcurrentHashMap deletion tests · be9eff5a
      Dave Watson authored
      Summary:
      Re-committing.  Original: D6993857 revert: D7051998
      
      Fixes for hazptr deletion on map destruction.
      Several iteration cases don't properly release their hazard pointers.
      This isn't disastrous, but means objects may stick around longer than necessary.
      Adds tests and fixes for iteration to ensure we eagerly reset all hazard pointers.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D7063727
      
      fbshipit-source-id: 2ae32ead4965b37866096d2a8c6ea8c42c201335
      be9eff5a
    • Yedidya Feldblum's avatar
      Let to_signed be constexpr under C++11 rules · 850b5469
      Yedidya Feldblum authored
      Summary: [Folly] Let `to_signed` be `constexpr` under C++11 rules.
      
      Reviewed By: simpkins
      
      Differential Revision: D7079545
      
      fbshipit-source-id: 69a56f2180f9ec3492cd1ad9cd26dd8bba255442
      850b5469
    • Joe Loser's avatar
      Fix case sensitivity for LZ4 find module · 7d455083
      Joe Loser authored
      Summary:
      CMake find_package modules are case sensitive. Since the script is called
      "FindLZ4.cmake" the corresponding call to `find_package` must match LZ4
      and not "lz4".
      
      For an example of the problem, see the [Travis Log](https://travis-ci.org/facebook/folly/jobs/345661072). Namely:
      
      ```
      CMake Warning at CMake/folly-deps.cmake:101 (find_package):
        No "Findlz4.cmake" found in CMAKE_MODULE_PATH.
      Call Stack (most recent call first):
        CMakeLists.txt:65 (include)
      CMake Warning (dev) at CMake/folly-deps.cmake:101 (find_package):
        Findlz4.cmake must either be part of this project itself, in this case
        adjust CMAKE_MODULE_PATH so that it points to the correct location inside
        its source tree.
      ```
      
      This was not caught on my local machine as I use case-insensitive options in my terminal; in addition, this is not a "hard error" for CMake, so the builds happily continued successfully when 7dc5a4ed landed.
      Closes https://github.com/facebook/folly/pull/782
      
      Reviewed By: simpkins
      
      Differential Revision: D7079535
      
      Pulled By: yfeldblum
      
      fbshipit-source-id: dd51d8c6ffa804be72c2d9cd264890280dcf5ab9
      7d455083
    • Yedidya Feldblum's avatar
      Cut folly/portability/BitsFunctexcept.h · 380daecc
      Yedidya Feldblum authored
      Summary: [Folly] Cut `folly/portability/BitsFunctexcept.h`.
      
      Reviewed By: simpkins
      
      Differential Revision: D7066504
      
      fbshipit-source-id: ed260ab36759a58dee103addd92c6a5a47dac330
      380daecc
  4. 26 Feb, 2018 2 commits
    • Neel Goyal's avatar
      Add uint32 type flags · d75c4747
      Neel Goyal authored
      Summary: Add DECLARE/DEFINE_uint32 to the portability layer
      
      Reviewed By: yfeldblum
      
      Differential Revision: D7085534
      
      fbshipit-source-id: 3f6f1bf79371b052706f4b3a03dca1d503b879da
      d75c4747
    • Nathan Bronson's avatar
      doc fix for dynamic::operator[] · f9fd348f
      Nathan Bronson authored
      Summary:
      folly::dynamic's operator[] was documented as never invalidating
      iterators.  In the object case when a key is implicitly inserted the
      underlying unordered_map can rehash, which does invalidate the iterators.
      This diff amends the comment to reflect this case.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D7085861
      
      fbshipit-source-id: 41ce0497bc60dba9f4529d10010f3b92f9a6c2b3
      f9fd348f
  5. 25 Feb, 2018 1 commit
  6. 24 Feb, 2018 4 commits
    • David Lai's avatar
      - Fix unused parameter warning in StlVectorTest.cpp · 974e6be0
      David Lai authored
      Summary: We are going to enable `-Werror=unused-parameter` flag and I need to manually fix some files so we rest of this process can be automated with a tool called clang-tidy.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D7071617
      
      fbshipit-source-id: 0165d9c79834b479ad0f598ea64404a86f47dcc6
      974e6be0
    • Yedidya Feldblum's avatar
      to_signed and to_unsigned · 5ec7c712
      Yedidya Feldblum authored
      Summary:
      [Folly] `to_signed` and `to_unsigned`, for casting a value to the signed or unsigned version of the value's type.
      
      And use them in time conversion functions.
      
      Reviewed By: markw65
      
      Differential Revision: D7020215
      
      fbshipit-source-id: 47a6aeeea487cd7d59d23e7ded40cc66dcc57c52
      5ec7c712
    • Yedidya Feldblum's avatar
      throw_exception to support -fno-exceptions · 1ea94b5e
      Yedidya Feldblum authored
      Summary:
      [Folly] `throw_exception` to support `-fno-exceptions`, switching all invocations of `std::__throw_....`.
      
      Removes the need to use the non-portable `bits/functexcept.h`.
      
      Reviewed By: mzlee, ot
      
      Differential Revision: D7050335
      
      fbshipit-source-id: 53d15639baa268a51f703816f04f314454d64979
      1ea94b5e
    • Joe Loser's avatar
      Simplify FsUtilTest.cpp · 740a9b01
      Joe Loser authored
      Summary:
      This test suite used to wrap equality of two paths by using `EXPECT_TRUE` to
      avoid an old bug in GTest 1.6.0. Now that we use GTest 1.8.0, we can
      simplify our test.
      Closes https://github.com/facebook/folly/pull/780
      
      Differential Revision: D7052503
      
      Pulled By: yfeldblum
      
      fbshipit-source-id: 5459736fca04cc45acf88a3d7dffc855ad7c9376
      740a9b01
  7. 23 Feb, 2018 6 commits
    • Xiao Shi's avatar
      EASY: clang-format fbvector benchmark · bc4bb891
      Xiao Shi authored
      Summary: format changes, purely generated by clang-format.
      
      Differential Revision: D7035579
      
      fbshipit-source-id: 8452e1613adefe7dcfbbed4a3ef97be681790416
      bc4bb891
    • Kyle Nekritz's avatar
      Fix alignment issues in small_vector. · b25dd31a
      Kyle Nekritz authored
      Summary: Packing the structs disregards the alignment of the storage. We should only do this on platforms where we do not need alignment.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D7058593
      
      fbshipit-source-id: 63b0d86bcf8b4f660ca244b1a4696e3ca64ecd6a
      b25dd31a
    • Kyle Nekritz's avatar
      Remove SmallLocks dependency from small_vector. · 478282cc
      Kyle Nekritz authored
      Reviewed By: yfeldblum
      
      Differential Revision: D7060959
      
      fbshipit-source-id: 914c517b4c8e93c15771f6acefaddce3138776a4
      478282cc
    • Joe Loser's avatar
      Add FindLZ4 module · 7dc5a4ed
      Joe Loser authored
      Summary:
      Add a CMake find_package script for LZ4
      
      simpkins
      Closes https://github.com/facebook/folly/pull/778
      
      Reviewed By: simpkins
      
      Differential Revision: D7064988
      
      Pulled By: yfeldblum
      
      fbshipit-source-id: 60596ead4b4fd38474dab4c33d4c3fbb0f37549c
      7dc5a4ed
    • Joe Loser's avatar
      Fix master branch broken for Clang · 8aa1a411
      Joe Loser authored
      Summary:
      Clang does not support the warning option "-Wclobbered", so we cannot
      do a pragma push and pop for this warning. So, we push and pop this
      particular warning for GCC only.
      
      As it stands currently, Clang accepts `#pragma GCC` directives. If this
      sort of thing comes up more in the future, it may make sense for Folly
      to define a macro for easily disabling warnings for either just GCC or
      just Clang.
      
      simpkins yfeldblum
      Closes https://github.com/facebook/folly/pull/779
      
      Reviewed By: simpkins
      
      Differential Revision: D7059916
      
      Pulled By: yfeldblum
      
      fbshipit-source-id: a6d420dc6ae435e3be1229b2bb421910bc8794ff
      8aa1a411
    • Maged Michael's avatar
      hazptr: Clear hazard pointers in ~hazptr_array() and ~hazptr_local() · 13681962
      Maged Michael authored
      Summary:
      Clear hazard pointers in ~hazptr_array() and ~hazptr_local().
      Added tests to detect uncleared hazard pointers when using hazptr_array and hazptr_local.
      
      Differential Revision: D6995057
      
      fbshipit-source-id: 5b8fa1d197c3959ed670d0a019959bd57f5df3d0
      13681962
  8. 22 Feb, 2018 6 commits
    • Igor Sugak's avatar
      Back out "[codemod] - comment out unused parameters" · 49f93b0d
      Igor Sugak authored
      Reviewed By: igorsugak
      
      fbshipit-source-id: 4a93675cc1931089ddd574cacdb15d228b1e5f37
      49f93b0d
    • Krishna Monian's avatar
      Android doesn't have cache data in sysfs · a0a9d4d3
      Krishna Monian authored
      Summary: Since sysfs doesn't have cache information for the CPU on Android guard this on Android
      
      Reviewed By: yfeldblum
      
      Differential Revision: D7051199
      
      fbshipit-source-id: 20fcfa91aa2f642c6cab33b0fb55f121b609d58f
      a0a9d4d3
    • David Lai's avatar
      - comment out unused parameters · 53807d13
      David Lai authored
      Reviewed By: everiq, igorsugak
      
      Differential Revision: D7046710
      
      fbshipit-source-id: 8e10b1f1e2aecebbfb229c742e214db887e5a461
      53807d13
    • Alex Dibert's avatar
      Folly: AsyncSSLSocket good if uninit · 6fc754ff
      Alex Dibert authored
      Summary:
      This allows to create a Channel with AsyncSSLSocket while evb in not looping yet.
      Also add ssl channel tests to thrift.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D6991017
      
      fbshipit-source-id: 0852b18e03a6b9d072cb4ec0182f1a41a5960eef
      6fc754ff
    • Yedidya Feldblum's avatar
      Fix folly/experimental/hazptr/ under gcc7 · e6b2e78a
      Yedidya Feldblum authored
      Summary:
      [Folly] Fix `folly/experimental/hazptr/` under gcc7, which has a bug in emitting TLS init functions for `extern thread_local` variables.
      
      Fixes:
      ```
      folly/experimental/hazptr/test/HazptrTest.cpp:642: error: undefined reference to 'TLS init function for folly::hazptr::tls_priv_data_'
      folly/experimental/hazptr/test/HazptrTest.cpp:642: error: undefined reference to 'TLS init function for folly::hazptr::tls_priv_data_'
      ```
      
      The trick is to use a template class with `static thread_local` members with member definitions in the same header, and then to use only one instance of that template class.
      
      Reviewed By: pixelb, magedm
      
      Differential Revision: D7047235
      
      fbshipit-source-id: 0551179a40f13796d6c0bb99aa806c73bd9dd471
      e6b2e78a
    • Andrey Malevich's avatar
      Back out "[folly] more ConcurrentHashMap deletion tests" · f6cbd144
      Andrey Malevich authored
      Summary:
      Original commit changeset: bee63b3f597d.
      
      Original revision is breaking integration tests by failing with the SIGSEGV in operator++, please check D6993857 for more details.
      
      Reviewed By: anshulverma
      
      Differential Revision: D7051998
      
      fbshipit-source-id: e5cfbb22aee5f5ec9871a9a34bb27eb5b0036d1b
      f6cbd144