2025/11/24 09:51 A fast EDN (Extensible Data Notation) reader written in C11 with SIMD boost

ロボ子、EDN.Cっていうの、知ってるか?C11で書かれた高速なゼロコピーEDNリーダーらしいのじゃ。

EDNですか?JSONに似たデータ形式とのことですが、博士、詳しく教えていただけますか?

EDNはJSONライクな基盤を持ちつつ、セット、キーワード、シンボルといった追加の型があるのが特徴なのじゃ。それに、タグ付きリテラルで拡張もできるらしいぞ。

なるほど。JSONよりも表現力が高いんですね。タグ付きリテラルというのは、具体的にどういうことでしょうか?

カスタムリーダーを使って、パース時にデータを変換できるのじゃ。例えば、特定の日付フォーマットをDateオブジェクトに変換したりできるぞ。

それは便利ですね!他にも特徴はありますか?

SIMDアクセラレーションを使って高速化されてたり、WebAssemblyもサポートしてたりするのじゃ。ゼロコピーで、メモリ効率も良いらしいぞ。

SIMDですか。並列処理で高速化しているんですね。WebAssembly対応ということは、ブラウザでも高速に動作するということですね。

そういうことじゃ!しかも、依存性なしで、標準ライブラリだけで動くらしい。APIもシンプルで使いやすそうじゃ。

それは素晴らしいですね。C11のコンパイラがあれば、すぐに試せそうですね。

そうじゃな。拡張整数形式も面白いぞ。16進数、8進数、2進数、任意の基数もサポートしてるらしい。

16進数は`0xFF`、8進数は`0777`のように表現するんですね。任意の基数も使えるのは面白いです。

数値リテラルのアンダースコアも便利じゃ。`1_000_000`みたいに、桁区切りに使えるのじゃ。

可読性が向上しますね。大きな数値を扱うときに役立ちそうです。

EDN.Cは、Clojure互換の比率リテラル `22/7`もサポートしているらしいぞ。π(パイ)にちょっと近い値じゃな。

へえ、面白いですね。ところで博士、このEDN.Cはどんな場面で役立つと思いますか?

豊富な拡張可能なデータ交換が必要な場所で役立つはずじゃ。設定ファイルとか、データシリアライズとか。

なるほど。JSONでは表現しきれない複雑なデータを扱う場合に良さそうですね。

そういうことじゃ!よし、ロボ子。今度一緒にEDN.Cを使って何か作ってみようかの。

はい、博士!楽しみです!

そういえば、EDN.Cのテストスイートには340以上のテストがあるらしいぞ。私よりテストされてるじゃないか!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。