- Fix some harmless warnings when using Schema with the latest version of ClojureScript (due to the addition of positional constructors for
deftype
).
- BREAKING Remove support for old
^{:schema ..}
style annotations and bare^Protocol
annotations.:- schema
is the preferred way, but metadata-style schemas are still allowed for valid Clojure typehints (as well as vars that refer to schemas). - BREAKING Remove deprecated macros (
defn
,defrecord
, etc) from schema.macros. The identical versions in schema.core remain. - BREAKING Remove potemkin as a dependency, and the
*use-potemkin*
flag. To get the old behavior of potemkin defrecords, you can still bring your own potemkin and useschema.core/defrecord+
in place ofschema.core/defrecord
.
- Add coercion handler for s/Uuid from string input
- Support java.util.List instances as valid data for sequence schemas
- Make primitive schemas work better in some cases under partial AOT compilation
- Fix bug in
defschema
which clobbered metadata, breakings/protocol
in Clojure in 0.3.2.
- Fix
s/protocol
in Clojure (didn't work properly with extends created later) - Fix ClojureScript (Closure) warning about reference to global RegExp object.
- Add
set-compile-fn-validation!
function to turn off emission of validation globally, and turn off emission of validation code for non- ^:always-validate functions when assert is false.
- Fix Clojurescript compilation warnings/errors from accidental references to
clojure.data/diff
andclass
inside error messages.
- BREAKING increase minimum clojurescript version 2120 to support :include-macros
- Deprecate direct use of
schema.macros
in client code -- prefer canonical versions inschema.core
in both Clojure and ClojureScript, using:include-macros true
in cljs. - Deprecate old
^{:s schema}
syntax for providing schemas. - Deprecate
*use-potemkin*
flag and behavior to default to potemkin s/defrecords in Clojure; in future releases, you will have to provide your own potemkin and explicitly opt-in to this behavior. - (Hopefully) fix issues with AOT compilation, by removing dependence on potemkin/import-vars.
- Add
isa
schema for Clojure hierarchies. - Preserve the types of maps (including Records) when coercing with map schemas.
- Smarter code generation in s/defrecord to avoid dead code warnings
- Fix printed form of s/Str in ClojureScript
- Make some internal fns public to simplify third-part schema extensions
- Walking records with map schemas preserves the record type
- Proper explain for s/Str
- Memoize walker computation, providing much faster checker compilation for graph-structured schemas
- Add
normalized-defn-args
helper fn for definings/defn
-like macros. - Map schemas correctly validate against struct-maps
- Fixed an issue that could cause ClojureScript compilation to fail
- Generalize
s/recursive
to work on artibrary refs - Add
s/Symbol
as a cross-platfor primitive
- Improved explains for primitives & primitive arrays
- More robust double coercions
- Fix cljs warning about extending js/Function
- Import schema.macros/defmulti in schema.core
- Add validated
s/def
. - Add validated
s/defmethod
. - Add
Bool
coercions.
- Add
Bool
to cross-platform primitives - Fix several minor bugs
- Replace cljs-test with headless clojurescript.test.
- breaking change: Cross-platform leaves String and Number are now Str and Num (the former caused warnings and broke AOT).
- Replaced core Schema protocol method
check
withwalker
, for increased speed and versatility - Support for schema-driven transformations/coercion
- Schemas for primitive arrays (
longs
, etc) - Schematized
letfn
- Remove non-dev dependency on cljx
- Support for pre/postcondition maps in
s/defn
- Support for recursive schemas in Clojure
- Fixes for sm/defn and sm/defrecord with cljs advanced compilation
- Works with advanced compilation in cljs (at least sometimes)
- More small bugfixes
- Better validation error messages in cljs
- Minor bugfixes (thanks various contributors)
- Extend schema protocol to regex (thanks AlexBaranosky).
- Add
:never-validate
meta option
- Fix regression in primitive handling introduced in 0.1.4
- Added Regex, Inst, and Uuid as primitive schema types (thanks jwhitlark)
- Add annotated arglists to functions defined with
s/defn
(thanks danielneal) - Add
set-fn-validation!
to schema.core, to globally turn validation on or off. - Add
:always-validate
metadata on fn/defn name to unconditionally use validation.
- Fix compatibility with Clojurescript 1889 (removal of format)
- Validate returns the value on success
- Sequence schemas only match sequential? things, to match map and set
- Implementation of
defschema
puts name in metadata, rather than generating named schema - Improved error messages and stack traces for
s/defn
- Bugfix: with-fn-validation persisting after Exception
- Initial release