移植可能なスタンドアロンの 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は安定しています。