1. 27 Mar, 2020 4 commits
    • Andrew Gallagher's avatar
      Fix demangle bug · 5d446248
      Andrew Gallagher authored
      Summary:
      Avoid a forward declaration mismatch between `libiberty.h` and
      `libgen.h` that dirs in modular builds (likely related to T35368090).
      This defines `HAVE_DECL_BASENAME`, which is normally defined
      in the `config.h` generated during the binutils build, to prevent this
      conflicting declaration.
      
      Reviewed By: igorsugak
      
      Differential Revision: D20600924
      
      fbshipit-source-id: 0fb6287719abb3cf52d7eda457efbe567985d1d4
      5d446248
    • Lee Howes's avatar
      Fix SemiFuture::delayed to not insert an inline executor · 6d97401b
      Lee Howes authored
      Summary: SemiFuture::delayed should pass the SemiFuture all the way through.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D20684503
      
      fbshipit-source-id: e7d1299a177d347cb5b92e9e700c607fc9f7c4c3
      6d97401b
    • Lukas Piatkowski's avatar
      mononoke: make metaconfig OSS buildable · 38c7c898
      Lukas Piatkowski authored
      Summary: This diff makes it possible to relay on the thrift structures from configerator in OSS.
      
      Reviewed By: ahornby
      
      Differential Revision: D20279457
      
      fbshipit-source-id: 39df1c7a6f78b10a0a5bdeeebe476249ab674cc8
      38c7c898
    • Shai Szulanski's avatar
      Remove yarpl from thrift cmake lists · ea2ad0ad
      Shai Szulanski authored
      Reviewed By: vitaut
      
      Differential Revision: D20650610
      
      fbshipit-source-id: add9ff42c7c35696767c0c4d004235885fcd1565
      ea2ad0ad
  2. 26 Mar, 2020 11 commits
    • Adam Retter's avatar
      Fix cache line sizing on s390x (#1340) · 75ddbbfa
      Adam Retter authored
      Summary:
      We are using Folly inside RocksDB, and we noticed a build failure due to cache line sizing on s390x. I fixed it in our copy of Folly, and am sending you the changes upstream.
      
      CC pdillinger
      Pull Request resolved: https://github.com/facebook/folly/pull/1340
      
      Reviewed By: WillerZ
      
      Differential Revision: D20628323
      
      Pulled By: Orvid
      
      fbshipit-source-id: 03ea68b023fa1fdf7fae2e283687530ab5b6ead3
      75ddbbfa
    • Dan Melnic's avatar
      Add signal handling support for the PollIoBackend derived backends · 4ab53568
      Dan Melnic authored
      Summary: Add signal handling support for the PollIoBackend derived backends
      
      Reviewed By: kevin-vigor
      
      Differential Revision: D20612200
      
      fbshipit-source-id: 5a92e2b46a9fa102bfc02958058679bac6c22269
      4ab53568
    • Wez Furlong's avatar
      getdeps: use half as many jobs by default on windows · cf7ecf62
      Wez Furlong authored
      Summary:
      This takes some pressure off both cpu and memory
      on a laptop.
      
      Reviewed By: pkaush
      
      Differential Revision: D20562474
      
      fbshipit-source-id: a058c71c47f25c3a2b3c1e34a0d0caf83e642021
      cf7ecf62
    • Wez Furlong's avatar
      getdeps: fixup the dyndeps fixed up by fixup dyndeps · 2f2a55e3
      Wez Furlong authored
      Summary:
      On linux we didn't account for the `--final-install-prefix` argument
      which meant that the binaries would always be rewritten to be relative to
      the destdir.
      
      This commit fixes that.
      
      Refs: https://github.com/facebook/watchman/issues/760
      
      (this doesn't deal with the compiled in statedir being in the scratch path though)
      
      Reviewed By: simpkins
      
      Differential Revision: D20659749
      
      fbshipit-source-id: 1e8e198a58361882249c33a67f54a7d97b849257
      2f2a55e3
    • Wez Furlong's avatar
      getdeps: fix git configuration on windows · 9067e9e0
      Wez Furlong authored
      Summary:
      The GH actions defaults for git prevent it from being able
      to checkout the fbthrift repo due the length of the java related
      files in the fbthrift repo.
      
      This commit tells git to use long filenames and allows the checkout
      to succeed.
      
      Reviewed By: fanzeyi
      
      Differential Revision: D20659750
      
      fbshipit-source-id: 060b36d312d52a0769cf2f2dd9af60f7446f94a8
      9067e9e0
    • Wez Furlong's avatar
      getdeps: embrace python3 a bit more · 409dd8a1
      Wez Furlong authored
      Summary:
      Ensure that we are referencing python3 in the paths
      that we generate for the github actions workflows, and remove
      some shebangs that influence how our internal linters process
      the python code.
      
      Reviewed By: fanzeyi
      
      Differential Revision: D20659747
      
      fbshipit-source-id: 6f300f8e91edf7701bb27babc7b1418958cf0a10
      409dd8a1
    • Dan Melnic's avatar
      Remove unused files · ac78d14c
      Dan Melnic authored
      Summary: Remove unused files
      
      Reviewed By: yfeldblum
      
      Differential Revision: D20658959
      
      fbshipit-source-id: b387aa4a58ee6a610d71567f5dcd6932e49f7411
      ac78d14c
    • Andy Wei's avatar
      Fix F14Table type conversion warning · ad0c9159
      Andy Wei authored
      Summary: The `|` operation causes the  `int to uint8` conversion warning that be treated as an error on some targets and prevent them use F14Map.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D20654932
      
      fbshipit-source-id: 6c909b7b58f4be263b0e30b1aa3acd82b5b9479d
      ad0c9159
    • Nick Terrell's avatar
      Require is_nothrow_destructible in F14Node tables · ef186943
      Nick Terrell authored
      Summary: We will `std::terminate` if a destructor throws, so it would be better to complain about throwing destructors in the first place.
      
      Reviewed By: nbronson
      
      Differential Revision: D20604722
      
      fbshipit-source-id: d36c771f36d0d0a26f356720698606de628ca747
      ef186943
    • Nick Terrell's avatar
      Explicitly require is_nothrow_destructible in Vector and Value tables · 6123dc9f
      Nick Terrell authored
      Summary:
      The current implementation of `std::is_nothrow_move_constructible` in libstdc++ implies `std::is_nothrow_destructible`. However, this doesn't seem to be required by the standard, see the notes section of https://en.cppreference.com/w/cpp/types/is_constructible.
      
      Since we know that all Vector and Value sets/maps already satisfy this requirement, let's codify it explicitly.
      
      Reviewed By: nbronson
      
      Differential Revision: D20604544
      
      fbshipit-source-id: bae1e8442585cedb062308b6332bd018cccca2f4
      6123dc9f
    • Nick Terrell's avatar
      Mark destroyItem() as noexcept · 8fcf46ad
      Nick Terrell authored
      Summary:
      F14Node{Map,Set} doesn't require `is_nothrow_destructible<value_type>`.  `clear()` and the destructor are both marked `noexcept`, so they will both terminate if the destructor throws. But `erase()` is not marked `noexcept`, so when the destructor throws during `erase()` the value is left in the map. This could be problematic if the value is half destroyed, or if `eraseInto()` is used.
      
      This diff fixes the problem by marking `destroyItem()` as `noexcept`, so `std::terminate` is called whenever the value destructor throws.
      
      Reviewed By: nbronson
      
      Differential Revision: D20604276
      
      fbshipit-source-id: c52c932d78d6ed61368985a749adf77c27a5a0de
      8fcf46ad
  3. 25 Mar, 2020 2 commits
    • Dan Melnic's avatar
      Add support for non libevent based backends in the AsyncSignalHandler · 5b4eed64
      Dan Melnic authored
      Summary: Add support for non libevent based backends in the AsyncSignalHandler
      
      Reviewed By: kevin-vigor
      
      Differential Revision: D20524116
      
      fbshipit-source-id: fdd49cf75bd51599055239270dd704c496d567e3
      5b4eed64
    • Laurent Stacul's avatar
      Fix compilation errors for C++20 (#1329) · 69296166
      Laurent Stacul authored
      Summary:
      Compiling with gcc 10.0.1 and -std=gnu++2a, we have the following errors:
      ```
      folly/FBString.h:1013:33: error: no type named 'reference' in 'class std::allocator<char>'
       1013 |   typedef typename A::reference reference;
            |                                 ^~~~~~~~~
      folly/FBString.h:1014:39: error: no type named 'const_reference' in 'class std::allocator<char>'
       1014 |   typedef typename A::const_reference const_reference;
      ```
      This is due to the fact many members in `std::allocator` have been remove in C++20: https://en.cppreference.com/w/cpp/memory/allocator
      
      We also have this one due to the new way C++ resolves the comparison operators:
      ```
      folly/dynamic-inl.h:854:20: error: ambiguous overload for 'operator!=' (operand types are 'folly::dynamic::const_item_iterator' and 'folly::dynamic::const_item_iterator')
        854 |   return find(key) != items().end() ? 1u : 0u;
            |          ~~~~~~~~~ ^~ ~~~~~~~~~~~~~
            |              |                   |
            |              |                   folly::dynamic::const_item_iterator
            |              folly::dynamic::const_item_iterator
      In file included from folly/dynamic-inl.h:25,
                       from folly/dynamic.h:796,
                       from folly/dynamic.cpp:17:
      folly/detail/Iterators.h:80:8: note: candidate: 'bool folly::detail::IteratorFacade<D, V, Tag>::operator==(const D&) const [with D = folly::dynamic::const_item_iterator; V = const std::pair<const folly::dynamic, folly::dynamic>; Tag = std::f
      orward_iterator_tag]' (reversed)
         80 |   bool operator==(D const& rhs) const {
            |        ^~~~~~~~
      folly/detail/Iterators.h:98:3: note: candidate: 'typename std::enable_if<std::is_convertible<D, D2>::value, bool>::type folly::detail::IteratorFacade<D, V, Tag>::operator==(const D2&) const [with D2 = folly::dynamic::const_item_iterator; D =
       folly::dynamic::const_item_iterator; V = const std::pair<const folly::dynamic, folly::dynamic>; Tag = std::forward_iterator_tag; typename std::enable_if<std::is_convertible<D, D2>::value, bool>::type = bool]' (reversed)
         98 |   operator==(D2 const& rhs) const {
            |   ^~~~~~~~
      folly/detail/Iterators.h:84:8: note: candidate: 'bool folly::detail::IteratorFacade<D, V, Tag>::operator!=(const D&) const [with D = folly::dynamic::const_item_iterator; V = const std::pair<const folly::dynamic, folly::dynamic>; Tag = std::f
      orward_iterator_tag]'
         84 |   bool operator!=(D const& rhs) const {
            |        ^~~~~~~~
      folly/detail/Iterators.h:103:8: note: candidate: 'bool folly::detail::IteratorFacade<D, V, Tag>::operator!=(const D2&) const [with D2 = folly::dynamic::const_item_iterator; D = folly::dynamic::const_item_iterator; V = const std::pair<const f
      olly::dynamic, folly::dynamic>; Tag = std::forward_iterator_tag]'
        103 |   bool operator!=(D2 const& rhs) const {
            |        ^~~~~~~~
      ```
      Pull Request resolved: https://github.com/facebook/folly/pull/1329
      
      Reviewed By: markisaa
      
      Differential Revision: D20458078
      
      Pulled By: yfeldblum
      
      fbshipit-source-id: 15a6a4cfa0f71d45046ee2a13914672b3746b9eb
      69296166
  4. 24 Mar, 2020 3 commits
    • Andrii Grynenko's avatar
      Fix KeepAlive management for eager variants of addTask* · 6119a632
      Andrii Grynenko authored
      Summary:
      LoopController::runLoop is responsible for managing Executor/EventBase keep-alive handle.
      This diff introduces a similar level of indirection (LoopController::addTaskEager) to solve the same problem for eager variants of addTask*.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D20613287
      
      fbshipit-source-id: 22388ca3b31664c5fedfd509f2d9bab3d86aab47
      6119a632
    • Lewis Baker's avatar
      Allow the CancellationToken to propagate through the co_awaitTry() algorithm · 4d2f1db9
      Lewis Baker authored
      Summary:
      Modify the TrySemiAwaitable adapter so that it customises the co_withCancellation() customisation-point and passes through the CancellationToken to the underlying awaitable (eg. a Task).
      
      This fixes code that tries to do the following so that the cancellation token propagates to a Task adapted with co_awaitTry().
      ```
      co_await co_withCancellation(cancelToken, co_awaitTry(co_foo()));
      ```
      
      Reviewed By: andriigrynenko
      
      Differential Revision: D20443798
      
      fbshipit-source-id: 945e0f98abad4cdef0be29365642006c5687ad5f
      4d2f1db9
    • Zeyi (Rice) Fan's avatar
      use vendored Rust crates · e38fc326
      Zeyi (Rice) Fan authored
      Summary: Actually use vendored Rust crates when building with CMake. The `--offline` option make sure cargo do not go to the Internet for missing crates.
      
      Reviewed By: simpkins
      
      Differential Revision: D20542672
      
      fbshipit-source-id: ab4af40150c6af8b531a75f503a4fa848b3914da
      e38fc326
  5. 23 Mar, 2020 4 commits
    • Stepan Palamarchuk's avatar
      Add an rvalue overload of Snapshot<T>::getShared() · 9d601541
      Stepan Palamarchuk authored
      Summary:
      This allows to avoid unnecessary copy of `shared_ptr`.
      
      (Note: this ignores all push blocking failures!)
      
      Reviewed By: andriigrynenko
      
      Differential Revision: D20596972
      
      fbshipit-source-id: 6411ee2f735c1db1984bcd83ceddf80e4ec6f22b
      9d601541
    • Lee Howes's avatar
      Add logging for blocking using baton while on an executor · 55fc4b32
      Lee Howes authored
      Summary:
      Add sampled logging of blocking operations made on folly::Baton from within an executor task.
      
      Relies on thread_local state recording whether we are in a context where blocking is disallowed, which means within a task running on an executor with support for the functionality. Functionality is currently limited to certain executors, and to blocking operations on Baton, but this covers common user-facing APIs like Future.
      
      Reviewed By: andriigrynenko
      
      Differential Revision: D20010963
      
      fbshipit-source-id: c0598e1a3a9c4e3641581e561b678a2b241998ff
      55fc4b32
    • Adam Simpkins's avatar
      exclude eden/scm build artifacts from the getdeps path map · f6ef5d3c
      Adam Simpkins authored
      Summary:
      If you have built the `eden/scm` subdirectory with `make local` in your
      repository it will have left a bunch of build output artifacts in the source
      tree.  Update the getdeps shipit path map for eden to explicitly exclude many
      of these build artifacts.
      
      In particular:
      - Exclude `eden/scm/build/` since this directory can contains a lot of files.
      - Exclude all `*.pyc` files since there may be a reasonable number of these.
      - Exclude several Cargo-related files since these will cause problems when
        trying to build Rust code.
      
      Reviewed By: chadaustin
      
      Differential Revision: D20570720
      
      fbshipit-source-id: a60dec4854ae470fdb58e9651fd8a3b910c76004
      f6ef5d3c
    • Wez Furlong's avatar
      folly: to_narrow for windows compatibility · efd0e727
      Wez Furlong authored
      Summary:
      The default warning settings for the MSVC compiler result in an
      extremely noisy build output, to the point where it can take minutes of reading
      through pages of output to locate the actual error when debugging a build
      problem.  The majority of these warnings are the result of implicit integer
      narrowing that is silently permitted in our posix builds.
      
      Rather than blanket suppress these conversion warnings and mask potential bugs,
      this commit makes a pass over the code and adds `folly::to_narrow` to a number
      of call sites to make it explicit that a narrowing operation is taking place
      and that it is (probably!) intentional.   We make a lot of assumptions
      throughout our various projects that we won't allow data larger than 2GB
      through eg: thrift and as a result, a lot of wire/serialization related code
      uses `uint32_t` for sizes instead of `size_t`.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D20562029
      
      fbshipit-source-id: 706ba9cf330d40a2b3f911e5e9a8b9de325ebc80
      efd0e727
  6. 20 Mar, 2020 4 commits
    • Giuseppe Ottaviano's avatar
      Type-erase setCallback · 940c095e
      Giuseppe Ottaviano authored
      Summary:
      `setCallback()` functions just store the argument as a `Function`, so we don't need to specialize the templates all the way down, we can pass directly a `Function`.
      
      This reduces code size, and should not have runtime impact: either the move is elided in both cases, or if not there's no particular reason why a `Function` move should be more expensive than an arbitrary functor's (could even be faster).
      
      Reviewed By: yfeldblum, luciang
      
      Differential Revision: D20561695
      
      fbshipit-source-id: 1973c47a5410a43eb44beea36cb1105663094eb3
      940c095e
    • Shrikrishna Khare's avatar
      Script to build OpenNSA kernel modules · e7b465ec
      Shrikrishna Khare authored
      Summary:
      OpenNSA has prebuilt SDK but kernel modules have to be built from sources. Add
      a utility script to build and extend packaging script.
      
      In future, we can consider folding this build into fbcode_builder itself.
      
      Differential Revision: D20549883
      
      fbshipit-source-id: f9475b7e0223e9f357117d7d7d27df8904fa1d73
      e7b465ec
    • Pranav Thulasiram Bhat's avatar
      Fix doc in SharedMutex · a795f497
      Pranav Thulasiram Bhat authored
      Summary: Correct typo
      
      Reviewed By: lewissbaker
      
      Differential Revision: D20544820
      
      fbshipit-source-id: f9edffd0a44448fd558b3e659585044f9be81035
      a795f497
    • Koray Polat's avatar
      Update fmt from 5.3.0 to 6.1.1 · e8fe8fc4
      Koray Polat authored
      Summary: Updated fmt version to be on par with buck build. It was causing inconsistencies.
      
      Reviewed By: vitaut
      
      Differential Revision: D20528011
      
      fbshipit-source-id: d9e04ed2c28b839eaeff24120162c4db4732fa55
      e8fe8fc4
  7. 19 Mar, 2020 5 commits
    • Yedidya Feldblum's avatar
      Cut unused includes in folly/experimental/symbolizer/ElfCache.h · 8fa800e8
      Yedidya Feldblum authored
      Summary: [Folly] Cut unused `#include`s in `folly/experimental/symbolizer/ElfCache.h`.
      
      Reviewed By: Orvid
      
      Differential Revision: D20482493
      
      fbshipit-source-id: 426ebe0aa55e116e3f3c8095b0c9d0f1babdb354
      8fa800e8
    • Xavier Deguillard's avatar
      revisionstore: add a LFS remote store · 8a1bd857
      Xavier Deguillard authored
      Summary:
      This enables fetching blobs from the LFS server. For now, this is limited to
      fetching them, but the protocol specify ways to also upload. That second part
      will matter for commit cloud and when pushing code to the server.
      
      One caveat to this code is that the LFS server is not mocked in tests, and thus
      requests are done directly to the server. I chose very small blobs to limit the
      disruption to the server, by setting a test specific user-agent, we should be
      able to monitor traffic due to tests and potentially rate limit it.
      
      Reviewed By: DurhamG
      
      Differential Revision: D20445628
      
      fbshipit-source-id: beb3acb3f69dd27b54f8df7ccb95b04192deca30
      8a1bd857
    • Andrii Grynenko's avatar
      makeValueObserver · 33849b67
      Andrii Grynenko authored
      Summary: Helper observer which only triggers updates when the value changes.
      
      Reviewed By: bithree
      
      Differential Revision: D20521319
      
      fbshipit-source-id: 77e45d92f710b1701552cf29445f44aa9d9487f4
      33849b67
    • Lee Howes's avatar
      replace [[nodiscard] with FOLLY_NODISCARD · 7be4309f
      Lee Howes authored
      Summary: Correct use of portability macro.
      
      Reviewed By: yfeldblum, manderyao
      
      Differential Revision: D20520392
      
      fbshipit-source-id: b21fb13aa7a523db21a506b71e65047edbb17684
      7be4309f
    • Chad Austin's avatar
      fix unused parameter warnings · 05cf1d41
      Chad Austin authored
      Summary: Fix two small warnings when building AsyncUDPSocket on macOS.
      
      Reviewed By: fanzeyi
      
      Differential Revision: D20525411
      
      fbshipit-source-id: 39cd84364413d434d261c17c4c8a87e31ac75a42
      05cf1d41
  8. 18 Mar, 2020 7 commits