protocolbuffers/protobuf
10 articles
前提知識
- ›Protocol Buffers がシリアライゼーションフォーマットとして何であるか、その目的についての基本的な理解
Protobuf モノレポを読み解く:アーキテクチャとディレクトリ構成ガイド
デュアルワールドアーキテクチャ、ディレクトリ構成、コンパイルパイプライン、各言語ランタイム、ビルドシステムなど、protobuf モノレポの全体像を俯瞰するガイドです。
Protocol Buffers ソースコード:全体像を把握する
protobuf モノレポの三層アーキテクチャ、デュアルランタイム戦略、ディレクトリ構成、そして protoc のエントリーポイントを俯瞰するガイド。
protoc の内部構造:.proto ファイルからコード生成まで
protoc コンパイラの内部を深掘りする:字句解析、構文解析、ディスクリプタ構築、そしてコードジェネレーター/プラグインのディスパッチシステム。
protoc の内側:.proto ファイルから型安全なコードへ
protoc のコンパイルパイプラインを深く掘り下げます:tokenizer、parser、DescriptorPool、CodeGenerator インターフェース、そしてプラグインプロトコルまで。
ディスクリプタシステムとメッセージ階層:Protobufの型ユニバース
Protobufの中核をなす型システムを深掘りします。Descriptor階層、DescriptorPoolの内部実装、Messageクラス階層、DynamicMessage、Reflection API、そしてEditionsシステムについて解説します。
C++ ランタイム:メッセージ、リフレクション、Arena アロケーション
C++ ランタイムの詳細解説:MessageLite/Message 階層、PROTOBUF_CUSTOM_VTABLE、DynamicMessage、そして三層構造の Arena システム。
高性能シリアライゼーション:アリーナアロケーションとテールコールテーブルパーシング
protobuf のパフォーマンス最重要内部実装に迫る:ゼロコピー I/O、アリーナアロケーション、そして TcTable テールコールパーシングシステム。
μpb: Python・Ruby・PHPを支える軽量Cランタイム
μpbのアーキテクチャを解説:コンパクトなスキーマ表現MiniTable、アリーナフュージング、upb_Messageの構造、そしてPython・Ruby・PHPへの言語バインディング。
Rust インテグレーションと C++ コードジェネレーター:コード生成パターンの研究
コード生成パターンの探求:Rust のデュアルカーネル・プロキシベース API、C++ ジェネレーターのフィールド型に対するストラテジーパターン、そして upb 上の新しい C++ API である HPB について解説します。
適合性テストとCI:10以上の言語実装を同期させる仕組み
適合性テスト、失敗リスト管理、CIインフラを通じて、protobufが10以上の言語実装にわたる正確性をどのように維持しているかを解説します。