2.0.0-pre.2 has been released!
The second pre-release version of Gun 2.0 has been released! Gun 2.0 adds a ton of features along with a small number of breaking changes.
The main highlight of this pre-release is the support for a pluggable cookie store mechanism. Gun 2.0 comes with a cookie store engine that can automatically process cookies and store them to and retrieve them from a pluggable backend.
Gun 2.0 comes with the
gun_cookies_list backend which can be enabled via the new
cookie_store option. This backend will keep cookies in-memory on a per-connection basis and without any persistence built-in. It should however be easy to create a backend on top of this one to add persistence or share the cookie store backend between multiple connections should that be necessary.
The cookie store engine implements the RFC6265bis draft that will become a proper RFC in the nearby future and includes all the most recent improvements to cookies that modern browsers have implemented. Gun is not a browser however so some features were skipped (at least for now): there is no support for setting cookies from the Erlang side; and there is no SameSite checks because Gun does not have a concept of a "browsing context".
Please consult the announcement for the first pre-release for information about other Gun 2.0 features.
Gun 2.0 currently requires Erlang/OTP 22 or above and is tested and supported on Linux, FreeBSD, macOS and Windows.
A complete list of changes can be found in the migration guide: Migrating from Gun 1.3 to 2.0.
I will have more free time available for consulting or for paid open source development starting from next week. If you are interested, drop me an email at [email protected]. A feature that may be useful for some of you could be for example an implementation for the "Happy Eyeballs" mechanism (RFC 8305) as this would allow faster connections to servers on dual IPv4 and IPv6 environments.
You can donate to this project via GitHub Sponsors. These funds are used to pay for additional servers for testing.
As usual, feedback is appreciated, and issues or questions should be sent via Github tickets. Thanks!