You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Clojurists Together Project Update, Malli, part 1/3 (09-10/2021)
Have spent a lot of time working with Malli internals: on hammock, paper protos,
reading about stuff done elsewhere, perf tuning and testing, better designs, in the mushroom forest,
refactoring and finally, an initial new internal design I'm quite happy with.
The Performance gains
Malli has now an 1-2 orders of magnitude faster Schema inferrer
Schema AST, Cached and other performance improvement, #544
Cleanup, Entry parser protocol, worker caches and fast inferring, #550
The Release
All the current improvements are shipped in [metosin/malli "0.7.0-20211031.202317-3"], will test it properly againt real projects before releasing 0.7.0. See the full CHANGELOG.
Shipped one of the biggest releases of Malli, the 0.7.0 on Dec 7th! contained all the stuff done earlier + small fixes and more performance improvements & tests
Zillion things to do and 2 months to go. Currently working on destructuring parser to enable first-class support inline typehints and to support inferring of function schemas from vanilla Clojure/Script. Seems like the easy features are all done, just the hard ones left :)
Shipped a major version of Malli, the 0.8.0 on Jan 23th! Biggest changes were: dev-tooling support for CLJS, Tools for Destructuring and support for the Plumatic Defn Syntax. Also the following smaller improvements:
malli.dev/start! uses malli.dev.pretty/reporter by default
allow :malli/schema to be defined via arglist meta-data, #615
BREAKING: local registries with schemas in vector syntax are stored as identity, not as form
BREAKING: :malli.provider/tuple-threshold has no default value
FIX: me/-resolve-root-error does not respect :error/path, #554
FIX: m/from-ast does not work with symbols or unamespaced keywords, #626
FIX: :+ parsing returns vector, not sequence
transformer names can be qualified, schema properties support :decode and :encode keys
updated dependencies
malli.dev.pretty/explain for pretty-printing explanations
new malli.destructure ns for parsing Clojure & Plumatic destructuring binding syntaxes, see Destructuring.
Released also small patch releases (0.8.1 - 0.8.3) with bug fixes and small improvements
Read and reviewed all open PRs and managed to close most of them
TODO
Nothing, I'm happy with the things I managed to complete during the 6 month period despite the priorities changed during it. Looking at the original list:
First-class Schema inferring and effective schema types
MOSTY DONE: it's not first class but orders of magnitude faster with lot's of new features like inferring :tuple, :map-of, :enum, type-hints and inferring via decoding. I'm happy with the current state.
Re-visit Schema registries, lifecycle, caching and contexts
DONE: the registry can be swapped by default, workers are cached on instances etc
Error messages and tooling integration: pretty-printing of schema creation
MOSTY DONE: new tools for pretty explaining, more robust EDN printer etc
Extra stuff that was added:
SchemaAST - parseless method of creating Schemas
LiteSyntax - optional simple syntax for tools like reitit