1. 28 Jan, 2021 1 commit
    • Philip Pronin's avatar
      skip unmodified keys in dynamic::merge_diff · 2a14eb88
      Philip Pronin authored
      Summary:
      `dynamic::merge_diff` currently fully replicates `target` within the
      patch.
      
      Reviewed By: psjanani, luciang
      
      Differential Revision: D26100408
      
      fbshipit-source-id: f6800e665281d87393fed0bb48bda888e24bbcfc
      2a14eb88
  2. 27 Jan, 2021 4 commits
    • Francesco Zoffoli's avatar
      atomic_wait expects the old value, not the new one · 141f44cb
      Francesco Zoffoli authored
      Summary: The linked paper, the implementation and the tests use the parameter as the old value, but the parameter name is called `expected`.
      
      Reviewed By: aary
      
      Differential Revision: D25975108
      
      fbshipit-source-id: bb67a95b057973e31512e9f972e1646e5a0f7d77
      141f44cb
    • Cameron Pickett's avatar
      Fix bug in folly coro GtestHelpers · 65c55155
      Cameron Pickett authored
      Differential Revision: D26084514
      
      fbshipit-source-id: ab7e94bb0f0da04d60af7112f34c7c221125feb7
      65c55155
    • Pedro Eugenio Rocha Pedreira's avatar
      Add getdeps.py manifest · d141da43
      Pedro Eugenio Rocha Pedreira authored
      Summary: Adding simple getdeps.py manifest for f4d.
      
      Reviewed By: amitkdutta
      
      Differential Revision: D25842791
      
      fbshipit-source-id: eabc33ec526c454f301f8cd401156f6250e5eaa1
      d141da43
    • Dan Melnic's avatar
      Fix flakey test · c21a0011
      Dan Melnic authored
      Summary: Fix flakey test
      
      Reviewed By: kevin-vigor
      
      Differential Revision: D26090290
      
      fbshipit-source-id: f03d6abf389815993e8742d5c27c2ccbcb13949a
      c21a0011
  3. 26 Jan, 2021 6 commits
    • Chad Austin's avatar
      substitute surrogates in log file (#8076) · 3aa8f275
      Chad Austin authored
      Summary:
      Pull Request resolved: https://github.com/facebookincubator/resctl/pull/8076
      
      D26025779 (https://github.com/facebook/folly/commit/4731bb0c37cc39a7a689a8369c9564eddeae146c) may have broken the getdeps build when logging
      surrogates. Use errors=surrogateescape to try to avoid that.
      
      Reviewed By: danobi
      
      Differential Revision: D26079717
      
      fbshipit-source-id: 98d938bfced417e0b39a6dcddb241225ffb69c06
      3aa8f275
    • Alexey Spiridonov's avatar
      Stop trying to build on Darwin, Windows · e8955d38
      Alexey Spiridonov authored
      Reviewed By: nilesr
      
      Differential Revision: D26059442
      
      fbshipit-source-id: d323ab38d7171b344c5a15863ec8d0a70b877853
      e8955d38
    • Pranjal Raihan's avatar
      Use compact_once_flag for DelayedInit · 1ab6a01f
      Pranjal Raihan authored
      Summary: Use the 1 byte version of `once_flag` such that there is no more memory overhead than `Optional`.
      
      Reviewed By: andriigrynenko
      
      Differential Revision: D25909346
      
      fbshipit-source-id: 1bb2f41200917ba58b20815bfafe3314137e9680
      1ab6a01f
    • Pranjal Raihan's avatar
      Refactor MicroLock and remove its slots · 6808ac5a
      Pranjal Raihan authored
      Summary:
      `folly::MicroLock` is actually 4 locks in one. Turns out that it's not very useful considering there is not a single use in fbcode. Instead `MicroLock` should allow a nicer API for exposing the 6 unused bits as user data.
      
      By limiting the lock to one slot (least significant 2 bits), we can make the assumption that the 6 contiguous most significant bits are user data. This means that all the masking logic can go away (see `slotMask` and `LockGuardWithDataSlots`).
      
      Now `lockAndLoad`, `unlockAndStore`, `LockGuardWithData` "just work" with needing to worry about user data interfering with the slots used for locking.
      
      Reviewed By: davidtgoldblatt
      
      Differential Revision: D25909068
      
      fbshipit-source-id: 3f050fa7393b40cff949ed6e30b691d7f40d0edf
      6808ac5a
    • Xiangyu Bu's avatar
      Fix typo about MutableStringPiece. · 3c764a2d
      Xiangyu Bu authored
      Summary:
      This diff corrects two references to `MutableStringPiece` that are misspelled
      as `MutablesStringPiece` which doesn't exist.
      
      Reviewed By: Orvid
      
      Differential Revision: D26011095
      
      fbshipit-source-id: 2503e13b84e04654c242bcd1f7bb17f9c1b757dc
      3c764a2d
    • David Detlefs's avatar
      Fix comment explaining how to use thenValue/thenError. · 0fd2fc2f
      David Detlefs authored
      Summary: I thought that since I noticed it, and it tripped me up a bit, we might as well fix it.
      
      Reviewed By: LeeHowes
      
      Differential Revision: D26048767
      
      fbshipit-source-id: 91ba9f834df411eb2d775691be4aec8a8d99776b
      0fd2fc2f
  4. 25 Jan, 2021 4 commits
    • Pranjal Raihan's avatar
      compact_once_flag · 88382fbf
      Pranjal Raihan authored
      Summary: `folly::compact_once_flag` is implemented using 1 byte. `folly::MicroLock` slot0 is used as the mutex for the slow path and slot1 is used for the stored boolean.
      
      Reviewed By: andriigrynenko
      
      Differential Revision: D25797066
      
      fbshipit-source-id: 529de84b50e61523318a19606bc24c54f1ffa3a4
      88382fbf
    • Chad Austin's avatar
      always write log files as UTF-8 to avoid cp1252 encoding errors · 4731bb0c
      Chad Austin authored
      Summary:
      The log file should be opened with a defined encoding rather than
      whatever the platform default is. On Windows, that might be cp1252,
      which throws an encoding error when the text is unicode.
      
      Reviewed By: genevievehelsel
      
      Differential Revision: D26025779
      
      fbshipit-source-id: 0102b2555e91812dfe94a7c332eb896ca2c9ef7e
      4731bb0c
    • Xiao Shi's avatar
      fix assembly interrupt instruction for ARM/AARCH · 3fb7ce4f
      Xiao Shi authored
      Summary:
      As title
      
      https://gcc.godbolt.org/z/58Mqb6
      
      Reviewed By: Orvid
      
      Differential Revision: D26012680
      
      fbshipit-source-id: 7c8859fec4a5f3a58b05e4ff7924273bd05891ec
      3fb7ce4f
    • Kevin Vigor's avatar
      co-routine interface · bf66d627
      Kevin Vigor authored
      Summary: Add co-routine interface to SImpleAsyncIO.
      
      Reviewed By: iahs
      
      Differential Revision: D25932969
      
      fbshipit-source-id: df14e25a0fe293a218d6bef0c4bd1bc8e690efba
      bf66d627
  5. 24 Jan, 2021 2 commits
  6. 22 Jan, 2021 4 commits
  7. 21 Jan, 2021 7 commits
    • Niles Rogoff's avatar
      Retry bistro tests up to 5 times · e3400d87
      Niles Rogoff authored
      Differential Revision: D25985696
      
      fbshipit-source-id: 52ede8dc494f8bf1991dbfed455fbc6bbba83d87
      e3400d87
    • Orvid King's avatar
      Guard call to weak __asan_region_is_poisoned properly · 5b44809e
      Orvid King authored
      Summary:
      It wasn't guarded at all, which is causing issues for non-sanitizer builds on platforms without shared library support.
      
      Ref: https://github.com/facebook/folly/issues/1507
      
      Reviewed By: meyering
      
      Differential Revision: D25970872
      
      fbshipit-source-id: f710e752fdf8ebc5529314d335f4559e690b787a
      5b44809e
    • Victor Zverovich's avatar
      Reduce binary size via format string compilation · 66f614d7
      Victor Zverovich authored
      Summary: Switch to format string compilation to prevent pulling in too many symbols from the {fmt} library into `folly/detail:ip_address`. This change saves ~64k (fixed cost) in opt mode compared to the current master or ~36k compared to the old code using Folly Format. This doesn't matter for server projects especially since {fmt} will likely be linked anyway but matters for some mobile ones.
      
      Reviewed By: Orvid
      
      Differential Revision: D25904078
      
      fbshipit-source-id: 56473cf9bf4456a3cb3c5aa375c16393e144b6e1
      66f614d7
    • Udip Pant's avatar
      update to libbpf-0.3 in getdeps · 7ba43ce3
      Udip Pant authored
      Summary: Allows us to use new APIs in libbpf
      
      Reviewed By: anakryiko
      
      Differential Revision: D25933787
      
      fbshipit-source-id: f0988caae351760b814eba74f6f716db51f728bd
      7ba43ce3
    • Adam Simpkins's avatar
      update EXPECT_THROW_RE() to accept the pattern as a string_view · 9c9f1d2d
      Adam Simpkins authored
      Summary:
      Previously the `EXPECT_THROW_RE()` macro required the regular expression be
      passed in as a `const char*`.  This updates the code to accept a
      `std::string_view` instead.
      
      This allows the API to accept either `const char*` arguments, `std::string`,
      or `std::string_view` objects.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D25837542
      
      fbshipit-source-id: e6fb00034046ad7f2810367f946f0135858ed065
      9c9f1d2d
    • Dan Melnic's avatar
      Handle values different from pending_ · 59b47473
      Dan Melnic authored
      Summary: Handle values different from pending_
      
      Reviewed By: kevin-vigor
      
      Differential Revision: D25968014
      
      fbshipit-source-id: fd70dd6339d02a6325b237e6c9401d8962b17b51
      59b47473
    • Xiao Shi's avatar
      fix inline asm syntax on MSVC · 3fa09cb1
      Xiao Shi authored
      Summary:
      This diff moves the gdb related test into `folly/support/test` (as opposed to
      `tests`) so that CMake rules
      [here](https://github.com/facebook/folly/blob/194b7732bd65d56b4afb58b6d9e411c1b014b3e3/CMakeLists.txt#L155)
      will exclude these files from OSS library builds--also to maintain consistency
      with other test folder names under folly.
      
      I still separated out the auto gdb breakpoint functionality into GdbUtil.h so
      that if MSVC users want to manually compile and use the gdb script tests, they
      have the option to do so.
      
      Re: asm syntax on MSVC:
      https://gcc.godbolt.org/z/1rMh4v
      
      Fixes #1515.
      
      Reviewed By: Orvid
      
      Differential Revision: D25947735
      
      fbshipit-source-id: 97e75e972fcf8eea280df804c98c400f03c37496
      3fa09cb1
  8. 20 Jan, 2021 2 commits
    • Pedro Eugenio Rocha Pedreira's avatar
      Add protobuf manifest · f184a28f
      Pedro Eugenio Rocha Pedreira authored
      Summary: Adding protobuf manifest, which will be used to compile f4d/velox.
      
      Reviewed By: spershin
      
      Differential Revision: D25926384
      
      fbshipit-source-id: 08a2dffc9e9baa0d393e5f648ce99ca032a9df5f
      f184a28f
    • Pedro Eugenio Rocha Pedreira's avatar
      Add lzo manifest · 266ecae7
      Pedro Eugenio Rocha Pedreira authored
      Summary: Adding lzo manifest, which will be used by f4d/velox
      
      Reviewed By: amitkdutta
      
      Differential Revision: D25926434
      
      fbshipit-source-id: 4d7efe5eba7cdca1f682fbd4cfd6ff0337ce7c19
      266ecae7
  9. 19 Jan, 2021 1 commit
    • Stepan Palamarchuk's avatar
      Fix bug with calling addTaskEager from another FiberManager · bc4e31a8
      Stepan Palamarchuk authored
      Summary:
      The current code is calling `runInMainContext` on the FiberManager that we're scheduling to, which will do nothing if we're calling it from another fiber manager. This will assume fiber stack as a main stack which is incorrect.
      
      This diff fixes it to call `folly::fibers::runInMainContext` that would properly call `runInMainContext` on the active FiberManager.
      
      Reviewed By: andriigrynenko
      
      Differential Revision: D25116215
      
      fbshipit-source-id: 1d13f436a0599c077e7531dc1fe75f3a143e3478
      bc4e31a8
  10. 16 Jan, 2021 1 commit
    • Giuseppe Ottaviano's avatar
      Simplify ThreadedExecutor · 194b7732
      Giuseppe Ottaviano authored
      Summary: The implementation doesn't need explicit locking or condition variables, everything can be done with a single concurrent queue.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D25919429
      
      fbshipit-source-id: a2b1e6332305174ba41d02fd79d9525a12b82218
      194b7732
  11. 15 Jan, 2021 3 commits
    • Giuseppe Ottaviano's avatar
      Handle task exceptions in ThreadedExecutor · 6a6ea7ca
      Giuseppe Ottaviano authored
      Summary: Make it consistent with the other executors.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D25926045
      
      fbshipit-source-id: ad2f101fbba918fe2a421e394870bf67c0a044b9
      6a6ea7ca
    • Xiao Shi's avatar
      move folly gdb pretty printers to OSS repo · 118e9141
      Xiao Shi authored
      Summary: As title, move gdb pretty printers from internal repo to OSS repo
      
      Reviewed By: yfeldblum
      
      Differential Revision: D25684325
      
      fbshipit-source-id: b7999dee1379801ee68553de64f16ac4db78b174
      118e9141
    • Niles Rogoff's avatar
      Migrate bistro to getdeps · 63154657
      Niles Rogoff authored
      Summary:
      This took a lot of cmake fuckery. I am guessing it will break the current travis-ci.org based build, since it no longer downloads gflags.
      
      As I put this diff up, mvfst (a dependency of quic (a dependency of proxygen)) is not building right now due to another diff - a fix is in progress but isn't landed yet. I applied the fix locally for the test plan, but didn't include it in the diff.
      
      Reviewed By: snarkmaster
      
      Differential Revision: D25651851
      
      fbshipit-source-id: b4f15ac7fa5293123710fe367c20d355c0970c42
      63154657
  12. 14 Jan, 2021 1 commit
    • Pranjal Raihan's avatar
      Allow using unused MicroLock slots as data · 3d7f331c
      Pranjal Raihan authored
      Summary: `folly::MicroLock` is actually 4 locks, each using 2 bits. In cases we don't need all the slots, we can use the other bits to store some data which is loaded/stored atomically with locking and unlocking. There is no change in existing `MicroLock` usage behavior.
      
      Reviewed By: davidtgoldblatt
      
      Differential Revision: D25842148
      
      fbshipit-source-id: 5f6ff705c35529d279629ccc256a9c210907ea5c
      3d7f331c
  13. 13 Jan, 2021 3 commits
    • Pranjal Raihan's avatar
      Fix wrong method name in DelayedInit documentation · 9d8cc918
      Pranjal Raihan authored
      Summary: This was forgotten in a refactor.
      
      Reviewed By: Mizuchi
      
      Differential Revision: D25903164
      
      fbshipit-source-id: 419131987a886f0d8d057b5b04b012d1162e564d
      9d8cc918
    • Pedro Eugenio Rocha Pedreira's avatar
      Add support for `extra_cmake_defines` · 25ce99fc
      Pedro Eugenio Rocha Pedreira authored
      Summary:
      `extra_cmake_defines` are extra flags that are passed to cmake when
      compiling each one of the dependencies. For instance:
      ```
      $ ./opensource/fbcode_builder/getdeps.py  build f4d --extra-cmake-define='{"CMAKE_CXX_FLAGS": "-mavx2 -mfma -mavx -mf16c -march=native"}'
      ```
      It takes a json map as input, which can take a list of defines (key value
      pairs).
      
      Reviewed By: wez
      
      Differential Revision: D25855781
      
      fbshipit-source-id: 7f4fef2c66f4d12f23c8d7086d6a4f24fcc01ff7
      25ce99fc
    • Michael Park's avatar
      Fix eagerness bug in FOLLY_CREATE_STATIC_MEMBER_INVOKER · 6bc74fbd
      Michael Park authored
      Summary:
      This patch performs SFINAE-friendly invocation in `FOLLY_CREATE_STATIC_MEMBER_INVOKER` in order for invocability tests to return `false` in the situation where the member is not even available. For example, given:
      ```
      FOLLY_CREATE_STATIC_MEMBER_INVOKER(foo_invoker, foo);
      ```
      With this diff, something like `std::is_invocable_v<foo_invoker, HasNoFoo>` yields `false` rather than a compilation error.
      This brings `FOLLY_CREATE_STATIC_MEMBER_INVOKER` in line with `FOLLY_CREATE_FREE_INVOKER` and `FOLLY_CREATE_MEMBER_INVOKER`.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D25878262
      
      fbshipit-source-id: 150ae6b2c71941317bc02de20720fed014639bf5
      6bc74fbd
  14. 12 Jan, 2021 1 commit
    • Pranjal Raihan's avatar
      Use DelayedInit for SimpleObservable · 69ab6ff9
      Pranjal Raihan authored
      Summary: The lazy initialization logic can now be simplified.
      
      Reviewed By: andriigrynenko
      
      Differential Revision: D25675031
      
      fbshipit-source-id: 048328220a2b02c13a672bebe47b79521d5f5e7a
      69ab6ff9