Rustに入門してMemcached互換サーバを書いた
前々から積んでいた本を読んでついにRustへ入門。 async,awaitが安定したらやりますと宣言していたため…
まず最初に読んだのがRust Bookと呼ばれるこの資料。 構文については一通り理解できるが、これを読んだだけでは全くコードは書けないなと感じる。
https://doc.rust-jp.rs/book-ja/
そして読んだ本は自転車の本。 メモリレイアウトを中心に所有権を解説していて非常に分かりやすい。
https://www.amazon.co.jp/dp/4297105594
別言語だが、NimのAtomic ReferenceとLifetimeについての解説が非常に分かりやすいので、理解を深める手助けになったように感じる。 Rustのような構文を導入しなくとも、同様の仕組みは導入できる可能性もあるのか。
https://nim-lang.org/blog/2020/10/15/introduction-to-arc-orc-in-nim.html
そしてmemcachedの互換サーバを実装。 まずはASCIIプロトコル。
- コード: https://github.com/kamijin-fanta/rust-sandbox-memcached/blob/master/binary/src/main.rs
- 仕様: https://github.com/memcached/memcached/blob/master/doc/protocol.txt
ベンチマークを走らせたかったので、パフォーマンスが良いBinaryプロトコル版も実装。 こちらはTTL等も対応。
- コード: https://github.com/kamijin-fanta/rust-sandbox-memcached/blob/master/ascii/src/main.rs
- 仕様: https://github.com/memcached/memcached/wiki/BinaryProtocolRevamped
機能が少ないので比較対象にはならないが、memcachedより少し高いくらいの性能が出たので満足。