Compare commits

..

5 commits

Author SHA1 Message Date
Michiel Borkent
65abe62ee1 sci, but not yet done 2025-04-22 20:11:17 +02:00
Michiel Borkent
e479b17181 disable rate limit test 2025-04-20 13:15:08 +02:00
Michiel Borkent
fb3f8d9b21 disable timeout tests 2025-04-19 23:20:04 +02:00
Michiel Borkent
be1c20e271 Bump fusebox 2025-04-19 23:00:11 +02:00
Michiel Borkent
d4d1835d1d fusebox tests 2025-04-19 20:20:54 +02:00
21 changed files with 45 additions and 129 deletions

View file

@ -179,13 +179,10 @@ java -jar \"$jar\" --config .build/bb.edn --deps-root . release-artifact \"$refl
(run "Build binary" (if (= "aarch64" arch) (run "Build binary" (if (= "aarch64" arch)
"script/uberjar\nscript/compile -H:PageSize=64K # --pgo=default.iprof" "script/uberjar\nscript/compile -H:PageSize=64K # --pgo=default.iprof"
"script/uberjar\nscript/compile # --pgo=default.iprof") "30m") "script/uberjar\nscript/compile # --pgo=default.iprof") "30m")
(run "Run tests" "script/test\nscript/run_lib_tests")
(run "Release" ".circleci/script/release") (run "Release" ".circleci/script/release")
{:persist_to_workspace {:root "/tmp" {:persist_to_workspace {:root "/tmp"
:paths ["release"]}} :paths ["release"]}}
(run "Run tests" "script/test\nscript/run_lib_tests")
(run "Release + publish"
(str/join "\n" ["export BABASHKA_RELEASE=true"
".circleci/script/release"]))
{:save_cache {:save_cache
{:paths ["~/.m2" "~/graalvm"] {:paths ["~/.m2" "~/graalvm"]
:key cache-key}} :key cache-key}}

View file

@ -29,9 +29,7 @@ tar zcvf "$archive" bb # bbk
cd - cd -
if [ "$BABASHKA_RELEASE" = "true" ]; then ./bb --config .build/bb.edn --deps-root . release-artifact "/tmp/release/$archive"
./bb --config .build/bb.edn --deps-root . release-artifact "/tmp/release/$archive"
fi
## cleanup ## cleanup

View file

@ -84,11 +84,6 @@ jobs:
bb --config .build/bb.edn --deps-root . release-artifact %zip% bb --config .build/bb.edn --deps-root . release-artifact %zip%
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
path: bb.exe
name: babashka-${{ steps.babashka-version.outputs.version }}-${{ matrix.name }}-amd64
- name: Test binary and libs - name: Test binary and libs
shell: cmd shell: cmd
@ -97,3 +92,9 @@ jobs:
set BABASHKA_TEST_ENV=native set BABASHKA_TEST_ENV=native
call script/test.bat :windows call script/test.bat :windows
call script/run_lib_tests.bat 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

View file

@ -172,6 +172,14 @@ jobs:
BABASHKA_MUSL: "true" BABASHKA_MUSL: "true"
run: script/compile run: script/compile
- name: Test binary and libs
run: |
script/test
script/run_lib_tests
- name: Release
run: .circleci/script/release
- name: Upload artifact - name: Upload artifact
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v4
with: with:
@ -185,14 +193,6 @@ jobs:
path: bb path: bb
name: babashka-${{ steps.babashka-version.outputs.version }}-${{ matrix.name }}-static-amd64 name: babashka-${{ steps.babashka-version.outputs.version }}-${{ matrix.name }}-static-amd64
- name: Test binary and libs
run: |
script/test
script/run_lib_tests
- name: Release
run: .circleci/script/release
docker: docker:
if: ${{ false }} # Disabled if: ${{ false }} # Disabled
# if: "!contains(github.event.head_commit.message, 'skip ci') && github.event_name == 'push' && github.ref == 'refs/heads/master'" # if: "!contains(github.event.head_commit.message, 'skip ci') && github.event_name == 'push' && github.ref == 'refs/heads/master'"

View file

@ -9,27 +9,9 @@ A preview of the next release can be installed from
## Unreleased ## Unreleased
- [#1818](https://github.com/babashka/babashka/issues/1818): wrong argument order in `clojure.java.io/resource` implementation
- Add `java.text.BreakIterator`
- Bump `fs` to `0.5.25`
- Bump `jsoup` to `1.20.1`
- Bump `edamame` to `1.4.30`
- [#1815](https://github.com/babashka/babashka/issues/1815): Make install-script wget-compatible ([@eval](https://github.com/eval))
## 1.12.200 (2025-04-26)
- Improve Java reflection based on provided type hints (read blog post [here](https://blog.michielborkent.nl/babashka-java-reflection-type-hints.html))
- Add compatibility with the [fusebox](https://github.com/potetm/fusebox) library
- Fix virtual `ThreadBuilder` interop - Fix virtual `ThreadBuilder` interop
- Add `java.util.concurrent.ThreadLocalRandom` - Add `java.util.concurrent.ThreadLocalRandom`
- Add `java.util.concurrent.locks.ReentrantLock` - Add `java.util.concurrent.locks.ReentrantLock`
- Add classes:
- `java.time.chrono.ChronoLocalDate`
- `java.time.temporal.TemporalUnit`
- `java.time.chrono.ChronoLocalDateTime`
- `java.time.chrono.ChronoZonedDateTime`
- `java.time.chrono.Chronology`
## 1.12.199 (2025-04-18) ## 1.12.199 (2025-04-18)

View file

@ -232,8 +232,6 @@ Install via the installer script for linux and macOS:
``` shell ``` shell
$ curl -sLO https://raw.githubusercontent.com/babashka/babashka/master/install $ curl -sLO https://raw.githubusercontent.com/babashka/babashka/master/install
# or
$ wget -qO install https://raw.githubusercontent.com/babashka/babashka/master/install
$ chmod +x install $ chmod +x install
$ ./install $ ./install
``` ```

View file

@ -52,7 +52,7 @@
org.babashka/cli {:mvn/version "0.8.65"} org.babashka/cli {:mvn/version "0.8.65"}
org.babashka/http-client {:mvn/version "0.4.22"} org.babashka/http-client {:mvn/version "0.4.22"}
org.flatland/ordered {:mvn/version "1.15.12"} org.flatland/ordered {:mvn/version "1.15.12"}
org.jsoup/jsoup {:mvn/version "1.20.1"}} org.jsoup/jsoup {:mvn/version "1.19.1"}}
:aliases {:babashka/dev :aliases {:babashka/dev
{:main-opts ["-m" "babashka.main"]} {:main-opts ["-m" "babashka.main"]}
:profile :profile
@ -176,9 +176,7 @@
org.clj-commons/hickory {:git/url "https://github.com/clj-commons/hickory" org.clj-commons/hickory {:git/url "https://github.com/clj-commons/hickory"
:git/sha "9385b6708ef35f161732d8464b3a3aa57dd79f30"} :git/sha "9385b6708ef35f161732d8464b3a3aa57dd79f30"}
com.potetm/fusebox {:git/url "https://github.com/potetm/fusebox" com.potetm/fusebox {:git/url "https://github.com/potetm/fusebox"
:git/sha "ac6d6a0a69510b009b3c1bb2247cd110fd9f7246"} :git/sha "2f42391868c82c193628bec8922f8735ae3cac66"}}
net.sekao/odoyle-rules {:git/url "https://github.com/oakes/odoyle-rules"
:git/sha "0b1d825ec45a998c4d3481dfb292e08ce6a47f0b"}}
:classpath-overrides {org.clojure/clojure nil :classpath-overrides {org.clojure/clojure nil
org.clojure/spec.alpha nil}} org.clojure/spec.alpha nil}}
:clj-nvd :clj-nvd

2
fs

@ -1 +1 @@
Subproject commit fdd5780bc4df4931332b56082c6c3a5c3c85066d Subproject commit 64b1c198576fe7babea5500ce6c7cfe6cc92f37b

36
install
View file

@ -29,32 +29,6 @@ print_help() {
exit 1 exit 1
} }
has() {
command -v "$1" >/dev/null 2>&1
}
fetch() {
local url=$1
local outfile=${2:-}
if has wget; then
if [[ -n $outfile ]]; then
wget -qO "$outfile" "$url"
else
wget -qO - "$url"
fi
elif has curl; then
if [[ -n $outfile ]]; then
curl -fsSL "$url" -o "$outfile"
else
curl -fsSL "$url"
fi
else
>&2 echo "Either 'wget' or 'curl' needs to be on PATH!"
exit 1
fi
}
while [[ $# -gt 0 ]] while [[ $# -gt 0 ]]
do do
key="$1" key="$1"
@ -106,9 +80,9 @@ fi
if [[ "$version" == "" ]]; then if [[ "$version" == "" ]]; then
if [[ "$dev_build" == "true" ]]; then if [[ "$dev_build" == "true" ]]; then
version="$(fetch https://raw.githubusercontent.com/babashka/babashka/master/resources/BABASHKA_VERSION)" version="$(curl -sL https://raw.githubusercontent.com/babashka/babashka/master/resources/BABASHKA_VERSION)"
else else
version="$(fetch https://raw.githubusercontent.com/babashka/babashka/master/resources/BABASHKA_RELEASED_VERSION)" version="$(curl -sL https://raw.githubusercontent.com/babashka/babashka/master/resources/BABASHKA_RELEASED_VERSION)"
fi fi
fi fi
@ -170,9 +144,9 @@ download_url="https://github.com/babashka/$repo/releases/download/v$version/$fil
# macOS only have shasum available by default # macOS only have shasum available by default
# Some Linux distros (RHEL-like) only have sha256sum available by default (others have both) # Some Linux distros (RHEL-like) only have sha256sum available by default (others have both)
if has sha256sum; then if command -v sha256sum >/dev/null; then
sha256sum_cmd="sha256sum" sha256sum_cmd="sha256sum"
elif has shasum; then elif command -v shasum >/dev/null; then
sha256sum_cmd="shasum -a 256" sha256sum_cmd="shasum -a 256"
else else
>&2 echo "Either 'sha256sum' or 'shasum' needs to be on PATH for '--checksum' flag!" >&2 echo "Either 'sha256sum' or 'shasum' needs to be on PATH for '--checksum' flag!"
@ -185,7 +159,7 @@ mkdir -p "$download_dir" && (
cd "$download_dir" cd "$download_dir"
echo -e "Downloading $download_url to $download_dir" echo -e "Downloading $download_url to $download_dir"
fetch "$download_url" "$filename" curl -o "$filename" -sL "$download_url"
if [[ -n "$checksum" ]]; then if [[ -n "$checksum" ]]; then
if ! echo "$checksum *$filename" | $sha256sum_cmd --check --status; then if ! echo "$checksum *$filename" | $sha256sum_cmd --check --status; then
>&2 echo "Failed checksum on $filename" >&2 echo "Failed checksum on $filename"

View file

@ -22,11 +22,11 @@
:flaky :flaky} :flaky :flaky}
:jvm-opts ["--enable-preview"] :jvm-opts ["--enable-preview"]
:dependencies [[org.clojure/clojure "1.12.0"] :dependencies [[org.clojure/clojure "1.12.0"]
[borkdude/edamame "1.4.30"] [borkdude/edamame "1.4.29"]
[org.clojure/tools.cli "1.0.214"] [org.clojure/tools.cli "1.0.214"]
[cheshire "6.0.0"] [cheshire "6.0.0"]
[nrepl/bencode "1.2.0"] [nrepl/bencode "1.2.0"]
[borkdude/sci.impl.reflector "0.0.4"] [borkdude/sci.impl.reflector "0.0.3"]
[org.babashka/sci.impl.types "0.0.2"] [org.babashka/sci.impl.types "0.0.2"]
[org.babashka/babashka.impl.java "0.1.10"] [org.babashka/babashka.impl.java "0.1.10"]
[org.clojure/core.async "1.8.741"] [org.clojure/core.async "1.8.741"]
@ -36,7 +36,7 @@
[insn/insn "0.5.2"] [insn/insn "0.5.2"]
[org.babashka/cli "0.8.65"] [org.babashka/cli "0.8.65"]
[org.babashka/http-client "0.4.22"] [org.babashka/http-client "0.4.22"]
[org.jsoup/jsoup "1.20.1"] [org.jsoup/jsoup "1.19.1"]
[borkdude/graal.locking "0.0.2"]] [borkdude/graal.locking "0.0.2"]]
:plugins [[org.kipz/lein-meta-bom "0.1.1"]] :plugins [[org.kipz/lein-meta-bom "0.1.1"]]
:metabom {:jar-name "metabom.jar"} :metabom {:jar-name "metabom.jar"}

View file

@ -1 +1 @@
1.12.200 1.12.199

View file

@ -1 +1 @@
1.12.201-SNAPSHOT 1.12.200-SNAPSHOT

View file

@ -52,7 +52,7 @@
org.babashka/cli {:mvn/version "0.8.65"} org.babashka/cli {:mvn/version "0.8.65"}
org.babashka/http-client {:mvn/version "0.4.22"} org.babashka/http-client {:mvn/version "0.4.22"}
org.flatland/ordered {:mvn/version "1.15.12"} org.flatland/ordered {:mvn/version "1.15.12"}
org.jsoup/jsoup {:mvn/version "1.20.1"}} org.jsoup/jsoup {:mvn/version "1.19.1"}}
:aliases {:babashka/dev :aliases {:babashka/dev
{:main-opts ["-m" "babashka.main"]} {:main-opts ["-m" "babashka.main"]}
:profile :profile
@ -176,9 +176,7 @@
org.clj-commons/hickory {:git/url "https://github.com/clj-commons/hickory" org.clj-commons/hickory {:git/url "https://github.com/clj-commons/hickory"
:git/sha "9385b6708ef35f161732d8464b3a3aa57dd79f30"} :git/sha "9385b6708ef35f161732d8464b3a3aa57dd79f30"}
com.potetm/fusebox {:git/url "https://github.com/potetm/fusebox" com.potetm/fusebox {:git/url "https://github.com/potetm/fusebox"
:git/sha "ac6d6a0a69510b009b3c1bb2247cd110fd9f7246"} :git/sha "2f42391868c82c193628bec8922f8735ae3cac66"}}
net.sekao/odoyle-rules {:git/url "https://github.com/oakes/odoyle-rules"
:git/sha "0b1d825ec45a998c4d3481dfb292e08ce6a47f0b"}}
:classpath-overrides {org.clojure/clojure nil :classpath-overrides {org.clojure/clojure nil
org.clojure/spec.alpha nil}} org.clojure/spec.alpha nil}}
:clj-nvd :clj-nvd

2
sci

@ -1 +1 @@
Subproject commit e85433a0214114fdceb4ca896e1b9c27b1bdf713 Subproject commit eba23cb4983e2f30d1fadb5cd043ffe496353982

View file

@ -435,7 +435,6 @@
java.text.ParsePosition java.text.ParsePosition
;; adds about 200kb, same functionality provided by java.time: ;; adds about 200kb, same functionality provided by java.time:
java.text.SimpleDateFormat java.text.SimpleDateFormat
java.text.BreakIterator
~@(when features/java-time? ~@(when features/java-time?
`[java.time.format.DateTimeFormatter `[java.time.format.DateTimeFormatter
java.time.Clock java.time.Clock
@ -477,12 +476,7 @@
java.time.temporal.TemporalAccessor java.time.temporal.TemporalAccessor
java.time.temporal.TemporalAdjuster java.time.temporal.TemporalAdjuster
java.time.temporal.TemporalQuery java.time.temporal.TemporalQuery
~(symbol "[Ljava.time.temporal.TemporalQuery;") ~(symbol "[Ljava.time.temporal.TemporalQuery;")])
java.time.chrono.ChronoLocalDate
java.time.temporal.TemporalUnit
java.time.chrono.ChronoLocalDateTime
java.time.chrono.ChronoZonedDateTime
java.time.chrono.Chronology])
java.util.concurrent.atomic.AtomicInteger java.util.concurrent.atomic.AtomicInteger
java.util.concurrent.atomic.AtomicLong java.util.concurrent.atomic.AtomicLong
java.util.concurrent.atomic.AtomicReference java.util.concurrent.atomic.AtomicReference
@ -825,8 +819,6 @@
(and thread-builder (and thread-builder
(instance? thread-builder v)) (instance? thread-builder v))
thread-builder thread-builder
(instance? java.text.BreakIterator v)
java.text.BreakIterator
;; keep commas for merge friendliness ;; keep commas for merge friendliness
,)] ,)]
;; (prn :res res) ;; (prn :res res)

View file

@ -84,8 +84,8 @@
cp))) cp)))
(defn resource (defn resource
(^URL [path] (resource path @the-url-loader)) (^URL [path] (resource @the-url-loader path))
(^URL [path loader] (^URL [loader path]
(if (str/starts-with? path "/") nil ;; non-relative paths always return nil (if (str/starts-with? path "/") nil ;; non-relative paths always return nil
(getResource loader [path] true)))) (getResource loader [path] true))))

View file

@ -14,11 +14,11 @@
edn/read-string) edn/read-string)
deps (:deps deps) deps (:deps deps)
deps (assoc deps deps (assoc deps
'babashka/fs {:mvn/version "0.5.25"} 'babashka/fs {:mvn/version "0.5.22"}
'babashka/babashka.curl {:mvn/version "0.1.2"} 'babashka/babashka.curl {:mvn/version "0.1.2"}
'babashka/babashka.core {:git/url "https://github.com/babashka/babashka.core" 'babashka/babashka.core {:git/url "https://github.com/babashka/babashka.core"
:git/sha "52a6037bd4b632bffffb04394fb4efd0cdab6b1e"} :git/sha "52a6037bd4b632bffffb04394fb4efd0cdab6b1e"}
'babashka/process {:mvn/version "0.6.23"}) 'babashka/process {:mvn/version "0.5.22"})
deps (dissoc deps deps (dissoc deps
'borkdude/sci 'borkdude/sci
'org.babashka/sci 'org.babashka/sci

View file

@ -1190,7 +1190,7 @@ Use bb run --help to show this help output.
(println "[babashka] WARNING: config file does not exist:" config)) (println "[babashka] WARNING: config file does not exist:" config))
nil)) nil))
jar (let [jar (resolve-symbolic-link jar)] jar (let [jar (resolve-symbolic-link jar)]
(some->> [jar] cp/new-loader (cp/resource "META-INF/bb.edn") .toString)) (some-> [jar] cp/new-loader (cp/resource "META-INF/bb.edn") .toString))
:else (if (and file (fs/exists? file)) :else (if (and file (fs/exists? file))
;; file relative to bb.edn ;; file relative to bb.edn
(let [file (abs-path file) ;; follow symlink (let [file (abs-path file) ;; follow symlink

View file

@ -203,9 +203,9 @@
hickory.test.zip]} hickory.test.zip]}
cheshire/cheshire {:git-url "https://github.com/dakrone/cheshire", :test-namespaces [cheshire.test.core], :manually-added true} cheshire/cheshire {:git-url "https://github.com/dakrone/cheshire", :test-namespaces [cheshire.test.core], :manually-added true}
com.potetm/fusebox {:git-url "https://github.com/potetm/fusebox" com.potetm/fusebox {:git-url "https://github.com/potetm/fusebox"
:git-sha "ac6d6a0a69510b009b3c1bb2247cd110fd9f7246" :git-sha "2f42391868c82c193628bec8922f8735ae3cac66"
:test-paths ["test"] :test-paths ["test"]
:test-namespaces [#_com.potetm.fusebox.bulkhead-test :test-namespaces [com.potetm.fusebox.bulkhead-test
com.potetm.fusebox.bulwark-test com.potetm.fusebox.bulwark-test
com.potetm.fusebox.circuit-breaker-test com.potetm.fusebox.circuit-breaker-test
com.potetm.fusebox.fallback-test com.potetm.fusebox.fallback-test
@ -213,8 +213,4 @@
#_com.potetm.fusebox.rate-limit-test #_com.potetm.fusebox.rate-limit-test
com.potetm.fusebox.registry-test com.potetm.fusebox.registry-test
com.potetm.fusebox.retry-test com.potetm.fusebox.retry-test
#_com.potetm.fusebox.timeout-test]} #_com.potetm.fusebox.timeout-test]}}
net.sekao/odoyle-rules {:git-url "https://github.com/oakes/odoyle-rules"
:git-sha "0b1d825ec45a998c4d3481dfb292e08ce6a47f0b"
:test-paths ["test"]
:test-namespaces [odoyle.rules-test]}}

View file

@ -341,7 +341,7 @@
(is (= ::response r)))) (is (= ::response r))))
(try (get "https://httpbin.org/gzip" {:timeout 1000}) (try (get "https://httpbin.org/gzip" {:timeout 1000})
(catch Exception _ (catch java.net.http.HttpTimeoutException _
(doseq [v (vals (ns-publics *ns*))] (doseq [v (vals (ns-publics *ns*))]
(when (:integration (meta v)) (when (:integration (meta v))
(println "Removing test from" v "because httpbin is slow.") (println "Removing test from" v "because httpbin is slow.")

View file

@ -245,24 +245,6 @@
(deftest cached-thread-pool (deftest cached-thread-pool
(is (= 3 (bb nil "(import '(java.util.concurrent Executors ExecutorService)) (is (= 3 (bb nil "(import '(java.util.concurrent Executors ExecutorService))
(let [fut (.submit ^ExecutorService (Executors/newCachedThreadPool) ^Callable (fn [] 3))] (let [fut (.submit ^ExecutorService (Executors/newCachedThreadPool)
(.get fut))"))) ^Callable (fn [] 3))]
(is (nil? (bb nil "(import '(java.util.concurrent Executors ExecutorService)) (.get fut))"))))
(let [fut (.submit ^ExecutorService (Executors/newCachedThreadPool) ^Runnable (fn [] 3))]
(.get fut))"))))
(deftest break-iterator-test
(is (= 1 (bb nil "(ns dude
(:import [java.text BreakIterator]))
(defn count-characters
[^String text]
(let [it (BreakIterator/getCharacterInstance)]
(.setText it text)
(loop [count 0]
(if (= (.next it) BreakIterator/DONE)
count
(recur (inc count))))))
(prn
(count-characters \"🇨🇦\"))"))))