All notable changes to this project will be documented in this file, which follows the conventions of keepachangelog.com. This project adheres to Semantic Versioning.
...
parse-uuid function in Clojure 1.11 to avoid a reference
collision warning.List, Map, and Set interfaces as the corresponding CBOR types.
Previously, this only worked directly on Clojure's collection types.java.time.LocalDate type.clj-cbor.core/dispatch-superclasses function can be used to support
inheritance-based write handler selection.
#12decode will not try to coerce inputs which are already input streams
anymore. This fixes incremental/lazy decoding behavior.
#13encode will not try to coerce outputs to an output stream anymore. Now an
exception is thrown when a bad argument is given. This prevents lost writes
when the final buffer is not flushed correctly.
#14This is a performance-focused release that introduced a number of changes to speed up decoding performance. The main change is the switch to a jump table for the initial header byte. #9 #11
For a representative data sample of about ~97 KB, this brings the benchmarked decoding time from 8.454 ms to 4.089 ms, or about twice as fast!
::codec/illegal-stream error.This release fixes two of the longer-standing quirks with the library, which were unfortunately breaking changes. The fixes should be straightforward:
(cbor/decode ...) with (cbor/decode-seq ...).(first (cbor/decode-seq ...)) with (cbor/decode ...).If you have existing encoded data containing sets, you can use the following function to rewrite it:
(defn rewrite-cbor-sets
[codec source dest]
(with-open [input (io/input-stream source)
output (io/output-stream dest)]
(->>
input
(cbor/decode-seq (assoc codec :set-tag 13))
(cbor/encode-seq codec output))))
If rewriting isn't an option, you can support reading sets via tag 13 by using a custom read handler:
(def compatible-codec
(assoc-in cbor/default-codec [:read-handlers 13] set))
clj-cbor.core/decode now only decodes a single value; previous
behavior moved to decode-seq.
#7clj-cbor.core/encode-seq writes a sequence of values to a byte array or
output stream.clj-cbor.core/spit-all similarly writes a sequence of values to an output
file like repeated calls to spit with :append true.Long/MIN_VALUE.Long values, no matter their encoded
size. Previously, numbers between Short/MAX_VALUE and Integer/MAX_VALUE
would return Integer values.
#4
#5clj-cbor.core/self-describe function will wrap the given value with this
tag.spit, slurp, and slurp-all utility functions to the core namespace.:clj-cbor.codec/illegal-chunk renamed to illegal-chunk-type.decode function now properly raises an error when the input ends
mid-value rather than at a top-level value boundary.This release includes 100% test coverage!
:clj-cbor.error/encoding-error and :clj-cbor.error/decoding-error.clj-cbor.data.model renamed to clj-cbor.data.core.clj-cbor.float16 functions from-bits and to-bits renamed to
decode and encode, respectively.Undefined and SimpleValue records moved to new clj-cbor.data.simple
namespace.TaggedValue record moved to new clj-cbor.data.tagged namespace.clj-cbor.header/write-major-int renamed to write.clj-cbor.header/read-size renamed to read-code.Initial project release.
Can you improve this documentation?Edit on GitHub
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |