Skip to content

Latest commit

 

History

History
253 lines (205 loc) · 15.5 KB

CHANGELOG.md

File metadata and controls

253 lines (205 loc) · 15.5 KB

Changelog

For a list of breaking changes, check here

Unreleased

  • Fix function reference equality #587
  • Don't convert Clojure values to JS values automatically in interop #602
  • Calling comment with 49 (or more) args fails in CLJS #603

v0.2.6

  • Use IllegalArgumentException in case when providing duplicate dispatch values
  • Improve error message when protocol not found for class
  • Add thread-bound? predicate #560
  • Allow set! to mutate objects in CLJS #563
  • Experimental SCI_ELIDE_VARS environment variable for smaller CLJS bundle size
  • Support trailing metadata in defn #567
  • GC improvement: don't hang on to all external bindings in closure
  • Several performance improvements
  • Expose intern in core API
  • Several fixes regarding try/catch in CLJS #583, #584, #585
  • case expression generated by macro doesn't work correctly #586

v0.2.5

Enhancements / fixes

  • Fix metadata on non-constant map literal expression #546
  • Support :reload-all #552
  • Support new kwargs handling from 1.11.0 #553.
  • Allow dynamic :doc on def/defn #554.
  • Fix metadata on nested evaluated map #555
  • Bug with protocol methods in record where later arg overrides "this" #557
  • Support :rename in :refer-clojure #558
  • Add aset-..., delay?, bit-clear
  • Add bound-fn and bound-fn*
  • Add arg count check for clojure.core/for

v0.2.4

New

Enhancements / fixes

v0.2.3

Enhancements / fixes

  • if with falsy literal returns nil #529

v0.2.2

Enhancements / fixes

  • Fix error reporting in case of arity error #518
  • Shadowing record field names in protocol functions #513
  • Fix destructuring in protocol method for record #512
  • Faster processing of maps, sets and vectors #482
  • Prioritize current namespace vars in syntax quote #509
  • Fix ns-publics to not include refers #520
  • Add refer-clojure macro #519
  • Syntax quote resolves referred var incorrectly #526
  • Priorize referred vars over vars in current ns #527

v0.2.1

Enhancements / fixes

  • Improvements for using type on defrecord #492
  • Deref vars at analysis time that have :inline metadata in Clojure #483
  • Keep only location metadata for seqs and symbols #488
  • Conditionally defined vars should not have metadata #496
  • Fix interop on map #506
  • Performance improvements #500, #502, #504
  • Fix shadow-cljs warnings #499

v0.2.0

Thanks for contributing to this release:

@lread, @patrick-galvin, @SevereOverfl0w, @djblue, @kwrooijen, @sogaiu, @joinr, @RickMoynihan, @galdober

Breaking changes

  • Removed :realize-max and :preset :termination-safe. In the light of #348 it would be misleading to claim that sci can guarantee termination within reasonable time.

New

  • Add class?, iterator-seq, remove-watch, realized?, clojure.walk/macroexpand-all, find-var, lazy-cat, bound?, *print-namespace-maps*, get-thread-bindings, var-get, var-set, with-local-vars
  • Add fork API function #369
  • Add API functions for parsing code and evaluating forms: sci.core/reader, sci.core/parse-string, sci.core/parse-next, sci.core/eval-form #404
  • Support implementing IDeref, IAtom, IAtom2 (and CLJS equivalents) #401
  • Add API vars print-meta, print-level which can be used with sci.core/binding to control the dynamic var equivalent in sci programs
  • Support calling symbol on a var #453
  • :disable-arity-checks option: when used, sci behaves similarly to CLJS/JS by not checking the provided number of arguments and allowing less or more for single and fixed arity functions #460

Enhancements / fixes

  • Alter-var-root uses thread-bound value to update #359
  • Eval metadata on var created with defn #371
  • Metadata fn on var f fails if referring to f #363
  • Fix missing protocol methods #367 (@patrick-galvin)
  • Support multiple methods of protocol on defrecord
  • Allow re-binding of core vars with clojure.core/with-redefs #375
  • Fix false dynamic binding #379
  • Don't eval record returned from reader function #386
  • Implement -> and as-> as normal macros #390, #462 (@kwrooijen)
  • defn should not introduce local for name in body #384
  • Fix wrong arity in error message when calling macro #392
  • Throw when trying to redefine referred var #398
  • Fix for use 120175f
  • Fix importing protocol classes from namespaces with hyphens #410
  • Performance enhancements #415, #452, #468, #470, #472, #473, #475, #478, #480
  • Support top-level do emitted from macro #421
  • Support map constructor for maps #431
  • Partial support for multiple reified classes 323a257
  • Fix calling literal symbol babashka/babashka#622
  • Allow user-defined vars when def is allowed #434
  • Fix default destructuring with false #436
  • Fix reflection warning in multimethods code #437 (@galdober)
  • Support nested libspecs #399
  • Aliases in protocol functions should work #440
  • Allow users to override :line metadata #443
  • Support second arg (env) in resolve
  • Preserve and eval reader meta on coll literals and functions #447, #448
  • Fix #js object reading #449
  • Support unmap for imported classes #432
  • Fix for reader conditional parsing borkdude/edamame#65
  • Dotted field access for JS interop #450
  • Syntax checks for binding #458
  • Add boolean? to constant check #465 (@kwrooijen)
  • Check macro var value at analysis time #467
  • Excluded clojure var still gets resolved to in syntax quote #466

v0.1.0 (2020-06-16)

Thank to @jeroenvandijk, @jjttjj, @justone, @sogaiu and @armincerf for contributing.

New

  • Implement hierarchies (derive etc.) #237
  • Implement multimethods #236
  • Add ns-interns, ns-imports, ns-refers, ns-map, all-ns
  • Add do-template
  • Add clojure.edn namespace
  • Add promise and deliver (@jeroenvandijk)
  • Add :readers option to support data readers (@jjttjj)
  • Add tagged-literal
  • Add when-some and if-some (@justone)
  • Add re-matcher
  • Add re-groups (@sogaiu)
  • Implement read-string + eval #285
  • Add ns-unmap (@sogaiu)
  • Support *print-length* #294
  • Add while macro #296
  • Add clojure.repl/find-doc #304
  • Add clojure.repl/apropos #317
  • Add memoize
  • Add load-string #307
  • Add clojure.repl/pst
  • Add with-bindings macro #289
  • Add ns-resolve
  • Add clojure.core/read #317
  • Add remove-ns #318
  • Add requiring-resolve #316
  • Add tagged-literal? function (@armincerf)
  • Support with-redefs #325
  • New create-ns, new-macro-var, copy-var, init and eval-string* API functions
  • Add enumeration-seq
  • Add bean
  • Support GraalVM java11 #332
  • Support *print-meta* #334
  • Support clojure.core/intern #336
  • Defprotocol and defrecord support #279, #319
  • Add double-array and short-array
  • Add support for *print-level*

Enhancements / fixes

  • Elide metadata from function results (this makes calling evaluated functions from JavaScript easier) #259
  • Eval metadata on vars (e.g. (def ^{:test (fn [] \"foo\")} x)).
  • Syntax check on amount of args for if (@jeroenvandijk)
  • Support namespace metadata #269
  • require can now be used as a function
  • find-ns should return nil for non-existent namespace #299
  • Mark dotimes as termination-safe #298
  • Fix metadata on syntax-quoted values #301
  • Add support for :refer :all in namespace form #297
  • Support :rename in :require #303
  • Add support for use #302
  • resolve can now be used a function
  • loop bindings can refer to previous ones
  • JS interop improvements #312
  • Fix handling atom with metadata #314
  • Fix unqualified binding of when and nth in for macro
  • More JS interop improvements (@jeroenvandijk)
  • Fix for variadic recur #321
  • Fix for associative destructuring (commit)
  • Add syntax check for ns macro: first arg is required and should be symbol
  • Fix dynamic binding for functions
  • Fix parser line numbers when using shebang
  • Remove Java API, don't include AOT-ed sources in release
  • Preserve location information in error when NullPointerException occurs
  • Support alternative field access syntax (. Integer -SIZE) #339
  • Check syntax of def and report too many arguments #340
  • Fix alternative field access syntax (Integer/SIZE)
  • Fix resolving var from other namespace via refer

Prior to v0.1.0

Details about releases prior to v0.1.0 can be found here.

Breaking changes

0.2.4

  • Do not merge ex-data into sci error #534

>= 0.1.0

  • Removed :realize-max and :preset :termination-safe. In the light of #348 it would be misleading to claim that sci can guarantee termination within reasonable time.

v0.0.12

  • :row and :col metadata have been renamed to :line and :column to be more compatible with Clojure.

v0.0.11

  • macros provided via options (functions marked with :sci/macro metadata) now have two additional arguments at the start: &env and &form.