react-native-windows 0.81.34 → 0.81.36

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (927) hide show
  1. package/Directory.Build.props +1 -16
  2. package/Folly/ThreadNameStub.cpp +4 -6
  3. package/Microsoft.ReactNative/Fabric/Composition/BorderPrimitive.cpp +1 -1
  4. package/Microsoft.ReactNative/Fabric/Composition/CompositionEventHandler.cpp +27 -4
  5. package/Microsoft.ReactNative/Fabric/Composition/ScrollViewComponentView.cpp +8 -4
  6. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.cpp +7 -3
  7. package/Microsoft.ReactNative/Fabric/Composition/TooltipService.cpp +48 -2
  8. package/Microsoft.ReactNative/Fabric/WindowsImageManager.cpp +40 -13
  9. package/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj +1 -7
  10. package/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj.filters +0 -3
  11. package/PropertySheets/Generated/PackageVersion.g.props +3 -3
  12. package/PropertySheets/React.Cpp.props +3 -3
  13. package/ReactCommon/ReactCommon.vcxproj +0 -10
  14. package/ReactCommon/packages.lock.win32.json +0 -10
  15. package/Scripts/Tfs/Layout-Desktop-Headers.ps1 +4 -37
  16. package/Scripts/creaternwlib.cmd +2 -2
  17. package/Shared/Shared.vcxitems +2 -0
  18. package/{Folly → external}/.clang-format +0 -1
  19. package/external/External.vcxitems +10 -0
  20. package/external/fast-float/.syncignore +10 -0
  21. package/external/fast-float/LICENSE-APACHE +190 -0
  22. package/external/fast-float/LICENSE-BOOST +23 -0
  23. package/external/fast-float/LICENSE-MIT +27 -0
  24. package/external/fast-float/README.md +545 -0
  25. package/external/fast-float/cgmanifest.json +15 -0
  26. package/external/fast-float/fast-float.vcxitems +14 -0
  27. package/external/fast-float/include/fast_float/ascii_number.h +588 -0
  28. package/external/fast-float/include/fast_float/bigint.h +638 -0
  29. package/external/fast-float/include/fast_float/constexpr_feature_detect.h +46 -0
  30. package/external/fast-float/include/fast_float/decimal_to_binary.h +212 -0
  31. package/external/fast-float/include/fast_float/digit_comparison.h +457 -0
  32. package/external/fast-float/include/fast_float/fast_float.h +59 -0
  33. package/external/fast-float/include/fast_float/fast_table.h +708 -0
  34. package/external/fast-float/include/fast_float/float_common.h +1240 -0
  35. package/external/fast-float/include/fast_float/parse_number.h +399 -0
  36. package/external/fast-float/sync-config.json +8 -0
  37. package/external/fmt/.syncignore +10 -0
  38. package/external/fmt/CONTRIBUTING.md +20 -0
  39. package/external/fmt/LICENSE +27 -0
  40. package/external/fmt/README.md +484 -0
  41. package/{fmt → external/fmt}/cgmanifest.json +1 -1
  42. package/external/fmt/doc/ChangeLog-old.md +3290 -0
  43. package/external/fmt/doc/api.md +650 -0
  44. package/external/fmt/doc/fmt.css +61 -0
  45. package/external/fmt/doc/fmt.js +4 -0
  46. package/external/fmt/doc/get-started.md +222 -0
  47. package/external/fmt/doc/index.md +151 -0
  48. package/external/fmt/doc/perf.svg +1 -0
  49. package/external/fmt/doc/python-license.txt +290 -0
  50. package/external/fmt/doc/syntax.md +887 -0
  51. package/external/fmt/fmt.vcxitems +28 -0
  52. package/external/fmt/include/fmt/args.h +228 -0
  53. package/{fmt/TEMP_UntilFmtUpdate/core.h → external/fmt/include/fmt/base.h} +1188 -1036
  54. package/external/fmt/include/fmt/chrono.h +2432 -0
  55. package/external/fmt/include/fmt/color.h +612 -0
  56. package/external/fmt/include/fmt/compile.h +529 -0
  57. package/external/fmt/include/fmt/core.h +5 -0
  58. package/external/fmt/include/fmt/format-inl.h +1928 -0
  59. package/external/fmt/include/fmt/format.h +4427 -0
  60. package/external/fmt/include/fmt/os.h +439 -0
  61. package/external/fmt/include/fmt/ostream.h +211 -0
  62. package/external/fmt/include/fmt/printf.h +656 -0
  63. package/external/fmt/include/fmt/ranges.h +882 -0
  64. package/external/fmt/include/fmt/std.h +699 -0
  65. package/external/fmt/include/fmt/xchar.h +322 -0
  66. package/external/fmt/src/fmt.cc +135 -0
  67. package/external/fmt/src/format.cc +43 -0
  68. package/external/fmt/src/os.cc +403 -0
  69. package/external/fmt/sync-config.json +8 -0
  70. package/external/folly/.syncignore +60 -0
  71. package/external/folly/LICENSE +200 -0
  72. package/external/folly/README.md +263 -0
  73. package/{fmt → external/folly/folly}/.clang-format +0 -1
  74. package/external/folly/folly/AtomicHashArray-inl.h +546 -0
  75. package/external/folly/folly/AtomicHashArray.h +431 -0
  76. package/external/folly/folly/AtomicHashMap-inl.h +653 -0
  77. package/external/folly/folly/AtomicHashMap.h +484 -0
  78. package/external/folly/folly/AtomicIntrusiveLinkedList.h +206 -0
  79. package/external/folly/folly/AtomicLinkedList.h +110 -0
  80. package/external/folly/folly/AtomicUnorderedMap.h +522 -0
  81. package/external/folly/folly/BUCK +1631 -0
  82. package/external/folly/folly/BUILD_MODE.bzl +72 -0
  83. package/external/folly/folly/Benchmark.cpp +986 -0
  84. package/external/folly/folly/Benchmark.h +680 -0
  85. package/external/folly/folly/BenchmarkUtil.h +47 -0
  86. package/external/folly/folly/Bits.h +17 -0
  87. package/external/folly/folly/CMakeLists.txt +110 -0
  88. package/external/folly/folly/CPortability.h +338 -0
  89. package/external/folly/folly/CancellationToken-inl.h +449 -0
  90. package/external/folly/folly/CancellationToken.cpp +250 -0
  91. package/external/folly/folly/CancellationToken.h +365 -0
  92. package/external/folly/folly/Chrono.h +132 -0
  93. package/external/folly/folly/ClockGettimeWrappers.cpp +93 -0
  94. package/external/folly/folly/ClockGettimeWrappers.h +29 -0
  95. package/external/folly/folly/ConcurrentBitSet.h +157 -0
  96. package/external/folly/folly/ConcurrentLazy.h +74 -0
  97. package/external/folly/folly/ConcurrentSkipList-inl.h +341 -0
  98. package/external/folly/folly/ConcurrentSkipList.h +824 -0
  99. package/external/folly/folly/ConstructorCallbackList.h +158 -0
  100. package/external/folly/folly/Conv.h +2026 -0
  101. package/external/folly/folly/CppAttributes.h +170 -0
  102. package/external/folly/folly/CpuId.h +297 -0
  103. package/external/folly/folly/DefaultKeepAliveExecutor.h +172 -0
  104. package/external/folly/folly/Demangle.cpp +255 -0
  105. package/external/folly/folly/Demangle.h +73 -0
  106. package/external/folly/folly/DiscriminatedPtr.h +236 -0
  107. package/external/folly/folly/DynamicConverter.h +17 -0
  108. package/external/folly/folly/Exception.h +150 -0
  109. package/external/folly/folly/ExceptionString.cpp +51 -0
  110. package/external/folly/folly/ExceptionString.h +33 -0
  111. package/external/folly/folly/ExceptionWrapper-inl.h +264 -0
  112. package/external/folly/folly/ExceptionWrapper.cpp +37 -0
  113. package/external/folly/folly/ExceptionWrapper.h +377 -0
  114. package/external/folly/folly/Executor.cpp +111 -0
  115. package/external/folly/folly/Executor.h +351 -0
  116. package/external/folly/folly/Expected.h +1725 -0
  117. package/external/folly/folly/FBString.h +2888 -0
  118. package/external/folly/folly/FBVector.h +17 -0
  119. package/external/folly/folly/File.cpp +180 -0
  120. package/external/folly/folly/File.h +177 -0
  121. package/external/folly/folly/FileUtil.cpp +378 -0
  122. package/external/folly/folly/FileUtil.h +332 -0
  123. package/external/folly/folly/Fingerprint.cpp +135 -0
  124. package/external/folly/folly/Fingerprint.h +289 -0
  125. package/external/folly/folly/FixedString.h +2965 -0
  126. package/external/folly/folly/FollyMemcpy.cpp +30 -0
  127. package/external/folly/folly/FollyMemcpy.h +23 -0
  128. package/external/folly/folly/FollyMemset.cpp +29 -0
  129. package/external/folly/folly/FollyMemset.h +25 -0
  130. package/external/folly/folly/Format-inl.h +1152 -0
  131. package/external/folly/folly/Format.cpp +429 -0
  132. package/external/folly/folly/Format.h +463 -0
  133. package/external/folly/folly/FormatArg.h +285 -0
  134. package/external/folly/folly/FormatTraits.h +65 -0
  135. package/external/folly/folly/Function.h +1159 -0
  136. package/external/folly/folly/GLog.h +85 -0
  137. package/external/folly/folly/GroupVarint.cpp +153 -0
  138. package/external/folly/folly/GroupVarint.h +630 -0
  139. package/external/folly/folly/Hash.h +20 -0
  140. package/external/folly/folly/IPAddress.cpp +490 -0
  141. package/external/folly/folly/IPAddress.h +667 -0
  142. package/external/folly/folly/IPAddressException.h +82 -0
  143. package/external/folly/folly/IPAddressV4.cpp +305 -0
  144. package/external/folly/folly/IPAddressV4.h +495 -0
  145. package/external/folly/folly/IPAddressV6.cpp +541 -0
  146. package/external/folly/folly/IPAddressV6.h +627 -0
  147. package/external/folly/folly/Indestructible.h +164 -0
  148. package/external/folly/folly/IndexedMemPool.h +550 -0
  149. package/external/folly/folly/IntrusiveList.h +17 -0
  150. package/external/folly/folly/Lazy.h +142 -0
  151. package/external/folly/folly/Likely.h +76 -0
  152. package/external/folly/folly/MPMCPipeline.h +280 -0
  153. package/external/folly/folly/MPMCQueue.h +1556 -0
  154. package/external/folly/folly/MacAddress.cpp +188 -0
  155. package/external/folly/folly/MacAddress.h +260 -0
  156. package/external/folly/folly/MapUtil.h +17 -0
  157. package/external/folly/folly/Math.h +258 -0
  158. package/external/folly/folly/MaybeManagedPtr.h +120 -0
  159. package/external/folly/folly/Memory.h +900 -0
  160. package/external/folly/folly/MicroLock.cpp +76 -0
  161. package/external/folly/folly/MicroLock.h +354 -0
  162. package/external/folly/folly/MicroSpinLock.h +17 -0
  163. package/external/folly/folly/MoveWrapper.h +76 -0
  164. package/external/folly/folly/ObserverContainer.h +1026 -0
  165. package/external/folly/folly/Optional.h +743 -0
  166. package/external/folly/folly/Overload.h +325 -0
  167. package/external/folly/folly/PackedSyncPtr.h +147 -0
  168. package/external/folly/folly/Padded.h +464 -0
  169. package/external/folly/folly/Poly-inl.h +230 -0
  170. package/external/folly/folly/Poly.h +1095 -0
  171. package/external/folly/folly/PolyException.h +43 -0
  172. package/external/folly/folly/Portability.h +644 -0
  173. package/external/folly/folly/Preprocessor.h +236 -0
  174. package/external/folly/folly/ProducerConsumerQueue.h +182 -0
  175. package/external/folly/folly/RWSpinLock.h +17 -0
  176. package/external/folly/folly/Random-inl.h +86 -0
  177. package/external/folly/folly/Random.cpp +184 -0
  178. package/external/folly/folly/Random.h +434 -0
  179. package/external/folly/folly/Range.h +1772 -0
  180. package/external/folly/folly/Replaceable.h +636 -0
  181. package/external/folly/folly/ScopeGuard.cpp +29 -0
  182. package/external/folly/folly/ScopeGuard.h +420 -0
  183. package/external/folly/folly/SharedMutex.cpp +81 -0
  184. package/external/folly/folly/SharedMutex.h +1751 -0
  185. package/external/folly/folly/Singleton-inl.h +332 -0
  186. package/external/folly/folly/Singleton.cpp +512 -0
  187. package/external/folly/folly/Singleton.h +891 -0
  188. package/external/folly/folly/SingletonThreadLocal.cpp +53 -0
  189. package/external/folly/folly/SingletonThreadLocal.h +263 -0
  190. package/external/folly/folly/SocketAddress.cpp +786 -0
  191. package/external/folly/folly/SocketAddress.h +768 -0
  192. package/external/folly/folly/SpinLock.h +55 -0
  193. package/external/folly/folly/String-inl.h +668 -0
  194. package/external/folly/folly/String.cpp +777 -0
  195. package/external/folly/folly/String.h +767 -0
  196. package/external/folly/folly/Subprocess.cpp +1142 -0
  197. package/external/folly/folly/Subprocess.h +1055 -0
  198. package/external/folly/folly/Synchronized.h +1833 -0
  199. package/external/folly/folly/SynchronizedPtr.h +106 -0
  200. package/external/folly/folly/ThreadCachedInt.h +175 -0
  201. package/external/folly/folly/ThreadLocal.h +478 -0
  202. package/external/folly/folly/TimeoutQueue.cpp +78 -0
  203. package/external/folly/folly/TimeoutQueue.h +123 -0
  204. package/external/folly/folly/TokenBucket.h +673 -0
  205. package/external/folly/folly/Traits.h +1442 -0
  206. package/external/folly/folly/Try-inl.h +372 -0
  207. package/external/folly/folly/Try.cpp +23 -0
  208. package/external/folly/folly/Try.h +728 -0
  209. package/external/folly/folly/UTF8String.h +56 -0
  210. package/external/folly/folly/Unicode.cpp +201 -0
  211. package/external/folly/folly/Unicode.h +94 -0
  212. package/external/folly/folly/Unit.h +65 -0
  213. package/external/folly/folly/Uri-inl.h +101 -0
  214. package/external/folly/folly/Uri.cpp +190 -0
  215. package/external/folly/folly/Uri.h +142 -0
  216. package/external/folly/folly/Utility.h +932 -0
  217. package/external/folly/folly/VERSION +1 -0
  218. package/external/folly/folly/Varint.h +230 -0
  219. package/external/folly/folly/VirtualExecutor.h +17 -0
  220. package/external/folly/folly/algorithm/simd/BUCK +47 -0
  221. package/external/folly/folly/algorithm/simd/Contains.cpp +42 -0
  222. package/external/folly/folly/algorithm/simd/Contains.h +116 -0
  223. package/external/folly/folly/algorithm/simd/FindFixed.h +301 -0
  224. package/external/folly/folly/algorithm/simd/Ignore.h +52 -0
  225. package/external/folly/folly/algorithm/simd/Movemask.h +207 -0
  226. package/external/folly/folly/algorithm/simd/detail/BUCK +70 -0
  227. package/external/folly/folly/algorithm/simd/detail/ContainsImpl.h +91 -0
  228. package/external/folly/folly/algorithm/simd/detail/SimdAnyOf.h +83 -0
  229. package/external/folly/folly/algorithm/simd/detail/SimdForEach.h +209 -0
  230. package/external/folly/folly/algorithm/simd/detail/SimdPlatform.h +445 -0
  231. package/external/folly/folly/algorithm/simd/detail/Traits.h +125 -0
  232. package/external/folly/folly/algorithm/simd/detail/UnrollUtils.h +126 -0
  233. package/external/folly/folly/base64.h +264 -0
  234. package/external/folly/folly/chrono/BUCK +29 -0
  235. package/external/folly/folly/chrono/Clock.h +65 -0
  236. package/external/folly/folly/chrono/Conv.h +712 -0
  237. package/external/folly/folly/chrono/test/BUCK +26 -0
  238. package/external/folly/folly/chrono/test/ClockTest.cpp +68 -0
  239. package/external/folly/folly/chrono/test/ConvTest.cpp +652 -0
  240. package/external/folly/folly/concurrency/AtomicSharedPtr.h +387 -0
  241. package/external/folly/folly/concurrency/BUCK +170 -0
  242. package/external/folly/folly/concurrency/CacheLocality.h +460 -0
  243. package/external/folly/folly/concurrency/ConcurrentHashMap.h +822 -0
  244. package/external/folly/folly/concurrency/CoreCachedSharedPtr.h +232 -0
  245. package/external/folly/folly/concurrency/DeadlockDetector.cpp +27 -0
  246. package/external/folly/folly/concurrency/DeadlockDetector.h +44 -0
  247. package/external/folly/folly/concurrency/DynamicBoundedQueue.h +751 -0
  248. package/external/folly/folly/concurrency/PriorityUnboundedQueueSet.h +207 -0
  249. package/external/folly/folly/concurrency/ProcessLocalUniqueId.cpp +46 -0
  250. package/external/folly/folly/concurrency/ProcessLocalUniqueId.h +38 -0
  251. package/external/folly/folly/concurrency/SingletonRelaxedCounter.h +325 -0
  252. package/external/folly/folly/concurrency/ThreadCachedSynchronized.h +227 -0
  253. package/external/folly/folly/concurrency/UnboundedQueue.h +891 -0
  254. package/external/folly/folly/concurrency/container/BUCK +77 -0
  255. package/external/folly/folly/concurrency/container/FlatCombiningPriorityQueue.h +426 -0
  256. package/external/folly/folly/concurrency/container/LockFreeRingBuffer.h +306 -0
  257. package/external/folly/folly/concurrency/container/RelaxedConcurrentPriorityQueue.h +1212 -0
  258. package/external/folly/folly/concurrency/container/SingleWriterFixedHashMap.h +322 -0
  259. package/external/folly/folly/concurrency/container/atomic_grow_array.h +564 -0
  260. package/external/folly/folly/concurrency/container/test/BUCK +75 -0
  261. package/external/folly/folly/concurrency/container/test/FlatCombiningPriorityQueueTest.cpp +570 -0
  262. package/external/folly/folly/concurrency/container/test/LockFreeRingBufferTest.cpp +276 -0
  263. package/external/folly/folly/concurrency/container/test/RelaxedConcurrentPriorityQueueTest.cpp +1570 -0
  264. package/external/folly/folly/concurrency/container/test/SingleWriterFixedHashMapTest.cpp +401 -0
  265. package/external/folly/folly/concurrency/container/test/atomic_grow_array_test.cpp +187 -0
  266. package/external/folly/folly/concurrency/detail/AtomicSharedPtr-detail.h +212 -0
  267. package/external/folly/folly/concurrency/detail/ConcurrentHashMap-detail.h +1911 -0
  268. package/external/folly/folly/concurrency/memory/AtomicReadMostlyMainPtr.cpp +43 -0
  269. package/external/folly/folly/concurrency/memory/AtomicReadMostlyMainPtr.h +190 -0
  270. package/external/folly/folly/concurrency/memory/BUCK +53 -0
  271. package/external/folly/folly/concurrency/memory/PrimaryPtr.h +338 -0
  272. package/external/folly/folly/concurrency/memory/ReadMostlySharedPtr.h +511 -0
  273. package/external/folly/folly/concurrency/memory/TLRefCount.h +228 -0
  274. package/external/folly/folly/concurrency/memory/test/AtomicReadMostlyMainPtrBenchmark.cpp +56 -0
  275. package/external/folly/folly/concurrency/memory/test/AtomicReadMostlyMainPtrTest.cpp +454 -0
  276. package/external/folly/folly/concurrency/memory/test/BUCK +95 -0
  277. package/external/folly/folly/concurrency/memory/test/PrimaryPtrTest.cpp +303 -0
  278. package/external/folly/folly/concurrency/memory/test/ReadMostlySharedPtrBenchmark.cpp +138 -0
  279. package/external/folly/folly/concurrency/memory/test/ReadMostlySharedPtrStressTest.cpp +75 -0
  280. package/external/folly/folly/concurrency/memory/test/ReadMostlySharedPtrTest.cpp +378 -0
  281. package/external/folly/folly/concurrency/memory/test/RefCountBenchmark.cpp +90 -0
  282. package/external/folly/folly/concurrency/memory/test/RefCountTest.cpp +168 -0
  283. package/external/folly/folly/concurrency/test/AtomicSharedPtrCounted.h +156 -0
  284. package/external/folly/folly/concurrency/test/AtomicSharedPtrPerformance.cpp +255 -0
  285. package/external/folly/folly/concurrency/test/AtomicSharedPtrTest.cpp +257 -0
  286. package/external/folly/folly/concurrency/test/BUCK +229 -0
  287. package/external/folly/folly/concurrency/test/CacheLocalityBenchmark.cpp +392 -0
  288. package/external/folly/folly/concurrency/test/CacheLocalityTest.cpp +1229 -0
  289. package/external/folly/folly/concurrency/test/ConcurrentHashMapBench.cpp +260 -0
  290. package/external/folly/folly/concurrency/test/ConcurrentHashMapTest.cpp +1242 -0
  291. package/external/folly/folly/concurrency/test/CoreCachedSharedPtrTest.cpp +408 -0
  292. package/external/folly/folly/concurrency/test/DynamicBoundedQueueTest.cpp +984 -0
  293. package/external/folly/folly/concurrency/test/PriorityUnboundedQueueSetTest.cpp +73 -0
  294. package/external/folly/folly/concurrency/test/ProcessLocalUniqueIdTest.cpp +66 -0
  295. package/external/folly/folly/concurrency/test/SingletonRelaxedCounterBench.cpp +101 -0
  296. package/external/folly/folly/concurrency/test/SingletonRelaxedCounterTest.cpp +185 -0
  297. package/external/folly/folly/concurrency/test/ThreadCachedSynchronizedBench.cpp +76 -0
  298. package/external/folly/folly/concurrency/test/ThreadCachedSynchronizedTest.cpp +93 -0
  299. package/external/folly/folly/concurrency/test/UnboundedQueueTest.cpp +1302 -0
  300. package/external/folly/folly/container/Access.h +57 -0
  301. package/external/folly/folly/container/Array.h +87 -0
  302. package/external/folly/folly/container/BUCK +353 -0
  303. package/external/folly/folly/container/BitIterator.h +203 -0
  304. package/external/folly/folly/container/Enumerate.h +162 -0
  305. package/external/folly/folly/container/EvictingCacheMap.h +730 -0
  306. package/external/folly/folly/container/F14.md +300 -0
  307. package/external/folly/folly/container/F14Map-fwd.h +113 -0
  308. package/external/folly/folly/container/F14Map.h +2108 -0
  309. package/external/folly/folly/container/F14Set-fwd.h +95 -0
  310. package/external/folly/folly/container/F14Set.h +1603 -0
  311. package/external/folly/folly/container/FBVector.h +1711 -0
  312. package/external/folly/folly/container/Foreach-inl.h +316 -0
  313. package/external/folly/folly/container/Foreach.h +209 -0
  314. package/external/folly/folly/container/HeterogeneousAccess-fwd.h +33 -0
  315. package/external/folly/folly/container/HeterogeneousAccess.h +171 -0
  316. package/external/folly/folly/container/IntrusiveHeap.h +268 -0
  317. package/external/folly/folly/container/IntrusiveList.h +131 -0
  318. package/external/folly/folly/container/Iterator.h +843 -0
  319. package/external/folly/folly/container/MapUtil.h +376 -0
  320. package/external/folly/folly/container/Merge.h +90 -0
  321. package/external/folly/folly/container/RegexMatchCache.cpp +521 -0
  322. package/external/folly/folly/container/RegexMatchCache.h +699 -0
  323. package/external/folly/folly/container/Reserve.h +109 -0
  324. package/external/folly/folly/container/SparseByteSet.h +123 -0
  325. package/external/folly/folly/container/View.h +81 -0
  326. package/external/folly/folly/container/WeightedEvictingCacheMap.h +651 -0
  327. package/external/folly/folly/container/detail/BUCK +115 -0
  328. package/external/folly/folly/container/detail/BitIteratorDetail.h +87 -0
  329. package/external/folly/folly/container/detail/F14Defaults.h +34 -0
  330. package/external/folly/folly/container/detail/F14IntrinsicsAvailability.h +67 -0
  331. package/external/folly/folly/container/detail/F14MapFallback.h +717 -0
  332. package/external/folly/folly/container/detail/F14Mask.h +235 -0
  333. package/external/folly/folly/container/detail/F14Policy.h +1523 -0
  334. package/external/folly/folly/container/detail/F14SetFallback.h +528 -0
  335. package/external/folly/folly/container/detail/F14Table.cpp +71 -0
  336. package/external/folly/folly/container/detail/F14Table.h +2680 -0
  337. package/external/folly/folly/container/detail/Util.h +303 -0
  338. package/external/folly/folly/container/detail/tape_detail.h +135 -0
  339. package/external/folly/folly/container/detail/test/BUCK +14 -0
  340. package/external/folly/folly/container/detail/test/F14DetailTest.cpp +47 -0
  341. package/external/folly/folly/container/heap_vector_types.h +1683 -0
  342. package/external/folly/folly/container/range_traits.h +81 -0
  343. package/external/folly/folly/container/small_vector.h +1476 -0
  344. package/external/folly/folly/container/sorted_vector_types.h +1652 -0
  345. package/external/folly/folly/container/span.h +408 -0
  346. package/external/folly/folly/container/tape.h +608 -0
  347. package/external/folly/folly/container/test/.clang-tidy +12 -0
  348. package/external/folly/folly/container/test/AccessTest.cpp +138 -0
  349. package/external/folly/folly/container/test/ArrayTest.cpp +84 -0
  350. package/external/folly/folly/container/test/BUCK +568 -0
  351. package/external/folly/folly/container/test/BitIteratorBench.cpp +112 -0
  352. package/external/folly/folly/container/test/BitIteratorTest.cpp +109 -0
  353. package/external/folly/folly/container/test/EnumerateTest.cpp +294 -0
  354. package/external/folly/folly/container/test/EvictingCacheMapBench.cpp +80 -0
  355. package/external/folly/folly/container/test/EvictingCacheMapTest.cpp +842 -0
  356. package/external/folly/folly/container/test/F14AsanSupportTest.cpp +143 -0
  357. package/external/folly/folly/container/test/F14FwdTest.cpp +37 -0
  358. package/external/folly/folly/container/test/F14InterprocessTest.cpp +404 -0
  359. package/external/folly/folly/container/test/F14MapTest.cpp +2543 -0
  360. package/external/folly/folly/container/test/F14PolicyTest.cpp +49 -0
  361. package/external/folly/folly/container/test/F14SetTest.cpp +1738 -0
  362. package/external/folly/folly/container/test/F14SmallOverheads.cpp +215 -0
  363. package/external/folly/folly/container/test/F14TestUtil.h +117 -0
  364. package/external/folly/folly/container/test/FBVectorBenchmark.cpp +380 -0
  365. package/external/folly/folly/container/test/FBVectorBenchmarks.cpp.h +100 -0
  366. package/external/folly/folly/container/test/FBVectorTest.cpp +326 -0
  367. package/external/folly/folly/container/test/FBVectorTests.cpp.h +304 -0
  368. package/external/folly/folly/container/test/ForeachBenchmark.cpp +388 -0
  369. package/external/folly/folly/container/test/ForeachTest.cpp +338 -0
  370. package/external/folly/folly/container/test/HashMapsBench.cpp +458 -0
  371. package/external/folly/folly/container/test/HeterogeneousAccessTest.cpp +242 -0
  372. package/external/folly/folly/container/test/IntrusiveHeapTest.cpp +262 -0
  373. package/external/folly/folly/container/test/IteratorTest.cpp +989 -0
  374. package/external/folly/folly/container/test/MapUtilTest.cpp +365 -0
  375. package/external/folly/folly/container/test/MergeTest.cpp +66 -0
  376. package/external/folly/folly/container/test/RegexMatchCacheTest.cpp +634 -0
  377. package/external/folly/folly/container/test/ReserveTest.cpp +173 -0
  378. package/external/folly/folly/container/test/SparseByteSetBenchmark.cpp +153 -0
  379. package/external/folly/folly/container/test/SparseByteSetTest.cpp +117 -0
  380. package/external/folly/folly/container/test/TrackingTypes.h +584 -0
  381. package/external/folly/folly/container/test/UtilTest.cpp +609 -0
  382. package/external/folly/folly/container/test/WeightedEvictingCacheMapTest.cpp +800 -0
  383. package/external/folly/folly/container/test/heap_vector_types_test.cpp +1774 -0
  384. package/external/folly/folly/container/test/range_traits_test.cpp +59 -0
  385. package/external/folly/folly/container/test/small_vector_test.cpp +1571 -0
  386. package/external/folly/folly/container/test/sorted_vector_test.cpp +1589 -0
  387. package/external/folly/folly/container/test/span_test.cpp +520 -0
  388. package/external/folly/folly/container/test/tape_bench.cpp +200 -0
  389. package/external/folly/folly/container/test/tape_test.cpp +590 -0
  390. package/external/folly/folly/defs.bzl +238 -0
  391. package/external/folly/folly/detail/AsyncTrace.cpp +36 -0
  392. package/external/folly/folly/detail/AsyncTrace.h +44 -0
  393. package/external/folly/folly/detail/AtomicHashUtils.h +42 -0
  394. package/external/folly/folly/detail/AtomicUnorderedMapUtils.h +80 -0
  395. package/external/folly/folly/detail/BUCK +406 -0
  396. package/external/folly/folly/detail/DiscriminatedPtrDetail.h +172 -0
  397. package/external/folly/folly/detail/FileUtilDetail.cpp +63 -0
  398. package/external/folly/folly/detail/FileUtilDetail.h +85 -0
  399. package/external/folly/folly/detail/FileUtilVectorDetail.h +81 -0
  400. package/external/folly/folly/detail/FingerprintPolynomial.h +132 -0
  401. package/external/folly/folly/detail/Futex-inl.h +123 -0
  402. package/external/folly/folly/detail/Futex.cpp +273 -0
  403. package/external/folly/folly/detail/Futex.h +109 -0
  404. package/external/folly/folly/detail/GroupVarintDetail.h +101 -0
  405. package/external/folly/folly/detail/IPAddress.cpp +37 -0
  406. package/external/folly/folly/detail/IPAddress.h +57 -0
  407. package/external/folly/folly/detail/IPAddressSource.h +278 -0
  408. package/external/folly/folly/detail/Iterators.h +156 -0
  409. package/external/folly/folly/detail/MPMCPipelineDetail.h +122 -0
  410. package/external/folly/folly/detail/MemoryIdler.cpp +233 -0
  411. package/external/folly/folly/detail/MemoryIdler.h +216 -0
  412. package/external/folly/folly/detail/PerfScoped.cpp +112 -0
  413. package/external/folly/folly/detail/PerfScoped.h +70 -0
  414. package/external/folly/folly/detail/PolyDetail.h +921 -0
  415. package/external/folly/folly/detail/RangeCommon.cpp +55 -0
  416. package/external/folly/folly/detail/RangeCommon.h +93 -0
  417. package/external/folly/folly/detail/RangeSse42.cpp +198 -0
  418. package/external/folly/folly/detail/RangeSse42.h +30 -0
  419. package/external/folly/folly/detail/SimpleSimdStringUtils.cpp +31 -0
  420. package/external/folly/folly/detail/SimpleSimdStringUtils.h +27 -0
  421. package/external/folly/folly/detail/SimpleSimdStringUtilsImpl.h +63 -0
  422. package/external/folly/folly/detail/Singleton.h +34 -0
  423. package/external/folly/folly/detail/SlowFingerprint.h +90 -0
  424. package/external/folly/folly/detail/SocketFastOpen.cpp +175 -0
  425. package/external/folly/folly/detail/SocketFastOpen.h +89 -0
  426. package/external/folly/folly/detail/SplitStringSimd.cpp +84 -0
  427. package/external/folly/folly/detail/SplitStringSimd.h +151 -0
  428. package/external/folly/folly/detail/SplitStringSimdImpl.h +149 -0
  429. package/external/folly/folly/detail/Sse.cpp +35 -0
  430. package/external/folly/folly/detail/Sse.h +45 -0
  431. package/external/folly/folly/detail/StaticSingletonManager.cpp +119 -0
  432. package/external/folly/folly/detail/StaticSingletonManager.h +298 -0
  433. package/external/folly/folly/detail/ThreadLocalDetail.cpp +492 -0
  434. package/external/folly/folly/detail/ThreadLocalDetail.h +800 -0
  435. package/external/folly/folly/detail/TrapOnAvx512.cpp +41 -0
  436. package/external/folly/folly/detail/TrapOnAvx512.h +21 -0
  437. package/external/folly/folly/detail/TurnSequencer.h +295 -0
  438. package/external/folly/folly/detail/TypeList.h +551 -0
  439. package/external/folly/folly/detail/UniqueInstance.cpp +136 -0
  440. package/external/folly/folly/detail/UniqueInstance.h +68 -0
  441. package/external/folly/folly/detail/base64_detail/BUCK +102 -0
  442. package/external/folly/folly/detail/base64_detail/Base64Api.cpp +40 -0
  443. package/external/folly/folly/detail/base64_detail/Base64Api.h +101 -0
  444. package/external/folly/folly/detail/base64_detail/Base64Common.h +80 -0
  445. package/external/folly/folly/detail/base64_detail/Base64Constants.h +79 -0
  446. package/external/folly/folly/detail/base64_detail/Base64HiddenConstants.h +129 -0
  447. package/external/folly/folly/detail/base64_detail/Base64SWAR.cpp +161 -0
  448. package/external/folly/folly/detail/base64_detail/Base64SWAR.h +32 -0
  449. package/external/folly/folly/detail/base64_detail/Base64Scalar.h +262 -0
  450. package/external/folly/folly/detail/base64_detail/Base64Simd.h +102 -0
  451. package/external/folly/folly/detail/base64_detail/Base64_SSE4_2.cpp +42 -0
  452. package/external/folly/folly/detail/base64_detail/Base64_SSE4_2.h +33 -0
  453. package/external/folly/folly/detail/base64_detail/Base64_SSE4_2_Platform.h +167 -0
  454. package/external/folly/folly/detail/base64_detail/README.md +392 -0
  455. package/external/folly/folly/detail/base64_detail/tests/BUCK +36 -0
  456. package/external/folly/folly/detail/base64_detail/tests/Base64AgainstScalarTest.cpp +141 -0
  457. package/external/folly/folly/detail/base64_detail/tests/Base64PlatformTest.cpp +273 -0
  458. package/external/folly/folly/detail/base64_detail/tests/Base64SpecialCasesTest.cpp +555 -0
  459. package/external/folly/folly/detail/test/AsyncTraceTest.cpp +43 -0
  460. package/external/folly/folly/detail/test/BUCK +118 -0
  461. package/external/folly/folly/detail/test/FileUtilDetailTest.cpp +56 -0
  462. package/external/folly/folly/detail/test/PerfScopedTest.cpp +107 -0
  463. package/external/folly/folly/detail/test/SimpleSimdStringUtilsTest.cpp +92 -0
  464. package/external/folly/folly/detail/test/SplitStringSimdTest.cpp +242 -0
  465. package/external/folly/folly/detail/test/StaticSingletonManagerTest.cpp +121 -0
  466. package/external/folly/folly/detail/test/ThreadLocalBenchmark.cpp +116 -0
  467. package/external/folly/folly/detail/test/ThreadLocalDetailTest.cpp +194 -0
  468. package/external/folly/folly/detail/test/TrapOnAvx512TestNegative.cpp +29 -0
  469. package/external/folly/folly/detail/test/UniqueInstanceTest.cpp +60 -0
  470. package/external/folly/folly/detail/thread_local_globals.cpp +69 -0
  471. package/external/folly/folly/detail/thread_local_globals.h +36 -0
  472. package/external/folly/folly/docs/AtomicHashMap.md +134 -0
  473. package/external/folly/folly/docs/Benchmark.md +310 -0
  474. package/external/folly/folly/docs/Conv.md +291 -0
  475. package/external/folly/folly/docs/Dynamic.md +220 -0
  476. package/external/folly/folly/docs/DynamicConverter.md +71 -0
  477. package/external/folly/folly/docs/Executors.md +63 -0
  478. package/external/folly/folly/docs/FBString.md +46 -0
  479. package/external/folly/folly/docs/FBVector.md +200 -0
  480. package/external/folly/folly/docs/Fbvector--graphical_solutions.png +0 -0
  481. package/external/folly/folly/docs/Format.md +177 -0
  482. package/external/folly/folly/docs/Function.md +92 -0
  483. package/external/folly/folly/docs/Futures.md +263 -0
  484. package/external/folly/folly/docs/GroupVarint.md +46 -0
  485. package/external/folly/folly/docs/Histogram.md +104 -0
  486. package/external/folly/folly/docs/MapUtils.md +80 -0
  487. package/external/folly/folly/docs/Overview.md +263 -0
  488. package/external/folly/folly/docs/PackedSyncPtr.md +77 -0
  489. package/external/folly/folly/docs/Poly.md +500 -0
  490. package/external/folly/folly/docs/ProducerConsumerQueue.md +82 -0
  491. package/external/folly/folly/docs/Rcu.md +218 -0
  492. package/external/folly/folly/docs/SmallLocks.md +24 -0
  493. package/external/folly/folly/docs/Synchronized.md +793 -0
  494. package/external/folly/folly/docs/ThreadCachedInt.md +98 -0
  495. package/external/folly/folly/docs/ThreadLocal.md +105 -0
  496. package/external/folly/folly/docs/Traits.md +161 -0
  497. package/external/folly/folly/docs/small_vector.md +64 -0
  498. package/external/folly/folly/docs/style.css +23 -0
  499. package/external/folly/folly/dynamic-inl.h +17 -0
  500. package/external/folly/folly/dynamic.h +17 -0
  501. package/external/folly/folly/folly_extended_library.bzl +28 -0
  502. package/external/folly/folly/functional/ApplyTuple.h +204 -0
  503. package/external/folly/folly/functional/BUCK +57 -0
  504. package/external/folly/folly/functional/Invoke.h +880 -0
  505. package/external/folly/folly/functional/Partial.h +130 -0
  506. package/external/folly/folly/functional/protocol.h +203 -0
  507. package/external/folly/folly/functional/test/ApplyTupleTest.cpp +549 -0
  508. package/external/folly/folly/functional/test/BUCK +57 -0
  509. package/external/folly/folly/functional/test/InvokeTest.cpp +483 -0
  510. package/external/folly/folly/functional/test/PartialTest.cpp +141 -0
  511. package/external/folly/folly/functional/test/protocol_test.cpp +177 -0
  512. package/external/folly/folly/functional/test/traits_test.cpp +551 -0
  513. package/external/folly/folly/functional/traits.h +675 -0
  514. package/external/folly/folly/hash/BUCK +86 -0
  515. package/external/folly/folly/hash/Checksum.cpp +275 -0
  516. package/external/folly/folly/hash/Checksum.h +94 -0
  517. package/external/folly/folly/hash/FarmHash.h +46 -0
  518. package/external/folly/folly/hash/Hash.h +1045 -0
  519. package/external/folly/folly/hash/MurmurHash.h +86 -0
  520. package/external/folly/folly/hash/SpookyHashV1.cpp +391 -0
  521. package/external/folly/folly/hash/SpookyHashV1.h +307 -0
  522. package/external/folly/folly/hash/SpookyHashV2.cpp +392 -0
  523. package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/hash/SpookyHashV2.h +6 -1
  524. package/external/folly/folly/hash/detail/BUCK +26 -0
  525. package/external/folly/folly/hash/detail/ChecksumDetail.cpp +296 -0
  526. package/external/folly/folly/hash/detail/ChecksumDetail.h +137 -0
  527. package/external/folly/folly/hash/detail/Crc32CombineDetail.cpp +191 -0
  528. package/external/folly/folly/hash/detail/Crc32cDetail.cpp +303 -0
  529. package/external/folly/folly/hash/test/BUCK +132 -0
  530. package/external/folly/folly/hash/test/ChecksumBenchmark.cpp +91 -0
  531. package/external/folly/folly/hash/test/ChecksumTest.cpp +587 -0
  532. package/external/folly/folly/hash/test/FarmHashTest.cpp +41 -0
  533. package/external/folly/folly/hash/test/HashBenchmark.cpp +238 -0
  534. package/external/folly/folly/hash/test/HashTest.cpp +997 -0
  535. package/external/folly/folly/hash/test/MurmurHashTest.cpp +76 -0
  536. package/external/folly/folly/hash/test/SpookyHashV1Test.cpp +559 -0
  537. package/external/folly/folly/hash/test/SpookyHashV2Test.cpp +549 -0
  538. package/external/folly/folly/hash/test/traits_test.cpp +69 -0
  539. package/external/folly/folly/hash/traits.h +115 -0
  540. package/external/folly/folly/json/BUCK +155 -0
  541. package/external/folly/folly/json/DynamicConverter.h +464 -0
  542. package/external/folly/folly/json/DynamicParser-inl.h +316 -0
  543. package/external/folly/folly/json/DynamicParser.cpp +198 -0
  544. package/external/folly/folly/json/DynamicParser.h +394 -0
  545. package/external/folly/folly/json/JSONSchema.cpp +1030 -0
  546. package/external/folly/folly/json/JSONSchema.h +73 -0
  547. package/external/folly/folly/json/JsonMockUtil.h +73 -0
  548. package/external/folly/folly/json/JsonTestUtil.cpp +167 -0
  549. package/external/folly/folly/json/JsonTestUtil.h +88 -0
  550. package/external/folly/folly/json/bser/BUCK +24 -0
  551. package/external/folly/folly/json/bser/Bser.h +107 -0
  552. package/external/folly/folly/json/bser/Dump.cpp +253 -0
  553. package/external/folly/folly/json/bser/Load.cpp +246 -0
  554. package/external/folly/folly/json/bser/test/BUCK +14 -0
  555. package/external/folly/folly/json/bser/test/BserTest.cpp +149 -0
  556. package/external/folly/folly/json/dynamic.cpp +552 -0
  557. package/external/folly/folly/json/dynamic.h +1346 -0
  558. package/external/folly/folly/json/json.h +238 -0
  559. package/external/folly/folly/json/json_patch.cpp +325 -0
  560. package/external/folly/folly/json/json_patch.h +126 -0
  561. package/external/folly/folly/json/json_pointer.cpp +114 -0
  562. package/external/folly/folly/json/json_pointer.h +87 -0
  563. package/external/folly/folly/json/test/BUCK +147 -0
  564. package/external/folly/folly/json/test/DynamicBenchmark.cpp +146 -0
  565. package/external/folly/folly/json/test/DynamicConverterTest.cpp +518 -0
  566. package/external/folly/folly/json/test/DynamicOtherTest.cpp +344 -0
  567. package/external/folly/folly/json/test/DynamicParserTest.cpp +443 -0
  568. package/external/folly/folly/json/test/DynamicTest.cpp +1647 -0
  569. package/external/folly/folly/json/test/JSONSchemaTest.cpp +450 -0
  570. package/external/folly/folly/json/test/JsonBenchmark.cpp +264 -0
  571. package/external/folly/folly/json/test/JsonOtherTest.cpp +51 -0
  572. package/external/folly/folly/json/test/JsonTest.cpp +1153 -0
  573. package/external/folly/folly/json/test/JsonTestUtilTest.cpp +97 -0
  574. package/external/folly/folly/json/test/json_patch_test.cpp +361 -0
  575. package/external/folly/folly/json/test/json_pointer_test.cpp +58 -0
  576. package/external/folly/folly/json/tool/BUCK +13 -0
  577. package/external/folly/folly/json/tool/JSONSchemaTester.cpp +58 -0
  578. package/external/folly/folly/json.h +17 -0
  579. package/external/folly/folly/json_patch.h +17 -0
  580. package/external/folly/folly/json_pointer.h +17 -0
  581. package/external/folly/folly/lang/Access.h +29 -0
  582. package/external/folly/folly/lang/Align.h +240 -0
  583. package/external/folly/folly/lang/Aligned.h +92 -0
  584. package/external/folly/folly/lang/Assume.h +82 -0
  585. package/external/folly/folly/lang/BUCK +287 -0
  586. package/external/folly/folly/lang/Badge.h +108 -0
  587. package/external/folly/folly/lang/Bits.h +570 -0
  588. package/external/folly/folly/lang/BitsClass.h +312 -0
  589. package/external/folly/folly/lang/Builtin.h +74 -0
  590. package/external/folly/folly/lang/CArray.h +34 -0
  591. package/external/folly/folly/lang/CString.cpp +86 -0
  592. package/external/folly/folly/lang/CString.h +55 -0
  593. package/external/folly/folly/lang/Cast.h +51 -0
  594. package/external/folly/folly/lang/CheckedMath.h +253 -0
  595. package/external/folly/folly/lang/CustomizationPoint.h +58 -0
  596. package/external/folly/folly/lang/Exception.cpp +822 -0
  597. package/external/folly/folly/lang/Exception.h +716 -0
  598. package/external/folly/folly/lang/Extern.h +55 -0
  599. package/external/folly/folly/lang/Hint-inl.h +144 -0
  600. package/external/folly/folly/lang/Hint.h +238 -0
  601. package/external/folly/folly/lang/Keep.h +98 -0
  602. package/external/folly/folly/lang/New.h +124 -0
  603. package/external/folly/folly/lang/Ordering.h +140 -0
  604. package/external/folly/folly/lang/Pretty.h +159 -0
  605. package/external/folly/folly/lang/PropagateConst.h +413 -0
  606. package/external/folly/folly/lang/RValueReferenceWrapper.h +152 -0
  607. package/external/folly/folly/lang/SafeAssert.cpp +589 -0
  608. package/external/folly/folly/lang/StaticConst.h +33 -0
  609. package/external/folly/folly/lang/Thunk.h +100 -0
  610. package/external/folly/folly/lang/TypeInfo.h +58 -0
  611. package/external/folly/folly/lang/UncaughtExceptions.cpp +17 -0
  612. package/external/folly/folly/lang/UncaughtExceptions.h +19 -0
  613. package/external/folly/folly/lang/test/AlignTest.cpp +87 -0
  614. package/external/folly/folly/lang/test/AlignedTest.cpp +130 -0
  615. package/external/folly/folly/lang/test/BUCK +258 -0
  616. package/external/folly/folly/lang/test/BadgeTest.cpp +89 -0
  617. package/external/folly/folly/lang/test/BitsBenchmark.cpp +164 -0
  618. package/external/folly/folly/lang/test/BitsClassBenchmark.cpp +122 -0
  619. package/external/folly/folly/lang/test/BitsClassTest.cpp +379 -0
  620. package/external/folly/folly/lang/test/BitsTest.cpp +577 -0
  621. package/external/folly/folly/lang/test/CStringTest.cpp +60 -0
  622. package/external/folly/folly/lang/test/CastTest.cpp +47 -0
  623. package/external/folly/folly/lang/test/CheckedMathTest.cpp +394 -0
  624. package/external/folly/folly/lang/test/ExceptionBench.cpp +427 -0
  625. package/external/folly/folly/lang/test/ExceptionTest.cpp +413 -0
  626. package/external/folly/folly/lang/test/ExternTest.cpp +39 -0
  627. package/external/folly/folly/lang/test/HintTest.cpp +100 -0
  628. package/external/folly/folly/lang/test/NewTest.cpp +38 -0
  629. package/external/folly/folly/lang/test/OrderingTest.cpp +105 -0
  630. package/external/folly/folly/lang/test/PrettyTest.cpp +44 -0
  631. package/external/folly/folly/lang/test/PropagateConstTest.cpp +356 -0
  632. package/external/folly/folly/lang/test/RValueReferenceWrapperTest.cpp +85 -0
  633. package/external/folly/folly/lang/test/SafeAssertTest.cpp +75 -0
  634. package/external/folly/folly/lang/test/ThunkTest.cpp +105 -0
  635. package/external/folly/folly/lang/test/ToAsciiBench.cpp +466 -0
  636. package/external/folly/folly/lang/test/ToAsciiTest.cpp +266 -0
  637. package/external/folly/folly/lang/test/TypeInfoTest.cpp +56 -0
  638. package/external/folly/folly/memcpy.S +292 -0
  639. package/external/folly/folly/memcpy_select_aarch64.cpp +145 -0
  640. package/external/folly/folly/memory/Arena-inl.h +83 -0
  641. package/external/folly/folly/memory/Arena.h +325 -0
  642. package/external/folly/folly/memory/BUCK +191 -0
  643. package/external/folly/folly/memory/JemallocHugePageAllocator.cpp +449 -0
  644. package/external/folly/folly/memory/JemallocHugePageAllocator.h +105 -0
  645. package/external/folly/folly/memory/JemallocHugePageAllocatorTest.cpp +341 -0
  646. package/external/folly/folly/memory/JemallocNodumpAllocator.cpp +176 -0
  647. package/external/folly/folly/memory/JemallocNodumpAllocator.h +119 -0
  648. package/external/folly/folly/memory/JemallocNodumpAllocatorTest.cpp +61 -0
  649. package/external/folly/folly/memory/MallctlHelper.cpp +37 -0
  650. package/external/folly/folly/memory/MallctlHelper.h +167 -0
  651. package/external/folly/folly/memory/Malloc.h +551 -0
  652. package/external/folly/folly/memory/MemoryResource.h +57 -0
  653. package/external/folly/folly/memory/ReentrantAllocator.cpp +162 -0
  654. package/external/folly/folly/memory/ReentrantAllocator.h +261 -0
  655. package/external/folly/folly/memory/SanitizeAddress.cpp +75 -0
  656. package/external/folly/folly/memory/SanitizeAddress.h +117 -0
  657. package/external/folly/folly/memory/SanitizeLeak.cpp +119 -0
  658. package/external/folly/folly/memory/SanitizeLeak.h +108 -0
  659. package/external/folly/folly/memory/ThreadCachedArena.cpp +53 -0
  660. package/external/folly/folly/memory/ThreadCachedArena.h +90 -0
  661. package/external/folly/folly/memory/UninitializedMemoryHacks.h +426 -0
  662. package/external/folly/folly/memory/detail/BUCK +10 -0
  663. package/external/folly/folly/memory/detail/MallocImpl.cpp +52 -0
  664. package/external/folly/folly/memory/detail/MallocImpl.h +97 -0
  665. package/external/folly/folly/memory/not_null-inl.h +522 -0
  666. package/external/folly/folly/memory/not_null.h +449 -0
  667. package/external/folly/folly/memory/test/ArenaTest.cpp +354 -0
  668. package/external/folly/folly/memory/test/BUCK +146 -0
  669. package/external/folly/folly/memory/test/MallctlHelperTest.cpp +169 -0
  670. package/external/folly/folly/memory/test/MallocBenchmark.cpp +91 -0
  671. package/external/folly/folly/memory/test/MallocTest.cpp +78 -0
  672. package/external/folly/folly/memory/test/MemoryResourceTest.cpp +31 -0
  673. package/external/folly/folly/memory/test/ReentrantAllocatorTest.cpp +144 -0
  674. package/external/folly/folly/memory/test/SanitizeAddressTest.cpp +67 -0
  675. package/external/folly/folly/memory/test/SanitizeLeakTest.cpp +139 -0
  676. package/external/folly/folly/memory/test/ThreadCachedArenaTest.cpp +276 -0
  677. package/external/folly/folly/memory/test/UninitializedMemoryHacksODR.cpp +21 -0
  678. package/external/folly/folly/memory/test/UninitializedMemoryHacksTest.cpp +327 -0
  679. package/external/folly/folly/memory/test/not_null_test.cpp +608 -0
  680. package/external/folly/folly/memset.S +245 -0
  681. package/external/folly/folly/memset_select_aarch64.cpp +72 -0
  682. package/external/folly/folly/portability/Asm.h +50 -0
  683. package/external/folly/folly/portability/Atomic.h +31 -0
  684. package/external/folly/folly/portability/BUCK +456 -0
  685. package/external/folly/folly/portability/Builtins.cpp +31 -0
  686. package/external/folly/folly/portability/Builtins.h +161 -0
  687. package/external/folly/folly/portability/Config.h +43 -0
  688. package/external/folly/folly/portability/Constexpr.h +145 -0
  689. package/external/folly/folly/portability/Dirent.cpp +140 -0
  690. package/external/folly/folly/portability/Dirent.h +41 -0
  691. package/external/folly/folly/portability/Event.h +44 -0
  692. package/external/folly/folly/portability/Fcntl.cpp +120 -0
  693. package/external/folly/folly/portability/Fcntl.h +67 -0
  694. package/external/folly/folly/portability/Filesystem.cpp +67 -0
  695. package/external/folly/folly/portability/Filesystem.h +114 -0
  696. package/external/folly/folly/portability/FmtCompile.h +40 -0
  697. package/external/folly/folly/portability/GFlags.h +139 -0
  698. package/external/folly/folly/portability/GMock.h +35 -0
  699. package/external/folly/folly/portability/GTest.h +35 -0
  700. package/external/folly/folly/portability/IOVec.h +34 -0
  701. package/external/folly/folly/portability/Libgen.cpp +59 -0
  702. package/external/folly/folly/portability/Libgen.h +29 -0
  703. package/external/folly/folly/portability/Libunwind.h +21 -0
  704. package/external/folly/folly/portability/Malloc.cpp +31 -0
  705. package/external/folly/folly/portability/Malloc.h +53 -0
  706. package/external/folly/folly/portability/Math.h +90 -0
  707. package/external/folly/folly/portability/Memory.h +26 -0
  708. package/external/folly/folly/portability/OpenSSL.cpp +17 -0
  709. package/external/folly/folly/portability/OpenSSL.h +102 -0
  710. package/external/folly/folly/portability/PThread.cpp +697 -0
  711. package/external/folly/folly/portability/PThread.h +148 -0
  712. package/external/folly/folly/portability/README.md +21 -0
  713. package/external/folly/folly/portability/Sched.cpp +41 -0
  714. package/external/folly/folly/portability/Sched.h +45 -0
  715. package/external/folly/folly/portability/Sockets.cpp +245 -0
  716. package/external/folly/folly/portability/Sockets.h +155 -0
  717. package/external/folly/folly/portability/SourceLocation.h +49 -0
  718. package/external/folly/folly/portability/Stdio.cpp +77 -0
  719. package/external/folly/folly/portability/Stdio.h +32 -0
  720. package/external/folly/folly/portability/Stdlib.cpp +172 -0
  721. package/external/folly/folly/portability/Stdlib.h +64 -0
  722. package/external/folly/folly/portability/String.cpp +53 -0
  723. package/external/folly/folly/portability/String.h +39 -0
  724. package/external/folly/folly/portability/SysFile.cpp +46 -0
  725. package/external/folly/folly/portability/SysFile.h +27 -0
  726. package/external/folly/folly/portability/SysMembarrier.cpp +104 -0
  727. package/external/folly/folly/portability/SysMembarrier.h +26 -0
  728. package/external/folly/folly/portability/SysMman.cpp +242 -0
  729. package/external/folly/folly/portability/SysMman.h +68 -0
  730. package/external/folly/folly/portability/SysResource.cpp +108 -0
  731. package/external/folly/folly/portability/SysResource.h +71 -0
  732. package/external/folly/folly/portability/SysStat.cpp +66 -0
  733. package/external/folly/folly/portability/SysStat.h +52 -0
  734. package/external/folly/folly/portability/SysSyscall.h +73 -0
  735. package/external/folly/folly/portability/SysTime.cpp +62 -0
  736. package/external/folly/folly/portability/SysTime.h +50 -0
  737. package/external/folly/folly/portability/SysTypes.h +44 -0
  738. package/external/folly/folly/portability/SysUio.cpp +179 -0
  739. package/external/folly/folly/portability/SysUio.h +51 -0
  740. package/external/folly/folly/portability/Syslog.h +39 -0
  741. package/external/folly/folly/portability/Time.cpp +357 -0
  742. package/external/folly/folly/portability/Time.h +74 -0
  743. package/external/folly/folly/portability/Unistd.h +111 -0
  744. package/external/folly/folly/portability/Windows.h +108 -0
  745. package/external/folly/folly/portability/openat2.c +30 -0
  746. package/external/folly/folly/portability/openat2.h +39 -0
  747. package/external/folly/folly/portability/test/BUCK +59 -0
  748. package/external/folly/folly/portability/test/ConstexprTest.cpp +102 -0
  749. package/external/folly/folly/portability/test/FilesystemTest.cpp +35 -0
  750. package/external/folly/folly/portability/test/LibgenTest.cpp +35 -0
  751. package/external/folly/folly/portability/test/OpenSSLPortabilityTest.cpp +108 -0
  752. package/external/folly/folly/portability/test/PThreadTest.cpp +80 -0
  753. package/external/folly/folly/portability/test/TimeTest.cpp +90 -0
  754. package/external/folly/folly/small_vector.h +17 -0
  755. package/external/folly/folly/somerge_defs.bzl +399 -0
  756. package/external/folly/folly/sorted_vector_types.h +17 -0
  757. package/external/folly/folly/stop_watch.h +317 -0
  758. package/external/folly/folly/synchronization/AsymmetricThreadFence.cpp +91 -0
  759. package/external/folly/folly/synchronization/AsymmetricThreadFence.h +60 -0
  760. package/external/folly/folly/synchronization/AtomicNotification-inl.h +146 -0
  761. package/external/folly/folly/synchronization/AtomicNotification.cpp +34 -0
  762. package/external/folly/folly/synchronization/AtomicNotification.h +117 -0
  763. package/external/folly/folly/synchronization/AtomicRef.h +181 -0
  764. package/external/folly/folly/synchronization/AtomicStruct.h +150 -0
  765. package/external/folly/folly/synchronization/AtomicUtil-inl.h +482 -0
  766. package/external/folly/folly/synchronization/AtomicUtil.h +179 -0
  767. package/external/folly/folly/synchronization/BUCK +418 -0
  768. package/external/folly/folly/synchronization/Baton.h +419 -0
  769. package/external/folly/folly/synchronization/CallOnce.h +263 -0
  770. package/external/folly/folly/synchronization/DelayedInit.h +179 -0
  771. package/external/folly/folly/synchronization/DistributedMutex-inl.h +1744 -0
  772. package/external/folly/folly/synchronization/DistributedMutex.cpp +27 -0
  773. package/external/folly/folly/synchronization/DistributedMutex.h +342 -0
  774. package/external/folly/folly/synchronization/EventCount.h +200 -0
  775. package/external/folly/folly/synchronization/FlatCombining.h +629 -0
  776. package/external/folly/folly/synchronization/Hazptr-fwd.h +217 -0
  777. package/external/folly/folly/synchronization/Hazptr.cpp +36 -0
  778. package/external/folly/folly/synchronization/Hazptr.h +209 -0
  779. package/external/folly/folly/synchronization/HazptrDomain.cpp +68 -0
  780. package/external/folly/folly/synchronization/HazptrDomain.h +832 -0
  781. package/external/folly/folly/synchronization/HazptrHolder.h +431 -0
  782. package/external/folly/folly/synchronization/HazptrObj.h +533 -0
  783. package/external/folly/folly/synchronization/HazptrObjLinked.h +315 -0
  784. package/external/folly/folly/synchronization/HazptrRec.h +68 -0
  785. package/external/folly/folly/synchronization/HazptrThrLocal.h +180 -0
  786. package/external/folly/folly/synchronization/HazptrThreadPoolExecutor.cpp +46 -0
  787. package/external/folly/folly/synchronization/HazptrThreadPoolExecutor.h +25 -0
  788. package/external/folly/folly/synchronization/Latch.h +160 -0
  789. package/external/folly/folly/synchronization/LifoSem.h +767 -0
  790. package/external/folly/folly/synchronization/Lock.h +887 -0
  791. package/external/folly/folly/synchronization/MicroSpinLock.h +154 -0
  792. package/external/folly/folly/synchronization/NativeSemaphore.h +187 -0
  793. package/external/folly/folly/synchronization/ParkingLot.cpp +37 -0
  794. package/external/folly/folly/synchronization/ParkingLot.h +330 -0
  795. package/external/folly/folly/synchronization/PicoSpinLock.h +167 -0
  796. package/external/folly/folly/synchronization/RWSpinLock.h +549 -0
  797. package/external/folly/folly/synchronization/Rcu.cpp +26 -0
  798. package/external/folly/folly/synchronization/Rcu.h +553 -0
  799. package/external/folly/folly/synchronization/RelaxedAtomic.h +336 -0
  800. package/external/folly/folly/synchronization/SanitizeThread.cpp +141 -0
  801. package/external/folly/folly/synchronization/SanitizeThread.h +166 -0
  802. package/external/folly/folly/synchronization/SaturatingSemaphore.h +324 -0
  803. package/external/folly/folly/synchronization/SmallLocks.h +36 -0
  804. package/external/folly/folly/synchronization/ThrottledLifoSem.h +362 -0
  805. package/external/folly/folly/synchronization/WaitOptions.cpp +25 -0
  806. package/external/folly/folly/synchronization/WaitOptions.h +75 -0
  807. package/external/folly/folly/synchronization/detail/AtomicUtils.h +59 -0
  808. package/external/folly/folly/synchronization/detail/BUCK +104 -0
  809. package/external/folly/folly/synchronization/detail/Hardware.cpp +192 -0
  810. package/external/folly/folly/synchronization/detail/Hardware.h +75 -0
  811. package/external/folly/folly/synchronization/detail/HazptrUtils.h +339 -0
  812. package/external/folly/folly/synchronization/detail/InlineFunctionRef.h +229 -0
  813. package/external/folly/folly/synchronization/detail/Sleeper.cpp +27 -0
  814. package/external/folly/folly/synchronization/detail/Sleeper.h +62 -0
  815. package/external/folly/folly/synchronization/detail/Spin.h +96 -0
  816. package/external/folly/folly/synchronization/detail/ThreadCachedLists.h +174 -0
  817. package/external/folly/folly/synchronization/detail/ThreadCachedReaders.h +189 -0
  818. package/external/folly/folly/synchronization/detail/ThreadCachedTag.h +26 -0
  819. package/external/folly/folly/synchronization/detail/test/BUCK +28 -0
  820. package/external/folly/folly/synchronization/detail/test/HardwareTest.cpp +74 -0
  821. package/external/folly/folly/synchronization/detail/test/InlineFunctionRefTest.cpp +286 -0
  822. package/external/folly/folly/synchronization/example/BUCK +27 -0
  823. package/external/folly/folly/synchronization/example/HazptrLockFreeLIFO.h +88 -0
  824. package/external/folly/folly/synchronization/example/HazptrSWMRSet.h +133 -0
  825. package/external/folly/folly/synchronization/example/HazptrWideCAS.h +62 -0
  826. package/external/folly/folly/synchronization/test/AtomicNotificationTest.cpp +236 -0
  827. package/external/folly/folly/synchronization/test/AtomicRefTest.cpp +170 -0
  828. package/external/folly/folly/synchronization/test/AtomicStructTest.cpp +65 -0
  829. package/external/folly/folly/synchronization/test/AtomicUtilBench.cpp +457 -0
  830. package/external/folly/folly/synchronization/test/AtomicUtilTest.cpp +650 -0
  831. package/external/folly/folly/synchronization/test/BUCK +495 -0
  832. package/external/folly/folly/synchronization/test/Barrier.h +52 -0
  833. package/external/folly/folly/synchronization/test/BarrierTest.cpp +56 -0
  834. package/external/folly/folly/synchronization/test/BatonBenchmark.cpp +77 -0
  835. package/external/folly/folly/synchronization/test/BatonTest.cpp +164 -0
  836. package/external/folly/folly/synchronization/test/BatonTestHelpers.h +118 -0
  837. package/external/folly/folly/synchronization/test/CallOnceBenchmark.cpp +72 -0
  838. package/external/folly/folly/synchronization/test/CallOnceTest.cpp +153 -0
  839. package/external/folly/folly/synchronization/test/DelayedInitTest.cpp +281 -0
  840. package/external/folly/folly/synchronization/test/DistributedMutexTest.cpp +2074 -0
  841. package/external/folly/folly/synchronization/test/EventCountTest.cpp +124 -0
  842. package/external/folly/folly/synchronization/test/FlatCombiningBenchmark.cpp +1789 -0
  843. package/external/folly/folly/synchronization/test/FlatCombiningExamples.h +222 -0
  844. package/external/folly/folly/synchronization/test/FlatCombiningTest.cpp +121 -0
  845. package/external/folly/folly/synchronization/test/FlatCombiningTestHelpers.h +227 -0
  846. package/external/folly/folly/synchronization/test/HazptrTest.cpp +1689 -0
  847. package/external/folly/folly/synchronization/test/LatchTest.cpp +224 -0
  848. package/external/folly/folly/synchronization/test/LifoSemBench.cpp +185 -0
  849. package/external/folly/folly/synchronization/test/LifoSemTests.cpp +353 -0
  850. package/external/folly/folly/synchronization/test/LockTest.cpp +1239 -0
  851. package/external/folly/folly/synchronization/test/NativeSemaphoreTest.cpp +37 -0
  852. package/external/folly/folly/synchronization/test/ParkingLotBenchmark.cpp +239 -0
  853. package/external/folly/folly/synchronization/test/ParkingLotTest.cpp +170 -0
  854. package/external/folly/folly/synchronization/test/RWSpinLockTest.cpp +235 -0
  855. package/external/folly/folly/synchronization/test/RcuBench.cpp +66 -0
  856. package/external/folly/folly/synchronization/test/RcuTest.cpp +330 -0
  857. package/external/folly/folly/synchronization/test/RelaxedAtomicTest.cpp +389 -0
  858. package/external/folly/folly/synchronization/test/SaturatingSemaphoreTest.cpp +166 -0
  859. package/external/folly/folly/synchronization/test/Semaphore.h +242 -0
  860. package/external/folly/folly/synchronization/test/SemaphoreTest.cpp +271 -0
  861. package/external/folly/folly/synchronization/test/SmallLocksBenchmark.cpp +1296 -0
  862. package/external/folly/folly/synchronization/test/SmallLocksTest.cpp +510 -0
  863. package/external/folly/folly/synchronization/test/ThreadCachedEpochBench.h +67 -0
  864. package/external/folly/folly/synchronization/test/ThreadCachedReadersBench.cpp +42 -0
  865. package/external/folly/folly/synchronization/test/ThreadCachedReadersTest.cpp +52 -0
  866. package/external/folly/folly/synchronization/test/ThrottledLifoSemTest.cpp +243 -0
  867. package/external/folly/folly/system/AtFork.cpp +205 -0
  868. package/external/folly/folly/system/AtFork.h +116 -0
  869. package/external/folly/folly/system/AuxVector.h +198 -0
  870. package/external/folly/folly/system/BUCK +144 -0
  871. package/external/folly/folly/system/EnvUtil.cpp +93 -0
  872. package/external/folly/folly/system/EnvUtil.h +113 -0
  873. package/external/folly/folly/system/HardwareConcurrency.cpp +39 -0
  874. package/external/folly/folly/system/HardwareConcurrency.h +23 -0
  875. package/external/folly/folly/system/MemoryMapping.cpp +477 -0
  876. package/external/folly/folly/system/MemoryMapping.h +287 -0
  877. package/external/folly/folly/system/Pid.cpp +87 -0
  878. package/external/folly/folly/system/Pid.h +34 -0
  879. package/external/folly/folly/system/Shell.cpp +33 -0
  880. package/external/folly/folly/system/Shell.h +93 -0
  881. package/external/folly/folly/system/ThreadId.cpp +89 -0
  882. package/external/folly/folly/system/ThreadId.h +62 -0
  883. package/external/folly/folly/system/ThreadName.cpp +330 -0
  884. package/external/folly/folly/system/ThreadName.h +72 -0
  885. package/external/folly/folly/system/test/AtForkTest.cpp +309 -0
  886. package/external/folly/folly/system/test/AuxVectorTest.cpp +55 -0
  887. package/external/folly/folly/system/test/BUCK +120 -0
  888. package/external/folly/folly/system/test/EnvUtilSubprocess.cpp +26 -0
  889. package/external/folly/folly/system/test/EnvUtilTest.cpp +197 -0
  890. package/external/folly/folly/system/test/MemoryMappingTest.cpp +179 -0
  891. package/external/folly/folly/system/test/PidTest.cpp +46 -0
  892. package/external/folly/folly/system/test/ShellTest.cpp +66 -0
  893. package/external/folly/folly/system/test/ThreadIdTest.cpp +114 -0
  894. package/external/folly/folly/system/test/ThreadNameTest.cpp +85 -0
  895. package/external/folly/folly.vcxitems +164 -0
  896. package/external/folly/static/logo.svg +1 -0
  897. package/external/folly/sync-config.json +8 -0
  898. package/package.json +3 -3
  899. package/template/cpp-app/proj/MyApp.sln +0 -33
  900. package/template/cpp-lib/proj/MyLib.sln +0 -33
  901. package/template/cs-app/proj/MyApp.sln +0 -33
  902. package/template/cs-lib/proj/MyLib.sln +0 -33
  903. package/templates/cpp-app/windows/MyApp.sln +0 -33
  904. package/templates/cpp-lib/example/metro.config.js +31 -6
  905. package/templates/cpp-lib/windows/MyLib.sln +0 -33
  906. package/Folly/Folly.vcxproj +0 -383
  907. package/Folly/Folly.vcxproj.filters +0 -558
  908. package/Folly/Folly.win32.vcxproj +0 -11
  909. package/Folly/packages.lock.win32.json +0 -20
  910. package/Scripts/Warm-RnwFeedCache.ps1 +0 -413
  911. package/fmt/fmt.vcxproj +0 -163
  912. package/fmt/fmt.vcxproj.filters +0 -59
  913. package/fmt/fmt.win32.vcxproj +0 -10
  914. package/fmt/pch.cpp +0 -4
  915. package/fmt/pch.h +0 -2
  916. /package/{Folly → external/folly}/Folly.natvis +0 -0
  917. /package/{Folly → external/folly}/cgmanifest.json +0 -0
  918. /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/ConstexprMath.h +0 -0
  919. /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/Conv.cpp +0 -0
  920. /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/chrono/Hardware.h +0 -0
  921. /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/concurrency/CacheLocality.cpp +0 -0
  922. /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/json/dynamic-inl.h +0 -0
  923. /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/json/json.cpp +0 -0
  924. /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/lang/SafeAssert.h +0 -0
  925. /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/lang/ToAscii.cpp +0 -0
  926. /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/lang/ToAscii.h +0 -0
  927. /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/portability/Unistd.cpp +0 -0
@@ -0,0 +1,98 @@
1
+ `folly/ThreadCachedInt.h`
2
+ ----------------------
3
+
4
+ High-performance atomic increment using thread caching.
5
+
6
+ `folly/ThreadCachedInt.h` introduces a integer class designed for high
7
+ performance increments from multiple threads simultaneously without
8
+ loss of precision. It has two read modes, `readFast` gives a potentially stale
9
+ value with one load, and `readFull` gives the exact value, but is much slower,
10
+ as discussed below.
11
+
12
+
13
+ ### Performance
14
+ ***
15
+
16
+ Increment performance is up to 10x greater than `std::atomic_fetch_add` in high
17
+ contention environments. See `folly/test/ThreadCachedIntTest.h` for more
18
+ comprehensive benchmarks.
19
+
20
+ `readFast` is as fast as a single load.
21
+
22
+ `readFull`, on the other hand, requires acquiring a mutex and iterating through
23
+ a list to accumulate the values of all the thread local counters, so is
24
+ significantly slower than `readFast`.
25
+
26
+
27
+ ### Usage
28
+ ***
29
+
30
+ Create an instance and increment it with `increment` or the operator overloads.
31
+ Read the value with `readFast` for quick, potentially stale data, or `readFull`
32
+ for a more expensive but precise result. There are additional convenience
33
+ functions as well, such as `set`.
34
+
35
+ ``` Cpp
36
+ ThreadCachedInt<int64_t> val;
37
+ EXPECT_EQ(0, val.readFast());
38
+ ++val; // increment in thread local counter only
39
+ EXPECT_EQ(0, val.readFast()); // increment has not been flushed
40
+ EXPECT_EQ(1, val.readFull()); // accumulates all thread local counters
41
+ val.set(2);
42
+ EXPECT_EQ(2, val.readFast());
43
+ EXPECT_EQ(2, val.readFull());
44
+ ```
45
+
46
+ ### Implementation
47
+ ***
48
+
49
+ `folly::ThreadCachedInt` uses `folly::ThreadLocal` to store thread specific
50
+ objects that each have a local counter. When incrementing, the thread local
51
+ instance is incremented. If the local counter passes the cache size, the value
52
+ is flushed to the global counter with an atomic increment. It is this global
53
+ counter that is read with `readFast` via a simple load, but will not count any
54
+ of the updates that haven't been flushed.
55
+
56
+ In order to read the exact value, `ThreadCachedInt` uses the extended
57
+ `readAllThreads()` API of `folly::ThreadLocal` to iterate through all the
58
+ references to all the associated thread local object instances. This currently
59
+ requires acquiring a global mutex and iterating through the references,
60
+ accumulating the counters along with the global counter. This also means that
61
+ the first use of the object from a new thread will acquire the mutex in order to
62
+ insert the thread local reference into the list. By default, there is one
63
+ global mutex per integer type used in `ThreadCachedInt`. If you plan on using a
64
+ lot of `ThreadCachedInt`s in your application, considering breaking up the
65
+ global mutex by introducing additional `Tag` template parameters.
66
+
67
+ `set` simply sets the global counter value, and marks all the thread local
68
+ instances as needing to be reset. When iterating with `readFull`, thread local
69
+ counters that have been marked as reset are skipped. When incrementing, thread
70
+ local counters marked for reset are set to zero and unmarked for reset.
71
+
72
+ Upon destruction, thread local counters are flushed to the parent so that counts
73
+ are not lost after increments in temporary threads. This requires grabbing the
74
+ global mutex to make sure the parent itself wasn't destroyed in another thread
75
+ already.
76
+
77
+ ### Alternate Implementations
78
+ ***
79
+
80
+ There are of course many ways to skin a cat, and you may notice there is a
81
+ partial alternate implementation in `folly/test/ThreadCachedIntTest.cpp` that
82
+ provides similar performance. `ShardedAtomicInt` simply uses an array of
83
+ `std::atomic<int64_t>`'s and hashes threads across them to do low-contention
84
+ atomic increments, and `readFull` just sums up all the ints.
85
+
86
+ This sounds great, but in order to get the contention low enough to get similar
87
+ performance as ThreadCachedInt with 24 threads, `ShardedAtomicInt` needs about
88
+ 2000 ints to hash across. This uses about 20x more memory, and the lock-free
89
+ `readFull` has to sum up all 2048 ints, which ends up being a about 50x slower
90
+ than `ThreadCachedInt` in low contention situations, which is hopefully the
91
+ common case since it's designed for high-write, low read access patterns.
92
+ Performance of `readFull` is about the same speed as `ThreadCachedInt` in high
93
+ contention environments.
94
+
95
+ Depending on the operating conditions, it may make more sense to use one
96
+ implementation over the other. For example, a lower contention environment will
97
+ probably be able to use a `ShardedAtomicInt` with a much smaller array without
98
+ hurting performance, while improving memory consumption and perf of `readFull`.
@@ -0,0 +1,105 @@
1
+ `folly/ThreadLocal.h`
2
+ ----------------------
3
+
4
+ Improved thread local storage for non-trivial types.
5
+
6
+ * ~4x faster than `boost::thread_specific_ptr`.
7
+ * Similar speed as using `pthread_getspecific` directly, but only consumes a
8
+ single `pthread_key_t` per `Tag` template param.
9
+ * Expands on the `thread_specific_ptr` API with `accessAllThreads` and extended
10
+ custom deleter support.
11
+
12
+
13
+ ### Usage
14
+ ***
15
+
16
+ The API of `ThreadLocalPtr` is very close to `boost::thread_specific_ptr` with
17
+ the notable addition of the `accessAllThreads` method. There is also a
18
+ `ThreadLocal` class which is a thin wrapper around `ThreadLocalPtr` that manages
19
+ allocation automatically (creates a new object the first time it is dereferenced
20
+ from each thread).
21
+
22
+ `ThreadLocalPtr` simply gives you a place to put and access a pointer local to
23
+ each thread such that it will be destroyed appropriately.
24
+
25
+ ```Cpp
26
+ {
27
+ folly::ThreadLocalPtr<Widget> w;
28
+ w.reset(new Widget(0), Widget::customDeleterA);
29
+ std::thread([&w]() {
30
+ w.reset(new Widget(1), Widget::customDeleterB);
31
+ w.get()->mangleWidget();
32
+ } // Widget(1) is destroyed with customDeleterB
33
+ } // Widget(0) is destroyed with customDeleterA
34
+ ```
35
+
36
+ Note that `customDeleterB` will get called with
37
+ `TLPDestructionMode::THIS_THREAD` and `customerDeleterA` will get called with
38
+ `TLPDestructionMode::ALL_THREADS`. This is to distinguish between thread exit
39
+ vs. the entire `ThreadLocalPtr` getting destroyed, in which case there is
40
+ cleanup work that may be avoided.
41
+
42
+ The `accessAllThreads` interface is provided to walk all the thread local child
43
+ objects of a parent. `accessAllThreads` initializes an accessor
44
+ which holds a global lock that blocks all creation and destruction of
45
+ `ThreadLocal` objects with the same `Tag` and can be used as an iterable
46
+ container. Typical use is for frequent write, infrequent read data access
47
+ patterns such as counters. Note that you must specify a unique Tag type so you
48
+ don't block other ThreadLocal object usage, and you should try to minimize the
49
+ lifetime of the accessor so the lock is held for as short as possible).
50
+
51
+ The following example is a simplification of `folly/ThreadCachedInt.h`. It
52
+ keeps track of a counter value and allows multiple threads to add to the count
53
+ without synchronization. In order to get the total count, `read()` iterates
54
+ through all the thread local values via `accessAllThreads()` and sums them up.
55
+ `class NewTag` is used to break the global mutex so that this class won't block
56
+ other `ThreadLocal` usage when `read()` is called.
57
+
58
+ Note that `read()` holds the global mutex which blocks construction,
59
+ destruction, and `read()` for other `SimpleThreadCachedInt`'s, but does not
60
+ block `add()`. Also, since it uses the unique `NewTag`, `SimpleThreadCachedInt`
61
+ does not affect other `ThreadLocal` usage.
62
+
63
+ ```Cpp
64
+ class SimpleThreadCachedInt {
65
+
66
+ class NewTag; // Segments the global mutex
67
+ ThreadLocal<int,NewTag> val_;
68
+
69
+ public:
70
+ void add(int val) {
71
+ *val_ += val; // operator*() gives a reference to the thread local instance
72
+ }
73
+
74
+ int read() {
75
+ int ret = 0;
76
+ // accessAllThreads acquires the global lock
77
+ for (const auto& i : val_.accessAllThreads()) {
78
+ ret += i;
79
+ } // Global lock is released on scope exit
80
+ return ret;
81
+ }
82
+ };
83
+ ```
84
+
85
+
86
+ ### Implementation
87
+ ***
88
+
89
+ We keep a `__thread` array of pointers to objects (`ThreadEntry::elements`)
90
+ where each array has an index for each unique instance of the `ThreadLocalPtr`
91
+ object. Each `ThreadLocalPtr` object has a unique id that is an index into
92
+ these arrays so we can fetch the correct object from thread local storage
93
+ very efficiently.
94
+
95
+ In order to prevent unbounded growth of the id space and thus huge
96
+ `ThreadEntry::elements` arrays, for example due to continuous creation and
97
+ destruction of `ThreadLocalPtr` objects, we keep track of all active instances
98
+ by linking them together into a list. When an instance is destroyed we remove
99
+ it from the chain and insert the id into `freeIds_` for reuse. These operations
100
+ require a global mutex, but only happen at construction and destruction time.
101
+ `accessAllThreads` also acquires this global mutex.
102
+
103
+ We use a single global `pthread_key_t` per `Tag` to manage object destruction
104
+ and memory cleanup upon thread exit because there is a finite number of
105
+ `pthread_key_t`'s available per machine.
@@ -0,0 +1,161 @@
1
+ 'folly/Traits.h'
2
+ -----------------
3
+
4
+ Implements traits complementary to those provided in <type_traits>
5
+
6
+ * Implements `IsRelocatable` trait.
7
+ * Implements `IsOneOf` trait
8
+ * Macros to state the assumptions easily
9
+
10
+ ### Motivation
11
+ ***
12
+
13
+ `<type_traits>` is the Standard type-traits library defining a variety of traits
14
+ such as `is_integral` or `is_floating_point`. This helps to gain more
15
+ information about a given type.
16
+
17
+ `folly/Traits.h` implements traits complementing those present in the Standard.
18
+
19
+
20
+ ### IsRelocatable
21
+ ***
22
+
23
+ In C++, the default way to move an object is by
24
+ calling the copy constructor and destroying the old copy
25
+ instead of directly copying the memory contents by using memcpy().
26
+ The conservative approach of moving an object assumes that the copied
27
+ object is not relocatable.
28
+ The two following code sequences should be semantically equivalent for a
29
+ relocatable type:
30
+
31
+ ```Cpp
32
+ {
33
+ void conservativeMove(T * from, T * to) {
34
+ new(to) T(from);
35
+ (*from).~T();
36
+ }
37
+ }
38
+
39
+ {
40
+ void optimizedMove(T * from, T * to) {
41
+ memcpy(to, from, sizeof(T));
42
+ }
43
+ }
44
+ ```
45
+
46
+ Very few C++ types are non-relocatable.
47
+ The type defined below maintains a pointer inside an embedded buffer and
48
+ hence would be non-relocatable. Moving the object by simply copying its
49
+ memory contents would leave the internal pointer pointing to the old buffer.
50
+
51
+ ```Cpp
52
+ class NonRelocatableType {
53
+ private:
54
+ char buffer[1024];
55
+ char * pointerToBuffer;
56
+ ...
57
+ public:
58
+ NonRelocatableType() : pointerToBuffer(buffer) {}
59
+ ...
60
+ };
61
+ ```
62
+
63
+ We can optimize the task of moving a relocatable type T using memcpy.
64
+ IsRelocatable<T>::value describes the ability of moving around memory
65
+ a value of type T by using memcpy.
66
+
67
+ ### Usage
68
+ ***
69
+
70
+ * Declaring types
71
+
72
+ ```Cpp
73
+ template <class T1, class T2>
74
+ class MyParameterizedType;
75
+
76
+ class MySimpleType;
77
+ ```
78
+
79
+ * Declaring a type as relocatable
80
+
81
+ Appending the lines below after definition of My*Type
82
+ (`MyParameterizedType` or `MySimpleType`) will declare it as relocatable
83
+
84
+ ```Cpp
85
+ /* Definition of My*Type goes here */
86
+ // global namespace (not inside any namespace)
87
+ namespace folly {
88
+ // defining specialization of IsRelocatable for MySimpleType
89
+ template <>
90
+ struct IsRelocatable<MySimpleType> : std::true_type {};
91
+ // defining specialization of IsRelocatable for MyParameterizedType
92
+ template <class T1, class T2>
93
+ struct IsRelocatable<MyParameterizedType<T1, T2>>
94
+ : ::std::true_type {};
95
+ }
96
+ ```
97
+
98
+ * To make it easy to state assumptions for a regular type or a family of
99
+ parameterized type, various macros can be used as shown below.
100
+
101
+ * Stating that a type is Relocatable using a macro
102
+
103
+ ```Cpp
104
+ // global namespace
105
+ namespace folly {
106
+ // For a Regular Type
107
+ FOLLY_ASSUME_RELOCATABLE(MySimpleType);
108
+ // For a Parameterized Type
109
+ FOLLY_ASSUME_RELOCATABLE(MyParameterizedType<T1, T2>);
110
+ }
111
+ ```
112
+
113
+ `fbvector` only works with relocatable objects. If assumptions are not stated
114
+ explicitly, `fbvector<MySimpleType>` or `fbvector<MyParameterizedType>`
115
+ will fail to compile due to assertion below:
116
+
117
+ ```Cpp
118
+ static_assert(IsRelocatable<My*Type>::value, "");
119
+ ```
120
+
121
+ FOLLY_ASSUME_FBVECTOR_COMPATIBLE*(type) macros can be used to state that type
122
+ is relocatable and has nothrow constructor.
123
+
124
+ * Stating that a type is `fbvector-compatible` using macros
125
+ i.e. relocatable and has nothrow default constructor
126
+
127
+ ```Cpp
128
+ // at global level, i.e no namespace
129
+ // macro for regular type
130
+ FOLLY_ASSUME_FBVECTOR_COMPATIBLE(MySimpleType)
131
+ // macro for types having 2 template parameters (MyParameterizedType)
132
+ FOLLY_ASSUME_FBVECTOR_COMPATIBLE_2(MyParameterizedType)
133
+ ```
134
+
135
+ Similarly,
136
+
137
+ * FOLLY_ASSUME_FBVECTOR_COMPATIBLE_1(MyTypeHavingOneParameter) macro is
138
+ for family of parameterized types having 1 parameter
139
+
140
+ * FOLLY_ASSUME_FBVECTOR_COMPATIBLE_3(MyTypeHavingThreeParameters) macro is
141
+ for family of parameterized types having 3 parameters
142
+
143
+ * FOLLY_ASSUME_FBVECTOR_COMPATIBLE_4(MyTypeHavingFourParameters) macro is
144
+ for family of parameterized types having 4 parameters
145
+
146
+ Few common types, namely `std::basic_string`, `std::vector`, `std::list`,
147
+ `std::map`, `std::deque`, `std::set`, `std::unique_ptr`, `std::shared_ptr`,
148
+ `std::function`, which are compatible with `fbvector` are already instantiated
149
+ and declared compatible with `fbvector`. `fbvector` can be directly used with
150
+ any of these C++ types.
151
+
152
+ `std::pair` can be safely assumed to be compatible with `fbvector` if both of
153
+ its components are.
154
+
155
+ ### IsOneOf
156
+ ***
157
+
158
+ `std::is_same<T1, T2>::value` can be used to test if types of T1 and T2 are
159
+ same. `folly::IsOneOf<T, T1, Ts...>::value` can be used to test if type of T
160
+ matches the type of one of the other template parameter, T1, T2, ...Tn.
161
+ Recursion is used to implement this type trait.
@@ -0,0 +1,64 @@
1
+ `folly/small_vector.h`
2
+ ----------------------
3
+
4
+ `folly::small_vector<T,Int=1,...>` is a sequence container that
5
+ implements small buffer optimization. It behaves similarly to
6
+ std::vector, except until a certain number of elements are reserved it
7
+ does not use the heap.
8
+
9
+ Like standard vector, it is guaranteed to use contiguous memory. (So,
10
+ after it spills to the heap all the elements live in the heap buffer.)
11
+
12
+ Simple usage example:
13
+
14
+ ``` Cpp
15
+ small_vector<int,2> vec;
16
+ vec.push_back(0); // Stored in-place on stack
17
+ vec.push_back(1); // Still on the stack
18
+ vec.push_back(2); // Switches to heap buffer.
19
+ ```
20
+
21
+ ### Details
22
+ ***
23
+
24
+ This class is useful in either of following cases:
25
+
26
+ * Short-lived stack vectors with few elements (or maybe with a
27
+ usually-known number of elements), if you want to avoid malloc.
28
+
29
+ * If the vector(s) are usually under a known size and lookups are very
30
+ common, you'll save an extra cache miss in the common case when the
31
+ data is kept in-place.
32
+
33
+ * You have billions of these vectors and don't want to waste space on
34
+ `std::vector`'s capacity tracking. This vector lets `malloc` track our
35
+ allocation capacity. (Note that this slows down the
36
+ insertion/reallocation code paths significantly; if you need those
37
+ to be fast you should use `fbvector`.)
38
+
39
+ The last two cases were the main motivation for implementing it.
40
+
41
+ There are also a couple of flags you can pass into this class
42
+ template to customize its behavior. You can provide them in any
43
+ order after the in-place count. They are all in the `namespace
44
+ small_vector_policy`.
45
+
46
+ * `NoHeap` - Avoid the heap entirely. (Throws `std::length_error` if
47
+ you would've spilled out of the in-place allocation.)
48
+
49
+ * `<Any integral type>` - customizes the amount of space we spend on
50
+ tracking the size of the vector.
51
+
52
+ A couple more examples:
53
+
54
+ ``` Cpp
55
+ // With space for 32 in situ unique pointers, and only using a
56
+ // 4-byte size_type.
57
+ small_vector<std::unique_ptr<int>, 32, uint32_t> v;
58
+
59
+ // A inline vector of up to 256 ints which will not use the heap.
60
+ small_vector<int, 256, NoHeap> v;
61
+
62
+ // Same as the above, but making the size_type smaller too.
63
+ small_vector<int, 256, NoHeap, uint16_t> v;
64
+ ```
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ <style type="text/css">
18
+ pre.literal-block, pre.doctest-block, pre.sourceCode {
19
+ margin-left: 2em;
20
+ margin-right: 2em;
21
+ background-color: #eeeeee
22
+ }
23
+ </style>
@@ -0,0 +1,17 @@
1
+ /*
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ #include <folly/json/dynamic-inl.h>
@@ -0,0 +1,17 @@
1
+ /*
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ #include <folly/json/dynamic.h>
@@ -0,0 +1,28 @@
1
+ load("@fbsource//tools/build_defs:default_platform_defs.bzl", "ANDROID", "APPLE", "CXX", "FBCODE", "WINDOWS")
2
+ load("@fbsource//xplat/folly:defs.bzl", "folly_library")
3
+
4
+ def folly_extended_library(name, **kwargs):
5
+ folly_library(
6
+ name,
7
+ force_static = False,
8
+ enable_static_variant = True,
9
+ compiler_flags = [
10
+ "-Wno-shadow",
11
+ ],
12
+ fbandroid_deps = [
13
+ "fbsource//xplat/third-party/linker_lib:atomic",
14
+ "fbsource//third-party/toolchains:log",
15
+ ],
16
+ linker_flags = select({
17
+ "DEFAULT": [],
18
+ "ovr_config//os:android": [
19
+ "-Wl,--no-undefined",
20
+ ],
21
+ }),
22
+ platforms = (CXX, ANDROID, APPLE, FBCODE, WINDOWS),
23
+ deps = [
24
+ "fbsource//xplat/folly:memory",
25
+ "fbsource//third-party/glog:glog",
26
+ ],
27
+ **kwargs
28
+ )