Skip to content

Releases: indigo-web/indigo

v0.17.3.1 (hotfix)

30 Aug 14:25
9bdb482

Choose a tag to compare

Hotfix for v0.17.3.1.

Changes:

  • allow urlencoded nonprintable characters in request path and param values. They are moved to unsafe category, and thereby won't be automatically urldecoded.

v0.17.3

30 Aug 13:52
f6db4a5

Choose a tag to compare

Final v0.17.3 release version.

Changes:

  • improved code coverage
  • updated form: now selectors Name() and File() return the first matching entry. An iterator over all matching entries is now returned by selectors Names() and Files()
  • 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

29 Aug 21:13
2469413

Choose a tag to compare

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 now Compression(string), the new Compress() decides automatically, whether the body will or will not be compressed. All bodies exceeding Config.NET.SmallBody limit (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.Encoding struct. All its prior attributes are now embedded directly into the request entity.
  • implemented Len() int interface for http.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) into http.Response.Stream(io.Reader). The size hint is now optional, and if not set, the reader is additionally examined for compatibility with the Len() int interface.
  • 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: identity is 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

09 Aug 23:37
804e0f3

Choose a tag to compare

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

21 Jun 18:11
ff60dfd

Choose a tag to compare

What's Changed

  • v0.17.1: breaking changes, new radix tree, introduction of streams as opposed to previously attachments, bug fixes and overall performance speed-ups by @flrdv in #140

Full Changelog: v0.17.0...v0.17.1

v0.17.0

14 Jun 22:40
b4c8dad

Choose a tag to compare

What's Changed

Full Changelog: v0.16.3...v0.17.0

v0.16.3

26 Apr 17:48
0323144

Choose a tag to compare

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

v0.16.1

24 Apr 22:22
3f91edc

Choose a tag to compare

What's Changed

  • Bug fixes and API improvements by @flrdv in #135

Full Changelog: v0.16.0...v0.16.1

v0.16.0

21 Apr 13:36
0b08aa8

Choose a tag to compare

What's Changed

  • Remove uniuri from go.mod by @CptIdea in #132
  • update dependencies and roll back to 1.18 minimal supported GC version by @flrdv in #133
  • V0.16.0 by @flrdv in #134

Full Changelog: v0.15.9...v0.16.0

v0.15.9

02 Feb 19:24
1329b99

Choose a tag to compare

What's Changed

  • Reformat README.md by @CptIdea in #129
  • Disconnect IDLE connections silently, return HTTP errors without description, other internal improvements by @flrdv in #130

New Contributors

Full Changelog: v0.15.8...v0.15.9