にっき

技術的な話題はないです

Izanami を公開しました

先程 izanami というクレートを crates.io に公開したので端的に紹介しておきます。

Izanami プロジェクトの概要

github.com

立ち位置としては、hyper をもう少しだけユーザよりにラップした Web サーバと、テスト用のツール群をまとめたものです。元々 tsukuyomi という自作の Web フレームワーク内部で持っていた Web サーバの実装を、(可能な限り)汎用性を持たせた上で独立したプロジェクトとして切り出したいという意図があり作ったものです。

イザナミという名称にした理由は、将来的に Hyper や Tower が成熟することでライブラリとしての有用性がなくなり、開発が停止する可能性が高いという悲観的観測をカグツチを産むことで死に至ることに掛けた、という意図は特に無く、単に日本神話っぽい名前をつけたかったからです(正直「死ぬ」以外の共通点が無いですが)。

izanami

メインのクレートであり、HTTPサーバとテスト用のユーティリを提供しています。HTTP サーバは基本的に hyper::Server を直接呼び出すようにしていますが、TLSUnix domain socket への対応が追加されています。

let tls_acceptor: native_tls::TlsAcceptor = ...;

let addr: SocketAddr = "127.0.0.1:4000".parse()?;
Server::bind_tcp(&addr)
    .acceptor(tls_acceptor)
    .start(make_service)

izanami-service

(HTTP) サービスを抽象化するためのトレイトを定義するクレートで、基本的には tower_service::Service の再エクスポートです。actix-serviceactix-netが内部で使用しているサービス抽象のためのクレート)のようにコンビネータを提供する予定は今の所なく、基本的には tower が正式にリリースされるまでの緩衝材として機能させることを意図しています。

https://docs.rs/actix-service/0.1.5/actix_service/

izanami-http

izanami 内で用いられている抽象化のためのコンポーネントのうち、Service 以外の雑多なものをまとめたクレートです。

今後の展望

まずは自作の Web フレームワークたちに適用しつつ、wg-net の動向を観察しながら地道に開発していこうと思います。