Skip to content

Latest commit

 

History

History
1253 lines (940 loc) · 67.4 KB

CHANGELOG.md

File metadata and controls

1253 lines (940 loc) · 67.4 KB

Changelog

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

Unreleased

  • #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)

1.0.169 (2023-01-03)

  • 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 to print-deps output
  • Update deps.clj / clojure tools to 1.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

1.0.168 (2022-12-07)

  • loop*, fn* are now special forms and loop, fn, defn, defmacro, and and or 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 and url-encode functions from org.httpkit.client (@bobisageek)
  • Add java.util.InputMismatchException

1.0.167 (2022-11-30)

  • #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 of munge for doing ns -> file lookup

1.0.166 (2022-11-24)

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 and run-test-var to clojure.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 and java.net.URLClassLoader (only for compatibility with the clojure.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

1.0.165 (2022-11-01)

  • 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 to 1.6.673
  • Implement in-ns as function, rather than special form (@SignSpice)
  • Bump deps.clj to 1.11.1.1182
  • Bump GraalVM to 22.3.0
  • SCI: don't rely on metadata for record implementation

1.0.164 (2022-10-17)

  • 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 for sci.lang.Namespace, such that (instance? clojure.lang.Namespace *ns*) returns true in bb
  • #1384: allow .indexOf on LazySeq
  • #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 using println (@justone)
  • deps.clj: support for CLJ_JVM_OPTS and JAVA_OPTS (@ikappaki)
  • Fix *print-namespace-maps* when using clojure.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

0.10.163 (2022-09-24)

  • #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 in user 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 (as java.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 and AtomicLong 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 to sci.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.

0.9.162 (2022-09-04)

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 and java.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: fix expand-home on Windows
  • babashka.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.

0.9.161 (2022-07-31)

  • Fix exec

0.9.160 (2022-07-29)

  • Breaking: change exec, introduced in 0.9.159 to a function instead. You now write (exec 'mynamespace.function) instead.

0.9.159 (2022-07-29)

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: improve tokenize
  • Upgrade to GraalVM 22.2.0 (#1325)

0.8.157 (2022-07-01)

  • Add compatibility with metosin/malli {:mvn/version "0.8.9"}.
  • Expose babashka.nrepl.server/start-server!- and stop-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

0.8.156 (2022-06-08)

  • 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 make schema.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 and split-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 to babashka.tasks/shell but in process ns
  • pods: fix benign socket closed exception error output

0.8.2 (2022-05-06)

  • Convey *print-length* to pprint and allow set!
  • 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

0.8.1 (2022-04-15)

  • 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 that doc 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*

0.8.0 (2022-04-04)

New

Enhanced

  • #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 for java.io.PipedInputStream and java.io.PipedOutputStream. Add reflection for java.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

0.7.8 (2022-03-13)

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 reflect bb.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: add windows? predicate
  • SCI: add *clojure-version* and (clojure-version)
  • Add java.util.zip.Deflater and java.util.zip.DeflaterOutputStream
  • SCI: implement declare as macro
  • #938: drop location metadata from symbols, except top level

0.7.7 (2022-03-04)

New

  • #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

Enhancements

  • #1190 tasks: task dependencies resolve as core.async channels
  • Bump tools deps jar to 1.10.3.1087

0.7.6 (2022-02-24)

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

0.7.5 (2022-02-16)

Please leave some feedback about babashka in the 2022 Q1 Survey!

  • SCI: Performance improvements for loops and varargs function invocation.
  • Fix #1170: defmacro with a defrecord 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

0.7.4 (2022-01-25)

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 in copy-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

0.7.3 (2021-12-30)

  • Do not require java for bb tasks without deps #1123, #1124

0.7.2 (2021-12-29)

  • Add spy macro from taoensso.timbre #1087
  • Better error for higher order fn arity mismatch
  • Check shasum / sha256sum in PATH 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)

0.7.0 (2021-12-10)

  • Add compatibility with clojure.spec.alpha. See babashka/spec.alpha and this blog post.
  • Add to-array-2d, aclone, areduce and amap (@MrEbbinghaus)
  • Add inst-ms
  • Add java.util.StringTokenizer
  • clojure.core/read can read with PushbackReader that is not LineNumberingPushbackReader
  • Allow macroexpand on for and doseq (@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)

0.6.8 (2021-12-02)

  • 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 of Exception, fixes hanging with assert

0.6.7 (2021-11-29)

Minor bugfix release:

  • print-deps included :local/root dependency which is not valid outside babashka repo
  • fs/which edge case improvement on Windows #1083

0.6.6 (2021-11-29)

  • 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 with windows? predicate.
  • Add fs/with-temp-dir to babashka.fs (@hugoduncan)
  • Add fs/home and fs/expand-home to babashka.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 with clojure.core/read.
  • Add SQLITE feature flag (@nikvdp)
  • Add javax.crypto.Mac and javax.crypto.spec.SecretKeySpec classes to support development of yaaws-api (@grzm)
  • Add java.net.Inet4Address and java.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

0.6.5 (2021-11-13)

  • 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 to 1.4.627
  • Bump edamame to v0.0.14, fixes parsing of foo@bar
  • Fix segfault when reifying FileVisitor with visitFileFailed #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 on DirectoryStream fails #1061
  • Add support for java.nio.file.attribute.BasicFileAttributes

0.6.4

  • Fix for DEPS_CLJ_TOOLS_VERSION introduced in deps.clj bundled in 0.6.3

0.6.3

  • Add java.security.Provider and java.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, initialize java.sql.SQLException build time #1040
  • Deps.clj: upgrade to tools version 1.10.3.998 and include new DEPS_CLJ_TOOLS_VERSION environment variable to use older or newer tools jar.

0.6.2

  • 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 CLI 1.10.986)
  • Print locals only when debug option is enabled #1015

SCI:

  • Fix order of protocol handling wrt/ extend-type, defrecord and :extend-via-metadata

babashka.curl:

  • Support keywords as query and form param keys (@lispyclouds)

babashka.nrepl:

  • Fix hanging CIDER #45

babashka.fs:

  • Add fs/unzip

0.6.1

  • 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

0.6.0

  • 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 towards java.net.http in favor of the other two solutions currently available in bb: babashka.curl and org.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

0.5.1

  • Add new print-deps subcommand for printing a deps.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 to babashka.fs (@corasaurus-hex)
  • Fixed: with-open fails on java.io.PrintWriter #953
  • Upgrade deps.clj to match Clojure CLI 1.10.3.933
  • Upgrade several other deps

0.5.0

Babashka proper:

  • Add clojure.tools.logging with taoensso.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 with with-out-str #930
  • Support passing GITLIBS via :extra-env in clojure 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:

0.4.6

  • Upgrade to GraalVM 21.1, fixes #884

0.4.5

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.

0.4.4

Babashka proper:

Babashka.nrepl:

  • Error reporting improvement #40

Sci:

  • Support trailing metadata in defn

0.4.3

  • Add cognitect.transit/tagged-value, needed for sql pods

0.4.2

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

0.4.1

  • 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 to shell #836
  • Add babashka.task System property #837
  • Allow thread-first with shell like babashka.process #829

0.4.0

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

0.3.8

  • 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

0.3.7

  • 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

0.3.6

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 in bb.edn See docs. #663
  • Tasks improvements. See issue.

Deps.clj:

  • Windows fixes

Babashka.fs:

  • Allow dir as dest in copy #24
  • Allow dir as dest in move #25

0.3.5

  • Support binf.cljc library by adding ByteBuffer and Charset-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 and bound-fn*

v0.3.4

Babashka:

  • Tasks improvements. See issue.

Deps.clj:

  • Fix arg parsing when invoking from Powershell #42

v0.3.3

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

0.3.2

0.3.1

Babashka proper:

  • Support bb.edn project config with :paths and :deps. See docs.
  • Rewrite CLI arg parsing to to subcommand style invocations: bb --uberjar becomes bb 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:

  • Support tokenizing single string #39
  • Support :extra-env option #40

Deps.clj:

  • Catch up with Clojure CLI 1.10.3.814 #40

Sci:

  • Support new kwargs handling from 1.11.0 #553
  • Allow dynamic :doc on def/defn #554

0.3.0

New

  • 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.

Enhancements / fixes

  • 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 that unzip 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.

v0.2.13

Enhancements / fixes

  • 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:

Sci:

0.2.12

Enhancements / fixes

  • Fix false positive cyclic dep problem with doric lib #741

0.2.11

Enhancements / fixes

  • Use default *print-right-margin* value from clojure.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 and clojure.lang.ILookup

Sci:

Babashka.nrepl:

  • Fix printing in lazy value #36
  • Update link in nREPL server message #37

0.2.10

Sci:

  • Priorize referred vars over vars in current ns #527
  • If with falsy literal returns nil #529

0.2.9

New

Enhancements / fixes

  • Upgrade to GraalVM 21.0.0 #712

Babashka.nrepl:

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

v0.2.8

New

Fixed / enhanced

  • Fix symbol resolution in syntax quote when overwriting core var
  • Performance enhancements

v0.2.7

New

Fixed / enhanced

  • 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)

v0.2.6

New

Fixed / enhanced

  • Auto-resolved map fix #684
  • Handle whitespace after read-cond splice
  • Several performance improvements

Thanks

Special thanks to @lispyclouds for hammocking on the pod registry and working on the new fswatcher pod.

v0.2.5

This release adds a new babashka.deps namespace which offers tools.deps integration. See docs.

New

  • Add get-classpath and split-classpath to babashka.classpath namespace. #670. See docs.
  • Expose add-deps in babashka.deps #677. See docs.
  • Expose clojure in babashka.deps #678. See docs.
  • Implement --clojure option to invoke a JVM clojure process similar to the official Clojure CLI. See docs.

Fixed / enhanced

  • Add syntax checks to binding macro #666
  • Upgrade to GraalVM 20.3.0 #653

v0.2.4

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.

New

  • 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 and var-set
  • Print used port when starting nREPL server (@plexus)

Fixed / enhanced

Changed

v0.2.3 (2020-10-21)

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.

New

Fixed

Changed

  • The Docker image is now based on Ubuntu instead of Alpine.

v0.2.2 (2020-09-30)

This is a patch release for babashka/babashka.pods#20, but it also introduces new support around reify.

New

  • Support java.nio.file.FileVisitor and java.io.FilenameFilter with reify #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 and java.util.zip.ZipEntry. This makes babashka compatible with glam, a work in progress package manager.

Fixed

v0.2.1 (2020-09-25)

Thanks to @RickMoynihan, @joinr, @djblue, @lread, @teodorlu, @tzzh and @zoren for contributing to this release. Thanks to Clojurists Together for sponsoring this release.

New

  • 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 and IAtom2 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

Fixed / enhanced

  • 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 by clojure.pprint/pprint instead of fipp #571

v0.2.0 (2020-08-28)

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.

New

  • Add support for clojure.datafy, Datafiable and Navigable #468. To play with the new clojure.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

Fixed

v0.1.3 (2020-06-27)

Thanks @llacom, @AndreTheHunterand @xingzheone for contributing to this release.

New

  • 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.

Fixed

  • 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 when file.clj was empty

v0.1.2 (2020-06-14)

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 and clojure.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)

v0.1.1 (2020-06-10)

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.

New

  • Add java.io.Console. This is useful for letting users type in passwords.
  • Add initial support for defprotocol and defrecord
  • Add default-data-readers

Enhancements / fixes

  • Fix interop with result of .environment method on ProcessBuilder #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 return nil for non-relative paths instead of throwing
  • Fix field access interop when wrapped in parens: (Integer/SIZE)

v0.1.0 (2020-06-01)

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

Prior to v0.1.0

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

Breaking changes

v0.2.4

  • Remove cheshire smile functions #658

v0.2.3

  • The Docker image is now based on Ubuntu instead of Alpine.

v0.0.90

  • The next.jdbc namespace and PostgresQL driver, introduced in v0.0.89, are no longer part of the standardly distributed bb 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.

v0.0.79

  • babashka.curl#9: Functions in babashka.curl like get, post, etc. now always return a map with :status, :body, and :headers.

v0.0.71

  • #267 Change behavior of reader conditionals: the :clj branch is taken when it occurs before a :bb branch.

v0.0.44 - 0.0.45

  • #173: Rename *in* to *input* (in the user namespace). The reason for this is that it shadowed clojure.core/*in* when used unqualified.

v0.0.43

  • #160: Add support for java.lang.ProcessBuilder. See docs. This replaces the conch namespace.