cbor v1.3.0 Release Notes

Release Date: 2019-11-21 // over 4 years ago
  • ๐Ÿ†• New struct tags "keyasint" and "toarray" make it easy to use Go structs with CBOR maps and arrays. Using COSE, CWT, SenML, etc. is more natural with less programming effort.

    ๐Ÿš€ Encoding and decoding speed is faster than prior releases due to safe optimizations. Encoding speed and structs got the biggest speedups.

    ๐Ÿš€ Benchmark comparisons are hard in v1.3 because older releases lack "keyasint" and "toarray". Some of the biggest speedups are from no longer having to use Go maps with COSE, CWT, SenML, etc.

    Specific changes include:

    • ๐Ÿ”‹ Feature: Encode/Decode CBOR map with integer keys to Go struct with "keyasint" struct tag (commit 3cbdc26)
    • ๐Ÿ”‹ Feature: Encode/Decode CBOR array to Go struct with "toarray" struct tag (commit 07c8226)
    • ๐Ÿ›  Fix: Skip embedded struct pointed to by nil pointer during encoding (commit 593ee34)
    • Speed: Improve decoding speed (commit 726c423, 23d2052)
    • Speed: Improve encoding speed (commit 8ea465d, d85552b, 90423eb, 05e6b7c)
    • ๐Ÿ”จ Misc: Refactor (commit ca1f6f1, be23d57, 1e745c3)
    • Misc: Add examples and benchmarks (commit 61d7682, 2964577, 6c17db7)

    ๐Ÿš€ This release passed 2+ billion executions (72 hours) of coverage-guided fuzzing using fxamacker/cbor-fuzz v0.7.0:

    workers: 2, corpus: 719 (72h27m ago), crashers: 0, restarts: 1/10000, execs: 2275843330 (8725/sec), cover: 1492, uptime: 72h27m