For a list of breaking changes, check here.
A preview of the next release can be installed from babashka-dev-builds.
Babashka: Native, fast starting Clojure interpreter for scripting
- #1463: Add
java.util.jar.Attributes
class (@jeroenvandijk) - #1456: allow
*warn-on-reflection*
and*unchecked-math*
to be set in socket REPL and nREPL (@axks)
- Implement
ns
,lazy-seq
as macro - Support
--dev-build
flag in installation script - #1451: Allow passing explicit file and line number to clojure.test (@matthewdowney)
- #1280: babashka REPL doesn't quit right after Ctrl-d (@formerly-a-trickster and Alice Margatroid)
- #1446: add
pprint/code-dispatch
- Update zlib to version
1.2.13
(@thiagokokada) - #1454: Add
babashka.process
toprint-deps
output - Update
deps.clj
/ clojure tools to1.11.1.1208
- Add
reader-conditional
function - Fix pretty printing (with
clojure.pprint
) of vars - Upgrade built-in
spec.alpha
- SCI performance improvements: faster JVM interop
loop*
,fn*
are now special forms andloop
,fn
,defn
,defmacro
,and
andor
are implemented as macros. This restores compatibility with rcf- fs: don't touch dirs in
split-ext
- Update to babashka process to v0.4.13: support
(process opts? & args)
syntax everywhere - #1438: expose
query-string
andurl-encode
functions from org.httpkit.client (@bobisageek) - Add
java.util.InputMismatchException
- #1433: spec source as built-in fallback. When not including the
clojure.spec.alpha fork as a
library, babashka loads a bundled version, when
clojure.spec.alpha
is required. - #1430: Fix issue with
bb tasks
throwing on empty display tasks list. - Add note about BSOD when using WSL1, see README.md/quickstart
- SCI: performance improvements
- Better error locations for interop (@bobisageek)
- Fix babashka/babashka.nrepl#59: do not output extra new line with cider pprint
- Use
namespace-munge
instead ofmunge
for doing ns -> file lookup
See the Testing babashka scripts blog post for how to run tests with this release.
- Compatibility with Cognitest test-runner and tools.namespace
- Add
run-test
andrun-test-var
toclojure.test
- Compile distributed uberjar using GraalVM, fixes
babashka.process/exec
for Nix - #1414: preserve metadata on exec task function argument map
- #1269: add lib tests for sluj (@bobisageek)
- Update nix app example in docs
- Add
java.lang.Error
andjava.net.URLClassLoader
(only for compatibility with theclojure.java.classpath
lib) - Deps.clj
deps.clj: 1.11.1.1200
- Upgrade timbre to
6.0.1
- Performance improvements in SCI
- SCI: preserve stack information on
throw
expressions
- Fix #1401: mutation of
deftype
field should be visible in protocol method - Fix #1405: drop name metadata from conditionally defined var
- #602: add lib tests for clj-commons/fs (@bobisageek)
- Add
java.net.URLConnection
class - Add
java.time.zone.ZoneRules
class - Copy more docstrings for core macros and vars
- Bump
core.async
to1.6.673
- Implement
in-ns
as function, rather than special form (@SignSpice) - Bump
deps.clj
to1.11.1.1182
- Bump GraalVM to
22.3.0
- SCI: don't rely on metadata for record implementation
- SCI: optimizations for
let
- Add single argument read method support to PipedInputStream proxy (@retrogradeorbit)
- feat: Honor
*print-namespace-maps*
in pprint (@ghoseb) - #1369: provide
.sha256
files for every released asset - #1397: Add
clojure.lang.Namespace
as alias forsci.lang.Namespace
, such that(instance? clojure.lang.Namespace *ns*)
returnstrue
in bb - #1384: allow
.indexOf
onLazySeq
- #1330: allow
(set! *warn-on-reflection*)
in programmatic nREPL - Better error message when failing to load
bb.edn
(@lispyclouds) - Pods: print and flush to
*out*
and*err*
instead of usingprintln
(@justone) - deps.clj: support for
CLJ_JVM_OPTS
andJAVA_OPTS
(@ikappaki) - Fix
*print-namespace-maps*
when usingclojure.pprint
(@ghoseb) - Process: only slurp
*err*
when inputstream (@ikappaki) - Process: add
alive?
API function (@grzm) - Bump libraries: tools.cli, babashka.cli
- #1391: include raw in
hiccup2.core
ns - #1391: support loading
hiccup.page
when adding hiccup to deps
- #808: support
-Sdeps
option to support passing extra deps map which will be merged last - #1336: tasks subcommand doesn't work with global
-Sforce
option (@bobisageek) - #1340:
defprotocol
methods are missing:doc
metadata (@bobisageek) - #1368:
-x
: do not pick up on aliases inuser
ns - #1367: Fix line number in clojure.test output (@retrogradeorbit)
- #1370: Add
core.async
to-chan!
,to-chan!!
,onto-chan!
(@cap10morgan) - #1358: Expose a subset of
java.lang.ref
to enable hooking into the destruction/GC of objects (@retrogradeorbit) - #1364: Be tolerant of unknown tags in
bb.edn
- Add and expose
babashka.classes/all-classes
to get a list of all available classes (asjava.lang.Class
objects) (@eerohele) - Add more reflection class methods (@eerohele)
- Bump
clj-yaml
- Add
-x
help - Set
TCP_NODELAY
in pods for performance - Expose
clojure.main/with-bindings
- Add
ThreadPoolExecutor
rejection policy classes (@eerohele) - Download but don't run pods when
os.name
/os.arch
don't match (@cap10morgan) - Add
clojure.core.server/stop-server
(@eerohele) - Add
ns-unalias
- Add
AtomicInteger
andAtomicLong
to full interop - Add
PrintWriter-on
- Improve
reify
error messages (@retrogradeorbit) - Expose
core.async
ManyToManyChannel
- fs: add
write-lines
- fs: add
write-bytes
- #1350: map
clojure.lang.Var
tosci.lang.Var
- Use temporary fork of
clj-yaml
with new:load-all
,:unknown-tag-fn
options and preserves strings with numbers that start with zeros as strings (this solves a problem when YAML 1.1 output is read as YAML 1.2.). Once upstream SnakeYAML 1.33 lands, this will be used again.
Check out our new project: bbin: install any Babashka script or project with one command. Thanks @rads!
- Throw exception on attempt to reify multiple interfaces (@retrogradeorbit)
- Allow java.lang.Object reify with empty methods (@retrogradeorbit)
- #1343: Fix postgres feature
- #1345: add
javax.net.ssl.SSLException
andjava.net.SocketTimeoutException
classes (@lread) - Fix
satisfies?
with marker protocol (no methods) - Update
rewrite-clj
- Update
deps.clj
- Update
babashka.cli
- Update
org.clj-commons/clj-yaml
babashka.fs
: fixexpand-home
on Windowsbabashka.fs
: expose:win-exts
- nREPL: preserve stacktrace on exception
- Fix #1322: improve error location
- Fix #1338:
add-watch
segfault - Fix #1339: resolve record name ending with dot.
- Fix
exec
- Breaking: change
exec
, introduced in0.9.159
to a function instead. You now write(exec 'mynamespace.function)
instead.
Read the introductory blog post about the new babashka CLI integration here.
- #1324:
-x
to invoke a function with babashka CLI - #1324:
babashka.tasks/exec
to invoke a function with babashka CLI in tasks - SCI: don't eval metatada on defn body
- SCI issue 774: make interpreter stacktrace available to user
babashka.process
: improvetokenize
- Upgrade to GraalVM 22.2.0 (#1325)
- Add compatibility with
metosin/malli
{:mvn/version "0.8.9"}
. - Expose
babashka.nrepl.server/start-server!
- andstop-server!
-functions to support programmatically starting an nrepl-server.start-server!
is redefined to not require a sci-context as its first argument. - Fix misspelling in script/uberjar:
BABASHKA_FEATURE_TRANSIT
- macOS aarch64 support. Upgrading via brew or the installer script should install the aarch64 version on an M1 system.
- Support for running prismatic/schema from source. There is an open PR for babashka. Until it is merged you can use this fork.
- SCI: many small improvements, especially in
defrecord
(discovered while trying to makeschema.core
work) - Switch version schema to major.minor.release_count.
- babashka.nrepl: fix completions for static Java interop
fs/read-all-lines
, support charset- fs:
strip
andsplit-ext
are less reliant on file system and are now just string operations - Bump cheshire
- Add
babashka.process/exec
for exec call (replacing the current process) - Improve
babashka.process/tokenize
- #1264: add support for calling
ScheduledExecutorService
- Add support for
sun.misc.SignalHandler
- Add
java.net.BindException
,clojure.lang.AFunction
,AbstractMethodError
- Upgrade httpkit to
2.6.0-RC1
- Add
process/shell
, similar tobabashka.tasks/shell
but in process ns - pods: fix benign socket closed exception error output
- Convey
*print-length*
to pprint and allowset!
babashka.nrepl
: support pprint length- SCI: support invoking field, without dash
- Add compatibility with clojure numeric tower
- Update deps.clj to tools jar
1.11.1.1113
- Compatibility with fipp and puget
- Fix #1233: don't print error to stdout in prepl
- Update process with
:pre-start-fn
option - Update fs with
cwd
and Windows glob improvements - Expose edamame, fixes #549 and #1258 (#1259)
- Support
BABASBHKA_PODS_DIR
environment variable
- Add
prepare
subcommand to download deps & pods and cache pod metadata - #1041: Improve error message when regex literal in EDN config
- #1223: Ensure that var metadata (specifically
:name
) aligns with the var's symbol (which in turn ensures thatdoc
will print the var's name) - #556 Add server-status to org.httpkit.server
- #1231: missing methods in
reify
should fall back to default interface methods - Fix destructuring in defrecord protocol impls
- Support
*print-dup*
- #863: allow pods to be declared in
bb.edn
and load them when required. See pod library docs and the entry in the babashka book for details.
- #1216: support
core.async/alts!
using polyfill - #1220: add reflection on java.util.concurrent.Future
- #1211: return exit code 130 on sigint
- #1224: add
proxy
support forjava.io.PipedInputStream
andjava.io.PipedOutputStream
. Add reflection forjava.utils.Scanner
. - babashka.curl#43 fix: last set-cookie headers on a page overwrites the ones before
- #1216: fix
core.async
alts example with polyfill - SCI: support
let*
special form - Add compatibility with GraalVM 22.1
- Bump timbre
- Bump Clojure to 1.11.0
- Pods: support Rosetta2 fallback
- Process: fix for pprint
- Fs: improvement for which: do not match on local paths
- Proxy support for PipedInputStream and PipedOutputStream
- Expose
java.util.Scanner
for interop - Bump Selmer
- Add
->Eduction
- Add
*unchecked-math
for compatibility
This release improves compatibility with several libraries: loom, hugsql.core and specter!
To use specter in babashka, use the following coordinates:
{:deps {com.rpl/specter {:mvn/version "1.1.4"}}}
- Add
clojure.data.priority-map
as built-in library - this makes babashka compatible with aysylu/loom - Add part of
clojure.tools.reader.reader-types
to support hugsql.core - #1204 add property
babashka.config
to reflectbb.edn
location (@mknoszlig) - Several fixes and enhancements to run Red Planet Lab's specter library in babashka
- #1199: support
print-method
impls on records babashka.fs
: addwindows?
predicate- SCI: add
*clojure-version*
and(clojure-version)
- Add
java.util.zip.Deflater
andjava.util.zip.DeflaterOutputStream
- SCI: implement
declare
as macro - #938: drop location metadata from symbols, except top level
- #1187 tasks: Add
:result
key to(current-task)
map that can be used in:leave
task hook - #1192: expose
*assert*
- Add
clojure.instant/parse-timestamp
- Compatibility with at-at by adding:
java.text.SimpleDateFormat
java.util.concurrent.ThreadPoolExecutor
java.util.concurrent.ScheduledThreadPoolExecutor
- Add
pprint/get-pretty-writer
- #1190 tasks: task dependencies resolve as core.async channels
- Bump tools deps jar to
1.10.3.1087
Please leave some feedback about babashka in the 2022 Q1 Survey!
- SCI performance improvements
- Bump clj-yaml to 0.7.1.108
- #1181: clojure.test report does not respect test-out correctly
- #1180: limit bb tasks output to first line of docstring
- babashka.process: support appending to
:out
file - babashka.fs: add
create-temp-file
,read-attributes*
,zip
Please leave some feedback about babashka in the 2022 Q1 Survey!
- SCI: Performance improvements for loops and varargs function invocation.
- Fix #1170:
defmacro
with adefrecord
inside fails to resolve classname in protocol implementation. - Bump deps.clj to tools jar
1.10.3.1082
. - Upgrade to GraalVM 22.0.0.2.
- Add
halt-when
. - Add
java.io.Data
classes - Add compatibility with clojure-msgpack
- Upgrade to clojure 11 beta1
- Bump transit to 1.0.329
Please leave some feedback about babashka here.
- Add new namespace from clojure 1.11:
clojure.math
- Add new vars from clojure 1.11:
abs
,iteration
- Add compatibility with
org.clojure/algo.monads
- SCI: support
:as-alias
- SCI: add
pop!
(@kbaba1001) deps.clj
: update to clojure CLI 1.10.3.1058- Add metabom jar to docker images #1133 (@kipz, @lispyclouds)
- Add opencontainers annotations to docker image #1134 (@kipz, @lispyclouds)
- Fix Alpine Linux Docker images in CI script #1140 (@kipz, @lispyclouds)
babashka.fs
: create dirs incopy-tree
(@duzunov)- SCI: fix order of metadata evaluation (@erdos)
- Fix: cannot take value of macro of
->
- Fix #1144: cannot create multidimensional arrays
- Fix #1143: allow optional (ignored)
--
when using using--main
(@grzm) - SCI: throw when
recur
is used from non-tail position - Add more libraries to CI lib tests (@cljwalker)
- Upgrade several built-in deps:
org.clojure/clojure
,cheshire
,core.async
,test.check
- Add
spy
macro fromtaoensso.timbre
#1087 - Better error for higher order fn arity mismatch
- Check
shasum
/sha256sum
inPATH
on install script (@thiagokokada) - Build arm64 docker image in CI #1099 (@cap10morgan)
- Upgrade to
edamame
v0.0.19 - Load tasks and deps from other bb.edn file using
--config
and--deps-root
options #1110 - Uberscript improvements #584, #1037
- Include native elements in printed stacktrace #1105
- Missing error message when exception happens in REPL print #1116
- Undeprecate
$
in babashka.process - Add lots of library tests to CI (@cldwalker)
- Release SNAPSHOT builds to babashka-dev-builds (use only for testing)
- Add compatibility with
clojure.spec.alpha
. See babashka/spec.alpha and this blog post. - Add
to-array-2d
,aclone
,areduce
andamap
(@MrEbbinghaus) - Add
inst-ms
- Add
java.util.StringTokenizer
clojure.core/read
can read withPushbackReader
that is notLineNumberingPushbackReader
- Allow macroexpand on
for
anddoseq
(@erdos) - Add
clojure.instant/read-instant-date
- Add
StackTraceElement->vec
- Add
memfn
- Implement Java field access (for
clojure.spec.alpha
) - Warn on requiring
clojure.spec.alpha
, suggesting to use babashka/spec.alpha - Warn on requiring
clojure.core.specs.alpha
, suggesting to explicitly add it to deps - Deprecate
$
in babashka.process (still available, but no longer recommended)
- Add
reader-conditional?
,test
- Deps.clj: bump to tools jar
1.10.3.1040
- Babashka.process: support
deref
with timeout (@SevereOverfl0w) - Add new functions from clojure 1.11 alpha 3 except
clojure.java.math
- nREPL server: catch
Throwable
instead ofException
, fixes hanging withassert
Minor bugfix release:
print-deps
included:local/root
dependency which is not valid outside babashka repofs/which
edge case improvement on Windows #1083
- Resolve program in
babashka.process
on Windows using known extensions. This means you can now invoke(shell "yarn")
and it will work on both Unix-like systems and Windows. - Add
babashka.core
namespace withwindows?
predicate. - Add
fs/with-temp-dir
tobabashka.fs
(@hugoduncan) - Add
fs/home
andfs/expand-home
tobabashka.fs
(@Kineolyan) clojure.core/read
improvements: support:eof
+:read-cond
- Add support
*read-eval*
,*default-reader-fn*
and*reader-resolver*
dynamic vars to be used withclojure.core/read
. - Add
SQLITE
feature flag (@nikvdp) - Add
javax.crypto.Mac
andjavax.crypto.spec.SecretKeySpec
classes to support development of yaaws-api (@grzm) - Add
java.net.Inet4Address
andjava.net.Inet6Address
classes - Fix
--version
option, don't read cp file. #1071 (@bobisageek) - Add classes to support running the
xforms library from source:
java.util.ArrayDeque
java.util.ArrayList
java.util.Collections
java.util.Comparator
java.util.NoSuchElementException
babashka.curl
: support:as :bytes
option to download binary file- Add compatibility with hato and
clj-http-lite insecure feature
by adding classes:
java.net.CookiePolicy
java.net.http.HttpTimeoutException
javax.net.ssl.HostnameVerifier
javax.net.ssl.HttpsURLConnection
javax.net.ssl.KeyManagerFactory
javax.net.ssl.SSLSession
javax.net.ssl.TrustManagerFactory
java.security.KeyStore
java.util.zip.Inflater
java.util.zip.ZipException
- Compatibility with a fork of tools.namespace. This allows running the Cognitect test-runner (Cognitest) from source.
- Add various
tools.build
related classes for running parts of tools.build with bb (@hugoduncan). Keep an eye on this repo. - Deps.clj: upgrade tools jar, support checking manifest staleness (see TDEPS-83)
- Add
clojure.lang.IPersistentList
(@FieryCod) - The contajners library is now compatible with babashka
- Support
Object
toString
override on defrecords #999. - Bump to GraalVM 21.3.0 JVM 11
- Bump
core.async
to1.4.627
- Bump edamame to
v0.0.14
, fixes parsing offoo@bar
- Fix segfault when reifying
FileVisitor
withvisitFileFailed
#1055 - Add
PGProperty
fields to reflection config (fix for postgres feature flag) #1046 (@bobisageek) - Fix for
babashka.fs/unzip
when entry in dir comes before dir in entries - Calling
.close
onDirectoryStream
fails #1061 - Add support for
java.nio.file.attribute.BasicFileAttributes
- Fix for
DEPS_CLJ_TOOLS_VERSION
introduced in deps.clj bundled in 0.6.3
- Add
java.security.Provider
andjava.security.Security
. This adds compatibility with clj-commons/digest. - Fix mapping for
babashka.fs/unzip
#1030 - Pods: support metadata in pod vars, like docstrings (@quoll)
- babashka.curl: support
:follow-redirects false
(@sudorock) - Add support for
--init
as a file to be loaded before evaluation actions #1033 (@bobisageek) - Bump rewrite-clj to v1.0.699-alpha (@yannvanhalewyn)
- Fix
BABASHKA_FEATURE_POSTGRESQL
feature flag, initializejava.sql.SQLException
build time #1040 - Deps.clj: upgrade to tools version
1.10.3.998
and include newDEPS_CLJ_TOOLS_VERSION
environment variable to use older or newer tools jar.
- Add
java.util.zip.ZipFile
,java.util.stream.BaseStream
- Fix data reader for clojure.data.xml and
*input*
#1004 (@bobisageek) - Upgrade
deps.clj
(matches clojure CLI1.10.986
) - Print locals only when debug option is enabled #1015
- Fix order of protocol handling wrt/
extend-type
,defrecord
and:extend-via-metadata
- Support keywords as query and form param keys (@lispyclouds)
- Fix hanging CIDER #45
- Add
fs/unzip
- Fix for
java-http-clj
send-async
#997 - Add
PipedInput/OutputStream
#1001 aarch64
static binaries are compiled with"-H:+StaticExecutableWithDynamicLibC"
SCI:
- Self-referential function returns wrong binding in presence of laziness #1006
- Support for
java.net
HTTP Client. This enables running java-http-clj from source. The raw interop is the first part of a multi-stage plan to move all http related scripting towardsjava.net.http
in favor of the other two solutions currently available inbb
:babashka.curl
andorg.httpkit.client
. (@grzm) - Add
*print-readably*
and*flush-on-newline*
#959 - Support
:clojure.core/eval-file metadata
#960 - Add
clojure.data.xml/alias-uri
#995 - Make REPL requires available in expression on command line #972 (@bobisageek)
- Fix docstrings and metadata for large number of vars #957 (@bobisageek)
- Upgrade
deps.clj
/tools.jar
to match Clojure CLI 1.10.3.967 - Add (limited) support for
java.lang.reflect.Method
(getName
only) #969 - Use tagged-literal for unknown tags when reading EDN via
*input*
#975 (@bobisageek) - Logging feature flag and
tools.logging.readable
#981 (@bobisageek) - Migrate GraalVM config to uberjar #973 (@ericdallo)
- Upgrade to GraalVM 21.2.0
- Add new
print-deps
subcommand for printing adeps.edn
map and classpath which includes all built-in deps. This can be used for editor tooling like Cursive and clojure-lsp, but also for migrating a babashka project to a Graal native-image project. - Upgrade
clj-yaml
to 0.7.107 which adds two new vars:generate-stream
,parse-stream
- Add
timbre/merge-config!
- Add
strip-ext
tobabashka.fs
(@corasaurus-hex) - Fixed:
with-open
fails onjava.io.PrintWriter
#953 - Upgrade
deps.clj
to match Clojure CLI1.10.3.933
- Upgrade several other deps
Babashka proper:
- Add
clojure.tools.logging
withtaoensso.timbre
as the default implementation - Source compatibility with
org.clojure/data.json {:mvn/version "2.4.0"}
- Support
pprint/formatter-out
#922 - Support
pprint/cl-format
withwith-out-str
#930 - Support passing
GITLIBS
via:extra-env
inclojure
to set git lib dir:(clojure {:extra-env {"GITLIBS" ".gitlib"}} ...)
#934 - Add
--force
option to force recomputation of babashka deps classpath. - Add
java.io.FileInputStream
. This fixes compatibility with replikativ/hasch. - Update Selmer to
1.12.44
, include<<
interpolation macro - Passing form on Windows with question mark breaks evaluation #889
- Fix
(read-line)
in REPL #899 babashka.tasks/clojure
with:dir
option doesn't resolve deps in:dir
#914
Deps.clj:
Update to v0.0.16 which corresponds to clojure CLI 1.10.3.855
.
Sci:
- Perf improvements
case
expression generated from macro doesn't work correctly- Fix stacktrace with invalid import borkdude/sci#589
Special thanks to:
- @bobisageek for spending time and energy on getting the majority of tests to work on Windows.
- @ptaoussanis for creating timbre.
- @puredanger for accepting patches to data.json which made it compatible with babashka.
- Upgrade to GraalVM 21.1, fixes #884
Babashka proper:
- Add
java.net.InetSocketAddress
- Add support for slingshot #675
- Add STM facilities (
dosync
,ref
, etc.) - Fix
.wait
,.notify
interop on arbitrary classes
Deps.clj (used for resolving deps and clojure
invocations):
- Fix JVM option parsing #46
Sci: various minor performance improvements.
Babashka proper:
- Print ex-data in error report #730 (@GreshamDanielStephens, @rng-dynamics)
- Tasks: support dynamic vars #865
- Tasks: use stable namespace when using
run
#865 - Add
java.lang.ProcessHandle$Info
#872 - Add
java.util.Optional
#872 - Add
java.lang.StackTraceElement
(to gain compatibility with libraries such as omniconf)
Babashka.nrepl:
- Error reporting improvement #40
Sci:
- Support trailing metadata in
defn
- Add
cognitect.transit/tagged-value
, needed for sql pods
Babashka proper:
- Improve
clojure.java.browse
, add*open-url-script*
#846 (@thiagokokada) - Add
--checksum
option to install script #842 (@thiagokokada) - Add more agent functions and fix binding conveyance
- Better error handling for parallel tasks #847
- Use
sequential?
for identifying if the script output needs splitting (@arichiardi)
Babashka.pods:
- Allow pods to set custom transit read and write handlers
- Base static linux build on musl. The binary should now work in most linuxes out of the box. (@lispyclouds, @thiagokokada)
- Add
NullPointerException
to default imports - Add
thread-bound?
function - Expose escaping functions from
selmer.util
#835 - Fix Windows GraalVM config for httpkit
- Add
:error-fn
option toshell
#836 - Add
babashka.task
System
property #837 - Allow thread-first with
shell
likebabashka.process
#829
Babashka proper:
- Add Task runner feature
- Add
java.util.zip.ZipOutputStream
class - Add
java.text.ParseException
exception class to support jasentaa parser combinator library - Update Selmer to 1.12.40
Sci:
- Better error msg for protocol not found or class
- Add Selmer to built-in libraries #821
- Don't throw when
PATH
isn't set during deps resolving (@ieugen) - Add
with-precision
macro #662 - Task changes and improvements, see issue
- Ignore local and global deps.edn when resolving deps for
bb.edn
#807 - Use
IllegalArgumentException
when throwing on duplicate case constants #809 - Fix --classpath when no additional args are passed #811
- Task changes and improvements, see issue
Babashka proper:
- Add check for arg count to
for
macro #767 - Ignore empty classpath entries #780
- Fix uberjar CLI parsing and throw when no classpath is provided #780
- Support
:min-bb-version
inbb.edn
See docs. #663 - Tasks improvements. See issue.
Deps.clj:
- Windows fixes
Babashka.fs:
- Support binf.cljc library by adding
ByteBuffer
andCharset
-related classes #784 - Tasks improvements. See issue.
- Add
java.security.SecureRandom
#790
Sci:
- Add
aset-byte
,aset-boolean
,aset-short
, etc. - Add
bit-clear
- Add
bound-fn
andbound-fn*
Babashka:
- Tasks improvements. See issue.
Deps.clj:
- Fix arg parsing when invoking from Powershell #42
Babashka:
- Fix building uberjar with classpath from
bb.edn
#776 - Provide linux arm64 static binaries #782
- Upgrade to Clojure
1.11.0-alpha1
to get full map passing to kwargs function support - First cut of bb tasks #778. This is a preview version which is expected to change. Please try it out but use with caution.
Deps.clj:
- Bump tools jar to to 1.10.3.822
Fs:
delete-tree
should not throw when dir does not exist #22
Sci:
- Bug with protocol methods in record where later arg overrides "this" #557
- Support
:rename
in:refer-clojure
#558
- Include rewrite-clj into babashka #769 .
Babashka proper:
- Support
bb.edn
project config with:paths
and:deps
. See docs. - Rewrite CLI arg parsing to to subcommand style invocations:
bb --uberjar
becomesbb uberjar
- Support fully qualified symbol in
--main
option #758. See docs. - Support new
doc
option to retrieve a docstring from the command line
Babashka.fs:
- Create target dir automatically in
copy-tree
Babashka.nrepl:
Babashka.process:
Deps.clj:
- Catch up with Clojure CLI 1.10.3.814 #40
Sci:
- Linux support for AArch64 #241. This means you can now run babashka on Raspberry Pi 64bit and Chromebooks with ARM 64-bit processors!
A major thanks to CircleCI for enabling AArch64 support in the babashka organization and GraalVM for supporting this platform.
- Fix
print-method
when writing to stdout #667 - Fix interop with
System/out
#754 - Support version-clj v2.0.1 by adding
java.util.regex.Matcher
to the reflection config - Distribute linux and macOS archives as
tar.gz
. The reason is thatunzip
is not pre-installed on most unix-y systems. (@grazfather)
Babashka.fs:
- Fix globbing on Windows
- Fix Windows tests
- Fix issue with
copy-tree
when dest dir doesn't exist yet
Thanks @lread for his help on fixing issues with Windows.
Sci:
- Support
:reload-all
#552 - Narrow
reify
to just one class. See discussion in sci#549. - Add preliminary support for
proxy
(mainly to support pathom3 smart maps) sci#550.
Thanks to @wilkerlucio and @GreshamDanielStephens for their help and discussions.
- Add more interfaces to be used with
reify
(@wilkerlucio) (mostly to support smart maps with pathom3)
Babashka.curl:
- Use
--data-binary
when sending files or streams #35
Babashka.fs:
- Add
create-link
andsplit-paths
(@eamonnsullivan) - Add
split-ext
andextension
(@kiramclean) - Add
regular-file?
(@tekacs) - Globbing is always recursive but should not be #18
Sci:
- Allow combinations of interfaces and protocols in
reify
#540 (@GreshamDanielStephens) - Fix metadata on non-constant map literal expression #546
- Fix false positive cyclic dep problem with doric lib #741
- Use default
*print-right-margin*
value fromclojure.pprint
- Upgrade httpkit to 2.5.3 #738
- Upgrade tools.cli to 1.0.206
- Add several classes to be used with
defprotocol
(PersistentVector
,PersistentHashSet
, ...) - Support reifying
clojure.lang.IFn
andclojure.lang.ILookup
Sci:
- Detect cyclic load dependencies #531
- Pick fn arity independent of written order #532 (@GreshamDanielStephens)
(instance? clojure.lang.IAtom 1)
returnstrue
#537- Add
dissoc!
(@wilkerlucio) - Add
force
- Fix
ns-unmap
on referred var #539
Babashka.nrepl:
Sci:
- Include babashka.fs
- Upgrade to GraalVM 21.0.0 #712
Babashka.nrepl:
- Implement pprint support #18 (@kolharsam, @grazfather, @bbatsov)
Sci:
- 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
- Include clojure.core.match #594
- Include hiccup #646
- Include clojure.test.check #487. Included namespaces:
- clojure.test.check
- clojure.test.check.generators
- clojure.test.check.properties
- Fix symbol resolution in syntax quote when overwriting core var
- Performance enhancements
- Add Alpine Docker images #699 (@lispyclouds)
- Add
pp
fromclojure.pprint
#707
- Fix issue with unzipping nested directory babashka/pod-registry#4
- Test cannot be defined conditionally #705
- Add
--download-dir
option to install script #688 (instance? clojure.lang.Fn x)
now works- (.keySet {:a 1}) returns nil #711
- Various performance enhancements
- Babashka.curl: allow keywords as header names #32 (@xificurC)
- Implement pod registry to automatically obtain pods when used in script. #690
- Buddy pod #656
- Etaoin pod 0.0.1 release
- Filewatcher pod 0.0.1 release
- Fswatcher pod (@lispyclouds)
- Auto-resolved map fix #684
- Handle whitespace after read-cond splice
- Several performance improvements
Special thanks to @lispyclouds for hammocking on the pod registry and working on the new fswatcher pod.
This release adds a new babashka.deps
namespace which offers tools.deps
integration. See
docs.
- Add
get-classpath
andsplit-classpath
tobabashka.classpath
namespace. #670. See docs. - Expose
add-deps
inbabashka.deps
#677. See docs. - Expose
clojure
inbabashka.deps
#678. See docs. - Implement
--clojure
option to invoke a JVM clojure process similar to the official Clojure CLI. See docs.
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 babashka/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 babashka/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. - babashka/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.