Skip to content

Releases: sarvalabs/go-polo

Ember Essence (v0.4.6)

25 Oct 22:46
Compare
Choose a tag to compare

v0.4.6 is a minor feature release that brings a cleaner workflow for implementing custom decoding with the Depolorizable interface. Previously this required some verbosity to be a concrete implementation (see below for more). This release also adds independent decode methods for all integer sizes to allow more brevity when decoding directly into struct fields. Additionally significant improvements have been made to the unit tests to be independently runnable and go-polo is now back to 100% test coverage!

Clean Custom Depolorization

  • Depolorizer now has some behaviors to support a simpler workflow when custom decoding to structs. Previously a call to Depolorizer.DepolorizePacked was necessary to decompose the outer wire's pack element into its own Depolorizer and this method returned an ErrNullPack to indicate that the wire element is null and cannot be unpacked.
  • Now, Depolorizer.DepolorizePacked is strict and does not allow the WireNull type and now returns the IncompatibleWire error if it encounters it. This makes the behavior easier to debug for unfamiliar users. This is enhanced by the fact that this same capability can be achieved with the new Unpacked method that acts as a mirror to the Polorizer.Packed method
  • Additionally a new method Depolorizer.IsNull peeks the next element in the wire and returns true if it is a WireNull. Allowing a consumer to separately handle the nullity check of the wire when decoding from a Depolorizer. It is still necessary to pop this element if further decoding is required and this can be achieved using the Depolorizer.DepolorizeNull

Changelog:

Sacred Sulfur (v0.4.5)

20 Aug 11:10
Compare
Choose a tag to compare

v0.4.5 is a minor release that adds support for indexed key sorting with a new type Key and a new function KeySort that accepts a slice of Key objects which hold an index position and return them over a channel. This is a stepping stone towards a native map polorizer capability in this library.

note: v0.4.4 was released accidentally with some incomplete implementation and has been retracted

Changelog:

Nullborn Nugget (v0.4.3)

20 Aug 11:05
Compare
Choose a tag to compare

v0.4.3 is a minor release that adds support for decoding byte arrays from WireNull elements in the encoded wire. It will decode to the zero value for the byte array (depending on its size)

Changelog:

Valuable Vortex (v0.4.2)

20 Aug 10:56
0d4a7cb
Compare
Choose a tag to compare

v0.4.2 is a minor feature release that exposes value sorting functions as more accessible functions with ValueSort, ValueCmp and ValueLt.

Changelog:

Cascading Calypso (v0.4.1)

18 Dec 11:54
7b98ddb
Compare
Choose a tag to compare

v0.4.1 is a minor bugfix release that addresses an issue with load decoding due to incorrect propagation of the decode buffer's wire configuration.

Changelog:

Titan’s Twilight Tonic (v0.4.0)

12 Dec 11:08
Compare
Choose a tag to compare

v0.4.0 is a feature release that introduces new mechanics to support altering the behavior of encoding/decoding buffers using EncodingOptions such as DocStructs, DocStrMaps and PackedBytes (more will be supported in the future). It also significantly reworks the document encoding behavior to fix an issue with encoding deep structs as documents.

  • Polorize and Depolorize functions as well as the NewPolorizer and NewDepolorizer constructors now accept a variadic set of EncodingOptions to alter buffer behavior.
  • DocumentEncode function has been replaced by PolorizeDocument which only performs shallow doc encoding on the highest order type (if supported). Deep document encoding will require buffer altering flags to the regular Polorize function
  • The NewPackPolorizer function has been removed.
  • The currently available EncodingOption functions are as follows:
    • DocStructs: Encode all structs encountered with document encoding
    • DocStringMaps: Encode all string-keyed maps encountered with document encoding
    • PackedBytes: Encode all []byte typed values with pack-encoding instead of word-encoding (increases wire size)

Changelog:

Shining Stoneflower (v0.3.4)

03 Jul 17:05
ac001dd
Compare
Choose a tag to compare

v0.3.4 is the first open-source release of go-polo and adds the necessary documentation and licensing.

  • go-polo is now officially open-source!
  • Added license files for dual-licensing under MIT/Apache-2.0

Changelog:

Imp Infusion (v0.3.3)

25 May 09:17
024099e
Compare
Choose a tag to compare

v0.3.3 contains a bug fix that resolves the following:

  • Unintended panics in the Depolorizer when it is unable to set the value to an object because it is unsettable. It now checks for this case and returns an ErrObjectNotSettable error.
  • Fixes issues with nil handling of primitive pointers like *uint64 or *string

Changelog:

Moony Marshmerrow (v0.3.2)

09 Apr 18:20
f767a8b
Compare
Choose a tag to compare

v0.3.2 is a feature release extending the capabilities of the raw encoding API

  • Introduced a new wire target type Any.
  • Implemented PolorizeAny and DepolorizeAny methods to retrieve Any wire element from an encoding buffer
  • Refactored PolorizeRaw and DepolorizeRaw to only encode/decode WireRaw tagged elements

Compatibility Notes

  • This release is backward compatible for most applications but will break for any consumer using the raw wire decoding with DepolorizeRaw and PolorizeRaw methods. The capabilities of these methods have been changed to support the Any wire paradigm. This is partially a bug-fix coupled with an enhancement to continue supporting both models.
  • Existing implementation using these capabilities can simply switch to PolorizeAny where appropriate.

Changelog:

Dartwing Dust (v0.3.1)

06 Apr 08:46
bc64b9a
Compare
Choose a tag to compare

v0.3.1 is a release containing a bug fix that removes an unintended print statement in the codebase

Changelog: