Rust で依存 0 の TOML ライブラリをリリースしました。
時雨堂では C++ から Rust へ軸を移し始めています。それに伴い様々なライブラリを Rust で実装してきているのですが、今回は TOML ライブラリを実装して公開しました。
そもそも時雨堂では Rust でアプリを開発する場合は JSONC 形式を採用しています。JSONC はコメントが書けて、末尾カンマを許可する JSON 非互換の形式なのですが便利なので採用しています。また nojson という依存 0 の JSON ライブラリが対応しているというのもあります。
ただ Rust は TOML がメインです。その割にデフォルトライブラリに TOML はありませんし、メジャーな TOML ライブラリは依存がそこそこあります。そこで依存をできるだけ減らした TOML を開発することにしました。
shiguredo/toml-rs
- 依存 0
- TOML v1.0.0 / 1.1.0 対応
- toml-test 対応
- Fuzzing
- 書き換え機能
toml-test というのは TOML 公式が出しているツールで、 TOML ライブラリのためのテストスイートです。これが 100% であれば一応完全互換とはいっていいヤツです。
ファジングをしっかりやって、パニックしないように堅牢性を優先して実装しています。
書き換え機能も要望としてでてきたので追加しました。実装には nojson が位置情報を持っている仕組みをマネして実装しました。いくつかバグがあったのを潰してリリースしています。
https://github.com/shiguredo/toml-rs
まとめ
とにかく依存を少なく少なく自前でライブラリを作るようにしていますが、快適です。依存が少ないとメンテナンスも楽ですし、自前ライブラリだとコントローラブルなのもいいですね。