Releases: bsless/clj-fast
Releases · bsless/clj-fast
14-04-2022
v.0.0.10
Add
- Variadic arity assoc-in. The analysis collapses all paths to a tree
with leaves being the values to be assoc-ed and plans out a minimal
execution. Also see #23 - Not found arity to inline/get-in
- Tests from Clojure's test suit to catch some edge cases
- Faster update-in which takes advantage of variadic arities, but introduces ugly code duplication
- Faster versions of subseq/rsubseq which don't use sets for checking
test functions identity. - Static merge in
fast-map-merge. asmacro for annotating symbols.- Box operations which mimic atom and volatile semantics.
update-in->similar to update-in but takes many arguments.kvreduce- dispatches directly toIKVReduce.kvreduce()method instead of going through a protocol.- Add
fast-count. - Add
short-circuiting-mergewhich returns a merge function which short circuits according tocount-fnwithmerge-fn. - Add
def-short-circuiting-mergeas convenience wrapper aroundshort-circuiting-mergefor def-ing named functions.
Fix
- inline/get not-found arity allowed any number of arguments, explicitly changed to one. #24
- Fix callsite analysis of quoted forms. Now functions calls and quoted forms are handled correctly.
- inline/assoc-in new implementation did not extract bindings. Fixing
this allows using side-effecting functions as keys - Found an edge-case with adding type hints on inline args - literals
would lose their inferred types and cause reflection warnings by
taking on the meta. Narrowed down to cover only symbols.
Improve
- Relax the constraints in extract-bindings, making it less aggressive
but still correct. - Remove fn allocation in
fast-map-merge. - Change
fast-map-mergetodefinline. - Use
kvreduceinstead ofreduce-kvinfast-map-merge.