プロトコル処理の抽象化


miraiのプロトコル処理は大きく、ComposeとValidateの2つのステージに分割されている。そして、プロトコル記述言語は、これら2つの動作を行うC言語ソースコード(または別の中間言語)に変換され、実行される。
Composeは、内部データ構造からエッジデータ構造に変換する。内部データ構造は、プロセッサ内部での処理に適したデータ構造であり、エッジデータ構造は、外部とのデータ交換のために使われる共通のデータ構造ということになる。
Validateは、チェックサムなど通常はプログラムが生成することのないデータを埋めるために使われる。
もし、システムのリソースに制限があるのなら、内部データ構造とエッジデータ構造は同一のものになるかもしれない。既存の言語と比較すると、C言語にはエッジデータ構造と内部データ構造を区別するための仕組みがなく、どちらもstructとして宣言されるに過ぎない。Javaのような言語のclassは純粋に内部データ構造であり、エッジデータ構造を作るためにはバイト列を正確に操作する必要がある。
一般に、シェルスクリプトや通常のプログラミング言語でのプログラミングで退屈なことはエッジデータ構造を正確に作ることと言える。miraiはその部分を完全にOSでサポートし、よりよい並列性を引き出すためのサポートをする。