Skip to content

1.5.0-rc.1

Pre-release
Pre-release
Compare
Choose a tag to compare
@palkan palkan released this 13 Mar 03:06

Features

  • Signed and public streams support.

We made signed streams functionality previously available for Hotwire applications (Turbo Streams) generic and available to everyone. Thus, it's now possible to use AnyCable without RPC as a regular pub/sub server with plain channels (but with all other features, like reliability, available 😉).

See docs.

  • New secrets schema.

Now a single secret is enough to secure all AnyCable features; we call it an application secret. You can provide it via the --secret flag or the ANYCABLE_SECRET=<val> env var. It's used as is for JWT and signed streams (unless specific secrets specified) and as a secret base for HTTP RPC and HTTP broadcasting (again, unless specific keys specified).

There is also new --broadast_key (ANYCABLE_BROADCAST_KEY) that is meant to be used to authenticate broadcast actions. Currently, it's only used by HTTP broadcasting (as a replacement for http_broadcast_secret).

  • Public mode.

You can run AnyCable in an insecure mode (at your own risk): no authentication (unless JWT specified), public streams, no HTTP broadcasting authentication. You can enable this move via the --public toggle or by setting ANYCABLE_PUBLIC=true.

It's also possible to partially disable protections via --noauth and --public_streams parameters.

  • Embedding.

AnyCable Go now provides interface that allows you to embed it into existing Go web programs and use its HTTP handlers (for WebSockets, SSE, broadcasting).

See docs.

Changes

  • HTTP broadcasting endpoint is enabled by default.

Depending on security settings (whether the application secret or broadcast key is present), we expose HTTP broadcasting endpoint on the main application port (when secured) or :8090 (when no authentication required, previous behaviour).

  • Multiple configuration parameters name changes (you will see deprecation warning on the server start with instructions on how to migrate)

  • Logging format has changed.

We migrated to Go log/slog package for performance and DX reasons and decided to stick to the default Go log formatting.

See also