1. 19 Sep, 2017 2 commits
    • Christopher Dykes's avatar
      Fix hardware crc32 under MSVC · f3bce424
      Christopher Dykes authored
      Summary: It was horribly broken in multiple ways. It didn't support input > 4gb on Windows, was truncating the entire table to chars, and simply couldn't be compiled because it was exceeding MSVC's max macro instantion depth of 255.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5827332
      
      fbshipit-source-id: b08268c88db10c607b27231689b3ee3ec7553c1f
      f3bce424
    • Christopher Dykes's avatar
      Set names in NamedThreadFactory in the new thread · aa62e6f3
      Christopher Dykes authored
      Summary: This makes it now both work, and compile, on Windows.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5811100
      
      fbshipit-source-id: 5d6bfc04ed8e60417615da15bd197769e0c79c11
      aa62e6f3
  2. 18 Sep, 2017 1 commit
    • Eric Niebler's avatar
      fix strange recursive std::is_constructible instantiation involving the... · d3e97eba
      Eric Niebler authored
      fix strange recursive std::is_constructible instantiation involving the Function converting constructor
      
      Summary: In rare and obscure cases, the fact that `folly::Function`'s perfectly-forwarding, implicit converting constructor was SFINAE-ing on the argument's constructibility was causing a recursive template instantiation of std::is_constructible. Switch to passing the argument by value to avoid the need to test for constructibility.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5847034
      
      fbshipit-source-id: ce2ad1d2490206c6cae84c17544bd9fcd6ff47bb
      d3e97eba
  3. 15 Sep, 2017 4 commits
    • Eric Niebler's avatar
      Fix coroutine feature test macro on MSVC · 27197728
      Eric Niebler authored
      Summary: Coroutines are only available on MSVC when the /await compiler switch was passed, in which case the `_RESUMABLE_FUNCTIONS_SUPPORTED` macro is defined.
      
      Reviewed By: Orvid
      
      Differential Revision: D5837303
      
      fbshipit-source-id: af3349646e8875e3eac1bc3bbf47203f41f0bbde
      27197728
    • Dylan Yudaken's avatar
      Allow awaiting on a folly::Optional that returns a move-only type · 3597c587
      Dylan Yudaken authored
      Summary:
      await_resume is only called once, so this allows it to move the value out.
      At the same time remove a redundant clear (but keep the existing requirement that the promise type is an OptionalPromise), and clean up the tests.
      Also add a test to make sure the coroutine is cleaned up
      
      Reviewed By: ericniebler
      
      Differential Revision: D5834861
      
      fbshipit-source-id: 7ad487e818969cdf6fe27c9e82931aa247daf4e4
      3597c587
    • Stella Lau's avatar
      Allow getAutoUncompressionCodec() to have 1 terminal decoder · 481365ef
      Stella Lau authored
      Summary: getAutoUncompressionCodec() currently only allows unambiguous headers. Allow a single "terminal codec" to be called if all other codecs can't uncompress or throw.
      
      Reviewed By: terrelln
      
      Differential Revision: D5804833
      
      fbshipit-source-id: 057cb6e13a48fea20508d5c028234afddf7435f6
      481365ef
    • Pádraig Brady's avatar
      fix usingJEMalloc() with LTO · 610c1163
      Pádraig Brady authored
      Summary:
      LTO has better optimization which results in the malloc() being optimized away in this function.
      
      Note we don't use folly::dontOptimizeAway() because
      that introduces a circular dependency between the
      malloc and benchmark targets.
      
      Reviewed By: marksantaniello, meyering, interwq
      
      Differential Revision: D5840883
      
      fbshipit-source-id: 5dd9b152f70b7a49f125b6d79b4dfa40f4cdac59
      610c1163
  4. 14 Sep, 2017 3 commits
  5. 13 Sep, 2017 4 commits
    • Christopher Dykes's avatar
      Fix build without zlib compression enabled · fb0a1228
      Christopher Dykes authored
      Summary: The namespace alias was trying to alias a namespace that doesn't exist unless Folly is being compiled with zlib support.
      
      Reviewed By: terrelln
      
      Differential Revision: D5810929
      
      fbshipit-source-id: c659d8f775fc9b99e57cc95f5914418507e546fb
      fb0a1228
    • Stephen Chen's avatar
      fixing namespacing issue for the dummy non sse crc32c_hw · aa062435
      Stephen Chen authored
      Summary:
      Because the way the #if was written, the dummy crc32c_hw function accidentally
      ended in folly namespace instead of folly::details as expected. Fix this.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5826187
      
      fbshipit-source-id: ba0f2207a00bc21eda7a727f3f1025e1106d55f9
      aa062435
    • Marcus Holland-Moritz's avatar
      Fix UB from signed integer overflow in RWSpinLock · 7a3f4d06
      Marcus Holland-Moritz authored
      Summary:
      The signed counters used in a couple of places can in theory (and practice)
      overflow, yielding UB. Use unsigned counters instead.
      
      Reviewed By: luciang, philippv
      
      Differential Revision: D5818606
      
      fbshipit-source-id: c5928b779e76b309b00b7f6308a220e2bf6cbf79
      7a3f4d06
    • Jon Maltiel Swenson's avatar
      Backed out changeset ea9041ce2280 · 1c6da6e3
      Jon Maltiel Swenson authored
      Summary: Revert D5787837. Breaks `onSet()`/`onUnset()` behavior.
      
      Reviewed By: palmtenor
      
      Differential Revision: D5817063
      
      fbshipit-source-id: c7dea636fa60eb616d4ebe0a9d418bc96b3018ae
      1c6da6e3
  6. 12 Sep, 2017 8 commits
    • Michael Lee's avatar
      Include glog/logging.h in SmallLocksTest for DCHECK · d5005766
      Michael Lee authored
      Summary: The test uses DCHECK, but does not include glog/logging.h.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5818647
      
      fbshipit-source-id: fcb2630ac2b12acd1a7b84e228349b2887e976cd
      d5005766
    • Alberto Schiabel's avatar
      Update String.h · 17fd438a
      Alberto Schiabel authored
      Summary:
      Fixed typo in doc comment related to `void toLowerAscii(char* str, size_t length)`.
      This fixes the annoying xCode's warning `Parameter 'len' not found in the function declaration`.
      Closes https://github.com/facebook/folly/pull/670
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5815034
      
      Pulled By: Orvid
      
      fbshipit-source-id: 9580cd0bbd4924d4ed461a5435f525316e5c285a
      17fd438a
    • Christopher Dykes's avatar
      Don't use std::void_t · d4bba1e7
      Christopher Dykes authored
      Summary: I was wrong, MSVC's implementation has the same bug as everything else.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5810646
      
      fbshipit-source-id: 9caabbbc2115f57b7e836bb85c9b108588c94ad9
      d4bba1e7
    • Martin Martin's avatar
      const -> constexpr in folly::small_vector · d3555e67
      Martin Martin authored
      Summary: const -> constexpr in folly::small_vector
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5814264
      
      fbshipit-source-id: 4631bb7f3f04906636e5a188d4aa0d33ad796a3c
      d3555e67
    • Philip Jameson's avatar
      Remove unneeded parts of build script · 053c0a86
      Philip Jameson authored
      Summary: Remove an unneeded autoconf flag, as it causes the build to fail on missing boost-context
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5815646
      
      fbshipit-source-id: cb6544593de9fbf8248506b09c56412b4635b30c
      053c0a86
    • Martin Martin's avatar
      clang-format folly::small_vector. No functional change. · 6f7b20b8
      Martin Martin authored
      Summary: clang-format folly::small_vector.  No functional change.
      
      Reviewed By: Orvid
      
      Differential Revision: D5808357
      
      fbshipit-source-id: d2ee831e25c60778c699214b875635c22854832d
      6f7b20b8
    • Jon Maltiel Swenson's avatar
      Make RequestContext provider overridable in order to save cost of setContext()... · 943afd98
      Jon Maltiel Swenson authored
      Make RequestContext provider overridable in order to save cost of setContext() on each fiber context switch
      
      Summary:
      Each fiber context switch currently involves the cost of saving/restoring `RequestContext`.  Certain
      fibers-based applications such as mcrouter don't use `RequestContext` at all, so updating the current
      thread-global `RequestContext` on each fiber context switch is unnecessary overhead.  Avoid this cost
      by allowing `FiberManager` to override the `RequestContext` provider at the start and end of each fiber drain
      loop.
      
      Reviewed By: andriigrynenko
      
      Differential Revision: D5787837
      
      fbshipit-source-id: ea9041ce228063c8701165366fd1e34132868d22
      943afd98
    • Christopher Dykes's avatar
      Fix CMake build · 14b06383
      Christopher Dykes authored
      Summary: Spookyhash got moved a long time ago, and a duplicate test name was added with the migration of executors from wangle to folly.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5811321
      
      fbshipit-source-id: 789b4d3187a2e1e21c6cf8297f733bb4dffdbd60
      14b06383
  7. 11 Sep, 2017 2 commits
    • Phil Willoughby's avatar
      Dead shift in ConcurrentHashMapSegment · d25d17e7
      Phil Willoughby authored
      Summary: Original problem detected by compiling with `-Werror,-Wunused-value`. On further inspection the only place which uses this detail class ensures that the `max_size` parameter is a power of two already, so we can discard the logic to manipulate `max_size` and put a `CHECK` clause in its place to guard against future changes to the caller that break this assumption.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5799110
      
      fbshipit-source-id: d21ed9ff196d54ef91e38254df8b1b88bbf29275
      d25d17e7
    • Anirudh Ramachandran's avatar
      Move SSL_CTX sessionContext initialization into main SSL_CTX initialization path · 001275d1
      Anirudh Ramachandran authored
      Summary: This field was only previously set if setupSessionCache was called on the wangle::ServerSSLContext
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5776057
      
      fbshipit-source-id: ecdbe83816fee2ecbe7ea1b26a67b682a571309a
      001275d1
  8. 10 Sep, 2017 2 commits
    • Giuseppe Ottaviano's avatar
      Add convenience std::string overload for toLowerAscii · d84e6482
      Giuseppe Ottaviano authored
      Summary:
      `toLowerAscii` is surprisingly hard to use with `std::string` because (until C++17) `data()` returns a `const char*`. In addition, it is not widely known that `s[0]` is legal even if the string is empty. This can lead to a variety of suboptimal code, from explicitly checking emptiness, to casting away the `const` (which causes UB).
      
      Let's just have a simple overload for it.
      
      Reviewed By: pixelb, philippv, yfeldblum
      
      Differential Revision: D5801970
      
      fbshipit-source-id: 407e2e9e66147a0662a5e09c75921255adff0702
      d84e6482
    • Giuseppe Ottaviano's avatar
      Fix typo in async/README.md · cb471a45
      Giuseppe Ottaviano authored
      Reviewed By: yfeldblum
      
      Differential Revision: D5802013
      
      fbshipit-source-id: 472b09da2be7234157a7886018004e2f4ed4f279
      cb471a45
  9. 08 Sep, 2017 3 commits
    • Benjamin Jaeger's avatar
      Optional.h - make == operators constexprs · 4b351b61
      Benjamin Jaeger authored
      Summary: This more closely matches std optional and allows folly Optional to be a drop in replacement.
      
      Reviewed By: aary, yfeldblum
      
      Differential Revision: D5775541
      
      fbshipit-source-id: f754c006429fa3c5a866b6b5ffdfd8883ec2dd4f
      4b351b61
    • Eric Niebler's avatar
      support using co_await with folly::Optional when it is available · d6217b2f
      Eric Niebler authored
      Summary:
      Coroutines can be used to simulate the monadic "do" notion of Haskell. Use coroutines to enable monadic composition with folly::Optional.
      
      ```
      Optional<int> f() {
        return 7;
      }
      Optional<int> g(int) {
        return folly::none;
      }
      
      void MonadicOptional() {
        Optional<int> r = []() -> Optional<int> {
          int x = co_await f();
          assert(x == 7);
          int y = co_await g(x);
          assert(false); // not executed
          co_return y;
        }();
        assert(!r.hasValue());
      }
      ```
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5763371
      
      fbshipit-source-id: 9babc682244f38da7006d0b3a8444fd4efec1747
      d6217b2f
    • Michael Bolin's avatar
      Grammar fix: s/it's/its/ · e74c15ff
      Michael Bolin authored
      Summary:
      I noticed this while reading the docs.
      
      (Note: this ignores all push blocking failures!)
      
      Reviewed By: lbrandy
      
      Differential Revision: D5795548
      
      fbshipit-source-id: 9ec5aa13a8913f217b3118e72714d02dc4a9407f
      e74c15ff
  10. 07 Sep, 2017 1 commit
    • Kenny Yu's avatar
      Fix data race in folly/executors/Codel.cpp exposed by TSAN · 88903796
      Kenny Yu authored
      Summary:
      I found a data race with TSAN while attempting to run a sanitizer version of my service:
      
      ```
      WARNING: ThreadSanitizer: data race (pid=266)
        Read of size 8 at 0x7b58000c0c08 by thread T370:
          @ folly::Codel::overloaded(std::chrono::duration<long, std::ratio<1l, 1000000000l> >) at ./folly/executors/Codel.cpp:44
          @ apache::thrift::concurrency::ThreadManager::ImplT<folly::LifoSemImpl<std::atomic, folly::Baton<std::atomic, true, true> > >::Worker<folly::LifoSemImpl<std::atomic, folly::Baton<std::atomic, true, true> > >::run() at ./thrift/lib/cpp/concurrency/ThreadManager.tcc:119
          @ apache::thrift::concurrency::PthreadThread::threadMain(void*) at ./thrift/lib/cpp/concurrency/PosixThreadFactory.cpp:200
          @ __tsan_thread_start_func at crtstuff.c:?
      
        Previous write of size 8 at 0x7b58000c0c08 by thread T371:
          @ folly::Codel::overloaded(std::chrono::duration<long, std::ratio<1l, 1000000000l> >) at ./folly/executors/Codel.cpp:62
          @ apache::thrift::concurrency::ThreadManager::ImplT<folly::LifoSemImpl<std::atomic, folly::Baton<std::atomic, true, true> > >::Worker<folly::LifoSemImpl<std::atomic, folly::Baton<std::atomic, true, true> > >::run() at ./thrift/lib/cpp/concurrency/ThreadManager.tcc:119
          @ apache::thrift::concurrency::PthreadThread::threadMain(void*) at ./thrift/lib/cpp/concurrency/PosixThreadFactory.cpp:200
          @ __tsan_thread_start_func at crtstuff.c:?
      
        Location is heap block of size 744 at 0x7b58000c0c00 allocated by thread T314:
          @ operator new(unsigned long) at ??:?
          @ PriorityImplT at ./thrift/lib/cpp/concurrency/ThreadManager.tcc:826
          @ void __gnu_cxx::new_allocator<apache::thrift::concurrency::PriorityThreadManager::PriorityImplT<folly::LifoSemImpl<std::atomic, folly::Baton<std::atomic, true, true> > > >::construct<apache::thrift::concurrency::PriorityThreadManager::PriorityImplT<folly::LifoSemImpl<std::atomic, folly::Baton<std::atomic, true, true> > >, std::array<std::pair<std::shared_ptr<apache::thrift::concurrency::ThreadFactory>, unsigned long>, 5ul>&, bool&, unsigned long&>(apache::thrift::concurrency::PriorityThreadManager::PriorityImplT<folly::LifoSemImpl<std::atomic, folly::Baton<std::atomic, true, true> > >*, std::array<std::pair<std::shared_ptr<apache::thrift::concurrency::ThreadFactory>, unsigned long>, 5ul>&, bool&, unsigned long&)
          @ std::shared_ptr<apache::thrift::concurrency::PriorityThreadManager> apache::thrift::concurrency::PriorityThreadManager::newPriorityThreadManager<folly::LifoSemImpl<std::atomic, folly::Baton<std::atomic, true, true> > >(std::array<unsigned long, 5ul> const&, bool, unsigned long) at ./thrift/lib/cpp/concurrency/ThreadManager.tcc:1090
          @ std::shared_ptr<apache::thrift::concurrency::PriorityThreadManager> apache::thrift::concurrency::PriorityThreadManager::newPriorityThreadManager<folly::LifoSemImpl<std::atomic, folly::Baton<std::atomic, true, true> > >(unsigned long, bool, unsigned long) at ./thrift/lib/cpp/concurrency/ThreadManager.tcc:1100
          @ apache::thrift::ThriftServer::serve() at ./thrift/lib/cpp2/server/ThriftServer.cpp:475
          @ apache::thrift::server::TServer::run() at ./thrift/lib/cpp/server/TServer.h:186
          @ apache::thrift::concurrency::PthreadThread::threadMain(void*) at ./thrift/lib/cpp/concurrency/PosixThreadFactory.cpp:200
          @ __tsan_thread_start_func at crtstuff.c:?
      
        Thread T370 (tid=638, running) created by thread T314 at:
          @ pthread_create at ??:?
          @ apache::thrift::concurrency::PthreadThread::start() at ./thrift/lib/cpp/concurrency/PosixThreadFactory.cpp:108
          @ apache::thrift::concurrency::ThreadManager::ImplT<folly::LifoSemImpl<std::atomic, folly::Baton<std::atomic, true, true> > >::addWorker(unsigned long) at ./thrift/lib/cpp/concurrency/ThreadManager.tcc:185
          @ apache::thrift::concurrency::PriorityThreadManager::PriorityImplT<folly::LifoSemImpl<std::atomic, folly::Baton<std::atomic, true, true> > >::start() at ./thrift/lib/cpp/concurrency/ThreadManager.tcc:840
          @ apache::thrift::ThriftServer::setup() at ./thrift/lib/cpp2/server/ThriftServer.cpp:347
          @ apache::thrift::ThriftServer::serve() at ./thrift/lib/cpp2/server/ThriftServer.cpp:475
          @ apache::thrift::server::TServer::run() at ./thrift/lib/cpp/server/TServer.h:186
          @ apache::thrift::concurrency::PthreadThread::threadMain(void*) at ./thrift/lib/cpp/concurrency/PosixThreadFactory.cpp:200
          @ __tsan_thread_start_func at crtstuff.c:?
      
        Thread T371 (tid=639, running) created by thread T314 at:
          @ pthread_create at ??:?
          @ apache::thrift::concurrency::PthreadThread::start() at ./thrift/lib/cpp/concurrency/PosixThreadFactory.cpp:108
          @ apache::thrift::concurrency::ThreadManager::ImplT<folly::LifoSemImpl<std::atomic, folly::Baton<std::atomic, true, true> > >::addWorker(unsigned long) at ./thrift/lib/cpp/concurrency/ThreadManager.tcc:185
          @ apache::thrift::concurrency::PriorityThreadManager::PriorityImplT<folly::LifoSemImpl<std::atomic, folly::Baton<std::atomic, true, true> > >::start() at ./thrift/lib/cpp/concurrency/ThreadManager.tcc:840
          @ apache::thrift::ThriftServer::setup() at ./thrift/lib/cpp2/server/ThriftServer.cpp:347
          @ apache::thrift::ThriftServer::serve() at ./thrift/lib/cpp2/server/ThriftServer.cpp:475
          @ apache::thrift::server::TServer::run() at ./thrift/lib/cpp/server/TServer.h:186
          @ apache::thrift::concurrency::PthreadThread::threadMain(void*) at ./thrift/lib/cpp/concurrency/PosixThreadFactory.cpp:200
          @ __tsan_thread_start_func at crtstuff.c:?
      
        Thread T314 (tid=582, running) created by main thread at:
          @ pthread_create at ??:?
          @ apache::thrift::concurrency::PthreadThread::start() at ./thrift/lib/cpp/concurrency/PosixThreadFactory.cpp:108
          ...
      ```
      
      Looks like there is a data race in how `codelMinDelay_` is used. I couldn't get `std::atomic` to compile with `std::chrono::nanoseconds`,
      so I used `std::atomic<uint64_t>` and converted between `uint64_t` and time types appropriately.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5759588
      
      fbshipit-source-id: 8213f3789808265ddfe5ab122f0f86490d0ea6ea
      88903796
  11. 06 Sep, 2017 1 commit
    • James Sedgwick's avatar
      move wangle/concurrent to folly/executors · af4a3352
      James Sedgwick authored
      Summary:
      For the initial cutover, just pull the copies in folly into the wangle namespace
      The main problem with that approach is that forward declarations of wangle components no longer work, so I fixed those manually
      
      ALSO, IMPORTANT: This is a great, once in a lifetime opportunity to rename/restructure these components. I have a few ideas that I'll noodle and share eventually, e.g. changing LifoSemMPMCQueue so it's just descriptive and not an enumeration of implementation details. Please chip in with yr ideas!
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5694213
      
      fbshipit-source-id: 4fc0ea9359d1216191676fc9729fb53a3f06339f
      af4a3352
  12. 05 Sep, 2017 1 commit
    • Stella Lau's avatar
      Compress empty strings with underlying compressor · 049fb12e
      Stella Lau authored
      Summary:
      - Current behavior compresses empty strings to empty strings. This is undesirable as decompression using underlying decompressor (side-stepping the codec) will fail. This change passes empty strings to the underlying compressor
      - Decompressing empty string -> empty string was kept for backwards compatibility
      - Fix `getUncompressedLength` for zlib
      
      Reviewed By: terrelln, yfeldblum
      
      Differential Revision: D5740034
      
      fbshipit-source-id: 5a747ea4963dad872103209aa4410197f6c605db
      049fb12e
  13. 02 Sep, 2017 1 commit
    • Yedidya Feldblum's avatar
      Fix constexpr_min after D5739715 · 4fd5e900
      Yedidya Feldblum authored
      Summary:
      [Folly] Fix `constexpr_min` after {D5739715} (facebook/folly@6d7c6d55f0f4b7b75607608ef9037db58083368f).
      
      Add new unit-tests for `constexpr_min` and `constexpr_max` to avoid silly mistakes like this in the future.
      
      It was defined recursively in terms of `constexpr_max` rather than, as intended, in terns of `constexpr_min`. HT Mandar12.
      
      Reviewed By: Orvid
      
      Differential Revision: D5761831
      
      fbshipit-source-id: 2dad5833e05679232b3c529d33325a0205c2e4e4
      4fd5e900
  14. 01 Sep, 2017 2 commits
    • Igor Sugak's avatar
      increase stack size when TSAN is enabled · 555494f0
      Igor Sugak authored
      Reviewed By: meyering
      
      Differential Revision: D5757469
      
      fbshipit-source-id: ad70c47251993c79a502d30f312534e28c9241d4
      555494f0
    • Kyle Nekritz's avatar
      Deflake some AsyncSSLSocket tests. · bb9a2237
      Kyle Nekritz authored
      Summary: Fulfilling starts destroying the evb in another thread which races with the socket closing on the evb.
      
      Reviewed By: siyengar, ngoyal
      
      Differential Revision: D5755271
      
      fbshipit-source-id: ace37eee63e684c97ca0fe503293eee83514e0ac
      bb9a2237
  15. 31 Aug, 2017 3 commits
    • Aravind Anbudurai's avatar
      Add a comment on File.h · e540cbee
      Aravind Anbudurai authored
      Summary: title
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5751299
      
      fbshipit-source-id: d3967c2499da9a2c98c2862b9bdc9994c12edc76
      e540cbee
    • Yedidya Feldblum's avatar
      Extract non-portability constexpr math functions to new header · 6d7c6d55
      Yedidya Feldblum authored
      Summary:
      [Folly] Extract non-portability `constexpr` math functions to new header.
      
      This new header, `folly/ConstexprMath.h`, is specifically for compile-time-computable math functions. We start with `min`, `max`, `abs`, and `log2`.
      
      Included substantive changes:
      * Add new tests for `constexpr_strlen`, which remains in the portability header.
      * Make `constexpr_min` and `constexpr_max` variadic.
      * Make `constexpr_log2` tail-recursive, remove `const_log2` in `FixedString.h`, and move the related comment.
      
      Reviewed By: Orvid
      
      Differential Revision: D5739715
      
      fbshipit-source-id: 29d3cc846ce98bb4bdddcc8b0fa80e4d32075fe0
      6d7c6d55
    • Philip Jameson's avatar
      Don't use symbolizer on OSX · 4717bdad
      Philip Jameson authored
      Summary:
      When trying to build with targets files on OSX, I couldn't use the symbolizer because it needs StackTrace, which requires libunwind and elf. This makes it so that we only build on linux for now. This also makes it so that we set FOLLY_USE_SYMBOLIZER in autoconf, since that wasn't set before.
      
      Does a few things surrounding usage of the symbolizer library:
      - Introduce FOLLY_USE_SYMBOLIZER in folly-config.h and USE_SYMBOLIZER as an AM definition
      -- Filter some code out of init and some other random libs that optionally need the symbolizer
      - Fix libdwarf detection. Previously on a fresh ubuntu container, we didn't find libdwarf/dwarf.h, so we stopped trying before looking at dwarf.h
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5644352
      
      fbshipit-source-id: f0a3580c41122e5e8fdfd17a9fdbb0921be21401
      4717bdad
  16. 30 Aug, 2017 2 commits
    • Michael Lee's avatar
      Include `<array>` for test · faa5f598
      Michael Lee authored
      Summary: <array> is sometimes necessary for using `std::array`. Fix up
      
      Reviewed By: aary
      
      Differential Revision: D5740866
      
      fbshipit-source-id: 13bafadd26fdd0f2eff3513115b43811682e7cda
      faa5f598
    • Aaryaman Sagar's avatar
      Conditionally compiled for_each with constexpr · f45b792f
      Aaryaman Sagar authored
      Summary:
      Code was breaking in versions of C++ where constexpr functions are
      required to have one line bodies
      
      Reviewed By: yfeldblum, mzlee
      
      Differential Revision: D5739062
      
      fbshipit-source-id: 6c509f1daf77751d33ce9c173a0d7f1d3bd2a006
      f45b792f