Releases: babashka/sci
Releases · babashka/sci
v0.1.0
See CHANGELOG.md for release notes.
v0.0.12
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
inrequire
form - JS interop improvements
v0.0.11
New
- #126: support reader conditionals
- #130: add
assert
,ex-message
,fn?
,namespace
,prn-str
,print-str
,doall
,dorun
,run!
,reset-vals!
,swap-vals!
,some->
(thanks @jeroenvandijk for adding some of these) - #137: add sci logo (thanks @lread)
- #146, #147 interop support via reflection. See https://borkdude.github.io/sci/#classes.
- #169: implement namespaces
- #174: add the
clojure.walk
namespace - #175: add reified vars,
binding
,with-in-str
,with-out-str
, andfuture
. See https://borkdude.github.io/sci/#vars.
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
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
v0.0.9
v0.0.8
v0.0.7
v0.0.6
v0.0.5
v0.0.4
- 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).