Skip to content

Releases: babashka/sci

v0.1.0

16 Jun 15:23
Compare
Choose a tag to compare

See CHANGELOG.md for release notes.

v0.0.12

23 Jan 19:29
Compare
Choose a tag to compare
v0.0.12 Pre-release
Pre-release

Solved issues

  • Add alter-meta!, alter-var-root, any?, condp, defonce, ifn?, inst?, instance?, reset-meta!, some->> and various transient functions
  • Add sci.core/alter-var-root for manipulating sci vars
  • def returns the var instead of the value of the var
  • #163: support pre- and post-conditions in fn
  • #178: check variadic arg conditions like clojure
  • #180: support nested syntax quote
  • #182, #184: fully qualify symbols in syntax-quote
  • #186: fix bug with map literal in syntax-quote
  • #188: implement let-fn
  • #190: throw error when using special symbol as value when it's not a binding
  • #192: add :file metadata on vars
  • #193: add clojure.core/delay
  • #195, #196, #198: ns macro improvements
  • #197: add defn-
  • #213: add macroexpand
  • #214: implement alias
  • #217: fix list in case
  • #241: add find-ns
  • #243: add ns-aliases
  • #245: add ns-publics
  • #246: performance improvements
  • Add :name and :ns metadata to vars
  • Allow metadata in defn
  • Support :reload in require form
  • JS interop improvements

v0.0.11

07 Dec 13:26
Compare
Choose a tag to compare
v0.0.11 Pre-release
Pre-release

New

Enhancements

  • #118: support &form and &env in macros
  • #145: better error message for incorrect def/defn/fn syntax
  • #154: better performance by avoiding unnecessary analysis

Fixes

  • #113: fix function return value when using recur
  • #114: fix for denying/allowing symbols with explicit clojure.core ns
  • #117, #152, #164: various fixes for try/catch
  • #124: adding vars to clojure.core in :namespaces didn't get merged in
  • #132: fix location of arity error in ex-data (thanks @sogaiu)
  • #140, #141: fix issue with for
  • #143: fix macro named binding
  • #150: keep fully qualified clojure.core symbol visible when binding has same name
  • #156: fix for syntax-quote/quote

v0.0.10

16 Oct 19:45
Compare
Choose a tag to compare
v0.0.10 Pre-release
Pre-release

New

  • provide a macro as a binding:
user=> (sci/eval-string "(do-twice (f))" {:bindings {'do-twice ^:sci/macro (fn [x] (list 'do x x)) 'f #(println "hello")}})
hello
hello
nil
  • user defined macros:
user=> (sci/eval-string "(defmacro do-twice [x] (list 'do x x)) (do-twice (f))" {:bindings {'f #(println "hello")}})
hello
hello
nil
  • Add :deny, :allow, :realize-max and :preset options (see usage)

  • Add loop, recur, for, doseq, comment (thanks @kannangce) , require, cond, case (only syntactically), try/catch/finally, throw.

  • Java and JavaScript APIs (see README)

Changes

  • tools.reader is now a proper dependency instead of an inlined one (thanks @ikitommi)
  • migrated parser to edamame

v0.0.9

27 Aug 20:48
Compare
Choose a tag to compare
v0.0.9 Pre-release
Pre-release
  • enhancement #46: output location information in case of error
  • fix #44: function literal doesn't see name of user defined function

v0.0.8

24 Aug 07:12
Compare
Choose a tag to compare
v0.0.8 Pre-release
Pre-release

A few improvements and bugfixes:

#22: resolve symbols at macro-expansion time so you get a warning before evaluation when using an unresolved symbol
#26: bug in macroexpand of fn literals
#34: make pr-str-ed expressions work as input for eval-string
#42: evaluation improvements and bugfixes

v0.0.7

15 Aug 06:40
Compare
Choose a tag to compare
v0.0.7 Pre-release
Pre-release
  • #18: fix var-args issue
  • #20: implement def

v0.0.6

14 Aug 21:36
9fb8fd7
Compare
Choose a tag to compare
v0.0.6 Pre-release
Pre-release
  • let only evaluated the last expression in the body

v0.0.5

14 Aug 21:14
Compare
Choose a tag to compare
v0.0.5 Pre-release
Pre-release
  • support fn and defn
  • improve anonymous function literals expansion

v0.0.4

13 Aug 22:08
Compare
Choose a tag to compare
v0.0.4 Pre-release
Pre-release
  • add do macro
  • revert patch for random functions, this can be done using a GraalVM setting
  • allow value to be passed that is only evaluated when it's needed (without explicitly writing a deref). This is done by passing a delay value in :bindings with the metadata :sci/deref! on the key (since delays themselves don't support metadata).