Releases: indigo-web/indigo
Releases · indigo-web/indigo
v0.17.3.1 (hotfix)
v0.17.3
Final v0.17.3 release version.
Changes:
- improved code coverage
- updated form: now selectors
Name()andFile()return the first matching entry. An iterator over all matching entries is now returned by selectorsNames()andFiles() - added safeguards, so stopping the server approximately simultaneously from multiple callsites won't result in being stuck forever
Full Changelog: v0.17.2...v0.17.3
v0.17.3-rc1
What's Changed
First release-candidate for v0.17.3. It introduces better codecs system, reworked streams and many other QoL features. The next release candidate (likely to be chosen for the release) is planned to mostly consist of bugfixes and improved test coverage.
- reworked codecs: now their buffers are allocated on-demand and are of size of net read buffer. Added a base codec entity, which eases an introduction of new codecs considerably.
- added deflate and zstd codecs.
- made
App.Codec()variadic in order to support the new codec.Suit(), thereby making it possible to register all out-of-the-box available codecs all at once. - added automatic compression. Prior
Compress(string)method is nowCompression(string), the newCompress()decides automatically, whether the body will or will not be compressed. All bodies exceedingConfig.NET.SmallBodylimit (4096 by default) are avoided from being compressed. The codec to be used is chosen based on client preferences, respecting q-values and/or (otherwise) the order. - fixed HTTP/1.0 interoperability. For HTTP/1.0 requests, unsized streams are written as plain bodies and are terminated by closing the connection.
- added
middleware.Autocompress. Useful to be specified at the static content distribution. - removed
http.Request.Encodingstruct. All its prior attributes are now embedded directly into the request entity. - implemented
Len() intinterface forhttp.Request.Body. This enables plain-body echo for non-chunked requests. Is a real-real transparent echo now! - reworked streams. Merged
http.Response.SizedStream(io.Reader, int64)intohttp.Response.Stream(io.Reader). The size hint is now optional, and if not set, the reader is additionally examined for compatibility with theLen() intinterface. - added streams buffering. In order to increase the performance by minimizing the number of writes, serializer can write multiple times into the buffer if it is empty enough. This aims primarily at codecs, as those are producing many small writes.
- added server-wide options.
- improved TRACE support considerably, but disabled it by default. It can be enabled back via the
inbuilt.Router.EnableTRACE(true)flag. - urlencoded slashes aren't automatically decoded anymore. To route them, the slash in the endpoint path must also be urlencoded.
- to register an endpoint with a colon character, you can simply put it as a urlencoded char (
%3a). Transfer-Encoding: identityis now ignored.- considerably improved the dynamic routing (radix tree) performance by using binary search for predecessors search instead of linear.
- other minor performance improvements.
Diff:
v0.17.2
What's Changed
- updated README: new logo, new project description (I swear it wasn't ChatGPT, I wrote it all by my own)
- Added full-blown codecs! Now compressors are included, too
- Added WebDAV methods
- Increased default write buffer size from 1024 to 2048
- Merged keys and values buffers into a single huge buffer
- Removed the maximal key length limit
- Improved kv.Storage and added new methods: Set(), Delete()
- Fixed bug with not being able to transparently stream the request body back, because it was closed before a response is written
- Fixed various bugs related to path and query decoding, returning error on facing fragments after a query flag (a key with no value)
- Fixed growing buffers for sized and unsized streams
- Fixed swapped request line and header block buffers. Pretty dumb bug, honestly
- ...and many other minor updates (mostly internal)
Full Changelog: v0.17.1...v0.17.2
v0.17.1
v0.17.0
v0.16.3
WARNING! Do not use the previous 0.16.2 release (and probably 0.16.0 and 0.16.1 as well) - there used to be a bug that could freeze a connection for static file processing. This release contains purely bugfixes (and a tiny bit of internal improvements)
What's Changed
- Fixed bugs with no calling OnBind callback, infinite loop causing frozen connections in static files distribution by @flrdv in #138
Full Changelog: v0.16.2...v0.16.3