1. 05 Apr, 2019 2 commits
    • Lee Howes's avatar
      Add executor-taking forms of deferValue and thenValue · c316166d
      Lee Howes authored
      Summary: For consistency adds thenExValue and deferExValue.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D14793864
      
      fbshipit-source-id: 700f02cfb27b93e1739c511f01142c30c1896990
      c316166d
    • Chad Austin's avatar
      fix dynamic linking of stats on macOS · 57cc7e45
      Chad Austin authored
      Summary:
      D14531266 defaulted static linking on macOS because of a link error in
      folly/stats. A better fix for the issue is instantiating the
      subclasses of BufferedStat, so add those.
      
      Reviewed By: andrewjcg
      
      Differential Revision: D14767345
      
      fbshipit-source-id: eaa597dec468264595547f338348d7d74b49dd69
      57cc7e45
  2. 04 Apr, 2019 7 commits
    • Lee Howes's avatar
      Rename defer for an executor-taking continuation deferExTry for consistency with thenExTry · a9ab61b4
      Lee Howes authored
      Summary: Renames defer taking an executor-taking continuation to deferExTry and modifying to take a KeepAlive for consistency with thenExTry.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D14761230
      
      fbshipit-source-id: af95afabb662197edcf2eeb432bc64c57011c776
      a9ab61b4
    • Eric Niebler's avatar
      make awaitables sender and make single-typed senders awaitable · dad6c2b8
      Eric Niebler authored
      Summary:
      Add coroutine support to pushmi by making all sender types that satisfy the `SingleTypedSender` concept awaitable; that is, you can get their result by `co_await`-ing them in a coroutine.
      
      In addition, all Awaitable types automatically satisfy the `SingleTypedSender` concept; that is, you can pass them to `pushmi::submit` along with a `Receiver` that is invoked with the result of `co_await`-ing the awaitable.
      
      Reviewed By: kirkshoop
      
      Differential Revision: D14688373
      
      fbshipit-source-id: 8598b303aebcaa070033868abd440245c165bd73
      dad6c2b8
    • Eric Niebler's avatar
      replace receiver properties with receiver_traits · 432d4332
      Eric Niebler authored
      Summary: Types opt in to receiver-ness with pushmi::receiver_traits, analogous to sender_traits (and std::iterator_traits). Alternatively, they can simply define a nested ::receiver_concept typedef that is an alias for one of "sink" or "flow".
      
      Reviewed By: kirkshoop
      
      Differential Revision: D14668335
      
      fbshipit-source-id: 230abfcffef0cd231196b5f6a7ed05e1ac86ef0c
      432d4332
    • Eric Niebler's avatar
      add TypedSender support to pushmi, pave the way for Awaitable senders · 1c1fbc3c
      Eric Niebler authored
      Summary:
      * The sender concepts are now defined in terms of a `sender_traits` class template, in which the user can specify additional sender metadata like what values and errors it sends to the Receiver. This will make it possible to automatically make Senders awaitable from within coroutines.
      
      * Remove the now-unused is_sender<>, is_single<>, and is_many<> properties.
      
      * Define a `SingleSender` concept and a `TypedSender` concept.
      
      * Define a `pushmi::sender` class template from which a Sender can inherit to declare the sender category (single/many/flow), and the types of the values and errors.
      
      Reviewed By: kirkshoop
      
      Differential Revision: D14631770
      
      fbshipit-source-id: afcfd10bcd4e0e7ba224ea2c713d7fa92249ab7f
      1c1fbc3c
    • Andrii Grynenko's avatar
      Add a comment. · 7bcdd925
      Andrii Grynenko authored
      Reviewed By: lbrandy
      
      Differential Revision: D14766712
      
      fbshipit-source-id: 78c84117aa1c35825c72eb4bcd04e0bebb20c67f
      7bcdd925
    • Lee Howes's avatar
      Add thenExTry operation to support continuations taking executor parameter. · a6c3395f
      Lee Howes authored
      Summary: Adds the option of providing a continuation that takes an executor and a Try. This way an executor is always available to child tasks. Uses a separate thenExTry API to avoid potential overload set ambiguity.
      
      Reviewed By: yfeldblum, andriigrynenko
      
      Differential Revision: D14726443
      
      fbshipit-source-id: ab635c502c8a010b9b68af38add86ff7c200ff38
      a6c3395f
    • Yang Chi's avatar
      HHWheelTimer::Callback getTimeRemaining function is const · ea225c31
      Yang Chi authored
      Summary: it doesn't change any state
      
      Reviewed By: siyengar
      
      Differential Revision: D14296359
      
      fbshipit-source-id: 0bb8acd1a55f2b6ed431adcd54b97e76b8f377f6
      ea225c31
  3. 03 Apr, 2019 5 commits
    • Andrii Grynenko's avatar
      Fix collectSemiFuture and collectN to work with SemiFutures with deferred work · d0494141
      Andrii Grynenko authored
      Reviewed By: yfeldblum
      
      Differential Revision: D14719902
      
      fbshipit-source-id: d3bc7b61d666c796c3c19f7fa198252acb472970
      d0494141
    • Amol Bhave's avatar
      Make InlineFunctionRef work for 32-bit · 869662db
      Amol Bhave authored
      Summary:
      InlineFuctionRef fails to compile on 32-bit machines and fails the
      static assert. This diff makes the assert generic to add support for 32-bit as
      well.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D14752182
      
      fbshipit-source-id: eb00487248c93c6c32226cb227e8d119bcc7af7a
      869662db
    • Stepan Palamarchuk's avatar
      Avoid atomic operation on the last refcount · e8751dea
      Stepan Palamarchuk authored
      Summary:
      There's no need in the atomic refcount decrement from 1->0, because we're the last live reference and using it to bump 1->2 is already undefined behavior.
      
      Added benchmark:
      
      Before:
      ```
      stepan@devvm329:~/fbsource/fbcode$ buck-out/opt/gen/folly/io/test/iobuf_benchmark --bm_min_usec=1000000
      ============================================================================
      folly/io/test/IOBufBenchmark.cpp                relative  time/iter  iters/s
      ============================================================================
      createAndDestroy                                            36.35ns   27.51M
      cloneOneBenchmark                                           40.40ns   24.75M
      cloneOneIntoBenchmark                                       27.03ns   37.00M
      cloneBenchmark                                              42.23ns   23.68M
      cloneIntoBenchmark                                          28.35ns   35.27M
      moveBenchmark                                               15.20ns   65.79M
      copyBenchmark                                               35.00ns   28.57M
      cloneCoalescedBaseline                                     334.59ns    2.99M
      cloneCoalescedBenchmark                          660.01%    50.69ns   19.73M
      takeOwnershipBenchmark                                      50.57ns   19.78M
      ============================================================================
      ```
      
      After:
      ```
      stepan@devvm329:~/fbsource/fbcode$ buck-out/opt/gen/folly/io/test/iobuf_benchmark --bm_min_usec=1000000
      ============================================================================
      folly/io/test/IOBufBenchmark.cpp                relative  time/iter  iters/s
      ============================================================================
      createAndDestroy                                            30.04ns   33.29M
      cloneOneBenchmark                                           41.27ns   24.23M
      cloneOneIntoBenchmark                                       26.37ns   37.92M
      cloneBenchmark                                              43.91ns   22.77M
      cloneIntoBenchmark                                          28.49ns   35.10M
      moveBenchmark                                               15.50ns   64.52M
      copyBenchmark                                               35.85ns   27.89M
      cloneCoalescedBaseline                                     318.49ns    3.14M
      cloneCoalescedBenchmark                          643.69%    49.48ns   20.21M
      takeOwnershipBenchmark                                      45.15ns   22.15M
      ============================================================================
      ```
      
      Reviewed By: yfeldblum, davidtgoldblatt
      
      Differential Revision: D14715579
      
      fbshipit-source-id: 3c0373b8423dda680920860979cfa240bf3d8d7a
      e8751dea
    • Stepan Palamarchuk's avatar
      Add an API that avoids unnecessary cloning of small IOBufs · 5c133249
      Stepan Palamarchuk authored
      Summary:
      `IOBufQueue` has packing logic, that would copy data instead of chaining `IOBufs`. However, that API unnecessary requires exclusive ownership of the chain.
      
      This diff adds an API that takes reference to IOBuf, copies as much as necessary and then clones/chains the rest.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D14715581
      
      fbshipit-source-id: e047d1c69ca19eec95a7adbca6df740440d23db3
      5c133249
    • Wez Furlong's avatar
      folly: workaround AlignedSysAllocator vs Dual ABI issue with gcc · 22152742
      Wez Furlong authored
      Summary:
      `AlignedSysAllocator` doesn't implement the optional `rebind`
      or `size_type` portions of the C++ allocator concept.  This is ok
      in GCC if the C++11 ABI is in use but causes compilation to fail
      with errors like these:
      
      ```
      folly/Range.h: In instantiation of ‘void folly::Range<Iter>::res
      et(folly::Range<Iter>::string<Alloc>&) [with Alloc = folly::AlignedSysAllocator<char>; Iter = const char*; folly::Range<Iter>::string<Alloc> = std::
      basic_string<char, std::char_traits<char>, folly::AlignedSysAllocator<char> >]’:
      folly/test/RangeTest.cpp:235:18:   required from here
      folly/Range.h:420:27: error: ‘folly::Range<const char*>::string<
      folly::AlignedSysAllocator<char> >’ {aka ‘const class std::basic_string<char, std::char_traits<char>, folly::AlignedSysAllocator<char> >’} has no me
      mber named ‘size’
           reset(str.data(), str.size());
                             ~~~~^~~~
      ```
      
      This diff works around this issue by only compiling in the problematic
      test if the C++11 ABI is enabled.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D14702585
      
      fbshipit-source-id: ea0c5fcfb0d69994d2958c2c236fe002959c824d
      22152742
  4. 02 Apr, 2019 17 commits
    • Joe Loser's avatar
      Use remove_cvref_t in Future-inl.h (#1099) · 8410273e
      Joe Loser authored
      Summary:
      - Replace a wordy type alias in `Future-inl.h` to use `remove_cvref_t`.
      Pull Request resolved: https://github.com/facebook/folly/pull/1099
      
      Differential Revision: D14721023
      
      Pulled By: yfeldblum
      
      fbshipit-source-id: e9de76a851162163046dfa088a8cc7e5a075562c
      8410273e
    • Orvid King's avatar
      Remove a bunch of to/fromFd calls on NetworkSockets in Folly · 45374fbd
      Orvid King authored
      Summary: The eventual plan will ban the use of `to/fromFd` on `NetworkSocket` when compiling on Windows.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D14592244
      
      fbshipit-source-id: cbf965f6822cbd5b6b1098c7dab9ab65aafd8192
      45374fbd
    • Stepan Palamarchuk's avatar
      Slight optimization of append logic · e941e2e0
      Stepan Palamarchuk authored
      Summary:
      1) There's no need to exit the loop if we encounter and IOBuf of length 0.
      2) We should do `n <= tailroom()` instead of `n < tailroom()`.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D14715582
      
      fbshipit-source-id: 9a30454bd536929414f7c9013dbcf6e59e6e7f2c
      e941e2e0
    • Wez Furlong's avatar
      folly: cmake: enable DistributedMutexTest.cpp · 6a9e877e
      Wez Furlong authored
      Summary:
      was trying to see if I could repro the issue described here:
      
      Refs: https://github.com/facebook/folly/issues/1092
      
      Reviewed By: yfeldblum
      
      Differential Revision: D14702579
      
      fbshipit-source-id: d90cbf5742883a26d9ac5dbfd56eed1965cbc64e
      6a9e877e
    • Wez Furlong's avatar
      folly: remove warning->error promotion from cmake build · 78fab0fb
      Wez Furlong authored
      Summary:
      Running down various warning/error issues is proving
      to be a tiresome game of wackamole.   Here's the latest issue:
      
      ```
      folly/container/test/F14TestUtil.h:400:16: error: ?void* mem
            std::memcpy(p, &n, sizeof(std::size_t));
            ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
      In file included from /opt/rh/devtoolset-8/root/usr/include/c++/8/bits/stl_algobase.h:64,
                        from /opt/rh/devtoolset-8/root/usr/include/c++/8/bits/char_traits.h:39,
                        from /opt/rh/devtoolset-8/root/usr/include/c++/8/string:40,
                        from /opt/rh/devtoolset-8/root/usr/include/c++/8/stdexcept:39,
                        from /data/users/wez/scratch/dataZusersZwezZfbsource/fbcode_builder_getdeps/shipit/folly/folly/container/F14Map.h:30,
                        from /data/users/wez/scratch/dataZusersZwezZfbsource/fbcode_builder_getdeps/shipit/folly/folly/container/test/F14MapTest.cpp:17
      /opt/rh/devtoolset-8/root/usr/include/c++/8/bits/stl_pair.h:198:12: note: ?struct std::pair<const std::basic_string<char>, int>? declared here
            struct pair
                  ^~~~
      ```
      
      The targeted solution is to use `-Wno-class-memaccess` as we do with our
      internal builds, but that is a gcc-specific option that fails when used with
      the apple clang compiler.
      
      The simplest option is just to disable warning->error promotion in
      the cmake build, as it feels like a losing battle to keep chasing
      the different combinations/permutations.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D14702575
      
      fbshipit-source-id: d8daa6c9588e7c84c991a0ef86baf700bd32fe8c
      78fab0fb
    • Wez Furlong's avatar
      folly:wangle: centralize FindGMock.cmake · 638a7454
      Wez Furlong authored
      Summary:
      move the FindGMock to the common cmake library and adjust
      folly and wangle to consume it from there.
      
      Reviewed By: strager
      
      Differential Revision: D14710329
      
      fbshipit-source-id: 35ac9d6d2ec03468f389f5b9f1c126b007c7c798
      638a7454
    • Wez Furlong's avatar
      folly: fixup AsyncTimeoutTest on windows · 1cd3b037
      Wez Furlong authored
      Summary:
      In D14702587 I made a change to workaround an ICE in gcc 8.
      It turns out to be a gift that keeps giving; with the code as-is
      on windows we now encounter:
      
      ```
      folly\io\async\test\AsyncTimeoutTest.cpp(29): error C3493: 'expected' cannot be implicitly captured because no default capture mode has been specified
      ```
      
      Adding `expected` to the capture list yields this error with gcc, either with or without the reference:
      
      ```
      stderr: folly/io/async/test/AsyncTimeoutTest.cpp:29:45: error: lambda capture 'expected' is not required to be captured for this use [-Werror,-Wunused-lambda-capture]
            AsyncTimeout::make(manager, [&value, &expected]() noexcept { value = expected; });
                                               ~~~^~~~~~~~
      1 error generated.
      ```
      
      the solution is to make `expected` not be `const`.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D14721418
      
      fbshipit-source-id: b65c17414c161b9dee7f269b2e2a22a980766a6c
      1cd3b037
    • Michael Park's avatar
      Strengthened `const`-ness of `ThreadPoolExecutor`, and its derived classes. · e8e6817c
      Michael Park authored
      Summary: It was observed in D14238146 that `ThreadPoolExecutor::numThreads()` is not marked `const`, and it seems that it really should be. This patch marks that function `const` as well as others in this class that seems they should be `const`.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D14681960
      
      fbshipit-source-id: f274b9788ae7e27d6bec22aec2818abeb6441531
      e8e6817c
    • Yedidya Feldblum's avatar
      PriorityUnboundedQueueSet, wrapping UnboundedQueue · 74f36602
      Yedidya Feldblum authored
      Summary: [Folly] `PriorityUnboundedQueueSet`, wrapping `UnboundedQueue`.
      
      Reviewed By: andriigrynenko
      
      Differential Revision: D14719777
      
      fbshipit-source-id: 529ddd8de5879908e36f6fc26e7a091230cb03da
      74f36602
    • Wez Furlong's avatar
      folly: workaround AsyncTimeoutTest ICE with gcc 8 · 8ea8b06a
      Wez Furlong authored
      Summary:
      ```
      folly/io/async/test/AsyncTimeoutTest.cpp: In lambda function:
      folly/io/async/test/AsyncTimeoutTest.cpp:31:70: internal compiler error: Segmentation fault
             AsyncTimeout::make(manager, [&]() noexcept { value = expected; });
                                                                            ^
      Please submit a full bug report,
      with preprocessed source if appropriate.
      See <http://bugzilla.redhat.com/bugzilla> for instructions.
      ```
      
      I'm using:
      
      ```
       $ /opt/rh/devtoolset-8/root/usr/bin/c++ --version
      c++ (GCC) 8.2.1 20180801 (Red Hat 8.2.1-2)
      Copyright (C) 2018 Free Software Foundation, Inc.
      This is free software; see the source for copying conditions.  There is NO
      warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
      ```
      
      This has been fixed in gcc 8.3, but the workaround is to explicitly
      name the captures as is done in this diff.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D14702587
      
      fbshipit-source-id: 1998ef5de8eb4df520edcc41fdc9cd9547dec824
      8ea8b06a
    • Wez Furlong's avatar
      folly:wangle: fixup libevent detection and export · 9a29672d
      Wez Furlong authored
      Summary:
      I finally got to the bottom of the weird `-levent` or `event.lib`
      linker errors that crop up in the cmake builds.
      
      The issue is that if you have installed a recent libevent it deploys
      a cmake CONFIG package that exports just a bare `event` target as the
      dep on libevent.  This is unfortunate because it is interpreted as
      meaning `-levent` with no library path, which for an installation
      of libevent that is not in the default path will result in linker
      errors in libraries downstream of folly.
      
      To resolve this, I've given the common `FindLibEvent.cmake` file
      (that was derived from the folly library of the same name) a similar
      treatment to the recent changes to find glog and taught it how to
      locate libevent from a config package and to fall back on a basic
      include/library check.
      
      If we find an `event` target then we extract the actual library
      path from it and export that.
      
      I've removed folly's and wangle's own FindLibEvent.cmake so that it will pick
      up the common library which gets shipit sync'd out to
      https://github.com/facebook/folly/blob/master/CMake/FindLibEvent.cmake
      and https://github.com/facebook/wangle/blob/master/build/fbcode_builder/CMake/FindLibEvent.cmake
      
      Reviewed By: yfeldblum
      
      Differential Revision: D14702577
      
      fbshipit-source-id: d35d9f741e009dcd77976c0637ba3024a8a4aef3
      9a29672d
    • Wez Furlong's avatar
      folly: fix FutureDAGTest compilation · fc3937b5
      Wez Furlong authored
      Summary:
      ```
      folly/experimental/test/FutureDAGTest.cpp:46:7: error: ‘source_node’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
             if (it->first != source_node) {
             ^~
      cc1plus: all warnings being treated as errors
      ```
      
      Reviewed By: yfeldblum
      
      Differential Revision: D14702569
      
      fbshipit-source-id: 949ecde007a8d84498c5d87f4a4c2db463ba83a9
      fc3937b5
    • Wez Furlong's avatar
      folly: fix IOBufCursorTest · b168f451
      Wez Furlong authored
      Summary:
      ```
      folly/folly/io/test/IOBufCursorTest.cpp:212:3:
      folly/folly/io/Cursor.h:411:13: error: ‘void* memcpy(void*, const void
      *, size_t)’ forming offset [13, 20] is out of the bounds [0, 12] of object ‘buf’ with type ‘char [12]’ [-Werror=array-bounds]
             memcpy(buf, data(), len);
             ~~~~~~^~~~~~~~~~~~~~~~~~
      ```
      
      Reviewed By: yfeldblum
      
      Differential Revision: D14702563
      
      fbshipit-source-id: 3697a021d71bccfae9d8833b42a0c25e916b7a78
      b168f451
    • Wez Furlong's avatar
      folly: fix string truncation warning in LockFreeRingBufferTest · c6ad789e
      Wez Furlong authored
      Summary:
      ```
      folly/experimental/test/LockFreeRingBufferTest.cpp:279:14: error
      : ‘char* strncpy(char*, const char*, size_t)’ output may be truncated copying 1023 bytes from a string of length 1023 [-Werror=stringop-truncation]
             strncpy(data_, data.data_, sizeof(data_) - 1);
             ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      ```
      
      Reviewed By: yfeldblum
      
      Differential Revision: D14702561
      
      fbshipit-source-id: 8f85c758c7afc99eeb1f95920511fb4195eafbbe
      c6ad789e
    • Lewis Baker's avatar
      Make folly::coro::Mutex lock operations SemiAwaitable · ab0aeeea
      Lewis Baker authored
      Summary:
      Making the `co_scoped_lock()` and `co_lock()` operations semi-awatitable forces the caller to provide an executor on which to resume the awaiting coroutine in the case that the lock could not be acquire synchronously.
      
      This improves the safety of folly::coro::Mutex when used from within an InlineTask which does not implicitly wrap all co_await expressions to ensure transitions back to the executor and would otherwise implicitly resume the next lock-acquirer inline inside the call to .unlock().
      
      Reviewed By: andriigrynenko
      
      Differential Revision: D14708636
      
      fbshipit-source-id: bb9cda1a4a6e53978071a7b98ebf9affeef47c7d
      ab0aeeea
    • Joe Loser's avatar
      Replace FBString's assume_unreachable with folly::assume_unreachable (#1079) · 20ddb17b
      Joe Loser authored
      Summary:
      - Instead of defining a separate `assume_unreachable` wrapper macro for
        support on different compilers, use the one directly from
        `folly/lang/Assume.h` which is spelled `folly::assume_unreachable`.
      - Since the `assume_unreachable` wrapper in `FBString.h` was the only
        thing using FBString's wrapper around `always_inline` for various
        compilers as well, we can remove that as well.
      Pull Request resolved: https://github.com/facebook/folly/pull/1079
      
      Reviewed By: yfeldblum
      
      Differential Revision: D14605330
      
      Pulled By: Orvid
      
      fbshipit-source-id: ec5529d8913fcec0a7eb03bce006d8fec71d525b
      20ddb17b
    • Dan Melnic's avatar
      Round up microseconds to nearest millisecond value in the default... · 4f8c4177
      Dan Melnic authored
      Round up microseconds to nearest millisecond value in the default TimeoutManager::scheduleTimeoutHighRes implementation
      
      Summary:
      Round up microseconds to nearest millisecond value in the default TimeoutManager::scheduleTimeoutHighRes implementation
      
      (Note: this ignores all push blocking failures!)
      
      Reviewed By: yfeldblum
      
      Differential Revision: D14702027
      
      fbshipit-source-id: b0c710c25c1d9b92ebf28e490507eb3dc3f4db31
      4f8c4177
  5. 01 Apr, 2019 5 commits
    • Joe Loser's avatar
      Cut constexpr function comp objects in ConstexprMath.h (#1020) · 1cb399a3
      Joe Loser authored
      Summary:
      - We have several function objects that define constexpr call operators
        for `operator<`, `operator<=`, etc. These were needed prior to
        C++14 in order for them to be `constexpr`, as vendor implementations did not
        mark them `constexpr`.
      - Since Folly requires C++14, callers who are relying on these should
        migrate to `std::less<T>`, and other function objects in the standard
        library, which are now marked constexpr.
      Pull Request resolved: https://github.com/facebook/folly/pull/1020
      
      Reviewed By: Orvid
      
      Differential Revision: D14612068
      
      Pulled By: yfeldblum
      
      fbshipit-source-id: 378e148e6fd8e98cfba529c1e1c1a4d8f71dc8a7
      1cb399a3
    • Joe Loser's avatar
      Deduction guide for fbvector (#1090) · 3a7d1323
      Joe Loser authored
      Summary:
      - Add deduction guide for `fbvector` which is only available if the
        feature test macro for deduction guides is available or if we are on
        MSVC.
      Pull Request resolved: https://github.com/facebook/folly/pull/1090
      
      Reviewed By: nbronson
      
      Differential Revision: D14663586
      
      Pulled By: yfeldblum
      
      fbshipit-source-id: b3db8fc6ee3b13b84bb6a4a49d2a1801dc80fd4a
      3a7d1323
    • Giuseppe Ottaviano's avatar
      Use F14 for Distinct/GroupBy · 1727ca23
      Giuseppe Ottaviano authored
      Reviewed By: yfeldblum, philippv, luciang
      
      Differential Revision: D14713196
      
      fbshipit-source-id: 327f2beb064e61e323edfaf9837bc39275bb8d14
      1727ca23
    • Andrii Grynenko's avatar
      Add a safe ensure() variant for SemiFuture · 66ecb23e
      Andrii Grynenko authored
      Reviewed By: yfeldblum, larabear
      
      Differential Revision: D14692263
      
      fbshipit-source-id: fbdab61363ea83667832dbc56a883d069a1bd597
      66ecb23e
    • Wez Furlong's avatar
      folly: force static boost linkage · 53742745
      Wez Furlong authored
      Summary:
      This mirrors what we use when building thrift.
      Without this, boost somehow picks a mix of static and shared
      libs, but the static linkage doesn't know how to find the libdir
      and thus the link fails.
      
      This bubbles up when building folly's tests, which also require
      linking with glog.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D14700315
      
      fbshipit-source-id: a331fdb493e7af62b42833b90bd20367778642ea
      53742745
  6. 30 Mar, 2019 1 commit
    • Wez Furlong's avatar
      folly: fix compilation on windows · 0fa75356
      Wez Furlong authored
      Summary:
      The type is `HANDLE` but is being passed to something that
      wants an `int` for a socket/file descriptor, so let's
      explicitly translate this into a socket descriptor.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D14680671
      
      fbshipit-source-id: c7b3f6058ca486dbda01b069ec5d67cc2b3ea478
      0fa75356
  7. 29 Mar, 2019 3 commits
    • Wez Furlong's avatar
      ThriftCppLibrary.cmake: fixup deps · fd2f5d20
      Wez Furlong authored
      Summary:
      this adds the include and library dirs for generated thrift targets;
      these are important when those dependencies are not installed into a default
      prefix.
      
      Reviewed By: strager
      
      Differential Revision: D14683957
      
      fbshipit-source-id: ed47ffac5c8732810afe77e6947584b7a2f05155
      fd2f5d20
    • Wez Furlong's avatar
      folly: cmake: fixup libevent include dirs · 430228fc
      Wez Furlong authored
      Summary:
      When finding a package via its config, we need to
      add its include dirs to our list.  Previously we were squeaking
      by for this because libevent was installed in either the default
      include path or in the same installation prefix as folly.
      
      In the getdeps build environment we have libevent in its own
      installation prefix.
      
      The `LibeventConfig.cmake` file from libevent `release-2.1.8-stable` exports
      the include dirs via the `LIBEVENT_INCLUDE_DIRS` variable, which is slightly
      different from that used by the `folly/public_tld/CMake/FindLibEvent.cmake`
      file.
      
      In a later diff I plan to standardize and move the libevent
      logic to the common cmake dir.  For now, this unblocks my build.
      
      Reviewed By: strager
      
      Differential Revision: D14680677
      
      fbshipit-source-id: 9f757c84fd145d052925803348008dc2c1abf263
      430228fc
    • Kirk Shoop's avatar
      make subset of pushmi build in xplat · df5f9801
      Kirk Shoop authored
      Summary:
      changes needed to add pushmi to xplat which is needed to make folly::Executor depend on pushmi.
      
      split from - D12912583
      
      MSVC 15.6.7 (required to keep cuda working) issues:
      - __VA_ARGS__ results in a single token on MSVC and not on gcc or clang. I changed the macros to expand the single token so that it is parsed as multiuple tokens again
      - some template usage must be placed inside `decltype()` to work with MSVC
      - a nested set of macros using __VA_ARGS__ only worked on MSVC and clang when nested twice, but not when nested three times. changed the macros to use explicit parameters.
      - gave up on pushmi invoke/invoke_result_t, now uses folly:Invoke instead.
      - gave up on property_insert_t, removed usage that was needed for ExecutorTest
      - switched many uses of make_receiver/make_sender to full bespoke receiver/sender implementations.
      - disabled deduction guides on windows
      - disabled apply on windows
      - added additional disambiguity for function overloads that MSVC complained were redefinitions (only differed in SFINAE) also reduced to one `operator|` for this reason
      - restructured `__property_category_t` and `__properties_t` to reduce MSVC ICE and other issues.
      - MSVC did not like `property_set_element<POut, property_category_t<PIn>>` changed to `property_set_element<POut, PCategory>`
      - MSVC complained about implicitly deleted destructors for `property_set_insert` explicitly added them..
      - MSVC does not like `)::value` sequence added `bool_v`.
      - replaced auto with explicit return types in some places.
      - added the missing `remove_cvref_t`
      
      In other news:
      - added tags.h to minimize Executor dependencies on pushmi
      - add `property_set_traits_disable_v` to allow EventBase to disable SequencedExecutor traits specialization
      - add support for building without exceptions to the customization points
      
      Reviewed By: ericniebler
      
      Differential Revision: D14686496
      
      fbshipit-source-id: c3f195783fd9a5f77b997498c44d4eebef1afe57
      df5f9801