diff --git a/.circleci/script/gen_ci.clj b/.circleci/script/gen_ci.clj index ae0b9675..95da8d94 100644 --- a/.circleci/script/gen_ci.clj +++ b/.circleci/script/gen_ci.clj @@ -5,7 +5,7 @@ [clojure.string :as str] [flatland.ordered.map :refer [ordered-map]])) -(def graalvm-version "23") +(def graalvm-version "24") (defn run ([cmd-name cmd] diff --git a/.cirrus.yml b/.cirrus.yml index 3e36b348..7d55f85f 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -5,7 +5,7 @@ task: skip: "changesIncludeOnly('logo/*', '**.md')" env: LEIN_ROOT: "true" - GRAALVM_VERSION: "23" + GRAALVM_VERSION: "24" GRAALVM_HOME: ${HOME}/graalvm-${GRAALVM_VERSION}/Contents/Home BABASHKA_PLATFORM: macos # used in release script BABASHKA_ARCH: aarch64 diff --git a/.github/workflows/build-windows.yml b/.github/workflows/build-windows.yml new file mode 100644 index 00000000..0a5d297f --- /dev/null +++ b/.github/workflows/build-windows.yml @@ -0,0 +1,100 @@ +name: build + +on: + push: + paths-ignore: + - "**.md" + - "logo/**" + pull_request: + paths-ignore: + - "**.md" + - "logo/**" + +# TODO: Add deploy if needed +jobs: + native: + if: "!contains(github.event.head_commit.message, 'skip ci')" + strategy: + matrix: + include: + - os: windows-2022 + name: windows + static: false + runs-on: ${{ matrix.os }} + env: + LEIN_ROOT: "true" + GRAALVM_VERSION: "24" + BABASHKA_PLATFORM: ${{ matrix.name }} # used in release script + BABASHKA_TEST_ENV: native + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + BABASHKA_SHA: ${{ github.sha }} + steps: + - name: Git checkout + uses: actions/checkout@v2 + with: + fetch-depth: 1 + submodules: 'true' + + - name: Cache deps + uses: actions/cache@v4 + id: cache-deps + with: + path: ~/.m2/repository + key: ${{ runner.os }}-maven-${{ hashFiles('project.clj') }} + restore-keys: ${{ runner.os }}-maven- + + - name: Setup GraalVM + if: "matrix.static == false" + uses: graalvm/setup-graalvm@v1.3.3 + with: + java-version: '24' + distribution: 'graalvm' + components: 'native-image' + github-token: ${{ secrets.GITHUB_TOKEN }} + + - name: Install clojure tools + uses: DeLaGuardo/setup-clojure@13.2 + with: + cli: latest + # lein: latest -- skipped because this uses some PS bullshit + + - name: Babashka version + id: babashka-version + shell: bash + run: | + BABASHKA_VERSION=$(cat resources/BABASHKA_VERSION) + echo "##[set-output name=version;]${BABASHKA_VERSION}" + + - name: Build + shell: cmd + run: | + powershell -Command "(New-Object Net.WebClient).DownloadFile('https://raw.githubusercontent.com/technomancy/leiningen/stable/bin/lein.bat', 'lein.bat')" + call lein self-install + + set GRAALVM_HOME=%JAVA_HOME% + call script/uberjar.bat + + call script/compile.bat + + echo Creating zip archive + + set zip=babashka-%BABASHKA_VERSION%-windows-amd64.zip + + jar -cMf %zip% bb.exe + + bb --config .build/bb.edn --deps-root . release-artifact %zip% + + + - name: Test binary and libs + shell: cmd + run: | + set BABASHKA_CLASSPATH= + set BABASHKA_TEST_ENV=native + call script/test.bat :windows + call script/run_lib_tests.bat + + - name: Upload artifact + uses: actions/upload-artifact@v4 + with: + path: bb.exe + name: babashka-${{ steps.babashka-version.outputs.version }}-${{ matrix.name }}-amd64 diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 315363f0..b64257aa 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -33,7 +33,7 @@ jobs: submodules: 'true' - name: Cache deps - uses: actions/cache@v2 + uses: actions/cache@v4 id: cache-deps with: path: ~/.m2/repository @@ -103,7 +103,7 @@ jobs: runs-on: ${{ matrix.os }} env: LEIN_ROOT: "true" - GRAALVM_VERSION: "23" + GRAALVM_VERSION: "24" BABASHKA_PLATFORM: ${{ matrix.name }} # used in release script BABASHKA_TEST_ENV: native BABASHKA_XMX: "-J-Xmx6500m" @@ -117,7 +117,7 @@ jobs: submodules: 'true' - name: Cache deps - uses: actions/cache@v2 + uses: actions/cache@v4 id: cache-deps with: path: ~/.m2/repository @@ -128,7 +128,7 @@ jobs: if: "matrix.static == false" uses: graalvm/setup-graalvm@v1 with: - java-version: '23' + java-version: '24' distribution: 'graalvm' components: 'native-image' github-token: ${{ secrets.GITHUB_TOKEN }} @@ -137,7 +137,7 @@ jobs: if: "matrix.static == true" uses: graalvm/setup-graalvm@v1 with: - version: '23' + version: '24' distribution: 'graalvm' components: 'native-image' native-image-musl: true diff --git a/CHANGELOG.md b/CHANGELOG.md index 961ef099..d812e659 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,10 +9,16 @@ A preview of the next release can be installed from ## Unreleased +- Bump GraalVM to `24` +- Bump SCI to `0.9.45` +- Bump edamame to `1.4.28` + +## 1.12.197 (2024-02-28) + - [#1785](https://github.com/babashka/babashka/issues/1785): Allow subclasses of `Throwable` to have instance methods invoked ([@bobisageek](https://github.com/bobisageek)) - [#1791](https://github.com/babashka/babashka/issues/1791): interop problem on Jsoup form element -- [#1793](https://github.com/babashka/babashka/issues/1793): Bump `rewrite-clj` to `1.1.49` - Bump core.async to `1.8.735` +- [#1793](https://github.com/babashka/babashka/issues/1793): Bump `rewrite-clj` to `1.1.49` (fixes parsing of `foo//` among other things) - Bump `deps.clj` - Bump `fs` diff --git a/Dockerfile b/Dockerfile index 085b43e1..505a7f69 100644 --- a/Dockerfile +++ b/Dockerfile @@ -5,7 +5,7 @@ RUN apt update RUN apt install --no-install-recommends -yy build-essential zlib1g-dev WORKDIR "/opt" -ENV GRAALVM_VERSION="23" +ENV GRAALVM_VERSION="24" ARG TARGETARCH # Do not set those directly, use TARGETARCH instead ENV BABASHKA_ARCH= diff --git a/README.md b/README.md index cc9da4c8..6a289fde 100644 --- a/README.md +++ b/README.md @@ -303,63 +303,16 @@ Go [here](https://book.babashka.org/#built-in-namespaces) to see the full list o A list of projects (scripts, libraries, pods and tools) known to work with babashka. ## Badges - - -[![bb compatible](/logo/badge.svg)](https://babashka.org) - -The babashka compatible badge indicates that a [library can be used as babashka dependency](doc/projects.md). +[![bb compatible](/logo/badge.svg)](https://book.babashka.org#badges) +The babashka compatible badge indicates that a library can be used as babashka dependency. If this is the case for your library, we encourage you to proudly display this badge. -
Markdown - -```markdown -[![bb compatible](https://raw.githubusercontent.com/babashka/babashka/master/logo/badge.svg)](https://babashka.org) -``` -
- -
AsciiDoc - -```asciidoc -https://babashka.org[image:https://raw.githubusercontent.com/babashka/babashka/master/logo/badge.svg[bb compatible]] -``` -
- -
HTML - -```html -bb compatible -``` -
-
- -[![bb built-in](/logo/built-in-badge.svg)](https://babashka.org) - -The babashka built-in badge means that a [library has been built directly into babashka](https://book.babashka.org/#built-in-namespaces) and requires no extra dependencies to use it. - +[![bb built-in](/logo/built-in-badge.svg)](https://book.babashka.org#badges) +The babashka built-in badge means that a library has been built directly into babashka and requires no extra dependencies to use it. If this rare honor belongs to your library, you should display this badge. -
Markdown - -```markdown -[![bb built-in](https://raw.githubusercontent.com/babashka/babashka/master/logo/built-in-badge.svg)](https://babashka.org) -``` -
- -
AsciiDoc - -```asciidoc -https://babashka.org[image:https://raw.githubusercontent.com/babashka/babashka/master/logo/built-in-badge.svg[bb built-in]] -``` -
- -
HTML - -```html -bb built-in -``` -
-
+See [the babashka book for details](https://book.babashka.org#badges). ## Swag diff --git a/appveyor.yml b/appveyor.yml index 59c901ce..9ace75fd 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -7,8 +7,8 @@ image: Visual Studio 2022 clone_folder: C:\projects\babashka environment: - GRAALVM_HOME: C:\projects\babashka\graalvm\graalvm-jdk-23+37.1 - JAVA_HOME: C:\projects\babashka\graalvm\graalvm-jdk-23+37.1 + GRAALVM_HOME: C:\projects\babashka\graalvm\graalvm-jdk-24+36.1 + JAVA_HOME: C:\projects\babashka\graalvm\graalvm-jdk-24+36.1 BABASHKA_XMX: "-J-Xmx5g" skip_commits: @@ -44,7 +44,7 @@ clone_script: build_script: # TODO: Extract the zip by removing the top level folder to remove the hardcoded path for GRAALVM_HOME - cmd: >- - 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 { (New-Object Net.WebClient).DownloadFile('https://download.oracle.com/graalvm/24/archive/graalvm-jdk-24_windows-x64_bin.zip', 'graalvm.zip') }" powershell -Command "if (Test-Path('graalvm')) { return } else { Expand-Archive graalvm.zip graalvm }" diff --git a/deps.edn b/deps.edn index ec879397..28cf6745 100644 --- a/deps.edn +++ b/deps.edn @@ -52,7 +52,7 @@ org.babashka/cli {:mvn/version "0.8.62"} org.babashka/http-client {:mvn/version "0.4.22"} org.flatland/ordered {:mvn/version "1.15.12"} - org.jsoup/jsoup {:mvn/version "1.18.1"}} + org.jsoup/jsoup {:mvn/version "1.19.1"}} :aliases {:babashka/dev {:main-opts ["-m" "babashka.main"]} :profile @@ -174,7 +174,7 @@ prismatic/plumbing {:git/url "https://github.com/plumatic/plumbing", :git/sha "424bc704f2db422de34269c139a5494314b3a43b"} org.clj-commons/hickory {:git/url "https://github.com/clj-commons/hickory" - :git/sha "27ee318928b6748075fa9954740afedf916ff795"}} + :git/sha "9385b6708ef35f161732d8464b3a3aa57dd79f30"}} :classpath-overrides {org.clojure/clojure nil org.clojure/spec.alpha nil}} :clj-nvd diff --git a/doc/build.md b/doc/build.md index 71df3425..c60507e5 100644 --- a/doc/build.md +++ b/doc/build.md @@ -3,7 +3,7 @@ ## Prerequisites - Install [lein](https://leiningen.org/) for producing uberjars -- Download [GraalVM](https://www.graalvm.org/downloads/). Currently we use *Oracle GraalVM 23*. +- Download [GraalVM](https://www.graalvm.org/downloads/). Currently we use *Oracle GraalVM 24*. - For Windows, installing Visual Studio 2019 with the "Desktop development with C++" workload is recommended. - Set `$GRAALVM_HOME` to the GraalVM distribution directory. On macOS this can look like: diff --git a/doc/dev.md b/doc/dev.md index b3a22bde..c9938027 100644 --- a/doc/dev.md +++ b/doc/dev.md @@ -40,7 +40,7 @@ reasons: ## Requirements -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. +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 24. ## Clone repository diff --git a/project.clj b/project.clj index db087b9f..d3377ebe 100644 --- a/project.clj +++ b/project.clj @@ -22,7 +22,7 @@ :flaky :flaky} :jvm-opts ["--enable-preview"] :dependencies [[org.clojure/clojure "1.12.0"] - [borkdude/edamame "1.4.27"] + [borkdude/edamame "1.4.29"] [org.clojure/tools.cli "1.0.214"] [cheshire "5.13.0"] [nrepl/bencode "1.2.0"] @@ -36,7 +36,7 @@ [insn/insn "0.5.2"] [org.babashka/cli "0.8.62"] [org.babashka/http-client "0.4.22"] - [org.jsoup/jsoup "1.18.1"] + [org.jsoup/jsoup "1.19.1"] [borkdude/graal.locking "0.0.2"]] :plugins [[org.kipz/lein-meta-bom "0.1.1"]] :metabom {:jar-name "metabom.jar"} diff --git a/resources/BABASHKA_RELEASED_VERSION b/resources/BABASHKA_RELEASED_VERSION index 69353e92..5055a5a6 100644 --- a/resources/BABASHKA_RELEASED_VERSION +++ b/resources/BABASHKA_RELEASED_VERSION @@ -1 +1 @@ -1.12.196 \ No newline at end of file +1.12.197 \ No newline at end of file diff --git a/resources/BABASHKA_VERSION b/resources/BABASHKA_VERSION index a6f794c1..fcba5798 100644 --- a/resources/BABASHKA_VERSION +++ b/resources/BABASHKA_VERSION @@ -1 +1 @@ -1.12.197-SNAPSHOT \ No newline at end of file +1.12.198-SNAPSHOT \ No newline at end of file diff --git a/resources/META-INF/babashka/deps.edn b/resources/META-INF/babashka/deps.edn index ec879397..28cf6745 100644 --- a/resources/META-INF/babashka/deps.edn +++ b/resources/META-INF/babashka/deps.edn @@ -52,7 +52,7 @@ org.babashka/cli {:mvn/version "0.8.62"} org.babashka/http-client {:mvn/version "0.4.22"} org.flatland/ordered {:mvn/version "1.15.12"} - org.jsoup/jsoup {:mvn/version "1.18.1"}} + org.jsoup/jsoup {:mvn/version "1.19.1"}} :aliases {:babashka/dev {:main-opts ["-m" "babashka.main"]} :profile @@ -174,7 +174,7 @@ prismatic/plumbing {:git/url "https://github.com/plumatic/plumbing", :git/sha "424bc704f2db422de34269c139a5494314b3a43b"} org.clj-commons/hickory {:git/url "https://github.com/clj-commons/hickory" - :git/sha "27ee318928b6748075fa9954740afedf916ff795"}} + :git/sha "9385b6708ef35f161732d8464b3a3aa57dd79f30"}} :classpath-overrides {org.clojure/clojure nil org.clojure/spec.alpha nil}} :clj-nvd diff --git a/script/bump_graal_version.clj b/script/bump_graal_version.clj index e9a29fda..05643a7d 100755 --- a/script/bump_graal_version.clj +++ b/script/bump_graal_version.clj @@ -45,7 +45,6 @@ "appveyor.yml" "project.clj" "script/bump_graal_version.clj" - ".circleci/script/short_ci.clj" ".cirrus.yml" "script/install-graalvm"]) @@ -55,7 +54,7 @@ ;; OR ;; ;; We could have them as environment variables -(def current-graal-version "23") +(def current-graal-version "24") (def cl-options [["-g" "--graal VERSION" "graal version"] diff --git a/script/install-graalvm b/script/install-graalvm index 45add913..22d079e4 100755 --- a/script/install-graalvm +++ b/script/install-graalvm @@ -4,7 +4,7 @@ set -euo pipefail INSTALL_DIR="${1:-$HOME}" -GRAALVM_VERSION="${GRAALVM_VERSION:-23}" +GRAALVM_VERSION="${GRAALVM_VERSION:-24}" GRAALVM_PLATFORM=$BABASHKA_PLATFORM diff --git a/test-resources/lib_tests/babashka/run_all_libtests.clj b/test-resources/lib_tests/babashka/run_all_libtests.clj index b9b70876..20e4e11b 100644 --- a/test-resources/lib_tests/babashka/run_all_libtests.clj +++ b/test-resources/lib_tests/babashka/run_all_libtests.clj @@ -75,6 +75,8 @@ (doseq [p test-paths] (add-classpath (str (fs/file git-dir p))))) (when-not (and skip-windows (windows?)) + (prn :branch (current-branch)) + (prn (System/getenv)) (if (and flaky (#{"main" "master"} (current-branch))) (println "Skipping" tns "for main branch because it's marked flaky") (swap! test-nss into tns)))) diff --git a/test-resources/lib_tests/bb-tested-libs.edn b/test-resources/lib_tests/bb-tested-libs.edn index 10820bb3..00a68e87 100644 --- a/test-resources/lib_tests/bb-tested-libs.edn +++ b/test-resources/lib_tests/bb-tested-libs.edn @@ -193,7 +193,7 @@ :test-namespaces [plumbing.core-test], :test-paths ["test"]} org.clj-commons/hickory {:git-url "https://github.com/clj-commons/hickory" - :git-sha "27ee318928b6748075fa9954740afedf916ff795" + :git-sha "9385b6708ef35f161732d8464b3a3aa57dd79f30" :test-paths ["test/cljc"] :test-namespaces [hickory.test.core hickory.test.convert