Skip to content

Releases: anycable/anycable-go

1.5.6

21 Oct 03:29
e0dd6fa
Compare
Choose a tag to compare

Fixed regression in populating some default configuration values introduced in 1.5.5.

[DEPRECATED] 1.5.5

16 Oct 22:02
091ac32
Compare
Choose a tag to compare

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

09 Oct 20:49
07c9b9d
Compare
Choose a tag to compare

Features

  • Added anycable.toml support.

Feel free to store the server configuration in the TOML file. You can generate one (including current settings) using the anycable-go --print-config command.

Misc

  • Upgraded to Go 1.23.

1.5.3

28 Aug 21:40
Compare
Choose a tag to compare

Fixes

  • Fixed potential race condition in Redis pub/sub during reconnect.

1.5.2

04 Jun 17:59
Compare
Choose a tag to compare
  • Added ?raw=1 option for SSE clients to receive only data messages (ignoring all protocol events)

1.5.1

17 Apr 02:49
Compare
Choose a tag to compare
  • Add ?stream, ?signed_stream and ?history_since support for SSE connections.

  • Minor logging improvements

1.5.0

01 Apr 23:52
Compare
Choose a tag to compare

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 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 --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 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.5.0-rc.1

13 Mar 03:06
Compare
Choose a tag to compare
1.5.0-rc.1 Pre-release
Pre-release

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

10 Jan 23:28
Compare
Choose a tag to compare

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

03 Nov 18:44
Compare
Choose a tag to compare

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
  ...