- BREAKING Minimum supported Clojure version is now 1.8
- migrate cljx => cljc
- Fix #138: Compile graphs bigger than 100 nodes with interpreted mode in Clojure
- Bump schema dependency to avoid issues with Clojure 1.9 out of the box.
- Allow redefining keys in an inner scope, and clarify the semantics.
- Nicer error messages for
safe-get
,safe-select-keys
,merge-disjoint
.
- Deprecate
keywordize-map
in favor ofclojure.walk/keywordize-keys
- Fix dependent optional bindings (e.g. (fnk [a {b a}])) broken in 0.5.1
- Fnks remember their name, and named fnks can be used without a key in
graph/graph
forms (with an implicit key generated from(keyword (name f))
).
- Fix broken cycle check in Clojurescript topological sort.
- (Experimental) include default values as metadata on fnk schemas.
- BREAKING: Bump to Schema 1.0.1, breaking compatibility with pre-1.0.0 Schema.
- Bump to latest Schema version, which should fix AOT compilation when used with Clojure 1.7-RC1 and later.
- Actually fix update warnings under Clojure 1.7 (commit missed the 0.4.2 release).
- Letk now supports simple symbol bindings as well as map destructuring bindings.
- Fix update warnings under Clojure 1.7.
- Fix concurrency issue recently introduced in distinct-by in Clojure (sequence had to be realized in creator thread due to transient restrictions)
- Breaking Bump dependencies, potemkin no longer included transitively through schema.
- Add support for destructuring namespaced keywords, i.e.
(= 1 (letk [[a/b] {:a/b 1}] b))
and(= 1 ((fnk [a/b] b) {:a/b 1}))
- Fix warnings about
*clojurescript-version*
when compiling ClojureScript
- BREAKING: Define
update
only ifclojure.core/update
does not exist (ie. legacy clojure(script) versions)
- Fix bug in
safe-get
in ClojureScript due to missing:include-macros true
in plumbing.core
- Add
plumbing.map/keyword-map
,plumbing.core/if-letk
,plumbing.core/when-letk
- Bump schema version to 0.3.1, fixing cljs warnings from that project, and move schema.macros calls over to schema.core.
- Minimum required schema version is now 0.3.0
- Properly generate cross-platform assertions, fixing ClojureScript errors that tried to throw Java errors.
- Fix cljs compilation issue appearing in some circumstances (No such namespace: js)
- Fix cljs issue where plumbing.fnk.schema was missing from dependency tree
- BREAKING:
?>
and?>>
require a body expression in parens, and take an arbitrary number of body expressions. - Add ClojureScript support via cljx
- Add plumbing.graph-async namespace to define asynchronous graphs using core.async channels. A core.async dependency has not been added to project.clj and must be supplied by user if this namespace is used.
- Add
update
andmapply
to plumbing.core
- Don't depend on a specific Clojure version, and add support for Clojure 1.6.x
- Fix for issues with AOT compilation after introducing schema
- Replace fnk/graph's internal schema format with
prismatic/schema
. This is a breaking change if (and only if) you've explicitly written old-style fnk/graph schemas like{:x true :y false}
, or code for manipulating such schemas. - Drop support for Clojure 1.4.x
- Fix bug when aliasing optional values with arg names, i.e.
(let [a 1] ((fnk [{a a}] a) {}))
- Implement well-defined semantics for optional values that reference other symbols bound within a (let/(de)fnk) form, matching Clojure: symbols are bound in the order given, so that an optional value can reference a symbol bound within the same destructuring form iff that symbol appears earlier in the form.
- Add update-in-when, grouped-map, conk-when, cons-when, rsort-by, as->> to plumbing.core
- Minor bugfixes and improved tests
- Perf improvements for
map-keys
andmap-vals
(thanks bendlas!) - Pulled out lazymap as a dependency.
plumbing.lazymap
is no more -- it's now included indirectly aslazymap.core
. Thanks to Meikel Brandmeyer for a great library, and working with us to extend it to accommodate Graph's use case. - Lazily compiled graphs are now lazy about checking for required inputs, so a lazily compiled graph fn can be called without inputs not needed for computing the subset of outputs that will be extracted.
- Explicit output-schema metadata on a fnk is taken as gold, rather than being merged with explicit data by analyzing the fnk body, and must be explicit rather than a spec.
- Moved
comp-partial
from pfnk to graph, and addedinstance
for fnks/graphs - Automatic efficient positional forms for fnks that take no rest args.
- A new
eager-compile
that can produce graphs that are almost as fast as hand-coded replacements, by avoiding maps internally where possible using positional fns, and using Records when maps are necessary. The oldeager-compile
is still available asinterpreted-eager-compile
.
- Initial release