Merge branch 'master' into clojure-test-from-src

This commit is contained in:
Michiel Borkent 2024-10-30 16:52:11 +01:00
commit 107fc028f2
24 changed files with 121 additions and 42 deletions

View file

@ -5,7 +5,7 @@
[clojure.string :as str] [clojure.string :as str]
[flatland.ordered.map :refer [ordered-map]])) [flatland.ordered.map :refer [ordered-map]]))
(def graalvm-version "22") (def graalvm-version "23")
(defn run (defn run
([cmd-name cmd] ([cmd-name cmd]
@ -84,7 +84,8 @@
:BABASHKA_PLATFORM "linux" :BABASHKA_PLATFORM "linux"
:GRAALVM_VERSION graalvm-version :GRAALVM_VERSION graalvm-version
:GRAALVM_HOME graalvm-home :GRAALVM_HOME graalvm-home
:BABASHKA_TEST_ENV "jvm"} :BABASHKA_TEST_ENV "jvm"
:BABASHKA_SHA (System/getenv "CIRCLE_SHA1")}
:resource_class "large" :resource_class "large"
:steps :steps
(gen-steps (gen-steps
@ -128,7 +129,8 @@ java -jar \"$jar\" --config .build/bb.edn --deps-root . release-artifact \"$refl
"macos" "macos"
platform) platform)
:BABASHKA_TEST_ENV "native" :BABASHKA_TEST_ENV "native"
:BABASHKA_XMX "-J-Xmx6500m"} :BABASHKA_XMX "-J-Xmx6500m"
:BABASHKA_SHA (System/getenv "CIRCLE_SHA1")}
env (if (= "aarch64" arch) env (if (= "aarch64" arch)
(assoc env :BABASHKA_ARCH arch) (assoc env :BABASHKA_ARCH arch)
env) env)

View file

@ -5,7 +5,7 @@ task:
skip: "changesIncludeOnly('logo/*', '**.md')" skip: "changesIncludeOnly('logo/*', '**.md')"
env: env:
LEIN_ROOT: "true" LEIN_ROOT: "true"
GRAALVM_VERSION: "22" GRAALVM_VERSION: "23"
GRAALVM_HOME: ${HOME}/graalvm-${GRAALVM_VERSION}/Contents/Home GRAALVM_HOME: ${HOME}/graalvm-${GRAALVM_VERSION}/Contents/Home
BABASHKA_PLATFORM: macos # used in release script BABASHKA_PLATFORM: macos # used in release script
BABASHKA_ARCH: aarch64 BABASHKA_ARCH: aarch64
@ -24,6 +24,8 @@ task:
sudo /usr/sbin/softwareupdate --install-rosetta --agree-to-license sudo /usr/sbin/softwareupdate --install-rosetta --agree-to-license
java -version java -version
export BABASHKA_SHA=$(git rev-parse HEAD)
script/uberjar script/uberjar
# curl -sLO 'https://github.com/babashka/pgo-profiles/releases/download/2023.10.11/default.iprof' # curl -sLO 'https://github.com/babashka/pgo-profiles/releases/download/2023.10.11/default.iprof'
script/compile # --pgo=default.iprof script/compile # --pgo=default.iprof

View file

@ -24,6 +24,7 @@ jobs:
LEIN_ROOT: "true" LEIN_ROOT: "true"
BABASHKA_PLATFORM: linux # could be used in jar name BABASHKA_PLATFORM: linux # could be used in jar name
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
BABASHKA_SHA: ${{ github.sha }}
steps: steps:
- name: Git checkout - name: Git checkout
uses: actions/checkout@v2 uses: actions/checkout@v2
@ -102,11 +103,12 @@ jobs:
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
env: env:
LEIN_ROOT: "true" LEIN_ROOT: "true"
GRAALVM_VERSION: "22" GRAALVM_VERSION: "23"
BABASHKA_PLATFORM: ${{ matrix.name }} # used in release script BABASHKA_PLATFORM: ${{ matrix.name }} # used in release script
BABASHKA_TEST_ENV: native BABASHKA_TEST_ENV: native
BABASHKA_XMX: "-J-Xmx6500m" BABASHKA_XMX: "-J-Xmx6500m"
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
BABASHKA_SHA: ${{ github.sha }}
steps: steps:
- name: Git checkout - name: Git checkout
uses: actions/checkout@v2 uses: actions/checkout@v2
@ -126,7 +128,7 @@ jobs:
if: "matrix.static == false" if: "matrix.static == false"
uses: graalvm/setup-graalvm@v1 uses: graalvm/setup-graalvm@v1
with: with:
java-version: '22' java-version: '23'
distribution: 'graalvm' distribution: 'graalvm'
components: 'native-image' components: 'native-image'
github-token: ${{ secrets.GITHUB_TOKEN }} github-token: ${{ secrets.GITHUB_TOKEN }}
@ -135,7 +137,7 @@ jobs:
if: "matrix.static == true" if: "matrix.static == true"
uses: graalvm/setup-graalvm@v1 uses: graalvm/setup-graalvm@v1
with: with:
version: '22' version: '23'
distribution: 'graalvm' distribution: 'graalvm'
components: 'native-image' components: 'native-image'
native-image-musl: true native-image-musl: true
@ -217,13 +219,13 @@ jobs:
run: mkdir -p /tmp/release run: mkdir -p /tmp/release
- name: Download linux binary - name: Download linux binary
uses: actions/download-artifact@v2 uses: actions/download-artifact@v4.1.7
with: with:
name: babashka-${{ steps.babashka-version.outputs.version }}-linux-amd64.zip name: babashka-${{ steps.babashka-version.outputs.version }}-linux-amd64.zip
path: /tmp/release path: /tmp/release
- name: Download static linux binary - name: Download static linux binary
uses: actions/download-artifact@v2 uses: actions/download-artifact@v4.1.7
with: with:
name: babashka-${{ steps.babashka-version.outputs.version }}-linux-static-amd64.zip name: babashka-${{ steps.babashka-version.outputs.version }}-linux-static-amd64.zip
path: /tmp/release-static path: /tmp/release-static

View file

@ -9,12 +9,44 @@ A preview of the next release can be installed from
## Unreleased ## Unreleased
- Clojure 1.12 interop: method thunks, FI coercion, array notation - [#1752](https://github.com/babashka/babashka/issues/1752): include `java.lang.SecurityException` for `java.net.http.HttpClient` support
- [#1748](https://github.com/babashka/babashka/issues/1748): add `clojure.core/ensure`
- Upgrade to `taoensso/timbre` `v6.6.0`
## 1.12.194 (2024-10-12)
- Upgrade to GraalVM 23
- [#1743](https://github.com/babashka/babashka/issues/1743): fix new fully qualified instance method in call position with GraalVM 23
## 1.12.193 (2024-10-11)
- Clojure 1.12 interop: method thunks, FI coercion, array notation (see below)
- Upgrade SCI reflector based on clojure 1.12 and remove specific workaround for - Upgrade SCI reflector based on clojure 1.12 and remove specific workaround for
`Thread/sleep` interop `Thread/sleep` interop
- Add `tools.reader.edn/read` - Add `tools.reader.edn/read`
- Fix [#1741](https://github.com/babashka/babashka/issues/1741): `(taoensso.timbre/spy)` now relies on macros from `taoensso.encore` previously not available in bb - Fix [#1741](https://github.com/babashka/babashka/issues/1741): `(taoensso.timbre/spy)` now relies on macros from `taoensso.encore` previously not available in bb
Examples of the new Clojure interop:
``` clojure
;; Qualified methods in call position:
(String/.length "123") ;;=> 3
(String/new "123") ;;=> "123"
;; Qualified methods in value position, as functions:
(map Integer/parseInt ["1" "22" "333"]) ;;=> (1 22 333)
(map String/.length ["1" "22" "333"]) ;;=> (1 2 3)
(map String/new ["1" "22" "333"]) ;;=> ("1" "22" "333")
;; Typed multi-dimensional array class notation:
long/1 ;;=> 1-dimensional long array class
String/2 ;;=> 2-dimensional String array class
;; Pass Clojure IFn to Java where `java.util.function.Predicate`, etc. is expected:
(into [] (doto (java.util.ArrayList. [1 2 3]) (.removeIf even?))) ;;=> [1 3]
(.computeIfAbsent (java.util.HashMap.) "abc" #(str % %)) ;;=> "abcabc"
```
## 1.4.192 (2024-09-12) ## 1.4.192 (2024-09-12)
- Upgrade Clojure to `1.12.0` - Upgrade Clojure to `1.12.0`

View file

@ -5,7 +5,7 @@ RUN apt update
RUN apt install --no-install-recommends -yy build-essential zlib1g-dev RUN apt install --no-install-recommends -yy build-essential zlib1g-dev
WORKDIR "/opt" WORKDIR "/opt"
ENV GRAALVM_VERSION="22" ENV GRAALVM_VERSION="23"
ARG TARGETARCH ARG TARGETARCH
# Do not set those directly, use TARGETARCH instead # Do not set those directly, use TARGETARCH instead
ENV BABASHKA_ARCH= ENV BABASHKA_ARCH=

View file

@ -7,8 +7,8 @@ image: Visual Studio 2022
clone_folder: C:\projects\babashka clone_folder: C:\projects\babashka
environment: environment:
GRAALVM_HOME: C:\projects\babashka\graalvm\graalvm-jdk-22+36.1 GRAALVM_HOME: C:\projects\babashka\graalvm\graalvm-jdk-23+37.1
JAVA_HOME: C:\projects\babashka\graalvm\graalvm-jdk-22+36.1 JAVA_HOME: C:\projects\babashka\graalvm\graalvm-jdk-23+37.1
BABASHKA_XMX: "-J-Xmx5g" BABASHKA_XMX: "-J-Xmx5g"
skip_commits: skip_commits:
@ -44,7 +44,7 @@ clone_script:
build_script: build_script:
# TODO: Extract the zip by removing the top level folder to remove the hardcoded path for GRAALVM_HOME # TODO: Extract the zip by removing the top level folder to remove the hardcoded path for GRAALVM_HOME
- cmd: >- - cmd: >-
powershell -Command "if (Test-Path('graalvm')) { return } else { (New-Object Net.WebClient).DownloadFile('https://download.oracle.com/graalvm/22/archive/graalvm-jdk-22_windows-x64_bin.zip', 'graalvm.zip') }" powershell -Command "if (Test-Path('graalvm')) { return } else { (New-Object Net.WebClient).DownloadFile('https://download.oracle.com/graalvm/23/archive/graalvm-jdk-23_windows-x64_bin.zip', 'graalvm.zip') }"
powershell -Command "if (Test-Path('graalvm')) { return } else { Expand-Archive graalvm.zip graalvm }" powershell -Command "if (Test-Path('graalvm')) { return } else { Expand-Archive graalvm.zip graalvm }"
@ -61,6 +61,8 @@ build_script:
# see https://github.com/quarkusio/quarkus/pull/7663 # see https://github.com/quarkusio/quarkus/pull/7663
- cmd: >- - cmd: >-
set BABASHKA_SHA=%APPVEYOR_REPO_COMMIT%
call script/uberjar.bat call script/uberjar.bat
call script/compile.bat call script/compile.bat

View file

@ -45,7 +45,7 @@
hiccup/hiccup {:mvn/version "2.0.0-RC1"} hiccup/hiccup {:mvn/version "2.0.0-RC1"}
rewrite-clj/rewrite-clj {:mvn/version "1.1.48"} rewrite-clj/rewrite-clj {:mvn/version "1.1.48"}
selmer/selmer {:mvn/version "1.12.59"} selmer/selmer {:mvn/version "1.12.59"}
com.taoensso/timbre {:mvn/version "6.5.0"} com.taoensso/timbre {:mvn/version "6.6.0"}
org.clojure/tools.logging {:mvn/version "1.1.0"} org.clojure/tools.logging {:mvn/version "1.1.0"}
org.clojure/data.priority-map {:mvn/version "1.1.0"} org.clojure/data.priority-map {:mvn/version "1.1.0"}
insn/insn {:mvn/version "0.5.2"} insn/insn {:mvn/version "0.5.2"}

View file

@ -3,7 +3,7 @@
## Prerequisites ## Prerequisites
- Install [lein](https://leiningen.org/) for producing uberjars - Install [lein](https://leiningen.org/) for producing uberjars
- Download [GraalVM](https://www.graalvm.org/downloads/). Currently we use *jdk-22*. - Download [GraalVM](https://www.graalvm.org/downloads/). Currently we use *Oracle GraalVM 23*.
- For Windows, installing Visual Studio 2019 with the "Desktop development - For Windows, installing Visual Studio 2019 with the "Desktop development
with C++" workload is recommended. with C++" workload is recommended.
- Set `$GRAALVM_HOME` to the GraalVM distribution directory. On macOS this can look like: - Set `$GRAALVM_HOME` to the GraalVM distribution directory. On macOS this can look like:

View file

@ -22,6 +22,9 @@ agreement, the PR will be merged.
Each bug fix, change or new feature should be tested well to prevent future Each bug fix, change or new feature should be tested well to prevent future
regressions. regressions.
If possible, tests should use public APIs. If the bug is in private/internal
code, try to trigger it from a public API.
### Force-push ### Force-push
Please do not use `git push --force` on your PR branch for the following Please do not use `git push --force` on your PR branch for the following
@ -37,7 +40,7 @@ reasons:
## Requirements ## Requirements
You need [lein](https://leiningen.org/) for running JVM tests and/or producing uberjars. For building binaries you need GraalVM. Currently we use jdk-21.0.0.1 You need [lein](https://leiningen.org/) for running JVM tests and/or producing uberjars. For building binaries you need GraalVM. Currently we use Oracle GraalVM 23.
## Clone repository ## Clone repository

View file

@ -59,7 +59,9 @@
;; Note pre-resolved expansion ;; Note pre-resolved expansion
`(taoensso.timbre/-log! ~config ~level ~ns ~file ~line ~column ~msg-type ~?err `(taoensso.timbre/-log! ~config ~level ~ns ~file ~line ~column ~msg-type ~?err
(delay ~vargs-form) ~?base-data ~callsite-id ~spying?))))) (delay ~vargs-form) ~?base-data ~callsite-id ~spying?
~(get opts :instant)
~(get opts :may-log?))))))
([level msg-type args & [opts]] ([level msg-type args & [opts]]
(let [{:keys [line column]} (merge (meta &form)) (let [{:keys [line column]} (merge (meta &form))

View file

@ -73,7 +73,7 @@
:feature/selmer {:source-paths ["feature-selmer"] :feature/selmer {:source-paths ["feature-selmer"]
:dependencies [[selmer/selmer "1.12.59"]]} :dependencies [[selmer/selmer "1.12.59"]]}
:feature/logging {:source-paths ["feature-logging"] :feature/logging {:source-paths ["feature-logging"]
:dependencies [[com.taoensso/timbre "6.5.0"] :dependencies [[com.taoensso/timbre "6.6.0"]
[org.clojure/tools.logging "1.1.0"]]} [org.clojure/tools.logging "1.1.0"]]}
:feature/priority-map {:source-paths ["feature-priority-map"] :feature/priority-map {:source-paths ["feature-priority-map"]
:dependencies [[org.clojure/data.priority-map "1.1.0"]]} :dependencies [[org.clojure/data.priority-map "1.1.0"]]}

View file

@ -1 +1 @@
1.4.192 1.12.194

View file

@ -1 +1 @@
1.4.193-SNAPSHOT 1.12.195-SNAPSHOT

View file

@ -20,7 +20,7 @@
"impl-java/src"], "impl-java/src"],
:deps {org.clojure/clojure {:mvn/version "1.12.0"}, :deps {org.clojure/clojure {:mvn/version "1.12.0"},
org.babashka/sci {:local/root "sci"} org.babashka/sci {:local/root "sci"}
org.babashka/babashka.impl.java {:mvn/version "0.1.8"} org.babashka/babashka.impl.java {:mvn/version "0.1.10"}
org.babashka/sci.impl.types {:mvn/version "0.0.2"} org.babashka/sci.impl.types {:mvn/version "0.0.2"}
babashka/babashka.curl {:local/root "babashka.curl"} babashka/babashka.curl {:local/root "babashka.curl"}
babashka/fs {:local/root "fs"} babashka/fs {:local/root "fs"}
@ -45,7 +45,7 @@
hiccup/hiccup {:mvn/version "2.0.0-RC1"} hiccup/hiccup {:mvn/version "2.0.0-RC1"}
rewrite-clj/rewrite-clj {:mvn/version "1.1.48"} rewrite-clj/rewrite-clj {:mvn/version "1.1.48"}
selmer/selmer {:mvn/version "1.12.59"} selmer/selmer {:mvn/version "1.12.59"}
com.taoensso/timbre {:mvn/version "6.5.0"} com.taoensso/timbre {:mvn/version "6.6.0"}
org.clojure/tools.logging {:mvn/version "1.1.0"} org.clojure/tools.logging {:mvn/version "1.1.0"}
org.clojure/data.priority-map {:mvn/version "1.1.0"} org.clojure/data.priority-map {:mvn/version "1.1.0"}
insn/insn {:mvn/version "0.5.2"} insn/insn {:mvn/version "0.5.2"}

View file

@ -53,4 +53,5 @@ Args=-H:+ReportExceptionStackTraces \
-EBABASHKA_FEATURE_LANTERNA \ -EBABASHKA_FEATURE_LANTERNA \
-EBABASHKA_FEATURE_SPEC_ALPHA \ -EBABASHKA_FEATURE_SPEC_ALPHA \
-EBABASHKA_FEATURE_RRB_VECTOR \ -EBABASHKA_FEATURE_RRB_VECTOR \
-EBABASHKA_REQUIRE_SCAN -EBABASHKA_REQUIRE_SCAN \
-EBABASHKA_SHA

2
sci

@ -1 +1 @@
Subproject commit 09589dd37aa762ba1a416582a4d020deb9c612a4 Subproject commit 6d9380f55b3038769d5856fc67e7d7939ac981ef

View file

@ -46,7 +46,8 @@
"project.clj" "project.clj"
"script/bump_graal_version.clj" "script/bump_graal_version.clj"
".circleci/script/short_ci.clj" ".circleci/script/short_ci.clj"
".cirrus.yml"]) ".cirrus.yml"
"script/install-graalvm"])
;; We might have to keep changing these from ;; We might have to keep changing these from
;; time to time whenever the version is bumped ;; time to time whenever the version is bumped
@ -54,8 +55,7 @@
;; OR ;; OR
;; ;;
;; We could have them as environment variables ;; We could have them as environment variables
(def current-graal-version "22.3.1") (def current-graal-version "23")
(def current-java-version "java19")
(def cl-options (def cl-options
[["-g" "--graal VERSION" "graal version"] [["-g" "--graal VERSION" "graal version"]
@ -91,19 +91,12 @@
[args] [args]
(when (empty? args) (when (empty? args)
(display-help)) (display-help))
(let [new-graal-version (:graal args) (let [new-graal-version (:graal args)]
new-java-version (:java args)]
(when (not (nil? new-graal-version)) (when (not (nil? new-graal-version))
(if (is-valid-bump? new-graal-version nil) (if (is-valid-bump? new-graal-version nil)
(do (do
(println "Performing Graal bump...") (println "Performing Graal bump...")
(bump-current current-graal-version new-graal-version)) (bump-current current-graal-version new-graal-version))
(show-error new-graal-version))) (show-error new-graal-version)))))
(when (not (nil? new-java-version))
(if (is-valid-bump? new-java-version nil)
(do
(println "Performing Java bump...")
(bump-current current-java-version new-java-version))
(show-error new-java-version)))))
(exec-script cl-args) (exec-script cl-args)

View file

@ -39,7 +39,7 @@ args=("-jar" "$BABASHKA_JAR"
# "-H:DashboardDump=reports/dump" # "-H:DashboardDump=reports/dump"
# "-H:+DashboardPretty" # "-H:+DashboardPretty"
# "-H:+DashboardJson" # "-H:+DashboardJson"
"-H:ReportAnalysisForbiddenType=java.awt.Toolkit:InHeap,Allocated" # "-H:ReportAnalysisForbiddenType=java.awt.Toolkit:Instantiated"
"--verbose" "--verbose"
"--no-fallback" "--no-fallback"
"--native-image-info" "--native-image-info"
@ -54,13 +54,14 @@ BABASHKA_STATIC=${BABASHKA_STATIC:-}
BABASHKA_MUSL=${BABASHKA_MUSL:-} BABASHKA_MUSL=${BABASHKA_MUSL:-}
if [ "$BABASHKA_STATIC" = "true" ]; then if [ "$BABASHKA_STATIC" = "true" ]; then
args+=("--static")
if [ "$BABASHKA_MUSL" = "true" ]; then if [ "$BABASHKA_MUSL" = "true" ]; then
args+=("--static")
args+=("--libc=musl" args+=("--libc=musl"
# see https://github.com/oracle/graal/issues/3398 # see https://github.com/oracle/graal/issues/3398
"-H:CCompilerOption=-Wl,-z,stack-size=2097152") "-H:CCompilerOption=-Wl,-z,stack-size=2097152")
else else
# see https://github.com/oracle/graal/issues/3737 # see https://github.com/oracle/graal/issues/3737
args+=("-H:+UnlockExperimentalVMOptions")
args+=("-H:+StaticExecutableWithDynamicLibC") args+=("-H:+StaticExecutableWithDynamicLibC")
fi fi
fi fi
@ -106,4 +107,14 @@ then
export BABASHKA_FEATURE_PRIORITY_MAP="${BABASHKA_FEATURE_PRIORITY_MAP:-false}" export BABASHKA_FEATURE_PRIORITY_MAP="${BABASHKA_FEATURE_PRIORITY_MAP:-false}"
fi fi
if [[ -z "${BABASHKA_SHA:-}" ]]
then
sha=$(git rev-parse HEAD)
if [[ $? -eq 0 ]]; then
export BABASHKA_SHA=$sha
fi
fi
"$GRAALVM_HOME/bin/native-image" "${args[@]}" "$@" "$GRAALVM_HOME/bin/native-image" "${args[@]}" "$@"
./"$BABASHKA_BINARY" describe

View file

@ -23,6 +23,13 @@ Rem -H:EnableURLProtocols=jar,http,https is also not supported.
call %GRAALVM_HOME%\bin\gu.cmd install native-image call %GRAALVM_HOME%\bin\gu.cmd install native-image
if "%BABASHKA_SHA%"=="" (
for /f %%i in ('git rev-parse HEAD') do set sha=%%i
if not errorlevel 1 (
set BABASHKA_SHA=%sha%
)
)
call %GRAALVM_HOME%\bin\native-image.cmd ^ call %GRAALVM_HOME%\bin\native-image.cmd ^
"-jar" "target/babashka-%BABASHKA_VERSION%-standalone.jar" ^ "-jar" "target/babashka-%BABASHKA_VERSION%-standalone.jar" ^
"-H:Name=bb" ^ "-H:Name=bb" ^
@ -39,3 +46,4 @@ call %GRAALVM_HOME%\bin\native-image.cmd ^
if %errorlevel% neq 0 exit /b %errorlevel% if %errorlevel% neq 0 exit /b %errorlevel%
call bb "(+ 1 2 3)" call bb "(+ 1 2 3)"
call bb describe

View file

@ -4,7 +4,7 @@ set -euo pipefail
INSTALL_DIR="${1:-$HOME}" INSTALL_DIR="${1:-$HOME}"
GRAALVM_VERSION="${GRAALVM_VERSION:-22}" GRAALVM_VERSION="${GRAALVM_VERSION:-23}"
GRAALVM_PLATFORM=$BABASHKA_PLATFORM GRAALVM_PLATFORM=$BABASHKA_PLATFORM
@ -19,7 +19,7 @@ esac
GRAALVM_DIR_NAME="graalvm-$GRAALVM_VERSION" GRAALVM_DIR_NAME="graalvm-$GRAALVM_VERSION"
GRAALVM_FILENAME="graalvm-jdk-${GRAALVM_VERSION}_${GRAALVM_PLATFORM}-${GRAALVM_ARCH}_bin.tar.gz" GRAALVM_FILENAME="graalvm-jdk-${GRAALVM_VERSION}_${GRAALVM_PLATFORM}-${GRAALVM_ARCH}_bin.tar.gz"
DOWNLOAD_URL="https://download.oracle.com/graalvm/22/archive/${GRAALVM_FILENAME}" DOWNLOAD_URL="https://download.oracle.com/graalvm/23/archive/${GRAALVM_FILENAME}"
pushd "$INSTALL_DIR" >/dev/null pushd "$INSTALL_DIR" >/dev/null

View file

@ -328,6 +328,7 @@
java.lang.ProcessBuilder$Redirect java.lang.ProcessBuilder$Redirect
java.lang.Runtime java.lang.Runtime
java.lang.RuntimeException java.lang.RuntimeException
java.lang.SecurityException
java.lang.Short java.lang.Short
java.lang.StackTraceElement java.lang.StackTraceElement
java.lang.String java.lang.String
@ -831,6 +832,7 @@
RuntimeException java.lang.RuntimeException RuntimeException java.lang.RuntimeException
Process java.lang.Process Process java.lang.Process
ProcessBuilder java.lang.ProcessBuilder ProcessBuilder java.lang.ProcessBuilder
SecurityException java.lang.SecurityException
Short java.lang.Short Short java.lang.Short
StackTraceElement java.lang.StackTraceElement StackTraceElement java.lang.StackTraceElement
String java.lang.String String java.lang.String

View file

@ -122,7 +122,7 @@
:static true} :static true}
([aseq] ([aseq]
(try (clojure.lang.RT/seqToTypedArray (seq aseq)) (try (clojure.lang.RT/seqToTypedArray (seq aseq))
(catch IllegalArgumentException _ (catch Throwable _
(clojure.lang.RT/seqToTypedArray Object (seq aseq))))) (clojure.lang.RT/seqToTypedArray Object (seq aseq)))))
([type aseq] ([type aseq]
(clojure.lang.RT/seqToTypedArray type (seq aseq)))) (clojure.lang.RT/seqToTypedArray type (seq aseq))))
@ -179,6 +179,8 @@
'sync (sci/copy-var sync clojure-core-ns) 'sync (sci/copy-var sync clojure-core-ns)
'ref (sci/copy-var ref clojure-core-ns) 'ref (sci/copy-var ref clojure-core-ns)
'ref-set (sci/copy-var ref-set clojure-core-ns) 'ref-set (sci/copy-var ref-set clojure-core-ns)
'ensure (sci/copy-var ensure clojure-core-ns)
;; end STM
'update-vals (sci/copy-var update-vals clojure-core-ns) 'update-vals (sci/copy-var update-vals clojure-core-ns)
'update-keys (sci/copy-var update-keys clojure-core-ns) 'update-keys (sci/copy-var update-keys clojure-core-ns)
'parse-boolean (sci/copy-var parse-boolean clojure-core-ns) 'parse-boolean (sci/copy-var parse-boolean clojure-core-ns)

View file

@ -110,6 +110,8 @@
(def version common/version) (def version common/version)
(def build-commit-sha (or (System/getenv "BABASHKA_SHA") ""))
(defn parse-version [version] (defn parse-version [version]
(mapv #(Integer/parseInt %) (mapv #(Integer/parseInt %)
(-> version (-> version
@ -261,6 +263,7 @@ Use bb run --help to show this help output.
(format (format
(str/trim " (str/trim "
{:babashka/version \"%s\" {:babashka/version \"%s\"
:git/sha \"%s\"
:feature/csv %s :feature/csv %s
:feature/java-nio %s :feature/java-nio %s
:feature/java-time %s :feature/java-time %s
@ -281,6 +284,7 @@ Use bb run --help to show this help output.
:feature/logging %s :feature/logging %s
:feature/priority-map %s}") :feature/priority-map %s}")
version version
build-commit-sha
features/csv? features/csv?
features/java-nio? features/java-nio?
features/java-time? features/java-time?

View file

@ -75,3 +75,16 @@
(= '(100 100 100 100 100) (->> (Stream/generate (constantly 100)) stream-seq! (take 5)))"))) (= '(100 100 100 100 100) (->> (Stream/generate (constantly 100)) stream-seq! (take 5)))")))
(is (true? (bb nil "(import [java.util Collection] [java.util.stream Stream] [java.util.function Predicate]) (is (true? (bb nil "(import [java.util Collection] [java.util.stream Stream] [java.util.function Predicate])
(= '(1 2 3 4 5 6 7 8 9 10) (->> (Stream/iterate 1 inc) stream-seq! (take 10)))")))) (= '(1 2 3 4 5 6 7 8 9 10) (->> (Stream/iterate 1 inc) stream-seq! (take 10)))"))))
(deftest regression-test
(is (true? (bb nil "(let [x \"f\"] (String/.startsWith \"foo\" x))"))))
(deftest clojure-1_12-interop-test
(is (= [1 2 3] (bb nil "(map Integer/parseInt [\"1\" \"2\" \"3\"])")))
(is (= [1 2 3] (bb nil "(map String/.length [\"1\" \"22\" \"333\"])")))
(is (= ["1" "22" "333"] (bb nil "(map String/new [\"1\" \"22\" \"333\"])")))
(is (= 3 (bb nil "(String/.length \"123\")")))
(is (= "123" (bb nil "(String/new \"123\")"))))
(deftest clojure-1_12-array-test
(is (true? (bb nil "(instance? Class long/1)"))))