Releases: anycable/anycable-go
1.5.6
[DEPRECATED] 1.5.5
Depracated: There was a bug in populating some default configuration values. Upgrade to 1.5.6.
Fixes
- Fixed configuration sources precedence (TOML < ENV < CLI).
1.5.4
1.5.3
1.5.2
1.5.1
1.5.0
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 😉).
This feature also comes with the initial support for client-initiated broadcasts, or whispers.
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 theANYCABLE_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
--broadcast_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 forhttp_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 settingANYCABLE_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
1.5.0-rc.1
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
1.4.8
Features
- Added
--redis_disable_cache
flag to disable client-side caching for Redis clients.
Use this flag if your provider doesn't support CLIENT TRACKING
.
1.4.7
Features
- Added NATS-based broker.
This broker uses JetStream under the hood (so you MUST enable it on your NATS server):
$ anycable-go --broker=nats --nats_servers=nats://localhost:4222
INFO 2023-10-28T00:57:53.937Z context=main Starting AnyCable 1.4.6-c31c153 (with mruby 1.2.0 (2015-11-17)) (pid: 29874, open file limit: 122880, gomaxprocs: 8)
INFO 2023-10-28T00:57:53.937Z context=main Starting NATS broker: nats://localhost:4222 (history limit: 100, history ttl: 300s, sessions ttl: 300s)
Embedded NATS is also supported:
$ anycable-go --embed_nats --broker=nats
INFO 2023-10-28T00:59:01.177Z context=main Starting AnyCable 1.4.6-c31c153 (with mruby 1.2.0 (2015-11-17)) (pid: 30693, open file limit: 122880, gomaxprocs: 8)
INFO 2023-10-28T00:59:01.177Z context=main Starting NATS broker: nats://127.0.0.1:4222 (history limit: 100, history ttl: 300s, sessions ttl: 300s)
INFO 2023-10-28T00:59:01.205Z context=main Embedded NATS server started: nats://127.0.0.1:4222
...