Folly, an open-source C++ library developed by Facebook, aims to enhance performance in C++17 applications. It serves as a foundational library for various Facebook projects, offering core components for high-performance computing.
Recent development efforts have concentrated on improving cross-platform build stability and addressing compatibility issues, particularly on Windows and macOS. This focus is evident from multiple pull requests and issues related to build failures and platform-specific challenges.
The recent issues and pull requests indicate a concerted effort to address build-related problems across different platforms. Notable issues include #2285 concerning Windows build errors with CMake, and #2266 regarding macOS 10.15 build failures. These issues highlight ongoing challenges in maintaining cross-platform compatibility.
The development team has been actively engaged in resolving these issues, with notable contributions from members like Alexey Spiridonov, who improved coroutine tests, and Neil Mitchell, who updated Rust version support. Other key activities include Jay Feldblum's improvements to CMake builds and Simon Krueger's implementation of fast_float for string-to-float conversion.
buck2_client_ctx
.folly::align_ceil
.Cargo.toml
for derive-more upgrade.AsyncGenerator
symmetric transfer tests.Cross-Platform Build Issues: Persistent challenges with building Folly on Windows and macOS platforms suggest a need for enhanced documentation or dependency management tools.
Frequent Reverts: The number of reverts indicates a responsive approach to maintaining code stability but also suggests potential gaps in pre-release testing.
SIMD Optimization Efforts: PRs focused on SIMD operations reflect a commitment to performance enhancements crucial for high-performance applications.
Community Engagement: Active discussions around issues and pull requests demonstrate strong community involvement, essential for troubleshooting and feature development.
Older Unresolved Pull Requests: Some older PRs remain open without resolution, indicating possible bottlenecks in the review process that could impact project momentum.
Timespan | Opened | Closed | Comments | Labeled | Milestones |
---|---|---|---|---|---|
7 Days | 1 | 0 | 0 | 1 | 1 |
30 Days | 6 | 7 | 7 | 6 | 1 |
90 Days | 23 | 48 | 33 | 23 | 1 |
1 Year | 75 | 70 | 124 | 75 | 1 |
All Time | 1129 | 823 | - | - | - |
Like all software activity quantification, these numbers are imperfect but sometimes useful. Comments, Labels, and Milestones refer to those issues opened in the timespan in question.
Developer | Avatar | Branches | PRs | Commits | Files | Changes |
---|---|---|---|---|---|---|
Simon Krueger | 1 | 0/0/0 | 6 | 11 | 1969 | |
Jay Feldblum | 1 | 0/0/0 | 28 | 35 | 1424 | |
Denis Yaroshevskiy | 1 | 5/0/4 | 10 | 43 | 837 | |
Michael Z. Lee | 1 | 0/0/0 | 2 | 1 | 740 | |
Kenny Yu | 1 | 0/0/0 | 1 | 3 | 579 | |
Nitin Garg | 1 | 0/0/0 | 1 | 3 | 579 | |
Alexey Spiridonov | 1 | 0/0/0 | 5 | 6 | 403 | |
Giuseppe Ottaviano | 1 | 0/0/0 | 3 | 5 | 326 | |
Aaryaman Sagar | 1 | 0/0/0 | 3 | 5 | 300 | |
generatedunixname89002005232357 | 1 | 0/0/0 | 2 | 7 | 173 | |
Ioan Budea | 1 | 0/0/0 | 1 | 4 | 133 | |
Jakob Degen | 1 | 0/0/0 | 2 | 3 | 109 | |
Nicholas Ormrod | 1 | 0/0/0 | 9 | 33 | 106 | |
Joe Quanaim | 1 | 0/0/0 | 1 | 2 | 79 | |
Open Source Bot | 1 | 0/0/0 | 2 | 1 | 60 | |
Chris Hawley | 1 | 0/0/0 | 1 | 2 | 56 | |
Máté Szabó | 1 | 4/0/2 | 2 | 6 | 56 | |
Neil Mitchell | 1 | 0/0/0 | 4 | 4 | 49 | |
Orvid King | 1 | 0/0/0 | 2 | 6 | 33 | |
Sotirios Delimanolis | 1 | 0/0/0 | 1 | 4 | 25 | |
Miro Bucko | 1 | 0/0/0 | 1 | 1 | 18 | |
Scott Smith | 1 | 0/0/0 | 2 | 2 | 11 | |
Adam Singer | 1 | 0/0/0 | 1 | 2 | 11 | |
Alper | 1 | 0/0/0 | 1 | 1 | 9 | |
Alper Yoney | 1 | 0/0/0 | 1 | 1 | 9 | |
you | 1 | 0/0/1 | 1 | 1 | 8 | |
Victor Zverovich | 1 | 0/0/0 | 1 | 1 | 7 | |
Adam Cantrowitz | 1 | 0/0/0 | 1 | 1 | 7 | |
David W | 1 | 0/0/0 | 1 | 1 | 6 | |
Lev1ty | 1 | 0/0/0 | 1 | 1 | 5 | |
Yashwant Singh | 1 | 1/0/1 | 1 | 2 | 4 | |
Anton Raiev | 1 | 0/0/0 | 1 | 1 | 4 | |
Yaohui Chen | 1 | 0/0/0 | 1 | 1 | 3 | |
Cedric Perthuis | 1 | 0/0/0 | 1 | 1 | 3 | |
Ben Rogers | 1 | 0/0/0 | 1 | 1 | 2 | |
Dmitry Ilvokhin | 1 | 0/0/0 | 1 | 2 | 2 | |
Alexey Kozhevnikov | 1 | 0/0/0 | 1 | 1 | 2 | |
Cameron Pickett | 1 | 0/0/0 | 1 | 1 | 2 | |
David Tolnay | 1 | 0/0/0 | 1 | 1 | 2 | |
Sofie Graham | 1 | 0/0/0 | 1 | 1 | 2 | |
Eric Griffith | 1 | 0/0/0 | 1 | 1 | 2 | |
Josef Svenningsson | 1 | 0/0/0 | 1 | 1 | 2 | |
Ezgi Cicek | 1 | 0/0/0 | 1 | 1 | 1 | |
Yufei Yuan | 1 | 0/0/0 | 1 | 1 | 1 | |
Noah Yao | 1 | 2/0/2 | 1 | 1 | 1 | |
Ayberk Kanberoglu | 1 | 0/0/0 | 1 | 1 | 1 | |
mhx (mhx) | 0 | 0/0/3 | 0 | 0 | 0 | |
Kefu Chai (tchaikov) | 0 | 0/0/1 | 0 | 0 | 0 | |
None (namanahuja) | 0 | 0/0/1 | 0 | 0 | 0 |
PRs: created by that dev and opened/merged/closed-unmerged during the period
The Facebook Folly project currently has 306 open issues on GitHub, with recent activity indicating a mix of bug reports, feature requests, and build-related problems. Notably, several issues are related to build failures across different platforms, particularly concerning compatibility with various compilers and operating systems.
A recurring theme among the issues is the difficulty in building Folly on specific environments, such as Windows and macOS, often due to missing dependencies or compatibility problems with libraries like OpenSSL and Boost. Additionally, there are multiple reports of segmentation faults and undefined references during compilation, which may indicate underlying stability issues within the library's codebase.
Issue #2285: build on windows error for cmake Evaluation file to be written multiple times with different content
Issue #2281: fbcode_builder should be synced to the mcrouter repo
Issue #2280: Potential Issue in SharedMutex Implementation
Issue #2266: Build fails on macOS 10.15
Issue #2264: build from source failed on win11
Issue #2280 (Updated): Potential Issue in SharedMutex Implementation
Issue #2266 (Updated): Build fails on macOS 10.15
Issue #2264 (Updated): build from source failed on win11
Overall, while Folly is a powerful library with broad functionality, its current state reflects ongoing challenges in maintaining compatibility and stability across diverse environments.
The analysis of the pull requests (PRs) from the Facebook Folly project reveals a total of 92 open PRs and 1021 closed PRs. The recent activity indicates a focus on improving build configurations, enhancing compatibility with various platforms, and addressing deprecation warnings in CI workflows.
PR #2284: Fix actions/upload-artifact deprecation
Created 6 days ago, this PR addresses the deprecation of actions/upload-artifact
version 3, migrating to version 4 to ensure continued support beyond November 2024. It includes updates to multiple workflow files.
PR #2282: Add missing scaffolding to mcrouter manifest
Created 8 days ago, this PR adds necessary scaffolding to the mcrouter manifest, ensuring proper recognition as a Meta first-party project. It is linked to resolving issue #2281.
PR #2279: folly simd-friendly
Created 16 days ago, this PR extracts common "simd-friendly" type helpers into a utility. It has been exported from Phabricator and is significant for SIMD operations.
PR #2204: Optimize crc32 & crc32c on NVIDIA Grace
Created 105 days ago, this PR introduces hardware-accelerated routines for CRC32 and CRC32C hashes on Arm AARCH64 CPUs, enhancing performance on NVIDIA Grace architecture.
PR #2124: AsyncFdSocket.h: fix for macOS < 11
Created 230 days ago, this PR fixes compatibility issues for macOS versions below 11, addressing specific breakages that affect multiple macOS releases.
PR #2275: migrate simdForEach #2: remove unroll step
Created 23 days ago, this PR simplifies the simdForEach
implementation by removing unnecessary unrolling steps.
PR #2260: Build folly OSS CI on arm64/linux too
Created 43 days ago, this PR ensures that Folly builds correctly on arm64 architecture using GitHub Actions, aiming to prevent future breakages.
PR #2228: Add more files to shim
Created 85 days ago, this PR adds recently introduced files to the fbsource for proper buck build integration.
PR #2225: Update headers for folly-config.h path
Created 86 days ago, this PR updates header paths necessary for building fizz.
PR #2181: airstore next: bundle V4: thrift working in OSS build
Created 125 days ago, this PR integrates Thrift support into the OSS client build for Airstore.
The recent pull requests reflect several key themes and areas of focus within the Folly project:
A significant number of open pull requests are aimed at ensuring compatibility with newer versions of dependencies and addressing deprecations in GitHub Actions workflows. For instance, PRs like #2284 and #2181 demonstrate an ongoing effort to keep the build process aligned with current standards and practices while maintaining functionality across various platforms.
Several pull requests focus on optimizing performance, particularly regarding SIMD operations (#2279) and hardware acceleration for CRC calculations (#2204). These enhancements are crucial as they directly impact the efficiency of applications built on top of Folly, especially in high-performance computing environments or applications requiring extensive data processing.
The project continues to enhance its cross-platform capabilities with pull requests like #2124 (macOS compatibility) and #2260 (support for arm64). This commitment is vital given the diverse environments in which Folly is expected to operate, including various Linux distributions and macOS versions.
The volume of recent contributions suggests an active community engagement with ongoing discussions around proposed changes. Notably, many pull requests are linked to internal discussions or issues raised within the community (e.g., linking back to specific issues like #2281). This indicates a collaborative environment where contributors are responsive to feedback and actively work towards resolving outstanding issues.
While there is a healthy flow of contributions, some older pull requests remain open without significant activity or resolution (e.g., PRs over 200 days old). This could indicate potential bottlenecks in the review process or a need for clearer prioritization within the development team. Additionally, there are instances where contributors have had to address compiler-specific issues (e.g., GCC warnings), which may require ongoing attention as compilers evolve.
In conclusion, the current state of pull requests in the Folly project highlights a proactive approach towards maintaining compatibility, optimizing performance, and fostering community involvement. However, attention should be paid to older unresolved requests to ensure that they do not hinder overall project progress.
Alexey Spiridonov
AsyncGenerator
symmetric transfer tests.ExtendedCoroutinePromise
interface.Cameron Pickett (capickett)
Neil Mitchell (ndmitchell)
Cargo.toml
for derive-more upgrade.Jay Feldblum (yfeldblum)
Cedric Perthuis
folly::align_ceil
.Aaryaman Sagar
David Tolnay
buck2_client_ctx
.Adam Singer (adam-singer)
Simon Krueger (skrueger)
Jakob Degen (JakobDegen)
Ioan Budea
Alper Yoney
iobuf_from_memoryview()
.DenisYaroshevskiy
The development team is engaged in continuous improvement of the Folly library, focusing on performance enhancements, testing robustness, and cross-platform compatibility. The collaborative environment fosters quick resolution of issues while maintaining high code quality standards through peer reviews and shared contributions.