Izanami を公開しました
先程 izanami というクレートを crates.io に公開したので端的に紹介しておきます。
Izanami プロジェクトの概要
立ち位置としては、hyper
をもう少しだけユーザよりにラップした Web サーバと、テスト用のツール群をまとめたものです。元々 tsukuyomi
という自作の Web フレームワーク内部で持っていた Web サーバの実装を、(可能な限り)汎用性を持たせた上で独立したプロジェクトとして切り出したいという意図があり作ったものです。
イザナミという名称にした理由は、将来的に Hyper や Tower が成熟することでライブラリとしての有用性がなくなり、開発が停止する可能性が高いという悲観的観測をカグツチを産むことで死に至ることに掛けた、という意図は特に無く、単に日本神話っぽい名前をつけたかったからです(正直「死ぬ」以外の共通点が無いですが)。
izanami
メインのクレートであり、HTTPサーバとテスト用のユーティリを提供しています。HTTP サーバは基本的に hyper::Server
を直接呼び出すようにしていますが、TLS や Unix 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-service
(actix-net
が内部で使用しているサービス抽象のためのクレート)のようにコンビネータを提供する予定は今の所なく、基本的には tower
が正式にリリースされるまでの緩衝材として機能させることを意図しています。
https://docs.rs/actix-service/0.1.5/actix_service/
izanami-http
izanami
内で用いられている抽象化のためのコンポーネントのうち、Service
以外の雑多なものをまとめたクレートです。
今後の展望
まずは自作の Web フレームワークたちに適用しつつ、wg-net の動向を観察しながら地道に開発していこうと思います。