1. 07 Jul, 2014 3 commits
    • Hans Fugal's avatar
      (wangle) s/continuation_/callback/ (missed some) · 82ab3bae
      Hans Fugal authored
      Summary: In the spirit of D1406753
      
      Test Plan: still builds and tests pass
      
      Reviewed By: hannesr@fb.com
      
      Subscribers: jsedgwick, net-systems@, fugalh, exa
      
      FB internal diff: D1412002
      82ab3bae
    • Hans Fugal's avatar
      (wangle) s/FutureObject/detail::State/ · 1d42dc0b
      Hans Fugal authored
      Summary:
      codemod
      I never was satisfied with this name. `State` feels a little better. More descriptive. But still pretty generic, so I'm open to alternative ideas.
      
      Test Plan: It still builds and tests pass.
      
      Reviewed By: hannesr@fb.com
      
      Subscribers: jsedgwick, net-systems@, fugalh, exa
      
      FB internal diff: D1411506
      1d42dc0b
    • Kevin Chou's avatar
      Fix string split when last part is shorter than delimiter · 02a9ec75
      Kevin Chou authored
      Summary: The bug is when ignoreEmpty is true, we use the wrong token size, which will be 0 when last token is shorter than delimiter.
      
      Test Plan:
      1. Add unit test
      2. fbconfig -r folly && fbmake runtests
      
      Reviewed By: philipp@fb.com
      
      Subscribers: maxime, xiaol
      
      FB internal diff: D1415803
      02a9ec75
  2. 02 Jul, 2014 1 commit
  3. 01 Jul, 2014 4 commits
    • Dave Watson's avatar
      update make check targets · d175e4ac
      Dave Watson authored
      Summary:
      Update targets so that gtest isn't required unless you run 'make check'.
      
      Simply make everything that uses gtest a 'check_PROGRAM' instead of a 'noinst_PROGRAM'
      
      Test Plan: build folly with 'make -j32', gtest isn't required.
      
      Reviewed By: andrewjcg@fb.com
      
      Subscribers: pavlo, doug
      
      FB internal diff: D1408288
      d175e4ac
    • Tudor Bosman's avatar
      Simplify include path, make sure .. is in it · 4bfe9433
      Tudor Bosman authored
      Summary: so #include <folly/File.h> works
      
      Test Plan: built OSS folly, make check, built tiny program out of tree
      
      Reviewed By: davejwatson@fb.com
      
      FB internal diff: D1412123
      4bfe9433
    • Tudor Bosman's avatar
      Codemod: use #include angle brackets in folly and thrift · ce64f0f6
      Tudor Bosman authored
      Summary: Also changed the thrift compilers to emit code with <...>.
      
      Test Plan: fbconfig -r folly thrift && fbmake opt && fbmake runtests_opt
      
      Reviewed By: davejwatson@fb.com
      
      Subscribers: ruibalp, nli, shilin, tjackson, fugalh, alandau, bmatheny, njormrod
      
      FB internal diff: D1411225
      ce64f0f6
    • Philip Pronin's avatar
      fix AsyncIO::doWait · c6bdae86
      Philip Pronin authored
      Summary:
      As it turns out, `io_getevents` may actually return less than
      `min_nr` events.  According to the aio logic
      (https://github.com/torvalds/linux/blob/10b5b5361a3c2a7fff9dbfa0f127adc2531e7732/fs/aio.c#L1634),
      there may be a couple of rounds required to get at least `nr_min` events, and
      if interrupted after the first one, incomplete results would be returned
      
      Test Plan:
      fbconfig -r folly/experimental/io/test && fbmake runtests_opt -32
      
      and was no longer able to repro #4609062
      
      Reviewed By: soren@fb.com
      
      FB internal diff: D1410389
      
      Tasks: 4609062
      c6bdae86
  4. 27 Jun, 2014 10 commits
    • Joel Marcey's avatar
      Be explicit about what we're passing to Endian::big · 09a81a96
      Joel Marcey authored
      Summary:
      This prevents a linker error on OSX:
      ```
      Undefined symbols for architecture x86_64:
      "folly::detail::EndianIntBase::swap(unsigned long)",
      referenced from:
      __GLOBAL__sub_I_MacAddress.cpp in libfolly.a(MacAddress.cpp.o)
      ld: symbol(s) not found for architecture x86_64
      ```
      
      We need folly and third-party changes in order to land a pull request for HHVM
      that starts to get FastCGI running on OSX.
      
      See the checklist of the HHVM pull request here: https://github.com/facebook/hhvm/pull/2944#issuecomment-47281003
      
      Closes #68
      
      GitHub Author: Daniel Sloof <goapsychadelic@gmail.com>
      
      @override-unit-failures
      
      Test Plan: fbmake runtests 100%
      
      Reviewed By: pt@fb.com, njormrod@fb.com
      
      FB internal diff: D1407426
      09a81a96
    • Joel Marcey's avatar
      Fix folly on OSX and BSD in prep for FastCGI on HHVM · 75f93a66
      Joel Marcey authored
      Summary:
      A recent change in folly/MemoryMapping.cpp uses MAP_ANONYMOUS, which is
      named MAP_ANON on OSX/BSD.
      
      We need folly and third-party changes in order to land a pull request for HHVM
      that starts to get FastCGI running on OSX.
      
      See the checklist of the HHVM pull request here: https://github.com/facebook/hhvm/pull/2944#issuecomment-47281003
      
      Closes #67
      
      GitHub Author: Daniel Sloof <goapsychadelic@gmail.com>
      
      @override-unit-failures
      
      Test Plan: fbmake runtests 100%
      
      Reviewed By: pt@fb.com, njormrod@fb.com
      
      FB internal diff: D1407393
      75f93a66
    • Hans Fugal's avatar
      (wangle) Return a Later from Future::via · a181fa04
      Hans Fugal authored
      Summary: Stroke of brilliance, Hannes.
      
      Test Plan:
      unit tests, including a new one
      Looked through `fbgs 'via('` and all the extant `via`s are attached to `Later`s already so it shouldn't break anything. But check contbuild before commit.
      
      Reviewed By: hannesr@fb.com
      
      Subscribers: net-systems@, fugalh, exa
      
      FB internal diff: D1406976
      
      Tasks: 4480567
      a181fa04
    • Jim Meyering's avatar
      folly: futexWaitUntilImpl: avoid abort triggered via tao/queues tests · b27ed0f6
      Jim Meyering authored
      Summary:
      * folly/test/DeterministicSchedule.cpp (folly): Tao/queues tests exposed
      an unhandled case in this code: when (futex->data == expected) happens,
      we would call futexErrnoToFutexResult with a futexErrno value of 0,
      which would cause an abort (unhandled valued in switch).
      Here's a stack trace from the abort: https://phabricator.fb.com/P12558008
      showing the invalid futexErrno value in frame #4.
      
      Test Plan:
      fbconfig -r --platform-all=gcc-4.8.1-glibc-2.17 --sanitize=address tao/queues:TimeoutWorkQueueTests
      _bin/tao/queues/WorkQueueTests -fbunit_test_regexp '^mt\_stress\_deterministic$'
      
      Reviewed By: mssarang@fb.com
      
      FB internal diff: D1404572
      
      Tasks: 4494871
      b27ed0f6
    • Sarang Masti's avatar
      Fix use-after-free in futexWaitUntilImpl · 8ee3ba54
      Sarang Masti authored
      Summary: Handle wake-ups correctly in futexWaitUntilImpl.
      
      Test Plan:
      -- ran all folly unit tests
      -- ran TimeoutWorkQueue test under tao/queues
      
      Reviewed By: ngbronson@fb.com, meyering@fb.com
      
      FB internal diff: D1406845
      
      Tasks: 4494871
      8ee3ba54
    • Hans Fugal's avatar
      (wangle) noexcept move constructor · 0498579d
      Hans Fugal authored
      Summary: to make lint happy
      
      Test Plan: builds
      
      Reviewed By: hannesr@fb.com
      
      Subscribers: net-systems@, fugalh, exa
      
      FB internal diff: D1406766
      
      Tasks: 4480567
      0498579d
    • Hans Fugal's avatar
      (wangle) s/continuation/callback · b20a9545
      Hans Fugal authored
      Summary: The word "continuation" is too ambiguous. Prefer callback (except where we are actually talking about CSP continuations in the README).
      
      Test Plan: Still builds. Nothing external is or should be calling `setContinuation`. But I'll wait for contbuild anyway.
      
      Reviewed By: hannesr@fb.com
      
      Subscribers: net-systems@, fugalh, exa
      
      FB internal diff: D1406753
      
      Tasks: 4480567
      b20a9545
    • Hans Fugal's avatar
      nuke executeWith · ad710a56
      Hans Fugal authored
      Summary: Removing this crufty API. The only callsite for `executeWith` was `Later::via` so I just folded it in there.
      
      Test Plan:
      unit tests
      contbuild
      
      Reviewed By: hannesr@fb.com
      
      Subscribers: net-systems@, fugalh, exa
      
      FB internal diff: D1406592
      
      Tasks: 4480567
      ad710a56
    • Hans Fugal's avatar
      Fix bizarre optimization · 57a00d50
      Hans Fugal authored
      Summary:
      I have no idea why the compiler is gettings its britches in a bunch because a unit test has a predictable output. Really, gcc?!
      
      But whatever, avoiding inlining by putting it in the cpp file solves it.
      
      Test Plan: fbmake runtests_opt
      
      Reviewed By: davejwatson@fb.com
      
      Subscribers: net-systems@, fugalh, exa
      
      FB internal diff: D1405811
      
      Tasks: 4591823
      57a00d50
    • Hans Fugal's avatar
      (folly) QueuedImmediateExecutor · 339a9d37
      Hans Fugal authored
      Summary: Add the `QueuedImmediateExecutor` which behaves like `InlineExecutor` but with different (and usually better) ordering semantics for nested calls.
      @override-unit-failures
      
      Test Plan: unit tests
      
      Reviewed By: davejwatson@fb.com
      
      Subscribers: folly@lists, net-systems@, fugalh, exa
      
      FB internal diff: D1364904
      
      Tasks: 3789661
      339a9d37
  5. 26 Jun, 2014 10 commits
    • Tudor Bosman's avatar
      Oops, fix README · da86cac0
      Tudor Bosman authored
      Reviewed By: meyering@fb.com
      Test Plan: no
      da86cac0
    • Tudor Bosman's avatar
      folly OSS fixes: add ThreadName.h and compression · b56a2049
      Tudor Bosman authored
      Summary: Also, optionalize dependencies on compression libraries.
      
      Test Plan: fbconfig -r folly && fbmake runtests_opt
      
      Reviewed By: meyering@fb.com
      
      Subscribers: kma, jhj, simpkins, lesha, folly@lists
      
      FB internal diff: D1396573
      b56a2049
    • Anton Likhtarov's avatar
      Fix for folly open source build on Ubuntu 12.04 · 6dff66ff
      Anton Likhtarov authored
      Summary: On 12.04, there's both /usr/lib/libiberty.a and /usr/lib/libiberty_pic.a, and _pic is the one we want to build a Folly shared library.
      
      Test Plan: build on Ubuntu 12.04
      
      Reviewed By: meyering@fb.com
      
      FB internal diff: D1402194
      6dff66ff
    • Hans Fugal's avatar
      Scheduler interface of Executor · d7a43326
      Hans Fugal authored
      Summary: and ManualExecutor implementation
      
      Test Plan: unit tests, contbuild
      
      Reviewed By: davejwatson@fb.com
      
      Subscribers: bmatheny, folly@lists, net-systems@, fugalh, exa, marccelani, jsedgwick
      
      FB internal diff: D1392999
      
      Tasks: 4548494
      d7a43326
    • Tudor Bosman's avatar
      folly OSS fixes: add ThreadName.h and compression · 0ecc7473
      Tudor Bosman authored
      Summary: Also, optionalize dependencies on compression libraries.
      
      Test Plan: fbconfig -r folly && fbmake runtests_opt
      
      Reviewed By: meyering@fb.com
      
      Subscribers: kma, jhj, simpkins, lesha, folly@lists
      
      FB internal diff: D1396573
      0ecc7473
    • Tudor Bosman's avatar
      Make randomNumberSeed read from /dev/urandom · 6019aaaa
      Tudor Bosman authored
      Summary: Because @lesha asked "why not" and I couldn't give him an answer.
      
      Test Plan: random_test
      
      Reviewed By: bmaurer@fb.com
      
      Subscribers: bmaurer, folly@lists, jhj, kma, lesha, sdoroshenko, soren
      
      FB internal diff: D1394401
      6019aaaa
    • Peter Ruibal's avatar
      Add ThreadName.h to folly's Makefile.am · 418ad481
      Peter Ruibal authored
      Summary:
      fbthrift depends on <folly/ThreadName.h>, which isn't currently
      getting installed as part of the autotools build.  Add it to Makefile.am
      
      Test Plan:
      Made this change to folly, re-autogen/configure/install, and
      then was able to successfully compile fbthrift's compiler
      
      Reviewed By: davejwatson@fb.com
      
      Subscribers: doug, folly@lists
      
      FB internal diff: D1397084
      418ad481
    • Yunqi Zhang's avatar
      Expose EVLOOP_NONBLOCK · 51e98fa7
      Yunqi Zhang authored
      Summary:
      This diff allows users to loop through EventBase without blocking if there are
      not any events to process.
      
      This is useful for sending and receiving requests on network, where users just
      want to try if there are any events and do not want to block if not.
      
      https://phabricator.fb.com/D1373887 is an example where we find this feature
      useful, otherwise we have to add an empty callback before loop.
      event_base_.runInLoop([] {});
      event_base_.loopOnce();
      
      @davejwatson, @fugalh, @simpkins, @stepan: Could you please take a look at the
      proposed changes and let me know if there is any better ways of doing this.
      
      Thank you!
      
      Test Plan:
      I think this would not break anything, but we might want to do some performance
      profiling if needed.
      
      Reviewed By: hans@fb.com
      
      Subscribers: simpkins, davejwatson, fugalh, stepan, folly@lists
      
      FB internal diff: D1383401
      51e98fa7
    • Nicholas Ormrod's avatar
      Make fbstring libgcc-safe · a97b3be5
      Nicholas Ormrod authored
      Summary:
      Some libgcc-incompatible code has been added to fbstring.
      Removed/reorganized it so that we can drop fbstring right into libgcc.
      
      Test Plan:
      fbconfig -r folly && fbmake runtests
      
      Copied FBString.h into libgcc's basic_fbstring.h, with no modifications.
      Successfully tp2_build libgcc/4.8.1. Adjusted symlink, then fbmake clean
      && fbconfig -r folly && fbmake dbg. The fbmake dbg failed with an
      assertion error, which is consistent with @lucian's observations in
      D1373725; the important part is that the error was at runtime, so the
      compile-time changes of this diff looks good.
      
      Reviewed By: lucian@fb.com
      
      Subscribers: folly@lists, sdwilsh, njormrod, lucian
      
      FB internal diff: D1382873
      a97b3be5
    • Nicholas Ormrod's avatar
      FBString conservative additions · 58d27d00
      Nicholas Ormrod authored
      Summary:
      Now that fbstring is conservative by default (D1373308), we can remove
      the mutability of the data members and the call to c_str() in operator[].
      
      Test Plan: fbconfig -r folly && fbmake runtests
      
      Reviewed By: lucian@fb.com
      
      Subscribers: folly@lists, sdwilsh, njormrod
      
      FB internal diff: D1382644
      58d27d00
  6. 14 Jun, 2014 5 commits
    • Anton Likhtarov's avatar
      Fix open source build · 1a31dc64
      Anton Likhtarov authored
      Test Plan: build it
      
      Reviewed By: pavlo@fb.com
      
      Subscribers: folly@lists
      
      FB internal diff: D1383722
      1a31dc64
    • Lucian Grijincu's avatar
      folly: fbstring: make it conservative-only: write '\0' in ctor and drop the c_str shenanigans · 94045182
      Lucian Grijincu authored
      Test Plan: ran folly tests
      
      Reviewed By: njormrod@fb.com
      
      Subscribers: folly@lists, njormrod
      
      FB internal diff: D1373308
      94045182
    • Nicholas Ormrod's avatar
      fbstring conservative corruption · 7e726e2a
      Nicholas Ormrod authored
      Summary:
      @lucian's D1373308 set fbstring to conservative by default.
      This breaks, eg, ti/proxygen/httpclient tests, by failing an assertion
      inside of c_str(). Specifically, the terminator is not '\0'.
      
      The fbstring_core move constructor, when sourced by a MediumLarge
      string, steals the source's internal data, then resets the source by
      calling ##setSmallSize(0)##. That function sets the in-situ size of the
      fbstring to zero, thus requalifying the string as a small string;
      however, it does nothing to the data - the previous 23 bytes now contain
      garbage.
      
      Sources of a move must be in a consistent state after the move is
      complete. The source, once a MediumLarge string whose first eight bytes
      were a pointer, is now a small string of size zero whose first byte is
      not necessarily '\0'. This breaks the FBSTRING_CONSERVATIVE invariant.
      
      This can be fixed by writing a terminator after the setSmallSize call.
      I have fixed all setSmallSize locations that do not writeTerminator.
      
      fbstring_core's move constructor is called exclusively from
      basic_fbstring's move assignment operator, hence the odd format of the
      test case.
      
      == TMI ==
      
      Interestingly, the source will almost certainly* contain a '\0', which
      prevents this simple ##str.size() != strlen(str.c_str())## bug from
      turning into a memory-trampling monster. The new size of zero is not
      what saves us - the 'size' byte of a small fbstring, through a very
      clever trick to allow 23-byte in-situ strings, is actually 23 minus the
      actual size (now 0), so is 23! Where, then, does the '\0' byte come? A
      MediumLarge string's data layout is [pointer, size, capacity]. The
      pointer is not guaranteed to contain a '\0', and neither are size or
      capacity. However, the size of the string needs to be very large in
      order to force the top byte of the size member to be non-zero; in that
      case, the string is so large that malloc is returning memory by the
      page. Since page sizes are a multiple of 2^8 (almost always, and if not
      then I don't think your fbstring can support large enough sizes
      anyways), and we use goodMallocSize, the capacity pointer would have a
      least signfigicant byte of zero.
      
      Why the (*)? Well, when reserving extra space on a non-refcounted Large
      string, the reallocation does not yield its extra goodMallocSize space.
      This could be fixed, though probably isn't worth the trouble. Anyways,
      since we aren't goodMallocSize-ing the user-supplied requested capacity,
      it probably won't contain a '\0'.
      
      Test Plan:
      fbconfig -r folly && fbmake runtests
      
      Modify folly/test/FBStringTest.cpp to define FBSTRING_CONSERVATIVE, then
      fbconfig folly/test/:fbstring_test_using_jemalloc && fbmake runtests
      Note that this fails before the patch is applied.
      
      Note that it is possible for the tests to pass even when this bug is
      present, since the top byte of the heap pointer must be non-0 in order
      for this error to be triggered.
      
      Reviewed By: lucian@fb.com
      
      Subscribers: folly@lists, njormrod, lucian, markisaa, robbert, sdwilsh, tudorb, jdelong
      
      FB internal diff: D1376517
      7e726e2a
    • Nicholas Ormrod's avatar
      static-ify FBString asserts · d6a1e277
      Nicholas Ormrod authored
      Summary: Some asserts could be static_asserts. Make it so!
      
      Test Plan: fbconfig -r folly && fbmke opt && fbmake runtests_opt
      
      Reviewed By: lucian@fb.com
      
      Subscribers: folly@lists, sdwilsh, njormrod
      
      FB internal diff: D1378670
      d6a1e277
    • Vojin Katic's avatar
      folly::gen::splitByLine · 9cc86052
      Vojin Katic authored
      Summary:
      I made it work, but please send your feedback how to improve code quality.
      
      splitByLine will split on \r, \n, and \r\n.
      
      Test Plan: add new test, arc unit
      
      Reviewed By: tjackson@fb.com
      
      Subscribers: folly@lists, crawler-diffs@
      
      FB internal diff: D1322212
      9cc86052
  7. 09 Jun, 2014 7 commits
    • Jim Meyering's avatar
      folly: do not disable RW_SPINLOCK_USE_X86_INTRINSIC_ for clang · cd5e0d07
      Jim Meyering authored
      Summary:
      Without this, we'd see problems like this in tao, when building with clang:
      With this change, this now works with clang-3.4 and clang.dev (3.4+).
      This change reverts D950285, which change appears to have been made
      to accommodate weakness in clang-3.3 or older.
      
      In file included from tao/data_providers/common/simpledp.cpp:7:
      ./tao/data_providers/common/stats.h:175:18: error: no type named 'RWTicketSpinLockT' in namespace 'folly'
      typedef folly::RWTicketSpinLockT<64, true> RWLockType;
      ~~~~~~~^
      ./tao/data_providers/common/stats.h:175:35: error: expected member name or ';' after declaration specifiers
      typedef folly::RWTicketSpinLockT<64, true> RWLockType;
      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
      
      Test Plan:
      ensure that all of these pass:
      fbconfig -r --clang folly/test:rw_spinlock_test && fbmake runtests
      fbconfig -r --clang folly/test:rw_spinlock_test && fbmake runtests_opt
      fbconfig -r         folly/test:rw_spinlock_test && fbmake runtests_opt
      fbconfig -r --clang --with-project-version clang:dev \
      folly/test:rw_spinlock_test && fbmake runtests_opt
      
      Reviewed By: delong.j@fb.com
      
      Subscribers: folly@lists, mathieubaudet
      
      FB internal diff: D1370024
      
      Tasks: 4090011
      cd5e0d07
    • Zejun Wu's avatar
      Specialize string to identical string conversion · 587427e7
      Zejun Wu authored
      Summary:
      Avoid copying underlying char array in to<string>(const string&) and
      to<fbstring>(const fbstring&).
      
      Test Plan: fbconfig -r $redteamisthebestteam/$nekomikoreimu && fbmake
      
      Reviewed By: ldbrandy@fb.com
      
      Subscribers: jonp, folly@lists
      
      FB internal diff: D1368183
      
      Tasks: 4263125
      587427e7
    • Marcus Holland-Moritz's avatar
      Add support for returning number of benchmark iterations · aed6ef6f
      Marcus Holland-Moritz authored
      Summary:
      I'm looping through a large number of test cases in a benchmark and I'm
      interested in the average time per test case rather than the total time,
      which is what I'm currently seeing. In order to get the average time,
      I need to be able to tell the benchmark module how many iterations have
      been run.
      
      This change adds _MULTI variants of the different BENCHMARK_ macros that
      allow for returning the actual number of iterations that have been run,
      e.g.:
      
      BENCHMARK_MULTI(benchmarkSomething) {
      std::vector<int> testCases { 0, 1, 1, 2, 3, 5 };
      for (int c : testCases) {
      doSomething(c);
      }
      return testCases.size();
      }
      
      Test Plan:
      * fbconfig -r folly && fbmake runtests
      * added new test cases to example benchmark code
      
      Reviewed By: simpkins@fb.com
      
      Subscribers: folly@lists, london_search@
      
      FB internal diff: D1356437
      aed6ef6f
    • Philip Pronin's avatar
      revert "conditionally write terminator in c_str()" · ec08f7d4
      Philip Pronin authored
      Summary: D1318048#21
      
      @override-unit-failures
      
      Test Plan: fbconfig -r folly && fbmake runtests_opt -j32
      
      Reviewed By: njormrod@fb.com
      
      Subscribers: folly@lists, njormrod
      
      FB internal diff: D1368939
      
      Tasks: 4466412
      
      Blame Revision: D1318048
      ec08f7d4
    • Stepan Palamarchuk's avatar
      Introduce destruction callbacks · d816ed88
      Stepan Palamarchuk authored
      Summary:
      This change allows users to track lifetime of EventBase and perform clean shutdown when EventBase gets destructed.
      
      It is useful for users that rely on EventBase lifetime, but don't have any feedback mechanism with the owner of EventBase.
      
      For instance some part of code might remain running in background on the EventBase after the main object was destroyed (e.g. it might be finalizing some async requests). In such case the original owner doesn't know that there's something still running and may try to destroy EventBase. In that case such background code will remain zombie forever.
      
      AsyncMcClient changes are presented just as an example of usage.
      
      @davejwatson, @simpkins: Could you please take a look at the proposed changes for the EventBase? If this is something not worth adding into EventBase, could you recommend a better way of doing things?
      
      Test Plan: fbmake runtests
      
      Reviewed By: alikhtarov@fb.com
      
      Subscribers: folly@lists, simpkins, davejwatson
      
      FB internal diff: D1353101
      d816ed88
    • Marcelo Juchem's avatar
      Allowing additional arguments to be passed to split_step's functor · 3ed4f961
      Marcelo Juchem authored
      Summary: more flexibility for using functors with split_step
      
      Test Plan: unit tests added + arc unit
      
      Reviewed By: ldbrandy@fb.com
      
      Subscribers: folly@lists
      
      FB internal diff: D1362644
      3ed4f961
    • Tudor Bosman's avatar
      Hasher and equality comparison for IOBuf · 867b291c
      Tudor Bosman authored
      Test Plan: test added
      
      Reviewed By: davejwatson@fb.com
      
      Subscribers: folly@lists
      
      FB internal diff: D1359469
      867b291c