For a list of breaking changes, check here.
Thanks to Nextjournal for funding work on prepl. Thanks to the community for taking the time to create issues, discussions and code contributions. Thanks to sponsors on OpenCollective and Github for continued financial support.
- pREPL implementation #664. See docs. The pREPL is used by NextJournal to expose a babashka notebook environment.
- News page where you can follow the latest developments around babashka.
- Expose
pprint/simple-dispatch
#627 - Support nested libspecs borkdude/sci#399
- Add OracleDB feature flag #638 (@holyjak)
- Docker build documentation improvements #643 (@holyjak)
- Implement
get-thread-bindings
,var-get
andvar-set
- Print used port when starting nREPL server (@plexus)
- Can't call symbol literal as function #622
:or
in destructuring broken forfalse
case- Support aliases in protocol fns borkdude/sci#440
- Reader metadata preservation and evaluation fixes #654, borkdude/sci#447, borkdude/sci#448
- Optimization for constant colls borkdude/sci#452
ns-unmap
doesn't work for imported classes borkdude/sci#432- Fix parsing of trailing uneval in reader conditional borkdude/edamame#65
symbol
works on sci var borkdude/sci#453
- Remove cheshire smile functions #658
babashka.curl
now calls curl with--compressed
by default borkdude/babashka.curl#28
Thanks to @tzzh, @Heliosmaster, @lispyclouds and @kwrooijen for contributing to this release. Thanks to Clojurists Together for sponsoring this release. Thanks to Adgoji and other sponsors on OpenCollective and Github for their ongoing support.
- babashka/process: a Clojure library for working with
java.lang.Process
- pod-tzzh-mail: a pod for sending mail by @tzzh
- pod-babashka-lanterna: a pod for creating TUI apps
- pod.xledger.sql-server: a pod for interacting with SQL Server
- Add
lazy-cat
#605 - Support error output in babashka.nrepl babashka.nrepl#28 (@tzzh)
- Add lanterna feature flag (@kwrooijen)
- Add socket support to pods babashka/pods#2
- Add
curl
to borkdude/babashka Docker image to supportbabashka.curl
(@hansbugge) - Add
transit+json
format support to pods babashka/pods#21 - Add
bound?
borkdude/sci#430 - Add portal example
- Add
*print-namespace-maps*
borkdude/sci#428 - Support
clojure.java.io/Coercions
protocol #601 - Add
clojure.pprint/write
#607 - Add pretty-printer vars from
cheshire.core
#619
pprint/print-table
should write tosci/out
#611System/exit
doesn't work in REPL #605- Fix pod destroy function #615
- Bind
*file*
in nREPL server babashka/babashka.nrepl#31 - Support
map->
constructor on defrecords borkdude/sci#431 - Import should return class #610
- The Docker image is now based on Ubuntu instead of Alpine.
This is a patch release for
babashka/babashka.pods#20,
but it also introduces new support around reify
.
- Support
java.nio.file.FileVisitor
andjava.io.FilenameFilter
withreify
#600. Nice side effect: this makes babashka compatible with the fs library:$ export BABASHKA_CLASSPATH=$(clojure -Spath -Sdeps '{:deps {clj-commons/fs {:mvn/version "1.5.2"}}}') $ bb -e '(ns foo (:require [me.raynes.fs :as fs])) (map str (fs/glob "*.md"))' ("/Users/borkdude/Dropbox/dev/clojure/glam/README.md")
- Add classes
java.util.zip.ZipInputStream
andjava.util.zip.ZipEntry
. This makes babashka compatible with glam, a work in progress package manager.
- Ensure ns map exists for namespaces used only "code" vars babashka/babashka.pods#20. This fixes compatibility with bootleg.
Thanks to @RickMoynihan, @joinr, @djblue, @lread, @teodorlu, @tzzh and @zoren for contributing to this release. Thanks to Clojurists Together for sponsoring this release.
- Include
org.httpkit.client
, a high performance async http client #561 - Include
org.httpkit.server
, an HTTP server #556. This namespace should be considered experimental and may stay or be removed in a future version of babashka, depending on feedback from the community. See example - Add
java.io.FileNotFoundException
,java.security.DigestInputStream
,java.nio.file.FileVisitOption
classes - Support implementing
IDeref
,IAtom
andIAtom2
on records sci#401 - Support compatibility with version-clj #565 @lread and @borkdude
- Support YAML roundtrip through
*input*
#583 - Support
clojure.core/find-var
sci#420 @RickMoynihan - Support
clojure.pprint/cl-format
#571 - AWS pod
- Fix location printing in REPL (
--repl
) #598 - Babashka.curl sends form params incorrectly as multipart babashka.curl#25
- Update Windows build instructions #574
- Set minimum macOS version in build explicitly #588
- Fix NPE in error handling logic #587
- Fix namespace switch in REPL (
--repl
) #564 - Fix location of errors in REPL (
--repl
) #589 - Support multi-arity methods in
defprotocol
sci#406 - Constructor call not recognized in protocol impl sci#419
- Improve handling of top-level do in macro expansion sci#421
- Performance improvements suggested by @joinr sci#415
- Throw when trying to redefine referred var sci#398
pprint
is now backed byclojure.pprint/pprint
instead of fipp #571
Thanks to @cldwalker, @dehli, @djblue, @GomoSDG, @grahamcarlyle, @j-cr, @jeroenvandijk, @justone, @kwrooijen, @lread, @patrick-galvin and @wodin for contributing to this release. Thanks to Clojurists Together for sponsoring this release.
- Add support for
clojure.datafy
,Datafiable
andNavigable
#468. To play with the newclojure.datafy
support, you can use portal:$ bb -cp `clj -Spath -Sdeps '{:deps {djblue/portal {:mvn/version "0.4.0"}}}'`
- Add support for building and running uberjars #536. See docs.
- Print context, locals and stack trace on exception #543.
- Expose more transit vars #525 (@djblue)
- Add
add-tap
,tap>
,remove-tap
,class?
,iterator-seq
,remove-watch
,realized?
- Add
clojure.walk/macroexpand-all
- Add
java.lang.ProcessHandle
and better support for killing subprocesses via Java interop. See test script. - Add
clojure.lang.ArityException
and tests to support the circleci/bond library #524 (@cldwalker). - Add
java.time.format.DateTimeParseException
- Fix order of namespaces in uberscript #535
- Fix reading resources from jar files #528
- Switch from canonical to absolute paths in
:file
field on var metadata #532 - Babashka shows wrong filename when error is from required ns #508
- Eval metadata on var created with
defn
borkdude/sci#36 - Metadata fn on var fails if calling the var itself borkdude/sci#363
- Allow re-binding of core vars in with-redefs borkdude/sci#375
- Fix
false
dynamic binding value (which was read asnil
) borkdude/sci#379 - Fix setting of
*warn-on-reflection*
in nREPL session babashka/babashka.nrepl#25 - Fix protocols with multiple methods on defrecords borkdude/sci#367 (@patrick-galvin)
Thanks @llacom, @AndreTheHunterand @xingzheone for contributing to this release.
- Add eldoc support in babashka.nrepl (@borkdude and @llacom)
- Add
java.time.temporal.{TemportalAdjuster, TemporalAmount}
classes - Add
clojure.java.browse/browse-url
#495 - Add classes for cli-matic library (@AndreTheHunter)
- Add
babashka.version
system property #479 - Add
java.net.ConnectException
class - Add
babashka.file
system property to support__name__ = "__main__"
pattern (see docs) #478.
- Make
clojure.test/report
a dynamic var #482, #491 - Make
clojure.test/test-var
a dynamic var - Allow arbitrary Clojure code in tagged literals (previously only EDN was allowed)
- Fix http-server example (@xingzheone)
- Fix bug in
alter-var-root
: it used thread-local binding in updating root value - Fix for invoking
bb -f file.clj
whenfile.clj
was empty
Thanks @jeroenvandijk for contributing to this release.
- Support
:extend-via-metadata
option in protocols - Fix classpath issue for Windows #496
- Add
double-array
,short-array
andclojure.lang.BigInt
for compatibility with clojure.data.generators - Add support for
*print-level*
- Add version info in
:describe
message of babashka.nrepl #471 - Add compatibility for honeysql
(most notable change: support
import
for records)
Thanks @Chowlz and @mharju for contributing to this release.
This release brings compatibility with the
camel-snake-kebab and
aero libraries due to the introduction of
defprotocol
, defrecord
and other enhancements.
- Add
java.io.Console
. This is useful for letting users type in passwords. - Add initial support for
defprotocol
anddefrecord
- Add
default-data-readers
- Fix interop with result of
.environment
method onProcessBuilder
#460 - Disable signal handlers via environment variable for AWS Lambda #462 (@Chowlz). See README.md.
- babashka.curl: fix double quote escaping issue on Windows
- Fix resolving var in syntax-quote from other namespace brought in via
:refer
io/resource
should returnnil
for non-relative paths instead of throwing- Fix field access interop when wrapped in parens:
(Integer/SIZE)
Thanks @martinklepsch and @cldwalker for contributing to this release.
- Add more
java.time
classes. This makes babashka fully compatible with the cljc.java-time library. - Add
java.lang.Float
class - Add
java.nio.file.PathMatcher
class. This allows one to implement a glob function. - Support alternative interop form:
(. Integer -SIZE) ;;=> 32
- #454: syntax check on amount of arguments to
def
- #458: add
clojure.data
namespace
Details about releases prior to v0.1.0 can be found here.
- Remove cheshire smile functions #658
- The Docker image is now based on Ubuntu instead of Alpine.
- The
next.jdbc
namespace and PostgresQL driver, introduced inv0.0.89
, are no longer part of the standardly distributedbb
binary. This is now available behind a feature flag. See feature flag documentation. - borkdude/babashka.curl#16:
Exceptional status codes or nonzero
curl
exit codes will throw exceptions by default. You can opt out with:throw false
.
- babashka.curl#9:
Functions in
babashka.curl
likeget
,post
, etc. now always return a map with:status
,:body
, and:headers
.
- #267 Change behavior of
reader conditionals: the
:clj
branch is taken when it occurs before a:bb
branch.
- #173: Rename
*in*
to*input*
(in theuser
namespace). The reason for this is that it shadowedclojure.core/*in*
when used unqualified.
- #160: Add support for
java.lang.ProcessBuilder
. See docs. This replaces theconch
namespace.