Back to blog

Rama 0.3.0-alpha.2

The second Rama 0.3 alpha continues the work on crypto, ACME, connection pooling and more deliberate HTTP version handling.

Rama 0.3.0-alpha.2 - crypto, ACME and steadier connections

The second 0.3 alpha is less about one dramatic feature and more about responsibility.

If Rama is to be used for real clients, servers and proxies, it needs to handle the practical work around certificates, cryptographic building blocks, connection reuse, protocol negotiation and the sharp edges that appear when these pieces meet.

The full release and changelog are here: https://github.com/plabayo/rama/releases/tag/rama-0.3.0-alpha.2.

What changed

Rama now ships native ACME client support through the new rama-acme crate. That includes working HTTP and TLS challenge examples, because certificate automation is only useful when people can actually wire it into their systems.

This builds on the new rama-crypto crate, which introduces JOSE support for JWS, JWK and JWA. It is a foundation more than a finish line, but foundations matter. Crypto code should not be sprinkled through the project as an afterthought.

The client connection pool was improved with metrics support, round-robin reuse and idle connection cleanup. These are not glamorous features, but they are exactly the kind of details that decide whether infrastructure behaves well after running for a while.

HTTP version control also became more explicit through TargetHttpVersion and HttpVersionAdapter.

Important

0.3.0-alpha.1 introduced a breaking change in HTTP version negotiation. If you use TLS with ALPN or similar logic, make sure both HttpsAlpnModifier and HttpVersionAdapter are configured. The examples are the best place to check the intended shape.

Beyond that, WebSocket support is now integrated into the fingerprinting service, early anti-bot examples were added for infinite resources and zip bombs, Safari user-agent parsing was fixed, Datastar SSE reached compliance with the v1.0.0 test suite, HTTP proxy CONNECT response headers are exposed, and SOCKS5 examples handle ALPN better.

The Header trait was also split. That is a breaking change, but one made for usability.

Intent

Alpha releases are where we still allow the design to move. Not randomly, and not for sport, but because production use teaches things that design documents do not.

This release tightens parts of Rama that sit close to operational trust: certificates, pooling, protocol selection, fingerprinting and defensive examples. The goal is not merely to add features. The goal is to make the common hard things less mysterious and less duplicated across every user project.

Looking ahead

The 0.3 line will keep moving in focused steps. Some changes will remain mechanical, some will be API-level, and some will be the result of partners and users showing us where the current shape does not yet fit.

That feedback is welcome. Especially during alpha work.

Community and support

If you are testing Rama, please open issues for rough edges and regressions. If you are using it in production or evaluating it for a larger system, we would like to hear what you need from it.

You can sponsor Rama, contribute code or examples, or reach us at partner@ramaproxy.org for support contracts, integration help and custom feature development.

Be empowered. Be the change.