Copy disabled (too large)
Download .txt
Showing preview only (16,382K chars total). Download the full file to get everything.
Repository: facebook/folly
Branch: main
Commit: 8539216d20b7
Files: 3157
Total size: 23.2 MB
Directory structure:
gitextract_rc_779ue/
├── .buckconfig
├── .buckconfig.d/
│ └── common.buckconfig
├── .buckroot
├── .devcontainer/
│ ├── Containerfile
│ └── devcontainer.json
├── .github/
│ ├── dependabot.yml
│ ├── scripts/
│ │ ├── bad_targets
│ │ └── buck_build_and_test.sh
│ └── workflows/
│ ├── TagIt.yml
│ ├── devcontainer.yml
│ ├── getdeps_linux.yml
│ ├── getdeps_mac.yml
│ ├── getdeps_shared-libs_linux.yml
│ ├── getdeps_windows.yml
│ └── oss-build-and-test.yml
├── .gitignore
├── .projectid
├── BUCK
├── CMake/
│ ├── FindCython.cmake
│ ├── FindFastFloat.cmake
│ ├── FindFmt.cmake
│ ├── FindLZ4.cmake
│ ├── FindLibAIO.cmake
│ ├── FindLibDwarf.cmake
│ ├── FindLibUring.cmake
│ ├── FindLibiberty.cmake
│ ├── FindLibsodium.cmake
│ ├── FindSnappy.cmake
│ ├── FindZstd.cmake
│ ├── FollyCompilerMSVC.cmake
│ ├── FollyCompilerUnix.cmake
│ ├── FollyConfigChecks.cmake
│ ├── FollyFunctions.cmake
│ ├── GenPkgConfig.cmake
│ ├── folly-config.cmake.in
│ ├── folly-config.h.cmake
│ ├── folly-deps.cmake
│ └── libfolly.pc.in
├── CMakeLists.txt
├── CMakeListsForBuck2.txt
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── LICENSE
├── PACKAGE
├── README.md
├── buck2
├── build/
│ ├── buck2/
│ │ ├── README.md
│ │ └── install_deps/
│ │ ├── BUCK
│ │ ├── install_deps.sh
│ │ └── repos/
│ │ ├── fedora
│ │ ├── homebrew
│ │ └── ubuntu
│ └── fbcode_builder/
│ ├── .gitignore
│ ├── CMake/
│ │ ├── FBBuildOptions.cmake
│ │ ├── FBCMakeParseArgs.cmake
│ │ ├── FBCompilerSettings.cmake
│ │ ├── FBCompilerSettingsMSVC.cmake
│ │ ├── FBCompilerSettingsUnix.cmake
│ │ ├── FBPythonBinary.cmake
│ │ ├── FBPythonTestAddTests.cmake
│ │ ├── FBThriftCppLibrary.cmake
│ │ ├── FBThriftLibrary.cmake
│ │ ├── FBThriftPyLibrary.cmake
│ │ ├── FindCares.cmake
│ │ ├── FindDoubleConversion.cmake
│ │ ├── FindGMock.cmake
│ │ ├── FindGflags.cmake
│ │ ├── FindGlog.cmake
│ │ ├── FindLMDB.cmake
│ │ ├── FindLibEvent.cmake
│ │ ├── FindLibUnwind.cmake
│ │ ├── FindLibiberty.cmake
│ │ ├── FindPCRE.cmake
│ │ ├── FindPCRE2.cmake
│ │ ├── FindRe2.cmake
│ │ ├── FindSodium.cmake
│ │ ├── FindXxhash.cmake
│ │ ├── FindZstd.cmake
│ │ ├── Findibverbs.cmake
│ │ ├── RustStaticLibrary.cmake
│ │ ├── fb_py_test_main.py
│ │ ├── fb_py_win_main.c
│ │ └── make_fbpy_archive.py
│ ├── LICENSE
│ ├── README.md
│ ├── getdeps/
│ │ ├── __init__.py
│ │ ├── builder.py
│ │ ├── buildopts.py
│ │ ├── cache.py
│ │ ├── cargo.py
│ │ ├── copytree.py
│ │ ├── dyndeps.py
│ │ ├── envfuncs.py
│ │ ├── errors.py
│ │ ├── expr.py
│ │ ├── fetcher.py
│ │ ├── include_rewriter.py
│ │ ├── load.py
│ │ ├── manifest.py
│ │ ├── platform.py
│ │ ├── py_wheel_builder.py
│ │ ├── runcmd.py
│ │ ├── subcmd.py
│ │ └── test/
│ │ ├── expr_test.py
│ │ ├── fixtures/
│ │ │ └── duplicate/
│ │ │ ├── foo
│ │ │ └── subdir/
│ │ │ └── foo
│ │ ├── manifest_test.py
│ │ ├── platform_test.py
│ │ ├── retry_test.py
│ │ ├── scratch_test.py
│ │ └── strip_marker_test.py
│ ├── getdeps.py
│ ├── manifests/
│ │ ├── CLI11
│ │ ├── autoconf
│ │ ├── automake
│ │ ├── benchmark
│ │ ├── blake3
│ │ ├── boost
│ │ ├── boost-python
│ │ ├── bz2
│ │ ├── c-ares
│ │ ├── cabal
│ │ ├── cachelib
│ │ ├── cinderx-3_14
│ │ ├── cinderx-main
│ │ ├── clang
│ │ ├── clang19
│ │ ├── cmake
│ │ ├── cpptoml
│ │ ├── double-conversion
│ │ ├── double-conversion-python
│ │ ├── eden
│ │ ├── edencommon
│ │ ├── exprtk
│ │ ├── fast_float
│ │ ├── fatal
│ │ ├── fb303
│ │ ├── fboss
│ │ ├── fbthrift
│ │ ├── fbthrift-python
│ │ ├── fizz
│ │ ├── fizz-python
│ │ ├── fmt
│ │ ├── fmt-python
│ │ ├── folly
│ │ ├── folly-python
│ │ ├── gcc12
│ │ ├── gcc14
│ │ ├── gflags
│ │ ├── ghc
│ │ ├── git-lfs
│ │ ├── glean
│ │ ├── glog
│ │ ├── googletest
│ │ ├── gperf
│ │ ├── hexdump
│ │ ├── hsthrift
│ │ ├── iproute2
│ │ ├── jom
│ │ ├── jq
│ │ ├── katran
│ │ ├── libaio
│ │ ├── libaio-python
│ │ ├── libbpf
│ │ ├── libcurl
│ │ ├── libdwarf
│ │ ├── libdwarf-python
│ │ ├── libelf
│ │ ├── libevent
│ │ ├── libevent-python
│ │ ├── libffi
│ │ ├── libgit2
│ │ ├── libgpiod
│ │ ├── libiberty
│ │ ├── libiberty-python
│ │ ├── libibverbs
│ │ ├── libmnl
│ │ ├── libnl
│ │ ├── liboqs
│ │ ├── libsai
│ │ ├── libsodium
│ │ ├── libunwind
│ │ ├── libusb
│ │ ├── libyaml
│ │ ├── llvm
│ │ ├── lmdb
│ │ ├── lz4
│ │ ├── lz4-python
│ │ ├── magic_enum
│ │ ├── mcrouter
│ │ ├── mononoke
│ │ ├── mononoke_integration
│ │ ├── moxygen
│ │ ├── mvfst
│ │ ├── mvfst-python
│ │ ├── ncurses
│ │ ├── nghttp2
│ │ ├── ninja
│ │ ├── nlohmann-json
│ │ ├── nmap
│ │ ├── numa
│ │ ├── openr
│ │ ├── openssl
│ │ ├── osxfuse
│ │ ├── patchelf
│ │ ├── pcre2
│ │ ├── perl
│ │ ├── pexpect
│ │ ├── proxygen
│ │ ├── python
│ │ ├── python-3_14
│ │ ├── python-click
│ │ ├── python-filelock
│ │ ├── python-main
│ │ ├── python-psutil
│ │ ├── python-ptyprocess
│ │ ├── python-pyyaml
│ │ ├── python-setuptools
│ │ ├── python-setuptools-69
│ │ ├── python-six
│ │ ├── python-toml
│ │ ├── ragel
│ │ ├── range-v3
│ │ ├── rdma-core
│ │ ├── re2
│ │ ├── rebalancer
│ │ ├── ripgrep
│ │ ├── rocksdb
│ │ ├── rust-shed
│ │ ├── sapling
│ │ ├── snappy
│ │ ├── sparsemap
│ │ ├── sqlite3
│ │ ├── systemd
│ │ ├── tabulate
│ │ ├── tree
│ │ ├── wangle
│ │ ├── wangle-python
│ │ ├── watchman
│ │ ├── xxhash
│ │ ├── xz
│ │ ├── yaml-cpp
│ │ ├── zlib
│ │ ├── zlib-python
│ │ ├── zstd
│ │ └── zstd-python
│ └── patches/
│ ├── boost_1_83_0.patch
│ ├── iproute2_oss.patch
│ ├── libiberty_install_pic_lib.patch
│ └── zlib_dont_build_more_than_needed.patch
├── build.bat
├── build.sh
└── folly/
├── .clang-format
├── AtomicHashArray-inl.h
├── AtomicHashArray.h
├── AtomicHashMap-inl.h
├── AtomicHashMap.h
├── AtomicIntrusiveLinkedList.h
├── AtomicLinkedList.h
├── AtomicUnorderedMap.h
├── BUCK
├── BUILD_MODE.bzl
├── Benchmark.cpp
├── Benchmark.h
├── BenchmarkUtil.cpp
├── BenchmarkUtil.h
├── Bits.h
├── CMakeLists.txt
├── CODING_GUIDELINES.md
├── CPortability.h
├── CancellationToken-inl.h
├── CancellationToken.cpp
├── CancellationToken.h
├── Chrono.h
├── ClockGettimeWrappers.cpp
├── ClockGettimeWrappers.h
├── ConcurrentBitSet.h
├── ConcurrentLazy.h
├── ConcurrentSkipList-inl.h
├── ConcurrentSkipList.h
├── ConstexprMath.h
├── ConstructorCallbackList.h
├── Conv.cpp
├── Conv.h
├── CppAttributes.h
├── CpuId.h
├── DefaultKeepAliveExecutor.h
├── Demangle.cpp
├── Demangle.h
├── DiscriminatedPtr.h
├── DynamicConverter.h
├── Exception.h
├── ExceptionString.cpp
├── ExceptionString.h
├── ExceptionWrapper-inl.h
├── ExceptionWrapper.cpp
├── ExceptionWrapper.h
├── Executor.cpp
├── Executor.h
├── Expected.h
├── FBString.h
├── FBVector.h
├── File.cpp
├── File.h
├── FileUtil.cpp
├── FileUtil.h
├── Fingerprint.cpp
├── Fingerprint.h
├── FixedString.h
├── FmtUtility.cpp
├── FmtUtility.h
├── FollyMemcpy.cpp
├── FollyMemcpy.h
├── FollyMemset.cpp
├── FollyMemset.h
├── Format-inl.h
├── Format.cpp
├── Format.h
├── FormatArg.h
├── FormatTraits.h
├── Function.h
├── GLog.h
├── GroupVarint.cpp
├── GroupVarint.h
├── Hash.h
├── IPAddress.cpp
├── IPAddress.h
├── IPAddressException.h
├── IPAddressV4.cpp
├── IPAddressV4.h
├── IPAddressV6.cpp
├── IPAddressV6.h
├── Indestructible.h
├── IndexedMemPool.h
├── IntrusiveList.h
├── Lazy.h
├── Likely.h
├── MPMCPipeline.h
├── MPMCQueue.h
├── MacAddress.cpp
├── MacAddress.h
├── MapUtil.h
├── Math.h
├── MaybeManagedPtr.h
├── Memory.h
├── MicroLock.cpp
├── MicroLock.h
├── MicroSpinLock.h
├── MoveWrapper.h
├── ObserverContainer.h
├── OperationCancelled.h
├── Optional.h
├── Overload.h
├── PackedSyncPtr.h
├── Padded.h
├── Poly-inl.h
├── Poly.h
├── PolyException.h
├── Portability.h
├── Preprocessor.h
├── ProducerConsumerQueue.h
├── RWSpinLock.h
├── Random-inl.h
├── Random.cpp
├── Random.h
├── Range.h
├── Replaceable.h
├── ScopeGuard.cpp
├── ScopeGuard.h
├── SharedMutex.cpp
├── SharedMutex.h
├── Singleton-inl.h
├── Singleton.cpp
├── Singleton.h
├── SingletonThreadLocal.cpp
├── SingletonThreadLocal.h
├── SocketAddress.cpp
├── SocketAddress.h
├── SpinLock.h
├── String-inl.h
├── String.cpp
├── String.h
├── Subprocess.cpp
├── Subprocess.h
├── Synchronized.h
├── SynchronizedPtr.h
├── ThreadCachedInt.h
├── ThreadLocal.h
├── TimeoutQueue.cpp
├── TimeoutQueue.h
├── TokenBucket.h
├── Traits.h
├── Try-inl.h
├── Try.cpp
├── Try.h
├── UTF8String.h
├── Unicode.cpp
├── Unicode.h
├── Unit.h
├── Uri-inl.h
├── Uri.cpp
├── Uri.h
├── Utility.h
├── VERSION
├── Varint.h
├── VirtualExecutor.h
├── algorithm/
│ ├── BUCK
│ ├── BinaryHeap.h
│ ├── CMakeLists.txt
│ ├── StableRadixSort.h
│ ├── simd/
│ │ ├── BUCK
│ │ ├── CMakeLists.txt
│ │ ├── Contains.cpp
│ │ ├── Contains.h
│ │ ├── FindFixed.h
│ │ ├── Ignore.h
│ │ ├── Movemask.h
│ │ ├── detail/
│ │ │ ├── BUCK
│ │ │ ├── CMakeLists.txt
│ │ │ ├── ContainsImpl.h
│ │ │ ├── SimdAnyOf.h
│ │ │ ├── SimdForEach.h
│ │ │ ├── SimdPlatform.h
│ │ │ ├── Traits.h
│ │ │ ├── UnrollUtils.h
│ │ │ └── test/
│ │ │ ├── BUCK
│ │ │ ├── SimdAnyOfTest.cpp
│ │ │ ├── SimdForEachTest.cpp
│ │ │ ├── TraitsTest.cpp
│ │ │ └── UnrollUtilsTest.cpp
│ │ ├── find_first_of.h
│ │ ├── find_first_of_extra.h
│ │ └── test/
│ │ ├── BUCK
│ │ ├── ContainsTest.cpp
│ │ ├── FindFixedBenchmark.cpp
│ │ ├── FindFixedTest.cpp
│ │ ├── MovemaskTest.cpp
│ │ ├── find_first_of_bench.cpp
│ │ └── find_first_of_test.cpp
│ └── test/
│ ├── BUCK
│ ├── BinaryHeapTest.cpp
│ ├── StableRadixSortBenchmark.cpp
│ └── StableRadixSortTest.cpp
├── base64.h
├── buck_config/
│ ├── BUCK
│ └── constraints/
│ └── BUCK
├── build/
│ ├── bootstrap-osx-homebrew.sh
│ └── build-debs-ubuntu-18.04.sh
├── channels/
│ ├── BUCK
│ ├── CMakeLists.txt
│ ├── Channel-fwd.h
│ ├── Channel-inl.h
│ ├── Channel.h
│ ├── ChannelCallbackHandle.h
│ ├── ChannelProcessor-inl.h
│ ├── ChannelProcessor.h
│ ├── ConsumeChannel-inl.h
│ ├── ConsumeChannel.h
│ ├── FanoutChannel-inl.h
│ ├── FanoutChannel.h
│ ├── FanoutSender-inl.h
│ ├── FanoutSender.h
│ ├── MaxConcurrentRateLimiter.cpp
│ ├── MaxConcurrentRateLimiter.h
│ ├── Merge-inl.h
│ ├── Merge.h
│ ├── MergeChannel-inl.h
│ ├── MergeChannel.h
│ ├── MultiplexChannel-inl.h
│ ├── MultiplexChannel.h
│ ├── OnClosedException.h
│ ├── Producer-inl.h
│ ├── Producer.h
│ ├── ProxyChannel-inl.h
│ ├── ProxyChannel.h
│ ├── RateLimiter.h
│ ├── Transform-inl.h
│ ├── Transform.h
│ ├── detail/
│ │ ├── AtomicQueue.h
│ │ ├── BUCK
│ │ ├── CMakeLists.txt
│ │ ├── ChannelBridge.h
│ │ ├── IntrusivePtr.h
│ │ ├── MultiplexerTraits.h
│ │ ├── PointerVariant.h
│ │ ├── Utility.h
│ │ └── test/
│ │ ├── AtomicQueueTest.cpp
│ │ ├── BUCK
│ │ └── PointerVariantTest.cpp
│ └── test/
│ ├── BUCK
│ ├── ChannelProcessorTest.cpp
│ ├── ChannelTest.cpp
│ ├── ChannelTestUtil.h
│ ├── FanoutChannelTest.cpp
│ ├── FanoutSenderTest.cpp
│ ├── MaxConcurrentRateLimiterTest.cpp
│ ├── MergeChannelTest.cpp
│ ├── MergeTest.cpp
│ ├── MultiplexChannelTest.cpp
│ ├── ProducerTest.cpp
│ ├── ProxyChannelTest.cpp
│ └── TransformTest.cpp
├── chrono/
│ ├── BUCK
│ ├── CMakeLists.txt
│ ├── Clock.h
│ ├── Conv.h
│ ├── Hardware.h
│ └── test/
│ ├── BUCK
│ ├── ClockTest.cpp
│ └── ConvTest.cpp
├── cli/
│ ├── Args.cpp
│ ├── Args.h
│ ├── BUCK
│ ├── CMakeLists.txt
│ ├── NestedCommandLineApp.cpp
│ ├── NestedCommandLineApp.h
│ ├── ProgramOptions.cpp
│ ├── ProgramOptions.h
│ └── test/
│ ├── ArgsTest.cpp
│ ├── BUCK
│ ├── NestedCommandLineAppExample.cpp
│ ├── NestedCommandLineAppTest.cpp
│ ├── NestedCommandLineAppTestHelper.cpp
│ ├── ProgramOptionsTest.cpp
│ └── ProgramOptionsTestHelper.cpp
├── codec/
│ ├── BUCK
│ ├── CMakeLists.txt
│ ├── Uuid.h
│ ├── hex.h
│ └── test/
│ ├── BUCK
│ ├── UuidBenchmark.cpp
│ ├── UuidTest.cpp
│ └── hex_test.cpp
├── compression/
│ ├── BUCK
│ ├── CMakeLists.txt
│ ├── Compression.cpp
│ ├── Compression.h
│ ├── CompressionContextPool.h
│ ├── CompressionContextPoolSingletons.cpp
│ ├── CompressionContextPoolSingletons.h
│ ├── CompressionCoreLocalContextPool.h
│ ├── Instructions.h
│ ├── QuotientMultiSet-inl.h
│ ├── QuotientMultiSet.cpp
│ ├── QuotientMultiSet.h
│ ├── Select64.cpp
│ ├── Select64.h
│ ├── Utils.h
│ ├── Zlib.cpp
│ ├── Zlib.h
│ ├── Zstd.cpp
│ ├── Zstd.h
│ ├── elias_fano/
│ │ ├── BUCK
│ │ ├── BitVectorCoding.h
│ │ ├── CMakeLists.txt
│ │ ├── CodingDetail.h
│ │ ├── EliasFanoCoding.h
│ │ └── test/
│ │ ├── BUCK
│ │ ├── BitVectorCodingTest.cpp
│ │ └── EliasFanoCodingTest.cpp
│ └── test/
│ ├── BUCK
│ ├── CodingTestUtils.cpp
│ ├── CodingTestUtils.h
│ ├── CompressionContextPoolBenchmark.cpp
│ ├── CompressionContextPoolTest.cpp
│ ├── CompressionTest.cpp
│ ├── InstructionsTest.cpp
│ ├── LargeTest.cpp
│ ├── QuotientMultiSetBenchmark.cpp
│ ├── QuotientMultiSetTest.cpp
│ └── Select64Test.cpp
├── concurrency/
│ ├── AtomicSharedPtr.h
│ ├── BUCK
│ ├── CMakeLists.txt
│ ├── CacheLocality.cpp
│ ├── CacheLocality.h
│ ├── ConcurrentHashMap.h
│ ├── CoreCachedSharedPtr.h
│ ├── DeadlockDetector.cpp
│ ├── DeadlockDetector.h
│ ├── DynamicBoundedQueue.h
│ ├── PriorityUnboundedQueueSet.h
│ ├── ProcessLocalUniqueId.cpp
│ ├── ProcessLocalUniqueId.h
│ ├── SingletonRelaxedCounter.h
│ ├── ThreadCachedSynchronized.h
│ ├── UnboundedQueue.h
│ ├── container/
│ │ ├── BUCK
│ │ ├── CMakeLists.txt
│ │ ├── FlatCombiningPriorityQueue.h
│ │ ├── LockFreeRingBuffer.h
│ │ ├── RelaxedConcurrentPriorityQueue.h
│ │ ├── SingleWriterFixedHashMap.h
│ │ ├── atomic_grow_array.h
│ │ └── test/
│ │ ├── BUCK
│ │ ├── FlatCombiningPriorityQueueTest.cpp
│ │ ├── LockFreeRingBufferTest.cpp
│ │ ├── RelaxedConcurrentPriorityQueueTest.cpp
│ │ ├── SingleWriterFixedHashMapTest.cpp
│ │ └── atomic_grow_array_test.cpp
│ ├── detail/
│ │ ├── AtomicSharedPtr-detail.h
│ │ └── ConcurrentHashMap-detail.h
│ ├── memory/
│ │ ├── AtomicReadMostlyMainPtr.cpp
│ │ ├── AtomicReadMostlyMainPtr.h
│ │ ├── BUCK
│ │ ├── CMakeLists.txt
│ │ ├── PrimaryPtr.h
│ │ ├── ReadMostlySharedPtr.h
│ │ ├── TLRefCount.h
│ │ └── test/
│ │ ├── AtomicReadMostlyMainPtrBenchmark.cpp
│ │ ├── AtomicReadMostlyMainPtrTest.cpp
│ │ ├── BUCK
│ │ ├── PrimaryPtrTest.cpp
│ │ ├── ReadMostlySharedPtrBenchmark.cpp
│ │ ├── ReadMostlySharedPtrStressTest.cpp
│ │ ├── ReadMostlySharedPtrTest.cpp
│ │ ├── RefCountBenchmark.cpp
│ │ └── RefCountTest.cpp
│ └── test/
│ ├── AtomicSharedPtrCounted.h
│ ├── AtomicSharedPtrPerformance.cpp
│ ├── AtomicSharedPtrTest.cpp
│ ├── BUCK
│ ├── CacheLocalityBenchmark.cpp
│ ├── CacheLocalityInitMain.cpp
│ ├── CacheLocalityTest.cpp
│ ├── ConcurrentHashMapBench.cpp
│ ├── ConcurrentHashMapStressTest.cpp
│ ├── ConcurrentHashMapTest.cpp
│ ├── CoreCachedSharedPtrTest.cpp
│ ├── DynamicBoundedQueueTest.cpp
│ ├── PriorityUnboundedQueueSetTest.cpp
│ ├── ProcessLocalUniqueIdTest.cpp
│ ├── SingletonRelaxedCounterBench.cpp
│ ├── SingletonRelaxedCounterTest.cpp
│ ├── ThreadCachedSynchronizedBench.cpp
│ ├── ThreadCachedSynchronizedTest.cpp
│ └── UnboundedQueueTest.cpp
├── container/
│ ├── Access.h
│ ├── Array.h
│ ├── BUCK
│ ├── BitIterator.h
│ ├── CMakeLists.txt
│ ├── CollectionUtil.h
│ ├── Enumerate.h
│ ├── EvictingCacheMap.h
│ ├── F14.md
│ ├── F14Map-fwd.h
│ ├── F14Map.h
│ ├── F14Set-fwd.h
│ ├── F14Set.h
│ ├── FBVector.h
│ ├── Foreach-inl.h
│ ├── Foreach.h
│ ├── HeterogeneousAccess-fwd.h
│ ├── HeterogeneousAccess.h
│ ├── IntrusiveHeap.h
│ ├── IntrusiveList.h
│ ├── Iterator.h
│ ├── MapUtil.h
│ ├── Merge.h
│ ├── RegexMatchCache.cpp
│ ├── RegexMatchCache.h
│ ├── Reserve.h
│ ├── SparseByteSet.h
│ ├── StdBitset.h
│ ├── View.h
│ ├── WeightedEvictingCacheMap.h
│ ├── detail/
│ │ ├── BUCK
│ │ ├── BitIteratorDetail.h
│ │ ├── BoolWrapper.h
│ │ ├── CMakeLists.txt
│ │ ├── F14Defaults.h
│ │ ├── F14IntrinsicsAvailability.h
│ │ ├── F14MapFallback.h
│ │ ├── F14Mask.h
│ │ ├── F14Policy.h
│ │ ├── F14SetFallback.h
│ │ ├── F14Table.cpp
│ │ ├── F14Table.h
│ │ ├── Util.h
│ │ ├── tape_detail.h
│ │ └── test/
│ │ ├── BUCK
│ │ ├── BoolWrapperTest.cpp
│ │ └── F14DetailTest.cpp
│ ├── heap_vector_types.h
│ ├── irange.h
│ ├── range_traits.h
│ ├── small_vector.h
│ ├── sorted_vector_types.h
│ ├── span.h
│ ├── tape.h
│ ├── test/
│ │ ├── .clang-tidy
│ │ ├── AccessTest.cpp
│ │ ├── ArrayTest.cpp
│ │ ├── BUCK
│ │ ├── BitIteratorBench.cpp
│ │ ├── BitIteratorTest.cpp
│ │ ├── CollectionUtilTest.cpp
│ │ ├── EnumerateTest.cpp
│ │ ├── EvictingCacheMapBench.cpp
│ │ ├── EvictingCacheMapTest.cpp
│ │ ├── F14AsanSupportTest.cpp
│ │ ├── F14FwdTest.cpp
│ │ ├── F14InterprocessTest.cpp
│ │ ├── F14MapTest.cpp
│ │ ├── F14PolicyTest.cpp
│ │ ├── F14SetTest.cpp
│ │ ├── F14SmallOverheads.cpp
│ │ ├── F14TestUtil.h
│ │ ├── FBVectorBenchmark.cpp
│ │ ├── FBVectorBenchmarks.cpp.h
│ │ ├── FBVectorTest.cpp
│ │ ├── FBVectorTests.cpp.h
│ │ ├── ForeachBenchmark.cpp
│ │ ├── ForeachTest.cpp
│ │ ├── HashMapsBench.cpp
│ │ ├── HeterogeneousAccessTest.cpp
│ │ ├── IRangeTest.cpp
│ │ ├── IntrusiveHeapTest.cpp
│ │ ├── IteratorTest.cpp
│ │ ├── MapUtilTest.cpp
│ │ ├── MergeTest.cpp
│ │ ├── RegexMatchCacheTest.cpp
│ │ ├── ReserveTest.cpp
│ │ ├── SparseByteSetBenchmark.cpp
│ │ ├── SparseByteSetTest.cpp
│ │ ├── StdBitsetBenchmark.cpp
│ │ ├── StdBitsetTest.cpp
│ │ ├── TrackingTypes.h
│ │ ├── UtilTest.cpp
│ │ ├── WeightedEvictingCacheMapTest.cpp
│ │ ├── heap_vector_types_test.cpp
│ │ ├── range_traits_test.cpp
│ │ ├── small_vector_test.cpp
│ │ ├── sorted_vector_test.cpp
│ │ ├── span_test.cpp
│ │ ├── tape_bench.cpp
│ │ ├── tape_test.cpp
│ │ └── vector_bool_test.cpp
│ └── vector_bool.h
├── coro/
│ ├── Accumulate-inl.h
│ ├── Accumulate.h
│ ├── AsyncGenerator.h
│ ├── AsyncPipe.h
│ ├── AsyncScope.h
│ ├── AsyncStack.h
│ ├── AutoCleanup-fwd.h
│ ├── AutoCleanup.h
│ ├── BUCK
│ ├── BasePromise.h
│ ├── Baton.cpp
│ ├── Baton.h
│ ├── BlockingWait.h
│ ├── BoundedQueue.h
│ ├── CMakeLists.txt
│ ├── Cleanup.h
│ ├── Collect-inl.h
│ ├── Collect.h
│ ├── Concat-inl.h
│ ├── Concat.h
│ ├── Coroutine.h
│ ├── CurrentExecutor.h
│ ├── DetachOnCancel.h
│ ├── Error.h
│ ├── Filter-inl.h
│ ├── Filter.h
│ ├── FutureUtil.h
│ ├── Generator.h
│ ├── GmockHelpers.h
│ ├── GtestHelpers.h
│ ├── Invoke.h
│ ├── Merge-inl.h
│ ├── Merge.h
│ ├── Mutex.cpp
│ ├── Mutex.h
│ ├── Nothrow.h
│ ├── Promise.h
│ ├── README.md
│ ├── Result.h
│ ├── Retry.h
│ ├── RustAdaptors.h
│ ├── ScopeExit.h
│ ├── SerialQueueRunner.cpp
│ ├── SerialQueueRunner.h
│ ├── SharedLock.h
│ ├── SharedMutex.cpp
│ ├── SharedMutex.h
│ ├── SharedPromise.h
│ ├── Sleep-inl.h
│ ├── Sleep.h
│ ├── SmallUnboundedQueue.h
│ ├── Synchronized.h
│ ├── Task.h
│ ├── TaskWrapper.h
│ ├── TimedWait.h
│ ├── Timeout-inl.h
│ ├── Timeout.h
│ ├── Traits.h
│ ├── Transform-inl.h
│ ├── Transform.h
│ ├── UnboundedQueue.h
│ ├── ValueOrError.h
│ ├── ValueOrFatal.h
│ ├── ViaIfAsync.h
│ ├── WithAsyncStack.h
│ ├── WithCancellation.h
│ ├── detail/
│ │ ├── BUCK
│ │ ├── Barrier.h
│ │ ├── BarrierTask.h
│ │ ├── CMakeLists.txt
│ │ ├── CurrentAsyncFrame.h
│ │ ├── Helpers.h
│ │ ├── InlineTask.h
│ │ ├── Malloc.cpp
│ │ ├── Malloc.h
│ │ ├── ManualLifetime.h
│ │ ├── PickTaskWrapper.h
│ │ ├── Traits.h
│ │ └── test/
│ │ ├── BUCK
│ │ └── PickTaskWrapperTest.cpp
│ ├── safe/
│ │ ├── AsyncClosure-fwd.h
│ │ ├── AsyncClosure.h
│ │ ├── BUCK
│ │ ├── BindCaptures.h
│ │ ├── CMakeLists.txt
│ │ ├── Captures.h
│ │ ├── NowTask.h
│ │ ├── SafeTask.h
│ │ ├── detail/
│ │ │ ├── AsyncClosure.h
│ │ │ ├── BUCK
│ │ │ ├── BindAsyncClosure.h
│ │ │ ├── CMakeLists.txt
│ │ │ ├── DefineMovableDeepConstLrefCopyable.h
│ │ │ └── test/
│ │ │ ├── BUCK
│ │ │ ├── BindAsyncClosureTest.cpp
│ │ │ └── DefineMovableDeepConstLrefCopyableTest.cpp
│ │ ├── docs/
│ │ │ ├── AsUnsafe.md
│ │ │ └── Captures.md
│ │ └── test/
│ │ ├── AsyncClosureTest.cpp
│ │ ├── BUCK
│ │ ├── CapturesTest.cpp
│ │ ├── NowTaskTest.cpp
│ │ └── SafeTaskTest.cpp
│ ├── scripts/
│ │ ├── BUCK
│ │ ├── __init__.py
│ │ ├── co_bt.py
│ │ └── test/
│ │ ├── BUCK
│ │ └── co_bt.py
│ └── test/
│ ├── AccumulateTest.cpp
│ ├── AsyncGeneratorBenchmark.cpp
│ ├── AsyncGeneratorTest.cpp
│ ├── AsyncPipeTest.cpp
│ ├── AsyncScopeTest.cpp
│ ├── AsyncStackTest.cpp
│ ├── BUCK
│ ├── BatonTest.cpp
│ ├── BlockingWaitBenchmark.cpp
│ ├── BlockingWaitTest.cpp
│ ├── BoundedQueueTest.cpp
│ ├── CollectAllBenchmark.cpp
│ ├── CollectAllTryBenchmark.cpp
│ ├── CollectTest.cpp
│ ├── ConcatTest.cpp
│ ├── CoroBenchmarkAllocator.cpp
│ ├── CoroBenchmarkNRVO.cpp
│ ├── CoroTest.cpp
│ ├── CoroutineTest.cpp
│ ├── CurrentExecutorTest.cpp
│ ├── ErrorTest.cpp
│ ├── FilterTest.cpp
│ ├── FutureUtilTest.cpp
│ ├── GeneratorTest.cpp
│ ├── GmockHelpersTest.cpp
│ ├── GtestHelpersTest.cpp
│ ├── InlineTaskTest.cpp
│ ├── MergeTest.cpp
│ ├── MutexTest.cpp
│ ├── PromiseBenchmark.cpp
│ ├── PromiseTest.cpp
│ ├── RequestContextTest.cpp
│ ├── RetryTest.cpp
│ ├── RustAdaptorsTest.cpp
│ ├── ScopeExitTest.cpp
│ ├── SerialQueueRunnerTest.cpp
│ ├── SharedMutexBenchmark.cpp
│ ├── SharedMutexTest.cpp
│ ├── SharedPromiseTest.cpp
│ ├── SleepTest.cpp
│ ├── SmallUnboundedQueueTest.cpp
│ ├── SuspendedStackTest.cpp
│ ├── SynchronizedTest.cpp
│ ├── TaskBenchmark.cpp
│ ├── TaskTest.cpp
│ ├── TaskWrapperTest.cpp
│ ├── TimeoutTest.cpp
│ ├── TraitsTest.cpp
│ ├── TransformTest.cpp
│ ├── UnboundedQueueTest.cpp
│ ├── ValueOrErrorTest.cpp
│ ├── ValueOrFatalTest.cpp
│ └── WithAsyncStackTest.cpp
├── crypto/
│ ├── BUCK
│ ├── Blake2xb.cpp
│ ├── Blake2xb.h
│ ├── CMakeLists.txt
│ ├── LtHash-inl.h
│ ├── LtHash.cpp
│ ├── LtHash.h
│ ├── detail/
│ │ ├── BUCK
│ │ ├── CMakeLists.txt
│ │ ├── LtHashInternal.h
│ │ ├── MathOperation_AVX2.cpp
│ │ ├── MathOperation_SSE2.cpp
│ │ └── MathOperation_Simple.cpp
│ └── test/
│ ├── BUCK
│ ├── Blake2xbBenchmark.cpp
│ ├── Blake2xbTest.cpp
│ ├── LtHashBenchmark.cpp
│ └── LtHashTest.cpp
├── debugging/
│ ├── CMakeLists.txt
│ ├── exception_tracer/
│ │ ├── BUCK
│ │ ├── CMakeLists.txt
│ │ ├── Compatibility.h
│ │ ├── ExceptionAbi.h
│ │ ├── ExceptionCounterLib.cpp
│ │ ├── ExceptionCounterLib.h
│ │ ├── ExceptionCounterLibStaticRegistration.cpp
│ │ ├── ExceptionStackTraceLib.cpp
│ │ ├── ExceptionTracer.cpp
│ │ ├── ExceptionTracer.h
│ │ ├── ExceptionTracerLib.cpp
│ │ ├── ExceptionTracerLib.h
│ │ ├── README.md
│ │ ├── SmartExceptionStackTraceHooks.cpp
│ │ ├── SmartExceptionTracer.cpp
│ │ ├── SmartExceptionTracer.h
│ │ ├── SmartExceptionTracerSingleton.cpp
│ │ ├── SmartExceptionTracerSingleton.h
│ │ ├── StackTrace.cpp
│ │ ├── StackTrace.h
│ │ └── test/
│ │ ├── BUCK
│ │ ├── ExceptionCounterTest.cpp
│ │ ├── ExceptionTracerBenchmark.cpp
│ │ ├── ExceptionTracerTest.cpp
│ │ ├── ExceptionTracerUncaughtTest.cpp
│ │ ├── SmartExceptionTracerBenchmark.cpp
│ │ ├── SmartExceptionTracerTest.cpp
│ │ └── exception_tracer_uncaught_test.py
│ └── symbolizer/
│ ├── BUCK
│ ├── CMakeLists.txt
│ ├── Dwarf.cpp
│ ├── Dwarf.h
│ ├── DwarfImpl.cpp
│ ├── DwarfImpl.h
│ ├── DwarfLineNumberVM.cpp
│ ├── DwarfLineNumberVM.h
│ ├── DwarfSection.cpp
│ ├── DwarfSection.h
│ ├── DwarfUtil.cpp
│ ├── DwarfUtil.h
│ ├── Elf-inl.h
│ ├── Elf.cpp
│ ├── Elf.h
│ ├── ElfCache.cpp
│ ├── ElfCache.h
│ ├── LineReader.cpp
│ ├── LineReader.h
│ ├── SignalHandler.cpp
│ ├── SignalHandler.h
│ ├── StackTrace.cpp
│ ├── StackTrace.h
│ ├── SymbolizePrinter.cpp
│ ├── SymbolizePrinter.h
│ ├── SymbolizedFrame.cpp
│ ├── SymbolizedFrame.h
│ ├── Symbolizer.cpp
│ ├── Symbolizer.h
│ ├── detail/
│ │ ├── BUCK
│ │ ├── CMakeLists.txt
│ │ ├── Debug.cpp
│ │ └── Debug.h
│ ├── test/
│ │ ├── BUCK
│ │ ├── Crash.cpp
│ │ ├── DwarfBenchmark.cpp
│ │ ├── ElfTest.cpp
│ │ ├── LineReaderTest.cpp
│ │ ├── SignalHandlerTest.cpp
│ │ ├── SignalHandlerTest.h
│ │ ├── SimpleElf.cpp
│ │ ├── SmallSigAltStackCrash.cpp
│ │ ├── StackTraceBenchmark.cpp
│ │ ├── StackTraceSizeLimitTest.cpp
│ │ ├── StackTraceTest.cpp
│ │ ├── SymbolizedFrameTest.cpp
│ │ ├── SymbolizerTest.cpp
│ │ ├── SymbolizerTestUtils-inl.h
│ │ ├── SymbolizerTestUtils.cpp
│ │ ├── SymbolizerTestUtils.h
│ │ ├── compare-addr2line.sh
│ │ ├── gnu_debuglink_test.sh
│ │ ├── symbolizer_dwp_compability.sh
│ │ ├── tool/
│ │ │ ├── BUCK
│ │ │ └── segv.cpp
│ │ └── validate_folly_symbolizer.bzl
│ └── tool/
│ ├── Addr2Line.cpp
│ ├── BUCK
│ ├── LibSegFault.cpp
│ └── libFollySegFault.so.v
├── defs.bzl
├── detail/
│ ├── AsyncTrace.cpp
│ ├── AsyncTrace.h
│ ├── AtomicHashUtils.h
│ ├── AtomicUnorderedMapUtils.h
│ ├── Avx2.cpp
│ ├── Avx2.h
│ ├── BUCK
│ ├── BenchmarkAdaptive.cpp
│ ├── BenchmarkAdaptive.h
│ ├── CMakeLists.txt
│ ├── DiscriminatedPtrDetail.h
│ ├── FileUtilDetail.cpp
│ ├── FileUtilDetail.h
│ ├── FileUtilVectorDetail.h
│ ├── FingerprintPolynomial.h
│ ├── Futex-inl.h
│ ├── Futex.cpp
│ ├── Futex.h
│ ├── GroupVarintDetail.h
│ ├── IPAddress.cpp
│ ├── IPAddress.h
│ ├── IPAddressSource.h
│ ├── Iterators.h
│ ├── MPMCPipelineDetail.h
│ ├── MemoryIdler.cpp
│ ├── MemoryIdler.h
│ ├── PerfScoped.cpp
│ ├── PerfScoped.h
│ ├── PolyDetail.h
│ ├── RangeCommon.cpp
│ ├── RangeCommon.h
│ ├── RangeSimd.cpp
│ ├── RangeSimd.h
│ ├── RangeSse42.cpp
│ ├── RangeSse42.h
│ ├── SimpleSimdStringUtils.cpp
│ ├── SimpleSimdStringUtils.h
│ ├── SimpleSimdStringUtilsImpl.h
│ ├── Singleton.h
│ ├── SlowFingerprint.h
│ ├── SocketFastOpen.cpp
│ ├── SocketFastOpen.h
│ ├── SplitStringSimd.h
│ ├── SplitStringSimdImpl.h
│ ├── Sse.cpp
│ ├── Sse.h
│ ├── StaticSingletonManager.cpp
│ ├── StaticSingletonManager.h
│ ├── ThreadLocalDetail.cpp
│ ├── ThreadLocalDetail.h
│ ├── TrapOnAvx512.cpp
│ ├── TrapOnAvx512.h
│ ├── TurnSequencer.h
│ ├── TypeList.h
│ ├── UniqueInstance.cpp
│ ├── UniqueInstance.h
│ ├── base64_detail/
│ │ ├── BUCK
│ │ ├── Base64Api.cpp
│ │ ├── Base64Api.h
│ │ ├── Base64Common.h
│ │ ├── Base64Constants.h
│ │ ├── Base64HiddenConstants.h
│ │ ├── Base64SWAR.cpp
│ │ ├── Base64SWAR.h
│ │ ├── Base64Scalar.h
│ │ ├── Base64Simd.h
│ │ ├── Base64_SSE4_2.cpp
│ │ ├── Base64_SSE4_2.h
│ │ ├── Base64_SSE4_2_Platform.h
│ │ ├── CMakeLists.txt
│ │ ├── README.md
│ │ └── test/
│ │ ├── BUCK
│ │ ├── Base64AgainstScalarTest.cpp
│ │ ├── Base64PlatformTest.cpp
│ │ └── Base64SpecialCasesTest.cpp
│ ├── test/
│ │ ├── AsyncTraceTest.cpp
│ │ ├── BUCK
│ │ ├── BenchmarkAdaptiveTest.cpp
│ │ ├── FileUtilDetailTest.cpp
│ │ ├── PerfScopedTest.cpp
│ │ ├── SimpleSimdStringUtilsTest.cpp
│ │ ├── SplitStringSimdTest.cpp
│ │ ├── StaticSingletonManagerTest.cpp
│ │ ├── ThreadLocalBenchmark.cpp
│ │ ├── ThreadLocalDetailTest.cpp
│ │ ├── TrapOnAvx512TestNegative.cpp
│ │ ├── TypeListTest.cpp
│ │ ├── UniqueInstanceTest.cpp
│ │ └── tuple_test.cpp
│ ├── thread_local_globals.cpp
│ ├── thread_local_globals.h
│ └── tuple.h
├── docs/
│ ├── .gitignore
│ ├── AtomicHashMap.md
│ ├── BUCK
│ ├── Benchmark.md
│ ├── BenchmarkAdaptive.md
│ ├── Conv.md
│ ├── Dynamic.md
│ ├── DynamicConverter.md
│ ├── Executors.md
│ ├── FBString.md
│ ├── FBVector.md
│ ├── Format.md
│ ├── Function.md
│ ├── Futures.md
│ ├── GroupVarint.md
│ ├── Hazptr.md
│ ├── Histogram.md
│ ├── MapUtils.md
│ ├── Overview.md
│ ├── PackedSyncPtr.md
│ ├── Poly.md
│ ├── ProducerConsumerQueue.md
│ ├── Rcu.md
│ ├── SmallLocks.md
│ ├── Switch.md
│ ├── Synchronized.md
│ ├── ThreadCachedInt.md
│ ├── ThreadLocal.md
│ ├── Traits.md
│ ├── defs.bzl
│ ├── examples/
│ │ └── folly/
│ │ ├── BUCK
│ │ ├── CancellationCallback.cpp
│ │ ├── CancellationSource.cpp
│ │ ├── CancellationToken.cpp
│ │ ├── DynamicConverter.cpp
│ │ ├── ExecutorGuide.cpp
│ │ ├── File.cpp
│ │ ├── Format.cpp
│ │ ├── Function.cpp
│ │ ├── Likely.cpp
│ │ ├── MapUtil.cpp
│ │ ├── ScopeGuard.cpp
│ │ ├── ScopeGuard2.cpp
│ │ ├── ScopedEventBaseThread.cpp
│ │ ├── ScopedEventBaseThread2.cpp
│ │ ├── Synchronized.cpp
│ │ ├── container/
│ │ │ ├── Array.cpp
│ │ │ └── BUCK
│ │ ├── coro/
│ │ │ ├── AsyncScope.cpp
│ │ │ ├── BUCK
│ │ │ ├── CancellableAsyncScope.cpp
│ │ │ ├── DetachOnCancel.cpp
│ │ │ ├── Promise.cpp
│ │ │ ├── Retry.cpp
│ │ │ ├── Task.cpp
│ │ │ └── WithCancellation.cpp
│ │ ├── dynamic/
│ │ │ ├── BUCK
│ │ │ ├── array.cpp
│ │ │ └── object.cpp
│ │ ├── dynamic.cpp
│ │ ├── hash/
│ │ │ ├── BUCK
│ │ │ └── Hash.cpp
│ │ ├── io/
│ │ │ ├── BUCK
│ │ │ └── IOBuf.cpp
│ │ ├── ipaddress.cpp
│ │ ├── synchronization/
│ │ │ └── Baton.cpp
│ │ └── test/
│ │ ├── BUCK
│ │ ├── TestUtils.cpp
│ │ └── common/
│ │ ├── BUCK
│ │ └── TestMainDemo.cpp
│ ├── small_vector.md
│ └── style.css
├── dynamic-inl.h
├── dynamic.h
├── executors/
│ ├── Async.h
│ ├── BUCK
│ ├── CMakeLists.txt
│ ├── CPUThreadPoolExecutor.cpp
│ ├── CPUThreadPoolExecutor.h
│ ├── Codel.cpp
│ ├── Codel.h
│ ├── DrivableExecutor.h
│ ├── EDFThreadPoolExecutor.cpp
│ ├── EDFThreadPoolExecutor.h
│ ├── ExecutionObserver.cpp
│ ├── ExecutionObserver.h
│ ├── ExecutorWithPriority-inl.h
│ ├── ExecutorWithPriority.cpp
│ ├── ExecutorWithPriority.h
│ ├── FiberIOExecutor.h
│ ├── FunctionScheduler.cpp
│ ├── FunctionScheduler.h
│ ├── FutureExecutor.h
│ ├── GlobalExecutor.cpp
│ ├── GlobalExecutor.h
│ ├── GlobalThreadPoolList.cpp
│ ├── GlobalThreadPoolList.h
│ ├── IOExecutor.h
│ ├── IOObjectCache.h
│ ├── IOThreadPoolDeadlockDetectorObserver.cpp
│ ├── IOThreadPoolDeadlockDetectorObserver.h
│ ├── IOThreadPoolExecutor.cpp
│ ├── IOThreadPoolExecutor.h
│ ├── InlineExecutor.cpp
│ ├── InlineExecutor.h
│ ├── ManualExecutor.cpp
│ ├── ManualExecutor.h
│ ├── MeteredExecutor-inl.h
│ ├── MeteredExecutor.h
│ ├── QueueObserver.cpp
│ ├── QueueObserver.h
│ ├── QueuedImmediateExecutor.cpp
│ ├── QueuedImmediateExecutor.h
│ ├── ScheduledExecutor.h
│ ├── SequencedExecutor.h
│ ├── SerialExecutor-inl.h
│ ├── SerialExecutor.h
│ ├── SerializedExecutor.h
│ ├── SoftRealTimeExecutor.cpp
│ ├── SoftRealTimeExecutor.h
│ ├── StrandExecutor.cpp
│ ├── StrandExecutor.h
│ ├── StripedEDFThreadPoolExecutor.cpp
│ ├── StripedEDFThreadPoolExecutor.h
│ ├── ThreadPoolExecutor.cpp
│ ├── ThreadPoolExecutor.h
│ ├── ThreadedExecutor.cpp
│ ├── ThreadedExecutor.h
│ ├── ThreadedRepeatingFunctionRunner.cpp
│ ├── ThreadedRepeatingFunctionRunner.h
│ ├── TimedDrivableExecutor.cpp
│ ├── TimedDrivableExecutor.h
│ ├── TimekeeperScheduledExecutor.cpp
│ ├── TimekeeperScheduledExecutor.h
│ ├── VirtualExecutor.h
│ ├── task_queue/
│ │ ├── BUCK
│ │ ├── BlockingQueue.h
│ │ ├── CMakeLists.txt
│ │ ├── LifoSemMPMCQueue.h
│ │ ├── PriorityLifoSemMPMCQueue.h
│ │ ├── PriorityUnboundedBlockingQueue.h
│ │ ├── StripedPriorityUnboundedBlockingQueue.h
│ │ ├── UnboundedBlockingQueue.h
│ │ └── test/
│ │ ├── BUCK
│ │ ├── PriorityLifoSemMPMCQueueTest.cpp
│ │ ├── PriorityUnboundedBlockingQueueTest.cpp
│ │ ├── StripedPriorityUnboundedBlockingQueueTest.cpp
│ │ ├── UnboundedBlockingQueueBench.cpp
│ │ └── UnboundedBlockingQueueTest.cpp
│ ├── test/
│ │ ├── AsyncTest.cpp
│ │ ├── BUCK
│ │ ├── CodelTest.cpp
│ │ ├── EDFThreadPoolExecutorBenchmark.cpp
│ │ ├── ExecutorTest.cpp
│ │ ├── ExecutorWithPriorityTest.cpp
│ │ ├── FiberIOExecutorTest.cpp
│ │ ├── FunctionSchedulerTest.cpp
│ │ ├── GlobalCPUExecutorTest.cpp
│ │ ├── GlobalExecutorAssignmentTest.cpp
│ │ ├── GlobalExecutorTest.cpp
│ │ ├── GlobalIOExecutorTest.cpp
│ │ ├── IOThreadPoolDeadlockDetectorObserverTest.cpp
│ │ ├── IOThreadPoolExecutorBaseTestLib.h
│ │ ├── IOThreadPoolExecutorTest.cpp
│ │ ├── MeteredExecutorTest.cpp
│ │ ├── SequencedExecutorTest.cpp
│ │ ├── SerialExecutorTest.cpp
│ │ ├── StrandExecutorTest.cpp
│ │ ├── StripedEDFThreadPoolExecutorTest.cpp
│ │ ├── ThreadPoolExecutorTest.cpp
│ │ ├── ThreadedExecutorTest.cpp
│ │ ├── ThreadedRepeatingFunctionRunnerTest.cpp
│ │ ├── TimedDrivableExecutorTest.cpp
│ │ └── TimekeeperScheduledExecutorTest.cpp
│ └── thread_factory/
│ ├── BUCK
│ ├── CMakeLists.txt
│ ├── InitThreadFactory.h
│ ├── NamedThreadFactory.h
│ ├── PriorityThreadFactory.cpp
│ ├── PriorityThreadFactory.h
│ └── ThreadFactory.h
├── experimental/
│ ├── BUCK
│ ├── CMakeLists.txt
│ ├── EventCount.h
│ ├── FlatCombiningPriorityQueue.h
│ ├── FunctionScheduler.h
│ ├── ThreadedRepeatingFunctionRunner.h
│ ├── channels/
│ │ ├── BUCK
│ │ ├── CMakeLists.txt
│ │ ├── Channel-fwd.h
│ │ ├── Channel-inl.h
│ │ ├── Channel.h
│ │ ├── ChannelCallbackHandle.h
│ │ ├── ChannelProcessor-inl.h
│ │ ├── ChannelProcessor.h
│ │ ├── ConsumeChannel-inl.h
│ │ ├── ConsumeChannel.h
│ │ ├── FanoutChannel-inl.h
│ │ ├── FanoutChannel.h
│ │ ├── FanoutSender-inl.h
│ │ ├── FanoutSender.h
│ │ ├── MaxConcurrentRateLimiter.h
│ │ ├── Merge-inl.h
│ │ ├── Merge.h
│ │ ├── MergeChannel-inl.h
│ │ ├── MergeChannel.h
│ │ ├── MultiplexChannel-inl.h
│ │ ├── MultiplexChannel.h
│ │ ├── OnClosedException.h
│ │ ├── Producer-inl.h
│ │ ├── Producer.h
│ │ ├── ProxyChannel-inl.h
│ │ ├── ProxyChannel.h
│ │ ├── RateLimiter.h
│ │ ├── Transform-inl.h
│ │ ├── Transform.h
│ │ ├── detail/
│ │ │ ├── AtomicQueue.h
│ │ │ ├── BUCK
│ │ │ ├── CMakeLists.txt
│ │ │ ├── ChannelBridge.h
│ │ │ ├── FunctionTraits.h
│ │ │ ├── IntrusivePtr.h
│ │ │ ├── MultiplexerTraits.h
│ │ │ ├── PointerVariant.h
│ │ │ └── Utility.h
│ │ └── test/
│ │ ├── BUCK
│ │ └── ChannelTestUtil.h
│ ├── coro/
│ │ ├── AsyncGenerator.h
│ │ ├── AsyncPipe.h
│ │ ├── AsyncScope.h
│ │ ├── AsyncStack.h
│ │ ├── AutoCleanup-fwd.h
│ │ ├── AutoCleanup.h
│ │ ├── BUCK
│ │ ├── Baton.h
│ │ ├── BlockingWait.h
│ │ ├── BoundedQueue.h
│ │ ├── CMakeLists.txt
│ │ ├── Cleanup.h
│ │ ├── Collect-inl.h
│ │ ├── Collect.h
│ │ ├── Concat-inl.h
│ │ ├── Concat.h
│ │ ├── Coroutine.h
│ │ ├── CurrentExecutor.h
│ │ ├── DetachOnCancel.h
│ │ ├── Filter-inl.h
│ │ ├── Filter.h
│ │ ├── FutureUtil.h
│ │ ├── Generator.h
│ │ ├── GmockHelpers.h
│ │ ├── GtestHelpers.h
│ │ ├── Invoke.h
│ │ ├── Merge-inl.h
│ │ ├── Merge.h
│ │ ├── Mutex.h
│ │ ├── Promise.h
│ │ ├── Result.h
│ │ ├── Retry.h
│ │ ├── RustAdaptors.h
│ │ ├── ScopeExit.h
│ │ ├── SharedLock.h
│ │ ├── SharedMutex.h
│ │ ├── SharedPromise.h
│ │ ├── Sleep-inl.h
│ │ ├── Sleep.h
│ │ ├── SmallUnboundedQueue.h
│ │ ├── Task.h
│ │ ├── TimedWait.h
│ │ ├── Timeout-inl.h
│ │ ├── Timeout.h
│ │ ├── Traits.h
│ │ ├── Transform-inl.h
│ │ ├── Transform.h
│ │ ├── UnboundedQueue.h
│ │ ├── ViaIfAsync.h
│ │ ├── WithAsyncStack.h
│ │ ├── WithCancellation.h
│ │ └── detail/
│ │ ├── Barrier.h
│ │ ├── BarrierTask.h
│ │ ├── CurrentAsyncFrame.h
│ │ ├── Helpers.h
│ │ ├── InlineTask.h
│ │ ├── Malloc.h
│ │ ├── ManualLifetime.h
│ │ └── Traits.h
│ ├── crypto/
│ │ ├── BUCK
│ │ ├── Blake2xb.h
│ │ ├── CMakeLists.txt
│ │ └── LtHash.h
│ ├── exception_tracer/
│ │ ├── BUCK
│ │ ├── CMakeLists.txt
│ │ ├── ExceptionAbi.h
│ │ ├── ExceptionCounterLib.h
│ │ ├── ExceptionTracer.h
│ │ ├── ExceptionTracerLib.h
│ │ ├── SmartExceptionTracer.h
│ │ ├── SmartExceptionTracerSingleton.h
│ │ └── StackTrace.h
│ ├── flat_combining/
│ │ ├── BUCK
│ │ ├── CMakeLists.txt
│ │ ├── FlatCombining.h
│ │ └── test/
│ │ ├── BUCK
│ │ ├── FlatCombiningExamples.h
│ │ └── FlatCombiningTestHelpers.h
│ ├── observer/
│ │ ├── BUCK
│ │ ├── CMakeLists.txt
│ │ ├── CoreCachedObserver.h
│ │ ├── HazptrObserver.h
│ │ ├── Observable-inl.h
│ │ ├── Observable.h
│ │ ├── Observer-inl.h
│ │ ├── Observer-pre.h
│ │ ├── Observer.h
│ │ ├── ReadMostlyTLObserver.h
│ │ ├── SimpleObservable-inl.h
│ │ ├── SimpleObservable.h
│ │ ├── WithJitter-inl.h
│ │ ├── WithJitter.h
│ │ ├── detail/
│ │ │ ├── BUCK
│ │ │ ├── CMakeLists.txt
│ │ │ ├── Core.h
│ │ │ ├── GraphCycleDetector.h
│ │ │ └── ObserverManager.h
│ │ └── test/
│ │ └── BUCK
│ ├── settings/
│ │ ├── BUCK
│ │ ├── CMakeLists.txt
│ │ ├── Immutables.h
│ │ ├── Settings.h
│ │ ├── Types.h
│ │ └── detail/
│ │ └── SettingsImpl.h
│ ├── symbolizer/
│ │ ├── BUCK
│ │ ├── CMakeLists.txt
│ │ ├── Dwarf.h
│ │ ├── DwarfImpl.h
│ │ ├── DwarfLineNumberVM.h
│ │ ├── DwarfSection.h
│ │ ├── DwarfUtil.h
│ │ ├── Elf-inl.h
│ │ ├── Elf.h
│ │ ├── ElfCache.h
│ │ ├── LineReader.h
│ │ ├── SignalHandler.h
│ │ ├── StackTrace.h
│ │ ├── SymbolizePrinter.h
│ │ ├── SymbolizedFrame.h
│ │ ├── Symbolizer.h
│ │ └── detail/
│ │ ├── BUCK
│ │ ├── CMakeLists.txt
│ │ └── Debug.h
│ └── test/
│ ├── BUCK
│ └── CodingTestUtils.h
├── ext/
│ ├── BUCK
│ ├── CMakeLists.txt
│ ├── buck2/
│ │ ├── BUCK
│ │ ├── CMakeLists.txt
│ │ └── test_ext.cpp
│ ├── test_ext.cpp
│ └── test_ext.h
├── external/
│ ├── .clang-format
│ ├── CMakeLists.txt
│ ├── aor/
│ │ ├── BUCK
│ │ ├── CMakeLists.txt
│ │ ├── asmdefs.h
│ │ ├── memcpy-advsimd.S
│ │ ├── memcpy-armv8.S
│ │ ├── memcpy-mops.S
│ │ ├── memcpy_sve.S
│ │ ├── memmove-mops.S
│ │ ├── memset-advsimd.S
│ │ ├── memset-mops.S
│ │ └── memset-sve.S
│ ├── farmhash/
│ │ ├── BUCK
│ │ ├── CMakeLists.txt
│ │ ├── farmhash.cpp
│ │ ├── farmhash.h
│ │ └── test/
│ │ ├── BUCK
│ │ └── farmhash_test.cpp
│ ├── fast-crc32/
│ │ ├── BUCK
│ │ ├── CMakeLists.txt
│ │ ├── avx512_crc32c_v8s3x4.cpp
│ │ ├── avx512_crc32c_v8s3x4.h
│ │ ├── neon_crc32c_v3s4x2e_v2.cpp
│ │ ├── neon_crc32c_v3s4x2e_v2.h
│ │ ├── neon_eor3_crc32_v8s2x4e_s1x2.cpp
│ │ ├── neon_eor3_crc32_v8s2x4e_s1x2.h
│ │ ├── neon_eor3_crc32c_v8s2x4e_s2x1.cpp
│ │ ├── neon_eor3_crc32c_v8s2x4e_s2x1.h
│ │ ├── sse_crc32c_v8s3x3.cpp
│ │ └── sse_crc32c_v8s3x3.h
│ ├── nvidia/
│ │ ├── CMakeLists.txt
│ │ ├── detail/
│ │ │ ├── BUCK
│ │ │ ├── CMakeLists.txt
│ │ │ ├── RangeSve2.cpp
│ │ │ └── RangeSve2.h
│ │ └── hash/
│ │ ├── BUCK
│ │ ├── CMakeLists.txt
│ │ ├── Checksum.cpp
│ │ └── detail/
│ │ ├── BUCK
│ │ ├── CMakeLists.txt
│ │ ├── Crc32cCombineDetail.h
│ │ └── Crc32cDetail.cpp
│ └── rapidhash/
│ ├── BUCK
│ ├── CMakeLists.txt
│ └── rapidhash.h
├── fibers/
│ ├── AddTasks-inl.h
│ ├── AddTasks.h
│ ├── AtomicBatchDispatcher-inl.h
│ ├── AtomicBatchDispatcher.h
│ ├── BUCK
│ ├── BatchDispatcher.h
│ ├── BatchSemaphore.cpp
│ ├── BatchSemaphore.h
│ ├── Baton-inl.h
│ ├── Baton.cpp
│ ├── Baton.h
│ ├── BoostContextCompatibility.h
│ ├── CMakeLists.txt
│ ├── CallOnce.h
│ ├── EventBaseLoopController-inl.h
│ ├── EventBaseLoopController.h
│ ├── ExecutorBasedLoopController.h
│ ├── ExecutorLoopController-inl.h
│ ├── ExecutorLoopController.h
│ ├── Fiber-inl.h
│ ├── Fiber.cpp
│ ├── Fiber.h
│ ├── FiberManager-inl.h
│ ├── FiberManager.cpp
│ ├── FiberManager.h
│ ├── FiberManagerInternal-inl.h
│ ├── FiberManagerInternal.h
│ ├── FiberManagerMap-inl.h
│ ├── FiberManagerMap.h
│ ├── ForEach-inl.h
│ ├── ForEach.h
│ ├── GenericBaton.h
│ ├── GuardPageAllocator.cpp
│ ├── GuardPageAllocator.h
│ ├── LoopController.h
│ ├── Promise-inl.h
│ ├── Promise.h
│ ├── README.md
│ ├── Semaphore.cpp
│ ├── Semaphore.h
│ ├── SemaphoreBase.cpp
│ ├── SemaphoreBase.h
│ ├── SimpleLoopController.cpp
│ ├── SimpleLoopController.h
│ ├── TimedMutex-inl.h
│ ├── TimedMutex.h
│ ├── WhenN-inl.h
│ ├── WhenN.h
│ ├── async/
│ │ ├── Async.cpp
│ │ ├── Async.h
│ │ ├── AsyncStack.h
│ │ ├── BUCK
│ │ ├── Baton.h
│ │ ├── CMakeLists.txt
│ │ ├── Collect-inl.h
│ │ ├── Collect.h
│ │ ├── FiberManager.h
│ │ ├── Future.h
│ │ ├── Promise.h
│ │ ├── README.md
│ │ ├── Task.h
│ │ ├── WaitUtils.h
│ │ └── test/
│ │ ├── AsyncTest.cpp
│ │ └── BUCK
│ ├── detail/
│ │ ├── AtomicBatchDispatcher.cpp
│ │ ├── AtomicBatchDispatcher.h
│ │ ├── BUCK
│ │ └── CMakeLists.txt
│ ├── scripts/
│ │ └── gdb.py
│ ├── test/
│ │ ├── BUCK
│ │ ├── BatchSemaphoreTest.cpp
│ │ ├── FibersBenchmark.cpp
│ │ ├── FibersTest.cpp
│ │ ├── FibersTestApp.cpp
│ │ ├── SemaphoreTest.cpp
│ │ ├── StackOverflow.cpp
│ │ └── TimedMutexBenchmark.cpp
│ └── traits.h
├── folly_extended_library.bzl
├── functional/
│ ├── ApplyTuple.h
│ ├── BUCK
│ ├── CMakeLists.txt
│ ├── Invoke.h
│ ├── Partial.h
│ ├── protocol.h
│ ├── test/
│ │ ├── ApplyTupleTest.cpp
│ │ ├── BUCK
│ │ ├── InvokeTest.cpp
│ │ ├── PartialTest.cpp
│ │ ├── protocol_test.cpp
│ │ └── traits_test.cpp
│ └── traits.h
├── futures/
│ ├── BUCK
│ ├── Barrier.cpp
│ ├── Barrier.h
│ ├── CMakeLists.txt
│ ├── Cleanup.h
│ ├── Future-inl.h
│ ├── Future-pre.h
│ ├── Future.cpp
│ ├── Future.h
│ ├── FutureSplitter.h
│ ├── HeapTimekeeper.cpp
│ ├── HeapTimekeeper.h
│ ├── ManualTimekeeper.cpp
│ ├── ManualTimekeeper.h
│ ├── Portability.h
│ ├── Promise-inl.h
│ ├── Promise.cpp
│ ├── Promise.h
│ ├── Retrying.h
│ ├── SharedPromise-inl.h
│ ├── SharedPromise.cpp
│ ├── SharedPromise.h
│ ├── ThreadWheelTimekeeper.cpp
│ ├── ThreadWheelTimekeeper.h
│ ├── WTCallback.h
│ ├── detail/
│ │ ├── BUCK
│ │ ├── CMakeLists.txt
│ │ ├── Core.cpp
│ │ ├── Core.h
│ │ └── Types.h
│ └── test/
│ ├── BUCK
│ ├── BarrierTest.cpp
│ ├── Benchmark.cpp
│ ├── CallbackLifetimeTest.cpp
│ ├── CleanupTest.cpp
│ ├── CollectTest.cpp
│ ├── ContextTest.cpp
│ ├── ConversionOperatorTest.cpp
│ ├── CoreTest.cpp
│ ├── EnsureTest.cpp
│ ├── FilterTest.cpp
│ ├── FutureSplitterTest.cpp
│ ├── FutureTest.cpp
│ ├── HeaderCompileTest.cpp
│ ├── HeapTimekeeperTest.cpp
│ ├── InterruptTest.cpp
│ ├── ManualTimekeeperTest.cpp
│ ├── MapTest.cpp
│ ├── NonCopyableLambdaTest.cpp
│ ├── PollTest.cpp
│ ├── PromiseTest.cpp
│ ├── ReduceTest.cpp
│ ├── RetryingTest.cpp
│ ├── SelfDestructTest.cpp
│ ├── SemiFutureTest.cpp
│ ├── SharedPromiseTest.cpp
│ ├── TestExecutor.cpp
│ ├── TestExecutor.h
│ ├── TestExecutorTest.cpp
│ ├── ThenCompileTest.cpp
│ ├── ThenCompileTest.h
│ ├── ThenTest.cpp
│ ├── ThreadWheelTimekeeperTest.cpp
│ ├── TimekeeperTest.cpp
│ ├── TimekeeperTestLib.h
│ ├── TimesTest.cpp
│ ├── UnwrapTest.cpp
│ ├── ViaTest.cpp
│ ├── WaitTest.cpp
│ ├── WhenTest.cpp
│ ├── WhileDoTest.cpp
│ ├── WillEqualTest.cpp
│ ├── WindowTest.cpp
│ └── then_compile_test.rb
├── gen/
│ ├── BUCK
│ ├── Base-inl.h
│ ├── Base.h
│ ├── CMakeLists.txt
│ ├── Combine-inl.h
│ ├── Combine.h
│ ├── Core-inl.h
│ ├── Core.h
│ ├── File-inl.h
│ ├── File.h
│ ├── IStream.h
│ ├── Parallel-inl.h
│ ├── Parallel.h
│ ├── ParallelMap-inl.h
│ ├── ParallelMap.h
│ ├── String-inl.h
│ ├── String.h
│ └── test/
│ ├── BUCK
│ ├── BaseBenchmark.cpp
│ ├── BaseTest.cpp
│ ├── Bench.h
│ ├── CombineTest.cpp
│ ├── FileBenchmark.cpp
│ ├── FileTest.cpp
│ ├── IStreamTest.cpp
│ ├── ParallelBenchmark.cpp
│ ├── ParallelMapBenchmark.cpp
│ ├── ParallelMapTest.cpp
│ ├── ParallelTest.cpp
│ ├── StringBenchmark.cpp
│ └── StringTest.cpp
├── hash/
│ ├── BUCK
│ ├── CMakeLists.txt
│ ├── Checksum.cpp
│ ├── Checksum.h
│ ├── FarmHash.h
│ ├── FnvHash.h
│ ├── Hash.h
│ ├── HsiehHash.h
│ ├── MurmurHash.h
│ ├── SpookyHashV1.cpp
│ ├── SpookyHashV1.h
│ ├── SpookyHashV2.cpp
│ ├── SpookyHashV2.h
│ ├── UniqueHashKey.cpp
│ ├── UniqueHashKey.h
│ ├── detail/
│ │ ├── BUCK
│ │ ├── CMakeLists.txt
│ │ ├── ChecksumDetail.cpp
│ │ ├── ChecksumDetail.h
│ │ ├── Crc32CombineDetail.cpp
│ │ ├── Crc32cDetail.cpp
│ │ ├── RandomSeed.h
│ │ └── test/
│ │ ├── BUCK
│ │ └── RandomSeedTest.cpp
│ ├── rapidhash.h
│ ├── test/
│ │ ├── BUCK
│ │ ├── ChecksumBenchmark.cpp
│ │ ├── ChecksumTest.cpp
│ │ ├── FarmHashTest.cpp
│ │ ├── FnvHashTest.cpp
│ │ ├── HashBenchmark.cpp
│ │ ├── HashTest.cpp
│ │ ├── HsiehHashTest.cpp
│ │ ├── MurmurHashTest.cpp
│ │ ├── RapidHashTest.cpp
│ │ ├── SpookyHashV1Test.cpp
│ │ ├── SpookyHashV2Test.cpp
│ │ ├── StdCompatibleHashTest.cpp
│ │ ├── UniqueHashKeyTest.cpp
│ │ └── traits_test.cpp
│ └── traits.h
├── init/
│ ├── BUCK
│ ├── CMakeLists.txt
│ ├── Init.cpp
│ ├── Init.h
│ ├── Phase.cpp
│ ├── Phase.h
│ └── test/
│ ├── BUCK
│ └── PhaseTest.cpp
├── io/
│ ├── BUCK
│ ├── CMakeLists.txt
│ ├── Cursor-inl.h
│ ├── Cursor.cpp
│ ├── Cursor.h
│ ├── FsUtil.cpp
│ ├── FsUtil.h
│ ├── GlobalShutdownSocketSet.cpp
│ ├── GlobalShutdownSocketSet.h
│ ├── HugePages.cpp
│ ├── HugePages.h
│ ├── IOBuf.cpp
│ ├── IOBuf.h
│ ├── IOBufIovecBuilder.cpp
│ ├── IOBufIovecBuilder.h
│ ├── IOBufQueue.cpp
│ ├── IOBufQueue.h
│ ├── RecordIO-inl.h
│ ├── RecordIO.cpp
│ ├── RecordIO.h
│ ├── ShutdownSocketSet.cpp
│ ├── ShutdownSocketSet.h
│ ├── SocketOptionMap.cpp
│ ├── SocketOptionMap.h
│ ├── SocketOptionValue.cpp
│ ├── SocketOptionValue.h
│ ├── TypedIOBuf.h
│ ├── async/
│ │ ├── AsyncBase.cpp
│ │ ├── AsyncBase.h
│ │ ├── AsyncIO.cpp
│ │ ├── AsyncIO.h
│ │ ├── AsyncIoUringSocket.cpp
│ │ ├── AsyncIoUringSocket.h
│ │ ├── AsyncIoUringSocketFactory.cpp
│ │ ├── AsyncIoUringSocketFactory.h
│ │ ├── AsyncPipe.cpp
│ │ ├── AsyncPipe.h
│ │ ├── AsyncSSLSocket.cpp
│ │ ├── AsyncSSLSocket.h
│ │ ├── AsyncServerSocket.cpp
│ │ ├── AsyncServerSocket.h
│ │ ├── AsyncSignalHandler.cpp
│ │ ├── AsyncSignalHandler.h
│ │ ├── AsyncSocket.cpp
│ │ ├── AsyncSocket.h
│ │ ├── AsyncSocketBase.h
│ │ ├── AsyncSocketException.cpp
│ │ ├── AsyncSocketException.h
│ │ ├── AsyncSocketTransport.cpp
│ │ ├── AsyncSocketTransport.h
│ │ ├── AsyncTimeout.cpp
│ │ ├── AsyncTimeout.h
│ │ ├── AsyncTransport.h
│ │ ├── AsyncTransportCertificate.h
│ │ ├── AsyncUDPServerSocket.h
│ │ ├── AsyncUDPSocket.cpp
│ │ ├── AsyncUDPSocket.h
│ │ ├── AtomicNotificationQueue-inl.h
│ │ ├── AtomicNotificationQueue.h
│ │ ├── BUCK
│ │ ├── CMakeLists.txt
│ │ ├── CertificateIdentityVerifier.h
│ │ ├── DecoratedAsyncTransportWrapper.h
│ │ ├── DelayedDestruction.cpp
│ │ ├── DelayedDestruction.h
│ │ ├── DelayedDestructionBase.h
│ │ ├── DestructorCheck.h
│ │ ├── Epoll.h
│ │ ├── EpollBackend.cpp
│ │ ├── EpollBackend.h
│ │ ├── EventBase.cpp
│ │ ├── EventBase.h
│ │ ├── EventBaseAtomicNotificationQueue-inl.h
│ │ ├── EventBaseAtomicNotificationQueue.h
│ │ ├── EventBaseBackendBase.cpp
│ │ ├── EventBaseBackendBase.h
│ │ ├── EventBaseLocal.cpp
│ │ ├── EventBaseLocal.h
│ │ ├── EventBaseManager.cpp
│ │ ├── EventBaseManager.h
│ │ ├── EventBasePoller.cpp
│ │ ├── EventBasePoller.h
│ │ ├── EventBaseThread.cpp
│ │ ├── EventBaseThread.h
│ │ ├── EventHandler.cpp
│ │ ├── EventHandler.h
│ │ ├── EventUtil.h
│ │ ├── HHWheelTimer-fwd.h
│ │ ├── HHWheelTimer.cpp
│ │ ├── HHWheelTimer.h
│ │ ├── IoUring.cpp
│ │ ├── IoUring.h
│ │ ├── IoUringBackend.cpp
│ │ ├── IoUringBackend.h
│ │ ├── IoUringBase.h
│ │ ├── IoUringBufferPoolSharing.cpp
│ │ ├── IoUringBufferPoolSharing.h
│ │ ├── IoUringConnect.cpp
│ │ ├── IoUringConnect.h
│ │ ├── IoUringEvent.cpp
│ │ ├── IoUringEvent.h
│ │ ├── IoUringEventBaseLocal.cpp
│ │ ├── IoUringEventBaseLocal.h
│ │ ├── IoUringOptions.h
│ │ ├── IoUringProvidedBufferRing.cpp
│ │ ├── IoUringProvidedBufferRing.h
│ │ ├── IoUringRecv.cpp
│ │ ├── IoUringRecv.h
│ │ ├── IoUringSend.cpp
│ │ ├── IoUringSend.h
│ │ ├── IoUringZeroCopyBufferPool.cpp
│ │ ├── IoUringZeroCopyBufferPool.h
│ │ ├── Liburing.h
│ │ ├── MuxIOThreadPoolExecutor.cpp
│ │ ├── MuxIOThreadPoolExecutor.h
│ │ ├── NotificationQueue.h
│ │ ├── PasswordInFile.cpp
│ │ ├── PasswordInFile.h
│ │ ├── README.md
│ │ ├── Request.cpp
│ │ ├── Request.h
│ │ ├── SSLContext.cpp
│ │ ├── SSLContext.h
│ │ ├── SSLOptions.cpp
│ │ ├── SSLOptions.h
│ │ ├── STTimerFDTimeoutManager.cpp
│ │ ├── STTimerFDTimeoutManager.h
│ │ ├── ScopedEventBaseThread.cpp
│ │ ├── ScopedEventBaseThread.h
│ │ ├── SimpleAsyncIO.cpp
│ │ ├── SimpleAsyncIO.h
│ │ ├── TerminateCancellationToken.cpp
│ │ ├── TerminateCancellationToken.h
│ │ ├── TimeoutManager.cpp
│ │ ├── TimeoutManager.h
│ │ ├── TimerFD.cpp
│ │ ├── TimerFD.h
│ │ ├── TimerFDTimeoutManager.cpp
│ │ ├── TimerFDTimeoutManager.h
│ │ ├── VirtualEventBase.cpp
│ │ ├── VirtualEventBase.h
│ │ ├── WriteChainAsyncTransportWrapper.h
│ │ ├── WriteFlags.h
│ │ ├── fdsock/
│ │ │ ├── AsyncFdSocket.cpp
│ │ │ ├── AsyncFdSocket.h
│ │ │ ├── BUCK
│ │ │ ├── CMakeLists.txt
│ │ │ ├── SocketFds.cpp
│ │ │ ├── SocketFds.h
│ │ │ └── test/
│ │ │ ├── AsyncFdSocketTest.cpp
│ │ │ └── BUCK
│ │ ├── observer/
│ │ │ ├── AsyncSocketObserverContainer.h
│ │ │ ├── AsyncSocketObserverInterface.h
│ │ │ ├── BUCK
│ │ │ └── CMakeLists.txt
│ │ ├── ssl/
│ │ │ ├── BUCK
│ │ │ ├── BasicTransportCertificate.h
│ │ │ ├── CMakeLists.txt
│ │ │ ├── OpenSSLTransportCertificate.h
│ │ │ ├── OpenSSLUtils.cpp
│ │ │ ├── OpenSSLUtils.h
│ │ │ ├── SSLErrors.cpp
│ │ │ ├── SSLErrors.h
│ │ │ ├── TLSDefinitions.h
│ │ │ └── test/
│ │ │ ├── BUCK
│ │ │ ├── BasicTransportCertificateTest.cpp
│ │ │ ├── OpenSSLUtilsTest.cpp
│ │ │ └── SSLErrorsTest.cpp
│ │ └── test/
│ │ ├── AsyncBaseTestLib.cpp
│ │ ├── AsyncBaseTestLib.h
│ │ ├── AsyncIOTest.cpp
│ │ ├── AsyncIoUringSocketTest.cpp
│ │ ├── AsyncPipeTest.cpp
│ │ ├── AsyncSSLSocketTest.cpp
│ │ ├── AsyncSSLSocketTest.h
│ │ ├── AsyncSSLSocketTest2.cpp
│ │ ├── AsyncSSLSocketWriteTest.cpp
│ │ ├── AsyncSignalHandlerTestLib.h
│ │ ├── AsyncSocketExceptionTest.cpp
│ │ ├── AsyncSocketObserverTest.cpp
│ │ ├── AsyncSocketTest.cpp
│ │ ├── AsyncSocketTest.h
│ │ ├── AsyncSocketTest2.cpp
│ │ ├── AsyncSocketTest2.h
│ │ ├── AsyncTimeoutTest.cpp
│ │ ├── AsyncTransportTest.cpp
│ │ ├── AsyncUDPSocketGSOGROTest.cpp
│ │ ├── AsyncUDPSocketSendmmsgTest.cpp
│ │ ├── AsyncUDPSocketTest.cpp
│ │ ├── AtomicNotificationQueueTest.cpp
│ │ ├── BUCK
│ │ ├── BlockingSocket.h
│ │ ├── CallbackStateEnum.h
│ │ ├── ConnCallback.h
│ │ ├── DecoratedAsyncTransportWrapperTest.cpp
│ │ ├── DelayedDestructionBaseTest.cpp
│ │ ├── DelayedDestructionTest.cpp
│ │ ├── DestructorCheckTest.cpp
│ │ ├── EpollBackendTest.cpp
│ │ ├── EventBaseBenchmark.cpp
│ │ ├── EventBaseLocalTest.cpp
│ │ ├── EventBaseTest.cpp
│ │ ├── EventBaseTestLib.h
│ │ ├── EventBaseThreadTest.cpp
│ │ ├── EventHandlerTest.cpp
│ │ ├── HHWheelTimerHighResBenchmark.cpp
│ │ ├── HHWheelTimerHighResTest.cpp
│ │ ├── HHWheelTimerSlowTests.cpp
│ │ ├── HHWheelTimerTest.cpp
│ │ ├── IOBenchmark.cpp
│ │ ├── IoTestTempFileUtil.cpp
│ │ ├── IoTestTempFileUtil.h
│ │ ├── IoUringBackendBench.cpp
│ │ ├── IoUringBackendSetupTest.cpp
│ │ ├── IoUringBackendTest.cpp
│ │ ├── IoUringEventBaseLocalTest.cpp
│ │ ├── IoUringEventTest.cpp
│ │ ├── IoUringProvidedBufferRingTest.cpp
│ │ ├── IoUringTest.cpp
│ │ ├── IoUringZeroCopyBufferPoolTest.cpp
│ │ ├── MockAsyncSSLSocket.h
│ │ ├── MockAsyncServerSocket.h
│ │ ├── MockAsyncSocket.h
│ │ ├── MockAsyncSocketLegacyObserver.h
│ │ ├── MockAsyncSocketObserver.h
│ │ ├── MockAsyncTransport.h
│ │ ├── MockAsyncUDPSocket.h
│ │ ├── MockTimeoutManager.h
│ │ ├── MuxIOThreadPoolExecutorTest.cpp
│ │ ├── NotificationQueueBenchmark.cpp
│ │ ├── NotificationQueueTest.cpp
│ │ ├── PollLoopHooksTest.cpp
│ │ ├── RegisteredFdBenchmark.cpp
│ │ ├── RequestContextBenchmark.cpp
│ │ ├── RequestContextHelper.h
│ │ ├── RequestContextTest.cpp
│ │ ├── SSLContextRegressionTest.cpp
│ │ ├── SSLContextTest.cpp
│ │ ├── SSLOptionsTest.cpp
│ │ ├── SSLSessionTest.cpp
│ │ ├── SSLUtil.cpp
│ │ ├── SSLUtil.h
│ │ ├── ScopedBoundPort.cpp
│ │ ├── ScopedBoundPort.h
│ │ ├── ScopedEventBaseThreadTest.cpp
│ │ ├── SimpleAsyncIOTest.cpp
│ │ ├── SocketClient.cpp
│ │ ├── SocketPair.cpp
│ │ ├── SocketPair.h
│ │ ├── TFOUtil.cpp
│ │ ├── TFOUtil.h
│ │ ├── TerminateCancellationTokenTest.cpp
│ │ ├── TestSSLServer.cpp
│ │ ├── TestSSLServer.h
│ │ ├── TimeUtil.cpp
│ │ ├── TimeUtil.h
│ │ ├── TimeUtilTest.cpp
│ │ ├── TimerFDTimeoutManagerTest.cpp
│ │ ├── UndelayedDestruction.h
│ │ ├── Util.h
│ │ ├── WriteChainAsyncTransportWrapperTest.cpp
│ │ ├── WriteFlagsTest.cpp
│ │ ├── ZeroCopy.cpp
│ │ ├── ZeroCopy.h
│ │ ├── ZeroCopyBenchmark.cpp
│ │ ├── ZeroCopyTest.cpp
│ │ └── certs/
│ │ ├── BUCK
│ │ ├── ca-cert.pem
│ │ ├── ca-key.pem
│ │ ├── client_ca_cert.pem
│ │ ├── client_ca_key.pem
│ │ ├── client_cert.pem
│ │ ├── client_chain.pem
│ │ ├── client_intermediate_ca.pem
│ │ ├── client_intermediate_ca_key.pem
│ │ ├── client_key.pem
│ │ ├── clienti_cert.pem
│ │ ├── clienti_key.pem
│ │ ├── defs.bzl
│ │ ├── generate_certs.sh
│ │ ├── tests-cert.pem
│ │ └── tests-key.pem
│ ├── coro/
│ │ ├── BUCK
│ │ ├── CMakeLists.txt
│ │ ├── ServerSocket.cpp
│ │ ├── ServerSocket.h
│ │ ├── Transport.cpp
│ │ ├── Transport.h
│ │ ├── TransportCallbackBase.h
│ │ ├── TransportCallbacks.h
│ │ └── test/
│ │ ├── BUCK
│ │ └── TransportTest.cpp
│ ├── test/
│ │ ├── BUCK
│ │ ├── FsUtilTest.cpp
│ │ ├── IOBufBenchmark.cpp
│ │ ├── IOBufCBTest.cpp
│ │ ├── IOBufCursorBenchmark.cpp
│ │ ├── IOBufCursorTest.cpp
│ │ ├── IOBufIovecBuilderTest.cpp
│ │ ├── IOBufQueueTest.cpp
│ │ ├── IOBufTest.cpp
│ │ ├── NetworkBenchmark.cpp
│ │ ├── QueueAppenderBenchmark.cpp
│ │ ├── RecordIOTest.cpp
│ │ ├── ShutdownSocketSetTest.cpp
│ │ └── SocketOptionValueTest.cpp
│ └── tool/
│ ├── BUCK
│ └── HugePageUtil.cpp
├── json/
│ ├── BUCK
│ ├── CMakeLists.txt
│ ├── DynamicConverter.h
│ ├── DynamicParser-inl.h
│ ├── DynamicParser.cpp
│ ├── DynamicParser.h
│ ├── JSONSchema.cpp
│ ├── JSONSchema.h
│ ├── JsonMockUtil.h
│ ├── JsonTestUtil.cpp
│ ├── JsonTestUtil.h
│ ├── bser/
│ │ ├── BUCK
│ │ ├── Bser.h
│ │ ├── CMakeLists.txt
│ │ ├── Dump.cpp
│ │ ├── Load.cpp
│ │ └── test/
│ │ ├── BUCK
│ │ └── BserTest.cpp
│ ├── dynamic-inl.h
│ ├── dynamic.cpp
│ ├── dynamic.h
│ ├── json.cpp
│ ├── json.h
│ ├── json_patch.cpp
│ ├── json_patch.h
│ ├── json_pointer.cpp
│ ├── json_pointer.h
│ ├── test/
│ │ ├── BUCK
│ │ ├── DynamicBenchmark.cpp
│ │ ├── DynamicConverterTest.cpp
│ │ ├── DynamicOtherTest.cpp
│ │ ├── DynamicParserTest.cpp
│ │ ├── DynamicTest.cpp
│ │ ├── JSONSchemaTest.cpp
│ │ ├── Json5Test.cpp
│ │ ├── JsonBenchmark.cpp
│ │ ├── JsonOtherTest.cpp
│ │ ├── JsonTest.cpp
│ │ ├── JsonTestUtilTest.cpp
│ │ ├── json_patch_test.cpp
│ │ └── json_pointer_test.cpp
│ └── tool/
│ ├── BUCK
│ └── JSONSchemaTester.cpp
├── json.h
├── json_patch.h
├── json_pointer.h
├── lang/
│ ├── Access.h
│ ├── Align.h
│ ├── Aligned.h
│ ├── Assume.h
│ ├── BUCK
│ ├── Badge.h
│ ├── Bits.h
│ ├── BitsClass.h
│ ├── Builtin.h
│ ├── CArray.h
│ ├── CMakeLists.txt
│ ├── CString.cpp
│ ├── CString.h
│ ├── Cast.h
│ ├── CheckedMath.h
│ ├── CustomizationPoint.h
│ ├── Exception.cpp
│ ├── Exception.h
│ ├── Extern.h
│ ├── Hint-inl.h
│ ├── Hint.h
│ ├── Keep.h
│ ├── MustUseImmediately.h
│ ├── New.h
│ ├── Ordering.h
│ ├── Pretty.h
│ ├── PropagateConst.h
│ ├── RValueReferenceWrapper.h
│ ├── SafeAlias-fwd.h
│ ├── SafeAlias.h
│ ├── SafeAssert.cpp
│ ├── SafeAssert.h
│ ├── SafeClosure.h
│ ├── SafeClosure.md
│ ├── StaticConst.h
│ ├── Strong.h
│ ├── Switch.h
│ ├── Thunk.h
│ ├── ToAscii.cpp
│ ├── ToAscii.h
│ ├── TypeInfo.h
│ ├── UncaughtExceptions.cpp
│ ├── UncaughtExceptions.h
│ ├── VectorTraits.h
│ ├── bind/
│ │ ├── AsArgument.h
│ │ ├── BUCK
│ │ ├── Bind.h
│ │ ├── Bind.md
│ │ ├── CMakeLists.txt
│ │ ├── Named.h
│ │ ├── NamedToStorage.h
│ │ ├── ToStorage.h
│ │ └── test/
│ │ ├── AsArgumentTest.cpp
│ │ ├── BUCK
│ │ ├── BindTest.cpp
│ │ ├── NamedTest.cpp
│ │ ├── NamedToStorageTest.cpp
│ │ └── ToStorageTest.cpp
│ ├── cstring_view.h
│ └── test/
│ ├── AlignTest.cpp
│ ├── AlignedTest.cpp
│ ├── BUCK
│ ├── BadgeTest.cpp
│ ├── BitsBenchmark.cpp
│ ├── BitsClassBenchmark.cpp
│ ├── BitsClassTest.cpp
│ ├── BitsTest.cpp
│ ├── CStringTest.cpp
│ ├── CastTest.cpp
│ ├── CheckedMathTest.cpp
│ ├── ExceptionBench.cpp
│ ├── ExceptionTest.cpp
│ ├── ExternTest.cpp
│ ├── HintTest.cpp
│ ├── MustUseImmediatelyTest.cpp
│ ├── NewTest.cpp
│ ├── OrderingTest.cpp
│ ├── PrettyTest.cpp
│ ├── PropagateConstTest.cpp
│ ├── RValueReferenceWrapperTest.cpp
│ ├── SafeAliasTest.cpp
│ ├── SafeAssertTest.cpp
│ ├── SafeClosureTest.cpp
│ ├── StrongTest.cpp
│ ├── SwitchTest.cpp
│ ├── ThunkTest.cpp
│ ├── ToAsciiBench.cpp
│ ├── ToAsciiTest.cpp
│ ├── TypeInfoTest.cpp
│ ├── VectorTraitsTest.cpp
│ └── cstring_view_test.cpp
├── logging/
│ ├── AsyncFileWriter.cpp
│ ├── AsyncFileWriter.h
│ ├── AsyncLogWriter.cpp
│ ├── AsyncLogWriter.h
│ ├── AutoTimer.h
│ ├── BUCK
│ ├── BridgeFromGoogleLogging.cpp
│ ├── BridgeFromGoogleLogging.h
│ ├── CMakeLists.txt
│ ├── CustomLogFormatter.cpp
│ ├── CustomLogFormatter.h
│ ├── FileHandlerFactory.cpp
│ ├── FileHandlerFactory.h
│ ├── FileWriterFactory.cpp
│ ├── FileWriterFactory.h
│ ├── GlogStyleFormatter.cpp
│ ├── GlogStyleFormatter.h
│ ├── ImmediateFileWriter.cpp
│ ├── ImmediateFileWriter.h
│ ├── Init.cpp
│ ├── Init.h
│ ├── InitWeak.cpp
│ ├── LogCategory.cpp
│ ├── LogCategory.h
│ ├── LogCategoryConfig.cpp
│ ├── LogCategoryConfig.h
│ ├── LogConfig.cpp
│ ├── LogConfig.h
│ ├── LogConfigParser.cpp
│ ├── LogConfigParser.h
│ ├── LogFormatter.h
│ ├── LogHandler.h
│ ├── LogHandlerConfig.cpp
│ ├── LogHandlerConfig.h
│ ├── LogHandlerFactory.h
│ ├── LogLevel.cpp
│ ├── LogLevel.h
│ ├── LogMessage.cpp
│ ├── LogMessage.h
│ ├── LogName.cpp
│ ├── LogName.h
│ ├── LogStream.cpp
│ ├── LogStream.h
│ ├── LogStreamProcessor.cpp
│ ├── LogStreamProcessor.h
│ ├── LogWriter.h
│ ├── Logger.cpp
│ ├── Logger.h
│ ├── LoggerDB.cpp
│ ├── LoggerDB.h
│ ├── ObjectToString.cpp
│ ├── ObjectToString.h
│ ├── README.md
│ ├── RateLimiter.cpp
│ ├── RateLimiter.h
│ ├── StandardLogHandler.cpp
│ ├── StandardLogHandler.h
│ ├── StandardLogHandlerFactory.cpp
│ ├── StandardLogHandlerFactory.h
│ ├── StreamHandlerFactory.cpp
│ ├── StreamHandlerFactory.h
│ ├── docs/
│ │ ├── Comparisons.md
│ │ ├── Config.md
│ │ ├── LogCategories.md
│ │ ├── LogHandlers.md
│ │ ├── LogLevels.md
│ │ ├── Overview.md
│ │ └── Usage.md
│ ├── example/
│ │ ├── BUCK
│ │ ├── CMakeLists.txt
│ │ ├── lib.cpp
│ │ ├── lib.h
│ │ └── main.cpp
│ ├── test/
│ │ ├── AsyncFileWriterTest.cpp
│ │ ├── AsyncLogWriterTest.cpp
│ │ ├── AutoTimerTest.cpp
│ │ ├── BUCK
│ │ ├── BridgeFromGoogleLoggingTest.cpp
│ │ ├── ConfigHelpers.cpp
│ │ ├── ConfigHelpers.h
│ │ ├── ConfigParserTest.cpp
│ │ ├── ConfigUpdateTest.cpp
│ │ ├── CustomLogFormatterTest.cpp
│ │ ├── FileHandlerFactoryTest.cpp
│ │ ├── GlogFormatterTest.cpp
│ │ ├── ImmediateFileWriterTest.cpp
│ │ ├── InitTest.cpp
│ │ ├── LogCategoryTest.cpp
│ │ ├── LogLevelTest.cpp
│ │ ├── LogMessageTest.cpp
│ │ ├── LogNameTest.cpp
│ │ ├── LogStreamTest.cpp
│ │ ├── LoggerDBTest.cpp
│ │ ├── LoggerTest.cpp
│ │ ├── RateLimiterTest.cpp
│ │ ├── StandardLogHandlerFactoryTest.cpp
│ │ ├── StandardLogHandlerTest.cpp
│ │ ├── SyncLevelTest.cpp
│ │ ├── TestLogHandler.cpp
│ │ ├── TestLogHandler.h
│ │ ├── XlogBench.cpp
│ │ ├── XlogFile1.cpp
│ │ ├── XlogFile2.cpp
│ │ ├── XlogHeader1.h
│ │ ├── XlogHeader2.h
│ │ ├── XlogTest.cpp
│ │ ├── fatal_test.py
│ │ ├── helpers/
│ │ │ ├── BUCK
│ │ │ ├── FatalHelper.cpp
│ │ │ ├── LogAfterMain.cpp
│ │ │ ├── LogAfterMainNoInit.cpp
│ │ │ ├── LogOnShutdownLib.cpp
│ │ │ ├── LogOnShutdownLib.h
│ │ │ └── helpers.h
│ │ └── log_after_main.py
│ ├── xlog.cpp
│ └── xlog.h
├── memcpy.S
├── memcpy_select_aarch64.cpp
├── memory/
│ ├── Arena-inl.h
│ ├── Arena.h
│ ├── BUCK
│ ├── CMakeLists.txt
│ ├── IOBufArenaFactory.h
│ ├── IoUringArena.cpp
│ ├── IoUringArena.h
│ ├── IoUringArenaTest.cpp
│ ├── JemallocHugePageAllocator.cpp
│ ├── JemallocHugePageAllocator.h
│ ├── JemallocHugePageAllocatorTest.cpp
│ ├── JemallocNodumpAllocator.cpp
│ ├── JemallocNodumpAllocator.h
│ ├── JemallocNodumpAllocatorTest.cpp
│ ├── MallctlHelper.cpp
│ ├── MallctlHelper.h
│ ├── Malloc.cpp
│ ├── Malloc.h
│ ├── MemoryResource.h
│ ├── ReentrantAllocator.cpp
│ ├── ReentrantAllocator.h
│ ├── SanitizeAddress.cpp
│ ├── SanitizeAddress.h
│ ├── SanitizeLeak.cpp
│ ├── SanitizeLeak.h
│ ├── ThreadCachedArena.cpp
│ ├── ThreadCachedArena.h
│ ├── UninitializedMemoryHacks.h
│ ├── detail/
│ │ ├── BUCK
│ │ ├── CMakeLists.txt
│ │ ├── MallocImpl.cpp
│ │ └── MallocImpl.h
│ ├── not_null-inl.h
│ ├── not_null.h
│ ├── shared_from_this_ptr.h
│ └── test/
│ ├── ArenaTest.cpp
│ ├── BUCK
│ ├── IOBufArenaFactoryTest.cpp
│ ├── MallctlHelperTest.cpp
│ ├── MallocBenchmark.cpp
│ ├── MallocTest.cpp
│ ├── MemoryResourceTest.cpp
│ ├── ReentrantAllocatorTest.cpp
│ ├── SanitizeAddressTest.cpp
│ ├── SanitizeLeakTest.cpp
│ ├── ThreadCachedArenaTest.cpp
│ ├── UninitializedMemoryHacksODR.cpp
│ ├── UninitializedMemoryHacksTest.cpp
│ ├── not_null_test.cpp
│ └── shared_from_this_ptr_test.cpp
├── memset.S
├── memset_select_aarch64.cpp
├── net/
│ ├── BUCK
│ ├── CMakeLists.txt
│ ├── NetOps.cpp
│ ├── NetOps.h
│ ├── NetOpsDispatcher.cpp
│ ├── NetOpsDispatcher.h
│ ├── NetworkSocket.h
│ ├── TcpInfo.cpp
│ ├── TcpInfo.h
│ ├── TcpInfoDispatcher.cpp
│ ├── TcpInfoDispatcher.h
│ ├── TcpInfoTypes.h
│ ├── detail/
│ │ ├── BUCK
│ │ ├── CMakeLists.txt
│ │ ├── SocketFileDescriptorMap.cpp
│ │ ├── SocketFileDescriptorMap.h
│ │ └── test/
│ │ ├── BUCK
│ │ └── SocketFileDescriptorMapTest.cpp
│ └── test/
│ ├── BUCK
│ ├── MockNetOpsDispatcher.h
│ ├── MockTcpInfoDispatcher.h
│ ├── NetOpsTest.cpp
│ ├── TcpInfoTest.cpp
│ └── TcpInfoTestUtil.h
├── observer/
│ ├── BUCK
│ ├── CMakeLists.txt
│ ├── CoreCachedObserver.h
│ ├── HazptrObserver.h
│ ├── Observable-inl.h
│ ├── Observable.h
│ ├── Observer-inl.h
│ ├── Observer-pre.h
│ ├── Observer.h
│ ├── ReadMostlyTLObserver.h
│ ├── SimpleObservable-inl.h
│ ├── SimpleObservable.h
│ ├── WithJitter-inl.h
│ ├── WithJitter.h
│ ├── detail/
│ │ ├── BUCK
│ │ ├── CMakeLists.txt
│ │ ├── Core.cpp
│ │ ├── Core.h
│ │ ├── GraphCycleDetector.h
│ │ ├── ObserverManager.cpp
│ │ └── ObserverManager.h
│ └── test/
│ ├── BUCK
│ ├── ObserverBenchmark.cpp
│ └── ObserverTest.cpp
├── poly/
│ ├── BUCK
│ ├── CMakeLists.txt
│ ├── Nullable.h
│ └── Regular.h
├── portability/
│ ├── Asm.h
│ ├── Atomic.h
│ ├── BUCK
│ ├── Builtins.cpp
│ ├── Builtins.h
│ ├── CMakeLists.txt
│ ├── Config.h
│ ├── Constexpr.h
│ ├── Dirent.cpp
│ ├── Dirent.h
│ ├── Event.h
│ ├── Fcntl.cpp
│ ├── Fcntl.h
│ ├── Filesystem.cpp
│ ├── Filesystem.h
│ ├── FmtCompile.h
│ ├── GFlags.cpp
│ ├── GFlags.h
│ ├── GMock.h
│ ├── GTest.h
│ ├── GTestProd.h
│ ├── IOVec.h
│ ├── Libgen.cpp
│ ├── Libgen.h
│ ├── Libunwind.h
│ ├── Malloc.cpp
│ ├── Malloc.h
│ ├── Math.h
│ ├── Memory.h
│ ├── OpenSSL.cpp
│ ├── OpenSSL.h
│ ├── PThread.cpp
│ ├── PThread.h
│ ├── README.md
│ ├── Sched.cpp
│ ├── Sched.h
│ ├── Sockets.cpp
│ ├── Sockets.h
│ ├── SourceLocation.h
│ ├── Stdio.cpp
│ ├── Stdio.h
│ ├── Stdlib.cpp
│ ├── Stdlib.h
│ ├── String.cpp
│ ├── String.h
│ ├── SysFile.cpp
│ ├── SysFile.h
│ ├── SysMembarrier.cpp
│ ├── SysMembarrier.h
│ ├── SysMman.cpp
│ ├── SysMman.h
│ ├── SysResource.cpp
│ ├── SysResource.h
│ ├── SysStat.cpp
│ ├── SysStat.h
│ ├── SysSyscall.h
│ ├── SysTime.cpp
│ ├── SysTime.h
│ ├── SysTypes.h
│ ├── SysUio.cpp
│ ├── SysUio.h
│ ├── Syslog.h
│ ├── Time.cpp
│ ├── Time.h
│ ├── Unistd.cpp
│ ├── Unistd.h
│ ├── Windows.h
│ ├── provide/
│ │ ├── BUCK
│ │ └── CMakeLists.txt
│ └── test/
│ ├── BUCK
│ ├── ConstexprTest.cpp
│ ├── FcntlTest.cpp
│ ├── FilesystemTest.cpp
│ ├── LibgenTest.cpp
│ ├── OpenSSLPortabilityTest.cpp
│ ├── PThreadTest.cpp
│ ├── TimeTest.cpp
│ └── UnistdTest.cpp
├── python/
│ ├── AsyncioExecutor.cpp
│ ├── AsyncioExecutor.h
│ ├── BUCK
│ ├── CMakeLists.txt
│ ├── GILAwareManualExecutor.cpp
│ ├── GILAwareManualExecutor.h
│ ├── ProactorExecutor.cpp
│ ├── ProactorExecutor.h
│ ├── ScopedGILRelease.h
│ ├── Weak.h
│ ├── __init__.pxd
│ ├── async_generator.h
│ ├── async_generator.pxd
│ ├── build_mode.pyi
│ ├── build_mode.pyx
│ ├── cast.pxd
│ ├── coro.h
│ ├── coro.pxd
│ ├── error.cpp
│ ├── error.h
│ ├── executor.cpp
│ ├── executor.h
│ ├── executor.pxd
│ ├── executor.pyx
│ ├── executor_detail.pxd
│ ├── expected.pxd
│ ├── fbstring.pxd
│ ├── fiber_manager.pxd
│ ├── fiber_manager.pyx
│ ├── fibers.cpp
│ ├── fibers.h
│ ├── fibers.pxd
│ ├── function.pxd
│ ├── futures.h
│ ├── futures.pxd
│ ├── import.h
│ ├── iobuf.cpp
│ ├── iobuf.h
│ ├── iobuf.pxd
│ ├── iobuf.pyi
│ ├── iobuf.pyx
│ ├── iobuf_ext.cpp
│ ├── iobuf_ext.h
│ ├── memory.pxd
│ ├── optional.pxd
│ ├── range.pxd
│ ├── request_context.h
│ ├── request_context.pxd
│ ├── request_context.pyi
│ ├── request_context.pyx
│ ├── setup.py
│ ├── test/
│ │ ├── AsyncGeneratorTest.cpp
│ │ ├── BUCK
│ │ ├── ErrorTest.cpp
│ │ ├── IOBufTestUtils.cpp
│ │ ├── IOBufTestUtils.h
│ │ ├── WeakTest.cpp
│ │ ├── coro.py
│ │ ├── futures.py
│ │ ├── generator.py
│ │ ├── iobuf.py
│ │ ├── iobuf_helper.pxd
│ │ ├── iobuf_helper.pyi
│ │ ├── iobuf_helper.pyx
│ │ ├── request_context.py
│ │ ├── request_context_helper.pyi
│ │ ├── request_context_helper.pyx
│ │ ├── simple.h
│ │ ├── simplebridge.pyx
│ │ ├── simplebridgecoro.pyx
│ │ ├── simplecoro.h
│ │ ├── simplegenerator.h
│ │ ├── simplegenerator.pyx
│ │ ├── teardown.py
│ │ ├── test_set_executor.h
│ │ ├── test_set_executor.py
│ │ └── test_set_executor_cython.pyx
│ └── windows/
│ └── iocp.pyx
├── random/
│ ├── BUCK
│ ├── CMakeLists.txt
│ ├── hash.h
│ ├── seed_seq.h
│ ├── test/
│ │ ├── BUCK
│ │ ├── Xoshiro256ppTest.cpp
│ │ ├── engine_bench.cpp
│ │ ├── hash_test.cpp
│ │ └── seed_seq_test.cpp
│ └── xoshiro256pp.h
├── result/
│ ├── BUCK
│ ├── CMakeLists.txt
│ ├── README.md
│ ├── coded_rich_error.h
│ ├── coro.h
│ ├── demo/
│ │ ├── BUCK
│ │ └── basketball.cpp
│ ├── detail/
│ │ ├── BUCK
│ │ ├── CMakeLists.txt
│ │ ├── immortal_exception_storage.h
│ │ ├── ptr_immortal_exception_storage.h
│ │ ├── result_or_unwind.h
│ │ ├── result_promise.h
│ │ ├── rich_error_common.h
│ │ ├── rich_exception_ptr_storage.cpp
│ │ └── rich_exception_ptr_storage.h
│ ├── docs/
│ │ ├── design_notes.md
│ │ ├── epitaphs.md
│ │ ├── future_epitaph_in_place.md
│ │ ├── future_fast_rtti.md
│ │ ├── future_ideas.md
│ │ ├── future_small_value.md
│ │ ├── result.md
│ │ ├── rich_error.md
│ │ ├── rich_error_code.md
│ │ └── rich_exception_ptr.md
│ ├── epitaph.cpp
│ ├── epitaph.h
│ ├── errc_rich_error.cpp
│ ├── errc_rich_error.h
│ ├── gtest_helpers.h
│ ├── immortal_rich_error.h
│ ├── nestable_coded_rich_error.h
│ ├── or_unwind_epitaph.h
│ ├── result.cpp
│ ├── result.h
│ ├── rich_error.h
│ ├── rich_error_base.cpp
│ ├── rich_error_base.h
│ ├── rich_error_code.cpp
│ ├── rich_error_code.h
│ ├── rich_error_fwd.h
│ ├── rich_exception_ptr.cpp
│ ├── rich_exception_ptr.h
│ ├── rich_msg.h
│ ├── test/
│ │ ├── BUCK
│ │ ├── coded_rich_error_test.cpp
│ │ ├── common.h
│ │ ├── epitaph_bench.cpp
│ │ ├── epitaph_test.cpp
│ │ ├── errc_rich_error_test.cpp
│ │ ├── immortal_rich_error_test.cpp
│ │ ├── nestable_coded_rich_error_test.cpp
│ │ ├── or_unwind_epitaph_test.cpp
│ │ ├── or_unwind_test.cpp
│ │ ├── result_bench.cpp
│ │ ├── result_coro_bench.cpp
│ │ ├── result_test.cpp
│ │ ├── rich_error_code_bench.cpp
│ │ ├── rich_error_code_test.cpp
│ │ ├── rich_error_codes.h
│ │ ├── rich_error_test.cpp
│ │ ├── rich_exception_ptr_bench.cpp
│ │ ├── rich_exception_ptr_check_get.h
│ │ ├── rich_exception_ptr_common.h
│ │ ├── rich_exception_ptr_constexpr.cpp
│ │ ├── rich_exception_ptr_fmt_bench.cpp
│ │ ├── rich_exception_ptr_fmt_test.cpp
│ │ ├── rich_exception_ptr_fundamentals_test.cpp
│ │ ├── rich_exception_ptr_immortal_test.cpp
│ │ ├── rich_exception_ptr_misc_test.cpp
│ │ ├── rich_exception_ptr_owned_test.cpp
│ │ ├── rich_msg_test.cpp
│ │ ├── stack_epitaph_test.cpp
│ │ ├── try_test.cpp
│ │ └── value_only_result_test.cpp
│ ├── try.h
│ ├── value_only_result.h
│ └── value_only_result_coro.h
├── rust/
│ ├── BUCK
│ ├── compression/
│ │ ├── BUCK
│ │ ├── compression.cpp
│ │ ├── compression.h
│ │ └── compression.rs
│ ├── dynamic/
│ │ ├── BUCK
│ │ ├── dynamic.cpp
│ │ ├── dynamic.h
│ │ └── dynamic.rs
│ ├── iobuf/
│ │ ├── BUCK
│ │ ├── iobuf.cpp
│ │ ├── iobuf.h
│ │ ├── iobuf_sys.rs
│ │ └── src/
│ │ ├── cursor.rs
│ │ ├── iobuf.rs
│ │ ├── iobufmut.rs
│ │ ├── lib.rs
│ │ └── test.rs
│ ├── lib.rs
│ ├── logging/
│ │ ├── BUCK
│ │ ├── lib.rs
│ │ ├── logging.cpp
│ │ └── logging.h
│ ├── memory/
│ │ ├── BUCK
│ │ ├── lib.rs
│ │ ├── memory.cpp
│ │ └── memory.h
│ ├── network_address/
│ │ ├── BUCK
│ │ ├── FollyWrapper.cpp
│ │ ├── FollyWrapper.h
│ │ └── src/
│ │ └── lib.rs
│ ├── request_context/
│ │ ├── BUCK
│ │ ├── benches/
│ │ │ └── request_context_tokio_bench.rs
│ │ ├── request_context.cpp
│ │ ├── request_context.h
│ │ ├── request_context.rs
│ │ ├── request_context_future.rs
│ │ └── request_context_tokio.rs
│ ├── singleton_vault/
│ │ ├── BUCK
│ │ ├── lib.rs
│ │ ├── singleton.cpp
│ │ ├── singleton.h
│ │ ├── singleton_test.cpp
│ │ ├── singleton_test.h
│ │ └── test.rs
│ ├── socket_address/
│ │ ├── BUCK
│ │ ├── RustSocketAddress.cpp
│ │ ├── RustSocketAddress.h
│ │ └── lib.rs
│ ├── string/
│ │ ├── BUCK
│ │ ├── lib.rs
│ │ ├── string.cpp
│ │ ├── string.h
│ │ └── string.rs
│ └── tdigest/
│ ├── BUCK
│ ├── tdigest.cpp
│ ├── tdigest.h
│ └── tdigest.rs
├── settings/
│ ├── BUCK
│ ├── CMakeLists.txt
│ ├── CommandLineParser.cpp
│ ├── CommandLineParser.h
│ ├── Immutables.cpp
│ ├── Immutables.h
│ ├── Observer.h
│ ├── Settings.cpp
│ ├── Settings.h
│ ├── SettingsAccessorProxy.cpp
│ ├── SettingsAccessorProxy.h
│ ├── Types.cpp
│ ├── Types.h
│ ├── detail/
│ │ └── SettingsImpl.h
│ └── test/
│ ├── BUCK
│ ├── CommandLineParserTest.cpp
│ ├── SettingsBenchmarks.cpp
│ ├── SettingsTest.cpp
│ ├── a.cpp
│ ├── a.h
│ ├── b.cpp
│ └── b.h
├── small_vector.h
├── somerge_defs.bzl
├── sorted_vector_types.h
├── ssl/
│ ├── BUCK
│ ├── CMakeLists.txt
│ ├── OpenSSLCertUtils.cpp
│ ├── OpenSSLCertUtils.h
│ ├── OpenSSLHash.cpp
│ ├── OpenSSLHash.h
│ ├── OpenSSLKeyUtils.cpp
│ ├── OpenSSLKeyUtils.h
│ ├── OpenSSLPtrTypes.h
│ ├── OpenSSLTicketHandler.h
│ ├── OpenSSLVersionFinder.h
│ ├── PasswordCollector.cpp
│ ├── PasswordCollector.h
│ ├── SSLSession.h
│ ├── SSLSessionManager.cpp
│ ├── SSLSessionManager.h
│ ├── detail/
│ │ ├── BUCK
│ │ ├── CMakeLists.txt
│ │ ├── OpenSSLSession.cpp
│ │ └── OpenSSLSession.h
│ └── test/
│ ├── BUCK
│ ├── OpenSSLCertUtilsTest.cpp
│ ├── OpenSSLHashTest.cpp
│ ├── OpenSSLKeyUtilsTest.cpp
│ └── SSLSessionManagerTest.cpp
├── stats/
│ ├── BUCK
│ ├── BucketedTimeSeries-inl.h
│ ├── BucketedTimeSeries.h
│ ├── CMakeLists.txt
│ ├── DigestBuilder-inl.h
│ ├── DigestBuilder.h
│ ├── Histogram-inl.h
│ ├── Histogram.h
│ ├── MultiLevelTimeSeries-inl.h
│ ├── MultiLevelTimeSeries.h
│ ├── QuantileEstimator-inl.h
│ ├── QuantileEstimator.cpp
│ ├── QuantileEstimator.h
│ ├── QuantileHistogram-inl.h
│ ├── QuantileHistogram.h
│ ├── StreamingStats.h
│ ├── TDigest.cpp
│ ├── TDigest.h
│ ├── TimeseriesHistogram-inl.h
│ ├── TimeseriesHistogram.h
│ ├── detail/
│ │ ├── BUCK
│ │ ├── Bucket.h
│ │ ├── BufferedStat-inl.h
│ │ ├── BufferedStat.h
│ │ ├── CMakeLists.txt
│ │ ├── DoubleRadixSort.cpp
│ │ ├── DoubleRadixSort.h
│ │ ├── SlidingWindow-inl.h
│ │ ├── SlidingWindow.h
│ │ └── test/
│ │ ├── BUCK
│ │ └── DoubleRadixSortTest.cpp
│ └── test/
│ ├── BUCK
│ ├── BucketedTimeSeriesBenchmark.cpp
│ ├── BufferedStatTest.cpp
│ ├── DigestBuilderBenchmark.cpp
│ ├── DigestBuilderTest.cpp
│ ├── HistogramBenchmark.cpp
│ ├── HistogramTest.cpp
│ ├── MultiLevelTimeSeriesBenchmark.cpp
│ ├── QuantileEstimatorBenchmark.cpp
│ ├── QuantileEstimatorTest.cpp
│ ├── QuantileHistogramBenchmark.cpp
│ ├── QuantileHistogramTest.cpp
│ ├── SlidingWindowTest.cpp
│ ├── StreamingStatsTest.cpp
│ ├── TDigestBenchmark.cpp
│ ├── TDigestTest.cpp
│ ├── TimeSeriesTest.cpp
│ └── TimeseriesHistogramTest.cpp
├── stop_watch.h
├── support/
│ ├── gdb.py
│ └── test/
│ ├── BUCK
│ ├── GdbUtil.h
│ ├── main.cpp
│ └── runtest.gdb
├── synchronization/
│ ├── AsymmetricThreadFence.cpp
│ ├── AsymmetricThreadFence.h
│ ├── AtomicNotification-inl.h
│ ├── AtomicNotification.cpp
│ ├── AtomicNotification.h
│ ├── AtomicRef.h
│ ├── AtomicStruct.h
│ ├── AtomicUtil-inl.h
│ ├── AtomicUtil.h
│ ├── BUCK
│ ├── Baton.h
│ ├── CMakeLists.txt
│ ├── CallOnce.h
│ ├── DelayedInit.h
│ ├── DistributedMutex-inl.h
│ ├── DistributedMutex.cpp
│ ├── DistributedMutex.h
│ ├── EventCount.h
│ ├── FlatCombining.h
│ ├── Hazptr-fwd.h
│ ├── Hazptr.cpp
│ ├── Hazptr.h
│ ├── HazptrDomain.cpp
│ ├── HazptrDomain.h
│ ├── HazptrHolder.h
│ ├── HazptrObj.h
│ ├── HazptrObjLinked.h
│ ├── HazptrRec.h
│ ├── HazptrThrLocal.h
│ ├── HazptrThreadPoolExecutor.cpp
│ ├── HazptrThreadPoolExecutor.h
│ ├── Latch.h
│ ├── LifoSem.h
│ ├── Lock.h
│ ├── MicroSpinLock.h
│ ├── NativeSemaphore.h
│ ├── ParkingLot.cpp
│ ├── ParkingLot.h
│ ├── PicoSpinLock.h
│ ├── RWSpinLock.h
│ ├── Rcu.cpp
│ ├── Rcu.h
│ ├── RelaxedAtomic.h
│ ├── SanitizeThread.cpp
│ ├── SanitizeThread.h
│ ├── SaturatingSemaphore.h
│ ├── SmallLocks.h
│ ├── StripedThrottledLifoSem.cpp
│ ├── StripedThrottledLifoSem.h
│ ├── ThrottledLifoSem.h
│ ├── WaitOptions.h
│ ├── detail/
│ │ ├── AtomicUtils.h
│ │ ├── BUCK
│ │ ├── CMakeLists.txt
│ │ ├── HazptrUtils.h
│ │ ├── InlineFunctionRef.h
│ │ ├── Sleeper.cpp
│ │ ├── Sleeper.h
│ │ ├── Spin.h
│ │ ├── ThreadCachedLists.h
│ │ ├── ThreadCachedReaders.h
│ │ ├── ThreadCachedTag.h
│ │ └── test/
│ │ ├── BUCK
│ │ └── InlineFunctionRefTest.cpp
│ ├── example/
│ │ ├── BUCK
│ │ ├── HazptrLockFreeLIFO.h
│ │ ├── HazptrSWMRSet.h
│ │ └── HazptrWideCAS.h
│ └── test/
│ ├── AtomicNotificationTest.cpp
│ ├── AtomicRefTest.cpp
│ ├── AtomicStructTest.cpp
│ ├── AtomicUtilBench.cpp
│ ├── AtomicUtilTest.cpp
│ ├── BUCK
│ ├── Barrier.h
│ ├── BarrierTest.cpp
│ ├── BatonBenchmark.cpp
│ ├── BatonTest.cpp
│ ├── BatonTestHelpers.h
│ ├── CallOnceBenchmark.cpp
│ ├── CallOnceTest.cpp
│ ├── DelayedInitTest.cpp
│ ├── DistributedMutexTest.cpp
│ ├── EventCountTest.cpp
│ ├── FlatCombiningBenchmark.cpp
│ ├── FlatCombiningExamples.h
│ ├── FlatCombiningTest.cpp
│ ├── FlatCombiningTestHelpers.h
│ ├── HazptrBench.cpp
│ ├── HazptrTest.cpp
│ ├── LatchTest.cpp
│ ├── LifoSemBench.cpp
│ ├── LifoSemTests.cpp
│ ├── LockTest.cpp
│ ├── NativeSemaphoreTest.cpp
│ ├── ParkingLotBenchmark.cpp
│ ├── ParkingLotTest.cpp
│ ├── RWSpinLockTest.cpp
│ ├── RcuBench.cpp
│ ├── RcuTest.cpp
│ ├── RelaxedAtomicTest.cpp
│ ├── SaturatingSemaphoreTest.cpp
│ ├── Semaphore.h
│ ├── SemaphoreTest.cpp
│ ├── SmallLocksBenchmark.cpp
│ ├── SmallLocksTest.cpp
│ ├── StripedThrottledLifoSemTest.cpp
│ ├── ThreadCachedEpochBench.h
│ ├── ThreadCachedReadersBench.cpp
│ ├── ThreadCachedReadersTest.cpp
│ └── ThrottledLifoSemTest.cpp
├── system/
│ ├── AtFork.cpp
│ ├── AtFork.h
│ ├── AuxVector.h
│ ├── BUCK
│ ├── CMakeLists.txt
│ ├── EnvUtil.cpp
│ ├── EnvUtil.h
│ ├── HardwareConcurrency.cpp
│ ├── HardwareConcurrency.h
│ ├── MemoryMapping.cpp
│ ├── MemoryMapping.h
│ ├── Pid.cpp
│ ├── Pid.h
│ ├── Shell.cpp
│ ├── Shell.h
│ ├── ThreadId.cpp
│ ├── ThreadId.h
│ ├── ThreadName.cpp
│ ├── ThreadName.h
│ ├── arch/
│ │ ├── BUCK
│ │ ├── CMakeLists.txt
│ │ ├── test/
│ │ │ ├── BUCK
│ │ │ └── x86_test.cpp
│ │ └── x86.h
│ ├── os/
│ │ ├── BUCK
│ │ ├── CMakeLists.txt
│ │ ├── linux.cpp
│ │ └── linux.h
│ └── test/
│ ├── AtForkTest.cpp
│ ├── AuxVectorTest.cpp
│ ├── BUCK
│ ├── EnvUtilTest.cpp
│ ├── HardwareConcurrencyTest.cpp
│ ├── MemoryMappingTest.cpp
│ ├── PidTest.cpp
│ ├── ShellTest.cpp
│ ├── ThreadIdTest.cpp
│ └── ThreadNameTest.cpp
├── test/
│ ├── AHMIntStressTest.cpp
│ ├── ArenaSmartPtrTest.cpp
│ ├── AsciiCaseInsensitiveBenchmark.cpp
│ ├── AsciiCaseInsensitiveTest.cpp
│ ├── AtomicHashArrayTest.cpp
│ ├── AtomicHashMapTest.cpp
│ ├── AtomicLinkedListTest.cpp
│ ├── AtomicUnorderedMapTest.cpp
│ ├── BUCK
│ ├── BenchmarkIntegrationTest.cpp
│ ├── BenchmarkTest.cpp
│ ├── BenchmarkUtilTest.cpp
│ ├── BufferedAtomic.cpp
│ ├── BufferedAtomic.h
│ ├── BufferedAtomicTest.cpp
│ ├── CancellationTokenBench.cpp
│ ├── CancellationTokenTest.cpp
│ ├── ChronoBench.cpp
│ ├── ChronoTest.cpp
│ ├── ClockGettimeWrappersTest.cpp
│ ├── ComparisonOperatorTestUtil.h
│ ├── ConcurrentBitSetTest.cpp
│ ├── ConcurrentLazyTest.cpp
│ ├── ConcurrentSkipListBenchmark.cpp
│ ├── ConcurrentSkipListTest.cpp
│ ├── ConstexprMathBenchmark.cpp
│ ├── ConstexprMathTest.cpp
│ ├── ConstructorCallbackListTest.cpp
│ ├── ConvBenchmark.cpp
│ ├── ConvTest.cpp
│ ├── CpuIdTest.cpp
│ ├── DemangleTest.cpp
│ ├── DeterministicSchedule.cpp
│ ├── DeterministicSchedule.h
│ ├── DeterministicScheduleTest.cpp
│ ├── DiscriminatedPtrTest.cpp
│ ├── EndianTest.cpp
│ ├── ExceptionStringTest.cpp
│ ├── ExceptionTest.cpp
│ ├── ExceptionWrapperBenchmark.cpp
│ ├── ExceptionWrapperTest.cpp
│ ├── ExecutorTest.cpp
│ ├── ExpectedCoroutinesBench.cpp
│ ├── ExpectedCoroutinesTest.cpp
│ ├── ExpectedTest.cpp
│ ├── FBStringBenchmark.cpp
│ ├── FBStringTest.cpp
│ ├── FBStringTestBenchmarks.cpp.h
│ ├── FBVectorTestUtil.cpp
│ ├── FBVectorTestUtil.h
│ ├── FileLockTest.cpp
│ ├── FileTest.cpp
│ ├── FileTestLockHelper.cpp
│ ├── FileUtilTest.cpp
│ ├── FingerprintBenchmark.cpp
│ ├── FingerprintTest.cpp
│ ├── FixedStringTest.cpp
│ ├── FmtUtilityTest.cpp
│ ├── FormatBenchmark.cpp
│ ├── FormatOtherTest.cpp
│ ├── FormatTest.cpp
│ ├── FunctionRefBenchmark.cpp
│ ├── FunctionRefTest.cpp
│ ├── FunctionTest.cpp
│ ├── FutexTest.cpp
│ ├── GLogBenchmark.cpp
│ ├── GLogTest.cpp
│ ├── GroupVarintTest.cpp
│ ├── IPAddressBenchmark.cpp
│ ├── IPAddressTest.cpp
│ ├── IndestructibleTest.cpp
│ ├── IndexedMemPoolTest.cpp
│ ├── IteratorsTest.cpp
│ ├── JsonMockUtil.h
│ ├── JsonTestUtil.h
│ ├── LazyTest.cpp
│ ├── MPMCPipelineTest.cpp
│ ├── MPMCQueueTest.cpp
│ ├── MacAddressTest.cpp
│ ├── MathBenchmark.cpp
│ ├── MathTest.cpp
│ ├── MaybeManagedPtrTest.cpp
│ ├── MemcpyBenchmark.cpp
│ ├── MemcpyTest.cpp
│ ├── MemcpyUseTest.cpp
│ ├── MemoryIdlerBenchmark.cpp
│ ├── MemoryIdlerTest.cpp
│ ├── MemoryTest.cpp
│ ├── MemsetBenchmark.cpp
│ ├── MemsetTest.cpp
│ ├── MoveWrapperTest.cpp
│ ├── ObserverContainerTest.cpp
│ ├── ObserverContainerTestUtil.h
│ ├── OptionalCoroutinesTest.cpp
│ ├── OptionalTest.cpp
│ ├── OverloadTest.cpp
│ ├── PackedSyncPtrTest.cpp
│ ├── PaddedTest.cpp
│ ├── PolyTest.cpp
│ ├── PortabilityTest.cpp
│ ├── ProducerConsumerQueueBenchmark.cpp
│ ├── ProducerConsumerQueueTest.cpp
│ ├── RandomBenchmark.cpp
│ ├── RandomTest.cpp
│ ├── RangeFindBenchmark.cpp
│ ├── RangeTest.cpp
│ ├── ReplaceableTest.cpp
│ ├── ScopeGuardTest.cpp
│ ├── SharedMutexTest.cpp
│ ├── SingletonBenchmark.cpp
│ ├── SingletonTest.cpp
│ ├── SingletonTestGlobal.cpp
│ ├── SingletonTestStructs.cpp
│ ├── SingletonTestStructs.h
│ ├── SingletonThreadLocalTest.cpp
│ ├── SingletonThreadLocalTestOverload.cpp
│ ├── SocketAddressTest.cpp
│ ├── SocketAddressTestHelper.cpp
│ ├── SocketAddressTestHelper.h
│ ├── SpinLockTest.cpp
│ ├── StringBenchmark.cpp
│ ├── StringTest.cpp
│ ├── StringToFloatBenchmark.cpp
│ ├── SubprocessBench.cpp
│ ├── SubprocessTest.cpp
│ ├── SubprocessTestParentDeathHelper.cpp
│ ├── SynchronizedBenchmark.cpp
│ ├── SynchronizedPtrTest.cpp
│ ├── SynchronizedTest.cpp
│ ├── SynchronizedTestLib-inl.h
│ ├── SynchronizedTestLib.h
│ ├── TestUtils.h
│ ├── TestUtilsTest.cpp
│ ├── ThreadCachedIntTest.cpp
│ ├── ThreadLocalAccessBenchmark.cpp
│ ├── ThreadLocalBenchmark.cpp
│ ├── ThreadLocalDestroyBenchmark.cpp
│ ├── ThreadLocalTest.cpp
│ ├── ThreadLocalTestLib.cpp
│ ├── TimeoutQueueTest.cpp
│ ├── TokenBucketTest.cpp
│ ├── TokenBucketTest.h
│ ├── TraitsTest.cpp
│ ├── TryTest.cpp
│ ├── UTF8StringTest.cpp
│ ├── UnicodeTest.cpp
│ ├── UnitTest.cpp
│ ├── UriBenchmark.cpp
│ ├── UriTest.cpp
│ ├── UtilityTest.cpp
│ ├── VarintTest.cpp
│ ├── base64_test.cpp
│ ├── common/
│ │ ├── BUCK
│ │ └── TestMain.cpp
│ └── stl_tests/
│ ├── BUCK
│ └── StlVectorTest.cpp
├── testing/
│ ├── BUCK
│ ├── CMakeLists.txt
│ ├── TestUtil.cpp
│ ├── TestUtil.h
│ └── test/
│ ├── BUCK
│ └── TestUtilTest.cpp
├── tool/
│ ├── BUCK
│ └── BenchmarkCompare.cpp
└── tracing/
├── AsyncStack-inl.h
├── AsyncStack.cpp
├── AsyncStack.h
├── BUCK
├── CMakeLists.txt
├── README.md
├── ScopedTraceSection.h
├── StaticTracepoint-ELF.h
├── StaticTracepoint.h
└── test/
├── AsyncStackTest.cpp
├── BUCK
├── StaticTracepointSectionTest.cpp
├── StaticTracepointSectionTest.lds
├── StaticTracepointTest.cpp
├── StaticTracepointTestModule.cpp
└── StaticTracepointTestModule.h
================================================
FILE CONTENTS
================================================
================================================
FILE: .buckconfig
================================================
[cells]
gh_facebook_folly = .
shim_DISABLED = shim
[cell_aliases]
root = gh_facebook_folly
[oss]
internal_cell = fbcode
project_dirs = folly
[buck2]
directories_to_allow_relative_paths = //folly
================================================
FILE: .buckconfig.d/common.buckconfig
================================================
[cells]
prelude = prelude
none = none
[cell_aliases]
config = prelude
ovr_config = prelude
bazel_skylib = gh_facebook_buck2_shims_meta
buck = gh_facebook_buck2_shims_meta
fbcode = gh_facebook_buck2_shims_meta
fbcode_macros = gh_facebook_buck2_shims_meta
fbsource = gh_facebook_buck2_shims_meta
shim = gh_facebook_buck2_shims_meta
toolchains = gh_facebook_buck2_shims_meta
[external_cells]
prelude = bundled
[build]
execution_platforms = prelude//platforms:default
[parser]
target_platform_detector_spec = target:root//...->prelude//platforms:default target:shim//...->prelude//platforms:default
================================================
FILE: .buckroot
================================================
================================================
FILE: .devcontainer/Containerfile
================================================
FROM mcr.microsoft.com/devcontainers/base:jammy
RUN apt-get update \
&& apt-get upgrade -y \
&& apt-get install -y --no-install-recommends \
watchman \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
================================================
FILE: .devcontainer/devcontainer.json
================================================
{
"name": "Ubuntu",
"build": {
"cacheFrom": "ghcr.io/marinatedconcrete/config-devcontainer",
"dockerfile": "Containerfile"
},
"customizations": {
"vscode": {
"extensions": [
"GitHub.vscode-github-actions"
]
}
},
"features": {
"ghcr.io/facebook/devcontainers/features/dotslash:1": {}
}
}
================================================
FILE: .github/dependabot.yml
================================================
---
version: 2
updates:
- package-ecosystem: "devcontainers"
directory: "/"
schedule:
interval: weekly
================================================
FILE: .github/scripts/bad_targets
================================================
# This is a list of bad targets that do not build in OSS. Ideally this list goes away
# with time.
root//folly/debugging/exception_tracer:exception_counter
root//folly/debugging/exception_tracer:exception_tracer
root//folly/debugging/exception_tracer:exception_tracer_callbacks
root//folly/debugging/exception_tracer:smart_exception_stack_trace_hooks
root//folly/debugging/exception_tracer:smart_exception_tracer
root//folly/debugging/symbolizer/tool:folly-addr2line
root//folly/debugging/symbolizer/tool:libFollySegFault.so
root//folly/docs/examples/folly:baton_demo
root//folly/docs/examples/folly:cancellation_callback_demo
root//folly/docs/examples/folly:cancellation_source_demo
root//folly/docs/examples/folly:cancellation_token_demo
root//folly/docs/examples/folly:dynamic_converter_demo
root//folly/docs/examples/folly:dynamic_demo
root//folly/docs/examples/folly:executor_guide
root//folly/docs/examples/folly:file_demo
root//folly/docs/examples/folly:format_demo
root//folly/docs/examples/folly:function_demo
root//folly/docs/examples/folly:ipaddress_demo
root//folly/docs/examples/folly:likely_demo
root//folly/docs/examples/folly:map_util_demo
root//folly/docs/examples/folly:scope_guard_demo
root//folly/docs/examples/folly:scope_guard2_demo
root//folly/docs/examples/folly:scoped_event_base_thread_demo
root//folly/docs/examples/folly:scoped_event_base_thread2_demo
root//folly/docs/examples/folly:synchronized_demo
root//folly/docs/examples/folly/container:array_demo
root//folly/docs/examples/folly/dynamic:array_demo
root//folly/docs/examples/folly/dynamic:object_demo
root//folly/docs/examples/folly/coro:async_scope_demo
root//folly/docs/examples/folly/coro:cancellable_async_scope_demo
root//folly/docs/examples/folly/coro:detach_on_cancel_demo
root//folly/docs/examples/folly/coro:promise_demo
root//folly/docs/examples/folly/coro:retry_demo
root//folly/docs/examples/folly/coro:task_demo
root//folly/docs/examples/folly/coro:with_cancellation_demo
root//folly/docs/examples/folly/hash:hash_demo
root//folly/docs/examples/folly/io:i_o_buf_demo
root//folly/logging/example:example
root//folly/python:executor_lib
root//folly/python:fibers_lib
root//folly/python:iobuf_lib
root//folly/tool:benchmark_compare
================================================
FILE: .github/scripts/buck_build_and_test.sh
================================================
#!/bin/bash
# Copyright (c) Meta Platforms, Inc. and affiliates.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
TARGETS_FILE=$(mktemp)
./buck2 targets //... | grep -F -v -f .github/scripts/bad_targets | grep -v test >"$TARGETS_FILE"
./buck2 build @"$TARGETS_FILE"
# ./buck2 test @"$TARGETS_FILE"
================================================
FILE: .github/workflows/TagIt.yml
================================================
on:
push:
tags:
# Only match TagIt tags, which always start with this prefix
- 'v20*'
name: TagIt
permissions:
contents: read
jobs:
build:
permissions:
contents: write # for actions/create-release to create a release
name: Release
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v6
- name: Archive project
id: archive_project
run: |
FILE_NAME=${GITHUB_REPOSITORY#*/}-${GITHUB_REF##*/}
git archive ${{ github.ref }} -o ${FILE_NAME}.zip
git archive ${{ github.ref }} -o ${FILE_NAME}.tar.gz
echo "file_name=${FILE_NAME}" >> $GITHUB_OUTPUT
- name: Compute digests
id: compute_digests
run: |
echo "tgz_256=$(openssl dgst -sha256 ${{ steps.archive_project.outputs.file_name }}.tar.gz)" >> $GITHUB_OUTPUT
echo "tgz_512=$(openssl dgst -sha512 ${{ steps.archive_project.outputs.file_name }}.tar.gz)" >> $GITHUB_OUTPUT
echo "zip_256=$(openssl dgst -sha256 ${{ steps.archive_project.outputs.file_name }}.zip)" >> $GITHUB_OUTPUT
echo "zip_512=$(openssl dgst -sha512 ${{ steps.archive_project.outputs.file_name }}.zip)" >> $GITHUB_OUTPUT
- name: Create Release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ github.ref }}
release_name: ${{ github.ref }}
body: |
Automated release from TagIt
<details>
<summary>File Hashes</summary>
<ul>
<li>${{ steps.compute_digests.outputs.zip_256 }}</li>
<li>${{ steps.compute_digests.outputs.zip_512 }}</li>
<li>${{ steps.compute_digests.outputs.tgz_256 }}</li>
<li>${{ steps.compute_digests.outputs.tgz_512 }}</li>
</ul>
</details>
draft: false
prerelease: false
- name: Upload zip
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./${{ steps.archive_project.outputs.file_name }}.zip
asset_name: ${{ steps.archive_project.outputs.file_name }}.zip
asset_content_type: application/zip
- name: Upload tar.gz
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./${{ steps.archive_project.outputs.file_name }}.tar.gz
asset_name: ${{ steps.archive_project.outputs.file_name }}.tar.gz
asset_content_type: application/gzip
================================================
FILE: .github/workflows/devcontainer.yml
================================================
---
name: Development Container-Based CI
on:
pull_request:
push:
branches:
- main
workflow_dispatch:
jobs:
build:
permissions:
contents: read
packages: write
runs-on: ${{ matrix.runsOn }}
strategy:
matrix:
runsOn:
- ubuntu-24.04-arm
- ubuntu-latest
steps:
- name: Checkout Repo
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Login to GitHub Container Registry
uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Set up Buildx
uses: docker/setup-buildx-action@v3
with:
driver: docker-container
- if: ${{ github.event_name != 'pull_request' }}
id: cache_to_helper
run: echo "cacheTo=ghcr.io/${{ github.repository_owner }}/devcontainers/folly" >> $GITHUB_OUTPUT
- name: Build devcontainer image
uses: devcontainers/ci@8bf61b26e9c3a98f69cb6ce2f88d24ff59b785c6 # v0.3.1900000417
with:
cacheFrom: ghcr.io/${{ github.repository_owner }}/devcontainers/folly
cacheTo: ${{ steps.cache_to_helper.outputs.cacheTo }}
env: |
CI=1
imageName: ghcr.io/${{ github.repository_owner }}/devcontainers/folly
push: filter
refFilterForPush: refs/heads/main
================================================
FILE: .github/workflows/getdeps_linux.yml
================================================
# This file was @generated by getdeps.py
name: linux
on:
push:
branches:
- main
pull_request:
branches:
- main
permissions:
contents: read # to fetch code (actions/checkout)
jobs:
build:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v6
- name: Show disk space at start
run: df -h
- name: Free up disk space
run: sudo rm -rf /usr/local/lib/android
- name: Show disk space after freeing up
run: df -h
- name: Update system package info
run: sudo --preserve-env=http_proxy apt-get update
- name: Install system deps
run: sudo --preserve-env=http_proxy python3 build/fbcode_builder/getdeps.py --allow-system-packages install-system-deps --recursive folly && sudo --preserve-env=http_proxy python3 build/fbcode_builder/getdeps.py --allow-system-packages install-system-deps --recursive patchelf
- id: paths
name: Query paths
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages query-paths --recursive --src-dir=. folly >> "$GITHUB_OUTPUT"
- name: Fetch boost
if: ${{ steps.paths.outputs.boost_SOURCE }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests boost
- name: Fetch libaio
if: ${{ steps.paths.outputs.libaio_SOURCE }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests libaio
- name: Fetch ninja
if: ${{ steps.paths.outputs.ninja_SOURCE }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests ninja
- name: Fetch cmake
if: ${{ steps.paths.outputs.cmake_SOURCE }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests cmake
- name: Fetch double-conversion
if: ${{ steps.paths.outputs.double-conversion_SOURCE }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests double-conversion
- name: Fetch fast_float
if: ${{ steps.paths.outputs.fast_float_SOURCE }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests fast_float
- name: Fetch fmt
if: ${{ steps.paths.outputs.fmt_SOURCE }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests fmt
- name: Fetch gflags
if: ${{ steps.paths.outputs.gflags_SOURCE }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests gflags
- name: Fetch glog
if: ${{ steps.paths.outputs.glog_SOURCE }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests glog
- name: Fetch googletest
if: ${{ steps.paths.outputs.googletest_SOURCE }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests googletest
- name: Fetch libdwarf
if: ${{ steps.paths.outputs.libdwarf_SOURCE }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests libdwarf
- name: Fetch libevent
if: ${{ steps.paths.outputs.libevent_SOURCE }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests libevent
- name: Fetch zlib
if: ${{ steps.paths.outputs.zlib_SOURCE }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests zlib
- name: Fetch lz4
if: ${{ steps.paths.outputs.lz4_SOURCE }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests lz4
- name: Fetch snappy
if: ${{ steps.paths.outputs.snappy_SOURCE }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests snappy
- name: Fetch zstd
if: ${{ steps.paths.outputs.zstd_SOURCE }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests zstd
- name: Fetch autoconf
if: ${{ steps.paths.outputs.autoconf_SOURCE }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests autoconf
- name: Fetch automake
if: ${{ steps.paths.outputs.automake_SOURCE }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests automake
- name: Fetch libtool
if: ${{ steps.paths.outputs.libtool_SOURCE }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests libtool
- name: Fetch libiberty
if: ${{ steps.paths.outputs.libiberty_SOURCE }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests libiberty
- name: Fetch libsodium
if: ${{ steps.paths.outputs.libsodium_SOURCE }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests libsodium
- name: Fetch libunwind
if: ${{ steps.paths.outputs.libunwind_SOURCE }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests libunwind
- name: Fetch xz
if: ${{ steps.paths.outputs.xz_SOURCE }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests xz
- name: Restore boost from cache
id: restore_boost
if: ${{ steps.paths.outputs.boost_SOURCE }}
uses: actions/cache/restore@v4
with:
path: ${{ steps.paths.outputs.boost_INSTALL }}
key: ${{ steps.paths.outputs.boost_CACHE_KEY }}-install
- name: Build boost
if: ${{ steps.paths.outputs.boost_SOURCE && ! steps.restore_boost.outputs.cache-hit }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --free-up-disk --no-tests boost
- name: Save boost to cache
uses: actions/cache/save@v4
if: ${{ steps.paths.outputs.boost_SOURCE && ! steps.restore_boost.outputs.cache-hit }}
with:
path: ${{ steps.paths.outputs.boost_INSTALL }}
key: ${{ steps.paths.outputs.boost_CACHE_KEY }}-install
- name: Restore libaio from cache
id: restore_libaio
if: ${{ steps.paths.outputs.libaio_SOURCE }}
uses: actions/cache/restore@v4
with:
path: ${{ steps.paths.outputs.libaio_INSTALL }}
key: ${{ steps.paths.outputs.libaio_CACHE_KEY }}-install
- name: Build libaio
if: ${{ steps.paths.outputs.libaio_SOURCE && ! steps.restore_libaio.outputs.cache-hit }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --free-up-disk --no-tests libaio
- name: Save libaio to cache
uses: actions/cache/save@v4
if: ${{ steps.paths.outputs.libaio_SOURCE && ! steps.restore_libaio.outputs.cache-hit }}
with:
path: ${{ steps.paths.outputs.libaio_INSTALL }}
key: ${{ steps.paths.outputs.libaio_CACHE_KEY }}-install
- name: Restore ninja from cache
id: restore_ninja
if: ${{ steps.paths.outputs.ninja_SOURCE }}
uses: actions/cache/restore@v4
with:
path: ${{ steps.paths.outputs.ninja_INSTALL }}
key: ${{ steps.paths.outputs.ninja_CACHE_KEY }}-install
- name: Build ninja
if: ${{ steps.paths.outputs.ninja_SOURCE && ! steps.restore_ninja.outputs.cache-hit }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --free-up-disk --no-tests ninja
- name: Save ninja to cache
uses: actions/cache/save@v4
if: ${{ steps.paths.outputs.ninja_SOURCE && ! steps.restore_ninja.outputs.cache-hit }}
with:
path: ${{ steps.paths.outputs.ninja_INSTALL }}
key: ${{ steps.paths.outputs.ninja_CACHE_KEY }}-install
- name: Restore cmake from cache
id: restore_cmake
if: ${{ steps.paths.outputs.cmake_SOURCE }}
uses: actions/cache/restore@v4
with:
path: ${{ steps.paths.outputs.cmake_INSTALL }}
key: ${{ steps.paths.outputs.cmake_CACHE_KEY }}-install
- name: Build cmake
if: ${{ steps.paths.outputs.cmake_SOURCE && ! steps.restore_cmake.outputs.cache-hit }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --free-up-disk --no-tests cmake
- name: Save cmake to cache
uses: actions/cache/save@v4
if: ${{ steps.paths.outputs.cmake_SOURCE && ! steps.restore_cmake.outputs.cache-hit }}
with:
path: ${{ steps.paths.outputs.cmake_INSTALL }}
key: ${{ steps.paths.outputs.cmake_CACHE_KEY }}-install
- name: Restore double-conversion from cache
id: restore_double-conversion
if: ${{ steps.paths.outputs.double-conversion_SOURCE }}
uses: actions/cache/restore@v4
with:
path: ${{ steps.paths.outputs.double-conversion_INSTALL }}
key: ${{ steps.paths.outputs.double-conversion_CACHE_KEY }}-install
- name: Build double-conversion
if: ${{ steps.paths.outputs.double-conversion_SOURCE && ! steps.restore_double-conversion.outputs.cache-hit }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --free-up-disk --no-tests double-conversion
- name: Save double-conversion to cache
uses: actions/cache/save@v4
if: ${{ steps.paths.outputs.double-conversion_SOURCE && ! steps.restore_double-conversion.outputs.cache-hit }}
with:
path: ${{ steps.paths.outputs.double-conversion_INSTALL }}
key: ${{ steps.paths.outputs.double-conversion_CACHE_KEY }}-install
- name: Restore fast_float from cache
id: restore_fast_float
if: ${{ steps.paths.outputs.fast_float_SOURCE }}
uses: actions/cache/restore@v4
with:
path: ${{ steps.paths.outputs.fast_float_INSTALL }}
key: ${{ steps.paths.outputs.fast_float_CACHE_KEY }}-install
- name: Build fast_float
if: ${{ steps.paths.outputs.fast_float_SOURCE && ! steps.restore_fast_float.outputs.cache-hit }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --free-up-disk --no-tests fast_float
- name: Save fast_float to cache
uses: actions/cache/save@v4
if: ${{ steps.paths.outputs.fast_float_SOURCE && ! steps.restore_fast_float.outputs.cache-hit }}
with:
path: ${{ steps.paths.outputs.fast_float_INSTALL }}
key: ${{ steps.paths.outputs.fast_float_CACHE_KEY }}-install
- name: Restore fmt from cache
id: restore_fmt
if: ${{ steps.paths.outputs.fmt_SOURCE }}
uses: actions/cache/restore@v4
with:
path: ${{ steps.paths.outputs.fmt_INSTALL }}
key: ${{ steps.paths.outputs.fmt_CACHE_KEY }}-install
- name: Build fmt
if: ${{ steps.paths.outputs.fmt_SOURCE && ! steps.restore_fmt.outputs.cache-hit }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --free-up-disk --no-tests fmt
- name: Save fmt to cache
uses: actions/cache/save@v4
if: ${{ steps.paths.outputs.fmt_SOURCE && ! steps.restore_fmt.outputs.cache-hit }}
with:
path: ${{ steps.paths.outputs.fmt_INSTALL }}
key: ${{ steps.paths.outputs.fmt_CACHE_KEY }}-install
- name: Restore gflags from cache
id: restore_gflags
if: ${{ steps.paths.outputs.gflags_SOURCE }}
uses: actions/cache/restore@v4
with:
path: ${{ steps.paths.outputs.gflags_INSTALL }}
key: ${{ steps.paths.outputs.gflags_CACHE_KEY }}-install
- name: Build gflags
if: ${{ steps.paths.outputs.gflags_SOURCE && ! steps.restore_gflags.outputs.cache-hit }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --free-up-disk --no-tests gflags
- name: Save gflags to cache
uses: actions/cache/save@v4
if: ${{ steps.paths.outputs.gflags_SOURCE && ! steps.restore_gflags.outputs.cache-hit }}
with:
path: ${{ steps.paths.outputs.gflags_INSTALL }}
key: ${{ steps.paths.outputs.gflags_CACHE_KEY }}-install
- name: Restore glog from cache
id: restore_glog
if: ${{ steps.paths.outputs.glog_SOURCE }}
uses: actions/cache/restore@v4
with:
path: ${{ steps.paths.outputs.glog_INSTALL }}
key: ${{ steps.paths.outputs.glog_CACHE_KEY }}-install
- name: Build glog
if: ${{ steps.paths.outputs.glog_SOURCE && ! steps.restore_glog.outputs.cache-hit }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --free-up-disk --no-tests glog
- name: Save glog to cache
uses: actions/cache/save@v4
if: ${{ steps.paths.outputs.glog_SOURCE && ! steps.restore_glog.outputs.cache-hit }}
with:
path: ${{ steps.paths.outputs.glog_INSTALL }}
key: ${{ steps.paths.outputs.glog_CACHE_KEY }}-install
- name: Restore googletest from cache
id: restore_googletest
if: ${{ steps.paths.outputs.googletest_SOURCE }}
uses: actions/cache/restore@v4
with:
path: ${{ steps.paths.outputs.googletest_INSTALL }}
key: ${{ steps.paths.outputs.googletest_CACHE_KEY }}-install
- name: Build googletest
if: ${{ steps.paths.outputs.googletest_SOURCE && ! steps.restore_googletest.outputs.cache-hit }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --free-up-disk --no-tests googletest
- name: Save googletest to cache
uses: actions/cache/save@v4
if: ${{ steps.paths.outputs.googletest_SOURCE && ! steps.restore_googletest.outputs.cache-hit }}
with:
path: ${{ steps.paths.outputs.googletest_INSTALL }}
key: ${{ steps.paths.outputs.googletest_CACHE_KEY }}-install
- name: Restore libdwarf from cache
id: restore_libdwarf
if: ${{ steps.paths.outputs.libdwarf_SOURCE }}
uses: actions/cache/restore@v4
with:
path: ${{ steps.paths.outputs.libdwarf_INSTALL }}
key: ${{ steps.paths.outputs.libdwarf_CACHE_KEY }}-install
- name: Build libdwarf
if: ${{ steps.paths.outputs.libdwarf_SOURCE && ! steps.restore_libdwarf.outputs.cache-hit }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --free-up-disk --no-tests libdwarf
- name: Save libdwarf to cache
uses: actions/cache/save@v4
if: ${{ steps.paths.outputs.libdwarf_SOURCE && ! steps.restore_libdwarf.outputs.cache-hit }}
with:
path: ${{ steps.paths.outputs.libdwarf_INSTALL }}
key: ${{ steps.paths.outputs.libdwarf_CACHE_KEY }}-install
- name: Restore libevent from cache
id: restore_libevent
if: ${{ steps.paths.outputs.libevent_SOURCE }}
uses: actions/cache/restore@v4
with:
path: ${{ steps.paths.outputs.libevent_INSTALL }}
key: ${{ steps.paths.outputs.libevent_CACHE_KEY }}-install
- name: Build libevent
if: ${{ steps.paths.outputs.libevent_SOURCE && ! steps.restore_libevent.outputs.cache-hit }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --free-up-disk --no-tests libevent
- name: Save libevent to cache
uses: actions/cache/save@v4
if: ${{ steps.paths.outputs.libevent_SOURCE && ! steps.restore_libevent.outputs.cache-hit }}
with:
path: ${{ steps.paths.outputs.libevent_INSTALL }}
key: ${{ steps.paths.outputs.libevent_CACHE_KEY }}-install
- name: Restore zlib from cache
id: restore_zlib
if: ${{ steps.paths.outputs.zlib_SOURCE }}
uses: actions/cache/restore@v4
with:
path: ${{ steps.paths.outputs.zlib_INSTALL }}
key: ${{ steps.paths.outputs.zlib_CACHE_KEY }}-install
- name: Build zlib
if: ${{ steps.paths.outputs.zlib_SOURCE && ! steps.restore_zlib.outputs.cache-hit }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --free-up-disk --no-tests zlib
- name: Save zlib to cache
uses: actions/cache/save@v4
if: ${{ steps.paths.outputs.zlib_SOURCE && ! steps.restore_zlib.outputs.cache-hit }}
with:
path: ${{ steps.paths.outputs.zlib_INSTALL }}
key: ${{ steps.paths.outputs.zlib_CACHE_KEY }}-install
- name: Restore lz4 from cache
id: restore_lz4
if: ${{ steps.paths.outputs.lz4_SOURCE }}
uses: actions/cache/restore@v4
with:
path: ${{ steps.paths.outputs.lz4_INSTALL }}
key: ${{ steps.paths.outputs.lz4_CACHE_KEY }}-install
- name: Build lz4
if: ${{ steps.paths.outputs.lz4_SOURCE && ! steps.restore_lz4.outputs.cache-hit }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --free-up-disk --no-tests lz4
- name: Save lz4 to cache
uses: actions/cache/save@v4
if: ${{ steps.paths.outputs.lz4_SOURCE && ! steps.restore_lz4.outputs.cache-hit }}
with:
path: ${{ steps.paths.outputs.lz4_INSTALL }}
key: ${{ steps.paths.outputs.lz4_CACHE_KEY }}-install
- name: Restore snappy from cache
id: restore_snappy
if: ${{ steps.paths.outputs.snappy_SOURCE }}
uses: actions/cache/restore@v4
with:
path: ${{ steps.paths.outputs.snappy_INSTALL }}
key: ${{ steps.paths.outputs.snappy_CACHE_KEY }}-install
- name: Build snappy
if: ${{ steps.paths.outputs.snappy_SOURCE && ! steps.restore_snappy.outputs.cache-hit }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --free-up-disk --no-tests snappy
- name: Save snappy to cache
uses: actions/cache/save@v4
if: ${{ steps.paths.outputs.snappy_SOURCE && ! steps.restore_snappy.outputs.cache-hit }}
with:
path: ${{ steps.paths.outputs.snappy_INSTALL }}
key: ${{ steps.paths.outputs.snappy_CACHE_KEY }}-install
- name: Restore zstd from cache
id: restore_zstd
if: ${{ steps.paths.outputs.zstd_SOURCE }}
uses: actions/cache/restore@v4
with:
path: ${{ steps.paths.outputs.zstd_INSTALL }}
key: ${{ steps.paths.outputs.zstd_CACHE_KEY }}-install
- name: Build zstd
if: ${{ steps.paths.outputs.zstd_SOURCE && ! steps.restore_zstd.outputs.cache-hit }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --free-up-disk --no-tests zstd
- name: Save zstd to cache
uses: actions/cache/save@v4
if: ${{ steps.paths.outputs.zstd_SOURCE && ! steps.restore_zstd.outputs.cache-hit }}
with:
path: ${{ steps.paths.outputs.zstd_INSTALL }}
key: ${{ steps.paths.outputs.zstd_CACHE_KEY }}-install
- name: Restore autoconf from cache
id: restore_autoconf
if: ${{ steps.paths.outputs.autoconf_SOURCE }}
uses: actions/cache/restore@v4
with:
path: ${{ steps.paths.outputs.autoconf_INSTALL }}
key: ${{ steps.paths.outputs.autoconf_CACHE_KEY }}-install
- name: Build autoconf
if: ${{ steps.paths.outputs.autoconf_SOURCE && ! steps.restore_autoconf.outputs.cache-hit }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --free-up-disk --no-tests autoconf
- name: Save autoconf to cache
uses: actions/cache/save@v4
if: ${{ steps.paths.outputs.autoconf_SOURCE && ! steps.restore_autoconf.outputs.cache-hit }}
with:
path: ${{ steps.paths.outputs.autoconf_INSTALL }}
key: ${{ steps.paths.outputs.autoconf_CACHE_KEY }}-install
- name: Restore automake from cache
id: restore_automake
if: ${{ steps.paths.outputs.automake_SOURCE }}
uses: actions/cache/restore@v4
with:
path: ${{ steps.paths.outputs.automake_INSTALL }}
key: ${{ steps.paths.outputs.automake_CACHE_KEY }}-install
- name: Build automake
if: ${{ steps.paths.outputs.automake_SOURCE && ! steps.restore_automake.outputs.cache-hit }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --free-up-disk --no-tests automake
- name: Save automake to cache
uses: actions/cache/save@v4
if: ${{ steps.paths.outputs.automake_SOURCE && ! steps.restore_automake.outputs.cache-hit }}
with:
path: ${{ steps.paths.outputs.automake_INSTALL }}
key: ${{ steps.paths.outputs.automake_CACHE_KEY }}-install
- name: Restore libtool from cache
id: restore_libtool
if: ${{ steps.paths.outputs.libtool_SOURCE }}
uses: actions/cache/restore@v4
with:
path: ${{ steps.paths.outputs.libtool_INSTALL }}
key: ${{ steps.paths.outputs.libtool_CACHE_KEY }}-install
- name: Build libtool
if: ${{ steps.paths.outputs.libtool_SOURCE && ! steps.restore_libtool.outputs.cache-hit }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --free-up-disk --no-tests libtool
- name: Save libtool to cache
uses: actions/cache/save@v4
if: ${{ steps.paths.outputs.libtool_SOURCE && ! steps.restore_libtool.outputs.cache-hit }}
with:
path: ${{ steps.paths.outputs.libtool_INSTALL }}
key: ${{ steps.paths.outputs.libtool_CACHE_KEY }}-install
- name: Restore libiberty from cache
id: restore_libiberty
if: ${{ steps.paths.outputs.libiberty_SOURCE }}
uses: actions/cache/restore@v4
with:
path: ${{ steps.paths.outputs.libiberty_INSTALL }}
key: ${{ steps.paths.outputs.libiberty_CACHE_KEY }}-install
- name: Build libiberty
if: ${{ steps.paths.outputs.libiberty_SOURCE && ! steps.restore_libiberty.outputs.cache-hit }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --free-up-disk --no-tests libiberty
- name: Save libiberty to cache
uses: actions/cache/save@v4
if: ${{ steps.paths.outputs.libiberty_SOURCE && ! steps.restore_libiberty.outputs.cache-hit }}
with:
path: ${{ steps.paths.outputs.libiberty_INSTALL }}
key: ${{ steps.paths.outputs.libiberty_CACHE_KEY }}-install
- name: Restore libsodium from cache
id: restore_libsodium
if: ${{ steps.paths.outputs.libsodium_SOURCE }}
uses: actions/cache/restore@v4
with:
path: ${{ steps.paths.outputs.libsodium_INSTALL }}
key: ${{ steps.paths.outputs.libsodium_CACHE_KEY }}-install
- name: Build libsodium
if: ${{ steps.paths.outputs.libsodium_SOURCE && ! steps.restore_libsodium.outputs.cache-hit }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --free-up-disk --no-tests libsodium
- name: Save libsodium to cache
uses: actions/cache/save@v4
if: ${{ steps.paths.outputs.libsodium_SOURCE && ! steps.restore_libsodium.outputs.cache-hit }}
with:
path: ${{ steps.paths.outputs.libsodium_INSTALL }}
key: ${{ steps.paths.outputs.libsodium_CACHE_KEY }}-install
- name: Restore libunwind from cache
id: restore_libunwind
if: ${{ steps.paths.outputs.libunwind_SOURCE }}
uses: actions/cache/restore@v4
with:
path: ${{ steps.paths.outputs.libunwind_INSTALL }}
key: ${{ steps.paths.outputs.libunwind_CACHE_KEY }}-install
- name: Build libunwind
if: ${{ steps.paths.outputs.libunwind_SOURCE && ! steps.restore_libunwind.outputs.cache-hit }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --free-up-disk --no-tests libunwind
- name: Save libunwind to cache
uses: actions/cache/save@v4
if: ${{ steps.paths.outputs.libunwind_SOURCE && ! steps.restore_libunwind.outputs.cache-hit }}
with:
path: ${{ steps.paths.outputs.libunwind_INSTALL }}
key: ${{ steps.paths.outputs.libunwind_CACHE_KEY }}-install
- name: Restore xz from cache
id: restore_xz
if: ${{ steps.paths.outputs.xz_SOURCE }}
uses: actions/cache/restore@v4
with:
path: ${{ steps.paths.outputs.xz_INSTALL }}
key: ${{ steps.paths.outputs.xz_CACHE_KEY }}-install
- name: Build xz
if: ${{ steps.paths.outputs.xz_SOURCE && ! steps.restore_xz.outputs.cache-hit }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --free-up-disk --no-tests xz
- name: Save xz to cache
uses: actions/cache/save@v4
if: ${{ steps.paths.outputs.xz_SOURCE && ! steps.restore_xz.outputs.cache-hit }}
with:
path: ${{ steps.paths.outputs.xz_INSTALL }}
key: ${{ steps.paths.outputs.xz_CACHE_KEY }}-install
- name: Build folly
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --src-dir=. folly --project-install-prefix folly:/usr/local
- name: Copy artifacts
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fixup-dyn-deps --strip --src-dir=. folly _artifacts/linux --project-install-prefix folly:/usr/local --final-install-prefix /usr/local
- uses: actions/upload-artifact@v6
with:
name: folly
path: _artifacts
- name: Test folly
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages test --src-dir=. folly --project-install-prefix folly:/usr/local
- name: Show disk space at end
if: always()
run: df -h
================================================
FILE: .github/workflows/getdeps_mac.yml
================================================
# This file was @generated by getdeps.py
name: mac
on:
push:
branches:
- main
pull_request:
branches:
- main
permissions:
contents: read # to fetch code (actions/checkout)
jobs:
build:
runs-on: macOS-latest
steps:
- uses: actions/checkout@v6
- name: Show disk space at start
run: df -h
- name: Free up disk space
run: sudo rm -rf /usr/local/lib/android
- name: Show disk space after freeing up
run: df -h
- name: Install system deps
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages install-system-deps --recursive folly
- id: paths
name: Query paths
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages query-paths --recursive --src-dir=. folly >> "$GITHUB_OUTPUT"
- name: Fetch boost
if: ${{ steps.paths.outputs.boost_SOURCE }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests boost
- name: Fetch openssl
if: ${{ steps.paths.outputs.openssl_SOURCE }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests openssl
- name: Fetch ninja
if: ${{ steps.paths.outputs.ninja_SOURCE }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests ninja
- name: Fetch cmake
if: ${{ steps.paths.outputs.cmake_SOURCE }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests cmake
- name: Fetch double-conversion
if: ${{ steps.paths.outputs.double-conversion_SOURCE }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests double-conversion
- name: Fetch fast_float
if: ${{ steps.paths.outputs.fast_float_SOURCE }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests fast_float
- name: Fetch fmt
if: ${{ steps.paths.outputs.fmt_SOURCE }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests fmt
- name: Fetch gflags
if: ${{ steps.paths.outputs.gflags_SOURCE }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests gflags
- name: Fetch glog
if: ${{ steps.paths.outputs.glog_SOURCE }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests glog
- name: Fetch googletest
if: ${{ steps.paths.outputs.googletest_SOURCE }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests googletest
- name: Fetch libdwarf
if: ${{ steps.paths.outputs.libdwarf_SOURCE }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests libdwarf
- name: Fetch libevent
if: ${{ steps.paths.outputs.libevent_SOURCE }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests libevent
- name: Fetch lz4
if: ${{ steps.paths.outputs.lz4_SOURCE }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests lz4
- name: Fetch snappy
if: ${{ steps.paths.outputs.snappy_SOURCE }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests snappy
- name: Fetch zstd
if: ${{ steps.paths.outputs.zstd_SOURCE }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests zstd
- name: Fetch autoconf
if: ${{ steps.paths.outputs.autoconf_SOURCE }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests autoconf
- name: Fetch automake
if: ${{ steps.paths.outputs.automake_SOURCE }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests automake
- name: Fetch libtool
if: ${{ steps.paths.outputs.libtool_SOURCE }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests libtool
- name: Fetch libsodium
if: ${{ steps.paths.outputs.libsodium_SOURCE }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests libsodium
- name: Fetch xz
if: ${{ steps.paths.outputs.xz_SOURCE }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests xz
- name: Restore boost from cache
id: restore_boost
if: ${{ steps.paths.outputs.boost_SOURCE }}
uses: actions/cache/restore@v4
with:
path: ${{ steps.paths.outputs.boost_INSTALL }}
key: ${{ steps.paths.outputs.boost_CACHE_KEY }}-install
- name: Build boost
if: ${{ steps.paths.outputs.boost_SOURCE && ! steps.restore_boost.outputs.cache-hit }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --free-up-disk --no-tests boost
- name: Save boost to cache
uses: actions/cache/save@v4
if: ${{ steps.paths.outputs.boost_SOURCE && ! steps.restore_boost.outputs.cache-hit }}
with:
path: ${{ steps.paths.outputs.boost_INSTALL }}
key: ${{ steps.paths.outputs.boost_CACHE_KEY }}-install
- name: Restore openssl from cache
id: restore_openssl
if: ${{ steps.paths.outputs.openssl_SOURCE }}
uses: actions/cache/restore@v4
with:
path: ${{ steps.paths.outputs.openssl_INSTALL }}
key: ${{ steps.paths.outputs.openssl_CACHE_KEY }}-install
- name: Build openssl
if: ${{ steps.paths.outputs.openssl_SOURCE && ! steps.restore_openssl.outputs.cache-hit }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --free-up-disk --no-tests openssl
- name: Save openssl to cache
uses: actions/cache/save@v4
if: ${{ steps.paths.outputs.openssl_SOURCE && ! steps.restore_openssl.outputs.cache-hit }}
with:
path: ${{ steps.paths.outputs.openssl_INSTALL }}
key: ${{ steps.paths.outputs.openssl_CACHE_KEY }}-install
- name: Restore ninja from cache
id: restore_ninja
if: ${{ steps.paths.outputs.ninja_SOURCE }}
uses: actions/cache/restore@v4
with:
path: ${{ steps.paths.outputs.ninja_INSTALL }}
key: ${{ steps.paths.outputs.ninja_CACHE_KEY }}-install
- name: Build ninja
if: ${{ steps.paths.outputs.ninja_SOURCE && ! steps.restore_ninja.outputs.cache-hit }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --free-up-disk --no-tests ninja
- name: Save ninja to cache
uses: actions/cache/save@v4
if: ${{ steps.paths.outputs.ninja_SOURCE && ! steps.restore_ninja.outputs.cache-hit }}
with:
path: ${{ steps.paths.outputs.ninja_INSTALL }}
key: ${{ steps.paths.outputs.ninja_CACHE_KEY }}-install
- name: Restore cmake from cache
id: restore_cmake
if: ${{ steps.paths.outputs.cmake_SOURCE }}
uses: actions/cache/restore@v4
with:
path: ${{ steps.paths.outputs.cmake_INSTALL }}
key: ${{ steps.paths.outputs.cmake_CACHE_KEY }}-install
- name: Build cmake
if: ${{ steps.paths.outputs.cmake_SOURCE && ! steps.restore_cmake.outputs.cache-hit }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --free-up-disk --no-tests cmake
- name: Save cmake to cache
uses: actions/cache/save@v4
if: ${{ steps.paths.outputs.cmake_SOURCE && ! steps.restore_cmake.outputs.cache-hit }}
with:
path: ${{ steps.paths.outputs.cmake_INSTALL }}
key: ${{ steps.paths.outputs.cmake_CACHE_KEY }}-install
- name: Restore double-conversion from cache
id: restore_double-conversion
if: ${{ steps.paths.outputs.double-conversion_SOURCE }}
uses: actions/cache/restore@v4
with:
path: ${{ steps.paths.outputs.double-conversion_INSTALL }}
key: ${{ steps.paths.outputs.double-conversion_CACHE_KEY }}-install
- name: Build double-conversion
if: ${{ steps.paths.outputs.double-conversion_SOURCE && ! steps.restore_double-conversion.outputs.cache-hit }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --free-up-disk --no-tests double-conversion
- name: Save double-conversion to cache
uses: actions/cache/save@v4
if: ${{ steps.paths.outputs.double-conversion_SOURCE && ! steps.restore_double-conversion.outputs.cache-hit }}
with:
path: ${{ steps.paths.outputs.double-conversion_INSTALL }}
key: ${{ steps.paths.outputs.double-conversion_CACHE_KEY }}-install
- name: Restore fast_float from cache
id: restore_fast_float
if: ${{ steps.paths.outputs.fast_float_SOURCE }}
uses: actions/cache/restore@v4
with:
path: ${{ steps.paths.outputs.fast_float_INSTALL }}
key: ${{ steps.paths.outputs.fast_float_CACHE_KEY }}-install
- name: Build fast_float
if: ${{ steps.paths.outputs.fast_float_SOURCE && ! steps.restore_fast_float.outputs.cache-hit }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --free-up-disk --no-tests fast_float
- name: Save fast_float to cache
uses: actions/cache/save@v4
if: ${{ steps.paths.outputs.fast_float_SOURCE && ! steps.restore_fast_float.outputs.cache-hit }}
with:
path: ${{ steps.paths.outputs.fast_float_INSTALL }}
key: ${{ steps.paths.outputs.fast_float_CACHE_KEY }}-install
- name: Restore fmt from cache
id: restore_fmt
if: ${{ steps.paths.outputs.fmt_SOURCE }}
uses: actions/cache/restore@v4
with:
path: ${{ steps.paths.outputs.fmt_INSTALL }}
key: ${{ steps.paths.outputs.fmt_CACHE_KEY }}-install
- name: Build fmt
if: ${{ steps.paths.outputs.fmt_SOURCE && ! steps.restore_fmt.outputs.cache-hit }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --free-up-disk --no-tests fmt
- name: Save fmt to cache
uses: actions/cache/save@v4
if: ${{ steps.paths.outputs.fmt_SOURCE && ! steps.restore_fmt.outputs.cache-hit }}
with:
path: ${{ steps.paths.outputs.fmt_INSTALL }}
key: ${{ steps.paths.outputs.fmt_CACHE_KEY }}-install
- name: Restore gflags from cache
id: restore_gflags
if: ${{ steps.paths.outputs.gflags_SOURCE }}
uses: actions/cache/restore@v4
with:
path: ${{ steps.paths.outputs.gflags_INSTALL }}
key: ${{ steps.paths.outputs.gflags_CACHE_KEY }}-install
- name: Build gflags
if: ${{ steps.paths.outputs.gflags_SOURCE && ! steps.restore_gflags.outputs.cache-hit }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --free-up-disk --no-tests gflags
- name: Save gflags to cache
uses: actions/cache/save@v4
if: ${{ steps.paths.outputs.gflags_SOURCE && ! steps.restore_gflags.outputs.cache-hit }}
with:
path: ${{ steps.paths.outputs.gflags_INSTALL }}
key: ${{ steps.paths.outputs.gflags_CACHE_KEY }}-install
- name: Restore glog from cache
id: restore_glog
if: ${{ steps.paths.outputs.glog_SOURCE }}
uses: actions/cache/restore@v4
with:
path: ${{ steps.paths.outputs.glog_INSTALL }}
key: ${{ steps.paths.outputs.glog_CACHE_KEY }}-install
- name: Build glog
if: ${{ steps.paths.outputs.glog_SOURCE && ! steps.restore_glog.outputs.cache-hit }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --free-up-disk --no-tests glog
- name: Save glog to cache
uses: actions/cache/save@v4
if: ${{ steps.paths.outputs.glog_SOURCE && ! steps.restore_glog.outputs.cache-hit }}
with:
path: ${{ steps.paths.outputs.glog_INSTALL }}
key: ${{ steps.paths.outputs.glog_CACHE_KEY }}-install
- name: Restore googletest from cache
id: restore_googletest
if: ${{ steps.paths.outputs.googletest_SOURCE }}
uses: actions/cache/restore@v4
with:
path: ${{ steps.paths.outputs.googletest_INSTALL }}
key: ${{ steps.paths.outputs.googletest_CACHE_KEY }}-install
- name: Build googletest
if: ${{ steps.paths.outputs.googletest_SOURCE && ! steps.restore_googletest.outputs.cache-hit }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --free-up-disk --no-tests googletest
- name: Save googletest to cache
uses: actions/cache/save@v4
if: ${{ steps.paths.outputs.googletest_SOURCE && ! steps.restore_googletest.outputs.cache-hit }}
with:
path: ${{ steps.paths.outputs.googletest_INSTALL }}
key: ${{ steps.paths.outputs.googletest_CACHE_KEY }}-install
- name: Restore libdwarf from cache
id: restore_libdwarf
if: ${{ steps.paths.outputs.libdwarf_SOURCE }}
uses: actions/cache/restore@v4
with:
path: ${{ steps.paths.outputs.libdwarf_INSTALL }}
key: ${{ steps.paths.outputs.libdwarf_CACHE_KEY }}-install
- name: Build libdwarf
if: ${{ steps.paths.outputs.libdwarf_SOURCE && ! steps.restore_libdwarf.outputs.cache-hit }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --free-up-disk --no-tests libdwarf
- name: Save libdwarf to cache
uses: actions/cache/save@v4
if: ${{ steps.paths.outputs.libdwarf_SOURCE && ! steps.restore_libdwarf.outputs.cache-hit }}
with:
path: ${{ steps.paths.outputs.libdwarf_INSTALL }}
key: ${{ steps.paths.outputs.libdwarf_CACHE_KEY }}-install
- name: Restore libevent from cache
id: restore_libevent
if: ${{ steps.paths.outputs.libevent_SOURCE }}
uses: actions/cache/restore@v4
with:
path: ${{ steps.paths.outputs.libevent_INSTALL }}
key: ${{ steps.paths.outputs.libevent_CACHE_KEY }}-install
- name: Build libevent
if: ${{ steps.paths.outputs.libevent_SOURCE && ! steps.restore_libevent.outputs.cache-hit }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --free-up-disk --no-tests libevent
- name: Save libevent to cache
uses: actions/cache/save@v4
if: ${{ steps.paths.outputs.libevent_SOURCE && ! steps.restore_libevent.outputs.cache-hit }}
with:
path: ${{ steps.paths.outputs.libevent_INSTALL }}
key: ${{ steps.paths.outputs.libevent_CACHE_KEY }}-install
- name: Restore lz4 from cache
id: restore_lz4
if: ${{ steps.paths.outputs.lz4_SOURCE }}
uses: actions/cache/restore@v4
with:
path: ${{ steps.paths.outputs.lz4_INSTALL }}
key: ${{ steps.paths.outputs.lz4_CACHE_KEY }}-install
- name: Build lz4
if: ${{ steps.paths.outputs.lz4_SOURCE && ! steps.restore_lz4.outputs.cache-hit }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --free-up-disk --no-tests lz4
- name: Save lz4 to cache
uses: actions/cache/save@v4
if: ${{ steps.paths.outputs.lz4_SOURCE && ! steps.restore_lz4.outputs.cache-hit }}
with:
path: ${{ steps.paths.outputs.lz4_INSTALL }}
key: ${{ steps.paths.outputs.lz4_CACHE_KEY }}-install
- name: Restore snappy from cache
id: restore_snappy
if: ${{ steps.paths.outputs.snappy_SOURCE }}
uses: actions/cache/restore@v4
with:
path: ${{ steps.paths.outputs.snappy_INSTALL }}
key: ${{ steps.paths.outputs.snappy_CACHE_KEY }}-install
- name: Build snappy
if: ${{ steps.paths.outputs.snappy_SOURCE && ! steps.restore_snappy.outputs.cache-hit }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --free-up-disk --no-tests snappy
- name: Save snappy to cache
uses: actions/cache/save@v4
if: ${{ steps.paths.outputs.snappy_SOURCE && ! steps.restore_snappy.outputs.cache-hit }}
with:
path: ${{ steps.paths.outputs.snappy_INSTALL }}
key: ${{ steps.paths.outputs.snappy_CACHE_KEY }}-install
- name: Restore zstd from cache
id: restore_zstd
if: ${{ steps.paths.outputs.zstd_SOURCE }}
uses: actions/cache/restore@v4
with:
path: ${{ steps.paths.outputs.zstd_INSTALL }}
key: ${{ steps.paths.outputs.zstd_CACHE_KEY }}-install
- name: Build zstd
if: ${{ steps.paths.outputs.zstd_SOURCE && ! steps.restore_zstd.outputs.cache-hit }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --free-up-disk --no-tests zstd
- name: Save zstd to cache
uses: actions/cache/save@v4
if: ${{ steps.paths.outputs.zstd_SOURCE && ! steps.restore_zstd.outputs.cache-hit }}
with:
path: ${{ steps.paths.outputs.zstd_INSTALL }}
key: ${{ steps.paths.outputs.zstd_CACHE_KEY }}-install
- name: Restore autoconf from cache
id: restore_autoconf
if: ${{ steps.paths.outputs.autoconf_SOURCE }}
uses: actions/cache/restore@v4
with:
path: ${{ steps.paths.outputs.autoconf_INSTALL }}
key: ${{ steps.paths.outputs.autoconf_CACHE_KEY }}-install
- name: Build autoconf
if: ${{ steps.paths.outputs.autoconf_SOURCE && ! steps.restore_autoconf.outputs.cache-hit }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --free-up-disk --no-tests autoconf
- name: Save autoconf to cache
uses: actions/cache/save@v4
if: ${{ steps.paths.outputs.autoconf_SOURCE && ! steps.restore_autoconf.outputs.cache-hit }}
with:
path: ${{ steps.paths.outputs.autoconf_INSTALL }}
key: ${{ steps.paths.outputs.autoconf_CACHE_KEY }}-install
- name: Restore automake from cache
id: restore_automake
if: ${{ steps.paths.outputs.automake_SOURCE }}
uses: actions/cache/restore@v4
with:
path: ${{ steps.paths.outputs.automake_INSTALL }}
key: ${{ steps.paths.outputs.automake_CACHE_KEY }}-install
- name: Build automake
if: ${{ steps.paths.outputs.automake_SOURCE && ! steps.restore_automake.outputs.cache-hit }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --free-up-disk --no-tests automake
- name: Save automake to cache
uses: actions/cache/save@v4
if: ${{ steps.paths.outputs.automake_SOURCE && ! steps.restore_automake.outputs.cache-hit }}
with:
path: ${{ steps.paths.outputs.automake_INSTALL }}
key: ${{ steps.paths.outputs.automake_CACHE_KEY }}-install
- name: Restore libtool from cache
id: restore_libtool
if: ${{ steps.paths.outputs.libtool_SOURCE }}
uses: actions/cache/restore@v4
with:
path: ${{ steps.paths.outputs.libtool_INSTALL }}
key: ${{ steps.paths.outputs.libtool_CACHE_KEY }}-install
- name: Build libtool
if: ${{ steps.paths.outputs.libtool_SOURCE && ! steps.restore_libtool.outputs.cache-hit }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --free-up-disk --no-tests libtool
- name: Save libtool to cache
uses: actions/cache/save@v4
if: ${{ steps.paths.outputs.libtool_SOURCE && ! steps.restore_libtool.outputs.cache-hit }}
with:
path: ${{ steps.paths.outputs.libtool_INSTALL }}
key: ${{ steps.paths.outputs.libtool_CACHE_KEY }}-install
- name: Restore libsodium from cache
id: restore_libsodium
if: ${{ steps.paths.outputs.libsodium_SOURCE }}
uses: actions/cache/restore@v4
with:
path: ${{ steps.paths.outputs.libsodium_INSTALL }}
key: ${{ steps.paths.outputs.libsodium_CACHE_KEY }}-install
- name: Build libsodium
if: ${{ steps.paths.outputs.libsodium_SOURCE && ! steps.restore_libsodium.outputs.cache-hit }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --free-up-disk --no-tests libsodium
- name: Save libsodium to cache
uses: actions/cache/save@v4
if: ${{ steps.paths.outputs.libsodium_SOURCE && ! steps.restore_libsodium.outputs.cache-hit }}
with:
path: ${{ steps.paths.outputs.libsodium_INSTALL }}
key: ${{ steps.paths.outputs.libsodium_CACHE_KEY }}-install
- name: Restore xz from cache
id: restore_xz
if: ${{ steps.paths.outputs.xz_SOURCE }}
uses: actions/cache/restore@v4
with:
path: ${{ steps.paths.outputs.xz_INSTALL }}
key: ${{ steps.paths.outputs.xz_CACHE_KEY }}-install
- name: Build xz
if: ${{ steps.paths.outputs.xz_SOURCE && ! steps.restore_xz.outputs.cache-hit }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --free-up-disk --no-tests xz
- name: Save xz to cache
uses: actions/cache/save@v4
if: ${{ steps.paths.outputs.xz_SOURCE && ! steps.restore_xz.outputs.cache-hit }}
with:
path: ${{ steps.paths.outputs.xz_INSTALL }}
key: ${{ steps.paths.outputs.xz_CACHE_KEY }}-install
- name: Build folly
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --src-dir=. folly --project-install-prefix folly:/usr/local
- name: Copy artifacts
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fixup-dyn-deps --src-dir=. folly _artifacts/mac --project-install-prefix folly:/usr/local --final-install-prefix /usr/local
- uses: actions/upload-artifact@v6
with:
name: folly
path: _artifacts
- name: Test folly
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages test --src-dir=. folly --project-install-prefix folly:/usr/local
- name: Show disk space at end
if: always()
run: df -h
================================================
FILE: .github/workflows/getdeps_shared-libs_linux.yml
================================================
# This file was @generated by getdeps.py
name: Shared Libs Linux
on:
push:
branches:
- main
pull_request:
branches:
- main
permissions:
contents: read # to fetch code (actions/checkout)
jobs:
build:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v6
- name: Show disk space at start
run: df -h
- name: Free up disk space
run: sudo rm -rf /usr/local/lib/android
- name: Show disk space after freeing up
run: df -h
- name: Update system package info
run: sudo --preserve-env=http_proxy apt-get update
- name: Install system deps
run: sudo --preserve-env=http_proxy python3 build/fbcode_builder/getdeps.py --allow-system-packages install-system-deps --recursive folly && sudo --preserve-env=http_proxy python3 build/fbcode_builder/getdeps.py --allow-system-packages install-system-deps --recursive patchelf
- id: paths
name: Query paths
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages query-paths --recursive --src-dir=. folly >> "$GITHUB_OUTPUT"
- name: Fetch boost
if: ${{ steps.paths.outputs.boost_SOURCE }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests boost
- name: Fetch libaio
if: ${{ steps.paths.outputs.libaio_SOURCE }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests libaio
- name: Fetch ninja
if: ${{ steps.paths.outputs.ninja_SOURCE }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests ninja
- name: Fetch cmake
if: ${{ steps.paths.outputs.cmake_SOURCE }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests cmake
- name: Fetch double-conversion
if: ${{ steps.paths.outputs.double-conversion_SOURCE }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests double-conversion
- name: Fetch fast_float
if: ${{ steps.paths.outputs.fast_float_SOURCE }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests fast_float
- name: Fetch fmt
if: ${{ steps.paths.outputs.fmt_SOURCE }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests fmt
- name: Fetch gflags
if: ${{ steps.paths.outputs.gflags_SOURCE }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests gflags
- name: Fetch glog
if: ${{ steps.paths.outputs.glog_SOURCE }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests glog
- name: Fetch googletest
if: ${{ steps.paths.outputs.googletest_SOURCE }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests googletest
- name: Fetch libdwarf
if: ${{ steps.paths.outputs.libdwarf_SOURCE }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests libdwarf
- name: Fetch libevent
if: ${{ steps.paths.outputs.libevent_SOURCE }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests libevent
- name: Fetch zlib
if: ${{ steps.paths.outputs.zlib_SOURCE }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests zlib
- name: Fetch lz4
if: ${{ steps.paths.outputs.lz4_SOURCE }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests lz4
- name: Fetch snappy
if: ${{ steps.paths.outputs.snappy_SOURCE }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests snappy
- name: Fetch zstd
if: ${{ steps.paths.outputs.zstd_SOURCE }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests zstd
- name: Fetch autoconf
if: ${{ steps.paths.outputs.autoconf_SOURCE }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests autoconf
- name: Fetch automake
if: ${{ steps.paths.outputs.automake_SOURCE }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests automake
- name: Fetch libtool
if: ${{ steps.paths.outputs.libtool_SOURCE }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests libtool
- name: Fetch libiberty
if: ${{ steps.paths.outputs.libiberty_SOURCE }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests libiberty
- name: Fetch libsodium
if: ${{ steps.paths.outputs.libsodium_SOURCE }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests libsodium
- name: Fetch libunwind
if: ${{ steps.paths.outputs.libunwind_SOURCE }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests libunwind
- name: Fetch xz
if: ${{ steps.paths.outputs.xz_SOURCE }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests xz
- name: Restore boost from cache
id: restore_boost
if: ${{ steps.paths.outputs.boost_SOURCE }}
uses: actions/cache/restore@v4
with:
path: ${{ steps.paths.outputs.boost_INSTALL }}
key: ${{ steps.paths.outputs.boost_CACHE_KEY }}-install
- name: Build boost
if: ${{ steps.paths.outputs.boost_SOURCE && ! steps.restore_boost.outputs.cache-hit }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --shared-libs --free-up-disk --no-tests boost
- name: Save boost to cache
uses: actions/cache/save@v4
if: ${{ steps.paths.outputs.boost_SOURCE && ! steps.restore_boost.outputs.cache-hit }}
with:
path: ${{ steps.paths.outputs.boost_INSTALL }}
key: ${{ steps.paths.outputs.boost_CACHE_KEY }}-install
- name: Restore libaio from cache
id: restore_libaio
if: ${{ steps.paths.outputs.libaio_SOURCE }}
uses: actions/cache/restore@v4
with:
path: ${{ steps.paths.outputs.libaio_INSTALL }}
key: ${{ steps.paths.outputs.libaio_CACHE_KEY }}-install
- name: Build libaio
if: ${{ steps.paths.outputs.libaio_SOURCE && ! steps.restore_libaio.outputs.cache-hit }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --shared-libs --free-up-disk --no-tests libaio
- name: Save libaio to cache
uses: actions/cache/save@v4
if: ${{ steps.paths.outputs.libaio_SOURCE && ! steps.restore_libaio.outputs.cache-hit }}
with:
path: ${{ steps.paths.outputs.libaio_INSTALL }}
key: ${{ steps.paths.outputs.libaio_CACHE_KEY }}-install
- name: Restore ninja from cache
id: restore_ninja
if: ${{ steps.paths.outputs.ninja_SOURCE }}
uses: actions/cache/restore@v4
with:
path: ${{ steps.paths.outputs.ninja_INSTALL }}
key: ${{ steps.paths.outputs.ninja_CACHE_KEY }}-install
- name: Build ninja
if: ${{ steps.paths.outputs.ninja_SOURCE && ! steps.restore_ninja.outputs.cache-hit }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --shared-libs --free-up-disk --no-tests ninja
- name: Save ninja to cache
uses: actions/cache/save@v4
if: ${{ steps.paths.outputs.ninja_SOURCE && ! steps.restore_ninja.outputs.cache-hit }}
with:
path: ${{ steps.paths.outputs.ninja_INSTALL }}
key: ${{ steps.paths.outputs.ninja_CACHE_KEY }}-install
- name: Restore cmake from cache
id: restore_cmake
if: ${{ steps.paths.outputs.cmake_SOURCE }}
uses: actions/cache/restore@v4
with:
path: ${{ steps.paths.outputs.cmake_INSTALL }}
key: ${{ steps.paths.outputs.cmake_CACHE_KEY }}-install
- name: Build cmake
if: ${{ steps.paths.outputs.cmake_SOURCE && ! steps.restore_cmake.outputs.cache-hit }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --shared-libs --free-up-disk --no-tests cmake
- name: Save cmake to cache
uses: actions/cache/save@v4
if: ${{ steps.paths.outputs.cmake_SOURCE && ! steps.restore_cmake.outputs.cache-hit }}
with:
path: ${{ steps.paths.outputs.cmake_INSTALL }}
key: ${{ steps.paths.outputs.cmake_CACHE_KEY }}-install
- name: Restore double-conversion from cache
id: restore_double-conversion
if: ${{ steps.paths.outputs.double-conversion_SOURCE }}
uses: actions/cache/restore@v4
with:
path: ${{ steps.paths.outputs.double-conversion_INSTALL }}
key: ${{ steps.paths.outputs.double-conversion_CACHE_KEY }}-install
- name: Build double-conversion
if: ${{ steps.paths.outputs.double-conversion_SOURCE && ! steps.restore_double-conversion.outputs.cache-hit }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --shared-libs --free-up-disk --no-tests double-conversion
- name: Save double-conversion to cache
uses: actions/cache/save@v4
if: ${{ steps.paths.outputs.double-conversion_SOURCE && ! steps.restore_double-conversion.outputs.cache-hit }}
with:
path: ${{ steps.paths.outputs.double-conversion_INSTALL }}
key: ${{ steps.paths.outputs.double-conversion_CACHE_KEY }}-install
- name: Restore fast_float from cache
id: restore_fast_float
if: ${{ steps.paths.outputs.fast_float_SOURCE }}
uses: actions/cache/restore@v4
with:
path: ${{ steps.paths.outputs.fast_float_INSTALL }}
key: ${{ steps.paths.outputs.fast_float_CACHE_KEY }}-install
- name: Build fast_float
if: ${{ steps.paths.outputs.fast_float_SOURCE && ! steps.restore_fast_float.outputs.cache-hit }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --shared-libs --free-up-disk --no-tests fast_float
- name: Save fast_float to cache
uses: actions/cache/save@v4
if: ${{ steps.paths.outputs.fast_float_SOURCE && ! steps.restore_fast_float.outputs.cache-hit }}
with:
path: ${{ steps.paths.outputs.fast_float_INSTALL }}
key: ${{ steps.paths.outputs.fast_float_CACHE_KEY }}-install
- name: Restore fmt from cache
id: restore_fmt
if: ${{ steps.paths.outputs.fmt_SOURCE }}
uses: actions/cache/restore@v4
with:
path: ${{ steps.paths.outputs.fmt_INSTALL }}
key: ${{ steps.paths.outputs.fmt_CACHE_KEY }}-install
- name: Build fmt
if: ${{ steps.paths.outputs.fmt_SOURCE && ! steps.restore_fmt.outputs.cache-hit }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --shared-libs --free-up-disk --no-tests fmt
- name: Save fmt to cache
uses: actions/cache/save@v4
if: ${{ steps.paths.outputs.fmt_SOURCE && ! steps.restore_fmt.outputs.cache-hit }}
with:
path: ${{ steps.paths.outputs.fmt_INSTALL }}
key: ${{ steps.paths.outputs.fmt_CACHE_KEY }}-install
- name: Restore gflags from cache
id: restore_gflags
if: ${{ steps.paths.outputs.gflags_SOURCE }}
uses: actions/cache/restore@v4
with:
path: ${{ steps.paths.outputs.gflags_INSTALL }}
key: ${{ steps.paths.outputs.gflags_CACHE_KEY }}-install
- name: Build gflags
if: ${{ steps.paths.outputs.gflags_SOURCE && ! steps.restore_gflags.outputs.cache-hit }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --shared-libs --free-up-disk --no-tests gflags
- name: Save gflags to cache
uses: actions/cache/save@v4
if: ${{ steps.paths.outputs.gflags_SOURCE && ! steps.restore_gflags.outputs.cache-hit }}
with:
path: ${{ steps.paths.outputs.gflags_INSTALL }}
key: ${{ steps.paths.outputs.gflags_CACHE_KEY }}-install
- name: Restore glog from cache
id: restore_glog
if: ${{ steps.paths.outputs.glog_SOURCE }}
uses: actions/cache/restore@v4
with:
path: ${{ steps.paths.outputs.glog_INSTALL }}
key: ${{ steps.paths.outputs.glog_CACHE_KEY }}-install
- name: Build glog
if: ${{ steps.paths.outputs.glog_SOURCE && ! steps.restore_glog.outputs.cache-hit }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --shared-libs --free-up-disk --no-tests glog
- name: Save glog to cache
uses: actions/cache/save@v4
if: ${{ steps.paths.outputs.glog_SOURCE && ! steps.restore_glog.outputs.cache-hit }}
with:
path: ${{ steps.paths.outputs.glog_INSTALL }}
key: ${{ steps.paths.outputs.glog_CACHE_KEY }}-install
- name: Restore googletest from cache
id: restore_googletest
if: ${{ steps.paths.outputs.googletest_SOURCE }}
uses: actions/cache/restore@v4
with:
path: ${{ steps.paths.outputs.googletest_INSTALL }}
key: ${{ steps.paths.outputs.googletest_CACHE_KEY }}-install
- name: Build googletest
if: ${{ steps.paths.outputs.googletest_SOURCE && ! steps.restore_googletest.outputs.cache-hit }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --shared-libs --free-up-disk --no-tests googletest
- name: Save googletest to cache
uses: actions/cache/save@v4
if: ${{ steps.paths.outputs.googletest_SOURCE && ! steps.restore_googletest.outputs.cache-hit }}
with:
path: ${{ steps.paths.outputs.googletest_INSTALL }}
key: ${{ steps.paths.outputs.googletest_CACHE_KEY }}-install
- name: Restore libdwarf from cache
id: restore_libdwarf
if: ${{ steps.paths.outputs.libdwarf_SOURCE }}
uses: actions/cache/restore@v4
with:
path: ${{ steps.paths.outputs.libdwarf_INSTALL }}
key: ${{ steps.paths.outputs.libdwarf_CACHE_KEY }}-install
- name: Build libdwarf
if: ${{ steps.paths.outputs.libdwarf_SOURCE && ! steps.restore_libdwarf.outputs.cache-hit }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --shared-libs --free-up-disk --no-tests libdwarf
- name: Save libdwarf to cache
uses: actions/cache/save@v4
if: ${{ steps.paths.outputs.libdwarf_SOURCE && ! steps.restore_libdwarf.outputs.cache-hit }}
with:
path: ${{ steps.paths.outputs.libdwarf_INSTALL }}
key: ${{ steps.paths.outputs.libdwarf_CACHE_KEY }}-install
- name: Restore libevent from cache
id: restore_libevent
if: ${{ steps.paths.outputs.libevent_SOURCE }}
uses: actions/cache/restore@v4
with:
path: ${{ steps.paths.outputs.libevent_INSTALL }}
key: ${{ steps.paths.outputs.libevent_CACHE_KEY }}-install
- name: Build libevent
if: ${{ steps.paths.outputs.libevent_SOURCE && ! steps.restore_libevent.outputs.cache-hit }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --shared-libs --free-up-disk --no-tests libevent
- name: Save libevent to cache
uses: actions/cache/save@v4
if: ${{ steps.paths.outputs.libevent_SOURCE && ! steps.restore_libevent.outputs.cache-hit }}
with:
path: ${{ steps.paths.outputs.libevent_INSTALL }}
key: ${{ steps.paths.outputs.libevent_CACHE_KEY }}-install
- name: Restore zlib from cache
id: restore_zlib
if: ${{ steps.paths.outputs.zlib_SOURCE }}
uses: actions/cache/restore@v4
with:
path: ${{ steps.paths.outputs.zlib_INSTALL }}
key: ${{ steps.paths.outputs.zlib_CACHE_KEY }}-install
- name: Build zlib
if: ${{ steps.paths.outputs.zlib_SOURCE && ! steps.restore_zlib.outputs.cache-hit }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --shared-libs --free-up-disk --no-tests zlib
- name: Save zlib to cache
uses: actions/cache/save@v4
if: ${{ steps.paths.outputs.zlib_SOURCE && ! steps.restore_zlib.outputs.cache-hit }}
with:
path: ${{ steps.paths.outputs.zlib_INSTALL }}
key: ${{ steps.paths.outputs.zlib_CACHE_KEY }}-install
- name: Restore lz4 from cache
id: restore_lz4
if: ${{ steps.paths.outputs.lz4_SOURCE }}
uses: actions/cache/restore@v4
with:
path: ${{ steps.paths.outputs.lz4_INSTALL }}
key: ${{ steps.paths.outputs.lz4_CACHE_KEY }}-install
- name: Build lz4
if: ${{ steps.paths.outputs.lz4_SOURCE && ! steps.restore_lz4.outputs.cache-hit }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --shared-libs --free-up-disk --no-tests lz4
- name: Save lz4 to cache
uses: actions/cache/save@v4
if: ${{ steps.paths.outputs.lz4_SOURCE && ! steps.restore_lz4.outputs.cache-hit }}
with:
path: ${{ steps.paths.outputs.lz4_INSTALL }}
key: ${{ steps.paths.outputs.lz4_CACHE_KEY }}-install
- name: Restore snappy from cache
id: restore_snappy
if: ${{ steps.paths.outputs.snappy_SOURCE }}
uses: actions/cache/restore@v4
with:
path: ${{ steps.paths.outputs.snappy_INSTALL }}
key: ${{ steps.paths.outputs.snappy_CACHE_KEY }}-install
- name: Build snappy
if: ${{ steps.paths.outputs.snappy_SOURCE && ! steps.restore_snappy.outputs.cache-hit }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --shared-libs --free-up-disk --no-tests snappy
- name: Save snappy to cache
uses: actions/cache/save@v4
if: ${{ steps.paths.outputs.snappy_SOURCE && ! steps.restore_snappy.outputs.cache-hit }}
with:
path: ${{ steps.paths.outputs.snappy_INSTALL }}
key: ${{ steps.paths.outputs.snappy_CACHE_KEY }}-install
- name: Restore zstd from cache
id: restore_zstd
if: ${{ steps.paths.outputs.zstd_SOURCE }}
uses: actions/cache/restore@v4
with:
path: ${{ steps.paths.outputs.zstd_INSTALL }}
key: ${{ steps.paths.outputs.zstd_CACHE_KEY }}-install
- name: Build zstd
if: ${{ steps.paths.outputs.zstd_SOURCE && ! steps.restore_zstd.outputs.cache-hit }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --shared-libs --free-up-disk --no-tests zstd
- name: Save zstd to cache
uses: actions/cache/save@v4
if: ${{ steps.paths.outputs.zstd_SOURCE && ! steps.restore_zstd.outputs.cache-hit }}
with:
path: ${{ steps.paths.outputs.zstd_INSTALL }}
key: ${{ steps.paths.outputs.zstd_CACHE_KEY }}-install
- name: Restore autoconf from cache
id: restore_autoconf
if: ${{ steps.paths.outputs.autoconf_SOURCE }}
uses: actions/cache/restore@v4
with:
path: ${{ steps.paths.outputs.autoconf_INSTALL }}
key: ${{ steps.paths.outputs.autoconf_CACHE_KEY }}-install
- name: Build autoconf
if: ${{ steps.paths.outputs.autoconf_SOURCE && ! steps.restore_autoconf.outputs.cache-hit }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --shared-libs --free-up-disk --no-tests autoconf
- name: Save autoconf to cache
uses: actions/cache/save@v4
if: ${{ steps.paths.outputs.autoconf_SOURCE && ! steps.restore_autoconf.outputs.cache-hit }}
with:
path: ${{ steps.paths.outputs.autoconf_INSTALL }}
key: ${{ steps.paths.outputs.autoconf_CACHE_KEY }}-install
- name: Restore automake from cache
id: restore_automake
if: ${{ steps.paths.outputs.automake_SOURCE }}
uses: actions/cache/restore@v4
with:
path: ${{ steps.paths.outputs.automake_INSTALL }}
key: ${{ steps.paths.outputs.automake_CACHE_KEY }}-install
- name: Build automake
if: ${{ steps.paths.outputs.automake_SOURCE && ! steps.restore_automake.outputs.cache-hit }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --shared-libs --free-up-disk --no-tests automake
- name: Save automake to cache
uses: actions/cache/save@v4
if: ${{ steps.paths.outputs.automake_SOURCE && ! steps.restore_automake.outputs.cache-hit }}
with:
path: ${{ steps.paths.outputs.automake_INSTALL }}
key: ${{ steps.paths.outputs.automake_CACHE_KEY }}-install
- name: Restore libtool from cache
id: restore_libtool
if: ${{ steps.paths.outputs.libtool_SOURCE }}
uses: actions/cache/restore@v4
with:
path: ${{ steps.paths.outputs.libtool_INSTALL }}
key: ${{ steps.paths.outputs.libtool_CACHE_KEY }}-install
- name: Build libtool
if: ${{ steps.paths.outputs.libtool_SOURCE && ! steps.restore_libtool.outputs.cache-hit }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --shared-libs --free-up-disk --no-tests libtool
- name: Save libtool to cache
uses: actions/cache/save@v4
if: ${{ steps.paths.outputs.libtool_SOURCE && ! steps.restore_libtool.outputs.cache-hit }}
with:
path: ${{ steps.paths.outputs.libtool_INSTALL }}
key: ${{ steps.paths.outputs.libtool_CACHE_KEY }}-install
- name: Restore libiberty from cache
id: restore_libiberty
if: ${{ steps.paths.outputs.libiberty_SOURCE }}
uses: actions/cache/restore@v4
with:
path: ${{ steps.paths.outputs.libiberty_INSTALL }}
key: ${{ steps.paths.outputs.libiberty_CACHE_KEY }}-install
- name: Build libiberty
if: ${{ steps.paths.outputs.libiberty_SOURCE && ! steps.restore_libiberty.outputs.cache-hit }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --shared-libs --free-up-disk --no-tests libiberty
- name: Save libiberty to cache
uses: actions/cache/save@v4
if: ${{ steps.paths.outputs.libiberty_SOURCE && ! steps.restore_libiberty.outputs.cache-hit }}
with:
path: ${{ steps.paths.outputs.libiberty_INSTALL }}
key: ${{ steps.paths.outputs.libiberty_CACHE_KEY }}-install
- name: Restore libsodium from cache
id: restore_libsodium
if: ${{ steps.paths.outputs.libsodium_SOURCE }}
uses: actions/cache/restore@v4
with:
path: ${{ steps.paths.outputs.libsodium_INSTALL }}
key: ${{ steps.paths.outputs.libsodium_CACHE_KEY }}-install
- name: Build libsodium
if: ${{ steps.paths.outputs.libsodium_SOURCE && ! steps.restore_libsodium.outputs.cache-hit }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --shared-libs --free-up-disk --no-tests libsodium
- name: Save libsodium to cache
uses: actions/cache/save@v4
if: ${{ steps.paths.outputs.libsodium_SOURCE && ! steps.restore_libsodium.outputs.cache-hit }}
with:
path: ${{ steps.paths.outputs.libsodium_INSTALL }}
key: ${{ steps.paths.outputs.libsodium_CACHE_KEY }}-install
- name: Restore libunwind from cache
id: restore_libunwind
if: ${{ steps.paths.outputs.libunwind_SOURCE }}
uses: actions/cache/restore@v4
with:
path: ${{ steps.paths.outputs.libunwind_INSTALL }}
key: ${{ steps.paths.outputs.libunwind_CACHE_KEY }}-install
- name: Build libunwind
if: ${{ steps.paths.outputs.libunwind_SOURCE && ! steps.restore_libunwind.outputs.cache-hit }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --shared-libs --free-up-disk --no-tests libunwind
- name: Save libunwind to cache
uses: actions/cache/save@v4
if: ${{ steps.paths.outputs.libunwind_SOURCE && ! steps.restore_libunwind.outputs.cache-hit }}
with:
path: ${{ steps.paths.outputs.libunwind_INSTALL }}
key: ${{ steps.paths.outputs.libunwind_CACHE_KEY }}-install
- name: Restore xz from cache
id: restore_xz
if: ${{ steps.paths.outputs.xz_SOURCE }}
uses: actions/cache/restore@v4
with:
path: ${{ steps.paths.outputs.xz_INSTALL }}
key: ${{ steps.paths.outputs.xz_CACHE_KEY }}-install
- name: Build xz
if: ${{ steps.paths.outputs.xz_SOURCE && ! steps.restore_xz.outputs.cache-hit }}
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --shared-libs --free-up-disk --no-tests xz
- name: Save xz to cache
uses: actions/cache/save@v4
if: ${{ steps.paths.outputs.xz_SOURCE && ! steps.restore_xz.outputs.cache-hit }}
with:
path: ${{ steps.paths.outputs.xz_INSTALL }}
key: ${{ steps.paths.outputs.xz_CACHE_KEY }}-install
- name: Build folly
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --shared-libs --src-dir=. folly --project-install-prefix folly:/usr/local
- name: Copy artifacts
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fixup-dyn-deps --strip --src-dir=. folly _artifacts/linux --project-install-prefix folly:/usr/local --final-install-prefix /usr/local
- uses: actions/upload-artifact@v6
with:
name: folly
path: _artifacts
- name: Test folly
run: python3 build/fbcode_builder/getdeps.py --allow-system-packages test --shared-libs --src-dir=. folly --project-install-prefix folly:/usr/local
- name: Show disk space at end
if: always()
run: df -h
================================================
FILE: .github/workflows/getdeps_windows.yml
================================================
# This file was @generated by getdeps.py
name: windows
on:
push:
branches:
- main
pull_request:
branches:
- main
permissions:
contents: read # to fetch code (actions/checkout)
jobs:
build:
runs-on: windows-2022
steps:
- name: Export boost environment
run: "echo BOOST_ROOT=%BOOST_ROOT_1_83_0% >> %GITHUB_ENV%"
shell: cmd
- name: Fix Git config
run: >
git config --system core.longpaths true &&
git config --system core.autocrlf false &&
git config --system core.symlinks true
shell: cmd
- uses: actions/checkout@v6
- id: paths
name: Query paths
run: python build/fbcode_builder/getdeps.py query-paths --recursive --src-dir=. folly >> $env:GITHUB_OUTPUT
shell: pwsh
- name: Fetch boost
if: ${{ steps.paths.outputs.boost_SOURCE }}
run: python build/fbcode_builder/getdeps.py fetch --no-tests boost
- name: Fetch libsodium
if: ${{ steps.paths.outputs.libsodium_SOURCE }}
run: python build/fbcode_builder/getdeps.py fetch --no-tests libsodium
- name: Fetch ninja
if: ${{ steps.paths.outputs.ninja_SOURCE }}
run: python build/fbcode_builder/getdeps.py fetch --no-tests ninja
- name: Fetch cmake
if: ${{ steps.paths.outputs.cmake_SOURCE }}
run: python build/fbcode_builder/getdeps.py fetch --no-tests cmake
- name: Fetch double-conversion
if: ${{ steps.paths.outputs.double-conversion_SOURCE }}
run: python build/fbcode_builder/getdeps.py fetch --no-tests double-conversion
- name: Fetch fast_float
if: ${{ steps.paths.outputs.fast_float_SOURCE }}
run: python build/fbcode_builder/getdeps.py fetch --no-tests fast_float
- name: Fetch fmt
if: ${{ steps.paths.outputs.fmt_SOURCE }}
run: python build/fbcode_builder/getdeps.py fetch --no-tests fmt
- name: Fetch gflags
if: ${{ steps.paths.outputs.gflags_SOURCE }}
run: python build/fbcode_builder/getdeps.py fetch --no-tests gflags
- name: Fetch glog
if: ${{ steps.paths.outputs.glog_SOURCE }}
run: python build/fbcode_builder/getdeps.py fetch --no-tests glog
- name: Fetch googletest
if: ${{ steps.paths.outputs.googletest_SOURCE }}
run: python build/fbcode_builder/getdeps.py fetch --no-tests googletest
- name: Fetch libdwarf
if: ${{ steps.paths.outputs.libdwarf_SOURCE }}
run: python build/fbcode_builder/getdeps.py fetch --no-tests libdwarf
- name: Fetch lz4
if: ${{ steps.paths.outputs.lz4_SOURCE }}
run: python build/fbcode_builder/getdeps.py fetch --no-tests lz4
- name: Fetch jom
if: ${{ steps.paths.outputs.jom_SOURCE }}
run: python build/fbcode_builder/getdeps.py fetch --no-tests jom
- name: Fetch perl
if: ${{ steps.paths.outputs.perl_SOURCE }}
run: python build/fbcode_builder/getdeps.py fetch --no-tests perl
- name: Fetch openssl
if: ${{ steps.paths.outputs.openssl_SOURCE }}
run: python build/fbcode_builder/getdeps.py fetch --no-tests openssl
- name: Fetch snappy
if: ${{ steps.paths.outputs.snappy_SOURCE }}
run: python build/fbcode_builder/getdeps.py fetch --no-tests snappy
- name: Fetch zlib
if: ${{ steps.paths.outputs.zlib_SOURCE }}
run: python build/fbcode_builder/getdeps.py fetch --no-tests zlib
- name: Fetch zstd
if: ${{ steps.paths.outputs.zstd_SOURCE }}
run: python build/fbcode_builder/getdeps.py fetch --no-tests zstd
- name: Fetch libevent
if: ${{ steps.paths.outputs.libevent_SOURCE }}
run: python build/fbcode_builder/getdeps.py fetch --no-tests libevent
- name: Restore boost from cache
id: restore_boost
if: ${{ steps.paths.outputs.boost_SOURCE }}
uses: actions/cache/restore@v4
with:
path: ${{ steps.paths.outputs.boost_INSTALL }}
key: ${{ steps.paths.outputs.boost_CACHE_KEY }}-install
- name: Build boost
if: ${{ steps.paths.outputs.boost_SOURCE && ! steps.restore_boost.outputs.cache-hit }}
run: python build/fbcode_builder/getdeps.py build --free-up-disk --no-tests boost
- name: Save boost to cache
uses: actions/cache/save@v4
if: ${{ steps.paths.outputs.boost_SOURCE && ! steps.restore_boost.outputs.cache-hit }}
with:
path: ${{ steps.paths.outputs.boost_INSTALL }}
key: ${{ steps.paths.outputs.boost_CACHE_KEY }}-install
- name: Restore libsodium from cache
id: restore_libsodium
if: ${{ steps.paths.outputs.libsodium_SOURCE }}
uses: actions/cache/restore@v4
with:
path: ${{ steps.paths.outputs.libsodium_INSTALL }}
key: ${{ steps.paths.outputs.libsodium_CACHE_KEY }}-install
- name: Build libsodium
if: ${{ steps.paths.outputs.libsodium_SOURCE && ! steps.restore_libsodium.outputs.cache-hit }}
run: python build/fbcode_builder/getdeps.py build --free-up-disk --no-tests libsodium
- name: Save libsodium to cache
uses: actions/cache/save@v4
if: ${{ steps.paths.outputs.libsodium_SOURCE && ! steps.restore_libsodium.outputs.cache-hit }}
with:
path: ${{ steps.paths.outputs.libsodium_INSTALL }}
key: ${{ steps.paths.outputs.libsodium_CACHE_KEY }}-install
- name: Restore ninja from cache
id: restore_ninja
if: ${{ steps.paths.outputs.ninja_SOURCE }}
uses: actions/cache/restore@v4
with:
path: ${{ steps.paths.outputs.ninja_INSTALL }}
key: ${{ steps.paths.outputs.ninja_CACHE_KEY }}-install
- name: Build ninja
if: ${{ steps.paths.outputs.ninja_SOURCE && ! steps.restore_ninja.outputs.cache-hit }}
run: python build/fbcode_builder/getdeps.py build --free-up-disk --no-tests ninja
- name: Save ninja to cache
uses: actions/cache/save@v4
if: ${{ steps.paths.outputs.ninja_SOURCE && ! steps.restore_ninja.outputs.cache-hit }}
with:
path: ${{ steps.paths.outputs.ninja_INSTALL }}
key: ${{ steps.paths.outputs.ninja_CACHE_KEY }}-install
- name: Restore cmake from cache
id: restore_cmake
if: ${{ steps.paths.outputs.cmake_SOURCE }}
uses: actions/cache/restore@v4
with:
path: ${{ steps.paths.outputs.cmake_INSTALL }}
key: ${{ steps.paths.outputs.cmake_CACHE_KEY }}-install
- name: Build cmake
if: ${{ steps.paths.outputs.cmake_SOURCE && ! steps.restore_cmake.outputs.cache-hit }}
run: python build/fbcode_builder/getdeps.py build --free-up-disk --no-tests cmake
- name: Save cmake to cache
uses: actions/cache/save@v4
if: ${{ steps.paths.outputs.cmake_SOURCE && ! steps.restore_cmake.outputs.cache-hit }}
with:
path: ${{ steps.paths.outputs.cmake_INSTALL }}
key: ${{ steps.paths.outputs.cmake_CACHE_KEY }}-install
- name: Restore double-conversion from cache
id: restore_double-conversion
if: ${{ steps.paths.outputs.double-conversion_SOURCE }}
uses: actions/cache/restore@v4
with:
path: ${{ steps.paths.outputs.double-conversion_INSTALL }}
key: ${{ steps.paths.outputs.double-conversion_CACHE_KEY }}-install
- name: Build double-conversion
if: ${{ steps.paths.outputs.double-conversion_SOURCE && ! steps.restore_double-conversion.outputs.cache-hit }}
run: python build/fbcode_builder/getdeps.py build --free-up-disk --no-tests double-conversion
- name: Save double-conversion to cache
uses: actions/cache/save@v4
if: ${{ steps.paths.outputs.double-conversion_SOURCE && ! steps.restore_double-conversion.outputs.cache-hit }}
with:
path: ${{ steps.paths.outputs.double-conversion_INSTALL }}
key: ${{ steps.paths.outputs.double-conversion_CACHE_KEY }}-install
- name: Restore fast_float from cache
id: restore_fast_float
if: ${{ steps.paths.outputs.fast_float_SOURCE }}
uses: actions/cache/restore@v4
with:
path: ${{ steps.paths.outputs.fast_float_INSTALL }}
key: ${{ steps.paths.outputs.fast_float_CACHE_KEY }}-install
- name: Build fast_float
if: ${{ steps.paths.outputs.fast_float_SOURCE && ! steps.restore_fast_float.outputs.cache-hit }}
run: python build/fbcode_builder/getdeps.py build --free-up-disk --no-tests fast_float
- name: Save fast_float to cache
uses: actions/cache/save@v4
if: ${{ steps.paths.outputs.fast_float_SOURCE && ! steps.restore_fast_float.outputs.cache-hit }}
with:
path: ${{ steps.paths.outputs.fast_float_INSTALL }}
key: ${{ steps.paths.outputs.fast_float_CACHE_KEY }}-install
- name: Restore fmt from cache
id: restore_fmt
if: ${{ steps.paths.outputs.fmt_SOURCE }}
uses: actions/cache/restore@v4
with:
path: ${{ steps.paths.outputs.fmt_INSTALL }}
key: ${{ steps.paths.outputs.fmt_CACHE_KEY }}-install
- name: Build fmt
if: ${{ steps.paths.outputs.fmt_SOURCE && ! steps.restore_fmt.outputs.cache-hit }}
run: python build/fbcode_builder/getdeps.py build --free-up-disk --no-tests fmt
- name: Save fmt to cache
uses: actions/cache/save@v4
if: ${{ steps.paths.outputs.fmt_SOURCE && ! steps.restore_fmt.outputs.cache-hit }}
with:
path: ${{ steps.paths.outputs.fmt_INSTALL }}
key: ${{ steps.paths.outputs.fmt_CACHE_KEY }}-install
- name: Restore gflags from cache
id: restore_gflags
if: ${{ steps.paths.outputs.gflags_SOURCE }}
uses: actions/cache/restore@v4
with:
path: ${{ steps.paths.outputs.gflags_INSTALL }}
key: ${{ steps.paths.outputs.gflags_CACHE_KEY }}-install
- name: Build gflags
if: ${{ steps.paths.outputs.gflags_SOURCE && ! steps.restore_gflags.outputs.cache-hit }}
run: python build/fbcode_builder/getdeps.py build --free-up-disk --no-tests gflags
- name: Save gflags to cache
uses: actions/cache/save@v4
if: ${{ steps.paths.outputs.gflags_SOURCE && ! steps.restore_gflags.outputs.cache-hit }}
with:
path: ${{ steps.paths.outputs.gflags_INSTALL }}
key: ${{ steps.paths.outputs.gflags_CACHE_KEY }}-install
- name: Restore glog from cache
id: restore_glog
if: ${{ steps.paths.outputs.glog_SOURCE }}
uses: actions/cache/restore@v4
with:
path: ${{ steps.paths.outputs.glog_INSTALL }}
key: ${{ steps.paths.outputs.glog_CACHE_KEY }}-install
- name: Build glog
if: ${{ steps.paths.outputs.glog_SOURCE && ! steps.restore_glog.outputs.cache-hit }}
run: python build/fbcode_builder/getdeps.py build --free-up-disk --no-tests glog
- name: Save glog to cache
uses: actions/cache/save@v4
if: ${{ steps.paths.outputs.glog_SOURCE && ! steps.restore_glog.outputs.cache-hit }}
with:
path: ${{ steps.paths.outputs.glog_INSTALL }}
key: ${{ steps.paths.outputs.glog_CACHE_KEY }}-install
- name: Restore googletest from cache
id: restore_googletest
if: ${{ steps.paths.outputs.googletest_SOURCE }}
uses: actions/cache/restore@v4
with:
path: ${{ steps.paths.outputs.googletest_INSTALL }}
key: ${{ steps.paths.outputs.googletest_CACHE_KEY }}-install
- name: Build googletest
if: ${{ steps.paths.outputs.googletest_SOURCE && ! steps.restore_googletest.outputs.cache-hit }}
run: python build/fbcode_builder/getdeps.py build --free-up-disk --no-tests googletest
- name: Save googletest to cache
uses: actions/cache/save@v4
if: ${{ steps.paths.outputs.googletest_SOURCE && ! steps.restore_googletest.outputs.cache-hit }}
with:
path: ${{ steps.paths.outputs.googletest_INSTALL }}
key: ${{ steps.paths.outputs.googletest_CACHE_KEY }}-install
- name: Restore libdwarf from cache
id: restore_libdwarf
if: ${{ steps.paths.outputs.libdwarf_SOURCE }}
uses: actions/cache/restore@v4
with:
path: ${{ steps.paths.outputs.libdwarf_INSTALL }}
key: ${{ steps.paths.outputs.libdwarf_CACHE_KEY }}-install
- name: Build libdwarf
if: ${{ steps.paths.outputs.libdwarf_SOURCE && ! steps.restore_libdwarf.outputs.cache-hit }}
run: python build/fbcode_builder/getdeps.py build --free-up-disk --no-tests libdwarf
- name: Save libdwarf to cache
uses: actions/cache/save@v4
if: ${{ steps.paths.outputs.libdwarf_SOURCE && ! steps.restore_libdwarf.outputs.cache-hit }}
with:
path: ${{ steps.paths.outputs.libdwarf_INSTALL }}
key: ${{ steps.paths.outputs.libdwarf_CACHE_KEY }}-install
- name: Restore lz4 from cache
id: restore_lz4
if: ${{ steps.paths.outputs.lz4_SOURCE }}
uses: actions/cache/restore@v4
with:
path: ${{ steps.paths.outputs.lz4_INSTALL }}
key: ${{ steps.paths.outputs.lz4_CACHE_KEY }}-install
- name: Build lz4
if: ${{ steps.paths.outputs.lz4_SOURCE && ! steps.restore_lz4.outputs.cache-hit }}
run: python build/fbcode_builder/getdeps.py build --free-up-disk --no-tests lz4
- name: Save lz4 to cache
uses: actions/cache/save@v4
if: ${{ steps.paths.outputs.lz4_SOURCE && ! steps.restore_lz4.outputs.cache-hit }}
with:
path: ${{ steps.paths.outputs.lz4_INSTALL }}
key: ${{ steps.paths.outputs.lz4_CACHE_KEY }}-install
- name: Restore jom from cache
id: restore_jom
if: ${{ steps.paths.outputs.jom_SOURCE }}
uses: actions/cache/restore@v4
with:
path: ${{ steps.paths.outputs.jom_INSTALL }}
key: ${{ steps.paths.outputs.jom_CACHE_KEY }}-install
- name: Build jom
if: ${{ steps.paths.outputs.jom_SOURCE && ! steps.restore_jom.outputs.cache-hit }}
run: python build/fbcode_builder/getdeps.py build --free-up-disk --no-tests jom
- name: Save jom to cache
uses: actions/cache/save@v4
if: ${{ steps.paths.outputs.jom_SOURCE && ! steps.restore_jom.outputs.cache-hit }}
with:
path: ${{ steps.paths.outputs.jom_INSTALL }}
key: ${{ steps.paths.outputs.jom_CACHE_KEY }}-install
- name: Restore perl from cache
id: restore_perl
if: ${{ steps.paths.outputs.perl_SOURCE }}
uses: actions/cache/restore@v4
with:
path: ${{ steps.paths.outputs.perl_INSTALL }}
key: ${{ steps.paths.outputs.perl_CACHE_KEY }}-install
- name: Build perl
if: ${{ steps.paths.outputs.perl_SOURCE && ! steps.restore_perl.outputs.cache-hit }}
run: python build/fbcode_builder/getdeps.py build --free-up-disk --no-tests perl
- name: Save perl to cache
uses: actions/cache/save@v4
if: ${{ steps.paths.outputs.perl_SOURCE && ! steps.restore_perl.outputs.cache-hit }}
with:
path: ${{ steps.paths.outputs.perl_INSTALL }}
key: ${{ steps.paths.outputs.perl_CACHE_KEY }}-install
- name: Restore openssl from cache
id: restore_openssl
if: ${{ steps.paths.outputs.openssl_SOURCE }}
uses: actions/cache/restore@v4
with:
path: ${{ steps.paths.outputs.openssl_INSTALL }}
key: ${{ steps.paths.outputs.openssl_CACHE_KEY }}-install
- name: Build openssl
if: ${{ steps.paths.outputs.openssl_SOURCE && ! steps.restore_openssl.outputs.cache-hit }}
run: python build/fbcode_builder/getdeps.py build --free-up-disk --no-tests openssl
- name: Save openssl to cache
uses: actions/cache/save@v4
if: ${{ steps.paths.outputs.openssl_SOURCE && ! steps.restore_openssl.outputs.cache-hit }}
with:
path: ${{ steps.paths.outputs.openssl_INSTALL }}
key: ${{ steps.paths.outputs.openssl_CACHE_KEY }}-install
- name: Restore snappy from cache
id: restore_snappy
if: ${{ steps.paths.outputs.snappy_SOURCE }}
uses: actions/cache/restore@v4
with:
path: ${{ steps.paths.outputs.snappy_INSTALL }}
key: ${{ steps.paths.outputs.snappy_CACHE_KEY }}-install
- name: Build snappy
if: ${{ steps.paths.outputs.snappy_SOURCE && ! steps.restore_snappy.outputs.cache-hit }}
run: python build/fbcode_builder/getdeps.py build --free-up-disk --no-tests snappy
- name: Save snappy to cache
uses: actions/cache/save@v4
if: ${{ steps.paths.outputs.snappy_SOURCE && ! steps.restore_snappy.outputs.cache-hit }}
with:
path: ${{ steps.paths.outputs.snappy_INSTALL }}
key: ${{ steps.paths.outputs.snappy_CACHE_KEY }}-install
- name: Restore zlib from cache
id: restore_zlib
if: ${{ steps.paths.outputs.zlib_SOURCE }}
uses: actions/cache/restore@v4
with:
path: ${{ steps.paths.outputs.zlib_INSTALL }}
key: ${{ steps.paths.outputs.zlib_CACHE_KEY }}-install
- name: Build zlib
if: ${{ steps.paths.outputs.zlib_SOURCE && ! steps.restore_zlib.outputs.cache-hit }}
run: python build/fbcode_builder/getdeps.py build --free-up-disk --no-tests zlib
- name: Save zlib to cache
uses: actions/cache/save@v4
if: ${{ steps.paths.outputs.zlib_SOURCE && ! steps.restore_zlib.outputs.cache-hit }}
with:
path: ${{ steps.paths.outputs.zlib_INSTALL }}
key: ${{ steps.paths.outputs.zlib_CACHE_KEY }}-install
- name: Restore zstd from cache
id: restore_zstd
if: ${{ steps.paths.outputs.zstd_SOURCE }}
uses: actions/cache/restore@v4
with:
path: ${{ steps.paths.outputs.zstd_INSTALL }}
key: ${{ steps.paths.outputs.zstd_CACHE_KEY }}-install
- name: Build zstd
if: ${{ steps.paths.outputs.zstd_SOURCE && ! steps.restore_zstd.outputs.cache-hit }}
run: python build/fbcode_builder/getdeps.py build --free-up-disk --no-tests zstd
- name: Save zstd to cache
uses: actions/cache/save@v4
if: ${{ steps.paths.outputs.zstd_SOURCE && ! steps.restore_zstd.outputs.cache-hit }}
with:
path: ${{ steps.paths.outputs.zstd_INSTALL }}
key: ${{ steps.paths.outputs.zstd_CACHE_KEY }}-install
- name: Restore libevent from cache
id: restore_libevent
if: ${{ steps.paths.outputs.libevent_SOURCE }}
uses: actions/cache/restore@v4
with:
path: ${{ steps.paths.outputs.libevent_INSTALL }}
key: ${{ steps.paths.outputs.libevent_CACHE_KEY }}-install
- name: Build libevent
if: ${{ steps.paths.outputs.libevent_SOURCE && ! steps.restore_libevent.outputs.cache-hit }}
run: python build/fbcode_builder/getdeps.py build --free-up-disk --no-tests libevent
- name: Save libevent to cache
uses: actions/cache/save@v4
if: ${{ steps.paths.outputs.libevent_SOURCE && ! steps.restore_libevent.outputs.cache-hit }}
with:
path: ${{ steps.paths.outputs.libevent_INSTALL }}
key: ${{ steps.paths.outputs.libevent_CACHE_KEY }}-install
- name: Build folly
run: python build/fbcode_builder/getdeps.py build --src-dir=. folly
- name: Copy artifacts
run: python build/fbcode_builder/getdeps.py fixup-dyn-deps --src-dir=. folly _artifacts/windows --final-install-prefix /usr/local
- uses: actions/upload-artifact@v6
with:
name: folly
path: _artifacts
- name: Test folly
run: python build/fbcode_builder/getdeps.py test --src-dir=. folly
================================================
FILE: .github/workflows/oss-build-and-test.yml
================================================
name: Buck build and test
on: [push, pull_request, workflow_dispatch]
jobs:
get-toolchains-to-install:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: 'true'
- uses: facebook/install-dotslash@latest
- name: get_buck_graph
run: |
BUCK_GRAPH=$(./buck2 cquery ... --output-attribute '^buck.type$|^name$')
echo "$BUCK_GRAPH" > buck_graph_results.json
shell: bash
- name: Check if rust_binary
id: check_rust
run: |
OUTPUT=$(cat buck_graph_results.json)
if [[ "$OUTPUT" == *"rust_binary"* ]]; then
echo "uses_rust=true" >> $GITHUB_ENV
fi
shell: bash
- name: Check if cxx_binary
id: check_cxx
run: |
OUTPUT=$(cat buck_graph_results.json)
if [[ "$OUTPUT" == *"cxx_binary"* ]]; then
echo "uses_cxx=true" >> $GITHUB_ENV
fi
shell: bash
- name: Check if ocaml_binary
id: check_ocaml
run: |
OUTPUT=$(cat buck_graph_results.json)
if [[ "$OUTPUT" == *"ocaml_binary"* ]]; then
echo "uses_ocaml=true" >> $GITHUB_ENV
fi
shell: bash
- name: Check if python_binary
id: check_python
run: |
OUTPUT=$(cat buck_graph_results.json)
if [[ "$OUTPUT" == *"python_binary"* ]]; then
echo "uses_python=true" >> $GITHUB_ENV
fi
shell: bash
outputs:
uses_rust: ${{ env.uses_rust }}
uses_cxx: ${{ env.uses_cxx }}
uses_ocaml: ${{env.uses_ocaml}}
uses_python: ${{env.uses_python}}
ubuntu-os-buck-build-and-test:
needs: get-toolchains-to-install
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: 'true'
- run: sudo apt-get update
shell: bash
- uses: facebook/install-dotslash@latest
- name: Install Rust toolchain
if: needs.get-toolchains-to-install.outputs.uses_rust == 'true'
uses: dtolnay/rust-toolchain@stable
- name: Install C++ toolchain
if: needs.get-toolchains-to-install.outputs.uses_cxx == 'true'
run: |
sudo apt-get install cmake llvm cppcheck python3-pip
sudo pip3 install conan==1.*
shell: bash
- name: Install OCaml toolchain
if: needs.get-toolchains-to-install.outputs.uses_ocaml == 'true'
uses: ocaml/setup-ocaml@v2
with:
ocaml-compiler: "5.1"
- name: Install Python toolchain
if: needs.get-toolchains-to-install.outputs.uses_python == 'true'
uses: actions/setup-python@v5
with:
python-version: '3.10'
- name: buck2 build and test
run: bash ./.github/scripts/buck_build_and_test.sh
windows-os-buck-build-and-test:
needs: get-toolchains-to-install
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
with:
submodules: 'true'
- uses: facebook/install-dotslash@latest
- name: Install Rust toolchain
if: needs.get-toolchains-to-install.outputs.uses_rust == 'true'
uses: dtolnay/rust-toolchain@stable
- name: Install C++ toolchain
if: needs.get-toolchains-to-install.outputs.uses_cxx == 'true'
run: |
choco install llvm cmake conan cppcheck -y
if ($LASTEXITCODE -eq 3010) { $LASTEXITCODE = 0 }
shell: pwsh
- name: Install OCaml toolchain
if: needs.get-toolchains-to-install.outputs.uses_ocaml == 'true'
uses: ocaml/setup-ocaml@v2
with:
ocaml-compiler: "4.12.0"
- name: Install Python toolchain
if: needs.get-toolchains-to-install.outputs.uses_python == 'true'
uses: actions/setup-python@v5
with:
python-version: '3.10'
- name: buck2 build and test
run: bash ./.github/scripts/buck_build_and_test.sh
mac-os-buck-build-and-test:
needs: get-toolchains-to-install
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
with:
submodules: 'true'
- uses: facebook/install-dotslash@latest
- name: Install Rust toolchain
if: needs.get-toolchains-to-install.outputs.uses_rust == 'true'
uses: dtolnay/rust-toolchain@stable
- name: Install C++ toolchain
if: needs.get-toolchains-to-install.outputs.uses_cxx == 'true'
run: |
brew install cmake llvm cppcheck python3 conan@1
shell: bash
- name: Install OCaml toolchain
if: needs.get-toolchains-to-install.outputs.uses_ocaml == 'true'
uses: ocaml/setup-ocaml@v2
with:
ocaml-compiler: "5.1"
- name: Install Python toolchain
if: needs.get-toolchains-to-install.outputs.uses_python == 'true'
uses: actions/setup-python@v5
with:
python-version: '3.10'
- name: Install homebrew deps
run: |
BUCK_GRAPH=$(./buck2 cquery "attrregexfilter(labels, 'third-party:homebrew:', deps(//...))" --json --output-attribute=labels)
HOMEBREW_PACKAGES=$(echo $BUCK_GRAPH | jq '[.[] | .labels] | flatten | unique | map(select(contains("third-party:homebrew:")) | sub("third-party:homebrew:"; "")) | .[] | @text')
echo $HOMEBREW_PACKAGES
echo $HOMEBREW_PACKAGES | xargs brew install pkg-config
- name: buck2 build and test
run: bash ./.github/scripts/buck_build_and_test.sh
================================================
FILE: .gitignore
================================================
*.o
*.lo
*.la
.dirstamp
Makefile
Makefile.in
.libs
.deps
stamp-h1
folly-config.h
_configs.sed
aclocal.m4
autom4te.cache
build-aux
libtool
folly/test/gtest
folly/folly-config.h
folly/**/test/*_benchmark
folly/**/test/*.log
folly/**/test/*_test
folly/**/test/*_test_using_jemalloc
folly/**/test/*.trs
folly/config.*
folly/configure
folly/logging/example/logging_example
folly/libfolly.pc
folly/m4/libtool.m4
folly/m4/ltoptions.m4
folly/m4/ltsugar.m4
folly/m4/ltversion.m4
folly/m4/lt~obsolete.m4
folly/generate_fingerprint_tables
folly/FingerprintTables.cpp
_build
# Ignore all files generated by Buck2
buck-out/
================================================
FILE: .projectid
================================================
folly
================================================
FILE: BUCK
================================================
load("@fbcode_macros//build_defs:native_rules.bzl", "buck_genrule")
oncall("fbcode_entropy_wardens_folly")
buck_genrule(
name = "folly-config.h",
srcs = {file: file for file in glob([
"CMake/*",
"build/fbcode_builder/CMake/*",
])} |
{"CMakeLists.txt": "CMakeListsForBuck2.txt"},
out = "folly-config.h",
cmd = "cmake . && mv folly/folly-config.h $OUT",
default_target_platform = "prelude//platforms:default",
labels = [
"third-party:fedora:cmake",
"third-party:homebrew:cmake",
"third-party:ubuntu:cmake",
],
remote = False,
)
================================================
FILE: CMake/FindCython.cmake
================================================
# Copyright (c) Meta Platforms, Inc. and affiliates.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Find Cython
#
# This module sets the following variables:
# - Cython_FOUND
# - CYTHON_EXE
# - CYTHON_VERSION_STRING
#
find_program(CYTHON_EXE
NAMES cython cython3)
if (CYTHON_EXE)
execute_process(COMMAND ${CYTHON_EXE} --version
RESULT_VARIABLE _cython_retcode
OUTPUT_VARIABLE _cython_output
ERROR_VARIABLE _cython_output
OUTPUT_STRIP_TRAILING_WHITESPACE)
if (${_cython_retcode} EQUAL 0)
separate_arguments(_cython_output)
list(GET _cython_output -1 CYTHON_VERSION_STRING)
message(STATUS "Found Cython Version ${CYTHON_VERSION_STRING}")
else ()
message(STATUS "Failed to get Cython version")
endif ()
else ()
message(STATUS "Cython not found")
endif ()
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(
Cython
REQUIRED_VARS CYTHON_EXE CYTHON_VERSION_STRING
VERSION_VAR CYTHON_VERSION_STRING
)
================================================
FILE: CMake/FindFastFloat.cmake
================================================
# Copyright (c) Meta Platforms, Inc. and affiliates.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# - Try to find fast_float library
# This will define
# FASTFLOAT_FOUND
# FASTFLOAT_INCLUDE_DIR
#
find_path(FASTFLOAT_INCLUDE_DIR NAMES fast_float/fast_float.h)
include(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(
FastFloat DEFAULT_MSG
FASTFLOAT_INCLUDE_DIR
)
mark_as_advanced(FASTFLOAT_INCLUDE_DIR)
================================================
FILE: CMake/FindFmt.cmake
================================================
# Copyright (c) Meta Platforms, Inc. and affiliates.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
find_path(LIBFMT_INCLUDE_DIR fmt/core.h)
mark_as_advanced(LIBFMT_INCLUDE_DIR)
find_library(LIBFMT_LIBRARY NAMES fmt fmtd)
mark_as_advanced(LIBFMT_LIBRARY)
include(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(
LIBFMT
DEFAULT_MSG
LIBFMT_LIBRARY LIBFMT_INCLUDE_DIR)
if(LIBFMT_FOUND)
set(LIBFMT_LIBRARIES ${LIBFMT_LIBRARY})
set(LIBFMT_INCLUDE_DIRS ${LIBFMT_INCLUDE_DIR})
message(STATUS "Found {fmt}: ${LIBFMT_LIBRARY}")
add_library(fmt::fmt UNKNOWN IMPORTED)
set_target_properties(
fmt::fmt PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${LIBFMT_INCLUDE_DIR}"
)
set_target_properties(
fmt::fmt PROPERTIES
IMPORTED_LINK_INTERFACE_LANGUAGES "C"
IMPORTED_LOCATION "${LIBFMT_LIBRARY}"
)
endif()
================================================
FILE: CMake/FindLZ4.cmake
================================================
# Copyright (c) Meta Platforms, Inc. and affiliates.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Finds liblz4.
#
# This module defines:
# LZ4_FOUND
# LZ4_INCLUDE_DIR
# LZ4_LIBRARY
#
find_path(LZ4_INCLUDE_DIR NAMES lz4.h)
find_library(LZ4_LIBRARY_DEBUG NAMES lz4d)
find_library(LZ4_LIBRARY_RELEASE NAMES lz4)
include(SelectLibraryConfigurations)
SELECT_LIBRARY_CONFIGURATIONS(LZ4)
include(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(
LZ4 DEFAULT_MSG
LZ4_LIBRARY LZ4_INCLUDE_DIR
)
if (LZ4_FOUND)
message(STATUS "Found LZ4: ${LZ4_LIBRARY}")
endif()
mark_as_advanced(LZ4_INCLUDE_DIR LZ4_LIBRARY)
================================================
FILE: CMake/FindLibAIO.cmake
================================================
# Copyright (c) Meta Platforms, Inc. and affiliates.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
find_path(LIBAIO_INCLUDE_DIR NAMES libaio.h)
mark_as_advanced(LIBAIO_INCLUDE_DIR)
find_library(LIBAIO_LIBRARY NAMES aio)
mark_as_advanced(LIBAIO_LIBRARY)
include(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(
LIBAIO
REQUIRED_VARS LIBAIO_LIBRARY LIBAIO_INCLUDE_DIR)
if(LIBAIO_FOUND)
set(LIBAIO_LIBRARIES ${LIBAIO_LIBRARY})
set(LIBAIO_INCLUDE_DIRS ${LIBAIO_INCLUDE_DIR})
endif()
================================================
FILE: CMake/FindLibDwarf.cmake
================================================
# Copyright (c) Meta Platforms, Inc. and affiliates.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# dwarf.h is typically installed in a libdwarf/ subdirectory on Debian-style
# Linux distributions. It is not installed in a libdwarf/ subdirectory on Mac
# systems when installed with Homebrew. Newer homebrew installations install
# it in libdwarf-0. Search for it in all locations.
find_path(LIBDWARF_INCLUDE_DIR NAMES dwarf.h PATH_SUFFIXES libdwarf libdwarf-0)
mark_as_advanced(LIBDWARF_INCLUDE_DIR)
find_library(LIBDWARF_LIBRARY NAMES dwarf)
mark_as_advanced(LIBDWARF_LIBRARY)
include(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(
LIBDWARF
REQUIRED_VARS LIBDWARF_LIBRARY LIBDWARF_INCLUDE_DIR)
if(LIBDWARF_FOUND)
set(LIBDWARF_LIBRARIES ${LIBDWARF_LIBRARY})
set(LIBDWARF_INCLUDE_DIRS ${LIBDWARF_INCLUDE_DIR})
endif()
================================================
FILE: CMake/FindLibUring.cmake
================================================
# Copyright (c) Meta Platforms, Inc. and affiliates.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
find_path(LIBURING_INCLUDE_DIR NAMES liburing.h)
mark_as_advanced(LIBURING_INCLUDE_DIR)
find_library(LIBURING_LIBRARY NAMES uring)
mark_as_advanced(LIBURING_LIBRARY)
include(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(
LIBURING
REQUIRED_VARS LIBURING_LIBRARY LIBURING_INCLUDE_DIR)
if(LIBURING_FOUND)
set(LIBURING_LIBRARIES ${LIBURING_LIBRARY})
set(LIBURING_INCLUDE_DIRS ${LIBURING_INCLUDE_DIR})
endif()
================================================
FILE: CMake/FindLibiberty.cmake
================================================
# Copyright (c) Meta Platforms, Inc. and affiliates.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
find_path(LIBIBERTY_INCLUDE_DIR NAMES libiberty.h PATH_SUFFIXES libiberty)
mark_as_advanced(LIBIBERTY_INCLUDE_DIR)
find_library(LIBIBERTY_LIBRARY NAMES iberty)
mark_as_advanced(LIBIBERTY_LIBRARY)
include(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(
LIBIBERTY
REQUIRED_VARS LIBIBERTY_LIBRARY LIBIBERTY_INCLUDE_DIR)
if(LIBIBERTY_FOUND)
set(LIBIBERTY_LIBRARIES ${LIBIBERTY_LIBRARY})
set(LIBIBERTY_INCLUDE_DIRS ${LIBIBERTY_INCLUDE_DIR})
endif()
================================================
FILE: CMake/FindLibsodium.cmake
================================================
# Copyright (c) Meta Platforms, Inc. and affiliates.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
find_path(LIBSODIUM_INCLUDE_DIR NAMES sodium.h)
mark_as_advanced(LIBSODIUM_INCLUDE_DIR)
find_library(LIBSODIUM_LIBRARY NAMES sodium)
mark_as_advanced(LIBSODIUM_LIBRARY)
include(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(
LIBSODIUM
REQUIRED_VARS LIBSODIUM_LIBRARY LIBSODIUM_INCLUDE_DIR)
if(LIBSODIUM_FOUND)
set(LIBSODIUM_LIBRARIES ${LIBSODIUM_LIBRARY})
set(LIBSODIUM_INCLUDE_DIRS ${LIBSODIUM_INCLUDE_DIR})
message(STATUS "Found Libsodium: ${LIBSODIUM_LIBRARY}")
endif()
================================================
FILE: CMake/FindSnappy.cmake
================================================
# Copyright (c) Meta Platforms, Inc. and affiliates.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Find the Snappy libraries
#
# This module defines:
# SNAPPY_FOUND
# SNAPPY_INCLUDE_DIR
# SNAPPY_LIBRARY
find_path(SNAPPY_INCLUDE_DIR NAMES snappy.h)
find_library(SNAPPY_LIBRARY_DEBUG NAMES snappyd)
find_library(SNAPPY_LIBRARY_RELEASE NAMES snappy)
include(SelectLibraryConfigurations)
SELECT_LIBRARY_CONFIGURATIONS(SNAPPY)
include(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(
SNAPPY DEFAULT_MSG
SNAPPY_LIBRARY SNAPPY_INCLUDE_DIR
)
mark_as_advanced(SNAPPY_INCLUDE_DIR SNAPPY_LIBRARY)
================================================
FILE: CMake/FindZstd.cmake
================================================
# Copyright (c) Meta Platforms, Inc. and affiliates.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# - Try to find Facebook zstd library
# This will define
# ZSTD_FOUND
# ZSTD_INCLUDE_DIR
# ZSTD_LIBRARY
#
find_path(ZSTD_INCLUDE_DIR NAMES zstd.h)
find_library(ZSTD_LIBRARY_DEBUG NAMES zstdd zstd_staticd)
find_library(ZSTD_LIBRARY_RELEASE NAMES zstd zstd_static)
include(SelectLibraryConfigurations)
SELECT_LIBRARY_CONFIGURATIONS(ZSTD)
include(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(
ZSTD DEFAULT_MSG
ZSTD_LIBRARY ZSTD_INCLUDE_DIR
)
if (ZSTD_FOUND)
message(STATUS "Found Zstd: ${ZSTD_LIBRARY}")
endif()
mark_as_advanced(ZSTD_INCLUDE_DIR ZSTD_LIBRARY)
================================================
FILE: CMake/FollyCompilerMSVC.cmake
================================================
# Copyright (c) Meta Platforms, Inc. and affiliates.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Some additional configuration options.
option(MSVC_ENABLE_ALL_WARNINGS "If enabled, pass /Wall to the compiler." ON)
option(MSVC_ENABLE_DEBUG_INLINING "If enabled, enable inlining in the debug configuration. This allows /Zc:inline to be far more effective." OFF)
option(MSVC_ENABLE_FAST_LINK "If enabled, pass /DEBUG:FASTLINK to the linker. This makes linking faster, but the gtest integration for Visual Studio can't currently handle the .pdbs generated." OFF)
option(MSVC_ENABLE_LEAN_AND_MEAN_WINDOWS "If enabled, define WIN32_LEAN_AND_MEAN to include a smaller subset of Windows.h" ON)
option(MSVC_ENABLE_LTCG "If enabled, use Link Time Code Generation for Release builds." OFF)
option(MSVC_ENABLE_PARALLEL_BUILD "If enabled, build multiple source files in parallel." ON)
option(MSVC_ENABLE_STATIC_ANALYSIS "If enabled, do more complex static analysis and generate warnings appropriately." OFF)
option(MSVC_USE_STATIC_RUNTIME "If enabled, build against the static, rather than the dynamic, runtime." OFF)
option(MSVC_SUPPRESS_BOOST_CONFIG_OUTDATED "If enabled, suppress Boost's warnings about the config being out of date." ON)
# Alas, option() doesn't support string values.
set(MSVC_FAVORED_ARCHITECTURE "blend" CACHE STRING "One of 'blend', 'AMD64', 'INTEL64', or 'ATOM'. This tells the compiler to generate code optimized to run best on the specified architecture.")
# Add a pretty drop-down selector for these values when using the GUI.
set_property(
CACHE MSVC_FAVORED_ARCHITECTURE
PROPERTY STRINGS
blend
AMD64
ATOM
INTEL64
)
# Validate, and then add the favored architecture.
if (NOT MSVC_FAVORED_ARCHITECTURE STREQUAL "blend" AND NOT MSVC_FAVORED_ARCHITECTURE STREQUAL "AMD64" AND NOT MSVC_FAVORED_ARCHITECTURE STREQUAL "INTEL64" AND NOT MSVC_FAVORED_ARCHITECTURE STREQUAL "ATOM")
message(FATAL_ERROR "MSVC_FAVORED_ARCHITECTURE must be set to one of exactly, 'blend', 'AMD64', 'INTEL64', or 'ATOM'! Got '${MSVC_FAVORED_ARCHITECTURE}' instead!")
endif()
set(MSVC_LANGUAGE_VERSION "c++20" CACHE STRING "One of 'c++20', or 'c++latest'. This determines which version of C++ to compile as.")
set_property(
CACHE MSVC_LANGUAGE_VERSION
PROPERTY STRINGS
"c++20"
"c++latest"
)
############################################################
# We need to adjust a couple of the default option sets.
############################################################
# If the static runtime is requested, we have to
# overwrite some of CMake's defaults.
if (MSVC_USE_STATIC_RUNTIME)
foreach(flag_var
CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE
CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO
CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE
CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO)
if (${flag_var} MATCHES "/MD")
string(REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}")
endif()
endforeach()
endif()
# The Ninja generator doesn't de-dup the exception mode flag, so remove the
# default flag so that MSVC doesn't warn about it on every single file.
if ("${CMAKE_GENERATOR}" STREQUAL "Ninja")
foreach(flag_var
CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE
CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO
CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE
CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO)
if (${flag_var} MATCHES "/EHsc")
string(REGEX REPLACE "/EHsc" "" ${flag_var} "${${flag_var}}")
endif()
endforeach()
endif()
# In order for /Zc:inline, which speeds up the build significantly, to work
# we need to remove the /Ob0 parameter that CMake adds by default, because that
# would normally disable all inlining.
foreach(flag_var CMAKE_C_FLAGS_DEBUG CMAKE_CXX_FLAGS_DEBUG)
if (${flag_var} MATCHES "/Ob0")
string(REGEX REPLACE "/Ob0" "" ${flag_var} "${${flag_var}}")
endif()
endforeach()
# When building with Ninja, or with /MP enabled, there is the potential
# for multiple processes to need to lock the same pdb file.
# The /FS option (which is implicitly enabled by /MP) is widely believed
# to be the solution for this, but even with /FS enabled the problem can
# still randomly occur.
# https://stackoverflow.com/a/58020501/149111 suggests that /Z7 should be
# used; rather than placing the debug info into a .pdb file it embeds it
# into the object files in a similar way to gcc/clang which should reduce
# contention and potentially make the build faster... but at the cost of
# larger object files
foreach(flag_var CMAKE_C_FLAGS_DEBUG CMAKE_CXX_FLAGS_DEBUG)
if (${flag_var} MATCHES "/Zi")
string(REGEX REPLACE "/Zi" "/Z7" ${flag_var} "${${flag_var}}")
endif()
endforeach()
# Apply the option set for Folly to the specified target.
function(apply_folly_compile_options_to_target THETARGET)
# The general options passed:
target_compile_options(${THETARGET}
PUBLIC
/EHs # Don't catch structured exceptions with catch (...)
/GF # There are bugs with constexpr StringPiece when string pooling is disabled.
/Zc:referenceBinding # Disallow temporaries from binding to non-const lvalue references.
/Zc:rvalueCast # Enforce the standard rules for explicit type conversion.
/Zc:implicitNoexcept # Enable implicit noexcept specifications where required, such as destructors.
/Zc:strictStrings # Don't allow conversion from a string literal to mutable characters.
/Zc:threadSafeInit # Enable thread-safe function-local statics initialization.
/Zc:throwingNew # Assume operator new throws on failure.
/permissive- # Be mean, don't allow bad non-standard stuff (C++/CLI, __declspec, etc. are all left intact).
/std:${MSVC_LANGUAGE_VERSION} # Build in the requested version of C++
/utf-8 # fmt needs unicode support, which requires compiling with /utf-8
PRIVATE
/bigobj # Support objects with > 65k sections. Needed due to templates.
/favor:${MSVC_FAVORED_ARCHITECTURE} # Architecture to prefer when generating code.
/Zc:inline # Have the compiler eliminate unreferenced COMDAT functions and data before emitting the object file.
$<$<BOOL:${MSVC_ENABLE_ALL_WARNINGS}>:/Wall> # Enable all warnings if requested.
$<$<BOOL:${MSVC_ENABLE_PARALLEL_BUILD}>:/MP> # Enable multi-processor compilation if requested.
$<$<BOOL:${MSVC_ENABLE_STATIC_ANALYSIS}>:/analyze> # Enable static analysis if requested.
# Debug builds
$<$<CONFIG:DEBUG>:
/Gy- # Disable function level linking.
$<$<BOOL:${MSVC_ENABLE_DEBUG_INLINING}>:/Ob2> # Add /Ob2 if allowing inlining in debug mode.
>
# Non-debug builds
$<$<NOT:$<CONFIG:DEBUG>>:
/Gw # Optimize global data. (-fdata-sections)
/Gy # Enable function level linking. (-ffunction-sections)
/Qpar # Enable parallel code generation.
/Oi # Enable intrinsic functions.
/Ot # Favor fast code.
$<$<BOOL:${MSVC_ENABLE_LTCG}>:/GL> # Enable link time code generation.
>
)
target_compile_options(${THETARGET}
PUBLIC
/wd4191 # 'type cast' unsafe conversion of function pointers
/wd4291 # no matching operator delete found
/wd4309 # '=' truncation of constant value
/wd4310 # cast truncates constant value
/wd4366 # result of unary '&' operator may be unaligned
/wd4587 # behavior change; constructor no longer implicitly called
/wd4592 # symbol will be dynamically initialized (implementation limitation)
/wd4628 # digraphs not supported with -Ze
/wd4723 # potential divide by 0
/wd4724 # potential mod by 0
/wd4868 # compiler may not enforce left-to-right evaluation order
/wd4996 # user deprecated
# The warnings that are disabled:
/wd4068 # Unknown pragma.
/wd4091 # 'typedef' ignored on left of '' when no variable is declared.
/wd4146 # Unary minus applied to unsigned type, result still unsigned.
/wd4800 # Values being forced to bool, this happens many places, and is a "performance warning".
# NOTE: glog/logging.h:1116 change to `size_t pcount() const { return size_t(pptr() - pbase()); }`
# NOTE: gmock/gmock-spec-builders.h:1177 change to `*static_cast<const Action<F>*>(untyped_actions_[size_t(count - 1)]) :`
# NOTE: gmock/gmock-spec-builders.h:1749 change to `const size_t count = untyped_expectations_.size();`
# NOTE: gmock/gmock-spec-builders.h:1754 change to `for (size_t i = 0; i < count; i++) {`
# NOTE: gtest/gtest-printers.h:173 change to `const internal::BiggestInt kBigInt = internal::BiggestInt(value);`
# NOTE: gtest/internal/gtest-internal.h:890 add `GTEST_DISABLE_MSC_WARNINGS_PUSH_(4365)`
# NOTE: gtest/internal/gtest-internal.h:894 ass `GTEST_DISABLE_MSC_WARNINGS_POP_()`
# NOTE: boost/crc.hpp:578 change to `{ return static_cast<unsigned char>(x ^ rem); }`
# NOTE: boost/regex/v4/match_results.hpp:126 change to `return m_subs[size_type(sub)].length();`
# NOTE: boost/regex/v4/match_results.hpp:226 change to `return m_subs[size_type(sub)];`
# NOTE: boost/date_time/adjust_functors.hpp:67 change to `origDayOfMonth_ = short(ymd.day);`
# NOTE: boost/date_time/adjust_functors.hpp:75 change to `wrap_int2 wi(short(ymd.month));`
# NOTE: boost/date_time/adjust_functors.hpp:82 change to `day_type resultingEndOfMonthDay(cal_type::end_of_month_day(static_cast<unsigned short>(year), static_cast<unsigned short>(wi.as_int())));`
# NOTE: boost/date_time/adjust_functors.hpp:85 change to `return date_type(static_cast<unsigned short>(year), static_cast<unsigned short>(wi.as_int()), resultingEndOfMonthDay) - d;`
# NOTE: boost/date_time/adjust_functors.hpp:87 change to `day_type dayOfMonth = static_cast<unsigned short>(origDayOfMonth_);`
# NOTE: boost/date_time/adjust_functors.hpp:91 change to `return date_type(static_cast<unsigned short>(year), static_cast<unsigned short>(wi.as_int()), dayOfMonth) - d;`
# NOTE: boost/date_time/adjust_functors.hpp:98 change to `origDayOfMonth_ = short(ymd.day);`
# NOTE: boost/date_time/adjust_functors.hpp:106 change to `wrap_int2 wi(short(ymd.month));`
# NOTE: boost/date_time/adjust_functors.hpp:111 change to `day_type resultingEndOfMonthDay(cal_type::end_of_month_day(static_cast<unsigned short>(year), static_cast<unsigned short>(wi.as_int())));`
# NOTE: boost/date_time/adjust_functors.hpp:114 change to `return date_type(static_cast<unsigned short>(year), static_cast<unsigned short>(wi.as_int()), resultingEndOfMonthDay) - d;`
# NOTE: boost/date_time/adjust_functors.hpp:116 change to `day_type dayOfMonth = static_cast<unsigned short>(origDayOfMonth_);`
# NOTE: boost/date_time/adjust_functors.hpp:120 change to `return date_type(static_cast<unsigned short>(year), static_cast<unsigned short>(wi.as_int()), dayOfMonth) - d;`
# NOTE: boost/date_time/gregorian_calendar.ipp:81 change to `unsigned long d = static_cast<unsigned long>(ymd.day + ((153*m + 2)/5) + 365*y + (y/4) - (y/100) + (y/400) - 32045);`
# NOTE: boost/date_time/gregorian/greg_date.hpp:122 change to `unsigned short eom_day = gregorian_calendar::end_of_month_day(ymd.year, ymd.month);`
# NOTE: boost/thread/future.hpp:1050 change to `locks[std::ptrdiff_t(i)]=BOOST_THREAD_MAKE_RV_REF(boost::unique_lock<boost::mutex>(futures[i].future_->mutex));`
# NOTE: boost/thread/future.hpp:1063 change to `locks[std::ptrdiff_t(i)].unlock();`
# NOTE: boost/thread/win32/basic_recursive_mutex.hpp:47 change to `long const current_thread_id=long(win32::GetCurrentThreadId());`
# NOTE: boost/thread/win32/basic_recursive_mutex.hpp:53 change to `long const current_thread_id=long(win32::GetCurrentThreadId());`
# NOTE: boost/thread/win32/basic_recursive_mutex.hpp:64 change to `long const current_thread_id=long(win32::GetCurrentThreadId());`
# NOTE: boost/thread/win32/basic_recursive_mutex.hpp:78 change to `long const current_thread_id=long(win32::GetCurrentThreadId());`
# NOTE: boost/thread/win32/basic_recursive_mutex.hpp:84 change to `long const current_thread_id=long(win32::GetCurrentThreadId());`
# NOTE: boost/thread/win32/condition_variable.hpp:79 change to `detail::win32::ReleaseSemaphore(semaphore,long(count_to_release),0);`
# NOTE: boost/thread/win32/condition_variable.hpp:84 change to `release(unsigned(detail::interlocked_read_acquire(&waiters)));`
# NOTE: boost/algorithm/string/detail/classification.hpp:85 change to `std::size_t Size=std::size_t(::boost::distance(Range));`
/wd4018 # Signed/unsigned mismatch.
/wd4365 # Signed/unsigned mismatch.
/wd4388 # Signed/unsigned mismatch on relative comparison operator.
/wd4389 # Signed/unsigned mismatch on equality comparison operator.
# TODO:
/wd4100 # Unreferenced formal parameter.
/wd4459 # Declaration of parameter hides global declaration.
/wd4505 # Unreferenced local function has been removed.
/wd4701 # Potentially uninitialized local variable used.
/wd4702 # Unreachable code.
# These warnings are disabled because we've
# enabled all warnings. If all warnings are
# not enabled, we still need to disable them
# for consuming libs.
/wd4061 # Enum value not handled by a case in a switch on an enum. This isn't very helpful because it is produced even if a default statement is present.
/wd4127 # Conditional expression is constant.
/wd4200 # Non-standard extension, zero sized array.
/wd4201 # Non-standard extension used: nameless struct/union.
/wd4296 # '<' Expression is always false.
/wd4316 # Object allocated on the heap may not be aligned to 128.
/wd4324 # Structure was padded due to alignment specifier.
/wd4355 # 'this' used in base member initializer list.
/wd4371 # Layout of class may have changed due to fixes in packing.
/wd4435 # Object layout under /vd2 will change due to virtual base.
/wd4514 # Unreferenced inline function has been removed. (caused by /Zc:inline)
/wd4548 # Expression before comma has no effect. I wouldn't disable this normally, but malloc.h triggers this warning.
/wd4571 # Semantics of catch(...) changed in VC 7.1
/wd4574 # ifdef'd macro was defined to 0.
/wd4582 # Constructor is not implicitly called.
/wd4583 # Destructor is not implicitly called.
/wd4619 # Invalid warning number used in #pragma warning.
/wd4623 # Default constructor was implicitly defined as deleted.
/wd4625 # Copy constructor was implicitly defined as deleted.
/wd4626 # Assignment operator was implicitly defined as deleted.
/wd4643 # Forward declaring standard library types is not permitted.
/wd4647 # Behavior change in __is_pod.
/wd4668 # Macro was not defined, replacing with 0.
/wd4706 # Assignment within conditional expression.
/wd4710 # Function was not inlined.
/wd4711 # Function was selected for automated inlining.
/wd4714 # Function marked as __forceinline not inlined.
/wd4820 # Padding added after data member.
/wd5026 # Move constructor was implicitly defined as deleted.
/wd5027 # Move assignment operator was implicitly defined as deleted.
/wd5031 # #pragma warning(pop): likely mismatch, popping warning state pushed in different file. This is needed because of how boost does things.
/wd5045 # Compiler will insert Spectre mitigation for memory load if /Qspectre switch is specified.
# Warnings to treat as errors:
/we4099 # Mixed use of struct and class on same type names.
/we4129 # Unknown escape sequence. This is usually caused by incorrect escaping.
/we4566 # Character cannot be represented in current charset. This is remidied by prefixing string with "u8".
PRIVATE
# Warnings disabled for /analyze
$<$<BOOL:${MSVC_ENABLE_STATIC_ANALYSIS}>:
/wd6001 # Using uninitialized memory. This is disabled because it is wrong 99% of the time.
/wd6011 # Dereferencing potentially NULL pointer.
/wd6031 # Return value ignored.
/wd6235 # (<non-zero constant> || <expression>) is always a non-zero constant.
/wd6237 # (<zero> && <expression>) is always zero. <expression> is never evaluated and may have side effects.
/wd6239 # (<non-zero constant> && <expression>) always evaluates to the result of <expression>.
/wd6240 # (<expression> && <non-zero constant>) always evaluates to the result of <expression>.
/wd6246 # Local declaration hides declaration of same name in outer scope.
/wd6248 # Setting a SECURITY_DESCRIPTOR's DACL to NULL will result in an unprotected object. This is done by one of the boost headers.
/wd6255 # _alloca indicates failure by raising a stack overflow exception.
/wd6262 # Function uses more than x bytes of stack space.
/wd6271 # Extra parameter passed to format function. The analysis pass doesn't recognize %j or %z, even though the runtime does.
/wd6285 # (<non-zero constant> || <non-zero constant>) is always true.
/wd6297 # 32-bit value is shifted then cast to 64-bits. The places this occurs never use more than 32 bits.
/wd6308 # Realloc might return null pointer: assigning null pointer to '<name>', which is passed as an argument to 'realloc', will cause the original memory to leak.
/wd6326 # Potential comparison of a constant with another constant.
/wd6330 # Unsigned/signed mismatch when passed as a parameter.
/wd6340 # Mismatch on sign when passed as format string value.
/wd6387 # '<value>' could be '0': This does not adhere to the specification for a function.
/wd28182 # Dereferencing NULL pointer. '<value>' contains the same NULL value as '<expression>'.
/wd28251 # Inconsistent annotation for function. This is because we only annotate the declaration and not the definition.
/wd28278 # Function appears with no prototype in scope.
>
)
# And the extra defines:
target_compile_definitions(${THETARGET}
PUBLIC
_CRT_NONSTDC_NO_WARNINGS # Don't deprecate posix names of functions.
_CRT_SECURE_NO_WARNINGS # Don't deprecate the non _s versions of various standard library functions, because safety is for chumps.
_SCL_SECURE_NO_WARNINGS # Don't deprecate the non _s versions of various standard library functions, because safety is for chumps.
_STL_EXTRA_DISABLED_WARNINGS=4774\ 4987
$<$<BOOL:${MSVC_ENABLE_CPP_LATEST}>:_HAS_AUTO_PTR_ETC=1> # We're building in C++ 17 or greater mode, but certain dependencies (Boost) still have dependencies on unary_function and binary_function, so we have to make sure not to remove them.
$<$<BOOL:${MSVC_ENABLE_LEAN_AND_MEAN_WINDOWS}>:WIN32_LEAN_AND_MEAN> # Don't include most of Windows.h
$<$<BOOL:${MSVC_SUPPRESS_BOOST_CONFIG_OUTDATED}>:BOOST_CONFIG_SUPPRESS_OUTDATED_MESSAGE> # MSVC moves faster than boost, so add a quick way to disable the messages.
)
# Ignore a warning about an object file not defining any symbols,
# these are known, and we don't care.
set_property(TARGET ${THETARGET} APPEND_STRING PROPERTY STATIC_LIBRARY_FLAGS " /ignore:4221")
# The options to pass to the linker:
set_property(TARGET ${THETARGET} APPEND_STRING PROPERTY LINK_FLAGS_DEBUG " /INCREMENTAL") # Do incremental linking.
if (NOT $<TARGET_PROPERTY:${THETARGET},TYPE> STREQUAL "STATIC_LIBRARY")
set_property(TARGET ${THETARGET} APPEND_STRING PROPERTY LINK_FLAGS_DEBUG " /OPT:NOREF") # No unreferenced data elimination.
set_property(TARGET ${THETARGET} APPEND_STRING PROPERTY LINK_FLAGS_DEBUG " /OPT:NOICF") # No Identical COMDAT folding.
set_property(TARGET ${THETARGET} APPEND_STRING PROPERTY LINK_FLAGS_RELEASE " /OPT:REF") # Remove unreferenced functions and data.
set_property(TARGET ${THETARGET} APPEND_STRING PROPERTY LINK_FLAGS_RELEASE " /OPT:ICF") # Identical COMDAT folding.
endif()
if (MSVC_ENABLE_FAST_LINK)
set_property(TARGET ${THETARGET} APPEND_STRING PROPERTY LINK_FLAGS_DEBUG " /DEBUG:FASTLINK") # Generate a partial PDB file that simply references the original object and library files.
endif()
# Add /GL to the compiler, and /LTCG to the linker
# if link time code generation is enabled.
if (MSVC_ENABLE_LTCG)
set_property(TARGET ${THETARGET} APPEND_STRING PROPERTY LINK_FLAGS_RELEASE " /LTCG")
endif()
endfunction()
list(APPEND FOLLY_LINK_LIBRARIES Iphlpapi.lib Ws2_32.lib)
================================================
FILE: CMake/FollyCompilerUnix.cmake
================================================
# Copyright (c) Meta Platforms, Inc. and affiliates.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
set(CMAKE_CXX_FLAGS_COMMON "-g -Wall -Wextra")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${CMAKE_CXX_FLAGS_COMMON}")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${CMAKE_CXX_FLAGS_COMMON} -O3")
list(APPEND CMAKE_REQUIRED_DEFINITIONS "-D_GNU_SOURCE")
function(apply_folly_compile_options_to_target THETARGET)
target_compile_definitions(${THETARGET}
PRIVATE
_REENTRANT
_GNU_SOURCE
)
target_compile_options(${THETARGET}
PRIVATE
-g
-finput-charset=UTF-8
-fsigned-char
-Wall
-Wno-deprecated
-Wno-deprecated-declarations
-Wno-sign-compare
-Wno-unused
-Wuninitialized
-Wunused-label
-Wunused-result
${FOLLY_CXX_FLAGS}
)
endfunction()
================================================
FILE: CMake/FollyConfigChecks.cmake
================================================
# Copyright (c) Meta Platforms, Inc. and affiliates.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
include(CheckCXXSourceCompiles)
include(CheckCXXSourceRuns)
include(CheckFunctionExists)
include(CheckIncludeFileCXX)
include(CheckSymbolExists)
include(CheckTypeSize)
include(CheckCXXCompilerFlag)
if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
list(APPEND FOLLY_CXX_FLAGS -Wno-psabi)
endif()
if (CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
CHECK_INCLUDE_FILE_CXX(malloc_np.h FOLLY_USE_JEMALLOC)
else()
CHECK_INCLUDE_FILE_CXX(jemalloc/jemalloc.h FOLLY_USE_JEMALLOC)
endif()
if(NOT CMAKE_SYSTEM_NAME STREQUAL "Windows")
# clang only rejects unknown warning flags if -Werror=unknown-warning-option
# is also specified.
check_cxx_compiler_flag(
-Werror=unknown-warning-option
COMPILER_HAS_UNKNOWN_WARNING_OPTION)
if (COMPILER_HAS_UNKNOWN_WARNING_OPTION)
set(CMAKE_REQUIRED_FLAGS
"${CMAKE_REQUIRED_FLAGS} -Werror=unknown-warning-option")
endif()
check_cxx_compiler_flag(-Wshadow-local COMPILER_HAS_W_SHADOW_LOCAL)
check_cxx_compiler_flag(
-Wshadow-compatible-local
COMPILER_HAS_W_SHADOW_COMPATIBLE_LOCAL)
if (COMPILER_HAS_W_SHADOW_LOCAL AND COMPILER_HAS_W_SHADOW_COMPATIBLE_LOCAL)
set(FOLLY_HAVE_SHADOW_LOCAL_WARNINGS ON)
list(APPEND FOLLY_CXX_FLAGS -Wshadow-compatible-local)
endif()
check_cxx_compiler_flag(
-Wnullability-completeness
COMPILER_HAS_W_NULLABILITY_COMPLETENESS)
if (COMPILER_HAS_W_NULLABILITY_COMPLETENESS)
list(APPEND FOLLY_CXX_FLAGS -Wno-nullability-completeness)
endif()
check_cxx_compiler_flag(
-Winconsistent-missing-override
COMPILER_HAS_W_INCONSISTENT_MISSING_OVERRIDE)
if (COMPILER_HAS_W_INCONSISTENT_MISSING_OVERRIDE)
list(APPEND FOLLY_CXX_FLAGS -Wno-inconsistent-missing-override)
endif()
check_cxx_compiler_flag(-fopenmp COMPILER_HAS_F_OPENMP)
if (COMPILER_HAS_F_OPENMP)
list(APPEND FOLLY_CXX_FLAGS -fopenmp)
endif()
endif()
set(FOLLY_ORIGINAL_CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS}")
string(REGEX REPLACE
"-std=(c|gnu)\\+\\+.."
""
CMAKE_REQUIRED_FLAGS
"${CMAKE_REQUIRED_FLAGS}")
check_symbol_exists(pthread_atfork pthread.h FOLLY_HAVE_PTHREAD_ATFORK)
list(APPEND CMAKE_REQUIRED_DEFINITIONS -D_GNU_SOURCE)
check_symbol_exists(accept4 sys/socket.h FOLLY_HAVE_ACCEPT4)
check_symbol_exists(getrandom sys/random.h FOLLY_HAVE_GETRANDOM)
check_symbol_exists(preadv sys/uio.h FOLLY_HAVE_PREADV)
check_symbol_exists(pwritev sys/uio.h FOLLY_HAVE_PWRITEV)
check_symbol_exists(clock_gettime time.h FOLLY_HAVE_CLOCK_GETTIME)
check_symbol_exists(pipe2 unistd.h FOLLY_HAVE_PIPE2)
check_function_exists(malloc_usable_size FOLLY_HAVE_MALLOC_USABLE_SIZE)
set(CMAKE_REQUIRED_FLAGS "${FOLLY_ORIGINAL_CMAKE_REQUIRED_FLAGS}")
check_cxx_source_compiles("
#pragma GCC diagnostic error \"-Wattributes\"
extern \"C\" void (*test_ifunc(void))() { return 0; }
void func() __attribute__((ifunc(\"test_ifunc\")));
int main() { return 0; }"
FOLLY_HAVE_IFUNC
)
check_cxx_source_runs("
int main(int, char**) {
char buf[64] = {0};
unsigned long *ptr = (unsigned long *)(buf + 1);
*ptr = 0xdeadbeef;
return (*ptr & 0xff) == 0xef ? 0 : 1;
}"
FOLLY_HAVE_UNALIGNED_ACCESS
)
check_cxx_source_compiles("
int main(int argc, char** argv) {
unsigned size = argc;
char data[size];
return 0;
}"
FOLLY_HAVE_VLA
)
check_cxx_source_runs("
extern \"C\" int folly_example_undefined_weak_symbol() __attribute__((weak));
int main(int argc, char** argv) {
auto f = folly_example_undefined_weak_symbol; // null pointer
return f ? f() : 0; // must compile, link, and run with null pointer
}"
FOLLY_HAVE_WEAK_SYMBOLS
)
check_cxx_source_runs("
#include <dlfcn.h>
int main() {
void *h = dlopen(\"linux-vdso.so.1\", RTLD_LAZY | RTLD_LOCAL | RTLD_NOLOAD);
if (h == nullptr) {
return -1;
}
dlclose(h);
return 0;
}"
FOLLY_HAVE_LINUX_VDSO
)
check_cxx_source_runs("
#include <cstddef>
#include <cwchar>
int main(int argc, char** argv) {
return wcstol(L\"01\", nullptr, 10) == 1 ? 0 : 1;
}"
FOLLY_HAVE_WCHAR_SUPPORT
)
check_cxx_source_compiles("
#include <ext/random>
int main(int argc, char** argv) {
__gnu_cxx::sfmt19937 rng;
return 0;
}"
FOLLY_HAVE_EXTRANDOM_SFMT19937
)
check_cxx_source_runs("
#include <stdarg.h>
#include <stdio.h>
int call_vsnprintf(const char* fmt, ...) {
char buf[256];
va_list ap;
va_start(ap, fmt);
int result = vsnprintf(buf, sizeof(buf), fmt, ap);
va_end(ap);
return result;
}
int main(int argc, char** argv) {
return call_vsnprintf(\"%\", 1) < 0 ? 0 : 1;
}"
HAVE_VSNPRINTF_ERRORS
)
================================================
FILE: CMake/FollyFunctions.cmake
================================================
# Copyright (c) Meta Platforms, Inc. and affiliates.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
function(auto_sources RETURN_VALUE PATTERN SOURCE_SUBDIRS)
if ("${SOURCE_SUBDIRS}" STREQUAL "RECURSE")
SET(PATH ".")
if (${ARGC} EQUAL 4)
list(GET ARGV 3 PATH)
endif ()
endif()
if ("${SOURCE_SUBDIRS}" STREQUAL "RECURSE")
unset(${RETURN_VALUE})
file(GLOB SUBDIR_FILES "${PATH}/${PATTERN}")
list(APPEND ${RETURN_VALUE} ${SUBDIR_FILES})
file(GLOB subdirs RELATIVE ${PATH} ${PATH}/*)
foreach(DIR ${subdirs})
if (IS_DIRECTORY ${PATH}/${DIR})
if (NOT "${DIR}" STREQUAL "CMakeFiles")
file(GLOB_RECURSE SUBDIR_FILES "${PATH}/${DIR}/${PATTERN}")
list(APPEND ${RETURN_VALUE} ${SUBDIR_FILES})
endif()
endif()
endforeach()
else()
file(GLOB ${RETURN_VALUE} "${PATTERN}")
foreach (PATH ${SOURCE_SUBDIRS})
file(GLOB SUBDIR_FILES "${PATH}/${PATTERN}")
list(APPEND ${RETURN_VALUE} ${SUBDIR_FILES})
endforeach()
endif ()
set(${RETURN_VALUE} ${${RETURN_VALUE}} PARENT_SCOPE)
endfunction(auto_sources)
# Remove all files matching a set of patterns, and,
# optionally, not matching a second set of patterns,
# from a set of lists.
#
# Example:
# This will remove all files in the CPP_SOURCES list
# matching "/test/" or "Test.cpp$", but not matching
# "BobTest.cpp$".
# REMOVE_MATCHES_FROM_LISTS(CPP_SOURCES MATCHES "/test/" "Test.cpp$" IGNORE_MATCHES "BobTest.cpp$")
#
# Parameters:
#
# [...]:
# The names of the lists to remove matches from.
#
# [MATCHES ...]:
# The matches to remove from the lists.
#
# [IGNORE_MATCHES ...]:
# The matches not to remove, even if they match
# the main set of matches to remove.
function(REMOVE_MATCHES_FROM_LISTS)
set(LISTS_TO_SEARCH)
set(MATCHES_TO_REMOVE)
set(MATCHES_TO_IGNORE)
set(argumentState 0)
foreach (arg ${ARGN})
if ("x${arg}" STREQUAL "xMATCHES")
set(argumentState 1)
elseif ("x${arg}" STREQUAL "xIGNORE_MATCHES")
set(argumentState 2)
elseif (argumentState EQUAL 0)
list(APPEND LISTS_TO_SEARCH ${arg})
elseif (argumentState EQUAL 1)
list(APPEND MATCHES_TO_REMOVE ${arg})
elseif (argumentState EQUAL 2)
list(APPEND MATCHES_TO_IGNORE ${arg})
else()
message(FATAL_ERROR "Unknown argument state!")
endif()
endforeach()
foreach (theList ${LISTS_TO_SEARCH})
foreach (entry ${${theList}})
foreach (match ${MATCHES_TO_REMOVE})
if (${entry} MATCHES ${match})
set(SHOULD_IGNORE OFF)
foreach (ign ${MATCHES_TO_IGNORE})
if (${entry} MATCHES ${ign})
set(SHOULD_IGNORE ON)
break()
endif()
endforeach()
if (NOT SHOULD_IGNORE)
list(REMOVE_ITEM ${theList} ${entry})
endif()
endif()
endforeach()
endforeach()
set(${theList} ${${theList}} PARENT_SCOPE)
endforeach()
endfunction()
# Automatically create source_group directives for the sources passed in.
function(auto_source_group rootName rootDir)
file(TO_CMAKE_PATH "${rootDir}" rootDir)
string(LENGTH "${rootDir}" rootDirLength)
set(sourceGroups)
foreach (fil ${ARGN})
file(TO_CMAKE_PATH "${fil}" filePath)
string(FIND "${filePath}" "/" rIdx REVERSE)
if (rIdx EQUAL -1)
message(FATAL_ERROR "Unable to locate the final forward slash in '${filePath}'!")
endif()
string(SUBSTRING "${filePath}" 0 ${rIdx} filePath)
string(LENGTH "${filePath}" filePathLength)
string(FIND "${filePath}" "${rootDir}" rIdx)
if (rIdx EQUAL 0)
math(EXPR filePathLength "${filePathLength} - ${rootDirLength}")
string(SUBSTRING "${filePath}" ${rootDirLength} ${filePathLength} fileGroup)
string(REPLACE "/" "\\" fileGroup "${fileGroup}")
set(fileGroup "\\${rootName}${fileGroup}")
list(FIND sourceGroups "${fileGroup}" rIdx)
if (rIdx EQUAL -1)
list(APPEND sourceGroups "${fileGroup}")
source_group("${fileGroup}" REGULAR_EXPRESSION "${filePath}/[^/.]+.(cpp|h)$")
endif()
endif()
endforeach()
endfunction()
# CMake is a pain and doesn't have an easy way to install only the files
# we actually included in our build :(
function(auto_install_files rootName rootDir)
file(TO_CMAKE_PATH "${rootDir}" rootDir)
string(LENGTH "${rootDir}" rootDirLength)
set(sourceGroups)
foreach (fil ${ARGN})
file(TO_CMAKE_PATH "${fil}" filePath)
string(FIND "${filePath}" "/" rIdx REVERSE)
if (rIdx EQUAL -1)
message(FATAL_ERROR "Unable to locate the final forward slash in '${filePath}'!")
endif()
string(SUBSTRING "${filePath}" 0 ${rIdx} filePath)
string(LENGTH "${filePath}" filePathLength)
string(FIND "${filePath}" "${rootDir}" rIdx)
if (rIdx EQUAL 0)
math(EXPR filePathLength "${filePathLength} - ${rootDirLength}")
string(SUBSTRING "${filePath}" ${rootDirLength} ${filePathLength} fileGroup)
install(FILES ${fil}
DESTINATION ${INCLUDE_INSTALL_DIR}/${rootName}${fileGroup})
endif()
endforeach()
endfunction()
function(folly_define_tests)
set(directory_count 0)
set(test_count 0)
set(currentArg 0)
while (currentArg LESS ${ARGC})
if ("x${ARGV${currentArg}}" STREQUAL "xDIRECTORY")
math(EXPR currentArg "${currentArg} + 1")
if (NOT currentArg LESS ${ARGC})
message(FATAL_ERROR "Expected base directory!")
endif()
set(cur_dir ${directory_count})
math(EXPR directory_count "${directory_count} + 1")
set(directory_${cur_dir}_name "${ARGV${currentArg}}")
# We need a single list of sources to get source_group to work nicely.
set(directory_${cur_dir}_source_list)
math(EXPR currentArg "${currentArg} + 1")
while (currentArg LESS ${ARGC})
if ("x${ARGV${currentArg}}" STREQUAL "xDIRECTORY")
break()
elseif ("x${ARGV${currentArg}}" STREQUAL "xTEST" OR
"x${ARGV${currentArg}}" STREQUAL "xBENCHMARK")
set(cur_test ${test_count})
math(EXPR test_count "${test_count} + 1")
set(test_${cur_test}_is_benchmark $<STREQUAL:"x${ARGV${currentArg}}","xBENCHMARK">)
math(EXPR currentArg "${currentArg} + 1")
if (NOT currentArg LESS ${ARGC})
message(FATAL_ERROR "Expected test name!")
endif()
set(test_${cur_test}_name "${ARGV${currentArg}}")
math(EXPR currentArg "${currentArg} + 1")
set(test_${cur_test}_directory ${cur_dir})
set(test_${cur_test}_content_dir)
set(test_${cur_test}_headers)
set(test_${cur_test}_sources)
set(test_${cur_test}_tag)
set(argumentState 0)
while (currentArg LESS ${ARGC})
if ("x${ARGV${currentArg}}" STREQUAL "xHEADERS")
set(argumentState 1)
elseif ("x${ARGV${currentArg}}" STREQUAL "xSOURCES")
set(argumentState 2)
elseif ("x${ARGV${currentArg}}" STREQUAL "xCONTENT_DIR")
math(EXPR currentArg "${currentArg} + 1")
if (NOT currentArg LESS ${ARGC})
message(FATAL_ERROR "Expected content directory name!")
endif()
set(test_${cur_test}_content_dir "${ARGV${currentArg}}")
elseif ("x${ARGV${currentArg}}" STREQUAL "xTEST" OR
"x${ARGV${currentArg}}" STREQUAL "xBENCHMARK" OR
"x${ARGV${currentArg}}" STREQUAL "xDIRECTORY")
break()
elseif (argumentState EQUAL 0)
if ("x${ARGV${currentArg}}" STREQUAL "xBROKEN")
list(APPEND test_${cur_test}_tag "BROKEN")
elseif ("x${ARGV${currentArg}}" STREQUAL "xHANGING")
list(APPEND test_${cur_test}_tag "HANGING")
elseif ("x${ARGV${currentArg}}" STREQUAL "xSLOW")
list(APPEND test_${cur_test}_tag "SLOW")
elseif ("x${ARGV${currentArg}}" STREQUAL "xWINDOWS_DISABLED")
list(APPEND test_${cur_test}_tag "WINDOWS_DISABLED")
elseif ("x${ARGV${currentArg}}" STREQUAL "xAPPLE_DISABLED")
list(APPEND test_${cur_test}_tag "APPLE_DISABLED")
else()
message(FATAL_ERROR "Unknown test tag '${ARGV${currentArg}}'!")
endif()
elseif (argumentState EQUAL 1)
list(APPEND test_${cur_test}_headers
"${FOLLY_DIR}/${directory_${cur_dir}_name}${ARGV${currentArg}}"
)
elseif (argumentState EQUAL 2)
list(APPEND test_${cur_test}_sources
"${FOLLY_DIR}/${directory_${cur_dir}_name}${ARGV${currentArg}}"
)
else()
message(FATAL_ERROR "Unknown argument state!")
endif()
math(EXPR currentArg "${currentArg} + 1")
endwhile()
list(APPEND directory_${cur_dir}_source_list
${test_${cur_test}_sources} ${test_${cur_test}_headers})
else()
message(FATAL_ERROR "Unknown argument inside directory '${ARGV${currentArg}}'!")
endif()
endwhile()
else()
message(FATAL_ERROR "Unknown argument '${ARGV${currentArg}}'!")
endif()
endwhile()
set(cur_dir 0)
while (cur_dir LESS directory_count)
source_group("" FILES ${directory_${cur_dir}_source_list})
math(EXPR cur_dir "${cur_dir} + 1")
endwhile()
set(cur_test 0)
while (cur_test LESS test_count)
set(cur_test_name ${test_${cur_test}_name})
set(cur_dir_name ${directory_${test_${cur_test}_directory}_name})
if ("BROKEN" IN_LIST test_${cur_test}_tag AND NOT BUILD_BROKEN_TESTS)
message("Skipping broken test ${cur_dir_name}${cur_test_name}, enable with BUILD_BROKEN_TESTS")
elseif ("SLOW" IN_LIST test_${cur_test}_tag AND NOT BUILD_SLOW_TESTS)
message("Skipping slow test ${cur_dir_name}${cur_test_name}, enable with BUILD_SLOW_TESTS")
elseif ("HANGING" IN_LIST test_${cur_test}_tag AND NOT BUILD_HANGING_TESTS)
message("Skipping hanging test ${cur_dir_name}${cur_test_name}, enable with BUILD_HANGING_TESTS")
elseif ("WINDOWS_DISABLED" IN_LIST test_${cur_test}_tag AND WIN32 AND NOT BUILD_WINDOWS_DISABLED)
message("Skipping windows disabled test ${cur_dir_name}${cur_test_name}, enable with BUILD_WINDOWS_DISABLED")
elseif ("APPLE_DISABLED" IN_LIST test_${cur_test}_tag AND APPLE AND NOT BUILD_APPLE_DISABLED)
message("Skipping apple disabled test ${cur_dir_name}${cur_test_name}, enable with BUILD_APPLE_DISABLED")
elseif (${test_${cur_test}_is_benchmark} AND NOT BUILD_BENCHMARKS)
message("Skipping benchmark ${cur_dir_name}${cur_test_name}, enable with BUILD_BENCHMARKS")
else()
add_executable(${cur_test_name}
${test_${cur_test}_headers}
${test_${cur_test}_sources}
)
if (NOT ${test_${cur_test}_is_benchmark})
if (HAVE_CMAKE_GTEST)
# If we have CMake's built-in gtest support use it to add each test
# function as a separate test.
gtest_add_tests(TARGET ${cur_test_name}
WORKING_DIRECTORY "${TOP_DIR}"
TEST_PREFIX "${cur_test_name}."
TEST_LIST test_cases)
set_tests_properties(${test_cases} PROPERTIES TIMEOUT 120)
else()
# Otherwise add each test executable as a single test.
add_test(
NAME ${cur_test_name}
COMMAND ${cur_test_name}
WORKING_DIRECTORY "${TOP_DIR}"
)
set_tests_properties(${cur_test_name} PROPERTIES TIMEOUT 120)
endif()
endif()
if (NOT "x${test_${cur_test}_content_dir}" STREQUAL "x")
# Copy the content directory to the output directory tree so that
# tests can be run easily from Visual Studio without having to change
# the working directory for each test individually.
file(
COPY "${FOLLY_DIR}/${cur_dir_name}${test_${cur_test}_content_dir}"
DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/folly/${cur_dir_name}${test_${cur_test}_content_dir}"
)
add_custom_command(TARGET ${cur_test_name} POST_BUILD COMMAND
${CMAKE_COMMAND} ARGS -E copy_directory
"${FOLLY_DIR}/${cur_dir_name}${test_${cur_test}_content_dir}"
"$<TARGET_FILE_DIR:${cur_test_name}>/folly/${cur_dir_name}${test_${cur_test}_content_dir}"
COMMENT "Copying test content for ${cur_test_name}" VERBATIM
)
endif()
# Strip the tailing test directory name for the folder name.
string(REPLACE "test/" "" test_dir_name "${cur_dir_name}")
set_property(TARGET ${cur_test_name} PROPERTY FOLDER "Tests/${test_dir_name}")
target_link_libraries(${cur_test_name} PRIVATE folly_test_support)
apply_folly_compile_options_to_target(${cur_test_name})
endif()
math(EXPR cur_test "${cur_test} + 1")
endwhile()
endfunction()
# Initialize global property to track all granular component targets
define_property(GLOBAL PROPERTY FOLLY_COMPONENT_TARGETS
BRIEF_DOCS "List of all folly component OBJECT targets"
FULL_DOCS "Used to aggregate all component targets into the monolithic folly library"
)
set_property(GLOBAL PROPERTY FOLLY_COMPONENT_TARGETS "")
# Track deferred dependencies to be linked after all targets are created
# Each entry is: "target|visibility|dep1,dep2,dep3"
define_property(GLOBAL PROPERTY FOLLY_DEFERRED_DEPS
BRIEF_DOCS "List of deferred dependency specifications"
FULL_DOCS "Format: target|PUBLIC|PRIVATE|dep1,dep2,..."
)
set_property(GLOBAL PROPERTY FOLLY_DEFERRED_DEPS "")
# Track INTERFACE targets that need to link to monolithic folly (for shared builds)
define_property(GLOBAL PROPERTY FOLLY_GRANULAR_INTERFACE_TARGETS
BRIEF_DOCS "List of granular INTERFACE targets for shared builds"
FULL_DOCS "These targets will be linked to the monolithic folly library"
)
set_property(GLOBAL PROPERTY FOLLY_GRANULAR_INTERFACE_TARGETS "")
# Helper to add a folly library target
# Creates:
# 1. OBJECT library (${name}_obj) - for composition into monolithic target
# 2. STATIC library (${name}) - individual .a file for granular linking
# Usage:
# folly_add_library(
# NAME iobuf # Target suffix (full name: folly_io_iobuf)
# TARGET_NAME follybenchmark # Optional: override computed target name
# SRCS Cursor.cpp IOBuf.cpp # Source files (optional if using AUTO_SOURCES)
# HEADERS Cursor.h IOBuf.h # Header files
# AUTO_SOURCES # Use auto_sources() instead of explicit SRCS
# DEPS folly_lang_bits # Private dependencies (internal folly targets)
# EXPORTED_DEPS folly_range # Public dependencies (propagated to users)
# EXTERNAL_DEPS ${LIBSODIUM_LIBRARIES} # External library dependencies
# EXTERNAL_INCLUDE_DIRS ${LIBSODIUM_INCLUDE_DIRS} # External include directories
# COMPILE_OPTIONS -mpclmul # Optional compile options for source files
# EXCLUDE_FROM_MONOLITH # Don't include in monolithic folly library
# )
function(folly_add_library)
cmake_parse_arguments(
FOLLY_LIB
"AUTO_SOURCES;EXCLUDE_FROM_MONOLITH" # Options
"NAME;TARGET_NAME" # Single-value args
"SRCS;HEADERS;DEPS;EXPORTED_DEPS;EXTERNAL_DEPS;EXTERNAL_INCLUDE_DIRS;COMPILE_OPTIONS" # Multi-value args
${ARGN}
)
# Use explicit TARGET_NAME if provided, otherwise compute from directory
if(FOLLY_LIB_TARGET_NAME)
set(_target_name "${FOLLY_LIB_TARGET_NAME}")
else()
# Compute target name from current directory relative to FOLLY_DIR
# e.g., folly/io → folly_io, folly/io/async → folly_io_async
file(RELATIVE_PATH _rel_path "${FOLLY_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}")
if(_rel_path STREQUAL "")
set(_target_name "folly_${FOLLY_LIB_NAME}")
else()
string(REPLACE "/" "_" _prefix "${_rel_path}")
set(_target_name "folly_${_prefix}_${FOLLY_LIB_NAME}")
endif()
endif()
# Handle source collection
if(FOLLY_LIB_AUTO_SOURCES)
auto_sources(_srcs "*.cpp" "" "${CMAKE_CURRENT_SOURCE_DIR}")
REMOVE_MATCHES_FROM_LISTS(_srcs MATCHES "test/" "Test.cpp$" "Benchmark.cpp$")
else()
set(_srcs ${FOLLY_LIB_SRCS})
endif()
# Skip if no sources (header-only library)
list(LENGTH _srcs _src_count)
if(_src_count EQUAL 0)
# Header-only: create INTERFACE library
add_library(${_target_name} INTERFACE)
target_include_directories(${_target_name}
INTERFACE
$<BUILD_INTERFACE:${TOP_DIR}>
$<BUILD_INTERFACE:${CMAKE_BINARY_DIR}>
$<INSTALL_INTERFACE:${INCLUDE_INSTALL_DIR}>
)
target_link_libraries(${_target_name}
INTERFACE folly_deps ${FOLLY_LIB_EXPORTED_DEPS} ${FOLLY_LIB_EXTERNAL_DEPS}
)
# Track external deps for monolithic library (header-only deps are used transitively)
if(FOLLY_LIB_EXTERNAL_DEPS)
set_property(GLOBAL APPEND PROPERTY FOLLY_MONOLITHIC_EXTERNAL_DEPS ${FOLLY_LIB_EXTERNAL_DEPS})
endif()
install(
TARGETS ${_target_name}
EXPORT folly
)
add_library(Folly::${_target_name} ALIAS ${_target_name})
return()
endif()
# 1. Create OBJECT library (for composition into monolithic target)
set(_obj_target "${_target_name}_obj")
add_library(${_obj_target} OBJECT ${_srcs} ${FOLLY_LIB_HEADERS})
set_property(TARGET ${_obj_target} PROPERTY VERSION ${PACKAGE_VERSION})
if(BUILD_SHARED_LIBS)
set_property(TARGET ${_obj_target} PROPERTY POSITION_INDEPENDENT_CODE ON)
endif()
target_include_directories(${_obj_target}
PUBLIC
$<BUILD_INTERFACE:${TOP_DIR}>
$<BUILD_INTERFACE:${CMAKE_BINARY_DIR}>
$<INSTALL_INTERFACE:${INCLUDE_INSTALL_DIR}>
)
apply_folly_compile_options_to_target(${_obj_target})
# Apply optional compile options
if(FOLLY_LIB_COMPILE_OPTIONS)
target_compile_options(${_obj_target} PRIVATE ${FOLLY_LIB_COMPILE_OPTIONS})
endif()
# Link dependencies on OBJECT library
# External deps via folly_deps are always available
# Internal folly deps are deferred until all targets exist
target_link_libraries(${_obj_target}
PUBLIC folly_deps
)
# Link external dependencies (e.g., libsodium, openssl) directly
if(FOLLY_LIB_EXTERNAL_DEPS)
target_link_libraries(${_obj_target}
PUBLIC ${FOLLY_LIB_EXTERNAL_DEPS}
)
endif()
# Add external include directories (e.g., libsodium include dirs)
if(FOLLY_LIB_EXTERNAL_INCLUDE_DIRS)
target_include_directories(${_obj_target}
PUBLIC ${FOLLY_LIB_EXTERNAL_INCLUDE_DIRS}
)
endif()
# Defer internal folly dependencies until all targets are created
# (Only for static builds - for shared builds, OBJECT targets are bundled into monolithic folly)
if(NOT BUILD_SHARED_LIBS)
if(FOLLY_LIB_EXPORTED_DEPS)
# Join deps with comma, store as "target|PUBLIC|dep1,dep2,..."
list(JOIN FOLLY_LIB_EXPORTED_DEPS "," _deps_str)
set_property(GLOBAL APPEND PROPERTY FOLLY_DEFERRED_DEPS
"${_obj_target}|PUBLIC|${_deps_str}"
)
endif()
if(FOLLY_LIB_DEPS)
list(JOIN FOLLY_LIB_DEPS "," _deps_str)
set_property(GLOBAL APPEND PROPERTY FOLLY_DEFERRED_DEPS
"${_obj_target}|PRIVATE|${_deps_str}"
)
endif()
endif()
# Track OBJECT target for monolithic aggregation (unless excluded)
if(NOT FOLLY_LIB_EXCLUDE_FROM_MONOLITH)
set_property(GLOBAL APPEND PROPERTY FOLLY_COMPONENT_TARGETS ${_obj_target})
# Track external deps for the monolithic library
if(FOLLY_LIB_EXTERNAL_DEPS)
set_property(GLOBAL APPEND PROPERTY FOLLY_MONOLITHIC_EXTERNAL_DEPS ${FOLLY_LIB_EXTERNAL_DEPS})
endif()
endif()
# 2. Create the granular library target
if(BUILD_SHARED_LIBS AND NOT FOLLY_LIB_EXCLUDE_FROM_MONOLITH)
# For shared builds: create INTERFACE library that will link to monolithic folly
# This avoids duplicating symbols between granular and monolithic libraries
add_library(${_target_name} INTERFACE)
target_include_directories(${_target_name}
INTERFACE
$<BUILD_INTERFACE:${TOP_DIR}>
$<BUILD_INTERFACE:${CMAKE_BINARY_DIR}>
$<INSTALL_INTERFACE:${INCLUDE_INSTALL_DIR}>
)
# Add external include directories for INTERFACE target
if(FOLLY_LIB_EXTERNAL_INCLUDE_DIRS)
target_include_directories(${_target_name}
INTERFACE ${FOLLY_LIB_EXTERNAL_INCLUDE_DIRS}
)
endif()
# Track this target to link to folly after monolithic library is created
set_property(GLOBAL APPEND PROPERTY FOLLY_GRANULAR_INTERFACE_TARGETS ${_target_name})
# Install the INTERFACE library
install(
TARGETS ${_target_name}
EXPORT folly
)
elseif(BUILD_SHARED_LIBS AND FOLLY_LIB_EXCLUDE_FROM_MONOLITH)
# For excluded targets in shared builds: create SHARED library with actual code
# These are NOT in the monolithic folly, so they need their own implementation
add_library(${_target_name} SHARED $<TARGET_OBJECTS:${_obj_target}>)
set_property(TARGET ${_target_name} PROPERTY VERSION ${PACKAGE_VERSION})
target_include_directories(${_target_name}
PUBLIC
$<BUILD_INTERFACE:${TOP_DIR}>
$<BUILD_INTERFACE:${CMAKE_BINARY_DIR}>
$<INSTALL_INTERFACE:${INCLUDE_INSTALL_DIR}>
)
# Link to folly_deps (external dependencies)
target_link_libraries(${_target_name}
PUBLIC folly_deps
)
# Link external dependencies
if(FOLLY_LIB_EXTERNAL_DEPS)
target_link_libraries(${_target_name}
PUBLIC ${FOLLY_LIB_EXTERNAL_DEPS}
)
endif()
# Add external include directories
if(FOLLY_LIB_EXTERNAL_INCLUDE_DIRS)
target_include_directories(${_target_name}
PUBLIC ${FOLLY_LIB_EXTERNAL_INCLUDE_DIRS}
)
endif()
# Defer linking to folly (created later by folly_create_monolithic_library)
# Also defer internal folly dependencies
set(_all_deps "folly")
if(FOLLY_LIB_EXPORTED_DEPS)
list(APPEND _all_deps ${FOLLY_LIB_EXPORTED_DEPS})
endif()
list(JOIN _all_deps "," _deps_str)
set_property(GLOBAL APPEND PROPERTY FOLLY_DEFERRED_DEPS
"${_target_name}|PUBLIC|${_deps_str}"
)
if(FOLLY_LIB_DEPS)
list(JOIN FOLLY_LIB_DEPS "," _deps_str)
set_property(GLOBAL APPEND PROPERTY FOLLY_DEFERRED_DEPS
"${_target_name}|PRIVATE|${_deps_str}"
)
endif()
# Install the SHARED library
install(
TARGETS ${_target_name}
EXPORT folly
LIBRARY DESTINATION ${LIB_INSTALL_DIR}
ARCHIVE DESTINATION ${LIB_INSTALL_DIR}
)
else()
# For static builds: create STATIC library (individual .a file for granular linking)
add_library(${_target_name} STATIC $<TARGET_OBJECTS:${_obj_target}>)
set_property(TARGET ${_target_name} PROPERTY VERSION ${PACKAGE_VERSION})
target_include_directories(${_target_name}
PUBLIC
$<BUILD_INTERFACE:${TOP_DIR}>
$<BUILD_INTERFACE:${CMAKE_BINARY_DIR}>
$<INSTALL_INTERFACE:${INCLUDE_INSTALL_DIR}>
)
# Link external dependencies on STATIC library
# Internal folly deps are deferred (see above)
target_link_libraries(${_target_name}
PUBLIC folly_deps
)
# Link external dependencies (e.g., libsodium, openssl) directly
if(FOLLY_LIB_EXTERNAL_DEPS)
target_link_libraries(${_target_name}
PUBLIC ${FOLLY_LIB_EXTERNAL_DEPS}
)
endif()
# Add external include directories for STATIC target
if(FOLLY_LIB_EXTERNAL_INCLUDE_DIRS)
target_include_directories(${_target_name}
PUBLIC ${FOLLY_LIB_EXTERNAL_INCLUDE_DIRS}
)
endif()
# Defer internal folly dependencies for STATIC library too
if(FOLLY_LIB_EXPORTED_DEPS)
list(JOIN FOLLY_LIB_EXPORTED_DEPS "," _deps_str)
set_property(GLOBAL APPEND PROPERTY FOLLY_DEFERRED_DEPS
"${_target_name}|PUBLIC|${_deps_str}"
)
endif()
if(FOLLY_LIB_DEPS)
list(JOIN FOLLY_LIB_DEPS "," _deps_str)
set_property(GLOBAL APPEND PROPERTY FOLLY_DEFERRED_DEPS
"${_target_name}|PRIVATE|${_deps_str}"
)
endif()
# Install the STATIC library
install(
TARGETS ${_target_name}
EXPORT folly
LIBRARY DESTINATION ${LIB_INSTALL_DIR}
ARCHIVE DESTINATION ${LIB_INSTALL_DIR}
)
endif()
# Create alias for the library
add_library(Folly::${_target_name} ALIAS ${_target_name})
endfunction()
# Resolve all deferred dependencies after all targets have been created
# Call this after all add_subdirectory() calls
function(folly_resolve_deferred_dependencies)
# Allow linking targets defined in other directories
cmake_policy(SET CMP0079 NEW)
get_property(_deferred_deps GLOBAL PROPERTY FOLLY_DEFERRED_DEPS)
foreach(_spec IN LISTS _deferred_deps)
# Parse the spec: "target|visibility|dep1,dep2,..."
string(REPLACE "|" ";" _parts "${_spec}")
list(LENGTH _parts _len)
if(_len LESS 3)
continue()
endif()
list(GET _parts 0 _target)
list(GET _parts 1 _visibility)
list(GET _parts 2 _deps_str)
# Split deps by comma
string(REPLACE "," ";" _deps "${_deps_str}")
# Filter to only existing targets (skip deps that weren't generated)
set(_valid_deps "")
foreach(_dep IN LISTS _deps)
if(TARGET ${_dep})
list(APPEND _valid_deps ${_dep})
endif()
endforeach()
if(_valid_deps)
target_link_libraries(${_target} ${_visibility} ${_valid_deps})
endif()
endforeach()
endfunction()
# Create the monolithic folly library from all component OBJECT libraries
# Call this after all add_subdirectory() calls and folly_resolve_deferred_dependencies()
function(folly_create_monolithic_library)
get_property(_component_targets GLOBAL PROPERTY FOLLY_COMPONENT_TARGETS)
# Collect all object files from component targets
set(_all_objects)
foreach(_target IN LISTS _component_targets)
list(APPEND _all_objects $<TARGET_OBJECTS:${_target}>)
endforeach()
# Create the monolithic library
add_library(folly ${_all_objects})
if(BUILD_SHARED_LIBS)
set_property(TARGET folly PROPERTY POSITION_INDEPENDENT_CODE ON)
endif()
set_property(TARGET folly PROPERTY VERSION ${PACKAGE_VERSION})
apply_folly_compile_options_to_target(folly)
target_compile_features(folly INTERFACE cxx_generic_lambdas)
target_include_directories(folly
PUBLIC
$<BUILD_INTERFACE:${TOP_DIR}>
$<BUILD_INTERFACE:${CMAKE_BINARY_DIR}>
$<INSTALL_INTERFACE:${INCLUDE_INSTALL_DIR}>
)
target_link_libraries(folly PUBLIC folly_deps)
# Link all external dependencies that were tracked from component targets
get_property(_external_deps GLOBAL PROPERTY FOLLY_MONOLITHIC_EXTERNAL_DEPS)
if(_external_deps)
list(REMOVE_DUPLICATES _external_deps)
target_link_libraries(folly PUBLIC ${_external_deps})
endif()
# Create alias for consistency
add_library(Folly::folly ALIAS folly)
# For shared builds: link all granular INTERFACE targets to the monolithic library
if(BUILD_SHARED_LIBS)
# CMP0079: target_link_libraries allows use with targets in other directories
cmake_policy(SET CMP0079 NEW)
get_property(_interface_targets GLOBAL PROPERTY FOLLY_GRANULAR_INTERFACE_TARGETS)
foreach(_target IN LISTS _interface_targets)
target_link_libraries(${_target} INTERFACE folly)
endforeach()
endif()
endfunction()
================================================
FILE: CMake/GenPkgConfig.cmake
================================================
# Copyright (c) Meta Platforms, Inc. and affiliates.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Generate variables that can be used to help emit a pkg-config file
# using configure_file().
#
# Usage: gen_pkgconfig_vars(VAR_PREFIX target)
#
# This will set two variables in the caller scope:
# ${VAR_PREFIX}_CFLAGS: set to the compile flags computed from the specified
# target
# ${VAR_PREFIX}_PRIVATE_LIBS: set to the linker flags needed for static
# linking computed from the specified target
function(gen_pkgconfig_vars)
if (NOT ${ARGC} EQUAL 2)
message(FATAL_ERROR "gen_pkgconfig_vars() requires exactly 2 arguments")
endif()
set(var_prefix "${ARGV0}")
set(target "${ARGV1}")
get_target_property(target_cflags "${target}" INTERFACE_COMPILE_OPTIONS)
if(target_cflags)
list(APPEND cflags "${target_cflags}")
endif()
get_target_property(
target_inc_dirs "${target}" INTERFACE_INCLUDE_DIRECTORIES)
if(target_inc_dirs)
list(APPEND include_dirs "${target_inc_dirs}")
endif()
get_target_property(target_defns "${target}" INTERFACE_COMPILE_DEFINITIONS)
if(target_defns)
list(APPEND definitions "${target_defns}")
endif()
# The INTERFACE_LINK_LIBRARIES list is unfortunately somewhat awkward to
# process. Entries in this list may be any of
# - target names
# - absolute paths to a library file
# - plain library names that need "-l" prepended
# - other linker flags starting with "-"
#
# Walk through each entry and transform it into the desired arguments
get_target_property(link_libs "${target}" INTERFACE_LINK_LIBRARIES)
if(link_libs)
foreach(lib_arg IN LISTS link_libs)
if(TARGET "${lib_arg}")
# Add any compile options specified in the targets
# INTERFACE_COMPILE_OPTIONS. We don't need to process its
# INTERFACE_LINK_LIBRARIES property, since our INTERFACE_LINK_LIBRARIES
# will already include its entries transitively.
get_target_property(lib_cflags "${lib_arg}" INTERFACE_COMPILE_OPTIONS)
if(lib_cflags)
list(APPEND cflags "${lib_cflags}")
endif()
get_target_property(lib_defs "${lib_arg}"
INTERFACE_COMPILE_DEFINITIONS)
if(lib_defs)
list(APPEND definitions "${lib_defs}")
endif()
elseif(lib_arg MATCHES "^[-/]")
list(APPEND private_libs "${lib_arg}")
else()
list(APPEND private_libs "-l${lib_arg}")
endif()
endforeach()
endif()
list(APPEND cflags "${CMAKE_REQUIRED_FLAGS}")
if(definitions)
list(REMOVE_DUPLICATES definitions)
foreach(def_arg IN LISTS definitions)
list(APPEND cflags "-D${def_arg}")
endforeach()
endif()
if(include_dirs)
list(REMOVE_DUPLICATES include_dirs)
foreach(inc_dir IN LISTS include_dirs)
list(APPEND cflags "-I${inc_dir}")
endforeach()
endif()
# Set the output variables
string(REPLACE ";" " " cflags "${cflags}")
string(REPLACE ";" " " private_libs "${private_libs}")
# Since CMake 3.18 FindThreads may include a generator expression requiring
# a target, which gets propagated to us through INTERFACE_COMPILE_OPTIONS.
# Before CMake 3.19 there's no way to solve this in a general way, so we
# work around the specific case. See #1414 and CMake bug #21074.
if(CMAKE_VERSION VERSION_LESS 3.19)
string(REPLACE
"<COMPILE_LANG_AND_ID:CUDA,NVIDIA>" "<COMPILE_LANGUAGE:CUDA>"
cflags "${cflags}"
)
endif()
# patch for fmt's generator expression
if (MSVC)
# fmt 11.0.3 and above
string(REPLACE "$<$<AND:$<COMPILE_LANGUAGE:CXX>,$<CXX_COMPILER_ID:MSVC>>:/utf-8>" "/utf-8" cflags "${cflags}")
# fmt 11.0.2 and below
string(REPLACE "$<$<COMPILE_LANGUAGE:CXX>:/utf-8>" "/utf-8" cflags "${cflags}")
endif()
set("${var_prefix}_CFLAGS" "${cflags}" PARENT_SCOPE)
set("${var_prefix}_PRIVATE_LIBS" "${private_libs}" PARENT_SCOPE)
endfunction()
================================================
FILE: CMake/folly-config.cmake.in
================================================
# CMake configuration file for folly
#
# This provides the Folly::folly target, which you can depend on by adding it
# to your target_link_libraries().
#
# It also defines the following variables, although using these directly is not
# necessary if you use the Folly::folly target instead.
# FOLLY_INCLUDE_DIR
# FOLLY_LIBRARIES
@PACKAGE_INIT@
include(CMakeFindDependencyMacro)
set_and_check(FOLLY_INCLUDE_DIRS "@PACKAGE_INCLUDE_INSTALL_DIR@")
set_and_check(FOLLY_INCLUDE_DIR "@PACKAGE_INCLUDE_INSTALL_DIR@")
set_and_check(FOLLY_CMAKE_DIR "@PACKAGE_CMAKE_INSTALL_DIR@")
# find_dependency() ends up changing PACKAGE_PREFIX_DIR, so save
# folly's prefix directory in the FOLLY_PREFIX_DIR variable
set(FOLLY_PREFIX_DIR "${PACKAGE_PREFIX_DIR}")
# Find glog before loading targets, since targets reference the glog::glog target
if(NOT TARGET glog::glog)
find_package(Glog QUIET)
endif()
# Include the folly-targets.cmake file, which is generated from our CMake rules
if (NOT TARGET Folly::folly)
include("${FOLLY_CMAKE_DIR}/folly-targets.cmake")
endif()
# Set FOLLY_LIBRARIES from our Folly::folly target
set(FOLLY_LIBRARIES Folly::folly)
# Find folly's dependencies
find_dependency(fmt)
set(Boost_USE_STATIC_LIBS "@FOLLY_BOOST_LINK_STATIC@")
find_package(Boost 1.69.0 REQUIRED
COMPONENTS
context
filesystem
program_options
regex
thread
)
if (NOT folly_FIND_QUIETLY)
message(STATUS "Found folly: ${FOLLY_PREFIX_DIR}")
endif()
================================================
FILE: CMake/folly-config.h.cmake
================================================
/*
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#pragma once
#ifdef __APPLE__
#include <TargetConditionals.h> // @manual
#endif
#if !defined(FOLLY_MOBILE)
#if defined(__ANDROID__) || \
(defined(__APPLE__) && \
(TARGET_IPHONE_SIMULATOR || TARGET_OS_SIMULATOR || TARGET_OS_IPHONE))
#define FOLLY_MOBILE 1
#else
#define FOLLY_MOBILE 0
#endif
#endif // FOLLY_MOBILE
#cmakedefine01 FOLLY_HAVE_PTHREAD
#cmakedefine FOLLY_HAVE_PTHREAD_ATFORK 1
#cmakedefine FOLLY_HAVE_LIBGFLAGS 1
#cmakedefine FOLLY_HAVE_LIBGLOG 1
#cmakedefine FOLLY_USE_JEMALLOC 1
#if __has_include(<features.h>)
#include <features.h>
#endif
#cmakedefine FOLLY_HAVE_ACCEPT4 1
#cmakedefine01 FOLLY_HAVE_GETRANDOM
#cmakedefine FOLLY_HAVE_PREADV 1
#cmakedefine FOLLY_HAVE_PWRITEV 1
#cmakedefine01 FOLLY_HAVE_CLOCK_GETTIME
#cmakedefine FOLLY_HAVE_PIPE2 1
#cmakedefine FOLLY_HAVE_IFUNC 1
#cmakedefine FOLLY_HAVE_UNALIGNED_ACCESS 1
#cmakedefine FOLLY_HAVE_VLA 1
#cmakedefine01 FOLLY_HAVE_WEAK_SYMBOLS
#cmakedefine FOLLY_HAVE_LINUX_VDSO 1
#cmakedefine FOLLY_HAVE_MALLOC_USABLE_SIZE 1
#cmakedefine FOLLY_HAVE_INT128_T 1
#cmakedefine FOLLY_HAVE_WCHAR_SUPPORT 1
#cmakedefine FOLLY_HAVE_EXTRANDOM_SFMT19937 1
#cmakedefine HAVE_VSNPRINTF_ERRORS 1
#cmakedefine FOLLY_HAVE_LIBUNWIND 1
#cmakedefine01 FOLLY_HAVE_DWARF
#cmakedefine01 FOLLY_HAVE_ELF
#cmakedefine FOLLY_HAVE_SWAPCONTEXT 1
#cmakedefine FOLLY_HAVE_BACKTRACE 1
#cmakedefine FOLLY_USE_SYMBOLIZER 1
#define FOLLY_DEMANGLE_MAX_SYMBOL_SIZE 1024
#cmakedefine FOLLY_HAVE_SHADOW_LOCAL_WARNINGS 1
#cmakedefine01 FOLLY_HAVE_LIBLZ4
#cmakedefine01 FOLLY_HAVE_LIBLZMA
#cmakedefine01 FOLLY_HAVE_LIBSNAPPY
#cmakedefine01 FOLLY_HAVE_LIBZ
#cmakedefine01 FOLLY_HAVE_LIBZSTD
#cmakedefine01 FOLLY_HAVE_LIBBZ2
#cmakedefine01 FOLLY_LIBRARY_SANITIZE_ADDRESS
#cmakedefine FOLLY_SUPPORT_SHARED_LIBRARY 1
#cmakedefine01 FOLLY_HAVE_LIBRT
#cmakedefine01 FOLLY_HAVE_VSOCK
================================================
FILE: CMake/folly-deps.cmake
================================================
# Copyright (c) Meta Platforms, Inc. and affiliates.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
include(CheckCXXSourceCompiles)
include(CheckCXXSymbolExists)
include(CheckIncludeFileCXX)
include(CheckFunctionExists)
include(CMakePushCheckState)
set(
BOOST_LINK_STATIC "auto"
CACHE STRING
"Whether to link against boost statically or dynamically."
)
if("${BOOST_LINK_STATIC}" STREQUAL "auto")
# Default to linking boost statically on Windows with MSVC
if(MSVC)
set(FOLLY_BOOST_LINK_STATIC ON)
else()
set(FOLLY_BOOST_LINK_STATIC OFF)
endif()
else()
set(FOLLY_BOOST_LINK_STATIC "${BOOST_LINK_STATIC}")
endif()
set(Boost_USE_STATIC_LIBS "${FOLLY_BOOST_LINK_STATIC}")
# Note: We find these components so the CMake targets exist, but we don't
# link them globally. Targets that need specific Boost libraries should
# add them to their EXTERNAL_DEPS (e.g., Boost::regex, Boost::context).
# Boost::thread is needed by Windows pthread compatibility layer.
set(FOLLY_BOOST_COMPONENTS
context
filesystem
program_options
regex
)
if(WIN32)
list(APPEND FOLLY_BOOST_COMPONENTS thread)
endif()
find_package(Boost 1.69.0 REQUIRED
COMPONENTS
${FOLLY_BOOST_COMPONENTS}
)
# Only add include directories globally, not libraries
# Per-target Boost dependencies are specified via EXTERNAL_DEPS
list(APPEND FOLLY_INCLUDE_DIRECTORIES ${Boost_INCLUDE_DIRS})
find_package(DoubleConversion MODULE REQUIRED)
list(APPEND FOLLY_LINK_LIBRARIES ${DOUBLE_CONVERSION_LIBRARY})
list(APPEND FOLLY_INCLUDE_DIRECTORIES ${DOUBLE_CONVERSION_INCLUDE_DIR})
find_package(FastFloat MODULE REQUIRED)
list(APPEND FOLLY_INCLUDE_DIRECTORIES ${FASTFLOAT_INCLUDE_DIR})
find_package(Gflags MODULE)
set(FOLLY_HAVE_LIBGFLAGS ${LIBGFLAGS_FOUND})
if(LIBGFLAGS_FOUND)
list(APPEND FOLLY_LINK_LIBRARIES ${LIBGFLAGS_LIBRARY})
list(APPEND FOLLY_INCLUDE_DIRECTORIES ${LIBGFLAGS_INCLUDE_DIR})
set(FOLLY_LIBGFLAGS_LIBRARY ${LIBGFLAGS_LIBRARY})
set(FOLLY_LIBGFLAGS_INCLUDE ${LIBGFLAGS_INCLUDE_DIR})
endif()
find_package(Glog MODULE)
set(FOLLY_HAVE_LIBGLOG ${GLOG_FOUND})
list(APPEND FOLLY_LINK_LIBRARIES glog::glog)
list(APPEND FOLLY_INCLUDE_DIRECTORIES ${GLOG_INCLUDE_DIR})
# Glog 0.7+ requires GLOG_USE_GLOG_EXPORT to be defined so that headers
# include glog/export.h which defines GLOG_EXPORT.
if (EXISTS "${GLOG_INCLUDE_DIR}/glog/export.h")
list(APPEND FOLLY_CXX_FLAGS -DGLOG_USE_GLOG_EXPORT)
endif()
find_package(LibEvent MODULE REQUIRED)
list(APPEND FOLLY_LINK_LIBRARIES ${LIBEVENT_LIB})
list(APPEND FOLLY_INCLUDE_DIRECTORIES ${LIBEVENT_INCLUDE_DIR})
find_package(ZLIB MODULE)
set(FOLLY_HAVE_LIBZ ${ZLIB_FOUND})
if (ZLIB_FOUND)
list(APPEND FOLLY_INCLUDE_DIRECTORIES ${ZLIB_INCLUDE_DIRS})
list(APPEND FOLLY_LINK_LIBRARIES ${ZLIB_LIBRARIES})
list(APPEND CMAKE_REQUIRED_LIBRARIES ${ZLIB_LIBRARIES})
endif()
find_package(OpenSSL 1.1.1 MODULE REQUIRED)
list(APPEND FOLLY_LINK_LIBRARIES ${OPENSSL_LIBRARIES})
list(APPEND FOLLY_INCLUDE_DIRECTORIES ${OPENSSL_INCLUDE_DIR})
list(APPEND CMAKE_REQUIRED_LIBRARIES ${OPENSSL_LIBRARIES})
list(APPEND CMAKE_REQUIRED_INCLUDES ${OPENSSL_INCLUDE_DIR})
list(REMOVE_ITEM CMAKE_REQUIRED_LIBRARIES ${OPENSSL_LIBRARIES})
list(REMOVE_ITEM CMAKE_REQUIRED_INCLUDES ${OPENSSL_INCLUDE_DIR})
if (ZLIB_FOUND)
list(REMOVE_ITEM CMAKE_REQUIRED_LIBRARIES ${ZLIB_LIBRARIES})
endif()
find_package(BZip2 MODULE)
set(FOLLY_HAVE_LIBBZ2 ${BZIP2_FOUND})
if (BZIP2_FOUND)
list(APPEND FOLLY_INCLUDE_DIRECTORIES ${BZIP2_INCLUDE_DIRS})
list(APPEND FOLLY_LINK_LIBRARIES ${BZIP2_LIBRARIES})
endif()
find_package(LibLZMA MODULE)
set(FOLLY_HAVE_LIBLZMA ${LIBLZMA_FOUND})
if (LIBLZMA_FOUND)
list(APPEND FOLLY_INCLUDE_DIRECTORIES ${LIBLZMA_INCLUDE_DIRS})
list(APPEND FOLLY_LINK_LIBRARIES ${LIBLZMA_LIBRARIES})
endif()
find_package(LZ4 MODULE)
set(FOLLY_HAVE_LIBLZ4 ${LZ4_FOUND})
if (LZ4_FOUND)
list(APPEND FOLLY_INCLUDE_DIRECTORIES ${LZ4_INCLUDE_DIR})
list(APPEND FOLLY_LINK_LIBRARIES ${LZ4_LIBRARY})
endif()
find_package(Zstd MODULE)
set(FOLLY_HAVE_LIBZSTD ${ZSTD_FOUND})
if(ZSTD_FOUND)
list(APPEND FOLLY_INCLUDE_DIRECTORIES ${ZSTD_INCLUDE_DIR})
list(APPEND FOLLY_LINK_LIBRARIES ${ZSTD_LIBRARY})
endif()
find_package(Snappy MODULE)
set(FOLLY_HAVE_LIBSNAPPY ${SNAPPY_FOUND})
if (SNAPPY_FOUND)
list(APPEND FOLLY_INCLUDE_DIRECTORIES ${SNAPPY_INCLUDE_DIR})
list(APPEND FOLLY_LINK_LIBRARIES ${SNAPPY_LIBRARY})
endif()
find_package(LibDwarf)
list(APPEND FOLLY_LINK_LIBRARIES ${LIBDWARF_LIBRARIES})
list(APPEND FOLLY_INCLUDE_DIRECTORIES ${LIBDWARF_INCLUDE_DIRS})
find_package(Libiberty)
list(APPEND FOLLY_LINK_LIBRARIES ${LIBIBERTY_LIBRARIES})
list(APPEND FOLLY_INCLUDE_DIRECTORIES ${LIBIBERTY_INCLUDE_DIRS})
find_package(LibAIO)
list(APPEND FOLLY_LINK_LIBRARIES ${LIBAIO_LIBRARIES})
list(APPEND FOLLY_INCLUDE_DIRECTORIES ${LIBAIO_INCLUDE_DIRS})
find_package(LibUring)
list(APPEND FOLLY_LINK_LIBRARIES ${LIBURING_LIBRARIES})
list(APPEND FOLLY_INCLUDE_DIRECTORIES ${LIBURING_INCLUDE_DIRS})
find_package(Libsodium)
list(APPEND FOLLY_LINK_LIBRARIES ${LIBSODIUM_LIBRARIES})
list(APPEND FOLLY_INCLUDE_DIRECTORIES ${LIBSODIUM_INCLUDE_DIRS})
list(APPEND FOLLY_LINK_LIBRARIES ${CMAKE_DL_LIBS})
list(APPEND CMAKE_REQUIRED_LIBRARIES ${CMAKE_DL_LIBS})
if (PYTHON_EXTENSIONS)
find_package(Python3 COMPONENTS Interpreter Development REQUIRED)
find_package(Cython 0.26 REQUIRED)
endif ()
find_package(LibUnwind)
list(APPEND FOLLY_LINK_LIBRARIES ${LIBUNWIND_LIBRARIES})
list(APPEND FOLLY_INCLUDE_DIRECTORIES ${LIBUNWIND_INCLUDE_DIRS})
if (LIBUNWIND_FOUND)
set(FOLLY_HAVE_LIBUNWIND ON)
endif()
if (CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
list(APPEND FOLLY_LINK_LIBRARIES "execinfo")
endif ()
cmake_push_check_state()
set(CMAKE_REQUIRED_DEFINITIONS -D_XOPEN_SOURCE)
check_cxx_symbol_exists(swapcontext ucontext.h FOLLY_HAVE_SWAPCONTEXT)
cmake_pop_check_state()
set(FOLLY_USE_SYMBOLIZER OFF)
CHECK_INCLUDE_FILE_CXX(elf.h FOLLY_HAVE_ELF)
find_package(Backtrace)
set(FOLLY_HAVE_BACKTRACE ${Backtrace_FOUND})
set(FOLLY_HAVE_DWARF ${LIBDWARF_FOUND})
if (NOT WIN32 AND NOT APPLE)
set(FOLLY_USE_SYMBOLIZER ON)
endif()
message(STATUS "Setting FOLLY_USE_SYMBOLIZER: ${FOLLY_USE_SYMBOLIZER}")
message(STATUS "Setting FOLLY_HAVE_ELF: ${FOLLY_HAVE_ELF}")
message(STATUS "Setting FOLLY_HAVE_DWARF: ${FOLLY_HAVE_DWARF}")
# Using clang with libstdc++ requires explicitly linking against libatomic
check_cxx_source_compiles("
#include <atomic>
int main(int argc, char** argv) {
std::atomic<uint8_t> a1;
std::atomic<uint16_t> a2;
std::atomic<uint32_t> a4;
std::atomic<uint64_t> a8;
struct Test { bool val; };
std::atomic<Test> s;
return a1++ + a2++ + a4++ + a8++ + unsigned(s.is_lock_free());
}"
FOLLY_CPP_ATOMIC_BUILTIN
)
if(NOT FOLLY_CPP_ATOMIC_BUILTIN)
list(APPEND CMAKE_REQUIRED_LIBRARIES atomic)
list(APPEND FOLLY_LINK_LIBRARIES atomic)
set(ATOMIC_LIBRARY "atomic")
check_cxx_source_compiles("
#include <atomic>
int main(int argc, char** argv) {
std::atomic<uint8_t> a1;
std::atomic<uint16_t> a2;
std::atomic<uint32_t> a4;
std::atomic<uint64_t> a8;
struct Test { bool val; };
std::atomic<Test> s;
return a1++ + a2++ + a4++ + a8++ + unsigned(s.is_lock_free());
}"
FOLLY_CPP_ATOMIC_WITH_LIBATOMIC
)
if (NOT FOLLY_CPP_ATOMIC_WITH_LIBATOMIC)
message(
FATAL_ERROR "unable to link C++ std::atomic code: you may need \
to install GNU libatomic"
)
endif()
endif()
check_cxx_source_compiles("
#include <type_traits>
#if _GLIBCXX_RELEASE
int main() {}
#endif"
FOLLY_STDLIB_LIBSTDCXX
)
check_cxx_source_compiles("
#include <type_traits>
#if _GLIBCXX_RELEASE >= 9
int main() {}
#endif"
FOLLY_STDLIB_LIBSTDCXX_GE_9
)
check_cxx_source_compiles("
#include <type_traits>
#if _LIBCPP_VERSION
int main() {}
#endif"
FOLLY_STDLIB_LIBCXX
)
check_cxx_source_compiles("
#include <type_traits>
#if _LIBCPP_VERSION >= 9000
int main() {}
#endif"
FOLLY_STDLIB_LIBCXX_GE_9
)
check_cxx_source_compiles("
#include <type_traits>
#if _CPPLIB_VER
int main() {}
#endif"
FOLLY_STDLIB_LIBCPP
)
if (APPLE)
list (APPEND CMAKE_REQUIRED_LIBRARIES c++abi)
list (APPEND FOLLY_LINK_LIBRARIES c++abi)
endif ()
if (FOLLY_STDLIB_LIBSTDCXX AND NOT FOLLY_STDLIB_LIBSTDCXX_GE_9)
list (APPEND CMAKE_REQUIRED_LIBRARIES stdc++fs)
list (APPEND FOLLY_LINK_LIBRARIES stdc++fs)
endif()
if (FOLLY_STDLIB_LIBCXX AND NOT FOLLY_STDLIB_LIBCXX_GE_9)
list (APPEND CMAKE_REQUIRED_LIBRARIES c++fs)
list (APPEND FOLLY_LINK_LIBRARIES c++fs)
endif ()
option(
FOLLY_LIBRARY_SANITIZE_ADDRESS
"Build folly with Address Sanitizer enabled."
OFF
)
if ($ENV{WITH_ASAN})
message(STATUS "ENV WITH_ASAN is set")
set (FOLLY_LIBRARY_SANITIZE_ADDRESS ON)
endif()
if (FOLLY_LIBRARY_SANITIZE_ADDRESS)
if ("${CMAKE_CXX_COMPILER_ID}" MATCHES GNU)
set(FOLLY_LIBRARY_SANITIZE_ADDRESS ON)
set(FOLLY_ASAN_FLAGS -fsanitize=address,undefined)
list(APPEND FOLLY_CXX_FLAGS ${FOLLY_ASAN_FLAGS})
# All of the functions in folly/detail/Sse.cpp are intended to be compiled
# with ASAN disabled. They are marked with attributes to disable the
# sanitizer, but even so, gcc fails to compile them for some reason when
# sanitization is enabled on the compile line.
set_source_files_properties(
"${PROJECT_SOURCE_DIR}/folly/detail/Sse.cpp"
PROPERTIES COMPILE_FLAGS -fno-sanitize=address,undefined
)
elseif ("${CMAKE_CXX_COMPILER_ID}" MATCHES Clang)
set(FOLLY_LIBRARY_SANITIZE_ADDRESS ON)
set(
FOLLY_ASAN_FLAGS
-fno-common
-fsanitize=address,undefined,integer,nullability
-fno-sanitize=unsigned-integer-overflow
)
list(APPEND FOLLY_CXX_FLAGS ${FOLLY_ASAN_FLAGS})
endif()
endif()
add_library(folly_deps INTERFACE)
find_package(fmt CONFIG)
if (NOT DEFINED fmt_CONFIG)
# Fallback on a normal search on the current system
find_package(Fmt MODULE REQUIRED)
endif()
target_link_libraries(folly_deps INTERFACE fmt::fmt)
list(REMOVE_DUPLICATES FOLLY_INCLUDE_DIRECTORIES)
if(NOT "${CMAKE_SOURCE_DIR}" STREQUAL "${PROJECT_SOURCE_DIR}")
# When consumed via add_subdirectory/FetchContent, wrap each include
# directory in BUILD_INTERFACE so absolute build-tree paths don't leak
# into the parent project's install-time INTERFACE_INCLUDE_DIRECTORIES.
foreach(_dir IN LISTS FOLLY_INCLUDE_DIRECTORIES)
target_include_directories(folly_deps INTERFACE $<BUILD_INTERFACE:${_dir}>)
endforeach()
else()
target_include_directories(folly_deps INTERFACE ${FOLLY_INCLUDE_DIRECTORIES})
endif()
target_link_libraries(folly_deps INTERFACE
${FOLLY_LINK_LIBRARIES}
${FOLLY_SHINY_DEPENDENCIES}
${FOLLY_ASAN_FLAGS}
)
================================================
FILE: CMake/libfolly.pc.in
================================================
prefix=@CMAKE_INSTALL_PREFIX@
exec_prefix=@CMAKE_INSTALL_PREFIX@
libdir=${exec_prefix}/@LIB_INSTALL_DIR@
includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@
Name: libfolly
Description: Facebook (Folly) C++ library
Version: @PACKAGE_VERSION@
Cflags: -I${includedir} @FOLLY_PKGCONFIG_CFLAGS@
Libs: -L${libdir} -lfolly
Libs.private: @FOLLY_PKGCONFIG_PRIVATE_LIBS@
================================================
FILE: CMakeLists.txt
================================================
# Copyright (c) Meta Platforms, Inc. and affiliates.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the Lice
gitextract_rc_779ue/
├── .buckconfig
├── .buckconfig.d/
│ └── common.buckconfig
├── .buckroot
├── .devcontainer/
│ ├── Containerfile
│ └── devcontainer.json
├── .github/
│ ├── dependabot.yml
│ ├── scripts/
│ │ ├── bad_targets
│ │ └── buck_build_and_test.sh
│ └── workflows/
│ ├── TagIt.yml
│ ├── devcontainer.yml
│ ├── getdeps_linux.yml
│ ├── getdeps_mac.yml
│ ├── getdeps_shared-libs_linux.yml
│ ├── getdeps_windows.yml
│ └── oss-build-and-test.yml
├── .gitignore
├── .projectid
├── BUCK
├── CMake/
│ ├── FindCython.cmake
│ ├── FindFastFloat.cmake
│ ├── FindFmt.cmake
│ ├── FindLZ4.cmake
│ ├── FindLibAIO.cmake
│ ├── FindLibDwarf.cmake
│ ├── FindLibUring.cmake
│ ├── FindLibiberty.cmake
│ ├── FindLibsodium.cmake
│ ├── FindSnappy.cmake
│ ├── FindZstd.cmake
│ ├── FollyCompilerMSVC.cmake
│ ├── FollyCompilerUnix.cmake
│ ├── FollyConfigChecks.cmake
│ ├── FollyFunctions.cmake
│ ├── GenPkgConfig.cmake
│ ├── folly-config.cmake.in
│ ├── folly-config.h.cmake
│ ├── folly-deps.cmake
│ └── libfolly.pc.in
├── CMakeLists.txt
├── CMakeListsForBuck2.txt
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── LICENSE
├── PACKAGE
├── README.md
├── buck2
├── build/
│ ├── buck2/
│ │ ├── README.md
│ │ └── install_deps/
│ │ ├── BUCK
│ │ ├── install_deps.sh
│ │ └── repos/
│ │ ├── fedora
│ │ ├── homebrew
│ │ └── ubuntu
│ └── fbcode_builder/
│ ├── .gitignore
│ ├── CMake/
│ │ ├── FBBuildOptions.cmake
│ │ ├── FBCMakeParseArgs.cmake
│ │ ├── FBCompilerSettings.cmake
│ │ ├── FBCompilerSettingsMSVC.cmake
│ │ ├── FBCompilerSettingsUnix.cmake
│ │ ├── FBPythonBinary.cmake
│ │ ├── FBPythonTestAddTests.cmake
│ │ ├── FBThriftCppLibrary.cmake
│ │ ├── FBThriftLibrary.cmake
│ │ ├── FBThriftPyLibrary.cmake
│ │ ├── FindCares.cmake
│ │ ├── FindDoubleConversion.cmake
│ │ ├── FindGMock.cmake
│ │ ├── FindGflags.cmake
│ │ ├── FindGlog.cmake
│ │ ├── FindLMDB.cmake
│ │ ├── FindLibEvent.cmake
│ │ ├── FindLibUnwind.cmake
│ │ ├── FindLibiberty.cmake
│ │ ├── FindPCRE.cmake
│ │ ├── FindPCRE2.cmake
│ │ ├── FindRe2.cmake
│ │ ├── FindSodium.cmake
│ │ ├── FindXxhash.cmake
│ │ ├── FindZstd.cmake
│ │ ├── Findibverbs.cmake
│ │ ├── RustStaticLibrary.cmake
│ │ ├── fb_py_test_main.py
│ │ ├── fb_py_win_main.c
│ │ └── make_fbpy_archive.py
│ ├── LICENSE
│ ├── README.md
│ ├── getdeps/
│ │ ├── __init__.py
│ │ ├── builder.py
│ │ ├── buildopts.py
│ │ ├── cache.py
│ │ ├── cargo.py
│ │ ├── copytree.py
│ │ ├── dyndeps.py
│ │ ├── envfuncs.py
│ │ ├── errors.py
│ │ ├── expr.py
│ │ ├── fetcher.py
│ │ ├── include_rewriter.py
│ │ ├── load.py
│ │ ├── manifest.py
│ │ ├── platform.py
│ │ ├── py_wheel_builder.py
│ │ ├── runcmd.py
│ │ ├── subcmd.py
│ │ └── test/
│ │ ├── expr_test.py
│ │ ├── fixtures/
│ │ │ └── duplicate/
│ │ │ ├── foo
│ │ │ └── subdir/
│ │ │ └── foo
│ │ ├── manifest_test.py
│ │ ├── platform_test.py
│ │ ├── retry_test.py
│ │ ├── scratch_test.py
│ │ └── strip_marker_test.py
│ ├── getdeps.py
│ ├── manifests/
│ │ ├── CLI11
│ │ ├── autoconf
│ │ ├── automake
│ │ ├── benchmark
│ │ ├── blake3
│ │ ├── boost
│ │ ├── boost-python
│ │ ├── bz2
│ │ ├── c-ares
│ │ ├── cabal
│ │ ├── cachelib
│ │ ├── cinderx-3_14
│ │ ├── cinderx-main
│ │ ├── clang
│ │ ├── clang19
│ │ ├── cmake
│ │ ├── cpptoml
│ │ ├── double-conversion
│ │ ├── double-conversion-python
│ │ ├── eden
│ │ ├── edencommon
│ │ ├── exprtk
│ │ ├── fast_float
│ │ ├── fatal
│ │ ├── fb303
│ │ ├── fboss
│ │ ├── fbthrift
│ │ ├── fbthrift-python
│ │ ├── fizz
│ │ ├── fizz-python
│ │ ├── fmt
│ │ ├── fmt-python
│ │ ├── folly
│ │ ├── folly-python
│ │ ├── gcc12
│ │ ├── gcc14
│ │ ├── gflags
│ │ ├── ghc
│ │ ├── git-lfs
│ │ ├── glean
│ │ ├── glog
│ │ ├── googletest
│ │ ├── gperf
│ │ ├── hexdump
│ │ ├── hsthrift
│ │ ├── iproute2
│ │ ├── jom
│ │ ├── jq
│ │ ├── katran
│ │ ├── libaio
│ │ ├── libaio-python
│ │ ├── libbpf
│ │ ├── libcurl
│ │ ├── libdwarf
│ │ ├── libdwarf-python
│ │ ├── libelf
│ │ ├── libevent
│ │ ├── libevent-python
│ │ ├── libffi
│ │ ├── libgit2
│ │ ├── libgpiod
│ │ ├── libiberty
│ │ ├── libiberty-python
│ │ ├── libibverbs
│ │ ├── libmnl
│ │ ├── libnl
│ │ ├── liboqs
│ │ ├── libsai
│ │ ├── libsodium
│ │ ├── libunwind
│ │ ├── libusb
│ │ ├── libyaml
│ │ ├── llvm
│ │ ├── lmdb
│ │ ├── lz4
│ │ ├── lz4-python
│ │ ├── magic_enum
│ │ ├── mcrouter
│ │ ├── mononoke
│ │ ├── mononoke_integration
│ │ ├── moxygen
│ │ ├── mvfst
│ │ ├── mvfst-python
│ │ ├── ncurses
│ │ ├── nghttp2
│ │ ├── ninja
│ │ ├── nlohmann-json
│ │ ├── nmap
│ │ ├── numa
│ │ ├── openr
│ │ ├── openssl
│ │ ├── osxfuse
│ │ ├── patchelf
│ │ ├── pcre2
│ │ ├── perl
│ │ ├── pexpect
│ │ ├── proxygen
│ │ ├── python
│ │ ├── python-3_14
│ │ ├── python-click
│ │ ├── python-filelock
│ │ ├── python-main
│ │ ├── python-psutil
│ │ ├── python-ptyprocess
│ │ ├── python-pyyaml
│ │ ├── python-setuptools
│ │ ├── python-setuptools-69
│ │ ├── python-six
│ │ ├── python-toml
│ │ ├── ragel
│ │ ├── range-v3
│ │ ├── rdma-core
│ │ ├── re2
│ │ ├── rebalancer
│ │ ├── ripgrep
│ │ ├── rocksdb
│ │ ├── rust-shed
│ │ ├── sapling
│ │ ├── snappy
│ │ ├── sparsemap
│ │ ├── sqlite3
│ │ ├── systemd
│ │ ├── tabulate
│ │ ├── tree
│ │ ├── wangle
│ │ ├── wangle-python
│ │ ├── watchman
│ │ ├── xxhash
│ │ ├── xz
│ │ ├── yaml-cpp
│ │ ├── zlib
│ │ ├── zlib-python
│ │ ├── zstd
│ │ └── zstd-python
│ └── patches/
│ ├── boost_1_83_0.patch
│ ├── iproute2_oss.patch
│ ├── libiberty_install_pic_lib.patch
│ └── zlib_dont_build_more_than_needed.patch
├── build.bat
├── build.sh
└── folly/
├── .clang-format
├── AtomicHashArray-inl.h
├── AtomicHashArray.h
├── AtomicHashMap-inl.h
├── AtomicHashMap.h
├── AtomicIntrusiveLinkedList.h
├── AtomicLinkedList.h
├── AtomicUnorderedMap.h
├── BUCK
├── BUILD_MODE.bzl
├── Benchmark.cpp
├── Benchmark.h
├── BenchmarkUtil.cpp
├── BenchmarkUtil.h
├── Bits.h
├── CMakeLists.txt
├── CODING_GUIDELINES.md
├── CPortability.h
├── CancellationToken-inl.h
├── CancellationToken.cpp
├── CancellationToken.h
├── Chrono.h
├── ClockGettimeWrappers.cpp
├── ClockGettimeWrappers.h
├── ConcurrentBitSet.h
├── ConcurrentLazy.h
├── ConcurrentSkipList-inl.h
├── ConcurrentSkipList.h
├── ConstexprMath.h
├── ConstructorCallbackList.h
├── Conv.cpp
├── Conv.h
├── CppAttributes.h
├── CpuId.h
├── DefaultKeepAliveExecutor.h
├── Demangle.cpp
├── Demangle.h
├── DiscriminatedPtr.h
├── DynamicConverter.h
├── Exception.h
├── ExceptionString.cpp
├── ExceptionString.h
├── ExceptionWrapper-inl.h
├── ExceptionWrapper.cpp
├── ExceptionWrapper.h
├── Executor.cpp
├── Executor.h
├── Expected.h
├── FBString.h
├── FBVector.h
├── File.cpp
├── File.h
├── FileUtil.cpp
├── FileUtil.h
├── Fingerprint.cpp
├── Fingerprint.h
├── FixedString.h
├── FmtUtility.cpp
├── FmtUtility.h
├── FollyMemcpy.cpp
├── FollyMemcpy.h
├── FollyMemset.cpp
├── FollyMemset.h
├── Format-inl.h
├── Format.cpp
├── Format.h
├── FormatArg.h
├── FormatTraits.h
├── Function.h
├── GLog.h
├── GroupVarint.cpp
├── GroupVarint.h
├── Hash.h
├── IPAddress.cpp
├── IPAddress.h
├── IPAddressException.h
├── IPAddressV4.cpp
├── IPAddressV4.h
├── IPAddressV6.cpp
├── IPAddressV6.h
├── Indestructible.h
├── IndexedMemPool.h
├── IntrusiveList.h
├── Lazy.h
├── Likely.h
├── MPMCPipeline.h
├── MPMCQueue.h
├── MacAddress.cpp
├── MacAddress.h
├── MapUtil.h
├── Math.h
├── MaybeManagedPtr.h
├── Memory.h
├── MicroLock.cpp
├── MicroLock.h
├── MicroSpinLock.h
├── MoveWrapper.h
├── ObserverContainer.h
├── OperationCancelled.h
├── Optional.h
├── Overload.h
├── PackedSyncPtr.h
├── Padded.h
├── Poly-inl.h
├── Poly.h
├── PolyException.h
├── Portability.h
├── Preprocessor.h
├── ProducerConsumerQueue.h
├── RWSpinLock.h
├── Random-inl.h
├── Random.cpp
├── Random.h
├── Range.h
├── Replaceable.h
├── ScopeGuard.cpp
├── ScopeGuard.h
├── SharedMutex.cpp
├── SharedMutex.h
├── Singleton-inl.h
├── Singleton.cpp
├── Singleton.h
├── SingletonThreadLocal.cpp
├── SingletonThreadLocal.h
├── SocketAddress.cpp
├── SocketAddress.h
├── SpinLock.h
├── String-inl.h
├── String.cpp
├── String.h
├── Subprocess.cpp
├── Subprocess.h
├── Synchronized.h
├── SynchronizedPtr.h
├── ThreadCachedInt.h
├── ThreadLocal.h
├── TimeoutQueue.cpp
├── TimeoutQueue.h
├── TokenBucket.h
├── Traits.h
├── Try-inl.h
├── Try.cpp
├── Try.h
├── UTF8String.h
├── Unicode.cpp
├── Unicode.h
├── Unit.h
├── Uri-inl.h
├── Uri.cpp
├── Uri.h
├── Utility.h
├── VERSION
├── Varint.h
├── VirtualExecutor.h
├── algorithm/
│ ├── BUCK
│ ├── BinaryHeap.h
│ ├── CMakeLists.txt
│ ├── StableRadixSort.h
│ ├── simd/
│ │ ├── BUCK
│ │ ├── CMakeLists.txt
│ │ ├── Contains.cpp
│ │ ├── Contains.h
│ │ ├── FindFixed.h
│ │ ├── Ignore.h
│ │ ├── Movemask.h
│ │ ├── detail/
│ │ │ ├── BUCK
│ │ │ ├── CMakeLists.txt
│ │ │ ├── ContainsImpl.h
│ │ │ ├── SimdAnyOf.h
│ │ │ ├── SimdForEach.h
│ │ │ ├── SimdPlatform.h
│ │ │ ├── Traits.h
│ │ │ ├── UnrollUtils.h
│ │ │ └── test/
│ │ │ ├── BUCK
│ │ │ ├── SimdAnyOfTest.cpp
│ │ │ ├── SimdForEachTest.cpp
│ │ │ ├── TraitsTest.cpp
│ │ │ └── UnrollUtilsTest.cpp
│ │ ├── find_first_of.h
│ │ ├── find_first_of_extra.h
│ │ └── test/
│ │ ├── BUCK
│ │ ├── ContainsTest.cpp
│ │ ├── FindFixedBenchmark.cpp
│ │ ├── FindFixedTest.cpp
│ │ ├── MovemaskTest.cpp
│ │ ├── find_first_of_bench.cpp
│ │ └── find_first_of_test.cpp
│ └── test/
│ ├── BUCK
│ ├── BinaryHeapTest.cpp
│ ├── StableRadixSortBenchmark.cpp
│ └── StableRadixSortTest.cpp
├── base64.h
├── buck_config/
│ ├── BUCK
│ └── constraints/
│ └── BUCK
├── build/
│ ├── bootstrap-osx-homebrew.sh
│ └── build-debs-ubuntu-18.04.sh
├── channels/
│ ├── BUCK
│ ├── CMakeLists.txt
│ ├── Channel-fwd.h
│ ├── Channel-inl.h
│ ├── Channel.h
│ ├── ChannelCallbackHandle.h
│ ├── ChannelProcessor-inl.h
│ ├── ChannelProcessor.h
│ ├── ConsumeChannel-inl.h
│ ├── ConsumeChannel.h
│ ├── FanoutChannel-inl.h
│ ├── FanoutChannel.h
│ ├── FanoutSender-inl.h
│ ├── FanoutSender.h
│ ├── MaxConcurrentRateLimiter.cpp
│ ├── MaxConcurrentRateLimiter.h
│ ├── Merge-inl.h
│ ├── Merge.h
│ ├── MergeChannel-inl.h
│ ├── MergeChannel.h
│ ├── MultiplexChannel-inl.h
│ ├── MultiplexChannel.h
│ ├── OnClosedException.h
│ ├── Producer-inl.h
│ ├── Producer.h
│ ├── ProxyChannel-inl.h
│ ├── ProxyChannel.h
│ ├── RateLimiter.h
│ ├── Transform-inl.h
│ ├── Transform.h
│ ├── detail/
│ │ ├── AtomicQueue.h
│ │ ├── BUCK
│ │ ├── CMakeLists.txt
│ │ ├── ChannelBridge.h
│ │ ├── IntrusivePtr.h
│ │ ├── MultiplexerTraits.h
│ │ ├── PointerVariant.h
│ │ ├── Utility.h
│ │ └── test/
│ │ ├── AtomicQueueTest.cpp
│ │ ├── BUCK
│ │ └── PointerVariantTest.cpp
│ └── test/
│ ├── BUCK
│ ├── ChannelProcessorTest.cpp
│ ├── ChannelTest.cpp
│ ├── ChannelTestUtil.h
│ ├── FanoutChannelTest.cpp
│ ├── FanoutSenderTest.cpp
│ ├── MaxConcurrentRateLimiterTest.cpp
│ ├── MergeChannelTest.cpp
│ ├── MergeTest.cpp
│ ├── MultiplexChannelTest.cpp
│ ├── ProducerTest.cpp
│ ├── ProxyChannelTest.cpp
│ └── TransformTest.cpp
├── chrono/
│ ├── BUCK
│ ├── CMakeLists.txt
│ ├── Clock.h
│ ├── Conv.h
│ ├── Hardware.h
│ └── test/
│ ├── BUCK
│ ├── ClockTest.cpp
│ └── ConvTest.cpp
├── cli/
│ ├── Args.cpp
│ ├── Args.h
│ ├── BUCK
│ ├── CMakeLists.txt
│ ├── NestedCommandLineApp.cpp
│ ├── NestedCommandLineApp.h
│ ├── ProgramOptions.cpp
│ ├── ProgramOptions.h
│ └── test/
│ ├── ArgsTest.cpp
│ ├── BUCK
│ ├── NestedCommandLineAppExample.cpp
│ ├── NestedCommandLineAppTest.cpp
│ ├── NestedCommandLineAppTestHelper.cpp
│ ├── ProgramOptionsTest.cpp
│ └── ProgramOptionsTestHelper.cpp
├── codec/
│ ├── BUCK
│ ├── CMakeLists.txt
│ ├── Uuid.h
│ ├── hex.h
│ └── test/
│ ├── BUCK
│ ├── UuidBenchmark.cpp
│ ├── UuidTest.cpp
│ └── hex_test.cpp
├── compression/
│ ├── BUCK
│ ├── CMakeLists.txt
│ ├── Compression.cpp
│ ├── Compression.h
│ ├── CompressionContextPool.h
│ ├── CompressionContextPoolSingletons.cpp
│ ├── CompressionContextPoolSingletons.h
│ ├── CompressionCoreLocalContextPool.h
│ ├── Instructions.h
│ ├── QuotientMultiSet-inl.h
│ ├── QuotientMultiSet.cpp
│ ├── QuotientMultiSet.h
│ ├── Select64.cpp
│ ├── Select64.h
│ ├── Utils.h
│ ├── Zlib.cpp
│ ├── Zlib.h
│ ├── Zstd.cpp
│ ├── Zstd.h
│ ├── elias_fano/
│ │ ├── BUCK
│ │ ├── BitVectorCoding.h
│ │ ├── CMakeLists.txt
│ │ ├── CodingDetail.h
│ │ ├── EliasFanoCoding.h
│ │ └── test/
│ │ ├── BUCK
│ │ ├── BitVectorCodingTest.cpp
│ │ └── EliasFanoCodingTest.cpp
│ └── test/
│ ├── BUCK
│ ├── CodingTestUtils.cpp
│ ├── CodingTestUtils.h
│ ├── CompressionContextPoolBenchmark.cpp
│ ├── CompressionContextPoolTest.cpp
│ ├── CompressionTest.cpp
│ ├── InstructionsTest.cpp
│ ├── LargeTest.cpp
│ ├── QuotientMultiSetBenchmark.cpp
│ ├── QuotientMultiSetTest.cpp
│ └── Select64Test.cpp
├── concurrency/
│ ├── AtomicSharedPtr.h
│ ├── BUCK
│ ├── CMakeLists.txt
│ ├── CacheLocality.cpp
│ ├── CacheLocality.h
│ ├── ConcurrentHashMap.h
│ ├── CoreCachedSharedPtr.h
│ ├── DeadlockDetector.cpp
│ ├── DeadlockDetector.h
│ ├── DynamicBoundedQueue.h
│ ├── PriorityUnboundedQueueSet.h
│ ├── ProcessLocalUniqueId.cpp
│ ├── ProcessLocalUniqueId.h
│ ├── SingletonRelaxedCounter.h
│ ├── ThreadCachedSynchronized.h
│ ├── UnboundedQueue.h
│ ├── container/
│ │ ├── BUCK
│ │ ├── CMakeLists.txt
│ │ ├── FlatCombiningPriorityQueue.h
│ │ ├── LockFreeRingBuffer.h
│ │ ├── RelaxedConcurrentPriorityQueue.h
│ │ ├── SingleWriterFixedHashMap.h
│ │ ├── atomic_grow_array.h
│ │ └── test/
│ │ ├── BUCK
│ │ ├── FlatCombiningPriorityQueueTest.cpp
│ │ ├── LockFreeRingBufferTest.cpp
│ │ ├── RelaxedConcurrentPriorityQueueTest.cpp
│ │ ├── SingleWriterFixedHashMapTest.cpp
│ │ └── atomic_grow_array_test.cpp
│ ├── detail/
│ │ ├── AtomicSharedPtr-detail.h
│ │ └── ConcurrentHashMap-detail.h
│ ├── memory/
│ │ ├── AtomicReadMostlyMainPtr.cpp
│ │ ├── AtomicReadMostlyMainPtr.h
│ │ ├── BUCK
│ │ ├── CMakeLists.txt
│ │ ├── PrimaryPtr.h
│ │ ├── ReadMostlySharedPtr.h
│ │ ├── TLRefCount.h
│ │ └── test/
│ │ ├── AtomicReadMostlyMainPtrBenchmark.cpp
│ │ ├── AtomicReadMostlyMainPtrTest.cpp
│ │ ├── BUCK
│ │ ├── PrimaryPtrTest.cpp
│ │ ├── ReadMostlySharedPtrBenchmark.cpp
│ │ ├── ReadMostlySharedPtrStressTest.cpp
│ │ ├── ReadMostlySharedPtrTest.cpp
│ │ ├── RefCountBenchmark.cpp
│ │ └── RefCountTest.cpp
│ └── test/
│ ├── AtomicSharedPtrCounted.h
│ ├── AtomicSharedPtrPerformance.cpp
│ ├── AtomicSharedPtrTest.cpp
│ ├── BUCK
│ ├── CacheLocalityBenchmark.cpp
│ ├── CacheLocalityInitMain.cpp
│ ├── CacheLocalityTest.cpp
│ ├── ConcurrentHashMapBench.cpp
│ ├── ConcurrentHashMapStressTest.cpp
│ ├── ConcurrentHashMapTest.cpp
│ ├── CoreCachedSharedPtrTest.cpp
│ ├── DynamicBoundedQueueTest.cpp
│ ├── PriorityUnboundedQueueSetTest.cpp
│ ├── ProcessLocalUniqueIdTest.cpp
│ ├── SingletonRelaxedCounterBench.cpp
│ ├── SingletonRelaxedCounterTest.cpp
│ ├── ThreadCachedSynchronizedBench.cpp
│ ├── ThreadCachedSynchronizedTest.cpp
│ └── UnboundedQueueTest.cpp
├── container/
│ ├── Access.h
│ ├── Array.h
│ ├── BUCK
│ ├── BitIterator.h
│ ├── CMakeLists.txt
│ ├── CollectionUtil.h
│ ├── Enumerate.h
│ ├── EvictingCacheMap.h
│ ├── F14.md
│ ├── F14Map-fwd.h
│ ├── F14Map.h
│ ├── F14Set-fwd.h
│ ├── F14Set.h
│ ├── FBVector.h
│ ├── Foreach-inl.h
│ ├── Foreach.h
│ ├── HeterogeneousAccess-fwd.h
│ ├── HeterogeneousAccess.h
│ ├── IntrusiveHeap.h
│ ├── IntrusiveList.h
│ ├── Iterator.h
│ ├── MapUtil.h
│ ├── Merge.h
│ ├── RegexMatchCache.cpp
│ ├── RegexMatchCache.h
│ ├── Reserve.h
│ ├── SparseByteSet.h
│ ├── StdBitset.h
│ ├── View.h
│ ├── WeightedEvictingCacheMap.h
│ ├── detail/
│ │ ├── BUCK
│ │ ├── BitIteratorDetail.h
│ │ ├── BoolWrapper.h
│ │ ├── CMakeLists.txt
│ │ ├── F14Defaults.h
│ │ ├── F14IntrinsicsAvailability.h
│ │ ├── F14MapFallback.h
│ │ ├── F14Mask.h
│ │ ├── F14Policy.h
│ │ ├── F14SetFallback.h
│ │ ├── F14Table.cpp
│ │ ├── F14Table.h
│ │ ├── Util.h
│ │ ├── tape_detail.h
│ │ └── test/
│ │ ├── BUCK
│ │ ├── BoolWrapperTest.cpp
│ │ └── F14DetailTest.cpp
│ ├── heap_vector_types.h
│ ├── irange.h
│ ├── range_traits.h
│ ├── small_vector.h
│ ├── sorted_vector_types.h
│ ├── span.h
│ ├── tape.h
│ ├── test/
│ │ ├── .clang-tidy
│ │ ├── AccessTest.cpp
│ │ ├── ArrayTest.cpp
│ │ ├── BUCK
│ │ ├── BitIteratorBench.cpp
│ │ ├── BitIteratorTest.cpp
│ │ ├── CollectionUtilTest.cpp
│ │ ├── EnumerateTest.cpp
│ │ ├── EvictingCacheMapBench.cpp
│ │ ├── EvictingCacheMapTest.cpp
│ │ ├── F14AsanSupportTest.cpp
│ │ ├── F14FwdTest.cpp
│ │ ├── F14InterprocessTest.cpp
│ │ ├── F14MapTest.cpp
│ │ ├── F14PolicyTest.cpp
│ │ ├── F14SetTest.cpp
│ │ ├── F14SmallOverheads.cpp
│ │ ├── F14TestUtil.h
│ │ ├── FBVectorBenchmark.cpp
│ │ ├── FBVectorBenchmarks.cpp.h
│ │ ├── FBVectorTest.cpp
│ │ ├── FBVectorTests.cpp.h
│ │ ├── ForeachBenchmark.cpp
│ │ ├── ForeachTest.cpp
│ │ ├── HashMapsBench.cpp
│ │ ├── HeterogeneousAccessTest.cpp
│ │ ├── IRangeTest.cpp
│ │ ├── IntrusiveHeapTest.cpp
│ │ ├── IteratorTest.cpp
│ │ ├── MapUtilTest.cpp
│ │ ├── MergeTest.cpp
│ │ ├── RegexMatchCacheTest.cpp
│ │ ├── ReserveTest.cpp
│ │ ├── SparseByteSetBenchmark.cpp
│ │ ├── SparseByteSetTest.cpp
│ │ ├── StdBitsetBenchmark.cpp
│ │ ├── StdBitsetTest.cpp
│ │ ├── TrackingTypes.h
│ │ ├── UtilTest.cpp
│ │ ├── WeightedEvictingCacheMapTest.cpp
│ │ ├── heap_vector_types_test.cpp
│ │ ├── range_traits_test.cpp
│ │ ├── small_vector_test.cpp
│ │ ├── sorted_vector_test.cpp
│ │ ├── span_test.cpp
│ │ ├── tape_bench.cpp
│ │ ├── tape_test.cpp
│ │ └── vector_bool_test.cpp
│ └── vector_bool.h
├── coro/
│ ├── Accumulate-inl.h
│ ├── Accumulate.h
│ ├── AsyncGenerator.h
│ ├── AsyncPipe.h
│ ├── AsyncScope.h
│ ├── AsyncStack.h
│ ├── AutoCleanup-fwd.h
│ ├── AutoCleanup.h
│ ├── BUCK
│ ├── BasePromise.h
│ ├── Baton.cpp
│ ├── Baton.h
│ ├── BlockingWait.h
│ ├── BoundedQueue.h
│ ├── CMakeLists.txt
│ ├── Cleanup.h
│ ├── Collect-inl.h
│ ├── Collect.h
│ ├── Concat-inl.h
│ ├── Concat.h
│ ├── Coroutine.h
│ ├── CurrentExecutor.h
│ ├── DetachOnCancel.h
│ ├── Error.h
│ ├── Filter-inl.h
│ ├── Filter.h
│ ├── FutureUtil.h
│ ├── Generator.h
│ ├── GmockHelpers.h
│ ├── GtestHelpers.h
│ ├── Invoke.h
│ ├── Merge-inl.h
│ ├── Merge.h
│ ├── Mutex.cpp
│ ├── Mutex.h
│ ├── Nothrow.h
│ ├── Promise.h
│ ├── README.md
│ ├── Result.h
│ ├── Retry.h
│ ├── RustAdaptors.h
│ ├── ScopeExit.h
│ ├── SerialQueueRunner.cpp
│ ├── SerialQueueRunner.h
│ ├── SharedLock.h
│ ├── SharedMutex.cpp
│ ├── SharedMutex.h
│ ├── SharedPromise.h
│ ├── Sleep-inl.h
│ ├── Sleep.h
│ ├── SmallUnboundedQueue.h
│ ├── Synchronized.h
│ ├── Task.h
│ ├── TaskWrapper.h
│ ├── TimedWait.h
│ ├── Timeout-inl.h
│ ├── Timeout.h
│ ├── Traits.h
│ ├── Transform-inl.h
│ ├── Transform.h
│ ├── UnboundedQueue.h
│ ├── ValueOrError.h
│ ├── ValueOrFatal.h
│ ├── ViaIfAsync.h
│ ├── WithAsyncStack.h
│ ├── WithCancellation.h
│ ├── detail/
│ │ ├── BUCK
│ │ ├── Barrier.h
│ │ ├── BarrierTask.h
│ │ ├── CMakeLists.txt
│ │ ├── CurrentAsyncFrame.h
│ │ ├── Helpers.h
│ │ ├── InlineTask.h
│ │ ├── Malloc.cpp
│ │ ├── Malloc.h
│ │ ├── ManualLifetime.h
│ │ ├── PickTaskWrapper.h
│ │ ├── Traits.h
│ │ └── test/
│ │ ├── BUCK
│ │ └── PickTaskWrapperTest.cpp
│ ├── safe/
│ │ ├── AsyncClosure-fwd.h
│ │ ├── AsyncClosure.h
│ │ ├── BUCK
│ │ ├── BindCaptures.h
│ │ ├── CMakeLists.txt
│ │ ├── Captures.h
│ │ ├── NowTask.h
│ │ ├── SafeTask.h
│ │ ├── detail/
│ │ │ ├── AsyncClosure.h
│ │ │ ├── BUCK
│ │ │ ├── BindAsyncClosure.h
│ │ │ ├── CMakeLists.txt
│ │ │ ├── DefineMovableDeepConstLrefCopyable.h
│ │ │ └── test/
│ │ │ ├── BUCK
│ │ │ ├── BindAsyncClosureTest.cpp
│ │ │ └── DefineMovableDeepConstLrefCopyableTest.cpp
│ │ ├── docs/
│ │ │ ├── AsUnsafe.md
│ │ │ └── Captures.md
│ │ └── test/
│ │ ├── AsyncClosureTest.cpp
│ │ ├── BUCK
│ │ ├── CapturesTest.cpp
│ │ ├── NowTaskTest.cpp
│ │ └── SafeTaskTest.cpp
│ ├── scripts/
│ │ ├── BUCK
│ │ ├── __init__.py
│ │ ├── co_bt.py
│ │ └── test/
│ │ ├── BUCK
│ │ └── co_bt.py
│ └── test/
│ ├── AccumulateTest.cpp
│ ├── AsyncGeneratorBenchmark.cpp
│ ├── AsyncGeneratorTest.cpp
│ ├── AsyncPipeTest.cpp
│ ├── AsyncScopeTest.cpp
│ ├── AsyncStackTest.cpp
│ ├── BUCK
│ ├── BatonTest.cpp
│ ├── BlockingWaitBenchmark.cpp
│ ├── BlockingWaitTest.cpp
│ ├── BoundedQueueTest.cpp
│ ├── CollectAllBenchmark.cpp
│ ├── CollectAllTryBenchmark.cpp
│ ├── CollectTest.cpp
│ ├── ConcatTest.cpp
│ ├── CoroBenchmarkAllocator.cpp
│ ├── CoroBenchmarkNRVO.cpp
│ ├── CoroTest.cpp
│ ├── CoroutineTest.cpp
│ ├── CurrentExecutorTest.cpp
│ ├── ErrorTest.cpp
│ ├── FilterTest.cpp
│ ├── FutureUtilTest.cpp
│ ├── GeneratorTest.cpp
│ ├── GmockHelpersTest.cpp
│ ├── GtestHelpersTest.cpp
│ ├── InlineTaskTest.cpp
│ ├── MergeTest.cpp
│ ├── MutexTest.cpp
│ ├── PromiseBenchmark.cpp
│ ├── PromiseTest.cpp
│ ├── RequestContextTest.cpp
│ ├── RetryTest.cpp
│ ├── RustAdaptorsTest.cpp
│ ├── ScopeExitTest.cpp
│ ├── SerialQueueRunnerTest.cpp
│ ├── SharedMutexBenchmark.cpp
│ ├── SharedMutexTest.cpp
│ ├── SharedPromiseTest.cpp
│ ├── SleepTest.cpp
│ ├── SmallUnboundedQueueTest.cpp
│ ├── SuspendedStackTest.cpp
│ ├── SynchronizedTest.cpp
│ ├── TaskBenchmark.cpp
│ ├── TaskTest.cpp
│ ├── TaskWrapperTest.cpp
│ ├── TimeoutTest.cpp
│ ├── TraitsTest.cpp
│ ├── TransformTest.cpp
│ ├── UnboundedQueueTest.cpp
│ ├── ValueOrErrorTest.cpp
│ ├── ValueOrFatalTest.cpp
│ └── WithAsyncStackTest.cpp
├── crypto/
│ ├── BUCK
│ ├── Blake2xb.cpp
│ ├── Blake2xb.h
│ ├── CMakeLists.txt
│ ├── LtHash-inl.h
│ ├── LtHash.cpp
│ ├── LtHash.h
│ ├── detail/
│ │ ├── BUCK
│ │ ├── CMakeLists.txt
│ │ ├── LtHashInternal.h
│ │ ├── MathOperation_AVX2.cpp
│ │ ├── MathOperation_SSE2.cpp
│ │ └── MathOperation_Simple.cpp
│ └── test/
│ ├── BUCK
│ ├── Blake2xbBenchmark.cpp
│ ├── Blake2xbTest.cpp
│ ├── LtHashBenchmark.cpp
│ └── LtHashTest.cpp
├── debugging/
│ ├── CMakeLists.txt
│ ├── exception_tracer/
│ │ ├── BUCK
│ │ ├── CMakeLists.txt
│ │ ├── Compatibility.h
│ │ ├── ExceptionAbi.h
│ │ ├── ExceptionCounterLib.cpp
│ │ ├── ExceptionCounterLib.h
│ │ ├── ExceptionCounterLibStaticRegistration.cpp
│ │ ├── ExceptionStackTraceLib.cpp
│ │ ├── ExceptionTracer.cpp
│ │ ├── ExceptionTracer.h
│ │ ├── ExceptionTracerLib.cpp
│ │ ├── ExceptionTracerLib.h
│ │ ├── README.md
│ │ ├── SmartExceptionStackTraceHooks.cpp
│ │ ├── SmartExceptionTracer.cpp
│ │ ├── SmartExceptionTracer.h
│ │ ├── SmartExceptionTracerSingleton.cpp
│ │ ├── SmartExceptionTracerSingleton.h
│ │ ├── StackTrace.cpp
│ │ ├── StackTrace.h
│ │ └── test/
│ │ ├── BUCK
│ │ ├── ExceptionCounterTest.cpp
│ │ ├── ExceptionTracerBenchmark.cpp
│ │ ├── ExceptionTracerTest.cpp
│ │ ├── ExceptionTracerUncaughtTest.cpp
│ │ ├── SmartExceptionTracerBenchmark.cpp
│ │ ├── SmartExceptionTracerTest.cpp
│ │ └── exception_tracer_uncaught_test.py
│ └── symbolizer/
│ ├── BUCK
│ ├── CMakeLists.txt
│ ├── Dwarf.cpp
│ ├── Dwarf.h
│ ├── DwarfImpl.cpp
│ ├── DwarfImpl.h
│ ├── DwarfLineNumberVM.cpp
│ ├── DwarfLineNumberVM.h
│ ├── DwarfSection.cpp
│ ├── DwarfSection.h
│ ├── DwarfUtil.cpp
│ ├── DwarfUtil.h
│ ├── Elf-inl.h
│ ├── Elf.cpp
│ ├── Elf.h
│ ├── ElfCache.cpp
│ ├── ElfCache.h
│ ├── LineReader.cpp
│ ├── LineReader.h
│ ├── SignalHandler.cpp
│ ├── SignalHandler.h
│ ├── StackTrace.cpp
│ ├── StackTrace.h
│ ├── SymbolizePrinter.cpp
│ ├── SymbolizePrinter.h
│ ├── SymbolizedFrame.cpp
│ ├── SymbolizedFrame.h
│ ├── Symbolizer.cpp
│ ├── Symbolizer.h
│ ├── detail/
│ │ ├── BUCK
│ │ ├── CMakeLists.txt
│ │ ├── Debug.cpp
│ │ └── Debug.h
│ ├── test/
│ │ ├── BUCK
│ │ ├── Crash.cpp
│ │ ├── DwarfBenchmark.cpp
│ │ ├── ElfTest.cpp
│ │ ├── LineReaderTest.cpp
│ │ ├── SignalHandlerTest.cpp
│ │ ├── SignalHandlerTest.h
│ │ ├── SimpleElf.cpp
│ │ ├── SmallSigAltStackCrash.cpp
│ │ ├── StackTraceBenchmark.cpp
│ │ ├── StackTraceSizeLimitTest.cpp
│ │ ├── StackTraceTest.cpp
│ │ ├── SymbolizedFrameTest.cpp
│ │ ├── SymbolizerTest.cpp
│ │ ├── SymbolizerTestUtils-inl.h
│ │ ├── SymbolizerTestUtils.cpp
│ │ ├── SymbolizerTestUtils.h
│ │ ├── compare-addr2line.sh
│ │ ├── gnu_debuglink_test.sh
│ │ ├── symbolizer_dwp_compability.sh
│ │ ├── tool/
│ │ │ ├── BUCK
│ │ │ └── segv.cpp
│ │ └── validate_folly_symbolizer.bzl
│ └── tool/
│ ├── Addr2Line.cpp
│ ├── BUCK
│ ├── LibSegFault.cpp
│ └── libFollySegFault.so.v
├── defs.bzl
├── detail/
│ ├── AsyncTrace.cpp
│ ├── AsyncTrace.h
│ ├── AtomicHashUtils.h
│ ├── AtomicUnorderedMapUtils.h
│ ├── Avx2.cpp
│ ├── Avx2.h
│ ├── BUCK
│ ├── BenchmarkAdaptive.cpp
│ ├── BenchmarkAdaptive.h
│ ├── CMakeLists.txt
│ ├── DiscriminatedPtrDetail.h
│ ├── FileUtilDetail.cpp
│ ├── FileUtilDetail.h
│ ├── FileUtilVectorDetail.h
│ ├── FingerprintPolynomial.h
│ ├── Futex-inl.h
│ ├── Futex.cpp
│ ├── Futex.h
│ ├── GroupVarintDetail.h
│ ├── IPAddress.cpp
│ ├── IPAddress.h
│ ├── IPAddressSource.h
│ ├── Iterators.h
│ ├── MPMCPipelineDetail.h
│ ├── MemoryIdler.cpp
│ ├── MemoryIdler.h
│ ├── PerfScoped.cpp
│ ├── PerfScoped.h
│ ├── PolyDetail.h
│ ├── RangeCommon.cpp
│ ├── RangeCommon.h
│ ├── RangeSimd.cpp
│ ├── RangeSimd.h
│ ├── RangeSse42.cpp
│ ├── RangeSse42.h
│ ├── SimpleSimdStringUtils.cpp
│ ├── SimpleSimdStringUtils.h
│ ├── SimpleSimdStringUtilsImpl.h
│ ├── Singleton.h
│ ├── SlowFingerprint.h
│ ├── SocketFastOpen.cpp
│ ├── SocketFastOpen.h
│ ├── SplitStringSimd.h
│ ├── SplitStringSimdImpl.h
│ ├── Sse.cpp
│ ├── Sse.h
│ ├── StaticSingletonManager.cpp
│ ├── StaticSingletonManager.h
│ ├── ThreadLocalDetail.cpp
│ ├── ThreadLocalDetail.h
│ ├── TrapOnAvx512.cpp
│ ├── TrapOnAvx512.h
│ ├── TurnSequencer.h
│ ├── TypeList.h
│ ├── UniqueInstance.cpp
│ ├── UniqueInstance.h
│ ├── base64_detail/
│ │ ├── BUCK
│ │ ├── Base64Api.cpp
│ │ ├── Base64Api.h
│ │ ├── Base64Common.h
│ │ ├── Base64Constants.h
│ │ ├── Base64HiddenConstants.h
│ │ ├── Base64SWAR.cpp
│ │ ├── Base64SWAR.h
│ │ ├── Base64Scalar.h
│ │ ├── Base64Simd.h
│ │ ├── Base64_SSE4_2.cpp
│ │ ├── Base64_SSE4_2.h
│ │ ├── Base64_SSE4_2_Platform.h
│ │ ├── CMakeLists.txt
│ │ ├── README.md
│ │ └── test/
│ │ ├── BUCK
│ │ ├── Base64AgainstScalarTest.cpp
│ │ ├── Base64PlatformTest.cpp
│ │ └── Base64SpecialCasesTest.cpp
│ ├── test/
│ │ ├── AsyncTraceTest.cpp
│ │ ├── BUCK
│ │ ├── BenchmarkAdaptiveTest.cpp
│ │ ├── FileUtilDetailTest.cpp
│ │ ├── PerfScopedTest.cpp
│ │ ├── SimpleSimdStringUtilsTest.cpp
│ │ ├── SplitStringSimdTest.cpp
│ │ ├── StaticSingletonManagerTest.cpp
│ │ ├── ThreadLocalBenchmark.cpp
│ │ ├── ThreadLocalDetailTest.cpp
│ │ ├── TrapOnAvx512TestNegative.cpp
│ │ ├── TypeListTest.cpp
│ │ ├── UniqueInstanceTest.cpp
│ │ └── tuple_test.cpp
│ ├── thread_local_globals.cpp
│ ├── thread_local_globals.h
│ └── tuple.h
├── docs/
│ ├── .gitignore
│ ├── AtomicHashMap.md
│ ├── BUCK
│ ├── Benchmark.md
│ ├── BenchmarkAdaptive.md
│ ├── Conv.md
│ ├── Dynamic.md
│ ├── DynamicConverter.md
│ ├── Executors.md
│ ├── FBString.md
│ ├── FBVector.md
│ ├── Format.md
│ ├── Function.md
│ ├── Futures.md
│ ├── GroupVarint.md
│ ├── Hazptr.md
│ ├── Histogram.md
│ ├── MapUtils.md
│ ├── Overview.md
│ ├── PackedSyncPtr.md
│ ├── Poly.md
│ ├── ProducerConsumerQueue.md
│ ├── Rcu.md
│ ├── SmallLocks.md
│ ├── Switch.md
│ ├── Synchronized.md
│ ├── ThreadCachedInt.md
│ ├── ThreadLocal.md
│ ├── Traits.md
│ ├── defs.bzl
│ ├── examples/
│ │ └── folly/
│ │ ├── BUCK
│ │ ├── CancellationCallback.cpp
│ │ ├── CancellationSource.cpp
│ │ ├── CancellationToken.cpp
│ │ ├── DynamicConverter.cpp
│ │ ├── ExecutorGuide.cpp
│ │ ├── File.cpp
│ │ ├── Format.cpp
│ │ ├── Function.cpp
│ │ ├── Likely.cpp
│ │ ├── MapUtil.cpp
│ │ ├── ScopeGuard.cpp
│ │ ├── ScopeGuard2.cpp
│ │ ├── ScopedEventBaseThread.cpp
│ │ ├── ScopedEventBaseThread2.cpp
│ │ ├── Synchronized.cpp
│ │ ├── container/
│ │ │ ├── Array.cpp
│ │ │ └── BUCK
│ │ ├── coro/
│ │ │ ├── AsyncScope.cpp
│ │ │ ├── BUCK
│ │ │ ├── CancellableAsyncScope.cpp
│ │ │ ├── DetachOnCancel.cpp
│ │ │ ├── Promise.cpp
│ │ │ ├── Retry.cpp
│ │ │ ├── Task.cpp
│ │ │ └── WithCancellation.cpp
│ │ ├── dynamic/
│ │ │ ├── BUCK
│ │ │ ├── array.cpp
│ │ │ └── object.cpp
│ │ ├── dynamic.cpp
│ │ ├── hash/
│ │ │ ├── BUCK
│ │ │ └── Hash.cpp
│ │ ├── io/
│ │ │ ├── BUCK
│ │ │ └── IOBuf.cpp
│ │ ├── ipaddress.cpp
│ │ ├── synchronization/
│ │ │ └── Baton.cpp
│ │ └── test/
│ │ ├── BUCK
│ │ ├── TestUtils.cpp
│ │ └── common/
│ │ ├── BUCK
│ │ └── TestMainDemo.cpp
│ ├── small_vector.md
│ └── style.css
├── dynamic-inl.h
├── dynamic.h
├── executors/
│ ├── Async.h
│ ├── BUCK
│ ├── CMakeLists.txt
│ ├── CPUThreadPoolExecutor.cpp
│ ├── CPUThreadPoolExecutor.h
│ ├── Codel.cpp
│ ├── Codel.h
│ ├── DrivableExecutor.h
│ ├── EDFThreadPoolExecutor.cpp
│ ├── EDFThreadPoolExecutor.h
│ ├── ExecutionObserver.cpp
│ ├── ExecutionObserver.h
│ ├── ExecutorWithPriority-inl.h
│ ├── ExecutorWithPriority.cpp
│ ├── ExecutorWithPriority.h
│ ├── FiberIOExecutor.h
│ ├── FunctionScheduler.cpp
│ ├── FunctionScheduler.h
│ ├── FutureExecutor.h
│ ├── GlobalExecutor.cpp
│ ├── GlobalExecutor.h
│ ├── GlobalThreadPoolList.cpp
│ ├── GlobalThreadPoolList.h
│ ├── IOExecutor.h
│ ├── IOObjectCache.h
│ ├── IOThreadPoolDeadlockDetectorObserver.cpp
│ ├── IOThreadPoolDeadlockDetectorObserver.h
│ ├── IOThreadPoolExecutor.cpp
│ ├── IOThreadPoolExecutor.h
│ ├── InlineExecutor.cpp
│ ├── InlineExecutor.h
│ ├── ManualExecutor.cpp
│ ├── ManualExecutor.h
│ ├── MeteredExecutor-inl.h
│ ├── MeteredExecutor.h
│ ├── QueueObserver.cpp
│ ├── QueueObserver.h
│ ├── QueuedImmediateExecutor.cpp
│ ├── QueuedImmediateExecutor.h
│ ├── ScheduledExecutor.h
│ ├── SequencedExecutor.h
│ ├── SerialExecutor-inl.h
│ ├── SerialExecutor.h
│ ├── SerializedExecutor.h
│ ├── SoftRealTimeExecutor.cpp
│ ├── SoftRealTimeExecutor.h
│ ├── StrandExecutor.cpp
│ ├── StrandExecutor.h
│ ├── StripedEDFThreadPoolExecutor.cpp
│ ├── StripedEDFThreadPoolExecutor.h
│ ├── ThreadPoolExecutor.cpp
│ ├── ThreadPoolExecutor.h
│ ├── ThreadedExecutor.cpp
│ ├── ThreadedExecutor.h
│ ├── ThreadedRepeatingFunctionRunner.cpp
│ ├── ThreadedRepeatingFunctionRunner.h
│ ├── TimedDrivableExecutor.cpp
│ ├── TimedDrivableExecutor.h
│ ├── TimekeeperScheduledExecutor.cpp
│ ├── TimekeeperScheduledExecutor.h
│ ├── VirtualExecutor.h
│ ├── task_queue/
│ │ ├── BUCK
│ │ ├── BlockingQueue.h
│ │ ├── CMakeLists.txt
│ │ ├── LifoSemMPMCQueue.h
│ │ ├── PriorityLifoSemMPMCQueue.h
│ │ ├── PriorityUnboundedBlockingQueue.h
│ │ ├── StripedPriorityUnboundedBlockingQueue.h
│ │ ├── UnboundedBlockingQueue.h
│ │ └── test/
│ │ ├── BUCK
│ │ ├── PriorityLifoSemMPMCQueueTest.cpp
│ │ ├── PriorityUnboundedBlockingQueueTest.cpp
│ │ ├── StripedPriorityUnboundedBlockingQueueTest.cpp
│ │ ├── UnboundedBlockingQueueBench.cpp
│ │ └── UnboundedBlockingQueueTest.cpp
│ ├── test/
│ │ ├── AsyncTest.cpp
│ │ ├── BUCK
│ │ ├── CodelTest.cpp
│ │ ├── EDFThreadPoolExecutorBenchmark.cpp
│ │ ├── ExecutorTest.cpp
│ │ ├── ExecutorWithPriorityTest.cpp
│ │ ├── FiberIOExecutorTest.cpp
│ │ ├── FunctionSchedulerTest.cpp
│ │ ├── GlobalCPUExecutorTest.cpp
│ │ ├── GlobalExecutorAssignmentTest.cpp
│ │ ├── GlobalExecutorTest.cpp
│ │ ├── GlobalIOExecutorTest.cpp
│ │ ├── IOThreadPoolDeadlockDetectorObserverTest.cpp
│ │ ├── IOThreadPoolExecutorBaseTestLib.h
│ │ ├── IOThreadPoolExecutorTest.cpp
│ │ ├── MeteredExecutorTest.cpp
│ │ ├── SequencedExecutorTest.cpp
│ │ ├── SerialExecutorTest.cpp
│ │ ├── StrandExecutorTest.cpp
│ │ ├── StripedEDFThreadPoolExecutorTest.cpp
│ │ ├── ThreadPoolExecutorTest.cpp
│ │ ├── ThreadedExecutorTest.cpp
│ │ ├── ThreadedRepeatingFunctionRunnerTest.cpp
│ │ ├── TimedDrivableExecutorTest.cpp
│ │ └── TimekeeperScheduledExecutorTest.cpp
│ └── thread_factory/
│ ├── BUCK
│ ├── CMakeLists.txt
│ ├── InitThreadFactory.h
│ ├── NamedThreadFactory.h
│ ├── PriorityThreadFactory.cpp
│ ├── PriorityThreadFactory.h
│ └── ThreadFactory.h
├── experimental/
│ ├── BUCK
│ ├── CMakeLists.txt
│ ├── EventCount.h
│ ├── FlatCombiningPriorityQueue.h
│ ├── FunctionScheduler.h
│ ├── ThreadedRepeatingFunctionRunner.h
│ ├── channels/
│ │ ├── BUCK
│ │ ├── CMakeLists.txt
│ │ ├── Channel-fwd.h
│ │ ├── Channel-inl.h
│ │ ├── Channel.h
│ │ ├── ChannelCallbackHandle.h
│ │ ├── ChannelProcessor-inl.h
│ │ ├── ChannelProcessor.h
│ │ ├── ConsumeChannel-inl.h
│ │ ├── ConsumeChannel.h
│ │ ├── FanoutChannel-inl.h
│ │ ├── FanoutChannel.h
│ │ ├── FanoutSender-inl.h
│ │ ├── FanoutSender.h
│ │ ├── MaxConcurrentRateLimiter.h
│ │ ├── Merge-inl.h
│ │ ├── Merge.h
│ │ ├── MergeChannel-inl.h
│ │ ├── MergeChannel.h
│ │ ├── MultiplexChannel-inl.h
│ │ ├── MultiplexChannel.h
│ │ ├── OnClosedException.h
│ │ ├── Producer-inl.h
│ │ ├── Producer.h
│ │ ├── ProxyChannel-inl.h
│ │ ├── ProxyChannel.h
│ │ ├── RateLimiter.h
│ │ ├── Transform-inl.h
│ │ ├── Transform.h
│ │ ├── detail/
│ │ │ ├── AtomicQueue.h
│ │ │ ├── BUCK
│ │ │ ├── CMakeLists.txt
│ │ │ ├── ChannelBridge.h
│ │ │ ├── FunctionTraits.h
│ │ │ ├── IntrusivePtr.h
│ │ │ ├── MultiplexerTraits.h
│ │ │ ├── PointerVariant.h
│ │ │ └── Utility.h
│ │ └── test/
│ │ ├── BUCK
│ │ └── ChannelTestUtil.h
│ ├── coro/
│ │ ├── AsyncGenerator.h
│ │ ├── AsyncPipe.h
│ │ ├── AsyncScope.h
│ │ ├── AsyncStack.h
│ │ ├── AutoCleanup-fwd.h
│ │ ├── AutoCleanup.h
│ │ ├── BUCK
│ │ ├── Baton.h
│ │ ├── BlockingWait.h
│ │ ├── BoundedQueue.h
│ │ ├── CMakeLists.txt
│ │ ├── Cleanup.h
│ │ ├── Collect-inl.h
│ │ ├── Collect.h
│ │ ├── Concat-inl.h
│ │ ├── Concat.h
│ │ ├── Coroutine.h
│ │ ├── CurrentExecutor.h
│ │ ├── DetachOnCancel.h
│ │ ├── Filter-inl.h
│ │ ├── Filter.h
│ │ ├── FutureUtil.h
│ │ ├── Generator.h
│ │ ├── GmockHelpers.h
│ │ ├── GtestHelpers.h
│ │ ├── Invoke.h
│ │ ├── Merge-inl.h
│ │ ├── Merge.h
│ │ ├── Mutex.h
│ │ ├── Promise.h
│ │ ├── Result.h
│ │ ├── Retry.h
│ │ ├── RustAdaptors.h
│ │ ├── ScopeExit.h
│ │ ├── SharedLock.h
│ │ ├── SharedMutex.h
│ │ ├── SharedPromise.h
│ │ ├── Sleep-inl.h
│ │ ├── Sleep.h
│ │ ├── SmallUnboundedQueue.h
│ │ ├── Task.h
│ │ ├── TimedWait.h
│ │ ├── Timeout-inl.h
│ │ ├── Timeout.h
│ │ ├── Traits.h
│ │ ├── Transform-inl.h
│ │ ├── Transform.h
│ │ ├── UnboundedQueue.h
│ │ ├── ViaIfAsync.h
│ │ ├── WithAsyncStack.h
│ │ ├── WithCancellation.h
│ │ └── detail/
│ │ ├── Barrier.h
│ │ ├── BarrierTask.h
│ │ ├── CurrentAsyncFrame.h
│ │ ├── Helpers.h
│ │ ├── InlineTask.h
│ │ ├── Malloc.h
│ │ ├── ManualLifetime.h
│ │ └── Traits.h
│ ├── crypto/
│ │ ├── BUCK
│ │ ├── Blake2xb.h
│ │ ├── CMakeLists.txt
│ │ └── LtHash.h
│ ├── exception_tracer/
│ │ ├── BUCK
│ │ ├── CMakeLists.txt
│ │ ├── ExceptionAbi.h
│ │ ├── ExceptionCounterLib.h
│ │ ├── ExceptionTracer.h
│ │ ├── ExceptionTracerLib.h
│ │ ├── SmartExceptionTracer.h
│ │ ├── SmartExceptionTracerSingleton.h
│ │ └── StackTrace.h
│ ├── flat_combining/
│ │ ├── BUCK
│ │ ├── CMakeLists.txt
│ │ ├── FlatCombining.h
│ │ └── test/
│ │ ├── BUCK
│ │ ├── FlatCombiningExamples.h
│ │ └── FlatCombiningTestHelpers.h
│ ├── observer/
│ │ ├── BUCK
│ │ ├── CMakeLists.txt
│ │ ├── CoreCachedObserver.h
│ │ ├── HazptrObserver.h
│ │ ├── Observable-inl.h
│ │ ├── Observable.h
│ │ ├── Observer-inl.h
│ │ ├── Observer-pre.h
│ │ ├── Observer.h
│ │ ├── ReadMostlyTLObserver.h
│ │ ├── SimpleObservable-inl.h
│ │ ├── SimpleObservable.h
│ │ ├── WithJitter-inl.h
│ │ ├── WithJitter.h
│ │ ├── detail/
│ │ │ ├── BUCK
│ │ │ ├── CMakeLists.txt
│ │ │ ├── Core.h
│ │ │ ├── GraphCycleDetector.h
│ │ │ └── ObserverManager.h
│ │ └── test/
│ │ └── BUCK
│ ├── settings/
│ │ ├── BUCK
│ │ ├── CMakeLists.txt
│ │ ├── Immutables.h
│ │ ├── Settings.h
│ │ ├── Types.h
│ │ └── detail/
│ │ └── SettingsImpl.h
│ ├── symbolizer/
│ │ ├── BUCK
│ │ ├── CMakeLists.txt
│ │ ├── Dwarf.h
│ │ ├── DwarfImpl.h
│ │ ├── DwarfLineNumberVM.h
│ │ ├── DwarfSection.h
│ │ ├── DwarfUtil.h
│ │ ├── Elf-inl.h
│ │ ├── Elf.h
│ │ ├── ElfCache.h
│ │ ├── LineReader.h
│ │ ├── SignalHandler.h
│ │ ├── StackTrace.h
│ │ ├── SymbolizePrinter.h
│ │ ├── SymbolizedFrame.h
│ │ ├── Symbolizer.h
│ │ └── detail/
│ │ ├── BUCK
│ │ ├── CMakeLists.txt
│ │ └── Debug.h
│ └── test/
│ ├── BUCK
│ └── CodingTestUtils.h
├── ext/
│ ├── BUCK
│ ├── CMakeLists.txt
│ ├── buck2/
│ │ ├── BUCK
│ │ ├── CMakeLists.txt
│ │ └── test_ext.cpp
│ ├── test_ext.cpp
│ └── test_ext.h
├── external/
│ ├── .clang-format
│ ├── CMakeLists.txt
│ ├── aor/
│ │ ├── BUCK
│ │ ├── CMakeLists.txt
│ │ ├── asmdefs.h
│ │ ├── memcpy-advsimd.S
│ │ ├── memcpy-armv8.S
│ │ ├── memcpy-mops.S
│ │ ├── memcpy_sve.S
│ │ ├── memmove-mops.S
│ │ ├── memset-advsimd.S
│ │ ├── memset-mops.S
│ │ └── memset-sve.S
│ ├── farmhash/
│ │ ├── BUCK
│ │ ├── CMakeLists.txt
│ │ ├── farmhash.cpp
│ │ ├── farmhash.h
│ │ └── test/
│ │ ├── BUCK
│ │ └── farmhash_test.cpp
│ ├── fast-crc32/
│ │ ├── BUCK
│ │ ├── CMakeLists.txt
│ │ ├── avx512_crc32c_v8s3x4.cpp
│ │ ├── avx512_crc32c_v8s3x4.h
│ │ ├── neon_crc32c_v3s4x2e_v2.cpp
│ │ ├── neon_crc32c_v3s4x2e_v2.h
│ │ ├── neon_eor3_crc32_v8s2x4e_s1x2.cpp
│ │ ├── neon_eor3_crc32_v8s2x4e_s1x2.h
│ │ ├── neon_eor3_crc32c_v8s2x4e_s2x1.cpp
│ │ ├── neon_eor3_crc32c_v8s2x4e_s2x1.h
│ │ ├── sse_crc32c_v8s3x3.cpp
│ │ └── sse_crc32c_v8s3x3.h
│ ├── nvidia/
│ │ ├── CMakeLists.txt
│ │ ├── detail/
│ │ │ ├── BUCK
│ │ │ ├── CMakeLists.txt
│ │ │ ├── RangeSve2.cpp
│ │ │ └── RangeSve2.h
│ │ └── hash/
│ │ ├── BUCK
│ │ ├── CMakeLists.txt
│ │ ├── Checksum.cpp
│ │ └── detail/
│ │ ├── BUCK
│ │ ├── CMakeLists.txt
│ │ ├── Crc32cCombineDetail.h
│ │ └── Crc32cDetail.cpp
│ └── rapidhash/
│ ├── BUCK
│ ├── CMakeLists.txt
│ └── rapidhash.h
├── fibers/
│ ├── AddTasks-inl.h
│ ├── AddTasks.h
│ ├── AtomicBatchDispatcher-inl.h
│ ├── AtomicBatchDispatcher.h
│ ├── BUCK
│ ├── BatchDispatcher.h
│ ├── BatchSemaphore.cpp
│ ├── BatchSemaphore.h
│ ├── Baton-inl.h
│ ├── Baton.cpp
│ ├── Baton.h
│ ├── BoostContextCompatibility.h
│ ├── CMakeLists.txt
│ ├── CallOnce.h
│ ├── EventBaseLoopController-inl.h
│ ├── EventBaseLoopController.h
│ ├── ExecutorBasedLoopController.h
│ ├── ExecutorLoopController-inl.h
│ ├── ExecutorLoopController.h
│ ├── Fiber-inl.h
│ ├── Fiber.cpp
│ ├── Fiber.h
│ ├── FiberManager-inl.h
│ ├── FiberManager.cpp
│ ├── FiberManager.h
│ ├── FiberManagerInternal-inl.h
│ ├── FiberManagerInternal.h
│ ├── FiberManagerMap-inl.h
│ ├── FiberManagerMap.h
│ ├── ForEach-inl.h
│ ├── ForEach.h
│ ├── GenericBaton.h
│ ├── GuardPageAllocator.cpp
│ ├── GuardPageAllocator.h
│ ├── LoopController.h
│ ├── Promise-inl.h
│ ├── Promise.h
│ ├── README.md
│ ├── Semaphore.cpp
│ ├── Semaphore.h
│ ├── SemaphoreBase.cpp
│ ├── SemaphoreBase.h
│ ├── SimpleLoopController.cpp
│ ├── SimpleLoopController.h
│ ├── TimedMutex-inl.h
│ ├── TimedMutex.h
│ ├── WhenN-inl.h
│ ├── WhenN.h
│ ├── async/
│ │ ├── Async.cpp
│ │ ├── Async.h
│ │ ├── AsyncStack.h
│ │ ├── BUCK
│ │ ├── Baton.h
│ │ ├── CMakeLists.txt
│ │ ├── Collect-inl.h
│ │ ├── Collect.h
│ │ ├── FiberManager.h
│ │ ├── Future.h
│ │ ├── Promise.h
│ │ ├── README.md
│ │ ├── Task.h
│ │ ├── WaitUtils.h
│ │ └── test/
│ │ ├── AsyncTest.cpp
│ │ └── BUCK
│ ├── detail/
│ │ ├── AtomicBatchDispatcher.cpp
│ │ ├── AtomicBatchDispatcher.h
│ │ ├── BUCK
│ │ └── CMakeLists.txt
│ ├── scripts/
│ │ └── gdb.py
│ ├── test/
│ │ ├── BUCK
│ │ ├── BatchSemaphoreTest.cpp
│ │ ├── FibersBenchmark.cpp
│ │ ├── FibersTest.cpp
│ │ ├── FibersTestApp.cpp
│ │ ├── SemaphoreTest.cpp
│ │ ├── StackOverflow.cpp
│ │ └── TimedMutexBenchmark.cpp
│ └── traits.h
├── folly_extended_library.bzl
├── functional/
│ ├── ApplyTuple.h
│ ├── BUCK
│ ├── CMakeLists.txt
│ ├── Invoke.h
│ ├── Partial.h
│ ├── protocol.h
│ ├── test/
│ │ ├── ApplyTupleTest.cpp
│ │ ├── BUCK
│ │ ├── InvokeTest.cpp
│ │ ├── PartialTest.cpp
│ │ ├── protocol_test.cpp
│ │ └── traits_test.cpp
│ └── traits.h
├── futures/
│ ├── BUCK
│ ├── Barrier.cpp
│ ├── Barrier.h
│ ├── CMakeLists.txt
│ ├── Cleanup.h
│ ├── Future-inl.h
│ ├── Future-pre.h
│ ├── Future.cpp
│ ├── Future.h
│ ├── FutureSplitter.h
│ ├── HeapTimekeeper.cpp
│ ├── HeapTimekeeper.h
│ ├── ManualTimekeeper.cpp
│ ├── ManualTimekeeper.h
│ ├── Portability.h
│ ├── Promise-inl.h
│ ├── Promise.cpp
│ ├── Promise.h
│ ├── Retrying.h
│ ├── SharedPromise-inl.h
│ ├── SharedPromise.cpp
│ ├── SharedPromise.h
│ ├── ThreadWheelTimekeeper.cpp
│ ├── ThreadWheelTimekeeper.h
│ ├── WTCallback.h
│ ├── detail/
│ │ ├── BUCK
│ │ ├── CMakeLists.txt
│ │ ├── Core.cpp
│ │ ├── Core.h
│ │ └── Types.h
│ └── test/
│ ├── BUCK
│ ├── BarrierTest.cpp
│ ├── Benchmark.cpp
│ ├── CallbackLifetimeTest.cpp
│ ├── CleanupTest.cpp
│ ├── CollectTest.cpp
│ ├── ContextTest.cpp
│ ├── ConversionOperatorTest.cpp
│ ├── CoreTest.cpp
│ ├── EnsureTest.cpp
│ ├── FilterTest.cpp
│ ├── FutureSplitterTest.cpp
│ ├── FutureTest.cpp
│ ├── HeaderCompileTest.cpp
│ ├── HeapTimekeeperTest.cpp
│ ├── InterruptTest.cpp
│ ├── ManualTimekeeperTest.cpp
│ ├── MapTest.cpp
│ ├── NonCopyableLambdaTest.cpp
│ ├── PollTest.cpp
│ ├── PromiseTest.cpp
│ ├── ReduceTest.cpp
│ ├── RetryingTest.cpp
│ ├── SelfDestructTest.cpp
│ ├── SemiFutureTest.cpp
│ ├── SharedPromiseTest.cpp
│ ├── TestExecutor.cpp
│ ├── TestExecutor.h
│ ├── TestExecutorTest.cpp
│ ├── ThenCompileTest.cpp
│ ├── ThenCompileTest.h
│ ├── ThenTest.cpp
│ ├── ThreadWheelTimekeeperTest.cpp
│ ├── TimekeeperTest.cpp
│ ├── TimekeeperTestLib.h
│ ├── TimesTest.cpp
│ ├── UnwrapTest.cpp
│ ├── ViaTest.cpp
│ ├── WaitTest.cpp
│ ├── WhenTest.cpp
│ ├── WhileDoTest.cpp
│ ├── WillEqualTest.cpp
│ ├── WindowTest.cpp
│ └── then_compile_test.rb
├── gen/
│ ├── BUCK
│ ├── Base-inl.h
│ ├── Base.h
│ ├── CMakeLists.txt
│ ├── Combine-inl.h
│ ├── Combine.h
│ ├── Core-inl.h
│ ├── Core.h
│ ├── File-inl.h
│ ├── File.h
│ ├── IStream.h
│ ├── Parallel-inl.h
│ ├── Parallel.h
│ ├── ParallelMap-inl.h
│ ├── ParallelMap.h
│ ├── String-inl.h
│ ├── String.h
│ └── test/
│ ├── BUCK
│ ├── BaseBenchmark.cpp
│ ├── BaseTest.cpp
│ ├── Bench.h
│ ├── CombineTest.cpp
│ ├── FileBenchmark.cpp
│ ├── FileTest.cpp
│ ├── IStreamTest.cpp
│ ├── ParallelBenchmark.cpp
│ ├── ParallelMapBenchmark.cpp
│ ├── ParallelMapTest.cpp
│ ├── ParallelTest.cpp
│ ├── StringBenchmark.cpp
│ └── StringTest.cpp
├── hash/
│ ├── BUCK
│ ├── CMakeLists.txt
│ ├── Checksum.cpp
│ ├── Checksum.h
│ ├── FarmHash.h
│ ├── FnvHash.h
│ ├── Hash.h
│ ├── HsiehHash.h
│ ├── MurmurHash.h
│ ├── SpookyHashV1.cpp
│ ├── SpookyHashV1.h
│ ├── SpookyHashV2.cpp
│ ├── SpookyHashV2.h
│ ├── UniqueHashKey.cpp
│ ├── UniqueHashKey.h
│ ├── detail/
│ │ ├── BUCK
│ │ ├── CMakeLists.txt
│ │ ├── ChecksumDetail.cpp
│ │ ├── ChecksumDetail.h
│ │ ├── Crc32CombineDetail.cpp
│ │ ├── Crc32cDetail.cpp
│ │ ├── RandomSeed.h
│ │ └── test/
│ │ ├── BUCK
│ │ └── RandomSeedTest.cpp
│ ├── rapidhash.h
│ ├── test/
│ │ ├── BUCK
│ │ ├── ChecksumBenchmark.cpp
│ │ ├── ChecksumTest.cpp
│ │ ├── FarmHashTest.cpp
│ │ ├── FnvHashTest.cpp
│ │ ├── HashBenchmark.cpp
│ │ ├── HashTest.cpp
│ │ ├── HsiehHashTest.cpp
│ │ ├── MurmurHashTest.cpp
│ │ ├── RapidHashTest.cpp
│ │ ├── SpookyHashV1Test.cpp
│ │ ├── SpookyHashV2Test.cpp
│ │ ├── StdCompatibleHashTest.cpp
│ │ ├── UniqueHashKeyTest.cpp
│ │ └── traits_test.cpp
│ └── traits.h
├── init/
│ ├── BUCK
│ ├── CMakeLists.txt
│ ├── Init.cpp
│ ├── Init.h
│ ├── Phase.cpp
│ ├── Phase.h
│ └── test/
│ ├── BUCK
│ └── PhaseTest.cpp
├── io/
│ ├── BUCK
│ ├── CMakeLists.txt
│ ├── Cursor-inl.h
│ ├── Cursor.cpp
│ ├── Cursor.h
│ ├── FsUtil.cpp
│ ├── FsUtil.h
│ ├── GlobalShutdownSocketSet.cpp
│ ├── GlobalShutdownSocketSet.h
│ ├── HugePages.cpp
│ ├── HugePages.h
│ ├── IOBuf.cpp
│ ├── IOBuf.h
│ ├── IOBufIovecBuilder.cpp
│ ├── IOBufIovecBuilder.h
│ ├── IOBufQueue.cpp
│ ├── IOBufQueue.h
│ ├── RecordIO-inl.h
│ ├── RecordIO.cpp
│ ├── RecordIO.h
│ ├── ShutdownSocketSet.cpp
│ ├── ShutdownSocketSet.h
│ ├── SocketOptionMap.cpp
│ ├── SocketOptionMap.h
│ ├── SocketOptionValue.cpp
│ ├── SocketOptionValue.h
│ ├── TypedIOBuf.h
│ ├── async/
│ │ ├── AsyncBase.cpp
│ │ ├── AsyncBase.h
│ │ ├── AsyncIO.cpp
│ │ ├── AsyncIO.h
│ │ ├── AsyncIoUringSocket.cpp
│ │ ├── AsyncIoUringSocket.h
│ │ ├── AsyncIoUringSocketFactory.cpp
│ │ ├── AsyncIoUringSocketFactory.h
│ │ ├── AsyncPipe.cpp
│ │ ├── AsyncPipe.h
│ │ ├── AsyncSSLSocket.cpp
│ │ ├── AsyncSSLSocket.h
│ │ ├── AsyncServerSocket.cpp
│ │ ├── AsyncServerSocket.h
│ │ ├── AsyncSignalHandler.cpp
│ │ ├── AsyncSignalHandler.h
│ │ ├── AsyncSocket.cpp
│ │ ├── AsyncSocket.h
│ │ ├── AsyncSocketBase.h
│ │ ├── AsyncSocketException.cpp
│ │ ├── AsyncSocketException.h
│ │ ├── AsyncSocketTransport.cpp
│ │ ├── AsyncSocketTransport.h
│ │ ├── AsyncTimeout.cpp
│ │ ├── AsyncTimeout.h
│ │ ├── AsyncTransport.h
│ │ ├── AsyncTransportCertificate.h
│ │ ├── AsyncUDPServerSocket.h
│ │ ├── AsyncUDPSocket.cpp
│ │ ├── AsyncUDPSocket.h
│ │ ├── AtomicNotificationQueue-inl.h
│ │ ├── AtomicNotificationQueue.h
│ │ ├── BUCK
│ │ ├── CMakeLists.txt
│ │ ├── CertificateIdentityVerifier.h
│ │ ├── DecoratedAsyncTransportWrapper.h
│ │ ├── DelayedDestruction.cpp
│ │ ├── DelayedDestruction.h
│ │ ├── DelayedDestructionBase.h
│ │ ├── DestructorCheck.h
│ │ ├── Epoll.h
│ │ ├── EpollBackend.cpp
│ │ ├── EpollBackend.h
│ │ ├── EventBase.cpp
│ │ ├── EventBase.h
│ │ ├── EventBaseAtomicNotificationQueue-inl.h
│ │ ├── EventBaseAtomicNotificationQueue.h
│ │ ├── EventBaseBackendBase.cpp
│ │ ├── EventBaseBackendBase.h
│ │ ├── EventBaseLocal.cpp
│ │ ├── EventBaseLocal.h
│ │ ├── EventBaseManager.cpp
│ │ ├── EventBaseManager.h
│ │ ├── EventBasePoller.cpp
│ │ ├── EventBasePoller.h
│ │ ├── EventBaseThread.cpp
│ │ ├── EventBaseThread.h
│ │ ├── EventHandler.cpp
│ │ ├── EventHandler.h
│ │ ├── EventUtil.h
│ │ ├── HHWheelTimer-fwd.h
│ │ ├── HHWheelTimer.cpp
│ │ ├── HHWheelTimer.h
│ │ ├── IoUring.cpp
│ │ ├── IoUring.h
│ │ ├── IoUringBackend.cpp
│ │ ├── IoUringBackend.h
│ │ ├── IoUringBase.h
│ │ ├── IoUringBufferPoolSharing.cpp
│ │ ├── IoUringBufferPoolSharing.h
│ │ ├── IoUringConnect.cpp
│ │ ├── IoUringConnect.h
│ │ ├── IoUringEvent.cpp
│ │ ├── IoUringEvent.h
│ │ ├── IoUringEventBaseLocal.cpp
│ │ ├── IoUringEventBaseLocal.h
│ │ ├── IoUringOptions.h
│ │ ├── IoUringProvidedBufferRing.cpp
│ │ ├── IoUringProvidedBufferRing.h
│ │ ├── IoUringRecv.cpp
│ │ ├── IoUringRecv.h
│ │ ├── IoUringSend.cpp
│ │ ├── IoUringSend.h
│ │ ├── IoUringZeroCopyBufferPool.cpp
│ │ ├── IoUringZeroCopyBufferPool.h
│ │ ├── Liburing.h
│ │ ├── MuxIOThreadPoolExecutor.cpp
│ │ ├── MuxIOThreadPoolExecutor.h
│ │ ├── NotificationQueue.h
│ │ ├── PasswordInFile.cpp
│ │ ├── PasswordInFile.h
│ │ ├── README.md
│ │ ├── Request.cpp
│ │ ├── Request.h
│ │ ├── SSLContext.cpp
│ │ ├── SSLContext.h
│ │ ├── SSLOptions.cpp
│ │ ├── SSLOptions.h
│ │ ├── STTimerFDTimeoutManager.cpp
│ │ ├── STTimerFDTimeoutManager.h
│ │ ├── ScopedEventBaseThread.cpp
│ │ ├── ScopedEventBaseThread.h
│ │ ├── SimpleAsyncIO.cpp
│ │ ├── SimpleAsyncIO.h
│ │ ├── TerminateCancellationToken.cpp
│ │ ├── TerminateCancellationToken.h
│ │ ├── TimeoutManager.cpp
│ │ ├── TimeoutManager.h
│ │ ├── TimerFD.cpp
│ │ ├── TimerFD.h
│ │ ├── TimerFDTimeoutManager.cpp
│ │ ├── TimerFDTimeoutManager.h
│ │ ├── VirtualEventBase.cpp
│ │ ├── VirtualEventBase.h
│ │ ├── WriteChainAsyncTransportWrapper.h
│ │ ├── WriteFlags.h
│ │ ├── fdsock/
│ │ │ ├── AsyncFdSocket.cpp
│ │ │ ├── AsyncFdSocket.h
│ │ │ ├── BUCK
│ │ │ ├── CMakeLists.txt
│ │ │ ├── SocketFds.cpp
│ │ │ ├── SocketFds.h
│ │ │ └── test/
│ │ │ ├── AsyncFdSocketTest.cpp
│ │ │ └── BUCK
│ │ ├── observer/
│ │ │ ├── AsyncSocketObserverContainer.h
│ │ │ ├── AsyncSocketObserverInterface.h
│ │ │ ├── BUCK
│ │ │ └── CMakeLists.txt
│ │ ├── ssl/
│ │ │ ├── BUCK
│ │ │ ├── BasicTransportCertificate.h
│ │ │ ├── CMakeLists.txt
│ │ │ ├── OpenSSLTransportCertificate.h
│ │ │ ├── OpenSSLUtils.cpp
│ │ │ ├── OpenSSLUtils.h
│ │ │ ├── SSLErrors.cpp
│ │ │ ├── SSLErrors.h
│ │ │ ├── TLSDefinitions.h
│ │ │ └── test/
│ │ │ ├── BUCK
│ │ │ ├── BasicTransportCertificateTest.cpp
│ │ │ ├── OpenSSLUtilsTest.cpp
│ │ │ └── SSLErrorsTest.cpp
│ │ └── test/
│ │ ├── AsyncBaseTestLib.cpp
│ │ ├── AsyncBaseTestLib.h
│ │ ├── AsyncIOTest.cpp
│ │ ├── AsyncIoUringSocketTest.cpp
│ │ ├── AsyncPipeTest.cpp
│ │ ├── AsyncSSLSocketTest.cpp
│ │ ├── AsyncSSLSocketTest.h
│ │ ├── AsyncSSLSocketTest2.cpp
│ │ ├── AsyncSSLSocketWriteTest.cpp
│ │ ├── AsyncSignalHandlerTestLib.h
│ │ ├── AsyncSocketExceptionTest.cpp
│ │ ├── AsyncSocketObserverTest.cpp
│ │ ├── AsyncSocketTest.cpp
│ │ ├── AsyncSocketTest.h
│ │ ├── AsyncSocketTest2.cpp
│ │ ├── AsyncSocketTest2.h
│ │ ├── AsyncTimeoutTest.cpp
│ │ ├── AsyncTransportTest.cpp
│ │ ├── AsyncUDPSocketGSOGROTest.cpp
│ │ ├── AsyncUDPSocketSendmmsgTest.cpp
│ │ ├── AsyncUDPSocketTest.cpp
│ │ ├── AtomicNotificationQueueTest.cpp
│ │ ├── BUCK
│ │ ├── BlockingSocket.h
│ │ ├── CallbackStateEnum.h
│ │ ├── ConnCallback.h
│ │ ├── DecoratedAsyncTransportWrapperTest.cpp
│ │ ├── DelayedDestructionBaseTest.cpp
│ │ ├── DelayedDestructionTest.cpp
│ │ ├── DestructorCheckTest.cpp
│ │ ├── EpollBackendTest.cpp
│ │ ├── EventBaseBenchmark.cpp
│ │ ├── EventBaseLocalTest.cpp
│ │ ├── EventBaseTest.cpp
│ │ ├── EventBaseTestLib.h
│ │ ├── EventBaseThreadTest.cpp
│ │ ├── EventHandlerTest.cpp
│ │ ├── HHWheelTimerHighResBenchmark.cpp
│ │ ├── HHWheelTimerHighResTest.cpp
│ │ ├── HHWheelTimerSlowTests.cpp
│ │ ├── HHWheelTimerTest.cpp
│ │ ├── IOBenchmark.cpp
│ │ ├── IoTestTempFileUtil.cpp
│ │ ├── IoTestTempFileUtil.h
│ │ ├── IoUringBackendBench.cpp
│ │ ├── IoUringBackendSetupTest.cpp
│ │ ├── IoUringBackendTest.cpp
│ │ ├── IoUringEventBaseLocalTest.cpp
│ │ ├── IoUringEventTest.cpp
│ │ ├── IoUringProvidedBufferRingTest.cpp
│ │ ├── IoUringTest.cpp
│ │ ├── IoUringZeroCopyBufferPoolTest.cpp
│ │ ├── MockAsyncSSLSocket.h
│ │ ├── MockAsyncServerSocket.h
│ │ ├── MockAsyncSocket.h
│ │ ├── MockAsyncSocketLegacyObserver.h
│ │ ├── MockAsyncSocketObserver.h
│ │ ├── MockAsyncTransport.h
│ │ ├── MockAsyncUDPSocket.h
│ │ ├── MockTimeoutManager.h
│ │ ├── MuxIOThreadPoolExecutorTest.cpp
│ │ ├── NotificationQueueBenchmark.cpp
│ │ ├── NotificationQueueTest.cpp
│ │ ├── PollLoopHooksTest.cpp
│ │ ├── RegisteredFdBenchmark.cpp
│ │ ├── RequestContextBenchmark.cpp
│ │ ├── RequestContextHelper.h
│ │ ├── RequestContextTest.cpp
│ │ ├── SSLContextRegressionTest.cpp
│ │ ├── SSLContextTest.cpp
│ │ ├── SSLOptionsTest.cpp
│ │ ├── SSLSessionTest.cpp
│ │ ├── SSLUtil.cpp
│ │ ├── SSLUtil.h
│ │ ├── ScopedBoundPort.cpp
│ │ ├── ScopedBoundPort.h
│ │ ├── ScopedEventBaseThreadTest.cpp
│ │ ├── SimpleAsyncIOTest.cpp
│ │ ├── SocketClient.cpp
│ │ ├── SocketPair.cpp
│ │ ├── SocketPair.h
│ │ ├── TFOUtil.cpp
│ │ ├── TFOUtil.h
│ │ ├── TerminateCancellationTokenTest.cpp
│ │ ├── TestSSLServer.cpp
│ │ ├── TestSSLServer.h
│ │ ├── TimeUtil.cpp
│ │ ├── TimeUtil.h
│ │ ├── TimeUtilTest.cpp
│ │ ├── TimerFDTimeoutManagerTest.cpp
│ │ ├── UndelayedDestruction.h
│ │ ├── Util.h
│ │ ├── WriteChainAsyncTransportWrapperTest.cpp
│ │ ├── WriteFlagsTest.cpp
│ │ ├── ZeroCopy.cpp
│ │ ├── ZeroCopy.h
│ │ ├── ZeroCopyBenchmark.cpp
│ │ ├── ZeroCopyTest.cpp
│ │ └── certs/
│ │ ├── BUCK
│ │ ├── ca-cert.pem
│ │ ├── ca-key.pem
│ │ ├── client_ca_cert.pem
│ │ ├── client_ca_key.pem
│ │ ├── client_cert.pem
│ │ ├── client_chain.pem
│ │ ├── client_intermediate_ca.pem
│ │ ├── client_intermediate_ca_key.pem
│ │ ├── client_key.pem
│ │ ├── clienti_cert.pem
│ │ ├── clienti_key.pem
│ │ ├── defs.bzl
│ │ ├── generate_certs.sh
│ │ ├── tests-cert.pem
│ │ └── tests-key.pem
│ ├── coro/
│ │ ├── BUCK
│ │ ├── CMakeLists.txt
│ │ ├── ServerSocket.cpp
│ │ ├── ServerSocket.h
│ │ ├── Transport.cpp
│ │ ├── Transport.h
│ │ ├── TransportCallbackBase.h
│ │ ├── TransportCallbacks.h
│ │ └── test/
│ │ ├── BUCK
│ │ └── TransportTest.cpp
│ ├── test/
│ │ ├── BUCK
│ │ ├── FsUtilTest.cpp
│ │ ├── IOBufBenchmark.cpp
│ │ ├── IOBufCBTest.cpp
│ │ ├── IOBufCursorBenchmark.cpp
│ │ ├── IOBufCursorTest.cpp
│ │ ├── IOBufIovecBuilderTest.cpp
│ │ ├── IOBufQueueTest.cpp
│ │ ├── IOBufTest.cpp
│ │ ├── NetworkBenchmark.cpp
│ │ ├── QueueAppenderBenchmark.cpp
│ │ ├── RecordIOTest.cpp
│ │ ├── ShutdownSocketSetTest.cpp
│ │ └── SocketOptionValueTest.cpp
│ └── tool/
│ ├── BUCK
│ └── HugePageUtil.cpp
├── json/
│ ├── BUCK
│ ├── CMakeLists.txt
│ ├── DynamicConverter.h
│ ├── DynamicParser-inl.h
│ ├── DynamicParser.cpp
│ ├── DynamicParser.h
│ ├── JSONSchema.cpp
│ ├── JSONSchema.h
│ ├── JsonMockUtil.h
│ ├── JsonTestUtil.cpp
│ ├── JsonTestUtil.h
│ ├── bser/
│ │ ├── BUCK
│ │ ├── Bser.h
│ │ ├── CMakeLists.txt
│ │ ├── Dump.cpp
│ │ ├── Load.cpp
│ │ └── test/
│ │ ├── BUCK
│ │ └── BserTest.cpp
│ ├── dynamic-inl.h
│ ├── dynamic.cpp
│ ├── dynamic.h
│ ├── json.cpp
│ ├── json.h
│ ├── json_patch.cpp
│ ├── json_patch.h
│ ├── json_pointer.cpp
│ ├── json_pointer.h
│ ├── test/
│ │ ├── BUCK
│ │ ├── DynamicBenchmark.cpp
│ │ ├── DynamicConverterTest.cpp
│ │ ├── DynamicOtherTest.cpp
│ │ ├── DynamicParserTest.cpp
│ │ ├── DynamicTest.cpp
│ │ ├── JSONSchemaTest.cpp
│ │ ├── Json5Test.cpp
│ │ ├── JsonBenchmark.cpp
│ │ ├── JsonOtherTest.cpp
│ │ ├── JsonTest.cpp
│ │ ├── JsonTestUtilTest.cpp
│ │ ├── json_patch_test.cpp
│ │ └── json_pointer_test.cpp
│ └── tool/
│ ├── BUCK
│ └── JSONSchemaTester.cpp
├── json.h
├── json_patch.h
├── json_pointer.h
├── lang/
│ ├── Access.h
│ ├── Align.h
│ ├── Aligned.h
│ ├── Assume.h
│ ├── BUCK
│ ├── Badge.h
│ ├── Bits.h
│ ├── BitsClass.h
│ ├── Builtin.h
│ ├── CArray.h
│ ├── CMakeLists.txt
│ ├── CString.cpp
│ ├── CString.h
│ ├── Cast.h
│ ├── CheckedMath.h
│ ├── CustomizationPoint.h
│ ├── Exception.cpp
│ ├── Exception.h
│ ├── Extern.h
│ ├── Hint-inl.h
│ ├── Hint.h
│ ├── Keep.h
│ ├── MustUseImmediately.h
│ ├── New.h
│ ├── Ordering.h
│ ├── Pretty.h
│ ├── PropagateConst.h
│ ├── RValueReferenceWrapper.h
│ ├── SafeAlias-fwd.h
│ ├── SafeAlias.h
│ ├── SafeAssert.cpp
│ ├── SafeAssert.h
│ ├── SafeClosure.h
│ ├── SafeClosure.md
│ ├── StaticConst.h
│ ├── Strong.h
│ ├── Switch.h
│ ├── Thunk.h
│ ├── ToAscii.cpp
│ ├── ToAscii.h
│ ├── TypeInfo.h
│ ├── UncaughtExceptions.cpp
│ ├── UncaughtExceptions.h
│ ├── VectorTraits.h
│ ├── bind/
│ │ ├── AsArgument.h
│ │ ├── BUCK
│ │ ├── Bind.h
│ │ ├── Bind.md
│ │ ├── CMakeLists.txt
│ │ ├── Named.h
│ │ ├── NamedToStorage.h
│ │ ├── ToStorage.h
│ │ └── test/
│ │ ├── AsArgumentTest.cpp
│ │ ├── BUCK
│ │ ├── BindTest.cpp
│ │ ├── NamedTest.cpp
│ │ ├── NamedToStorageTest.cpp
│ │ └── ToStorageTest.cpp
│ ├── cstring_view.h
│ └── test/
│ ├── AlignTest.cpp
│ ├── AlignedTest.cpp
│ ├── BUCK
│ ├── BadgeTest.cpp
│ ├── BitsBenchmark.cpp
│ ├── BitsClassBenchmark.cpp
│ ├── BitsClassTest.cpp
│ ├── BitsTest.cpp
│ ├── CStringTest.cpp
│ ├── CastTest.cpp
│ ├── CheckedMathTest.cpp
│ ├── ExceptionBench.cpp
│ ├── ExceptionTest.cpp
│ ├── ExternTest.cpp
│ ├── HintTest.cpp
│ ├── MustUseImmediatelyTest.cpp
│ ├── NewTest.cpp
│ ├── OrderingTest.cpp
│ ├── PrettyTest.cpp
│ ├── PropagateConstTest.cpp
│ ├── RValueReferenceWrapperTest.cpp
│ ├── SafeAliasTest.cpp
│ ├── SafeAssertTest.cpp
│ ├── SafeClosureTest.cpp
│ ├── StrongTest.cpp
│ ├── SwitchTest.cpp
│ ├── ThunkTest.cpp
│ ├── ToAsciiBench.cpp
│ ├── ToAsciiTest.cpp
│ ├── TypeInfoTest.cpp
│ ├── VectorTraitsTest.cpp
│ └── cstring_view_test.cpp
├── logging/
│ ├── AsyncFileWriter.cpp
│ ├── AsyncFileWriter.h
│ ├── AsyncLogWriter.cpp
│ ├── AsyncLogWriter.h
│ ├── AutoTimer.h
│ ├── BUCK
│ ├── BridgeFromGoogleLogging.cpp
│ ├── BridgeFromGoogleLogging.h
│ ├── CMakeLists.txt
│ ├── CustomLogFormatter.cpp
│ ├── CustomLogFormatter.h
│ ├── FileHandlerFactory.cpp
│ ├── FileHandlerFactory.h
│ ├── FileWriterFactory.cpp
│ ├── FileWriterFactory.h
│ ├── GlogStyleFormatter.cpp
│ ├── GlogStyleFormatter.h
│ ├── ImmediateFileWriter.cpp
│ ├── ImmediateFileWriter.h
│ ├── Init.cpp
│ ├── Init.h
│ ├── InitWeak.cpp
│ ├── LogCategory.cpp
│ ├── LogCategory.h
│ ├── LogCategoryConfig.cpp
│ ├── LogCategoryConfig.h
│ ├── LogConfig.cpp
│ ├── LogConfig.h
│ ├── LogConfigParser.cpp
│ ├── LogConfigParser.h
│ ├── LogFormatter.h
│ ├── LogHandler.h
│ ├── LogHandlerConfig.cpp
│ ├── LogHandlerConfig.h
│ ├── LogHandlerFactory.h
│ ├── LogLevel.cpp
│ ├── LogLevel.h
│ ├── LogMessage.cpp
│ ├── LogMessage.h
│ ├── LogName.cpp
│ ├── LogName.h
│ ├── LogStream.cpp
│ ├── LogStream.h
│ ├── LogStreamProcessor.cpp
│ ├── LogStreamProcessor.h
│ ├── LogWriter.h
│ ├── Logger.cpp
│ ├── Logger.h
│ ├── LoggerDB.cpp
│ ├── LoggerDB.h
│ ├── ObjectToString.cpp
│ ├── ObjectToString.h
│ ├── README.md
│ ├── RateLimiter.cpp
│ ├── RateLimiter.h
│ ├── StandardLogHandler.cpp
│ ├── StandardLogHandler.h
│ ├── StandardLogHandlerFactory.cpp
│ ├── StandardLogHandlerFactory.h
│ ├── StreamHandlerFactory.cpp
│ ├── StreamHandlerFactory.h
│ ├── docs/
│ │ ├── Comparisons.md
│ │ ├── Config.md
│ │ ├── LogCategories.md
│ │ ├── LogHandlers.md
│ │ ├── LogLevels.md
│ │ ├── Overview.md
│ │ └── Usage.md
│ ├── example/
│ │ ├── BUCK
│ │ ├── CMakeLists.txt
│ │ ├── lib.cpp
│ │ ├── lib.h
│ │ └── main.cpp
│ ├── test/
│ │ ├── AsyncFileWriterTest.cpp
│ │ ├── AsyncLogWriterTest.cpp
│ │ ├── AutoTimerTest.cpp
│ │ ├── BUCK
│ │ ├── BridgeFromGoogleLoggingTest.cpp
│ │ ├── ConfigHelpers.cpp
│ │ ├── ConfigHelpers.h
│ │ ├── ConfigParserTest.cpp
│ │ ├── ConfigUpdateTest.cpp
│ │ ├── CustomLogFormatterTest.cpp
│ │ ├── FileHandlerFactoryTest.cpp
│ │ ├── GlogFormatterTest.cpp
│ │ ├── ImmediateFileWriterTest.cpp
│ │ ├── InitTest.cpp
│ │ ├── LogCategoryTest.cpp
│ │ ├── LogLevelTest.cpp
│ │ ├── LogMessageTest.cpp
│ │ ├── LogNameTest.cpp
│ │ ├── LogStreamTest.cpp
│ │ ├── LoggerDBTest.cpp
│ │ ├── LoggerTest.cpp
│ │ ├── RateLimiterTest.cpp
│ │ ├── StandardLogHandlerFactoryTest.cpp
│ │ ├── StandardLogHandlerTest.cpp
│ │ ├── SyncLevelTest.cpp
│ │ ├── TestLogHandler.cpp
│ │ ├── TestLogHandler.h
│ │ ├── XlogBench.cpp
│ │ ├── XlogFile1.cpp
│ │ ├── XlogFile2.cpp
│ │ ├── XlogHeader1.h
│ │ ├── XlogHeader2.h
│ │ ├── XlogTest.cpp
│ │ ├── fatal_test.py
│ │ ├── helpers/
│ │ │ ├── BUCK
│ │ │ ├── FatalHelper.cpp
│ │ │ ├── LogAfterMain.cpp
│ │ │ ├── LogAfterMainNoInit.cpp
│ │ │ ├── LogOnShutdownLib.cpp
│ │ │ ├── LogOnShutdownLib.h
│ │ │ └── helpers.h
│ │ └── log_after_main.py
│ ├── xlog.cpp
│ └── xlog.h
├── memcpy.S
├── memcpy_select_aarch64.cpp
├── memory/
│ ├── Arena-inl.h
│ ├── Arena.h
│ ├── BUCK
│ ├── CMakeLists.txt
│ ├── IOBufArenaFactory.h
│ ├── IoUringArena.cpp
│ ├── IoUringArena.h
│ ├── IoUringArenaTest.cpp
│ ├── JemallocHugePageAllocator.cpp
│ ├── JemallocHugePageAllocator.h
│ ├── JemallocHugePageAllocatorTest.cpp
│ ├── JemallocNodumpAllocator.cpp
│ ├── JemallocNodumpAllocator.h
│ ├── JemallocNodumpAllocatorTest.cpp
│ ├── MallctlHelper.cpp
│ ├── MallctlHelper.h
│ ├── Malloc.cpp
│ ├── Malloc.h
│ ├── MemoryResource.h
│ ├── ReentrantAllocator.cpp
│ ├── ReentrantAllocator.h
│ ├── SanitizeAddress.cpp
│ ├── SanitizeAddress.h
│ ├── SanitizeLeak.cpp
│ ├── SanitizeLeak.h
│ ├── ThreadCachedArena.cpp
│ ├── ThreadCachedArena.h
│ ├── UninitializedMemoryHacks.h
│ ├── detail/
│ │ ├── BUCK
│ │ ├── CMakeLists.txt
│ │ ├── MallocImpl.cpp
│ │ └── MallocImpl.h
│ ├── not_null-inl.h
│ ├── not_null.h
│ ├── shared_from_this_ptr.h
│ └── test/
│ ├── ArenaTest.cpp
│ ├── BUCK
│ ├── IOBufArenaFactoryTest.cpp
│ ├── MallctlHelperTest.cpp
│ ├── MallocBenchmark.cpp
│ ├── MallocTest.cpp
│ ├── MemoryResourceTest.cpp
│ ├── ReentrantAllocatorTest.cpp
│ ├── SanitizeAddressTest.cpp
│ ├── SanitizeLeakTest.cpp
│ ├── ThreadCachedArenaTest.cpp
│ ├── UninitializedMemoryHacksODR.cpp
│ ├── UninitializedMemoryHacksTest.cpp
│ ├── not_null_test.cpp
│ └── shared_from_this_ptr_test.cpp
├── memset.S
├── memset_select_aarch64.cpp
├── net/
│ ├── BUCK
│ ├── CMakeLists.txt
│ ├── NetOps.cpp
│ ├── NetOps.h
│ ├── NetOpsDispatcher.cpp
│ ├── NetOpsDispatcher.h
│ ├── NetworkSocket.h
│ ├── TcpInfo.cpp
│ ├── TcpInfo.h
│ ├── TcpInfoDispatcher.cpp
│ ├── TcpInfoDispatcher.h
│ ├── TcpInfoTypes.h
│ ├── detail/
│ │ ├── BUCK
│ │ ├── CMakeLists.txt
│ │ ├── SocketFileDescriptorMap.cpp
│ │ ├── SocketFileDescriptorMap.h
│ │ └── test/
│ │ ├── BUCK
│ │ └── SocketFileDescriptorMapTest.cpp
│ └── test/
│ ├── BUCK
│ ├── MockNetOpsDispatcher.h
│ ├── MockTcpInfoDispatcher.h
│ ├── NetOpsTest.cpp
│ ├── TcpInfoTest.cpp
│ └── TcpInfoTestUtil.h
├── observer/
│ ├── BUCK
│ ├── CMakeLists.txt
│ ├── CoreCachedObserver.h
│ ├── HazptrObserver.h
│ ├── Observable-inl.h
│ ├── Observable.h
│ ├── Observer-inl.h
│ ├── Observer-pre.h
│ ├── Observer.h
│ ├── ReadMostlyTLObserver.h
│ ├── SimpleObservable-inl.h
│ ├── SimpleObservable.h
│ ├── WithJitter-inl.h
│ ├── WithJitter.h
│ ├── detail/
│ │ ├── BUCK
│ │ ├── CMakeLists.txt
│ │ ├── Core.cpp
│ │ ├── Core.h
│ │ ├── GraphCycleDetector.h
│ │ ├── ObserverManager.cpp
│ │ └── ObserverManager.h
│ └── test/
│ ├── BUCK
│ ├── ObserverBenchmark.cpp
│ └── ObserverTest.cpp
├── poly/
│ ├── BUCK
│ ├── CMakeLists.txt
│ ├── Nullable.h
│ └── Regular.h
├── portability/
│ ├── Asm.h
│ ├── Atomic.h
│ ├── BUCK
│ ├── Builtins.cpp
│ ├── Builtins.h
│ ├── CMakeLists.txt
│ ├── Config.h
│ ├── Constexpr.h
│ ├── Dirent.cpp
│ ├── Dirent.h
│ ├── Event.h
│ ├── Fcntl.cpp
│ ├── Fcntl.h
│ ├── Filesystem.cpp
│ ├── Filesystem.h
│ ├── FmtCompile.h
│ ├── GFlags.cpp
│ ├── GFlags.h
│ ├── GMock.h
│ ├── GTest.h
│ ├── GTestProd.h
│ ├── IOVec.h
│ ├── Libgen.cpp
│ ├── Libgen.h
│ ├── Libunwind.h
│ ├── Malloc.cpp
│ ├── Malloc.h
│ ├── Math.h
│ ├── Memory.h
│ ├── OpenSSL.cpp
│ ├── OpenSSL.h
│ ├── PThread.cpp
│ ├── PThread.h
│ ├── README.md
│ ├── Sched.cpp
│ ├── Sched.h
│ ├── Sockets.cpp
│ ├── Sockets.h
│ ├── SourceLocation.h
│ ├── Stdio.cpp
│ ├── Stdio.h
│ ├── Stdlib.cpp
│ ├── Stdlib.h
│ ├── String.cpp
│ ├── String.h
│ ├── SysFile.cpp
│ ├── SysFile.h
│ ├── SysMembarrier.cpp
│ ├── SysMembarrier.h
│ ├── SysMman.cpp
│ ├── SysMman.h
│ ├── SysResource.cpp
│ ├── SysResource.h
│ ├── SysStat.cpp
│ ├── SysStat.h
│ ├── SysSyscall.h
│ ├── SysTime.cpp
│ ├── SysTime.h
│ ├── SysTypes.h
│ ├── SysUio.cpp
│ ├── SysUio.h
│ ├── Syslog.h
│ ├── Time.cpp
│ ├── Time.h
│ ├── Unistd.cpp
│ ├── Unistd.h
│ ├── Windows.h
│ ├── provide/
│ │ ├── BUCK
│ │ └── CMakeLists.txt
│ └── test/
│ ├── BUCK
│ ├── ConstexprTest.cpp
│ ├── FcntlTest.cpp
│ ├── FilesystemTest.cpp
│ ├── LibgenTest.cpp
│ ├── OpenSSLPortabilityTest.cpp
│ ├── PThreadTest.cpp
│ ├── TimeTest.cpp
│ └── UnistdTest.cpp
├── python/
│ ├── AsyncioExecutor.cpp
│ ├── AsyncioExecutor.h
│ ├── BUCK
│ ├── CMakeLists.txt
│ ├── GILAwareManualExecutor.cpp
│ ├── GILAwareManualExecutor.h
│ ├── ProactorExecutor.cpp
│ ├── ProactorExecutor.h
│ ├── ScopedGILRelease.h
│ ├── Weak.h
│ ├── __init__.pxd
│ ├── async_generator.h
│ ├── async_generator.pxd
│ ├── build_mode.pyi
│ ├── build_mode.pyx
│ ├── cast.pxd
│ ├── coro.h
│ ├── coro.pxd
│ ├── error.cpp
│ ├── error.h
│ ├── executor.cpp
│ ├── executor.h
│ ├── executor.pxd
│ ├── executor.pyx
│ ├── executor_detail.pxd
│ ├── expected.pxd
│ ├── fbstring.pxd
│ ├── fiber_manager.pxd
│ ├── fiber_manager.pyx
│ ├── fibers.cpp
│ ├── fibers.h
│ ├── fibers.pxd
│ ├── function.pxd
│ ├── futures.h
│ ├── futures.pxd
│ ├── import.h
│ ├── iobuf.cpp
│ ├── iobuf.h
│ ├── iobuf.pxd
│ ├── iobuf.pyi
│ ├── iobuf.pyx
│ ├── iobuf_ext.cpp
│ ├── iobuf_ext.h
│ ├── memory.pxd
│ ├── optional.pxd
│ ├── range.pxd
│ ├── request_context.h
│ ├── request_context.pxd
│ ├── request_context.pyi
│ ├── request_context.pyx
│ ├── setup.py
│ ├── test/
│ │ ├── AsyncGeneratorTest.cpp
│ │ ├── BUCK
│ │ ├── ErrorTest.cpp
│ │ ├── IOBufTestUtils.cpp
│ │ ├── IOBufTestUtils.h
│ │ ├── WeakTest.cpp
│ │ ├── coro.py
│ │ ├── futures.py
│ │ ├── generator.py
│ │ ├── iobuf.py
│ │ ├── iobuf_helper.pxd
│ │ ├── iobuf_helper.pyi
│ │ ├── iobuf_helper.pyx
│ │ ├── request_context.py
│ │ ├── request_context_helper.pyi
│ │ ├── request_context_helper.pyx
│ │ ├── simple.h
│ │ ├── simplebridge.pyx
│ │ ├── simplebridgecoro.pyx
│ │ ├── simplecoro.h
│ │ ├── simplegenerator.h
│ │ ├── simplegenerator.pyx
│ │ ├── teardown.py
│ │ ├── test_set_executor.h
│ │ ├── test_set_executor.py
│ │ └── test_set_executor_cython.pyx
│ └── windows/
│ └── iocp.pyx
├── random/
│ ├── BUCK
│ ├── CMakeLists.txt
│ ├── hash.h
│ ├── seed_seq.h
│ ├── test/
│ │ ├── BUCK
│ │ ├── Xoshiro256ppTest.cpp
│ │ ├── engine_bench.cpp
│ │ ├── hash_test.cpp
│ │ └── seed_seq_test.cpp
│ └── xoshiro256pp.h
├── result/
│ ├── BUCK
│ ├── CMakeLists.txt
│ ├── README.md
│ ├── coded_rich_error.h
│ ├── coro.h
│ ├── demo/
│ │ ├── BUCK
│ │ └── basketball.cpp
│ ├── detail/
│ │ ├── BUCK
│ │ ├── CMakeLists.txt
│ │ ├── immortal_exception_storage.h
│ │ ├── ptr_immortal_exception_storage.h
│ │ ├── result_or_unwind.h
│ │ ├── result_promise.h
│ │ ├── rich_error_common.h
│ │ ├── rich_exception_ptr_storage.cpp
│ │ └── rich_exception_ptr_storage.h
│ ├── docs/
│ │ ├── design_notes.md
│ │ ├── epitaphs.md
│ │ ├── future_epitaph_in_place.md
│ │ ├── future_fast_rtti.md
│ │ ├── future_ideas.md
│ │ ├── future_small_value.md
│ │ ├── result.md
│ │ ├── rich_error.md
│ │ ├── rich_error_code.md
│ │ └── rich_exception_ptr.md
│ ├── epitaph.cpp
│ ├── epitaph.h
│ ├── errc_rich_error.cpp
│ ├── errc_rich_error.h
│ ├── gtest_helpers.h
│ ├── immortal_rich_error.h
│ ├── nestable_coded_rich_error.h
│ ├── or_unwind_epitaph.h
│ ├── result.cpp
│ ├── result.h
│ ├── rich_error.h
│ ├── rich_error_base.cpp
│ ├── rich_error_base.h
│ ├── rich_error_code.cpp
│ ├── rich_error_code.h
│ ├── rich_error_fwd.h
│ ├── rich_exception_ptr.cpp
│ ├── rich_exception_ptr.h
│ ├── rich_msg.h
│ ├── test/
│ │ ├── BUCK
│ │ ├── coded_rich_error_test.cpp
│ │ ├── common.h
│ │ ├── epitaph_bench.cpp
│ │ ├── epitaph_test.cpp
│ │ ├── errc_rich_error_test.cpp
│ │ ├── immortal_rich_error_test.cpp
│ │ ├── nestable_coded_rich_error_test.cpp
│ │ ├── or_unwind_epitaph_test.cpp
│ │ ├── or_unwind_test.cpp
│ │ ├── result_bench.cpp
│ │ ├── result_coro_bench.cpp
│ │ ├── result_test.cpp
│ │ ├── rich_error_code_bench.cpp
│ │ ├── rich_error_code_test.cpp
│ │ ├── rich_error_codes.h
│ │ ├── rich_error_test.cpp
│ │ ├── rich_exception_ptr_bench.cpp
│ │ ├── rich_exception_ptr_check_get.h
│ │ ├── rich_exception_ptr_common.h
│ │ ├── rich_exception_ptr_constexpr.cpp
│ │ ├── rich_exception_ptr_fmt_bench.cpp
│ │ ├── rich_exception_ptr_fmt_test.cpp
│ │ ├── rich_exception_ptr_fundamentals_test.cpp
│ │ ├── rich_exception_ptr_immortal_test.cpp
│ │ ├── rich_exception_ptr_misc_test.cpp
│ │ ├── rich_exception_ptr_owned_test.cpp
│ │ ├── rich_msg_test.cpp
│ │ ├── stack_epitaph_test.cpp
│ │ ├── try_test.cpp
│ │ └── value_only_result_test.cpp
│ ├── try.h
│ ├── value_only_result.h
│ └── value_only_result_coro.h
├── rust/
│ ├── BUCK
│ ├── compression/
│ │ ├── BUCK
│ │ ├── compression.cpp
│ │ ├── compression.h
│ │ └── compression.rs
│ ├── dynamic/
│ │ ├── BUCK
│ │ ├── dynamic.cpp
│ │ ├── dynamic.h
│ │ └── dynamic.rs
│ ├── iobuf/
│ │ ├── BUCK
│ │ ├── iobuf.cpp
│ │ ├── iobuf.h
│ │ ├── iobuf_sys.rs
│ │ └── src/
│ │ ├── cursor.rs
│ │ ├── iobuf.rs
│ │ ├── iobufmut.rs
│ │ ├── lib.rs
│ │ └── test.rs
│ ├── lib.rs
│ ├── logging/
│ │ ├── BUCK
│ │ ├── lib.rs
│ │ ├── logging.cpp
│ │ └── logging.h
│ ├── memory/
│ │ ├── BUCK
│ │ ├── lib.rs
│ │ ├── memory.cpp
│ │ └── memory.h
│ ├── network_address/
│ │ ├── BUCK
│ │ ├── FollyWrapper.cpp
│ │ ├── FollyWrapper.h
│ │ └── src/
│ │ └── lib.rs
│ ├── request_context/
│ │ ├── BUCK
│ │ ├── benches/
│ │ │ └── request_context_tokio_bench.rs
│ │ ├── request_context.cpp
│ │ ├── request_context.h
│ │ ├── request_context.rs
│ │ ├── request_context_future.rs
│ │ └── request_context_tokio.rs
│ ├── singleton_vault/
│ │ ├── BUCK
│ │ ├── lib.rs
│ │ ├── singleton.cpp
│ │ ├── singleton.h
│ │ ├── singleton_test.cpp
│ │ ├── singleton_test.h
│ │ └── test.rs
│ ├── socket_address/
│ │ ├── BUCK
│ │ ├── RustSocketAddress.cpp
│ │ ├── RustSocketAddress.h
│ │ └── lib.rs
│ ├── string/
│ │ ├── BUCK
│ │ ├── lib.rs
│ │ ├── string.cpp
│ │ ├── string.h
│ │ └── string.rs
│ └── tdigest/
│ ├── BUCK
│ ├── tdigest.cpp
│ ├── tdigest.h
│ └── tdigest.rs
├── settings/
│ ├── BUCK
│ ├── CMakeLists.txt
│ ├── CommandLineParser.cpp
│ ├── CommandLineParser.h
│ ├── Immutables.cpp
│ ├── Immutables.h
│ ├── Observer.h
│ ├── Settings.cpp
│ ├── Settings.h
│ ├── SettingsAccessorProxy.cpp
│ ├── SettingsAccessorProxy.h
│ ├── Types.cpp
│ ├── Types.h
│ ├── detail/
│ │ └── SettingsImpl.h
│ └── test/
│ ├── BUCK
│ ├── CommandLineParserTest.cpp
│ ├── SettingsBenchmarks.cpp
│ ├── SettingsTest.cpp
│ ├── a.cpp
│ ├── a.h
│ ├── b.cpp
│ └── b.h
├── small_vector.h
├── somerge_defs.bzl
├── sorted_vector_types.h
├── ssl/
│ ├── BUCK
│ ├── CMakeLists.txt
│ ├── OpenSSLCertUtils.cpp
│ ├── OpenSSLCertUtils.h
│ ├── OpenSSLHash.cpp
│ ├── OpenSSLHash.h
│ ├── OpenSSLKeyUtils.cpp
│ ├── OpenSSLKeyUtils.h
│ ├── OpenSSLPtrTypes.h
│ ├── OpenSSLTicketHandler.h
│ ├── OpenSSLVersionFinder.h
│ ├── PasswordCollector.cpp
│ ├── PasswordCollector.h
│ ├── SSLSession.h
│ ├── SSLSessionManager.cpp
│ ├── SSLSessionManager.h
│ ├── detail/
│ │ ├── BUCK
│ │ ├── CMakeLists.txt
│ │ ├── OpenSSLSession.cpp
│ │ └── OpenSSLSession.h
│ └── test/
│ ├── BUCK
│ ├── OpenSSLCertUtilsTest.cpp
│ ├── OpenSSLHashTest.cpp
│ ├── OpenSSLKeyUtilsTest.cpp
│ └── SSLSessionManagerTest.cpp
├── stats/
│ ├── BUCK
│ ├── BucketedTimeSeries-inl.h
│ ├── BucketedTimeSeries.h
│ ├── CMakeLists.txt
│ ├── DigestBuilder-inl.h
│ ├── DigestBuilder.h
│ ├── Histogram-inl.h
│ ├── Histogram.h
│ ├── MultiLevelTimeSeries-inl.h
│ ├── MultiLevelTimeSeries.h
│ ├── QuantileEstimator-inl.h
│ ├── QuantileEstimator.cpp
│ ├── QuantileEstimator.h
│ ├── QuantileHistogram-inl.h
│ ├── QuantileHistogram.h
│ ├── StreamingStats.h
│ ├── TDigest.cpp
│ ├── TDigest.h
│ ├── TimeseriesHistogram-inl.h
│ ├── TimeseriesHistogram.h
│ ├── detail/
│ │ ├── BUCK
│ │ ├── Bucket.h
│ │ ├── BufferedStat-inl.h
│ │ ├── BufferedStat.h
│ │ ├── CMakeLists.txt
│ │ ├── DoubleRadixSort.cpp
│ │ ├── DoubleRadixSort.h
│ │ ├── SlidingWindow-inl.h
│ │ ├── SlidingWindow.h
│ │ └── test/
│ │ ├── BUCK
│ │ └── DoubleRadixSortTest.cpp
│ └── test/
│ ├── BUCK
│ ├── BucketedTimeSeriesBenchmark.cpp
│ ├── BufferedStatTest.cpp
│ ├── DigestBuilderBenchmark.cpp
│ ├── DigestBuilderTest.cpp
│ ├── HistogramBenchmark.cpp
│ ├── HistogramTest.cpp
│ ├── MultiLevelTimeSeriesBenchmark.cpp
│ ├── QuantileEstimatorBenchmark.cpp
│ ├── QuantileEstimatorTest.cpp
│ ├── QuantileHistogramBenchmark.cpp
│ ├── QuantileHistogramTest.cpp
│ ├── SlidingWindowTest.cpp
│ ├── StreamingStatsTest.cpp
│ ├── TDigestBenchmark.cpp
│ ├── TDigestTest.cpp
│ ├── TimeSeriesTest.cpp
│ └── TimeseriesHistogramTest.cpp
├── stop_watch.h
├── support/
│ ├── gdb.py
│ └── test/
│ ├── BUCK
│ ├── GdbUtil.h
│ ├── main.cpp
│ └── runtest.gdb
├── synchronization/
│ ├── AsymmetricThreadFence.cpp
│ ├── AsymmetricThreadFence.h
│ ├── AtomicNotification-inl.h
│ ├── AtomicNotification.cpp
│ ├── AtomicNotification.h
│ ├── AtomicRef.h
│ ├── AtomicStruct.h
│ ├── AtomicUtil-inl.h
│ ├── AtomicUtil.h
│ ├── BUCK
│ ├── Baton.h
│ ├── CMakeLists.txt
│ ├── CallOnce.h
│ ├── DelayedInit.h
│ ├── DistributedMutex-inl.h
│ ├── DistributedMutex.cpp
│ ├── DistributedMutex.h
│ ├── EventCount.h
│ ├── FlatCombining.h
│ ├── Hazptr-fwd.h
│ ├── Hazptr.cpp
│ ├── Hazptr.h
│ ├── HazptrDomain.cpp
│ ├── HazptrDomain.h
│ ├── HazptrHolder.h
│ ├── HazptrObj.h
│ ├── HazptrObjLinked.h
│ ├── HazptrRec.h
│ ├── HazptrThrLocal.h
│ ├── HazptrThreadPoolExecutor.cpp
│ ├── HazptrThreadPoolExecutor.h
│ ├── Latch.h
│ ├── LifoSem.h
│ ├── Lock.h
│ ├── MicroSpinLock.h
│ ├── NativeSemaphore.h
│ ├── ParkingLot.cpp
│ ├── ParkingLot.h
│ ├── PicoSpinLock.h
│ ├── RWSpinLock.h
│ ├── Rcu.cpp
│ ├── Rcu.h
│ ├── RelaxedAtomic.h
│ ├── SanitizeThread.cpp
│ ├── SanitizeThread.h
│ ├── SaturatingSemaphore.h
│ ├── SmallLocks.h
│ ├── StripedThrottledLifoSem.cpp
│ ├── StripedThrottledLifoSem.h
│ ├── ThrottledLifoSem.h
│ ├── WaitOptions.h
│ ├── detail/
│ │ ├── AtomicUtils.h
│ │ ├── BUCK
│ │ ├── CMakeLists.txt
│ │ ├── HazptrUtils.h
│ │ ├── InlineFunctionRef.h
│ │ ├── Sleeper.cpp
│ │ ├── Sleeper.h
│ │ ├── Spin.h
│ │ ├── ThreadCachedLists.h
│ │ ├── ThreadCachedReaders.h
│ │ ├── ThreadCachedTag.h
│ │ └── test/
│ │ ├── BUCK
│ │ └── InlineFunctionRefTest.cpp
│ ├── example/
│ │ ├── BUCK
│ │ ├── HazptrLockFreeLIFO.h
│ │ ├── HazptrSWMRSet.h
│ │ └── HazptrWideCAS.h
│ └── test/
│ ├── AtomicNotificationTest.cpp
│ ├── AtomicRefTest.cpp
│ ├── AtomicStructTest.cpp
│ ├── AtomicUtilBench.cpp
│ ├── AtomicUtilTest.cpp
│ ├── BUCK
│ ├── Barrier.h
│ ├── BarrierTest.cpp
│ ├── BatonBenchmark.cpp
│ ├── BatonTest.cpp
│ ├── BatonTestHelpers.h
│ ├── CallOnceBenchmark.cpp
│ ├── CallOnceTest.cpp
│ ├── DelayedInitTest.cpp
│ ├── DistributedMutexTest.cpp
│ ├── EventCountTest.cpp
│ ├── FlatCombiningBenchmark.cpp
│ ├── FlatCombiningExamples.h
│ ├── FlatCombiningTest.cpp
│ ├── FlatCombiningTestHelpers.h
│ ├── HazptrBench.cpp
│ ├── HazptrTest.cpp
│ ├── LatchTest.cpp
│ ├── LifoSemBench.cpp
│ ├── LifoSemTests.cpp
│ ├── LockTest.cpp
│ ├── NativeSemaphoreTest.cpp
│ ├── ParkingLotBenchmark.cpp
│ ├── ParkingLotTest.cpp
│ ├── RWSpinLockTest.cpp
│ ├── RcuBench.cpp
│ ├── RcuTest.cpp
│ ├── RelaxedAtomicTest.cpp
│ ├── SaturatingSemaphoreTest.cpp
│ ├── Semaphore.h
│ ├── SemaphoreTest.cpp
│ ├── SmallLocksBenchmark.cpp
│ ├── SmallLocksTest.cpp
│ ├── StripedThrottledLifoSemTest.cpp
│ ├── ThreadCachedEpochBench.h
│ ├── ThreadCachedReadersBench.cpp
│ ├── ThreadCachedReadersTest.cpp
│ └── ThrottledLifoSemTest.cpp
├── system/
│ ├── AtFork.cpp
│ ├── AtFork.h
│ ├── AuxVector.h
│ ├── BUCK
│ ├── CMakeLists.txt
│ ├── EnvUtil.cpp
│ ├── EnvUtil.h
│ ├── HardwareConcurrency.cpp
│ ├── HardwareConcurrency.h
│ ├── MemoryMapping.cpp
│ ├── MemoryMapping.h
│ ├── Pid.cpp
│ ├── Pid.h
│ ├── Shell.cpp
│ ├── Shell.h
│ ├── ThreadId.cpp
│ ├── ThreadId.h
│ ├── ThreadName.cpp
│ ├── ThreadName.h
│ ├── arch/
│ │ ├── BUCK
│ │ ├── CMakeLists.txt
│ │ ├── test/
│ │ │ ├── BUCK
│ │ │ └── x86_test.cpp
│ │ └── x86.h
│ ├── os/
│ │ ├── BUCK
│ │ ├── CMakeLists.txt
│ │ ├── linux.cpp
│ │ └── linux.h
│ └── test/
│ ├── AtForkTest.cpp
│ ├── AuxVectorTest.cpp
│ ├── BUCK
│ ├── EnvUtilTest.cpp
│ ├── HardwareConcurrencyTest.cpp
│ ├── MemoryMappingTest.cpp
│ ├── PidTest.cpp
│ ├── ShellTest.cpp
│ ├── ThreadIdTest.cpp
│ └── ThreadNameTest.cpp
├── test/
│ ├── AHMIntStressTest.cpp
│ ├── ArenaSmartPtrTest.cpp
│ ├── AsciiCaseInsensitiveBenchmark.cpp
│ ├── AsciiCaseInsensitiveTest.cpp
│ ├── AtomicHashArrayTest.cpp
│ ├── AtomicHashMapTest.cpp
│ ├── AtomicLinkedListTest.cpp
│ ├── AtomicUnorderedMapTest.cpp
│ ├── BUCK
│ ├── BenchmarkIntegrationTest.cpp
│ ├── BenchmarkTest.cpp
│ ├── BenchmarkUtilTest.cpp
│ ├── BufferedAtomic.cpp
│ ├── BufferedAtomic.h
│ ├── BufferedAtomicTest.cpp
│ ├── CancellationTokenBench.cpp
│ ├── CancellationTokenTest.cpp
│ ├── ChronoBench.cpp
│ ├── ChronoTest.cpp
│ ├── ClockGettimeWrappersTest.cpp
│ ├── ComparisonOperatorTestUtil.h
│ ├── ConcurrentBitSetTest.cpp
│ ├── ConcurrentLazyTest.cpp
│ ├── ConcurrentSkipListBenchmark.cpp
│ ├── ConcurrentSkipListTest.cpp
│ ├── ConstexprMathBenchmark.cpp
│ ├── ConstexprMathTest.cpp
│ ├── ConstructorCallbackListTest.cpp
│ ├── ConvBenchmark.cpp
│ ├── ConvTest.cpp
│ ├── CpuIdTest.cpp
│ ├── DemangleTest.cpp
│ ├── DeterministicSchedule.cpp
│ ├── DeterministicSchedule.h
│ ├── DeterministicScheduleTest.cpp
│ ├── DiscriminatedPtrTest.cpp
│ ├── EndianTest.cpp
│ ├── ExceptionStringTest.cpp
│ ├── ExceptionTest.cpp
│ ├── ExceptionWrapperBenchmark.cpp
│ ├── ExceptionWrapperTest.cpp
│ ├── ExecutorTest.cpp
│ ├── ExpectedCoroutinesBench.cpp
│ ├── ExpectedCoroutinesTest.cpp
│ ├── ExpectedTest.cpp
│ ├── FBStringBenchmark.cpp
│ ├── FBStringTest.cpp
│ ├── FBStringTestBenchmarks.cpp.h
│ ├── FBVectorTestUtil.cpp
│ ├── FBVectorTestUtil.h
│ ├── FileLockTest.cpp
│ ├── FileTest.cpp
│ ├── FileTestLockHelper.cpp
│ ├── FileUtilTest.cpp
│ ├── FingerprintBenchmark.cpp
│ ├── FingerprintTest.cpp
│ ├── FixedStringTest.cpp
│ ├── FmtUtilityTest.cpp
│ ├── FormatBenchmark.cpp
│ ├── FormatOtherTest.cpp
│ ├── FormatTest.cpp
│ ├── FunctionRefBenchmark.cpp
│ ├── FunctionRefTest.cpp
│ ├── FunctionTest.cpp
│ ├── FutexTest.cpp
│ ├── GLogBenchmark.cpp
│ ├── GLogTest.cpp
│ ├── GroupVarintTest.cpp
│ ├── IPAddressBenchmark.cpp
│ ├── IPAddressTest.cpp
│ ├── IndestructibleTest.cpp
│ ├── IndexedMemPoolTest.cpp
│ ├── IteratorsTest.cpp
│ ├── JsonMockUtil.h
│ ├── JsonTestUtil.h
│ ├── LazyTest.cpp
│ ├── MPMCPipelineTest.cpp
│ ├── MPMCQueueTest.cpp
│ ├── MacAddressTest.cpp
│ ├── MathBenchmark.cpp
│ ├── MathTest.cpp
│ ├── MaybeManagedPtrTest.cpp
│ ├── MemcpyBenchmark.cpp
│ ├── MemcpyTest.cpp
│ ├── MemcpyUseTest.cpp
│ ├── MemoryIdlerBenchmark.cpp
│ ├── MemoryIdlerTest.cpp
│ ├── MemoryTest.cpp
│ ├── MemsetBenchmark.cpp
│ ├── MemsetTest.cpp
│ ├── MoveWrapperTest.cpp
│ ├── ObserverContainerTest.cpp
│ ├── ObserverContainerTestUtil.h
│ ├── OptionalCoroutinesTest.cpp
│ ├── OptionalTest.cpp
│ ├── OverloadTest.cpp
│ ├── PackedSyncPtrTest.cpp
│ ├── PaddedTest.cpp
│ ├── PolyTest.cpp
│ ├── PortabilityTest.cpp
│ ├── ProducerConsumerQueueBenchmark.cpp
│ ├── ProducerConsumerQueueTest.cpp
│ ├── RandomBenchmark.cpp
│ ├── RandomTest.cpp
│ ├── RangeFindBenchmark.cpp
│ ├── RangeTest.cpp
│ ├── ReplaceableTest.cpp
│ ├── ScopeGuardTest.cpp
│ ├── SharedMutexTest.cpp
│ ├── SingletonBenchmark.cpp
│ ├── SingletonTest.cpp
│ ├── SingletonTestGlobal.cpp
│ ├── SingletonTestStructs.cpp
│ ├── SingletonTestStructs.h
│ ├── SingletonThreadLocalTest.cpp
│ ├── SingletonThreadLocalTestOverload.cpp
│ ├── SocketAddressTest.cpp
│ ├── SocketAddressTestHelper.cpp
│ ├── SocketAddressTestHelper.h
│ ├── SpinLockTest.cpp
│ ├── StringBenchmark.cpp
│ ├── StringTest.cpp
│ ├── StringToFloatBenchmark.cpp
│ ├── SubprocessBench.cpp
│ ├── SubprocessTest.cpp
│ ├── SubprocessTestParentDeathHelper.cpp
│ ├── SynchronizedBenchmark.cpp
│ ├── SynchronizedPtrTest.cpp
│ ├── SynchronizedTest.cpp
│ ├── SynchronizedTestLib-inl.h
│ ├── SynchronizedTestLib.h
│ ├── TestUtils.h
│ ├── TestUtilsTest.cpp
│ ├── ThreadCachedIntTest.cpp
│ ├── ThreadLocalAccessBenchmark.cpp
│ ├── ThreadLocalBenchmark.cpp
│ ├── ThreadLocalDestroyBenchmark.cpp
│ ├── ThreadLocalTest.cpp
│ ├── ThreadLocalTestLib.cpp
│ ├── TimeoutQueueTest.cpp
│ ├── TokenBucketTest.cpp
│ ├── TokenBucketTest.h
│ ├── TraitsTest.cpp
│ ├── TryTest.cpp
│ ├── UTF8StringTest.cpp
│ ├── UnicodeTest.cpp
│ ├── UnitTest.cpp
│ ├── UriBenchmark.cpp
│ ├── UriTest.cpp
│ ├── UtilityTest.cpp
│ ├── VarintTest.cpp
│ ├── base64_test.cpp
│ ├── common/
│ │ ├── BUCK
│ │ └── TestMain.cpp
│ └── stl_tests/
│ ├── BUCK
│ └── StlVectorTest.cpp
├── testing/
│ ├── BUCK
│ ├── CMakeLists.txt
│ ├── TestUtil.cpp
│ ├── TestUtil.h
│ └── test/
│ ├── BUCK
│ └── TestUtilTest.cpp
├── tool/
│ ├── BUCK
│ └── BenchmarkCompare.cpp
└── tracing/
├── AsyncStack-inl.h
├── AsyncStack.cpp
├── AsyncStack.h
├── BUCK
├── CMakeLists.txt
├── README.md
├── ScopedTraceSection.h
├── StaticTracepoint-ELF.h
├── StaticTracepoint.h
└── test/
├── AsyncStackTest.cpp
├── BUCK
├── StaticTracepointSectionTest.cpp
├── StaticTracepointSectionTest.lds
├── StaticTracepointTest.cpp
├── StaticTracepointTestModule.cpp
└── StaticTracepointTestModule.h
Showing preview only (1,168K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (13153 symbols across 1315 files)
FILE: build/fbcode_builder/CMake/fb_py_test_main.py
class get_cpu_instr_counter (line 42) | class get_cpu_instr_counter:
method read (line 43) | def read(self):
class TestStatus (line 52) | class TestStatus:
class PathMatcher (line 62) | class PathMatcher:
method __init__ (line 63) | def __init__(self, include_patterns, omit_patterns):
method omit (line 67) | def omit(self, path):
method include (line 78) | def include(self, path):
class DebugWipeFinder (line 82) | class DebugWipeFinder(PathFinder):
method __init__ (line 88) | def __init__(self, matcher):
method find_spec (line 91) | def find_spec(self, fullname, path=None, target=None):
function optimize_for_coverage (line 128) | def optimize_for_coverage(cov, include_patterns, omit_patterns):
class TeeStream (line 138) | class TeeStream:
method __init__ (line 139) | def __init__(self, *streams):
method write (line 142) | def write(self, data):
method flush (line 146) | def flush(self):
method isatty (line 150) | def isatty(self):
class CallbackStream (line 154) | class CallbackStream:
method __init__ (line 155) | def __init__(self, callback, bytes_callback=None, orig=None):
method write (line 170) | def write(self, data):
method flush (line 173) | def flush(self):
method isatty (line 176) | def isatty(self):
method fileno (line 179) | def fileno(self):
class BuckTestResult (line 183) | class BuckTestResult(unittest.TextTestResult):
method __init__ (line 191) | def __init__(
method getResults (line 203) | def getResults(self):
method startTest (line 206) | def startTest(self, test):
method _find_next_test (line 227) | def _find_next_test(self, suite):
method stopTest (line 245) | def stopTest(self, test):
method stopTestRun (line 282) | def stopTestRun(self):
method _withTest (line 288) | def _withTest(self, test):
method _setStatus (line 293) | def _setStatus(self, test, status, message=None, stacktrace=None):
method setStatus (line 302) | def setStatus(self, test, status, message=None, stacktrace=None):
method setException (line 314) | def setException(self, test, status, excinfo):
method addSuccess (line 323) | def addSuccess(self, test):
method addError (line 327) | def addError(self, test, err):
method addFailure (line 331) | def addFailure(self, test, err):
method addSkip (line 335) | def addSkip(self, test, reason):
method addExpectedFailure (line 339) | def addExpectedFailure(self, test, err):
method addUnexpectedSuccess (line 343) | def addUnexpectedSuccess(self, test):
method addStdout (line 347) | def addStdout(self, val):
method addStdoutBytes (line 353) | def addStdoutBytes(self, val):
method addStderr (line 357) | def addStderr(self, val):
method addStderrBytes (line 363) | def addStderrBytes(self, val):
class BuckTestRunner (line 368) | class BuckTestRunner(unittest.TextTestRunner):
method __init__ (line 369) | def __init__(self, main_program, suite, show_output=True, **kwargs):
method _makeResult (line 375) | def _makeResult(self):
function _format_test_name (line 386) | def _format_test_name(test_class, attrname):
class StderrLogHandler (line 390) | class StderrLogHandler(logging.StreamHandler):
method __init__ (line 401) | def __init__(self):
method stream (line 405) | def stream(self):
class RegexTestLoader (line 409) | class RegexTestLoader(unittest.TestLoader):
method __init__ (line 410) | def __init__(self, regex=None):
method getTestCaseNames (line 414) | def getTestCaseNames(self, testCaseClass):
class Loader (line 431) | class Loader:
method __init__ (line 435) | def __init__(self, modules, regex=None):
method load_all (line 439) | def load_all(self):
method load_args (line 449) | def load_args(self, args):
class MainProgram (line 486) | class MainProgram:
method __init__ (line 495) | def __init__(self, argv):
method init_option_parser (line 500) | def init_option_parser(self):
method parse_options (line 580) | def parse_options(self, argv):
method setup_logging (line 592) | def setup_logging(self):
method create_loader (line 629) | def create_loader(self):
method load_tests (line 634) | def load_tests(self):
method get_tests (line 651) | def get_tests(self, test_suite):
method run (line 662) | def run(self):
method run_tests (line 680) | def run_tests(self, test_suite):
method get_abbr_impl (line 704) | def get_abbr_impl(self):
method start_coverage (line 718) | def start_coverage(self):
method get_coverage (line 743) | def get_coverage(self):
method convert_to_diff_cov_str (line 780) | def convert_to_diff_cov_str(self, analysis):
function main (line 800) | def main(argv):
FILE: build/fbcode_builder/CMake/fb_py_win_main.c
function locate_py_main (line 13) | int locate_py_main(int argc, wchar_t** argv) {
function wmain (line 47) | int wmain() {
FILE: build/fbcode_builder/CMake/make_fbpy_archive.py
class UsageError (line 19) | class UsageError(Exception):
method __init__ (line 20) | def __init__(self, message):
method __str__ (line 23) | def __str__(self):
class BadManifestError (line 27) | class BadManifestError(UsageError):
method __init__ (line 28) | def __init__(self, path, line_num, message):
function parse_manifest (line 41) | def parse_manifest(manifest, path_map):
function populate_install_tree (line 93) | def populate_install_tree(inst_dir, path_map):
function build_pex (line 127) | def build_pex(args, path_map):
function build_zipapp (line 157) | def build_zipapp(args, path_map):
function create_main_module (line 177) | def create_main_module(args, inst_dir, path_map):
function build_install_dir (line 198) | def build_install_dir(args, path_map):
function ensure_directory (line 213) | def ensure_directory(path):
function install_library (line 221) | def install_library(args, path_map):
function parse_manifests (line 242) | def parse_manifests(args):
function check_main_module (line 258) | def check_main_module(args, path_map):
function main (line 303) | def main():
FILE: build/fbcode_builder/getdeps.py
class UsageError (line 46) | class UsageError(Exception):
class ValidateManifest (line 60) | class ValidateManifest(SubCmd):
method run (line 61) | def run(self, args):
method setup_parser (line 70) | def setup_parser(self, parser):
class ShowHostType (line 75) | class ShowHostType(SubCmd):
method run (line 76) | def run(self, args):
class ProjectCmdBase (line 82) | class ProjectCmdBase(SubCmd):
method run (line 83) | def run(self, args):
method process_project_dir_arguments (line 120) | def process_project_dir_arguments(self, args, loader):
method setup_parser (line 161) | def setup_parser(self, parser):
method setup_project_cmd_parser (line 220) | def setup_project_cmd_parser(self, parser):
method create_builder (line 223) | def create_builder(self, loader, manifest):
method check_built (line 239) | def check_built(self, loader, manifest):
class CachedProject (line 246) | class CachedProject:
method __init__ (line 250) | def __init__(self, cache, loader, m):
method is_cacheable (line 269) | def is_cacheable(self):
method was_cached (line 273) | def was_cached(self):
method download (line 277) | def download(self):
method upload (line 302) | def upload(self):
class FetchCmd (line 322) | class FetchCmd(ProjectCmdBase):
method setup_project_cmd_parser (line 323) | def setup_project_cmd_parser(self, parser):
method run_project_cmd (line 338) | def run_project_cmd(self, args, loader, manifest):
class InstallSysDepsCmd (line 371) | class InstallSysDepsCmd(ProjectCmdBase):
method setup_project_cmd_parser (line 372) | def setup_project_cmd_parser(self, parser):
method run_project_cmd (line 409) | def run_project_cmd(self, args, loader, manifest):
class ListDepsCmd (line 491) | class ListDepsCmd(ProjectCmdBase):
method run_project_cmd (line 492) | def run_project_cmd(self, args, loader, manifest):
method setup_project_cmd_parser (line 497) | def setup_project_cmd_parser(self, parser):
function clean_dirs (line 507) | def clean_dirs(opts):
class CleanCmd (line 516) | class CleanCmd(SubCmd):
method run (line 517) | def run(self, args):
class ShowScratchDirCmd (line 523) | class ShowScratchDirCmd(SubCmd):
method run (line 524) | def run(self, args):
class ShowBuildDirCmd (line 530) | class ShowBuildDirCmd(ProjectCmdBase):
method run_project_cmd (line 531) | def run_project_cmd(self, args, loader, manifest):
method setup_project_cmd_parser (line 541) | def setup_project_cmd_parser(self, parser):
class ShowInstDirCmd (line 551) | class ShowInstDirCmd(ProjectCmdBase):
method run_project_cmd (line 552) | def run_project_cmd(self, args, loader, manifest):
method setup_project_cmd_parser (line 568) | def setup_project_cmd_parser(self, parser):
class QueryPathsCmd (line 578) | class QueryPathsCmd(ProjectCmdBase):
method run_project_cmd (line 579) | def run_project_cmd(self, args, loader, manifest):
method setup_project_cmd_parser (line 600) | def setup_project_cmd_parser(self, parser):
class ShowSourceDirCmd (line 610) | class ShowSourceDirCmd(ProjectCmdBase):
method run_project_cmd (line 611) | def run_project_cmd(self, args, loader, manifest):
method setup_project_cmd_parser (line 621) | def setup_project_cmd_parser(self, parser):
class BuildCmd (line 631) | class BuildCmd(ProjectCmdBase):
method run_project_cmd (line 632) | def run_project_cmd(self, args, loader, manifest):
method compute_dep_change_status (line 757) | def compute_dep_change_status(self, m, built_marker, loader):
method compute_source_change_status (line 793) | def compute_source_change_status(
method setup_project_cmd_parser (line 834) | def setup_project_cmd_parser(self, parser):
class FixupDeps (line 897) | class FixupDeps(ProjectCmdBase):
method run_project_cmd (line 898) | def run_project_cmd(self, args, loader, manifest):
method setup_project_cmd_parser (line 924) | def setup_project_cmd_parser(self, parser):
class TestCmd (line 938) | class TestCmd(ProjectCmdBase):
method run_project_cmd (line 939) | def run_project_cmd(self, args, loader, manifest):
method setup_project_cmd_parser (line 953) | def setup_project_cmd_parser(self, parser):
class DebugCmd (line 982) | class DebugCmd(ProjectCmdBase):
method run_project_cmd (line 983) | def run_project_cmd(self, args, loader, manifest):
class EnvCmd (line 991) | class EnvCmd(ProjectCmdBase):
method setup_project_cmd_parser (line 992) | def setup_project_cmd_parser(self, parser):
method run_project_cmd (line 1002) | def run_project_cmd(self, args, loader, manifest):
class GenerateGitHubActionsCmd (line 1009) | class GenerateGitHubActionsCmd(ProjectCmdBase):
method run_project_cmd (line 1021) | def run_project_cmd(self, args, loader, manifest):
method get_run_on (line 1033) | def get_run_on(self, args):
method write_job_for_platform (line 1066) | def write_job_for_platform(self, platform, args): # noqa: C901
method setup_project_cmd_parser (line 1415) | def setup_project_cmd_parser(self, parser):
function get_arg_var_name (line 1486) | def get_arg_var_name(args):
function parse_args (line 1494) | def parse_args():
function main (line 1627) | def main():
FILE: build/fbcode_builder/getdeps/builder.py
class BuilderBase (line 38) | class BuilderBase:
method __init__ (line 39) | def __init__(
method _get_cmd_prefix (line 79) | def _get_cmd_prefix(self) -> list[str]:
method _check_cmd (line 101) | def _check_cmd(self, cmd: list[str], **kwargs: object) -> None:
method _run_cmd (line 110) | def _run_cmd(
method _reconfigure (line 143) | def _reconfigure(self, reconfigure: bool) -> bool:
method _apply_patchfile (line 150) | def _apply_patchfile(self) -> None:
method prepare (line 185) | def prepare(self, reconfigure: bool) -> None:
method debug (line 191) | def debug(self, reconfigure: bool) -> None:
method printenv (line 201) | def printenv(self, reconfigure: bool) -> None:
method build (line 224) | def build(self, reconfigure: bool) -> None:
method _job_weight_mib (line 254) | def _job_weight_mib(self) -> int:
method num_jobs (line 273) | def num_jobs(self) -> int:
method memory_limit_preexec_fn (line 277) | def memory_limit_preexec_fn(self) -> Callable[[], None] | None:
method run_tests (line 285) | def run_tests(
method _prepare (line 299) | def _prepare(self, reconfigure: bool) -> None:
method _build (line 305) | def _build(self, reconfigure: bool) -> None:
method _compute_env (line 312) | def _compute_env(self, env: Env | None = None) -> Env:
method get_dev_run_script_path (line 325) | def get_dev_run_script_path(self) -> str:
method get_dev_run_extra_path_dirs (line 329) | def get_dev_run_extra_path_dirs(
class MakeBuilder (line 341) | class MakeBuilder(BuilderBase):
method __init__ (line 342) | def __init__(
method _make_binary (line 371) | def _make_binary(self) -> str | None:
method _get_prefix (line 374) | def _get_prefix(self) -> list[str]:
method _build (line 377) | def _build(self, reconfigure: bool) -> None:
method run_tests (line 406) | def run_tests(
class CMakeBootStrapBuilder (line 447) | class CMakeBootStrapBuilder(MakeBuilder):
method _build (line 448) | def _build(self, reconfigure: bool) -> None:
class AutoconfBuilder (line 459) | class AutoconfBuilder(BuilderBase):
method __init__ (line 460) | def __init__(
method _make_binary (line 493) | def _make_binary(self) -> str | None:
method _build (line 496) | def _build(self, reconfigure: bool) -> None:
class Iproute2Builder (line 540) | class Iproute2Builder(BuilderBase):
method __init__ (line 545) | def __init__(
method _build (line 567) | def _build(self, reconfigure: bool) -> None:
class MesonBuilder (line 585) | class MesonBuilder(BuilderBase):
method __init__ (line 588) | def __init__(
method _build (line 610) | def _build(self, reconfigure: bool) -> None:
class CMakeBuilder (line 644) | class CMakeBuilder(BuilderBase):
method __init__ (line 757) | def __init__(
method _invalidate_cache (line 801) | def _invalidate_cache(self) -> None:
method _needs_reconfigure (line 813) | def _needs_reconfigure(self) -> bool:
method _write_build_script (line 820) | def _write_build_script(self, **kwargs: object) -> None:
method _compute_cmake_define_args (line 856) | def _compute_cmake_define_args(self, env: Env) -> list[str]:
method _run_include_rewriter (line 924) | def _run_include_rewriter(self) -> None:
method _build (line 941) | def _build(self, reconfigure: bool) -> None:
method _build_targets (line 1005) | def _build_targets(self, targets: Sequence[str]) -> None:
method _get_missing_test_executables (line 1044) | def _get_missing_test_executables(
method run_tests (line 1082) | def run_tests(
class NinjaBootstrap (line 1345) | class NinjaBootstrap(BuilderBase):
method __init__ (line 1346) | def __init__(
method _build (line 1368) | def _build(self, reconfigure: bool) -> None:
class OpenSSLBuilder (line 1381) | class OpenSSLBuilder(BuilderBase):
method __init__ (line 1382) | def __init__(
method _build (line 1404) | def _build(self, reconfigure: bool) -> None:
class Boost (line 1469) | class Boost(BuilderBase):
method __init__ (line 1470) | def __init__(
method _build (line 1499) | def _build(self, reconfigure: bool) -> None:
class NopBuilder (line 1554) | class NopBuilder(BuilderBase):
method __init__ (line 1555) | def __init__(
method build (line 1569) | def build(self, reconfigure: bool) -> None:
class SetupPyBuilder (line 1609) | class SetupPyBuilder(BuilderBase):
method _build (line 1610) | def _build(self, reconfigure: bool) -> None:
method run_tests (line 1640) | def run_tests(
class SqliteBuilder (line 1667) | class SqliteBuilder(BuilderBase):
method __init__ (line 1668) | def __init__(
method _build (line 1690) | def _build(self, reconfigure: bool) -> None:
FILE: build/fbcode_builder/getdeps/buildopts.py
function detect_project (line 34) | def detect_project(path: str) -> tuple[str | None, str | None]:
class BuildOptions (line 53) | class BuildOptions:
method __init__ (line 54) | def __init__(
method manifests_dir (line 196) | def manifests_dir(self) -> str:
method is_darwin (line 199) | def is_darwin(self) -> bool:
method is_windows (line 202) | def is_windows(self) -> bool:
method is_arm (line 205) | def is_arm(self) -> bool:
method get_vcvars_path (line 208) | def get_vcvars_path(self) -> str | None:
method is_linux (line 211) | def is_linux(self) -> bool:
method is_freebsd (line 214) | def is_freebsd(self) -> bool:
method get_num_jobs (line 217) | def get_num_jobs(self, job_weight: int) -> int:
method get_context_generator (line 228) | def get_context_generator(
method compute_env_for_install_dirs (line 251) | def compute_env_for_install_dirs(
method add_homebrew_package_to_env (line 389) | def add_homebrew_package_to_env(self, package: str, env: Env) -> bool:
method add_prefix_to_env (line 397) | def add_prefix_to_env(
function list_win32_subst_letters (line 529) | def list_win32_subst_letters() -> dict[str, str]:
function find_existing_win32_subst_for_path (line 545) | def find_existing_win32_subst_for_path(
function find_unused_drive_letter (line 556) | def find_unused_drive_letter() -> str | None:
function map_subst_path (line 580) | def map_subst_path(path: str) -> str:
function _check_host_type (line 611) | def _check_host_type(args: argparse.Namespace, host_type: HostType | Non...
function setup_build_options (line 623) | def setup_build_options(
FILE: build/fbcode_builder/getdeps/cache.py
class ArtifactCache (line 11) | class ArtifactCache:
method download_to_file (line 17) | def download_to_file(self, name: str, dest_file_name: str) -> bool:
method upload_from_file (line 28) | def upload_from_file(self, name: str, source_file_name: str) -> None:
function create_cache (line 38) | def create_cache() -> ArtifactCache | None:
FILE: build/fbcode_builder/getdeps/cargo.py
class CargoBuilder (line 25) | class CargoBuilder(BuilderBase):
method __init__ (line 26) | def __init__(
method run_cargo (line 61) | def run_cargo(
method build_source_dir (line 80) | def build_source_dir(self) -> str:
method workspace_dir (line 83) | def workspace_dir(self) -> str:
method manifest_dir (line 86) | def manifest_dir(self, manifest: str) -> str:
method recreate_dir (line 89) | def recreate_dir(self, src: str, dst: str) -> None:
method recreate_linked_dir (line 97) | def recreate_linked_dir(self, src: str, dst: str) -> None:
method cargo_config_file (line 105) | def cargo_config_file(self) -> str:
method _create_cargo_config (line 112) | def _create_cargo_config(self) -> dict[str, dict[str, str]]:
method _prepare (line 178) | def _prepare(self, reconfigure: bool) -> None:
method _build (line 187) | def _build(self, reconfigure: bool) -> None:
method run_tests (line 223) | def run_tests(
method _patchup_workspace (line 256) | def _patchup_workspace(self, dep_to_git: dict[str, dict[str, str]]) ->...
method _resolve_config (line 325) | def _resolve_config(
method _resolve_dep_to_git (line 360) | def _resolve_dep_to_git(self) -> dict[str, dict[str, str]]:
method _resolve_dep_to_crates (line 448) | def _resolve_dep_to_crates(
method _extract_crates_used (line 492) | def _extract_crates_used(
method _resolve_crate_to_path (line 521) | def _resolve_crate_to_path(
FILE: build/fbcode_builder/getdeps/copytree.py
function containing_repo_type (line 23) | def containing_repo_type(path: str) -> tuple[str | None, str | None]:
function find_eden_root (line 36) | def find_eden_root(dirpath: str) -> str | None:
function prefetch_dir_if_eden (line 55) | def prefetch_dir_if_eden(dirpath: str) -> None:
function simple_copytree (line 73) | def simple_copytree(src_dir: str, dest_dir: str, symlinks: bool = False)...
function _remove_readonly_and_try_again (line 106) | def _remove_readonly_and_try_again(
function rmtree_more (line 134) | def rmtree_more(path: str) -> None:
FILE: build/fbcode_builder/getdeps/dyndeps.py
function copyfile (line 29) | def copyfile(src: str, dest: str) -> None:
class DepBase (line 34) | class DepBase:
method __init__ (line 35) | def __init__(
method list_dynamic_deps (line 53) | def list_dynamic_deps(self, objfile: str) -> list[str]:
method interesting_dep (line 56) | def interesting_dep(self, d: str) -> bool:
method process_deps (line 64) | def process_deps(
method find_all_dependencies (line 97) | def find_all_dependencies(self, build_dir: str) -> list[str]:
method munge_in_place (line 114) | def munge_in_place(self, objfile: str, final_lib_dir: str) -> None:
method rewrite_dep (line 142) | def rewrite_dep(
method resolve_loader_path (line 152) | def resolve_loader_path(self, dep: str) -> str | None:
method list_objs_in_dir (line 163) | def list_objs_in_dir(
method is_objfile (line 180) | def is_objfile(self, objfile: str) -> bool:
method strip_debug_info (line 183) | def strip_debug_info(self, objfile: str) -> None:
method check_call_verbose (line 188) | def check_call_verbose(self, args: list[str]) -> None:
class WinDeps (line 193) | class WinDeps(DepBase):
method __init__ (line 194) | def __init__(
method find_dumpbin (line 204) | def find_dumpbin(self) -> str:
method list_dynamic_deps (line 239) | def list_dynamic_deps(self, exe: str) -> list[str]:
method rewrite_dep (line 254) | def rewrite_dep(
method interesting_dep (line 282) | def interesting_dep(self, d: str) -> bool:
method is_objfile (line 289) | def is_objfile(self, objfile: str) -> bool:
method emit_dev_run_script (line 296) | def emit_dev_run_script(self, script_path: str, dep_dirs: list[str]) -...
method compute_dependency_paths (line 312) | def compute_dependency_paths(self, build_dir: str) -> list[str]:
method compute_dependency_paths_fast (line 328) | def compute_dependency_paths_fast(self, build_dir: str) -> list[str]:
method read_custom_dep_dirs (line 344) | def read_custom_dep_dirs(self, build_dir: str) -> set[str]:
method _get_dev_run_script_contents (line 364) | def _get_dev_run_script_contents(self, path_dirs: list[str]) -> str:
class ElfDeps (line 382) | class ElfDeps(DepBase):
method __init__ (line 383) | def __init__(
method list_dynamic_deps (line 409) | def list_dynamic_deps(self, objfile: str) -> list[str]:
method rewrite_dep (line 420) | def rewrite_dep(
method is_objfile (line 436) | def is_objfile(self, objfile: str) -> bool:
method strip_debug_info (line 444) | def strip_debug_info(self, objfile: str) -> None:
class MachDeps (line 452) | class MachDeps(DepBase):
method interesting_dep (line 453) | def interesting_dep(self, d: str) -> bool:
method is_objfile (line 458) | def is_objfile(self, objfile: str) -> bool:
method list_dynamic_deps (line 470) | def list_dynamic_deps(self, objfile: str) -> list[str]:
method rewrite_dep (line 489) | def rewrite_dep(
function create_dyn_dep_munger (line 514) | def create_dyn_dep_munger(
FILE: build/fbcode_builder/getdeps/envfuncs.py
class Env (line 16) | class Env:
method __init__ (line 17) | def __init__(self, src: Mapping[str, str] | None = None) -> None:
method update (line 24) | def update(self, src: Mapping[str, str]) -> None:
method copy (line 28) | def copy(self) -> Env:
method _key (line 31) | def _key(self, key: str) -> str | None:
method get (line 60) | def get(self, key: str, defval: str | None = None) -> str | None:
method __getitem__ (line 66) | def __getitem__(self, key: str) -> str:
method unset (line 72) | def unset(self, key: str) -> None:
method __delitem__ (line 80) | def __delitem__(self, key: str) -> None:
method __repr__ (line 83) | def __repr__(self) -> str:
method set (line 86) | def set(self, key: str, value: str) -> None:
method __setitem__ (line 107) | def __setitem__(self, key: str, value: str) -> None:
method __iter__ (line 110) | def __iter__(self) -> Iterator[str]:
method __len__ (line 113) | def __len__(self) -> int:
method keys (line 116) | def keys(self) -> KeysView[str]:
method values (line 119) | def values(self) -> ValuesView[str]:
method items (line 122) | def items(self) -> ItemsView[str, str]:
function add_path_entry (line 126) | def add_path_entry(
function add_flag (line 145) | def add_flag(env: Env, name: str, flag: str, append: bool = True) -> None:
function tpx_path (line 162) | def tpx_path() -> str:
function path_search (line 166) | def path_search(
function _perform_path_search (line 191) | def _perform_path_search(path: str, exename: str) -> str | None:
FILE: build/fbcode_builder/getdeps/errors.py
class TransientFailure (line 9) | class TransientFailure(Exception):
class ManifestNotFound (line 17) | class ManifestNotFound(Exception):
method __init__ (line 18) | def __init__(self, manifest_name: str) -> None:
FILE: build/fbcode_builder/getdeps/expr.py
function parse_expr (line 15) | def parse_expr(expr_text: str, valid_variables: set[str]) -> ExprNode:
class ExprNode (line 44) | class ExprNode:
method eval (line 45) | def eval(self, ctx: dict[str, str | None]) -> bool:
class TrueExpr (line 49) | class TrueExpr(ExprNode):
method eval (line 50) | def eval(self, ctx: dict[str, str | None]) -> bool:
method __str__ (line 53) | def __str__(self) -> str:
class NotExpr (line 57) | class NotExpr(ExprNode):
method __init__ (line 58) | def __init__(self, node: ExprNode) -> None:
method eval (line 61) | def eval(self, ctx: dict[str, str | None]) -> bool:
method __str__ (line 64) | def __str__(self) -> str:
class AllExpr (line 68) | class AllExpr(ExprNode):
method __init__ (line 69) | def __init__(self, nodes: list[ExprNode]) -> None:
method eval (line 72) | def eval(self, ctx: dict[str, str | None]) -> bool:
method __str__ (line 78) | def __str__(self) -> str:
class AnyExpr (line 85) | class AnyExpr(ExprNode):
method __init__ (line 86) | def __init__(self, nodes: list[ExprNode]) -> None:
method eval (line 89) | def eval(self, ctx: dict[str, str | None]) -> bool:
method __str__ (line 95) | def __str__(self) -> str:
class EqualExpr (line 102) | class EqualExpr(ExprNode):
method __init__ (line 103) | def __init__(self, key: str, value: str) -> None:
method eval (line 107) | def eval(self, ctx: dict[str, str | None]) -> bool:
method __str__ (line 110) | def __str__(self) -> str:
class Parser (line 114) | class Parser:
method __init__ (line 115) | def __init__(self, text: str, valid_variables: set[str]) -> None:
method parse (line 120) | def parse(self) -> ExprNode:
method top (line 129) | def top(self) -> ExprNode:
method ident (line 158) | def ident(self) -> str:
method parse_not (line 164) | def parse_not(self) -> NotExpr:
method parse_any (line 172) | def parse_any(self) -> AnyExpr:
method parse_all (line 183) | def parse_all(self) -> AllExpr:
FILE: build/fbcode_builder/getdeps/fetcher.py
function file_name_is_cmake_file (line 42) | def file_name_is_cmake_file(file_name: str) -> bool:
class ChangeStatus (line 52) | class ChangeStatus:
method __init__ (line 65) | def __init__(self, all_changed: bool = False) -> None:
method record_change (line 76) | def record_change(self, file_name: str) -> None:
method sources_changed (line 96) | def sources_changed(self) -> bool:
method build_changed (line 103) | def build_changed(self) -> bool:
class Fetcher (line 111) | class Fetcher(ABC):
method update (line 117) | def update(self) -> ChangeStatus:
method clean (line 126) | def clean(self) -> None:
method hash (line 132) | def hash(self) -> str:
method get_src_dir (line 146) | def get_src_dir(self) -> str:
class LocalDirFetcher (line 152) | class LocalDirFetcher:
method __init__ (line 159) | def __init__(self, path: str) -> None:
method update (line 162) | def update(self) -> ChangeStatus:
method hash (line 165) | def hash(self) -> str:
method get_src_dir (line 168) | def get_src_dir(self) -> str:
method clean (line 171) | def clean(self) -> None:
class SystemPackageFetcher (line 175) | class SystemPackageFetcher:
method __init__ (line 176) | def __init__(
method packages_are_installed (line 188) | def packages_are_installed(self) -> bool:
method update (line 224) | def update(self) -> ChangeStatus:
method hash (line 228) | def hash(self) -> str:
method get_src_dir (line 234) | def get_src_dir(self) -> None:
class PreinstalledNopFetcher (line 238) | class PreinstalledNopFetcher(SystemPackageFetcher):
method __init__ (line 239) | def __init__(self) -> None:
class GitFetcher (line 243) | class GitFetcher(Fetcher):
method __init__ (line 246) | def __init__(
method _update (line 291) | def _update(self) -> ChangeStatus:
method update (line 320) | def update(self) -> ChangeStatus:
method _clone (line 326) | def _clone(self) -> None:
method clean (line 347) | def clean(self) -> None:
method hash (line 351) | def hash(self) -> str:
method get_src_dir (line 354) | def get_src_dir(self) -> str:
function does_file_need_update (line 358) | def does_file_need_update(
function copy_if_different (line 392) | def copy_if_different(src_name: str, dest_name: str) -> bool:
function filter_strip_marker (line 417) | def filter_strip_marker(dest_name: str, marker: str) -> None:
function list_files_under_dir_newer_than_timestamp (line 442) | def list_files_under_dir_newer_than_timestamp(
class ShipitPathMap (line 453) | class ShipitPathMap:
method __init__ (line 454) | def __init__(self) -> None:
method add_mapping (line 460) | def add_mapping(self, fbsource_dir: str, target_dir: str) -> None:
method add_exclusion (line 468) | def add_exclusion(self, pattern: str) -> None:
method _minimize_roots (line 472) | def _minimize_roots(self) -> None:
method _sort_mapping (line 490) | def _sort_mapping(self) -> None:
method _map_name (line 493) | def _map_name(self, norm_name: str, dest_root: str) -> str | None:
method mirror (line 520) | def mirror(self, fbsource_root: str, dest_root: str) -> ChangeStatus:
class FbsourceRepoData (line 594) | class FbsourceRepoData(NamedTuple):
function get_fbsource_repo_data (line 602) | def get_fbsource_repo_data(build_options: BuildOptions) -> FbsourceRepoD...
function is_public_commit (line 636) | def is_public_commit(build_options: BuildOptions) -> bool: # noqa: C901
class SimpleShipitTransformerFetcher (line 727) | class SimpleShipitTransformerFetcher(Fetcher):
method __init__ (line 728) | def __init__(
method clean (line 741) | def clean(self) -> None:
method update (line 745) | def update(self) -> ChangeStatus:
method hash (line 765) | def hash(self) -> str:
method get_src_dir (line 771) | def get_src_dir(self) -> str:
class SubFetcher (line 775) | class SubFetcher(Fetcher):
method __init__ (line 778) | def __init__(self, base: Fetcher, subs: list[tuple[Fetcher, str]]) -> ...
method update (line 782) | def update(self) -> ChangeStatus:
method clean (line 794) | def clean(self) -> None:
method hash (line 799) | def hash(self) -> str:
method get_src_dir (line 805) | def get_src_dir(self) -> str:
class ShipitTransformerFetcher (line 809) | class ShipitTransformerFetcher(Fetcher):
method _shipit_paths (line 811) | def _shipit_paths(cls, build_options: BuildOptions) -> list[str]:
method __init__ (line 824) | def __init__(
method update (line 839) | def update(self) -> ChangeStatus:
method clean (line 845) | def clean(self) -> None:
method available (line 850) | def available(cls, build_options: BuildOptions) -> bool:
method run_shipit (line 856) | def run_shipit(self) -> None:
method hash (line 900) | def hash(self) -> str:
method get_src_dir (line 904) | def get_src_dir(self) -> str:
function download_url_to_file_with_progress (line 908) | def download_url_to_file_with_progress(url: str, file_name: str) -> None:
class ArchiveFetcher (line 1011) | class ArchiveFetcher(Fetcher):
method __init__ (line 1012) | def __init__(
method _verify_hash (line 1034) | def _verify_hash(self) -> None:
method _download_dir (line 1049) | def _download_dir(self) -> str:
method _download (line 1056) | def _download(self) -> None:
method clean (line 1074) | def clean(self) -> None:
method update (line 1078) | def update(self) -> ChangeStatus:
method hash (line 1148) | def hash(self) -> str:
method get_src_dir (line 1151) | def get_src_dir(self) -> str:
function homebrew_package_prefix (line 1155) | def homebrew_package_prefix(package: str) -> str | None:
FILE: build/fbcode_builder/getdeps/include_rewriter.py
class IncludePathRewriter (line 27) | class IncludePathRewriter:
method __init__ (line 43) | def __init__(self, mappings: list[tuple[str, str]], verbose: bool = Fa...
method rewrite_file (line 65) | def rewrite_file(self, file_path: Path, dry_run: bool = False) -> bool:
method process_directory (line 128) | def process_directory(self, source_dir: Path, dry_run: bool = False) -...
function rewrite_includes_from_manifest (line 175) | def rewrite_includes_from_manifest(
FILE: build/fbcode_builder/getdeps/load.py
class Loader (line 26) | class Loader:
method _list_manifests (line 29) | def _list_manifests(self, build_opts: BuildOptions) -> Iterator[str]:
method _load_manifest (line 39) | def _load_manifest(self, path: str) -> ManifestParser:
method load_project (line 42) | def load_project(
method load_all (line 55) | def load_all(self, build_opts: BuildOptions) -> dict[str, ManifestPars...
class ResourceLoader (line 69) | class ResourceLoader(Loader):
method __init__ (line 70) | def __init__(self, namespace: str, manifests_dir: str) -> None:
method _list_manifests (line 74) | def _list_manifests(self, build_opts: BuildOptions) -> Iterator[str]:
method _find_manifest (line 89) | def _find_manifest(self, project_name: str) -> str:
method _load_manifest (line 97) | def _load_manifest(self, path: str) -> ManifestParser:
method load_project (line 103) | def load_project(
function patch_loader (line 114) | def patch_loader(namespace: str, manifests_dir: str = "manifests") -> None:
function load_project (line 119) | def load_project(build_opts: BuildOptions, project_name: str) -> Manifes...
function load_all_manifests (line 125) | def load_all_manifests(build_opts: BuildOptions) -> dict[str, ManifestPa...
class ManifestLoader (line 129) | class ManifestLoader:
method __init__ (line 137) | def __init__(
method load_manifest (line 155) | def load_manifest(self, name: str) -> ManifestParser:
method load_all_manifests (line 162) | def load_all_manifests(self) -> dict[str, ManifestParser]:
method dependencies_of (line 177) | def dependencies_of(self, manifest: ManifestParser) -> list[ManifestPa...
method manifests_in_dependency_order (line 185) | def manifests_in_dependency_order(
method set_project_src_dir (line 263) | def set_project_src_dir(self, project_name: str, path: str) -> None:
method set_project_build_dir (line 266) | def set_project_build_dir(self, project_name: str, path: str) -> None:
method set_project_install_dir (line 269) | def set_project_install_dir(self, project_name: str, path: str) -> None:
method set_project_install_prefix (line 272) | def set_project_install_prefix(self, project_name: str, path: str) -> ...
method create_fetcher (line 275) | def create_fetcher(
method get_project_hash (line 285) | def get_project_hash(self, manifest: ManifestParser) -> str:
method _compute_project_hash (line 292) | def _compute_project_hash(self, manifest: ManifestParser) -> str:
method _get_project_dir_name (line 368) | def _get_project_dir_name(self, manifest: ManifestParser) -> str:
method get_project_install_dir (line 375) | def get_project_install_dir(self, manifest: ManifestParser) -> str:
method get_project_build_dir (line 383) | def get_project_build_dir(self, manifest: ManifestParser) -> str:
method get_project_install_prefix (line 391) | def get_project_install_prefix(self, manifest: ManifestParser) -> str ...
method get_project_install_dir_respecting_install_prefix (line 394) | def get_project_install_dir_respecting_install_prefix(
FILE: build/fbcode_builder/getdeps/manifest.py
function parse_conditional_section_name (line 166) | def parse_conditional_section_name(name: str, section_def: str) -> ExprN...
function validate_allowed_fields (line 171) | def validate_allowed_fields(
function validate_allow_values (line 192) | def validate_allow_values(
function validate_section (line 208) | def validate_section(
class ManifestParser (line 243) | class ManifestParser:
method __init__ (line 244) | def __init__(self, file_name: str, fp: str | typing.IO[str] | None = N...
method get (line 299) | def get(
method get_dependencies (line 327) | def get_dependencies(self, ctx: ManifestContext) -> list[str]:
method get_section_as_args (line 345) | def get_section_as_args(
method get_section_as_ordered_pairs (line 377) | def get_section_as_ordered_pairs(
method get_section_as_dict (line 403) | def get_section_as_dict(
method update_hash (line 425) | def update_hash(self, hasher: hashlib._Hash, ctx: ManifestContext) -> ...
method is_first_party_project (line 451) | def is_first_party_project(self) -> bool:
method get_required_system_packages (line 455) | def get_required_system_packages(
method _is_satisfied_by_preinstalled_environment (line 466) | def _is_satisfied_by_preinstalled_environment(self, ctx: ManifestConte...
method get_repo_url (line 483) | def get_repo_url(self, ctx: ManifestContext) -> str | None:
method _create_fetcher (line 486) | def _create_fetcher(
method create_fetcher (line 574) | def create_fetcher(
method get_builder_name (line 594) | def get_builder_name(self, ctx: ManifestContext) -> str:
method create_builder (line 600) | def create_builder( # noqa:C901
method create_prepare_builders (line 817) | def create_prepare_builders(
method create_cargo_builder (line 844) | def create_cargo_builder(
class ManifestContext (line 876) | class ManifestContext:
method __init__ (line 893) | def __init__(self, ctx_dict: dict[str, str | None]) -> None:
method get (line 897) | def get(self, key: str) -> str | None:
method set (line 900) | def set(self, key: str, value: str | None) -> None:
method copy (line 904) | def copy(self) -> ManifestContext:
method __str__ (line 907) | def __str__(self) -> str:
class ContextGenerator (line 914) | class ContextGenerator:
method __init__ (line 920) | def __init__(self, default_ctx: dict[str, str | None]) -> None:
method set_value_for_project (line 924) | def set_value_for_project(
method set_value_for_all_projects (line 933) | def set_value_for_all_projects(self, key: str, value: str | None) -> N...
method get_context (line 938) | def get_context(self, project_name: str) -> ManifestContext:
FILE: build/fbcode_builder/getdeps/platform.py
function is_windows (line 16) | def is_windows() -> bool:
function get_linux_type (line 22) | def get_linux_type() -> tuple[str | None, str | None, str | None]:
function _get_available_ram_linux (line 59) | def _get_available_ram_linux() -> int:
function _get_available_ram_macos (line 90) | def _get_available_ram_macos() -> int:
function _get_available_ram_windows (line 117) | def _get_available_ram_windows() -> int:
function _get_available_ram_freebsd (line 148) | def _get_available_ram_freebsd() -> int:
function get_available_ram (line 174) | def get_available_ram() -> int:
function is_current_host_arm (line 192) | def is_current_host_arm() -> bool:
class HostType (line 201) | class HostType:
method __init__ (line 202) | def __init__(
method is_windows (line 242) | def is_windows(self) -> bool:
method is_arm (line 252) | def is_arm(self) -> bool:
method is_darwin (line 255) | def is_darwin(self) -> bool:
method is_linux (line 258) | def is_linux(self) -> bool:
method is_freebsd (line 261) | def is_freebsd(self) -> bool:
method as_tuple_string (line 264) | def as_tuple_string(self) -> str:
method get_package_manager (line 271) | def get_package_manager(self) -> str | None:
method from_tuple_string (line 287) | def from_tuple_string(s: str) -> HostType:
method __eq__ (line 291) | def __eq__(self, b: object) -> bool:
FILE: build/fbcode_builder/getdeps/py_wheel_builder.py
class PythonWheelBuilder (line 99) | class PythonWheelBuilder(BuilderBase):
method _build (line 109) | def _build(self, reconfigure: bool) -> None:
method _run_cmake_build (line 178) | def _run_cmake_build(self, reconfigure: bool) -> None:
method _write_cmakelists (line 195) | def _write_cmakelists(
method _write_cmake_config_template (line 222) | def _write_cmake_config_template(self) -> None:
method _add_sources (line 229) | def _add_sources(
method _parse_wheel_name (line 244) | def _parse_wheel_name(self) -> WheelNameInfo:
method _read_wheel_metadata (line 281) | def _read_wheel_metadata(self, wheel_name: WheelNameInfo) -> email.mes...
function _to_cmake_path (line 287) | def _to_cmake_path(path: str) -> str:
FILE: build/fbcode_builder/getdeps/runcmd.py
class RunCommandError (line 21) | class RunCommandError(Exception):
function make_memory_limit_preexec_fn (line 25) | def make_memory_limit_preexec_fn(
function _print_env_diff (line 72) | def _print_env_diff(env: Env, log_fn: Callable[[str], None]) -> None:
function check_cmd (line 94) | def check_cmd(
function run_cmd (line 107) | def run_cmd(
function _run_cmd (line 145) | def _run_cmd(
function _pipe_output (line 218) | def _pipe_output(p: subprocess.Popen[bytes], log_fn: Callable[[str], Non...
function _pipe_output (line 244) | def _pipe_output(p: subprocess.Popen[bytes], log_fn: Callable[[str], Non...
FILE: build/fbcode_builder/getdeps/subcmd.py
class SubCmd (line 14) | class SubCmd:
method run (line 18) | def run(self, args: argparse.Namespace) -> int:
method setup_parser (line 22) | def setup_parser(self, parser: argparse.ArgumentParser) -> None:
function add_subcommands (line 31) | def add_subcommands(
function cmd (line 49) | def cmd(
FILE: build/fbcode_builder/getdeps/test/expr_test.py
class ExprTest (line 14) | class ExprTest(unittest.TestCase):
method test_equal (line 15) | def test_equal(self) -> None:
method test_not_equal (line 22) | def test_not_equal(self) -> None:
method test_bad_not (line 28) | def test_bad_not(self) -> None:
method test_bad_variable (line 33) | def test_bad_variable(self) -> None:
method test_all (line 38) | def test_all(self) -> None:
method test_any (line 45) | def test_any(self) -> None:
FILE: build/fbcode_builder/getdeps/test/manifest_test.py
class ManifestTest (line 16) | class ManifestTest(unittest.TestCase):
method test_missing_section (line 17) | def test_missing_section(self) -> None:
method test_missing_name (line 23) | def test_missing_name(self) -> None:
method test_minimal (line 35) | def test_minimal(self) -> None:
method test_minimal_with_fbsource_path (line 46) | def test_minimal_with_fbsource_path(self) -> None:
method test_unknown_field (line 58) | def test_unknown_field(self) -> None:
method test_invalid_section_name (line 75) | def test_invalid_section_name(self) -> None:
method test_value_in_dependencies_section (line 90) | def test_value_in_dependencies_section(self) -> None:
method test_invalid_conditional_section_name (line 110) | def test_invalid_conditional_section_name(self) -> None:
method test_section_as_args (line 129) | def test_section_as_args(self) -> None:
method test_section_as_dict (line 169) | def test_section_as_dict(self) -> None:
method test_parse_common_manifests (line 207) | def test_parse_common_manifests(self) -> None:
method test_mismatch_name (line 213) | def test_mismatch_name(self) -> None:
method test_duplicate_manifest (line 226) | def test_duplicate_manifest(self) -> None:
method assertRaisesRegex (line 235) | def assertRaisesRegex(self, *args, **kwargs):
FILE: build/fbcode_builder/getdeps/test/platform_test.py
class PlatformTest (line 14) | class PlatformTest(unittest.TestCase):
method test_create (line 15) | def test_create(self) -> None:
method test_rendering_of_none (line 23) | def test_rendering_of_none(self) -> None:
method test_is_methods (line 27) | def test_is_methods(self) -> None:
FILE: build/fbcode_builder/getdeps/test/retry_test.py
class RetryTest (line 18) | class RetryTest(unittest.TestCase):
method _get_build_opts (line 19) | def _get_build_opts(self) -> BuildOptions:
method _get_manifest (line 24) | def _get_manifest(self) -> ManifestParser:
method _get_archive_fetcher (line 29) | def _get_archive_fetcher(self) -> ArchiveFetcher:
method test_no_retries (line 41) | def test_no_retries(
method test_retries (line 77) | def test_retries(
method test_all_retries (line 124) | def test_all_retries(
FILE: build/fbcode_builder/getdeps/test/scratch_test.py
class Win32SubstTest (line 14) | class Win32SubstTest(unittest.TestCase):
method test_no_existing_subst (line 15) | def test_no_existing_subst(self) -> None:
method test_exact_match_returns_drive_path (line 29) | def test_exact_match_returns_drive_path(self) -> None:
method test_multiple_exact_matches_returns_arbitrary_drive_path (line 45) | def test_multiple_exact_matches_returns_arbitrary_drive_path(self) -> ...
method test_drive_letter_is_case_insensitive (line 58) | def test_drive_letter_is_case_insensitive(self) -> None:
method test_path_components_are_case_insensitive (line 67) | def test_path_components_are_case_insensitive(self) -> None:
FILE: build/fbcode_builder/getdeps/test/strip_marker_test.py
class ManifestStripMarkerTest (line 17) | class ManifestStripMarkerTest(unittest.TestCase):
method test_default_strip_marker (line 18) | def test_default_strip_marker(self) -> None:
method test_custom_strip_marker (line 28) | def test_custom_strip_marker(self) -> None:
class FilterStripMarkerTest (line 40) | class FilterStripMarkerTest(unittest.TestCase):
method _write_temp (line 41) | def _write_temp(self, content: str) -> str:
method _read (line 48) | def _read(self, path: str) -> str:
method test_single_line_removal (line 52) | def test_single_line_removal(self) -> None:
method test_block_removal (line 60) | def test_block_removal(self) -> None:
method test_no_marker_present_no_change (line 76) | def test_no_marker_present_no_change(self) -> None:
method test_custom_marker_single_line (line 85) | def test_custom_marker_single_line(self) -> None:
method test_custom_marker_block (line 94) | def test_custom_marker_block(self) -> None:
method test_custom_marker_ignores_default (line 109) | def test_custom_marker_ignores_default(self) -> None:
method test_mixed_single_and_block (line 119) | def test_mixed_single_and_block(self) -> None:
method test_marker_with_regex_metacharacters (line 136) | def test_marker_with_regex_metacharacters(self) -> None:
method test_binary_file_skipped (line 147) | def test_binary_file_skipped(self) -> None:
FILE: folly/AtomicHashArray-inl.h
function namespace (line 28) | namespace folly {
type typename (line 209) | typedef
function try (line 377) | try {
function aha_ (line 494) | aha_(nullptr) {}
function explicit (line 506) | explicit aha_iterator(ContT* array, size_t offset)
function advancePastEmpty (line 514) | void advancePastEmpty() {
function increment (line 525) | void increment() {
function equal (line 530) | bool equal(const aha_iterator& o) const {
FILE: folly/AtomicHashArray.h
function namespace (line 39) | namespace folly {
FILE: folly/AtomicHashMap-inl.h
function namespace (line 26) | namespace folly {
function ahm_ (line 577) | ahm_(nullptr) {}
function increment (line 606) | void increment() {
function equal (line 612) | bool equal(const ahm_iterator& other) const {
function checkAdvanceToNextSubmap (line 628) | void checkAdvanceToNextSubmap() {
FILE: folly/AtomicHashMap.h
function namespace (line 92) | namespace folly {
function iterator (line 367) | iterator begin() {
function const_iterator (line 373) | const_iterator begin() const {
function value_type (line 415) | inline const value_type& idxToRec(uint32_t idx) const {
type SimpleRetT (line 433) | struct SimpleRetT {
function tryLockMap (line 460) | inline bool tryLockMap(unsigned int idx) {
FILE: folly/AtomicIntrusiveLinkedList.h
function T (line 40) | T* next{nullptr};
function AtomicIntrusiveLinkedList (line 68) | AtomicIntrusiveLinkedList spliceAll() { return std::move(*this); }
function T (line 95) | T* unsafeHead() const { return head_.load(std::memory_order_acquire); }
function insertHead (line 110) | bool insertHead(T* t) {
function T (line 178) | static T*& next(T* t) { return (t->*HookMember).next; }
function T (line 182) | static T* reverse(T* head) {
FILE: folly/AtomicLinkedList.h
function namespace (line 22) | namespace folly {
type Wrapper (line 119) | struct Wrapper {
FILE: folly/AtomicUnorderedMap.h
function namespace (line 37) | namespace folly {
function guardSlot (line 274) | auto guardSlot = folly::makeGuard([&] {
function guardKey (line 279) | auto guardKey = folly::makeGuard([&] { addr->first.~Key(); }
function guardMapped (line 281) | auto guardMapped = folly::makeGuard([&] { addr->second.~Value(); }
function const_iterator (line 326) | const_iterator find(const Key& key) const {
function const_iterator (line 330) | const_iterator cbegin() const {
type IndexType (line 343) | enum : IndexType {
function IndexType (line 347) | enum BucketState : IndexType {
function stateUpdate (line 386) | void stateUpdate(BucketState before, BucketState after) {
function value_type (line 391) | value_type* keyValue() {
function value_type (line 396) | const value_type* keyValue() const {
function IndexType (line 415) | IndexType keyToSlotIdx(const Key& key) const {
function IndexType (line 424) | IndexType find(const Key& key, IndexType slot) const {
function IndexType (line 437) | IndexType allocateNear(IndexType start) {
function IndexType (line 453) | IndexType allocationAttempt(IndexType start, IndexType tries) const {
function zeroFillSlots (line 468) | void zeroFillSlots() {
function explicit (line 508) | explicit MutableAtom(const T& init) : data(init) {}
function explicit (line 517) | explicit MutableData(const T& init) : data(init) {}
FILE: folly/Benchmark.cpp
type folly (line 218) | namespace folly {
type detail (line 219) | namespace detail {
function string (line 494) | string readableTime(double n, unsigned int decimals) {
function PerfScoped (line 1215) | PerfScoped BenchmarkingStateBase::doSetUpPerfScoped(
function PerfScoped (line 1220) | PerfScoped BenchmarkingStateBase::setUpPerfScoped() const {
function runBenchmarksWithResults (line 1252) | std::vector<BenchmarkResult> runBenchmarksWithResults() {
function benchmarkResultsToString (line 1256) | std::string benchmarkResultsToString(
function BENCHMARK (line 242) | BENCHMARK(FB_FOLLY_GLOBAL_BENCHMARK_BASELINE) {
function runBenchmarkGetNSPerIteration (line 258) | static std::pair<double, UserCounters> runBenchmarkGetNSPerIteration(
function runBenchmarkGetNSPerIterationEstimate (line 325) | static std::pair<double, UserCounters> runBenchmarkGetNSPerIterationEs...
function runProfilingGetNSPerIteration (line 414) | static std::pair<double, UserCounters> runProfilingGetNSPerIteration(
type ScaleInfo (line 436) | struct ScaleInfo {
function string (line 477) | static string humanReadable(
type detail (line 493) | namespace detail {
function string (line 494) | string readableTime(double n, unsigned int decimals) {
function PerfScoped (line 1215) | PerfScoped BenchmarkingStateBase::doSetUpPerfScoped(
function PerfScoped (line 1220) | PerfScoped BenchmarkingStateBase::setUpPerfScoped() const {
function runBenchmarksWithResults (line 1252) | std::vector<BenchmarkResult> runBenchmarksWithResults() {
function benchmarkResultsToString (line 1256) | std::string benchmarkResultsToString(
function string (line 499) | static string metricReadable(double n, unsigned int decimals) {
function headerContents (line 508) | std::string headerContents(std::string_view file, size_t columns) {
class BenchmarkResultsPrinter (line 527) | class BenchmarkResultsPrinter {
method BenchmarkResultsPrinter (line 529) | explicit BenchmarkResultsPrinter(
method separator (line 544) | void separator(char pad) { line(string(columns_, pad)); }
method header (line 546) | void header(std::string_view file) {
method print (line 557) | void print(
method isBaselineSet (line 657) | bool isBaselineSet() {
method line (line 661) | void line(std::string_view s) { *os_ << indent_ << s << std::endl; }
function printBenchmarkResultsAsJson (line 673) | static void printBenchmarkResultsAsJson(
function benchmarkResultsToDynamic (line 683) | void benchmarkResultsToDynamic(
function benchmarkResultsFromDynamic (line 705) | void benchmarkResultsFromDynamic(
function resultKey (line 716) | static pair<StringPiece, StringPiece> resultKey(
function printResultComparison (line 721) | void printResultComparison(
function checkRunMode (line 790) | void checkRunMode() {
type BenchmarksToRun (line 801) | struct BenchmarksToRun {
function addSeparator (line 808) | void addSeparator(BenchmarksToRun& res) {
function BenchmarksToRun (line 819) | BenchmarksToRun selectBenchmarksToRun(
function maybeRunWarmUpIteration (line 870) | void maybeRunWarmUpIteration(const BenchmarksToRun& toRun) {
class ShouldDrawLineTracker (line 892) | class ShouldDrawLineTracker {
method ShouldDrawLineTracker (line 894) | explicit ShouldDrawLineTracker(const std::vector<size_t>& separators...
function runAdaptiveMode (line 917) | auto runAdaptiveMode(
function userSetGflag (line 946) | bool userSetGflag([[maybe_unused]] const char* name) {
function validateFlagCombinations (line 957) | void validateFlagCombinations() {
function resolveSliceUsec (line 1017) | int64_t resolveSliceUsec() {
function resultsFromFile (line 1138) | std::vector<detail::BenchmarkResult> resultsFromFile(
function writeResultsToFile (line 1149) | bool writeResultsToFile(
type detail (line 1159) | namespace detail {
function string (line 494) | string readableTime(double n, unsigned int decimals) {
function PerfScoped (line 1215) | PerfScoped BenchmarkingStateBase::doSetUpPerfScoped(
function PerfScoped (line 1220) | PerfScoped BenchmarkingStateBase::setUpPerfScoped() const {
function runBenchmarksWithResults (line 1252) | std::vector<BenchmarkResult> runBenchmarksWithResults() {
function benchmarkResultsToString (line 1256) | std::string benchmarkResultsToString(
function runBenchmarks (line 1283) | void runBenchmarks() {
FILE: folly/Benchmark.h
function namespace (line 50) | namespace folly {
function class (line 219) | class BenchmarkingStateBase {
function addBenchmarkImpl (line 359) | inline void addBenchmarkImpl(
function high_resolution_clock (line 370) | struct BenchmarkSuspender
type dynamic (line 393) | struct dynamic
FILE: folly/BenchmarkUtil.cpp
type folly (line 35) | namespace folly {
type detail (line 37) | namespace detail {
function bm_llc_size_fallback (line 39) | size_t bm_llc_size_fallback() {
function bm_llc_size (line 120) | size_t bm_llc_size() {
function bm_llc_evict (line 126) | void bm_llc_evict(size_t value) {
FILE: folly/BenchmarkUtil.h
function namespace (line 22) | namespace folly {
function namespace (line 47) | namespace detail {
FILE: folly/CancellationToken-inl.h
function namespace (line 26) | namespace folly {
function swap (line 169) | inline void CancellationToken::swap(CancellationToken& other) noexcept {
function CancellationToken (line 173) | inline CancellationToken::CancellationToken(
function CancellationSource (line 190) | inline CancellationSource::CancellationSource(
function CancellationSource (line 198) | inline CancellationSource::CancellationSource(
function CancellationSource (line 217) | inline CancellationSource CancellationSource::invalid() noexcept {
function CancellationToken (line 229) | inline CancellationToken CancellationSource::getToken() const noexcept {
function swap (line 243) | inline void CancellationSource::swap(CancellationSource& other) noexcept {
function CancellationSource (line 247) | inline CancellationSource::CancellationSource(
function invokeCallback (line 295) | inline void CancellationCallback::invokeCallback() noexcept {
function namespace (line 300) | namespace detail {
FILE: folly/CancellationToken.cpp
type folly (line 30) | namespace folly {
type detail (line 31) | namespace detail {
function allocAndConstructMergingState (line 300) | auto allocAndConstructMergingState(size_t n, Args&&... ctorArgs) {
function CancellationStateTokenPtr (line 320) | CancellationStateTokenPtr MergingCancellationState::createCopy(
function CancellationStateTokenPtr (line 324) | CancellationStateTokenPtr MergingCancellationState::createMove(
function CancellationStateTokenPtr (line 328) | CancellationStateTokenPtr MergingCancellationState::createCopyMove(
FILE: folly/CancellationToken.h
type cancellation_token_merge_fn (line 32) | struct cancellation_token_merge_fn
function namespace (line 34) | namespace detail {
function requestCancellation (line 223) | bool requestCancellation() const noexcept;
FILE: folly/Chrono.h
function namespace (line 28) | namespace folly {
type coarse_system_clock (line 96) | struct coarse_system_clock {
function std (line 120) | static std::time_t to_time_t(const time_point& t) noexcept {
function time_point (line 125) | static time_point from_time_t(std::time_t t) noexcept {
FILE: folly/ClockGettimeWrappers.cpp
type folly (line 31) | namespace folly {
type chrono (line 32) | namespace chrono {
function clock_gettime_ns_fallback (line 34) | static int64_t clock_gettime_ns_fallback(clockid_t clock) {
type VdsoInitializer (line 58) | struct VdsoInitializer {
method VdsoInitializer (line 59) | VdsoInitializer() {
FILE: folly/ClockGettimeWrappers.h
function namespace (line 23) | namespace folly {
FILE: folly/ConcurrentBitSet.h
function namespace (line 27) | namespace folly {
FILE: folly/ConcurrentLazy.h
function namespace (line 25) | namespace folly {
FILE: folly/ConcurrentSkipList-inl.h
function namespace (line 37) | namespace folly {
FILE: folly/ConcurrentSkipList.h
function namespace (line 134) | namespace folly {
function less (line 218) | static bool less(const value_type& data, const NodeType* node) {
function findInsertionPoint (line 222) | static int findInsertionPoint(
function incrementSize (line 255) | size_t incrementSize(int delta) {
function NodeType (line 260) | NodeType* find(const value_type& data) {
function remove (line 360) | bool remove(const value_type& data) {
function value_type (line 402) | const value_type* first() const {
function value_type (line 407) | const value_type* last() const {
function okToDelete (line 423) | static bool okToDelete(NodeType* candidate, int layer) {
function findInsertionPointGetMaxLayer (line 430) | int findInsertionPointGetMaxLayer(
function NodeType (line 496) | NodeType* lower_bound(const value_type& data) const {
function growHeight (line 504) | void growHeight(int height) {
function recycle (line 529) | void recycle(NodeType* node) { recycler_.add(node); }
function explicit (line 556) | explicit Accessor(std::shared_ptr<ConcurrentSkipList> skip_list)
function explicit (line 565) | explicit Accessor(ConcurrentSkipList* skip_list) : sl_(skip_list) {
function size_type (line 589) | size_type max_size() const { return std::numeric_limits<size_type>::max(...
function const_iterator (line 595) | const_iterator find(const key_type& value) const {
function size_type (line 598) | size_type count(const key_type& data) const { return contains(data); }
function iterator (line 600) | iterator begin() const {
function erase (line 616) | size_t erase(const key_type& data) { return remove(data); }
function iterator (line 618) | iterator lower_bound(const key_type& data) const {
function key_type (line 635) | const key_type* first() const { return sl_->first(); }
function key_type (line 636) | const key_type* last() const { return sl_->last(); }
function pop_back (line 643) | bool pop_back() {
function SkipListType (line 653) | SkipListType* skiplist() const { return sl_; }
function contains (line 659) | bool contains(const key_type& data) const { return sl_->find(data); }
function add (line 660) | bool add(const key_type& data) { return sl_->addOrGetData(data).second; }
function remove (line 661) | bool remove(const key_type& data) { return sl_->remove(data); }
function increment (line 704) | void increment() { node_ = node_->next(); }
function equal (line 705) | bool equal(const csl_iterator& other) const { return node_ == other.node...
function accessor_ (line 729) | Skipper(const Accessor& accessor) : accessor_(accessor) { init(); }
function init (line 731) | void init() {
function value_type (line 772) | const value_type& data() const {
function to (line 793) | bool to(const value_type& data) {
FILE: folly/ConstexprMath.h
function namespace (line 30) | namespace folly {
FILE: folly/ConstructorCallbackList.h
function namespace (line 30) | namespace folly {
FILE: folly/Conv.cpp
type folly (line 26) | namespace folly {
type detail (line 27) | namespace detail {
type MaxString (line 56) | struct MaxString {
type ErrorString (line 218) | struct ErrorString {
function tolower_ascii (line 268) | inline char tolower_ascii(char in) {
function bool_str_cmp (line 272) | inline bool bool_str_cmp(const char** b, size_t len, const char* val...
function str_to_bool (line 291) | Expected<bool, ConversionCode> str_to_bool(StringPiece* src) noexcept {
function str_to_floating_fast_float_from_chars (line 365) | Expected<Tgt, ConversionCode> str_to_floating_fast_float_from_chars(
function str_to_floating (line 406) | Expected<Tgt, ConversionCode> str_to_floating(StringPiece* src) noex...
class SignedValueHandler (line 422) | class SignedValueHandler
class SignedValueHandler<T, true> (line 425) | class SignedValueHandler<T, true> {
method ConversionCode (line 427) | ConversionCode init(const char*& b) {
method ConversionCode (line 440) | ConversionCode overflow() {
method finalize (line 447) | Expected<T, ConversionCode> finalize(U value) {
class SignedValueHandler<T, false> (line 476) | class SignedValueHandler<T, false> {
method ConversionCode (line 478) | ConversionCode init(const char*&) { return ConversionCode::SUCCESS; }
method ConversionCode (line 480) | ConversionCode overflow() { return ConversionCode::POSITIVE_OVERFL...
method finalize (line 482) | Expected<T, ConversionCode> finalize(T value) { return value; }
function digits_to (line 495) | inline Expected<Tgt, ConversionCode> digits_to(
function str_to_integral (line 633) | Expected<Tgt, ConversionCode> str_to_integral(StringPiece* src) noex...
function ConversionError (line 715) | ConversionError makeConversionError(ConversionCode code, StringPiece i...
FILE: folly/Conv.h
function namespace (line 148) | namespace folly {
function estimateSpaceNeeded (line 464) | inline size_t estimateSpaceNeeded(std::nullptr_t /* value */) {
function DtoaMode (line 654) | enum class DtoaMode {
function namespace (line 861) | namespace detail {
function one (line 916) | static void one(const T& v, Tgt* result) {
function call (line 923) | void call(const T&... v) {
function one (line 934) | static void one(const Delimiter& d, const T& v, Tgt* result) {
function call (line 944) | void call(const Delimiter& d, const T&... v) {
function typename (line 1519) | typename std::underlying_type<T>::type tmp{}
function namespace (line 1532) | namespace detail {
type CheckTrailingSpace (line 1575) | struct CheckTrailingSpace {
function Tgt (line 1651) | Tgt result{}
function Tgt (line 1685) | Tgt result{}
function Error (line 1693) | Error e) { return makeConversionError(e, *src); }
FILE: folly/CpuId.h
function namespace (line 25) | namespace folly {
FILE: folly/DefaultKeepAliveExecutor.h
function namespace (line 27) | namespace folly {
function class (line 50) | class WeakRefExecutor : public virtual Executor {}
function joinAndResetKeepAlive (line 59) | void joinAndResetKeepAlive() {
type ControlBlock (line 69) | struct ControlBlock {
function add (line 81) | void add(Func f) override {
function addWithPriority (line 87) | void addWithPriority(Func f, int8_t priority) override {
function keepAliveAcquire (line 101) | bool keepAliveAcquire() noexcept override {
function keepAliveRelease (line 109) | void keepAliveRelease() noexcept override {
function keepAliveAcquire (line 143) | bool keepAliveAcquire() noexcept override {
function keepAliveRelease (line 151) | void keepAliveRelease() noexcept override {
FILE: folly/Demangle.cpp
type poison (line 69) | struct poison {}
function FOLLY_POP_WARNING (line 74) | FOLLY_POP_WARNING
function call_rust_demangle_callback (line 91) | int call_rust_demangle_callback(
type folly (line 128) | namespace folly {
function demangle_build_has_cxxabi (line 130) | bool demangle_build_has_cxxabi() noexcept {
function demangle_build_has_liberty (line 133) | bool demangle_build_has_liberty() noexcept {
function demangleStringCallback (line 142) | void demangleStringCallback(const char* str, size_t size, void* p) {
function fbstring (line 149) | fbstring demangle(const char* name) {
type DemangleBuf (line 204) | struct DemangleBuf {
function demangleBufCallback (line 210) | void demangleBufCallback(const char* str, size_t size, void* p) {
function demangle (line 221) | size_t demangle(const char* name, char* out, size_t outSize) {
FILE: folly/Demangle.h
function namespace (line 22) | namespace folly {
FILE: folly/DiscriminatedPtr.h
function namespace (line 40) | namespace folly {
function clear (line 143) | void clear() { data_ = 0; }
function set (line 207) | void set(void* p, uint16_t v) {
FILE: folly/Exception.h
function namespace (line 31) | namespace folly {
function throwSystemErrorExplicit (line 73) | [[noreturn]] inline void throwSystemErrorExplicit(int err, const char* m...
function throwSystemErrorExplicit (line 78) | [[noreturn]] void throwSystemErrorExplicit(int err, Args&&... args) {
function throwSystemError (line 84) | [[noreturn]] void throwSystemError(Args&&... args) {
FILE: folly/ExceptionString.cpp
type folly (line 25) | namespace folly {
function fbstring (line 29) | fbstring exception_string_type(std::type_info const* ti) {
function fbstring (line 39) | fbstring exceptionStr(std::exception const& e) {
function fbstring (line 44) | fbstring exceptionStr(std::exception_ptr const& ep) {
FILE: folly/ExceptionString.h
function namespace (line 23) | namespace folly {
FILE: folly/ExceptionWrapper-inl.h
function namespace (line 19) | namespace folly {
FILE: folly/ExceptionWrapper.cpp
type folly (line 21) | namespace folly {
function fbstring (line 31) | fbstring exceptionStr(exception_wrapper const& ew) {
FILE: folly/ExceptionWrapper.h
function class (line 99) | class exception_wrapper final {
function swap (line 384) | inline void swap(exception_wrapper& a, exception_wrapper& b) noexcept {
function exception_wrapper (line 402) | inline exception_wrapper current_exception_wrapper() noexcept {
function fbstring (line 409) | struct fmt::formatter<folly::exception_wrapper> : formatter<folly::fbstr...
FILE: folly/Executor.cpp
type folly (line 27) | namespace folly {
function getExecutorBlockingContext (line 53) | Optional<ExecutorBlockingContext> getExecutorBlockingContext() noexcept {
FILE: folly/Executor.h
function namespace (line 29) | namespace folly {
function ExecutorT (line 140) | ExecutorT* get() const {
function invokeCatchingExns (line 232) | static void invokeCatchingExns(char const* p, F f) noexcept {
function isKeepAliveDummy (line 245) | bool isKeepAliveDummy(const KeepAlive<ExecutorT>& keepAlive) {
function keepAliveAcquire (line 249) | static bool keepAliveAcquire(Executor* executor) {
function keepAliveRelease (line 252) | static void keepAliveRelease(Executor* executor) {
type ExecutorBlockingContext (line 341) | struct ExecutorBlockingContext {
type ExecutorBlockingList (line 351) | struct ExecutorBlockingList {
function class (line 359) | class ExecutorBlockingGuard {
FILE: folly/Expected.h
function namespace (line 54) | namespace folly {
function namespace (line 214) | namespace expected_detail {
type EmptyTag (line 277) | struct EmptyTag {}
type ValueTag (line 278) | struct ValueTag {}
type ErrorTag (line 279) | struct ErrorTag {}
function Which (line 280) | enum class Which : unsigned char { eEmpty, eValue, eError };
function Value (line 354) | const Value&& value() const&& { return std::move(value_); }
function noexcept (line 439) | noexcept(Noexcept) {
function noexcept (line 461) | noexcept(Noexcept) {
function Base (line 499) | Base{ErrorTag{}
function clear (line 506) | void clear() noexcept {
function isSelfAssign (line 548) | bool isSelfAssign(const ExpectedStorage* that) const { return this == th...
function isSelfAssign (line 549) | constexpr bool isSelfAssign(const void*) const { return false; }
function explicit (line 584) | explicit constexpr ExpectedStorage(EmptyTag) noexcept
function namespace (line 631) | namespace expected_detail_ExpectedHelper {
type UnexpectedTag (line 836) | struct UnexpectedTag {}
function expected_detail (line 843) | inline expected_detail::UnexpectedTag unexpected(
function namespace (line 848) | namespace expected_detail {
type expected_detail (line 951) | struct expected_detail
type MakeBadExpectedAccess (line 958) | struct MakeBadExpectedAccess {
function noexcept (line 985) | noexcept(noexcept(B{})) : Base{}
function noexcept (line 1054) | noexcept(
function swap (line 1132) | void swap(Expected& that) noexcept(
function hasValue (line 1176) | constexpr bool hasValue() const noexcept {
function Value (line 1186) | const Value& value() const& {
function explicit (line 1243) | explicit constexpr operator bool() const noexcept { return hasValue(); }
function explicit (line 1411) | explicit Expected(EmptyTag tag) noexcept : Base{tag}
function requireValueMove (line 1436) | void requireValueMove() { return requireValueMove(*this); }
function unhandled_exception (line 1628) | [[noreturn]] void unhandled_exception() {
function return_void (line 1654) | void return_void() { this->value_->emplace(Value{}); }
function explicit (line 1668) | explicit UnexpectedAwaitable(Unexpected<Error> o) : o_(std::move(o)) {}
function std (line 1670) | constexpr std::false_type await_ready() const noexcept { return {}; }
function explicit (line 1688) | explicit ExpectedAwaitable(Expected<Value, Error> o) : o_(std::move(o)) {}
function Value (line 1691) | Value await_resume() { return std::move(o_.value()); }
function await_suspend (line 1695) | void
FILE: folly/FBString.h
function FOLLY_PUSH_WARNING (line 50) | FOLLY_PUSH_WARNING
function swap (line 328) | void swap(fbstring_core& rhs) {
function Char (line 335) | const Char* data() const { return c_str(); }
function Char (line 337) | Char* data() { return c_str(); }
function Char (line 339) | Char* mutableData() {
function Char (line 352) | const Char* c_str() const {
function shrink (line 359) | void shrink(const size_t delta) {
function FOLLY_NOINLINE (line 370) | FOLLY_NOINLINE
function push_back (line 396) | void push_back(Char c) { *expandNoinit(1, /* expGrowth = */ true) = c; }
function size (line 398) | size_t size() const {
function reset (line 463) | void reset() { setSmallSize(0); }
function FOLLY_NOINLINE (line 465) | FOLLY_NOINLINE void destroyMediumLarge() noexcept {
type RefCounted (line 475) | struct RefCounted {
function refs (line 489) | static size_t refs(Char* p) {
function incrementRefs (line 493) | static void incrementRefs(Char* p) {
function decrementRefs (line 497) | static void decrementRefs(Char* p) {
function RefCounted (line 506) | static RefCounted* create(size_t* size) {
function RefCounted (line 522) | static RefCounted* create(const Char* data, size_t* size) {
function RefCounted (line 531) | static RefCounted* reallocate(
type category_type (line 559) | typedef uint8_t category_type;
function category_type (line 561) | enum class Category : category_type {
function setSmallSize (line 615) | void setSmallSize(size_t s) {
function backend_ (line 926) | dummy_fbstring_core(const dummy_fbstring_core& another)
function Char (line 930) | const Char* data() const { return backend_.data(); }
function Char (line 931) | Char* mutableData() { return const_cast<Char*>(backend_.data()); }
function shrink (line 932) | void shrink(size_t delta) {
function Char (line 936) | Char* expandNoinit(size_t delta) {
function push_back (line 941) | void push_back(Char c) { backend_.push_back(c); }
function reserve (line 947) | void reserve(size_t minCapacity) { backend_.reserve(minCapacity); }
function enforce (line 969) | void enforce(bool condition, Args&&... args) {
function explicit (line 984) | explicit Invariant(const basic_fbstring& s) noexcept : s_(s) {
type typename (line 996) | typedef typename traits_type::char_type value_type;
type A (line 997) | typedef A allocator_type;
type typename (line 998) | typedef typename std::allocator_traits<A>::size_type size_type;
type typename (line 999) | typedef typename std::allocator_traits<A>::difference_type difference_type;
type typename (line 1001) | typedef typename std::allocator_traits<A>::value_type& reference;
type typename (line 1002) | typedef typename std::allocator_traits<A>::value_type const& const_refer...
type typename (line 1003) | typedef typename std::allocator_traits<A>::pointer pointer;
type typename (line 1004) | typedef typename std::allocator_traits<A>::const_pointer const_pointer;
type E (line 1006) | typedef E* iterator;
type E (line 1007) | typedef const E* const_iterator;
type std (line 1008) | typedef std::reverse_iterator<iterator> reverse_iterator;
type std (line 1009) | typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
type std (line 1012) | typedef std::true_type IsRelocatable;
type string_view_ctor (line 1034) | struct string_view_ctor {}
function FOLLY_NOINLINE (line 1035) | FOLLY_NOINLINE basic_fbstring(
function explicit (line 1057) | explicit basic_fbstring(const A&) noexcept {}
function store_ (line 1059) | basic_fbstring(const basic_fbstring& str) : store_(str.store_) {}
function FOLLY_NOINLINE (line 1078) | FOLLY_NOINLINE
function FOLLY_NOINLINE (line 1082) | FOLLY_NOINLINE
function FOLLY_NOINLINE (line 1086) | FOLLY_NOINLINE
function FOLLY_NOINLINE (line 1104) | FOLLY_NOINLINE
function FOLLY_NOINLINE (line 1114) | FOLLY_NOINLINE
function operator (line 1180) | operator string_view_type() const noexcept { return {data(), size()}; }
function iterator (line 1189) | iterator end() { return store_.mutableData() + store_.size(); }
function reverse_iterator (line 1195) | reverse_iterator rbegin() { return reverse_iterator(end()); }
function reverse_iterator (line 1203) | reverse_iterator rend() { return reverse_iterator(begin()); }
function pop_back (line 1225) | void pop_back() {
function size_type (line 1235) | size_type max_size() const { return std::numeric_limits<size_type>::max(...
function shrink_to_fit (line 1257) | void shrink_to_fit() {
function clear (line 1265) | void clear() { resize(0); }
function const_reference (line 1270) | const_reference operator[](size_type pos) const { return *(begin() + pos...
function reference (line 1272) | reference operator[](size_type pos) { return *(begin() + pos); }
function const_reference (line 1274) | const_reference at(size_type n) const {
function reference (line 1279) | reference at(size_type n) {
function push_back (line 1338) | void push_back(const value_type c) { // primitive
function iterator (line 1398) | iterator insert(const_iterator p, const value_type c) {
function iterator (line 1448) | iterator insert(const_iterator p, std::initializer_list<value_type> il) {
function iterator (line 1462) | iterator erase(iterator position) {
function iterator (line 1469) | iterator erase(iterator first, iterator last) {
function swap (line 1601) | void swap(basic_fbstring& rhs) { store_.swap(rhs.store_); }
function value_type (line 1603) | const value_type* c_str() const { return store_.c_str(); }
function value_type (line 1605) | const value_type* data() const { return c_str(); }
function value_type (line 1607) | value_type* data() { return store_.data(); }
function size_type (line 1626) | size_type rfind(const basic_fbstring& str, size_type pos = npos) const {
function size_type (line 1632) | size_type rfind(const value_type* s, size_type pos = npos) const {
function size_type (line 1636) | size_type rfind(value_type c, size_type pos = npos) const {
function size_type (line 1655) | size_type find_last_of(
function size_type (line 1662) | size_type find_last_of(const value_type* s, size_type pos = npos) const {
function size_type (line 1666) | size_type find_last_of(value_type c, size_type pos = npos) const {
function size_type (line 1686) | size_type find_last_not_of(
function size_type (line 1694) | size_type find_last_not_of(const value_type* s, size_type pos = npos) co...
function size_type (line 1698) | size_type find_last_not_of(value_type c, size_type pos = npos) const {
function compare (line 1716) | int compare(const basic_fbstring& str) const {
function compare (line 1721) | int compare(size_type pos1, size_type n1, const basic_fbstring& str) con...
function compare (line 1725) | int compare(size_type pos1, size_type n1, const value_type* s) const {
function compare (line 1729) | int compare(
function compare (line 1738) | int compare(
function compare (line 1750) | int compare(const value_type* s) const {
type typename (line 2426) | typedef typename basic_fbstring<E, T, A, S>::size_type size_type;
type typename (line 2427) | typedef typename basic_fbstring<E, T, A, S>::traits_type traits_type;
type std (line 2714) | typedef std::ostreambuf_iterator<
type streamsize (line 2733) | typedef decltype(os.precision()) streamsize;
type basic_fbstring (line 2828) | typedef basic_fbstring<char> fbstring;
function std (line 2841) | inline const std::string& toStdString(const std::string& s) {
function std (line 2847) | inline std::string&& toStdString(std::string&& s) {
function namespace (line 2870) | namespace std {
function namespace (line 2883) | namespace folly {
type fmt (line 2892) | struct fmt
FILE: folly/File.cpp
type folly (line 31) | namespace folly {
function File (line 61) | File& File::operator=(File&& other) {
function File (line 76) | File File::temporary() {
function swap (line 104) | void swap(File& a, File& b) noexcept {
function File (line 108) | File File::dup() const {
function File (line 119) | File File::dupCloseOnExec() const {
FILE: folly/File.h
function namespace (line 37) | namespace folly {
FILE: folly/FileUtil.cpp
type folly (line 32) | namespace folly {
function openNoInt (line 39) | int openNoInt(const char* name, int flags, mode_t mode) {
function filterCloseReturn (line 58) | static int filterCloseReturn(int r) {
function closeNoInt (line 74) | int closeNoInt(int fd) {
function closeNoInt (line 78) | int closeNoInt(NetworkSocket fd) {
function fsyncNoInt (line 82) | int fsyncNoInt(int fd) {
function dupNoInt (line 86) | int dupNoInt(int fd) {
function dup2NoInt (line 90) | int dup2NoInt(int oldFd, int newFd) {
function fdatasyncNoInt (line 94) | int fdatasyncNoInt(int fd) {
function ftruncateNoInt (line 104) | int ftruncateNoInt(int fd, off_t len) {
function truncateNoInt (line 108) | int truncateNoInt(const char* path, off_t len) {
function flockNoInt (line 112) | int flockNoInt(int fd, int operation) {
function shutdownNoInt (line 116) | int shutdownNoInt(NetworkSocket fd, int how) {
function readNoInt (line 120) | ssize_t readNoInt(int fd, void* buf, size_t count) {
function preadNoInt (line 124) | ssize_t preadNoInt(int fd, void* buf, size_t count, off_t offset) {
function readvNoInt (line 128) | ssize_t readvNoInt(int fd, const iovec* iov, int count) {
function preadvNoInt (line 132) | ssize_t preadvNoInt(int fd, const iovec* iov, int count, off_t offset) {
function writeNoInt (line 136) | ssize_t writeNoInt(int fd, const void* buf, size_t count) {
function pwriteNoInt (line 140) | ssize_t pwriteNoInt(int fd, const void* buf, size_t count, off_t offse...
function writevNoInt (line 144) | ssize_t writevNoInt(int fd, const iovec* iov, int count) {
function pwritevNoInt (line 148) | ssize_t pwritevNoInt(int fd, const iovec* iov, int count, off_t offset) {
function readFull (line 152) | ssize_t readFull(int fd, void* buf, size_t count) {
function preadFull (line 156) | ssize_t preadFull(int fd, void* buf, size_t count, off_t offset) {
function writeFull (line 160) | ssize_t writeFull(int fd, const void* buf, size_t count) {
function pwriteFull (line 164) | ssize_t pwriteFull(int fd, const void* buf, size_t count, off_t offset) {
function readvFull (line 169) | ssize_t readvFull(int fd, iovec* iov, int count) {
function preadvFull (line 173) | ssize_t preadvFull(int fd, iovec* iov, int count, off_t offset) {
function writevFull (line 177) | ssize_t writevFull(int fd, iovec* iov, int count) {
function pwritevFull (line 181) | ssize_t pwritevFull(int fd, iovec* iov, int count, off_t offset) {
function readvFull (line 192) | ssize_t readvFull(int fd, iovec* iov, int count) {
function preadvFull (line 196) | ssize_t preadvFull(int fd, iovec* iov, int count, off_t offset) {
function writevFull (line 200) | ssize_t writevFull(int fd, iovec* iov, int count) {
function pwritevFull (line 204) | ssize_t pwritevFull(int fd, iovec* iov, int count, off_t offset) {
function WriteFileAtomicOptions (line 209) | WriteFileAtomicOptions& WriteFileAtomicOptions::setPermissions(
function WriteFileAtomicOptions (line 215) | WriteFileAtomicOptions& WriteFileAtomicOptions::setSyncType(
function WriteFileAtomicOptions (line 221) | WriteFileAtomicOptions& WriteFileAtomicOptions::setTemporaryDirectory(
function throwIfWriteFileAtomicFailed (line 228) | void throwIfWriteFileAtomicFailed(
function writeFileAtomicNoThrowImpl (line 243) | int writeFileAtomicNoThrowImpl(
function writeFileAtomicNoThrow (line 303) | int writeFileAtomicNoThrow(
function writeFileAtomicNoThrow (line 318) | int writeFileAtomicNoThrow(
function writeFileAtomic (line 326) | void writeFileAtomic(
function writeFileAtomic (line 342) | void writeFileAtomic(
function writeFileAtomic (line 351) | void writeFileAtomic(
function writeFileAtomic (line 359) | void writeFileAtomic(
function iovec (line 370) | iovec getIOVecFor(ByteRange byteRange) {
FILE: folly/FileUtil.h
function namespace (line 33) | namespace folly {
type class (line 229) | enum class
function mode_t (line 238) | mode_t permissions{0644};
FILE: folly/Fingerprint.cpp
type folly (line 24) | namespace folly {
type detail (line 25) | namespace detail {
type FingerprintTablePoly (line 41) | struct FingerprintTablePoly
type FingerprintTablePoly<63> (line 43) | struct FingerprintTablePoly<63> {
type FingerprintTablePoly<95> (line 47) | struct FingerprintTablePoly<95> {
type FingerprintTablePoly<127> (line 51) | struct FingerprintTablePoly<127> {
function copy_table (line 56) | constexpr auto copy_table(D const (&table)[S0], std::index_sequence<...
function copy_table (line 61) | constexpr auto copy_table(D const (&table)[S0]) {
function copy_table (line 66) | constexpr auto copy_table(
function copy_table (line 72) | constexpr auto copy_table(D const (&table)[S0][S1]) {
function copy_table (line 77) | constexpr auto copy_table(
function copy_table (line 83) | constexpr auto copy_table(D const (&table)[S0][S1][S2]) {
function make_poly_table (line 88) | constexpr poly_table<Deg> make_poly_table() {
FILE: folly/Fingerprint.h
function namespace (line 49) | namespace folly {
function fingerprint64 (line 190) | inline uint64_t fingerprint64(StringPiece str) {
function fingerprint96 (line 201) | inline void fingerprint96(StringPiece str, uint64_t* msb, uint32_t* lsb) {
function fingerprint128 (line 213) | inline void fingerprint128(StringPiece str, uint64_t* msb, uint64_t* lsb) {
FILE: folly/FixedString.h
function namespace (line 39) | namespace folly {
function BasicFixedString (line 911) | constexpr BasicFixedString& assign(
function swap (line 925) | constexpr void swap(BasicFixedString& that) noexcept {
function Char (line 938) | constexpr Char* data() noexcept { return data_; }
function Char (line 943) | constexpr const Char* data() const noexcept { return data_; }
function Char (line 948) | constexpr const Char* c_str() const noexcept { return data_; }
function Char (line 953) | constexpr Char* begin() noexcept { return data_; }
function Char (line 958) | constexpr const Char* begin() const noexcept { return data_; }
function Char (line 963) | constexpr const Char* cbegin() const noexcept { return begin(); }
function Char (line 968) | constexpr Char* end() noexcept { return data_ + size_; }
function Char (line 973) | constexpr const Char* end() const noexcept { return data_ + size_; }
function Char (line 978) | constexpr const Char* cend() const noexcept { return end(); }
function reverse_iterator (line 984) | constexpr reverse_iterator rbegin() noexcept {
function BasicFixedString (line 1165) | constexpr BasicFixedString& append(std::size_t count, Char ch) noexcept(
function BasicFixedString (line 1228) | constexpr BasicFixedString& append(const Char* that) noexcept(false) {
function BasicFixedString (line 1241) | constexpr BasicFixedString& append(
function noexcept (line 1353) | noexcept(false) {
function BasicFixedString (line 1362) | constexpr BasicFixedString& erase() noexcept {
function BasicFixedString (line 1377) | constexpr BasicFixedString& erase(
function BasicFixedString (line 1418) | constexpr BasicFixedString cerase(
function noexcept (line 1447) | const noexcept(false) {
function compare (line 1478) | constexpr int compare(const Char* that) const noexcept {
function compare (line 1485) | constexpr int compare(Range<const Char*> that) const noexcept {
function compare (line 1494) | constexpr int compare(
function compare (line 1503) | constexpr int compare(
function compare (line 1525) | constexpr int compare(
function compare (line 1540) | constexpr int compare(
function BasicFixedString (line 1556) | constexpr BasicFixedString substr(std::size_t pos) const noexcept(false) {
function BasicFixedString (line 1564) | constexpr BasicFixedString substr(std::size_t pos, std::size_t count) const
function BasicFixedString (line 1626) | constexpr BasicFixedString& replace(
function BasicFixedString (line 1641) | constexpr BasicFixedString& replace(
function BasicFixedString (line 1664) | constexpr BasicFixedString& replace(
function BasicFixedString (line 1687) | constexpr BasicFixedString& replace(
function BasicFixedString (line 1701) | constexpr BasicFixedString& replace(
function BasicFixedString (line 1718) | constexpr BasicFixedString& replace(
function noexcept (line 1841) | const
function copy (line 1928) | constexpr std::size_t copy(Char* dest, std::size_t count) const noexcept {
function copy (line 1939) | constexpr std::size_t copy(
function resize (line 1955) | constexpr void resize(std::size_t count) noexcept(false) {
function resize (line 1964) | constexpr void resize(std::size_t count, Char ch) noexcept(false) {
function find (line 1983) | size_t find(
function find (line 1995) | size_t find(
function find (line 2007) | constexpr std::size_t find(const Char* that) const noexcept {
function find (line 2017) | constexpr std::size_t find(const Char* that, std::size_t pos) const
function find (line 2033) | constexpr std::size_t find(
function find (line 2045) | constexpr std::size_t find(Char ch) const noexcept { return find(ch, 0u); }
function find (line 2053) | constexpr std::size_t find(Char ch, std::size_t pos) const noexcept(fals...
function rfind (line 2066) | size_t rfind(
function rfind (line 2077) | size_t rfind(
function rfind (line 2096) | constexpr std::size_t rfind(const Char* that) const noexcept {
function rfind (line 2105) | constexpr std::size_t rfind(const Char* that, std::size_t pos) const
function rfind (line 2121) | constexpr std::size_t rfind(
function rfind (line 2139) | constexpr std::size_t rfind(Char ch) const noexcept {
function rfind (line 2149) | constexpr std::size_t rfind(Char ch, std::size_t pos) const noexcept(fal...
function swap (line 2872) | constexpr void swap(
function namespace (line 2877) | inline namespace literals {
FILE: folly/FmtUtility.cpp
type folly (line 23) | namespace folly {
FILE: folly/FmtUtility.h
function namespace (line 23) | namespace folly {
function fmt_make_format_args_from_map_fn (line 44) | inline constexpr fmt_make_format_args_from_map_fn
type fmt_vformat_mangle_name_fn (line 52) | struct fmt_vformat_mangle_name_fn {
function fmt_vformat_mangle_name_fn (line 56) | inline constexpr fmt_vformat_mangle_name_fn fmt_vformat_mangle_name{}
type fmt_vformat_mangle_format_string_fn (line 64) | struct fmt_vformat_mangle_format_string_fn {
function fmt_vformat_mangle_format_string_fn (line 77) | inline constexpr fmt_vformat_mangle_format_string_fn
FILE: folly/FollyMemcpy.cpp
type folly (line 20) | namespace folly {
FILE: folly/FollyMemcpy.h
function namespace (line 19) | namespace folly {
FILE: folly/FollyMemset.cpp
type folly (line 21) | namespace folly {
FILE: folly/FollyMemset.h
function namespace (line 21) | namespace folly {
FILE: folly/Format-inl.h
function namespace (line 44) | namespace detail {
function namespace (line 318) | namespace format_value {
type typename (line 474) | typedef typename std::make_unsigned<T>::type UT;
function namespace (line 881) | namespace detail {
function namespace (line 953) | namespace detail {
FILE: folly/Format.cpp
type folly (line 27) | namespace folly {
type detail (line 28) | namespace detail {
type format_table_align_make_item (line 31) | struct format_table_align_make_item {
type format_table_conv_make_item (line 48) | struct format_table_conv_make_item {
type make_item (line 50) | struct make_item {
method alpha (line 52) | constexpr char alpha(std::size_t ord) const {
type format_table_sign_make_item (line 66) | struct format_table_sign_make_item {
function insertThousandsGroupingUnsafe (line 392) | void insertThousandsGroupingUnsafe(char* start_buffer, char** end_bu...
type detail (line 391) | namespace detail {
type format_table_align_make_item (line 31) | struct format_table_align_make_item {
type format_table_conv_make_item (line 48) | struct format_table_conv_make_item {
type make_item (line 50) | struct make_item {
method alpha (line 52) | constexpr char alpha(std::size_t ord) const {
type format_table_sign_make_item (line 66) | struct format_table_sign_make_item {
function insertThousandsGroupingUnsafe (line 392) | void insertThousandsGroupingUnsafe(char* start_buffer, char** end_bu...
FILE: folly/Format.h
function class (line 65) | class FormatterTag {}
type BaseFormatterBase (line 67) | struct BaseFormatterBase {
function explicit (line 88) | explicit BaseFormatterTuple(std::in_place_t, A&&... a)
function const (line 95) | void operator()(StringPiece s) const { str.append(s.data(), s.size()); }
function formatCheckIndex (line 98) | inline void formatCheckIndex(size_t i, const FormatArg& arg, size_t max) {
function getSizeArgAt (line 173) | int getSizeArgAt(std::false_type) const {
function getSizeArg (line 181) | void getSizeArg(int* out) const {
function doFormatArg (line 235) | void doFormatArg(
function namespace (line 252) | namespace detail {
function writer (line 270) | auto writer = detail::FormatterOstreamInsertionWriterFn<out_t>{out};
function namespace (line 327) | namespace detail {
function namespace (line 361) | namespace format_value {
function namespace (line 418) | namespace detail {
FILE: folly/FormatArg.h
function namespace (line 28) | namespace folly {
type class (line 76) | enum class
type class (line 116) | enum class
function Sign (line 129) | enum class Sign : uint8_t {
FILE: folly/FormatTraits.h
function namespace (line 22) | namespace folly {
FILE: folly/Function.h
function namespace (line 218) | namespace folly {
type DispatchBig (line 577) | struct DispatchBig {
type Dispatch (line 603) | struct Dispatch
type Dispatch (line 605) | struct Dispatch
type Dispatch (line 607) | struct Dispatch
type Dispatch (line 609) | struct Dispatch
function mutable (line 646) | mutable Data data_{unsafe_default_initialized};
function namespace (line 1006) | namespace detail {
function Call (line 1084) | Call call_{&FunctionRef::uninitCall};
FILE: folly/GroupVarint.cpp
type folly (line 22) | namespace folly {
type detail (line 42) | namespace detail {
type group_varint_table_base_make_item (line 44) | struct group_varint_table_base_make_item {
method get_d (line 45) | constexpr std::size_t get_d(std::size_t index, std::size_t j) const {
method get_offset (line 48) | constexpr std::size_t get_offset(std::size_t index, std::size_t j)...
type group_varint_table_length_make_item (line 60) | struct group_varint_table_length_make_item : group_varint_table_base...
type group_varint_table_sse_mask_make_item (line 106) | struct group_varint_table_sse_mask_make_item
method partial_item (line 108) | constexpr auto partial_item(
method item_impl (line 116) | constexpr auto item_impl(std::size_t d, std::size_t offset) const {
method item (line 127) | constexpr auto item(std::size_t index, std::size_t j) const {
FILE: folly/GroupVarint.h
function namespace (line 45) | namespace folly {
function namespace (line 52) | namespace folly {
function namespace (line 58) | namespace folly {
FILE: folly/IPAddress.cpp
type folly (line 34) | namespace folly {
function hash_value (line 37) | size_t hash_value(const IPAddress& addr) {
function ostream (line 40) | ostream& operator<<(ostream& os, const IPAddress& addr) {
function toAppend (line 44) | void toAppend(IPAddress addr, string* result) {
function toAppend (line 47) | void toAppend(IPAddress addr, fbstring* result) {
function IPAddressV4 (line 56) | IPAddressV4 IPAddress::createIPv4(const IPAddress& addr) {
function IPAddressV6 (line 65) | IPAddressV6 IPAddress::createIPv6(const IPAddress& addr) {
function splitIpSlashCidr (line 75) | auto splitIpSlashCidr(StringPiece ipSlashCidr) {
function CIDRNetwork (line 84) | CIDRNetwork IPAddress::createNetwork(
function IPAddress (line 185) | IPAddress IPAddress::fromBinary(ByteRange bytes) {
function IPAddress (line 210) | IPAddress IPAddress::fromLong(uint32_t src) {
function IPAddress (line 213) | IPAddress IPAddress::fromLongHBO(uint32_t src) {
function IPAddress (line 295) | IPAddress& IPAddress::operator=(const IPAddressV4& ipv4_addr) noexcept {
function IPAddress (line 302) | IPAddress& IPAddress::operator=(const IPAddressV6& ipv6_addr) noexcept {
function CIDRNetwork (line 455) | CIDRNetwork IPAddress::longestCommonPrefix(
FILE: folly/IPAddress.h
function namespace (line 44) | namespace folly {
function IPAddressV6 (line 295) | const IPAddressV6& asV6() const {
function bitCount (line 414) | size_t bitCount() const {
function getNthLSBit (line 441) | bool getNthLSBit(size_t bitIndex) const {
function getNthLSByte (line 449) | uint8_t getNthLSByte(size_t byteIndex) const {
function isLoopback (line 474) | bool isLoopback() const {
function isNonroutable (line 499) | bool isNonroutable() const {
function IPAddress (line 528) | IPAddress mask(uint8_t numBits) const {
function toFullyQualifiedAppend (line 556) | void toFullyQualifiedAppend(std::string& out) const {
function version (line 563) | uint8_t version() const {
function namespace (line 662) | namespace std {
FILE: folly/IPAddressException.h
type class (line 39) | enum class
function CIDRNetworkError (line 48) | enum class CIDRNetworkError {
FILE: folly/IPAddressV4.cpp
type folly (line 33) | namespace folly {
function hash_value (line 36) | size_t hash_value(const IPAddressV4& addr) {
function ostream (line 39) | ostream& operator<<(ostream& os, const IPAddressV4& addr) {
function toAppend (line 43) | void toAppend(IPAddressV4 addr, string* result) {
function toAppend (line 46) | void toAppend(IPAddressV4 addr, fbstring* result) {
function IPAddressV4 (line 55) | IPAddressV4 IPAddressV4::fromLong(uint32_t src) {
function IPAddressV4 (line 61) | IPAddressV4 IPAddressV4::fromLongHBO(uint32_t src) {
type in_addr (line 101) | struct in_addr
function IPAddressV4 (line 111) | IPAddressV4 IPAddressV4::fromBinary(ByteRange bytes) {
function IPAddressV4 (line 142) | IPAddressV4 IPAddressV4::fromInverseArpaName(const std::string& arpana...
function IPAddressV6 (line 157) | IPAddressV6 IPAddressV4::createIPv6() const {
function IPAddressV6 (line 166) | IPAddressV6 IPAddressV4::getIPv6For6To4() const {
function string (line 175) | string IPAddressV4::toJson() const {
function IPAddressV4 (line 246) | IPAddressV4 IPAddressV4::mask(size_t numBits) const {
function string (line 258) | string IPAddressV4::str() const {
function string (line 268) | string IPAddressV4::toInverseArpaName() const {
function ByteArray4 (line 290) | ByteArray4 IPAddressV4::fetchMask(size_t numBits) {
function CIDRNetworkV4 (line 301) | CIDRNetworkV4 IPAddressV4::longestCommonPrefix(
FILE: folly/IPAddressV4.h
function namespace (line 40) | namespace folly {
function inSubnet (line 222) | bool inSubnet(const IPAddressV4& subnet, uint8_t cidr) const {
function isLoopback (line 240) | bool isLoopback() const;
function sockaddr_in (line 315) | sockaddr_in toSockAddr() const {
function byteCount (line 373) | static size_t byteCount() { return 4; }
function getNthMSBit (line 379) | bool getNthMSBit(size_t bitIndex) const {
function getNthLSBit (line 393) | bool getNthLSBit(size_t bitIndex) const {
function getNthLSByte (line 401) | uint8_t getNthLSByte(size_t byteIndex) const {
function explicit (line 418) | explicit AddressStorage(const ByteArray4 bytes) : bytes_(bytes) {}
function explicit (line 419) | explicit AddressStorage(const in_addr addr) : inAddr_(addr) {}
function namespace (line 490) | namespace std {
FILE: folly/IPAddressV6.cpp
type folly (line 48) | namespace folly {
function hash_value (line 55) | size_t hash_value(const IPAddressV6& addr) {
function ostream (line 58) | ostream& operator<<(ostream& os, const IPAddressV6& addr) {
function toAppend (line 62) | void toAppend(IPAddressV6 addr, string* result) {
function toAppend (line 65) | void toAppend(IPAddressV6 addr, fbstring* result) {
type addrinfo (line 103) | struct addrinfo
type addrinfo (line 104) | struct addrinfo
type sockaddr_in6 (line 113) | struct sockaddr_in6
type sockaddr_in6 (line 114) | struct sockaddr_in6
function IPAddressV6 (line 177) | IPAddressV6 IPAddressV6::fromBinary(ByteRange bytes) {
function IPAddressV6 (line 209) | IPAddressV6 IPAddressV6::fromInverseArpaName(const std::string& arpana...
function IPAddressV4 (line 239) | IPAddressV4 IPAddressV6::createIPv4() const {
function unpack (line 248) | static inline uint16_t unpack(uint8_t lobyte, uint8_t hibyte) {
function unpackInto (line 254) | static inline void unpackInto(
function IPAddressV4 (line 264) | IPAddressV4 IPAddressV6::getIPv4For6To4() const {
function string (line 318) | string IPAddressV6::toJson() const {
function IPAddressV6 (line 409) | IPAddressV6 IPAddressV6::getSolicitedNodeAddress() const {
function IPAddressV6 (line 436) | IPAddressV6 IPAddressV6::mask(size_t numBits) const {
function string (line 447) | string IPAddressV6::str() const {
function string (line 476) | string IPAddressV6::toFullyQualified() const {
function string (line 486) | string IPAddressV6::toInverseArpaName() const {
function ByteArray16 (line 512) | ByteArray16 IPAddressV6::fetchMask(size_t numBits) {
function CIDRNetworkV6 (line 532) | CIDRNetworkV6 IPAddressV6::longestCommonPrefix(
FILE: folly/IPAddressV6.h
function namespace (line 44) | namespace folly {
function scope_ (line 589) | uint16_t scope_{0};
function namespace (line 620) | namespace std {
FILE: folly/Indestructible.h
type factory_constructor_t (line 60) | struct factory_constructor_t {
function factory_constructor_t (line 64) | constexpr factory_constructor_t factory_constructor{}
function noexcept (line 118) | constexpr Indestructible(std::initializer_list<U> il, Args... args) noex...
FILE: folly/IndexedMemPool.h
function namespace (line 37) | namespace detail {
function eagerRecycle (line 47) | static constexpr bool eagerRecycle() {
function initialize (line 55) | static void initialize(T* ptr) {
function cleanup (line 63) | static void cleanup(T* ptr) {
function onRecycle (line 83) | static void onRecycle(T* ptr) {
function maxIndexForCapacity (line 181) | static constexpr uint32_t maxIndexForCapacity(uint32_t capacity) {
function capacityForMaxIndex (line 190) | static constexpr uint32_t capacityForMaxIndex(uint32_t maxIndex) {
function capacity (line 234) | uint32_t capacity() { return capacityForMaxIndex(actualCapacity_); }
function recycleIndex (line 273) | void recycleIndex(uint32_t idx) {
function T (line 282) | const T& operator[](uint32_t idx) const { return *(slot(idx).elemPtr()); }
function locateElem (line 286) | uint32_t locateElem(const T* elem) const {
function isAllocated (line 303) | bool isAllocated(uint32_t idx) const {
type Slot (line 310) | struct Slot {
function withSize (line 322) | struct TaggedPtr {
function namespace (line 528) | namespace detail {
FILE: folly/Lazy.h
function namespace (line 25) | namespace folly {
FILE: folly/MPMCPipeline.h
function namespace (line 26) | namespace folly {
FILE: folly/MPMCQueue.h
function namespace (line 33) | namespace folly {
function initQueue (line 161) | void initQueue(size_t queueCapacity) {
type ClosedArray (line 242) | struct ClosedArray {
function Slot (line 244) | Slot* slots_{nullptr};
function explicit (line 255) | explicit MPMCQueue(
function blockingReadWithTicket (line 381) | void blockingReadWithTicket(uint64_t& ticket, T& elem) noexcept {
function initQueue (line 409) | void initQueue(const size_t cap, const size_t mult) {
function tryObtainReadyPushTicket (line 423) | bool tryObtainReadyPushTicket(
function tryObtainPromisedPushTicket (line 466) | bool tryObtainPromisedPushTicket(
function tryObtainReadyPopTicket (line 503) | bool tryObtainReadyPopTicket(
function tryObtainPromisedPopTicket (line 531) | bool tryObtainPromisedPopTicket(
function getOffset (line 578) | uint64_t getOffset(const uint64_t state) const noexcept {
function getNumClosed (line 582) | int getNumClosed(const uint64_t state) const noexcept {
function tryExpand (line 590) | bool tryExpand(const uint64_t state, const size_t cap) noexcept {
function trySeqlockReadSection (line 635) | bool trySeqlockReadSection(
function maybeUpdateFromClosed (line 654) | bool maybeUpdateFromClosed(
function namespace (line 680) | namespace detail {
function blockingRead (line 952) | void blockingRead(T& elem) noexcept {
function blockingReadWithTicket (line 958) | void blockingReadWithTicket(uint64_t& ticket, T& elem) noexcept {
function read (line 973) | bool read(T& elem) noexcept {
function readAndGetTicket (line 979) | bool readAndGetTicket(uint64_t& ticket, T& elem) noexcept {
function readIfNotEmpty (line 1017) | bool readIfNotEmpty(T& elem) noexcept {
function computeStride (line 1116) | static int computeStride(size_t capacity) noexcept {
function idx (line 1137) | size_t idx(uint64_t ticket, size_t cap, int stride) noexcept {
function turn (line 1143) | uint32_t turn(uint64_t ticket, size_t cap) noexcept {
function tryObtainReadyPushTicket (line 1151) | bool tryObtainReadyPushTicket(
function tryObtainPromisedPushTicket (line 1217) | bool tryObtainPromisedPushTicket(
function tryObtainReadyPopTicket (line 1243) | bool tryObtainReadyPopTicket(
function tryObtainPromisedPopTicket (line 1305) | bool tryObtainPromisedPopTicket(
function dequeueWithTicketBase (line 1349) | void dequeueWithTicketBase(
function enqueue (line 1386) | void enqueue(
function mayEnqueue (line 1409) | bool mayEnqueue(const uint32_t turn) const noexcept {
function dequeue (line 1413) | void dequeue(
function mayDequeue (line 1436) | bool mayDequeue(const uint32_t turn) const noexcept {
function T (line 1447) | T* ptr() noexcept { return static_cast<T*>(static_cast<void*>(&contents_...
function destroyContents (line 1449) | void destroyContents() noexcept {
function enqueueImpl (line 1457) | void enqueueImpl(
function dequeueImpl (line 1468) | void dequeueImpl(
FILE: folly/MacAddress.cpp
type folly (line 30) | namespace folly {
function MacAddress (line 40) | MacAddress MacAddress::createMulticast(IPAddressV6 v6addr) {
function string (line 51) | string MacAddress::toString() const {
FILE: folly/MacAddress.h
function namespace (line 27) | namespace folly {
function MacAddress (line 84) | static MacAddress fromBinary(ByteRange value) {
function MacAddress (line 99) | static MacAddress fromNBO(uint64_t value) { return MacAddress(value); }
function MacAddress (line 110) | static MacAddress fromHBO(uint64_t value) {
function parse (line 162) | void parse(StringPiece str) { setFromString(str); }
function getByte (line 230) | inline uint64_t getByte(size_t index) const { return bytes_[index + 2]; }
function packedBytes (line 232) | uint64_t packedBytes() const {
FILE: folly/Math.h
function namespace (line 30) | namespace folly {
FILE: folly/MaybeManagedPtr.h
function namespace (line 21) | namespace folly {
FILE: folly/Memory.h
function namespace (line 44) | namespace folly {
function aligned_free (line 109) | inline void aligned_free(void* aligned_ptr) {
function aligned_free (line 119) | inline void aligned_free(void* aligned_ptr) {
function aligned_free (line 129) | inline void aligned_free(void* aligned_ptr) {
function namespace (line 135) | namespace detail {
type static_function_deleter (line 302) | struct static_function_deleter {
function namespace (line 369) | namespace detail {
function T (line 449) | const T*>>>
function namespace (line 518) | namespace detail {
function erased_unique_ptr (line 562) | inline erased_unique_ptr empty_erased_unique_ptr() {
function noexcept (line 580) | constexpr SysAllocator() = default;
function T (line 587) | T* allocate(size_t count) {
function deallocate (line 594) | void deallocate(T* p, size_t count) { sizedFree(p, count * sizeof(T)); }
function class (line 600) | class DefaultAlign {
function deallocate (line 696) | void deallocate(T* p, size_t /* count */) { aligned_free(p); }
function explicit (line 735) | explicit CxxAllocatorAdaptor() {}
function explicit (line 737) | constexpr explicit CxxAllocatorAdaptor(Inner& ref) : inner_(&ref) {}
function deallocate (line 762) | void deallocate(T* p, std::size_t n) {
function explicit (line 807) | explicit allocator_delete(const allocator_type& alloc)
function explicit (line 810) | explicit allocator_delete(allocator_type&& alloc)
function const (line 819) | void operator()(pointer p) const {
function DeferCondDeallocate (line 853) | DeferCondDeallocate handler{constructed, copy, p};
type SysBufferDeleter (line 860) | struct SysBufferDeleter {
function SysBufferUniquePtr (line 865) | inline SysBufferUniquePtr allocate_sys_buffer(std::size_t size) {
function namespace (line 890) | namespace detail {
FILE: folly/MicroLock.cpp
type folly (line 23) | namespace folly {
FILE: folly/MicroLock.h
function namespace (line 28) | namespace folly {
FILE: folly/MoveWrapper.h
function explicit (line 42) | explicit MoveWrapper(T&& t) : value(std::move(t)) {}
function value (line 45) | MoveWrapper(const MoveWrapper& other) : value(std::move(other.value)) {}
FILE: folly/ObserverContainer.h
function namespace (line 35) | namespace folly {
FILE: folly/OperationCancelled.h
function namespace (line 21) | namespace folly {
FILE: folly/Optional.h
function namespace (line 76) | namespace folly {
function noexcept (line 167) | OptionalCopyBase(const OptionalCopyBase& src) noexcept(
function _secret (line 218) | enum class _secret { _token };
function None (line 226) | constexpr None none{None::_secret::_token};
function Value (line 471) | constexpr const Value& value() const& {
type detail (line 546) | struct detail
function namespace (line 763) | namespace folly {
FILE: folly/Overload.h
function namespace (line 39) | namespace folly {
function const (line 89) | struct type {
function const (line 114) | struct type {
type type (line 134) | struct type {
function const (line 155) | struct type {
type type (line 175) | struct type {
function const (line 196) | struct type {
function noexcept (line 215) | const noexcept -> T& {
function noexcept (line 218) | const noexcept -> const T& {
function noexcept (line 221) | const noexcept -> T&& {
function noexcept (line 224) | const noexcept -> const T&& {
function explicit (line 241) | explicit constexpr Overload(Case c, Cases... cs)
function explicit (line 250) | explicit constexpr Overload(Case c) : Case(std::move(c)) {}
function namespace (line 273) | namespace overload_detail {
function f (line 308) | auto f = [&](auto&& v) -> R {
FILE: folly/PackedSyncPtr.h
function namespace (line 61) | namespace folly {
FILE: folly/Padded.h
function namespace (line 46) | namespace folly {
function const_iterator (line 316) | const_iterator cend() const {
function iterator (line 325) | iterator begin() { return iterator(c_.begin()); }
function iterator (line 326) | iterator end() {
function swap (line 333) | void swap(Adaptor& other) {
function push_back (line 374) | void push_back(value_type x) { emplace_back(std::move(x)); }
function pop_back (line 376) | void pop_back() {
function clear (line 384) | void clear() {
function reserve (line 389) | void reserve(size_type n) {
function value_type (line 396) | const value_type& operator[](size_type idx) const {
function padToFullNode (line 422) | void padToFullNode(const value_type& padValue) {
function Node (line 444) | static Node fullNode(const value_type& value) {
FILE: folly/Poly-inl.h
function namespace (line 17) | namespace folly {
FILE: folly/Poly.h
function namespace (line 43) | namespace folly {
type NoneSuch (line 411) | struct NoneSuch {}
function noexcept (line 418) | const noexcept { return *this; }
function Data (line 420) | Data* _data_() noexcept { return PolyAccess::data(*this); }
function Data (line 421) | Data const* _data_() const noexcept { return PolyAccess::data(*this); }
function Data (line 498) | Data* _data_() noexcept { return PolyAccess::data(*this); }
function Data (line 499) | Data const* _data_() const noexcept { return PolyAccess::data(*this); }
function RefType (line 501) | static constexpr RefType refType() noexcept;
FILE: folly/PolyException.h
function namespace (line 24) | namespace folly {
FILE: folly/Portability.h
function namespace (line 141) | namespace folly {
function namespace (line 152) | namespace folly {
function namespace (line 286) | namespace folly {
function namespace (line 295) | namespace folly {
function namespace (line 304) | namespace folly {
function namespace (line 319) | namespace folly {
function namespace (line 443) | namespace folly {
function namespace (line 480) | namespace folly {
FILE: folly/ProducerConsumerQueue.h
function namespace (line 29) | namespace folly {
function sizeGuess (line 157) | size_t sizeGuess() const {
FILE: folly/Random-inl.h
function namespace (line 21) | namespace folly {
FILE: folly/Random.cpp
type folly (line 44) | namespace folly {
function readRandomDevice (line 48) | void readRandomDevice(void* data, size_t size) {
class BufferedRandomDevice (line 91) | class BufferedRandomDevice {
method notifyNewGlobalEpoch (line 95) | static void notifyNewGlobalEpoch() { ++globalEpoch_; }
method get (line 99) | void get(void* data, size_t size) {
method remaining (line 111) | inline size_t remaining() const {
type RandomTag (line 124) | struct RandomTag {}
type Wrapper (line 178) | struct Wrapper {
FILE: folly/Random.h
function namespace (line 38) | namespace folly {
function rand64 (line 314) | static uint64_t rand64(uint64_t max) {
function rand64 (line 322) | uint64_t rand64(uint64_t max, RNG&& rng) {
function rand64 (line 329) | static uint64_t rand64(uint64_t min, uint64_t max) {
function rand64 (line 337) | uint64_t rand64(uint64_t min, uint64_t max, RNG&& rng) {
function oneIn (line 347) | static bool oneIn(uint32_t n) { return oneIn(n, ThreadLocalPRNG()); }
function oneIn64 (line 352) | static bool oneIn64(uint64_t n) { return oneIn64(n, ThreadLocalPRNG()); }
function oneIn (line 358) | bool oneIn(uint32_t n, RNG&& rng) {
function oneIn64 (line 366) | bool oneIn64(uint64_t n, RNG&& rng) {
function randBool (line 376) | static bool randBool(double p) { return randBool(p, ThreadLocalPRNG()); }
function randBool (line 382) | bool randBool(double p, RNG&& rng) {
function randDouble01 (line 389) | static double randDouble01() { return randDouble01(ThreadLocalPRNG()); }
function randDouble (line 409) | static double randDouble(double min, double max) {
function randDouble (line 417) | double randDouble(double min, double max, RNG&& rng) {
function randomNumberSeed (line 431) | inline uint32_t randomNumberSeed() {
FILE: folly/Range.h
function namespace (line 135) | namespace detail {
function char8_t (line 162) | struct IsCharPointer<const char8_t*> {
type IsUnsignedCharPointer (line 172) | struct IsUnsignedCharPointer
type IsUnsignedCharPointer (line 177) | struct IsUnsignedCharPointer
type range_traits_char_ (line 207) | struct range_traits_char_ {
type range_traits_byte_ (line 211) | struct range_traits_byte_ {
function compare (line 216) | static constexpr int compare(
type range_traits_fbck_ (line 222) | struct range_traits_fbck_ {
function compare (line 227) | static constexpr int compare(
function Range (line 372) | Range(const Range& other, size_type first, size_type length = npos)
function clear (line 579) | void clear() {
function assign (line 587) | void assign(Iter start, Iter end) {
function reset (line 595) | void reset(Iter start, size_type size) {
function size_type (line 610) | constexpr size_type walk_size() const {
function reference (line 620) | reference front() {
function reference (line 624) | reference back() {
type NotStringView (line 654) | struct NotStringView {}
type StringViewTypeChar (line 655) | struct StringViewTypeChar {
type StringViewTypeNone (line 659) | struct StringViewTypeNone {
function Range (line 1175) | Range split_step(const value_type& delimiter) {
function Range (line 1184) | Range split_step(Range delimiter) {
function namespace (line 1418) | namespace detail {
function namespace (line 1545) | namespace detail {
type AsciiCaseSensitive (line 1564) | struct AsciiCaseSensitive {
function if (line 1573) | struct AsciiCaseInsensitive {
function qfind (line 1632) | inline size_t qfind(
function rfind (line 1644) | inline size_t rfind(
function qfind_first_of (line 1662) | inline size_t qfind_first_of(
function qfind_first_of (line 1669) | inline size_t qfind_first_of(
function const (line 1685) | size_t operator()(folly::Range<T*> r) const {
function namespace (line 1704) | inline namespace literals {
function namespace (line 1739) | namespace fmt {
function namespace (line 1769) | namespace ranges {
function namespace (line 1777) | namespace ranges {
FILE: folly/Replaceable.h
function namespace (line 122) | namespace folly {
function explicit (line 196) | inline explicit default_and_move_ctor_mixin(int) {}
function noexcept (line 206) | inline default_and_move_ctor_mixin(
function explicit (line 237) | inline explicit default_and_move_ctor_mixin(int) {}
function noexcept (line 244) | inline default_and_move_ctor_mixin(
function explicit (line 257) | inline explicit default_and_move_ctor_mixin(int) {}
type copy_ctor_mixin (line 298) | struct copy_ctor_mixin
function noexcept (line 314) | inline copy_ctor_mixin(copy_ctor_mixin const& other) noexcept(
function explicit (line 453) | explicit Replaceable(
FILE: folly/ScopeGuard.h
function namespace (line 92) | namespace detail {
FILE: folly/SharedMutex.cpp
type folly (line 25) | namespace folly {
class SharedMutexImpl<true> (line 27) | class SharedMutexImpl<true>
class SharedMutexImpl<false> (line 28) | class SharedMutexImpl<false>
type shared_mutex_detail (line 30) | namespace shared_mutex_detail {
function annotationGuard (line 31) | std::unique_lock<std::mutex> annotationGuard(void* ptr) {
function getMaxDeferredReadersSlow (line 46) | uint32_t getMaxDeferredReadersSlow(relaxed_atomic<uint32_t>& cache) {
function getCurrentThreadInvoluntaryContextSwitchCount (line 57) | long getCurrentThreadInvoluntaryContextSwitchCount() {
function throwOperationNotPermitted (line 70) | [[noreturn]] void throwOperationNotPermitted() {
function throwDeadlockWouldOccur (line 75) | [[noreturn]] void throwDeadlockWouldOccur() {
FILE: folly/SharedMutex.h
function namespace (line 240) | namespace folly {
type SharedMutexPolicyDefault (line 258) | struct SharedMutexPolicyDefault {
function namespace (line 265) | namespace shared_mutex_detail {
function namespace (line 1602) | namespace shared_mutex_detail {
function namespace (line 1614) | namespace std {
FILE: folly/Singleton-inl.h
function namespace (line 17) | namespace folly {
FILE: folly/Singleton.cpp
type folly (line 51) | namespace folly {
type detail (line 54) | namespace detail {
function singletonWarnDoubleRegistrationAndAbort (line 89) | [[noreturn]] void singletonWarnDoubleRegistrationAndAbort(
function singletonWarnLeakyDoubleRegistrationAndAbort (line 101) | [[noreturn]] void singletonWarnLeakyDoubleRegistrationAndAbort(
function singletonWarnLeakyInstantiatingNotRegisteredAndAbort (line 113) | [[noreturn]] void singletonWarnLeakyInstantiatingNotRegisteredAndAbort(
function singletonWarnRegisterMockEarlyAndAbort (line 120) | [[noreturn]] void singletonWarnRegisterMockEarlyAndAbort(
function singletonWarnDestroyInstanceLeak (line 127) | void singletonWarnDestroyInstanceLeak(
function singletonWarnCreateCircularDependencyAndAbort (line 140) | [[noreturn]] void singletonWarnCreateCircularDependencyAndAbort(
function singletonWarnCreateUnregisteredAndAbort (line 145) | [[noreturn]] void singletonWarnCreateUnregisteredAndAbort(
function singletonWarnCreateBeforeRegistrationCompleteAndAbort (line 152) | [[noreturn]] void singletonWarnCreateBeforeRegistrationCompleteAndAb...
function singletonPrintDestructionStackTrace (line 166) | void singletonPrintDestructionStackTrace(const TypeDescriptor& type) {
function singletonThrowNullCreator (line 173) | [[noreturn]] void singletonThrowNullCreator(const std::type_info& ty...
function singletonThrowGetInvokedAfterDestruction (line 181) | [[noreturn]] void singletonThrowGetInvokedAfterDestruction(
type detail (line 78) | namespace detail {
function singletonWarnDoubleRegistrationAndAbort (line 89) | [[noreturn]] void singletonWarnDoubleRegistrationAndAbort(
function singletonWarnLeakyDoubleRegistrationAndAbort (line 101) | [[noreturn]] void singletonWarnLeakyDoubleRegistrationAndAbort(
function singletonWarnLeakyInstantiatingNotRegisteredAndAbort (line 113) | [[noreturn]] void singletonWarnLeakyInstantiatingNotRegisteredAndAbort(
function singletonWarnRegisterMockEarlyAndAbort (line 120) | [[noreturn]] void singletonWarnRegisterMockEarlyAndAbort(
function singletonWarnDestroyInstanceLeak (line 127) | void singletonWarnDestroyInstanceLeak(
function singletonWarnCreateCircularDependencyAndAbort (line 140) | [[noreturn]] void singletonWarnCreateCircularDependencyAndAbort(
function singletonWarnCreateUnregisteredAndAbort (line 145) | [[noreturn]] void singletonWarnCreateUnregisteredAndAbort(
function singletonWarnCreateBeforeRegistrationCompleteAndAbort (line 152) | [[noreturn]] void singletonWarnCreateBeforeRegistrationCompleteAndAb...
function singletonPrintDestructionStackTrace (line 166) | void singletonPrintDestructionStackTrace(const TypeDescriptor& type) {
function singletonThrowNullCreator (line 173) | [[noreturn]] void singletonThrowNullCreator(const std::type_info& ty...
function singletonThrowGetInvokedAfterDestruction (line 181) | [[noreturn]] void singletonThrowGetInvokedAfterDestruction(
type FatalHelper (line 193) | struct FatalHelper {
function fireShutdownSignalHelper (line 472) | [[noreturn]] void fireShutdownSignalHelper(sigval_t sigval) {
type sigevent (line 488) | struct sigevent
type itimerspec (line 496) | struct itimerspec
FILE: folly/Singleton.h
function namespace (line 172) | namespace folly {
function explicit (line 833) | explicit LeakySingleton(CreateFunc createFunc) {
function T (line 842) | static T& get() { return instance(); }
function make_mock (line 848) | static void make_mock(CreateFunc createFunc) {
type class (line 863) | enum class
type Entry (line 865) | struct Entry {
function Entry (line 877) | static Entry& entryInstance() { return detail::createGlobal<Entry, Tag>(...
function T (line 879) | static T& instance() {
function createInstance (line 888) | static void createInstance() {
FILE: folly/SingletonThreadLocal.cpp
type folly (line 19) | namespace folly {
type detail (line 21) | namespace detail {
function FOLLY_NOINLINE (line 23) | FOLLY_NOINLINE SingletonThreadLocalState::Tracking::Tracking() noexc...
function FOLLY_NOINLINE (line 25) | FOLLY_NOINLINE SingletonThreadLocalState::Tracking::~Tracking() {
function FOLLY_NOINLINE (line 31) | FOLLY_NOINLINE void SingletonThreadLocalState::LocalLifetime::destroy(
function FOLLY_NOINLINE (line 44) | FOLLY_NOINLINE void SingletonThreadLocalState::LocalLifetime::track(
FILE: folly/SingletonThreadLocal.h
function namespace (line 32) | namespace folly {
function LocalLifetime (line 128) | struct LocalLifetime : State::LocalLifetime {
function FOLLY_ALWAYS_INLINE (line 134) | FOLLY_ALWAYS_INLINE static WrapperTL& getWrapperTL() {
function FOLLY_NOINLINE (line 139) | FOLLY_NOINLINE static Wrapper& getWrapper() { return *getWrapperTL(); }
function LocalCache (line 151) | static LocalCache& getLocalCache() {
function T (line 166) | static T* try_get() {
function class (line 180) | class Accessor {
function Accessor (line 224) | static Accessor accessAllThreads() {
FILE: folly/SocketAddress.cpp
type ScopedAddrInfo (line 46) | struct ScopedAddrInfo {
method ScopedAddrInfo (line 47) | explicit ScopedAddrInfo(struct addrinfo* addrinfo) : info(addrinfo) {}
type addrinfo (line 50) | struct addrinfo
type HostAndPort (line 64) | struct HostAndPort {
method HostAndPort (line 65) | HostAndPort(const char* str, bool hostRequired)
type GetAddrInfoError (line 107) | struct GetAddrInfoError {
method GetAddrInfoError (line 111) | explicit GetAddrInfoError(int errorCode) {
method GetAddrInfoError (line 119) | explicit GetAddrInfoError(int errorCode) : error(gai_strerror(errorCod...
type folly (line 125) | namespace folly {
type sockaddr (line 202) | struct sockaddr
type sockaddr (line 221) | struct sockaddr
type sockaddr_un (line 256) | struct sockaddr_un
type sockaddr (line 275) | struct sockaddr
type sockaddr (line 310) | struct sockaddr
type sockaddr (line 313) | struct sockaddr
type sockaddr_in (line 320) | struct sockaddr_in
type sockaddr_in (line 325) | struct sockaddr_in
type sockaddr_in6 (line 327) | struct sockaddr_in6
type sockaddr_in6 (line 332) | struct sockaddr_in6
type sockaddr_un (line 335) | struct sockaddr_un
type sockaddr_vm (line 338) | struct sockaddr_vm
type sockaddr_in (line 347) | struct sockaddr_in
type sockaddr_in6 (line 352) | struct sockaddr_in6
type sockaddr_un (line 358) | struct sockaddr_un
type sockaddr_un (line 360) | struct sockaddr_un
type sockaddr_un (line 376) | struct sockaddr_un
type sockaddr_un (line 378) | struct sockaddr_un
type sockaddr_vm (line 383) | struct sockaddr_vm
function socklen_t (line 397) | socklen_t SocketAddress::getActualSize() const {
type addrinfo (line 716) | struct addrinfo
type addrinfo (line 725) | struct addrinfo
type addrinfo (line 727) | struct addrinfo
type addrinfo (line 733) | struct addrinfo
type addrinfo (line 747) | struct addrinfo
type addrinfo (line 751) | struct addrinfo
type addrinfo (line 754) | struct addrinfo
type sockaddr (line 767) | struct sockaddr
type sockaddr_un (line 812) | struct sockaddr_un
type sockaddr_un (line 829) | struct sockaddr_un
type sockaddr_un (line 832) | struct sockaddr_un
function hash_value (line 904) | size_t hash_value(const SocketAddress& address) {
FILE: folly/SocketAddress.h
function namespace (line 37) | namespace folly {
function isPrivateAddress (line 138) | bool isPrivateAddress() const;
function setFromIpPort (line 193) | void setFromIpPort(const std::string& ip, uint16_t port) {
function setFromLocalPort (line 233) | void setFromLocalPort(const std::string& port) {
function setFromLocalIpPort (line 256) | void setFromLocalIpPort(const std::string& addressAndPort) {
function setFromIpPort (line 277) | void setFromIpPort(const std::string& addressAndPort) {
function setFromHostPort (line 299) | void setFromHostPort(const std::string& hostAndPort) {
type sockaddr (line 319) | struct sockaddr
type sockaddr (line 334) | struct sockaddr
function setFromPath (line 348) | void setFromPath(const char* path, size_t length) {
type ExternalUnixAddr (line 746) | struct ExternalUnixAddr {
type sockaddr_un (line 755) | struct sockaddr_un
function ExternalUnixAddr (line 760) | ExternalUnixAddr(const ExternalUnixAddr& other) : ExternalUnixAddr() {
function holdsUnix (line 779) | struct IPAddr {
type addrinfo (line 814) | struct addrinfo
type addrinfo (line 815) | struct addrinfo
type addrinfo (line 816) | struct addrinfo
type addrinfo (line 817) | struct addrinfo
type sockaddr (line 820) | struct sockaddr
function namespace (line 846) | namespace std {
FILE: folly/SpinLock.h
function namespace (line 40) | namespace folly {
FILE: folly/String-inl.h
function namespace (line 29) | namespace folly {
function namespace (line 157) | namespace detail {
function namespace (line 258) | namespace detail {
function prepareDelim (line 378) | inline char prepareDelim(char c) {
function toOrIgnore (line 387) | inline void toOrIgnore(StringPiece, decltype(std::ignore)&) {}
function ConversionCode (line 435) | inline ConversionCode convertError(ConversionCode code) {
function split (line 566) | bool>::type
function namespace (line 572) | namespace detail {
function namespace (line 766) | namespace detail {
FILE: folly/String.cpp
type folly (line 33) | namespace folly {
type detail (line 41) | namespace detail {
type string_table_c_escape_make_item (line 43) | struct string_table_c_escape_make_item {
type string_table_c_unescape_make_item (line 59) | struct string_table_c_unescape_make_item {
type string_table_hex_make_item (line 81) | struct string_table_hex_make_item {
type string_table_uri_escape_make_item (line 93) | struct string_table_uri_escape_make_item {
function hexDumpLine (line 683) | size_t hexDumpLine(
function delimCountTokensImpl (line 790) | size_t delimCountTokensImpl(DelimT delim, StringPiece sp, bool ignor...
function delimCountTokens (line 828) | size_t delimCountTokens(char delim, StringPiece sp, bool ignoreEmpty) {
function delimCountTokens (line 832) | size_t delimCountTokens(StringPiece delim, StringPiece sp, bool igno...
function is_oddspace (line 127) | static inline bool is_oddspace(char c) {
function StringPiece (line 131) | StringPiece ltrimWhitespace(StringPiece sp) {
function StringPiece (line 149) | StringPiece rtrimWhitespace(StringPiece sp) {
function stringAppendfImplHelper (line 169) | int stringAppendfImplHelper(
function stringAppendfImpl (line 178) | void stringAppendfImpl(std::string& output, const char* format, va_lis...
function stringPrintf (line 221) | std::string stringPrintf(const char* format, ...) {
function stringVPrintf (line 230) | std::string stringVPrintf(const char* format, va_list ap) {
function stringPrintf (line 253) | void stringPrintf(std::string* output, const char* format, ...) {
function stringVPrintf (line 262) | void stringVPrintf(std::string* output, const char* format, va_list ap) {
type PrettySuffix (line 269) | struct PrettySuffix {
function prettyPrint (line 396) | std::string prettyPrint(double val, PrettyType type, bool addSpace) {
function prettyToDouble (line 426) | double prettyToDouble(
function prettyToDouble (line 462) | double prettyToDouble(folly::StringPiece prettyString, const PrettyTyp...
function hexDump (line 468) | std::string hexDump(const void* ptr, size_t size) {
function invoke_strerror_r (line 485) | [[maybe_unused]] static std::string invoke_strerror_r(
function invoke_strerror_r (line 499) | [[maybe_unused]] static std::string invoke_strerror_r(
function errnoStr (line 508) | std::string errnoStr(int err) {
function toLowerAscii8 (line 542) | void toLowerAscii8(char& c) {
function toLowerAscii32 (line 600) | void toLowerAscii32(uint32_t& c) {
function toLowerAscii64 (line 620) | void toLowerAscii64(uint64_t& c) {
function toLowerAscii (line 634) | void toLowerAscii(char* str, size_t length) {
type detail (line 681) | namespace detail {
type string_table_c_escape_make_item (line 43) | struct string_table_c_escape_make_item {
type string_table_c_unescape_make_item (line 59) | struct string_table_c_unescape_make_item {
type string_table_hex_make_item (line 81) | struct string_table_hex_make_item {
type string_table_uri_escape_make_item (line 93) | struct string_table_uri_escape_make_item {
function hexDumpLine (line 683) | size_t hexDumpLine(
function delimCountTokensImpl (line 790) | size_t delimCountTokensImpl(DelimT delim, StringPiece sp, bool ignor...
function delimCountTokens (line 828) | size_t delimCountTokens(char delim, StringPiece sp, bool ignoreEmpty) {
function delimCountTokens (line 832) | size_t delimCountTokens(StringPiece delim, StringPiece sp, bool igno...
function stripLeftMargin (line 737) | std::string stripLeftMargin(std::string s) {
type detail (line 786) | namespace detail {
type string_table_c_escape_make_item (line 43) | struct string_table_c_escape_make_item {
type string_table_c_unescape_make_item (line 59) | struct string_table_c_unescape_make_item {
type string_table_hex_make_item (line 81) | struct string_table_hex_make_item {
type string_table_uri_escape_make_item (line 93) | struct string_table_uri_escape_make_item {
function hexDumpLine (line 683) | size_t hexDumpLine(
function delimCountTokensImpl (line 790) | size_t delimCountTokensImpl(DelimT delim, StringPiece sp, bool ignor...
function delimCountTokens (line 828) | size_t delimCountTokens(char delim, StringPiece sp, bool ignoreEmpty) {
function delimCountTokens (line 832) | size_t delimCountTokens(StringPiece delim, StringPiece sp, bool igno...
FILE: folly/String.h
function namespace (line 48) | namespace folly {
function toLowerAscii (line 846) | inline void toLowerAscii(MutableStringPiece str) {
function toLowerAscii (line 850) | inline void toLowerAscii(std::string& str) {
function hasSpaceOrCntrlSymbols (line 858) | inline bool hasSpaceOrCntrlSymbols(folly::StringPiece s) {
type format_string_for_each_named_arg_fn (line 862) | struct format_string_for_each_named_arg_fn {
function format_string_for_each_named_arg_fn (line 907) | inline constexpr format_string_for_each_named_arg_fn
FILE: folly/Subprocess.cpp
type detail (line 83) | namespace detail {
function Ret (line 129) | static Ret subprocess_libc_load(
type subprocess_libc (line 174) | struct subprocess_libc {
method subprocess_libc_init (line 180) | static void subprocess_libc_init() {
type Scratch (line 199) | struct Scratch {
method Scratch (line 204) | explicit Scratch(Options const& options)
type AttrWithMeta (line 215) | struct AttrWithMeta {
function SpawnRawArgs (line 253) | explicit SpawnRawArgs(Scratch const& scratch, Options const& options)
function ProcessReturnCode (line 284) | ProcessReturnCode ProcessReturnCode::make(int status) {
function ProcessReturnCode (line 297) | ProcessReturnCode& ProcessReturnCode::operator=(
function toSubprocessSpawnErrorMessage (line 371) | static inline std::string toSubprocessSpawnErrorMessage(
function cloneStrings (line 388) | std::unique_ptr<const char*[]> cloneStrings(const std::vector<std::str...
function checkStatus (line 398) | void checkStatus(ProcessReturnCode returnCode) {
function Subprocess (line 494) | Subprocess Subprocess::fromExistingProcess(pid_t pid) {
type Subprocess::ChildErrorInfo (line 537) | struct Subprocess::ChildErrorInfo {
function FOLLY_DETAIL_SUBPROCESS_RAW (line 542) | [[noreturn]]
function FOLLY_DETAIL_SUBPROCESS_RAW (line 720) | FOLLY_DETAIL_SUBPROCESS_RAW
function FOLLY_POP_WARNING (line 756) | FOLLY_POP_WARNING
function FOLLY_DETAIL_SUBPROCESS_RAW (line 768) | FOLLY_DETAIL_SUBPROCESS_RAW
function FOLLY_DETAIL_SUBPROCESS_RAW (line 807) | FOLLY_DETAIL_SUBPROCESS_RAW
function FOLLY_DETAIL_SUBPROCESS_RAW (line 1043) | FOLLY_DETAIL_SUBPROCESS_RAW
function ProcessReturnCode (line 1069) | ProcessReturnCode Subprocess::poll(struct rusage* ru) {
function ProcessReturnCode (line 1095) | ProcessReturnCode Subprocess::wait() {
function ProcessReturnCode (line 1114) | ProcessReturnCode Subprocess::waitAndGetRusage(struct rusage* ru) {
function ProcessReturnCode (line 1138) | ProcessReturnCode Subprocess::waitTimeout(TimeoutDuration timeout) {
function ProcessReturnCode (line 1182) | ProcessReturnCode Subprocess::waitOrTerminateOrKill(
function ProcessReturnCode (line 1195) | ProcessReturnCode Subprocess::terminateOrKill(TimeoutDuration sigtermTim...
function pid_t (line 1220) | pid_t Subprocess::pid() const {
function ByteRange (line 1226) | ByteRange queueFront(const IOBufQueue& queue) {
function handleWrite (line 1235) | bool handleWrite(int fd, IOBufQueue& queue) {
function handleRead (line 1252) | bool handleRead(int fd, IOBufQueue& queue) {
function discardRead (line 1267) | bool discardRead(int fd) {
class Initializer (line 1463) | class Initializer {
method Initializer (line 1465) | Initializer() {
FILE: folly/Subprocess.h
function namespace (line 127) | namespace folly {
function T (line 540) | T value{}
function processGroupLeader_ (line 551) | bool processGroupLeader_{false};
FILE: folly/Synchronized.h
type class (line 82) | enum class
function SynchronizedMutexMethod (line 92) | enum class SynchronizedMutexMethod { Lock, TryLock };
function LockedPtr (line 201) | LockedPtr wlock() { return LockedPtr(static_cast<Subclass*>(this)); }
function TryWLockedPtr (line 217) | TryWLockedPtr tryWLock() {
function RLockedPtr (line 232) | RLockedPtr rlock() { return RLockedPtr(static_cast<Subclass*>(this)); }
function TryRLockedPtr (line 248) | TryRLockedPtr tryRLock() {
function UpgradeLockedPtr (line 407) | UpgradeLockedPtr ulock() {
function TryUpgradeLockedPtr (line 425) | TryUpgradeLockedPtr tryULock() {
function LockedPtr (line 526) | LockedPtr lock() { return LockedPtr(static_cast<Subclass*>(this)); }
function TryLockedPtr (line 549) | TryLockedPtr tryLock() { return TryLockedPtr{static_cast<Subclass*>(this...
function nxMoveCtor (line 647) | static constexpr bool nxMoveCtor{
function guard (line 779) | auto guard = LockedPtr{this};
function guard (line 790) | auto guard = LockedPtr{this};
function LockedPtr (line 808) | LockedPtr contextualLock() { return LockedPtr(this); }
function LockedPtr (line 845) | LockedPtr timedAcquire(unsigned int milliseconds) {
function ConstLockedPtr (line 857) | ConstLockedPtr timedAcquire(unsigned int milliseconds) const {
function guard1 (line 875) | auto guard1 = LockedPtr{this};
type Simulacrum (line 984) | struct Simulacrum {
function LockedPtr (line 1028) | [[deprecated("use explicit lock(), wlock(), or rlock() instead")]] Locke...
function ConstLockedPtr (line 1041) | [[deprecated(
function namespace (line 1051) | namespace detail {
FILE: folly/SynchronizedPtr.h
function namespace (line 33) | namespace folly {
FILE: folly/ThreadCachedInt.h
function namespace (line 28) | namespace folly {
FILE: folly/ThreadLocal.h
function namespace (line 62) | namespace folly {
function incrementToValid (line 326) | void incrementToValid() {
function decrementToValid (line 331) | void decrementToValid() {
function release (line 429) | void release() {
FILE: folly/TimeoutQueue.cpp
type folly (line 23) | namespace folly {
FILE: folly/TimeoutQueue.h
function namespace (line 36) | namespace folly {
FILE: folly/TokenBucket.h
function namespace (line 29) | namespace folly {
function balance (line 115) | double balance(
function timeWhenBucket (line 174) | double timeWhenBucket(double rate, double target) {
function returnTokens (line 183) | void returnTokens(double tokensToReturn, double rate) {
function compare_exchange_weak_relaxed (line 207) | static bool compare_exchange_weak_relaxed(
function defaultClockNow (line 299) | static double defaultClockNow() noexcept {
function consume (line 320) | bool consume(
function consumeOrDrain (line 356) | double consumeOrDrain(
function returnTokens (line 380) | void returnTokens(double tokensToReturn, double rate) {
function consumeWithBorrowAndWait (line 438) | bool consumeWithBorrowAndWait(
function available (line 459) | double available(
function balance (line 471) | double balance(
function defaultClockNow (line 525) | static double defaultClockNow() noexcept(noexcept(Impl::defaultClockNow(...
function setCapacity (line 562) | void setCapacity(double tokens, double nowInSeconds) noexcept {
function consume (line 580) | bool consume(double toConsume, double nowInSeconds = defaultClockNow()) {
function consumeOrDrain (line 597) | double consumeOrDrain(
function returnTokens (line 607) | void returnTokens(double tokensToReturn) {
function consumeWithBorrowAndWait (line 624) | bool consumeWithBorrowAndWait(
function available (line 637) | double available(double nowInSeconds = defaultClockNow()) const noexcept {
function balance (line 646) | double balance(double nowInSeconds = defaultClockNow()) const noexcept {
FILE: folly/Traits.h
function namespace (line 29) | namespace folly {
function namespace (line 269) | namespace detail {
function namespace (line 340) | namespace detail {
function namespace (line 555) | namespace detail {
function namespace (line 631) | namespace detail {
function namespace (line 669) | namespace fallback {
function namespace (line 740) | namespace traits_detail {
type Ignore (line 761) | struct Ignore {
function namespace (line 774) | namespace traits_detail_IsEqualityComparable {
function namespace (line 787) | namespace traits_detail_IsLessThanComparable {
function namespace (line 826) | namespace detail {
function size (line 873) | static constexpr std::size_t size() { return sizeof...(Bs); }
function namespace (line 886) | namespace detail {
function namespace (line 903) | namespace detail {
function namespace (line 1002) | namespace folly {
function FOLLY_ASSUME_FBVECTOR_COMPATIBLE_1 (line 1106) | FOLLY_ASSUME_FBVECTOR_COMPATIBLE_2(std::unique_ptr)
function namespace (line 1315) | namespace traits_detail {
function namespace (line 1353) | namespace detail {
FILE: folly/Try-inl.h
function namespace (line 26) | namespace folly {
function tryEmplace (line 302) | void tryEmplace(Try<void>& t) noexcept {
function namespace (line 334) | namespace try_detail {
FILE: folly/Try.cpp
type folly (line 19) | namespace folly {
class Try<Unit> (line 21) | class Try<Unit>
FILE: folly/Try.h
function namespace (line 33) | namespace folly {
function T (line 264) | const T* operator->() const { return &value(); }
function exception_wrapper (line 305) | const exception_wrapper& exception() const& {
function explicit (line 413) | explicit Try(exception_wrapper e) noexcept
function emplace (line 441) | void emplace() noexcept {
function throwIfFailed (line 470) | inline void throwIfFailed() const;
function exception_wrapper (line 503) | const exception_wrapper& exception() const& {
function exception_wrapper (line 510) | const exception_wrapper&& exception() const&& {
FILE: folly/UTF8String.h
function namespace (line 25) | namespace folly {
FILE: folly/Unicode.cpp
type folly (line 23) | namespace folly {
function unicode_code_point_utf8 (line 25) | unicode_code_point_utf8 unicode_code_point_to_utf8(char32_t const cp) {
function appendCodePointToUtf8 (line 61) | void appendCodePointToUtf8(char32_t const cp, std::string& out) {
function codePointToUtf8 (line 66) | std::string codePointToUtf8(char32_t const cp) {
function utf8ToCodePoint (line 72) | char32_t utf8ToCodePoint(
FILE: folly/Unicode.h
function namespace (line 28) | namespace folly {
FILE: folly/Unit.h
function namespace (line 21) | namespace folly {
function Unit (line 41) | constexpr Unit unit{}
function void (line 48) | struct lift_unit<void> {
function Unit (line 59) | struct drop_unit<Unit> {
FILE: folly/Uri-inl.h
function namespace (line 27) | namespace folly {
function namespace (line 84) | namespace std {
function Uri (line 95) | struct equal_to<folly::Uri> {
FILE: folly/Uri.cpp
type folly (line 24) | namespace folly {
function submatch (line 28) | std::string submatch(const boost::cmatch& m, int idx) {
FILE: folly/Uri.h
function namespace (line 26) | namespace folly {
FILE: folly/Utility.h
function namespace (line 52) | namespace detail {
type initlist_construct_t (line 172) | struct initlist_construct_t {}
function initlist_construct_t (line 173) | constexpr initlist_construct_t initlist_construct{}
type sorted_unique_t (line 196) | struct sorted_unique_t {}
function sorted_unique_t (line 197) | constexpr sorted_unique_t sorted_unique{}
type sorted_equivalent_t (line 219) | struct sorted_equivalent_t {}
function sorted_equivalent_t (line 220) | constexpr sorted_equivalent_t sorted_equivalent{}
type identity_fn (line 247) | struct identity_fn {
function identity_fn (line 254) | inline constexpr identity_fn identity{}
function size (line 262) | struct literal_c_str {
function C (line 300) | constexpr C const* c_str() const noexcept { return buffer; }
function explicit (line 305) | explicit operator String() const //
function namespace (line 328) | namespace detail {
function namespace (line 386) | namespace moveonly_ {
type variadic_noop_fn (line 440) | struct variadic_noop_fn {
type unsafe_default_initialized_cv (line 495) | struct unsafe_default_initialized_cv {
function unsafe_default_initialized_cv (line 526) | inline constexpr unsafe_default_initialized_cv unsafe_default_initialized{}
type to_bool_fn (line 536) | struct to_bool_fn {
function to_bool_fn (line 547) | inline constexpr to_bool_fn to_bool{}
type to_signed_fn (line 549) | struct to_signed_fn {
function to_signed_fn (line 561) | inline constexpr to_signed_fn to_signed{}
type to_unsigned_fn (line 563) | struct to_unsigned_fn {
function to_unsigned_fn (line 571) | inline constexpr to_unsigned_fn to_unsigned{}
function namespace (line 573) | namespace detail {
type to_narrow_fn (line 623) | struct to_narrow_fn {
function to_narrow_fn (line 630) | inline constexpr to_narrow_fn to_narrow{}
type to_integral_fn (line 673) | struct to_integral_fn {
function to_integral_fn (line 680) | inline constexpr to_integral_fn to_integral{}
type to_floating_point_fn (line 725) | struct to_floating_point_fn {
function to_floating_point_fn (line 732) | inline constexpr to_floating_point_fn to_floating_point{}
type to_underlying_fn (line 734) | struct to_underlying_fn {
function to_underlying_fn (line 741) | inline constexpr to_underlying_fn to_underlying{}
function namespace (line 743) | namespace detail {
FILE: folly/Varint.h
function namespace (line 27) | namespace folly {
FILE: folly/algorithm/BinaryHeap.h
function namespace (line 24) | namespace folly {
FILE: folly/algorithm/StableRadixSort.h
function namespace (line 31) | namespace folly {
FILE: folly/algorithm/simd/Contains.cpp
type folly::simd::detail (line 23) | namespace folly::simd::detail {
function containsU8 (line 25) | bool containsU8(
function containsU16 (line 29) | bool containsU16(
function containsU32 (line 33) | bool containsU32(
function containsU64 (line 38) | bool containsU64(
FILE: folly/algorithm/simd/Contains.h
function namespace (line 24) | namespace folly::simd {
FILE: folly/algorithm/simd/FindFixed.h
function namespace (line 41) | namespace folly {
FILE: folly/algorithm/simd/Ignore.h
function namespace (line 23) | namespace folly::simd {
FILE: folly/algorithm/simd/detail/ContainsImpl.h
function namespace (line 29) | namespace folly::simd::detail {
FILE: folly/algorithm/simd/detail/SimdAnyOf.h
function namespace (line 23) | namespace folly {
FILE: folly/algorithm/simd/detail/SimdForEach.h
function namespace (line 29) | namespace folly {
function const (line 127) | size_t unrolling>
function ignore_extrema (line 186) | ignore_extrema ignore{static_cast<int>(f - af), 0};
FILE: folly/algorithm/simd/detail/SimdPlatform.h
function FOLLY_ERASE (line 231) | FOLLY_ERASE
function FOLLY_ERASE (line 236) | FOLLY_ERASE
function FOLLY_ERASE (line 242) | FOLLY_ERASE
function FOLLY_ERASE (line 311) | FOLLY_ERASE
function FOLLY_ERASE (line 316) | FOLLY_ERASE
function FOLLY_ERASE (line 322) | FOLLY_ERASE
FILE: folly/algorithm/simd/detail/Traits.h
type AsSimdFriendlyUintFn (line 99) | struct AsSimdFriendlyUintFn {
FILE: folly/algorithm/simd/detail/UnrollUtils.h
function namespace (line 25) | namespace folly::simd::detail {
FILE: folly/algorithm/simd/detail/test/SimdAnyOfTest.cpp
type folly (line 28) | namespace folly {
type simd::detail (line 29) | namespace simd::detail {
function anySpacesTestForPlatformUnrolling (line 32) | void anySpacesTestForPlatformUnrolling(
function anySpacesTestForPlatform (line 43) | void anySpacesTestForPlatform(
function anySpacesTest (line 55) | void anySpacesTest(folly::StringPiece sChars, bool expected) {
function TEST (line 77) | TEST(SimdAnyOfSimple, Basic) {
function TEST (line 88) | TEST(SimdAnyOfSimple, Ignore) {
function TEST (line 98) | TEST(SimdAnyOfSimple, BigChunk) {
FILE: folly/algorithm/simd/detail/test/SimdForEachTest.cpp
type folly (line 23) | namespace folly {
type simd::detail (line 24) | namespace simd::detail {
type TestDelegate (line 29) | struct TestDelegate {
method step (line 33) | bool step(char* s, ignore_extrema ignore, N unroll_i) const {
method step (line 55) | bool step(char* s, ignore_none, N unroll_i) const {
method unrolledStep (line 68) | bool unrolledStep(std::array<char*, unroll> unrolled) {
function run (line 80) | std::string run(int offset, int len, int stopAt) {
function runAllUnrolls (line 91) | std::string runAllUnrolls(int offset, int len, int stopAt) {
function TEST (line 99) | TEST(SimdForEachAligningTest, Tails) {
function TEST (line 131) | TEST(SimdForEachAligningTest, Large) {
function TEST (line 163) | TEST(SimdForEachAligningTest, Stops) {
function TEST (line 184) | TEST(SimdForEachAligningTest, UnrollIndexes) {
FILE: folly/algorithm/simd/detail/test/TraitsTest.cpp
type folly::simd::detail (line 26) | namespace folly::simd::detail {
type SimdTraitsTest (line 28) | struct SimdTraitsTest : testing::Test {}
type simd_friendly_equivalent_scalar_test (line 30) | namespace simd_friendly_equivalent_scalar_test {
type SomeInt (line 76) | enum SomeInt : std::int16_t {}
type SomeIntClass (line 77) | enum class SomeIntClass : std::uint32_t {}
type sfinae_call (line 103) | struct sfinae_call {
type NotSimdFriendly (line 112) | struct NotSimdFriendly {}
type as_simd_friendly_type_test (line 117) | namespace as_simd_friendly_type_test {
type as_simd_friendly_uint_type_test (line 153) | namespace as_simd_friendly_uint_type_test {
function TEST_F (line 196) | TEST_F(SimdTraitsTest, AsSimdFriendly) {
function TEST_F (line 213) | TEST_F(SimdTraitsTest, AsSimdFriendlyUint) {
FILE: folly/algorithm/simd/detail/test/UnrollUtilsTest.cpp
type folly::simd::detail (line 23) | namespace folly::simd::detail {
function TEST (line 25) | TEST(UnrollUtilsTest, ArrayMap) {
function reduceValues (line 42) | constexpr int reduceValues() {
function TEST (line 47) | TEST(UnrollUtilsTest, ArrayReduce) {
type UnrollUntilTestOp (line 55) | struct UnrollUntilTestOp {
function unrollUntilTest (line 72) | constexpr bool unrollUntilTest() {
function TEST (line 80) | TEST(UnrollUtilsTest, UnrollUntil) {
FILE: folly/algorithm/simd/find_first_of.h
function namespace (line 48) | namespace folly::simd {
function prep (line 190) | void prep(SparseByteSet& set) const noexcept {
function match (line 196) | bool match(value_type const c, SparseByteSet const& set) const noexcept {
function T (line 336) | constexpr T exchange(T& obj, U&& val) noexcept {
function shuffle (line 342) | static constexpr shuffle make_shuffle(view const alphabet) noexcept {
type meta (line 449) | struct meta {
function T (line 460) | constexpr T exchange(T& obj, U&& val) noexcept {
function next_segment (line 466) | static constexpr size_t next_segment(
function meta (line 485) | static constexpr meta make_meta(view alphabet) noexcept {
FILE: folly/algorithm/simd/find_first_of_extra.h
function namespace (line 27) | namespace folly::simd {
FILE: folly/algorithm/simd/test/ContainsTest.cpp
type ContainsTest (line 94) | struct ContainsTest : ::testing::Test {}
type ContainsTestSpeicalCases (line 96) | struct ContainsTestSpeicalCases : ::testing::Test {}
type folly::simd (line 110) | namespace folly::simd {
function testSimdContainsVerify (line 117) | void testSimdContainsVerify(folly::span<T> haystack, T needle, bool expe...
function TYPED_TEST (line 136) | TYPED_TEST(ContainsTest, Basic) {
function TEST_F (line 156) | TEST_F(ContainsTestSpeicalCases, Pointers) {
function TEST_F (line 163) | TEST_F(ContainsTestSpeicalCases, AsanShouldDetectInvalidRange) {
FILE: folly/algorithm/simd/test/FindFixedBenchmark.cpp
type folly (line 30) | namespace folly {
function stdFindBenchmark (line 44) | void stdFindBenchmark(unsigned n) {
function follyFindFixedBenchmark (line 55) | void follyFindFixedBenchmark(unsigned n) {
function registerBenchmark (line 67) | void registerBenchmark(T, IndexConstant<N>) {
function drawLine (line 90) | void drawLine() {
function registerAllBenchmarks (line 94) | void registerAllBenchmarks() {
function main (line 122) | int main(int argc, char** argv) {
FILE: folly/algorithm/simd/test/FindFixedTest.cpp
function allTestsForN (line 36) | void allTestsForN(std::span<T, N> buf) {
function allTestsForImpl (line 59) | void allTestsForImpl(std::span<T> buf, std::index_sequence<idx...>) {
function allTestsFor (line 64) | void allTestsFor() {
function TEST (line 80) | TEST(FindFixed, Basic) {
function TEST (line 98) | TEST(FindFixed, Interfaces) {
function TEST (line 129) | TEST(FollyFindFixed, SfianeFriendlyUnsupportedTypes) {
FILE: folly/algorithm/simd/test/MovemaskTest.cpp
type folly (line 34) | namespace folly {
function Reg (line 39) | Reg loadReg(const std::array<T, N>& arr) {
function safeShift (line 45) | std::uint64_t safeShift(std::uint64_t what, std::uint32_t shift) {
function allOneTrueTests (line 55) | void allOneTrueTests() {
function TEST (line 109) | TEST(Movemask, Sse2Example) {
function TEST (line 165) | TEST(Movemask, Sse2) {
function TEST (line 174) | TEST(Movemask, Avx2) {
function TEST (line 187) | TEST(Movemask, AARCH64) {
FILE: folly/algorithm/simd/test/find_first_of_bench.cpp
function FOLLY_KEEP (line 38) | FOLLY_KEEP size_t
function FOLLY_KEEP (line 45) | FOLLY_KEEP size_t
function FOLLY_KEEP (line 52) | FOLLY_KEEP size_t
function FOLLY_KEEP (line 59) | FOLLY_KEEP size_t
function FOLLY_KEEP (line 67) | FOLLY_KEEP size_t
function FOLLY_KEEP (line 75) | FOLLY_KEEP size_t
function FOLLY_KEEP (line 83) | FOLLY_KEEP size_t
function FOLLY_KEEP (line 91) | FOLLY_KEEP size_t
function FOLLY_KEEP (line 101) | FOLLY_KEEP size_t
function FOLLY_KEEP (line 108) | FOLLY_KEEP size_t
function FOLLY_KEEP (line 115) | FOLLY_KEEP size_t
function FOLLY_KEEP (line 122) | FOLLY_KEEP size_t
function FOLLY_KEEP (line 130) | FOLLY_KEEP size_t
function FOLLY_KEEP (line 138) | FOLLY_KEEP size_t
function FOLLY_KEEP (line 148) | FOLLY_KEEP size_t
function FOLLY_KEEP (line 156) | FOLLY_KEEP size_t
function FOLLY_KEEP (line 164) | FOLLY_KEEP size_t
function FOLLY_KEEP (line 172) | FOLLY_KEEP size_t
function FOLLY_KEEP (line 181) | FOLLY_KEEP size_t
function FOLLY_KEEP (line 190) | FOLLY_KEEP size_t
function FOLLY_KEEP (line 200) | FOLLY_KEEP size_t
function FOLLY_KEEP (line 210) | FOLLY_KEEP size_t
function FOLLY_KEEP (line 222) | FOLLY_KEEP size_t
function FOLLY_KEEP (line 230) | FOLLY_KEEP size_t
function FOLLY_KEEP (line 238) | FOLLY_KEEP size_t
function FOLLY_KEEP (line 246) | FOLLY_KEEP size_t
function FOLLY_KEEP (line 256) | FOLLY_KEEP size_t
function FOLLY_KEEP (line 266) | FOLLY_KEEP size_t
function make_string (line 280) | static std::string make_string(std::string_view alphabet, size_t run) {
function FOLLY_NOINLINE (line 290) | FOLLY_NOINLINE static void do_find_first_op_of(
function find_first_of_json_str (line 302) | static void find_first_of_json_str(size_t iters, size_t run) {
function find_first_not_of_json_ws (line 316) | static void find_first_not_of_json_ws(size_t iters, size_t run) {
function find_first_of_json_str_stdfind_scalar (line 328) | void find_first_of_json_str_stdfind_scalar(size_t iters, size_t run) {
function find_first_of_json_str_default_scalar (line 333) | void find_first_of_json_str_default_scalar(size_t iters, size_t run) {
function find_first_of_json_str_ltindex_scalar (line 338) | void find_first_of_json_str_ltindex_scalar(size_t iters, size_t run) {
function find_first_of_json_str_ltsparse_scalar (line 343) | void find_first_of_json_str_ltsparse_scalar(size_t iters, size_t run) {
function find_first_of_json_str_stdfind_vector (line 349) | void find_first_of_json_str_stdfind_vector(size_t iters, size_t run) {
function find_first_of_json_str_rngfind_vector (line 355) | void find_first_of_json_str_rngfind_vector(size_t iters, size_t run) {
function find_first_of_json_str_default_vector (line 360) | void find_first_of_json_str_default_vector(size_t iters, size_t run) {
function find_first_of_json_str_shuffle_vector (line 367) | void find_first_of_json_str_shuffle_vector(size_t iters, size_t run) {
function find_first_of_json_str_azmatch_vector (line 374) | void find_first_of_json_str_azmatch_vector(size_t iters, size_t run) {
function find_first_not_of_json_ws_default_scalar (line 381) | void find_first_not_of_json_ws_default_scalar(size_t iters, size_t run) {
function find_first_not_of_json_ws_ltindex_scalar (line 386) | void find_first_not_of_json_ws_ltindex_scalar(size_t iters, size_t run) {
function find_first_not_of_json_ws_ltsparse_scalar (line 391) | void find_first_not_of_json_ws_ltsparse_scalar(size_t iters, size_t run) {
function find_first_not_of_json_ws_default_vector (line 396) | void find_first_not_of_json_ws_default_vector(size_t iters, size_t run) {
function find_first_not_of_json_ws_shuffle_vector (line 403) | void find_first_not_of_json_ws_shuffle_vector(size_t iters, size_t run) {
function find_first_not_of_json_ws_azmatch_vector (line 410) | void find_first_not_of_json_ws_azmatch_vector(size_t iters, size_t run) {
function main (line 762) | int main(int argc, char** argv) {
FILE: folly/algorithm/simd/test/find_first_of_test.cpp
function quote (line 29) | static auto quote(std::string_view sv) {
type FindFirstOpOfTest (line 34) | struct FindFirstOpOfTest : testing::TestWithParam<Param> {
method finder_type (line 39) | static constexpr finder_type make_finder(std::string_view const alphab...
method make_from (line 45) | auto make_from(std::string_view const in, size_t const len) {
type FindFirstOfTest (line 55) | struct FindFirstOfTest : FindFirstOpOfTest<Param> {
function TYPED_TEST_P (line 62) | TYPED_TEST_P(FindFirstOfTest, json_str_stress_loalpha) {
function TYPED_TEST_P (line 73) | TYPED_TEST_P(FindFirstOfTest, json_str_stress_loalpha_with_esc) {
function TYPED_TEST_P (line 85) | TYPED_TEST_P(FindFirstOfTest, json_str_stress_loalpha_with_esc2) {
function TYPED_TEST_P (line 97) | TYPED_TEST_P(FindFirstOfTest, json_str_stress_loalpha_with_esc2n) {
function TYPED_TEST_P (line 110) | TYPED_TEST_P(FindFirstOfTest, json_str_stress_loalpha_with_esc_edge) {
function TYPED_TEST_P (line 122) | TYPED_TEST_P(FindFirstOfTest, json_str_stress_loalpha_with_esc2_edge) {
function TYPED_TEST_P (line 134) | TYPED_TEST_P(FindFirstOfTest, json_str_stress_loalpha_with_esc2n_edge) {
type find_first_of_impls (line 160) | struct find_first_of_impls {
type FindFirstNotOfTest (line 198) | struct FindFirstNotOfTest : FindFirstOpOfTest<Param> {
method make_json_spaces (line 209) | auto make_json_spaces(size_t const len) { //
function TYPED_TEST_P (line 217) | TYPED_TEST_P(FindFirstNotOfTest, json_ws_stress_whitespace) {
function TYPED_TEST_P (line 228) | TYPED_TEST_P(FindFirstNotOfTest, json_ws_stress_spaces) {
function TYPED_TEST_P (line 241) | TYPED_TEST_P(FindFirstNotOfTest, json_ws_stress_spaces_then_text) {
function TYPED_TEST_P (line 255) | TYPED_TEST_P(FindFirstNotOfTest, json_ws_stress_spaces_then_nulls) {
function TYPED_TEST_P (line 269) | TYPED_TEST_P(FindFirstNotOfTest, json_ws_stress_spaces_then_his) {
function TYPED_TEST_P (line 283) | TYPED_TEST_P(FindFirstNotOfTest, json_ws_stress_wspaces) {
function TYPED_TEST_P (line 296) | TYPED_TEST_P(FindFirstNotOfTest, json_ws_stress_wspaces_then_text) {
function TYPED_TEST_P (line 310) | TYPED_TEST_P(FindFirstNotOfTest, json_ws_stress_wspaces_then_nulls) {
function TYPED_TEST_P (line 324) | TYPED_TEST_P(FindFirstNotOfTest, json_ws_stress_wspaces_then_his) {
function TYPED_TEST_P (line 338) | TYPED_TEST_P(FindFirstNotOfTest, loweq_stress) {
function TYPED_TEST_P (line 352) | TYPED_TEST_P(FindFirstNotOfTest, weird_stress) {
type find_first_not_of_impls (line 383) | struct find_first_not_of_impls {
FILE: folly/algorithm/test/BinaryHeapTest.cpp
function TEST (line 25) | TEST(BinaryHeap, DownHeap) {
FILE: folly/algorithm/test/StableRadixSortBenchmark.cpp
function generateData (line 39) | std::span<const T> generateData(size_t n) {
function benchmarkStdSort (line 56) | void benchmarkStdSort(size_t n) {
function benchmarkRadixSort (line 64) | void benchmarkRadixSort(size_t n) {
function benchmarkSpreadsort (line 72) | void benchmarkSpreadsort(size_t n) {
function benchmarkPdqsort (line 84) | void benchmarkPdqsort(size_t n) {
function benchmarkDoubleDetailRadixSort (line 91) | void benchmarkDoubleDetailRadixSort(size_t n) {
function main (line 136) | int main(int argc, char** argv) {
FILE: folly/algorithm/test/StableRadixSortTest.cpp
type folly (line 27) | namespace folly {
type Item (line 31) | struct Item {
method friend (line 35) | [[maybe_unused]] friend bool operator==(const Item&, const Item&) = ...
function augmented_less (line 41) | bool augmented_less(const T& a, const T& b) {
function augmented_greater (line 57) | bool augmented_greater(const T& a, const T& b) {
function validate (line 63) | void validate(std::vector<T> v) {
function validate (line 71) | void validate(std::vector<T> v, Proj proj) {
function validateDescending (line 82) | void validateDescending(std::vector<T> v) {
function validateDescending (line 90) | void validateDescending(std::vector<T> v, Proj proj) {
class StableRadixSortTest (line 101) | class StableRadixSortTest : public ::testing::Test {
function TEST_F (line 110) | TEST_F(StableRadixSortTest, EmptyRange) {
function TEST_F (line 114) | TEST_F(StableRadixSortTest, SingleElement) {
function TEST_F (line 118) | TEST_F(StableRadixSortTest, TwoElements) {
function TEST_F (line 122) | TEST_F(StableRadixSortTest, AlreadySorted) {
function TEST_F (line 126) | TEST_F(StableRadixSortTest, ReverseSorted) {
function TEST_F (line 130) | TEST_F(StableRadixSortTest, AllEqual) {
function TEST_F (line 138) | TEST_F(StableRadixSortTest, Uint32Random) {
function TEST_F (line 147) | TEST_F(StableRadixSortTest, Uint64Random) {
function TEST_F (line 156) | TEST_F(StableRadixSortTest, Uint16Random) {
function TEST_F (line 165) | TEST_F(StableRadixSortTest, Uint8Random) {
function TEST_F (line 178) | TEST_F(StableRadixSortTest, Int32Random) {
function TEST_F (line 187) | TEST_F(StableRadixSortTest, Int64Random) {
function TEST_F (line 196) | TEST_F(StableRadixSortTest, Int32NegativeValues) {
function TEST_F (line 200) | TEST_F(StableRadixSortTest, Int64Extremes) {
function TEST_F (line 217) | TEST_F(StableRadixSortTest, DoubleRandom) {
function TEST_F (line 226) | TEST_F(StableRadixSortTest, FloatRandom) {
function TEST_F (line 235) | TEST_F(StableRadixSortTest, DoubleSpecialValues) {
function TEST_F (line 251) | TEST_F(StableRadixSortTest, DoubleNegativeNumbers) {
function TEST_F (line 255) | TEST_F(StableRadixSortTest, NegativeZeroPositiveZeroEquality) {
function TEST_F (line 276) | TEST_F(StableRadixSortTest, NegativeZeroPositiveZeroEqualityFloat) {
function TEST_F (line 305) | TEST_F(StableRadixSortTest, Uint64Descending) {
function TEST_F (line 314) | TEST_F(StableRadixSortTest, Int64Descending) {
function TEST_F (line 323) | TEST_F(StableRadixSortTest, DoubleDescending) {
function TEST_F (line 336) | TEST_F(StableRadixSortTest, KeyExtractorDouble) {
function TEST_F (line 347) | TEST_F(StableRadixSortTest, KeyExtractorDescending) {
function TEST_F (line 360) | TEST_F(StableRadixSortTest, KeyExtractorInteger) {
function TEST_F (line 383) | TEST_F(StableRadixSortTest, StabilityPreserved) {
function TEST_F (line 397) | TEST_F(StableRadixSortTest, StabilityWithMultipleGroups) {
function TEST_F (line 412) | TEST_F(StableRadixSortTest, MatchesStableSort) {
function TEST_F (line 421) | TEST_F(StableRadixSortTest, MatchesStableSortDescending) {
function TEST_F (line 434) | TEST_F(StableRadixSortTest, LargeInput) {
function TEST_F (line 444) | TEST_F(StableRadixSortTest, LargeInputDouble) {
function TEST_F (line 458) | TEST_F(StableRadixSortTest, SmallInputFallback) {
function TEST_F (line 466) | TEST_F(StableRadixSortTest, FloatKeyCorrectness) {
function TEST_F (line 483) | TEST_F(StableRadixSortTest, IntegralKeyCorrectness) {
FILE: folly/base64.h
function namespace (line 31) | namespace folly {
FILE: folly/channels/Channel-fwd.h
function namespace (line 23) | namespace folly {
FILE: folly/channels/Channel-inl.h
function namespace (line 24) | namespace folly {
FILE: folly/channels/Channel.h
function namespace (line 22) | namespace folly {
function close (line 102) | void close() && {
function close (line 112) | void close(exception_wrapper exception) && {
function isReceiverCancelled (line 123) | bool isReceiverCancelled() {
type NextSemiAwaitable (line 178) | struct NextSemiAwaitable
function cancel (line 260) | void cancel() && {
FILE: folly/channels/ChannelCallbackHandle.h
function namespace (line 23) | namespace folly {
FILE: folly/channels/ChannelProcessor-inl.h
function namespace (line 27) | namespace folly {
FILE: folly/channels/ChannelProcessor.h
function namespace (line 22) | namespace folly {
FILE: folly/channels/ConsumeChannel-inl.h
function namespace (line 29) | namespace folly {
FILE: folly/channels/ConsumeChannel.h
function namespace (line 26) | namespace folly {
FILE: folly/channels/FanoutChannel-inl.h
function namespace (line 25) | namespace folly {
function namespace (line 94) | namespace detail {
function closeSubscribers (line 198) | void closeSubscribers(CloseResult closeResult) override {
function destroyHandle (line 210) | void destroyHandle(CloseResult closeResult) override {
function anySubscribers (line 218) | bool anySubscribers() override {
function ContextType (line 222) | ContextType getContext() override { return state_.rlock()->context; }
function canceled (line 238) | void canceled(ChannelBridgeBase*) override {
function processAllAvailableValues (line 255) | void processAllAvailableValues(
function processReceiverCancelled (line 310) | void processReceiverCancelled(
function processHandleDestroyed (line 327) | void processHandleDestroyed(WLockedStatePtr& state, CloseResult closeRes...
function maybeDelete (line 345) | void maybeDelete(WLockedStatePtr& state) {
FILE: folly/channels/FanoutChannel.h
function namespace (line 22) | namespace folly {
FILE: folly/channels/FanoutSender-inl.h
function namespace (line 24) | namespace folly {
FILE: folly/channels/FanoutSender.h
function namespace (line 23) | namespace folly {
FILE: folly/channels/MaxConcurrentRateLimiter.cpp
type folly (line 19) | namespace folly {
type channels (line 20) | namespace channels {
class MaxConcurrentRateLimiter::Token (line 22) | class MaxConcurrentRateLimiter::Token : public RateLimiter::Token {
method Token (line 24) | explicit Token(
method Token (line 28) | Token(Token&&) = default;
method Token (line 29) | Token& operator=(Token&&) = default;
method Token (line 30) | Token(const Token&) = delete;
method Token (line 31) | Token& operator=(const Token&) = delete;
FILE: folly/channels/MaxConcurrentRateLimiter.h
function namespace (line 24) | namespace folly {
FILE: folly/channels/Merge-inl.h
function namespace (line 24) | namespace folly {
function processSenderCancelled (line 249) | void processSenderCancelled() {
FILE: folly/channels/Merge.h
function namespace (line 22) | namespace folly {
FILE: folly/channels/MergeChannel-inl.h
function namespace (line 25) | namespace folly {
function namespace (line 87) | namespace detail {
function destroyHandle (line 257) | void destroyHandle(CloseResult closeResult) {
function consume (line 266) | void consume(ChannelBridgeBase* bridge) override {
function canceled (line 288) | void canceled(ChannelBridgeBase* bridge) override {
function processReceiverCancelled (line 377) | void processReceiverCancelled(
function processSenderCancelled (line 406) | void processSenderCancelled(WLockedStatePtr& state) {
FILE: folly/channels/MergeChannel.h
function namespace (line 23) | namespace folly {
FILE: folly/channels/MultiplexChannel-inl.h
function namespace (line 26) | namespace folly {
function processor_ (line 84) | processor_(processor) {}
function namespace (line 143) | namespace detail {
FILE: folly/channels/MultiplexChannel.h
function namespace (line 28) | namespace folly {
FILE: folly/channels/OnClosedException.h
function namespace (line 21) | namespace folly {
FILE: folly/channels/Producer-inl.h
function namespace (line 26) | namespace folly {
function namespace (line 116) | namespace detail {
FILE: folly/channels/Producer.h
function namespace (line 23) | namespace folly {
FILE: folly/channels/ProxyChannel-inl.h
function namespace (line 22) | namespace folly {
function namespace (line 75) | namespace detail {
FILE: folly/channels/ProxyChannel.h
function namespace (line 22) | namespace folly {
FILE: folly/channels/RateLimiter.h
function namespace (line 22) | namespace folly {
FILE: folly/channels/Transform-inl.h
function namespace (line 25) | namespace folly {
function initialize (line 353) | void initialize(InitializeArg initializeArg) {
FILE: folly/channels/Transform.h
function namespace (line 24) | namespace folly {
FILE: folly/channels/detail/AtomicQueue.h
function namespace (line 27) | namespace folly {
FILE: folly/channels/detail/ChannelBridge.h
function namespace (line 22) | namespace folly {
FILE: folly/channels/detail/IntrusivePtr.h
function namespace (line 22) | namespace folly {
FILE: folly/channels/detail/MultiplexerTraits.h
function namespace (line 22) | namespace folly {
FILE: folly/channels/detail/PointerVariant.h
function namespace (line 22) | namespace folly {
FILE: folly/channels/detail/Utility.h
function namespace (line 29) | namespace folly {
FILE: folly/channels/detail/test/AtomicQueueTest.cpp
type folly (line 23) | namespace folly {
type channels (line 24) | namespace channels {
type detail (line 25) | namespace detail {
function TEST (line 31) | TEST(AtomicQueueTest, Basic) {
function TEST (line 100) | TEST(AtomicQueueTest, Canceled) {
function TEST (line 126) | TEST(AtomicQueueTest, Stress) {
FILE: folly/channels/detail/test/PointerVariantTest.cpp
type folly (line 20) | namespace folly {
type channels (line 21) | namespace channels {
type detail (line 22) | namespace detail {
function TEST (line 26) | TEST(PointerVariantTest, Basic) {
function TEST (line 48) | TEST(PointerVariantTest, GetIncorrecttype) {
FILE: folly/channels/test/ChannelProcessorTest.cpp
type folly (line 21) | namespace folly {
type channels (line 22) | namespace channels {
type MockCallback (line 26) | struct MockCallback {
class ChannelProcessorFixture (line 30) | class ChannelProcessorFixture : public Test {
method ChannelProcessorFixture (line 32) | ChannelProcessorFixture()
function TEST_F (line 40) | TEST_F(ChannelProcessorFixture, SimpleChannel_ReceiveValues) {
function TEST_F (line 62) | TEST_F(ChannelProcessorFixture, SimpleChannel_ThrowOnClosedException) {
function TEST_F (line 89) | TEST_F(
function TEST_F (line 117) | TEST_F(ChannelProcessorFixture, SimpleChannel_ThrowOtherException_De...
function TEST_F (line 149) | TEST_F(ChannelProcessorFixture, SimpleChannel_RemoveChannel) {
function TEST_F (line 192) | TEST_F(
function TEST_F (line 241) | TEST_F(
function TEST_F (line 262) | TEST_F(
function TEST_F (line 283) | TEST_F(
function TEST_F (line 318) | TEST_F(
FILE: folly/channels/test/ChannelTest.cpp
type folly (line 23) | namespace folly {
type channels (line 24) | namespace channels {
class ChannelFixture (line 28) | class ChannelFixture
method ChannelFixture (line 33) | ChannelFixture() : ChannelConsumerBase(GetParam()) {}
method getExecutor (line 43) | folly::Executor::KeepAlive<folly::SequencedExecutor> getExecutor()...
method onNext (line 47) | void onNext(Try<int> result) override { onNext_(std::move(result)); }
function TEST_P (line 53) | TEST_P(ChannelFixture, SingleWriteBeforeNext_ThenCancelled) {
function TEST_P (line 71) | TEST_P(ChannelFixture, SingleWriteAfterNext_ThenCancelled) {
function TEST_P (line 91) | TEST_P(ChannelFixture, MultipleWrites_ThenStopConsumingByReturningFa...
function TEST_P (line 112) | TEST_P(
function TEST_P (line 135) | TEST_P(ChannelFixture, Close_NoException_BeforeSubscribe) {
function TEST_P (line 146) | TEST_P(ChannelFixture, Close_NoException_AfterSubscribeAndWrite) {
function TEST_P (line 159) | TEST_P(ChannelFixture, Close_DueToDestruction_BeforeSubscribe) {
function TEST_P (line 172) | TEST_P(ChannelFixture, Close_DueToDestruction_AfterSubscribeAndWrite) {
function TEST_P (line 188) | TEST_P(ChannelFixture, Close_Exception_BeforeSubscribe) {
function TEST_P (line 199) | TEST_P(ChannelFixture, Close_Exception_AfterSubscribeAndWrite) {
function TEST_P (line 212) | TEST_P(ChannelFixture, CancellationRespected) {
function TEST (line 230) | TEST(Channel, CancelNextWithoutClose) {
class ChannelFixtureStress (line 278) | class ChannelFixtureStress
method ChannelFixtureStress (line 282) | ChannelFixtureStress()
function TEST_P (line 300) | TEST_P(ChannelFixtureStress, Close_NoException) {
function TEST_P (line 312) | TEST_P(ChannelFixtureStress, Close_Exception) {
function TEST_P (line 324) | TEST_P(ChannelFixtureStress, Cancelled) {
function TEST_P (line 338) | TEST_P(ChannelFixtureStress, Close_NoException_ThenCancelledImmediat...
function TEST_P (line 353) | TEST_P(ChannelFixtureStress, Cancelled_ThenClosedImmediately_NoExcep...
FILE: folly/channels/test/ChannelTestUtil.h
type class (line 69) | enum class
function startConsuming (line 92) | void startConsuming(Receiver<TValue> receiver) {
function callbackHandle (line 130) | auto callbackHandle = consumeChannelWithCallback(
function CloseType (line 155) | enum class CloseType { NoException, Exception, Cancelled };
FILE: folly/channels/test/FanoutChannelTest.cpp
type folly (line 25) | namespace folly {
type channels (line 26) | namespace channels {
class FanoutChannelFixture (line 30) | class FanoutChannelFixture : public Test {
method FanoutChannelFixture (line 32) | FanoutChannelFixture() {}
method processValues (line 40) | std::pair<ChannelCallbackHandle, Callback<T>*> processValues(
method createCallback (line 55) | StrictMock<MockNextCallback<std::string>> createCallback() {
function TEST_F (line 62) | TEST_F(FanoutChannelFixture, ReceiveValue_FanoutBroadcastsValues) {
function TEST_F (line 122) | TEST_F(FanoutChannelFixture, InputClosed_AllOutputReceiversClose) {
function TEST_F (line 148) | TEST_F(FanoutChannelFixture, InputThrows_AllOutputReceiversGetExcept...
function TEST_F (line 174) | TEST_F(FanoutChannelFixture, ReceiversCancelled) {
function TEST_F (line 215) | TEST_F(FanoutChannelFixture, SubscribersClosed) {
function TEST_F (line 254) | TEST_F(FanoutChannelFixture, VectorBool) {
class FanoutChannelFixtureStress (line 289) | class FanoutChannelFixtureStress : public Test {
method FanoutChannelFixtureStress (line 291) | FanoutChannelFixtureStress()
method makeProducer (line 295) | static std::unique_ptr<StressTestProducer<int>> makeProducer() {
method makeConsumer (line 301) | static std::unique_ptr<StressTestConsumer<int>> makeConsumer() {
method sleepFor (line 313) | static void sleepFor(std::chrono::milliseconds duration) {
function TEST_F (line 325) | TEST_F(FanoutChannelFixtureStress, HandleClosed) {
function TEST_F (line 353) | TEST_F(FanoutChannelFixtureStress, InputChannelClosed) {
FILE: folly/channels/test/FanoutSenderTest.cpp
type folly (line 25) | namespace folly {
type channels (line 26) | namespace channels {
class FanoutSenderFixture (line 30) | class FanoutSenderFixture : public Test {
method FanoutSenderFixture (line 32) | FanoutSenderFixture() {}
method processValues (line 36) | std::pair<ChannelCallbackHandle, TCallback*> processValues(
method createCallback (line 51) | StrictMock<MockNextCallback<std::string>> createCallback() {
function TEST_F (line 58) | TEST_F(FanoutSenderFixture, WriteValue_FanoutBroadcastsValues) {
function TEST_F (line 98) | TEST_F(FanoutSenderFixture, InputThrows_AllOutputReceiversGetExcepti...
function TEST_F (line 130) | TEST_F(FanoutSenderFixture, ReceiversCancelled) {
function TEST_F (line 174) | TEST_F(FanoutSenderFixture, ReceiverCancelled_DelayedCancellationCal...
function TEST_F (line 207) | TEST_F(FanoutSenderFixture, Close_DelayedCancellationCallback) {
function TEST_F (line 233) | TEST_F(FanoutSenderFixture, NumSubscribers) {
FILE: folly/channels/test/MaxConcurrentRateLimiterTest.cpp
type folly (line 25) | namespace folly {
type channels (line 26) | namespace channels {
class MaxConcurrentRateLimiterTest (line 28) | class MaxConcurrentRateLimiterTest : public Test {
method MaxConcurrentRateLimiterTest (line 30) | MaxConcurrentRateLimiterTest() {
function TEST_F (line 40) | TEST_F(MaxConcurrentRateLimiterTest, Basic) {
function TEST_F (line 51) | TEST_F(MaxConcurrentRateLimiterTest, UnderQuota) {
function TEST_F (line 64) | TEST_F(MaxConcurrentRateLimiterTest, OverQuota) {
FILE: folly/channels/test/MergeChannelTest.cpp
type folly (line 26) | namespace folly {
type channels (line 27) | namespace channels {
function isMatch (line 33) | bool isMatch(
class MergeChannelFixture (line 108) | class MergeChannelFixture : public Test {
method MergeChannelFixture (line 110) | MergeChannelFixture() {}
method ChannelCallbackHandle (line 116) | ChannelCallbackHandle processValues(
function TEST_F (line 139) | TEST_F(MergeChannelFixture, ReceiveValues_ReturnMergedValues) {
function TEST_F (line 180) | TEST_F(
function TEST_F (line 222) | TEST_F(
function TEST_F (line 267) | TEST_F(MergeChannelFixture, ReceiveValues_RemoveReceiver) {
function TEST_F (line 302) | TEST_F(MergeChannelFixture, ReceiveValues_RemoveReceiver_AfterClose) {
function TEST_F (line 338) | TEST_F(MergeChannelFixture, OneInputClosed_ContinuesMerging) {
function TEST_F (line 383) | TEST_F(MergeChannelFixture, OneInputThrows_ContinuesMerging) {
function TEST_F (line 426) | TEST_F(MergeChannelFixture, Cancelled) {
type ProducedValue (line 467) | struct ProducedValue {
class MergeChannelFixtureStress (line 472) | class MergeChannelFixtureStress : public Test {
method MergeChannelFixtureStress (line 474) | MergeChannelFixtureStress()
method makeProducer (line 478) | static std::unique_ptr<StressTestProducer<ProducedValue>> makeProd...
method makeConsumer (line 484) | static std::unique_ptr<
method sleepFor (line 499) | static void sleepFor(std::chrono::milliseconds duration) {
function TEST_F (line 512) | TEST_F(MergeChannelFixtureStress, HandleClosed) {
function TEST_F (line 538) | TEST_F(MergeChannelFixtureStress, Cancelled) {
function TEST_F (line 564) | TEST_F(MergeChannelFixtureStress, Cancelled_ThenHandleClosedImmediat...
function TEST_F (line 593) | TEST_F(MergeChannelFixtureStress, HandleClosed_ThenCancelledImmediat...
FILE: folly/channels/test/MergeTest.cpp
type folly (line 25) | namespace folly {
type channels (line 26) | namespace channels {
class MergeFixture (line 30) | class MergeFixture : public Test {
method ChannelCallbackHandle (line 34) | ChannelCallbackHandle processValues(Receiver<int> receiver) {
function TEST_F (line 48) | TEST_F(MergeFixture, ReceiveValues_ReturnMergedValues) {
function TEST_F (line 83) | TEST_F(MergeFixture, OneInputClosed_WaitForAllInputsToClose_Continue...
function TEST_F (line 116) | TEST_F(MergeFixture, OneInputClosed_DoNotWaitForAllInputsToClose_Sto...
function TEST_F (line 151) | TEST_F(MergeFixture, OneInputThrows_OutputClosedWithException) {
function TEST_F (line 181) | TEST_F(MergeFixture, CancelledAfterStart) {
function TEST_F (line 216) | TEST_F(MergeFixture, CancelledBeforeStart) {
type ProducedValue (line 237) | struct ProducedValue {
class MergeFixtureStress (line 242) | class MergeFixtureStress : public Test {
method MergeFixtureStress (line 244) | MergeFixtureStress()
method makeProducer (line 248) | static std::unique_ptr<StressTestProducer<ProducedValue>> makeProd...
method makeConsumer (line 254) | static std::unique_ptr<StressTestConsumer<ProducedValue>> makeCons...
function TEST_F (line 269) | TEST_F(MergeFixtureStress, Close_NoException) {
function TEST_F (line 290) | TEST_F(MergeFixtureStress, Close_Exception) {
function TEST_F (line 317) | TEST_F(MergeFixtureStress, Cancelled) {
function TEST_F (line 337) | TEST_F(MergeFixtureStress, Close_NoException_ThenCancelledImmediatel...
function TEST_F (line 362) | TEST_F(MergeFixtureStress, Cancelled_ThenClosedImmediately_NoExcepti...
FILE: folly/channels/test/MultiplexChannelTest.cpp
type folly (line 27) | namespace folly {
type channels (line 28) | namespace channels {
class MultiplexChannelFixture (line 33) | class MultiplexChannelFixture : public Test {
method MultiplexChannelFixture (line 35) | MultiplexChannelFixture() {}
method processValues (line 43) | std::pair<ChannelCallbackHandle, Callback<T>*> processValues(
type TestInputValue (line 63) | struct TestInputValue {
type TestContext (line 67) | struct TestContext {
type TestSubscriptionArg (line 71) | struct TestSubscriptionArg {
type TestMultiplexer (line 78) | struct TestMultiplexer {
method TestMultiplexer (line 80) | TestMultiplexer(
method getExecutor (line 85) | folly::Executor::KeepAlive<folly::SequencedExecutor> getExecutor() {
method onNewSubscription (line 89) | folly::coro::Task<std::vector<int>> onNewSubscription(
method onInputValue (line 104) | folly::coro::Task<void> onInputValue(
method getRateLimiter (line 120) | std::shared_ptr<RateLimiter> getRateLimiter() { return rateLimiter...
function TEST_F (line 127) | TEST_F(MultiplexChannelFixture, ReceiveValues_MultiplexesValues) {
function TEST_F (line 181) | TEST_F(MultiplexChannelFixture, InputThrows_AllOutputReceiversGetExc...
function TEST_F (line 212) | TEST_F(MultiplexChannelFixture, ClearUnusedSubscriptions) {
function TEST_F (line 284) | TEST_F(MultiplexChannelFixture, OnNewSubscriptionThrows_OutputReceiv...
function TEST_F (line 319) | TEST_F(MultiplexChannelFixture, HandleDestroyed) {
function TEST_F (line 343) | TEST_F(MultiplexChannelFixture, Subscribe_WithRateLimiter) {
class MultiplexChannelFixtureStress (line 388) | class MultiplexChannelFixtureStress : public Test {
method MultiplexChannelFixtureStress (line 390) | MultiplexChannelFixtureStress()
method makeProducer (line 395) | static std::unique_ptr<StressTestProducer<int>> makeProducer() {
method makeConsumer (line 401) | static std::unique_ptr<StressTestConsumer<int>> makeConsumer(int r...
method sleepFor (line 415) | static void sleepFor(std::chrono::milliseconds duration) {
type NoContext (line 427) | struct NoContext {}
type NoSubscriptionArg (line 428) | struct NoSubscriptionArg {}
type TestMultiplexerStress (line 430) | struct TestMultiplexerStress {
method TestMultiplexerStress (line 432) | explicit TestMultiplexerStress(
method getExecutor (line 436) | folly::Executor::KeepAlive<folly::SequencedExecutor> getExecutor() {
method getRateLimiter (line 440) | std::shared_ptr<RateLimiter> getRateLimiter() {
method onNewSubscription (line 444) | folly::coro::Task<std::vector<int>> onNewSubscription(
method onInputValue (line 449) | folly::coro::Task<void> onInputValue(
function TEST_F (line 462) | TEST_F(MultiplexChannelFixtureStress, HandleClosed) {
function TEST_F (line 494) | TEST_F(MultiplexChannelFixtureStress, InputChannelClosed) {
FILE: folly/channels/test/ProducerTest.cpp
type folly (line 23) | namespace folly {
type channels (line 24) | namespace channels {
class ProducerFixture (line 28) | class ProducerFixture : public Test {
method ProducerFixture (line 30) | ProducerFixture() {}
method ChannelCallbackHandle (line 34) | ChannelCallbackHandle processValues(Receiver<int> receiver) {
function TEST_F (line 48) | TEST_F(ProducerFixture, Write_ThenCloseWithoutException) {
function TEST_F (line 70) | TEST_F(ProducerFixture, Write_ThenCloseWithException) {
function TEST_F (line 92) | TEST_F(ProducerFixture, KeepAliveExists_DelaysDestruction) {
function TEST_F (line 136) | TEST_F(
FILE: folly/channels/test/ProxyChannelTest.cpp
type folly (line 23) | namespace folly {
type channels (line 24) | namespace channels {
class ProxyChannelFixture (line 28) | class ProxyChannelFixture : public Test {
method ChannelCallbackHandle (line 32) | ChannelCallbackHandle processValues(Receiver<int> receiver) {
function TEST_F (line 46) | TEST_F(ProxyChannelFixture, ReceiveValues) {
function TEST_F (line 70) | TEST_F(ProxyChannelFixture, InputSenderClosedWithException) {
function TEST_F (line 95) | TEST_F(ProxyChannelFixture, ReplaceInputReceiver_BeforeFirstReceiver...
function TEST_F (line 135) | TEST_F(ProxyChannelFixture, ReplaceInputReceiver_AfterFirstReceiverC...
function TEST_F (line 162) | TEST_F(ProxyChannelFixture, ReplaceInputReceiver_AfterFirstReceiverR...
function TEST_F (line 199) | TEST_F(
function TEST_F (line 225) | TEST_F(
FILE: folly/channels/test/TransformTest.cpp
type folly (line 30) | namespace folly {
type channels (line 31) | namespace channels {
class TransformFixture (line 36) | class TransformFixture : public Test {
method TransformFixture (line 38) | TransformFixture() {}
method ChannelCallbackHandle (line 42) | ChannelCallbackHandle processValues(Receiver<std::string> receiver) {
class SimpleTransformFixture (line 56) | class SimpleTransformFixture : public TransformFixture {}
function TEST_F (line 58) | TEST_F(SimpleTransformFixture, ReceiveValue_ReturnTransformedValue) {
function TEST_F (line 89) | TEST_F(SimpleTransformFixture, ReceiveValue_Close) {
function TEST_F (line 118) | TEST_F(SimpleTransformFixture, ReceiveValue_Throw_InCoroutine) {
function TEST_F (line 147) | TEST_F(SimpleTransformFixture, ReceiveValue_Throw_InNonCoroutine) {
function TEST_F (line 179) | TEST_F(SimpleTransformFixture, ReceiveClosed_Close) {
function TEST_F (line 205) | TEST_F(SimpleTransformFixture, ReceiveClosed_Throw) {
function TEST_F (line 232) | TEST_F(SimpleTransformFixture, ReceiveException_Close) {
function TEST_F (line 260) | TEST_F(SimpleTransformFixture, ReceiveException_Throw) {
function TEST_F (line 286) | TEST_F(SimpleTransformFixture, Cancelled) {
function TEST_F (line 311) | TEST_F(SimpleTransformFixture, Chained) {
function TEST_F (line 343) | TEST_F(SimpleTransformFixture, MultipleTransformsWithRateLimiter) {
class TransformFixtureStress (line 418) | class TransformFixtureStress : public Test {
method TransformFixtureStress (line 420) | TransformFixtureStress()
function TEST_F (line 439) | TEST_F(TransformFixtureStress, Close) {
function TEST_F (line 457) | TEST_F(TransformFixtureStress, Cancel) {
function TEST_F (line 475) | TEST_F(TransformFixtureStress, Close_ThenCancelImmediately) {
function TEST_F (line 497) | TEST_F(TransformFixtureStress, Cancel_ThenCloseImmediately) {
class ResumableTransformFixture (line 519) | class ResumableTransformFixture : public TransformFixture {}
function TEST_F (line 521) | TEST_F(
function TEST_F (line 560) | TEST_F(
function TEST_F (line 599) | TEST_F(
function TEST_F (line 633) | TEST_F(
function TEST_F (line 685) | TEST_F(
function TEST_F (line 719) | TEST_F(
function TEST_F (line 767) | TEST_F(ResumableTransformFixture, TransformThrows_NoReinitialization...
function TEST_F (line 804) | TEST_F(ResumableTransformFixture, MultipleResumableTransformsWithRat...
class ResumableTransformFixtureStress (line 912) | class ResumableTransformFixtureStress : public Test {
method ResumableTransformFixtureStress (line 914) | ResumableTransformFixtureStress()
method makeProducer (line 926) | std::unique_ptr<StressTestProducer<int>> makeProducer() {
method setProducer (line 932) | void setProducer(std::unique_ptr<StressTestProducer<int>> producer) {
method waitForProducer (line 937) | void waitForProducer() {
method stopProducing (line 943) | void stopProducing() { (*producer_.wlock())->stopProducing(); }
function TEST_F (line 953) | TEST_F(ResumableTransformFixtureStress, Close) {
function TEST_F (line 995) | TEST_F(ResumableTransformFixtureStress, CancelDuringReinitialization) {
FILE: folly/chrono/Clock.h
function namespace (line 28) | namespace folly::chrono {
FILE: folly/chrono/Conv.h
function namespace (line 40) | namespace folly {
function maxValue (line 193) | constexpr auto maxValue = std::numeric_limits<time_t>::max() / Numerator;
type IntermediateTimeRep (line 228) | struct IntermediateTimeRep {}
function maxInput (line 273) | constexpr auto maxInput =
function minInput (line 278) | constexpr auto minInput =
function intermediate (line 283) | auto intermediate = IntermediateType{
function ConversionCode (line 304) | ConversionCode check(Seconds seconds, Subseconds subseconds) {
type CheckOverflowToDuration (line 364) | struct CheckOverflowToDuration
function ConversionCode (line 370) | ConversionCode check(
type timespec (line 664) | struct timespec
type timeval (line 683) | struct timeval
FILE: folly/chrono/Hardware.h
function hardware_timestamp (line 41) | inline std::uint64_t hardware_timestamp() {
function hardware_timestamp_measurement_stop (line 118) | inline std::uint64_t hardware_timestamp_measurement_stop() noexcept {
FILE: folly/chrono/test/ClockTest.cpp
function TEST (line 24) | TEST(ClockTest, SteadyClockSanity) {
function TEST (line 44) | TEST(ClockTest, SystemClockSanity) {
FILE: folly/chrono/test/ConvTest.cpp
function createTimePoint (line 35) | typename Clock::time_point createTimePoint(const Duration& d) {
function TEST (line 41) | TEST(Conv, timespecToStdChrono) {
function TEST (line 152) | TEST(Conv, timespecToStdChronoOverflow) {
function TEST (line 285) | TEST(Conv, timevalToStdChrono) {
function TEST (line 338) | TEST(Conv, stdChronoToTimespec) {
function TEST (line 397) | TEST(Conv, stdChronoToTimespecOverflow) {
function TEST (line 439) | TEST(Conv, stdChronoToTimeval) {
function TEST (line 601) | TEST(Conv, stdChronoToTimevalOverflow) {
FILE: folly/cli/Args.cpp
type folly (line 31) | namespace folly {
function cli_args_strings_to_c_strings (line 33) | std::vector<char const*> cli_args_strings_to_c_strings(
class cli_apply_args_files_error_category (line 45) | class cli_apply_args_files_error_category : public std::error_category {
method message (line 48) | std::string message(int ev) const override {
function make_error_code (line 60) | std::error_code make_error_code(cli_apply_args_files_errc errc) {
type cli_parsed_arg (line 67) | struct cli_parsed_arg {
type cli_parse_error (line 79) | struct cli_parse_error {
type cli_parse_result (line 91) | struct cli_parse_result {
function cli_is_space (line 99) | constexpr bool cli_is_space(char c) noexcept {
function cli_parse_result (line 117) | cli_parse_result cli_parse_args_from_content(std::string_view content) {
function cli_read_file (line 424) | std::pair<std::string, std::error_code> cli_read_file(
type cli_arg_item (line 435) | struct cli_arg_item {
function cli_process_single_arg (line 456) | cli_apply_args_files_receiver::control cli_process_single_arg(
function cli_process_file_args (line 579) | void cli_process_file_args(
function cli_apply_args_files (line 610) | void cli_apply_args_files(
class cli_throwing_receiver (line 636) | class cli_throwing_receiver : public cli_apply_args_files_receiver {
method cli_throwing_receiver (line 638) | explicit cli_throwing_receiver(std::vector<std::string>& result)
method control (line 641) | control on_term(std::string arg, location /*loc*/) override {
method on_term_error (line 661) | void on_term_error(
method found (line 675) | found on_file_found(cstring_view /*file*/, location /*loc*/) override {
method control (line 679) | control on_file_error(
method on_file_enter (line 685) | void on_file_enter(std::string file, location /*loc*/) override {
method on_file_leave (line 690) | void on_file_leave() override {
method cycle (line 697) | cycle on_file_cycle(
function cli_apply_args_files (line 713) | std::vector<std::string> cli_apply_args_files(
function cli_apply_args_files (line 721) | std::vector<std::string> cli_apply_args_files(
function cli_apply_args_files (line 732) | std::vector<std::string> cli_apply_args_files(
function cli_apply_args_files (line 738) | std::vector<std::string> cli_apply_args_files(
function cli_apply_args_files (line 744) | std::vector<std::string> cli_apply_args_files(int argc, char* const* a...
FILE: folly/cli/Args.h
type class (line 36) | enum class
type class (line 41) | enum class
function cycle (line 47) | enum class cycle {
function namespace (line 152) | namespace std {
function namespace (line 157) | namespace folly {
FILE: folly/cli/NestedCommandLineApp.cpp
type folly (line 30) | namespace folly {
function guessProgramName (line 35) | std::string guessProgramName() {
FILE: folly/cli/NestedCommandLineApp.h
function namespace (line 27) | namespace folly {
function addCallback (line 188) | void addCallback(InitFunction callback) {
FILE: folly/cli/ProgramOptions.cpp
type folly (line 35) | namespace folly {
class GFlagInfo (line 49) | class GFlagInfo {
method GFlagInfo (line 51) | explicit GFlagInfo(folly::gflags::CommandLineFlagInfo info)
method set (line 54) | void set(const T& value) {
method T (line 68) | T get() const {
class GFlagValueSemanticBase (line 82) | class GFlagValueSemanticBase : public po::value_semantic {
method GFlagValueSemanticBase (line 84) | explicit GFlagValueSemanticBase(std::shared_ptr<GFlagInfo<T>> info)
method name (line 87) | std::string name() const override { return "arg"; }
method adjacent_tokens_only (line 89) | bool adjacent_tokens_only() const override { return false; }
method is_composing (line 91) | bool is_composing() const override { return false; }
method is_required (line 92) | bool is_required() const override { return false; }
method notify (line 94) | void notify(const boost::any& /* valueStore */) const override {}
method apply_default (line 95) | bool apply_default(boost::any& valueStore) const override {
method transform (line 113) | virtual void transform(T& /* val */) const {}
class GFlagValueSemantic (line 136) | class GFlagValueSemantic : public GFlagValueSemanticBase<T> {
method GFlagValueSemantic (line 138) | explicit GFlagValueSemantic(std::shared_ptr<GFlagInfo<T>> info)
method min_tokens (line 141) | unsigned min_tokens() const override { return 1; }
method max_tokens (line 142) | unsigned max_tokens() const override { return 1; }
method T (line 144) | T parseValue(const std::vector<std::string>& tokens) const override {
class BoolGFlagValueSemantic (line 150) | class BoolGFlagValueSemantic : public GFlagValueSemanticBase<bool> {
method BoolGFlagValueSemantic (line 152) | explicit BoolGFlagValueSemantic(std::shared_ptr<GFlagInfo<bool>> info)
method min_tokens (line 155) | unsigned min_tokens() const override { return 0; }
method max_tokens (line 156) | unsigned max_tokens() const override { return 0; }
method parseValue (line 158) | bool parseValue(const std::vector<std::string>& tokens) const overri...
class NegativeBoolGFlagValueSemantic (line 164) | class NegativeBoolGFlagValueSemantic : public BoolGFlagValueSemantic {
method NegativeBoolGFlagValueSemantic (line 166) | explicit NegativeBoolGFlagValueSemantic(std::shared_ptr<GFlagInfo<bo...
method transform (line 170) | void tran
Copy disabled (too large)
Download .json
Condensed preview — 3157 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (16,502K chars).
[
{
"path": ".buckconfig",
"chars": 198,
"preview": "[cells]\ngh_facebook_folly = .\nshim_DISABLED = shim\n\n[cell_aliases]\nroot = gh_facebook_folly\n\n[oss]\ninternal_cell = fbcod"
},
{
"path": ".buckconfig.d/common.buckconfig",
"chars": 599,
"preview": "[cells]\nprelude = prelude\nnone = none\n\n[cell_aliases]\nconfig = prelude\novr_config = prelude\nbazel_skylib = gh_facebook_b"
},
{
"path": ".buckroot",
"chars": 0,
"preview": ""
},
{
"path": ".devcontainer/Containerfile",
"chars": 227,
"preview": "FROM mcr.microsoft.com/devcontainers/base:jammy\n\nRUN apt-get update \\\n && apt-get upgrade -y \\\n && apt-get install"
},
{
"path": ".devcontainer/devcontainer.json",
"chars": 314,
"preview": "{\n\t\"name\": \"Ubuntu\",\n\t\"build\": {\n\t\t\"cacheFrom\": \"ghcr.io/marinatedconcrete/config-devcontainer\",\n\t\t\"dockerfile\": \"Contai"
},
{
"path": ".github/dependabot.yml",
"chars": 115,
"preview": "---\nversion: 2\nupdates:\n - package-ecosystem: \"devcontainers\"\n directory: \"/\"\n schedule:\n interval: weekly\n"
},
{
"path": ".github/scripts/bad_targets",
"chars": 2227,
"preview": "# This is a list of bad targets that do not build in OSS. Ideally this list goes away\n# with time.\nroot//folly/debugging"
},
{
"path": ".github/scripts/buck_build_and_test.sh",
"chars": 797,
"preview": "#!/bin/bash\n# Copyright (c) Meta Platforms, Inc. and affiliates.\n#\n# Licensed under the Apache License, Version 2.0 (the"
},
{
"path": ".github/workflows/TagIt.yml",
"chars": 2848,
"preview": "on:\n push:\n tags:\n # Only match TagIt tags, which always start with this prefix\n - 'v20*'\n\nname: TagIt\n\npe"
},
{
"path": ".github/workflows/devcontainer.yml",
"chars": 1493,
"preview": "---\nname: Development Container-Based CI\non:\n pull_request:\n push:\n branches:\n - main\n workflow_dispatch:\n\njo"
},
{
"path": ".github/workflows/getdeps_linux.yml",
"chars": 24737,
"preview": "# This file was @generated by getdeps.py\n\nname: linux\n\non:\n push:\n branches:\n - main\n pull_request:\n branches"
},
{
"path": ".github/workflows/getdeps_mac.yml",
"chars": 21456,
"preview": "# This file was @generated by getdeps.py\n\nname: mac\n\non:\n push:\n branches:\n - main\n pull_request:\n branches:\n"
},
{
"path": ".github/workflows/getdeps_shared-libs_linux.yml",
"chars": 25099,
"preview": "# This file was @generated by getdeps.py\n\nname: Shared Libs Linux\n\non:\n push:\n branches:\n - main\n pull_request:\n"
},
{
"path": ".github/workflows/getdeps_windows.yml",
"chars": 19104,
"preview": "# This file was @generated by getdeps.py\n\nname: windows\n\non:\n push:\n branches:\n - main\n pull_request:\n branch"
},
{
"path": ".github/workflows/oss-build-and-test.yml",
"chars": 5689,
"preview": "name: Buck build and test\non: [push, pull_request, workflow_dispatch]\njobs:\n get-toolchains-to-install:\n runs-on: ub"
},
{
"path": ".gitignore",
"chars": 611,
"preview": "*.o\n*.lo\n*.la\n.dirstamp\nMakefile\nMakefile.in\n.libs\n.deps\nstamp-h1\nfolly-config.h\n_configs.sed\naclocal.m4\nautom4te.cache\n"
},
{
"path": ".projectid",
"chars": 6,
"preview": "folly\n"
},
{
"path": "BUCK",
"chars": 636,
"preview": "load(\"@fbcode_macros//build_defs:native_rules.bzl\", \"buck_genrule\")\n\noncall(\"fbcode_entropy_wardens_folly\")\n\nbuck_genrul"
},
{
"path": "CMake/FindCython.cmake",
"chars": 1537,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");"
},
{
"path": "CMake/FindFastFloat.cmake",
"chars": 934,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");"
},
{
"path": "CMake/FindFmt.cmake",
"chars": 1381,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");"
},
{
"path": "CMake/FindLZ4.cmake",
"chars": 1136,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");"
},
{
"path": "CMake/FindLibAIO.cmake",
"chars": 1007,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");"
},
{
"path": "CMake/FindLibDwarf.cmake",
"chars": 1353,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");"
},
{
"path": "CMake/FindLibUring.cmake",
"chars": 1047,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");"
},
{
"path": "CMake/FindLibiberty.cmake",
"chars": 1073,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");"
},
{
"path": "CMake/FindLibsodium.cmake",
"chars": 1104,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");"
},
{
"path": "CMake/FindSnappy.cmake",
"chars": 1119,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");"
},
{
"path": "CMake/FindZstd.cmake",
"chars": 1197,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");"
},
{
"path": "CMake/FollyCompilerMSVC.cmake",
"chars": 21194,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");"
},
{
"path": "CMake/FollyCompilerUnix.cmake",
"chars": 1349,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");"
},
{
"path": "CMake/FollyConfigChecks.cmake",
"chars": 5179,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");"
},
{
"path": "CMake/FollyFunctions.cmake",
"chars": 27888,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");"
},
{
"path": "CMake/GenPkgConfig.cmake",
"chars": 4412,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");"
},
{
"path": "CMake/folly-config.cmake.in",
"chars": 1460,
"preview": "# CMake configuration file for folly\n#\n# This provides the Folly::folly target, which you can depend on by adding it\n# t"
},
{
"path": "CMake/folly-config.h.cmake",
"chars": 2448,
"preview": "/*\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lice"
},
{
"path": "CMake/folly-deps.cmake",
"chars": 11150,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");"
},
{
"path": "CMake/libfolly.pc.in",
"chars": 358,
"preview": "prefix=@CMAKE_INSTALL_PREFIX@\nexec_prefix=@CMAKE_INSTALL_PREFIX@\nlibdir=${exec_prefix}/@LIB_INSTALL_DIR@\nincludedir=${pr"
},
{
"path": "CMakeLists.txt",
"chars": 45319,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");"
},
{
"path": "CMakeListsForBuck2.txt",
"chars": 4177,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");"
},
{
"path": "CODE_OF_CONDUCT.md",
"chars": 3356,
"preview": "# Code of Conduct\n\n## Our Pledge\n\nIn the interest of fostering an open and welcoming environment, we as\ncontributors and"
},
{
"path": "CONTRIBUTING.md",
"chars": 1317,
"preview": "# Contributing to Folly\nWe want to make contributing to this project as easy and transparent as\npossible.\n\n## Code of Co"
},
{
"path": "LICENSE",
"chars": 11350,
"preview": "\n Apache License\n Version 2.0, January 2004\n "
},
{
"path": "PACKAGE",
"chars": 911,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");"
},
{
"path": "README.md",
"chars": 10778,
"preview": "Folly: Facebook Open-source Library\n===================================\n\n# What is `folly`?\n\n<img src=\"static/logo.svg\" "
},
{
"path": "buck2",
"chars": 2866,
"preview": "#!/usr/bin/env dotslash\n\n{\n \"name\": \"buck2\",\n \"platforms\": {\n \"macos-aarch64\": {\n \"size\": 31815315,\n \"has"
},
{
"path": "build/buck2/README.md",
"chars": 726,
"preview": "# Easy buck2 builds for Facebook projects\n\nThis directory contains buck2 targets designed to simplify buck2 builds of\nMe"
},
{
"path": "build/buck2/install_deps/BUCK",
"chars": 364,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n#\n# This source code is licensed under the LICENSE file found in th"
},
{
"path": "build/buck2/install_deps/install_deps.sh",
"chars": 1734,
"preview": "#!/bin/sh\n# Copyright (c) Meta Platforms, Inc. and affiliates.\n#\n# This source code is licensed under the LICENSE file f"
},
{
"path": "build/buck2/install_deps/repos/fedora",
"chars": 41,
"preview": "INSTALL_COMMAND=\"sudo -E dnf install -y\"\n"
},
{
"path": "build/buck2/install_deps/repos/homebrew",
"chars": 31,
"preview": "INSTALL_COMMAND=\"brew install\"\n"
},
{
"path": "build/buck2/install_deps/repos/ubuntu",
"chars": 45,
"preview": "INSTALL_COMMAND=\"sudo -E apt-get install -y\"\n"
},
{
"path": "build/fbcode_builder/.gitignore",
"chars": 168,
"preview": "# Facebook-internal CI builds don't have write permission outside of the\n# source tree, so we install all projects into "
},
{
"path": "build/fbcode_builder/CMake/FBBuildOptions.cmake",
"chars": 932,
"preview": "# Copyright (c) Facebook, Inc. and its affiliates.\n\nfunction (fb_activate_static_library_option)\n option(USE_STATIC_DEP"
},
{
"path": "build/fbcode_builder/CMake/FBCMakeParseArgs.cmake",
"chars": 5919,
"preview": "#\n# Copyright (c) Facebook, Inc. and its affiliates.\n#\n# Helper function for parsing arguments to a CMake function.\n#\n# "
},
{
"path": "build/fbcode_builder/CMake/FBCompilerSettings.cmake",
"chars": 432,
"preview": "# Copyright (c) Facebook, Inc. and its affiliates.\n\n# This file applies common compiler settings that are shared across\n"
},
{
"path": "build/fbcode_builder/CMake/FBCompilerSettingsMSVC.cmake",
"chars": 499,
"preview": "# Copyright (c) Facebook, Inc. and its affiliates.\n\n# This file applies common compiler settings that are shared across\n"
},
{
"path": "build/fbcode_builder/CMake/FBCompilerSettingsUnix.cmake",
"chars": 442,
"preview": "# Copyright (c) Facebook, Inc. and its affiliates.\n\n# This file applies common compiler settings that are shared across\n"
},
{
"path": "build/fbcode_builder/CMake/FBPythonBinary.cmake",
"chars": 26829,
"preview": "# Copyright (c) Facebook, Inc. and its affiliates.\n\ninclude(FBCMakeParseArgs)\n\n#\n# This file contains helper functions f"
},
{
"path": "build/fbcode_builder/CMake/FBPythonTestAddTests.cmake",
"chars": 1768,
"preview": "# Copyright (c) Facebook, Inc. and its affiliates.\n\n# Add a command to be emitted to the CTest file\nset(ctest_script)\nfu"
},
{
"path": "build/fbcode_builder/CMake/FBThriftCppLibrary.cmake",
"chars": 6967,
"preview": "# Copyright (c) Facebook, Inc. and its affiliates.\n\ninclude(FBCMakeParseArgs)\n\n# Generate a C++ library from a thrift fi"
},
{
"path": "build/fbcode_builder/CMake/FBThriftLibrary.cmake",
"chars": 2331,
"preview": "# Copyright (c) Facebook, Inc. and its affiliates.\n\ninclude(FBCMakeParseArgs)\ninclude(FBThriftPyLibrary)\ninclude(FBThrif"
},
{
"path": "build/fbcode_builder/CMake/FBThriftPyLibrary.cmake",
"chars": 3699,
"preview": "# Copyright (c) Facebook, Inc. and its affiliates.\n\ninclude(FBCMakeParseArgs)\ninclude(FBPythonBinary)\n\n# Generate a Pyth"
},
{
"path": "build/fbcode_builder/CMake/FindCares.cmake",
"chars": 833,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n# All rights reserved.\n#\n# This source code is licensed under the B"
},
{
"path": "build/fbcode_builder/CMake/FindDoubleConversion.cmake",
"chars": 557,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n\n# Finds libdouble-conversion.\n#\n# This module defines:\n# DOUBLE_CO"
},
{
"path": "build/fbcode_builder/CMake/FindGMock.cmake",
"chars": 2697,
"preview": "# Copyright (c) Facebook, Inc. and its affiliates.\n# Find libgmock\n#\n# LIBGMOCK_DEFINES - List of defines when usin"
},
{
"path": "build/fbcode_builder/CMake/FindGflags.cmake",
"chars": 4227,
"preview": "# Copyright (c) Facebook, Inc. and its affiliates.\n# Find libgflags.\n# There's a lot of compatibility cruft going on in "
},
{
"path": "build/fbcode_builder/CMake/FindGlog.cmake",
"chars": 1755,
"preview": "# Copyright (c) Facebook, Inc. and its affiliates.\n# - Try to find Glog\n# Once done, this will define\n#\n# GLOG_FOUND - s"
},
{
"path": "build/fbcode_builder/CMake/FindLMDB.cmake",
"chars": 536,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n#\n# This software may be used and distributed according to the term"
},
{
"path": "build/fbcode_builder/CMake/FindLibEvent.cmake",
"chars": 2772,
"preview": "# Copyright (c) Facebook, Inc. and its affiliates.\n# - Find LibEvent (a cross event library)\n# This module defines\n# LIB"
},
{
"path": "build/fbcode_builder/CMake/FindLibUnwind.cmake",
"chars": 2559,
"preview": "# Copyright (c) Facebook, Inc. and its affiliates.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n#"
},
{
"path": "build/fbcode_builder/CMake/FindLibiberty.cmake",
"chars": 1073,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");"
},
{
"path": "build/fbcode_builder/CMake/FindPCRE.cmake",
"chars": 309,
"preview": "# Copyright (c) Facebook, Inc. and its affiliates.\ninclude(FindPackageHandleStandardArgs)\nfind_path(PCRE_INCLUDE_DIR NAM"
},
{
"path": "build/fbcode_builder/CMake/FindPCRE2.cmake",
"chars": 379,
"preview": "# Copyright (c) Facebook, Inc. and its affiliates.\ninclude(FindPackageHandleStandardArgs)\nfind_path(PCRE2_INCLUDE_DIR NA"
},
{
"path": "build/fbcode_builder/CMake/FindRe2.cmake",
"chars": 538,
"preview": "# Copyright (c) Facebook, Inc. and its affiliates.\n#\n# This software may be used and distributed according to the terms "
},
{
"path": "build/fbcode_builder/CMake/FindSodium.cmake",
"chars": 9918,
"preview": "# Written in 2016 by Henrik Steffen Gaßmann <henrik@gassmann.onl>\n#\n# To the extent possible under law, the author(s) ha"
},
{
"path": "build/fbcode_builder/CMake/FindXxhash.cmake",
"chars": 1157,
"preview": "# Copyright (c) Facebook, Inc. and its affiliates.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n#"
},
{
"path": "build/fbcode_builder/CMake/FindZstd.cmake",
"chars": 1195,
"preview": "# Copyright (c) Facebook, Inc. and its affiliates.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n#"
},
{
"path": "build/fbcode_builder/CMake/Findibverbs.cmake",
"chars": 3573,
"preview": "# Copyright (c) Facebook, Inc. and its affiliates.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n#"
},
{
"path": "build/fbcode_builder/CMake/RustStaticLibrary.cmake",
"chars": 17577,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n\ninclude(FBCMakeParseArgs)\n\nset(\n USE_CARGO_VENDOR AUTO CACHE STRI"
},
{
"path": "build/fbcode_builder/CMake/fb_py_test_main.py",
"chars": 25659,
"preview": "#!/usr/bin/env python\n#\n# Copyright (c) Facebook, Inc. and its affiliates.\n#\n\"\"\"\nThis file contains the main module code"
},
{
"path": "build/fbcode_builder/CMake/fb_py_win_main.c",
"chars": 3286,
"preview": "// Copyright (c) Facebook, Inc. and its affiliates.\n\n#define WIN32_LEAN_AND_MEAN\n\n#include <Windows.h>\n#include <stdio.h"
},
{
"path": "build/fbcode_builder/CMake/make_fbpy_archive.py",
"chars": 11476,
"preview": "#!/usr/bin/env python3\n#\n# Copyright (c) Facebook, Inc. and its affiliates.\n#\nimport argparse\nimport collections\nimport "
},
{
"path": "build/fbcode_builder/LICENSE",
"chars": 1086,
"preview": "MIT License\n\nCopyright (c) Facebook, Inc. and its affiliates.\n\nPermission is hereby granted, free of charge, to any pers"
},
{
"path": "build/fbcode_builder/README.md",
"chars": 1945,
"preview": "# Easy builds for Facebook projects\n\nThis directory contains tools designed to simplify continuous-integration\n(and othe"
},
{
"path": "build/fbcode_builder/getdeps/__init__.py",
"chars": 14,
"preview": "# pyre-strict\n"
},
{
"path": "build/fbcode_builder/getdeps/builder.py",
"chars": 64005,
"preview": "#!/usr/bin/env python3\n# Copyright (c) Meta Platforms, Inc. and affiliates.\n#\n# This source code is licensed under the M"
},
{
"path": "build/fbcode_builder/getdeps/buildopts.py",
"chars": 29236,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n#\n# This source code is licensed under the MIT license found in the"
},
{
"path": "build/fbcode_builder/getdeps/cache.py",
"chars": 1588,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n#\n# This source code is licensed under the MIT license found in the"
},
{
"path": "build/fbcode_builder/getdeps/cargo.py",
"chars": 21723,
"preview": "#!/usr/bin/env python3\n# Copyright (c) Meta Platforms, Inc. and affiliates.\n#\n# This source code is licensed under the M"
},
{
"path": "build/fbcode_builder/getdeps/copytree.py",
"chars": 4566,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n#\n# This source code is licensed under the MIT license found in the"
},
{
"path": "build/fbcode_builder/getdeps/dyndeps.py",
"chars": 18378,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n#\n# This source code is licensed under the MIT license found in the"
},
{
"path": "build/fbcode_builder/getdeps/envfuncs.py",
"chars": 7023,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n#\n# This source code is licensed under the MIT license found in the"
},
{
"path": "build/fbcode_builder/getdeps/errors.py",
"chars": 578,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n#\n# This source code is licensed under the MIT license found in the"
},
{
"path": "build/fbcode_builder/getdeps/expr.py",
"chars": 5777,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n#\n# This source code is licensed under the MIT license found in the"
},
{
"path": "build/fbcode_builder/getdeps/fetcher.py",
"chars": 43173,
"preview": "#!/usr/bin/env python3\n# Copyright (c) Meta Platforms, Inc. and affiliates.\n#\n# This source code is licensed under the M"
},
{
"path": "build/fbcode_builder/getdeps/include_rewriter.py",
"chars": 7136,
"preview": "#!/usr/bin/env python3\n# Copyright (c) Meta Platforms, Inc. and affiliates.\n#\n# This source code is licensed under the M"
},
{
"path": "build/fbcode_builder/getdeps/load.py",
"chars": 16241,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n#\n# This source code is licensed under the MIT license found in the"
},
{
"path": "build/fbcode_builder/getdeps/manifest.py",
"chars": 33167,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n#\n# This source code is licensed under the MIT license found in the"
},
{
"path": "build/fbcode_builder/getdeps/platform.py",
"chars": 9522,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n#\n# This source code is licensed under the MIT license found in the"
},
{
"path": "build/fbcode_builder/getdeps/py_wheel_builder.py",
"chars": 11252,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n#\n# This source code is licensed under the MIT license found in the"
},
{
"path": "build/fbcode_builder/getdeps/runcmd.py",
"chars": 8939,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n#\n# This source code is licensed under the MIT license found in the"
},
{
"path": "build/fbcode_builder/getdeps/subcmd.py",
"chars": 2265,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n#\n# This source code is licensed under the MIT license found in the"
},
{
"path": "build/fbcode_builder/getdeps/test/expr_test.py",
"chars": 1817,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n#\n# This source code is licensed under the MIT license found in the"
},
{
"path": "build/fbcode_builder/getdeps/test/fixtures/duplicate/foo",
"chars": 22,
"preview": "[manifest]\nname = foo\n"
},
{
"path": "build/fbcode_builder/getdeps/test/fixtures/duplicate/subdir/foo",
"chars": 22,
"preview": "[manifest]\nname = foo\n"
},
{
"path": "build/fbcode_builder/getdeps/test/manifest_test.py",
"chars": 5681,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n#\n# This source code is licensed under the MIT license found in the"
},
{
"path": "build/fbcode_builder/getdeps/test/platform_test.py",
"chars": 1229,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n#\n# This source code is licensed under the MIT license found in the"
},
{
"path": "build/fbcode_builder/getdeps/test/retry_test.py",
"chars": 5602,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n#\n# This source code is licensed under the MIT license found in the"
},
{
"path": "build/fbcode_builder/getdeps/test/scratch_test.py",
"chars": 2750,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n#\n# This source code is licensed under the MIT license found in the"
},
{
"path": "build/fbcode_builder/getdeps/test/strip_marker_test.py",
"chars": 4995,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n#\n# This source code is licensed under the MIT license found in the"
},
{
"path": "build/fbcode_builder/getdeps.py",
"chars": 61784,
"preview": "#!/usr/bin/env python3\n# Copyright (c) Meta Platforms, Inc. and affiliates.\n#\n# This source code is licensed under the M"
},
{
"path": "build/fbcode_builder/manifests/CLI11",
"chars": 286,
"preview": "[manifest]\nname = CLI11\n\n[download]\nurl = https://github.com/CLIUtils/CLI11/archive/v2.0.0.tar.gz\nsha256 = 2c672f17bf56e"
},
{
"path": "build/fbcode_builder/manifests/autoconf",
"chars": 301,
"preview": "[manifest]\nname = autoconf\n\n[debs]\nautoconf\n\n[homebrew]\nautoconf\n\n[rpms]\nautoconf\n\n[pps]\nautoconf\n\n[download]\nurl = http"
},
{
"path": "build/fbcode_builder/manifests/automake",
"chars": 330,
"preview": "[manifest]\nname = automake\n\n[homebrew]\nautomake\n\n[debs]\nautomake\n\n[rpms]\nautomake\n\n[pps]\nautomake\n\n[download]\nurl = http"
},
{
"path": "build/fbcode_builder/manifests/benchmark",
"chars": 285,
"preview": "[manifest]\nname = benchmark\n\n[download]\nurl = https://github.com/google/benchmark/archive/refs/tags/v1.8.0.tar.gz\nsha256"
},
{
"path": "build/fbcode_builder/manifests/blake3",
"chars": 235,
"preview": "[manifest]\nname = blake3\n\n[download]\nurl = https://github.com/BLAKE3-team/BLAKE3/archive/refs/tags/1.5.1.tar.gz\nsha256 ="
},
{
"path": "build/fbcode_builder/manifests/boost",
"chars": 2362,
"preview": "[manifest]\nname = boost\n\n[download.not(os=windows)]\nurl = https://archives.boost.io/release/1.83.0/source/boost_1_83_0.t"
},
{
"path": "build/fbcode_builder/manifests/boost-python",
"chars": 2476,
"preview": "[manifest]\nname = boost-python\n\n[download.not(os=windows)]\nurl = https://archives.boost.io/release/1.83.0/source/boost_1"
},
{
"path": "build/fbcode_builder/manifests/bz2",
"chars": 461,
"preview": "[manifest]\nname = bz2\n\n[debs]\nlibbz2-dev\nbzip2\n\n[homebrew]\nbzip2\n\n[rpms]\nbzip2-devel\nbzip2\n\n[download]\nurl = https://sou"
},
{
"path": "build/fbcode_builder/manifests/c-ares",
"chars": 332,
"preview": "[manifest]\nname = c-ares\n\n[download]\nurl = https://github.com/c-ares/c-ares/releases/download/v1.34.6/c-ares-1.34.6.tar."
},
{
"path": "build/fbcode_builder/manifests/cabal",
"chars": 290,
"preview": "[manifest]\nname = cabal\n\n[download.os=linux]\nurl = https://downloads.haskell.org/~cabal/cabal-install-3.6.2.0/cabal-inst"
},
{
"path": "build/fbcode_builder/manifests/cachelib",
"chars": 1073,
"preview": "[manifest]\nname = cachelib\nfbsource_path = fbcode/cachelib\nshipit_project = cachelib\nshipit_fbcode_builder = true\n\n[git]"
},
{
"path": "build/fbcode_builder/manifests/cinderx-3_14",
"chars": 507,
"preview": "[manifest]\nname = cinderx-3_14\nfbsource_path = fbcode/cinderx\nshipit_project = facebookincubator/cinderx\n\n[git]\nrepo_url"
},
{
"path": "build/fbcode_builder/manifests/cinderx-main",
"chars": 819,
"preview": "# For building CinderX against CPython main.\n# Note that externally this can be broken because in that environment we w"
},
{
"path": "build/fbcode_builder/manifests/clang",
"chars": 46,
"preview": "[manifest]\nname = clang\n\n[rpms]\nclang15-devel\n"
},
{
"path": "build/fbcode_builder/manifests/clang19",
"chars": 75,
"preview": "[manifest]\nname = clang19\n\n[debs.os=linux]\nclang-19\n\n[rpms.os=linux]\nclang\n"
},
{
"path": "build/fbcode_builder/manifests/cmake",
"chars": 1127,
"preview": "[manifest]\nname = cmake\n\n[homebrew]\ncmake\n\n# 18.04 cmake is too old\n[debs.not(all(distro=ubuntu,distro_vers=\"18.04\"))]\nc"
},
{
"path": "build/fbcode_builder/manifests/cpptoml",
"chars": 301,
"preview": "[manifest]\nname = cpptoml\n\n[homebrew]\ncpptoml\n\n[download]\nurl = https://github.com/chadaustin/cpptoml/archive/refs/tags/"
},
{
"path": "build/fbcode_builder/manifests/double-conversion",
"chars": 390,
"preview": "[manifest]\nname = double-conversion\n\n[download]\nurl = https://github.com/google/double-conversion/archive/v3.1.4.tar.gz\n"
},
{
"path": "build/fbcode_builder/manifests/double-conversion-python",
"chars": 486,
"preview": "[manifest]\nname = double-conversion-python\n\n[download]\nurl = https://github.com/google/double-conversion/archive/v3.1.4."
},
{
"path": "build/fbcode_builder/manifests/eden",
"chars": 2936,
"preview": "[manifest]\nname = eden\nfbsource_path = fbcode/eden\nshipit_project = eden\nshipit_fbcode_builder = true\n\n[git]\nrepo_url = "
},
{
"path": "build/fbcode_builder/manifests/edencommon",
"chars": 466,
"preview": "[manifest]\nname = edencommon\nfbsource_path = fbcode/eden/common\nshipit_project = edencommon\nshipit_fbcode_builder = true"
},
{
"path": "build/fbcode_builder/manifests/exprtk",
"chars": 304,
"preview": "[manifest]\nname = exprtk\n\n[download]\nurl = https://github.com/ArashPartow/exprtk/archive/refs/tags/0.0.1.tar.gz\nsha256 ="
},
{
"path": "build/fbcode_builder/manifests/fast_float",
"chars": 481,
"preview": "[manifest]\nname = fast_float\n\n[download]\nurl = https://github.com/fastfloat/fast_float/archive/refs/tags/v8.0.0.tar.gz\ns"
},
{
"path": "build/fbcode_builder/manifests/fatal",
"chars": 482,
"preview": "[manifest]\nname = fatal\nfbsource_path = fbcode/fatal\nshipit_project = fatal\n\n[git]\nrepo_url = https://github.com/faceboo"
},
{
"path": "build/fbcode_builder/manifests/fb303",
"chars": 594,
"preview": "[manifest]\nname = fb303\nfbsource_path = fbcode/fb303\nshipit_project = fb303\nshipit_fbcode_builder = true\n\n[git]\nrepo_url"
},
{
"path": "build/fbcode_builder/manifests/fboss",
"chars": 1366,
"preview": "[manifest]\nname = fboss\nfbsource_path = fbcode/fboss\nshipit_project = fboss\nshipit_fbcode_builder = true\n\n[git]\nrepo_url"
},
{
"path": "build/fbcode_builder/manifests/fbthrift",
"chars": 915,
"preview": "[manifest]\nname = fbthrift\nfbsource_path = xplat/thrift\nshipit_project = fbthrift\nshipit_fbcode_builder = true\n\n[git]\nre"
},
{
"path": "build/fbcode_builder/manifests/fbthrift-python",
"chars": 1115,
"preview": "[manifest]\nname = fbthrift-python\nfbsource_path = xplat/thrift\nshipit_project = fbthrift\nshipit_fbcode_builder = true\n\n["
},
{
"path": "build/fbcode_builder/manifests/fizz",
"chars": 559,
"preview": "[manifest]\nname = fizz\nfbsource_path = fbcode/fizz\nshipit_project = fizz\nshipit_fbcode_builder = true\n\n[git]\nrepo_url = "
},
{
"path": "build/fbcode_builder/manifests/fizz-python",
"chars": 710,
"preview": "[manifest]\nname = fizz-python\nfbsource_path = fbcode/fizz\nshipit_project = fizz\nshipit_fbcode_builder = true\n\n[git]\nrepo"
},
{
"path": "build/fbcode_builder/manifests/fmt",
"chars": 315,
"preview": "[manifest]\nname = fmt\n\n[download]\nurl = https://github.com/fmtlib/fmt/archive/refs/tags/12.1.0.tar.gz\nsha256 = ea7de4299"
},
{
"path": "build/fbcode_builder/manifests/fmt-python",
"chars": 539,
"preview": "[manifest]\nname = fmt-python\n\n[download]\nurl = https://github.com/fmtlib/fmt/archive/refs/tags/12.1.0.tar.gz\nsha256 = ea"
},
{
"path": "build/fbcode_builder/manifests/folly",
"chars": 1399,
"preview": "[manifest]\nname = folly\nfbsource_path = fbcode/folly\nshipit_project = folly\nshipit_fbcode_builder = true\n\n[git]\nrepo_url"
},
{
"path": "build/fbcode_builder/manifests/folly-python",
"chars": 1535,
"preview": "[manifest]\nname = folly-python\nfbsource_path = fbcode/folly\nshipit_project = folly\nshipit_fbcode_builder = true\n\n[git]\nr"
},
{
"path": "build/fbcode_builder/manifests/gcc12",
"chars": 87,
"preview": "[manifest]\nname = gcc12\n\n[rpms.all(distro=centos_stream,distro_vers=9)]\ngcc-toolset-12\n"
},
{
"path": "build/fbcode_builder/manifests/gcc14",
"chars": 87,
"preview": "[manifest]\nname = gcc14\n\n[rpms.all(distro=centos_stream,distro_vers=9)]\ngcc-toolset-14\n"
},
{
"path": "build/fbcode_builder/manifests/gflags",
"chars": 414,
"preview": "[manifest]\nname = gflags\n\n[download]\nurl = https://github.com/gflags/gflags/archive/v2.2.2.tar.gz\nsha256 = 34af2f15cf736"
},
{
"path": "build/fbcode_builder/manifests/ghc",
"chars": 323,
"preview": "[manifest]\nname = ghc\n\n[download.os=linux]\nurl = https://downloads.haskell.org/~ghc/9.2.8/ghc-9.2.8-x86_64-fedora27-linu"
},
{
"path": "build/fbcode_builder/manifests/git-lfs",
"chars": 144,
"preview": "[manifest]\nname = git-lfs\n\n[rpms]\ngit-lfs\n\n[debs]\ngit-lfs\n\n[homebrew]\ngit-lfs\n\n# only used from system packages currentl"
},
{
"path": "build/fbcode_builder/manifests/glean",
"chars": 977,
"preview": "[manifest]\nname = glean\nfbsource_path = fbcode/glean\nshipit_project = facebookincubator/Glean\nuse_shipit = true\n\n[shipit"
},
{
"path": "build/fbcode_builder/manifests/glog",
"chars": 564,
"preview": "[manifest]\nname = glog\n\n[download]\nurl = https://github.com/google/glog/archive/v0.5.0.tar.gz\nsha256 = eede71f28371bf39a"
},
{
"path": "build/fbcode_builder/manifests/googletest",
"chars": 682,
"preview": "[manifest]\nname = googletest\n\n[download]\nurl = https://github.com/google/googletest/archive/refs/tags/v1.17.0.tar.gz\nsha"
},
{
"path": "build/fbcode_builder/manifests/gperf",
"chars": 266,
"preview": "[manifest]\nname = gperf\n\n[download]\nurl = https://ftpmirror.gnu.org/gnu/gperf/gperf-3.1.tar.gz\nsha256 = 588546b945bba4b7"
},
{
"path": "build/fbcode_builder/manifests/hexdump",
"chars": 132,
"preview": "[manifest]\nname = hexdump\n\n[rpms]\nutil-linux\n\n[debs]\nbsdmainutils\n\n# only used from system packages currently\n[build]\nbu"
},
{
"path": "build/fbcode_builder/manifests/hsthrift",
"chars": 482,
"preview": "[manifest]\nname = hsthrift\nfbsource_path = fbcode/common/hs\nshipit_project = facebookincubator/hsthrift\nuse_shipit = tru"
},
{
"path": "build/fbcode_builder/manifests/iproute2",
"chars": 333,
"preview": "[manifest]\nname = iproute2\n\n[download]\nurl = https://mirrors.edge.kernel.org/pub/linux/utils/net/iproute2/iproute2-4.12."
},
{
"path": "build/fbcode_builder/manifests/jom",
"chars": 454,
"preview": "# jom is compatible with MSVC nmake, but adds the /j<number of jobs> argment which \n# speeds up openssl build a lot\n[man"
},
{
"path": "build/fbcode_builder/manifests/jq",
"chars": 555,
"preview": "[manifest]\nname = jq\n\n[rpms.distro=fedora]\njq\n\n[homebrew]\njq\n\n[download.not(os=windows)]\n# we use jq-1.7+ to get fix for"
},
{
"path": "build/fbcode_builder/manifests/katran",
"chars": 553,
"preview": "[manifest]\nname = katran\nfbsource_path = fbcode/katran\nshipit_project = katran\nshipit_fbcode_builder = true\n\n[git]\nrepo_"
},
{
"path": "build/fbcode_builder/manifests/libaio",
"chars": 443,
"preview": "[manifest]\nname = libaio\n\n[debs]\nlibaio-dev\n\n[rpms.distro=centos_stream]\nlibaio-devel\n\n[download]\nurl = https://pagure.i"
},
{
"path": "build/fbcode_builder/manifests/libaio-python",
"chars": 419,
"preview": "[manifest]\nname = libaio-python\n\n[debs]\nlibaio-dev\n\n[rpms.distro=centos_stream]\nlibaio-devel\n\n[download]\nurl = https://p"
},
{
"path": "build/fbcode_builder/manifests/libbpf",
"chars": 516,
"preview": "[manifest]\nname = libbpf\n\n[download]\nurl = https://github.com/libbpf/libbpf/archive/refs/tags/v1.6.2.tar.gz\nsha256 = 16f"
},
{
"path": "build/fbcode_builder/manifests/libcurl",
"chars": 941,
"preview": "[manifest]\nname = libcurl\n\n[rpms]\nlibcurl-devel\nlibcurl-minimal\n\n[debs]\nlibcurl4-openssl-dev\n\n[pps]\nlibcurl-gnutls\n\n[dow"
},
{
"path": "build/fbcode_builder/manifests/libdwarf",
"chars": 293,
"preview": "[manifest]\nname = libdwarf\n\n[rpms]\nlibdwarf-devel\nlibdwarf\n\n[debs]\nlibdwarf-dev\n\n[homebrew]\ndwarfutils\n\n[download]\nurl ="
},
{
"path": "build/fbcode_builder/manifests/libdwarf-python",
"chars": 389,
"preview": "[manifest]\nname = libdwarf-python\n\n[rpms]\nlibdwarf-devel\nlibdwarf\n\n[debs]\nlibdwarf-dev\n\n[homebrew]\ndwarfutils\n\n[download"
},
{
"path": "build/fbcode_builder/manifests/libelf",
"chars": 422,
"preview": "[manifest]\nname = libelf\n\n[rpms]\nelfutils-libelf-devel-static\n\n[debs]\nlibelf-dev\n\n[pps]\nlibelf\n\n[download]\nurl = https:/"
},
{
"path": "build/fbcode_builder/manifests/libevent",
"chars": 943,
"preview": "[manifest]\nname = libevent\n\n[debs]\nlibevent-dev\n\n[homebrew]\nlibevent\n\n[rpms]\nlibevent-devel\n\n[pps]\nlibevent\n\n# Note that"
},
{
"path": "build/fbcode_builder/manifests/libevent-python",
"chars": 1136,
"preview": "[manifest]\nname = libevent-python\n\n# NOTE: System packages (debs, rpms) removed because they don't include\n# LibeventCon"
},
{
"path": "build/fbcode_builder/manifests/libffi",
"chars": 325,
"preview": "[manifest]\nname = libffi\n\n[debs]\nlibffi-dev\n\n[homebrew]\nlibffi\n\n[rpms]\nlibffi-devel\nlibffi\n\n[pps]\nlibffi\n\n[download]\nurl"
},
{
"path": "build/fbcode_builder/manifests/libgit2",
"chars": 820,
"preview": "[manifest]\nname = libgit2\n\n[homebrew]\nlibgit2\n\n[rpms]\nlibgit2-devel\n\n[pps]\nlibgit2\n\n# Ubuntu 18.04 libgit2 has clash wit"
},
{
"path": "build/fbcode_builder/manifests/libgpiod",
"chars": 239,
"preview": "[manifest]\nname = libgpiod\n\n[download]\nurl = https://cdn.kernel.org/pub/software/libs/libgpiod/libgpiod-1.6.tar.xz\nsha25"
},
{
"path": "build/fbcode_builder/manifests/libiberty",
"chars": 623,
"preview": "[manifest]\nname = libiberty\n\n[rpms]\nbinutils-devel\nbinutils\n\n[debs.not(all(distro=ubuntu,distro_vers=\"24.04\"))]\nbinutils"
},
{
"path": "build/fbcode_builder/manifests/libiberty-python",
"chars": 705,
"preview": "[manifest]\nname = libiberty-python\n\n[rpms]\nbinutils-devel\nbinutils\n\n[debs.not(all(distro=ubuntu,distro_vers=\"24.04\"))]\nb"
},
{
"path": "build/fbcode_builder/manifests/libibverbs",
"chars": 539,
"preview": "[manifest]\nname = libibverbs\n\n[debs]\nlibibverbs-dev\nrdma-core\n\n[rpms]\nlibibverbs\nrdma-core-devel\n\n[download]\nurl = https"
},
{
"path": "build/fbcode_builder/manifests/libmnl",
"chars": 469,
"preview": "[manifest]\nname = libmnl\n\n[rpms]\nlibmnl-devel\n\n# all centos 8 distros are missing this,\n# but its in fedora so may be ba"
},
{
"path": "build/fbcode_builder/manifests/libnl",
"chars": 337,
"preview": "[manifest]\nname = libnl\n\n[rpms]\nlibnl3-devel\nlibnl3\n\n[debs]\nlibnl-3-dev\nlibnl-route-3-dev\n\n[pps]\nlibnl\n\n[download]\nurl ="
},
{
"path": "build/fbcode_builder/manifests/liboqs",
"chars": 391,
"preview": "[manifest]\nname = liboqs\n\n[download]\nurl = https://github.com/open-quantum-safe/liboqs/archive/refs/tags/0.12.0.tar.gz\ns"
},
{
"path": "build/fbcode_builder/manifests/libsai",
"chars": 284,
"preview": "[manifest]\nname = libsai\n\n[download]\nurl = https://github.com/opencomputeproject/SAI/archive/v1.16.3.tar.gz\nsha256 = 5c8"
},
{
"path": "build/fbcode_builder/manifests/libsodium",
"chars": 997,
"preview": "[manifest]\nname = libsodium\n\n[debs]\nlibsodium-dev\n\n[homebrew]\nlibsodium\n\n[rpms]\nlibsodium-devel\nlibsodium-static\n\n[pps]\n"
},
{
"path": "build/fbcode_builder/manifests/libunwind",
"chars": 710,
"preview": "[manifest]\nname = libunwind\n\n[rpms]\nlibunwind-devel\nlibunwind\n\n# on ubuntu this brings in liblzma-dev, which in turn bre"
},
{
"path": "build/fbcode_builder/manifests/libusb",
"chars": 543,
"preview": "[manifest]\nname = libusb\n\n[debs]\nlibusb-1.0-0-dev\n\n[homebrew]\nlibusb\n\n[rpms]\nlibusb-devel\nlibusb\n\n[pps]\nlibusb\n\n[downloa"
},
{
"path": "build/fbcode_builder/manifests/libyaml",
"chars": 266,
"preview": "[manifest]\nname = libyaml\n\n[download]\nurl = https://pyyaml.org/download/libyaml/yaml-0.1.7.tar.gz\nsha256 = 8088e457264a9"
},
{
"path": "build/fbcode_builder/manifests/llvm",
"chars": 44,
"preview": "[manifest]\nname = llvm\n\n[rpms]\nllvm15-devel\n"
},
{
"path": "build/fbcode_builder/manifests/lmdb",
"chars": 337,
"preview": "[manifest]\nname = lmdb\n\n[build]\nbuilder = make\nsubdir = lmdb-LMDB_0.9.31/libraries/liblmdb\n\n[download]\nurl = https://git"
},
{
"path": "build/fbcode_builder/manifests/lz4",
"chars": 459,
"preview": "[manifest]\nname = lz4\n\n[homebrew]\nlz4\n\n[rpms]\nlz4-devel\n# centos 8 and centos_stream 9 are missing this rpm\n[rpms.not(an"
},
{
"path": "build/fbcode_builder/manifests/lz4-python",
"chars": 555,
"preview": "[manifest]\nname = lz4-python\n\n[homebrew]\nlz4\n\n[rpms]\nlz4-devel\n# centos 8 and centos_stream 9 are missing this rpm\n[rpms"
},
{
"path": "build/fbcode_builder/manifests/magic_enum",
"chars": 348,
"preview": "[manifest]\nname = magic_enum\n\n[download]\nurl = https://github.com/Neargye/magic_enum/releases/download/v0.9.7/magic_enum"
},
{
"path": "build/fbcode_builder/manifests/mcrouter",
"chars": 557,
"preview": "[manifest]\nname = mcrouter\nfbsource_path = fbcode/mcrouter\nshipit_project = mcrouter\nshipit_fbcode_builder = true\n\n[git]"
},
{
"path": "build/fbcode_builder/manifests/mononoke",
"chars": 1546,
"preview": "[manifest]\nname = mononoke\nfbsource_path = fbcode/eden\nshipit_project = eden\nshipit_fbcode_builder = true\n\n[git]\nrepo_ur"
},
{
"path": "build/fbcode_builder/manifests/mononoke_integration",
"chars": 695,
"preview": "[manifest]\nname = mononoke_integration\nfbsource_path = fbcode/eden\nshipit_project = eden\nshipit_fbcode_builder = true\n\n["
},
{
"path": "build/fbcode_builder/manifests/moxygen",
"chars": 574,
"preview": "[manifest]\nname = moxygen\nfbsource_path = fbcode/moxygen\nshipit_project = moxygen\nshipit_fbcode_builder = true\n\n[git]\nre"
},
{
"path": "build/fbcode_builder/manifests/mvfst",
"chars": 491,
"preview": "[manifest]\nname = mvfst\nfbsource_path = fbcode/quic\nshipit_project = mvfst\nshipit_fbcode_builder = true\n\n[git]\nrepo_url "
},
{
"path": "build/fbcode_builder/manifests/mvfst-python",
"chars": 635,
"preview": "[manifest]\nname = mvfst-python\nfbsource_path = fbcode/quic\nshipit_project = mvfst\nshipit_fbcode_builder = true\n\n[git]\nre"
},
{
"path": "build/fbcode_builder/manifests/ncurses",
"chars": 448,
"preview": "[manifest]\nname = ncurses\n\n[debs]\nlibncurses-dev\n\n[homebrew]\nncurses\n\n[rpms]\nncurses-devel\n\n[download]\nurl = https://ftp"
},
{
"path": "build/fbcode_builder/manifests/nghttp2",
"chars": 395,
"preview": "[manifest]\nname = nghttp2\n\n[rpms]\nlibnghttp2-devel\nlibnghttp2\n\n[debs]\nlibnghttp2-dev\n\n[pps]\nlibnghttp2\n\n[download]\nurl ="
},
{
"path": "build/fbcode_builder/manifests/ninja",
"chars": 603,
"preview": "[manifest]\nname = ninja\n\n[debs]\nninja-build\n\n[homebrew]\nninja\n\n[rpms]\nninja-build\n\n[pps]\nninja\n\n[download.os=windows]\nur"
},
{
"path": "build/fbcode_builder/manifests/nlohmann-json",
"chars": 252,
"preview": "[manifest]\nname = nlohmann-json\n\n[download]\nurl = https://github.com/nlohmann/json/archive/refs/tags/v3.10.5.tar.gz\nsha2"
},
{
"path": "build/fbcode_builder/manifests/nmap",
"chars": 645,
"preview": "[manifest]\nname = nmap\n\n[rpms]\nnmap\nnmap-ncat\n\n[debs]\nnmap\n\n# 18.04 combines ncat into the nmap package, newer need the "
}
]
// ... and 2957 more files (download for full content)
About this extraction
This page contains the full source code of the facebook/folly GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 3157 files (23.2 MB), approximately 4.1M tokens, and a symbol index with 13153 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.