文字列から float、double、整数値を高速かつ正確に解析する、from_chars互換のヘッダーオンリーC++ライブラリ。
meta/folly
Meta内部で広く使われている、Boostやstdを補完するFacebook製のオープンソースC++20コアライブラリ。
- スター
- 30,553
- フォーク
- 5,879
- 未解決の Issue
- 487
- 最終コミット
- 昨日
これは何?
Folly(Facebook Open-source Library)は、実用性と効率性を重視して開発されたC++20コンポーネントのコレクションです。標準ライブラリやBoostに必要な機能がない場合や、それらの実装が求めるパフォーマンス要件を満たさない場合に、その不足を補います。各コンポーネントは比較的独立しており、数個のシンボルから大規模なモジュールまでさまざまです。また、Metaの他のオープンソースC++プロジェクトから共通の依存ライブラリとして使われることもよくあります。
Follyは、C++20に対応したgcc、clang、MSVCを対象としています。CMakeによるビルドでは、システム上で見つからない依存関係を取得します。また、getdeps.pyを使えば、Follyと関連プロジェクトをまとめてビルドできます。Linux(x86-32、x86-64、ARM)、iOS、macOS、Windows(x86-64)で動作しますが、CMakeによるビルドがテストされているのは一部のプラットフォームのみです。コミット間のABI互換性は保証されていないため、一時的なprefixに静的ライブラリとしてビルドすることが推奨されています。
新しいコードや不安定なコードはexperimentalディレクトリに置かれており、クライアントでの利用を想定していません。ドキュメントはdocsフォルダにあり、各コンポーネントにはユニットテストが用意されています。
主な機能
- 01標準ライブラリやBoostでは機能が不足する場面に対応するC++20コンポーネントを提供します。
- 02CMakeでビルドでき、不足している依存関係を自動で取得します。
- 03Linux、macOS、Windows、iOS上でgcc、clang、MSVCをサポートします。
- 04Follyと関連プロジェクトをまとめてビルドするgetdeps.pyスクリプトを備えています。
- 05各コンポーネントのユニットテストに加え、googletestとの任意の連携も利用できます。
ユースケース
- 大規模なC++コードベースに、高性能なユーティリティコンポーネントを追加する。
- Metaの他のオープンソースC++ライブラリに依存するC++プロジェクトをビルドする。
- 独自実装のコンテナ、文字列ユーティリティ、同期プリミティブを、テスト済みの代替実装に置き換える。
クイックスタート
- 1
リポジトリをクローンする
git clone https://github.com/facebook/folly - 2
プロジェクトディレクトリに移動する
cd folly - 3
CMakeビルドを設定する(不足している依存関係を取得します)
cmake -B _build - 4
ライブラリをビルドする
cmake --build _build
使う前に知っておきたいこと
- コミット間のABI互換性は保証されないため、静的ライブラリとしてビルドし、バージョンを固定することをおすすめします。
- CMakeビルドは一部のプラットフォームでのみテストされており、最低対象プラットフォームはmacOSとLinuxです。
- Windowsビルドでは多くのテストが無効になっています。
収録されている特集
トピック
よくある質問
- folly とは?
- Meta内部で広く使われている、Boostやstdを補完するFacebook製のオープンソースC++20コアライブラリ。 Folly(Facebook Open-source Library)は、実用性と効率性を重視して開発されたC++20コンポーネントのコレクションです。標準ライブラリやBoostに必要な機能がない場合や、それらの実装が求めるパフォーマンス要件を満たさない場合に、その不足を補います。各コンポーネントは比較的独立しており、数個のシンボルから大規模なモジュールまでさまざまです。また、Metaの他のオープンソースC++プロジェクトから共通の依存ライブラリとして使われることもよくあります。
- folly は無料で使えますか?ライセンスは?
- folly は Apache-2.0 ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
- folly は今もメンテナンスされていますか?
- 活発にメンテナンス中。folly の最終コミットは 2026年11月6日 です。
- folly は何に使えますか?
- 大規模なC++コードベースに、高性能なユーティリティコンポーネントを追加する。 Metaの他のオープンソースC++ライブラリに依存するC++プロジェクトをビルドする。 独自実装のコンテナ、文字列ユーティリティ、同期プリミティブを、テスト済みの代替実装に置き換える。
- folly のインストール方法は?
- リポジトリをクローンする: git clone https://github.com/facebook/folly プロジェクトディレクトリに移動する: cd folly CMakeビルドを設定する(不足している依存関係を取得します): cmake -B _build ライブラリをビルドする: cmake --build _build
- folly はどこで入手できますか?
- ソースコードとインストール手順は GitHub にあります:https://github.com/meta/folly
概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。
関連プロジェクト
ユニットテストに似た構成で、小さなコード片の実行時間を計測するマイクロベンチマーク用C++ライブラリ。
大量のエントリをヒープ上に保持しながらGC負荷を抑える、Go向けの高速な並行処理対応・自動削除型インメモリキャッシュ。
Go向けの高速な並行メモリ制限型キャッシュライブラリ。コストベースの追い出しとTinyLFUによる登録判定に対応。
Node.jsのメインイベントループをブロックせずにCPU負荷の高いタスクを実行できる、キュー、キャンセル、実行時間統計に対応したWorkerスレッドプール。
プリミティブコレクション、オフヒープバッファ、キュー、タイマーホイールなどを備えた、高性能なJavaデータ構造・ユーティリティライブラリ。