GitShow/facebook/folly
facebook

folly

An open-source C++ library developed and used at Facebook.

by facebook
Star on GitHubFork

C++

30.5k stars5.9k forks2.0k contributorsActive · 1h agoSince 2012v2026.08.24.00Apache-2.0

Meet the team

See all 1972 on GitHub →
yfeldblum
yfeldblum2.7k contributions
Orvid
Orvid810 contributions
ot
ot479 contributions
simpkins
simpkins371 contributions
snarkmaster
snarkmaster368 contributions
andriigrynenko
andriigrynenko366 contributions
Gownta
Gownta311 contributions
dmm-fb
dmm-fb303 contributions

Languages

View on GitHub →
C++89.9%
Starlark3.3%
Python3%
CMake2.1%
Rust0.8%
C0.4%
Other0.5%

Commit activity

Last 12 weeks · 475 commits

Full graph →

Community health

4 of 6 standards met

Community profile →
75
✓README✓License✓Contributing✓Code of Conduct○Issue Template○PR Template

Recent PRs & issues

Active · Last activity 1h ago
See all on GitHub →
rootkiller6788
symbolizer: fix DW_AT_specification offset for DW_FORM_ref_addrOpenPR

Summary Fixes #2445. in added to the reference value unconditionally: This is only correct for the CU-relative reference forms (, ), whose values are offsets from the first byte of the compilation unit header. is an absolute offset from the first byte of the section, so adding double-counts. With a large enough the resulting lookup lands past the end of , triggering a in while symbolizing — exactly what the issue reports for GCC 14 binaries. Fix The existing handling in already special-cases (lines 722-725), so this change brings in line with it. Since discards the form, the function now iterates attributes directly to keep both the value and the form: CU-relative references keep the existing behavior; uses the absolute offset directly. I considered the patch suggested in the issue (subtracting inside ), but that makes the generic attribute reader attribute-name-aware and underflows to a huge when . The form check in the consumer is both safer and matches how the codebase already treats . Verification Bug confirmed against current : still unconditionally adds (issue reporter's workaround no longer matches the refactored code). Cross-checked the DWARF spec reference semantics against the existing correct handling of for in . The common path (CU-relative forms) is byte-for-byte the same behavior as before.

rootkiller6788 · 1d ago
afrind
Return to the EventBase loop after an internal event firesOpenPR

Summary: Since libevent 2.0.9, in mode only returns once it has run a callback for an event that is not marked internal. EventBase registers its notification queue as an internal event whenever nothing is holding a keepalive. Delivering a task disarms that queue and leaves the rearm to a loop callback, so if the loop stays parked inside the backend the rearm never runs, and every task queued after that is silently dropped. The internal event dispatch paths now ask the backend to hand control back whenever the callback left loop callbacks behind, and the libevent backend does that by activating a dummy event. Anything older exits as soon as the active queue drains, whichever events ran, so it never had the problem. The gate is a compile-time constant off the libevent version, which makes this a no-op before 2.0.9 — including the 1.4 that fbcode pins, where the new code folds away entirely. Reviewed By: yfeldblum Differential Revision: D116567667

afrind · 3d ago
barracuda156
Build failure on macOS arm64: `Undefined symbols for architecture arm64: "void google::MakeCheckOpValueString<std::nullptr_t>(std::__1::basic_ostream<char, std::__1::char_traits<char>>*, std::nullptr_t const&)"`OpenIssue

Build fails on Apple Silicon: Same error with Apple clang and LLVM clang-22, both locally and on CI.

barracuda156 · 1w ago

Recent fixes

View closed PRs →
AidanGG
Only use acq ordering for MicroSpinLock lockingMergedPR

Only acquire ordering is required here, not acq_rel. Fixes https://github.com/facebook/folly/issues/2389.

AidanGG · 2d ago
DenisYaroshevskiy
folly/Benchmark: bracket perf around the benchmark, not the whole run (#2682)MergedPR

Summary: Human comment: AI said that when it ran topdown, the extra noise from baseline set up and such was substantial. That doesn't seem to be true. But - the diff is still making things cleaner and neater I think. AI comment: The perf guard was constructed one scope too high. built it immediately before calling , so the counting window covered everything that function does -- including the two global empty-loop baselines, flag validation, the banners, and per-row printing. peels the baselines out before applying , so no flag could exclude them. They run under the full / budget: about 2 seconds and 9.8B instructions per run. On a memory-bound benchmark that was 68% of the counted instructions and 66% of the cycles, and it inverted the answer -- AMD topdown reported 32% and 51.9%, because empty tight loops are dispatch-bound. The true figures are ~2% and ~71%. Cache-miss counters were mostly unaffected (0.2%), since empty loops never touch memory, which is why this went unnoticed. Move the guard into the per-benchmark loop, around the measurement dispatch only. The baselines are computed before the loop, so they fall outside for free, and printing stays outside too. Adaptive mode keeps a whole-run guard: it interleaves samples across benchmarks, so there is no contiguous per-benchmark region to bracket. Since perf attaches to the whole process, it can only describe one benchmark, so require the filters to select exactly one. registers an entry that passes the name filters but is not a measurement, so it is excluded from the count and gets no window of its own. Two related fixes: Usage errors were invisible. emits nothing in these binaries -- the pre-existing path exits 1 silently too. Routed the fatals through one helper that writes to . A perf that cannot start now exits 1 with the reason instead of aborting. Combined with the preceding commit, goes from exit 134 to a clear message. without a narrowing now fails instead of silently profiling the whole run. Two callers do this today and will need updating: and . The former parses last-block-wins, so its numbers are already wrong. Reviewed By: yfeldblum Differential Revision: D116315663

DenisYaroshevskiy · 5d ago
arpitjain099
chore: declare contents: read on the OSS build/test workflowMergedPR

is the public OSS CI workflow (push / pull_request / workflow_dispatch). It only checks out the repo and runs the build/test matrix. The six other workflows in this repo already declare permissions; this brings in line.

arpitjain099 · 1w ago
Structured data for AI agents

Repository: facebook/folly. Description: An open-source C++ library developed and used at Facebook. Stars: 30506, Forks: 5863. Primary language: C++. Languages: C++ (89.9%), Starlark (3.3%), Python (3%), CMake (2.1%), Rust (0.8%). License: Apache-2.0. Latest release: v2026.08.24.00 (15h ago). Open PRs: 100, open issues: 362. Last activity: 1h ago. Community health: 75%. Top contributors: yfeldblum, Orvid, ot, simpkins, snarkmaster, andriigrynenko, Gownta, dmm-fb, r-barnes, mzlee and others.

·@ofershap

Replace github.com with gitshow.dev