Cro::HTTP と Text::CSV をバンドルした mutsu 0.21.0 が出た。

こんな感じで、簡単に HTTP server が起動できる。熱い。

use Cro::HTTP::Router;
use Cro::HTTP::Server;

my $application = route {
    get -> {
        content 'text/plain', "Hello, world from mutsu!\n";
    }
    get -> 'greet', $name {
        content 'text/plain', "Hello, $name!\n";
    }
};

my Cro::Service $service = Cro::HTTP::Server.new(
    :host<localhost>, :port<20000>, :$application
);
$service.start;
say "Started server at http://localhost:20000/";

react {
    whenever signal(SIGINT) {
        $service.stop;
        exit;
    }
}

Cro::HTTP の動作には諸々の非同期関連がうまく動く必要があって。。。 非同期周りはもともと結構挙動が怪しかったので、claude ぶんまわしまくって 2週間ぐらいかかってしまった。

そうこうしてるうちに Text::CSV まで bundle されている。

Published: 2026-08-13(Thu) 15:12