All Versions
90
Latest Version
Avg Release Cycle
36 days
Latest Release
-

Changelog History
Page 1

  • v4.0.4 Changes

    ๐Ÿš€ This release contains an important fix of Centrifugo memory leak. The leak happens in all setups which use Centrifugo v4.0.2 or v4.0.3.

    ๐Ÿ›  Fixes

    • ๐Ÿ›  Fix goroutine leak on connection close introduced by v4.0.2, commit

    Misc

    • ๐Ÿš€ This release is built with Go 1.19.3
  • v4.0.3 Changes

    ๐Ÿ›  Fixes

    • ๐Ÿ›  Fix insensitive case match for granular proxy headers, #572
  • v4.0.2 Changes

    This release contains one more fix of v4 degradation (not respecting force_push_join_leave option for top-level namespace), comes with updated admin web UI and other improvements.

    ๐Ÿ›  Fixes

    • Handle force_push_join_leave option set for top-level namespace โ€“ it was ignored so join/leave messages were not delivered to clients, commit
    • Properly handle b64data in server publish API, commit

    ๐Ÿ‘Œ Improvements

    • โšก๏ธ Updated admin web UI. It now uses modern React stack, fresh look based on Material UI and several other small improvements. See #566 for more details
    • ๐Ÿ”ง Case-insensitive http proxy header configuration #558
    • ๐Ÿ— Use Alpine 3.16 instead of 3.13 for Docker builds, commit
    • โž• Add missing empty object results to API command responses, commit
    • Disconnect clients in case of inappropriate protocol centrifugal/centrifuge#256

    Misc

    • ๐Ÿš€ This release is built with Go 1.19.2
  • v4.0.1 Changes

    ๐Ÿš€ This release contains an important fix of v4 degradation (proxying user limited channel) and comes with several nice improvements.

    ๐Ÿ›  Fixes

    • Avoid proxying user limited channel #550
    • Look at subscription source to handle token subs change #545

    ๐Ÿ‘Œ Improvements

    • ๐Ÿ”ง Configure server-to-client ping/pong intervals #551, docs
    • Option client_connection_limit to set client connection limit for a single Centrifugo node #546, docs
    • Option api_external to expose API handler on external port #536
    • ๐ŸŽ Use go.uber.org/automaxprocs to set GOMAXPROCS #528, this may help to automatically improve Centrifugo performance when it's running in an environment with cgroup-restricted CPU resources (Docker, Kubernetes).
    • Nats broker: use push format from client protocol v2 #542

    Misc

    • ๐Ÿš€ While working on Centrifuge lib @j178 found a scenario where connection to Redis could leak, this was not observed and reported in Centrifugo outside the test suite, but it seems that theoretically connections to Redis from Centrifugo could leak with time if the network between Centrifugo and Redis is unstable. This release contains an updated Redis engine which eliminates this.
    • ๐Ÿš€ This release is built with Go 1.18.5
  • v4.0.0 Changes

    ๐Ÿ†• New v4 release puts Centrifugo to the next level in terms of client protocol performance, WebSocket fallback simplicity, SDK ecosystem and channel security model. This is a major release with breaking changes according to our Centrifugo v4 roadmap.

    Several important documents we have at this point can help you get started with Centrifugo v4:

    Highlights

    • ๐Ÿ†• New client protocol iteration and unified client SDK API. See client SDK API specification.
    • ๐Ÿ‘€ All SDKs now support all the core features of Centrifugo - see feature matrix
    • ๐Ÿš€ Our own WebSocket bidirectional emulation layer based on HTTP-streaming and SSE (EventSource). Without sticky session requirement for a distributed case. See details in release post and centrifuge-js README
    • ๐Ÿ—„ SockJS is still supported but DEPRECATED
    • ๐Ÿš€ Redesigned, more efficient PING-PONG โ€“ see details in release post
    • ๐Ÿš€ Optimistic subscriptions support (implemented in centrifuge-js only at this point) โ€“ see details in release post
    • ๐Ÿš€ Secure by default channel namespaces โ€“ see details in release post
    • ๐Ÿš€ Private channel and subscription JWT concepts revised โ€“ see details in release post
    • Possibility to enable join/leave, recovery and positioning from the client-side
    • ๐Ÿš€ Experimental HTTP/3 support - see details in release post
    • ๐Ÿš€ Experimental WebTransport support - see details in release post
    • Avoid sending JSON in WebSocket Close frame reason
    • Temporary flag for errors, allows resilient behavior of Subscriptions
    • gensubtoken and checksubtoken helper cli commands as subscription JWT now behaves similar to connection JWT
    • ๐Ÿ‘€ Legacy options removed, some options renamed, see migration guide for details.
    • โšก๏ธ meta attached to a connection now updated upon connection refresh
    • centrifuge-js migrated to Typescript
    • โšก๏ธ The docs on centrifugal.dev were updated for v4, docs for v3 are still there but under version switch widget.
    • Use constant time compare function to compare admin_password and api_key #527

    Misc

    • ๐Ÿš€ This release is built with Go 1.18.4
  • v3.2.3 Changes

    No backwards incompatible changes here.

    ๐Ÿ‘Œ Improvements

    • ๐Ÿ‘Œ Support Debian bullseye DEB package release, drop Debian jessie, #520

    ๐Ÿ›  Fixes

    • ๐Ÿ›  Fix emitting Join message in dynamic server subscribe case (when calling subscribe server API), centrifugal/centrifuge#231.
  • v3.2.2 Changes

    No backwards incompatible changes here.

    ๐Ÿ›  Fixes

    • ๐Ÿ›  Fix top-level granular subscribe and publish proxies #517.

    Misc

    • ๐Ÿš€ This release is built with Go 1.17.11.
  • v3.2.1 Changes

    No backwards incompatible changes here.

    ๐Ÿ‘Œ Improvements

    • ๐Ÿ‘€ Centrifugo now periodically sends anonymous usage information (once in 24 hours). That information is impersonal and does not include sensitive data, passwords, IP addresses, hostnames, etc. Only counters to estimate version and installation size distribution, and feature usage. See implementation in #516. Please do not disable usage stats sending without reason. If you depend on Centrifugo โ€“ sure you are interested in further project improvements. Usage stats help us understand Centrifugo use cases better, concentrate on widely-used features, and be confident we are moving in the right direction. Developing in the dark is hard, and decisions may be non-optimal. See docs for more details.

    Misc

    • ๐Ÿš€ We continue working on Centrifugo v4, look at our v4 roadmap where the latest updates are shared. BTW Centrifugo v3 already has code to work over new protocol which we aim to make default in v4. It's already possible to try out our own bidirectional emulation layer with HTTP-streaming and Eventsource transports. Don't hesitate reaching out if you depend on Centrifugo and want to understand more what's coming in next major release. We are actively collecting feedback at the moment.
    • ๐Ÿš€ This release is built with Go 1.17.10.
  • v3.2.0 Changes

    This release contains backwards incompatible changes in experimental Tarantool engine (see details below).

    ๐Ÿ‘Œ Improvements

    • ๐Ÿ‘Œ Support checking aud and iss JWT claims #496. See more details in docs: aud, iss.
    • ๐Ÿ“„ Channel Publication now has tags field (map[string]string) โ€“ this is a map with arbitrary keys and values which travels with publications. It may help to put some useful info into publication without modifying payload. It can also help to avoid processing payload in some scenarios. Publish and broadcast server APIs got support for setting tags. Though supporting this field throughout our ecosystem (for example expose it in all our client SDKs) may take some time. Server API docs for publish and broadcast commands have been updated.
    • ๐Ÿ‘Œ Support setting user for Redis ACL-based auth, for Redis itself and for Sentinel. See in docs.
    • ๐Ÿ“„ Unidirectional transports now return a per-connection generated session unique string. This unique string attached to a connection on start, in addition to client ID. It allows controlling unidirectional connections using server API. Previously we suggested using client ID for this โ€“ but turns out it's not really a working approach since client ID can be exposed to other users in Publications, presence, join/leave messages. So backend can not distinguish whether user passed its own client ID or not. With session which is not shared at all things work in a more secure manner. Server API docs for subscribe, unsubscribe, disconnect and refresh commands have been updated.
    • ๐Ÿ‘€ Report line and column for JSON config file syntax error โ€“ see #497
    • ๐Ÿ‘Œ Improve performance (less memory allocations) in message broadcast, during WebSocket initial connect and during disconnect.

    ๐Ÿ’ฅ Breaking changes

    • ๐Ÿ’ฅ Breaking change in experimental Tarantool integration. In Centrifugo v3.2.0 we updated code to work with a new version of tarantool-centrifuge. tarantool-centrifuge v0.2.0 has an updated space schema. This means that Centrifugo v3.2.0 will only work with tarantool-centrifuge >= v0.2.0 or rotor >= v0.2.0. We do not provide any migration plan for this update โ€“ spaces in Tarantool must be created from scratch. We continue considering Tarantool integration experimental.

    Misc

    • ๐Ÿš€ This release is built with Go 1.17.9.
    • ๐Ÿ‘ We continue working on client protocol v2. Centrifugo v3.2.0 includes more parts of it and includes experimental bidirectional emulation support. More details in #515.
    • Check out our progress regarding Centrifugo v4 in #500.
    • ๐Ÿ†• New community-driven Centrifugo server API library Centrifugo.AspNetCore for ASP.NET Core released.
  • v3.1.1 Changes

    No backwards incompatible changes here.

    ๐Ÿ‘Œ Improvements:

    • ๐ŸŽ Massive JSON client protocol performance improvements in decoding multiple commands in a single frame. See #215 for details.
    • ๐ŸŽ General JSON client protocol performance improvements for unmarshalling messages (~8-10% according to #215)
    • Subscribe proxy can now proxy custom data from a client passed in a subscribe command.

    ๐Ÿš€ This release is built with Go 1.17.4.