移植可能なスタンドアロンの C ライブラリとデータ構造。 (C99)
各フォルダーはスタンドアロンであり、その中に 1 つのヘッダーとソースのペアが含まれています。ありません
ライブラリ用にビルドする場合は、必要なファイルをコピーするだけです。
たとえば、ロガーが必要な場合は、sc_log.h と sc_log.c をプロジェクトにコピーします。
Linux では 100% のブランチ カバレッジがあり、CI は Linux 上で実行されます。
OS : Linux、MacOS、FreeBSD、Windows コンパイラ : GCC、Clang、MSVC Arch : x64、aarch64、armv6(32 ビット)、armv7(32 ビット)、ppc64le、s390x(ビッグエンディアン)、riscv64 サニタイザー : valgrind および Clang/gcc サニタイザー (アドレス、未定義、スレッド)
| 図書館 | 説明 |
|---|---|
| 配列 | 一般的な配列/ベクトル |
| バッファ | 変数のエンコード/デコード用のバッファ。プロトコル/シリアル化の実装に最適 |
| 状態 | Posix および Windows の条件ラッパー |
| crc32 | Crc32c、利用可能な場合は crc32c CPU 命令を使用します |
| ヒープ | 最大ヒープ/優先キューとしても使用できる最小ヒープ |
| イニ | イニパーサー |
| リンクされたリスト | 侵入的なリンクリスト |
| ロガー | ロガー |
| 地図 | 高性能のオープン アドレス指定ハッシュマップ |
| メモリマップ | Posix および Windows 用の Mmap ラッパー |
| ミューテックス | Posix および Windows 用の Mutex ラッパー |
| オプション | コマンドライン引数パーサー。非常に基本的なもの |
| パフォーマンス | perf_event_open() 経由でパフォーマンス カウンター情報を取得するベンチマーク ユーティリティ |
| 列 | デキュー/スタック/リストとしても使用できる汎用キュー |
| sc | ユーティリティ関数 |
| 信号 | シグナルセーフな snprintf およびシグナルハンドラー (CTRL+C の処理、クラッシュ時のバックトレースの出力など) |
| ソケット | パイプ / tcp ソケット (unix ドメイン ソケットも) /Epoll/Kqueue/WSAPoll (Posix および Windows 用) |
| 弦 | 長さが接頭辞として付けられ、NULL で終了する C 文字列。 |
| 糸 | Posix および Windows 用のスレッド ラッパー。 |
| 時間 | Posix および Windows の時刻およびスリープ関数 |
| タイマー | 高速ポーリング/キャンセル操作を備えたハッシュ タイミング ホイールの実装 |
| ウリ | 基本的な URI パーサー |
ライブラリ X よりも優れたものはありますか?
私は、高パフォーマンスのサーバー側アプリケーションにこれらのライブラリをよく使用します。また、
私はコードが読みやすくデバッグしやすいことを重視しています。要約すると、これらのライブラリは次のことを示します
パフォーマンス/APIデザイン/読みやすさに関する私の好み(トレードオフ)。あなたはそうかもしれないし、かもしれない
それは好きではありません。
使いやすくするために、X の API を変更してみてはいかがでしょうか?
プル リクエストを送信してください。ただし、未定義のものを導入しないようにしてください。
行動。特に汎用ライブラリに対して、より優れた API を提供することが可能です。
未定義の動作を気にしない場合。それを避けようとします。
これらのライブラリを使用する最も効率的な方法は何ですか?
他のコードと同じように。ソースファイルとしてプロジェクトに追加し、理想的には使用します
-O3 -flto + PGO。ただし、あなたのユースケースでは何の違いもないかもしれません。
ライブラリ X は何かの製品で使用されていますか?
本番環境ではいくつかのライブラリが使用されていますが、常に自分でテストしてください。
リリースはありますか?
masterブランチをご利用ください。安定していると考えられます。
API の安定性を維持しますか?
安定した API を期待しないでください。これらのライブラリは非常に優れています
小さく (ほとんどのコードは数百行未満です)、理想的には
コードを読んでその動作を理解し、それをあなたの環境に適応させることになっています。
ニーズ。したがって、ライブラリをやみくもに更新しないでください。あなたが対処してくれることを期待しています
考えられる API の違いを簡単に確認できます。そうは言っても、維持できるように頑張ります
APIは安定しています。