1. 10 Dec, 2018 2 commits
  2. 08 Dec, 2018 2 commits
    • Krishna Kondaka's avatar
      Fix folly::json perf issue · 6d2c9612
      Krishna Kondaka authored
      Summary: Original change to folly::json as part of D13038266/ was reverted due to performance regression in Android. This is modified version to keep track of lineNum while skipping white spaces.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D13293197
      
      fbshipit-source-id: 96d07946ae7430a182ff98f6dfd6d32e3a923991
      6d2c9612
    • Dan Melnic's avatar
      Add support for EventBase::runInEventBaseThreadAlwaysEnqueue · 99cba475
      Dan Melnic authored
      Summary: Add support for EventBase::runInEventBaseThreadAlwaysEnqueue
      
      Reviewed By: yfeldblum
      
      Differential Revision: D13366773
      
      fbshipit-source-id: 72eacdbe699509d771fcefe31ee4d742eaadd4d1
      99cba475
  3. 07 Dec, 2018 7 commits
    • Petr Lapukhov's avatar
      JSON patch application method · e572a62c
      Petr Lapukhov authored
      Summary:
      Mutate supplied object in place in accordance with patch instructions. If patch fails, object may be left in partially modified state.
      
      Notice that patch application is placed in json_patch as we rely on dynamic object to store the patch itself.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D10427475
      
      fbshipit-source-id: 9ebc927c31fdf7434e69cb5c8df01c6979cab6e0
      e572a62c
    • Petr Lapukhov's avatar
      Introduce try_get_ptr() method to query elements by JSON pointer · 5824119b
      Petr Lapukhov authored
      Summary: Previously `get_ptr(json_pointer const&)` would return nullptr or throw. The new try_get_ptr version provides richer facilities: points which token caused resolution error, if any, and also provides pointer to last-known properly resolved element. This allows, for example, implementing append logic with pointers like "/foo/bar/-" if "bar" is an array. The error would return `dynamic*` for the array, allowing caller to immediately perform push operation. Consequently, the get_ptr() is now implemented in terms of `try_get_ptr`.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D10098092
      
      fbshipit-source-id: 620996a66823be661d64d39661837cedf3c24493
      5824119b
    • Petr Lapukhov's avatar
      add insert() method for dynamic::array · 1dcceaf5
      Petr Lapukhov authored
      Summary: We have insert() API for underlying object, but not the array. With array, insert() has same semantic as in std::vector, shifting elements to the right. To insert at arbitrary offset use something like `arr.insert(arr.begin() + 10, elem)`; This calls one of specializations of std::vector's insert() underneath.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D10372068
      
      fbshipit-source-id: 54bb7ea80b36bf1b893d88b82a11afa08ad0c0e2
      1dcceaf5
    • Yedidya Feldblum's avatar
      Fix some violations of -Werror=class-memaccess under gcc8 · e840c2d4
      Yedidya Feldblum authored
      Summary: Pull Request resolved: https://github.com/facebook/folly/pull/981
      
      Reviewed By: Orvid
      
      Differential Revision: D13374621
      
      Pulled By: yfeldblum
      
      fbshipit-source-id: 00665529250cd03d9ca02f72f36efe505c280aa3
      e840c2d4
    • Alexander Zhavnerchik's avatar
      Add .value() method to folly settings objects · 1d2247b4
      Alexander Zhavnerchik authored
      Summary:
      This serves two purposes:
      * unify API to be similar to folly::Optional
      * allow to pass snapshot into the getter, so snapshoted value can be fetched
        for that setting.
      
      Reviewed By: alikhtarov
      
      Differential Revision: D13116589
      
      fbshipit-source-id: e46ac1a733d0d947f2a63f25e90deba31c03223b
      1d2247b4
    • Yedidya Feldblum's avatar
      Fix some violations of -Werror=shadow=compatible-local under gcc8 · 9f80fe26
      Yedidya Feldblum authored
      Summary: Pull Request resolved: https://github.com/facebook/folly/pull/979
      
      Reviewed By: Orvid
      
      Differential Revision: D13368681
      
      Pulled By: yfeldblum
      
      fbshipit-source-id: 56c18633ddd029ee499940ce5c8b8ad2cbef4ea7
      9f80fe26
    • Leo Andrade's avatar
      Fixing minor typo in comment for initlist_construct_t · b4372011
      Leo Andrade authored
      Summary: Fixing minor typo in comment for initlist_construct_t.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D13356226
      
      fbshipit-source-id: b888c736877c57fa196bf98af87ec0473f6895f5
      b4372011
  4. 06 Dec, 2018 4 commits
  5. 05 Dec, 2018 4 commits
    • Yedidya Feldblum's avatar
      Allow StringPiece construction from string with custom allocator · f53901c9
      Yedidya Feldblum authored
      Summary: [Folly] Allow `StringPiece` construction from `string` with custom allocator.
      
      Reviewed By: nbronson
      
      Differential Revision: D9494207
      
      fbshipit-source-id: 22b6beb7e5718f69aa283431ad49dd36295e0825
      f53901c9
    • Yedidya Feldblum's avatar
      Let SingletonHolder impl be class member type · f2654daf
      Yedidya Feldblum authored
      Summary:
      [Folly] Let `SingletonHolder` impl be class member type v.s. function local type, which for arbitrary magical reasons improves rtti/debuginfo letting the debugger see the type exactly.
      
      Could also be done by extracting `SingletonHolderImpl` as a top-level type, but that would require an additional `friend` declaration and class member type works.
      
      Reviewed By: pixelb
      
      Differential Revision: D13333184
      
      fbshipit-source-id: 7de4f8c16706acb18c6869b5dcd0b9c6952efc46
      f2654daf
    • Yedidya Feldblum's avatar
      Fix ordering between FOLLY_HAS_EXCEPTIONS and kHasExceptions · 8d228ac4
      Yedidya Feldblum authored
      Summary: [Folly] Fix ordering between `FOLLY_HAS_EXCEPTIONS` and `kHasExceptions` definitions.
      
      Reviewed By: swolchok
      
      Differential Revision: D13338301
      
      fbshipit-source-id: 855dbf7ba42eb118f84ffb84d2520c7dfc49cf39
      8d228ac4
    • Phil Willoughby's avatar
      googletest's PrintTo for folly strings · d42a8052
      Phil Willoughby authored
      Summary:
      Prints StringPiece/FixedString/fbstring like a string and not like a vector of char when implicitly printed by googletest/googlemock.
      
      The order of printing precedence within googletest is:
      * ADL `PrintTo(T const&, ostream*)`
      * Gtest's container-printer for anything that looks like a container
      * ADL `ostream& operator<<(ostream&, T const&)`
      
      Unfortunately you need to include the <folly/test/TestUtils.h> header in every test to have this functionality. The googletest mechanism for overloading this means we can't do it in the main headers without introducing a dependency from them to googletest.
      
      Reviewed By: yfeldblum, luciang
      
      Differential Revision: D13306040
      
      fbshipit-source-id: 4e8252d377835dad04625d84a0cae7c0713ce8af
      d42a8052
  6. 04 Dec, 2018 5 commits
    • Dan Melnic's avatar
      Fix broken opt build due to unused var warning · 62080229
      Dan Melnic authored
      Summary: Fix broken opt build due to unused var warning
      
      Reviewed By: yfeldblum
      
      Differential Revision: D13317777
      
      fbshipit-source-id: 9e4928558e0514bdb5ab21e78b026c5c1a44a380
      62080229
    • Nathan Bronson's avatar
      refactor F14Fast so it doesn't expose F14Vector-only features · a2abde96
      Nathan Bronson authored
      Summary:
      F14FastMap heuristically selects either F14ValueMap or
      F14VectorMap at compile time (same for F14FastSet).  F14VectorMap has
      stronger iteration guarantees than the other unordered associative
      containers, including providing a reverse iterator.  This diff refactors
      F14FastMap so that even when it uses the same policy as F14VectorMap it
      doesn't expose these additional guarantees.
      
      This is a precursor to extending FOLLY_F14_PERTURB_INSERTION_ORDER to
      all F14FastMap and F14FastSet.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D13303823
      
      fbshipit-source-id: 5feea3d1f8cb809ceb2c4f79a7cc1bc7e447768f
      a2abde96
    • Andrii Grynenko's avatar
      Drop updates if value didn't change · 1cdb0342
      Andrii Grynenko authored
      Summary: If observer generator function returned the same shared_ptr it's safe to not propagate such an update.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D13249675
      
      fbshipit-source-id: 334c33e791b664eaec3c2698009f138bef04f8a6
      1cdb0342
    • Greg McGary's avatar
      Support disabling x86 static tracepoints · 7625683a
      Greg McGary authored
      Summary: Support disabling x86 static tracepoints.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D13293303
      
      fbshipit-source-id: e8578ee1d855aaf33eeacbc1e804608ab65449d5
      7625683a
    • Rachana Nandan's avatar
      add support to setReuseAddr in AsyncUDPServerSocket · e39e166b
      Rachana Nandan authored
      Summary: add an api in AsyncUDPServerSocket, to enable Address reuse
      
      Reviewed By: udippant
      
      Differential Revision: D13306371
      
      fbshipit-source-id: ac19a89af5694b181fcd7639a5d566684c2adc92
      e39e166b
  7. 03 Dec, 2018 5 commits
  8. 01 Dec, 2018 4 commits
  9. 30 Nov, 2018 4 commits
    • Subodh Iyengar's avatar
      change default for REUSEADDR to false · 21be7c3d
      Subodh Iyengar authored
      Summary:
      A default value of true for SO_REUSEADDR is dangerous.
      SO_REUSEADDR has several issues. For example if SO_REUSEADDR
      is used to bind to a socket which is already bound but not connected,
      the kernel will allow this operation to complete. This can cause overlapping
      data. https://www.spinics.net/lists/netdev/msg206437.html
      
      Looking at use cases of AsyncUDPSocket it does not look like people depend
      on this behavior of AsyncUDPSocket and this was first introduced in thrift for
      no reason.
      
      This changes the behavior back to false.
      
      Reviewed By: yfeldblum, djwatson
      
      Differential Revision: D13274704
      
      fbshipit-source-id: 391cf1bdd3f633bee38c230fcd9f1403ea950c3b
      21be7c3d
    • Nathan Bronson's avatar
      randomize folly::dynamic and most F14 map and set insert order in debug builds · 44e30c29
      Nathan Bronson authored
      Summary:
      It's easy to accidentally rely on the relationship between
      insert and iteration order in unordered containers.  This diff adds some
      randomization to the insertion order within an F14 chunk when compiled in
      debug mode.  This isn't full randomization of the order, but is enough to
      break tests that rely on the iteration order of F14 maps and sets as small
      as two elements.
      
      This diff applies randomization to folly::dynamic object, F14NodeSet,
      F14NodeMap, F14ValueSet, F14ValueMap, F14FastSet for small (< 24 bytes)
      value_type, and F14FastSet for small value_type.
      
      The long-term plan is to randomize insertion order for all F14FastSet
      and F14FastMap, leaving iteration order deterministic only for explicit
      uses of F14VectorSet and F14VectorMap.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D13099681
      
      fbshipit-source-id: 35b3174a8afbc6cef27d2080adc5a01e85154dcd
      44e30c29
    • Doron Roberts-Kedes's avatar
      DeterministicSchedule: Introduce BufferedAtomic · 140f6df7
      Doron Roberts-Kedes authored
      Summary:
      Mimic the atomic history buffers in relacy. This diff allows older values for atomics to be returned as long as the memory model is respected. Enforce the memory model with vector clocks (ThreadTimestamps).
      
      Depends on D10418223
      
      Reviewed By: djwatson
      
      Differential Revision: D10418450
      
      fbshipit-source-id: 0556259e96d512030ff9924bbd5aa0f79a38dfff
      140f6df7
    • Nathan Bronson's avatar
      fix heterogeneous lookup for non-transitive is_convertible · e1766e5e
      Nathan Bronson authored
      Summary:
      In most cases two implicit conversions can be chained to perform
      an explicit construction, but that is not the case when the intermediate
      type has a template parameter that can't be deduced. This interferes
      with heterogeneous lookup when the transparent hasher or equality functor
      work by implicit conversion to a base type (like folly::Range). This diff
      disables heteregeneous find in cases where the hash functor or equality
      functor are not invocable.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D13264397
      
      fbshipit-source-id: 082c3215e81ab58f3fa9519da872642e45b16245
      e1766e5e
  10. 29 Nov, 2018 3 commits
    • Scott Wolchok's avatar
      Don't include FBVector.h in String.h · 179e9a12
      Scott Wolchok authored
      Summary: No need for String to import fbvector.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D13007715
      
      fbshipit-source-id: c61639a04273f14dd3daf230ee6ed9ade93d058e
      179e9a12
    • Nathan Bronson's avatar
      improve sorted_vector_{map,set} compatibility with std::{map,set} · cb838d11
      Nathan Bronson authored
      Summary:
      This diff fixes a few rough edges in the folly::sorted_vector_set
      and folly::sorted_vector_map APIs. It makes the default constructor
      implicit; it adds emplace to sorted_vector_set; and it adds bulk insertion
      via std::initializer_list to sorted_vector_set and sorted_vector_map.
      This doesn't fix all incompatibilities. It also changes sorted_vector_set
      and sorted_vector_map insertion so that they do not copy a value_type
      const& argument if the key is already in the container.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D13255279
      
      fbshipit-source-id: dc5a16ea729e2a32a77f82ec0eacaeaf7854cd1a
      cb838d11
    • Andrii Grynenko's avatar
      Fix Executor::KeepAlive use in thenError · 0895c3af
      Andrii Grynenko authored
      Summary: onError destroys the Core, which holds a Executor::KeepAlive, so we have to capture it before calling onError.
      
      Differential Revision: D13250857
      
      fbshipit-source-id: 5f458765f0b8ccb225502c26413ff7bfdd46fe15
      0895c3af