Releases: sarvalabs/go-polo
Ember Essence (v0.4.6)
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 toDepolorizer.DepolorizePacked
was necessary to decompose the outer wire's pack element into its ownDepolorizer
and this method returned anErrNullPack
to indicate that the wire element is null and cannot be unpacked.- Now,
Depolorizer.DepolorizePacked
is strict and does not allow theWireNull
type and now returns theIncompatibleWire
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 newUnpacked
method that acts as a mirror to thePolorizer.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 aDepolorizer
. It is still necessary to pop this element if further decoding is required and this can be achieved using theDepolorizer.DepolorizeNull
Changelog:
- v0.4.5...v0.4.6
- simplify depolorizer unpacking and null checks by @sarvalabs-manish in 5a50c26
- allow decode methods for all integer sizes by @sarvalabs-manish in 96142f3
- fix lint issues and upgrade lint workflow by @sarvalabs-manish in 076aad7
- allow independent test runs by @sarvalabs-manish in 36a8be5
- elevate test coverage to 100% by @sarvalabs-manish in 69de527
Sacred Sulfur (v0.4.5)
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:
- v0.4.3...v0.4.5
- add support for indexed key sorting by @sarvalabs-manish in cb147a7
- retract v0.4.4 by @sarvalabs-manish in 313c612
Nullborn Nugget (v0.4.3)
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:
- v0.4.2...v0.4.3
- allow byte arrays to decode from null values by @sarvalabs-manish in 595b448
Valuable Vortex (v0.4.2)
v0.4.2
is a minor feature release that exposes value sorting functions as more accessible functions with ValueSort
, ValueCmp
and ValueLt
.
Changelog:
- v0.4.1...v0.4.2
- expose value comparison functions by @sarvalabs-manish in #39
Cascading Calypso (v0.4.1)
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:
- v0.4.0...v0.4.1
- fix wire config propagation for load decode by @sarvalabs-manish in #37
Titan’s Twilight Tonic (v0.4.0)
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
andDepolorize
functions as well as theNewPolorizer
andNewDepolorizer
constructors now accept a variadic set ofEncodingOptions
to alter buffer behavior.DocumentEncode
function has been replaced byPolorizeDocument
which only performs shallow doc encoding on the highest order type (if supported). Deep document encoding will require buffer altering flags to the regularPolorize
function- The
NewPackPolorizer
function has been removed. - The currently available
EncodingOption
functions are as follows:DocStructs
: Encode all structs encountered with document encodingDocStringMaps
: Encode all string-keyed maps encountered with document encodingPackedBytes
: Encode all[]byte
typed values with pack-encoding instead of word-encoding (increases wire size)
Changelog:
- v0.3.4...v0.4.0
- implement encoding flags and deep-doc encoding by @sarvalabs-manish in #33
- update workflows, go version and expose map sorting by @sarvalabs-manish in #35
Shining Stoneflower (v0.3.4)
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:
- v0.3.3...v0.3.4
- Add License Files by @sarvalabs-manish in #26
- Update README by @sarvalabs-manish in #27
Imp Infusion (v0.3.3)
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 anErrObjectNotSettable
error. - Fixes issues with nil handling of primitive pointers like
*uint64
or*string
Changelog:
- v0.3.2...v0.3.3
- Fix Depolorizer Panics & Nil Handling by @sarvalabs-manish in #23
Moony Marshmerrow (v0.3.2)
v0.3.2
is a feature release extending the capabilities of the raw encoding API
- Introduced a new wire target type
Any
. - Implemented
PolorizeAny
andDepolorizeAny
methods to retrieveAny
wire element from an encoding buffer - Refactored
PolorizeRaw
andDepolorizeRaw
to only encode/decodeWireRaw
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
andPolorizeRaw
methods. The capabilities of these methods have been changed to support theAny
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:
- v0.3.1...v0.3.2
- Enhanced Wire Encoding with Any & Raw by @sarvalabs-manish in #20
Dartwing Dust (v0.3.1)
v0.3.1
is a release containing a bug fix that removes an unintended print statement in the codebase
Changelog:
- v0.3.0...v0.3.1
- Remove Unintended Print Line by @sarvalabs-manish in #19