Compare commits

...

1702 commits

Author SHA1 Message Date
Michiel Borkent
8052618fa8
Fix #1818: wrong argument order in clojure.java.io/resource (#1819)
* Fix #1818: wrong argument order in clojure.java.io/resource

* fix
2025-05-13 11:28:44 +02:00
Michiel Borkent
238a98d9b2
Add java.text.BreakIterator (#1817) 2025-05-07 19:58:37 +02:00
Michiel Borkent
57b799e63d Add odoyle-rules to tested libs 2025-05-07 11:06:22 +02:00
Gert Goet
dad646ce38
Make install-script wget-compatible (#1816) 2025-05-04 10:27:03 +02:00
Michiel Borkent
35696b7c0b Bump edamame 2025-05-03 15:35:58 +02:00
Michiel Borkent
00d56900e8
Bump jsoup to 1.20.1 (#1814) 2025-05-02 16:34:03 +02:00
Michiel Borkent
1fc8ef6adb Bump fs 2025-04-30 14:24:49 +02:00
Michiel Borkent
158b36c645 Version bump 2025-04-26 17:27:17 +02:00
Michiel Borkent
b5c65f46e1 changelogs 2025-04-26 17:27:12 +02:00
Michiel Borkent
7e64ce5dd1 export variable 2025-04-26 17:05:55 +02:00
Michiel Borkent
73b806dbd2 v1.12.200 2025-04-26 16:25:47 +02:00
Michiel Borkent
0579d6a0ec disable bulkhead tests 2025-04-26 13:23:02 +02:00
Michiel Borkent
cfee65101f Bump fusefox 2025-04-26 13:03:00 +02:00
Michiel Borkent
4da643cf63 artifact despite failing tests 2025-04-26 12:47:18 +02:00
Michiel Borkent
aa15e5212a disable flaky tests 2025-04-26 12:39:26 +02:00
Michiel Borkent
e23a222fdb
fusebox tests fixed with SCI interop improvements (#1813) 2025-04-26 12:16:36 +02:00
Michiel Borkent
6c0cfde92f Bump process and fs in print-deps 2025-04-21 12:50:20 +02:00
Michiel Borkent
5f6befc577
Add CachedThreadPool interop test (#1811) 2025-04-19 17:29:38 +02:00
Michiel Borkent
d7b0f9155d Add ConcurrentHashmap 2025-04-19 13:52:02 +02:00
Michiel Borkent
28c2f6947f Add ReentrantLock + ThreadLocalRandom 2025-04-19 13:41:37 +02:00
Michiel Borkent
5c4fb1ccc1 Remove run as lein cmd 2025-04-19 12:47:52 +02:00
Michiel Borkent
5b7678f309
Fix virtual thread builder interop (#1810) 2025-04-19 12:12:56 +02:00
Michiel Borkent
f33c68293b Version bump 2025-04-18 11:46:41 +02:00
Michiel Borkent
fd69206933 v1.12.199 2025-04-18 11:25:51 +02:00
Lee Read
689148b99c
Fix #1806: Add cheshire.factory (#1809)
* add cheshire.factory namespace

This will allow bb users to change jackson factory options when using
cheshire.

Took inspiration from other bb lib impls that dealt with dynamic vars.

Brought over cheshire tests, disabling tests for cheshire/jvm features not
included in bb.

Closes #1806

* turf debug stuff

* turf commented code accidentally left in
2025-04-18 11:10:22 +02:00
Michiel Borkent
3db67a5574 Version bump 2025-04-17 15:09:34 +02:00
Michiel Borkent
8191e09314 v1.12.198 2025-04-17 13:00:04 +02:00
Michiel Borkent
e784f4ae8a
Upgrade babashka.cli and cheshire (#1805) 2025-04-16 14:07:58 +02:00
Michiel Borkent
774fe99a83
Bump core.async to 1.8.741 (#1803) 2025-04-08 11:19:04 +02:00
Wes Morgan
f9aafc9d96
Add java.util.regex.PatternSyntaxException (#1802)
* Add java.util.regex.PatternSyntaxException

...to support com.gfredericks/test.chuck library

* Add java.util.regex.PatternSyntaxException addition to CHANGELOG

---------

Co-authored-by: Michiel Borkent <michielborkent@gmail.com>
2025-04-04 21:04:42 +02:00
Michiel Borkent
4037154a28 changelog 2025-04-03 11:50:45 +02:00
Michiel Borkent
35e904b547
Bump core.async to 1.8.735 (#1795) 2025-04-03 11:46:11 +02:00
Michiel Borkent
08d60112ed Bump edamame, throw on triple colon keyword 2025-03-31 16:05:00 +02:00
Michiel Borkent
a9060f0027 Bump process, fixes memory leak 2025-03-31 15:47:51 +02:00
Michiel Borkent
597f180d32 remove debug 2025-03-19 17:40:33 +01:00
Michiel Borkent
007209c0d2 debug windows 2025-03-19 17:23:26 +01:00
Michiel Borkent
1b2682b67a changelog 2025-03-19 16:41:15 +01:00
Michiel Borkent
4a2a305e38
GraalVM 24 (#1800) 2025-03-19 16:38:17 +01:00
Michiel Borkent
e3908a1306
Merge pull request #1799 from lread/lread/badges
docs: readme: badges: reference bb book
2025-03-17 20:04:10 +01:00
lread
f967e10bdd
docs: readme: badges: reference bb book
Give only a quick summary of bb badges in the README, and reference the new
full description in bb book.

Closes #1798
2025-03-17 10:54:07 -04:00
Michiel Borkent
4c6fe98236 Bump deps 2025-03-11 15:07:16 +01:00
Michiel Borkent
28c7c42c2a
Merge pull request #1797 from babashka/jsoup-upgrade
Jsoup upgrade
2025-03-11 11:24:09 +01:00
Michiel Borkent
6d5fc67467 Bump to main branch 2025-03-11 11:21:13 +01:00
Michiel Borkent
50fc2e2582 Upgrade jsoup 2025-03-10 21:02:02 +01:00
Michiel Borkent
a45f76b029 deps.clj 2025-03-10 20:54:49 +01:00
Michiel Borkent
9ed0507030 fix cache 2025-03-06 17:12:58 +01:00
Michiel Borkent
f9935def7e Bump deps.clj 2025-03-06 17:10:34 +01:00
Michiel Borkent
d053a3c0c5 Bump deps.clj 2025-03-04 10:00:38 +01:00
Michiel Borkent
cdcf9deb1c Bump deps.clj 2025-02-28 14:22:23 +01:00
Michiel Borkent
6f43c47f2a Version bump 2025-02-28 12:23:15 +01:00
Michiel Borkent
63a51ff669 v1.12.197 2025-02-28 11:13:20 +01:00
Michiel Borkent
d7c80012b1 v2024.02.28 2025-02-28 11:02:39 +01:00
Michiel Borkent
eddf51529f changelog 2025-02-18 12:36:44 +01:00
Michiel Borkent
d1dbafc49b Bump fs 2025-02-11 21:21:27 +01:00
Michiel Borkent
bc8cd6d358 Bump deps.clj 2025-02-10 17:04:00 +01:00
Michiel Borkent
b01ee6d87d Fix rewrite-clj tests 2025-02-04 20:18:08 +01:00
Michiel Borkent
a43b55bf5c Fix #1793: bump rewrite-clj to 1.1.49 2025-02-04 19:55:25 +01:00
Michiel Borkent
4358428464 Bump deps.clj 2025-01-28 11:17:25 +01:00
Michiel Borkent
7998e50045
Fix #1791: interop problem on Jsoup form element (#1792) 2025-01-23 14:10:36 +01:00
Michiel Borkent
8d3806a6e7 Bump deps.clj 2025-01-23 11:18:32 +01:00
Michiel Borkent
455728092c sync deps.clj and sci 2025-01-16 15:32:49 +01:00
Michiel Borkent
da3eff0305 Bump fs 2025-01-09 21:08:29 +01:00
Michiel Borkent
51b44ba2ed deps.clj bump 2025-01-05 11:24:36 +01:00
Bob
3cddc33334
Fix #1785: allow subclasses of Throwable to have instance methods called via interop (#1786) 2025-01-01 19:36:28 +01:00
Michiel Borkent
d8521888cc sync deps.clj 2024-12-27 16:21:53 +01:00
Michiel Borkent
1a62a619e3 changelog 2024-12-24 10:41:05 +01:00
Michiel Borkent
ecbdbba8d4 Version bump 2024-12-24 10:40:14 +01:00
Michiel Borkent
e186726fd9 v1.12.196 2024-12-24 10:23:11 +01:00
Michiel Borkent
2a50af8f68 Bump org.babashka/cli 2024-12-23 10:55:01 +01:00
Michiel Borkent
c7a5c6c6bc parameterize graalvm install script 2024-12-22 19:47:43 +01:00
Michiel Borkent
024f1d5515
Fix #1771: *e should contain exception thrown by user (#1784) 2024-12-20 17:20:45 +01:00
Ryan Tate
142e9eae06
Add java.nio.file.attribute.UserDefinedFileAttributeView (#1783) 2024-12-20 14:44:52 +01:00
Michiel Borkent
3d909f04b8 Disable test for Windows 2024-12-20 12:43:33 +01:00
Ryan Tate
c9b9ad64fc
Add java.nio.file.attribute.PosixFileAttributes (#1782)
* Add java.nio.file.attribute.PosixFileAttributes

* Update Changelog
2024-12-20 12:17:08 +01:00
Michiel Borkent
9070db46df changelog 2024-12-19 22:50:03 +01:00
Ian Fernandez
b16ecfdf6c
Add RT iter to babashka (#1781) 2024-12-19 22:46:34 +01:00
Michiel Borkent
1874da1d2d
Bump core.async to 1.7.701 (#1778) 2024-12-18 10:42:55 +01:00
Michiel Borkent
c89ac0bd7f Bump github to macos-13 2024-12-12 10:32:07 +01:00
Michiel Borkent
def5d8fd37 Add java.util.concurrent.CompletionStage 2024-12-12 10:17:48 +01:00
Michiel Borkent
2932d82a65 Bump SCI 2024-12-12 10:17:29 +01:00
Michiel Borkent
d8d6876832 Bump fs 2024-12-04 10:56:06 +01:00
Michiel Borkent
c538d5edbd Bump deps.clj 2024-12-03 11:29:57 +01:00
Michiel Borkent
a5ec09087e Changelogs 2024-12-03 10:34:12 +01:00
Michiel Borkent
5e4ce8e093 Fix java.security interop 2024-12-03 10:31:57 +01:00
Michiel Borkent
c1412f9b31 Add java.security.Signature 2024-12-02 20:20:16 +01:00
Michiel Borkent
f5d7c1bb6e
Add more java.security and javax.crypto classes (#1770)
---------

Signed-off-by: Loukas Agorgianitis <loukas@agorgianitis.com>
Co-authored-by: Loukas Agorgianitis <loukas@agorgianitis.com>
2024-12-02 19:49:12 +01:00
Michiel Borkent
1deae725ae Fix #1768: add taoensso.timbre/color-str 2024-11-29 11:32:19 +01:00
Michiel Borkent
42b9ff8f25 Bump clj-yaml 2024-11-25 12:31:39 +01:00
Michiel Borkent
3442f1e505
move locking to SCI (#1765) 2024-11-24 11:58:27 +01:00
Michiel Borkent
f0943d8a14 Bump deps.clj 2024-11-22 13:14:31 +01:00
Michiel Borkent
dff3b526e9 sync process 2024-11-21 20:42:58 +01:00
Kursat Aktas
afb566f600
Introducing Babashka Guru on Gurubase.io (#1763)
Signed-off-by: Kursat Aktas <kursat.ce@gmail.com>
2024-11-18 20:35:50 +01:00
Michiel Borkent
3cc45ec8a7 sync fs 2024-11-18 18:03:08 +01:00
Michiel Borkent
d670bbb245 Bump babashka.cli 2024-11-18 11:07:29 +01:00
Michiel Borkent
62cab79ce6 Bump SCI which has volatile? 2024-11-16 13:58:49 +01:00
Michiel Borkent
f4292e1038
Fix #1760: expose more stuff for fireworks lib (#1762)
Co-authored-by: Jeremiah Coyle <jcoyle@gmail.com>
2024-11-16 10:47:25 +01:00
Michiel Borkent
286e03ee24 Version bump 2024-11-12 10:17:54 +01:00
Michiel Borkent
cd362fbf01 v1.12.195 2024-11-12 09:52:35 +01:00
Michiel Borkent
ccebfa630f Use safer detection of process command 2024-11-11 22:44:02 +01:00
Michiel Borkent
5ab8b3f975 changelogs 2024-11-11 20:55:10 +01:00
Michiel Borkent
2df2e7661b Bump http-client 2024-11-11 20:52:06 +01:00
Michiel Borkent
7121253f75
Add hickory tests (#1758) 2024-11-11 20:10:46 +01:00
Michiel Borkent
e5dde61ba8 sync SCI 2024-11-11 18:26:02 +01:00
Michiel Borkent
6a5c13a6f8 changelog 2024-11-11 10:58:43 +01:00
Michiel Borkent
b981921a00 changelog 2024-11-11 10:57:58 +01:00
Michiel Borkent
eaf760d62f
Add Jsoup (#1756) 2024-11-11 10:51:14 +01:00
Michiel Borkent
b59bfcb7e6
Upgrade timbre (#1755) 2024-10-30 14:41:46 +01:00
Michiel Borkent
0138990139 sync sci 2024-10-30 11:07:12 +01:00
Michael Glaesemann
5acf04dcf1
Include java.lang.SecurityException (#1753)
* Include java.lang.SecurityException

java.net.http.HttpClient, included in Babashak, can throw java.lang.SecurityException

https://docs.oracle.com/en/java/javase/11/docs/api/java.net.http/java/net/http/HttpClient.html

* Update Changelog for https://github.com/babashka/babashka/issues/1752
2024-10-24 16:25:55 +02:00
lvh
aabd35eeaa
Document that tests should prefer to hit public APIs (#1751) 2024-10-23 18:07:14 +02:00
Michiel Borkent
ec6a6a5cdb Bump SCI 2024-10-17 12:37:54 +02:00
Michiel Borkent
b19d5f9bff Fix compile script, fixex #1750 2024-10-15 19:00:12 +02:00
Michiel Borkent
5902852ff9
Fix #1748: add clojure.core/ensure (#1749) 2024-10-15 15:08:47 +02:00
Rahuλ Dé
24c644d9f0
[describe] add commit SHA to describe (#1747) 2024-10-13 20:07:04 +02:00
dependabot[bot]
01cb6112f9
Bump actions/download-artifact from 2 to 4.1.7 in /.github/workflows (#1717)
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 2 to 4.1.7.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/v2...v4.1.7)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-12 13:05:43 +02:00
Michiel Borkent
7ff62d91a2 Version bump 2024-10-12 11:49:26 +02:00
Michiel Borkent
89eed2ed44 v1.12.194 2024-10-12 11:30:21 +02:00
Michiel Borkent
ed8aa97d34
GraalVM 23 (#1745) 2024-10-12 11:28:58 +02:00
Michiel Borkent
34b5e71465
Fix #1743: fix fully qualified instance method in call pos. with GraalVM 22 (#1744) 2024-10-12 10:41:45 +02:00
Michiel Borkent
1d5a777b81 Version bump 2024-10-11 15:17:09 +02:00
Michiel Borkent
2519a284f4 changelog 2024-10-11 15:17:00 +02:00
Michiel Borkent
0f9a0fe622 v1.12.193 2024-10-11 14:50:35 +02:00
Michiel Borkent
b6f844ba0c Fix #1741 2024-10-11 14:44:01 +02:00
Michiel Borkent
ab1ee96335 Bump SCI [skip ci] 2024-10-11 14:26:14 +02:00
Michiel Borkent
a535a5faec Bump SCI 2024-10-11 14:20:38 +02:00
Michiel Borkent
4715d13f71 Bump SCI, add note 2024-10-11 12:54:30 +02:00
Michiel Borkent
8b46e030ca use new impl-java 2024-10-10 21:04:48 +02:00
Michiel Borkent
6ca28c642c New impl-java with release 8 2024-10-10 21:04:20 +02:00
Michiel Borkent
c3c2c8b108
Clojure 1.12 IFn coercion 2024-10-10 20:54:29 +02:00
Michiel Borkent
bc1c35790e
Bump SCI: support new Clojure 1.12 interop (#1740) 2024-10-10 14:01:22 +02:00
Michiel Borkent
50e8a74321 Bump SCI 2024-10-06 15:04:34 +02:00
Michiel Borkent
70b3e5c999 Bump ubuntu image in docker 2024-10-02 15:33:30 +02:00
Michiel Borkent
31a5ec5c71
Upgrade machine executor (#1736) 2024-10-02 15:01:54 +02:00
Michiel Borkent
96807375e0 Add tools.reader.edn/read 2024-10-02 14:10:09 +02:00
Michiel Borkent
c402c01861 Bump SCI reflector compiled for java8 2024-10-01 11:08:35 +02:00
Michiel Borkent
08a08ef957 Bump SCI reflector 2024-10-01 11:00:21 +02:00
Michiel Borkent
6a420c9bfd Bump SCI 2024-09-30 21:13:30 +02:00
Michiel Borkent
030d6ba889
SCI issue 928: record constructor + opt. meta + ext map (#1732) 2024-09-30 15:13:36 +02:00
Stephan Renatus
15f5918e58
Dockerfile improvements (#1729) 2024-09-20 13:31:52 +02:00
Michiel Borkent
0c6f8b6806 Version bump 2024-09-12 20:20:50 +02:00
Michiel Borkent
7128d65de7 v1.4.192 2024-09-12 18:46:05 +02:00
Michiel Borkent
2bf95f60e7 Fix #1676: support latest release of at-at lib 2024-09-12 18:43:26 +02:00
Michiel Borkent
0685424ac3 Fix #1707: support aset on primitive array 2024-09-12 18:20:51 +02:00
Michiel Borkent
ecb0fa5cac Fix #1716: expose babashka.http-client.interceptors namespace 2024-09-12 16:48:00 +02:00
Michiel Borkent
e0a303c484
Fix #1719: add new clojure 1.12 clojure.repl.deps namespace (#1724) 2024-09-12 16:41:27 +02:00
Michiel Borkent
5bc1df73af Bump rewrite-clj 2024-09-12 16:30:53 +02:00
Michiel Borkent
ca26b22bf9 changelog 2024-09-11 15:37:30 +02:00
Michiel Borkent
aa566ed15c Bump deps.clj 2024-09-11 15:36:21 +02:00
Michiel Borkent
2492e71dcc clj-yaml v1.0.28 2024-09-10 15:45:18 +02:00
Michiel Borkent
bbf9933941 upload artifact 2024-09-10 10:21:36 +02:00
Michiel Borkent
ea660e956f Bump http-client to 0.4.21 2024-09-10 10:16:58 +02:00
Michiel Borkent
bc413b654b
Fix #1722: add new clojure 1.12 vars (#1723) 2024-09-06 18:37:26 +02:00
Michiel Borkent
a415139b3b
Fix #1720: include clojure.java.process (#1721) 2024-09-06 17:32:16 +02:00
Michiel Borkent
0147195e8c
Clojure 1.12 (#1718) 2024-09-06 14:37:00 +02:00
Michiel Borkent
d226fe785a Bump edamame 2024-08-22 20:23:57 +02:00
Michiel Borkent
2bb865917a README 2024-08-16 15:40:34 +02:00
Michiel Borkent
16eebb60a3 Bump http-client 2024-08-13 14:48:36 +02:00
Michiel Borkent
da9fcbf10d
Add java.io.LineNumberReader (#1714) 2024-08-10 13:32:24 +02:00
Michiel Borkent
cdfc664682 Bump sci 2024-08-09 18:25:56 +02:00
Michiel Borkent
93e398f288 readme 2024-08-06 11:21:39 +02:00
Michiel Borkent
880b4ebe3f Bump deps.clj 2024-08-06 11:21:20 +02:00
Michiel Borkent
366cbed689 changelogs 2024-08-05 12:02:29 +02:00
Michiel Borkent
d17a5342d2 Bump fs 2024-08-05 12:00:56 +02:00
Michiel Borkent
1372b3d8a0 Bump process 2024-07-27 00:15:17 +02:00
Michiel Borkent
b144c81fbb Bump process + SCI 2024-07-26 20:08:47 +02:00
Lee Read
0527f6a372
docs: dev: windows set example misleading (#1713)
The example I provided implied that the set applied only to the next
command. I've learned that this is not the case.

Also: mention what shell examples apply to.
2024-07-26 19:50:40 +02:00
Lee Read
e258358170
Support running of new babashka.process tests (#1711)
Default `BABASHKA_TEST_ENV` to `jvm` for libtests
CI already understands this need, but defaulting in-script avoids
having devs to understand/remember it too.

Alter PATH as required for new babashka.process tests.

In support of babashka/process#163, babashka/process#164
2024-07-26 12:56:47 +02:00
Lee Read
58def24712
docs: dev: windows tips (#1712)
Some extra notes for Windows that I expect will benefit others and also
future-me!
2024-07-26 12:56:34 +02:00
Michiel Borkent
f335fe51ff Bump SCI: detect duplicate keys in dynamic set of map literal 2024-07-23 13:01:12 +02:00
Michiel Borkent
83918c4b80
Fix #1598: use Rosetta on CircleCI to build x64 images (#1708) 2024-06-30 09:28:56 +02:00
Michiel Borkent
2da875c8f9 sync sci 2024-06-29 20:52:16 +02:00
Michiel Borkent
7abd0000c7 Version bump 2024-06-19 14:52:35 +02:00
Michiel Borkent
19804e4bc7 v1.3.191 2024-06-19 14:13:31 +02:00
Michiel Borkent
af3ae5fa79 Changelogs 2024-06-19 11:34:44 +02:00
Michiel Borkent
bf183a33a8
Add bytechannel + more tests (#1706)
Co-authored-by: Jarppe <jarppe@metosin.fi>
2024-06-18 09:08:12 +02:00
Michiel Borkent
616de196f8
Bump bencode (#1703) 2024-06-12 19:15:24 +02:00
Bob
c3c0bf3cef
catch exceptions from resolving symbolic links during bb.edn lookup (#1702) 2024-06-08 20:56:07 +02:00
Michiel Borkent
ea2c3f06ec bump sci 2024-06-06 12:15:50 +02:00
Bob
3068428578
Fix #1696: make transcriptor work (#1699) 2024-05-30 15:11:09 +02:00
Michiel Borkent
702fdf8108 Skip curl test until Alpine has working curl again 2024-05-27 23:01:57 +02:00
Michiel Borkent
7e8e51b882 debug 2024-05-27 22:46:37 +02:00
Michiel Borkent
976d0fcb6d Debug Alpine 2024-05-27 22:12:21 +02:00
Michiel Borkent
c60d139dbf Debug alpine 2024-05-27 20:52:49 +02:00
Bob
116ee1191c
Fix #1686: do not fetch deps/invoke java when deps aren't needed (#1698) 2024-05-27 10:38:27 +02:00
Bob
035a8268ba
Fix #1695: make CLI args available to REPL (#1697) 2024-05-26 11:41:47 +02:00
Michiel Borkent
5cd2b9d6e6 Bump fs 2024-05-17 11:43:49 +02:00
Noah
82291325de
Update org.flatland/ordered to 1.15.12 (#1694) 2024-05-14 10:54:45 +02:00
Noah
fa0be7ecbf
Fix #1692: expose ordered-set 2024-05-13 22:20:16 +02:00
Michiel Borkent
6d4737ce77 bump deps.clj 2024-05-09 21:49:36 +02:00
Michiel Borkent
da44bd4940 Bump bb.cli 2024-04-30 16:34:38 +02:00
Michiel Borkent
b47a5cc21d
Fix #1688: use-fixtures should add metadata to *ns* (#1689)
* Fix #1688: use-fixtures should add metadata to *ns*

* fix test
2024-04-28 16:22:47 +02:00
Michiel Borkent
ba35032253 Bump deps.clj 2024-04-26 20:21:20 +02:00
Michiel Borkent
11610d6ebe bb http-client v0.4.18 2024-04-25 10:44:05 +02:00
Michiel Borkent
37849d72ad Bump SCI 2024-04-25 10:43:44 +02:00
Michiel Borkent
375c9d3550 Version bump 2024-04-17 11:30:22 +02:00
Michiel Borkent
d7499210ec v1.3.190 2024-04-17 11:09:36 +02:00
Michiel Borkent
3d671ffcb6 Sync fs 2024-04-13 11:39:33 +02:00
Michiel Borkent
4d1984410b Bump fs 2024-04-12 20:39:13 +02:00
Michiel Borkent
0d4096dcd1 changelog 2024-04-12 12:13:42 +02:00
Michiel Borkent
1e4236e22d v0.4.17 2024-04-12 11:52:57 +02:00
Michiel Borkent
717084a71d sync deps 2024-04-12 11:48:38 +02:00
Michiel Borkent
3608c6ab81 changelog 2024-04-04 19:41:09 +02:00
Gabriel Marin
67d8e04db5
bump cheshire (#1685) 2024-04-04 19:39:37 +02:00
Michiel Borkent
71c5e7c45b doc 2024-03-21 15:30:07 +01:00
Michiel Borkent
3cca11f8d1
Upgrade to GraalVM 22 (#1684) 2024-03-21 12:19:13 +01:00
Michiel Borkent
655760d2a9 changelog 2024-03-18 11:21:51 +01:00
Michiel Borkent
7b84a9d256
Fix #1679: issue with wrapping taoensso.timbre/log! (#1683) 2024-03-15 19:19:06 +01:00
Michiel Borkent
1a454b10bb
Add java.lang.ThreadLocal (#1682) 2024-03-14 16:57:06 +01:00
Michiel Borkent
81819deb0a
Add java.util.concurrent.CountDownLatch 2024-03-13 09:08:22 +01:00
Michiel Borkent
8a0f66f3c1 Bump cli 2024-03-12 11:58:26 +01:00
Michiel Borkent
b53e265af3 Bump deps.clj 2024-03-11 11:38:28 +01:00
Michiel Borkent
7530e6a57f Bump clojure 1.11.2 2024-03-08 20:11:47 +01:00
Michiel Borkent
2ee8185269
Bump httpkit to 2.8.0-RC1 2024-03-01 12:27:09 +01:00
Michiel Borkent
ff59956602 Bump process 2024-02-29 17:21:21 +01:00
Michiel Borkent
a176584eda sync pod lib 2024-02-27 17:07:05 +01:00
Michiel Borkent
43d9816bd6 Bump process 2024-02-27 10:58:14 +01:00
Michiel Borkent
e1a12037cd Changelog 2024-02-22 15:44:37 +01:00
Michiel Borkent
86ac0c2431 Version bump 2024-02-22 15:40:57 +01:00
Michiel Borkent
67ae82ee18 v1.3.189 2024-02-22 14:18:51 +01:00
Michiel Borkent
d8e0c6b476 Bump cli 2024-02-22 14:08:23 +01:00
Michiel Borkent
12c89f79c6 Fix #1675: add hash-unordered-coll 2024-02-22 11:41:29 +01:00
Michiel Borkent
67dc3af22d
Add more sslsocket classes (#1674) 2024-02-22 11:15:11 +01:00
Anders Olsson
1f0f932c5e
Suggest using mise instead of asdf (#1673)
asdf adds 120-150 ms to startup time, multiplying bb startup time by a factor of 5 or so.
2024-02-18 23:42:24 +01:00
Michiel Borkent
fa579b74df Bump babashka.cli 2024-02-13 15:58:54 +01:00
Michiel Borkent
e7d964bb0a
Bump http-client (#1670) 2024-02-13 11:34:53 +01:00
Imre Kószó
771f69d922
Update clojure example to new calling convention (#1667)
This way work both from scripts and tasks
2024-02-06 14:23:08 +01:00
Gert Goet
3e4c5861e7
Update CHANGELOG.md (#1666)
inc year
2024-02-06 14:17:57 +01:00
Michiel Borkent
68e8ac6e10 changelog 2024-02-05 12:34:16 +01:00
Michiel Borkent
32078f8259 SCI: read-string should use non-indexing reading, fixes #1665 2024-02-05 12:33:35 +01:00
Michiel Borkent
c9a63af40f Support reader conditional in .cljc file 2024-02-02 19:43:14 +01:00
Michiel Borkent
87f9f6f206 Bump edamame 2024-02-01 11:04:08 +01:00
Michiel Borkent
df477adbb0
Fix #1661: follow symlink when reading adjacent bb.edn (#1663) 2024-01-30 11:56:22 +01:00
Michiel Borkent
35e17bd46a
Upgrade to graal 21.0.2, fixes #1632 (#1662) 2024-01-29 12:02:04 +01:00
Michiel Borkent
9da2afc4b5 Fix #1660: add :deps-root to hash to avoid caching issue with deps.clj 2024-01-23 16:57:22 +01:00
Michiel Borkent
f24c75a054 Version bump 2024-01-12 20:50:19 +01:00
Michiel Borkent
30534691ba v1.3.188 2024-01-12 20:30:24 +01:00
Michiel Borkent
6dc3110b3c
Fix #1658: fix command-line args with overlapping bb options (#1659) 2024-01-12 20:29:40 +01:00
Michiel Borkent
ecbbd7ab84
medium mac still works on circle (#1656) 2024-01-12 17:15:10 +01:00
Michiel Borkent
4ae9d27171 try 14.0.1 2024-01-12 17:08:05 +01:00
Michiel Borkent
86ec03e2f4 try 15.1 2024-01-12 17:06:09 +01:00
Michiel Borkent
39a9ed69d6 try 15.2.0 2024-01-12 17:04:26 +01:00
Michiel Borkent
9653435460 try xcode 15 2024-01-12 16:39:54 +01:00
Michiel Borkent
d467bf53c8 Bump fs: copy-tree with read-only dirs 2024-01-12 16:20:35 +01:00
Michiel Borkent
6bfb2374b8 Version bump 2024-01-09 17:50:34 +01:00
Michiel Borkent
fe940c73c9 v1.3.187 2024-01-09 17:31:21 +01:00
Michiel Borkent
ea2c439369 changelog 2024-01-09 16:54:01 +01:00
Michiel Borkent
c48d2f7a90 Add clojure.reflect/reflect 2024-01-09 16:38:28 +01:00
Michiel Borkent
b337e032b6 #1410: better error message when exec fn doesn't exist 2024-01-09 15:11:42 +01:00
Michiel Borkent
2166c42de2 Fix #1586: warn when config file doesn't exist and debug is enabled 2024-01-09 14:36:49 +01:00
Michiel Borkent
d85c86af2c Fix #1652: allow bb.edn to be empty 2024-01-09 12:26:38 +01:00
Michiel Borkent
5b471cb5e2 Bump cli 2024-01-04 22:06:23 +01:00
Michiel Borkent
629c338b14 Bump deps.clj 2023-12-31 16:21:16 +01:00
Michiel Borkent
ab28e4c465 Fix #1653: add java.time.temporal.WeekFields 2023-12-22 12:23:13 +01:00
Michiel Borkent
54ea4b460d Bump fs to 0.5.20 2023-12-21 21:15:00 +01:00
Michiel Borkent
bf7f42ce73
Compatibility with plumbing.core (#1650) 2023-12-20 16:29:04 +01:00
Michiel Borkent
53d16eb9a0 Bump deps.clj 2023-12-16 11:56:08 +01:00
paintparty
eb69baeaa7
Fix #1645: support clojure.lang.LongRange instance check (#1649) 2023-12-16 10:09:26 +01:00
Michiel Borkent
6052b9ba35 Allow capturing env vars at build time, fixes #1647 2023-12-15 18:20:33 +01:00
Michiel Borkent
4a1b26a6be Fix tests 2023-12-15 18:07:47 +01:00
Michiel Borkent
28f9879e40 Fix #1646: command-line-args are dropped when file exists with same name 2023-12-15 17:19:58 +01:00
Michiel Borkent
0e1694f586 Add tools reader tests 2023-12-09 11:49:57 +01:00
Michiel Borkent
2ee7a0d12e Fix namespace attributes 2023-12-09 11:18:01 +01:00
Michiel Borkent
4af5f1fd61 tools reader compat for shadow.css 2023-12-09 11:07:13 +01:00
Michiel Borkent
fc19382b5e Sync SCI 2023-12-01 13:55:29 +01:00
Michiel Borkent
9e1452867e fill 2023-11-24 11:18:05 +01:00
Michiel Borkent
2a432d3e80 changelog 2023-11-14 10:47:30 +01:00
Michiel Borkent
1dbffac334 Runnable import 2023-11-14 10:46:49 +01:00
Michiel Borkent
aa654a9ead
Add java.util.concurrent.ScheduledFuture (#1643) 2023-11-13 10:33:57 +01:00
Michiel Borkent
9ded5fea0d Bump SCI: allow catch to be used as var name 2023-11-12 11:49:29 +01:00
Michiel Borkent
6353ab9de9 Version bump 2023-11-02 14:19:02 +01:00
Michiel Borkent
ce403671be trigger CI 2023-11-02 14:01:02 +01:00
Michiel Borkent
cedbff7696 v1.3.186 2023-11-02 13:31:58 +01:00
Michiel Borkent
15cff2eb7b v1.3.186 2023-11-02 13:31:07 +01:00
Michiel Borkent
2e23471612 Confirm fix for#1639 by adding test 2023-11-02 13:30:38 +01:00
Michiel Borkent
6b52831a21
Upgrade to GraalVM 21.0.1 (#1640) 2023-11-02 13:25:31 +01:00
Eugen Stan
fdd2d68e1d
Include javax.crypto.spec.IvParameterSpec so I can implement ansible vault decryption (#1638)
Please consider adding this class to bb.

I'm looking to implement ansible-vault decryption in babashka and I need the above class. 

Decryption works in Clojure but fails with missing class for babashka. 

After this I need to fix crypto padding and all is good :). 

https://docs.ansible.com/ansible/latest/vault_guide/vault_using_encrypted_content.html#format-of-files-encrypted-with-ansible-vault
2023-10-31 00:03:13 +01:00
Michiel Borkent
838608647a Bump SCI: add time macro 2023-10-30 18:23:57 +01:00
Michiel Borkent
e746593f14 changelog 2023-10-29 14:47:55 +01:00
Michiel Borkent
3735135c05 Bump SCI 2023-10-27 15:04:15 +02:00
Michiel Borkent
7ebe96773d
Simplify Graal argument (#1636) 2023-10-23 18:01:29 +02:00
Michiel Borkent
2fcf9c682a nrepl: ns-list op 2023-10-22 11:49:48 +02:00
Michiel Borkent
36e9732549 Expose taoensso.timbre.appenders.core 2023-10-19 14:59:06 +02:00
Michiel Borkent
a5e4dfe663 Fix https://github.com/babashka/babashka.nrepl/issues/68 2023-10-14 21:11:49 +02:00
Michiel Borkent
9da7af58b3 Add java.net.URISyntaxException 2023-10-12 16:08:31 +02:00
Michiel Borkent
f1084c1f36
Binary test (#1635) 2023-10-12 13:12:29 +02:00
Michiel Borkent
e0598470be Bump deps.clj 2023-10-12 11:43:58 +02:00
Michiel Borkent
d854de883e
Bump http-kit (#1634) 2023-10-11 16:19:06 +02:00
Michiel Borkent
80a8097a63 Don't parse other arguments in self-contained binary 2023-10-11 15:00:08 +02:00
Michiel Borkent
5bb98159be
Invoke self as uberjar (#1633) 2023-10-11 11:50:26 +02:00
Michiel Borkent
69b83c3678 sync fs 2023-10-11 10:47:51 +02:00
Michiel Borkent
857ecc3111 Bump fs 2023-10-10 15:45:48 +02:00
Michiel Borkent
dbc766f58a Add java.security.spec.PKCS8EncodedKeySpec 2023-10-10 11:39:49 +02:00
Michiel Borkent
79a133ee13 Add java.security.KeyFactory 2023-10-10 11:23:31 +02:00
Michiel Borkent
7ecd2fe59e Partial fix for #1632 2023-10-09 14:58:33 +02:00
Michiel Borkent
0b892ad8e5 Fix babashka.process/exec wrt *defaults* 2023-10-08 21:20:17 +02:00
Michiel Borkent
66b29b9061 Bump sci [skip ci] 2023-10-08 21:19:41 +02:00
Michiel Borkent
1dff46699a bump deps.clj and fs 2023-10-07 11:43:02 +02:00
Michiel Borkent
ae01170f92 changelog 2023-09-28 16:23:36 +02:00
Michiel Borkent
996c96761e Version bump 2023-09-28 16:17:45 +02:00
Michiel Borkent
ef5d2fdf3a v1.3.185 2023-09-28 15:57:06 +02:00
Michiel Borkent
9ae36491b7 Fix test 2023-09-28 15:27:03 +02:00
Michiel Borkent
d1580f1a72
Fix [#babashka.nrepl/66](babashka/babashka.nrepl#66) (#1630) 2023-09-28 14:55:59 +02:00
Michiel Borkent
8788a3c482 Bump babashka.cli to 0.7.53 2023-09-28 13:18:26 +02:00
Michiel Borkent
5cab060bbb Bump deps.clj 2023-09-28 12:50:35 +02:00
Michiel Borkent
d984eda226 Update Github Actions for GraalVM 21 2023-09-28 12:01:19 +02:00
Michiel Borkent
c8324ac887 Compatibility with older architectures 2023-09-28 11:54:37 +02:00
Michiel Borkent
e938a58e06 Changelogs 2023-09-27 14:26:33 +02:00
Michiel Borkent
c04b83811c
Use pgo to speed up loop performance (#1629) 2023-09-27 14:25:16 +02:00
Rahuλ Dé
6c1a66e853
Use Oracle GraalVM 21 (#1624)
---------

Co-authored-by: Michiel Borkent <michielborkent@gmail.com>
2023-09-27 12:23:57 +02:00
Michiel Borkent
ef50677275
Fix #1513: interop on Thread/sleep with non-long (#1628) 2023-09-26 21:16:22 +02:00
Michiel Borkent
8a8c2dcb46 Bump process 2023-09-26 20:42:24 +02:00
Michiel Borkent
7c5a2775df deps.clj 2023-09-26 19:37:33 +02:00
Michiel Borkent
0b61f4d3ab
Use new :static-methods functionality in SCI (#1626) 2023-09-26 17:46:50 +02:00
Michiel Borkent
e14af7b629 Make interop test OS-agnostic 2023-09-25 15:23:19 +02:00
Michiel Borkent
bc5e6b6d52
Add interop on java.util.stream.IntStream (#1625) 2023-09-25 14:52:26 +02:00
Michiel Borkent
c2c7053120
Bump cheshire (#1623) 2023-09-21 03:48:21 -05:00
Michiel Borkent
6467316dc8 Update rewrite-clj tests 2023-09-15 16:03:05 +02:00
Michiel Borkent
ad4935077d Bump rewrite-clj to 1.1.47 2023-09-15 15:18:09 +02:00
Michiel Borkent
ad6cd5989f
Fix #1619: fix reflection issue with core.async/timeout (#1620) 2023-09-05 12:53:42 +02:00
Michiel Borkent
b1d2dc599b Bump babashka.http-client to 0.4.15 2023-09-04 16:09:16 +02:00
Michiel Borkent
af507b2894
Use macos.x86.large.gen2 resource (#1618) 2023-09-03 12:36:19 +02:00
Michiel Borkent
c91ccc7b93 sci (minor) [skip ci] 2023-09-03 12:16:11 +02:00
Michiel Borkent
2eed1b810b Bump SCI (only JS changes) 2023-08-30 15:50:44 +02:00
Peter Strömberg
ce9a0f71e5
Tweak Babashka Babooka copy (#1617)
Straight out recommending Babashka Babooka, instead of conditioning the recommendation on that the user has read Clojure for the Brave and True. Also adding some little info about Daniel.
2023-08-29 10:38:04 +02:00
Michiel Borkent
0d20cdf696 Version bump 2023-08-22 15:25:19 +02:00
Michiel Borkent
6bee6b6a89 v1.3.184 2023-08-22 15:01:17 +02:00
Michiel Borkent
dac6dcd6d5 deps.clj: more remove debug 2023-08-22 14:54:06 +02:00
Michiel Borkent
d8c41351f5 Remove debugging 2023-08-22 14:50:52 +02:00
Michiel Borkent
c1b82db587 Version bump 2023-08-22 14:27:37 +02:00
Michiel Borkent
26c6c5ce18 v1.3.183 2023-08-22 13:37:28 +02:00
Michiel Borkent
3ded3b9546
Fix #1568: warn when task overrides built-in command (#1612) 2023-08-22 13:36:49 +02:00
Michiel Borkent
10c315663f Bump http-client 2023-08-22 10:34:25 +02:00
Michiel Borkent
5f82d40fe6 Bump http-client 2023-08-22 10:33:35 +02:00
Michiel Borkent
81d260e473
Fix #1610: expose babashka.http-client.websocket namespace (#1611) 2023-08-20 21:20:13 +02:00
Michiel Borkent
1881a75a1d
Expose selmer.parser/resolve-arg (#1609) 2023-08-20 20:05:25 +02:00
Michiel Borkent
f470dba671
Fix #1600: use pagesize of 64K on linux aarch64 (#1606)
Fix #1600: use pagesize of 64K on linux aarch64
2023-08-17 15:12:26 +02:00
Michiel Borkent
09bbd9eb34
Fix #1604: throw on missing namespace (#1605) 2023-08-16 20:19:20 +02:00
Michiel Borkent
7dc6b713d0 Bump deps.clj - 1.11.1.1403 2023-08-15 11:08:36 +02:00
Michiel Borkent
42d9d77e76 flaky test 2023-08-11 17:27:57 +02:00
Michiel Borkent
df5b115aab
Bump clj-yaml to 1.0.27 (#1603) 2023-08-11 17:13:16 +02:00
Michiel Borkent
2ee0df4909
Fix #1592 (2): reduce image size (#1602) 2023-08-11 16:41:25 +02:00
Michiel Borkent
ea4ebab807
Fix #1599: propagate run error (#1601) 2023-08-11 13:22:50 +02:00
Michiel Borkent
666ce9adc9 babashka.nrepl minor 2023-08-10 20:31:04 +02:00
Michiel Borkent
601e6e82cd Revert nREPL middleware stuff 2023-08-10 20:19:41 +02:00
Michiel Borkent
6e088272b7 Bump SCI: pick up on new file metadata on second def 2023-08-10 20:15:30 +02:00
Michiel Borkent
2353827e43 Bump deps shas 2023-08-08 16:10:18 +02:00
Michiel Borkent
a8e7d35dfa Disable #1596 test 2023-08-08 11:15:35 +02:00
Michiel Borkent
b6e8f86595 Bump http-client 2023-08-08 11:10:20 +02:00
Chuck Cassel
3370d7a063
Fix #1596: Escape URLs for clojure.java.browse/browse-url on Windows (#1597) 2023-08-08 10:49:07 +02:00
Michiel Borkent
d1e36be9d9 Bump SCI and fs 2023-08-07 11:27:51 +02:00
Michiel Borkent
83c02cb58b
Fix #1592: expose sci.core in babashka (#1593) 2023-08-04 11:43:14 +02:00
Michiel Borkent
4c7bbeeb3b Version bump 2023-07-21 15:49:33 +02:00
Michiel Borkent
560369e294 v1.3.182 2023-07-20 11:32:39 +02:00
Michiel Borkent
94c5141a3e Bump edamame 2023-07-12 21:07:08 +02:00
didibus
b749563003
Bumping selmer version to 1.12.59 (#1588)
* Bumping selmer version to 1.12.59

* Copied over resolve-arg tests to Selmer's lib test.
2023-07-09 21:00:07 +02:00
Michiel Borkent
af0937f060 Bump deps.clj 2023-07-07 13:21:54 +02:00
Michiel Borkent
85ecdab0a5 Bump babashka.http-client 2023-07-06 12:51:25 +02:00
Michiel Borkent
3b251c1b38 Add javax.net.ssl.X509ExtendedTrustManager + proxy 2023-07-05 21:19:50 +02:00
Michiel Borkent
657adff336
Expose more selmer.filter vars (#1585) 2023-07-02 17:02:19 +02:00
Michiel Borkent
a2f70d8324 Bump deps.clj [skip ci] 2023-07-01 19:39:35 +02:00
Michiel Borkent
fb3fa03074 Bump process and sci 2023-06-30 15:22:56 +02:00
Teodor Heggelund
de06c199f1
bb print-deps: sort dependencies (#1582)
* `bb print-deps`: sort dependencies

Co-authored-by: Teodor Heggelund <git@teod.eu>
2023-06-28 18:17:06 +02:00
Michiel Borkent
85eef7d6f7
Upgrade hiccup (#1580) 2023-06-23 12:41:39 +02:00
Michiel Borkent
bf306bb407 Fix #1579: add clojure.tools.reader/resolve-symbol 2023-06-23 11:23:31 +02:00
Michiel Borkent
056254dc9d deps.clj: print repl-aliases in -Sdescribe 2023-06-21 19:15:58 +02:00
Marek J
e3228fe358
Fix README.md prepending the command with bb (#1578) 2023-06-15 15:35:06 +02:00
Michiel Borkent
1010b7f114 Version bump 2023-06-13 12:34:42 +02:00
Michiel Borkent
bef5ccf229 v1.3.181 2023-06-13 11:34:48 +02:00
Michiel Borkent
6760a2b844 Bump deps.clj 2023-06-13 11:33:28 +02:00
Michiel Borkent
fa10070013 deps.clj: better error message when tools zip is corrupt 2023-06-12 23:02:15 +02:00
Michiel Borkent
fb3e04cffe Add zip classes 2023-06-12 21:24:30 +02:00
Michiel Borkent
7b7feb7034 Fix #1575: command line parsing problem with -e + *command-line-args* 2023-06-11 11:11:10 +02:00
Michiel Borkent
c3cf8f5330 Bump deps.clj 2023-06-10 23:05:06 +02:00
Michiel Borkent
caf05979c3
Add malli-cli to projects (#1574)
Co-authored-by: 胡雨軒 Петр <3686502+piotr-yuxuan@users.noreply.github.com>
2023-06-08 08:45:24 +02:00
Michiel Borkent
9356653a09 changelog 2023-06-05 20:45:17 +02:00
Michiel Borkent
aa7fb0c62a Bump fs 2023-06-04 21:22:29 +02:00
Michiel Borkent
45ff85e1a0 fix link 2023-06-02 16:21:22 +02:00
Michiel Borkent
9ff8003c1b mastodon 2023-06-02 15:52:26 +02:00
Michiel Borkent
b46fc49a5d news 2023-06-02 15:51:41 +02:00
Michiel Borkent
9edce22ea7 no vids 2023-06-02 15:49:03 +02:00
Michiel Borkent
56f5378702 sponsors 2023-06-02 15:48:32 +02:00
Michiel Borkent
a2398705bf sponsors 2023-06-02 15:48:11 +02:00
Michiel Borkent
c74d9a6f0a news 2023-06-02 15:47:30 +02:00
Michiel Borkent
d27287b837 sci [skip ci] 2023-06-01 22:08:59 +02:00
Michiel Borkent
d677a2b65a
Upgrade httpkit to 2.7.0-RC1 2023-05-31 11:50:00 +02:00
Michiel Borkent
efb947ec03 Fix #1567: always use static binary on linux aarch64 2023-05-29 11:13:17 +02:00
Lee Read
a8c9526be1
lib tests: include new babashka/process exec tests (#1566)
see https://github.com/babashka/process/pull/131#issuecomment-1558113387
2023-05-29 10:00:45 +02:00
Michiel Borkent
0d1ffd0c9f changelog 2023-05-28 11:53:46 +02:00
Michiel Borkent
bfcec721c9 Version bump 2023-05-28 11:53:14 +02:00
Michiel Borkent
3ade21918f v1.3.180 2023-05-28 11:29:18 +02:00
Michiel Borkent
ddfc93d7e5 changelog 2023-05-27 21:27:41 +02:00
Michiel Borkent
b44167e5c0 Update changelogs 2023-05-27 21:26:58 +02:00
Michiel Borkent
8a0fe19ab3 process 2023-05-27 17:56:33 +02:00
Michiel Borkent
a3eb37e4a6 process 2023-05-27 16:33:52 +02:00
Michiel Borkent
44465990a8 Bump process 2023-05-27 16:13:30 +02:00
Michiel Borkent
236768cada Bump fs 2023-05-24 16:15:56 +02:00
Michiel Borkent
0f85b02a82 mention conf in readme 2023-05-20 13:41:03 +02:00
Michiel Borkent
b1a5f4e8df Bump http-client + deps.clj 2023-05-20 11:16:33 +02:00
Lee Read
0e47d7f7a6
tests: run babashka.process lib tests on windows (#1564)
Now that babashka.process tests are os agnostic we can also run them
on Windows.

This should now work, see babashka/process#126
2023-05-19 11:26:18 +02:00
Michiel Borkent
41e5e0c484 Bump process 2023-05-18 14:05:40 +02:00
Michiel Borkent
fe989f7233 Revert "tests: run babashka.process lib tests on windows (#1559)"
This reverts commit 7f8ec567e6.
2023-05-14 00:31:38 +02:00
Lee Read
7f8ec567e6
tests: run babashka.process lib tests on windows (#1559)
Now that babashka.process tests are os agnostic we can also run them
on Windows.
2023-05-13 23:39:31 +02:00
Lee Read
342cedbcfa
Support babashka.process reload for exec fn (#1558)
* Support babashka.process reload for exec fn

Exposed GraalVM `ProcessProperties/exec` signature used by
babashka.process/exec.

Add new `graal?` feature (on by default) to allow folks to build/use
babashka without this specific Graal API.

On my linux dev box bb executable increased by 8kb.

Closes #1557

* Respond to PR review feedback

1. Allow all Graal ProcessProperties/exec signatures

2. Instead of a feature flag, simply check if Graal ProcessProperties
class is available before including ProcessProperties/exec.
I did not see the value of adding a has-graal-process-properties fn, so
left that part out. Lemme know if you want/need that.

* Respond to PR review feedback

Because resolves can bloat GraalVM native-image size, we like to keep
the together and obvious instead of buried and non-obvious.
2023-05-13 23:22:18 +02:00
Michiel Borkent
b22092a318 pods minor 2023-05-12 16:56:43 +02:00
Michiel Borkent
3da2c9f75f Bump pods 2023-05-12 16:12:16 +02:00
Michiel Borkent
2e3bd2d3f0
Bump deps.clj (#1556) 2023-05-12 16:05:41 +02:00
Michiel Borkent
555c11eca2 Bump fs 2023-05-11 11:51:00 +02:00
Michiel Borkent
32a18191dc deps.clj 2023-05-09 12:06:47 +02:00
Michiel Borkent
dcb0b45405 Bump process 2023-05-06 20:44:14 +02:00
Michiel Borkent
e84eb29fa1 process minor 2023-05-04 22:15:51 +02:00
Michiel Borkent
1c425796ae process: hopefully fixed CI tests 2023-05-04 21:47:56 +02:00
Michiel Borkent
4e8d907369 Bump print-deps deps 2023-05-04 21:04:37 +02:00
Michiel Borkent
f4bc802880 Bump process 2023-05-04 21:04:37 +02:00
Rahuλ Dé
c13500cddb
[#1524] fix docker orchestration (#1552)
* [#1524] fix docker orchestration

* [#1524] revert branch checks
2023-05-01 14:15:03 +02:00
Michiel Borkent
98aa6b996e swag link [skip ci] 2023-05-01 12:25:14 +02:00
Michiel Borkent
f2e955cc0b
README [skip ci] (#1551) 2023-05-01 12:09:25 +02:00
Rahul De
5c4eedb12b [#1524] pick right binary for ARM docker images 2023-05-01 11:07:55 +01:00
Michiel Borkent
c536d524f8 changelog 2023-05-01 11:47:29 +02:00
Rahuλ Dé
ea57060963
No linux aarch64 (#1550)
* [#1524] remove linux-aarch64 dynamic binary build

* [#1524] add changelog
2023-05-01 11:46:24 +02:00
Michiel Borkent
430a466a25 bb news 2023-05-01 10:17:26 +02:00
Michiel Borkent
d27efb137d
Fix #1548: shell and sh should respect babashka.process/*defaults* (#1549) 2023-04-28 13:30:07 +02:00
Michiel Borkent
0063196074 SCI: revert 2023-04-28 13:20:40 +02:00
Michiel Borkent
4db3de5987 Revert "SCI: preserve ex-data in threads"
This reverts commit cd70809b1b.
2023-04-28 13:20:25 +02:00
Michiel Borkent
cd70809b1b SCI: preserve ex-data in threads 2023-04-28 12:56:30 +02:00
Michiel Borkent
2b24a84c11 Version bump 2023-04-26 17:42:59 +02:00
Michiel Borkent
7d5cdadbcb v1.3.179 2023-04-26 16:24:13 +02:00
Michiel Borkent
325e043440 changelog 2023-04-26 14:42:21 +02:00
Michiel Borkent
4dcc159ed7
Fix #1545: Adjacent bb.edn not respected with explicit -f option (#1547) 2023-04-26 14:41:21 +02:00
Michiel Borkent
a9be9d02ea Fix #1546: add .contains for vector and lazy-seq 2023-04-25 14:28:54 +02:00
Michiel Borkent
d2fece3f80 Fix #1544: :local/root in script-adjacent bb.edn should resolve relative to script 2023-04-23 12:28:44 +02:00
Bob
39e4ea71e9
Fix #1189: add test for error message for clojure {:dir "missing-directory"} (#1543)
* add test for error message from running clojure
task in non-existent dir

* make testing string more accurate
2023-04-22 23:37:17 +02:00
Michiel Borkent
4cbdb57ad1 SCI: better error message when trying to recur across try 2023-04-22 11:30:03 +02:00
Michiel Borkent
2e0bbfb260 unset bb classpath 2023-04-21 16:50:31 +02:00
Michiel Borkent
c1726c3b98 Add test for regression 2023-04-21 16:39:08 +02:00
Michiel Borkent
0951328270 Version bump 2023-04-21 16:14:06 +02:00
Michiel Borkent
1de5c553ea v1.3.178 2023-04-21 15:55:14 +02:00
Michiel Borkent
cd4987b005 news 2023-04-21 14:27:48 +02:00
Michiel Borkent
340d24fb07 changelogs 2023-04-21 14:21:47 +02:00
Michiel Borkent
abc102f0b8 Version bump 2023-04-21 14:19:43 +02:00
Michiel Borkent
3f99274978 v1.3.177 2023-04-21 13:59:51 +02:00
Michiel Borkent
26967df643
Fix #1541: respect bb.edn adjacent to invoked file (#1542) 2023-04-21 13:50:53 +02:00
Michiel Borkent
1644c94fda nrepl wip [skip ci] 2023-04-21 12:23:30 +02:00
Michiel Borkent
63102eca86
Add --install-exit-handlers to support shutdown hook + SIGTERM (#1540) 2023-04-19 21:55:47 +02:00
Michiel Borkent
f7907be86e Bump http-client 2023-04-18 15:00:47 +02:00
Bob
19bfd172fc
vary ports across socket repl tests (#1539)
* use different port for socket repl tests

- update socket-command to socket-command-on-port, which
 takes a port and then returns the socket-command function
- change port numbers across tests

* undo little formatting change

* grr... newlines
2023-04-18 09:47:40 +02:00
Michiel Borkent
a945ea8146 Bump CLI 2023-04-17 19:57:48 +02:00
Michiel Borkent
fcb0b4a1a7 docs [skip ci] 2023-04-15 11:24:52 +02:00
Michiel Borkent
6eea167cfe docs 2023-04-15 11:20:08 +02:00
Michiel Borkent
307ed36f9c Add UnsupportedOperationException 2023-04-14 13:13:19 +02:00
Michiel Borkent
99655aa224 Bump edamame 2023-04-13 17:54:18 +02:00
Michiel Borkent
b7ee49ab8d Bump edamame to 1.3.21 2023-04-13 15:34:05 +02:00
Michiel Borkent
37b5d1d6a3 built-in deps.edn 2023-04-12 15:18:26 +02:00
Michiel Borkent
1a54f03ce3 Bump clj-yaml to 1.0.26 2023-04-12 15:14:50 +02:00
Michiel Borkent
9365a24eed deps.clj upgrade 2023-04-12 15:03:08 +02:00
Michiel Borkent
0b5a281d46 sci [skip ci] 2023-04-08 13:14:11 +02:00
Michiel Borkent
c89a396bbd
Add java.security.cert.CertificateFactory (#1531) 2023-04-07 23:54:59 +02:00
Michiel Borkent
905f6365d4 news 2023-04-07 13:18:16 +02:00
Michiel Borkent
c1788da654 news 2023-04-07 13:14:28 +02:00
Michiel Borkent
d3f7a52f65 pods: fix for JVM 2023-04-02 11:27:33 +02:00
Michiel Borkent
c85e86cb7e
Upgrade transit-clj 1.0.333 (#1528) 2023-04-01 12:25:46 +02:00
Michiel Borkent
b4365826ba Bump deps.clj 2023-04-01 12:03:52 +02:00
Michiel Borkent
e68eb7a998 Add clojure.lang.PersistentList to reachable classes 2023-03-31 11:42:00 +02:00
Michiel Borkent
18b2d54d33 deps.clj 1.11.1.1262 2023-03-28 10:59:14 +02:00
KARASZI István
43e7b4af0b
fix(docker): make image smaller (#1523)
* Replace mkdir with WORKDIR

* Remove unnecessary package list

* Remove graalvm removal in the base image

This could speed up local builds since we don't need to download it
every time

* Remove package information

* Remove the downloaded apk

* Add a changelog entry

* Revert WORKDIR changes
2023-03-21 22:45:25 +00:00
Michiel Borkent
57ebb524b0 changelog 2023-03-18 17:02:48 +01:00
Michiel Borkent
6ccdfae7bb Version bump 2023-03-18 17:00:50 +01:00
Michiel Borkent
fa34ebfdef Retry release 2023-03-18 16:42:43 +01:00
Michiel Borkent
a66a2f74f5 Retry release 2023-03-18 16:04:44 +01:00
Michiel Borkent
6850caed6e revert release 2023-03-18 15:25:58 +01:00
Michiel Borkent
29150e6bd3 v1.3.176 2023-03-18 15:22:24 +01:00
Michiel Borkent
4a45624acd Version bump 2023-03-18 15:07:51 +01:00
Michiel Borkent
cce0a3d378 Fix pushing to ghcr 2023-03-18 14:33:34 +01:00
Michiel Borkent
26780fffe5 v1.3.175 2023-03-18 14:12:05 +01:00
Michiel Borkent
1bc4782d42 changelogs 2023-03-18 14:11:19 +01:00
Michiel Borkent
2c6485b876 Bump edamame to 1.3.20 2023-03-18 11:13:19 +01:00
Michiel Borkent
4fc1d9a815 deps.clj: 1.11.1.1257 2023-03-16 11:02:37 +01:00
Rahuλ Dé
e7521110c9
Fix #1521: Push images to GHCR (#1522) 2023-03-15 16:52:05 +01:00
Michiel Borkent
e2f2e9ae4e use newest ordered 2023-03-13 15:38:56 +01:00
Michiel Borkent
0927a48c50 Use newest ordered 2023-03-13 15:37:01 +01:00
Michiel Borkent
69373fb445 Support clojure.lang.MapEntry/create 2023-03-11 23:38:16 +01:00
Michiel Borkent
7aba75564e
Go macro uses virtual threads (#1517) 2023-03-10 19:22:53 +01:00
Michiel Borkent
4438f3bbcf Bump babashka cli 2023-03-10 16:30:14 +01:00
Michiel Borkent
1bb7ebe3dc Bump github release artifact 2023-03-09 23:21:02 +01:00
Michiel Borkent
9545d23cc4
Enable unix protocol on Windows (#1516) 2023-03-09 22:51:42 +01:00
Michiel Borkent
e74e7ed2ca
Fix #1511: support domain sockets (#1514) 2023-03-09 16:57:17 +01:00
Michiel Borkent
5ad161a059 Bump http-client in meta-inf [skip ci] 2023-03-08 21:49:13 +01:00
Michiel Borkent
68878e7f89 Fix #1510 2023-03-08 10:55:43 +01:00
Michiel Borkent
84bd66f869 Mark ssl test as flaky 2023-03-07 19:34:48 +01:00
Michiel Borkent
5516151132 deps.clj : 1.1.11.1152 2023-03-07 19:06:42 +01:00
Michiel Borkent
4e52f0d34c Bump http-client 2023-03-03 20:21:19 +01:00
Michiel Borkent
4a38fdbd07 SCI 2023-03-03 16:57:50 +01:00
Michiel Borkent
a8d3923262 Add UnixDomainSocketAddress 2023-03-03 16:42:15 +01:00
Michiel Borkent
8d8d3a1057 clean [skip ci] 2023-03-03 15:22:10 +01:00
Michiel Borkent
d4c4e53c86 sci minor [skip ci] 2023-03-03 15:03:31 +01:00
Michiel Borkent
52a7c205a3 Bump graal in actions 2023-03-02 15:35:49 +01:00
Rahuλ Dé
9e004edefe
Fix #1507: support calling getName on virtual thread 2023-03-02 15:10:58 +01:00
Michiel Borkent
b8a0520b93 Version bump 2023-03-01 00:23:46 +01:00
Michiel Borkent
1022068624 trim version 2023-03-01 00:07:09 +01:00
Michiel Borkent
8df7f7c3fe Bump minor version 2023-02-28 23:51:54 +01:00
Michiel Borkent
f5e2fe0f61 v1.1.174 2023-02-28 23:51:18 +01:00
Michiel Borkent
abdd068149 changelog 2023-02-28 23:46:16 +01:00
Michiel Borkent
99ec77afeb Bump fs 2023-02-28 23:45:20 +01:00
Michiel Borkent
eba9d0d642 Docker alpine, hopefully clojure.org is less flaky 2023-02-28 23:10:09 +01:00
Michiel Borkent
9520c5b240 Fix #1501: equals on deftype 2023-02-28 22:21:04 +01:00
Michiel Borkent
9b21986f05 changelog [skip ci] 2023-02-28 20:22:22 +01:00
Michiel Borkent
076a2774be Fix #1506: :exec-args in task should override :exec-args on fn metadata 2023-02-28 19:45:49 +01:00
Michiel Borkent
3f4ac12cc4 Bump deps.clj 2023-02-28 16:05:44 +01:00
Michiel Borkent
b2d422cacb Bump http-client 2023-02-28 15:05:00 +01:00
Bob
5dc7763325
- remove zero size tolerance for overwriting uber-files (#1504)
- in tests, delete temp output files that would prevent overwrite
- in tests, change 'non-empty' files to be empty files (since
 non-empty is no longer necessary)
- in hato test, replace nghttp2 with httpbin, since httpbin
 uses http/2 by default now, and to benefit from httpbin
  'flaky' test
2023-02-26 10:13:27 +01:00
Bob
3045cd226e
Fix #1489: prevent uberscript/uberjar overwrites (#1503) 2023-02-25 21:36:02 +01:00
Michiel Borkent
187ee7da00 Add support for .getWatches on atoms 2023-02-25 21:33:55 +01:00
Michiel Borkent
cd9a87e75c library upgrades 2023-02-25 21:18:46 +01:00
Michiel Borkent
3ad043769c
Use GraalVM 22.3.1 on JDK 19.0.2 with virtual thread support (#1500) 2023-02-21 16:23:03 +01:00
Michiel Borkent
332c7c6ac8 Babashka CLI v0.6.46 2023-02-19 13:09:18 +01:00
Michiel Borkent
711bb40480 Fix crypto test 2023-02-15 13:51:41 +01:00
Michiel Borkent
be426ee56d Add secret key test 2023-02-15 13:30:09 +01:00
Michiel Borkent
9118c43da3 Fix #1496: add set-agent-send-executor! and set-agent-send-off-executor! 2023-02-15 11:25:05 +01:00
Michiel Borkent
c5c8086dfe
More jaxax.crypto stuff (#1495) 2023-02-15 11:01:37 +01:00
Michiel Borkent
734ca577f6 Partial fix for toString on deftype, #1494 2023-02-14 18:36:09 +01:00
Michiel Borkent
bf3623b596 Bump http-client 2023-02-14 17:01:36 +01:00
Michiel Borkent
b2f534517c deps.clj 2023-02-13 17:31:26 +01:00
Daniel Vingo
ead237eee3
Add more java classes and interfaces to support juxt.tick (#1490) 2023-02-10 10:39:54 +01:00
Michiel Borkent
30a15e16ae Bump fs 2023-02-08 11:29:17 +01:00
Bob
42fd5d851f
Don't fail build on flaky tests 2023-02-07 22:24:11 +01:00
Michiel Borkent
6d1f295f47
Fix #1487: babashka.tasks/clojure with 0 args (#1488) 2023-02-06 22:36:26 +01:00
Michiel Borkent
a1858774b6 Fix #1482: make loading of libs thread safe 2023-02-06 10:51:26 +01:00
Michiel Borkent
ab0c5bb058 Update babashka news 2023-02-05 20:31:18 +01:00
Michiel Borkent
920babb56b sci minor [skip ci] 2023-02-05 16:34:53 +01:00
Dosbol
cc0338a1e9
Added Kleene to companies (#1485) 2023-02-05 11:55:32 +01:00
Bob
a4e791e6ad
Add lib tests for xforms (#1483)
Fixes #1000
2023-02-04 23:14:35 +01:00
Michiel Borkent
02d300ee3d changelog 2023-02-04 11:05:10 +01:00
Michiel Borkent
a6d8d0179c changelog 2023-02-04 10:56:23 +01:00
Michiel Borkent
9441dabf81 Version bump 2023-02-04 10:54:53 +01:00
Michiel Borkent
842c7a0589 v1.1.173 2023-02-04 10:42:19 +01:00
Michiel Borkent
a19d05b8da
Support reader_tags.clj(c) (#1481) 2023-02-03 21:21:56 +01:00
Michiel Borkent
ca1e2d7769
Classloader interop improvements (#1480) 2023-02-03 13:08:55 +01:00
Michiel Borkent
72dbf53df7 TODO: disable :flaky tests on master branch: 2023-02-01 23:00:13 +01:00
Michiel Borkent
76e779d0d3
Compatibility with clojure.tools.namespace.repl/refresh and clojure.java.classpath (#1479) 2023-02-01 21:53:52 +01:00
Michiel Borkent
bbd1940844 SCI minor 2023-02-01 11:51:00 +01:00
Michiel Borkent
0dab6f5f3d SCI: loaded-libs support 2023-02-01 11:46:06 +01:00
Michiel Borkent
5a1b6a9f79 bump deps.edn [skip ci] 2023-01-31 19:37:21 +01:00
Michiel Borkent
722812bd61 Bump rewrite-clj 2023-01-31 19:32:29 +01:00
Michiel Borkent
2b575b1ea6 Bump http-client 2023-01-30 20:43:09 +01:00
Michiel Borkent
e9e906e09f minor [skip ci] 2023-01-30 12:05:34 +01:00
Michiel Borkent
d8f50879c8 Bump fs 2023-01-29 16:36:52 +01:00
Michiel Borkent
28f72ff4a2 Bump fs 2023-01-29 16:36:01 +01:00
Rahuλ Dé
32864476e5
Fix #1473: make :local/root deps resolve paths relative to bb.edn
Co-authored-by: Michiel Borkent <michielborkent@gmail.com>
2023-01-28 14:27:54 +01:00
Michiel Borkent
63abc75cf5 Update deps.clj 2023-01-27 17:31:55 +01:00
Michiel Borkent
b2855d1212 Bump cli 2023-01-27 13:55:46 +01:00
Michiel Borkent
bd5597a3cb Bump process to 0.4.16 2023-01-26 16:47:51 +01:00
Michiel Borkent
a79c33d7bf
Fix #1474: use UrlClassLoader for finding files on classpath (#1475) 2023-01-25 22:29:37 +01:00
Michiel Borkent
1452f45cfb Bump SCI 2023-01-24 19:38:12 +01:00
Michiel Borkent
64dcb3335d changelog 2023-01-23 20:14:47 +01:00
Michiel Borkent
c053765731 Version bump 2023-01-23 20:13:09 +01:00
Michiel Borkent
314906cb0d v1.1.172 2023-01-23 19:58:13 +01:00
Michiel Borkent
4220902927 Try fixing test on Windows 2023-01-23 18:13:47 +01:00
Michiel Borkent
4931048284 changelogs 2023-01-23 17:28:37 +01:00
Michiel Borkent
2da873a2c1 Bump process: change default for :out :append to :out :write 2023-01-23 17:27:15 +01:00
Michiel Borkent
17adc69abc Another fix for #1472 2023-01-23 17:00:20 +01:00
Michiel Borkent
a464b59bc2 Fix #1472: fix double tokenization when calling clojure from tasks 2023-01-23 16:35:51 +01:00
Michiel Borkent
7c2e8a155f babooka 2023-01-23 15:12:55 +01:00
Michiel Borkent
fa9103807d Version bump 2023-01-23 14:51:29 +01:00
Michiel Borkent
3610f52c47 v1.1.171 2023-01-23 14:28:33 +01:00
Michiel Borkent
68d041c892 changelog 2023-01-22 21:00:54 +01:00
Michiel Borkent
02cdb00e8d
Include babashka.http-client (#1471) 2023-01-22 20:52:17 +01:00
Michiel Borkent
7f44c272b8 deps resource [skip ci] 2023-01-22 19:48:26 +01:00
Michiel Borkent
5140bd4249 SCI: support add-watch on vars 2023-01-22 12:28:46 +01:00
Michiel Borkent
0be3c71772
Eftest compatibility (#1470) 2023-01-21 21:29:30 +01:00
Michiel Borkent
77878631e9 Switch clojure.test/*report-counters* to ref instead of atom 2023-01-21 17:31:53 +01:00
Michiel Borkent
28ec2c690a Support qualified method names in proxy and ignore namespace 2023-01-21 17:02:52 +01:00
Michiel Borkent
fe6042a06f Fix Outputstream proxy for kaocha 2023-01-21 16:25:39 +01:00
Michiel Borkent
6feb785cb0 changelog: mention breaking change 2023-01-21 15:41:43 +01:00
Michiel Borkent
eca7847ed9
Fix #1467: avoid printing results by default, unless --prn is enabled (#1469) 2023-01-21 15:38:50 +01:00
Michiel Borkent
430cbedbe4 Fix proxy class 2023-01-21 14:10:04 +01:00
Michiel Borkent
a5318ea289 Allow java.io.OutputStream to be proxied, for kaocha 2023-01-21 14:06:33 +01:00
Michiel Borkent
91413c2803 Fix changelog 2023-01-19 12:59:09 +01:00
Michiel Borkent
7844039861 Version bump 2023-01-19 12:55:54 +01:00
Michiel Borkent
61851a511f v1.0.170 2023-01-19 12:40:55 +01:00
Michiel Borkent
09debe0f1d Add Semaphore + httpkit functions 2023-01-19 12:29:01 +01:00
Michiel Borkent
71d0a14c26 Mark curl tests as flaky 2023-01-18 15:47:18 +01:00
Michiel Borkent
5b42de70d8
Tab compatibility (#1466) 2023-01-18 15:29:19 +01:00
Michiel Borkent
79a9bc531a Bump SCI, fixes #1465 2023-01-18 14:40:53 +01:00
Michiel Borkent
6b6d403d5e Bump CLI and fs 2023-01-18 11:35:53 +01:00
Michiel Borkent
843ca4c2d3 SCI: macroexpansion error location improvement 2023-01-14 10:59:22 +01:00
Michiel Borkent
e43edd8627 Bump babashka cli 2023-01-13 13:14:31 +01:00
Michiel Borkent
b2b20e15c1 Update asdf link 2023-01-12 15:59:45 +01:00
Michiel Borkent
004e99eaa3 Add forked asdf plugin 2023-01-11 21:44:47 +01:00
Jeroen van Dijk
4d1c05b23d
Add java.util.jar.Attributes to classes (#1464)
* Add java.util.jar.Attributes to classes

* Update Changelog
2023-01-11 13:09:12 +01:00
Michiel Borkent
6f41179849 sync deps.clj [skip ci] 2023-01-10 10:45:37 +01:00
Michiel Borkent
1810b4bd97 Marlk httpkit tests as flaky 2023-01-09 23:05:59 +01:00
Michiel Borkent
e3aa11baa8 pods: fix untar with missing dir, delete port files 2023-01-09 21:22:53 +01:00
Michiel Borkent
9b5ec623e4 news 2023-01-06 16:37:59 +01:00
Michiel Borkent
0b4bfdc3ab news 2023-01-06 16:35:09 +01:00
Michiel Borkent
96e70ff7e3 news fini 2023-01-06 15:59:17 +01:00
Michiel Borkent
eb4e583c97 news update 2023-01-06 15:14:52 +01:00
Michiel Borkent
47df0c47a1 news november 2022 2023-01-06 14:56:19 +01:00
Michiel Borkent
7de2262585 new october 2023-01-06 14:46:07 +01:00
Michiel Borkent
27fad0ac36 News september 2023-01-06 14:38:22 +01:00
Michiel Borkent
5b7213822c news august 2023-01-06 13:44:38 +01:00
Michiel Borkent
8fa49b940d CI install 2023-01-06 13:34:44 +01:00
Michiel Borkent
6c1f5f7a4d CI install instructions 2023-01-06 13:33:49 +01:00
Michiel Borkent
2a943086a6 Mark clj-http-lite tests as flaky 2023-01-05 12:34:07 +01:00
Michiel Borkent
9e1ea1071d Skip flaky tests on main 2023-01-05 12:15:20 +01:00
Michiel Borkent
a0a34dc5d8 Fix #1456 (2): add *data-readers* 2023-01-05 11:25:25 +01:00
Michiel Borkent
b9308eddcc
Fix #1456: allow dyn vars to be set in socket REPL (#1461) 2023-01-04 21:23:29 +01:00
Michiel Borkent
3aca505790
Partial fix for #1456 (nREPL issue) (#1460)
Co-authored-by: axks <alexander.kaiser@blockinfinity.com>
2023-01-04 20:46:04 +01:00
Michiel Borkent
5965e32d26 changelog 2023-01-03 22:18:32 +01:00
Michiel Borkent
e9b87b0185 Version bump 2023-01-03 22:18:00 +01:00
Michiel Borkent
91b3a962b4 v1.0.169 2023-01-03 22:04:40 +01:00
Michiel Borkent
d9358f0706 Changelog [skip ci] 2023-01-03 22:03:51 +01:00
Michiel Borkent
8e64ef9df8
Upgrade babashka spec.alpha (#1459) 2023-01-03 22:03:19 +01:00
Michiel Borkent
2ac1428341 Add compiler dynvars for compatibility 2023-01-03 19:51:03 +01:00
Michiel Borkent
efe4f214cc Fix pprinting vars 2023-01-03 13:24:27 +01:00
Michiel Borkent
bdbe5a4548 SCI: add reader-conditional 2023-01-03 12:02:14 +01:00
Rahuλ Dé
34136173d5
Add check for max glibc version (#1458)
* Add check for max glibc version

* checkout first

* tolerate subversions

* exit better

* rename ci gen script
2022-12-31 12:16:39 +01:00
Michiel Borkent
1e06b07d0f Update pods 2022-12-29 17:10:14 +01:00
Michiel Borkent
188949d7eb sci, process sync 2022-12-27 22:32:06 +01:00
Michiel Borkent
073e7e3ce0 Even better require detection 2022-12-26 13:10:26 +01:00
Michiel Borkent
39c1390085 Fix build 2022-12-26 12:58:08 +01:00
Michiel Borkent
dd77a85893 better require logging 2022-12-26 12:40:22 +01:00
Michiel Borkent
4223f1432d SCI sync 2022-12-25 12:24:23 +01:00
Michiel Borkent
68a6e24516 Fix #1454: include babashka process in print-deps output 2022-12-23 14:44:52 +01:00
Michiel Borkent
8b39f67700
SCI: cache Java interop methods (#1455) 2022-12-23 14:32:13 +01:00
Michiel Borkent
61950b87e2 SCI: faster field access 2022-12-21 12:28:47 +01:00
Michiel Borkent
df24d04f73 SCI: minor perf boost for zero args 2022-12-21 12:06:10 +01:00
Michiel Borkent
01eea0babb changelog 2022-12-20 19:48:18 +01:00
Michiel Borkent
935c8da535 Changelog + SCI update 2022-12-20 19:43:23 +01:00
Matthew Downey
62916fa292
Fix #1451: Allow passing explicit file and line number to clojure.test 2022-12-20 19:41:36 +01:00
Michiel Borkent
d9aad85476 SCI: remove intermediate code for static method call 2022-12-19 23:04:57 +01:00
Michiel Borkent
37e2da9f5b minor README 2022-12-19 14:41:13 +01:00
Michiel Borkent
2535299be8 README [skip ci] 2022-12-18 12:04:30 +01:00
Gabe
965c177bca
Fix #1280: babashka REPL doesn't quit right after ctrl-d (#1450)
the problem is that parser/parse-next waits for an enter before returning an object
we can use peek-char to pre-emptively react to any EOF at the start of the line
in case of not-start-of-line, parse-next takes over

Co-authored-by: Alice Margatroid <code@alice.bunkerlabs.net>
2022-12-14 14:57:07 +01:00
Michiel Borkent
dc2502ebae deps.clj 2022-12-14 14:46:42 +01:00
Michiel Borkent
df24cf287d Update deps.clj 2022-12-12 21:19:23 +01:00
Michiel Borkent
72377d090f Bump built-in deps.edn [skip ci] 2022-12-11 18:17:12 +01:00
Michiel Borkent
5570c416e9 v0.6.41 2022-12-11 18:06:23 +01:00
Michiel Borkent
e619a896a1 restore init 2022-12-10 20:55:31 +01:00
Michiel Borkent
38dc526680 Fix inlined alength 2022-12-10 15:18:15 +01:00
Michiel Borkent
44dbc57cda Restore inlined functions 2022-12-10 14:41:29 +01:00
Michiel Borkent
b9fa877cd7 Constructor of LazySeq 2022-12-10 12:22:22 +01:00
Michiel Borkent
f9131b2979 lazy-seq as macro 2022-12-10 12:04:28 +01:00
Michiel Borkent
ba328f2387
ns as macro (#1447) 2022-12-10 11:48:29 +01:00
Michiel Borkent
d721b925f4 Support --dev-build flag 2022-12-09 19:12:16 +01:00
Michiel Borkent
c7ccc6fedb Fix #1446: add pprint/code-dispatch 2022-12-09 18:39:51 +01:00
Thiago Kenji Okada
58dbd2b6aa Update zlib to version 1.2.13 2022-12-09 15:13:39 +00:00
Michiel Borkent
f7b235635a doc improvement 2022-12-09 13:08:03 +01:00
Michiel Borkent
7d5083ac0a Fix #1434, document installing on Alpine 2022-12-09 13:05:29 +01:00
Michiel Borkent
683752c602 Always install static binary on linux amd64 2022-12-09 12:51:33 +01:00
Michiel Borkent
5ac048157a sci: speed up case 2022-12-08 23:26:59 +01:00
Michiel Borkent
9dff25d36b process [skip ci] 2022-12-08 15:05:08 +01:00
Michiel Borkent
c931fbe294 sync process [skip ci] 2022-12-08 15:00:40 +01:00
Michiel Borkent
46b6dfd3c3 Update fs: better fix for splitting on extension 2022-12-08 13:34:30 +01:00
Michiel Borkent
3bdeee8bee sync process [skip ci] 2022-12-07 17:05:47 +01:00
Michiel Borkent
531b9383f2 Remove reference to survey 2022-12-07 11:33:40 +01:00
Michiel Borkent
facb65734e Version bump 2022-12-07 11:33:01 +01:00
Michiel Borkent
419b71e7c6 v1.0.168 2022-12-07 11:16:22 +01:00
Michiel Borkent
7cc94ea6a1 fs: don't touch dirs in split-ext 2022-12-07 11:10:41 +01:00
Michiel Borkent
69db7105e5
Support new syntax in babashka.deps/clojure (#1440) 2022-12-07 10:04:40 +01:00
Michiel Borkent
cd3252796e Add blog [skip ci] 2022-12-06 11:39:19 +01:00
Michiel Borkent
6acd912a34 Add java.util.InputMismatchException 2022-12-06 11:12:35 +01:00
Bob
cf01d7f24d
#1438: httpkit.client functions (#1439)
* expose query-string function from org.httpkit.client

* add url-encode from httpkit client ns

* cleanup and changelog
2022-12-06 11:01:52 +01:00
Michiel Borkent
bd857ae3e1 Partially revert, will revisit 2022-12-05 17:46:43 +01:00
Michiel Borkent
43375d49a2 Allow deps/clojure to be called with new syntax 2022-12-05 15:14:52 +01:00
Michiel Borkent
9087cf6311 Fix process test for bb 2022-12-04 21:43:31 +01:00
Michiel Borkent
c81babad9a Bump process 2022-12-04 20:51:08 +01:00
Michiel Borkent
952a695234 Update process 2022-12-04 20:33:54 +01:00
Michiel Borkent
a92ebfe68a Update process 2022-12-04 20:20:41 +01:00
Michiel Borkent
d681f9bc7f SCI notes 2022-12-03 14:27:47 +01:00
Michiel Borkent
9305417edc and and or as macros 2022-12-03 14:16:40 +01:00
Michiel Borkent
7b6a69f2b3
SCI: fn, defn and defmacro as macros (#1437) 2022-12-02 19:50:58 +01:00
Michiel Borkent
eb740c7c9b loop* as special form 2022-12-02 13:30:05 +01:00
Michiel Borkent
d53d05c856 Add articles to README 2022-11-30 16:51:52 +01:00
Michiel Borkent
2a56f2e5ef Version bump 2022-11-30 14:37:58 +01:00
Michiel Borkent
ade5ca1ba7 v1.0.167 2022-11-30 14:23:01 +01:00
Michiel Borkent
bc0b59500b
Fix #1433: spec source as fallback + built-in (#1435) 2022-11-30 14:10:02 +01:00
LouD
cf0f145d10
Add note about BSOD when using WSL1 (#1432) 2022-11-29 09:09:23 +01:00
Michiel Borkent
198722ab7c Bump SCI: better error locations for interop 2022-11-28 13:21:14 +01:00
ikappaki
6e00354053
Fix 1430: empty tasks names display list (#1431)
Co-authored-by: ikappaki <ikappaki@users.noreply.github.com>
2022-11-28 10:51:39 +01:00
Michiel Borkent
cb72f8ba17 Fix babashka/babashka.nrepl#59 2022-11-27 20:41:50 +01:00
Michiel Borkent
7d3d38fee1 SCI [skip ci] 2022-11-27 13:22:06 +01:00
Michiel Borkent
03e50cb17e SCI: performance improvement 2022-11-27 13:04:10 +01:00
Michiel Borkent
0671678b60 Change title of blog post [skip ci] 2022-11-24 15:09:53 +01:00
Michiel Borkent
434ee39ad9 CHANGELOG [skip ci] 2022-11-24 14:34:31 +01:00
Michiel Borkent
c67441226a Version bump 2022-11-24 14:01:06 +01:00
Michiel Borkent
6f8f205609 v1.0.166 2022-11-24 13:15:30 +01:00
Michiel Borkent
0df40a1a9a Add clojure.data/equality-partition for lambdaisland/deepdiff2 2022-11-22 11:50:53 +01:00
Michiel Borkent
4504976191 Update built-in deps.edn [skip ci] 2022-11-21 20:53:16 +01:00
Michiel Borkent
eb6745fa86 changelog [skip ci] 2022-11-20 11:34:31 +01:00
Michiel Borkent
058d2071b2 Add java.lang.Error 2022-11-20 11:26:15 +01:00
Michiel Borkent
99f1e948d3 Fix pREPL tests 2022-11-19 11:50:14 +01:00
Michiel Borkent
40e0087b59 Fix socket repl tests 2022-11-19 11:21:23 +01:00
Michiel Borkent
b458d79b29 Switch to use ctx-store for global context 2022-11-19 11:00:35 +01:00
Michiel Borkent
495ded8a50
Compatibility with cognitest test runner and tools.namespace (#1423) 2022-11-18 23:43:42 +01:00
Michiel Borkent
326b1def6b Add java.net.URLClassLoader for compatibility with java.classpath lib 2022-11-17 21:20:27 +01:00
samrose
b7e327c690
refactor: propose changing to working example found at (#1422) 2022-11-17 16:58:20 +01:00
Max Penet
759d977879
allow normalize-keywords to work on cljs files (#1421) [skip ci] 2022-11-16 17:13:13 +01:00
Max Penet
b57981bcd5
make normalize-keywords walk clj[cdx]? files in specified location (#1420) [skip ci] 2022-11-16 17:01:39 +01:00
Michiel Borkent
3751749ca3 Update keyword example [skip ci] 2022-11-16 15:49:07 +01:00
Michiel Borkent
7a22c5fa5a Update fs 2022-11-16 11:11:19 +01:00
Michiel Borkent
e08eab080e deps.clj [skip ci] 2022-11-15 18:09:33 +01:00
Michiel Borkent
0ac4eea9ee deps.clj: 1.11.1.1200 2022-11-15 18:06:16 +01:00
Michiel Borkent
885a82b736 sci docs [skip ci] 2022-11-15 17:49:03 +01:00
Michiel Borkent
d222b32d70
Upgrade timbre to 6.0.1 (#1419) 2022-11-15 17:10:52 +01:00
Michiel Borkent
8d514cc982 sci [skip ci] 2022-11-15 13:56:41 +01:00
Michiel Borkent
65d77d3555 sci [skip ci] 2022-11-15 13:14:51 +01:00
Michiel Borkent
66e90be6a7 sci [skip ci] 2022-11-15 13:01:49 +01:00
Michiel Borkent
85bb1fec76 SCI changelogs [skip ci] 2022-11-14 14:24:55 +01:00
Michiel Borkent
fc15eab795 SCI: optimize analysis and eval of fn 2022-11-14 13:56:24 +01:00
Bob
d8a0018213
Sluj tests (#1416)
* add lib test for sluj (#1269)

* changelog

* add sluj to projects.md
2022-11-13 22:07:01 +01:00
Michiel Borkent
4c3fa4c406 fs docs [skip ci] 2022-11-13 11:19:39 +01:00
Michiel Borkent
bf55d65f14 fs: update-file 2022-11-13 11:19:39 +01:00
Rahul De
4c1da7d242 [skip ci] Mark the sgerrand/alpine-pkg-glibc issue as a TODO 2022-11-13 07:54:13 +00:00
Bob
a24c8fa197
add force overwrite flag when installing glibc on alpine (#1415)
Alpine 3.16 includes /etc/nsswitch.conf, which glibc install tries to create.
This change adds the force-overwrite flag to the glibc install.
2022-11-12 20:58:32 +01:00
Michiel Borkent
6e2eaa9e87 Remove obsolete code 2022-11-12 15:46:59 +01:00
Michiel Borkent
9ed3cb6a31 Fix #1414: preserve metadata on exec task function argument map 2022-11-11 17:34:44 +01:00
Michiel Borkent
8269a632c0 changelog [skip ci] 2022-11-11 15:35:29 +01:00
Michiel Borkent
bc901fdcf0 Set java to GRAALVM 2022-11-11 15:31:35 +01:00
Michiel Borkent
a5dec07279 Build uberjar using graalvm 2022-11-11 15:14:02 +01:00
Michiel Borkent
ac1b16bfc8 SCI: preserve more stacktrace, e.g. on throw 2022-11-10 21:04:01 +01:00
Michiel Borkent
bb84bd357e Fix tests 2022-11-08 13:32:41 +01:00
Michiel Borkent
e5ee1f4a77 Fix run-test 2022-11-08 12:39:31 +01:00
Michiel Borkent
5be61476d8 meta inf [skip ci] 2022-11-08 12:38:13 +01:00
Michiel Borkent
ee5f2a7a2e Add run-test and run-test-var to clojure.test 2022-11-08 12:35:21 +01:00
Michiel Borkent
36d2ec2d87 doc [skip ci] 2022-11-05 15:56:31 +01:00
Michiel Borkent
8d9ac4c4d1 Add lib tests for Postmortem 2022-11-05 15:53:58 +01:00
Michiel Borkent
3d916df4a0 SCI: minor change to type 2022-11-02 17:46:54 +01:00
Michiel Borkent
70d9bbd10e changelog [skip ci] 2022-11-01 13:11:56 +01:00
Michiel Borkent
07030d8f89 changelogs [skip ci] 2022-11-01 13:09:28 +01:00
Michiel Borkent
9083959a5d Version bump 2022-11-01 13:04:08 +01:00
Michiel Borkent
4483ccf20b v1.0.165 2022-11-01 12:46:18 +01:00
Michiel Borkent
ce064291f3 SCI: more docstrings 2022-11-01 12:41:19 +01:00
Michiel Borkent
e31cb57a3d Add java.time.zone.ZoneRules class 2022-10-31 22:40:39 +01:00
Michiel Borkent
ccc1512bb6 SCI: fix alength 2022-10-31 20:23:11 +01:00
Michiel Borkent
8b146525f2 SCI: more docs 2022-10-31 18:18:38 +01:00
Michiel Borkent
c89300b3b5 SCI: more docstrings 2022-10-31 17:58:51 +01:00
Michiel Borkent
42d721a92f Fix tests 2022-10-31 15:52:31 +01:00
Michiel Borkent
98741c9db7 Fix tests 2022-10-31 15:27:07 +01:00
Michiel Borkent
ee85685334 Fix tests 2022-10-31 14:13:45 +01:00
Michiel Borkent
a4ba9527b9 SCI: more docstrings 2022-10-31 13:42:42 +01:00
Michiel Borkent
a035291f41 SCI: now with docstrings for core macros 2022-10-30 15:12:23 +01:00
Michiel Borkent
f5a226ab34 Add notes for detecting runtime requiring-resolve, etc [skip ci] 2022-10-27 21:01:14 +02:00
Michiel Borkent
10ec7dcf1a
Bump core.async to 673 (#1412) 2022-10-27 20:11:12 +02:00
Michiel Borkent
fc5dccc9ef sci: in-ns as function 2022-10-27 13:42:51 +02:00
Michiel Borkent
9de689c623 deps.clj 1.11.1.1182 2022-10-26 19:46:57 +02:00
Andrea Richiardi
eaf0a068f3
Link pod registry to Pods section in README (#1411)
In the `Pods` section we were pointing to a place with a slightly outdated list of projects. This patch adds the correct link to the pod registry.
2022-10-26 18:15:12 +02:00
Michiel Borkent
bca3f28e28
Graalvm 22.3.0 (#1408) 2022-10-25 22:56:57 +02:00
Michiel Borkent
b452c1d94a changelog 2022-10-25 11:11:31 +02:00
Michiel Borkent
cf93651e8e
Add java.net.URLConnection 2022-10-25 11:05:47 +02:00
Bob
1cf8321960
Add fs lib test (#1406) 2022-10-24 22:23:24 +02:00
Michiel Borkent
a141998f55 deps.clj: jar check 2022-10-24 12:07:30 +02:00
Michiel Borkent
5566a7869f Fix #1405: drop name metadata from conditionally defined var 2022-10-23 20:07:53 +02:00
Michiel Borkent
17c9003e2a SCI: don't rely on metadata for record implementation 2022-10-22 20:08:18 +02:00
polemius
16ea1e8f95
Fix small typo (#1404) 2022-10-21 10:43:46 +02:00
Michiel Borkent
1ead74a501 SCI: fix node test [skip ci] 2022-10-21 10:21:09 +02:00
Michiel Borkent
e3b55b5f47 SCI [skip ci] 2022-10-21 10:16:54 +02:00
Michiel Borkent
a61c2721d7 SCI: restore do recur warning 2022-10-20 23:20:55 +02:00
Michiel Borkent
74c26084e3
Fix #1401: mutation of deftype field should be visible in protocol method (#1402) 2022-10-20 21:36:45 +02:00
Michiel Borkent
b409d663ff deps.clj: revert non-upstream change 2022-10-20 17:35:13 +02:00
Michiel Borkent
9cd1f71b76 deps.clj: stale classpath 2022-10-20 12:05:52 +02:00
Michiel Borkent
81e837006e Version bump 2022-10-18 18:22:39 +02:00
Michiel Borkent
5cdeb09a17 v1.0.164 2022-10-18 18:05:59 +02:00
Michiel Borkent
0e57b9d461
Fix #1330: allow *warn-on-reflection* in programmatic nREPL (#1398) 2022-10-18 17:54:38 +02:00
Michiel Borkent
351723fdb6 Fix #1384: allow .indexOf on LazySeq 2022-10-18 17:32:22 +02:00
Michiel Borkent
b6f19b03dc Fix #1397: clojure.lang.Namespace 2022-10-18 17:27:17 +02:00
Michiel Borkent
94aab46855 sci 2022-10-18 17:18:05 +02:00
Michiel Borkent
b6dffe3f87 manifest [skip ci] 2022-10-18 16:46:14 +02:00
Michiel Borkent
bfe59b57d0 SCI: simplify do 2022-10-18 16:42:00 +02:00
Michiel Borkent
e283a87b4c SCI: or/and 2022-10-18 14:08:25 +02:00
Michiel Borkent
9ca24ffce4
SCI: optimize let (#1396) 2022-10-18 12:20:02 +02:00
Michiel Borkent
1e9cc9f203 submodules 2022-10-14 12:34:04 +02:00
Michiel Borkent
7c15b04fa2 Fix tests 2022-10-12 13:06:48 +02:00
Michiel Borkent
33bee0480d Fix #1391: fix var name 2022-10-12 13:00:56 +02:00
Michiel Borkent
ed22bb573b Fix #1391: support loading hiccup.page from source 2022-10-12 12:59:37 +02:00
Michiel Borkent
682f8514fb #1391: include raw in hiccup2.core ns 2022-10-12 12:47:03 +02:00
Michiel Borkent
c2b3fea9fc Bump tools.cli 2022-10-12 12:42:27 +02:00
Michiel Borkent
471ed01cae Bump babashka CLI 2022-10-12 12:33:47 +02:00
Bob
9241c81238
doc additions/cleanups [skip ci] (#1388) 2022-10-10 17:04:15 +02:00
Michiel Borkent
863c6051bd Add process alive? 2022-10-07 12:40:16 +02:00
Michiel Borkent
5bb2d2f8bd process: add alive? - thanks @grzm 2022-10-07 12:23:22 +02:00
Michiel Borkent
87e9e0861c Upgrade graalvm in cirrus 2022-10-06 14:16:20 +02:00
Michiel Borkent
2dac7847a8 Fix #1369: provide .sha256 files for every released asset 2022-10-06 14:12:58 +02:00
Michiel Borkent
851e1f5eb0 Bump CLI 2022-10-06 12:55:09 +02:00
Michiel Borkent
ec842c942d process: only slurp err when inputstream (@ikappaki) 2022-10-05 19:56:09 +02:00
Baishampayan Ghose
77768cec67
feat: Honor *print-namespace-maps* in pprint (#1387)
We can now use the dynamic var `*print-namespace-maps*` to control how
maps with namespaced keys are printed using `pprint`.

Fixes: #1381
2022-10-04 19:11:59 +02:00
Michiel Borkent
9fba927ec8 sci: print-namespace-maps 2022-10-04 16:53:40 +02:00
Rahuλ Dé
7e77ab5633
Update contajners to latest (#1382) 2022-10-03 16:13:14 +02:00
Michiel Borkent
2b3e7df2e9 Fix tests 2022-10-03 15:34:47 +02:00
Michiel Borkent
80a8ee1b7e Don't let orchestra nuke other spec tests 2022-10-02 13:24:06 +02:00
Michiel Borkent
465ea247eb process and sci 2022-10-02 13:14:15 +02:00
Michiel Borkent
c94960eac1 deps.clj: support for CLJ_JVM_OPTS and JAVA_OPTS 2022-09-30 12:05:43 +02:00
Michiel Borkent
c081367304 Fix pod test 2022-09-29 10:05:43 +02:00
Michiel Borkent
8170fd7675 pods: print + flush for out and err, thanks @justone 2022-09-29 09:31:13 +02:00
Rahuλ Dé
0684119000
Mark bb.edn load exception (#1378)
* Mark bb.edn load exception

* print to stderr

* print with binding
2022-09-28 15:48:35 +02:00
Rahuλ Dé
8352448611
check if supplied deps is non-empty (#1377) 2022-09-28 13:12:05 +02:00
Michiel Borkent
8fdefb99b9 Go back to clj-commons/clj-yaml 2022-09-26 12:17:32 +02:00
Crispin Wellington
e6f6b02c06
Add single arg read method to PipedInputStream proxy (#1372)
* reify java.lang.Object with optional toString and finalize

* add single argument read method to PipedInputStream proxy

* update changelog

Co-authored-by: Michiel Borkent <michielborkent@gmail.com>
2022-09-26 10:52:59 +02:00
Michiel Borkent
7baa0542ec CHANGELOGS [skip ci] 2022-09-24 13:56:46 +02:00
Michiel Borkent
4b1e02c6c7 CHANGELOGS [skip ci] 2022-09-24 13:56:25 +02:00
Michiel Borkent
9e8571cd08 CHANGELOGS [skip ci] 2022-09-24 13:54:26 +02:00
Michiel Borkent
89e8dfdf32 Version bump 2022-09-24 13:53:54 +02:00
Michiel Borkent
e2a8f03d21 v0.10.163 2022-09-24 13:27:04 +02:00
Michiel Borkent
020d42a94f Fix #808: -Sdeps 2022-09-24 13:25:06 +02:00
Michiel Borkent
eed298f4a4 Changelog [skip ci] 2022-09-24 12:41:00 +02:00
Michiel Borkent
0c87ed2312 Use clj-yaml with fixes 2022-09-24 12:34:07 +02:00
Bob
78cbdd1d82
#1336: --force as global opt (#1374) 2022-09-24 10:59:34 +02:00
Michiel Borkent
42ebb92c5d exec tests 2022-09-23 21:26:37 +02:00
Michiel Borkent
7b563dd802 exec-test [skip ci] 2022-09-23 21:18:52 +02:00
Michiel Borkent
2ff0304821 changelog [skip ci] 2022-09-23 20:55:23 +02:00
Michiel Borkent
2ffbef09d8 process [skip ci] 2022-09-23 17:12:04 +02:00
Michiel Borkent
525f73f822 process 2022-09-23 17:02:13 +02:00
Michiel Borkent
fd3f4a100a process: exit-fn 2022-09-23 13:14:27 +02:00
Michiel Borkent
a9f0483869 Bump CLI 2022-09-22 20:58:36 +02:00
Michiel Borkent
3110dde2ab Fix #1368: -x: do not pick up on aliases in user ns 2022-09-22 20:05:22 +02:00
Michiel Borkent
848683f82d sci 2022-09-22 18:14:07 +02:00
Lee Read
d2c8696039
Make a "babashka built-in" badge available (#1366)
* Make a "babashka built-in" badge available

Of note: added markdown and adoc syntaxes for badges to README.

Closes #1365

* Moved flair section under new badges section

Badges themselves act as headings under badges section.
Reworded badges text for 2 audiences.
1. The general bb user who wants to know what they mean.
2. The library author who might want to display them.

Renamed "Projects" heading to "Compatible Projects"
2022-09-22 17:40:15 +02:00
Michiel Borkent
92a8042f97 changelog 2022-09-22 14:05:50 +02:00
Michiel Borkent
c3f61bdc34 changelog 2022-09-22 14:05:42 +02:00
Michiel Borkent
3b5dbb7c66 Fix #1367: line number in clojure.test output 2022-09-22 14:03:48 +02:00
Wes Morgan
aa0da8f503
Map (on)to-chan!(!) core.async fns (#1371)
* Map (on)to-chan!(!) core.async fns

These are recent replacements for their deprecated predecessors onto-chan & to-chan.

* Add note to changelog about #1370 fix
2022-09-21 21:46:03 +02:00
Michiel Borkent
00dee39196 sci [skip ci] 2022-09-21 16:38:19 +02:00
Michiel Borkent
06d6e97927 sci protocol docs 2022-09-21 12:50:07 +02:00
Michiel Borkent
3bc5bcab5b Bump process 2022-09-20 12:10:08 +02:00
Michiel Borkent
3b9163cde9 Bump clojure.xml 2022-09-19 14:01:10 +02:00
Michiel Borkent
621130960b Bump deps.clj 2022-09-18 21:38:23 +02:00
Michiel Borkent
739f05cc5e CHANGELOGS [skip ci] 2022-09-18 12:51:02 +02:00
Michiel Borkent
b84ecd5da7 CHANGELOG [skip ci] 2022-09-18 12:48:21 +02:00
Michiel Borkent
2f146bd712 Fix #1364: Be tolerant of unknown tags in bb.edn 2022-09-18 12:29:16 +02:00
Eero Helenius
4926aaf85f
Add and expose babashka.classes/all-classes (#1362)
* Add and expose babashka.classes/all-classes

* Add test for babashka.classes/all-classes
2022-09-13 10:54:30 +02:00
Michiel Borkent
d0d36a2bc4 Bump clj-yaml 2022-09-13 10:19:52 +02:00
Michiel Borkent
1a700f6a69 Add -x help 2022-09-12 14:19:47 +02:00
Michiel Borkent
1631349fb6 pods: TCP_NODELAY 2022-09-12 12:43:49 +02:00
Eero Helenius
9566a7d1f1
Add more reflection class methods (#1361) 2022-09-09 20:55:11 +02:00
Michiel Borkent
03b1bfa80f sci tweaks 2022-09-09 20:51:25 +02:00
Michiel Borkent
e1094e1529
Add more reflection classes (#1360) 2022-09-09 20:24:37 +02:00
Michiel Borkent
267646fbe7 Fix gc test 2022-09-09 18:13:40 +02:00
Crispin Wellington
ea4f56886d
Expose a subset of java.lang.ref to enable hooking into the destruction/GC of objects (#1359)
* reify java.lang.Object with optional toString and finalize

* reify java.lang.Runnable

* reflection support for java.lang.Runnable

* java.lang.ref.* class exposure

* test for detection of garbage collection of Object

* added change to changelog
2022-09-09 17:25:32 +02:00
Michiel Borkent
c4c76d58ac fix exec 2022-09-09 16:00:22 +02:00
Michiel Borkent
e3e855f7ae SCI 2022-09-09 14:28:20 +02:00
Michiel Borkent
55ffa95b7d pods issue 52 2022-09-07 21:24:27 +02:00
Wes Morgan
a592104bc5
Fix download-only? fn & use new env var names (#1357) 2022-09-07 21:08:53 +02:00
Michiel Borkent
ef84df8bc9 Revert "pods: allow downloading for other os"
This reverts commit 57a6249dcb.
2022-09-07 20:02:06 +02:00
Michiel Borkent
57a6249dcb pods: allow downloading for other os 2022-09-07 19:48:15 +02:00
Michiel Borkent
42f79d0db3 Expose clojure.main/with-bindings 2022-09-07 19:29:11 +02:00
Eero Helenius
8afd672a20
Add ThreadPoolExecutor rejection policy classes (#1356) 2022-09-07 19:19:42 +02:00
Wes Morgan
c97fb958dc
Only download pods when os.name / os.arch don't match (#1354) 2022-09-07 17:11:06 +02:00
Eero Helenius
dcae949496
Add clojure.core.server/stop-server (#1355) 2022-09-07 16:45:04 +02:00
Michiel Borkent
d91eadbc9c Add ns-unalias 2022-09-07 15:09:59 +02:00
Michiel Borkent
086a5eb5a2 Add AtomicInteger and Long to full interop 2022-09-06 19:52:33 +02:00
Michiel Borkent
2400fc7be0 Add PrintWriter-on 2022-09-06 19:38:32 +02:00
Michiel Borkent
1197f4feec Add interceptor tests 2022-09-06 14:56:26 +02:00
Michiel Borkent
f116b493be process 2022-09-06 10:33:32 +02:00
Michiel Borkent
ea36bbecb9 add auspex tests to CI 2022-09-06 10:31:53 +02:00
Michiel Borkent
cd54d2a911
Improve reify error messages (#1352)
Co-authored-by: Crispin Wellington <retrogradeorbit@gmail.com>
2022-09-06 10:24:15 +02:00
Michiel Borkent
3e2738201c
auspex compatibility (#1351) 2022-09-05 22:59:31 +02:00
Michiel Borkent
18e19934d1 Fix #1350: map clojure.lang.Var to sci.lang.Var 2022-09-05 20:59:37 +02:00
Michiel Borkent
ef41365656 require core.async in time 2022-09-05 18:16:44 +02:00
Michiel Borkent
3afd85ccb3 expose core async ManyToManyChannel 2022-09-05 18:13:25 +02:00
Michiel Borkent
cae237e42a fs: write-lines 2022-09-05 17:01:09 +02:00
Michiel Borkent
2ca3b2ecc5 fs: write-bytes 2022-09-05 13:54:50 +02:00
Michiel Borkent
bebd20c088 CHANGELOG [skip ci] 2022-09-04 23:26:13 +02:00
Michiel Borkent
d15d38df8a CHANGELOG [skip ci] 2022-09-04 23:25:54 +02:00
Michiel Borkent
fc3f178c7e CHANGELOG [skip ci] 2022-09-04 23:24:21 +02:00
Michiel Borkent
8ef3bb08a8 Version bump 2022-09-04 23:22:52 +02:00
Michiel Borkent
75994d5134 Trigger another release build 2022-09-04 23:09:37 +02:00
Michiel Borkent
38feb35a53 changelog 2022-09-04 22:56:51 +02:00
Michiel Borkent
1200d5625c v0.9.162 2022-09-04 22:56:08 +02:00
Michiel Borkent
191c6b75a8 Another fix for #1339 2022-09-04 22:43:08 +02:00
Michiel Borkent
e285d970c7 changelogs [skip ci] 2022-09-04 21:39:39 +02:00
Michiel Borkent
52c60e7928 Fix #1339: SCI 2022-09-04 21:31:15 +02:00
Michiel Borkent
ccfa50b2bc
Fix #1338: add-watch segfault 2022-09-03 13:51:07 +02:00
Michiel Borkent
d5c76f774e deps.clj fix for windows exe in JAVA_HOME, thanks @Jacob-Kroeze 2022-09-03 11:59:15 +02:00
Michiel Borkent
4a42ba938f sci: minor 2022-09-02 22:30:47 +02:00
Michiel Borkent
6cdc002423 Fix #1322: better error location in tasks 2022-09-02 22:22:27 +02:00
Michiel Borkent
9b2435557d Revert "Fix #1322: improve error location"
This reverts commit 6e92c99f31.
2022-09-02 21:40:14 +02:00
Michiel Borkent
6e92c99f31 Fix #1322: improve error location 2022-09-02 21:15:27 +02:00
Michiel Borkent
c77944fad7 Bump clj-yaml 2022-09-02 11:08:33 +02:00
Michiel Borkent
813c6029c5 deps.clj 2022-09-01 21:27:33 +02:00
Michiel Borkent
4dc084502a process docs [skip ci] 2022-09-01 14:15:53 +02:00
Michiel Borkent
2150cb1e06 fs + sci 2022-08-31 17:57:24 +02:00
Michiel Borkent
57b88f2141 deps.clj [skip ci] 2022-08-30 11:12:50 +02:00
Michiel Borkent
6035a46b3a SCI upgrade 2022-08-26 11:29:42 +02:00
Lee Read
464a000b1b
Add exception classes useful for clj-http-lite (#1346)
* Add exception classes useful for clj-http-lite

Closes #1345

* update changelog
2022-08-26 09:45:12 +02:00
Michiel Borkent
d27fc0d2d6 Fix #1343: postgresql feature 2022-08-23 17:40:28 +02:00
Michiel Borkent
b5a17b3af7 fs/sci 2022-08-23 17:28:43 +02:00
Michiel Borkent
1eaa094e9b fs 2022-08-13 11:10:18 +02:00
Michiel Borkent
306d97f4ef Update babashka cli 2022-08-13 11:10:01 +02:00
Michiel Borkent
33569df040 update fs: expose :win-exts 2022-08-11 22:18:18 +02:00
Michiel Borkent
72864a18d6 bb.nrepl: preserve stacktrace on exception 2022-08-11 20:52:11 +02:00
Michiel Borkent
a7a84e872e fs issue 68 2022-08-09 16:41:49 +02:00
Michiel Borkent
5823a08d51 Bump deps.clj 2022-08-06 14:21:15 +02:00
Michiel Borkent
1b3c90870d Update rewrite-clj 2022-08-05 14:41:39 +02:00
Radford Smith
55ff3bcf98
README: Add link to babashka.org from logo (#1333) 2022-08-04 16:59:35 +02:00
Michiel Borkent
b4b0ee87fe
Marker protocol + satisfies fix (#1331) 2022-08-02 23:42:10 +02:00
Michiel Borkent
42f9440d85 last try 2022-08-02 23:19:59 +02:00
Michiel Borkent
a201788087 xcode 2022-08-02 23:16:46 +02:00
Michiel Borkent
f9327c04ca bump xcode 2022-08-02 23:12:53 +02:00
Michiel Borkent
ddee3847bf sci 2022-08-02 23:07:04 +02:00
Michiel Borkent
765a9c0846 Version bump 2022-07-31 14:20:40 +02:00
Michiel Borkent
4aa352c94a v0.9.161 2022-07-31 13:57:10 +02:00
Michiel Borkent
b0de4a79a4 fix exec 2022-07-31 13:57:00 +02:00
Michiel Borkent
de43917140 the-var 2022-07-31 13:42:44 +02:00
Michiel Borkent
c4f2d45f08 CHANGELOG 2022-07-29 21:32:36 +02:00
Michiel Borkent
2c3b1095c8 Version bump 2022-07-29 21:18:27 +02:00
Michiel Borkent
0cdb897f4f changelogs 2022-07-29 21:18:20 +02:00
Michiel Borkent
c97b08425a v0.9.160 2022-07-29 21:03:24 +02:00
Michiel Borkent
0608c71687 Make exec a function instead 2022-07-29 21:03:07 +02:00
Michiel Borkent
2a01f8720e Add note [skip ci] 2022-07-29 15:05:23 +02:00
Michiel Borkent
774b2d5d3d Version bump 2022-07-29 13:27:27 +02:00
Michiel Borkent
1bd2c18d5e changelog 2022-07-29 13:10:24 +02:00
Michiel Borkent
245a5bfaad v0.9.159 2022-07-29 13:10:01 +02:00
Michiel Borkent
dc30728f68 Version bump 2022-07-29 13:09:33 +02:00
Michiel Borkent
e8ca180529 make compatible with init 2022-07-29 13:09:00 +02:00
Michiel Borkent
05d105716a improve snippet 2022-07-29 13:04:48 +02:00
Michiel Borkent
781cc929dd v0.9.158 2022-07-29 12:57:23 +02:00
Michiel Borkent
8d24f70d73 task integration 2022-07-29 12:51:43 +02:00
Michiel Borkent
1b3adaaf64 -x 2022-07-29 12:23:28 +02:00
Michiel Borkent
dc5b36bbe6 bundle babashka cli 2022-07-29 12:00:58 +02:00
Michiel Borkent
5c03eef36b sci update 2022-07-27 17:32:38 +02:00
Michiel Borkent
e58fe9db1b
Upgrade to GraalVM 22.2.0 (#1325) 2022-07-27 12:20:32 +02:00
Michiel Borkent
9e57cb4430 Add article 2022-07-23 14:06:38 +02:00
Michiel Borkent
5c246ccccb process: improve tokenize 2022-07-16 17:02:23 +02:00
Michiel Borkent
cde09afa10 news 2022 7 2022-07-15 23:39:32 +02:00
Michiel Borkent
9c92500297 news 2022 7 2022-07-15 23:39:02 +02:00
Michiel Borkent
19f58fca83 news 2022 7 2022-07-15 23:35:54 +02:00
Michiel Borkent
55ba655fab news 2022 7 2022-07-15 23:34:41 +02:00
Michiel Borkent
4a76fd050d news 2022 7 2022-07-15 23:33:20 +02:00
Michiel Borkent
30dcb2ad86 news 2022 7 2022-07-15 23:29:37 +02:00
Michiel Borkent
8aba3ffc2d news 2022 6 2022-07-15 23:19:34 +02:00
Michiel Borkent
bf06830353 news 2022 5 2022-07-15 23:10:12 +02:00
Michiel Borkent
536f39d435 news 04 22 2022-07-15 23:06:05 +02:00
Michiel Borkent
ac9b249cc8 news 2022-07-15 21:44:23 +02:00
Michiel Borkent
8f447cf43b partial news 03 2022 2022-07-15 21:35:28 +02:00
Michiel Borkent
3cf09e12fa news 03 2022 2022-07-15 21:30:23 +02:00
Michiel Borkent
dca1d2693c news for jan 2022 2022-07-15 21:21:24 +02:00
Michiel Borkent
0ab0cb2410 news 2022-07-15 21:09:25 +02:00
Michiel Borkent
e1544f3d65 SCI with different CLJS analyzer loading 2022-07-13 10:45:06 +02:00
Michiel Borkent
4e2ef2f152
sci: needs-ctx refactor (#1319) 2022-07-11 13:00:19 +02:00
Michiel Borkent
e20ba643ff
Sci issue 774 interpreter stacktrace (#1318) 2022-07-11 11:52:14 +02:00
Michiel Borkent
22763c6485 sync process and sci [skip ci] 2022-07-08 23:16:42 +02:00
Rahuλ Dé
00ea105d4a
Skip cirrus (#1315)
* skip cirrus on irrelevant chnages

* wrong expr
2022-07-06 21:43:59 +02:00
Rahuλ Dé
3dfcc74324
skip appveyor on irrelevant files (#1314)
* skip appveyor on irrelevant files

* YAML?
2022-07-06 21:25:38 +02:00
Brandon Stubbs
d18ecbd22f
add bb-github-app project (#1313) 2022-07-06 20:50:16 +02:00
Michiel Borkent
38185d5658 bb process [skip ci] 2022-07-04 21:29:22 +02:00
Michiel Borkent
21fd8e3a3f bb process 2022-07-04 21:10:44 +02:00
Michiel Borkent
cdbe07ad45 bb process 2022-07-04 21:01:14 +02:00
Michiel Borkent
32ac3c5398
Manifest dir with env var (#1312) 2022-07-04 19:59:04 +02:00
Rahuλ Dé
e7c504b331
skip logo paths and in actions (#1311)
* skip logo paths and in actions

* [skip ci] Keep CI happy
2022-07-04 08:43:56 +02:00
Michiel Borkent
7b10adc69a Add schema 2022-07-03 13:46:23 +02:00
Michiel Borkent
4aa6cfc472 Add to projects 2022-07-03 13:42:45 +02:00
Michiel Borkent
90add0e787 Meander tests 2022-07-03 13:41:30 +02:00
Michiel Borkent
1a48bdf4bc Add malli to project 2022-07-03 13:31:02 +02:00
Michiel Borkent
16e427848d Add malli tests 2022-07-03 13:14:25 +02:00
Michiel Borkent
01e414c4d1 defn metadata tweak 2022-07-03 13:03:08 +02:00
José Luis Lafuente
f044ba15cd
Fix misspelling: BABAHSKA -> BABASHKA (#1308) 2022-07-03 13:02:15 +02:00
Michiel Borkent
f8b0a00a17 SCI: preserve file metadata in defn 2022-07-03 12:38:55 +02:00
Michiel Borkent
53aa17dbde SCI: don't eval metatada on defn body 2022-07-03 12:19:25 +02:00
Michiel Borkent
abc15c4959 Version bump 2022-07-01 13:12:24 +02:00
Michiel Borkent
0751e39eac v0.8.157 2022-07-01 12:46:22 +02:00
Michiel Borkent
833318edb2 Flair [skip ci] 2022-07-01 11:59:01 +02:00
Michiel Borkent
9cbdc8f767 Flair [skip ci] 2022-07-01 11:40:43 +02:00
Michiel Borkent
0c9ddadd90 Flair [skip ci] 2022-07-01 11:39:24 +02:00
Michiel Borkent
2688156b78 Add raw HTML to README 2022-07-01 11:35:07 +02:00
Michiel Borkent
3f404746b4
Support Java classes for Malli (#1304) 2022-06-30 17:54:47 +02:00
Michiel Borkent
f491d02ba0 sci: deftype with mutable fields 2022-06-30 14:21:06 +02:00
José Luis Lafuente
3564cac6b3
Fix misspelling (#1303) 2022-06-29 22:48:19 +02:00
Michiel Borkent
04f16e220c Add logo [skip ci] 2022-06-27 20:15:57 +02:00
Michiel Borkent
e651de400a Update deps.clj tools jar to 1.11.1.1149 2022-06-27 17:19:27 +02:00
Michiel Borkent
aec2848e24 Fix nrepl server built-in 2022-06-25 21:30:34 +02:00
Michiel Borkent
72e9b6ceee process update 2022-06-25 21:21:27 +02:00
Michiel Borkent
6259797f6a SCI 0.3.32 2022-06-23 16:58:48 +02:00
Michiel Borkent
0b471636e1 logo [skip ci] 2022-06-22 12:03:31 +02:00
Rahuλ Dé
512dbf9ea5
Optimise executors when shorted (#1301)
* Optimise executors when shorted

* Test short

* Also handle mac

* Test short
2022-06-21 15:32:23 +02:00
Rahuλ Dé
b5dea3563d
Pass correct arch (#1300)
* [wip] pass correct arch

* [wip] pass arch only when aarch64

* [skip ci] add branch filter back to docker
2022-06-20 22:20:50 +02:00
agata-anastazja
381b9f0a4f
use dynamic configuration to short CI (#1294) 2022-06-20 20:03:03 +02:00
Michiel Borkent
7769675648 sci [skip ci] 2022-06-20 12:49:01 +02:00
Odd A
573db8ea79
Exposing babashka.nrepl.server-functions (#1297)
Co-authored-by: Odd Andreas Sørsæther <odd.andreas.sorsether@nav.no>
Co-authored-by: Odd Andreas Sørsæther <odd.andreas@ardoq.com>
2022-06-20 12:48:31 +02:00
Michiel Borkent
9ed705f8db Pod namespaces come before namespaces from source 2022-06-20 12:14:48 +02:00
Michiel Borkent
0a55554bb8 SCI: preserve docstring 2022-06-19 23:03:01 +02:00
Michiel Borkent
cc2c682e79 SCI now has memfn 2022-06-19 22:41:52 +02:00
Michiel Borkent
56d2c2b7d5 sci [skip ci] 2022-06-19 20:38:49 +02:00
Michiel Borkent
14b177ad21 Add schema tests to CI, fixes #1296 2022-06-15 21:13:53 +02:00
Michiel Borkent
39f057b3ae SCI update 2022-06-15 17:58:58 +02:00
Michiel Borkent
115f89ac81 Fix feature map 2022-06-09 08:52:21 +02:00
Michiel Borkent
34bd4edf1e CHANGELOGS [skip ci] 2022-06-08 20:15:44 +02:00
Michiel Borkent
ebdbd9ea00 Version bump 2022-06-08 20:06:28 +02:00
Michiel Borkent
e979765275 CHANGELOGS 2022-06-08 20:06:21 +02:00
Michiel Borkent
60da44512e v0.8.156 2022-06-08 19:40:56 +02:00
Michiel Borkent
e290c3c2e0 SCI: defprotocol symbol 2022-06-08 19:16:51 +02:00
Michiel Borkent
ba0ce4ca23 Update 2022-06-08 17:44:50 +02:00
Michiel Borkent
30ebdfb6e0 SCI: record in syntax quote resolves to Type 2022-06-08 17:41:23 +02:00
Michiel Borkent
ecdf952b23 Bump sci 2022-06-08 14:09:04 +02:00
Michiel Borkent
ed0875b52b install script [skip ci] 2022-06-07 23:12:33 +02:00
Michiel Borkent
3c7468b6de cirrus 2022-06-07 22:55:47 +02:00
Michiel Borkent
c0d4127b57 cirrus 2022-06-07 22:24:57 +02:00
Michiel Borkent
f0a9e2b88c cirrus 2022-06-07 22:16:30 +02:00
Michiel Borkent
1669983cb2 github token 2022-06-07 22:15:36 +02:00
Michiel Borkent
05223adf7e release 2022-06-07 21:49:00 +02:00
Michiel Borkent
9698ddae61 cirrus 2022-06-07 21:37:25 +02:00
Michiel Borkent
83c4ccff2c short always 2022-06-07 20:21:38 +02:00
Michiel Borkent
826b955543 Add cirrus 2022-06-07 20:18:42 +02:00
Michiel Borkent
47ceae0ba0 process/exec: arg0 2022-06-06 22:25:12 +02:00
Michiel Borkent
201370275e Bump Clojure to 1.11.1 2022-06-01 15:42:09 +02:00
Michiel Borkent
8e3f22db7a
Migrate to sci.lang.Var (#1285) 2022-05-30 22:07:12 +02:00
Michiel Borkent
5ec6fca29a pods: fix benign socket closed exception 2022-05-30 10:11:54 +02:00
Rahuλ Dé
35b8204704
Use extracted CI short script (#1284)
* Use extracted CI short script

* Use clojure build env

* Update build script
2022-05-29 22:58:09 +02:00
Michiel Borkent
40fdb19c95
SCI record "classes" are now instance of sci.lang.Type (#1283) 2022-05-29 11:40:05 +02:00
agata-anastazja
94034063db
Skip CI run if commit only documentation changes (#1282) 2022-05-28 22:01:20 +02:00
Michiel Borkent
b8a3d2447c api docs updates [skip ci] 2022-05-28 16:05:16 +02:00
Michiel Borkent
162ca90287 Add process/shell binding 2022-05-28 11:38:55 +02:00
Michiel Borkent
a858269c74 fix #1281: upgrade httpkit to 2.6.0-RC1 2022-05-28 11:25:51 +02:00
Michiel Borkent
6442487110 bb.process 0.1.3 2022-05-28 11:24:16 +02:00
Michiel Borkent
cfdb4f69e6 deps.edn update [skip ci] 2022-05-27 13:40:59 +02:00
Michiel Borkent
17c047418e
Add support for sun.misc.SignalHandler (#1276) 2022-05-27 13:26:40 +02:00
Michiel Borkent
92b4dc7620 Bump cheshire 2022-05-26 23:12:58 +02:00
Rahuλ Dé
cb4cbb6691
inline bb badge (#1275) [skip ci] 2022-05-24 14:24:06 +02:00
Sohalt
d81e58cf43
Add documentation for usage with nix (#1274) [skip ci] 2022-05-23 18:10:45 +02:00
Michiel Borkent
818ea38a82 Roll back sci.runtime 2022-05-23 08:57:14 +02:00
Michiel Borkent
09284932e4 Add sci.runtime 2022-05-22 21:41:29 +02:00
Michiel Borkent
8b3698063f fs: strip and split-ext less reliant on file system 2022-05-22 12:28:06 +02:00
Michiel Borkent
d547fbf31a fs/read-all-lines, support charset 2022-05-22 12:20:19 +02:00
Michiel Borkent
f1019384b1 bb.nrepl: fix completions for static interop 2022-05-20 15:04:08 +02:00
Michiel Borkent
9f6ffcf11c SCI update 2022-05-20 14:38:01 +02:00
Thiago Kenji Okada
20e6b447b2
Add installation instructions using nix (#1272) [skip ci] 2022-05-20 13:12:59 +02:00
Michiel Borkent
0f8458fd03 SCI: default pprint impl for SCI records 2022-05-20 11:43:35 +02:00
Michiel Borkent
7bf2ca0e57 babashka/sci#745: syntax quote for import record 2022-05-20 11:37:49 +02:00
Michiel Borkent
6089496d9c babashka/sci#744: syntax quote for records should return class repr 2022-05-19 21:35:24 +02:00
Michiel Borkent
8a25716ef4 Fix symbolic representation of records 2022-05-19 21:19:42 +02:00
Michiel Borkent
55f96e69fe fix babashka/sci#743: satisfies? of marker protocol via extend-{type, protocol} 2022-05-19 21:04:44 +02:00
Michiel Borkent
b288abc542 SCI: simple-dispatch 2022-05-19 12:11:24 +02:00
Michiel Borkent
77b75fe0b9 SCI: marker protocol on record 2022-05-19 11:13:59 +02:00
Michiel Borkent
eea1cdadee SCI: preserve closed over value analysis when using fixed + varargs arity 2022-05-19 10:23:47 +02:00
Michiel Borkent
ab503951da SCI: fix resolving of class 2022-05-18 23:08:33 +02:00
Michiel Borkent
27189657a8 SCI: custom record impl, fixes record equiv and with-meta 2022-05-18 17:31:07 +02:00
Michiel Borkent
9b611a42fe docs [skip ci] 2022-05-17 16:56:32 +02:00
Michiel Borkent
0d88606c9d process: improve tokenize 2022-05-17 11:06:01 +02:00
Michiel Borkent
7b729c5f4b fly io docs [skip ci] 2022-05-16 14:18:32 +02:00
Michiel Borkent
1794fe9dd4 fly io docs [skip ci] 2022-05-16 14:16:26 +02:00
Michiel Borkent
a977f04181 AbstractMethodError 2022-05-16 10:55:33 +02:00
Michiel Borkent
2c79e9dd30 AFunction 2022-05-16 10:45:40 +02:00
Michiel Borkent
f9ca314c31 sci 2022-05-16 10:03:35 +02:00
Michiel Borkent
861066082f Print-dup 2022-05-15 21:44:08 +02:00
Michiel Borkent
6cf1a3ff6a
SCI: use explicit global print-method (#1268) 2022-05-15 14:23:16 +02:00
Michiel Borkent
063a0b01c6 sync pods [skip ci] 2022-05-14 20:17:43 +02:00
Michiel Borkent
3b94b51780 pods update 2022-05-14 18:44:22 +02:00
Michiel Borkent
c1539fe3b0
Some additions that at least make plumatic/schema run partially (#1267) 2022-05-14 13:10:16 +02:00
Michiel Borkent
f8657cd59f Add note [skip ci] 2022-05-13 13:42:32 +02:00
Michiel Borkent
8506c30507 CHANGELOGS [skip ci] 2022-05-13 11:07:11 +02:00
Michiel Borkent
96d93d3940
fix #1264: add support for calling ScheduledExecutorService 2022-05-13 11:04:33 +02:00
Michiel Borkent
5d47397ffc Add BindException 2022-05-10 14:40:45 +02:00
Michiel Borkent
d9ff456e60
Re-enable mac on CircleCI (#1263) 2022-05-09 17:57:41 +02:00
Michiel Borkent
6960bc5d24 Tweak release script 2022-05-09 17:01:54 +02:00
Michiel Borkent
73306079ec Pass env 2022-05-09 16:55:27 +02:00
Michiel Borkent
fe88348bf8 Add exec 2022-05-09 15:09:54 +02:00
Rahuλ Dé
4a13965a6d
Disable JVM on Actions, better triggers (#1262) 2022-05-08 19:49:13 +02:00
Rahuλ Dé
5b455cd51b
Refine Actions (#1261) 2022-05-08 10:31:14 +02:00
Michiel Borkent
eee3b55f56 Try newer machines for aarch64 2022-05-06 16:51:59 +02:00
Michiel Borkent
729de81537 Bump ghra 2022-05-06 16:39:54 +02:00
Michiel Borkent
6941a5c2ff Bump ghra [skip ci] 2022-05-06 16:06:09 +02:00
Michiel Borkent
48501c6f52 Version bump 2022-05-06 15:52:29 +02:00
Michiel Borkent
4ff35902f3 CHANGELOGS [skip ci] 2022-05-06 14:59:11 +02:00
Michiel Borkent
3eee5870ca v0.8.2 2022-05-06 14:57:01 +02:00
Michiel Borkent
f1fcf24822 Support BABASHKA_PODS_DIR 2022-05-06 14:53:44 +02:00
Michiel Borkent
786019ef2a fs / sci [skip ci] 2022-05-06 14:33:28 +02:00
Michiel Borkent
61ad485ce0 updates 2022-05-05 22:50:34 +02:00
Michiel Borkent
9e5bdc4b0f process: exec 2022-05-05 14:36:32 +02:00
Michiel Borkent
200a01fe85 tasks: use process wrapper 2022-05-04 19:32:11 +02:00
Michiel Borkent
1e8ec5285a fs: cwd 2022-05-04 17:29:57 +02:00
Michiel Borkent
20e8171869 CHANGELOGs [skip ci] 2022-05-04 15:07:20 +02:00
Michiel Borkent
b4dfb91fd3
Expose edamame, fixes #549 and #1258 (#1259) 2022-05-04 15:02:30 +02:00
Michiel Borkent
8338afb066 slightly faster 2022-05-03 23:44:47 +02:00
Michiel Borkent
45df5bcc8f Fix catvec polyfill 2022-05-03 23:20:36 +02:00
Michiel Borkent
c34109d828 Fix tests 2022-05-03 16:59:31 +02:00
Michiel Borkent
41dcc9239a Use into as catvec replacement for now 2022-05-03 16:47:43 +02:00
Michiel Borkent
e65f86a39d Update fs 2022-05-02 13:45:02 +02:00
Michiel Borkent
7f0fd86d8b Fix default aliases 2022-05-01 20:52:12 +02:00
Michiel Borkent
fbc5b69ab1 Update process with pre-start-fn 2022-05-01 20:38:56 +02:00
Michiel Borkent
22e56ce779 Read-eval 2022-04-30 20:49:42 +02:00
Michiel Borkent
085fffd95b fix #1252: update docs for m1 2022-04-30 12:03:01 +02:00
Michiel Borkent
226d5c5976 fix #1233: don't print error to stdout in prepl 2022-04-30 11:59:57 +02:00
Michiel Borkent
b93198c965
Compatibility with fipp and puget (#1253)
See brandonbloom/fipp#81
2022-04-30 11:46:36 +02:00
Brett Rowberry
1ef90f98ef
Update README.md (#1251) [skip ci] 2022-04-28 12:21:54 +02:00
Michiel Borkent
fc7df082b7
Bump to newest graalvm (#1250) 2022-04-26 16:27:49 +02:00
Michiel Borkent
c83786593a Upgrade deps.clj 2022-04-25 22:52:09 +02:00
Michiel Borkent
9727cabaf3 Add fields for reflection 2022-04-23 12:02:11 +02:00
Michiel Borkent
24f124d955 fix #1237: add tests for numeric tower 2022-04-23 11:35:49 +02:00
Michiel Borkent
b92af69d1d SCI: support invoking field, without dash 2022-04-23 11:29:06 +02:00
Bob
1113037b51
add Clarktown lib tests (#1247)
* add lib tests for clarktown

* add clarktown to library list

* make code block test agnostic to line separator
2022-04-17 20:11:33 +02:00
Michiel Borkent
1f7dba35c9
Bump SCI 2022-04-17 00:34:23 +02:00
Michiel Borkent
8bdb2a21da babashka.nrepl: support pprint length 2022-04-16 12:44:49 +02:00
Michiel Borkent
4bfe0eec89 Convey print-length to pprint and allow set! 2022-04-16 11:37:14 +02:00
Michiel Borkent
e3a6dbacb3 Version bump 2022-04-15 21:42:04 +02:00
Michiel Borkent
1ee298a411 v0.8.1 2022-04-15 21:15:27 +02:00
Michiel Borkent
917713f24f README [skip ci] 2022-04-15 20:48:25 +02:00
Rahuλ Dé
d7f180cdbe
Bash -> Clojure: Take 2 (#1243)
* Bash -> Clojure: Take 2

* Apply better naming

* Temp disable circle branch filter

* Pass platforms correctly to buildx

* Rename platforms, better checks

* Add circle and script guards for branch and PR

* Fix guard
2022-04-15 19:20:52 +02:00
Michiel Borkent
d830e8f576 Revert "First pass at bash cleanup (#1239)"
This reverts commit b5a4e0a170.
2022-04-15 13:27:29 +02:00
Michiel Borkent
ae7792634f Process: arg vec type hints 2022-04-15 11:48:40 +02:00
Michiel Borkent
1c03d74235 fs: type hints on arg vecs 2022-04-15 11:43:41 +02:00
Michiel Borkent
23a97233ad SCI: support *print-dup* 2022-04-15 11:38:31 +02:00
Michiel Borkent
83963116b0 SCI: fix destructuring in protocol impl 2022-04-15 11:25:42 +02:00
Rahuλ Dé
b5a4e0a170
First pass at bash cleanup (#1239) 2022-04-14 23:35:19 +02:00
Michiel Borkent
d8db9eee63
fix #1231: missing methods in reify should fall back to default interface methods (#1240) 2022-04-14 18:14:31 +02:00
Leah Neukirchen
52448f7597
[#556] Add server-status to org.httpkit.server (#1238) 2022-04-12 20:53:15 +02:00
Bob
3d0befb52b
update some SciVar names (metadata-wise) to align with babashka name (#1236)
* update SciVar names to align with the symbols in the namespace maps

* make test using a bb script more consistent with others

* update changelog
2022-04-07 14:02:06 +02:00
Michiel Borkent
60a3e86449 Added Fluree to companies [skip ci] 2022-04-06 21:22:10 +02:00
Michiel Borkent
f3526d80a4 SCI: fix name metadata on vars 2022-04-06 19:36:45 +02:00
Michiel Borkent
6eff4cc738 Add missing methods on iterator 2022-04-05 11:15:13 +02:00
Wes Morgan
211757d5a4
Add prepare subcommand (#1229)
* Add prepare subcommand

Downloads deps & pods, caches pod metadata, and then exits

* Add prepare subcommand to CHANGELOG

Co-authored-by: Michiel Borkent <michielborkent@gmail.com>
2022-04-05 11:04:38 +02:00
Stel Abrego
d2278835f1
Fix #1041: Improve error message when regex literal in EDN config (#1230)
* Improve error message when regex literal in EDN config (#1041)

Regex literal syntax (example: #"^foo") is not allowed in EDN. With the
ability to write tasks in the config file, users may mistakenly try to
include regex literals. This patch improves the error message by
informing the user that literal regex syntax is not allowed and
recommends using re-pattern instead.

* Update changelog

* Fixup main.clj

* Fixup changelog
2022-04-05 11:03:39 +02:00
Michiel Borkent
60df83b629 Version bump 2022-04-04 16:39:45 +02:00
Michiel Borkent
d4b9f5ed10 CHANGELOG 2022-04-04 16:22:45 +02:00
Michiel Borkent
9b19642039 CHANGELOG 2022-04-04 16:19:35 +02:00
Michiel Borkent
3b9cd12931 v0.8.0 2022-04-04 16:18:36 +02:00
Michiel Borkent
b102a4ae0e Upgrade tests to hugsql 0.5.3 2022-04-04 13:52:36 +02:00
Michiel Borkent
db9a8ff10c Add unchecked math 2022-04-03 21:39:08 +02:00
Michiel Borkent
f1db01aede Add ->Eduction 2022-04-03 21:39:08 +02:00
Wes Morgan
4886fe48ae
Link to declarative pods docs in changelog (#1228) [skip ci] 2022-04-03 20:28:00 +02:00
Michiel Borkent
5959ba99ec CHANGELOG [skip ci] 2022-04-03 15:06:37 +02:00
Michiel Borkent
f1adb99eff Revert "Bump Clojure"
This reverts commit fabb945f8c.
2022-04-03 15:06:22 +02:00
Michiel Borkent
fabb945f8c Bump Clojure 2022-04-03 14:58:32 +02:00
Michiel Borkent
7f7b66aeaf CHANGELOG [skip ci] 2022-04-03 14:55:10 +02:00
Michiel Borkent
76a57500af bb.curl: fix: last set-cookie headers on a page overwrites the ones before 2022-04-03 14:45:13 +02:00
Michiel Borkent
1063868554 fix #1211: return exit code 130 on sigint 2022-04-03 14:11:37 +02:00
Michiel Borkent
f09e085c75 Move bb.edn in uberjar to META-INF 2022-04-03 13:36:00 +02:00
Michiel Borkent
e81ef4aac0
Declarative pod support for uberscript (#1227) 2022-04-02 23:41:04 +02:00
Michiel Borkent
7af93adf15 Fix test 2022-04-02 17:47:27 +02:00
Michiel Borkent
ea4c4eae77 windows fix 2022-04-02 17:09:34 +02:00
Wes Morgan
963bd7957a
Feature: declarative pods support in uberjars (#1217)
* Store bb.edn in uberjar & load when run from there

* Sync resources deps.edn w/ root

* Throw error if --config arg doesn't exist

...instead of silently falling back on ./bb.edn

* Fix jar file arg parsing

Moving all arg parsing up above bb.edn ingestion made tasks turn into files to load. But this is a chicken-and-egg problem w/ uberjars b/c the bb.edn is inside the jar file, so we need that first. So I extracted the file parsing out into its own fn and put the full arg parsing back where it was after ingesting bb.edn.

* Fix local pod key in error message

* Ensure resources dir exists when copying bb.edn into it

* Copy bb.edn to temp dir when building uberjar

..and add that dir to the classpath for the jar

* Only put :pods in uberjar bb.edn

* Small readability fix

* Add ret val type hints for classpath/resource

Got a reflection warning on one of my calls

* Add a test for uberjars with bb.edn-declared pods

* Only run uberjar-with-pods-test on amd64 for now
2022-04-02 16:51:08 +02:00
Michiel Borkent
1cf914ad1c Bump Selmer 2022-04-01 18:22:56 +02:00
Michiel Borkent
ff54332977 Make java.util.Scanner available 2022-03-31 12:07:35 +02:00
Michiel Borkent
4d24cdca2a
Proxy support for PipedInputStream and PipedOutputStream
* Spire requires proxy support for java.io.PipedInputStream and java.io.PipedOutputStream

* proxy support for java.io.PipedInputStream and java.io.PipedOutputStream

* proxy tests for PipedInputStream and PipedOutputStream

Co-authored-by: Crispin Wellington <retrogradeorbit@gmail.com>
2022-03-31 10:00:16 +02:00
Michiel Borkent
bee5a88d16 Update fs: which improvements 2022-03-31 09:45:54 +02:00
Thiago Kenji Okada
a4a8ce5306
Unbump zlib to version 1.2.11 (#1222)
The newer 1.2.12 version is breaking the tests. The older version is not
available in the main download path, however it is still available in
the archive.
2022-03-28 18:07:42 +02:00
Michiel Borkent
bffc4bf00c Use old musl 2022-03-28 17:55:04 +02:00
Michiel Borkent
bef6d99740 Revert "Fix musl"
This reverts commit c7428da216.
2022-03-28 17:53:55 +02:00
Michiel Borkent
c7428da216 Fix musl 2022-03-28 17:14:09 +02:00
Michiel Borkent
b29a419bd0 deps.clj 2022-03-28 17:03:24 +02:00
Michiel Borkent
3bb54ee5e0 fix process pprint 2022-03-27 17:02:10 +02:00
Michiel Borkent
d786a5a9b2 process pprint 2022-03-27 17:01:13 +02:00
Michiel Borkent
6c568d62d4 Process: fix for pprint 2022-03-27 16:27:44 +02:00
Michiel Borkent
c0007e55c4 Revert "process: pprinting"
This reverts commit ba582d14a2.
2022-03-27 12:21:04 +02:00
Michiel Borkent
ba582d14a2 process: pprinting 2022-03-27 12:06:34 +02:00
Michiel Borkent
cd013227d5 Revert "Support sun.misc.Signal handlers (#1221)"
Shutdown code should be handled with a shutdown hook

This reverts commit 81a1fd4c86.
2022-03-27 12:04:50 +02:00
Michiel Borkent
81a1fd4c86
Support sun.misc.Signal handlers (#1221) 2022-03-26 22:45:49 +01:00
Michiel Borkent
72ae663842 fix #1220: add reflection on java.util.concurrent.Future 2022-03-25 12:07:30 +01:00
Michiel Borkent
586b2234aa SCI 2022-03-25 11:51:22 +01:00
Michiel Borkent
41703971b1 SCI 0.3.4 2022-03-24 21:46:17 +01:00
Michiel Borkent
450bddef20 Bump Clojure to 1.11 2022-03-23 23:50:54 +01:00
Michiel Borkent
1ad93077c1 fix #1216: fix core.async alts example with polyfill 2022-03-23 23:49:09 +01:00
Michiel Borkent
c3cae22541 pods: Rosetta2 fallback 2022-03-23 19:33:49 +01:00
Wes Morgan
e602286799
feat #863: Load pods from bb.edn (#1205)
Co-authored-by: Michiel Borkent <michielborkent@gmail.com>
2022-03-23 17:08:59 +01:00
Michiel Borkent
68bed0723c Update pods 2022-03-23 17:01:17 +01:00
Michiel Borkent
e83ef7a69f Bump timbre 2022-03-23 15:12:15 +01:00
Michiel Borkent
1e72562c9a Bump SCI 2022-03-23 13:09:22 +01:00
Michiel Borkent
8d1de7285e Update pods lib 2022-03-23 12:27:46 +01:00
Michiel Borkent
6305f7450d
Add compatibility with GraalVM 22.1 (#1215)
* do not init java net http classes at build time
2022-03-22 16:41:26 +01:00
Michiel Borkent
6d35314096 Revert pods change 2022-03-22 14:00:41 +01:00
Michiel Borkent
b6a3a9cdf5 Revert "pods: declarative pods prep"
This reverts commit d8d0a50625.
2022-03-22 14:00:05 +01:00
Michiel Borkent
d8d0a50625 pods: declarative pods prep 2022-03-22 12:47:37 +01:00
Michiel Borkent
b4b22bfe70 SCI: add let* 2022-03-19 22:32:16 +01:00
Michiel Borkent
25a57b483c
meander: interop on Iterator 2022-03-19 11:34:20 +01:00
Michiel Borkent
fc0bb83ca2 meander interop 2022-03-19 11:04:37 +01:00
Michiel Borkent
b395084d47 meander: nth interop 2022-03-19 10:27:45 +01:00
Michiel Borkent
ad8982d0c6 meander: unchecked-dec + disjoin interop 2022-03-19 10:14:01 +01:00
Michiel Borkent
152234937c meander interop 2022-03-19 00:25:59 +01:00
Michiel Borkent
dd6ca6e623 Fix and add reflections for vectors and maps 2022-03-19 00:02:08 +01:00
Michiel Borkent
c09ff9e61c Allow .indexOf on vector 2022-03-18 23:49:17 +01:00
Michiel Borkent
108665ebb9 SCI: loop doesn't expand in fully qualified let 2022-03-18 23:47:18 +01:00
Michiel Borkent
7bfab37077 Add specter tests 2022-03-18 19:35:44 +01:00
Rahuλ Dé
bd3adf029e
Add official bb compatible badge (#1212) [skip ci] 2022-03-16 17:57:52 +01:00
Michiel Borkent
b245b9c890 Add video by Daniel Amber [skip ci] 2022-03-15 11:10:35 +01:00
Michiel Borkent
b1f981799c Upgrade sub-projects: sci, deps.clj 2022-03-14 19:53:45 +01:00
Michiel Borkent
75860aad68 CHANGELOG [skip ci] 2022-03-13 20:31:00 +01:00
Michiel Borkent
694fe87ebd CHANGELOG [skip ci] 2022-03-13 20:29:34 +01:00
Michiel Borkent
9047660016 Version bump 2022-03-13 20:24:24 +01:00
Michiel Borkent
ea03cc09e4 v0.7.8 2022-03-13 20:03:39 +01:00
Michiel Borkent
701c719c78 Expose clojure.lang.PersistentHashMap/EMPTY 2022-03-13 16:16:03 +01:00
Michiel Borkent
238786df0b SCI: identical check on empty vec 2022-03-13 14:13:32 +01:00
Michiel Borkent
569f62c928 Add *compile-files* var 2022-03-13 13:15:50 +01:00
Michiel Borkent
158082e87e Support method of super 2022-03-13 13:09:23 +01:00
Michiel Borkent
2260e02963 SCI: support :sigs on protocol map 2022-03-13 13:08:41 +01:00
Michiel Borkent
daedd1e07c SCI: fix IRecord protocol extension 2022-03-13 11:40:59 +01:00
Joshua Davey
5f4c6e52d0
Add Deflater and DeflaterOutputStream (#1209)
Deflater allows one to control, for example, the level of compression
used. The DeflaterOutputStream is the parent of GZIPOutputStream
class, and allows raw zlib compressed stream (i.e. no gzip header/footer).
2022-03-12 23:12:01 +01:00
Michiel Borkent
0e744b1e2f SCI: fix fallback protocol method on records 2022-03-12 20:45:29 +01:00
Michiel Borkent
e444267428 SCI: omit dash in clojure-version when nil qualifier 2022-03-12 14:51:57 +01:00
Michiel Borkent
6320cddc74 Add lib tests for expectations.clojure-test 2022-03-12 14:40:52 +01:00
Michiel Borkent
315d58e7a1 fix #1202: add tests for hugsql 2022-03-12 14:01:14 +01:00
Michiel Borkent
3624de4a92 CHANGELOGS 2022-03-12 13:37:26 +01:00
Michiel Borkent
ef0a9f4177 SCI: add *clojure-version* and (clojure-version) 2022-03-12 13:35:29 +01:00
Michiel Borkent
153bdb1905 fs: add windows predicate 2022-03-12 13:34:56 +01:00
Michiel Borkent
cda02cd3a3 disable flaky test 2022-03-11 12:44:10 +01:00
Michiel Borkent
fff4bf779f
Docs [skip ci] (#1208) 2022-03-11 12:31:45 +01:00
Michiel Borkent
3759d14baf
Add clojure.data.priority-map as built-in, support aysylu/loom lib (#1207) 2022-03-11 12:23:31 +01:00
mknoszlig
f9451f5de0
feat #1204: add babashka.config property 2022-03-11 11:03:42 +01:00
Michiel Borkent
92ca3c6501 nrepl 2022-03-10 23:34:43 +01:00
Michiel Borkent
7c81443ae7 Add missing classes to support specter 2022-03-08 16:21:20 +01:00
Michiel Borkent
9d685d7f38 sci [skip ci] 2022-03-07 17:34:31 +01:00
Michiel Borkent
56c7bcd777
Add part of clojure.tools.reader.reader-types to support hugsql (#1201) 2022-03-07 16:55:14 +01:00
Michiel Borkent
630aadcb7d SCI: declare as macro 2022-03-06 16:25:30 +01:00
Michiel Borkent
0107288ec5 fix #938: drop location metadata from symbols, except top level 2022-03-05 21:08:45 +01:00
Michiel Borkent
3f49ad3b89
fix #1199: print-method impls on records (#1200) 2022-03-05 17:11:11 +01:00
Michiel Borkent
f0f87f0794 doc [skip ci] 2022-03-04 20:16:25 +01:00
Michiel Borkent
4b6d83ffb5 Version bump 2022-03-04 15:26:09 +01:00
Michiel Borkent
3d979ef964 v0.7.7 2022-03-04 14:50:24 +01:00
Michiel Borkent
4179b6e2ea CHANGELOGS [skip ci] 2022-03-04 12:43:49 +01:00
Michiel Borkent
dc5d756394
pprint: add get-pretty-writer (#1198)
Closes #1197
2022-03-04 12:42:27 +01:00
Michiel Borkent
638ae3aaeb CHANGELOGS [skip ci] 2022-03-03 14:48:51 +01:00
Michiel Borkent
f4cd6c2bf1
feat: compatibility with at-at 2022-03-03 11:24:52 +01:00
Michiel Borkent
9b9f4d8bfc
Readme [skip ci] 2022-03-02 17:01:12 +01:00
Michiel Borkent
f9c1e0b79d doc [skip ci] 2022-03-02 11:03:07 +01:00
Michiel Borkent
98d11acad9 libs doc updates [skip ci] 2022-03-02 10:55:09 +01:00
Michiel Borkent
76accde8da
Add clojure.instant/parse-timestamp 2022-03-01 20:33:49 +01:00
The Alchemist
0ac8495d28
minor typo (#1193) [skip ci] 2022-02-28 23:08:53 +01:00
Michiel Borkent
bbd8743894 tools jar 1.10.3.1087 2022-02-28 21:46:15 +01:00
Michiel Borkent
e7571119fb feat #1192: expose *assert* 2022-02-28 11:06:38 +01:00
Michiel Borkent
61e47555f9 feat #1187: Add :result key to (current-task) map that can be used in :leave task hook 2022-02-27 12:10:33 +01:00
Michiel Borkent
ba1c66585a CHANGELOGS [skip ci] 2022-02-27 11:50:46 +01:00
Michiel Borkent
141881376d
fix #1190: task dependencies resolve as core.async channels (#1191) 2022-02-27 11:49:40 +01:00
Michiel Borkent
5c6e2b5167 cli-matic Windows test 2022-02-25 11:27:58 +01:00
Michiel Borkent
3eace3278f Add cli-matic lib tests 2022-02-24 17:20:11 +01:00
Michiel Borkent
a99e681572 CHANGELOGS [skip ci] 2022-02-24 13:01:05 +01:00
Michiel Borkent
17cb349fd6 Version bump 2022-02-24 12:59:37 +01:00
Michiel Borkent
9e8bb78794 v0.7.6 2022-02-24 12:39:23 +01:00
Michiel Borkent
83c610ca0f fix #1180: limit bb tasks output to first line of docstring 2022-02-24 12:28:54 +01:00
Michiel Borkent
125e1c1412 fs 2022-02-24 12:20:40 +01:00
Michiel Borkent
d5cd5be675 fs/create-temp-file 2022-02-23 21:53:35 +01:00
Michiel Borkent
319c5174dd bb process: support appending to a file 2022-02-23 18:15:26 +01:00
Michiel Borkent
f620a3dde9 internal lib updates [skip ci] 2022-02-23 14:40:54 +01:00
Gabriel Horner
7126112cc3
Add latest datascript (#1185)
* Update datascript config

Add db ns, loads latest datascript and can load datascript-transit
library. All tests for pull.cljc and query.cljc pass except for queries
with fns as inputs

* Add datalog-parser to projects.md per #1171 comment
2022-02-22 14:17:58 +01:00
Michiel Borkent
1170e3cce7 SCI: constant node optimizations 2022-02-21 11:08:03 +01:00
Michiel Borkent
780f2e86ea Bump yaml lib 2022-02-21 10:46:09 +01:00
Michiel Borkent
c54d005419 SCI: protocol tweaks 2022-02-20 20:26:40 +01:00
Michiel Borkent
e365958526 SCI: constant optimimalizations 2022-02-20 17:37:51 +01:00
Michiel Borkent
cd285b9a19
SCI: refactored to protocols (#1183) 2022-02-20 12:02:08 +01:00
Michiel Borkent
44eb3625f9 CHANGELOG [skip ci] 2022-02-18 22:55:17 +01:00
Michiel Borkent
19e87a545d
fix #1181: clojure.test report does not respect *test-out* correctly (#1182) 2022-02-18 22:54:10 +01:00
Michiel Borkent
3c207e1a9b sci: JS fix 2022-02-18 21:19:38 +01:00
Michiel Borkent
e64db1028c SCI: get rid of EvalVar 2022-02-17 16:56:58 +01:00
Michiel Borkent
5dfe9c42ae SCI: simplify handling of metadata 2022-02-17 11:49:24 +01:00
Michiel Borkent
b6de3dee05 CHANGELOG [skip ci] 2022-02-16 14:18:13 +01:00
Michiel Borkent
d62e05c5f2 CHANGELOG [skip ci] 2022-02-16 11:18:44 +01:00
Michiel Borkent
665e4e12b2 Version bump 2022-02-16 11:17:46 +01:00
Michiel Borkent
dafb3ef77c v0.7.5 2022-02-16 10:48:10 +01:00
Michiel Borkent
6774757230 deps.clj: bump to 1.10.3.1082 2022-02-16 10:42:19 +01:00
Michiel Borkent
c047c6e2c5 sci [skip ci] 2022-02-15 16:50:39 +01:00
Michiel Borkent
14a8c0e0ec Add method to satisfy tests 2022-02-14 15:52:27 +01:00
Michiel Borkent
df91279967 Add clojure-msgpack to lib tests 2022-02-14 15:37:35 +01:00
Michiel Borkent
b461925981
SCI: use mutable arrays for bindings (#1177) 2022-02-14 11:52:32 +01:00
Roger Lam
9969b83341
Ensure leading zeros are not trimmed for algorithm "SHA-256", so that hash string size is always 64. (#1176) 2022-02-12 11:06:49 +01:00
Michiel Borkent
ddfdd72c73
Add 180seg to companies [skip ci] (#1173) 2022-02-11 13:26:41 +01:00
Gabriel Horner
ac6ad33fcb
Add 2 more compatible libs (#1171) 2022-02-10 13:45:15 +01:00
Michiel Borkent
a1007efdac SCI v0.2.9 [skip ci] 2022-02-09 16:32:26 +01:00
Michiel Borkent
8097019b7e Fix #1170: defmacro with a defrecord inside fails to resolve classname 2022-02-08 23:55:09 +01:00
Michiel Borkent
96a52d73d6 SCI: fix macroexpand on defrecord 2022-02-08 11:34:29 +01:00
Michiel Borkent
1718ab613b Bump transit 2022-02-05 10:36:50 +01:00
Lee Read
7c8272ab9e
Miniscule typo (#1169) [skip ci]
<foo> was interpreted as a tag and therefore disappeared when rendered
2022-02-04 16:03:33 +01:00
Michiel Borkent
fe2f0a76f6 deps.clj: bump to 1075 2022-02-02 23:11:46 +01:00
Michiel Borkent
5226d9cc0f Upgrade to clojure 11 beta1 2022-02-02 22:49:55 +01:00
Michiel Borkent
cd07a539f3
SCI: select fn env more accurately (#1168) 2022-02-02 22:47:13 +01:00
Michiel Borkent
21c121af32
SCI: select fn env earlier (#1165) 2022-02-02 13:48:59 +01:00
Michiel Borkent
8538a4aa10
Merge pull request #1162 from babashka/java_io_data_reflect_array
Adds compatibility with https://github.com/edma2/clojure-msgpack
2022-02-01 12:08:23 +01:00
Michiel Borkent
2cc7e36ec3 Add java.lang.reflect.Array#newInstance 2022-02-01 11:30:12 +01:00
Michiel Borkent
fe42f1e436 Add java.io.Data classes 2022-02-01 11:24:20 +01:00
Michiel Borkent
35ab5c8628 README [skip ci] 2022-01-31 16:32:41 +01:00
Michiel Borkent
46eb69e662
Update SCI: minor refactor for vararg recur (#1161) 2022-01-29 19:02:44 +01:00
Michiel Borkent
26cb47eac4
Update SCI: minor refactor for vararg recur (#1161) 2022-01-29 19:02:29 +01:00
Michiel Borkent
c9f4b51369 SCI: less locals 2022-01-28 17:16:55 +01:00
Michiel Borkent
d4712ad889 deps.clj: tools 1.10.3.1069 2022-01-28 14:24:08 +01:00
Michiel Borkent
c1a8c047b0 SCI: fix 15-arity + reflection 2022-01-27 14:52:22 +01:00
Michiel Borkent
63212a250b Add halt-when 2022-01-26 10:19:35 +01:00
Michiel Borkent
1c67d3e76a doc: CHANGELOGS [skip ci] 2022-01-25 18:15:10 +01:00
Michiel Borkent
8fc6074b42 doc: CHANGELOGS [skip ci] 2022-01-25 18:14:24 +01:00
Michiel Borkent
b7461756bf
chore: Upgrade to GraalVM 22.0.0.2 2022-01-25 18:04:38 +01:00
Michiel Borkent
816adaaad0 Version bump 2022-01-25 16:03:25 +01:00
Michiel Borkent
530177eefd Fix docker 🙏 2022-01-25 15:46:17 +01:00
Michiel Borkent
a02a89857b v0.7.4 2022-01-25 15:23:53 +01:00
Michiel Borkent
92dbd1be58 sci: as-alias 2022-01-25 13:39:55 +01:00
Michiel Borkent
e95c4dd37d More clojure 11 vars 2022-01-25 11:02:03 +01:00
Michiel Borkent
c7cc5663cb
feat #1158: add clojure.math namespace (#1159) 2022-01-25 10:30:22 +01:00
Michiel Borkent
9930eea62c
chore: bump deps (#1157) 2022-01-25 10:05:51 +01:00
Michiel Borkent
98668ef3b7 [babashka/sci#498] Cannot recur from non tail: and/or 2022-01-23 21:38:37 +01:00
Michiel Borkent
ee15ef1798 [#1152] Add algo.monads to libtests and projects.md 2022-01-23 20:11:26 +01:00
Michiel Borkent
d08b0d88d8
[babashka/sci#498] Can only recur from tail position (#1153) 2022-01-23 19:46:49 +01:00
Michiel Borkent
8a15a82f44
Add compatibility with algo.monad (#1151) 2022-01-23 11:09:52 +01:00
Michael Salihi
f8def7d797
add single page app example with Babashka + htmx (#1148) [skip ci] 2022-01-21 16:29:59 +01:00
Michael Glaesemann
ca59f3890e
fix #1143: allow optional (ignored) -- when using using --main (#1147)
Permits previously-accepted behavior broken in 19415f6363
2022-01-20 14:53:54 +01:00
James Carnegie
3602b89512 Add metabom jars to all built docker images 2022-01-18 07:34:36 +00:00
Michiel Borkent
eef4690ba4 sci: cannot take value of macro -> 2022-01-16 13:16:20 +01:00
Michiel Borkent
da31e9c61c
fix #1144: cannot create multidimensional arrays (#1145) 2022-01-16 12:42:10 +01:00
Michiel Borkent
cc728e5748 fix order of meta eval
Co-authored by: Janos Erdos <erdosj@gmail.com>
2022-01-16 11:57:50 +01:00
Michiel Borkent
6d849a4f6c sci [skip ci] 2022-01-16 11:57:47 +01:00
Gabriel Horner
093709386a
Add some additional libraries (#1138)
* Add some additional libraries to test

Also improved docs around add-libtest
Close #1137
Close #1128

* Add method needed for supporting pyramid

Pyramid tests passed locally but that was on jvm

* Remove pyramid tests and do in subsequent PR

* Revert "Add method needed for supporting pyramid"

This reverts commit 4d84a2a2ac.

* Skip exoscale tests for windows since most aren't windows compatible
2022-01-14 14:56:09 +01:00
Wes Morgan
b765ed3ec7
Fix: alpine docker builds in CI (follow-up) (#1142) 2022-01-13 21:35:55 +00:00
Wes Morgan
5ff1a04f10
Build alpine Docker images in CI when linux/amd64 is in platform list (#1141) 2022-01-13 20:26:31 +00:00
Rahul De
2f6d363ee8
Revert: Add metabom jar to docker image(9cf6a1ae71) 2022-01-11 21:34:36 +00:00
Rahul De
f453928f80
fix docker build script 2022-01-11 20:38:43 +00:00
James Carnegie
6e2c32ff84
Add opencontainers annotations to docker image (#1136)
Co-authored-by: Rahuλ Dé <lispyclouds@users.noreply.github.com>
2022-01-11 20:26:29 +01:00
James Carnegie
9cf6a1ae71 Add metabom jar to docker image 2022-01-11 19:03:51 +00:00
Michiel Borkent
e97f5f69b2 companies.md [skip ci] 2022-01-08 21:25:35 +01:00
Michiel Borkent
3bf5d0faf1 fs: create dirs in copy-tree 2022-01-08 16:13:56 +01:00
Michiel Borkent
dd5d3fe1a4 sci: add pop! 2022-01-07 23:17:28 +01:00
Michiel Borkent
061bc528ae this test wasn't supposed to be in master! 2022-01-05 20:21:19 +01:00
Michiel Borkent
d050e7d58d deps.clj: update to clojure CLI 1.10.3.1058 2022-01-05 20:11:23 +01:00
A Brooks
18cf24d35e
Fix broken link to source. (#1127) [skip ci] 2022-01-05 13:24:19 +01:00
Jakub Holý
7e2d69d0cb
fix typo in news (#1125) [skip ci] 2022-01-03 11:03:23 +01:00
Michiel Borkent
01b02f38d6 Update news.md [skip ci] 2021-12-31 16:44:17 +01:00
Michiel Borkent
221cbe1142 Version bump 2021-12-30 16:50:56 +01:00
Michiel Borkent
483bfca969 CHANGELOGS [skip ci] 2021-12-30 16:33:15 +01:00
Michiel Borkent
0f21c16f43 v0.7.3 2021-12-30 16:32:22 +01:00
Michiel Borkent
34f9997df4 [#1123, #1124] Do not require java for bb tasks without deps 2021-12-30 16:32:15 +01:00
Michiel Borkent
890877fcfd Version bump 2021-12-29 18:26:59 +01:00
Michiel Borkent
cde8bbc5ee v0.7.2 2021-12-29 18:11:09 +01:00
Michiel Borkent
5723fa2e67 Version bump 2021-12-29 18:10:56 +01:00
Michiel Borkent
d818930e0f process 2021-12-29 18:09:12 +01:00
Michiel Borkent
c8aebb3c2b v0.7.1 2021-12-29 17:10:42 +01:00
Michiel Borkent
ab470def54 BB test patches 2021-12-29 17:05:19 +01:00
Gabriel Horner
665ae4dd97
Finish up library tests (#1120)
* Add tests for markdown-clj and tools.namespace

See comment for why only one markdown test could be run.
Closes #1069 and #1064

* Convert 10 test libs using add-libtest

Also improved add-libtest to only require maven artifact
and rely on clojars for getting git-url most of the time

* Convert 8 more test libs using add-libtest

Also updated table and added comment for newline test

* Fix doric test

* Disable tools.namespace test that fails on windows

* Added dozen manual test libs and converted 2 test libs

add-libtest.clj supports manually-added and test-directories options

* Converts last tests to test namespaces and write libraries.csv

* Add a number of library tests from projects.md

Also add more docs around adding test libs and tweak add script

* Use :sha for gitlib and older clojure cli

* Revert "Use :sha for gitlib and older clojure cli"

This reverts commit c663ab8368.

* Fix and disable failing tests

Disabled tests that fail consistently and fixed windows one
2021-12-29 16:35:14 +01:00
Michiel Borkent
367cf7bf26 CHANGELOGS [skip ci] 2021-12-29 16:17:01 +01:00
Michiel Borkent
ddf03c50ae [#1116] Missing error message when exception happens in REPL print 2021-12-29 16:10:30 +01:00
Michiel Borkent
818f2a9931
Upgrade Clojure CLI (#1121) 2021-12-28 11:09:31 +01:00
Michiel Borkent
e56cb4a50f CHANGELOG [skip ci] 2021-12-27 23:21:34 +01:00
Michiel Borkent
53eb64e67d [#1119] Add equals method of java.util.Arrays 2021-12-27 22:03:30 +01:00
Michiel Borkent
1912b921df Fixes for issue reported by @thiagokokada 2021-12-27 21:31:13 +01:00
Michiel Borkent
ec7a6785d9 ignore SNAPSHOT when comparing number 2021-12-26 23:35:24 +01:00
Michiel Borkent
8c770b41ac oops 2021-12-26 23:24:48 +01:00
Michiel Borkent
8abf58112e Publish dev release 2021-12-26 23:11:58 +01:00
Michiel Borkent
e710c66dcb Publish dev builds 2021-12-26 21:15:36 +01:00
Michiel Borkent
fb7f984389
[#1110] Load tasks and deps from other bb.edn file (#1117)
Co-authored-by: Bob <highpressurecarsalesman@gmail.com>
2021-12-26 17:26:35 +01:00
Michiel Borkent
93fb4379ff
[#584, #1037] Uberscript in bb (#1115) 2021-12-23 21:23:11 +01:00
Gabriel Horner
3a30a11c1f
Add more library tests (#1114)
* Add environ and table tests

Also allow for directory option and fix nasty nil test-dir bug

* Add 7 libraries via add-libtest.clj

Added :branch option and saved additional info to bb-tested-libs.edn to
reproduce test fetching later

* Disable intermittent failing test
2021-12-22 21:27:29 +01:00
Michiel Borkent
86c67af49c
[#1105] Include native elements in printed stacktrace (#1113) 2021-12-22 13:04:29 +01:00
Michiel Borkent
697c03fa07 CHANGELOG [skip ci] 2021-12-21 22:53:11 +01:00
Michiel Borkent
04762fe68e CHANGELOG 2021-12-21 21:32:34 +01:00
Michiel Borkent
79cbe5b58a [#1087] Add spy macro from taoensso.timbre 2021-12-21 21:29:33 +01:00
Michiel Borkent
5b444995a0 edamame v0.0.19 2021-12-21 21:01:48 +01:00
Gabriel Horner
4e7d04f672
Add libtest (#1112)
* Add add-libtest script and add 2 libraries with it

* Add tests for 3 existing libraries
2021-12-21 19:25:10 +01:00
Michiel Borkent
becdabe100 pods [skip ci] 2021-12-19 20:26:37 +01:00
Michiel Borkent
fd080e76e2 SCI: better error for higher order fn arity mismatch 2021-12-19 16:31:21 +01:00
Gabriel Horner
4f8eb37704
Added specmonstah and dependency to tested libraries (#1109)
* Enable specmonstah tests now that it's merged

* Add dependency to tests and doc added libs

* Use the older :sha for compat with older clojure cli
2021-12-16 15:46:50 +01:00
Thiago Kenji Okada
4ed7cd5aea
Check shasum/sha256sum in PATH on install script (#1108)
* Check shasum/sha256sum in PATH on install script

* Fix typo in .github/pull_request_template.md
2021-12-16 15:26:33 +01:00
Michiel Borkent
1c217a7157 PR template [skip ci] 2021-12-15 16:53:38 +01:00
Wes Morgan
bc0ae17e64
Build arm64 docker image in CI (#1099) 2021-12-15 15:28:39 +00:00
Gabriel Horner
48a8f3ac18
Document babashka forks (#1106) [skip ci]
Also removed double nesting of Projects in toc
2021-12-14 15:37:44 +01:00
Michiel Borkent
a0ef27ad21 CHANGELOG [skip ci] 2021-12-10 13:33:51 +01:00
Michiel Borkent
6ce33dff90 Version bump 2021-12-10 11:36:52 +01:00
Michiel Borkent
823bc8ca22 0.7.0 2021-12-10 11:19:19 +01:00
Michiel Borkent
73d466e7d6
Fix SCI#649 aget reflection (#1100)
Fix issue with aget reported in babashka/sci#649 by @MrEbbinghaus
2021-12-09 22:38:38 +01:00
Michiel Borkent
48cf9671e1 Updated bb spec 2021-12-09 18:36:05 +01:00
Michiel Borkent
a3633faf3f test 2021-12-09 18:35:10 +01:00
Michiel Borkent
068cb6a97d update babashka spec dep 2021-12-09 18:32:04 +01:00
Michiel Borkent
b7ede11154 Bump spec for tests 2021-12-09 18:02:50 +01:00
Michiel Borkent
806517c2ba graal config 2021-12-09 17:52:51 +01:00
Michiel Borkent
efacc16e3b graal config 2021-12-09 17:50:41 +01:00
Michiel Borkent
fb0fbe87fc spec test 2021-12-09 17:43:06 +01:00
Michiel Borkent
b67d539ab0 fields 2021-12-09 17:42:55 +01:00
Michiel Borkent
713358dca8 SCI: instance field access // MultiFn interop 2021-12-09 17:28:04 +01:00
Michiel Borkent
b32b7d7de9 sci bump, memfn 2021-12-09 13:05:45 +01:00
Michiel Borkent
5d324dd201 Added integrant tests 2021-12-08 23:11:32 +01:00
Michiel Borkent
4f21669f6b Add orchestra tests 2021-12-08 22:57:16 +01:00
Michiel Borkent
19ad756261 Support applyTo interop for clojure.spec 2021-12-08 22:42:26 +01:00
Michiel Borkent
f754578075 Add coax tests 2021-12-08 21:31:58 +01:00
Michiel Borkent
6d14ed61f1 Add better-cond to CI tests 2021-12-08 18:46:53 +01:00
Michiel Borkent
9dd4941230 Add spec tests to CI 2021-12-08 18:26:17 +01:00
Michiel Borkent
54cd1fa85f Add core specs warning 2021-12-08 18:08:02 +01:00
Michiel Borkent
f5fd11fd78 Don't remove core specs when they are in deps map 2021-12-08 17:20:05 +01:00
Michiel Borkent
8b3e89fbcc Don't remove core specs 2021-12-08 17:11:29 +01:00
Michiel Borkent
76c9d633ff Warn on clojure.spec.alpha 2021-12-08 16:04:32 +01:00
Michiel Borkent
ef8e4f48b9 add StackTraceElement->vec 2021-12-08 15:00:24 +01:00
Michiel Borkent
e466f832b8
inst-ms + clojure.instant ns (#1098) 2021-12-08 13:51:31 +01:00
Michiel Borkent
e1f6f369cb PR template [skip ci] 2021-12-08 10:28:36 +01:00
Michiel Borkent
a061977523 PR template [skip ci] 2021-12-08 10:27:10 +01:00
Wes Morgan
bf51eeb26d
Allow building x86_64 or arm64 Docker images (#1095) 2021-12-07 22:15:57 +00:00
Wes Morgan
347816820c
Add .cpcache and target to .dockerignore (#1094)
These can leak host env stuff into Docker build context and break things
2021-12-06 23:06:29 +01:00
Michiel Borkent
e703669c79
Add java.util.StringTokenizer (#1092) 2021-12-06 11:31:30 +01:00
Michiel Borkent
d5c67deeca SCI PR template [skip ci] 2021-12-06 10:42:33 +01:00
Michiel Borkent
8127d00b89 fix metadata on declared var 2021-12-05 23:35:11 +01:00
Michiel Borkent
e434bdb8de Allow macroexpand on doseq and for 2021-12-05 21:07:46 +01:00
Michiel Borkent
de6d274993 sci with test 2021-12-05 14:18:00 +01:00
Michiel Borkent
e30b878206 edamame 0.0.18 2021-12-05 14:14:42 +01:00
Johannes Lötzsch
ec4f9f95fb
fix script/compile #1089 (#1090)
Co-authored-by: Johannes Lötzsch <git@johannesloetzsch.de>
2021-12-05 12:05:05 +01:00
Michiel Borkent
12dbbbb43f edamame v0.0.17 2021-12-05 00:00:30 +01:00
Grazfather
340b18dcf6
Force decimal version numbers in install script (#1088)
Co-authored-by: Alex Chen <Cnly@users.noreply.github.com>
2021-12-04 15:54:41 +01:00
Michiel Borkent
e99a3ca7d7 deprecate $ in process 2021-12-04 11:44:18 +01:00
Michiel Borkent
26336ed500 CHANGELOG [skip ci] 2021-12-02 21:08:54 +01:00
Michiel Borkent
692d3f879d CHANGELOG [skip ci] 2021-12-02 21:08:39 +01:00
Michiel Borkent
5608924de6 CHANGELOG [skip ci] 2021-12-02 21:08:35 +01:00
Michiel Borkent
b4cf195346 Version bump 2021-12-02 21:08:00 +01:00
Michiel Borkent
709e94f956 CHANGELOG [skip ci] 2021-12-02 21:07:53 +01:00
Michiel Borkent
d7ccd1d7c1 v0.6.8 2021-12-02 20:49:30 +01:00
Michiel Borkent
f761d84312 Add new functions from clojure 1.11 except clojure.java.math 2021-12-02 20:47:09 +01:00
Michiel Borkent
638354de56 sci: add clojure.core/test - nREPL: catch throwable 2021-12-02 20:35:05 +01:00
Michiel Borkent
c622a32a65 process: support deref with timeout 2021-12-01 21:39:46 +01:00
Michiel Borkent
9c28fd3eab bump to tools 1.10.3.1040 2021-12-01 17:24:04 +01:00
Michiel Borkent
22677d2832 sci [skip ci] 2021-12-01 09:46:49 +01:00
Michiel Borkent
2257bddbd8 sci: add reader-conditional? 2021-11-30 10:59:05 +01:00
Michiel Borkent
c177e682c7 Version bump 2021-11-30 00:00:13 +01:00
Michiel Borkent
dc77bc9638 v0.6.7 2021-11-29 23:42:52 +01:00
Michiel Borkent
2079f0a554 Add print-deps test 2021-11-29 23:42:36 +01:00
Michiel Borkent
42f12ba75b fs: which improvement on Windows 2021-11-29 23:04:59 +01:00
Michiel Borkent
f1103ae677 fs: which returns executable when program name contains extension 2021-11-29 21:46:36 +01:00
Michiel Borkent
0757abad17 deps.clj bump 2021-11-29 12:38:34 +01:00
Michiel Borkent
15e2430fea Version bump 2021-11-29 12:22:37 +01:00
Michiel Borkent
79678c57ea v0.6.6 2021-11-29 12:03:43 +01:00
Michiel Borkent
ee06576557 fs: enhance fs/which for Windows 2021-11-29 11:08:18 +01:00
Michiel Borkent
0ebbdcb84d CHANGELOG [skip ci] 2021-11-28 23:12:22 +01:00
Michiel Borkent
7baef947af Minor renaming 2021-11-28 23:03:31 +01:00
Michiel Borkent
ed19e202e8 Fix Windows 2021-11-28 22:53:07 +01:00
Michiel Borkent
7255f50beb [#1078] Resolve program in babashka.process on Windows using known extensions 2021-11-28 22:14:17 +01:00
Michiel Borkent
07667697ba [#1078] Resolve program in babashka.process on Windows using known extensions 2021-11-28 22:09:24 +01:00
Michiel Borkent
bfbfc912fe [#1078] Resolve program in babashka.process on Windows using known extensions 2021-11-28 21:45:20 +01:00
Michiel Borkent
1f5b06dc04 babashka.process: tokenize fix 2021-11-28 20:18:20 +01:00
Michiel Borkent
99262e7ce8 Add babashka.core 2021-11-28 15:56:26 +01:00
Michiel Borkent
2a2d4befe5 Add babashka.core 2021-11-28 15:56:17 +01:00
Michiel Borkent
4a8c7a12e0 Add core submodule 2021-11-28 15:48:00 +01:00
Nik
080c60c08e
[#1081] make next.jdbc's result-set namespace accessible from babashka (#1082) 2021-11-28 09:36:42 +01:00
Nik
f06a749249
Add support for SQLite via a BABASHKA_FEATURE_SQLITE feature flag (#1079)
* implement native sqlite support as a feature flag following [1]

([1] is mentioned as a checklist of sorts as to how to add a new 
feature flag in [2])

[1] 13f65f05ae
[2] https://github.com/babashka/babashka/blob/master/doc/build.md

* bump to latest sqlite-jdbc, remove some no longer needed config+libs

based on feedback from borkdude here [1], bump xerial/sqlite-jdbc
3.36.0.3, which includes the graalvm classes and resource config
previously implemented via ericdallo/sqlite-jni-graal-fix and a `-H`
flag in `script/compile`

[1]: https://github.com/babashka/babashka/pull/1079#issuecomment-980533178
2021-11-28 09:34:54 +01:00
Michiel Borkent
803eb33369 CHANGELOG [skip ci] 2021-11-27 16:02:30 +01:00
Michiel Borkent
cdfba7d420 CHANGELOG [skip ci] 2021-11-27 16:00:41 +01:00
Michiel Borkent
4566905a5c
Add compatibility with hato and clj-http-lite insecure feature (#1080)
Added 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
2021-11-27 15:58:24 +01:00
Michiel Borkent
a50930fc14 PR template [skip ci] 2021-11-26 23:18:25 +01:00
Michiel Borkent
6918114b1b CHANGELOG [skip ci] 2021-11-26 16:48:59 +01:00
Michiel Borkent
a8b43475c1 babashka.curl [skip ci] 2021-11-24 23:07:56 +01:00
Michiel Borkent
d5a4361f4d babashka.curl - :as :bytes 2021-11-24 21:47:17 +01:00
Michiel Borkent
9dbc2a4734 Add classes to support xforms
+          java.util.ArrayDeque
+          java.util.ArrayList
+          java.util.Collections
+          java.util.Comparator
+          java.util.NoSuchElementException

See previous commit
2021-11-24 17:41:40 +01:00
Michiel Borkent
e419c569a8
Support satisfies? on protocol values (#1076) 2021-11-24 17:38:38 +01:00
Michiel Borkent
a95c51998f
limit space of InetAddress4/6 2021-11-23 11:34:30 +01:00
Michiel Borkent
ef232bd432 sci 2021-11-22 23:22:55 +01:00
Michiel Borkent
29b693181c Merge branch 'master' into reader-resolver 2021-11-22 22:02:02 +01:00
Michiel Borkent
ffbfdd7a29 [#1071] Fix --version option, don't read cp file. Thanks @bobisageek 2021-11-22 16:47:59 +01:00
Michiel Borkent
369ee94c90
Add java.net.Inet4Address and java.net.Inet6Address (#1072) 2021-11-22 10:42:50 +01:00
Michiel Borkent
d897baff28 reader-resolver 2021-11-21 23:51:21 +01:00
Michiel Borkent
7b403b8052 Bump SCI 2021-11-21 22:33:04 +01:00
Michiel Borkent
8ae4fc5128 sci: default-reader-fn 2021-11-21 21:19:52 +01:00
Michiel Borkent
e360a8666a Support read-eval 2021-11-21 17:38:56 +01:00
Michiel Borkent
d04e897ef4 clojure.core/read improvements: support :eof + :read-cond 2021-11-21 14:37:14 +01:00
Michiel Borkent
2a826ac432 Fix fs 2021-11-21 12:23:00 +01:00
Michiel Borkent
2e2f6205c3 fs: fs/home and fs/expand-home 2021-11-21 11:46:35 +01:00
Michiel Borkent
a9d1612316 sci 2021-11-20 21:37:59 +01:00
Michiel Borkent
ef5c2cee2e clj-kondo config 2021-11-19 21:49:39 +01:00
Michiel Borkent
0428d983d9 update to newest sci 2021-11-19 21:46:16 +01:00
Michiel Borkent
1ebe142655 use sci/copy-ns 2021-11-19 18:43:18 +01:00
Michiel Borkent
44e8ea36fd Update with fs/with-temp-dir 2021-11-19 18:43:18 +01:00
Michiel Borkent
923adab737 Update with fs/with-temp-dir 2021-11-19 18:43:18 +01:00
Michael Glaesemann
5940b95cd2
Add javax.crypto classes necessary for calculating hmac shas. (#1066)
* Add javax.crypto classes necessary for calculating hmac shas.

* Add hmac-256-sha test for javax.crypto.
2021-11-18 08:49:59 +01:00
Michiel Borkent
bd79e6344a [skip ci] 2021-11-15 20:43:20 +01:00
Michiel Borkent
c651f1f944 [skip ci] 2021-11-15 20:40:03 +01:00
Michiel Borkent
66faeabc18 README [skip ci] 2021-11-14 18:02:04 +01:00
Michiel Borkent
bc151116dc Version bump 2021-11-13 15:37:34 +01:00
Michiel Borkent
dbac5791ab v0.6.5 2021-11-13 14:50:49 +01:00
Michiel Borkent
547c338de9 deps.clj: bump tools jar 2021-11-13 13:12:45 +01:00
Michiel Borkent
aae5f75215 CHANGELOG [skip ci] 2021-11-13 13:10:19 +01:00
Michiel Borkent
a0d03427d9 CHANGELOG [skip ci] 2021-11-13 13:09:04 +01:00
Michiel Borkent
52f9dc8f28
Add various tools.build related classes (#1062)
Co-authored-by: Hugo Duncan <hugo@hugoduncan.org>
2021-11-13 11:11:42 +01:00
Michiel Borkent
948c38c035 Add support for BasicFileAttributes 2021-11-13 11:05:21 +01:00
Michiel Borkent
aaaab5f6eb [#1061] Calling close on DirectoryStream fails 2021-11-13 10:44:16 +01:00
Michiel Borkent
321c47297d [#1061] Calling close on DirectoryStream fails 2021-11-13 10:38:21 +01:00
Michiel Borkent
877700710a fs: fix for unzip 2021-11-12 12:50:58 +01:00
Bob
fb1a1cfbfb
[#1046] add PGProperty fields to reflection config 2021-11-07 21:44:10 +01:00
Michiel Borkent
2bb7499fd5 [#1055] Segfault when reifying FileVisitor with visitFileFailed 2021-11-07 12:05:16 +01:00
Michiel Borkent
c86b28a210 edamame v0.0.14 2021-11-06 20:43:39 +01:00
Michiel Borkent
1e5ab961c2 edamame 0.0.13 2021-11-06 20:01:44 +01:00
Michiel Borkent
7c7053119a Expose babashka.deps/clojure 2021-11-06 13:01:35 +01:00
Michiel Borkent
552bcc7931 README [skip ci] 2021-11-06 09:38:23 +01:00
Michiel Borkent
8ebb890b26 Bump core.async to 1.4.627 2021-11-05 20:22:18 +01:00
Michiel Borkent
fe2138e71e Bump deps.clj 2021-11-05 17:15:05 +01:00
Michiel Borkent
c48ae27da3
Disable some service loader features for smaller image size (#1054)
This also excludes `java.awt.Toolkit`.

```
     -H:ServiceLoaderFeatureExcludeServices=java.net.ContentHandlerFactory \
     -H:ServiceLoaderFeatureExcludeServices=java.nio.charset.spi.CharsetProvider
```
2021-11-05 10:39:48 +01:00
Michiel Borkent
73c9f3b3ba
Add alias for musl (#1053) 2021-11-04 11:27:41 +01:00
Michiel Borkent
a9cc6e301e Bump to GraalVM 21.3.0 JVM 11 2021-11-04 11:01:41 +01:00
Michiel Borkent
19415f6363 Fix remaining args when invoking -m 2021-11-02 13:46:51 +01:00
Michiel Borkent
73426de206 deps.clj: tools jar upgrade 2021-11-02 10:40:05 +01:00
Michiel Borkent
11379deca1
[#999] Support Object.toString override on defrecords (#1050) 2021-11-02 10:29:52 +01:00
Rahuλ Dé
5ba275395d
add contajners to libraries (#1049) [skip ci] 2021-11-01 18:50:18 +01:00
Karol Wójcik
147e12f041
Add clojure.lang.IPersistentList (#1048) 2021-11-01 13:58:53 +01:00
Michiel Borkent
71b8d7fd37 deps.clj: manifest staleness 2021-10-30 11:49:59 +02:00
Michiel Borkent
d06837bc68 CHANGELOG [skip ci] 2021-10-29 14:51:05 +02:00
Michiel Borkent
b7030fd629 CHANGELOG [skip ci] 2021-10-29 14:50:19 +02:00
Michiel Borkent
a60427ecd7 Version bump 2021-10-29 14:49:34 +02:00
Michiel Borkent
0e3d0d03f0 v0.6.4 2021-10-29 14:27:34 +02:00
Michiel Borkent
7b6075232a deps.clj: delay version to runtime 2021-10-29 14:27:30 +02:00
Michiel Borkent
50914da542 deps.clj 2021-10-29 12:33:45 +02:00
Michiel Borkent
b3083f2c1d Version bump 2021-10-29 12:05:48 +02:00
Michiel Borkent
b115a80181 v0.6.3 2021-10-29 11:44:04 +02:00
Michiel Borkent
b39a666d73 deps.clj [skip ci] 2021-10-29 11:37:24 +02:00
Michiel Borkent
c96668e402 deps.clj upgrade 2021-10-29 11:26:05 +02:00
Michiel Borkent
973938134b Add Dr. Evidence to sponsoring companies [skip ci] 2021-10-26 18:01:23 +02:00
Michiel Borkent
66197ae416 [#1040] build time, not run time 2021-10-25 12:07:34 +02:00
Michiel Borkent
bfd78e7c56 Bump rewrite-clj 2021-10-25 12:05:49 +02:00
Michiel Borkent
cbfb1b54b7 [#1040] Add java.sql.SQLException to init at build time 2021-10-25 11:37:27 +02:00
Michiel Borkent
11cf09b6f3 sci: org change 2021-10-25 11:37:27 +02:00
Yann Vanhalewyn
37ec9f4638
Bump rewrite-clj to v1.0.699-alpha (#1042)
There is a bug in rewrite-clj v644 causing users to be unable to use
`:track-position` and `:auto-resolve` options at the same time in
rewrite zippers. See:

https://github.com/clj-commons/rewrite-clj/issues/159

This makes, for example, building static code analysis tools with
babashka much harder. In fact when analysing code, the position is
relevant for the script output and resolving keywords and symbols might
be required for the analysis.
2021-10-25 11:33:21 +02:00
Wojciech Wojtyniak
3f5bbdf118
Fix URL for Fluent (#1039)
The url was missing a colon after 'https'.
2021-10-24 22:10:27 +02:00
Michiel Borkent
e819cd1fb5 Update babashka.fs 2021-10-20 21:31:34 +02:00
Michiel Borkent
588e56d4e5 Add Schnaq to companies [skip ci] 2021-10-20 11:57:10 +02:00
Michiel Borkent
d24d56d832 README [skip ci] 2021-10-19 19:31:44 +02:00
Michiel Borkent
ace7c80534 deps.clj: make Java 17 compatible 2021-10-19 17:54:33 +02:00
Bob
5a80e1603e
- correct --init to be a global option (#1036)
- test --init before subcommands and task names
2021-10-18 15:39:08 +02:00
Bob
8dad1fa473
ruuter and clj-digest tests (#1034)
* add lib tests for using ruuter with built-in httpkit server

* just to be safe, add a timeout to ruuter's HTTP requests

* add tests for clj-commons.digest

* add newly-tested libraries to the library list

* undo paren moves I missed that were done by parinfer

* typo
2021-10-17 23:12:28 +02:00
Bob
bf3b6d2dca
add support for --init as a file to be loaded before evaluation actions (#1033) 2021-10-17 10:44:31 +02:00
Michiel Borkent
b9396ac318 bb.curl: support :follow-redirects false 2021-10-15 22:15:03 +02:00
Michiel Borkent
fd41f96cb7 Pods: support metadata - thanks @quoll 2021-10-15 19:46:12 +02:00
Michiel Borkent
7112153c46 fs [skip ci] 2021-10-14 13:39:36 +02:00
Michiel Borkent
e2d4b815d0
Add fluent.to to companies [skip ci] (#1031) 2021-10-14 13:21:26 +02:00
Michiel Borkent
83f2441bfd [#1030] Add fs/unzip 2021-10-12 17:23:09 +02:00
Michiel Borkent
405c34b668
Add java.security.Provider and java.security.Security (#1028)
This adds about 80k to the binary.
2021-10-11 17:28:12 +02:00
Michiel Borkent
8b8ba47f65 sci 2021-10-09 15:27:20 +02:00
Michiel Borkent
ffd8125925 Version bump 2021-10-08 15:08:22 +02:00
Michiel Borkent
ce6d4aaf34 Fix test 2021-10-08 14:43:57 +02:00
Michiel Borkent
5d4568188e v0.6.2 2021-10-08 14:30:30 +02:00
Michiel Borkent
eebe6627d7 babashka.nrepl with middleware 2021-10-07 23:57:01 +02:00
Michiel Borkent
bc63da1612
babashka fs: add unzip function (#1027) 2021-10-07 12:39:33 +02:00
Michiel Borkent
7af56d73e4 bb.curl [skip ci] added test 2021-10-06 20:58:35 +02:00
Michiel Borkent
1d67ab02e5 companies [skip ci] 2021-10-06 09:40:36 +02:00
Michiel Borkent
23480a4eb4 bb.curl: add :err :inherit 2021-10-05 22:37:18 +02:00
Michiel Borkent
b11925bd02 bb.nrepl #45 2021-10-05 19:39:40 +02:00
Michiel Borkent
0d01083780 companies [skip ci] 2021-10-05 15:32:42 +02:00
Michiel Borkent
77b1e344e2 companies [skip ci] 2021-10-05 10:01:14 +02:00
Michiel Borkent
9409d21f74 companies [skip ci] 2021-10-05 10:00:36 +02:00
Michiel Borkent
70af222d9d companies [skip ci] 2021-10-05 09:19:43 +02:00
Michiel Borkent
bbb2907029 companies [skip ci] 2021-10-05 08:43:33 +02:00
Michiel Borkent
7fc03e4bb4 companies [skip ci] 2021-10-04 21:24:45 +02:00
Michiel Borkent
0b2f70247f companies [skip ci] 2021-10-04 21:23:50 +02:00
Michiel Borkent
1ea18a3771 companies [skip ci] 2021-10-04 21:04:36 +02:00
Michiel Borkent
d5b7524264 Companies [skip ci] 2021-10-04 18:57:51 +02:00
Michiel Borkent
d30782403e
Companies [skip ci] (#1025) 2021-10-04 17:57:35 +02:00
Bob
b799ac7897
add mysql pprint example and minimallist doc [skip ci] (#1024)
* add mysql pretty-printing example

* add minimallist to libraries list

* fix typos
2021-10-04 12:01:31 +02:00
Michiel Borkent
19e3e84e05 sci: more tests 2021-10-01 21:52:54 +02:00
Michiel Borkent
09ac438cc2 sci: more extend-with-meta ordering fixes 2021-10-01 21:41:14 +02:00
Michiel Borkent
629d795980 sci: prefer meta in extend 2021-10-01 20:34:59 +02:00
Michiel Borkent
36f1b30778 sci: protocol order 2021-10-01 11:54:36 +02:00
Bob
d4ac7365e0
[#1015] print locals only when debug option is enabled (#1021) 2021-09-29 09:24:51 +02:00
Michiel Borkent
20610687de SCI callstack change 2021-09-27 22:51:31 +02:00
Michiel Borkent
774e4739ba README [skip ci] 2021-09-27 14:22:56 +02:00
Michiel Borkent
7063021f19
SCI: use public stacktrace logic (#1017) 2021-09-26 23:48:36 +02:00
Bob
a39cdc7e8c
Component lib test (#1016)
* add lib test for component

* add example of using GZip
2021-09-26 23:47:39 +02:00
Michiel Borkent
17bb2f93ad deps.clj 2021-09-25 12:23:53 +02:00
Michiel Borkent
4880a3ebe6 deps.clj 2021-09-25 11:11:31 +02:00
Bob
7df81f1273
make core.async and rewrite-clj integral (#1014)
* make core.async integral (not a feature)

tasks (in particular, parallel tasks) require core.async

* make rewrite_clj integral (not a feature)

* cleanup mistakes
2021-09-23 18:15:01 +02:00
Michael Glaesemann
7cb972fdec
Include java.util.stream.BaseStream in classes. (#1013) 2021-09-23 16:01:42 +02:00
Bob
407bd74a00
[#1004] XML edn reading and populating *data-readers* for feature deps (#1012)
* add XML edn reading and make *data-readers* closer to Clojure

- initial value of *data-readers*: empty map
- add XML readers to feature-flagged edn-readers for parsing *input*
- add edn-readers to *data-readers* to emulate data_readers.clj handling

* add YAML round-trip testing

* set root val of *data-readers* at top level
2021-09-20 18:31:57 +02:00
Michiel Borkent
58cbfd987b Templates [skip ci] 2021-09-17 12:45:59 +02:00
Michiel Borkent
f37a61a848 Templates [skip ci] 2021-09-17 12:19:16 +02:00
Michiel Borkent
664d708f1c Templates [skip ci] 2021-09-17 12:17:00 +02:00
Michiel Borkent
c8e170bba2 Templates [skip ci] 2021-09-17 12:15:59 +02:00
Michiel Borkent
9bb200b193 README [skip ci] 2021-09-16 11:04:43 +02:00
Kimmo Koskinen
89d07602e8
Add ZipFile (#1010) 2021-09-15 14:34:58 +02:00
Thiago Kenji Okada
9ca3a3bd31
Use Debian bullseye on CI/CD/Dockerfile (#1005)
* Migrate `Dockerfile` to use a bullseye-based image

Also, some QoL changes on the `Dockerfile`:
- Parametrize GRAALVM_VERSION to make it easier to update
- Remove installing programs already included on base image
- Remove `deps.edn` from `.dockerignore` since it is necessary to build

* Migrate CircleCI to use a bullseye-based image

Also some modifications necessary to make it work:
- Migrate from `circleci` images to `clojure` since they're out-of-date
  and also seem to be considered legacy:
  https://circleci.com/docs/2.0/circleci-images/#legacy-language-images
- Remove unnecessary usage of `sudo`, since all commands runs as root
- Sync packages with `Dockerfile`. This will make easier to test locally
  if everything will work (of course, it is not 100% guarantee)

* Remove lsof

* Remove "Install {Clojure,Leiningen}" steps

Already included on the base image.

* Do not change directory when downloading GraalVM

* Move "Download GraalVM" to script/download-graalvm

* Set GRAALVM_HOME correctly

* Unbreak mac build

* Revert "Set GRAALVM_HOME correctly"

This reverts commit 5e2a6158dc.

* Set GRAALVM_HOME correctly, take 2

* Improve download-graalvm script

* Re-added "Install Clojure" steps

* Set amd64 as default GRAALVM_ARCH

* Unbreak linux-aarch64

* Ubreak jvm

* Do not change directory

* Fix yaml

* Fix mac/linux-aarch64

* Add missing Clojure

* Fix cache

* Move GraalVM installation to /tmp

* Use script/install-clojure

* Use /opt instead of /tmp to install GraalVM

* Revert "Use /opt instead of /tmp to install GraalVM"

This reverts commit 3cfad03c8e.

* Use CircleCI's Clojure images again

* Go back to installing GraalVM on $HOME
2021-09-13 23:28:13 +02:00
Michiel Borkent
29c2fbb86d Version bump 2021-09-12 14:45:31 +02:00
Michiel Borkent
14362cdf5f CHANGELOGS [skip ci] 2021-09-12 14:42:49 +02:00
Michiel Borkent
500a4f9f60 v0.6.1 2021-09-12 14:22:45 +02:00
Michiel Borkent
11f0e1a566 Get rid of single segment namespace 2021-09-12 12:39:58 +02:00
Michiel Borkent
13d38ba455
Clj easy graal build time (#1008) 2021-09-12 11:50:32 +02:00
Michiel Borkent
0f723a1e7c
Fix aarch64 test (#1007) 2021-09-11 18:13:12 +02:00
Michiel Borkent
4c075e07e4 CHANGELOGS [skip ci] 2021-09-11 00:20:06 +02:00
Michiel Borkent
8ca21887be [#1006] Self-referential function returns wrong binding
Also see https://github.com/borkdude/sci/issues/613
2021-09-10 23:32:43 +02:00
Michiel Borkent
149fc261fa sci 2021-09-10 18:27:05 +02:00
Victor Bjelkholm
031080bfba
Add docs badge to top of README (#1002)
Finding myself scrolling around the readme for some seconds trying to find the link to the docs, which is a couple of sections down from the top. In order to help people (and myself) to find the reference faster, I added a badge in the top that links to the book/docs.
2021-09-09 14:03:21 +02:00
Michiel Borkent
a43e75ffd6
Add PipedInput/OutputStream (#1001) 2021-09-07 11:30:52 +02:00
Michiel Borkent
943dc69c66 Fix test 2021-09-01 23:30:33 +02:00
Michiel Borkent
1a764f3120 [#997] Add smoke test 2021-09-01 23:14:35 +02:00
Michiel Borkent
f5cdf89608 [#997] Fix for schmee java-http-clj send-async 2021-09-01 23:09:02 +02:00
Michiel Borkent
f6dd96a281 CHANGELOGS [skip ci] 2021-09-01 19:48:26 +02:00
Michiel Borkent
09dcd58ee8 Version bump 2021-09-01 17:50:33 +02:00
Michiel Borkent
5d07faa051 CHANGELOGS [skip ci] 2021-09-01 17:38:21 +02:00
Michiel Borkent
e3d6e433b2 v0.6.0 2021-09-01 17:34:52 +02:00
Michiel Borkent
faec6aeced v0.5.2 2021-09-01 17:34:25 +02:00
Michiel Borkent
e915e14612 Upgrade deps.clj, fix flaky test 2021-09-01 17:34:19 +02:00
Michiel Borkent
4be3abdd81 docs [skip ci] 2021-09-01 14:49:28 +02:00
Michiel Borkent
c69852eb9f Update projects.md page [skip ci] 2021-09-01 14:07:48 +02:00
Michiel Borkent
5422946eee CHANGELOGS [skip ci] 2021-09-01 14:00:37 +02:00
Michiel Borkent
e55559f727 CHANGELOGS [skip ci] 2021-09-01 13:59:26 +02:00
Michiel Borkent
c832819a76 Fix test 2021-09-01 13:45:23 +02:00
Michiel Borkent
cddd4ce581 [#995] Add clojure.data.xml/alias-uri 2021-09-01 13:34:47 +02:00
Michiel Borkent
1da01203ce Fix test 2021-09-01 11:54:09 +02:00
Michiel Borkent
23ba52a813
[#979] More java net http tests and tweaks (#996) 2021-09-01 11:36:24 +02:00
Michael Glaesemann
125e227976
Java http insecure context (#994)
* Add support for creating insecure context.

* Add BABASHKA_FEATURE_JAVA_NET_HTTP flag.

* Clean up java.net.http tests
2021-08-31 17:37:11 +02:00
Michiel Borkent
b71278cc68
[#979] JDK 11 Http Client
Co-authored-by: Michael Glaesemann <grzm@seespotcode.net>
2021-08-31 11:13:11 +02:00
Michiel Borkent
cebdd19c00
Upgrade to GraalVM 21.2.0 2021-08-30 20:16:18 +02:00
Bob
242c3d442f
Logging feature flag and tools.logging.readable (#981) (#987)
* put tools.logging behind a feature flag

* add tools.logging.readable

- move logging namespace to feature folder
- add logging.readable namespace
- add tests for logging.readable

* cleanup logging changes

- add logging env var to compile script
- remove unconditional require of logging namespace

* move old-config capture to before alter

* remove feature check from logging tests
2021-08-29 23:43:53 +02:00
Michiel Borkent
ad73a09c0e sci [skip ci] 2021-08-28 12:32:18 +02:00
Bob
4ee84947c9
use tagged-literal for unknown EDN tags when creating *input* (#975) (#976)
* use tagged-literal as default for unknown tags when using -I (or --stream without -i)

* use tagged-literal as default for unknown tags
2021-08-25 17:57:17 +02:00
Bob
a85d593767
make the REPL requires available to command-line scripts (#972) 2021-08-22 23:20:41 +02:00
Eric Dallo
72d3afa698
Migrate GraalVM configuration to jar (#973) 2021-08-22 23:19:28 +02:00
Thiago Kenji Okada
ef0af1244d
script: use musl from bullseye instead of unstable (#974)
Now that bullseye was released, Debian is starting to make bigger
changes on unstable. To avoid breakage, let's use musl from bullseye
that is the correct version that we were using until now (1.22-1):
https://packages.debian.org/bullseye/musl-tools

Eventually a better solution would be to simply use Debian bullseye to
compile everything, however the official Clojure image from Docker is
still using stretch. So this is a temporary solution until them.
2021-08-22 19:54:12 +02:00
Michiel Borkent
078cab1199 [#960] Support :clojure.core/eval-file metadata 2021-08-17 16:43:22 +02:00
Michiel Borkent
d4f5e57866 [#959] Add *print-readably* and *flush-on-newline* 2021-08-16 22:57:59 +02:00
Michiel Borkent
6c1c33e9ac sci [skip ci] 2021-08-14 21:08:23 +02:00
Michiel Borkent
f1fa47837a
[#969] Add java.lang.reflect.Method (getName only) (#970) 2021-08-13 11:25:00 +02:00
Bob
83b6d1e662
add lib test and an example for multigrep (#461) (#968)
* fix lanterna constants ns name

* add multigrep lib test and example
2021-08-11 10:52:00 +02:00
Bob
bb57d220d0
test that var metadata matches containing ns (#967)
* - change namespace on 'quick-check' to match clojure version
- add test for var meta->namespace alignment

* - add ns to with-transaction macro
2021-08-08 21:23:58 +02:00
Bob
116d73f0b0
- add :ns meta to more vars (#966)
- add a couple more tests for Coercions
2021-08-08 15:38:56 +02:00
Michiel Borkent
12c66351b3 Bump sci 2021-08-08 15:36:07 +02:00
Michiel Borkent
ed5c958d76 Bump sci: varify more vars 2021-08-07 09:39:27 +02:00
Bob
05e963bb6f
varify some core dynamic vars (#957) (#965)
* refer clojure core ns from sci.impl.vars instead
of sci.impl.namespaces

* add :ns meta to dynamic vars in b.i.clojure.core
2021-08-06 13:11:10 +02:00
Michiel Borkent
f1ebc854fe Bump sci 2021-08-06 13:10:46 +02:00
Michiel Borkent
4f4e222d40 Bump sci 2021-08-05 12:56:52 +02:00
Bob
ffd66d514a
add META-INF resource to windows compilation (to mirror linux compilation) (fixes #963) (#964) 2021-08-04 14:20:59 +02:00
Michiel Borkent
64fc58cd80 Update deps.edn on uberjar [skip ci] 2021-08-03 16:49:35 +02:00
Michiel Borkent
985079371c CHANGELOGS [skip ci] 2021-08-03 12:35:07 +02:00
Michiel Borkent
df3130ec66 Version bump 2021-08-03 10:57:19 +02:00
Michiel Borkent
bda2017d0d Skip print-deps-test on Windows for now 2021-08-03 10:36:56 +02:00
Michiel Borkent
cc71e2884e v0.5.1 2021-08-03 09:36:42 +02:00
Michiel Borkent
ff8ad66350 CHANGELOGS [skip ci] 2021-08-02 23:41:15 +02:00
Michiel Borkent
be29d791a8 [#733] print-deps tests 2021-08-02 23:34:38 +02:00
Michiel Borkent
5a0f056a42 deps.clj 2021-08-02 22:52:50 +02:00
Michiel Borkent
768b0c4594 Fix deps.clj 2021-08-02 17:20:00 +02:00
Michiel Borkent
67b77c121a Update deps.clj to 1.10.3.933 2021-08-02 17:08:48 +02:00
Michiel Borkent
1235ad0f9a [#957]: more varify in SCI 2021-08-01 22:08:19 +02:00
Michiel Borkent
3f72507f77
[#957] Repair ns meta 2021-07-31 14:44:26 +02:00
Michiel Borkent
89695d8f7a babashka.nrepl#43 2021-07-27 13:46:53 +02:00
Michiel Borkent
f5125a6f37 nREPL server: get rid of SCI internals 2021-07-27 13:46:53 +02:00
Michiel Borkent
84430c60f8
[#720, #733] print-deps (#958) 2021-07-27 11:29:00 +02:00
Bob
a9e445e5a1
fix windows lib tests (#956)
- add lib-tests path to deps.edn and remove it from shell scripts
- change windows lib test batch script to write a bb.edn file
- re-enable native lib tests on windows
2021-07-25 23:49:01 +02:00
Michiel Borkent
2282b2922d process update 2021-07-23 17:21:39 +02:00
Michiel Borkent
8387109166 Fix flaky test on Windows 2021-07-23 11:51:39 +02:00
Michiel Borkent
294cfe403c Fix flaky bb-edn test 2021-07-23 11:15:03 +02:00
Michiel Borkent
d1b7c6edea CHANGELOGS [skip ci] 2021-07-23 11:01:41 +02:00
Michiel Borkent
25390103fd [#953] Support full reflection on printwriter 2021-07-23 10:59:28 +02:00
Michiel Borkent
f685d9d036 CHANGELOGS [skip ci] 2021-07-22 20:24:54 +02:00
Michiel Borkent
7e0b19ad43 Update babashka.fs 2021-07-22 20:17:46 +02:00
Bob
2863dce99c
add windows-specific clojure test (#950) 2021-07-22 12:34:07 +02:00
Michiel Borkent
7fac0f1eb9
[#947] Vault tests, part 1 (#949) 2021-07-21 12:35:38 +02:00
Michiel Borkent
9c338c9b7f Add timbre/merge-config! 2021-07-18 11:19:47 +02:00
Eugen Stan
d25dd17510
Added InterruptedExcpetion to bb (#943) 2021-07-16 09:52:08 +02:00
Eugen Stan
c1eb47a262
Added IllegalStateException to automatic imports (#942) 2021-07-16 09:48:13 +02:00
Eugen Stan
95a6bc0d54
Added IllegalStateException to bb (#941) 2021-07-15 22:16:25 +02:00
Michiel Borkent
1e4315d1b8 Cut down on Windows tests for now 2021-07-15 16:39:01 +02:00
Michiel Borkent
0df46ab8ff Fix Windows? 2021-07-15 13:52:32 +02:00
Michiel Borkent
7b76eaf956 Disable task test for Windows 2021-07-15 13:16:38 +02:00
Michiel Borkent
fabc0c6ccd Upgrade clj-yaml 2021-07-15 11:18:37 +02:00
Michiel Borkent
8eff166244 [skip ci] 2021-07-15 10:58:36 +02:00
Michiel Borkent
d525428f15 Bump deps 2021-07-15 10:52:29 +02:00
Michiel Borkent
f058463685 Thanks @justone for the better name [skip ci] 2021-07-15 10:36:07 +02:00
Michiel Borkent
403dd8fb3d CHANGELOG [skip ci] 2021-07-14 23:59:39 +02:00
Michiel Borkent
4058afd40e Version bump 2021-07-14 23:46:54 +02:00
Michiel Borkent
0f37149740 CHANGELOG [skip ci] 2021-07-14 23:43:41 +02:00
Michiel Borkent
051cae8b6e 0.5.0 for real 2021-07-14 23:16:26 +02:00
Michiel Borkent
2aa4d26df2 v0.4.7 2021-07-14 23:16:00 +02:00
Michiel Borkent
299ca0515b CHANGELOG [skip ci] 2021-07-14 22:54:54 +02:00
Michiel Borkent
2c7e559351 0.5.0 but with trace 2021-07-14 22:51:18 +02:00
Michiel Borkent
cdc4a4987d FIX THE BLOAT 2021-07-14 22:06:19 +02:00
Michiel Borkent
2932e24652 v0.5.0 2021-07-14 16:31:56 +02:00
Michiel Borkent
a888a340ae Update Slmer: include << macro 2021-07-14 16:30:27 +02:00
Michiel Borkent
3ec7ced8cd Fix Windows test 2021-07-14 16:03:15 +02:00
Michiel Borkent
a8eea0dfd7 Fix Windows test 2021-07-14 14:59:49 +02:00
Michiel Borkent
36ab5ab299 [#935] Fix logging test for windows 2021-07-14 14:25:32 +02:00
Michiel Borkent
3d45f62dd2 [#935] Add logging tests 2021-07-14 12:43:12 +02:00
Hans Bugge Grathwohl
c1a48443d4
Fix typo in CHANGELOG.md (#937) [skip ci] 2021-07-13 14:38:38 +02:00
Michiel Borkent
24d1de51a0 sci: add another self-ref test 2021-07-13 12:57:47 +02:00
Michiel Borkent
51b1fb58d2 Fix tests 2021-07-13 12:52:21 +02:00
Michiel Borkent
5b459da10a Fix tests 2021-07-13 11:47:35 +02:00
Michiel Borkent
588cda9eac [#934] Environment variables not picked up by tools.deps 2021-07-13 11:31:36 +02:00
Michiel Borkent
e996351dc9 Add clojure.tools.logging + timbre 2021-07-12 22:59:07 +02:00
Michiel Borkent
a359bd1746 Use data.json 2.4.0 2021-07-12 22:50:22 +02:00
Michiel Borkent
0a9d7cbc6f Add Dig Gashinsky to sponsors [skip ci] 2021-07-12 17:07:29 +02:00
Michiel Borkent
28f986e201 [#934] pick up env vars from :extra-env in deps step 2021-07-12 16:59:10 +02:00
Michiel Borkent
bb50b6a942 Update links in dev doc [skip ci] 2021-07-12 15:32:31 +02:00
Michiel Borkent
220037c681 borkdude/sci#589: fix stacktrace with invalid import 2021-07-12 12:12:31 +02:00
Bob
af6f94ef81
run lib tests in Windows CI (#933)
* run lib tests in Windows CI

- add batch scripts for invoking tests
- skip some tests on windows
- tweak a couple tests to run on linux and windows

* configure git to checkout with Windows line endings on Appveyor
2021-07-12 00:00:14 +02:00
Bob
b6e65c08a8
add cl-format tests for nil and Writer args (#931) 2021-07-10 21:39:23 +02:00
Michiel Borkent
6a76a73e18 Use direct linking in profiler [skip ci] 2021-07-10 20:34:38 +02:00
Michiel Borkent
8c37594006 Add clojure.data.json tests 2021-07-10 17:16:14 +02:00
Michiel Borkent
3deb154fca sci: function reference equality 2021-07-10 16:51:34 +02:00
Michiel Borkent
02237c47ce Fix windows tests 2021-07-10 14:00:14 +02:00
Michiel Borkent
0832b0a480 Fully support PushbackReader 2021-07-10 11:40:19 +02:00
Michiel Borkent
9b6929e745 CHANGELOG [skip ci] 2021-07-10 11:33:45 +02:00
Michiel Borkent
d47290e996
[#922,#927] pprint/formatter-out + cl-format with-out-str support (#930) 2021-07-10 11:32:21 +02:00
Bob
5430fee1fd
ffclj link and logger example (#839 and #806) (#924)
* add ffclj to libraries list

* add simple logger macro to examples

* add a missing link on projects page
2021-07-08 20:18:01 +02:00
Michiel Borkent
39e17f149b CHANGELOG [skip ci] 2021-07-07 21:20:21 +02:00
Michiel Borkent
46892580c2
[#921, #922] clojure.data.json support, first steps 2021-07-07 21:17:57 +02:00
Michiel Borkent
b95a40c4f2 sci docs [skip ci] 2021-07-07 16:16:29 +02:00
Bob
b53be25b94
[#817] add crispin to lib tests and projects.md (#918)
* add crispin to lib tests and projects.md

* add a missing line in crispin example
2021-07-07 10:01:36 +02:00
Michiel Borkent
4c0578c56c CHANGELOGS [skip ci] 2021-07-05 21:27:54 +02:00
Michiel Borkent
789b8f701e deps.clj update 2021-07-05 21:27:54 +02:00
Bob
097e45d180
[#877] add omniconf lib tests 2021-07-05 21:12:11 +02:00
Michiel Borkent
f47f8b9ad1 Catch up with clojure CLI 2021-07-05 18:45:16 +02:00
Michiel Borkent
277029caae [#914] Fix failing test 2021-07-05 18:26:29 +02:00
Michiel Borkent
2dd18e7cc6 Failing test, fix later 2021-07-05 00:05:48 +02:00
Michiel Borkent
a7d669b47b Fix tests 2021-07-04 22:27:14 +02:00
Michiel Borkent
432680b2f3 [#914] Fix cache dir 2021-07-04 22:18:16 +02:00
Michiel Borkent
1efed2c3c7 minor help edit [skip ci] 2021-07-04 20:41:09 +02:00
Michiel Borkent
3cf3a83c49 [#914] clojure with :dir option doesn't resolve deps in :dir (2) 2021-07-04 12:16:16 +02:00
Michiel Borkent
9eb3c8189c CHANGELOG [skip ci] 2021-07-04 11:47:28 +02:00
Michiel Borkent
b809dd55e8 [#914] clojure with :dir option doesn't resolve deps in :dir 2021-07-04 11:45:51 +02:00
Bob
a542227442
add examples for #324 and #369 [skip ci] (#911)
* add examples for:
- checking stdin for available input
- using data.xml lib

* fix some string contents left over from an XML change
2021-07-03 23:53:58 +02:00
Bob
47bcb4be5e
add heap size and 'expert' flags to help text (#908) 2021-06-30 18:21:35 +02:00
Michiel Borkent
42dffdad84 doc [skip ci] 2021-06-29 23:39:07 +02:00
Michiel Borkent
ac957dada4 doc [skip ci] 2021-06-29 23:38:21 +02:00
Michiel Borkent
9fa5b600d9 doc [skip ci] 2021-06-29 23:37:29 +02:00
Michiel Borkent
000e88f0c6 sci: minor cleanup 2021-06-28 18:19:59 +02:00
Michiel Borkent
c447bc3f2c Revert last cleanup 2021-06-27 23:46:04 +02:00
Michiel Borkent
9acf8145d0 sci: minor cleanup 2021-06-27 23:24:45 +02:00
Michiel Borkent
07c9f58cf8 sci: minor cleanups 2021-06-27 23:14:56 +02:00
Michiel Borkent
98ab1338ab sci: refactor error reporting structure 2021-06-27 16:31:14 +02:00
Michiel Borkent
4133c9f562 sci [skip ci] 2021-06-25 12:53:09 +02:00
Bob
16911a54f0
add more windows testing (#902)
- add default test selector to skip "windows only" tests
- in cases where the differences between *nix shell and windows shell
  make the test very messy, add a separate "windows only" test
- make more tests work on Windows
2021-06-24 22:34:57 +02:00
Michiel Borkent
6843eb6d2e sci: minor cleanup [skip ci] 2021-06-24 15:09:50 +02:00
Michiel Borkent
e42603dac0 example [skip ci] 2021-06-24 13:22:34 +02:00
Michiel Borkent
c7942badfb sci: issue 575 2021-06-24 10:35:06 +02:00
Michiel Borkent
b1992e028d sci: tests [skip ci] 2021-06-22 22:29:10 +02:00
Michiel Borkent
9df9566836 CHANGELOG [skip ci] 2021-06-21 22:41:24 +02:00
Michiel Borkent
ef64e93238 replikativ/hasch tests in CI 2021-06-21 21:58:41 +02:00
Michiel Borkent
e47e77c3d6 Add java.io.FileInputStream 2021-06-21 19:42:04 +02:00
Michiel Borkent
d90f4e7bac
sci: pull apart bindings in eval (#900) 2021-06-21 12:00:53 +02:00
466 changed files with 43438 additions and 3915 deletions

View file

@ -2,5 +2,5 @@
:deps {borkdude/gh-release-artifact
#_{:local/root "../gh-release-artifact"}
{:git/url "https://github.com/borkdude/gh-release-artifact"
:sha "2f8898d84126a4e922c490f8614211a8b0cf67cd"}}
:git/sha "4a9a74f0e50e897c45df8cc70684360eb30fce80"}}
:tasks {release-artifact babashka.release-artifact/release}}

View file

@ -3,541 +3,38 @@
# Check https://circleci.com/docs/2.0/language-clojure/ for more details
#
version: 2.1
# this allows you to use CircleCI's dynamic configuration feature
setup: true
# the continuation orb is required in order to use dynamic configuration
orbs:
continuation: circleci/continuation@0.1.2
# our defined job, and its steps
jobs:
jvm:
setup:
docker:
# specify the version you desire here
- image: circleci/clojure:lein-2.9.1
working_directory: ~/repo
environment:
LEIN_ROOT: "true"
BABASHKA_PLATFORM: linux # could be used in jar name
resource_class: large
- image: cimg/clojure:1.11.1
steps:
- checkout
- run:
name: "Pull Submodules"
name: Bootstrap Babashka
command: |
git submodule init
git submodule update
- restore_cache:
keys:
- v1-dependencies-{{ checksum "project.clj" }}-{{ checksum "deps.edn" }}
# fallback to using the latest cache if no exact match is found
- v1-dependencies-
curl -sLO https://raw.githubusercontent.com/babashka/babashka/master/install
sudo bash install --dir /tmp
- run:
name: Install Clojure
command: |
wget -nc https://download.clojure.org/install/linux-install-1.10.1.447.sh
chmod +x linux-install-1.10.1.447.sh
sudo ./linux-install-1.10.1.447.sh
name: Rename bb binary
command: mv /tmp/bb /tmp/bbb
- run:
name: Install lsof
name: Generate config
command: |
sudo apt-get install lsof
- run:
name: Run JVM tests
command: |
export BABASHKA_FEATURE_JDBC=true
export BABASHKA_FEATURE_POSTGRESQL=true
script/test
script/run_lib_tests
# - run:
# name: Run as tools.deps dependency
# command: |
# .circleci/script/tools.deps
- run:
name: Run as lein command
command: |
.circleci/script/lein
- run:
name: Create uberjar
command: |
mkdir -p /tmp/release
script/uberjar
VERSION=$(cat resources/BABASHKA_VERSION)
jar=target/babashka-$VERSION-standalone.jar
cp $jar /tmp/release
java -jar $jar script/reflection.clj
reflection="babashka-$VERSION-reflection.json"
BABASHKA_EDN=".build/bb.edn" java -jar "$jar" release-artifact "$jar"
BABASHKA_EDN=".build/bb.edn" java -jar "$jar" release-artifact "$reflection"
- store_artifacts:
path: /tmp/release
destination: release
- save_cache:
paths:
- ~/.m2
key: v1-dependencies-{{ checksum "project.clj" }}-{{ checksum "deps.edn" }}
linux:
docker:
- image: circleci/clojure:lein-2.9.1
working_directory: ~/repo
environment:
LEIN_ROOT: "true"
GRAALVM_HOME: /home/circleci/graalvm-ce-java11-21.1.0
BABASHKA_PLATFORM: linux # used in release script
BABASHKA_TEST_ENV: native
BABASHKA_XMX: "-J-Xmx6500m"
resource_class: large
steps:
- checkout
- run:
name: "Pull Submodules"
command: |
git submodule init
git submodule update
- restore_cache:
keys:
- linux-{{ checksum "project.clj" }}-{{ checksum ".circleci/config.yml" }}
- run:
name: Install Clojure
command: |
wget https://download.clojure.org/install/linux-install-1.10.1.447.sh
chmod +x linux-install-1.10.1.447.sh
sudo ./linux-install-1.10.1.447.sh
- run:
name: Install lsof
command: |
sudo apt-get install lsof
- run:
name: Install native dev tools
command: |
sudo apt-get update
sudo apt-get -y install g++ zlib1g-dev
- run:
name: Download GraalVM
command: |
cd ~
if ! [ -d graalvm-ce-java11-21.1.0 ]; then
curl -O -sL https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-21.1.0/graalvm-ce-java11-linux-amd64-21.1.0.tar.gz
tar xzf graalvm-ce-java11-linux-amd64-21.1.0.tar.gz
fi
- run:
name: Build binary
command: |
script/uberjar
script/compile
no_output_timeout: 30m
- run:
name: Run tests
command: |
script/test
script/run_lib_tests
- run:
name: Release
command: |
.circleci/script/release
- persist_to_workspace:
root: /tmp
paths:
- release
- save_cache:
paths:
- ~/.m2
- ~/graalvm-ce-java11-21.1.0
key: linux-{{ checksum "project.clj" }}-{{ checksum ".circleci/config.yml" }}
- store_artifacts:
path: /tmp/release
destination: release
- run:
name: Publish artifact link to Slack
command: |
./bb .circleci/script/publish_artifact.clj || true
linux-static:
docker:
- image: circleci/clojure:lein-2.9.1
working_directory: ~/repo
environment:
LEIN_ROOT: "true"
GRAALVM_HOME: /home/circleci/graalvm-ce-java11-21.1.0
BABASHKA_PLATFORM: linux # used in release script
BABASHKA_TEST_ENV: native
BABASHKA_STATIC: "true"
BABASHKA_MUSL: "true"
BABASHKA_XMX: "-J-Xmx6500m"
resource_class: large
steps:
- checkout
- attach_workspace:
at: /tmp
- run:
name: "Pull Submodules"
command: |
git submodule init
git submodule update
# - run:
# name: "Short circuit on SNAPSHOT"
# command: |
# VERSION=$(cat resources/BABASHKA_VERSION)
# if [[ "$VERSION" == *-SNAPSHOT ]]
# then
# circleci task halt
# fi
- restore_cache:
keys:
- linux-{{ checksum "project.clj" }}-{{ checksum ".circleci/config.yml" }}
- run:
name: Install Clojure
command: |
wget https://download.clojure.org/install/linux-install-1.10.1.447.sh
chmod +x linux-install-1.10.1.447.sh
sudo ./linux-install-1.10.1.447.sh
- run:
name: Install lsof
command: |
sudo apt-get install lsof
- run:
name: Install native dev tools
command: |
sudo apt-get update
sudo apt-get -y install gcc g++ zlib1g-dev
sudo -E script/setup-musl
- run:
name: Download GraalVM
command: |
cd ~
if ! [ -d graalvm-ce-java11-21.1.0 ]; then
curl -O -sL https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-21.1.0/graalvm-ce-java11-linux-amd64-21.1.0.tar.gz
tar xzf graalvm-ce-java11-linux-amd64-21.1.0.tar.gz
fi
- run:
name: Build binary
command: |
script/uberjar
script/compile
no_output_timeout: 30m
- run:
name: Run tests
command: |
script/test
script/run_lib_tests
- run:
name: Release
command: |
.circleci/script/release
- persist_to_workspace:
root: /tmp
paths:
- release
- save_cache:
paths:
- ~/.m2
- ~/graalvm-ce-java11-21.1.0
key: linux-{{ checksum "project.clj" }}-{{ checksum ".circleci/config.yml" }}
- store_artifacts:
path: /tmp/release
destination: release
- run:
name: Publish artifact link to Slack
command: |
./bb .circleci/script/publish_artifact.clj || true
linux-aarch64:
machine:
enabled: true
image: ubuntu-2004:202101-01
resource_class: arm.large
working_directory: ~/repo
environment:
LEIN_ROOT: "true"
GRAALVM_HOME: /home/circleci/graalvm-ce-java11-21.1.0
BABASHKA_PLATFORM: linux # used in release script
BABASHKA_ARCH: aarch64
BABASHKA_TEST_ENV: native
BABASHKA_XMX: "-J-Xmx6500m"
steps:
- checkout
- run:
name: "Pull Submodules"
command: |
git submodule init
git submodule update
- run:
name: "Short circuit on SNAPSHOT"
command: |
VERSION=$(cat resources/BABASHKA_VERSION)
if [[ "$VERSION" == *-SNAPSHOT ]]
then
circleci task halt
fi
- restore_cache:
keys:
- linux-aarch64-{{ checksum "project.clj" }}-{{ checksum ".circleci/config.yml" }}
- run:
name: Install Leiningen
command: |
sudo script/install-leiningen
- run:
name: Install Clojure
command: |
wget https://download.clojure.org/install/linux-install-1.10.1.447.sh
chmod +x linux-install-1.10.1.447.sh
sudo ./linux-install-1.10.1.447.sh
- run:
name: Install lsof
command: |
sudo apt-get install lsof
- run:
name: Install native dev tools
command: |
sudo apt-get update
sudo apt-get -y install gcc g++ zlib1g-dev
- run:
name: Download GraalVM
command: |
cd ~
if ! [ -d graalvm-ce-java11-21.1.0 ]; then
curl -O -sL https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-21.1.0/graalvm-ce-java11-linux-aarch64-21.1.0.tar.gz
tar xzf graalvm-ce-java11-linux-aarch64-21.1.0.tar.gz
fi
- run:
name: Build binary
command: |
script/uberjar
script/compile
no_output_timeout: 30m
- run:
name: Run tests
command: |
script/test
script/run_lib_tests
- run:
name: Release
command: |
.circleci/script/release
- persist_to_workspace:
root: /tmp
paths:
- release
- save_cache:
paths:
- ~/.m2
- ~/graalvm-ce-java11-21.1.0
key: linux-aarch64-{{ checksum "project.clj" }}-{{ checksum ".circleci/config.yml" }}
- store_artifacts:
path: /tmp/release
destination: release
- run:
name: Publish artifact link to Slack
command: |
./bb .circleci/script/publish_artifact.clj || true
linux-aarch64-static:
machine:
enabled: true
image: ubuntu-2004:202101-01
resource_class: arm.large
working_directory: ~/repo
environment:
LEIN_ROOT: "true"
GRAALVM_HOME: /home/circleci/graalvm-ce-java11-21.1.0
BABASHKA_PLATFORM: linux # used in release script
BABASHKA_ARCH: aarch64
BABASHKA_TEST_ENV: native
BABASHKA_XMX: "-J-Xmx6500m"
BABASHKA_STATIC: "true"
steps:
- checkout
- run:
name: "Pull Submodules"
command: |
git submodule init
git submodule update
# - run:
# name: "Short circuit on SNAPSHOT"
# command: |
# VERSION=$(cat resources/BABASHKA_VERSION)
# if [[ "$VERSION" == *-SNAPSHOT ]]
# then
# circleci task halt
# fi
- restore_cache:
keys:
- linux-aarch64-{{ checksum "project.clj" }}-{{ checksum ".circleci/config.yml" }}
- run:
name: Install Leiningen
command: |
sudo script/install-leiningen
- run:
name: Install Clojure
command: |
wget https://download.clojure.org/install/linux-install-1.10.1.447.sh
chmod +x linux-install-1.10.1.447.sh
sudo ./linux-install-1.10.1.447.sh
- run:
name: Install lsof
command: |
sudo apt-get install lsof
- run:
name: Install native dev tools
command: |
sudo apt-get update
sudo apt-get -y install gcc g++ zlib1g-dev
# sudo -E script/setup-musl
- run:
name: Download GraalVM
command: |
cd ~
if ! [ -d graalvm-ce-java11-21.1.0 ]; then
curl -O -sL https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-21.1.0/graalvm-ce-java11-linux-aarch64-21.1.0.tar.gz
tar xzf graalvm-ce-java11-linux-aarch64-21.1.0.tar.gz
fi
- run:
name: Build binary
command: |
script/uberjar
script/compile
no_output_timeout: 30m
- run:
name: Run tests
command: |
script/test
script/run_lib_tests
- run:
name: Release
command: |
.circleci/script/release
- persist_to_workspace:
root: /tmp
paths:
- release
- save_cache:
paths:
- ~/.m2
- ~/graalvm-ce-java11-21.1.0
key: linux-aarch64-{{ checksum "project.clj" }}-{{ checksum ".circleci/config.yml" }}
- store_artifacts:
path: /tmp/release
destination: release
- run:
name: Publish artifact link to Slack
command: |
./bb .circleci/script/publish_artifact.clj || true
mac:
macos:
xcode: "12.0.0"
environment:
MACOSX_DEPLOYMENT_TARGET: 10.13 # 10.12 is EOL
GRAALVM_HOME: /Users/distiller/graalvm-ce-java11-21.1.0/Contents/Home
BABASHKA_PLATFORM: macos # used in release script
BABASHKA_TEST_ENV: native
BABASHKA_XMX: "-J-Xmx6500m"
resource_class: large
steps:
- checkout
- run:
name: "Pull Submodules"
command: |
git submodule init
git submodule update
- restore_cache:
keys:
- mac-{{ checksum "project.clj" }}-{{ checksum ".circleci/config.yml" }}
- run:
name: Install Clojure
command: |
script/install-clojure /usr/local
- run:
name: Install Leiningen
command: |
script/install-leiningen
- run:
name: Download GraalVM
command: |
cd ~
ls -la
if ! [ -d graalvm-ce-java11-21.1.0 ]; then
curl -O -sL https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-21.1.0/graalvm-ce-java11-darwin-amd64-21.1.0.tar.gz
tar xzf graalvm-ce-java11-darwin-amd64-21.1.0.tar.gz
fi
- run:
name: Build binary
command: |
export PATH=$GRAALVM_HOME/bin:$PATH
script/uberjar
script/compile
no_output_timeout: 30m
- run:
name: Run tests
command: |
export PATH=$GRAALVM_HOME/bin:$PATH
script/test
script/run_lib_tests
- run:
name: Release
command: |
.circleci/script/release
- save_cache:
paths:
- ~/.m2
- ~/graalvm-ce-java11-21.1.0
key: mac-{{ checksum "project.clj" }}-{{ checksum ".circleci/config.yml" }}
- store_artifacts:
path: /tmp/release
destination: release
- run:
name: Publish artifact link to Slack
command: |
./bb .circleci/script/publish_artifact.clj || true
deploy:
resource_class: large
docker:
- image: circleci/clojure:lein-2.9.1
working_directory: ~/repo
environment:
LEIN_ROOT: "true"
steps:
- checkout
- run:
name: "Pull Submodules"
command: |
git submodule init
git submodule update
- restore_cache:
keys:
- v1-dependencies-{{ checksum "project.clj" }}
# fallback to using the latest cache if no exact match is found
- v1-dependencies-
- run: .circleci/script/deploy
- save_cache:
paths:
- ~/.m2
key: v1-dependencies-{{ checksum "project.clj" }}
docker:
docker:
- image: circleci/buildpack-deps:stretch
steps:
- checkout
- attach_workspace:
at: /tmp
- setup_remote_docker:
version: 19.03.12
- run:
name: Build Docker image
command: .circleci/script/docker
/tmp/bbb .circleci/script/gen_ci.clj > generated_config.yml
- continuation/continue:
configuration_path: generated_config.yml
# our single workflow, that triggers the setup job defined above
workflows:
version: 2
ci:
setup:
jobs:
- jvm
- linux
- linux-static
- mac
- linux-aarch64
- linux-aarch64-static
- deploy:
filters:
branches:
only: master
requires:
- jvm
- linux
- mac
- docker:
filters:
branches:
only: master
requires:
- linux
- linux-static
- setup

View file

@ -1,46 +0,0 @@
#!/usr/bin/env bash
set -eo pipefail
image_name="babashka/babashka"
image_tag=$(cat resources/BABASHKA_VERSION)
latest_tag="latest"
if [[ $image_tag =~ SNAPSHOT$ ]]; then
echo "This is a snapshot version"
snapshot="true"
else
echo "This is a non-snapshot version"
snapshot="false"
fi
if [ -z "$CIRCLE_PULL_REQUEST" ] && [ "$CIRCLE_BRANCH" = "master" ]; then
echo "Building Docker image $image_name:$image_tag"
echo "$DOCKERHUB_PASS" | docker login -u "$DOCKERHUB_USER" --password-stdin
tar zxvf "/tmp/release/babashka-${image_tag}-linux-amd64.tar.gz"
docker build -t "$image_name" -f Dockerfile.ci .
docker tag "$image_name:$latest_tag" "$image_name:$image_tag"
rm -f bb
if [[ $snapshot == "false" ]]; then
tar zxvf "/tmp/release/babashka-${image_tag}-linux-amd64-static.tar.gz"
docker build -t "$image_name:alpine" -f Dockerfile.alpine .
docker tag "$image_name:alpine" "$image_name:$image_tag-alpine"
fi
# we only update latest when it's not a SNAPSHOT version
if [ "false" = "$snapshot" ]; then
echo "Pushing image $image_name:$latest_tag"
docker push "$image_name:$latest_tag"
echo "Pushing image $image_name:alpine"
docker push "$image_name:alpine"
fi
# we update the version tag, even if it's a SNAPSHOT version
echo "Pushing image $image_name:$image_tag"
docker push "$image_name:$image_tag"
if [[ $snapshot == "false" ]]; then
docker push "$image_name:$image_tag-alpine"
fi
else
echo "Not publishing Docker image"
fi
exit 0;

125
.circleci/script/docker.clj Normal file
View file

@ -0,0 +1,125 @@
(require '[babashka.fs :as fs]
'[babashka.process :as proc]
'[clojure.string :as str])
(import '[java.time Instant])
(defn read-env
([k]
(read-env k nil))
([k default]
(or (System/getenv k)
default)))
(def image-name "babashka/babashka")
(def ghcr-image-name "ghcr.io/babashka/babashka")
(def image-tag (str/trim (slurp "resources/BABASHKA_VERSION")))
(def latest-tag "latest")
(def platforms (read-env "PLATFORMS" "linux/amd64"))
(def circle-repository-url (read-env "CIRCLE_REPOSITORY_URL"))
(def label-args
["--label" "'org.opencontainers.image.description=Native, fast starting Clojure interpreter for scripting'"
"--label" "org.opencontainers.image.title=Babashka"
"--label" (str "org.opencontainers.image.created=" (Instant/now))
"--label" (str "org.opencontainers.image.url=" circle-repository-url)
"--label" (str "org.opencontainers.image.documentation=" circle-repository-url)
"--label" (str "org.opencontainers.image.source=" circle-repository-url)
"--label" (str "org.opencontainers.image.revision=" (read-env "CIRCLE_SHA1"))
"--label"
(format "org.opencontainers.image.ref.name=%s:%s"
(read-env "CIRCLE_TAG")
(read-env "CIRCLE_BRANCH"))
"--label" (str "org.opencontainers.image.version=" image-tag)])
(def snapshot? (str/includes? image-tag "SNAPSHOT"))
(defn exec
[cmd]
(-> cmd
(proc/process {:out :inherit :err :inherit})
(proc/check)))
(defn docker-login
[username password]
(exec ["docker" "login" "-u" username "-p" password]))
(defn docker-login-ghcr
[username password]
(exec ["docker" "login" "ghcr.io" "-u" username "-p" password]))
;; TODO: Remove this when Dockerhub goes off
(defn build-push
[image-tag platform docker-file]
(println (format "Building and pushing %s Docker image(s) %s:%s"
platform
image-name
image-tag))
(let [base-cmd ["docker" "buildx" "build"
"-t" (str image-name ":" image-tag)
"--platform" platform
"--progress" "plain"
"--push"
"-f" docker-file]]
(exec (concat base-cmd label-args ["."]))))
(defn build-push-ghcr
[image-tag platform docker-file]
(println (format "Building and pushing %s Docker image(s) %s:%s to GHCR"
platform
ghcr-image-name
image-tag))
(let [base-cmd ["docker" "buildx" "build"
"-t" (str ghcr-image-name ":" image-tag)
"--platform" platform
"--progress" "plain"
"--push"
"-f" docker-file]]
(exec (concat base-cmd label-args ["."]))))
(defn build-push-images
[]
(doseq [platform (str/split platforms #",")]
(let [tarball-platform (str/replace platform #"\/" "-")
tarball-platform (if (= "linux-arm64" tarball-platform)
"linux-aarch64-static"
tarball-platform)
tarball-path (format "/tmp/release/babashka-%s-%s.tar.gz"
image-tag
tarball-platform)]
(fs/create-dirs platform)
(exec ["tar" "zxvf" tarball-path "-C" platform])
; this overwrites, but this is to work around having built the uberjar/metabom multiple times
(fs/copy (format "/tmp/release/%s-metabom.jar" tarball-platform) "metabom.jar" {:replace-existing true})))
(build-push image-tag platforms "Dockerfile.ci")
(build-push-ghcr image-tag platforms "Dockerfile.ci")
(when-not snapshot?
(build-push latest-tag platforms "Dockerfile.ci")
(build-push-ghcr latest-tag platforms "Dockerfile.ci")))
(defn build-push-alpine-images
"Build alpine image for linux-amd64 only (no upstream arm64 support yet)"
[]
(exec ["tar" "zxvf" (str "/tmp/release/babashka-" image-tag "-linux-amd64-static.tar.gz")])
(build-push (str image-tag "-alpine") "linux/amd64" "Dockerfile.alpine")
(build-push-ghcr (str image-tag "-alpine") "linux/amd64" "Dockerfile.alpine")
(when-not snapshot?
(build-push "alpine" "linux/amd64" "Dockerfile.alpine")
(build-push-ghcr "alpine" "linux/amd64" "Dockerfile.alpine")))
(when (= *file* (System/getProperty "babashka.file"))
(if (and (nil? (read-env "CIRCLE_PULL_REQUEST"))
(= "master" (read-env "CIRCLE_BRANCH")))
(do
(if snapshot?
(println "This is a snapshot version")
(println "This is a non-snapshot version"))
(docker-login (read-env "DOCKERHUB_USER") (read-env "DOCKERHUB_PASS"))
(docker-login-ghcr (read-env "CONTAINER_REGISTRY_USER") (read-env "BB_GHCR_TOKEN"))
(build-push-images)
(build-push-alpine-images))
(println "Not publishing docker image(s).")))

281
.circleci/script/gen_ci.clj Normal file
View file

@ -0,0 +1,281 @@
(ns gen-ci
(:require
[babashka.tasks :as tasks]
[clj-yaml.core :as yaml]
[clojure.string :as str]
[flatland.ordered.map :refer [ordered-map]]))
(def graalvm-version "24")
(defn run
([cmd-name cmd]
(run cmd-name cmd nil))
([cmd-name cmd no-output-timeout]
(let [base {:run {:name cmd-name
:command cmd}}]
(if no-output-timeout
(assoc-in base [:run :no_output_timeout] no-output-timeout)
base))))
(defn gen-steps
[shorted? steps]
(if shorted?
[(run "Shorted" "echo 'Skipping Run'")]
steps))
(defn gen-job
[shorted? conf]
(if shorted?
(-> conf
(dissoc :machine :macos)
(assoc :resource_class "small" :docker [{:image "ubuntu:latest"}]))
conf))
(defn pull-submodules
[]
(run "Pull Submodules" "git submodule init\ngit submodule update"))
(defn deploy
[shorted?]
(gen-job shorted?
(ordered-map
:resource_class "large"
:docker [{:image "circleci/clojure:lein-2.9.8"}]
:working_directory "~/repo"
:environment {:LEIN_ROOT "true"}
:steps (gen-steps
shorted?
[:checkout
(pull-submodules)
{:restore_cache {:keys ["v1-dependencies-{{ checksum \"project.clj\" }}"
"v1-dependencies-"]}}
{:run ".circleci/script/deploy"}
{:save_cache {:paths ["~/.m2"]
:key "v1-dependencies-{{ checksum \"project.clj\" }}"}}]))))
(defn docker
[shorted?]
(gen-job
shorted?
(ordered-map
:machine {:image "ubuntu-2004:2024.05.1"}
:steps
(gen-steps
shorted?
[:checkout
(pull-submodules)
"setup-docker-buildx"
{:attach_workspace {:at "/tmp"}}
(run "Build uberjar" "script/uberjar")
{:run
{:name "Build Docker image"
:environment {:PLATFORMS "linux/amd64,linux/arm64"}
:command
"java -jar ./target/babashka-$(cat resources/BABASHKA_VERSION)-standalone.jar .circleci/script/docker.clj"}}]))))
(defn jvm
[shorted? graalvm-home]
(gen-job
shorted?
(ordered-map
:docker [{:image "circleci/clojure:openjdk-11-lein-2.9.8-bullseye"}]
:working_directory "~/repo"
:environment {:LEIN_ROOT "true"
:BABASHKA_PLATFORM "linux"
:GRAALVM_VERSION graalvm-version
:GRAALVM_HOME graalvm-home
:BABASHKA_TEST_ENV "jvm"
:BABASHKA_SHA (System/getenv "CIRCLE_SHA1")}
:resource_class "large"
:steps
(gen-steps
shorted?
[:checkout
(pull-submodules)
{:restore_cache {:keys ["v1-dependencies-{{ checksum \"project.clj\" }}-{{ checksum \"deps.edn\" }}"
"v1-dependencies-"]}}
(run "Install Clojure" "sudo script/install-clojure")
(run "Download GraalVM" "script/install-graalvm")
(run
"Run JVM tests"
"export BABASHKA_FEATURE_JDBC=true
export BABASHKA_FEATURE_POSTGRESQL=true
script/test\nscript/run_lib_tests")
(run
"Create uberjar"
"mkdir -p /tmp/release
script/uberjar
VERSION=$(cat resources/BABASHKA_VERSION)
jar=target/babashka-$VERSION-standalone.jar
cp $jar /tmp/release
export PATH=$GRAALVM_HOME/bin:$PATH
export JAVA_HOME=$GRAALVM_HOME
java -jar $jar script/reflection.clj
reflection=\"babashka-$VERSION-reflection.json\"
java -jar \"$jar\" --config .build/bb.edn --deps-root . release-artifact \"$jar\"
java -jar \"$jar\" --config .build/bb.edn --deps-root . release-artifact \"$reflection\"")
{:store_artifacts {:path "/tmp/release"
:destination "release"}}
{:save_cache {:paths ["~/.m2"]
:key "v1-dependencies-{{ checksum \"project.clj\" }}-{{ checksum \"deps.edn\" }}"}}]))))
(defn unix
[shorted? static? musl? arch executor-conf resource-class graalvm-home platform]
(let [env {:LEIN_ROOT "true"
:GRAALVM_VERSION graalvm-version
:GRAALVM_HOME graalvm-home
:BABASHKA_PLATFORM (if (= "mac" platform)
"macos"
platform)
:BABASHKA_TEST_ENV "native"
:BABASHKA_XMX "-J-Xmx6500m"
:BABASHKA_SHA (System/getenv "CIRCLE_SHA1")}
env (if (= "aarch64" arch)
(assoc env :BABASHKA_ARCH arch)
env)
env (if static?
(assoc env :BABASHKA_STATIC "true")
env)
env (if musl?
(assoc env :BABASHKA_MUSL "true")
env)
env (if (= "mac" platform)
(assoc env :MACOSX_DEPLOYMENT_TARGET 10.13)
env)
base-install-cmd "sudo apt-get update\nsudo apt-get -y install build-essential zlib1g-dev"
cache-key (format "%s-%s{{ checksum \"project.clj\" }}-{{ checksum \".circleci/config.yml\" }}"
platform
(if (= "aarch64" arch)
"aarch64-"
""))]
(gen-job shorted?
(merge
executor-conf
(ordered-map
:working_directory "~/repo"
:environment env
:resource_class resource-class
:steps (gen-steps shorted?
(filter some?
[:checkout
(when (contains? #{"linux" "linux-aarch64"} platform)
(run "Check max glibc version" "script/check_glibc.sh"))
{:attach_workspace {:at "/tmp"}}
(run "Pull Submodules" "git submodule init\ngit submodule update")
{:restore_cache
{:keys [cache-key]}}
(when (= "mac" platform)
(run "Install Rosetta" "sudo /usr/sbin/softwareupdate --install-rosetta --agree-to-license"))
(run "Install Clojure" "sudo script/install-clojure")
(when (= "mac" platform)
(run "Install Leiningen" "script/install-leiningen"))
(when (not= "mac" platform)
(run "Install native dev tools"
(if (and static? musl? (not= "aarch64" arch))
(str base-install-cmd "\nsudo -E script/setup-musl")
base-install-cmd)))
(run "Download GraalVM" "script/install-graalvm")
#_(run "Download iprof" "curl -sLO 'https://github.com/babashka/pgo-profiles/releases/download/2023.10.11/default.iprof'")
(run "Build binary" (if (= "aarch64" arch)
"script/uberjar\nscript/compile -H:PageSize=64K # --pgo=default.iprof"
"script/uberjar\nscript/compile # --pgo=default.iprof") "30m")
(run "Release" ".circleci/script/release")
{:persist_to_workspace {:root "/tmp"
: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
{:paths ["~/.m2" "~/graalvm"]
:key cache-key}}
{:store_artifacts {:path "/tmp/release"
:destination "release"}}
(run "Publish artifact link to Slack"
"./bb .circleci/script/publish_artifact.clj || true")])))))))
(defn make-config
[shorted?]
(let [docker-executor-conf {:docker [{:image "circleci/clojure:openjdk-11-lein-2.9.8-bullseye"}]}
machine-executor-conf {:machine {:image "ubuntu-2004:2024.05.1"}}
mac-executor-conf {:macos {:xcode "13.4.1"}}
linux-graalvm-home (str "/home/circleci/graalvm-" graalvm-version)
mac-graalvm-home (format "/Users/distiller/graalvm-%s/Contents/Home" graalvm-version)]
(ordered-map
:version 2.1
:commands
{:setup-docker-buildx
{:steps
[{:run
{:name "Create multi-platform capabale buildx builder"
:command
"docker run --privileged --rm tonistiigi/binfmt --install all\ndocker buildx create --name ci-builder --use"}}]}}
:jobs (ordered-map
:jvm (jvm shorted? linux-graalvm-home)
:linux (unix shorted? false false "amd64" docker-executor-conf "large" linux-graalvm-home "linux")
:linux-static
(unix shorted? true true "amd64" docker-executor-conf "large" linux-graalvm-home "linux")
:linux-aarch64-static
(unix shorted? true false "aarch64" machine-executor-conf "arm.large" linux-graalvm-home "linux")
:mac (unix shorted? false false "amd64" mac-executor-conf "macos.m1.medium.gen1" mac-graalvm-home "mac")
:deploy (deploy shorted?)
:docker (docker shorted?))
:workflows (ordered-map
:version 2
:ci {:jobs ["jvm"
"linux"
"linux-static"
"mac"
"linux-aarch64-static"
{:deploy {:filters {:branches {:only "master"}}
:requires ["jvm" "linux"]}}
{:docker {:filters {:branches {:only "master"}}
:requires ["linux" "linux-static" "linux-aarch64-static"]}}]}))))
(def skip-config
{:skip-if-only [#".*.md$"
#"^logo\/.*$"]})
(defn get-changes
[]
(-> (tasks/shell {:out :string} "git diff --name-only HEAD~1")
(:out)
(str/split-lines)))
(defn irrelevant-change?
[change regexes]
(some? (some #(re-matches % change) regexes)))
(defn relevant?
[change-set regexes]
(some? (some #(not (irrelevant-change? % regexes)) change-set)))
(defn main
[]
(let [{:keys [skip-if-only]} skip-config
changed-files (get-changes)
conf (make-config (not (relevant? changed-files skip-if-only)))]
(println (yaml/generate-string conf
:dumper-options
{:flow-style :block}))))
(when (= *file* (System/getProperty "babashka.file"))
(main))
(comment
(main)
(def regexes
[#".*.md$"
#".*.clj$" ; ignore clojure files
#"^logo\/.*$"])
(:out (tasks/shell {:out :string} "ls"))
(irrelevant-change? "src/file.png" regexes)
(re-matches #".*.clj$" "src/file.clj.dfff")
(re-matches #"^logo\/.*$" "logo/foo/bar.jpg")
(relevant? ["src/file.clj"] regexes))

View file

@ -6,9 +6,7 @@ cp bb /tmp/release
VERSION=$(cat resources/BABASHKA_VERSION)
cd /tmp/release
mkdir -p /tmp/bb_size
./bb '(spit "/tmp/bb_size/size" (.length (io/file "bb")))'
## release binary as tar.gz archive
@ -18,13 +16,22 @@ if [ "$BABASHKA_STATIC" = "true" ]; then
arch="$arch-static"
fi
# because circle won't allow the same file to be saved/restored in the same workspace concurrently
cp metabom.jar "/tmp/release/$BABASHKA_PLATFORM-$arch-metabom.jar"
cd /tmp/release
mkdir -p /tmp/bb_size
./bb '(spit "/tmp/bb_size/size" (.length (io/file "bb")))'
archive="babashka-$VERSION-$BABASHKA_PLATFORM-$arch.tar.gz"
tar zcvf "$archive" bb # bbk
cd -
BABASHKA_EDN=".build/bb.edn" ./bb release-artifact "/tmp/release/$archive"
if [ "$BABASHKA_RELEASE" = "true" ]; then
./bb --config .build/bb.edn --deps-root . release-artifact "/tmp/release/$archive"
fi
## cleanup

42
.cirrus.yml Normal file
View file

@ -0,0 +1,42 @@
macos_instance:
image: ghcr.io/cirruslabs/macos-monterey-base:latest
task:
skip: "changesIncludeOnly('logo/*', '**.md')"
env:
LEIN_ROOT: "true"
GRAALVM_VERSION: "24"
GRAALVM_HOME: ${HOME}/graalvm-${GRAALVM_VERSION}/Contents/Home
BABASHKA_PLATFORM: macos # used in release script
BABASHKA_ARCH: aarch64
BABASHKA_TEST_ENV: native
BABASHKA_XMX: "-J-Xmx6500m"
GITHUB_TOKEN: ENCRYPTED[d6ff8cdc392157f211c754fa0763875434d1bfde0c00a05e48ba9470003a76c14c9213adb80623f81e13f2f0fa8fbd57]
script: |
git submodule init
git submodule update
sudo script/install-clojure
sudo script/install-leiningen
script/install-graalvm
export PATH=$GRAALVM_HOME/bin:$PATH
export JAVA_HOME=$GRAALVM_HOME
sudo /usr/sbin/softwareupdate --install-rosetta --agree-to-license
java -version
export BABASHKA_SHA=$(git rev-parse HEAD)
script/uberjar
# curl -sLO 'https://github.com/babashka/pgo-profiles/releases/download/2023.10.11/default.iprof'
script/compile # --pgo=default.iprof
# script/test
# script/run_lib_tests
VERSION=$(cat resources/BABASHKA_VERSION)
arch=${BABASHKA_ARCH:-amd64}
archive="babashka-$VERSION-$BABASHKA_PLATFORM-$arch.tar.gz"
tar zcvf "$archive" bb
./bb --config .build/bb.edn --deps-root . release-artifact "$archive" || true
binaries_artifacts:
path: "babashka-*.tar.gz"

View file

@ -0,0 +1 @@
{:lint-as {babashka.fs/with-temp-dir clojure.core/let}}

View file

@ -0,0 +1 @@
{:hooks {:macroexpand {sci.core/copy-ns sci.core/copy-ns}}}

View file

@ -0,0 +1,9 @@
(ns sci.core)
(defmacro copy-ns
([ns-sym sci-ns]
`(copy-ns ~ns-sym ~sci-ns nil))
([ns-sym sci-ns opts]
`[(quote ~ns-sym)
~sci-ns
(quote ~opts)]))

View file

@ -1,7 +1,9 @@
{:lint-as {me.raynes.conch/let-programs clojure.core/let
{:config-paths ["babashka/sci"]
:lint-as {me.raynes.conch/let-programs clojure.core/let
babashka.impl.File/gen-wrapper-fn clojure.core/def
babashka.impl.Pattern/gen-wrapper-fn clojure.core/def
babashka.impl.File/gen-wrapper-fn-2 clojure.core/def
babashka.impl.Pattern/gen-wrapper-fn-2 clojure.core/def
babashka.impl.Pattern/gen-constants clojure.core/declare}
:linters {:unsorted-required-namespaces {:level :warning}}}
:linters {:unsorted-required-namespaces {:level :warning}}
:hooks {:analyze-call {clojure.core/requiring-resolve hooks.mine/req-resolve}}}

View file

@ -0,0 +1,5 @@
{:lint-as
{rewrite-clj.zip/subedit-> clojure.core/->
rewrite-clj.zip/subedit->> clojure.core/->>
rewrite-clj.zip/edit-> clojure.core/->
rewrite-clj.zip/edit->> clojure.core/->>}}

2
.dir-locals.el Normal file
View file

@ -0,0 +1,2 @@
((clojure-mode
(cider-clojure-cli-aliases . "test")))

View file

@ -12,7 +12,8 @@ test/
.gitmodules
appveyor.yml
CHANGES.md
deps.edn
Dockerfile
LICENSE
README.md
.cpcache/
target/

View file

@ -7,6 +7,9 @@ assignees: ''
---
[ To keep development of this project going, consider sponsoring. If you are
already a sponsor, thank you! ]
**version**
[ Please specify which version of babashka you're using. You can find this with `babashka --version`. The documentation on the master branch may be ahead of the most released version. ]
@ -27,5 +30,3 @@ new binary when the issue is resolved. ]
**expected behavior**
[ What is the behavior you expected to see? Please provide a minimal working example ]
[ Optional: if you or your organization is sponsoring this project, please write "**Sponsor**" in this ticket for higher priority. ]

View file

@ -7,6 +7,9 @@ assignees: ''
---
[ To keep development of this project going, consider sponsoring. If you are
already a sponsor, thank you! ]
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
@ -18,5 +21,3 @@ A clear and concise description of any alternative solutions or features you've
**Additional context**
Add any other context or screenshots about the feature request here.
[ Optional: if you or your organization is sponsoring this project, please write "**Sponsor**" in this ticket for higher priority _after vetting_. ]

9
.github/pull_request_template.md vendored Normal file
View file

@ -0,0 +1,9 @@
Please answer the following questions and leave the below in as part of your PR.
- [ ] I have read the [developer documentation](https://github.com/babashka/babashka/blob/master/doc/dev.md).
- [ ] This PR corresponds to an [issue with a clear problem statement](https://github.com/babashka/babashka/blob/master/doc/dev.md#start-with-an-issue-before-writing-code).
- [ ] This PR contains a [test](https://github.com/babashka/babashka/blob/master/doc/dev.md#tests) to prevent against future regressions
- [ ] I have updated the [CHANGELOG.md](https://github.com/babashka/babashka/blob/master/CHANGELOG.md) file with a description of the addressed issue.

99
.github/workflows/build-windows.yml vendored Normal file
View file

@ -0,0 +1,99 @@
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: 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
shell: cmd
run: |
set BABASHKA_CLASSPATH=
set BABASHKA_TEST_ENV=native
call script/test.bat :windows
call script/run_lib_tests.bat

View file

@ -2,82 +2,75 @@ name: build
on:
push:
paths-ignore:
- "**.md"
- "logo/**"
branches:
- master
pull_request:
paths-ignore:
- "**.md"
- "logo/**"
branches:
- master
# TODO: Add deploy if needed
jobs:
scratch:
if: "!contains(github.event.head_commit.message, 'skip ci')"
runs-on: ubuntu-18.04
steps:
- name: Git checkout
uses: actions/checkout@v1
with:
fetch-depth: 1
submodules: 'true'
- name: Scratch
run: |
echo "Scratch"
jvm:
if: "!contains(github.event.head_commit.message, 'skip ci')"
# ubuntu 18.04 comes with lein + java8 installed
runs-on: ubuntu-18.04
if: ${{ false }} # Disabled
# if: "!contains(github.event.head_commit.message, 'skip ci')"
runs-on: ubuntu-latest
env:
LEIN_ROOT: "true"
BABASHKA_PLATFORM: linux # could be used in jar name
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
BABASHKA_SHA: ${{ github.sha }}
steps:
- name: Git checkout
uses: actions/checkout@v1
uses: actions/checkout@v2
with:
fetch-depth: 1
submodules: 'true'
- name: Cache deps
uses: actions/cache@v1
uses: actions/cache@v4
id: cache-deps
with:
path: ~/.m2/repository
key: ${{ runner.os }}-maven-${{ hashFiles('project.clj') }}
restore-keys: |
${{ runner.os }}-maven-
restore-keys: ${{ runner.os }}-maven-
- name: Cache GraalVM
uses: actions/cache@v1
id: cache-graalvm
- name: Prepare java
uses: actions/setup-java@v2
with:
path: ~/graalvm-ce-java11-21.1.0
key: ${{ runner.os }}-graalvm-21.1.0
restore-keys: |
${{ runner.os }}-graalvm-21.1.0
distribution: 'adopt-hotspot'
java-version: '19'
- name: Download GraalVM
run: |
cd ~
if ! [ -d graalvm-ce-java11-21.1.0 ]; then
curl -O -sL https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-21.1.0/graalvm-ce-java11-linux-amd64-21.1.0.tar.gz
tar xzf graalvm-ce-java11-linux-amd64-21.1.0.tar.gz
fi
- name: Fetch deps
if: steps.cache-deps.outputs.cache-hit != 'true'
run: |
lein deps
- name: Install clojure tools
uses: DeLaGuardo/setup-clojure@5.0
with:
cli: 1.10.3.1040
lein: 2.9.8
- name: Run tests
env:
BABASHKA_FEATURE_JDBC: "true"
BABASHKA_FEATURE_POSTGRESQL: "true"
run: |
export GRAALVM_HOME="$HOME/graalvm-ce-java11-21.1.0"
script/test
- name: Test libraries
run: |
export GRAALVM_HOME="$HOME/graalvm-ce-java11-21.1.0"
sudo script/install-clojure
script/run_lib_tests
- name: Build uberjar
run: |
export GRAALVM_HOME="$HOME/graalvm-ce-java11-21.1.0"
mkdir -p /tmp/release
script/uberjar
VERSION=$(cat resources/BABASHKA_VERSION)
jar=target/babashka-$VERSION-standalone.jar
cp $jar /tmp/release
java -jar $jar script/reflection.clj
reflection="babashka-$VERSION-reflection.json"
java -jar "$jar" --config .build/bb.edn --deps-root . release-artifact "$jar"
java -jar "$jar" --config .build/bb.edn --deps-root . release-artifact "$reflection"
- name: Babashka version
id: babashka-version
@ -85,66 +78,79 @@ jobs:
BABASHKA_VERSION=$(cat resources/BABASHKA_VERSION)
echo "##[set-output name=version;]${BABASHKA_VERSION}"
- name: Reflection artifact
run: |
cp reflection.json babashka-${{ steps.babashka-version.outputs.version }}-reflection.json
- uses: actions/upload-artifact@v1
- uses: actions/upload-artifact@v4
with:
name: jar
name: babashka-${{ steps.babashka-version.outputs.version }}-standalone.jar
path: target/babashka-${{ steps.babashka-version.outputs.version }}-standalone.jar
- uses: actions/upload-artifact@v1
with:
name: reflection.json
path: babashka-${{ steps.babashka-version.outputs.version }}-reflection.json
linux:
native:
if: "!contains(github.event.head_commit.message, 'skip ci')"
needs: [jvm]
runs-on: ubuntu-18.04
strategy:
matrix:
include:
- os: macos-13
name: macos
static: false
#- os: ubuntu-latest
# name: linux
# static: false
#- os: ubuntu-latest
# name: linux
# static: true
runs-on: ${{ matrix.os }}
env:
LEIN_ROOT: "true"
GRAALVM_VERSION: "24"
BABASHKA_PLATFORM: ${{ matrix.name }} # used in release script
BABASHKA_TEST_ENV: native
BABASHKA_XMX: "-J-Xmx6500m"
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
BABASHKA_SHA: ${{ github.sha }}
steps:
- name: Git checkout
uses: actions/checkout@v1
uses: actions/checkout@v2
with:
fetch-depth: 1
submodules: 'true'
- uses: actions/download-artifact@v1
with:
name: jar
path: .
- uses: actions/download-artifact@v1
with:
name: reflection.json
path: .
- name: Cache deps
uses: actions/cache@v1
uses: actions/cache@v4
id: cache-deps
with:
path: ~/.m2/repository
key: ${{ runner.os }}-maven-${{ hashFiles('project.clj') }}
restore-keys: |
${{ runner.os }}-maven-
restore-keys: ${{ runner.os }}-maven-
- name: Cache GraalVM
uses: actions/cache@v1
id: cache-graalvm
- name: Setup GraalVM
if: "matrix.static == false"
uses: graalvm/setup-graalvm@v1
with:
path: ~/graalvm-ce-java11-21.1.0
key: ${{ runner.os }}-graalvm-21.1.0
restore-keys: |
${{ runner.os }}-graalvm-21.1.0
java-version: '24'
distribution: 'graalvm'
components: 'native-image'
github-token: ${{ secrets.GITHUB_TOKEN }}
- name: Download GraalVM
- name: Setup GraalVM+musl
if: "matrix.static == true"
uses: graalvm/setup-graalvm@v1
with:
version: '24'
distribution: 'graalvm'
components: 'native-image'
native-image-musl: true
github-token: ${{ secrets.GITHUB_TOKEN }}
- name: Install clojure tools
uses: DeLaGuardo/setup-clojure@5.0
with:
cli: 1.10.3.1040
lein: 2.9.8
- name: Install native dev tools
if: matrix.os == 'ubuntu-latest'
run: |
cd ~
if ! [ -d graalvm-ce-java11-21.1.0 ]; then
curl -O -sL https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-21.1.0/graalvm-ce-java11-linux-amd64-21.1.0.tar.gz
tar xzf graalvm-ce-java11-linux-amd64-21.1.0.tar.gz
fi
sudo apt-get update
sudo apt-get -y install build-essential zlib1g-dev
- name: Babashka version
id: babashka-version
@ -152,222 +158,50 @@ jobs:
BABASHKA_VERSION=$(cat resources/BABASHKA_VERSION)
echo "##[set-output name=version;]${BABASHKA_VERSION}"
- name: Build Linux native image
run: |
export BABASHKA_JAR=babashka-${{ steps.babashka-version.outputs.version }}-standalone.jar
export BABASHKA_XMX="-J-Xmx6g"
export GRAALVM_HOME="$HOME/graalvm-ce-java11-21.1.0"
cp babashka-${{ steps.babashka-version.outputs.version }}-reflection.json reflection.json
script/compile
- name: Build uberjar
run: script/uberjar
- name: Test binary
run: |
export GRAALVM_HOME="$HOME/graalvm-ce-java11-21.1.0"
BABASHKA_TEST_ENV=native script/test
- name: Build native image
if: "matrix.static == false"
run: script/compile
- name: Install clojure
run: |
sudo script/install-clojure /usr/local
- name: Test libraries
run: |
export GRAALVM_HOME="$HOME/graalvm-ce-java11-21.1.0"
BABASHKA_TEST_ENV=native script/run_lib_tests
- name: Upload artifact
uses: actions/upload-artifact@v2
with:
path: bb
name: babashka-${{ steps.babashka-version.outputs.version }}-linux-amd64.zip
linux-static:
if: "!contains(github.event.head_commit.message, 'skip ci')"
needs: [jvm]
runs-on: ubuntu-16.04
steps:
- name: Git checkout
uses: actions/checkout@v1
with:
fetch-depth: 1
submodules: 'true'
- uses: actions/download-artifact@v1
with:
name: jar
path: .
- uses: actions/download-artifact@v1
with:
name: reflection.json
path: .
- name: Cache deps
uses: actions/cache@v1
id: cache-deps
with:
path: ~/.m2/repository
key: ${{ runner.os }}-maven-${{ hashFiles('project.clj') }}
restore-keys: |
${{ runner.os }}-maven-
- name: Cache GraalVM
uses: actions/cache@v1
id: cache-graalvm
with:
path: ~/graalvm-ce-java11-21.1.0
key: ${{ runner.os }}-graalvm-21.1.0
restore-keys: |
${{ runner.os }}-graalvm-21.1.0
- name: Download GraalVM
run: |
cd ~
if ! [ -d graalvm-ce-java11-21.1.0 ]; then
curl -O -sL https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-21.1.0/graalvm-ce-java11-linux-amd64-21.1.0.tar.gz
tar xzf graalvm-ce-java11-linux-amd64-21.1.0.tar.gz
fi
- name: Babashka version
id: babashka-version
run: |
BABASHKA_VERSION=$(cat resources/BABASHKA_VERSION)
echo "##[set-output name=version;]${BABASHKA_VERSION}"
- name: Build Linux native image
run: |
export BABASHKA_JAR=babashka-${{ steps.babashka-version.outputs.version }}-standalone.jar
export BABASHKA_XMX="-J-Xmx6g"
export GRAALVM_HOME="$HOME/graalvm-ce-java11-21.1.0"
export BABASHKA_STATIC=true
cp babashka-${{ steps.babashka-version.outputs.version }}-reflection.json reflection.json
script/compile
- name: Test binary
run: |
./bb '(+ 1 2 3)'
export GRAALVM_HOME="$HOME/graalvm-ce-java11-21.1.0"
BABASHKA_TEST_ENV=native script/test
- name: Install clojure
run: |
sudo script/install-clojure
- name: Test libraries
run: |
export GRAALVM_HOME="$HOME/graalvm-ce-java11-21.1.0"
BABASHKA_TEST_ENV=native script/run_lib_tests
- name: Upload artifact
uses: actions/upload-artifact@v2
with:
path: bb
name: babashka-${{ steps.babashka-version.outputs.version }}-linux-static-amd64.zip
mac:
if: "!contains(github.event.head_commit.message, 'skip ci')"
needs: [jvm]
runs-on: macos-latest
steps:
- name: Git checkout
uses: actions/checkout@v1
with:
fetch-depth: 1
submodules: 'true'
- uses: actions/download-artifact@v1
with:
name: jar
path: .
- uses: actions/download-artifact@v1
with:
name: reflection.json
path: .
- name: Cache GraalVM
uses: actions/cache@v1
id: cache-graalvm
with:
path: ~/graalvm-ce-java11-21.1.0
key: ${{ runner.os }}-graalvm-21.1.0
restore-keys: |
${{ runner.os }}-graalvm-21.1.0
- name: Download GraalVM
run: |
cd ~
if ! [ -d graalvm-ce-java11-21.1.0 ]; then
curl -O -sL https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-21.1.0/graalvm-ce-java11-darwin-amd64-21.1.0.tar.gz
tar xzf graalvm-ce-java11-darwin-amd64-21.1.0.tar.gz
fi
- name: Babashka version
id: babashka-version
run: |
BABASHKA_VERSION=$(cat resources/BABASHKA_VERSION)
echo "##[set-output name=version;]${BABASHKA_VERSION}"
- name: Build macOS native image
run: |
export BABASHKA_JAR=babashka-${{ steps.babashka-version.outputs.version }}-standalone.jar
export BABASHKA_XMX="-J-Xmx6g"
export GRAALVM_HOME="$HOME/graalvm-ce-java11-21.1.0/Contents/Home"
cp babashka-${{ steps.babashka-version.outputs.version }}-reflection.json reflection.json
script/compile
- name: Test binary
run: |
export GRAALVM_HOME="$HOME/graalvm-ce-java11-21.1.0/Contents/Home"
sudo script/install-leiningen
BABASHKA_TEST_ENV=native script/test
- name: Test libraries
run: |
export GRAALVM_HOME="$HOME/graalvm-ce-java11-21.1.0/Contents/Home"
sudo script/install-clojure
BABASHKA_TEST_ENV=native script/run_lib_tests
- uses: actions/upload-artifact@v1
with:
path: bb
name: babashka-${{ steps.babashka-version.outputs.version }}-macos-amd64.zip
deploy:
if: "!contains(github.event.head_commit.message, 'skip ci') && github.event_name == 'push' && github.ref == 'refs/heads/master'"
needs: [jvm, linux, linux-static, mac]
runs-on: ubuntu-18.04
steps:
- name: Git checkout
uses: actions/checkout@v1
with:
fetch-depth: 1
submodules: 'true'
- name: Cache deps
uses: actions/cache@v1
id: cache-deps
with:
path: ~/.m2/repository
key: ${{ runner.os }}-maven-${{ hashFiles('project.clj') }}
restore-keys: |
${{ runner.os }}-maven-
- name: Deploy
- name: Build static native image
if: "matrix.static == true"
env:
CLOJARS_USER: "${{ secrets.CLOJARS_USER }}"
CLOJARS_PASS: "${{ secrets.CLOJARS_PASS }}"
BABASHKA_STATIC: "true"
BABASHKA_MUSL: "true"
run: script/compile
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
path: bb
name: babashka-${{ steps.babashka-version.outputs.version }}-${{ matrix.name }}-amd64
- name: Upload static artifact
if: "matrix.static == true"
uses: actions/upload-artifact@v4
with:
path: bb
name: babashka-${{ steps.babashka-version.outputs.version }}-${{ matrix.name }}-static-amd64
- name: Test binary and libs
run: |
.github/script/deploy
script/test
script/run_lib_tests
- name: Release
run: .circleci/script/release
docker:
if: "!contains(github.event.head_commit.message, 'skip ci') && github.event_name == 'push' && github.ref == 'refs/heads/master'"
if: ${{ false }} # Disabled
# if: "!contains(github.event.head_commit.message, 'skip ci') && github.event_name == 'push' && github.ref == 'refs/heads/master'"
needs:
- linux
- linux-static
runs-on: ubuntu-18.04
- native
runs-on: ubuntu-latest
steps:
- name: Git checkout
uses: actions/checkout@v1
uses: actions/checkout@v2
with:
fetch-depth: 1
submodules: 'true'
@ -382,20 +216,27 @@ jobs:
run: mkdir -p /tmp/release
- name: Download linux binary
uses: actions/download-artifact@v2
uses: actions/download-artifact@v4.1.7
with:
name: babashka-${{ steps.babashka-version.outputs.version }}-linux-amd64.zip
path: /tmp/release
- name: Download static linux binary
uses: actions/download-artifact@v2
uses: actions/download-artifact@v4.1.7
with:
name: babashka-${{ steps.babashka-version.outputs.version }}-linux-static-amd64.zip
path: /tmp/release-static
- name: Set up Docker Buildx
id: buildx
uses: docker/setup-buildx-action@v2
- name: Build uberjar
run: script/uberjar
- name: Docker build
env:
DOCKERHUB_USER: "${{ secrets.DOCKERHUB_USER }}"
DOCKERHUB_PASS: "${{ secrets.DOCKERHUB_PASS }}"
run: |
.github/script/docker
PLATFORMS: linux/amd64,linux/arm64
run: java -jar ./target/babashka-$(cat resources/BABASHKA_VERSION)-standalone.jar .circleci/script/docker.clj

8
.gitignore vendored
View file

@ -16,7 +16,7 @@ pom.xml.asc
!test-resources/babashka/src_for_classpath_test/foo.jar
!test-resources/pom.xml
.cpcache
*reflection.json
*reflect-config.json
/tmp
/reports
*.dylib
@ -33,3 +33,9 @@ org_babashka*.h
.envrc
.lsp
bb.build_artifacts.txt
target
.nrepl-port
.DS_Store
.portal
default.iprof
scratch.clj

3
.gitmodules vendored
View file

@ -23,3 +23,6 @@
[submodule "fs"]
path = fs
url = https://github.com/babashka/fs
[submodule "babashka.core"]
path = babashka.core
url = https://github.com/babashka/babashka.core.git

View file

@ -2,10 +2,963 @@
For a list of breaking changes, check [here](#breaking-changes).
A preview of the next release can be installed from
[babashka-dev-builds](https://github.com/babashka/babashka-dev-builds).
[Babashka](https://github.com/babashka/babashka): Native, fast starting Clojure interpreter for scripting
## 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
- Add `java.util.concurrent.ThreadLocalRandom`
- 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)
- [#1806](https://github.com/babashka/babashka/issues/1806): Add `cheshire.factory` namespace ([@lread](https://github.com/lread))
## 1.12.198 (2025-04-17)
- Bump GraalVM to `24`
- Bump SCI to `0.9.45`
- Bump edamame to `1.4.28`
- [#1801](https://github.com/babashka/babashka/issues/1801): Add `java.util.regex.PatternSyntaxException`
- Bump core.async to `1.8.735`
- Bump cheshire to `6.0.0`
- Bump babashka.cli to `0.8.65`
## 1.12.197 (2025-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` (fixes parsing of `foo//` among other things)
- Bump `deps.clj`
- Bump `fs`
## 1.12.196 (2024-12-24)
- [#1771](https://github.com/babashka/babashka/issues/1771): `*e*` in REPL should contain exception thrown by user, not a wrapped one
- [#1777](https://github.com/babashka/babashka/issues/1777) Add `java.nio.file.attribute.UserDefinedFileAttributeView`
- [#1776](https://github.com/babashka/babashka/issues/1776) `Add java.nio.file.attribute.PosixFileAttributes`
- [#1761](https://github.com/babashka/babashka/issues/1761) Support calling `clojure.lang.RT/iter`
- [#1760](https://github.com/babashka/babashka/issues/1760) For compatibility with [Fireworks v0.10.3](https://github.com/paintparty/fireworks), added the following to `:instance-checks` entry in `babashka.impl.classes/classes`([@paintparty](https://github.com/paintparty))
- `clojure.lang.PersistentArrayMap$TransientArrayMap`
- `clojure.lang.PersistentHashMap$TransientHashMap`
- `clojure.lang.PersistentVector$TransientVector`
- `java.lang.NoSuchFieldException`
- `java.util.AbstractMap`
- `java.util.AbstractSet`
- `java.util.AbstractList`
- [#1760](https://github.com/babashka/babashka/issues/1760) For compatibility with [Fireworks v0.10.3](https://github.com/paintparty/fireworks), added `volatile?` entry to `babashka.impl.clojure.core/core-extras`([@paintparty](https://github.com/paintparty))
- Bump `babashka.cli` to `0.8.61`
- Bump `clj-yaml` to `1.0.29`
- [#1768](https://github.com/babashka/babashka/issues/1768): Add `taoensso.timbre` `color-str` function
- Add classes:
- `javax.crypto.KeyAgreement`
- `java.security.KeyPairGenerator`
- `java.security.KeyPair`
- `java.security.spec.ECGenParameterSpec`
- `java.security.spec.PKCS8EncodedKeySpec`
- `java.security.spec.X509EncodedKeySpec`
- `java.security.Signature`
- Add `java.util.concurrent.CompletionStage`
- Bump `core.async` to `1.7.701`
- Bump `org.babashka/cli` to `0.8.162`
## 1.12.195 (2024-11-12)
- Include [jsoup](https://jsoup.org/) for HTML parsing. This makes bb compatible with the [hickory](https://github.com/clj-commons/hickory) library (and possibly other libraries?).
- [#1752](https://github.com/babashka/babashka/issues/1752): include `java.lang.SecurityException` for `java.net.http.HttpClient` support ([@grzm](https://github.com/grzm))
- [#1748](https://github.com/babashka/babashka/issues/1748): add `clojure.core/ensure`
- Upgrade `taoensso/timbre`to `v6.6.0`
- Upgrade `babashka.http-client` to `v0.4.22`
- Add `:git/sha` from build to `bb describe` output ([@lispyclouds](https://github.com/lispyclouds))
- Fix NPE with determining if executing from self-contained executable
## 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
`Thread/sleep` interop
- 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
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)
- Upgrade Clojure to `1.12.0`
- [#1722](https://github.com/babashka/babashka/issues/1722): add new clojure 1.12 vars
- [#1720](https://github.com/babashka/babashka/issues/1720): include new clojure 1.12's `clojure.java.process`
- [#1719](https://github.com/babashka/babashka/issues/1719): add new clojure 1.12 `clojure.repl.deps` namespace. Only calls with explicit versions are supported.
- [#1598](https://github.com/babashka/babashka/issues/1598): use Rosetta on CircleCI to build x64 images
- [#1716](https://github.com/babashka/babashka/issues/1716): expose `babashka.http-client.interceptors` namespace
- [#1707](https://github.com/babashka/babashka/issues/1707): support `aset` on primitive array
- [#1676](https://github.com/babashka/babashka/issues/1676): restore compatibility with newest [at-at](https://github.com/overtone/at-at/) version (1.3.58)
- Bump SCI
- Bump `fs`
- Bump `process`
- Bump `deps.clj`
- Bump `http-client`
- Bump `clj-yaml`
- Bump `edamame`
- Bump `rewrite-clj`
- Add `java.io.LineNumberReader`
## 1.3.191 (2024-06-19)
- Fix [#1688](https://github.com/babashka/babashka/issues/1688): `use-fixtures` should add metadata to `*ns*`
- Fix [#1692](https://github.com/babashka/babashka/issues/1692): Add support for `ITransientSet` and `org.flatland/ordered-set`
- Bump org.flatland/ordered to `1.15.12`.
- Partially Fix [#1695](https://github.com/babashka/babashka/issues/1695): `--repl` arg handling should consume only one arg (itself) ([@bobisageek](https://github.com/bobisageek))
- Partially Fix [#1695](https://github.com/babashka/babashka/issues/1695): make `*command-line-args*` value available in the REPL ([@bobisageek](https://github.com/bobisageek))
- Fix [#1686](https://github.com/babashka/babashka/issues/1686): do not fetch dependencies/invoke java for `version`, `help`, and `describe` options ([@bobisageek](https://github.com/bobisageek))
- [#1696](https://github.com/babashka/babashka/issues/1696): add `clojure.lang.DynamicClassLoader` constructors ([@bobisageek](https://github.com/bobisageek))
- [#1696](https://github.com/babashka/babashka/issues/1696): add `clojure.core/*source-path*` (points to the same sci var as `*file*`) ([@bobisageek](https://github.com/bobisageek))
- [#1696](https://github.com/babashka/babashka/issues/1696): add `clojure.main/with-read-known` ([@bobisageek](https://github.com/bobisageek))
- [#1696](https://github.com/babashka/babashka/issues/1696): add `clojure.core.server/repl-read` ([@bobisageek](https://github.com/bobisageek))
- [#1696](https://github.com/babashka/babashka/issues/1696): make the `cognitect-labs/transcriptor` library work ([@bobisageek](https://github.com/bobisageek))
- [#1700](https://github.com/babashka/babashka/issues/1700): catch exceptions from resolving symbolic links during `bb.edn` lookup ([@bobisageek](https://github.com/bobisageek))
- Support `java.nio.channels.ByteChannel` + several other related interop
- Bump `nrepl/bencode` to `1.2.0`
- Bump `babashka/fs`
- Bump `org.babashka/http-client` to `0.4.18`
## 1.3.190 (2024-04-17)
- Fix [#1679](https://github.com/babashka/babashka/issues/1679): bump timbre and fix wrapping `timbre/log!`
- Add `java.util.concurrent.CountDownLatch`
- Add `java.lang.ThreadLocal`
- Bump `babashka.process`
- Bump httpkit to `2.8.0-RC1`
- Bump clojure to `1.11.2`
- Bump deps.clj
- Bump `babashka.cli`
- Bump `cheshire` to `5.13.0`
- Bump `http-client` to `0.4.17`
## 1.3.189 (2024-02-22)
- [#1660](https://github.com/babashka/babashka/issues/1660): add `:deps-root` as part of hash to avoid caching issue with `deps.clj`
- [#1632](https://github.com/babashka/babashka/issues/1632): fix `(.readPassword (System/console))` by upgrading GraalVM to `21.0.2`
- [#1661](https://github.com/babashka/babashka/issues/1661): follow symlink when reading adjacent bb.edn
- [#1665](https://github.com/babashka/babashka/issues/1665): `read-string` should use non-indexing reader for compatibilty with Clojure
- Bump edamame to 1.4.24
- Bump http-client to 0.4.16
- Bump babashka.cli to 0.8.57
- Uberjar task: support reader conditional in .cljc file
- Support reader conditional in .cljc file when creating uberjar
- Add more `javax.net.ssl` classes
- [#1675](https://github.com/babashka/babashka/issues/1675): add `hash-unordered-coll`
## 1.3.188 (2024-01-12)
- [#1658](https://github.com/babashka/babashka/issues/1658): fix command line parsing for scripts that parse `--version` or `version` etc
## 1.3.187 (2024-01-09)
- Add `clojure.reflect/reflect`
- Add `java.util.ScheduledFuture`, `java.time.temporal.WeekFields`
- Support `Runnable` to be used without import
- Allow `catch` to be used as var name
- [#1646](https://github.com/babashka/babashka/issues/1646): command-line-args are dropped when file exists with same name
- [#1645](https://github.com/babashka/babashka/issues/1645): Support for `clojure.lang.LongRange`
- [#1652](https://github.com/babashka/babashka/issues/1652): allow `bb.edn` to be empty
- [#1586](https://github.com/babashka/babashka/issues/1586): warn when config file doesn't exist and `--debug` is enabled
- [#1410](https://github.com/babashka/babashka/issues/1410): better error message when exec fn doesn't exist
- Bump `babashka.cli` to `0.8.55` which contains subcommand improvements
- Bump `deps.clj` to `1.11.1.1435`
- Bump `babashka.fs` to `0.5.20`
- Compatibility with `plumbing.core`
- Compatibility with `shadow.css` by improving `tools.reader` compatibility
- [#1647](https://github.com/babashka/babashka/issues/1647): Allow capturing env vars at build time (only relevant for building bb)
## 1.3.186 (2023-11-02)
- [Support self-contained binaries as uberjars!](https://github.com/babashka/babashka/wiki/Self-contained-executable#uberjar)
- Add `java.security.KeyFactory`, `java.security.spec.PKCS8EncodedKeySpec`, `java.net.URISyntaxException`, `javax.crypto.spec.IvParameterSpec`
- Fix babashka.process/exec wrt `babashka.process/*defaults*`
- [#1632](https://github.com/babashka/babashka/issues/1632): Partial fix for `(.readPassword (System/console))`
- Enable producing self-contained binaries using [uberjars](https://github.com/babashka/babashka/wiki/Self-contained-executable#uberjar)
- Bump httpkit to `2.8.0-beta3` (fixes GraalVM issue with virtual threads)
- Bump `deps.clj` and `fs`
- Expose `taoensso.timbre.appenders.core`
- nREPL: implement `ns-list` op
- SCI: optimize `swap!`, `deref` and `reset!` for normal atoms (rather than user-created `IAtom`s)
- Add test for [#1639](https://github.com/babashka/babashka/issues/1639)
- Upgrade to GraalVM 21.0.1
## 1.3.185 (2023-09-28)
- [#1624](https://github.com/babashka/babashka/pull/1624): Use Oracle GraalVM 21 ([@lispyclouds](https://github.com/lispyclouds))
- Use PGO to speed up loops (now 2-3x faster for `(time (loop [val 0 cnt 10000000] (if (pos? cnt) (recur (inc val) (dec cnt)) val)))`!)
- Bump babashka.http-client to v0.4.15
- Bump rewrite-clj to v0.1.1.47
- [#1619](https://github.com/babashka/babashka/issues/1619): Fix reflection issue with `Thread/sleep` in `core.async/timeout`
- Support interop on `java.util.stream.IntStream`
- [#1513](https://github.com/babashka/babashka/issues/1513): Fix interop on `Thread/sleep` with numbers that aren't already longs
- Bump babashka.cli to 0.7.53
- Fix [#babashka.nrepl/66](https://github.com/babashka/babashka.nrepl/issues/66)
- Various nREPL server improvements (classpath op, file lookup information for `cider-find-var`)
- Bump cheshire to 5.12.0
## 1.3.184 (2023-08-22)
- Remove leftover debugging output from deps.clj
## 1.3.183 (2023-08-22)
- [#1592](https://github.com/babashka/babashka/issues/1592): expose `sci.core` in babashka
- [#1596](https://github.com/babashka/babashka/issues/1596): Fix `clojure.java.browse/browse-url` truncates URLs with multiple query parameters on Windows
- [#1599](https://github.com/babashka/babashka/issues/1599): propagate error from `run` when task does not exist
- Bump clj-yaml to `1.0.27`
- [#1604](https://github.com/babashka/babashka/issues/1604): throw `FileNotFoundException` when requiring namespace whose file cannot be found (as JVM Clojure does)
- Bump integrant CI tests
- [#1600](https://github.com/babashka/babashka/issues/1600): use pagesize of 64K on linux aarch64, so it works on Asahi linux
- Expose `selmer.parser/resolve-arg`
- [#1610](https://github.com/babashka/babashka/issues/1610): expose `babashka.http-client.websocket` namespace
- Bump `babashka.http-client` to `0.4.14`
- [#1568](https://github.com/babashka/babashka/issues/1568): warn when task overrides built-in command
## 1.3.182 (2023-07-20)
- [#1579](https://github.com/babashka/babashka/issues/1579): add `clojure.tools.reader/resolve-symbol`
- [#1581](https://github.com/babashka/babashka/issues/1581): `bb print-deps`: sort dependencies ([@teodorlu](https://github.com/teodorlu))
- Upgrade `babashka.http-client` to `0.4.12`, fixes `:insecure` option
- Bump [edamame](https://github.com/borkdude/edamame) to `1.3.23`: fixes infinite loop with reader conditional expression
- Bump [Selmer](https://github.com/yogthos/Selmer) to Bumping to `1.12.59`
- Bump [deps.clj](https://github.com/borkdude/deps.clj) with more fixes which should make downloading/installation of tools jar more robust
- Add `javax.net.ssl.X509ExtendedTrustManager` class
- Bump [babashka.process](https://github.com/babashka/process): accept path or file as `:dir` argument
- Bump [hiccup](https://github.com/weavejester/hiccup) to `2.0.0-RC1`
## 1.3.181 (2023-06-13)
- [#1575](https://github.com/babashka/babashka/issues/1575): fix command line parsing problem with `-e` + `*command-line-args*`
- [#1576](https://github.com/babashka/babashka/issues/1576): make downloading/unzipping of deps.clj tools .zip file more robust
## 1.3.180 (2023-05-28)
- [#1524](https://github.com/babashka/babashka/issues/1524): Remove dynamic builds for linux-aarch64 ([@lispyclouds](https://github.com/lispyclouds))
- [#1577](https://github.com/babashka/babashka/issues/1557): Add support for `babashka.process/exec` after namespace reload of `babashka.process` ([@lread](https://github.com/lread))
- [#1548](https://github.com/babashka/babashka/issues/1548): shell and sh should respect `babashka.process/*defaults*`
- [#1524](https://github.com/babashka/babashka/issues/1524): deprecate (remove) linux-aarch64 dynamic binary build
- Expose `org.graalvm.nativeimage.ProcessProperties/exec`
- Bump `babashka.http-client` to `0.3.11`
- Bump `babashka.fs` to `0.4.19`
- Bump `babashka.process` to `0.5.21`
## 1.3.179 (2023-04-26)
- [#1544](https://github.com/babashka/babashka/issues/1544): `:local/root` in script-adjacent bb.edn should resolve relative to script
- [#1545](https://github.com/babashka/babashka/issues/1545): Adjacent `bb.edn` not respected with explicit `-f` option
- [#1546](https://github.com/babashka/babashka/issues/1546): add `.contains` for vector and lazy-seq
## 1.3.178 (2023-04-21)
- Fix regression with [#1541](https://github.com/babashka/babashka/issues/1541)
## 1.3.177 (2023-04-21)
- [#1541](https://github.com/babashka/babashka/issues/1541): respect `bb.edn`
adjacent to invoked file. This eases writing system-global scripts from
projects without using bbin. See [docs](https://book.babashka.org/#_script_adjacent_bb_edn).
- [#1523](https://github.com/babashka/babashka/pull/1523): Reduce the size of the Docker images ([@raszi](https://github.com/raszi))
- Upgrade deps.clj to v1.11.1.1273
- Upgrade transit-clj to 1.0.333
- Add `java.security.cert.CertificateFactory`
- Bump clj-yaml to 1.0.26
- Bump edamame to 1.3.21
- Add `UnsupportedOperationException`
- Bump babashka CLI to 0.7.51
- Bump babashka http-client to 0.2.9
- Add `--install-exit-handlers` to native-image build to support shutdown hook + SIGTERM
## 1.3.176 (2023-03-18)
- Upgrade http-client to 0.1.8, fixes binary file uploads (which messed up the previous release)
- Downgrade org.flatland/ordered to 1.5.9 due to this [issue](https://github.com/clj-commons/ordered/issues/71)
## 1.3.175 (2023-03-18)
- [#1507](https://github.com/babashka/babashka/issues/1507): Expose methods on java.lang.VirtualThread ([@lispyclouds](https://github.com/lispyclouds))
- [#1510](https://github.com/babashka/babashka/issues/1510): add virtual thread interop on `Thread`
- [#1511](https://github.com/babashka/babashka/issues/1511): support for domain sockets
- [#1521](https://github.com/babashka/babashka/issues/1521): push images to GHCR ([@lispyclouds](https://github.com/lispyclouds))
- Bump edamame to 1.3.20
- Bump deps.clj to 1.11.1.1257
- Bump org.flatland/ordered to 1.15.10
- Support `clojure.lang.MapEntry/create`
- clojure.core.async `go` macro now uses virtual threads
- Bump babashka.cli to 0.6.50
- Bump http-client to 0.1.7
## 1.2.174 (2023-03-01)
- Use GraalVM 22.3.1 on JDK 19.0.2. This adds virtual thread support. See [demo](https://twitter.com/borkdude/status/1572222344684531717).
- Expose more `jaxax.crypto` classes
- Add more `java.time` and related classes with the goal of supporting [juxt.tick](https://github.com/juxt/tick) ([issue](https://github.com/juxt/tick/issues/86))
- Compatibility with [kaocha](https://github.com/lambdaisland/kaocha) test runner
- [#1000](https://github.com/babashka/babashka/issues/1000): add lib tests for xforms ([@bobisageek](https://github.com/bobisageek))
- [#1482](https://github.com/babashka/babashka/issues/1482): make loading of libs thread safe
- [#1487](https://github.com/babashka/babashka/issues/1487): `babashka.tasks/clojure` should be supported without arguments to start a REPL
- [#1496](https://github.com/babashka/babashka/issues/1496): Add `set-agent-send-executor!` and `set-agent-send-off-executor!`
- [#1489](https://github.com/babashka/babashka/issues/1489): Don't overwrite non-empty, non-jar files when writing uberscript/uberjar ([@bobisageek](https://github.com/bobisageek))
- [#1506](https://github.com/babashka/babashka/issues/1506): `:exec-args` in task should override `:exec-args` on fn metadata
- [#1501](https://github.com/babashka/babashka/issues/1501): equals on deftype
- Add support for `.getWatches` on atoms
- Bump `babashka.fs` to `0.3.17`
- Bump `deps.clj` to `1.11.1.1237`
- Bump `babashka.http-client` to `0.1.5`
- Bump `babashka.cli` to `0.6.46`
## 1.1.173 (2023-02-04)
- [#1473](https://github.com/babashka/babashka/issues/1473): support `--config` in other dir + `:local/root` ([@lispyclouds](https://github.com/lispyclouds))
- Compatibility with `clojure.tools.namespace.repl/refresh` and `clojure.java.classpath`
- `(clojure.lang.RT/baseLoader)` now returns classloader with babashka dependencies on classpath
- Support reading tags from `data_readers.clj` and `data_readers.cljc`
- Don't exit REPL when `babashka.deps/add-deps` fails
- Fix [#1474](https://github.com/babashka/babashka/issues/1474): when `.bb` file is in different artifact, `.clj` file is loaded first if it appears first on classpath
- Support for `*loaded-libs*` and `(loaded-libs)`
- Bump rewrite-clj to `1.1.46`
- Bump http-client to `0.0.3`
- Bump fs to `0.2.15`
- Bump process to `0.4.16`
## 1.1.172 (2023-01-23)
- [#1472](https://github.com/babashka/babashka/issues/1472): fix tokenization of `babashka.tasks/clojure`: command was tokenized twice (regression was introduced in `1.0.168`)
- **BREAKING**: Bump `babashka.process`: change default for `:out :append` to `:out :write`. This default is undocumented so the impact should be small.
## 1.1.171 (2023-01-23)
- [#1467](https://github.com/babashka/babashka/issues/1467): **BREAKING**: avoid printing results, unless `--prn` is enabled (aside from `-e`, `-o` and `-O`).
- Include [http-client](https://github.com/babashka/http-client) as built-in library
- SCI: support `add-watch` on vars
- Compatibility with [eftest](https://github.com/weavejester/eftest) test runner (see [demo](https://twitter.com/borkdude/status/1616886788898885632))
- Add classes:
- `java.util.concurrent.Callable`
- `java.util.concurrent.ExecutorService`
- Expose `clojure.main` `main` and `repl-caught`
- Switch `clojure.test/*report-counters*` to ref instead of atom for compatibility with [kaocha](https://github.com/lambdaisland/kaocha)
- Allow `java.io.OutputStream` to be proxied, for [kaocha](https://github.com/lambdaisland/kaocha)
- Support qualified method names in `proxy` and ignore namespace
## 1.0.170 (2023-01-19)
- [#1463](https://github.com/babashka/babashka/issues/1463): Add `java.util.jar.Attributes` class ([@jeroenvandijk](https://github.com/jeroenvandijk))
- [#1456](https://github.com/babashka/babashka/issues/1456): allow `*warn-on-reflection*` and `*unchecked-math*` to be set in socket REPL and nREPL ([@axks](https://github.com/axks))
- SCI: macroexpansion error location improvement
- Add compatibility with [tab](https://github.com/eerohele/tab) and [solenoid](https://github.com/adam-james-v/solenoid)
- Bump babashka.cli and babashka.fs
- New classes:
- `java.util.jar.Attributes`
- `java.util.concurrent.ThreadFactory`
- `java.lang.Thread$UncaughtExceptionHandler`
- `java.lang.Thread$UncaughtExceptionHandler`
- `java.util.concurrent.BlockingQueue`
- `java.util.concurrent.ArrayBlockingQueue`
- `java.util.concurrent.ThreadFactory`
- `java.lang.Thread$UncaughtExceptionHandler`
- `java.util.concurrent.Semaphore`
- Expose more httpkit.server functions: `with-channel`, `on-close`, `close`
## 1.0.169 (2023-01-03)
- Implement `ns`, `lazy-seq` as macro
- Support `--dev-build` flag in installation script
- [#1451](https://github.com/babashka/babashka/issues/1451): Allow passing explicit file and line number to clojure.test ([@matthewdowney](https://github.com/matthewdowney))
- [#1280](https://github.com/babashka/babashka/issues/1280): babashka REPL doesn't quit right after Ctrl-d ([@formerly-a-trickster](https://github.com/formerly-a-trickster) and Alice Margatroid)
- [#1446](https://github.com/babashka/babashka/issues/1446): add `pprint/code-dispatch`
- Update zlib to version `1.2.13` ([@thiagokokada](https://github.com/thiagokokada))
- [#1454](https://github.com/babashka/babashka/issues/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](https://github.com/borkdude/hyperfiddle-rcf)
- fs: don't touch dirs in `split-ext`
- Update to babashka process to v0.4.13: support `(process opts? & args)` syntax everywhere
- [#1438](https://github.com/babashka/babashka/issues/1438): expose `query-string` and `url-encode` functions from org.httpkit.client ([@bobisageek](https://github.com/bobisageek))
- Add `java.util.InputMismatchException`
## 1.0.167 (2022-11-30)
- [#1433](https://github.com/babashka/babashka/issues/1433): spec source as built-in fallback. When not including the
[clojure.spec.alpha](https://github.com/babashka/spec.alpha) fork as a
library, babashka loads a bundled version, when `clojure.spec.alpha` is required.
- [#1430](https://github.com/babashka/babashka/issues/1430): Fix issue with `bb tasks` throwing on empty display tasks list.
- Add note about BSOD when using WSL1, see [README.md/quickstart](https://github.com/LouDnl/babashka#quickstart)
- SCI: performance improvements
- Better error locations for interop ([@bobisageek](https://github.com/bobisageek))
- Fix [babashka/babashka.nrepl#59](https://github.com/babashka/babashka.nrepl/issues/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](https://blog.michielborkent.nl/babashka-test-runner.html) blog post for how to run tests with this release.
- Compatibility with Cognitest [test-runner](https://github.com/cognitect-labs/test-runner) and [tools.namespace](https://github.com/clojure/tools.namespace)
- Add `run-test` and `run-test-var` to `clojure.test`
- Compile distributed uberjar using GraalVM, fixes `babashka.process/exec` for Nix
- [#1414](https://github.com/babashka/babashka/issues/1414): preserve metadata on exec task function argument map
- [#1269](https://github.com/babashka/babashka/issues/1269): add lib tests for sluj ([@bobisageek](https://github.com/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](https://github.com/babashka/babashka/issues/1401): mutation of `deftype` field should be visible in protocol method
- Fix [#1405](https://github.com/babashka/babashka/issues/1405): drop name metadata from conditionally defined var
- [#602](https://github.com/babashka/babashka/issues/602): add lib tests for clj-commons/fs ([@bobisageek](https://github.com/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](https://github.com/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](https://github.com/retrogradeorbit))
- feat: Honor `*print-namespace-maps*` in pprint ([@ghoseb](https://github.com/ghoseb))
- [#1369](https://github.com/babashka/babashka/issues/1369): provide `.sha256` files for every released asset
- [#1397](https://github.com/babashka/babashka/issues/1397): Add `clojure.lang.Namespace` as alias for `sci.lang.Namespace`, such that `(instance? clojure.lang.Namespace *ns*)` returns `true` in bb
- [#1384](https://github.com/babashka/babashka/issues/1384): allow `.indexOf` on `LazySeq`
- [#1330](https://github.com/babashka/babashka/issues/1330): allow `(set! *warn-on-reflection*)` in programmatic nREPL
- Better error message when failing to load `bb.edn` ([@lispyclouds](https://github.com/lispyclouds))
- Pods: print and flush to `*out*` and `*err*` instead of using `println` ([@justone](https://github.com/justone))
- deps.clj: support for `CLJ_JVM_OPTS` and `JAVA_OPTS` ([@ikappaki](https://github.com/ikappaki))
- Fix `*print-namespace-maps*` when using `clojure.pprint` ([@ghoseb](https://github.com/ghoseb))
- Process: only slurp `*err*` when inputstream ([@ikappaki](https://github.com/ikappaki))
- Process: add `alive?` API function ([@grzm](https://github.com/grzm))
- Bump libraries: tools.cli, babashka.cli
- [#1391](https://github.com/babashka/babashka/issues/1391): include raw in `hiccup2.core` ns
- [#1391](https://github.com/babashka/babashka/issues/1391): support loading `hiccup.page` when adding hiccup to deps
## 0.10.163 (2022-09-24)
- [#808](https://github.com/babashka/babashka/issues/808): support `-Sdeps` option to support passing extra deps map which will be merged last
- [#1336](https://github.com/babashka/babashka/issues/1336): tasks subcommand doesn't work with global `-Sforce` option ([@bobisageek](https://github.com/bobisageek))
- [#1340](https://github.com/babashka/babashka/issues/1340): `defprotocol` methods are missing `:doc` metadata ([@bobisageek](https://github.com/bobisageek))
- [#1368](https://github.com/babashka/babashka/issues/1368): `-x`: do not pick up on aliases in `user` ns
- [#1367](https://github.com/babashka/babashka/issues/1367): Fix line number in clojure.test output ([@retrogradeorbit](https://github.com/retrogradeorbit))
- [#1370](https://github.com/babashka/babashka/issues/1370): Add `core.async` `to-chan!`, `to-chan!!`, `onto-chan!` ([@cap10morgan](https://github.com/cap10morgan))
- [#1358](https://github.com/babashka/babashka/issues/1358): Expose a subset of `java.lang.ref` to enable hooking into the destruction/GC of objects ([@retrogradeorbit](https://github.com/retrogradeorbit))
- [#1364](https://github.com/babashka/babashka/issues/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](https://github.com/eerohele))
- Add more reflection class methods ([@eerohele](https://github.com/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](https://github.com/eerohele))
- Download but don't run pods when `os.name` / `os.arch` don't match ([@cap10morgan](https://github.com/cap10morgan))
- Add `clojure.core.server/stop-server` ([@eerohele](https://github.com/eerohele))
- Add `ns-unalias`
- Add `AtomicInteger` and `AtomicLong` to full interop
- Add `PrintWriter-on`
- Improve `reify` error messages ([@retrogradeorbit](https://github.com/retrogradeorbit))
- Expose `core.async` `ManyToManyChannel`
- fs: add `write-lines`
- fs: add `write-bytes`
- [#1350](https://github.com/babashka/babashka/issues/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](https://github.com/babashka/bbin): install any Babashka script or project with one command. Thanks [@rads](https://github.com/rads)!
- Throw exception on attempt to reify multiple interfaces ([@retrogradeorbit](https://github.com/retrogradeorbit))
- Allow java.lang.Object reify with empty methods ([@retrogradeorbit](https://github.com/retrogradeorbit))
- [#1343](https://github.com/babashka/babashka/issues/1343): Fix postgres feature
- [#1345](https://github.com/babashka/babashka/issues/1345): add `javax.net.ssl.SSLException` and `java.net.SocketTimeoutException` classes ([@lread](https://github.com/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](https://github.com/babashka/babashka/issues/1322): improve error location
- Fix [#1338](https://github.com/babashka/babashka/issues/1338): `add-watch` segfault
- Fix [#1339](https://github.com/babashka/babashka/issues/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](https://blog.michielborkent.nl/babashka-tasks-meets-babashka-cli.html).
- [#1324](https://github.com/babashka/babashka/issues/1324): `-x` to invoke a function with babashka CLI
- [#1324](https://github.com/babashka/babashka/issues/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`](https://github.com/metosin/malli#babashka) `{: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](https://github.com/plumatic/schema)
from source. There is an open PR for babashka. Until it is merged you can use
[this](https://github.com/borkdude/schema/tree/bb-test-suite) 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](https://github.com/babashka/babashka/issues/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](https://github.com/babashka/babashka/issues/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](https://github.com/babashka/babashka/issues/549) and [#1258](https://github.com/babashka/babashka/issues/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](https://github.com/babashka/babashka/issues/1041): Improve error message when regex literal in EDN config
- [#1223](https://github.com/babashka/babashka/issues/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](https://github.com/babashka/babashka/issues/556) Add server-status to org.httpkit.server
- [#1231](https://github.com/babashka/babashka/issues/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
- [#863](https://github.com/babashka/babashka/issues/863): allow pods to be declared in `bb.edn` and load them when required. See [pod library docs](https://github.com/babashka/pods#in-a-babashka-project) and the entry in the [babashka book](https://book.babashka.org/#_pods_in_bb_edn) for details.
### Enhanced
- [#1216](https://github.com/babashka/babashka/issues/1216): support `core.async/alts!` using polyfill
- [#1220](https://github.com/babashka/babashka/issues/1220): add reflection on java.util.concurrent.Future
- [#1211](https://github.com/babashka/babashka/issues/1211): return exit code 130 on sigint
- [#1224](https://github.com/babashka/babashka/issues/1224): add `proxy` support for `java.io.PipedInputStream` and `java.io.PipedOutputStream`. Add reflection for `java.utils.Scanner`.
- [babashka.curl#43](https://github.com/babashka/babashka.curl/issues/43) fix: last set-cookie headers on a page overwrites the ones before
- [#1216](https://github.com/babashka/babashka/issues/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](https://github.com/aysylu/loom), [hugsql.core](https://www.hugsql.org) and [specter](https://github.com/redplanetlabs/specter)!
To use specter in babashka, use the following coordinates:
``` clojure
{: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](https://github.com/aysylu/loom)
- Add part of `clojure.tools.reader.reader-types` to support [hugsql.core](https://www.hugsql.org)
- [#1204](https://github.com/babashka/babashka/issues/1204) add property `babashka.config` to reflect `bb.edn` location ([@mknoszlig](https://github.com/mknoszlig))
- Several fixes and enhancements to run Red Planet Lab's [specter](https://github.com/borkdude/specter/commit/8ba809a2cd35d3b6f8c5287e6bd3b4e06e42f6dc) library in babashka
- [#1199](https://github.com/babashka/babashka/issues/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](https://github.com/babashka/babashka/issues/938): drop location metadata from symbols, except top level
## 0.7.7 (2022-03-04)
### New
- [#1187](https://github.com/babashka/babashka/issues/1187) tasks: Add `:result` key to `(current-task)` map that can be used in `:leave` task hook
- [#1192](https://github.com/babashka/babashka/issues/1192): expose `*assert*`
- Add `clojure.instant/parse-timestamp`
- Compatibility with [at-at](https://github.com/overtone/at-at) by adding:
- `java.text.SimpleDateFormat`
- `java.util.concurrent.ThreadPoolExecutor`
- `java.util.concurrent.ScheduledThreadPoolExecutor`
- Add `pprint/get-pretty-writer`
### Enhancements
- [#1190](https://github.com/babashka/babashka/issues/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](https://forms.gle/ko3NjDg2SwXeEoNQ9)!
- SCI performance improvements
- Bump clj-yaml to 0.7.1.108
- [#1181](https://github.com/babashka/babashka/issues/1181): clojure.test report does not respect *test-out* correctly
- [#1180](https://github.com/babashka/babashka/issues/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](https://forms.gle/ko3NjDg2SwXeEoNQ9)!
- SCI: Performance improvements for loops and varargs function invocation.
- Fix [#1170](https://github.com/babashka/babashka/issues/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](https://github.com/edma2/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](https://forms.gle/ko3NjDg2SwXeEoNQ9).
- 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](https://github.com/kbaba1001))
- `deps.clj`: update to clojure CLI 1.10.3.1058
- Add metabom jar to docker images [#1133](https://github.com/babashka/babashka/issues/1133) ([@kipz](https://github.com/kipz), [@lispyclouds](https://github.com/lispyclouds))
- Add opencontainers annotations to docker image [#1134](https://github.com/babashka/babashka/issues/1134) ([@kipz](https://github.com/kipz), [@lispyclouds](https://github.com/lispyclouds))
- Fix Alpine Linux Docker images in CI script [#1140](https://github.com/babashka/babashka/issues/1140) ([@kipz](https://github.com/kipz), [@lispyclouds](https://github.com/lispyclouds))
- `babashka.fs`: create dirs in `copy-tree` ([@duzunov](https://github.com/duzunov))
- SCI: fix order of metadata evaluation ([@erdos](https://github.com/erdos))
- Fix: cannot take value of macro of `->`
- Fix [#1144](https://github.com/babashka/babashka/issues/1144): cannot create multidimensional arrays
- Fix [#1143](https://github.com/babashka/babashka/issues/1143): allow optional (ignored) `--` when using using `--main` ([@grzm](https://github.com/grzm))
- SCI: throw when `recur` is used from non-tail position
- Add more libraries to CI lib tests ([@cljwalker](https://github.com/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](https://github.com/babashka/babashka/issues/1123), [#1124](https://github.com/babashka/babashka/issues/1124)
## 0.7.2 (2021-12-29)
- Add `spy` macro from `taoensso.timbre` [#1087](https://github.com/babashka/babashka/issues/1087)
- Better error for higher order fn arity mismatch
- Check `shasum` / `sha256sum` in `PATH` on install script ([@thiagokokada](https://github.com/thiagokokada))
- Build arm64 docker image in CI [#1099](https://github.com/babashka/babashka/issues/1099) ([@cap10morgan](https://github.com/cap10morgan))
- Upgrade to `edamame` v0.0.19
- Load tasks and deps from other bb.edn file using `--config` and `--deps-root` options [#1110](https://github.com/babashka/babashka/issues/1110)
- Uberscript improvements [#584](https://github.com/babashka/babashka/issues/584), [#1037](https://github.com/babashka/babashka/issues/1037)
- Include native elements in printed stacktrace [#1105](https://github.com/babashka/babashka/issues/1105)
- Missing error message when exception happens in REPL print [#1116](https://github.com/babashka/babashka/issues/1116)
- Undeprecate `$` in babashka.process
- Add lots of library tests to CI ([@cldwalker](https://github.com/cldwalker))
- Release SNAPSHOT builds to
[babashka-dev-builds](https://github.com/babashka/babashka-dev-builds/releases)
(use only for testing)
## 0.7.0 (2021-12-10)
- Add compatibility with `clojure.spec.alpha`. See
[babashka/spec.alpha](https://github.com/babashka/spec.alpha) and this [blog
post](https://blog.michielborkent.nl/using-clojure-spec-alpha-with-babashka.html).
- Add `to-array-2d`, `aclone`, `areduce` and `amap` ([@MrEbbinghaus](https://github.com/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](https://github.com/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](https://github.com/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](https://github.com/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](https://github.com/babashka/babashka/issues/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](https://github.com/hugoduncan))
- Add `fs/home` and `fs/expand-home` to `babashka.fs` ([@Kineolyan](https://github.com/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](https://github.com/nikvdp))
- Add `javax.crypto.Mac` and `javax.crypto.spec.SecretKeySpec` classes to support development of [yaaws-api](https://github.com/grzm/yaaws-api) ([@grzm](https://github.com/grzm))
- Add `java.net.Inet4Address` and `java.net.Inet6Address` classes
- Fix `--version` option, don't read cp file. [#1071](https://github.com/babashka/babashka/issues/1071) ([@bobisageek](https://github.com/bobisageek))
- Add classes to support running the
[xforms](https://github.com/cgrand/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](https://github.com/gnarroway/hato) and
[clj-http-lite](https://github.com/clj-commons/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](https://github.com/babashka/tools.namespace). This allows
running the Cognitect
[test-runner](https://github.com/cognitect-labs/test-runner) (Cognitest) from source.
- Add various `tools.build` related classes for running parts of tools.build
with bb ([@hugoduncan](https://github.com/hugoduncan)). Keep an eye on [this
repo](https://github.com/babashka/tools.bbuild).
- Deps.clj: upgrade tools jar, support checking manifest staleness (see [TDEPS-83](https://clojure.atlassian.net/browse/TDEPS-83))
- Add `clojure.lang.IPersistentList` ([@FieryCod](https://github.com/FieryCod))
- The [contajners](https://github.com/lispyclouds/contajners) library is now compatible with babashka
- Support `Object` `toString` override on defrecords [#999](https://github.com/babashka/babashka/issues/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](https://github.com/babashka/babashka/issues/1055)
- Add `PGProperty` fields to reflection config (fix for postgres feature flag) [#1046](https://github.com/babashka/babashka/issues/1046) ([@bobisageek](https://github.com/bobisageek))
- Fix for `babashka.fs/unzip` when entry in dir comes before dir in entries
- Calling `.close` on `DirectoryStream` fails [#1061](https://github.com/babashka/babashka/issues/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](https://github.com/clj-commons/digest).
- Fix mapping for `babashka.fs/unzip` [#1030](https://github.com/babashka/babashka/issues/1030)
- Pods: support metadata in pod vars, like docstrings ([@quoll](https://github.com/quoll))
- babashka.curl: support `:follow-redirects false` ([@sudorock](https://github.com/sudorock))
- Add support for `--init` as a file to be loaded before evaluation actions [#1033](https://github.com/babashka/babashka/issues/1033) ([@bobisageek](https://github.com/bobisageek))
- Bump rewrite-clj to v1.0.699-alpha ([@yannvanhalewyn](https://github.com/yannvanhalewyn))
- Fix `BABASHKA_FEATURE_POSTGRESQL` feature flag, initialize `java.sql.SQLException` build time [#1040](https://github.com/babashka/babashka/issues/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](https://github.com/babashka/babashka/issues/1004) ([@bobisageek](https://github.com/bobisageek))
- Upgrade `deps.clj` (matches clojure CLI `1.10.986`)
- Print locals only when debug option is enabled [#1015](https://github.com/babashka/babashka/issues/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](https://github.com/lispyclouds))
### babashka.nrepl:
- Fix hanging CIDER [#45](https://github.com/babashka/babashka.nrepl/issues/45)
### babashka.fs:
- Add `fs/unzip`
## 0.6.1
- Fix for `java-http-clj` `send-async` [#997](https://github.com/babashka/babashka/issues/997)
- Add `PipedInput/OutputStream` [#1001](https://github.com/babashka/babashka/issues/1001)
- `aarch64` static binaries are compiled with `"-H:+StaticExecutableWithDynamicLibC"`
SCI:
- Self-referential function returns wrong binding in presence of laziness
[#1006](https://github.com/babashka/babashka/issues/1006)
## 0.6.0
- Support for `java.net` HTTP Client. This enables running
[java-http-clj](https://github.com/schmee/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](https://github.com/grzm))
- Add `*print-readably*` and `*flush-on-newline*` [#959](https://github.com/babashka/babashka/issues/959)
- Support `:clojure.core/eval-file metadata` [#960](https://github.com/babashka/babashka/issues/960)
- Add `clojure.data.xml/alias-uri` [#995](https://github.com/babashka/babashka/issues/995)
- Make REPL requires available in expression on command line [#972](https://github.com/babashka/babashka/issues/972) ([@bobisageek](https://github.com/bobisageek))
- Fix docstrings and metadata for large number of vars [#957](https://github.com/babashka/babashka/issues/957) ([@bobisageek](https://github.com/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](https://github.com/babashka/babashka/issues/969)
- Use tagged-literal for unknown tags when reading EDN via `*input*` [#975](https://github.com/babashka/babashka/issues/975) ([@bobisageek](https://github.com/bobisageek))
- Logging feature flag and `tools.logging.readable` [#981](https://github.com/babashka/babashka/issues/981) ([@bobisageek](https://github.com/bobisageek))
- Migrate GraalVM config to uberjar [#973](https://github.com/babashka/babashka/issues/973) ([@ericdallo](https://github.com/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](https://github.com/corasaurus-hex))
- Fixed: `with-open` fails on `java.io.PrintWriter` [#953](https://github.com/babashka/babashka/issues/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](https://github.com/babashka/babashka/issues/922)
- Support `pprint/cl-format` with `with-out-str` [#930](https://github.com/babashka/babashka/issues/930)
- Support passing `GITLIBS` via `:extra-env` in `clojure` to set git lib dir:
`(clojure {:extra-env {"GITLIBS" ".gitlib"}} ...)` [#934](https://github.com/babashka/babashka/issues/934)
- Add `--force` option to force recomputation of babashka deps classpath.
- Add `java.io.FileInputStream`. This fixes compatibility with [replikativ/hasch](https://github.com/replikativ/hasch).
- Update Selmer to `1.12.44`, include `<<` interpolation macro
- Passing form on Windows with question mark breaks evaluation [#889](https://github.com/babashka/babashka/issues/889)
- `(read-line)` is buggy in REPL [#899](https://github.com/babashka/babashka/issues/899)
- Fix `(read-line)` in REPL [#899](https://github.com/babashka/babashka/issues/899)
- `babashka.tasks/clojure` with `:dir` option doesn't resolve deps in `:dir` [#914](https://github.com/babashka/babashka/issues/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](https://github.com/borkdude/sci/issues/589)
Special thanks to:
- [@bobisageek](https://github.com/bobisageek) for spending time and energy on
getting the majority of tests to work on Windows.
- [@ptaoussanis](https://github.com/ptaoussanis) for creating [timbre](https://github.com/ptaoussanis/timbre).
- [@puredanger](https://github.com/puredanger) for accepting patches to
[data.json](https://github.com/clojure/data.json) which made it compatible
with babashka.
## 0.4.6
@ -76,7 +1029,7 @@ Babashka.pods:
- Add `babashka.task` `System` property [#837](https://github.com/babashka/babashka/issues/837)
- Allow thread-first with `shell` like `babashka.process` [#829](https://github.com/babashka/babashka/issues/829)
## 0.4.0
## 0.4.0 (2021-05-08)
Babashka proper:
@ -86,7 +1039,7 @@ Babashka proper:
[jasentaa](https://github.com/rm-hull/jasentaa) parser combinator library
- Update Selmer to 1.12.40
Sci:
SCI:
- Better error msg for protocol not found or class
@ -656,6 +1609,14 @@ Details about releases prior to v0.1.0 can be found
## Breaking changes
### v1.1.172
- Bump `babashka.process`: change default for `:out :append` to `:out :write`. This default is undocumented so the impact should be small.
### v1.1.171
- [#1467](https://github.com/babashka/babashka/issues/1467): avoid printing results, unless `--prn` is enabled (aside from `-e`, `-o` and `-O`).
### v0.2.4
- Remove cheshire smile functions [#658](https://github.com/babashka/babashka/issues/658)

View file

@ -1,16 +1,29 @@
FROM clojure:lein-2.9.1 AS BASE
FROM clojure:openjdk-11-lein-2.9.6-bullseye AS BASE
ENV DEBIAN_FRONTEND=noninteractive
RUN apt update
RUN apt install --no-install-recommends -yy curl unzip build-essential zlib1g-dev sudo
RUN apt install --no-install-recommends -yy build-essential zlib1g-dev
WORKDIR "/opt"
RUN curl -sLO https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-21.1.0/graalvm-ce-java11-linux-amd64-21.1.0.tar.gz
RUN tar -xzf graalvm-ce-java11-linux-amd64-21.1.0.tar.gz
ENV GRAALVM_VERSION="24"
ARG TARGETARCH
# Do not set those directly, use TARGETARCH instead
ENV BABASHKA_ARCH=
ENV GRAALVM_ARCH=
RUN if [ "${TARGETARCH}" = "" ] || [ "${TARGETARCH}" = "amd64" ]; then \
export GRAALVM_ARCH=x64; export BABASHKA_ARCH=x86_64; \
elif [ "${TARGETARCH}" = "arm64" ]; then \
export GRAALVM_ARCH=aarch64; \
fi && \
echo "Installing GraalVM for ${GRAALVM_ARCH}" && \
curl -sLO https://download.oracle.com/graalvm/${GRAALVM_VERSION}/archive/graalvm-jdk-${GRAALVM_VERSION}_linux-${GRAALVM_ARCH}_bin.tar.gz && \
mkdir "graalvm-$GRAALVM_VERSION" && \
tar -xzf graalvm-jdk-${GRAALVM_VERSION}_linux-${GRAALVM_ARCH}_bin.tar.gz -C graalvm-$GRAALVM_VERSION --strip-components 1
ARG BABASHKA_XMX="-J-Xmx4500m"
ENV GRAALVM_HOME="/opt/graalvm-ce-java11-21.1.0"
ENV JAVA_HOME="/opt/graalvm-ce-java11-21.1.0/bin"
ENV GRAALVM_HOME="/opt/graalvm-$GRAALVM_VERSION"
ENV JAVA_HOME="$GRAALVM_HOME/bin"
ENV PATH="$JAVA_HOME:$PATH"
ENV BABASHKA_XMX=$BABASHKA_XMX
@ -18,11 +31,11 @@ ENV BABASHKA_XMX=$BABASHKA_XMX
# by setting them at build time via `docker build --build-arg ARG_NAME=true ...`
ARG BABASHKA_LEAN=
ARG BABASHKA_MUSL=
ARG BABASHKA_FEATURE_CORE_ASYNC=
ARG BABASHKA_FEATURE_CSV=
ARG BABASHKA_FEATURE_JAVA_NET_HTTP=
ARG BABASHKA_FEATURE_JAVA_NIO=
ARG BABASHKA_FEATURE_JAVA_TIME=
ARG BABAHSKA_FEATURE_TRANSIT=
ARG BABASHKA_FEATURE_TRANSIT=
ARG BABASHKA_FEATURE_XML=
ARG BABASHKA_FEATURE_YAML=
ARG BABASHKA_FEATURE_HTTPKIT_CLIENT=
@ -35,11 +48,11 @@ ARG BABASHKA_FEATURE_DATASCRIPT=
ARG BABASHKA_FEATURE_LANTERNA=
ARG BABASHKA_STATIC=
ENV BABASHKA_LEAN=$BABASHKA_LEAN
ENV BABASHKA_FEATURE_CORE_ASYNC=$BABASHKA_FEATURE_CORE_ASYNC
ENV BABASHKA_FEATURE_CSV=$BABASHKA_FEATURE_CSV
ENV BABASHKA_FEATURE_JAVA_NET_HTTP=$BABASHKA_FEATURE_JAVA_NET_HTTP
ENV BABASHKA_FEATURE_JAVA_NIO=$BABASHKA_FEATURE_JAVA_NIO
ENV BABASHKA_FEATURE_JAVA_TIME=$BABASHKA_FEATURE_JAVA_TIME
ENV BABAHSKA_FEATURE_TRANSIT=$BABAHSKA_FEATURE_TRANSIT
ENV BABASHKA_FEATURE_TRANSIT=$BABASHKA_FEATURE_TRANSIT
ENV BABASHKA_FEATURE_XML=$BABASHKA_FEATURE_XML
ENV BABASHKA_FEATURE_YAML=$BABASHKA_FEATURE_YAML
ENV BABASHKA_FEATURE_HTTPKIT_CLIENT=$BABASHKA_FEATURE_HTTPKIT_CLIENT
@ -60,6 +73,9 @@ RUN ./script/compile
FROM ubuntu:latest
RUN apt-get update && apt-get install -y curl \
&& mkdir -p /usr/local/bin
&& rm -rf /var/lib/apt/lists/* \
&& mkdir -p /usr/local/bin
COPY --from=BASE /opt/target/metabom.jar /opt/babashka-metabom.jar
COPY --from=BASE /opt/bb /usr/local/bin/bb
CMD ["bb"]

View file

@ -4,15 +4,20 @@ COPY bb /bin/bb
RUN chmod +x /bin/bb
# TODO: See https://github.com/sgerrand/alpine-pkg-glibc/issues/185 and remove the `--force-overwrite`s when resolved.
RUN apk --no-cache add curl ca-certificates tar && \
curl -Ls https://github.com/sgerrand/alpine-pkg-glibc/releases/download/2.28-r0/glibc-2.28-r0.apk > /tmp/glibc-2.28-r0.apk && \
apk add --allow-untrusted /tmp/glibc-2.28-r0.apk
apk add --allow-untrusted --force-overwrite /tmp/glibc-2.28-r0.apk
RUN echo 'hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4' >> /etc/nsswitch.conf
# TODO: Run actual native tests when they are ported
RUN bb -e "(curl/get \"https://httpstat.us/200\")" # cURL http test
RUN bb -e "(require '[org.httpkit.client :as http]) (when-let [error (:error @(http/get \"https://httpstat.us/200\"))] (throw error))" # JVM http test
RUN curl --version
# RUN bb -e '(prn (java.io.File/createTempFile "babashka.curl" ".headers"))'
# RUN bb -e '(spit (java.io.File/createTempFile "babashka.curl" ".headers") "hello")'
# RUN bb -e "(curl/get \"https://clojure.org\")" # cURL http test
RUN bb -e "(require '[org.httpkit.client :as http]) (when-let [error (:error @(http/get \"https://clojure.org\"))] (throw error))" # JVM http test
RUN bb -e "(.length \"Hello, Babashka\")" # Java interop test
RUN bb -e "(require '[babashka.pods :as pods]) (pods/load-pod 'org.babashka/go-sqlite3 \"0.0.1\") (require '[pod.babashka.go-sqlite3 :as sqlite]) (sqlite/execute! \"/tmp/foo.db\" [\"SELECT 1 + 1\"])" # Pod test
@ -21,9 +26,10 @@ FROM alpine:3
RUN apk --no-cache add curl ca-certificates tar && \
curl -Ls https://github.com/sgerrand/alpine-pkg-glibc/releases/download/2.28-r0/glibc-2.28-r0.apk > /tmp/glibc-2.28-r0.apk && \
apk add --allow-untrusted /tmp/glibc-2.28-r0.apk
apk add --allow-untrusted --force-overwrite /tmp/glibc-2.28-r0.apk && rm /tmp/glibc-2.28-r0.apk
RUN echo 'hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4' >> /etc/nsswitch.conf
COPY metabom.jar /opt/babashka-metabom.jar
COPY --from=tester /bin/bb /bin/bb
CMD ["bb"]

View file

@ -2,9 +2,14 @@ FROM ubuntu:latest
RUN apt-get update \
&& apt-get install -y curl \
&& rm -rf /var/lib/apt/lists/* \
&& mkdir -p /usr/local/bin
COPY bb /usr/local/bin/bb
ARG TARGETARCH
ARG TARGETOS
COPY metabom.jar /opt/babashka-metabom.jar
COPY ${TARGETOS}/${TARGETARCH}/bb /usr/local/bin/bb
RUN chmod +x /usr/local/bin/bb

257
README.md
View file

@ -1,9 +1,10 @@
<img src="logo/babashka.svg" width="425px">
[<img src="logo/babashka.svg" alt="Babashka" width="425px">](https://babashka.org)
[![CircleCI](https://circleci.com/gh/babashka/babashka/tree/master.svg?style=shield)](https://circleci.com/gh/babashka/babashka/tree/master)
[![project chat](https://img.shields.io/badge/slack-join_chat-brightgreen.svg)](https://app.slack.com/client/T03RZGPFR/CLX41ASCS)
[![Financial Contributors on Open Collective](https://opencollective.com/babashka/all/badge.svg?label=financial+contributors)](https://opencollective.com/babashka) [![Clojars Project](https://img.shields.io/clojars/v/babashka/babashka.svg)](https://clojars.org/babashka/babashka)
[![twitter](https://img.shields.io/badge/twitter-%23babashka-blue)](https://twitter.com/search?q=%23babashka&src=typed_query&f=live)
[![docs](https://img.shields.io/badge/website-docs-blue)](https://book.babashka.org) [![Gurubase](https://img.shields.io/badge/Gurubase-Ask%20Babashka%20Guru-006BFF)](https://gurubase.io/g/babashka)
<blockquote class="twitter-tweet" data-lang="en">
<p lang="en" dir="ltr">Life's too short to remember how to write Bash code. I feel liberated.</p>
@ -33,17 +34,16 @@ As one user described it:
### Non-goals
* Performance
* Provide a mixed Clojure/Bash DSL (see portability).
* Replace existing shells. Babashka is a tool you can use inside existing shells like bash and it is designed to play well with them. It does not aim to replace them.
## Quickstart
For installation options check [Installation](https://github.com/babashka/babashka#installation).
For quick installation use:
For quick installation using `bash`, use:
``` shell
$ bash < <(curl -s https://raw.githubusercontent.com/babashka/babashka/master/install)
bash < <(curl -s https://raw.githubusercontent.com/babashka/babashka/master/install)
```
or grab a binary from [Github
@ -53,23 +53,51 @@ anywhere on the path.
Then you're ready to go:
``` shellsession
$ ls | bb -i '(filter #(-> % io/file .isDirectory) *input*)'
("doc" "resources" "sci" "script" "src" "target" "test")
bb took 4ms.
time bb -e '(->> (fs/list-dir ".") (filter fs/directory?) (map fs/normalize) (map str) (take 3))'
```
### Babashka users
``` clojure
(".build" "feature-lanterna" ".repl")
bb -e 0,01s user 0,01s system 70% cpu 0,017 total
```
Are you using babashka in your company or personal projects? Let us know [here](https://github.com/babashka/babashka/issues/254).
## Support :heart:
### Setting expectations
You can support this project via [Github
Sponsors](https://github.com/sponsors/borkdude),
[OpenCollective](https://opencollective.com/babashka),
[Ko-fi](https://ko-fi.com/borkdude) or indirectly via [Clojurists
Together](https://www.clojuriststogether.org/).
Babashka uses [sci](https://github.com/borkdude/sci) for interpreting
Clojure. Sci implements a substantial subset of Clojure. Interpreting code is in
<details>
<summary>Top sponsors</summary>
- [Clojurists Together](https://clojuriststogether.org/)
- [Roam Research](https://roamresearch.com/)
- [Nextjournal](https://nextjournal.com/)
- [Toyokumo](https://toyokumo.co.jp/)
- [Cognitect](https://www.cognitect.com/)
- [Kepler16](https://kepler16.com/)
- [Adgoji](https://www.adgoji.com/)
</details>
## Babashka users
See [companies](doc/companies.md) for a list of companies using babashka.
Are you using babashka in your company or personal projects? Let us know
[here](https://github.com/babashka/babashka/issues/254).
## Setting expectations
Babashka uses [SCI](https://github.com/borkdude/sci) for interpreting
Clojure. SCI implements a substantial subset of Clojure. Interpreting code is in
general not as performant as executing compiled code. If your script takes more
than a few seconds to run or has lots of loops, Clojure on the JVM may be a
better fit as the performance on JVM is going to outweigh its
startup time penalty. Read more about the differences with Clojure
better fit as the performance on JVM is going to outweigh its startup time
penalty. Read more about the differences with Clojure
[here](#differences-with-clojure).
## Status
@ -79,7 +107,7 @@ and is unlikely to change. Changes may happen in other parts of babashka,
although we will try our best to prevent them. Always check the release notes or
[CHANGELOG.md](CHANGELOG.md) before upgrading.
### Talk
## Talk
To get an overview of babashka, you can watch this talk ([slides](https://speakerdeck.com/borkdude/babashka-and-the-small-clojure-interpreter-at-clojured-2020)):
@ -90,44 +118,10 @@ To get an overview of babashka, you can watch this talk ([slides](https://speake
The [babashka book](https://book.babashka.org) contains detailed information
about how to get the most out of babashka scripting.
## Examples
Read the output from a shell command as a lazy seq of strings:
``` shell
$ ls | bb -i '(take 2 *input*)'
("CHANGES.md" "Dockerfile")
```
Read EDN from stdin and write the result to stdout:
``` shell
$ bb '(vec (dedupe *input*))' <<< '[1 1 1 1 2]'
[1 2]
```
Read more about input and output flags [here](https://book.babashka.org/#_input_and_output_flags).
Execute a script. E.g. print the current time in California using the
`java.time` API:
File `pst.clj`:
``` clojure
#!/usr/bin/env bb
(def now (java.time.ZonedDateTime/now))
(def LA-timezone (java.time.ZoneId/of "America/Los_Angeles"))
(def LA-time (.withZoneSameInstant now LA-timezone))
(def pattern (java.time.format.DateTimeFormatter/ofPattern "HH:mm"))
(println (.format LA-time pattern))
```
``` shell
$ pst.clj
05:17
```
More examples can be found [here](examples/README.md).
There is also the book [Babashka Babooka](https://www.braveclojure.com/quests/babooka/),
by Daniel Higginbotham, who has also helped a lot of people learn Clojure with
[Clojure for the Brave and
True](https://www.braveclojure.com/clojure-for-the-brave-and-true/).
## Try online
@ -148,6 +142,30 @@ Upgrade:
brew upgrade babashka
### Nix
Linux and macOS (including ARM Macs) binaries are provided via nix (see the installation instructions for nix [here](https://nixos.org/download.html)).
Install:
# Adding `nixpkgs-unstable` channel for more up-to-date binaries, skip this if you already have `nixpkgs-unstable` in your channel list
nix-channel --add https://nixos.org/channels/nixpkgs-unstable nixpkgs-unstable
nix-channel --update
nix-env -iA nixpkgs-unstable.babashka
Upgrade:
nix-channel --update
nix-env -iA nixpkgs-unstable.babashka
You can find more documentation on how to use babashka with nix [here](./doc/nix.md).
### Alpine
On Alpine it's recommended to download the binary manually from [Github
Releases](https://github.com/babashka/babashka/releases) and use the static
linux binary.
### Arch (Linux)
`babashka` is [available](https://aur.archlinux.org/packages/babashka-bin/) in the [Arch User Repository](https://aur.archlinux.org). It can be installed using your favorite [AUR](https://aur.archlinux.org) helper such as
@ -157,15 +175,29 @@ Upgrade:
### asdf
[asdf](https://github.com/asdf-vm/asdf) is an extendable version manager for linux and macOS.
[asdf](https://github.com/asdf-vm/asdf) is an extendable version manager for linux and macOS. Note that asdf will add significant startup time to any babashka script, consider using [mise](#mise) instead.
Babashka can be installed using a plugin as follows:
asdf plugin add babashka
asdf plugin add babashka https://github.com/pitch-io/asdf-babashka
asdf install babashka latest
### mise
[mise](https://mise.jdx.dev/) is a development environment setup tool for linux and macOS.
Install:
mise use --global babashka@latest
Upgrade:
mise upgrade babashka
### Windows
#### Scoop
On Windows you can install using [scoop](https://scoop.sh/) and the
[scoop-clojure](https://github.com/littleli/scoop-clojure) bucket.
@ -180,12 +212,28 @@ scoop bucket add extras
scoop install babashka
```
#### Manual
If scoop does not work for you, then you can also just download the `bb.exe`
binary from [Github releases](https://github.com/babashka/babashka/releases) and
place it on your path manually.
#### WSL1
> Note: WSL1 users might experience a BSOD, please use the --static install option when installing
``` shell
$ curl -sLO https://raw.githubusercontent.com/babashka/babashka/master/install
$ chmod +x install
$ ./install --static
```
### Installer script
Install via the installer script:
Install via the installer script for linux and macOS:
``` shell
$ 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
$ ./install
```
@ -234,6 +282,12 @@ You may also download a binary from
[Github](https://github.com/babashka/babashka/releases). For linux there is a
static binary available which can be used on Alpine.
### CI
- On Github Actions it's recommended to use [setup-clojure](https://github.com/DeLaGuardo/setup-clojure) with `bb: latest`.
- You can use the [installer script](https://github.com/babashka/babashka#installer-script) on any non-Windows CI system. CircleCI requires `sudo`.
- On Appveyor + Windows you can use a bit of [Powershell](https://github.com/clj-kondo/clj-kondo/blob/39b5cb2b0d3d004c005e8975b6fafe0e314eec68/appveyor.yml#L60-L64).
## Docker
Check out the image on [Docker hub](https://hub.docker.com/r/babashka/babashka/).
@ -246,17 +300,33 @@ Check out the [news](doc/news.md) page to keep track of babashka-related news it
Go [here](https://book.babashka.org/#built-in-namespaces) to see the full list of built-in namespaces.
## [Projects](doc/projects.md)
## [Compatible Projects](doc/projects.md)
A list of projects (scripts, libraries, pods and tools) known to work with babashka.
## Badges
[![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.
[![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.
See [the babashka book for details](https://book.babashka.org#badges).
## Swag
- [t-shirt](https://www.etsy.com/listing/1241766068/babashka-clj-kondo-nbb-shirt)
## [Pods](https://github.com/babashka/babashka.pods)
Pods are programs that can be used as a Clojure library by
babashka. Documentation is available in the [pod library
repo](https://github.com/babashka/babashka.pods).
repo](https://github.com/babashka/pods).
A list of available pods can be found [here](doc/projects.md#pods).
A list of available pods can be found in the [pod registry](https://github.com/babashka/pod-registry).
## Differences with Clojure
@ -298,6 +368,41 @@ handling of SIGINT and SIGPIPE. This can be done by setting
## Articles, podcasts and videos
- [Blambda analyses sites](https://jmglov.net/blog/2023-01-04-blambda-analyses-sites.html) by Josh Glover
- [The wizard of HOP - How we built the web based HOP CLI Settings Editor using Babashka and Scittle](https://www.gethop.dev/post/the-wizard-of-hop-how-we-built-the-web-based-hop-cli-settings-editor-using-babashka-and-scittle) by Bingen Galartza
- [Simple TUIs with Babashka and Gum](https://rattlin.blog/bbgum.html) by Rattlin.blog
- [Babashka And Dialog Part Ii: Announcing The Bb-Dialog Library](https://www.pixelated-noise.com/blog/2023/01/20/bb-dialog-announcement/index.html) by A.C. Danvers
- [Babashka Babooka](https://www.braveclojure.com/quests/babooka/): Write Command-Line Clojure by Daniel Higginbotham
- [Re-Writing a GlobalProtect OpenConnect VPN Connect script in Babashka](https://tech.toryanderson.com/2023/01/14/re-writing-a-globalprotect-openconnect-vpn-connect-script-in-babashka/) by Tory Anderson
- [Babashka: How GraalVM Helped Create a Fast-Starting Scripting Environment for Clojure](https://medium.com/graalvm/babashka-how-graalvm-helped-create-a-fast-starting-scripting-environment-for-clojure-b0fcc38b0746) by Michiel Borkent (Japanese version [here]((https://logico-jp.io/2023/01/07/babashka-how-graalvm-helped-create-a-fast-starting-scripting-environment-for-clojure/)))
- [Adding Prompts To Your Babashka Scripts With Dialog](https://www.pixelated-noise.com/blog/2022/12/09/dialog-and-babashka/index.html) by A.C. Danvers
- [Scraping an HTML dictionary with Babashka and Bootleg](https://blog.exupero.org/scraping-an-html-dictionary-with-babashka-and-bootleg/) by exupero
- [Using Babashka to Get Electricity Prices](https://www.karimarttila.fi/clojure/2022/12/04/using-babashka-to-get-electricity-prices.html) by Kari Marttila
- [How to Do Things With Babashka](https://presumably.de/how-to-do-things-with-babashka.html) by Paulus Esterhazy (2022-12)
- [Using nREPL as a system interface](https://yogthos.net/posts/2022-11-26-nREPL-system-interaction.html) by Dmitri Sotnikov
- [Manage git hooks with babashka tasks](https://blaster.ai/blog/posts/manage-git-hooks-w-babashka.html) by Mykhaylo Bilyanskyy
- [Messing around with babashka](https://ian-muge.medium.com/messing-around-with-babashka-f181a9003faa) by Ian Muge
- Introducing [bbin](https://radsmith.com/bbin) by Radford Smith (2022-09)
- [Deleting AWS Glacier vaults with babashka](https://javahippie.net/clojure/2022/07/23/deleting-aws-glacier-vaults-with-babashka.html) by Tim Zöller
- [Recursive document transformations with Pandoc and Clojure](https://play.teod.eu/document-transform-pandoc-clojure/) by Teodor Heggelund
- [Blambda!](https://jmglov.net/blog/2022-07-03-blambda.html) by Josh Glover
- [Babashka CLI](https://blog.michielborkent.nl/babashka-cli.html): turn Clojure functions into CLIs!
- [Breakneck Babashka on K8s](https://www.linkedin.com/pulse/breakneck-babashka-k8s-heow-goodman/) by Heow Goodman
- [Recursive document transformations with Pandoc and Clojure](https://play.teod.eu/document-transform-pandoc-clojure/)
- [Detecting inconsistent aliases in a clojure codebase](https://www.youtube.com/watch?v=bf8KLKkCH2g) by Oxalorg
- [I, too, Wrote Myself a Static Site Generator](https://dawranliou.com/blog/i-too-wrote-myself-a-static-site-generator/) by Daw-Ran Liou
- [Babashka and Clojure](https://youtu.be/ZvOs5Ele6VE) by Rahul Dé at North Virginia Linux Users Group
- [Create a password manager with Clojure using Babashka, sqlite, honeysql and stash](https://youtu.be/jm0RXmyjRJ8) by Daniel Amber
- [Writing Clojure-living-cookbooks](https://www.loop-code-recur.io/live-clojure-cookbooks) by Cyprien Pannier
- [Using babashka with PHP](https://blog.michielborkent.nl/using-babashka-with-php.html) by Michiel Borkent
- [Moldable Emacs: a Clojure Playground with Babashka](https://ag91.github.io/blog/2021/11/05/moldable-emacs-a-clojure-playground-with-babashka/) by Andrea
- [Finding my inner Wes Anderson with #Babashka](https://javahippie.net/clojure/2021/10/18/finding-my-inner-wes-anderson.html) by Tim Zöller
- [Awesome Babashka: Parse & produce HTML and SQLite](https://blog.jakubholy.net/2021/awesome-babashka-dash/) by Jakub Holý
- [Babashka tasks](https://youtu.be/u5ECoR7KT1Y), talk by Michiel Borkent
- [Rewriting a clojure file with rewrite-clj and babashka](https://youtu.be/b7NPKsm8gkc), video by Oxalorg
- [Integrating Babashka into Bazel](https://timjaeger.io/20210627-integrating-babashka-with-bazel.html) by Tim Jäger
- [Talk](https://youtu.be/Yjeh57eE9rg): Babashka: a native Clojure interpreter for scripting — The 2021 Graal Workshop at CGO
- [Blog](https://savo.rocks/posts/playing-new-music-on-old-car-stereo-with-clojure-and-babashka/): Playing New Music On Old Car Stereo With Clojure And Babashka
- [Homoiconicity and feature flags](https://martinklepsch.org/posts/homoiconicity-and-feature-flags.html) by Martin Klepsch
- [Clojure like its PHP](https://eccentric-j.com/blog/clojure-like-its-php.html) by Jay Zawrotny (eccentric-j)
- [Deploy babashka script to AWS Lambda](https://www.jocas.lt/blog/post/babashka-aws-lambda/) by Dainius Jocas.
@ -338,7 +443,7 @@ binary, these evaluation criteria are considered:
- The library cannot be interpreted by with babashka using `--classpath`.
- The functionality can't be met by shelling out to another CLI or can't be
written as a small layer over an existing CLI (like `babashka.curl`) instead.
- The library cannot be implemented a
- The library cannot be implemented as a
[pod](https://github.com/babashka/babashka.pods).
If not all of the criteria are met, but adding a feature is still useful to a
@ -364,42 +469,10 @@ commit](https://github.com/babashka/babashka/commit/02c7c51ad4b2b1ab9aa95c26a744
Thanks to all the people that contributed to babashka:
- [Adgoji](https://www.adgoji.com/) for financial support
- [CircleCI](https://circleci.com/) for CI and additional support
- [Nikita Prokopov](https://github.com/tonsky) for the logo
- [Contributors](https://github.com/babashka/babashka/graphs/contributors) and
other users posting issues with bug reports and ideas
- [Github sponsors](https://github.com/sponsors/borkdude)
- [OpenCollective sponsors](https://opencollective.com/babashka)
- [Clojurists Together](https://www.clojuriststogether.org/)
### Code Contributors
This project exists thanks to all the people who contribute. [[Contribute](doc/dev.md)].
<a href="https://github.com/babashka/babashka/graphs/contributors"><img src="https://opencollective.com/babashka/contributors.svg?width=890&button=false" /></a>
### Financial Contributors
Become a financial contributor and help us sustain our community. [[Contribute](https://opencollective.com/babashka/contribute)]
#### Individuals
<a href="https://opencollective.com/babashka"><img src="https://opencollective.com/babashka/individuals.svg?width=890"></a>
#### Organizations
Support this project with your organization. Your logo will show up here with a link to your website. [[Contribute](https://opencollective.com/babashka/contribute)]
<a href="https://opencollective.com/babashka/organization/0/website"><img src="https://opencollective.com/babashka/organization/0/avatar.svg"></a>
<a href="https://opencollective.com/babashka/organization/1/website"><img src="https://opencollective.com/babashka/organization/1/avatar.svg"></a>
<a href="https://opencollective.com/babashka/organization/2/website"><img src="https://opencollective.com/babashka/organization/2/avatar.svg"></a>
<a href="https://opencollective.com/babashka/organization/3/website"><img src="https://opencollective.com/babashka/organization/3/avatar.svg"></a>
<a href="https://opencollective.com/babashka/organization/4/website"><img src="https://opencollective.com/babashka/organization/4/avatar.svg"></a>
<a href="https://opencollective.com/babashka/organization/5/website"><img src="https://opencollective.com/babashka/organization/5/avatar.svg"></a>
<a href="https://opencollective.com/babashka/organization/6/website"><img src="https://opencollective.com/babashka/organization/6/avatar.svg"></a>
<a href="https://opencollective.com/babashka/organization/7/website"><img src="https://opencollective.com/babashka/organization/7/avatar.svg"></a>
<a href="https://opencollective.com/babashka/organization/8/website"><img src="https://opencollective.com/babashka/organization/8/avatar.svg"></a>
<a href="https://opencollective.com/babashka/organization/9/website"><img src="https://opencollective.com/babashka/organization/9/avatar.svg"></a>
## License

View file

@ -2,21 +2,30 @@
version: "v-{build}"
image: Visual Studio 2017
image: Visual Studio 2022
clone_folder: C:\projects\babashka
environment:
GRAALVM_HOME: C:\projects\babashka\graalvm\graalvm-ce-java11-21.1.0
JAVA_HOME: C:\projects\babashka\graalvm\graalvm-ce-java11-21.1.0
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:
files:
- "logo/*"
- "**/*.md"
cache:
- C:\ProgramData\chocolatey\lib -> project.clj, appveyor.yml
- '%USERPROFILE%\.m2 -> project.clj'
- 'graalvm -> appveyor.yml'
clone_script:
- cmd: git config --global core.autocrlf true
- cmd: git config --global core.symlinks true
- ps: >-
if(-not $env:APPVEYOR_PULL_REQUEST_NUMBER) {
git clone -q --branch=$env:APPVEYOR_REPO_BRANCH https://github.com/$env:APPVEYOR_REPO_NAME.git $env:APPVEYOR_BUILD_FOLDER
@ -30,9 +39,12 @@ clone_script:
}
- cmd: git submodule update --init --recursive
- cmd: git reset --hard
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://github.com/graalvm/graalvm-ce-builds/releases/download/vm-21.1.0/graalvm-ce-java11-windows-amd64-21.1.0.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 }"
@ -41,15 +53,15 @@ build_script:
call lein self-install
- cmd: >-
set BABASHKA_TEST_ENV=jvm
#- cmd: >-
# set BABASHKA_TEST_ENV=jvm
call script/test.bat
# call script/test.bat
# see https://github.com/quarkusio/quarkus/pull/7663
- cmd: >-
call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars64.bat"
set BABASHKA_SHA=%APPVEYOR_REPO_COMMIT%
call script/uberjar.bat
@ -61,15 +73,19 @@ build_script:
jar -cMf %zip% bb.exe
set BABASHKA_EDN=.build/bb.edn
bb --config .build/bb.edn --deps-root . release-artifact %zip%
bb release-artifact %zip%
set BABASHKA_EDN=
before_test:
- cmd: >-
set BABASHKA_CLASSPATH=
set BABASHKA_TEST_ENV=native
call script/test.bat
test_script:
- cmd: >-
call script/test.bat :windows
call script/run_lib_tests.bat
artifacts:
- path: babashka-*-windows-amd64.zip

1
babashka.core Submodule

@ -0,0 +1 @@
Subproject commit 52a6037bd4b632bffffb04394fb4efd0cdab6b1e

@ -1 +1 @@
Subproject commit cf71c8ae24a4f8ec85663970f4b8a3f63a0c1a6b
Subproject commit e936acd40544eb637b6041c7e89454b21eb7ee34

@ -1 +1 @@
Subproject commit bd1ce0cbc0861350a4a36e9c31ef79fa0c7cff84
Subproject commit edd3d613bfb9bf3adabfd0bda5c3f5c6ee85ec20

@ -1 +1 @@
Subproject commit 520b6b053b7bdfe46990ab82220a2d13f79f9772
Subproject commit 976cf7b0e54901ada3f7e83f12a4c0aed039adc9

193
deps.edn
View file

@ -1,4 +1,4 @@
{:paths ["src" "feature-xml" "feature-core-async"
{:paths ["src" "feature-xml"
"feature-yaml" "feature-csv" "feature-transit"
"feature-java-time" "feature-java-nio"
"feature-httpkit-client" "feature-httpkit-server"
@ -7,59 +7,70 @@
"feature-hiccup"
"feature-test-check"
"feature-spec-alpha"
"feature-rewrite-clj"
"feature-selmer"
"feature-logging"
"feature-priority-map"
"feature-rrb-vector"
"feature-jdbc"
"pods/src"
"babashka.nrepl/src"
"depstar/src" "process/src"
"deps.clj/src" "deps.clj/resources"
"resources" "sci/resources"],
:deps {org.clojure/clojure {:mvn/version "1.11.0-alpha1"},
borkdude/sci {:local/root "sci"}
"resources" "sci/resources"
"impl-java/src"],
:deps {org.clojure/clojure {:mvn/version "1.12.0"},
org.babashka/sci {:local/root "sci"}
org.babashka/babashka.impl.java {:mvn/version "0.1.10"}
org.babashka/sci.impl.types {:mvn/version "0.0.2"}
babashka/babashka.curl {:local/root "babashka.curl"}
babashka/fs {:local/root "fs"}
borkdude/graal.locking {:mvn/version "0.0.2"},
org.clojure/core.async {:mvn/version "1.3.610"},
org.clojure/tools.cli {:mvn/version "1.0.206"},
babashka/babashka.core {:local/root "babashka.core"}
org.clojure/core.async {:mvn/version "1.8.741"},
org.clojure/tools.cli {:mvn/version "1.0.214"},
org.clojure/data.csv {:mvn/version "1.0.0"},
cheshire/cheshire {:mvn/version "5.10.0"}
org.clojure/data.xml {:mvn/version "0.2.0-alpha6"}
clj-commons/clj-yaml {:mvn/version "0.7.106"}
com.cognitect/transit-clj {:mvn/version "1.0.324"}
org.clojure/test.check {:mvn/version "1.1.0"}
nrepl/bencode {:mvn/version "1.1.0"}
cheshire/cheshire {:mvn/version "6.0.0"}
org.clojure/data.xml {:mvn/version "0.2.0-alpha8"}
clj-commons/clj-yaml {:mvn/version "1.0.29"}
com.cognitect/transit-clj {:mvn/version "1.0.333"}
org.clojure/test.check {:mvn/version "1.1.1"}
nrepl/bencode {:mvn/version "1.2.0"}
seancorfield/next.jdbc {:mvn/version "1.1.610"}
org.postgresql/postgresql {:mvn/version "42.2.18"}
org.hsqldb/hsqldb {:mvn/version "2.5.1"}
datascript/datascript {:mvn/version "1.0.1"}
http-kit/http-kit {:mvn/version "2.5.3"}
http-kit/http-kit {:mvn/version "2.8.0-RC1"}
babashka/clojure-lanterna {:mvn/version "0.9.8-SNAPSHOT"}
org.clojure/core.match {:mvn/version "1.0.0"}
hiccup/hiccup {:mvn/version "2.0.0-alpha2"}
rewrite-clj/rewrite-clj {:mvn/version "1.0.605-alpha"}
selmer/selmer {:mvn/version "1.12.40"}}
hiccup/hiccup {:mvn/version "2.0.0-RC1"}
rewrite-clj/rewrite-clj {:mvn/version "1.1.49"}
selmer/selmer {:mvn/version "1.12.59"}
com.taoensso/timbre {:mvn/version "6.6.0"}
org.clojure/tools.logging {:mvn/version "1.1.0"}
org.clojure/data.priority-map {:mvn/version "1.1.0"}
insn/insn {:mvn/version "0.5.2"}
org.clojure/core.rrb-vector {:mvn/version "0.1.2"}
org.babashka/cli {:mvn/version "0.8.65"}
org.babashka/http-client {:mvn/version "0.4.22"}
org.flatland/ordered {:mvn/version "1.15.12"}
org.jsoup/jsoup {:mvn/version "1.20.1"}}
:aliases {:babashka/dev
{:main-opts ["-m" "babashka.main"]}
:profile
{:extra-deps
{com.clojure-goes-fast/clj-async-profiler {:mvn/version "0.4.1"}}
{com.clojure-goes-fast/clj-async-profiler {:mvn/version "0.5.0"}}
:extra-paths ["test"]
:jvm-opts ["-Djdk.attach.allowAttachSelf"]
:jvm-opts ["-Djdk.attach.allowAttachSelf"
"-Dclojure.compiler.direct-linking=true"]
:main-opts ["-m" "babashka.profile"]}
:lib-tests
{:extra-paths ["process/src" "process/test"]
:extra-deps {babashka/clj-http-lite
{:git/url "https://github.com/babashka/clj-http-lite"
:sha "f44ebe45446f0f44f2b73761d102af3da6d0a13e"}
borkdude/spartan.spec {:git/url "https://github.com/borkdude/spartan.spec"
:sha "16f7eec4b6589c77c96c9fcf989f78fffcee7c4c"}
lambdaisland/regal {:git/url "https://github.com/lambdaisland/regal"
:sha "f902d2c43121f9e1c48603d6eb99f5900eb6a9f6"}
weavejester/medley {:git/url "https://github.com/weavejester/medley"
:sha "a4e5fb5383f5c0d83cb2d005181a35b76d8a136d"}
{:extra-paths ["process/src" "process/test" "test-resources/lib_tests"]
:extra-deps {org.clj-commons/clj-http-lite {:mvn/version "0.4.392"}
#_#_org.babashka/spec.alpha {:git/url "https://github.com/babashka/spec.alpha"
:sha "0dec1f88cbde74a0470b454396f09a03adb4ae39"}
lambdaisland/regal {:mvn/version "0.0.143"}
cprop/cprop {:mvn/version "0.1.16"}
comb/comb {:mvn/version "0.1.1"}
mvxcvi/arrangement {:mvn/version "1.2.0"}
mvxcvi/arrangement {:mvn/version "2.0.0"}
org.clojure/data.zip {:mvn/version "1.0.0"}
clojure-csv/clojure-csv {:mvn/version "2.0.2"}
org.clojure/math.combinatorics {:mvn/version "0.1.6"}
@ -67,23 +78,121 @@
henryw374/cljc.java-time
{:git/url "https://github.com/henryw374/cljc.java-time.git"
:sha "e3d184b78e933322b3fcaa6ca66cbb8f42a6b35c"}
camel-snake-kebab/camel-snake-kebab {:mvn/version "0.4.1"}
camel-snake-kebab/camel-snake-kebab {:mvn/version "0.4.2"}
aero/aero {:mvn/version "1.1.6"}
org.clojure/data.generators {:mvn/version "1.0.0"}
honeysql/honeysql {:mvn/version "1.0.444"}
com.github.seancorfield/honeysql {:mvn/version "2.0.0-rc2"}
minimallist/minimallist {:mvn/version "0.0.6"}
circleci/bond {:mvn/version "0.4.0"}
version-clj/version-clj {:mvn/version "2.0.1"}
honeysql/honeysql {:mvn/version "1.0.461"}
com.github.seancorfield/honeysql {:mvn/version "2.2.840"}
minimallist/minimallist {:mvn/version "0.0.10"}
circleci/bond {:mvn/version "0.6.0"}
version-clj/version-clj {:mvn/version "2.0.2"}
gaka/gaka {:mvn/version "0.3.0"}
failjure/failjure {:mvn/version "2.1.1"}
failjure/failjure {:mvn/version "2.2.0"}
io.helins/binf {:mvn/version "1.1.0-beta0"}
rm-hull/jasentaa {:mvn/version "0.2.5"}
slingshot/slingshot {:mvn/version "0.12.2"}}
slingshot/slingshot {:mvn/version "0.12.2"}
io.replikativ/hasch {:mvn/version "0.3.7"}
com.grammarly/omniconf {:mvn/version "0.4.3"}
crispin/crispin {:mvn/version "0.3.8"}
org.clojure/data.json {:mvn/version "2.4.0"}
clj-commons/multigrep {:mvn/version "0.5.0"}
amperity/vault-clj {:mvn/version "1.0.4"}
java-http-clj/java-http-clj {:mvn/version "0.4.3"}
com.stuartsierra/component {:mvn/version "1.0.0"}
org.clojars.askonomm/ruuter {:mvn/version "1.2.2"}
org.clj-commons/digest {:mvn/version "1.4.100"}
hato/hato {:mvn/version "0.8.2"}
better-cond/better-cond {:mvn/version "2.1.1"}
org.clojure/core.specs.alpha {:mvn/version "0.2.62"}
reifyhealth/specmonstah {:git/url "https://github.com/reifyhealth/specmonstah", :sha "a2b357009a3aa99a0c2d2361f3bbcd0b0e36505e"}
exoscale/coax {:mvn/version "1.0.0-alpha14"}
orchestra/orchestra {:mvn/version "2021.01.01-1"}
expound/expound {:mvn/version "0.8.10"}
integrant/integrant {:git/url "https://github.com/weavejester/integrant", :git/sha "a9fd7c02bd7201f36344b47142badc3c3ef22f88"}
com.stuartsierra/dependency {:mvn/version "1.0.0"}
listora/again {:mvn/version "1.0.0"}
org.clojure/tools.gitlibs {:mvn/version "2.4.172"}
environ/environ {:mvn/version "1.2.0"}
table/table {:git/url "https://github.com/cldwalker/table", :sha "f6293c5f3dac1dd6f525a80fc80930f8ccdf16b7"}
markdown-clj/markdown-clj {:mvn/version "1.10.8"}
org.clojure/tools.namespace {:git/sha "daf82a10e70182aea4c0716a48f3922163441b32",
:git/url "https://github.com/clojure/tools.namespace"}
medley/medley {:mvn/version "1.3.0"}
io.github.cognitect-labs/test-runner {:git/url "https://github.com/cognitect-labs/test-runner",
:git/sha "7284cda41fb9edc0f3bc6b6185cfb7138fc8a023"}
borkdude/missing.test.assertions {:git/url "https://github.com/borkdude/missing.test.assertions", :sha "603cb01bee72fb17addacc53c34c85612684ad70"}
dev.nubank/docopt {:mvn/version "0.6.1-fix7"}
testdoc/testdoc {:mvn/version "1.4.1"}
org.clojars.lispyclouds/contajners {:mvn/version "0.0.6"}
borkdude/rewrite-edn {:mvn/version "0.1.0"}
clojure-term-colors/clojure-term-colors {:mvn/version "0.1.0"}
io.aviso/pretty {:mvn/version "1.1.1"}
progrock/progrock {:mvn/version "0.1.2"}
djblue/portal {:mvn/version "0.19.0"}
com.wsscode/cljc-misc {:mvn/version "2021.10.16"}
edn-query-language/eql {:mvn/version "2021.07.18"}
meta-merge/meta-merge {:mvn/version "1.0.0"}
com.exoscale/lingo {:mvn/version "1.0.0-alpha14"}
io.github.swirrl/dogstatsd {:mvn/version "0.1.39"}
org.clojure/algo.monads {:mvn/version "0.1.6"}
io.lambdaforge/datalog-parser {:mvn/version "0.1.9"}
clj-stacktrace/clj-stacktrace {:mvn/version "0.2.8"}
clojure-msgpack/clojure-msgpack {:mvn/version "1.2.1"}
cli-matic/cli-matic {:git/url "https://github.com/l3nz/cli-matic.git", :git/sha "9cd53ba7336363e3d06650dbad413b6f8b06e471"}
aysylu/loom {:mvn/version "1.0.2"}
com.layerware/hugsql-core {:mvn/version "0.5.3"}
com.github.seancorfield/expectations {:mvn/version "2.0.157"}
com.rpl/specter {:mvn/version "1.1.4"}
com.github.askonomm/clarktown {:mvn/version "1.1.2"}
org.clojure/math.numeric-tower {:git/tag "math.numeric-tower-0.0.5", :git/sha "12eb9c5", :git/url "https://github.com/clojure/math.numeric-tower"}
prismatic/schema {:git/url "https://github.com/plumatic/schema"
:git/sha "6846dc7c3a9df5bfd718f68f183c683ce0f621ff"
:git/tag "schema-1.3.0"}
metosin/malli {:git/url "https://github.com/metosin/malli"
:git/sha "588147ef49b2e41c7d12a8aa994b39c1c6fedd99"
:git/tag "0.8.9"}
meander/epsilon {:git/url "https://github.com/noprompt/meander"
:git/sha "55f5ce70e6ef717e95c58260f6bc725d70c0cb6d"}
cc.qbits/auspex {:git/url "https://github.com/mpenet/auspex"
:git/sha "1a9d7427e60e1a434a764aa820d1c53f7e22504a"
:deps/manifest :deps}
exoscale/interceptor {:git/url "https://github.com/exoscale/interceptor"
:git/sha "ca115fe00a0abf3a2f78452ab309c3aa4c00fc4e"
:deps/manifest :deps}
lambdaisland/uri {:git/url "https://github.com/lambdaisland/uri"
:git/sha "ac4f1f9c8e4f45a088db1c6383ce2191c973987c"
:deps/manifest :deps}
clj-commons/fs {:mvn/version "1.6.310"}
postmortem/postmortem {:git/url "https://github.com/athos/Postmortem"
:git/sha "1a29775a3d286f9f6fe3f979c78b6e2bf298d5ba"}
com.github.rawleyfowler/sluj {:git/url "https://github.com/rawleyfowler/sluj"
:git/sha "4a92e772b4e07bf127423448d4140748b5782198"
:deps/manifest :deps}
net.cgrand/xforms {:git/url "https://github.com/cgrand/xforms"
:git/sha "550dbc150a79c6ecc148d8a7e260e10bc36321c6"
:deps/manifest :deps}
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 "9385b6708ef35f161732d8464b3a3aa57dd79f30"}
com.potetm/fusebox {:git/url "https://github.com/potetm/fusebox"
:git/sha "ac6d6a0a69510b009b3c1bb2247cd110fd9f7246"}
net.sekao/odoyle-rules {:git/url "https://github.com/oakes/odoyle-rules"
:git/sha "0b1d825ec45a998c4d3481dfb292e08ce6a47f0b"}}
:classpath-overrides {org.clojure/clojure nil
org.clojure/spec.alpha nil
org.clojure/core.specs.alpha nil}}
org.clojure/spec.alpha nil}}
:clj-nvd
{:extra-deps {clj-nvd/clj-nvd {:git/url "https://github.com/miikka/clj-nvd.git"
:sha "f2ec98699e057a379baf170cb49cf7ad76874a70"}}
:main-opts ["-m" "clj-nvd.core"]}}}
:main-opts ["-m" "clj-nvd.core"]}
:test
{:extra-paths ["test"]
:extra-deps {io.github.cognitect-labs/test-runner
{:git/tag "v0.5.0" :git/sha "b3fd0d2"}
nubank/matcher-combinators {:mvn/version "3.6.0"}}
:main-opts ["-m" "cognitect.test-runner"]
:exec-fn cognitect.test-runner.api/test}
:test-pod
{:extra-paths ["test-resources"]
:main-opts ["-m" "babashka.main" "test-resources/pod.clj"]}}}
;; release

@ -1 +1 @@
Subproject commit c419b8c82041855d55593c5b561fc7cea8234712
Subproject commit 2bf9d3c9f15298d7dd9de033674a42f830e23d6f

View file

@ -3,24 +3,24 @@
## Prerequisites
- Install [lein](https://leiningen.org/) for producing uberjars
- Download [GraalVM](https://www.graalvm.org/downloads/). Currently we use *java11-21.1.0*.
- 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:
``` shell
export GRAALVM_HOME=~/Downloads/graalvm-ce-java11-21.1.0/Contents/Home
export GRAALVM_HOME=~/Downloads/graalvm-jdk-21.0.0.1/Contents/Home
```
On linux:
``` shell
export GRAALVM_HOME=~/Downloads/graalvm-ce-java11-21.1.0
export GRAALVM_HOME=~/Downloads/graalvm-jdk-21.0.0.1
```
On Windows, from the [Visual Studio 2019 x64 Native Tools Command Prompt](https://github.com/oracle/graal/issues/2116#issuecomment-590470806) or `cmd.exe` (not Powershell):
```
set GRAALVM_HOME=%USERPROFILE%\Downloads\graalvm-ce-java11-21.1.0
set GRAALVM_HOME=%USERPROFILE%\Downloads\graalvm-ce-jdk-21.0.0.1
```
If you are not running from the x64 Native Tools Command Prompt, you will need to set additional environment variables using:
```
@ -62,7 +62,7 @@ take long to complete.
### Alternative: Build inside Docker
To build a Linux version of babashka, you can use `docker build`, enabling the
To build a Linux version of babashka, you can use `docker build`, enabling the
desired features via `--build-arg` like this:
```shell
@ -93,8 +93,8 @@ Babashka supports the following feature flags:
| Name | Description | Default |
|--------|----------------------------------------------|----------|
| `BABASHKA_FEATURE_CORE_ASYNC` | Includes the [clojure.core.async](https://github.com/clojure/core.async) library | `true` |
| `BABASHKA_FEATURE_CSV` | Includes the [clojure.data.csv](https://github.com/clojure/data.csv) library | `true` |
| `BABASHKA_FEATURE_JAVA_NET_HTTP` | Includes commonly used classes from the `java.net.http` package | `true` |
| `BABASHKA_FEATURE_JAVA_NIO` | Includes commonly used classes from the `java.nio` package | `true` |
| `BABASHKA_FEATURE_JAVA_TIME` | Includes commonly used classes from the `java.time` package | `true` |
| `BABASHKA_FEATURE_TRANSIT` | Includes the [transit-clj](https://github.com/cognitect/transit-clj) library | `true` |
@ -107,11 +107,14 @@ Babashka supports the following feature flags:
| `BABASHKA_FEATURE_TEST_CHECK` | Includes the [clojure.test.check](https://github.com/clojure/test.check) library | `true` |
| `BABASHKA_FEATURE_SPEC_ALPHA` | Includes the [clojure.spec.alpha](https://github.com/clojure/spec.alpha) library (WIP) | `false` |
| `BABASHKA_FEATURE_JDBC` | Includes the [next.jdbc](https://github.com/seancorfield/next-jdbc) library | `false` |
| `BABASHKA_FEATURE_SQLITE` | Includes the [sqlite-jdbc](https://github.com/xerial/sqlite-jdbc) library | `false` |
| `BABASHKA_FEATURE_POSTGRESQL` | Includes the [PostgresSQL](https://jdbc.postgresql.org/) JDBC driver | `false` |
| `BABASHKA_FEATURE_HSQLDB` | Includes the [HSQLDB](http://www.hsqldb.org/) JDBC driver | `false` |
| `BABASHKA_FEATURE_ORACLEDB` | Includes the [Oracle](https://www.oracle.com/database/technologies/appdev/jdbc.html) JDBC driver | `false` |
| `BABASHKA_FEATURE_DATASCRIPT` | Includes [datascript](https://github.com/tonsky/datascript) | `false` |
| `BABASHKA_FEATURE_LANTERNA` | Includes [clojure-lanterna](https://github.com/babashka/clojure-lanterna) | `false` |
| `BABASHKA_FEATURE_LOGGING` | Includes [clojure.tools.logging](https://github.com/clojure/tools.logging) with [taoensso.timbre](https://github.com/ptaoussanis/timbre) as the default implementation| `true` |
| `BABASHKA_FEATURE_PRIORITY_MAP` | Includes [clojure.data.priority-map](https://github.com/clojure/data.priority-map) | `true` |
Note that httpkit server is currently experimental, the feature flag could be toggled to `false` in a future release.

77
doc/companies.md Normal file
View file

@ -0,0 +1,77 @@
# Companies using babashka
Is your company using babashka? Mention it in
[this](https://github.com/babashka/babashka/discussions/1026) discussion to get
yours listed!
If your company is using clj-kondo as well, mention it
[here](https://github.com/clj-kondo/clj-kondo/discussions/1397).
If your company is sponsoring, it will be listed first (in order of sponsorship
size) with a logo and hiring link (if applicable)!
## Sponsoring companies
### [Adgoji](https://www.adgoji.com/)
![adgoji](https://images.squarespace-cdn.com/content/v1/5e5f79dcaeba9e2b64132975/1585646545419-5DOZS4SVO5AU0MFA3ZB3/adgoji_logofull.png?format=300w)
### [Nubank](https://nubank.com.br/)
<img src="https://upload.wikimedia.org/wikipedia/commons/f/f7/Nubank_logo_2021.svg" width="200">
Sponsoring via [Cognitect](https://www.cognitect.com/).
### [Nextjournal](https://nextjournal.com/)
<img src="https://cdn.nextjournal.com/images/nextjournal-logo.svg" width="300">
### [ATA](https://ata-llc.com) - [hiring](https://www.ziprecruiter.com/c/ATA-LLC/Jobs)
<img width="250" alt="Screen Shot 2022-01-07 at 21 21 00" src="https://user-images.githubusercontent.com/284934/148602984-6c333501-505b-4692-ad7a-62383510fb9a.png">
### [Cognician](https://www.cognician.com)
<img src="https://avatars.githubusercontent.com/u/1450774?s=150&v=4">
### [Fluent](https://fluent.to)
<img src="https://uploads-ssl.webflow.com/600fdbbcf0cbfe02f1a48030/600fdf0fffe881c3e8e298f4_Fluent%20logotype-p-500.png" width="300">
### [180seg](https://www.180s.com.br)
<img src="https://avatars.githubusercontent.com/u/75583439?s=200&v=4">
### [Dr. Evidence](https://www.drevidence.com/)
<img src="https://user-images.githubusercontent.com/284934/138914250-f447ca3d-c1c1-4c60-bfaf-9000541d4a0d.png" width="325">
### [EnjoyHQ](https://getenjoyhq.com/)
<img src="https://getenjoyhq.com/wp-content/uploads/2021/07/EnjoyHQ_uz-blue_cropp.svg" width="300">
### [Epic Castle](https://epiccastle.io)
<img src="https://epiccastle.io/images/logo.png" width="100">
## Companies
- [AWS](https://aws.amazon.com/)
- [Barracuda](https://www.barracuda.com/)
- [Datil](https://datil.com/)
- [Deon Digital](https://www.deondigital.com/)
- [Fluent](https://fluent.to/)
- [Fluree](https://flur.ee/)
- [Hi](https://www.hi.group/)
- [Juxt](https://www.juxt.pro/)
- [Kleene](https://www.kleene.ai/)
- [Latacora](https://www.latacora.com/)
- [Metosin](https://www.metosin.fi/en/)
- [Nextdoc](https://www.nextdoc.io/)
- [PractiTest](https://www.practitest.com/)
- [Reify Health](https://www.reifyhealth.com/)
- [Schnaq](https://schnaq.com/)
- [Splash Financial](https://www.splashfinancial.com/)
- [TOYOKUMO, Inc.](https://toyokumo.co.jp/)
- [Xcoo](https://xcoo.com/)
- [Zero one group](https://zero-one-group.com/)

View file

@ -1,13 +1,53 @@
# Developing Babashka
You need [lein](https://leiningen.org/) for running JVM tests and/or producing uberjars. For building binaries you need GraalVM. Currently we use java11-21.1.0.
## Workflow
### Start with an issue before writing code
Before writing any code, please create an issue first that describes the problem
you are trying to solve with alternatives that you have considered. A little bit
of prior communication can save a lot of time on coding. Keep the problem as
small as possible. If there are two problems, make two issues. We discuss the
issue and if we reach an agreement on the approach, it's time to move on to a
PR.
### Follow up with a pull request
Post a corresponding PR with the smallest change possible to address the
issue. Then we discuss the PR, make changes as needed and if we reach an
agreement, the PR will be merged.
### Tests
Each bug fix, change or new feature should be tested well to prevent future
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
Please do not use `git push --force` on your PR branch for the following
reasons:
- It makes it more difficult for others to contribute to your branch if needed.
- It makes it harder to review incremental commits.
- Links (in e.g. e-mails and notifications) go stale and you're confronted with:
this code isn't here anymore, when clicking on them.
- CircleCI doesn't play well with it: it might try to fetch a commit which
doesn't exist anymore.
- Your PR will be squashed anyway.
## 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 24.
## Clone repository
To work on Babashka itself make sure Git submodules are checked out.
``` shellsession
$ git clone https://github.com/borkdude/babashka --recursive
$ git clone https://github.com/babashka/babashka --recursive
```
To update later on:
@ -44,12 +84,76 @@ Test the native version:
## Tests for Libraries
Babashka runs tests of libraries that are compatible with it through
`script/run_lib_tests`. To add tests for a new library, do the following:
`script/run_lib_tests`.
You can check out [this
commit](https://github.com/babashka/babashka/commit/8d9ac4c4d18a5588a4a258a61a9db3835b4f4e5c)
for how to add tests for a library that needs no changes to its tests.
The library is cloned as a git dependency, which also includes the tests, that are then added to the test's classpath and ran.
If a library's tests needs changes, we copy the tests using the `add-libtest.clj` script. Examples:
```sh
# To add tests for a new library on clojars
script/add-libtest.clj com.exoscale/lingo -t
# To add tests for a new library that is git based only
script/add-libtest.clj '{borkdude/carve {:git/url "https://github.com/borkdude/carve" :sha "df552797a198b6701fb2d92390fce7c59205ea77"}}' -t
# There are a number of options for specifying how to copy tests
script/add-libtest.clj -h
```
If the library you want to add doesn't work automatically, you can manually do the following:
* Add an entry for the library in `deps.edn` under the `:lib-tests` alias.
* Create a directory for the library in `test-resources/lib_tests/` and copy its tests to there.
* Add an entry in `run_all_libtests.clj` to run the added test namespaces.
* Add a manual lib entry using `add-libtest.clj` e.g. `script/add-libtest.clj http-kit/http-kit -m '{:test-namespaces [httpkit.client-test]}'`.
* Run the tests `script/lib_tests/run_all_libtests NS1 NS2`
Note: If you have to modify any test file or configuration to have it work with
bb, add an inline comment with prefix `BB-TEST-PATCH:` explaining what you did.
## Windows
We have corresponding `.bat` scripts for Windows, examples from a CMD Shell:
```shell
script\test.bat
script\run_lib_tests.bat
set BABASHKA_TEST_ENV=native
script\run_lib_tests.bat
```
### Enable Windows Symbolic Links
You'll need to **enable symbolic links**.
You must do this before you git clone babashka otherwise some tests will fail.
There seems to be many ways to achieve this; I found the following worked from PowerShell:
```shell
Install-Module -Name Carbon -Force
Import-Module Carbon
Grant-CPrivilege -Identity lee -Privilege SeCreateSymbolicLinkPrivilege
```
You'll need to reboot:
```shell
shutdown /r /t 0
```
After reboot, verify the new privilege via:
```shell
whoami /priv
```
Test if you can create a symbolic link via:
```
mklink foofoo barbar
```
> **TIP**: Symbolic links are not supported in some folder-sharing technologies.
For example, if you are running Windows as a VirtualBox guest, sharing babashka
source folders from your host OS will not share the symbolic links as symbolic links.
One solution is to re-clone babashka to a non-shared folder on Windows.
### Git for Windows
Install [Git for Windows](https://gitforwindows.org/).
It includes a version of `cat` that babashka tests currently rely on.
## Build
@ -66,7 +170,7 @@ Findings from various experiments with JDBC drivers in babashka:
20MB to the binary. Since sqlite has a nice CLI we could also just shell out
to it (there's an example in the examples dir). We could also build a
`babashka.sqlite` namespace around the CLI maybe similar to
`babashka.curl`. See [#385](https://github.com/borkdude/babashka/issues/385)
`babashka.curl`. See [#385](https://github.com/babashka/babashka/issues/385)
for details.
- HSQLDB: easy to get going with Graalvm. Adds 10 MB to the binary. It's under a
feature flag right now on master. See [build.md](build.md) for details. Derby
@ -75,13 +179,13 @@ Findings from various experiments with JDBC drivers in babashka:
got it to crash. 4800m did work, but it took 17 minutes (compared to 10
minutes without this feature).
- MySQL / MariaDB: can't get those to work yet. Work in progress in issue
[#387](https://github.com/borkdude/babashka/issues/387).
[#387](https://github.com/babashka/babashka/issues/387).
To progress work on sqlite and mySQL, I need a working Clojure example. If you
want to contribute, consider making a an example Clojure GraalVM CLI that puts
something in a sqlite / mysql DB and reads something from it.
## ADR
## Design decisions
Some design decisions:
@ -105,7 +209,7 @@ Some of these design decisions were formed in [these discussions](https://github
- Tasks do not allow passing arguments to dependent tasks, other than by rebinding `*command-line-args*` (see discussion).
- Does the list of dependencies need to be dynamic? No, see discussion (same reason as args)
- bb <foo> is resolved as file > task > bb subcommand. Shadowing future subcommand is a problem that a user can solve by renaming a task or file. (same as lein aliases). Also see Conflicts.
- bb &lt;foo&gt; is resolved as file > task > bb subcommand. Shadowing future subcommand is a problem that a user can solve by renaming a task or file. (same as lein aliases). Also see Conflicts.
- It is a feature that tasks are defined as top-level vars (instead of local let-bound symbols). This plays well with the Gilardi scenario, e.g. here: https://github.com/babashka/babashka.github.io/blob/ad276625f6c41f269d19450f236cb54cab2591e1/bb.edn#L7.
- The parallel option trickles down into run calls. People who use parallel will be confused if its dropped magically, people who dont use parallel wont notice anything either way so it doesnt matter

5
doc/fly_io/Dockerfile Normal file
View file

@ -0,0 +1,5 @@
FROM babashka/babashka:0.8.2
COPY example.clj /
ENTRYPOINT bb /example.clj

19
doc/fly_io/README.md Normal file
View file

@ -0,0 +1,19 @@
# Deploying a babashka app to fly.io
[Fly.io](https://fly.io/) is a service that can run full stack apps with minimal
configuration. If you like the ease of Heroku, you might like fly.io and perhaps
even better! This document shows how to get a minimal babashka application up
and running on `fly.io`.
In `example.clj` we start an http-kit web server which spits out some HTML. You
can run this locally by invoking `bb example.clj` from the command line.
To get this site running on `fly.io`, you need to
[install](https://fly.io/docs/getting-started/installing-flyctl/) and [log
in](https://fly.io/docs/getting-started/log-in-to-fly/).
Then run `flyctl launch` to create a new application. After making changes, you
can re-deploy the site with `flyctl deploy`.
That's it! See this
[tweet](https://twitter.com/borkdude/status/1526175120825401344) for a demo.

21
doc/fly_io/example.clj Normal file
View file

@ -0,0 +1,21 @@
(ns example
(:require [hiccup2.core :refer [html]]
[org.httpkit.server :refer [run-server]]))
(def port (or (some-> (System/getenv "PORT")
parse-long)
8092))
(run-server
(fn [_]
{:body
(str (html
[:html
[:body
[:h1 "Hello world!"]
[:p (str "This site is running with babashka v"
(System/getProperty "babashka.version"))]]]))})
{:port port})
(println "Site running on port" port)
@(promise)

41
doc/fly_io/fly.toml Normal file
View file

@ -0,0 +1,41 @@
# fly.toml file generated for shy-sound-2847 on 2022-05-16T14:12:38+02:00
app = "shy-sound-2847"
kill_signal = "SIGINT"
kill_timeout = 5
processes = []
[env]
PORT = "8092"
[experimental]
allowed_public_ports = []
auto_rollback = true
[[services]]
http_checks = []
internal_port = 8092
processes = ["app"]
protocol = "tcp"
script_checks = []
[services.concurrency]
hard_limit = 25
soft_limit = 20
type = "connections"
[[services.ports]]
force_https = true
handlers = ["http"]
port = 80
[[services.ports]]
handlers = ["tls", "http"]
port = 443
[[services.tcp_checks]]
grace_period = "1s"
interval = "15s"
restart_limit = 0
timeout = "2s"

99
doc/libraries.csv Normal file
View file

@ -0,0 +1,99 @@
maven-name,git-url
aero/aero,http://github.com/juxt/aero
amperity/vault-clj,https://github.com/amperity/vault-clj
aysylu/loom,https://github.com/aysylu/loom
babashka/babashka.curl,https://github.com/babashka/babashka.curl
better-cond/better-cond,https://github.com/Engelberg/better-cond
borkdude/deps,https://github.com/borkdude/deps.clj
borkdude/missing.test.assertions,https://github.com/borkdude/missing.test.assertions
borkdude/rewrite-edn,https://github.com/borkdude/rewrite-edn
camel-snake-kebab/camel-snake-kebab,https://github.com/clj-commons/camel-snake-kebab
cc.qbits/auspex,https://github.com/mpenet/auspex
cheshire/cheshire,https://github.com/dakrone/cheshire
circleci/bond,https://github.com/circleci/bond
cli-matic/cli-matic,https://github.com/l3nz/cli-matic.git
clj-commons/clj-yaml,https://github.com/clj-commons/clj-yaml
clj-commons/fs,https://github.com/clj-commons/fs
clj-commons/multigrep,https://github.com/clj-commons/multigrep
clj-stacktrace/clj-stacktrace,https://github.com/mmcgrana/clj-stacktrace
clojure-csv/clojure-csv,https://github.com/davidsantiago/clojure-csv
clojure-msgpack/clojure-msgpack,https://github.com/edma2/clojure-msgpack
clojure-term-colors/clojure-term-colors,https://github.com/trhura/clojure-term-colors
com.exoscale/lingo,https://github.com/exoscale/lingo
com.github.askonomm/clarktown,https://github.com/askonomm/clarktown
com.github.rawleyfowler/sluj,https://github.com/rawleyfowler/sluj
com.github.seancorfield/expectations,https://github.com/clojure-expectations/clojure-test
com.github.seancorfield/honeysql,https://github.com/seancorfield/honeysql
com.grammarly/omniconf,https://github.com/grammarly/omniconf
com.layerware/hugsql-core,
com.rpl/specter,https://github.com/redplanetlabs/specter
com.stuartsierra/component,https://github.com/stuartsierra/component
com.stuartsierra/dependency,https://github.com/stuartsierra/dependency
com.wsscode/cljc-misc,https://github.com/wilkerlucio/cljc-misc
comb/comb,https://github.com/weavejester/comb
cprop/cprop,https://github.com/tolitius/cprop
crispin/crispin,https://github.com/dunaj-project/crispin
dev.nubank/docopt,https://github.com/nubank/docopt.clj
djblue/portal,https://github.com/djblue/portal
doric/doric,https://github.com/joegallo/doric
douglass/clj-psql,https://github.com/DarinDouglass/clj-psql
edn-query-language/eql,https://github.com/edn-query-language/eql
environ/environ,https://github.com/weavejester/environ
exoscale/coax,https://github.com/exoscale/coax
exoscale/interceptor,https://github.com/exoscale/interceptor
expound/expound,https://github.com/bhb/expound
failjure/failjure,https://github.com/adambard/failjure
ffclj/ffclj,https://github.com/luissantos/ffclj
gaka/gaka,https://github.com/cdaddr/gaka
hato/hato,https://github.com/gnarroway/hato
henryw374/cljc.java-time,https://github.com/henryw374/cljc.java-time
hiccup/hiccup,http://github.com/weavejester/hiccup
honeysql/honeysql,https://github.com/seancorfield/honeysql
http-kit/http-kit,https://github.com/http-kit/http-kit
integrant/integrant,https://github.com/weavejester/integrant
io.aviso/pretty,https://github.com/AvisoNovate/pretty
io.github.cognitect-labs/test-runner,https://github.com/cognitect-labs/test-runner
io.github.swirrl/dogstatsd,https://github.com/swirrl/dogstatsd
io.github.technomancy/limit-break,https://github.com/technomancy/limit-break
io.helins/binf,https://github.com/helins/binf.cljc
io.lambdaforge/datalog-parser,https://github.com/lambdaforge/datalog-parser
io.replikativ/hasch,https://github.com/replikativ/hasch
java-http-clj/java-http-clj,http://www.github.com/schmee/java-http-clj
lambdaisland/regal,https://github.com/lambdaisland/regal
listora/again,https://github.com/liwp/again
markdown-clj/markdown-clj,https://github.com/yogthos/markdown-clj
meander/epsilon,https://github.com/noprompt/meander
medley/medley,https://github.com/weavejester/medley
meta-merge/meta-merge,https://github.com/weavejester/meta-merge
metosin/malli,https://github.com/metosin/malli
minimallist/minimallist,https://github.com/green-coder/minimallist
mvxcvi/arrangement,https://github.com/greglook/clj-arrangement
net.cgrand/xforms,https://github.com/cgrand/xforms
orchestra/orchestra,https://github.com/jeaye/orchestra
org.babashka/spec.alpha,https://github.com/babashka/spec.alpha
org.clj-commons/clj-http-lite,https://github.com/clj-commons/clj-http-lite
org.clj-commons/digest,https://github.com/clj-commons/clj-digest
org.clojars.askonomm/ruuter,https://github.com/askonomm/ruuter
org.clojars.lispyclouds/contajners,https://github.com/lispyclouds/contajners
org.clojure/algo.monads,https://github.com/clojure/algo.monads
org.clojure/core.match,https://github.com/clojure/core.match
org.clojure/data.csv,https://github.com/clojure/data.csv
org.clojure/data.generators,https://github.com/clojure/data.generators
org.clojure/data.json,https://github.com/clojure/data.json
org.clojure/data.zip,https://github.com/clojure/data.zip
org.clojure/math.combinatorics,https://github.com/clojure/math.combinatorics
org.clojure/math.numeric-tower,https://github.com/clojure/math.numeric-tower
org.clojure/test.check,https://github.com/clojure/test.check
org.clojure/tools.gitlibs,https://github.com/clojure/tools.gitlibs
org.clojure/tools.namespace,https://github.com/clojure/tools.namespace
postmortem/postmortem,https://github.com/athos/Postmortem
prismatic/schema,https://github.com/plumatic/schema
progrock/progrock,https://github.com/weavejester/progrock
reifyhealth/specmonstah,https://github.com/reifyhealth/specmonstah
rewrite-clj/rewrite-clj,https://github.com/clj-commons/rewrite-clj
rm-hull/jasentaa,https://github.com/rm-hull/jasentaa
selmer/selmer,https://github.com/yogthos/Selmer
slingshot/slingshot,https://github.com/scgilardi/slingshot
table/table,https://github.com/cldwalker/table
testdoc/testdoc,https://github.com/liquidz/testdoc
version-clj/version-clj,https://github.com/xsc/version-clj
1 maven-name git-url
2 aero/aero http://github.com/juxt/aero
3 amperity/vault-clj https://github.com/amperity/vault-clj
4 aysylu/loom https://github.com/aysylu/loom
5 babashka/babashka.curl https://github.com/babashka/babashka.curl
6 better-cond/better-cond https://github.com/Engelberg/better-cond
7 borkdude/deps https://github.com/borkdude/deps.clj
8 borkdude/missing.test.assertions https://github.com/borkdude/missing.test.assertions
9 borkdude/rewrite-edn https://github.com/borkdude/rewrite-edn
10 camel-snake-kebab/camel-snake-kebab https://github.com/clj-commons/camel-snake-kebab
11 cc.qbits/auspex https://github.com/mpenet/auspex
12 cheshire/cheshire https://github.com/dakrone/cheshire
13 circleci/bond https://github.com/circleci/bond
14 cli-matic/cli-matic https://github.com/l3nz/cli-matic.git
15 clj-commons/clj-yaml https://github.com/clj-commons/clj-yaml
16 clj-commons/fs https://github.com/clj-commons/fs
17 clj-commons/multigrep https://github.com/clj-commons/multigrep
18 clj-stacktrace/clj-stacktrace https://github.com/mmcgrana/clj-stacktrace
19 clojure-csv/clojure-csv https://github.com/davidsantiago/clojure-csv
20 clojure-msgpack/clojure-msgpack https://github.com/edma2/clojure-msgpack
21 clojure-term-colors/clojure-term-colors https://github.com/trhura/clojure-term-colors
22 com.exoscale/lingo https://github.com/exoscale/lingo
23 com.github.askonomm/clarktown https://github.com/askonomm/clarktown
24 com.github.rawleyfowler/sluj https://github.com/rawleyfowler/sluj
25 com.github.seancorfield/expectations https://github.com/clojure-expectations/clojure-test
26 com.github.seancorfield/honeysql https://github.com/seancorfield/honeysql
27 com.grammarly/omniconf https://github.com/grammarly/omniconf
28 com.layerware/hugsql-core
29 com.rpl/specter https://github.com/redplanetlabs/specter
30 com.stuartsierra/component https://github.com/stuartsierra/component
31 com.stuartsierra/dependency https://github.com/stuartsierra/dependency
32 com.wsscode/cljc-misc https://github.com/wilkerlucio/cljc-misc
33 comb/comb https://github.com/weavejester/comb
34 cprop/cprop https://github.com/tolitius/cprop
35 crispin/crispin https://github.com/dunaj-project/crispin
36 dev.nubank/docopt https://github.com/nubank/docopt.clj
37 djblue/portal https://github.com/djblue/portal
38 doric/doric https://github.com/joegallo/doric
39 douglass/clj-psql https://github.com/DarinDouglass/clj-psql
40 edn-query-language/eql https://github.com/edn-query-language/eql
41 environ/environ https://github.com/weavejester/environ
42 exoscale/coax https://github.com/exoscale/coax
43 exoscale/interceptor https://github.com/exoscale/interceptor
44 expound/expound https://github.com/bhb/expound
45 failjure/failjure https://github.com/adambard/failjure
46 ffclj/ffclj https://github.com/luissantos/ffclj
47 gaka/gaka https://github.com/cdaddr/gaka
48 hato/hato https://github.com/gnarroway/hato
49 henryw374/cljc.java-time https://github.com/henryw374/cljc.java-time
50 hiccup/hiccup http://github.com/weavejester/hiccup
51 honeysql/honeysql https://github.com/seancorfield/honeysql
52 http-kit/http-kit https://github.com/http-kit/http-kit
53 integrant/integrant https://github.com/weavejester/integrant
54 io.aviso/pretty https://github.com/AvisoNovate/pretty
55 io.github.cognitect-labs/test-runner https://github.com/cognitect-labs/test-runner
56 io.github.swirrl/dogstatsd https://github.com/swirrl/dogstatsd
57 io.github.technomancy/limit-break https://github.com/technomancy/limit-break
58 io.helins/binf https://github.com/helins/binf.cljc
59 io.lambdaforge/datalog-parser https://github.com/lambdaforge/datalog-parser
60 io.replikativ/hasch https://github.com/replikativ/hasch
61 java-http-clj/java-http-clj http://www.github.com/schmee/java-http-clj
62 lambdaisland/regal https://github.com/lambdaisland/regal
63 listora/again https://github.com/liwp/again
64 markdown-clj/markdown-clj https://github.com/yogthos/markdown-clj
65 meander/epsilon https://github.com/noprompt/meander
66 medley/medley https://github.com/weavejester/medley
67 meta-merge/meta-merge https://github.com/weavejester/meta-merge
68 metosin/malli https://github.com/metosin/malli
69 minimallist/minimallist https://github.com/green-coder/minimallist
70 mvxcvi/arrangement https://github.com/greglook/clj-arrangement
71 net.cgrand/xforms https://github.com/cgrand/xforms
72 orchestra/orchestra https://github.com/jeaye/orchestra
73 org.babashka/spec.alpha https://github.com/babashka/spec.alpha
74 org.clj-commons/clj-http-lite https://github.com/clj-commons/clj-http-lite
75 org.clj-commons/digest https://github.com/clj-commons/clj-digest
76 org.clojars.askonomm/ruuter https://github.com/askonomm/ruuter
77 org.clojars.lispyclouds/contajners https://github.com/lispyclouds/contajners
78 org.clojure/algo.monads https://github.com/clojure/algo.monads
79 org.clojure/core.match https://github.com/clojure/core.match
80 org.clojure/data.csv https://github.com/clojure/data.csv
81 org.clojure/data.generators https://github.com/clojure/data.generators
82 org.clojure/data.json https://github.com/clojure/data.json
83 org.clojure/data.zip https://github.com/clojure/data.zip
84 org.clojure/math.combinatorics https://github.com/clojure/math.combinatorics
85 org.clojure/math.numeric-tower https://github.com/clojure/math.numeric-tower
86 org.clojure/test.check https://github.com/clojure/test.check
87 org.clojure/tools.gitlibs https://github.com/clojure/tools.gitlibs
88 org.clojure/tools.namespace https://github.com/clojure/tools.namespace
89 postmortem/postmortem https://github.com/athos/Postmortem
90 prismatic/schema https://github.com/plumatic/schema
91 progrock/progrock https://github.com/weavejester/progrock
92 reifyhealth/specmonstah https://github.com/reifyhealth/specmonstah
93 rewrite-clj/rewrite-clj https://github.com/clj-commons/rewrite-clj
94 rm-hull/jasentaa https://github.com/rm-hull/jasentaa
95 selmer/selmer https://github.com/yogthos/Selmer
96 slingshot/slingshot https://github.com/scgilardi/slingshot
97 table/table https://github.com/cldwalker/table
98 testdoc/testdoc https://github.com/liquidz/testdoc
99 version-clj/version-clj https://github.com/xsc/version-clj

View file

@ -5,15 +5,434 @@ you have anything to add. Also see
[#babashka](https://twitter.com/hashtag/babashka?src=hashtag_click&f=live) on
Twitter.
## 2023-05 ([Twitter](https://twitter.com/search?q=(%23babashka%20OR%20babashka)%20since%3A2023-05-01%20until%3A2023-06-01&src=typed_query&f=live), [Mastodon](https://mastodon.social/tags/babashka))
### Releases
1.3.178
Mostly a boring maintenance release with lib upgrades!
### Events
- [Babashka-conf](https://babashka.org/conf/) is happening June 10th in
Berlin. Only a few tickets left! See the [schedule](https://babashka.org/conf/schedule.html). Also you can buy a [conf t-shirt](https://www.etsy.com/listing/1475981599/babashka-conf-berlin-2023-t-shirt) now! See Nikita wearing it [here](https://twitter.com/nikitonsky/status/1658066530800742400)!
Thanks to conference sponsors:
<img src="https://pbs.twimg.com/media/Fw5h-0_XwA4DTIj?format=jpg&name=medium" width="200px">
- Babashka is going to the [Strange Loop](https://www.thestrangeloop.com/) conference!
### Projects
- [beep-boop](https://github.com/pesterhazy/beep-boop): Audible and visual feedback for test runs
- [panas.example](https://github.com/keychera/panas.example): All htmx examples ported to babashka!
- [utility-scripts](https://github.com/somecho/utility-scripts): A collection of helper scripts for Clojure, Java, Ledger and Taskwarrior. Written in Clojure
- [bb-scripts](https://github.com/techconative/bb-scripts): Babashka scripts for common utilities
- [Launching bb tasks from emacs](https://mastodon.social/@mykhaylo@fosstodon.org/110456087708592838)
### Articles
- [Clojure in security: Docker](https://www.juxt.pro/blog/clojure-in-docker/): mentions babashka and clj-kondo
- [Changing my mind: Converting a script from bash to Babashka](https://blog.agical.se/en/posts/changing-my-mind--converting-a-script-from-bash-to-babashka/)
- [How to create a really simple ClojureCLR dependency tool](https://blog.agical.se/en/posts/how-to-create-a-really-simple-clojureclr-dependency-tool/) with babashka
- [Making a resume with Node.js babashka (nbb)](https://yogthos.net/posts/2023-05-12-nbb-resume.html)
## 2023-04 ([Twitter](https://twitter.com/search?q=(%23babashka%20OR%20babashka)%20since%3A2023-04-01%20until%3A2023-05-01&src=typed_query&f=live), [Mastodon](https://mastodon.social/tags/babashka))
[Babashka-conf](https://babashka.org/conf/) is happening June 10th in
Berlin. Save the date and/or submit your babashka/clojure-related talk or workshop
in the CfP!
### Releases
1.3.177
Biggest highlight: `bb.edn` is now respected relative of a script, no matter the directory you invoke it from! See [docs](https://book.babashka.org/#_script_adjacent_bb_edn).
### Projects
- [babashka-dl](https://github.com/mjhika/babashka-dl): simple install script for babashka on windows
- [instaparse-bb](https://github.com/babashka/instaparse-bb): Use instaparse from babashka, a new release
### Videos
- [Learning clojure w/ @lispyclouds](https://youtu.be/uBTRLBU-83A): a stream with teej_dv, a neovim core dev
## 2023-03 ([Twitter](https://twitter.com/search?q=(%23babashka%20OR%20babashka)%20since%3A2023-03-01%20until%3A2023-04-01&src=typed_query&f=top), [Mastodon](https://mastodon.social/tags/babashka))
### Releases
1.3.176, 1.3.175, 1.2.174:
Biggest highlight: Switch to GraalVM 19 and enable virtual threads!
### Videos
- [Blambda! The sound of babashka and AWS colliding](https://pitch.com/public/03fa9c7e-2b0e-45fb-8a22-d4a4d4d79d24), by Josh Glover from Pitch!
### Projects
- [babashka.json](https://github.com/babashka/json): JSON abstraction library
- [martian](https://github.com/oliyh/martian) is now babashka compatible!
- [panas.reload](https://github.com/keychera/panas.reload): a hot reload for babashka serving html+css (or htmx)
- [cljs-exif-reader](https://git.sr.ht/~rwv/cljs-exif-reader): Extract information from TIFF and JPEG images (works in babashka, despite the name)
### Jobs
- Write babashka at [Cognician](https://twitter.com/RobStuttaford/status/1641694501793038336)!
## 2023-02 ([Twitter](https://twitter.com/search?q=(%23babashka%20OR%20babashka)%20since%3A2023-02-01%20until%3A2023-03-01&src=typed_query&f=live), [Mastodon](https://mastodon.social/tags/babashka))
## Releases
1.1.173: mostly bugfixes
### Articles
- [A technique for live coding simple web pages](https://github.com/whacked/cow/blob/main/a%20technique%20for%20live%20coding%20simple%20web%20pages.md) with babashka
### Videos
- [Stockholm Clojure Meetup Feb 23: Blambda! The sound of Babashka and Lambda colliding](https://www.youtube.com/watch?v=NfgYon96dsE)
### Projects
- [debux](https://github.com/philoskim/debux) is now babaskha-compatible
- [lines-of-code-bb](https://github.com/matthewdowney/linesofcode-bb): Babashka script to count lines of Clojure code, docs, comments, and more
- [deps-try](https://github.com/eval/deps-try): a babashka-script to try out Clojure libraries in rebel-readline
- [bb-dialog](https://github.com/pixelated-noise/bb-dialog) adds support for `--treeview`
- [A duckduck go CLI with babashka and (bbl)gum](https://mastodon.me.uk/@choffee/109845697304457129)
- [babashka http-client](https://github.com/babashka/http-client) now supports multipart uploads
- [sublime-pretty-edn](https://github.com/oakmac/sublime-pretty-edn): Format, Validate, Minify EDN files in Sublime Text
- [Play console tetris in babashka!](https://twitter.com/borkdude/status/1628473136969576449)
- [kaocha test runner](https://github.com/lambdaisland/kaocha) became babashka compatible!
## 2023-01 ([Twitter](https://twitter.com/search?q=%28%23babashka%20OR%20babashka%29%20until%3A2023-02-01%20since%3A2023-01-01&src=typed_query&f=live), [Mastodon](https://mastodon.social/tags/babashka))
### Releases
New releases in the past month: 1.0.170 - 1.1.173
Release highlights:
- Support for `data_readers.clj(c)`
- Include [http-client](https://github.com/babashka/http-client) as built-in library
- Compatibility with [clojure.tools.namespace.repl/refresh](https://github.com/clojure/tools.namespace)
- Compatibility with [clojure.java.classpath](https://github.com/clojure/java.classpath) (and other libraries which rely on `java.class.path` and `RT/baseLoader`)
- Compatibility with [eftest](https://github.com/weavejester/eftest) test runner (see demo)
- Compatibility with [cljfmt](https://github.com/weavejester/cljfmt)
- Support for `*loaded-libs*` and `(loaded-libs)`
- Support `add-watch` on vars (which adds compatibility with `potemkin.namespaces`)
- BREAKING: make printing of script results explicit with `--prn`
### Events
- [Babashka Workshop](https://clojure.stream/workshops/babashka) at ClojureStream with Rahul De
- [Blambda! The sound of Babashka and Lambda colliding](https://www.meetup.com/sthlm-clj/events/291204199/?utm_medium=referral&utm_campaign=share-btn_savedevents_share_modal&utm_source=twitter): sthlm.clj (Stockholm, Sweden)
### Articles
- [Babooka: write command line Clojure](https://www.braveclojure.com/quests/babooka/) by Daniel Higginbotham
- [Blambda analyses sites](https://jmglov.net/blog/2023-01-04-blambda-analyses-sites.html) by Josh Glover
- [Babashka: How GraalVM Helped Create a Fast-Starting Scripting Environment for Clojure](https://logico-jp.io/2023/01/07/babashka-how-graalvm-helped-create-a-fast-starting-scripting-environment-for-clojure/) in Japanese
- [The wizard of HOP - How we built the web based HOP CLI Settings Editor using Babashka and Scittle](https://www.gethop.dev/post/the-wizard-of-hop-how-we-built-the-web-based-hop-cli-settings-editor-using-babashka-and-scittle) by Bingen Galartza
- [Simple TUIs with Babashka and Gum](https://rattlin.blog/bbgum.html) by Rattlin.blog
- [Babashka And Dialog Part Ii: Announcing The Bb-Dialog Library](https://www.pixelated-noise.com/blog/2023/01/20/bb-dialog-announcement/index.html) by A.C. Danvers
- [Re-Writing a GlobalProtect OpenConnect VPN Connect script in Babashka](https://tech.toryanderson.com/2023/01/14/re-writing-a-globalprotect-openconnect-vpn-connect-script-in-babashka/) by Tory Anderson
### Projects
Projects that were new, had updates or were made compatible with babashka:
- [asdf-babashka](https://github.com/pitch-io/asdf-babashka): babashka plugin for the asdf version manager
- [babashka-htmx-todoapp](https://github.com/prestancedesign/babashka-htmx-todoapp): Quick example of a todo list SPA using Babashka and HTMX
- [bblgum](https://github.com/lispyclouds/bblgum): An extremely tiny and simple wrapper around charmbracelet/gum
- [bb-dialog](https://github.com/pixelated-noise/bb-dialog): A simple wrapper library for working with dialog from Babashka
- [carve](https://github.com/borkdude/carve): Remove unused Clojure vars
- [chr](https://github.com/ThaddeusJiang/chr): native commands history report for the default terminal users
- [clj-kondo-bb](https://github.com/clj-kondo/clj-kondo-bb): Invoke clj-kondo from babashka scripts!
- [cljfmt](https://github.com/weavejester/cljfmt): A tool for formatting Clojure code
- [drepl](https://github.com/claytn/drepl): Node JS dependency-repl. The node repl you already know with easy library installations
- [instaparse-bb](https://github.com/babashka/instaparse-bb): Wrapper library aroud pod-babashka-instaparse
- [lein2deps](https://github.com/borkdude/lein2deps): Lein project.clj to deps.edn converter
- [neil](https://github.com/babashka/neil): A CLI to add common aliases and features to deps.edn-based projects
- [obsidian-babashka](https://github.com/filipesilva/obsidian-babashka): Run Obsidian Clojure(Script) codeblocks in Babashka
- [pod-babashka-buddy](https://github.com/babashka/pod-babashka-buddy): A pod around buddy core (Cryptographic Api for Clojure)
- [quickblog](https://github.com/borkdude/quickblog): Light-weight static blog engine for Clojure and babashka
- [solenoid](https://github.com/adam-james-v/solenoid): A small clojure tool for making little control UIs while using the REPL!
- [tools.bbuild](https://github.com/babashka/tools.bbuild): babashka version of tools.build
- [weather](https://gist.github.com/yogthos/f86e63b856e1413180b2262024ece977): command line util for grabbing current weather for a city using OpenWeather API
## [2022-12](https://twitter.com/search?q=%28%23babashka%20OR%20babashka%29%20until%3A2023-01-01%20since%3A2022-12-01&src=typed_query&f=live)
- Releases: [1.0.168](https://github.com/babashka/babashka/blob/master/CHANGELOG.md).
- [How GraalVM Helped Create a Fast-Starting Scripting Environment for Clojure](https://medium.com/graalvm/babashka-how-graalvm-helped-create-a-fast-starting-scripting-environment-for-clojure-b0fcc38b0746)
- [http-client](https://github.com/babashka/http-client): a new HTTP client library for babashka
- [How to Do Things With Babashka](https://presumably.de/how-to-do-things-with-babashka.html) by Paulus Esterhazy (2022-12)
- [Using Babashka to Get Electricity Prices](https://www.karimarttila.fi/clojure/2022/12/04/using-babashka-to-get-electricity-prices) by Kari Marttila
- [Adding prompts to your babashka scripts with dialog](https://www.pixelated-noise.com/blog/2022/12/09/dialog-and-babashka/index.html) by A.C. Danvers
- [Scraping an HTML dictionary with Babashka and Bootleg](https://blog.exupero.org/scraping-an-html-dictionary-with-babashka-and-bootleg/) by exupero
- [quickblog](https://github.com/borkdude/quickblog) v0.1.0: Light-weight static blog engine for Clojure and babashka
- [bb-excel](https://github.com/kbosompem/bb-excel): Read Excel Files in babashka scripts
- [Get paginated list of issues from gitlab with clojure/babashka](https://gist.github.com/MrGung/29d0547fe45316c3438032fd164d42c6) by Steffen Glückselig
- Install development builds: `bash <(curl https://raw.githubusercontent.com/babashka/babashka/master/install) --dev-build --dir /tmp`
- [JVM interop improvements in bb](https://twitter.com/borkdude/status/1606280110692352001)
- [A little trick to have conditional code for babashka in a .clj file without resorting to .cljc reader conditionals](https://twitter.com/borkdude/status/1599067149187764224)
- [Get Advent of Code input in babashka](https://gist.github.com/jeeger/6e39fea94ce49e33d1fa43f40cc36630) by Jan Seeger
- [Grabbing current weather for a city using OpenWeather API](https://gist.github.com/yogthos/f86e63b856e1413180b2262024ece977) by Dmitri Sotnikov
## [2022-11](https://twitter.com/search?q=%28%23babashka%29%20until%3A2022-12-01%20since%3A2022-11-01&src=typed_query&f=live)
- Releases: [1.0.165 - 1.0.167](https://github.com/babashka/babashka/blob/master/CHANGELOG.md).
- Registration for a [Babashka workshop](https://clojure.stream/workshops/babashka) with Rahul De at ClojureStream is now open!
- [Tutkain, a Sublime plugin for clojure based on socket REPL now with support for babashka](https://github.com/eerohele/Tutkain)
- [Manage git hooks in babashka](https://blaster.ai/blog/posts/manage-git-hooks-w-babashka.html) by Mykhaylo Bilyanskyy
- [Messing around with babashka](Messing around with Babashka) by Ian Muge
- [A babashka one liner to inspect data in portal](https://twitter.com/borkdude/status/1597505695800516609)
- [Using nREPL as a system interface](https://yogthos.net/posts/2022-11-26-nREPL-system-interaction.html) by Dmitri Sotnikov
- [deep-diff2](https://github.com/lambdaisland/deep-diff2) is now babashka-compatible!
- [A script to normalize auto-resolved keywords](https://github.com/babashka/babashka/blob/master/examples/normalize-keywords.clj)
- [Sum up page counts of books from Calibre library with babashka](https://gist.github.com/jeeger/d13159fefaee33c771be979639900ebc) by Jan Seeger
- [Tiny babashka script that returns a random clojure doc](https://gist.github.com/CarnunMP/c592cd3b6e711d56ddd4ca7832b9b251) by Carnun Marcus-Page
## [2022-10](https://twitter.com/search?q=%28%23babashka%29%20until%3A2022-11-01%20since%3A2022-10-01&src=typed_query&f=live)
- Releases: [1.0.164](https://github.com/babashka/babashka/blob/master/CHANGELOG.md).
- [bb-pod-racer](https://github.com/justone/bb-pod-racer): Speed up development of Babashka pods by Nate Jones
- [Babashka tasks VSCode plugin](https://marketplace.visualstudio.com/items?itemName=fbeyer.babashka-tasks) by Ferdinand Beyer
- A [PR](https://github.com/nextjournal/clerk/pull/232) to get Clerk working in babashka
- [lein2deps](https://github.com/borkdude/lein2deps): lein to deps.edn converter
- [awyeah-api](https://github.com/grzm/awyeah-api) by Michael Glaesemann v0.8.41 is now available! aws-api for Babashka. Aw yeah!
- [bbssh](https://github.com/epiccastle/bbssh/releases/tag/v0.2.0) by Crispin Wellington, v0.2.0 released
- [safely use rsync --archive --delete to backup a directory](https://gist.github.com/stelcodes/ddc8ff53de2192dca7d3fee1081ddb77) by Stel Abrego
## [2022-09](https://twitter.com/search?q=%28%23babashka%29%20until%3A2022-10-01%20since%3A2022-09-01&src=typed_query&f=live)
- Releases: [0.9.162 - 0.10.163](https://github.com/babashka/babashka/blob/master/CHANGELOG.md).
- Introducing [bbin](https://radsmith.com/bbin): a tool to install babashka scripts on your system by Radford Smith
- [bbssh](https://github.com/epiccastle/bbssh): Babashka pod for SSH support by [Epic Castle](https://github.com/epiccastle)
- [Loom virtual threads are coming to babashka](https://twitter.com/borkdude/status/1572222344684531717)
- [Tiny script to cycle through pulseaudio outputs (aka sinks)](https://gist.github.com/stelcodes/7d9136a5839b645b6cd5bc829a9fe541) by Stel Abrego
- [Tetris in the console via pod-babashka-lantera](https://twitter.com/borkdude/status/1569351199404576770)
- [org-mode gets support for babashka](https://git.savannah.gnu.org/cgit/emacs/org-mode.git/commit/?id=764642f55b7a9821acbabcfa1e2d354afab99be7)
- [docs for combining babashka process with promesa](https://github.com/babashka/process#promesa)
[exoscale/interceptor](https://github.com/exoscale/interceptor) became babashka-compatible!
- [Tutkain, socket REPL Sublime plugin, gets better support for babashka](https://twitter.com/borkdude/status/1568315151404924933)
- [babashka tweepy](https://github.com/davclark/babashka-tweepy): kicking the tires on using the tweepy library from a babashka task by Dav Clark
- [aoc helper](https://github.com/jjcomer/aoc-helper) by Josh Comer
- [Dogfooding blambda part 5](https://jmglov.net/blog/2022-09-02-dogfooding-blambda-logs.html) by Josh Glover
## [2022-08](https://twitter.com/search?q=%28%23babashka%29%20until%3A2022-09-01%20since%3A2022-08-01&src=typed_query&f=live)
- It's babashka's third birthday on August 9th 2022!
- [etaoin](https://github.com/clj-commons/etaoin), Pure Clojure Webdriver protocol implementation, is now babashka-compatible!
- [xforms](https://github.com/cgrand/xforms) is now babashka-compatible!
- [squint](https://github.com/squint-cljs/squint) and [cherry](https://github.com/squint-cljs/cherry) are CLJS-compilers that work with babashka!
## [2022-07](https://twitter.com/search?q=%28%23babashka%29%20until%3A2022-08-01%20since%3A2022-07-01&src=typed_query&f=live)
- Releases: [0.8.157 - 0.9.161](https://github.com/babashka/babashka/blob/master/CHANGELOG.md).
- [Recursive document transformations with Pandoc and Clojure](https://play.teod.eu/document-transform-pandoc-clojure/) by Teodor Heggelund
- [Babashka toolbox](https://babashka.org/toolbox/): A categorised directory of libraries and tools for Babashka
- [Quickblog](https://github.com/borkdude/quickblog): Light-weight static blog engine for Clojure and babashka
- Win a babashka t-shirt by participating in [this](https://twitter.com/borkdude/status/1547847843381030912) contest!
- [AWS Lambda, now with first class parentheses](https://www.juxt.pro/blog/nbb-lambda) by Ray McDermott (about nbb)
- [bb-github-app](https://github.com/brandonstubbs/bb-github-app): An example Babashka Script authenticating as a Github App and interacting with the Checks API
- [Ruuter](https://github.com/askonomm/ruuter#setting-up-with-babashka) is a routing library which works very well with bb
- [Blambda!](https://jmglov.net/blog/2022-07-03-blambda.html) by Josh Glover
- Files with the `.bb` extension are now correctly highlighted as Clojure code on Github! See [this](https://twitter.com/borkdude/status/1543937735429431298) tweet.
- Encode and decode files as kroki url diagrams, a [gist](https://gist.github.com/henryw374/070845dbd8cfb4672a3c0d06cf8b00e4) by Henry Widd
- Customized bb builds with clj-nix: [tweet](https://twitter.com/jlesquembre/status/1543686641461694470)
- Expose Clojure functions in the CLI with babashka and nix: [tweet](https://twitter.com/jlesquembre/status/1546777332471455745)
- [Meander](https://github.com/noprompt/meander) is now compatible with bb: [tweet](https://twitter.com/borkdude/status/1542881167338250242)
- [Deleting AWS Glacier vaults with babashka](https://javahippie.net/clojure/2022/07/23/deleting-aws-glacier-vaults-with-babashka.html) by Tim Zöller
## [2022-06](https://twitter.com/search?q=%28%23babashka%29%20until%3A2022-07-01%20since%3A2022-06-01&src=typed_query&f=live)
- Releases: [0.8.156](https://github.com/babashka/babashka/blob/master/CHANGELOG.md).
- [AWS wiki page](https://github.com/babashka/babashka/wiki/AWS)
- [blambda](https://github.com/jmglov/blambda): Blambda! is a custom runtime for AWS Lambda that lets you write functions using Babashka
- [Babashka CLI](https://blog.michielborkent.nl/babashka-cli.html): turn Clojure functions into CLIs!
- [Http-server](https://github.com/babashka/http-server#babashka): Serve static assets
- [Deps-bundler](https://github.com/MrGung/deps-bundler): Bundle dependencies on
a computer that has access to maven and clojars (PC-A) and bring these over to
a computer with limited access (PC-L).
- [Prismatic/schema](https://github.com/plumatic/schema/blob/master/CHANGELOG.md#130-2022-06-10) and babashka are now compatible
- [Logseq bb tasks](https://github.com/logseq/bb-tasks): Reusable babashka tasks used by logseq team
- [Breakneck Babashka on K8s](Breakneck Babashka on K8s) by Heow Goodman
## [2022-05](https://twitter.com/search?q=%28%23babashka%29%20until%3A2022-06-01%20since%3A2022-05-01&src=typed_query&f=live)
- Releases: [0.8.2](https://github.com/babashka/babashka/blob/master/CHANGELOG.md).
- [Etaoin](https://github.com/clj-commons/etaoin) moved to clj-commons and now works with babashka as well.
- [Nix docs for babashka](https://github.com/babashka/babashka/blob/master/doc/nix.md)
- [Fly.io docs for babashka](https://github.com/babashka/babashka/tree/master/doc/fly_io)
- [Babashka survey results](https://blog.michielborkent.nl/babashka-survey-q1-2022.html)
- [Quickdoc](https://github.com/borkdude/quickdoc): (Quick and minimal API doc generation for Clojure
- [Awyeah-api](https://github.com/grzm/awyeah-api) - Cognitect's aws-api for babashka
## [2022-04](https://twitter.com/search?q=%28%23babashka%29%20until%3A2022-05-01%20since%3A2022-04-01&src=typed_query&f=live)
- Releases: [0.8.0 - 0.8.1](https://github.com/babashka/babashka/blob/master/CHANGELOG.md).
- [Babashka and Clojure](https://youtu.be/ZvOs5Ele6VE) by Rahul Dé at North Virginia Linux Users Group
- [Setup-Clojure](https://github.com/DeLaGuardo/setup-clojure/releases/tag/5.0) Github action is now able to install babashka!
- Control Chrome via devtools using [clj-chrome-devtools](https://github.com/tatut/clj-chrome-devtools/blob/master/bb.clj) which runs with bb!
- Use pods directly in `bb.edn`: [tweet](https://twitter.com/borkdude/status/1510995356229767172)
## [2022-03](https://twitter.com/search?q=%28%23babashka%29%20until%3A2022-04-01%20since%3A2022-03-01&src=typed_query&f=live)
- Releases: [0.7.7 - 0.7.8](https://github.com/babashka/babashka/blob/master/CHANGELOG.md).
- [Create a password manager with Clojure using Babashka, sqlite, honeysql and stash](https://youtu.be/jm0RXmyjRJ8) by Daniel Amber
- [Detecting inconsistent aliases in a clojure codebase](https://www.youtube.com/watch?v=bf8KLKkCH2g) by Oxalorg
- [Clj-konmari](https://github.com/oxalorg/clj-konmari/) by Oxalorg
- [Logseq-query](https://github.com/cldwalker/logseq-query) by Gabriel Horner [(announcement tweet with video)](https://twitter.com/cldwalker/status/1506991213030871041)
- The [loom](https://github.com/aysylu/loom) library is now compatible [(tweet)](https://twitter.com/borkdude/status/1502237220811550723)
- The [at-at](https://github.com/overtone/at-at) library is now compatible
## [2022-02](https://twitter.com/search?q=%28%23babashka%29%20until%3A2022-03-01%20since%3A2022-02-01&src=typed_query&f=live)
- Releases: [0.7.5 - 0.7.6](https://github.com/babashka/babashka/blob/master/CHANGELOG.md).
- [Spire is available as a babashka pod](https://twitter.com/epic_castle/status/1496784352256008194)
- Babashka Clojure template on [Repl.it](https://replit.com/@eccentric-j/Babashka-Clojure-Template?v=1#replit.nix) by Eccentric J
- Create a self-contained executable with [caxa](https://github.com/babashka/babashka/wiki/Self-contained-executable)
- Cli-matic is now compatible due to this [PR](https://github.com/l3nz/cli-matic/pull/145)
- [I, too, Wrote Myself a Static Site Generator](https://dawranliou.com/blog/i-too-wrote-myself-a-static-site-generator/) by Daw-Ran Liou
- [Staplegun](https://github.com/escherize/staplegun): Single file clipboard-manager
- [Bbb](https://github.com/nikvdp/bbb): make executable CLI tools from bb scripts
- [Apptemplate](https://github.com/redstarssystems/apptemplate): Application project template for Clojure featuring bb tasks
## [2022-01](https://twitter.com/search?f=live&q=%28%23babashka%29%20until%3A2022-02-01%20since%3A2022-01-01&src=typed_query)
- Releases: [0.7.4](https://github.com/babashka/babashka/blob/master/CHANGELOG.md).
- [Babashka dev builds](https://github.com/babashka/babashka-dev-builds)
- [Writing Clojure-living-cookbooks](https://www.loop-code-recur.io/live-clojure-cookbooks/) by Cyprien Pannier
- [HTMX Todo App](https://github.com/prestancedesign/babashka-htmx-todoapp)
- [Better linting for `bb.edn`](https://twitter.com/borkdude/status/1484100071134220291)
- [Unwordle](https://github.com/mknoszlig/unwordle): solver for wordle puzzles
- [Using babashka with PHP](https://blog.michielborkent.nl/using-babashka-with-php.html) by Michiel Borkent
## 2021-12
- Releases: [0.6.8 - 0.7.3](https://github.com/babashka/babashka/blob/master/CHANGELOG.md).
- [Scripting with Babashka on Alfred](https://blog.wsscode.com/babashka-and-alfred/) by Wilker Lucio
- [babashka/spec.alpha](https://github.com/babashka/spec.alpha): a fork of spec.alpha that works with babashka.
- Several people are doing [Advent of Code puzzles with babashka](https://twitter.com/search?q=%23babashka%20%20%23AdventOfCode&src=typed_query&f=live)
- Compatibility with a [fork of tools.namespace](https://github.com/babashka/tools.namespace). This allows
running the Cognitect [test-runner](https://github.com/cognitect-labs/test-runner) (Cognitest) from source.
- [bb-components](https://github.com/vedang/bb-scripts#bb-components): A script to find all the components that you should deploy your code to.
- [Babashka workshop at JavaLand](https://github.com/ijug-ev/JavaLand/tree/main/Community-Aktivit%C3%A4ten#bash-war-gestern-shell-scripting-mit-babashka-clojure-ug-d%C3%BCsseldorf-christian-meter-rheinjug-jens-bendisposto)
- Install babashka [dev builds](https://twitter.com/borkdude/status/1475234968146227203)
- [Combine babashka and PHP](https://gist.github.com/borkdude/843548cba14ae9d283191e31bc483959)
- [System wide babashka tasks](https://twitter.com/borkdude/status/1476656022282551300)
- [Run an http file server as a babashka task](https://twitter.com/borkdude/status/1476870516233445377)
## 2021-11
- Releases: [0.6.5 - 0.6.7](https://github.com/babashka/babashka/blob/master/CHANGELOG.md).
- [Contajners](https://github.com/lispyclouds/contajners): An idiomatic,
data-driven, REPL friendly clojure client for OCI container engines.
- [deps-modules](https://github.com/exoscale/deps-modules#babashka): a clojure "tool" that attempts to solve one of the "multi module" project problems with tools.deps in a minimalistic way.
- [Moldable Emacs: a Clojure Playground with Babashka](https://ag91.github.io/blog/2021/11/05/moldable-emacs-a-clojure-playground-with-babashka/)
- [aws pod 0.1.0](https://twitter.com/borkdude/status/1459117378441261056)
- [tools.bbuild](https://github.com/babashka/tools.bbuild): a fork of tools.build that runs with babashka and [tools-deps-native](https://github.com/babashka/tools-deps-native)
- [Making markdown-clj babashka compatible](https://blog.michielborkent.nl/markdown-clj-babashka-compatible.html) by Michiel Borkent
- [radiale](https://github.com/xlfe/radiale): radiale: home automation project written using #babashka and Python
- [Writing a Clojure shell script with Babashka](https://www.youtube.com/watch?v=D-_Mz7rz1po), a video by Max Weber
- [makejack](https://github.com/hugoduncan/makejack): A clojure CLI build tool, and build library which can run with babashka.
- [I wrote myself a static site generator](https://freeston.me/posts/2021-11-29-new-site-generator/) (in babashka) by Dominic Freeston.
- [bipe](https://gist.github.com/borkdude/82dcdd36a1e61ef36f19221876e7b1b6): vipe for babashka
## 2021-10
- Releases: [0.6.2-0.6.4](https://github.com/babashka/babashka/blob/master/CHANGELOG.md).
- Babashka on the [Thoughtworks Technology Radar](https://www.thoughtworks.com/radar/platforms/babashka)
- [ruuter](https://github.com/askonomm/ruuter#setting-up-with-babashka) is a
routing library compatible with babashka.
- A list of [companies](https://github.com/babashka/babashka/blob/master/doc/companies.md) using babashka
- Ilshat Sultanov shares his [babashka tasks](https://twitter.com/just_sultanov/status/1446118161258987534)
- [Slack the music](https://github.com/javahippie/slack-the-music), a babashka script to update your slack status with your current Apple Music track by Tim Zöller.
- [Finding my inner Wes Anderson](https://javahippie.net/clojure/2021/10/18/finding-my-inner-wes-anderson.html) by Tim Zöller.
- [Run a local babashka script in a remote server](https://twitter.com/borkdude/status/1451110414062870528)
- [Replacing my Octopress blog with 200 lines of Babashka](https://blog.michielborkent.nl/migrating-octopress-to-babashka.html) by Michiel Borkent
- The babashka wiki now has a [GNU Emacs](https://github.com/babashka/babashka/wiki/GNU-Emacs) section
- Invoke babashka tasks in a [monorepo](https://github.com/babashka/babashka/discussions/1044#discussioncomment-1544956)
- [Speeding up builds with fs/modified-since](https://blog.michielborkent.nl/speeding-up-builds-fs-modified-since.html) by Michiel Borkent
## 2021-09
- New babashka 0.6.0 released. Highlight: support for `java.net.http` which
enables running [java-http-clj](https://github.com/schmee/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`.
- [rss-saver](https://github.com/adam-james-v/rss-saver): Simple Clojure (Babashka) script that saves articles from world.hey.com RSS feeds.
- [babashka-docker-action-example](https://github.com/borkdude/babashka-docker-action-example)
- [script](https://gist.github.com/rutenkolk/dbd970d03a0d012b671db38434ccbfa7) to upgrade zig lang to the latest dev release
- [Cursive](https://twitter.com/CursiveIDE/status/1439022267187433472) adds support for babashka in 1.11.0
- How to filter tail output with babashka on [StackOverflow](https://stackoverflow.com/questions/69241046/how-to-filter-output-of-tail-with-babashka/69241911?stw=2#69241911)
- [Awesome Babashka: Parse & produce HTML and SQLite](https://blog.jakubholy.net/2021/awesome-babashka-dash/) by Jakub Holy
- [Neil](https://github.com/babashka/neil): an installable babashka script to add common aliases and features to deps.edn-based projects.
## 2021-08
- New babashka 0.5.1 released. Highlight: new `print-deps` command 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.
- Babashka receives long term funding from [Clojurists Together](https://www.clojuriststogether.org/news/long-term-funding-selections/). Thanks!
- Babashka is 2 years old this month: the [first commit](https://github.com/babashka/babashka/commit/6dee50b0face0b890a7f628a63b21d5d706a48ee) was on 9 August 2019!
- [nbb](https://github.com/borkdude/nbb): babashka's Node.js cousin
- [Cursive](https://twitter.com/CursiveIDE/status/1422540023207915520) adds
support for babashka in the latest EAP
- [clojure-lsp](https://twitter.com/ericdallo/status/1422559744712138753) adds support for babashka scripts
- [bb guestbook](https://github.com/SVMBrown/bb-guestbook) by Scot Brown.
- [bb htmx todo app](https://github.com/prestancedesign/babashka-htmx-todoapp) by Michael Sahili.
- [bb aws lambda runtime](https://github.com/tatut/bb-lambda) by Tatu Tarvainen.
## 2021-07
- New babashka 0.5.0 released. Highlights: `clojure.tools.logging` + `taoensso.timbre` added, source compatibility with `clojure.data.json`.
- [Babashka tasks](https://youtu.be/u5ECoR7KT1Y), talk by Michiel Borkent
- [Rewriting a clojure file with rewrite-clj and babashka](https://youtu.be/b7NPKsm8gkc), video by Oxalorg
- [Babashka tasks for PostgreSQL](https://github.com/babashka/babashka/discussions/929) by Stel Abrego
- [String interpolation](https://twitter.com/yogthos/status/1415324124361154561) with Selmer in bb
- [Jirazzz](https://github.com/rwstauner/jirazzz): a babashka JIRA client by Randy Stauner
- [Babashka + scittle guestbook](https://github.com/kloimhardt/babashka-scittle-guestbook) by Kloimhardt
- [Paillier cryptosystem](https://github.com/babashka/babashka/discussions/948) by litteli
- [csv-to-yaml.clj](https://github.com/babashka/babashka/discussions/939) by Cora
## 2021-06
- New babashka 0.4.4 - 0.4.5 released.
- Share your babashka creations on the [Show and tell](https://github.com/babashka/babashka/discussions/categories/show-and-tell) forum on Github.
- [Integrating Babashka into Bazel](https://timjaeger.io/20210627-integrating-babashka-with-bazel.html) by Tim Jäger
- [Babashka + scittle guestbook example](https://github.com/kloimhardt/babashka-scittle-guestbook)
- [Slingshot works with babashka](https://twitter.com/borkdude/status/1402547783295504387)
- [Spire gets a babashka pod](https://twitter.com/epic_castle/status/1402212817533431808)
- [Text to speech AWS example](https://twitter.com/FieryCodDev/status/1401843357555511301) with scittle and babashka.
- [Game of Life](https://gist.github.com/mmzsource/655b9dcfe56eed8a045022837186ed84)
- [ob-babashka](https://gist.github.com/adam-james-v/f4d2b75a70b095d14a351a1eff96b4b0): Emacs org-babel functions for babashka.
- [Normalize auto-resolved keywords](https://github.com/babashka/babashka/tree/master/examples#normalize-keywordsclj)
- [Create PostgreSQL backups](https://twitter.com/stelstuff/status/1400559261025980418) using babashka.
- [Change flutter SDK](https://gist.github.com/ampersanda/aac70cc0644df12199ea32988f3c4d73) using babashka.
## 2021-05
- Babashka 0.3.6-0.4.0 release. Highlights:
- Babashka 0.3.7 - 0.4.3 released. Highlights:
- New [task runner feature](https://book.babashka.org/#tasks).
- Add [Selmer](https://github.com/yogthos/Selmer) to built-in libraries.
- Add compatibility with [jasentaa](https://github.com/rm-hull/jasentaa).
- New [website](https://babashka.org).
- [Talk](https://youtu.be/Yjeh57eE9rg): Babashka: a native Clojure interpreter for scripting — The 2021 Graal Workshop at CGO
- [Blog](https://savo.rocks/posts/playing-new-music-on-old-car-stereo-with-clojure-and-babashka/): Playing New Music On Old Car Stereo With Clojure And Babashka
- [Homoiconicity and feature flags](https://martinklepsch.org/posts/homoiconicity-and-feature-flags.html) by Martin Klepsch.
- [Manage your macOS setup](https://github.com/cldwalker/osx-setup) using babashka.
- [Localizing a Ghost theme](https://martinklepsch.org/posts/localizing-a-ghost-theme.html) by Martin Klepsch.
- [Babashka SQL pods 0.0.8](https://twitter.com/borkdude/status/1396136828479188997) including a MySQL pod
## 2021-04

87
doc/nix.md Normal file
View file

@ -0,0 +1,87 @@
# Using Babashka with Nix
Babashka is [packaged](https://search.nixos.org/packages?type=packages&query=babashka) in nixpkgs and can be easily used from the Nix package manager.
The following assumes a recent installation of nix and uses the unstable [nix cli](https://nixos.org/manual/nix/stable/command-ref/new-cli/nix.html) and [Flakes](https://nixos.org/manual/nix/stable/command-ref/new-cli/nix3-flake.html).
To enable the unstable cli and flakes add the following to `/etc/nix/nix.conf`:
```
extra-experimental-features flakes nix-command
```
## Imperative install on Nix
To imperatively install nix for the current user, run `nix profile install babashka`.
## Declarative global install on NixOS
To install babashka for all users on a NixOS system, place it in `environment.systemPackages` in your `configuration.nix`:
```nix
{ pkgs, ... }:
{
environment.systemPackages = with pkgs; [
babashka
];
}
```
Then run `nixos-rebuild switch`, to activate the new configuration.
## Declarative per-user install with home-manager
You can install babashka for a specific user using [home-manager](https://github.com/nix-community/home-manager). Add the following to your `~/.config/nixpkgs/home.nix`:
```nix
{ pkgs, ... }:
{
home.packages = with pkgs; [
babashka
];
}
```
Then run `home-manager switch`, to activate the new configuration.
## Per project install with direnv
To make babashka available on a per-project basis, you can use [direnv](https://direnv.net/).
Create a file `.envrc` in the project directory with the following contents:
```
use flake
```
Create a file `flake.nix` in the project directory with the following contents:
```nix
{
outputs = {nixpkgs, ...}: let
supportedSystems = ["x86_64-linux" "x86_64-darwin"];
forAllSystems = nixpkgs.lib.genAttrs supportedSystems;
nixpkgsFor = system: import nixpkgs {inherit system;};
in {
devShell = forAllSystems (system: let
pkgs = nixpkgsFor system;
in
pkgs.mkShell {
packages = with pkgs; [
babashka
];
});
};
}
```
After running `direnv allow`, babashka should be available on the `$PATH`, when you are inside the project directory.
## Write Babashka Application
You can write babashka scripts with native dependencies using [WriteBabashkaApplication](https://github.com/sohalt/write-babashka-application).
The WriteBabashkaApplication repository has an [example](https://github.com/Sohalt/write-babashka-application/tree/main/example) `flake.nix` using `cowsay` as an external dependency.
You can download that example, and then build the application using `nix build` or run it using `nix run`.

View file

@ -4,6 +4,9 @@ The following libraries and projects are known to work with babashka.
- [Projects](#projects)
- [Libraries](#libraries)
- [tools.namespace](#toolsnamespace)
- [test-runner](#test-runner)
- [spec.alpha](#specalpha)
- [clj-http-lite](#clj-http-lite)
- [spartan.spec](#spartanspec)
- [missing.test.assertions](#missingtestassertions)
@ -40,6 +43,30 @@ The following libraries and projects are known to work with babashka.
- [rewrite-edn](#rewrite-edn)
- [expound](#expound)
- [omniconf](#omniconf)
- [slingshot](#slingshot)
- [hasch](#hasch)
- [crispin](#crispin)
- [ffclj](#ffclj)
- [multigrep](#multigrep)
- [java-http-clj](#java-http-clj)
- [component](#component)
- [minimallist](#minimallist)
- [ruuter](#ruuter)
- [clj-commons.digest](#clj-commonsdigest)
- [contajners](#contajners)
- [dependency](#dependency)
- [specmonstah](#specmonstah)
- [markdown-clj](#markdown-clj)
- [algo.monads](#algomonads)
- [datalog-parser](#datalog-parser)
- [at-at](#at-at)
- [aysylu/loom](#aysyluloom)
- [Clarktown](#clarktown)
- [Malli](#malli)
- [Meander](#meander)
- [Schema](#schema)
- [Sluj](#sluj)
- [malli-cli](#malli-cli)
- [Pods](#pods)
- [Projects](#projects-1)
- [babashka-test-action](#babashka-test-action)
@ -62,18 +89,47 @@ The following libraries and projects are known to work with babashka.
- [sha-words](#sha-words)
- [adam-james-v/scripts](#adam-james-vscripts)
- [oidc-client](#oidc-client)
- [jirazzz](#jirazzz)
- [Babashka + scittle guestbook](#babashka--scittle-guestbook)
- [bb htmx todo app](#bb-htmx-todo-app)
- [bb aws lambda runtime](#bb-aws-lambda-runtime)
- [bb-github-app](#bb-github-app)
Also keep an eye on the [news](news.md) page for new projects, gists and other
developments around babashka.
## Libraries
### [clj-http-lite](https://github.com/babashka/clj-http-lite)
For a full list of libraries, see [libraries.csv](./libraries.csv). To add a
library, see [these instructions](./dev.md#tests-for-libraries).
A fork of a fork of `clj-http-lite`. Example:
### [tools.namespace](https://github.com/babashka/tools.namespace)
A fork of `tools.namespace`. This is used by other libraries and enables them to
be supported by babashka.
### [test-runner](https://github.com/cognitect-labs/test-runner)
This library works with the
[tools.namespace](https://github.com/babashka/tools.namespace) fork. See its
readme for an example task for running tests.
### [spec.alpha](https://github.com/babashka/spec.alpha)
A fork of `clojure.spec.alpha` that includes support for generation and
instrumentation! Its readme also contains instructions on how to use
`clojure.core.specs.alpha`.
<!-- ### [tools.bbuild](https://github.com/babashka/tools.bbuild) -->
<!-- A fork of `tools.build`. -->
### [clj-http-lite](https://github.com/clj-commons/clj-http-lite)
Example:
``` shell
$ export BABASHKA_CLASSPATH="$(clojure -Sdeps '{:deps {clj-http-lite {:git/url "https://github.com/babashka/clj-http-lite" :sha "f44ebe45446f0f44f2b73761d102af3da6d0a13e"}}}' -Spath)"
$ export BABASHKA_CLASSPATH="$(clojure -Sdeps '{:deps {org.clj-commons/clj-http-lite {:mvn/version "0.4.392"}}}' -Spath)"
$ bb "(require '[clj-http.lite.client :as client]) (:status (client/get \"https://www.clojure.org\"))"
200
@ -81,7 +137,8 @@ $ bb "(require '[clj-http.lite.client :as client]) (:status (client/get \"https:
### [spartan.spec](https://github.com/borkdude/spartan.spec/)
An babashka-compatible implementation of `clojure.spec.alpha`.
An babashka-compatible implementation of `clojure.spec.alpha`. See
[spec.alpha](#specalpha) for a more complete implementation.
### [missing.test.assertions](https://github.com/borkdude/missing.test.assertions)
@ -102,16 +159,10 @@ Ran 1 tests containing 0 assertions.
### [medley](https://github.com/weavejester/medley/)
Requires `bb` >= v0.0.71. Latest coordinates checked with with bb:
``` clojure
{:git/url "https://github.com/weavejester/medley" :sha "a4e5fb5383f5c0d83cb2d005181a35b76d8a136d"}
```
Example:
``` shell
$ export BABASHKA_CLASSPATH=$(clojure -Spath -Sdeps '{:deps {medley {:git/url "https://github.com/weavejester/medley" :sha "a4e5fb5383f5c0d83cb2d005181a35b76d8a136d"}}}')
$ export BABASHKA_CLASSPATH=$(clojure -Spath -Sdeps '{:deps {medley/medley {:mvn/version "1.3.0"}}}')
$ bb -e "(require '[medley.core :as m]) (m/index-by :id [{:id 1} {:id 2}])"
{1 {:id 1}, 2 {:id 2}}
@ -158,16 +209,10 @@ export BABASHKA_CLASSPATH="$(clojure -Sdeps '{:deps {clojure-csv {:mvn/version "
### [regal](https://github.com/lambdaisland/regal)
Requires `bb` >= v0.0.71. Latest coordinates checked with with bb:
``` clojure
{:git/url "https://github.com/lambdaisland/regal" :sha "d4e25e186f7b9705ebb3df6b21c90714d278efb7"}
```
Example:
``` shell
$ export BABASHKA_CLASSPATH=$(clojure -Spath -Sdeps '{:deps {regal {:git/url "https://github.com/lambdaisland/regal" :sha "d4e25e186f7b9705ebb3df6b21c90714d278efb7"}}}')
$ export BABASHKA_CLASSPATH=$(clojure -Spath -Sdeps '{:deps {lambdaisland/regal {:mvn/version "0.0.143"}}}')
$ bb -e "(require '[lambdaisland.regal :as regal]) (regal/regex [:* \"ab\"])"
#"(?:\Qab\E)*"
@ -175,7 +220,7 @@ $ bb -e "(require '[lambdaisland.regal :as regal]) (regal/regex [:* \"ab\"])"
### [cprop](https://github.com/tolitius/cprop/)
A clojure configuration libary. Latest test version: `"0.1.16"`.
A clojure configuration library. Latest test version: `"0.1.16"`.
### [comb](https://github.com/weavejester/comb)
@ -584,6 +629,215 @@ NOTE: slingshot's tests pass with babashka except one: catching a record types
by name. This is due to a difference in how records are implemented in
babashka. This may be fixed later if this turns out to be really useful.
### [hasch](https://github.com/replikativ/hasch)
Cross-platform (JVM and JS atm.) edn data structure hashing for Clojure.
``` clojure
$ export BABASHKA_CLASSPATH=$(clojure -Spath -Sdeps '{:deps {io.replikativ/hasch {:mvn/version "0.3.7"}}}')
$ bb -e "(use 'hasch.core) (edn-hash (range 100))"
(168 252 48 247 180 148 51 182 108 76 20 251 155 187 66 8 124 123 103 28 250 151 26 139 10 216 119 168 101 123 130 225 66 168 48 63 53 99 25 117 173 29 198 229 101 196 162 30 23 145 7 166 232 193 57 239 226 238 240 41 254 78 135 122)
```
NOTE: hasch's tests pass with babashka except the test around hashing
records. This is due to a difference in how records are implemented in
babashka. This may be fixed later if this turns out to be really useful.
### [crispin](https://github.com/dunaj-project/crispin)
Populate a configuration map from multiple sources (environment variables,
system variables, config files, etc.)
Example:
script.clj
``` clojure
#!/usr/bin/env bb
(ns script
(:require [babashka.deps :as deps]))
(deps/add-deps
'{:deps {crispin/crispin {:mvn/version "0.3.8"}}})
(require '[crispin.core :as crispin])
(def app-cfg (crispin/cfg))
(app-cfg :foo)
```
``` text
FOO=1 script.clj
"1"
```
### [ffclj](https://github.com/luissantos/ffclj)
A wrapper around executing `ffmpeg` and `ffprobe`. Supports progress reporting via core.async channels.
### [multigrep](https://github.com/clj-commons/multigrep)
Regex-based file grepping and/or text substitution.
Example:
- find the words that are exactly four letters long in some strings:
```clj
(ns multigrep-demo
(:require [babashka.deps :as deps]
[clojure.pprint :refer [pprint]])
(:import (java.io StringReader)))
(deps/add-deps '{:deps {clj-commons/multigrep {:mvn/version "0.5.0"}}})
(require '[multigrep.core :as grep])
; the StringReaders could be anything that clojure.java.io/reader will accept (files, URLs, etc.)
(let [sentence1 (StringReader. "the quick brown fox jumps over the lazy dog")
sentence2 (StringReader. "Lorem ipsum dolor sit amet")]
(pprint (grep/grep #"\b[a-z]{4}\b" [sentence1 sentence2])))
```
outputs:
```
({:file
#object[java.io.StringReader...],
:line "the quick brown fox jumps over the lazy dog",
:line-number 1,
:regex #"\b[a-z]{4}\b",
:re-seq ("over" "lazy")}
{:file
#object[java.io.StringReader...],
:line "Lorem ipsum dolor sit amet",
:line-number 1,
:regex #"\b[a-z]{4}\b",
:re-seq ("amet")})
```
### [java-http-clj](https://github.com/schmee/java-http-clj)
Http client based on `java.net.http`.
### [component](https://github.com/stuartsierra/component)
A tiny Clojure framework for managing the lifecycle and dependencies of software components which have runtime state.
### [minimallist](https://github.com/green-coder/minimallist)
A minimalist data-driven data model library, inspired by Clojure Spec and Malli.
Example partially borrowed from [minimallist's cljdoc](https://cljdoc.org/d/minimallist/minimallist/CURRENT/doc/usage-in-babashka)
```clj
(require '[babashka.deps :refer [add-deps]])
(add-deps '{:deps {minimallist/minimallist {:git/url "https://github.com/green-coder/minimallist"
:sha "b373bb18b8868526243735c760bdc67a88dd1e9a"}}})
(require '[minimallist.core :as m])
(require '[minimallist.helper :as h])
(def contact (h/map [:name (h/fn string?)]
[:phone (h/fn string?)]))
(m/valid? contact {:name "Lucy" :phone "5551212"}) ;=> true
(m/valid? contact {:name "Lucy" :phone 5551212}) ;=> false
(m/describe contact {:name "Lucy" :phone "5551212"}) ;=> {:valid? true, :entries {...}}
(m/describe contact {:name "Lucy" :phone 5551212}) ;=> {:valid? false, :entries {... :phone {:valid? false...}}}
;; Does not work for now.
;(require '[clojure.test.check.generators :as tcg])
;(require '[minimallist.generator :as mg])
;(tcg/sample (mg/gen (h/fn int?)))
```
### [ruuter](https://github.com/askonomm/ruuter)
A zero-dependency router where each route is a map. Works with the httpkit server built into babashka.
### [clj-commons.digest](https://github.com/clj-commons/digest)
A message digest library, providing functions for MD5, SHA-1, SHA-256, etc.
### [contajners](https://github.com/lispyclouds/contajners)
An idiomatic, data-driven, REPL friendly clojure client for OCI container engines.
Example:
``` clojure
#!/usr/bin/env bb
(require '[babashka.deps :as deps])
(deps/add-deps '{:deps {org.clojars.lispyclouds/contajners {:mvn/version "0.0.6"}}})
(require '[contajners.core :as c])
(def images-docker (c/client {:engine :docker
:category :images
:version "v1.41"
:conn {:uri "unix:///var/run/docker.sock"}}))
; Pull an image
(c/invoke images-docker {:op :ImageCreate
:params {:fromImage "busybox:musl"}})
; list all images
(c/invoke images-docker {:op :ImageList})
```
### [dependency](https://github.com/stuartsierra/dependency)
Represent dependency graphs as a directed acylic graph.
### [specmonstah](https://github.com/reifyhealth/specmonstah)
Write concise, maintainable test fixtures with clojure.spec.alpha.
### [markdown-clj](https://github.com/yogthos/markdown-clj)
Markdown parser that translates markdown to html.
### [algo.monads](https://github.com/clojure/algo.monads)
Macros for defining monads, and definition of the most common monads.
### [datalog-parser](https://github.com/lambdaforge/datalog-parser)
Datalog parser that is compliant with datomic, datascript and datahike.
### [at-at](https://github.com/overtone/at-at)
Ahead-of-time function scheduler. Compatible with babashka 0.7.7+.
### [aysylu/loom](https://github.com/aysylu/loom)
Graph library for Clojure. Compatible with babashka 0.7.8+.
### [Clarktown](https://github.com/askonomm/clarktown)
An extensible and modular zero-dependency, pure-Clojure Markdown parser.
### [Malli](https://github.com/metosin/malli#babashka)
Data-Driven Schemas for Clojure/Script
### [Meander](https://github.com/noprompt/meander)
Tools for transparent data transformation
### [Schema](https://github.com/plumatic/schema)
Clojure(Script) library for declarative data description and validation
### [Sluj](https://github.com/rawleyfowler/sluj)
Sluj is a very small library for converting strings of UTF-16 text to slugs. A slug is a piece of text that is URL safe.
### [malli-cli](https://github.com/piotr-yuxuan/malli-cli)
Configuration and CLI powertool with `metosin/malli`.
## Pods
[Babashka pods](https://github.com/babashka/babashka.pods) are programs that can
@ -651,7 +905,7 @@ A babashka script to obtain covid-19 related information.
### [bb-spotify](https://github.com/kolharsam/bb-spotify)
Contol your spotify player using babashka.
Control your spotify player using babashka.
### [lambdaisland/open-source](https://github.com/lambdaisland/open-source)
@ -695,3 +949,24 @@ A collection of useful scripts. Mainly written with Clojure/babashka
Tired of being forced to use the browser every time you need to refresh an OIDC token to authenticate with a backend service? Finally there is a CLI tool for that - the babashka and Docker powered oidc_client.clj.
Upon first invocation it opens up a browser for the OIDC provider login, thereafter it caches the refresh token and uses it as long as it remains valid.
### [jirazzz](https://github.com/rwstauner/jirazzz)
A babashka JIRA client by Randy Stauner
### [Babashka + scittle guestbook](https://github.com/kloimhardt/babashka-scittle-guestbook)
Luminus guestbook example for Babashka + Scittle.
### [bb htmx todo app](https://github.com/prestancedesign/babashka-htmx-todoapp)
Quick example of a todo list SPA using Babashka and htmx.
### [bb aws lambda runtime](https://github.com/tatut/bb-lambda)
AWS Lambda custom runtime for Babashka scripts.
### [bb-github-app](https://github.com/brandonstubbs/bb-github-app)
An example Babashka script that can authenticate as a Github Application,
this example focuses on the checks api.

View file

@ -25,13 +25,22 @@
- [Invoke vim inside a script](#invoke-vim-inside-a-script)
- [Portal](#portal)
- [Image viewer](#image-viewer)
- [File server](#file-server)
- [HTTP server](#http-server)
- [Torrent viewer](#torrent-viewer)
- [cprop.clj](#cpropclj)
- [fzf](#fzf)
- [digitalocean-ping.clj](#digitalocean-pingclj)
- [download-aliases.clj](#download-aliasesclj)
- [Is TTY?](#is-tty)
- [normalize-keywords.clj](#normalize-keywordsclj)
- [Check stdin for data](#check-stdin-for-data)
- [Using org.clojure/data.xml](#using-orgclojuredataxml)
- [Simple logger](#simple-logger)
- [Using GZip streams (memo utility)](#using-gzip-streams-to-make-a-note-utility)
- [Pretty-printing mySQL results](#pretty-printing-mysql-results)
- [Single page application with Babashka + htmx](#single-page-application-with-babashka--htmx)
- [Wikipedia translation](#wikipedia-translation)
Here's a gallery of useful examples. Do you have a useful example? PR welcome!
@ -372,17 +381,18 @@ $ examples/image-viewer.clj
See [image-viewer.clj](image-viewer.clj).
## File server
## HTTP Server
Opens browser window and lets user navigate through filesystem.
Opens browser window and lets user navigate through filesystem, similar to
`python3 -m http.server`.
Example usage:
``` shell
$ examples/file-server.clj
$ examples/http-server.clj
```
See [file-server.clj](file-server.clj).
See [http-server.clj](http-server.clj).
## Torrent viewer
@ -482,3 +492,79 @@ $ bb examples/normalize-keywords.clj /tmp/test.clj
[:clojure.set/foo :test/bar]
```
## Check stdin for data
```shell
# when piping something in, we get a positive number
$ echo 'abc' | bb '(pos? (.available System/in))'
true
# even if we echo an empty string, we still get the newline
$ echo '' | bb '(pos? (.available System/in))'
true
# with nothing passed in, we finally return false
$ bb '(pos? (.available System/in))'
false
```
## Using org.clojure/data.xml
[xml-example.clj](xml-example.clj) explores some of the capabilities provided
by the `org.clojure/data.xml` library (required as `xml` by default in Babashka).
While running the script will show some output, reading the file shows the library
in use.
```shell
$ bb examples/xml-example.clj
... some vaguely interesting XML manipulation output
```
## Simple logger
[logger.clj](logger.clj) is a simple logger that works in bb.
``` clojure
$ bb "(require 'logger) (logger/log \"the logger says hi\")"
<expr>:1:19 the logger says hi
```
## Using GZip streams to make a note utility
[memo.clj](memo.clj) creates zip files in /tmp for stashing notes (possibly the most inefficient KV store ever)
```shell
$ echo "8675309" | memo.clj put jenny
ok
$ memo.clj get jenny
8675309
```
## Pretty-printing mySQL results
[db_who.clj](db_who.clj) will query mysql for all the connected sessions and pretty-print the user and what program they're using.
```
$ bb db_who.clj
| user | program_name |
|------------------+----------------|
| root@localhost | mysql |
| fred@192.168.1.2 | workbench |
| jane@192.168.1.3 | Toad for mySQL |
```
## Single page application with Babashka + htmx
Example of a todo list SPA using Babashka and htmx
See [htmx_todoapp.clj](htmx_todoapp.clj)
Contributed by [@prestancedesign](https://github.com/prestancedesign).
## Wikipedia translation
[wiki-translate.clj](wiki-translate.clj) uses Wikipedia to translate words from English to Dutch (other languages are available).
``` shell
$ bb wiki-translate.clj window
"Venster (muur) Dutch"
```
Shared by Janne Himanka on Clojurians Slack

11
examples/db_who.clj Normal file
View file

@ -0,0 +1,11 @@
(ns db-who
(:require [clojure.java.shell :as shell]
[clojure.string :as str]
[clojure.pprint :as pp]))
(defn tsv->maps [tsv]
(let [lines (str/split-lines tsv)
[headers & rows] (map #(str/split % #"\t") lines)]
(map #(zipmap headers %) rows)))
(-> (shell/sh "mysql" "--column-names" "-e" "select user, program_name from sys.session;")
:out tsv->maps pp/print-table)

240
examples/htmx_todoapp.clj Normal file
View file

@ -0,0 +1,240 @@
#!/usr/bin/env bb
;; Source: https://github.com/prestancedesign/babashka-htmx-todoapp
(require '[org.httpkit.server :as srv]
'[clojure.java.browse :as browse]
'[clojure.core.match :refer [match]]
'[clojure.pprint :refer [cl-format]]
'[clojure.string :as str]
'[hiccup.core :as h])
(import '[java.net URLDecoder])
;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Config
;;;;;;;;;;;;;;;;;;;;;;;;;;
(def port 3000)
;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Mimic DB (in-memory)
;;;;;;;;;;;;;;;;;;;;;;;;;;
(def todos (atom (sorted-map 1 {:id 1 :name "Taste htmx with Babashka" :done true}
2 {:id 2 :name "Buy a unicorn" :done false})))
(def todos-id (atom (count @todos)))
;;;;;;;;;;;;;;;;;;;;;;;;;;
;; "DB" queries
;;;;;;;;;;;;;;;;;;;;;;;;;;
(defn add-todo! [name]
(let [id (swap! todos-id inc)]
(swap! todos assoc id {:id id :name name :done false})))
(defn toggle-todo! [id]
(swap! todos update-in [(Integer. id) :done] not))
(defn remove-todo! [id]
(swap! todos dissoc (Integer. id)))
(defn filtered-todo [filter-name todos]
(case filter-name
"active" (remove #(:done (val %)) todos)
"completed" (filter #(:done (val %)) todos)
"all" todos
todos))
(defn get-items-left []
(count (remove #(:done (val %)) @todos)))
(defn todos-completed []
(count (filter #(:done (val %)) @todos)))
(defn remove-all-completed-todo []
(reset! todos (into {} (remove #(:done (val %)) @todos))))
;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Template and components
;;;;;;;;;;;;;;;;;;;;;;;;;;
(defn todo-item [{:keys [id name done]}]
[:li {:id (str "todo-" id)
:class (when done "completed")}
[:div.view
[:input.toggle {:hx-patch (str "/todos/" id)
:type "checkbox"
:checked done
:hx-target (str "#todo-" id)
:hx-swap "outerHTML"}]
[:label {:hx-get (str "/todos/edit/" id)
:hx-target (str "#todo-" id)
:hx-swap "outerHTML"} name]
[:button.destroy {:hx-delete (str "/todos/" id)
:_ (str "on htmx:afterOnLoad remove #todo-" id)}]]])
(defn todo-list [todos]
(for [todo todos]
(todo-item (val todo))))
(defn todo-edit [id name]
[:form {:hx-post (str "/todos/update/" id)}
[:input.edit {:type "text"
:name "name"
:value name}]])
(defn item-count []
(let [items-left (get-items-left)]
[:span#todo-count.todo-count {:hx-swap-oob "true"}
[:strong items-left] (cl-format nil " item~p " items-left) "left"]))
(defn todo-filters [filter]
[:ul#filters.filters {:hx-swap-oob "true"}
[:li [:a {:hx-get "/?filter=all"
:hx-push-url "true"
:hx-target "#todo-list"
:class (when (= filter "all") "selected")} "All"]]
[:li [:a {:hx-get "/?filter=active"
:hx-push-url "true"
:hx-target "#todo-list"
:class (when (= filter "active") "selected")} "Active"]]
[:li [:a {:hx-get "/?filter=completed"
:hx-push-url "true"
:hx-target "#todo-list"
:class (when (= filter "completed") "selected")} "Completed"]]])
(defn clear-completed-button []
[:button#clear-completed.clear-completed
{:hx-delete "/todos"
:hx-target "#todo-list"
:hx-swap-oob "true"
:hx-push-url "/"
:class (when-not (pos? (todos-completed)) "hidden")}
"Clear completed"])
(defn template [filter]
(str
"<!DOCTYPE html>"
(h/html
[:head
[:meta {:charset "UTF-8"}]
[:title "Htmx + Babashka"]
[:link {:href "https://unpkg.com/todomvc-app-css@2.4.1/index.css" :rel "stylesheet"}]
[:script {:src "https://unpkg.com/htmx.org@1.5.0/dist/htmx.min.js" :defer true}]
[:script {:src "https://unpkg.com/hyperscript.org@0.8.1/dist/_hyperscript.min.js" :defer true}]]
[:body
[:section.todoapp
[:header.header
[:h1 "todos"]
[:form
{:hx-post "/todos"
:hx-target "#todo-list"
:hx-swap "beforeend"
:_ "on htmx:afterOnLoad set #txtTodo.value to ''"}
[:input#txtTodo.new-todo
{:name "todo"
:placeholder "What needs to be done?"
:autofocus ""}]]]
[:section.main
[:input#toggle-all.toggle-all {:type "checkbox"}]
[:label {:for "toggle-all"} "Mark all as complete"]]
[:ul#todo-list.todo-list
(todo-list (filtered-todo filter @todos))]
[:footer.footer
(item-count)
(todo-filters filter)
(clear-completed-button)]]
[:footer.info
[:p "Click to edit a todo"]
[:p "Created by "
[:a {:href "https://twitter.com/PrestanceDesign"} "Michaël Sλlihi"]]
[:p "Part of "
[:a {:href "http://todomvc.com"} "TodoMVC"]]]])))
;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Helpers
;;;;;;;;;;;;;;;;;;;;;;;;;;
(defn parse-body [body]
(-> body
slurp
(str/split #"=")
second
URLDecoder/decode))
(defn parse-query-string [query-string]
(when query-string
(-> query-string
(str/split #"=")
second)))
;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Handlers
;;;;;;;;;;;;;;;;;;;;;;;;;;
(defn app-index [{:keys [query-string headers]}]
(let [filter (parse-query-string query-string)
ajax-request? (get headers "hx-request")]
(if (and filter ajax-request?)
(h/html (todo-list (filtered-todo filter @todos))
(todo-filters filter))
(template filter))))
(defn add-item [{body :body}]
(let [name (parse-body body)
todo (add-todo! name)]
(h/html (todo-item (val (last todo)))
(item-count))))
(defn edit-item [id]
(let [{:keys [id name]} (get @todos (Integer. id))]
(h/html (todo-edit id name))))
(defn update-item [{body :body} id]
(let [name (parse-body body)
todo (swap! todos assoc-in [(Integer. id) :name] name)]
(h/html (todo-item (get todo (Integer. id))))))
(defn patch-item [id]
(let [todo (toggle-todo! id)]
(h/html (todo-item (get todo (Integer. id)))
(item-count)
(clear-completed-button))))
(defn delete-item [id]
(remove-todo! id)
(h/html (item-count)))
(defn clear-completed []
(remove-all-completed-todo)
(h/html (todo-list @todos)
(item-count)
(clear-completed-button)))
;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Routes
;;;;;;;;;;;;;;;;;;;;;;;;;;
(defn routes [{:keys [request-method uri] :as req}]
(let [path (vec (rest (str/split uri #"/")))]
(match [request-method path]
[:get []] {:body (app-index req)}
[:get ["todos" "edit" id]] {:body (edit-item id)}
[:post ["todos"]] {:body (add-item req)}
[:post ["todos" "update" id]] {:body (update-item req id)}
[:patch ["todos" id]] {:body (patch-item id)}
[:delete ["todos" id]] {:body (delete-item id)}
[:delete ["todos"]] {:body (clear-completed)}
:else {:status 404 :body "Error 404: Page not found"})))
;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Server
;;;;;;;;;;;;;;;;;;;;;;;;;;
(when (= *file* (System/getProperty "babashka.file"))
(let [url (str "http://localhost:" port "/")]
(srv/run-server #'routes {:port port})
(println "serving" url)
(browse/browse-url url)
@(promise)))

View file

@ -2,8 +2,8 @@
#_" -*- mode: clojure; -*-"
;; Source: https://gist.github.com/holyjak/36c6284c047ffb7573e8a34399de27d8
;; Based on https://github.com/babashka/babashka/blob/master/examples/image_viewer.clj
(ns file-server
;; Based on https://github.com/babashka/babashka/blob/master/examples/image-viewer.clj
(ns http-server
(:require [babashka.fs :as fs]
[clojure.java.browse :as browse]
[clojure.string :as str]

11
examples/logger.clj Normal file
View file

@ -0,0 +1,11 @@
(ns logger)
(defmacro log [& msgs]
(let [m (meta &form)
_ns (ns-name *ns*) ;; can also be used for logging
file *file*]
`(binding [*out* *err*] ;; or bind to (io/writer log-file)
(println (str ~file ":"
~(:line m) ":"
~(:column m))
~@msgs))))

16
examples/memo.clj Normal file
View file

@ -0,0 +1,16 @@
#!/usr/bin/env bb
(defn stash [file-name]
(with-open [os (java.util.zip.GZIPOutputStream. (io/output-stream (str "/tmp/" file-name ".zip")))]
(.write os (.getBytes (slurp *in*)))
(.finish os))
'ok)
(defn unstash [file-name]
(print (slurp (java.util.zip.GZIPInputStream. (io/input-stream (str "/tmp/" file-name ".zip"))))))
(let [[action stash-name] *command-line-args*]
(case action
"put" (stash stash-name)
"get" (unstash stash-name)
(println "Invalid op:" action)))

View file

@ -1,18 +1,18 @@
(ns normalize-keywords
(:require [babashka.pods :as pods]
[clojure.java.io :as io]
[rewrite-clj.node :as node]
[rewrite-clj.zip :as z]))
(pods/load-pod 'borkdude/clj-kondo "2021.06.18")
(pods/load-pod 'clj-kondo/clj-kondo "2022.11.02")
(require '[pod.borkdude.clj-kondo :as clj-kondo])
(def code (first *command-line-args*))
(def findings
(->> (with-in-str code
(clj-kondo/run! {:lint [code]
:config {:output {:analysis {:keywords true}}}}))
(defn findings [file-path]
(->> (clj-kondo/run! {:lint [file-path]
:config {:output {:analysis {:keywords true}}}})
:analysis
:keywords
(filter (some-fn :alias :auto-resolved))))
@ -33,6 +33,11 @@
zloc (z/replace zloc (node/coerce k))]
(recur zloc (next findings)))
(recur (z/next zloc) findings)))
(println (str (z/root zloc))))))
(str (z/root zloc)))))
(remove-locs (z/of-file code) findings)
(doseq [f (file-seq (io/file code))
:when (re-find #"\.clj[cdsx]?$" (str f))
:let [file-path (str f)]]
(when-let [findings' (findings file-path)]
(prn (format "Rewriting %s" file-path))
(spit f (remove-locs (z/of-file file-path) findings'))))

View file

@ -0,0 +1,11 @@
#!/usr/bin/env bb
;; by Janne Himanka shared on Clojurians Slack
(require '[babashka.curl :as curl])
(let [url (str "https://en.wikipedia.org/wiki/" (first *command-line-args*))
page (:body (curl/get url))]
(cond
(re-find #"Disambiguation" page)
(doseq [item (map last (re-seq #"<li><a href...wiki/([^\"]+)" page))]
(println item))
:else (last (re-find #"nl.wikipedia.org/.+?title..([^\"]+)" page))))

78
examples/xml-example.clj Normal file
View file

@ -0,0 +1,78 @@
; let's build up a little data structure to play with
(def pet-store-sexp
[:pet-store
[:family
[:owners
[:name "Terry Smith"]
[:name "Sam Smith"]
[:phone "555-1212"]]
[:animals
[:animal {:type "dog"} "Sparky"]]]
[:family
[:owners
[:name "Pat Jones"]
[:phone "555-2121"]]
[:animals
[:animal {:type "hamster"} "Oliver"]
[:animal {:type "cat"} "Kat"]]]])
; we can build XML from this
(def xml-str (xml/indent-str (xml/sexp-as-element pet-store-sexp)))
(println "Our XML as a string is:")
(println xml-str)
(comment xml-str is
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<pet-store>
<family>
<owners>
<name>Terry Smith</name>...")
; and then we can parse that XML back into a data structure
(def xml-tree (xml/parse-str xml-str))
#_"xml-tree is a nested associative structure:
{:tag :pet-store,
:attrs {},
:content
({:tag :family,
:attrs {},
:content ...})}"
; with a couple of quick helper functions...
(defn get-by-tag
"takes a seq of XML elements (or a 'root-ish' element) and a tag, filters by tag name, and gets the content of each"
[elems tag-name]
; if we get (presumably) a root element, wrap it in a vector so we can still
; filter by its tag
(if (xml/element? elems)
(recur [elems] tag-name)
(->> (filter #(= (:tag %) tag-name) elems)
(mapcat :content))))
(defn get-in-by-tag
"takes a seq of XML elements and a vector of tags, and drills into each
element by the tags, sort of like a mash-up of core/get-in and an XPath
lookup"
[elems tag-vec]
(reduce get-by-tag elems tag-vec))
; we can do things like...
(println "all the owner names:" (get-in-by-tag
xml-tree
[:pet-store :family :owners :name]))
(println "all the animal names:" (get-in-by-tag
xml-tree
[:pet-store :family :animals :animal]))
(println "all the phone numbers:" (get-in-by-tag
xml-tree
[:pet-store :family :owners :phone]))

View file

@ -1,109 +0,0 @@
(ns babashka.impl.async
{:no-doc true}
(:require [clojure.core.async :as async]
[clojure.core.async.impl.protocols :as protocols]
[sci.impl.vars :as vars]))
(def ^java.util.concurrent.Executor executor @#'async/thread-macro-executor)
(defn thread-call
"Executes f in another thread, returning immediately to the calling
thread. Returns a channel which will receive the result of calling
f when completed, then close."
[f]
(let [c (async/chan 1)]
(let [binds (vars/get-thread-binding-frame)]
(.execute executor
(fn []
(vars/reset-thread-binding-frame binds)
(try
(let [ret (f)]
(when-not (nil? ret)
(async/>!! c ret)))
(finally
(async/close! c))))))
c))
(defn thread
[_ _ & body]
`(~'clojure.core.async/thread-call (fn [] ~@body)))
(defn alt!!
"Like alt!, except as if by alts!!, will block until completed, and
not intended for use in (go ...) blocks."
[_ _ & clauses]
(async/do-alt 'clojure.core.async/alts!! clauses))
(defn go-loop
[_ _ bindings & body]
(list 'clojure.core.async/thread (list* 'loop bindings body)))
(def async-namespace
{'<!! async/<!!
'>!! async/>!!
'admix async/admix
'alts! async/alts!
'alts!! async/alts!!
'alt!! (with-meta alt!! {:sci/macro true})
'buffer async/buffer
'chan async/chan
'close! async/close!
'do-alt async/do-alt
'do-alts async/do-alts
'dropping-buffer async/dropping-buffer
'filter< async/filter<
'filter> async/filter>
'into async/into
'map async/map
'map< async/map<
'map> async/map>
'mapcat< async/mapcat<
'mapcat> async/mapcat>
'merge async/merge
'mix async/mix
'mult async/mult
'offer! async/offer!
'onto-chan async/onto-chan
'partition async/partition
'partition-by async/partition-by
'pipe async/pipe
'pipeline async/pipeline
'pipeline-async async/pipeline-async
'pipeline-blocking async/pipeline-blocking
'poll! async/poll!
'promise-chan async/promise-chan
'pub async/pub
'put! async/put!
'reduce async/reduce
'remove< async/remove<
'remove> async/remove>
'sliding-buffer async/sliding-buffer
'solo-mode async/solo-mode
'split async/split
'sub async/sub
'take async/take
'take! async/take!
'tap async/tap
'thread (with-meta thread {:sci/macro true})
'thread-call thread-call
'timeout async/timeout
'to-chan async/to-chan
'toggle async/toggle
'transduce async/transduce
'unblocking-buffer? async/unblocking-buffer?
'unique async/unique
'unmix async/unmix
'unmix-all async/unmix-all
'unsub async/unsub
'unsub-all async/unsub-all
'untap async/untap
'untap-all async/untap-all
;; polyfill
'go (with-meta thread {:sci/macro true})
'<! async/<!!
'>! async/>!!
'alt! (with-meta alt!! {:sci/macro true})
'go-loop (with-meta go-loop {:sci/macro true})})
(def async-protocols-namespace
{'ReadPort protocols/ReadPort})

View file

@ -1,7 +1,10 @@
(ns babashka.impl.csv
{:no-doc true}
(:require [clojure.data.csv :as csv]))
(:require [clojure.data.csv :as csv]
[sci.core :as sci]))
(def cns (sci/create-ns 'clojure.data.csv nil))
(def csv-namespace
{'read-csv csv/read-csv
'write-csv csv/write-csv})
{'read-csv (sci/copy-var csv/read-csv cns)
'write-csv (sci/copy-var csv/write-csv cns)})

View file

@ -1,12 +1,26 @@
(ns babashka.impl.datascript
{:no-doc true}
(:require [datascript.core :as d]
[sci.impl.namespaces :refer [copy-var]]
[sci.impl.vars :as vars]))
[datascript.db :as db]
[sci.core :as sci :refer [copy-var]]))
(def datascript-ns (vars/->SciNamespace 'datascript.core nil))
(def datascript-ns (sci/create-ns 'datascript.core nil))
(def datascript-db-ns (sci/create-ns 'datascript.db nil))
(def datascript-namespace
{'create-conn (copy-var d/create-conn datascript-ns)
'transact! (copy-var d/transact! datascript-ns)
'q (copy-var d/q datascript-ns)})
'q (copy-var d/q datascript-ns)
'empty-db (copy-var d/empty-db datascript-ns)
'db-with (copy-var d/db-with datascript-ns)
'filter (copy-var d/filter datascript-ns)
'init-db (copy-var d/init-db datascript-ns)
'datom (copy-var d/datom datascript-ns)
'pull (copy-var d/pull datascript-ns)
'pull-many (copy-var d/pull-many datascript-ns)})
(def datascript-db-namespace
{'db-from-reader (copy-var db/db-from-reader datascript-db-ns)
'datom-from-reader (copy-var db/datom-from-reader datascript-db-ns)
'datom-added (copy-var db/datom-added datascript-db-ns)
'datom-tx (copy-var db/datom-tx datascript-db-ns)})

View file

@ -52,10 +52,11 @@
util/raw-string)
(def hiccup-namespace
{'html (copy-var html-1 hns)})
{'html (copy-var html-1 hns {:name 'html})})
(def hiccup2-namespace
{'html (copy-var html-2 hns2)})
{'html (copy-var html-2 hns2 {:name 'html})
'raw (copy-var util/raw-string hns2 {:name 'raw})})
(def html-mode (copy-var util/*html-mode* uns))
(def escape-strings? (copy-var util/*escape-strings?* uns))
@ -63,7 +64,8 @@
(def hiccup-util-namespace
{'*html-mode* html-mode
'*escape-strings?* escape-strings?
'raw-string (copy-var util/raw-string uns)})
'raw-string (copy-var util/raw-string uns)
'to-uri (copy-var util/to-uri uns)})
(defn render-html [& contents]
(binding [util/*html-mode* @html-mode

View file

@ -72,8 +72,10 @@
'acl (copy-var acl cns)
'unlock (copy-var unlock cns)
'default-client (copy-var client/default-client cns)
'*default-client* default-client})
'*default-client* default-client
'query-string (copy-var client/query-string cns)
'url-encode (copy-var client/url-encode cns)})
(def sni-client-namespace
{'ssl-configurer (copy-var sni-client/ssl-configurer sns)
'default-client (sci/new-var 'sni-client sni-client {:ns sns})})
'default-client (sci/new-var 'default-client sni-client {:ns sns})})

View file

@ -8,10 +8,15 @@
{:obj sns
'server-stop! (copy-var server/server-stop! sns)
'server-port (copy-var server/server-port sns)
'server-status (copy-var server/server-status sns)
'run-server (copy-var server/run-server sns)
'sec-websocket-accept (copy-var server/sec-websocket-accept sns)
'websocket-handshake-check (copy-var server/websocket-handshake-check sns)
'send-checked-websocket-handshake! (copy-var server/send-checked-websocket-handshake! sns)
'send-websocket-handshake! (copy-var server/send-websocket-handshake! sns)
'as-channel (copy-var server/as-channel sns)
'send! (copy-var server/send! sns)})
'send! (copy-var server/send! sns)
'with-channel (copy-var server/with-channel sns)
'on-close (copy-var server/on-close sns)
'close (copy-var server/close sns)}
)

View file

@ -1,11 +1,12 @@
(ns babashka.impl.jdbc
{:no-doc true}
(:require [next.jdbc :as njdbc]
[next.jdbc.sql :as sql]
[sci.impl.namespaces :refer [copy-var]]
[sci.impl.vars :as vars]))
(:require
[next.jdbc :as njdbc]
[next.jdbc.result-set :as rs]
[next.jdbc.sql :as sql]
[sci.core :as sci]))
(def next-ns (vars/->SciNamespace 'next.jdbc nil))
(def next-ns (sci/create-ns 'next.jdbc nil))
(defn with-transaction
"Given a transactable object, gets a connection and binds it to `sym`,
@ -18,20 +19,30 @@
* `:rollback-only` -- `true` / `false`."
[_ _ [sym transactable opts] & body]
(let [con (vary-meta sym assoc :tag 'java.sql.Connection)]
`(next.jdbc/transact ~transactable (^{:once true} fn* [~con] ~@body) ~(or opts {}))))
`(njdbc/transact ~transactable (^{:once true} fn* [~con] ~@body) ~(or opts {}))))
(def njdbc-namespace
{'get-datasource (copy-var njdbc/get-datasource next-ns)
'execute! (copy-var njdbc/execute! next-ns)
'execute-one! (copy-var njdbc/execute-one! next-ns)
'get-connection (copy-var njdbc/get-connection next-ns)
'plan (copy-var njdbc/plan next-ns)
'prepare (copy-var njdbc/prepare next-ns)
'transact (copy-var njdbc/transact next-ns)
'with-transaction (with-meta with-transaction
{:sci/macro true})})
{'get-datasource (sci/copy-var njdbc/get-datasource next-ns)
'execute! (sci/copy-var njdbc/execute! next-ns)
'execute-one! (sci/copy-var njdbc/execute-one! next-ns)
'get-connection (sci/copy-var njdbc/get-connection next-ns)
'plan (sci/copy-var njdbc/plan next-ns)
'prepare (sci/copy-var njdbc/prepare next-ns)
'transact (sci/copy-var njdbc/transact next-ns)
'with-transaction (sci/copy-var with-transaction next-ns)})
(def sns (vars/->SciNamespace 'next.jdbc.sql nil))
(def sns (sci/create-ns 'next.jdbc.sql nil))
(def next-sql-namespace
{'insert-multi! (copy-var sql/insert-multi! sns)})
{'insert-multi! (sci/copy-var sql/insert-multi! sns)})
(def rsns (sci/create-ns 'next.jdbc.result-set nil))
(def result-set-namespace
{'as-maps (sci/copy-var rs/as-maps rsns)
'as-unqualified-maps (sci/copy-var rs/as-unqualified-maps rsns)
'as-modified-maps (sci/copy-var rs/as-modified-maps rsns)
'as-unqualified-modified-maps (sci/copy-var rs/as-unqualified-modified-maps rsns)
'as-lower-maps (sci/copy-var rs/as-lower-maps rsns)
'as-unqualified-lower-maps (sci/copy-var rs/as-unqualified-lower-maps rsns)
'as-maps-adapter (sci/copy-var rs/as-maps-adapter rsns)})

View file

@ -8,7 +8,7 @@
(def tns (sci/create-ns 'lanterna.terminal nil))
(def sns (sci/create-ns 'lanterna.screen nil))
(def cns (sci/create-ns 'lanterna.screen nil))
(def cns (sci/create-ns 'lanterna.constants nil))
(def lanterna-terminal-namespace
{'add-resize-listener (copy-var lanterna.terminal/add-resize-listener tns)

View file

@ -0,0 +1,233 @@
(ns babashka.impl.logging
(:require [clojure.tools.logging]
[clojure.tools.logging.impl :as impl]
[clojure.tools.logging.readable]
[sci.core :as sci]
[taoensso.encore :as encore :refer [have]]
[taoensso.timbre :as timbre]))
;;;; timbre
(def tns (sci/create-ns 'taoensso.timbre nil))
(defn- fline [and-form] (:line (meta and-form)))
(defonce callsite-counter
(encore/counter))
(defmacro log! ; Public wrapper around `-log!`
"Core low-level log macro. Useful for tooling/library authors, etc.
* `level` - must eval to a valid logging level
* `msg-type` - must eval to e/o #{:p :f nil}
* `args` - arguments seq (ideally vec) for logging call
* `opts` - ks e/o #{:config ?err ?base-data spying?
:?ns-str :?file :?line :?column}
Supports compile-time elision when compile-time const vals
provided for `level` and/or `?ns-str`.
Logging wrapper examples:
(defn log-wrapper-fn [& args] (timbre/log! :info :p args))
(defmacro log-wrapper-macro [& args] (timbre/keep-callsite `(timbre/log! :info :p ~args)))"
([{:as opts
:keys [loc level msg-type args vargs
config ?err ?base-data spying?]
:or
{config 'taoensso.timbre/*config*
?err :auto}}]
(have [:or nil? sequential? symbol?] args)
(let [callsite-id (callsite-counter)
{:keys [line column]} (merge (meta &form) loc)
{:keys [ns file line column]} {:ns @sci/ns :file @sci/file :line line :column column}
ns (or (get opts :?ns-str) ns)
file (or (get opts :?file) file)
line (or (get opts :?line) line)
column (or (get opts :?column) column)
elide? (and #_(enc/const-forms? level ns) (timbre/-elide? level ns))]
(when-not elide?
(let [vargs-form
(or vargs
(if (symbol? args)
`(taoensso.timbre/-ensure-vec ~args)
`[ ~@args]))]
;; Note pre-resolved expansion
`(taoensso.timbre/-log! ~config ~level ~ns ~file ~line ~column ~msg-type ~?err
(delay ~vargs-form) ~?base-data ~callsite-id ~spying?
~(get opts :instant)
~(get opts :may-log?))))))
([level msg-type args & [opts]]
(let [{:keys [line column]} (merge (meta &form))
{:keys [ns file line column]} {:ns @sci/ns :file @sci/file :line line :column column}
loc {:ns ns :file file :line line :column column}
opts (assoc (conj {:loc loc} opts)
:level level, :msg-type msg-type, :args args)]
`(taoensso.timbre/log! ~opts))))
(defn make-ns [ns sci-ns ks]
(reduce (fn [ns-map [var-name var]]
(let [m (meta var)
doc (:doc m)
arglists (:arglists m)]
(assoc ns-map var-name
(sci/new-var (symbol var-name) @var
(cond-> {:ns sci-ns
:name (:name m)}
(:macro m) (assoc :macro true)
doc (assoc :doc doc)
arglists (assoc :arglists arglists))))))
{}
(select-keys (ns-publics ns) ks)))
(defn println-appender
"Returns a simple `println` appender for Clojure/Script.
Use with ClojureScript requires that `cljs.core/*print-fn*` be set.
:stream (clj only) - e/o #{:auto :*out* :*err* :std-err :std-out <io-stream>}."
;; Unfortunately no easy way to check if *print-fn* is set. Metadata on the
;; default throwing fn would be nice...
[& [{:keys [stream] :or {stream :auto}}]]
(let [stream
(case stream
:std-err timbre/default-err
:std-out timbre/default-out
stream)]
{:enabled? true
:async? false
:min-level nil
:rate-limit nil
:output-fn :inherit
:fn
(fn [data]
(let [{:keys [output_]} data
stream
(case stream
:auto (if (:error-level? data) @sci/err @sci/out)
:*out* @sci/out
:*err* @sci/err
stream)]
(binding [*out* stream]
(encore/println-atomic (force output_)))))}))
(def default-config (assoc-in timbre/*config* [:appenders :println]
(println-appender {:stream :auto})))
(def config (sci/new-dynamic-var '*config* default-config
{:ns tns}))
(defn swap-config! [f & args]
(apply sci/alter-var-root config f args))
(defn set-level! [level] (swap-config! (fn [m] (assoc m :min-level level))))
(defn merge-config! [m] (swap-config! (fn [old] (encore/nested-merge old m))))
(defmacro -log-and-rethrow-errors [?line & body]
`(try (do ~@body)
(catch Throwable e#
(do
#_(error e#) ; CLJ-865
(timbre/log! :error :p [e#] ~{:?line ?line})
(throw e#)))))
(def timbre-namespace
(assoc (make-ns 'taoensso.timbre tns ['trace 'tracef 'debug 'debugf
'info 'infof 'warn 'warnf
'error 'errorf
'-log! 'with-level
'spit-appender '-spy 'spy
'color-str])
'log! (sci/copy-var log! tns)
'*config* config
'swap-config! (sci/copy-var swap-config! tns)
'merge-config! (sci/copy-var merge-config! tns)
'set-level! (sci/copy-var set-level! tns)
'println-appender (sci/copy-var println-appender tns)
'-log-and-rethrow-errors (sci/copy-var -log-and-rethrow-errors tns)
'-ensure-vec (sci/copy-var encore/ensure-vec tns)))
(def enc-ns (sci/create-ns 'taoensso.encore))
(def encore-namespace
{'catching (sci/copy-var encore/catching enc-ns)
'try* (sci/copy-var encore/try* enc-ns)})
(def timbre-appenders-namespace
(let [tan (sci/create-ns 'taoensso.timbre.appenders.core nil)]
{'println-appender (sci/copy-var println-appender tan)
'spit-appender (sci/copy-var #_:clj-kondo/ignore timbre/spit-appender tan)}))
;;;; clojure.tools.logging
(defn- force-var "To support dynamic vars, etc."
[x] (if (instance? clojure.lang.IDeref x) (deref x) x))
(deftype Logger [logger-ns-str timbre-config]
clojure.tools.logging.impl/Logger
(enabled? [_ level]
;; No support for per-call config
(timbre/may-log? level logger-ns-str
(force-var timbre-config)))
(write! [_ level throwable message]
(log! level :p
[message] ; No support for pre-msg raw args
{:config (force-var timbre-config) ; No support for per-call config
:?ns-str logger-ns-str
:?file nil ; No support
:?line nil ; ''
:?err throwable})))
(deftype LoggerFactory [get-logger-fn]
clojure.tools.logging.impl/LoggerFactory
(name [_] "Timbre")
(get-logger [_ logger-ns] (get-logger-fn logger-ns)))
(alter-var-root
#'clojure.tools.logging/*logger-factory*
(fn [_]
(LoggerFactory.
(encore/memoize (fn [logger-ns] (Logger. (str logger-ns) config))))))
(def lns (sci/create-ns 'clojure.tools.logging nil))
(defmacro log
"Evaluates and logs a message only if the specified level is enabled. See log*
for more details."
([level message]
`(clojure.tools.logging/log ~level nil ~message))
([level throwable message]
`(clojure.tools.logging/log ~(deref sci/ns) ~level ~throwable ~message))
([logger-ns level throwable message]
`(clojure.tools.logging/log clojure.tools.logging/*logger-factory* ~logger-ns ~level ~throwable ~message))
([logger-factory logger-ns level throwable message]
`(let [logger# (impl/get-logger ~logger-factory ~logger-ns)]
(if (impl/enabled? logger# ~level)
(clojure.tools.logging/log* logger# ~level ~throwable ~message)))))
(def tools-logging-namespace
(assoc (make-ns 'clojure.tools.logging lns ['debug 'debugf 'info 'infof 'warn 'warnf 'error 'errorf
'logp 'logf '*logger-factory* 'log*
'trace 'tracef])
'log (sci/copy-var log lns)))
(def lins (sci/create-ns 'clojure.tools.logging.impl nil))
(def tools-logging-impl-namespace
(make-ns 'clojure.tools.logging.impl lins ['get-logger 'enabled?]))
(def tlr-ns (sci/create-ns 'clojure.tools.logging.readable nil))
(def tools-logging-readable-namespace
(make-ns 'clojure.tools.logging.readable tlr-ns ['trace 'tracef 'debug 'debugf 'info 'infof
'warn 'warnf 'error 'errorf 'fatal 'fatalf
'logf 'logp 'spyf]))

View file

@ -0,0 +1,11 @@
(ns babashka.impl.priority-map
(:require [clojure.data.priority-map :as pm]
[sci.core :as sci]))
(def pmns (sci/create-ns 'clojure.data.priority-map))
(def priority-map-namespace
{'priority-map (sci/copy-var pm/priority-map pmns)
'priority-map-keyfn (sci/copy-var pm/priority-map-keyfn pmns)
'subseq (sci/copy-var pm/subseq pmns)
'rsubseq (sci/copy-var pm/rsubseq pmns)})

View file

@ -1,67 +0,0 @@
(ns babashka.impl.rewrite-clj
{:no-doc true}
(:require [rewrite-clj.node]
[rewrite-clj.paredit]
[rewrite-clj.parser]
[rewrite-clj.zip]
[rewrite-clj.zip.subedit]
[sci.core :as sci]))
(def nns (sci/create-ns 'rewrite-clj.node nil))
(def pens (sci/create-ns 'rewrite-clj.paredit nil))
(def pns (sci/create-ns 'rewrite-clj.parser nil))
(def zns (sci/create-ns 'rewrite-clj.zip nil))
(def zsns (sci/create-ns 'rewrite-clj.zip.subedit nil))
#_(defmacro copy-var
"Copies contents from var `sym` to a new sci var. The value `ns` is an
object created with `sci.core/create-ns`."
([sym ns]
`(let [ns# ~ns
var# (var ~sym)
val# (deref var#)
m# (-> var# meta)
ns-name# (vars/getName ns#)
name# (:name m#)
name-sym# (symbol (str ns-name#) (str name#))
new-m# {:doc (:doc m#)
:name name#
:arglists (:arglists m#)
:ns ns#}]
(cond (:dynamic m#)
(new-dynamic-var name# val# new-m#)
(:macro m#)
(new-macro-var name# val# new-m#)
:else (new-var name# val# new-m#)))))
(defn make-ns [ns sci-ns]
(reduce (fn [ns-map [var-name var]]
(let [m (meta var)
no-doc (:no-doc m)
doc (:doc m)
arglists (:arglists m)]
(if no-doc ns-map
(assoc ns-map var-name
(sci/new-var (symbol var-name) @var
(cond-> {:ns sci-ns
:name (:name m)}
(:macro m) (assoc :macro true)
doc (assoc :doc doc)
arglists (assoc :arglists arglists)))))))
{}
(ns-publics ns)))
(def node-namespace
(make-ns 'rewrite-clj.node nns))
(def parser-namespace
(make-ns 'rewrite-clj.parser pns))
(def paredit-namespace
(make-ns 'rewrite-clj.paredit pens))
(def zip-namespace
(make-ns 'rewrite-clj.zip zns))
(def subedit-namespace
(make-ns 'rewrite-clj.zip.subedit zsns))

View file

@ -0,0 +1,7 @@
(ns babashka.impl.rrb-vector
(:require [clojure.core.rrb-vector :as rrb]
[sci.core :as sci]))
(def rrbns (sci/create-ns 'clojure.core.rrb-vector))
(def rrb-vector-namespace {'catvec (sci/copy-var rrb/catvec rrbns)})

View file

@ -1,8 +1,10 @@
(ns babashka.impl.selmer
{:no-doc true}
(:require [babashka.impl.classpath :refer [resource]]
[babashka.impl.common :refer [ctx]]
[sci.core :as sci]
[selmer.filters :as filters]
[selmer.filter-parser :as fp]
[selmer.parser]
[selmer.tags :as tags]
[selmer.util :as util]
@ -10,20 +12,23 @@
(def spns (sci/create-ns 'selmer.parser nil))
(def include #{'env-map})
(defn make-ns [ns sci-ns]
(reduce (fn [ns-map [var-name var]]
(let [m (meta var)
no-doc (:no-doc m)
doc (:doc m)
arglists (:arglists m)]
(if no-doc ns-map
(assoc ns-map var-name
(sci/new-var (symbol var-name) @var
(cond-> {:ns sci-ns
:name (:name m)}
(:macro m) (assoc :macro true)
doc (assoc :doc doc)
arglists (assoc :arglists arglists)))))))
(if (and no-doc (not (contains? include var-name)))
ns-map
(assoc ns-map var-name
(sci/new-var (symbol var-name) @var
(cond-> {:ns sci-ns
:name (:name m)}
(:macro m) (assoc :macro true)
doc (assoc :doc doc)
arglists (assoc :arglists arglists)))))))
{}
(ns-publics ns)))
@ -55,11 +60,56 @@
(binding [util/*escape-variables* @escape-variables]
(selmer.parser/render-template template context-map)))
(defn sci-ns-resolve [ns fqs]
(sci/eval-form (ctx) (list 'clojure.core/ns-resolve ns (list 'quote fqs))))
(defn force! [x]
(if (instance? clojure.lang.IDeref x) @x x))
(defn ^:no-doc resolve-var-from-kw [ns env kw]
(if (namespace kw)
(when-let [v (sci-ns-resolve ns (symbol (str (namespace kw) "/" (name kw))))] {kw (force! v)})
(or
;; check local env first
(when-let [[_ v] (find env kw)] {kw v})
(when-let [v (sci-ns-resolve ns (symbol (name kw)))] {kw (force! v)}))))
(defmacro <<
"Resolves the variables from your template string from the local-env, or the
namespace and puts them into your template for you.
e.g. (let [a 1] (<< \"{{a}} + {{a}} = 2\")) ;;=> \"1 + 1 = 2\" "
[s]
`(->> (selmer.parser/known-variables ~s)
(mapv #(selmer.parser/resolve-var-from-kw ~(deref sci/ns) (selmer.parser/env-map) %))
(apply merge)
(selmer.parser/render ~s)))
(defn resolve-arg
"Resolves an arg as passed to an add-tag! handler using the provided
context-map.
A custom tag handler will receive a seq of args as its first argument.
With this function, you can selectively resolve one or more of those args
so that if they contain literals, the literal value is returned, and if they
contain templates of any sort, which can itself have variables, filters or
tags in it, they will be returned resolved, applied and rendered.
Example:
(resolve-arg {{header-name|upper}} {:header-name \"My Page\"})
=> \"MY PAGE\""
[arg context-map]
(if (fp/literal? arg)
(fp/parse-literal arg)
(render arg context-map)))
(def selmer-parser-namespace
(-> selmer-parser-ns
(assoc 'render-file (sci/copy-var render-file spns)
'render (sci/copy-var render spns)
'render-template (sci/copy-var render-template spns))))
'render-template (sci/copy-var render-template spns)
'resolve-var-from-kw (sci/copy-var resolve-var-from-kw spns)
'resolve-arg (sci/copy-var resolve-arg spns )
'<< (sci/copy-var << spns))))
(def stns (sci/create-ns 'selmer.tags nil))
@ -75,7 +125,9 @@
(def selmer-filters-namespace
{'add-filter! (sci/copy-var filters/add-filter! sfns)
'remove-filter! (sci/copy-var filters/remove-filter! sfns)})
'remove-filter! (sci/copy-var filters/remove-filter! sfns)
'get-filter (sci/copy-var filters/get-filter sfns)
'filters (sci/copy-var filters/filters sfns)})
(defn turn-off-escaping! []
(sci/alter-var-root escape-variables (constantly false)))

View file

@ -4,12 +4,11 @@
[babashka.impl.clojure.spec.gen.alpha :as gen]
[babashka.impl.clojure.spec.test.alpha :as test]
[clojure.core :as c]
[sci.core :as sci :refer [copy-var]]
[sci.impl.vars :as vars]))
[sci.core :as sci :refer [copy-var]]))
(def sns (vars/->SciNamespace 'clojure.spec.alpha nil))
(def tns (vars/->SciNamespace 'clojure.spec.test.alpha nil))
(def gns (vars/->SciNamespace 'clojure.spec.gen.alpha nil))
(def sns (sci/create-ns 'clojure.spec.alpha nil))
(def tns (sci/create-ns 'clojure.spec.test.alpha nil))
(def gns (sci/create-ns 'clojure.spec.gen.alpha nil))
(defn- ns-qualify
"Qualify symbol s by resolving it or using the current *ns*."

View file

@ -174,4 +174,26 @@
(println (str "'" k) (format "(sci/copy-var tc/%s p-ns)" k)))
(def test-check-namespace
{'quick-check (sci/copy-var tc/quick-check p-ns)})
{'quick-check (sci/copy-var tc/quick-check tc-ns)})
#_(require '[clojure.test.check.clojure-test :as tct])
#_(def tct-ns (sci/create-ns 'clojure.test.check nil))
#_(doseq [k (sort (keys (ns-publics 'clojure.test.check.clojure-test)))]
(println (str "'" k) (format "(sci/copy-var tct/%s tct-ns)" k)))
#_(def test-check-clojure-test-namespace
{'*default-opts* (sci/copy-var tct/*default-opts* tct-ns)
'*default-test-count* (sci/copy-var tct/*default-test-count* tct-ns)
'*report-completion* (sci/copy-var tct/*report-completion* tct-ns)
'*report-shrinking* (sci/copy-var tct/*report-shrinking* tct-ns)
'*report-trials* (sci/copy-var tct/*report-trials* tct-ns)
'*trial-report-period* (sci/copy-var tct/*trial-report-period* tct-ns)
'assert-check (sci/copy-var tct/assert-check tct-ns)
'default-reporter-fn (sci/copy-var tct/default-reporter-fn tct-ns)
'defspec (sci/copy-var tct/defspec tct-ns)
'process-options (sci/copy-var tct/process-options tct-ns)
'trial-report-dots (sci/copy-var tct/trial-report-dots tct-ns)
'trial-report-periodic (sci/copy-var tct/trial-report-periodic tct-ns)
'with-test-out* (sci/copy-var tct/with-test-out* tct-ns)})

View file

@ -1,10 +1,9 @@
(ns babashka.impl.transit
(:require [cognitect.transit :as transit]
[sci.impl.namespaces :refer [copy-var]]
[sci.impl.vars :as vars]))
(:require
[cognitect.transit :as transit]
[sci.core :as sci :refer [copy-var]]))
(def tns (vars/->SciNamespace 'cognitect.transit nil))
(def tns (sci/create-ns 'cognitect.transit nil))
(def transit-namespace
{'write (copy-var transit/write tns)
@ -16,4 +15,5 @@
'reader (copy-var transit/reader tns)
'read-handler (copy-var transit/read-handler tns)
'read-handler-map (copy-var transit/read-handler-map tns)
'default-write-handlers (copy-var transit/default-write-handlers tns)
'tagged-value (copy-var transit/tagged-value tns)})

View file

@ -1,13 +1,52 @@
(ns babashka.impl.xml
{:no-doc true}
(:require [clojure.data.xml :as xml]
[sci.impl.namespaces :refer [copy-var]]
[sci.impl.vars :as vars]))
(:require [babashka.impl.common :refer [ctx]]
[clojure.data.xml :as xml]
[clojure.data.xml.event :as event]
[clojure.data.xml.tree :as tree]
[sci.core :as sci :refer [copy-var]]
[sci.impl.vars]))
(def xns (vars/->SciNamespace 'clojure.data.xml nil))
(def xns (sci/create-ns 'clojure.data.xml nil))
(def xens (sci/create-ns 'clojure.data.xml.event nil))
(def xtns (sci/create-ns 'clojure.data.xml.tree nil))
(defn- clj-ns-name [ns]
(cond (instance? sci.lang.Namespace ns) (str ns)
(keyword? ns) (name ns)
:else (str ns)))
(defn alias-uri
"Define a Clojure namespace aliases for xmlns uris.
This sets up the current namespace for reading qnames denoted with
Clojure's ::alias/keywords reader feature.
## Example
(alias-uri :D \"DAV:\")
; similar in effect to
;; (require '[xmlns.DAV%3A :as D])
; but required namespace is auto-created
; henceforth, shorthand keywords can be used
{:tag ::D/propfind}
; ::D/propfind will be expanded to :xmlns.DAV%3A/propfind
; in the current namespace by the reader
## Clojurescript support
Currently, namespaces can't be auto-created in Clojurescript.
Dummy files for aliased uris have to exist. Have a look at `uri-file` and `print-uri-file-command!` to create those."
{:arglists '([& {:as alias-nss}])}
[& ans]
(loop [[a n & rst :as ans] ans]
(when (seq ans)
#_(assert (<= (count ans)) (pr-str ans))
(let [xn (xml/uri-symbol n)
al (symbol (clj-ns-name a))]
(sci/eval-form (ctx) `(create-ns (quote ~xn)))
(sci/eval-form (ctx) `(alias (quote ~al) (quote ~xn)))
(recur rst)))))
(def xml-namespace
{'aggregate-xmlns (copy-var xml/aggregate-xmlns xns)
'alias-uri (copy-var alias-uri xns)
'as-qname (copy-var xml/as-qname xns)
'cdata (copy-var xml/cdata xns)
'element (copy-var xml/element xns)
@ -33,3 +72,11 @@
'uri-file (copy-var xml/uri-file xns)
'uri-symbol (copy-var xml/uri-symbol xns)
'xml-comment (copy-var xml/xml-comment xns)})
(def xml-event-namespace
{'event-element (copy-var event/event-element xens)
'event-exit? (copy-var event/event-exit? xens)
'event-node (copy-var event/event-node xens)})
(def xml-tree-namespace
{'seq-tree (copy-var tree/seq-tree xtns)})

View file

@ -1,9 +1,14 @@
(ns babashka.impl.ordered
{:no-doc true}
(:require [flatland.ordered.map :as omap]
[flatland.ordered.set :as oset]
[sci.core :as sci]))
(def omap-ns (sci/create-ns 'flatland.ordered.map nil))
(def oset-ns (sci/create-ns 'flatland.ordered.set nil))
(def ordered-map-ns
{'ordered-map (sci/copy-var omap/ordered-map omap-ns)})
(def ordered-set-ns
{'ordered-set (sci/copy-var oset/ordered-set oset-ns)})

View file

@ -1,13 +1,15 @@
(ns babashka.impl.yaml
{:no-doc true}
(:require [clj-yaml.core :as yaml]
[sci.impl.namespaces :refer [copy-var]]
[sci.impl.vars :as vars]))
[sci.core :as sci :refer [copy-var]]))
(def yns (vars/->SciNamespace 'clj-yaml.core nil))
(def yns (sci/create-ns 'clj-yaml.core nil))
(def yaml-namespace
{'mark (copy-var yaml/mark yns)
'unmark (copy-var yaml/unmark yns)
'generate-string (copy-var yaml/generate-string yns)
'parse-string (copy-var yaml/parse-string yns)})
'parse-string (copy-var yaml/parse-string yns)
'generate-stream (copy-var yaml/generate-stream yns)
'parse-stream (copy-var yaml/parse-stream yns)
})

2
fs

@ -1 +1 @@
Subproject commit 1beb91cd5f352d1e3a914c94e7ec25a2644b07e5
Subproject commit fdd5780bc4df4931332b56082c6c3a5c3c85066d

2
impl-java/.dir-locals.el Normal file
View file

@ -0,0 +1,2 @@
((nil
(cider-clojure-cli-global-options . "-A:test:build")))

2
impl-java/bb.edn Normal file
View file

@ -0,0 +1,2 @@
{:tasks {install (clojure "-T:build install")
deploy (clojure "-T:build deploy")}}

62
impl-java/build.clj Normal file
View file

@ -0,0 +1,62 @@
(ns build
(:require [build.reify2 :as reify2]
[clojure.tools.build.api :as b]))
(def lib 'org.babashka/babashka.impl.java)
(def version "0.1.10")
(def class-dir "target/classes")
(def basis (b/create-basis {:project "deps.edn"}))
(def jar-file (format "target/%s-%s.jar" (name lib) version))
(defn clean [_]
(b/delete {:path "target"}))
(defn gen-classes [_]
(reify2/gen-classes nil))
(defn compile-java [_]
(b/javac {:src-dirs ["src-java"]
:class-dir class-dir
:basis basis
:javac-opts ["--release" "8"]}))
(defn jar [_]
(compile-java nil)
(gen-classes nil)
(b/write-pom {:class-dir class-dir
:lib lib
:version version
:basis basis
:src-dirs ["src"]
:pom-data
[[:licenses
[:license
[:name "MIT License"]
[:url "https://opensource.org/license/mit/"]]]]})
(b/copy-dir {:src-dirs ["src"]
:target-dir class-dir})
(b/jar {:class-dir class-dir
:jar-file jar-file}))
(defn install [_]
(jar nil)
(b/install {:basis basis
:lib lib
:version version
:jar-file jar-file
:class-dir class-dir}))
(defn deploy [opts]
(jar opts)
((requiring-resolve 'deps-deploy.deps-deploy/deploy)
(merge {:installer :remote
:artifact jar-file
:pom-file (b/pom-path {:lib lib :class-dir class-dir})}
opts))
opts)
;;;; Scratch
(comment
(gen-classes nil)
)

188
impl-java/build/reify2.clj Normal file
View file

@ -0,0 +1,188 @@
(ns build.reify2
{:no-doc true}
(:require [babashka.impl.reify2.interfaces :refer [interfaces]]
[insn.core :as insn]))
(set! *warn-on-reflection* false)
(defn set-symbol! [s]
[[:aconst-null]
[:ldc s]
[:invokestatic clojure.lang.Symbol "intern" [String String clojure.lang.Symbol]]
[:putstatic :this (str "_sym_" s) clojure.lang.Symbol]])
(defn return [desc]
(case (last desc)
:void [:return]
(:boolean :int) [:ireturn]
[:areturn]))
(defn loads [desc cast?]
(let [desc (butlast desc)]
(vec
(mapcat (fn [i e]
(case e
:boolean [[:iload i]
(when cast? [:invokestatic Boolean "valueOf" [:boolean Boolean]])]
:int [[:iload i]
(when cast? [:invokestatic Integer "valueOf" [:int Integer]])]
[[:aload i]]))
(range 1 (inc (count desc)))
desc))))
(defn emit-method [class meth desc default]
(let [args (dec (count desc))]
[[[:aload 0]
[:getfield :this "_methods" java.util.Map]
[:getstatic :this (str "_sym_" meth) clojure.lang.Symbol]
[:invokeinterface java.util.Map "get" [Object Object]]
[:checkcast clojure.lang.IFn]
[:astore (inc args)]
[:aload (inc args)]
[:ifnull :fallback]
[:aload (inc args)]
;; load this, always the first argument of IFn
[:aload 0]]
;; load remaining args
(loads desc true)
[[:invokeinterface clojure.lang.IFn "invoke" (vec (repeat (inc (count desc)) Object))]
(let [ret-type* (last desc)
ret-type (if (class? ret-type*)
(.getName ^Class ret-type*)
ret-type*)]
(case ret-type
:void [:pop]
:boolean [[:checkcast Boolean]
[:invokevirtual Boolean "booleanValue"]]
:int [[:checkcast Integer]
[:invokevirtual Integer "intValue"]]
"java.lang.Object" nil
(when (class? ret-type*)
[[:checkcast ret-type*]])))
(return desc)
[:mark :fallback]]
(if default
[[[:aload 0]]
(loads desc false)
[[:invokespecial class meth desc true]
(return desc)]]
[[:new java.lang.UnsupportedOperationException]
[:dup]
[:ldc (format "No implementation of method found: %s %s" meth desc)]
[:invokespecial java.lang.UnsupportedOperationException :init [String :void]]
[:athrow]])]))
(defn interface-data [^Class interface methods]
(let [class-sym (symbol (.getName interface))
method-names (distinct (map :name methods))]
{:name (symbol (str "babashka.impl." (.getName interface)))
:version 1.8
:interfaces [class-sym
'sci.impl.types.IReified
'clojure.lang.IMeta
'clojure.lang.IObj]
:flags [:super :public]
:fields (into [{:flags #{:private},
:name "_methods" :type java.util.Map}
{:flags #{:private},
:name "_interfaces" :type Object}
{:flags #{:private},
:name "_protocols" :type Object}
{:flags #{:private},
:name "_meta" :type clojure.lang.IPersistentMap}]
(for [name method-names]
{:flags #{:private :static},
:name (str "_sym_" name) :type clojure.lang.Symbol}))
:methods (into [{:name :clinit
:emit (reduce into
[]
(conj
(mapv set-symbol! method-names)
[[:return]]))}
{:name :init
:desc [:void]
:emit [[:aload 0]
[:invokespecial :super :init [:void]]
[:return]]}
{:name :init
:desc [java.util.Map Object Object :void]
:emit [[:aload 0]
[:invokespecial :super :init [:void]]
[:aload 0]
[:aload 1]
[:putfield :this "_methods" java.util.Map]
[:aload 0]
[:aload 2]
[:putfield :this "_interfaces" Object]
[:aload 0]
[:aload 3]
[:putfield :this "_protocols" Object]
[:return]]}
{:name :meta
:desc [clojure.lang.IPersistentMap]
:emit [[:aload 0]
[:getfield :this "_meta" clojure.lang.IPersistentMap]
[:areturn]]}
{:name :withMeta
:desc [clojure.lang.IPersistentMap clojure.lang.IObj]
:emit [[:aload 0]
[:aload 1]
[:putfield :this "_meta" clojure.lang.IPersistentMap]
[:aload 0]
[:areturn]]}
{:name :getInterfaces
:desc [Object]
:emit [[:aload 0]
[:getfield :this "_interfaces" Object]
[:areturn]]}
{:name :getMethods
:desc [Object]
:emit [[:aload 0]
[:getfield :this "_methods" java.util.Map]
[:areturn]]}
{:name :getProtocols
:desc [Object]
:emit [[:aload 0]
[:getfield :this "_protocols" Object]
[:areturn]]}]
(for [{:keys [name desc default]} methods]
{:flags #{:public}, :name name
:desc desc
:emit (emit-method interface name desc default)}
))}))
(set! *warn-on-reflection* true)
(defn type->kw [type]
(condp = type
Void/TYPE :void
Boolean/TYPE :boolean
Integer/TYPE :int
type))
(defn class->methods [^Class clazz]
(let [meths (.getMethods clazz)
meths (mapv bean meths)
;; TODO: fix problems with clojure.lang.IFn, special cased for now
;; The problem is that the 20-arity (highest one) could not be reified
;; meths (filter #(<= (:parameterCount %) 19) meths)
meths (mapv (fn [{:keys [name
parameterTypes
returnType
default]}]
(let [ret-type (type->kw returnType)]
{:name name
:desc (conj (mapv type->kw parameterTypes) ret-type)
:default default}))
meths)]
(distinct meths)))
(let [i clojure.lang.IFn]
(insn/define (insn/visit (interface-data i (class->methods i)))))
(def reified (babashka.impl.clojure.lang.IFn. {'invoke (fn [& _args] :yep)} {} {}))
(defn gen-classes [_]
(doseq [i interfaces]
(insn/write (doto (insn/visit (interface-data i (class->methods i)))
insn/define) "target/classes")))

13
impl-java/deps.edn Normal file
View file

@ -0,0 +1,13 @@
{:deps {org.babashka/sci.impl.types {:mvn/version "0.0.2"}}
:aliases
{:build ;; added by neil
{:paths ["." "build" "src"]
:deps {io.github.clojure/tools.build {:git/tag "v0.9.6" :git/sha "8e78bcc"}
slipset/deps-deploy {:mvn/version "0.2.0"}
org.babashka/sci.impl.types {:mvn/version "0.0.2"}
;; insn/insn {:mvn/version "0.5.3"}
insn/insn {
:git/sha "f85da286d429b507480f8527b12ce3e1e0e17296"
:git/url "https://github.com/phronmophobic/insn"
}}
:ns-default build}}}

View file

@ -0,0 +1,94 @@
// This file is mostly a workaround for https://github.com/oracle/graal/issues/1956
package babashka.impl;
import java.util.WeakHashMap;
import java.io.*;
import java.util.Objects;
import java.net.*;
import java.util.jar.*;
public class URLClassLoader extends java.net.URLClassLoader implements Closeable {
private WeakHashMap<Closeable,Void>
closeables = new WeakHashMap<>();
public URLClassLoader(java.net.URL[] urls) {
super(urls);
}
public URLClassLoader(java.net.URL[] urls, java.net.URLClassLoader parent) {
super(urls, parent);
}
public void _addURL(java.net.URL url) {
super.addURL(url);
}
// calling super.getResource() returned nil in native-image
public java.net.URL getResource(String name) {
return findResource(name);
}
// calling super.getResourceAsStream() returned nil in native-image
public InputStream getResourceAsStream(String name) {
Objects.requireNonNull(name);
URL url = getResource(name);
try {
if (url == null) {
return null;
}
URLConnection urlc = url.openConnection();
InputStream is = urlc.getInputStream();
if (urlc instanceof JarURLConnection) {
JarFile jar = ((JarURLConnection)urlc).getJarFile();
synchronized (closeables) {
if (!closeables.containsKey(jar)) {
closeables.put(jar, null);
}
}
} else {
synchronized (closeables) {
closeables.put(is, null);
}
}
return is;
} catch (IOException e) {
return null;
}
}
public java.util.Enumeration<java.net.URL> getResources(String name) throws java.io.IOException {
return findResources(name);
}
public void close() throws IOException {
super.close();
java.util.List<IOException> errors = new java.util.ArrayList<IOException>();
synchronized (closeables) {
java.util.Set<Closeable> keys = closeables.keySet();
for (Closeable c : keys) {
try {
c.close();
} catch (IOException ex) {
errors.add(ex);
}
}
closeables.clear();
}
if (errors.isEmpty()) {
return;
}
IOException firstEx = errors.remove(0);
for (IOException error: errors) {
firstEx.addSuppressed(error);
}
throw firstEx;
}
}

View file

@ -0,0 +1,90 @@
(ns babashka.impl.reify2
(:require [babashka.impl.reify2.interfaces :refer [interfaces]]))
(set! *warn-on-reflection* false)
(defn method-or-bust [methods k]
(or (get methods k)
(throw (UnsupportedOperationException. "Method not implemented: " k))))
(defn reify-ifn [m]
(let [methods (:methods m)
invoke-fn (or (get methods 'invoke)
(fn [& _args]
(throw (UnsupportedOperationException. "Method not implemented: invoke"))))
apply-fn (or (get methods 'applyTo)
(fn [& _args]
(throw (UnsupportedOperationException. "Method not implemented: applyTo"))))]
(reify
sci.impl.types.IReified
(getMethods [_] (:methods m))
(getInterfaces [_] (:interfaces m))
(getProtocols [_] (:protocols m))
clojure.lang.IFn
(invoke [this] (invoke-fn this))
(invoke [this a0] (invoke-fn this a0))
(invoke [this a0 a1] (invoke-fn this a0 a1))
(invoke [this a0 a1 a2] (invoke-fn this a0 a1 a2))
(invoke [this a0 a1 a2 a3] (invoke-fn this a0 a1 a2 a3))
(invoke [this a0 a1 a2 a3 a4] (invoke-fn this a0 a1 a2 a3 a4))
(invoke [this a0 a1 a2 a3 a4 a5] (invoke-fn this a0 a1 a2 a3 a4 a5))
(invoke [this a0 a1 a2 a3 a4 a5 a6] (invoke-fn this a0 a1 a2 a3 a4 a5 a6))
(invoke [this a0 a1 a2 a3 a4 a5 a6 a7] (invoke-fn this a0 a1 a2 a3 a4 a5 a6 a7))
(invoke [this a0 a1 a2 a3 a4 a5 a6 a7 a8] (invoke-fn this a0 a1 a2 a3 a4 a5 a6 a7 a8))
(invoke [this a0 a1 a2 a3 a4 a5 a6 a7 a8 a9] (invoke-fn this a0 a1 a2 a3 a4 a5 a6 a7 a8 a9))
(invoke [this a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10] (invoke-fn this a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10))
(invoke [this a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11] (invoke-fn this a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11))
(invoke [this a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12] (invoke-fn this a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12))
(invoke [this a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13] (invoke-fn this a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13))
(invoke [this a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14] (invoke-fn this a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14))
(invoke [this a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15] (invoke-fn this a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15))
(invoke [this a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16] (invoke-fn this a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16))
(invoke [this a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 a17] (invoke-fn this a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 a17))
(invoke [this a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 a17 a18] (invoke-fn this a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 a17 a18))
(invoke [this a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 a17 a18 a19] (invoke-fn this a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 a17 a18 a19))
(invoke [this a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 a17 a18 a19 a20] (invoke-fn this a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 a17 a18 a19 a20))
(applyTo [this arglist] (apply-fn this arglist)))))
(defn reify-object [m]
(let [methods (:methods m)
toString-fn (or (get methods 'toString)
(fn [this]
(str
(.getName (.getClass this))
"@"
(Integer/toHexString (.hashCode this)))))]
(reify
sci.impl.types.IReified
(getMethods [_] (:methods m))
(getInterfaces [_] (:interfaces m))
(getProtocols [_] (:protocols m))
java.lang.Object
(toString [this] (toString-fn this)))))
(defmacro gen-reify-fn []
`(fn [~'m]
(when (> (count (:interfaces ~'m)) 1)
(throw (UnsupportedOperationException. "babashka reify only supports implementing a single interface")))
(if (empty? (:interfaces ~'m))
(reify
sci.impl.types.IReified
(getMethods [_] (:methods ~'m))
(getInterfaces [_] (:interfaces ~'m))
(getProtocols [_] (:protocols ~'m)))
(case (.getName ~(with-meta `(first (:interfaces ~'m))
{:tag 'Class}))
~@(mapcat identity
(cons
["clojure.lang.IFn"
`(reify-ifn ~'m)
"java.lang.Object"
`(reify-object ~'m)]
(for [i interfaces]
(let [in (.getName ^Class i)]
[in
`(new ~(symbol (str "babashka.impl." in))
(:methods ~'m)
(:interfaces ~'m)
(:protocols ~'m))]))))))))
(def reify-fn (gen-reify-fn))

View file

@ -0,0 +1,38 @@
(ns babashka.impl.reify2.interfaces)
(def interfaces [java.nio.file.FileVisitor
java.nio.file.DirectoryStream$Filter
java.io.FileFilter
java.io.FilenameFilter
clojure.lang.Associative
clojure.lang.ILookup
java.util.Map$Entry
;; TODO: fix problems with clojure.lang.IFn, special cased for now
;; The problem is that the 20-arity (highest one) could not be reified
;; clojure.lang.IFn
clojure.lang.IPersistentCollection
clojure.lang.IReduce
clojure.lang.IReduceInit
clojure.lang.IKVReduce
clojure.lang.Indexed
clojure.lang.IPersistentMap
clojure.lang.IPersistentStack
clojure.lang.Reversible
clojure.lang.Seqable
java.lang.Iterable
java.lang.Runnable
java.net.http.WebSocket$Listener
java.util.Iterator
java.util.function.Consumer
java.util.function.BiConsumer
java.util.function.Function
java.util.function.BiFunction
java.util.function.Predicate
java.util.function.Supplier
java.lang.Comparable
javax.net.ssl.X509TrustManager
clojure.lang.LispReader$Resolver
sun.misc.SignalHandler
java.util.concurrent.ThreadFactory
java.lang.Thread$UncaughtExceptionHandler
java.util.concurrent.Callable])

99
install
View file

@ -8,6 +8,7 @@ static_binary="false"
default_install_dir="/usr/local/bin"
install_dir="$default_install_dir"
download_dir=""
dev_build=""
print_help() {
echo "Installs latest (or specific) version of babashka. Installation directory defaults to /usr/local/bin."
@ -28,6 +29,32 @@ print_help() {
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 ]]
do
key="$1"
@ -56,6 +83,10 @@ do
static_binary="true"
shift
;;
--dev-build)
dev_build="true"
shift
;;
*) # unknown option
print_help
shift
@ -74,7 +105,11 @@ if [[ "$checksum" != "" ]] && [[ "$version" == "" ]]; then
fi
if [[ "$version" == "" ]]; then
version="$(curl -sL https://raw.githubusercontent.com/babashka/babashka/master/resources/BABASHKA_RELEASED_VERSION)"
if [[ "$dev_build" == "true" ]]; then
version="$(fetch https://raw.githubusercontent.com/babashka/babashka/master/resources/BABASHKA_VERSION)"
else
version="$(fetch https://raw.githubusercontent.com/babashka/babashka/master/resources/BABASHKA_RELEASED_VERSION)"
fi
fi
case "$(uname -s)" in
@ -82,21 +117,36 @@ case "$(uname -s)" in
Darwin*) platform=macos;;
esac
case "$(uname -m)" in
aarch64) arch=aarch64;;
*) arch=amd64;;
esac
# Ugly ugly conversion of version to a comparable number
IFS='.' read -ra VER <<< "$version"
IFS='.' read -ra VER <<< "${version//-SNAPSHOT/}"
vernum=$(printf "%03d%03d%03d" "${VER[0]}" "${VER[1]}" "${VER[2]}")
if [[ $vernum -le 000002013 ]]; then
ext="zip"
util="$(which unzip) -qqo"
case "$(uname -m)" in
aarch64) arch=aarch64
if [[ "$platform" == "linux" ]]; then
static_binary="true"
fi
;;
arm64) if [[ 10#$vernum -le 10#000008002 ]]; then
arch="amd64"
else
arch="aarch64"
fi
;;
*) arch=amd64
# always use static image on linux
if [[ "$platform" == "linux" ]]; then
static_binary="true"
fi
;;
esac
if [[ 10#$vernum -le 10#000002013 ]]; then
ext="zip"
util="$(which unzip) -qqo"
else
ext="tar.gz"
util="$(which tar) -zxf"
ext="tar.gz"
util="$(which tar) -zxf"
fi
case "$platform-$static_binary" in
@ -109,16 +159,35 @@ case "$platform-$static_binary" in
;;
esac
download_url="https://github.com/babashka/babashka/releases/download/v$version/$filename"
if [[ "$version" == *-SNAPSHOT ]]
then
repo="babashka-dev-builds"
else
repo="babashka"
fi
download_url="https://github.com/babashka/$repo/releases/download/v$version/$filename"
# macOS only have shasum available by default
# Some Linux distros (RHEL-like) only have sha256sum available by default (others have both)
if has sha256sum; then
sha256sum_cmd="sha256sum"
elif has shasum; then
sha256sum_cmd="shasum -a 256"
else
>&2 echo "Either 'sha256sum' or 'shasum' needs to be on PATH for '--checksum' flag!"
>&2 echo "Exiting..."
exit 1
fi
# Running this part in a subshell so when it finishes we go back to the previous directory
mkdir -p "$download_dir" && (
cd "$download_dir"
echo -e "Downloading $download_url to $download_dir"
curl -o "$filename" -sL "$download_url"
fetch "$download_url" "$filename"
if [[ -n "$checksum" ]]; then
if ! echo "$checksum *$filename" | shasum -a 256 --check --status; then
if ! echo "$checksum *$filename" | $sha256sum_cmd --check --status; then
>&2 echo "Failed checksum on $filename"
>&2 echo "Got: $(shasum -a 256 "$filename" | cut -d' ' -f1)"
>&2 echo "Expected: $checksum"

Binary file not shown.

After

Width:  |  Height:  |  Size: 124 KiB

View file

@ -0,0 +1,25 @@
<?xml version="1.0" encoding="utf-8"?>
<svg width="882" height="648" viewBox="0 0 2944 2162" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M1742.91 1219.89C1857.93 1138.38 1933 1004.21 1933 852.5C1933 603.972 1761 280.5 1483 139C1207.5 288 1033 603.972 1033 852.5C1033 1004.21 1108.07 1138.38 1223.09 1219.89C1218.98 1220.44 1214.95 1221.14 1211 1222C1123.61 1241.07 1017 1385.05 1017 1385.05H1281C1327.97 1385.05 1372.63 1367.41 1407.96 1347.62C1425.12 1370.32 1452.34 1385 1483 1385C1513.66 1385 1540.89 1370.32 1558.04 1347.62C1593.37 1367.41 1638.03 1385.05 1685 1385.05H1949C1949 1385.05 1842.39 1241.07 1755 1222C1751.05 1221.14 1747.02 1220.44 1742.91 1219.89Z" style="fill-rule: evenodd; fill: rgb(0, 91, 187);"/>
<circle cx="1482.5" cy="878.5" r="311.5" style="fill: rgb(255, 213, 0);"/>
<path d="M1212 745.5C1396.5 758.5 1505.5 713.5 1581 602C1581 602 1435.5 553 1347 602C1258.8 650.834 1212 745.5 1212 745.5Z" fill="#B4B4B4"/>
<path d="M1728 718C1654 710 1588 686 1556.5 595.5C1556.5 595.5 1621.93 610.435 1688 670.614C1756.62 733.114 1728 718 1728 718Z" fill="#B4B4B4"/>
<circle cx="1482.5" cy="878.5" r="311.5" stroke="#0A0000" stroke-width="40"/>
<path d="M1544 745H1421L1451 775V865C1455.5 835.5 1511.5 834.5 1514.5 865L1522 775L1544 745Z" fill="black"/>
<path d="M1098.12 785C1098.12 762.909 1116.03 745 1138.12 745H1423.02C1447.2 745 1465.85 766.292 1462.67 790.264L1437.91 976.764C1435.27 996.646 1418.31 1011.5 1398.26 1011.5H1138.12C1116.03 1011.5 1098.12 993.591 1098.12 971.5V785Z" fill="black"/>
<path d="M1216.1 967.55V951.05H1210.55C1206.95 951.05 1204.55 948.5 1203.35 944.75L1180.55 876.05C1179.05 871.7 1177.25 868.55 1174.85 866.15C1170.35 861.5 1164.5 860 1157.9 860H1150.7V877.25H1155.5C1159.55 877.25 1162.7 878.75 1164.05 883.55L1167.2 894.65L1139 967.55H1159.55L1176.5 919.55L1185.5 948.5C1188.95 959.75 1194.8 967.55 1208 967.55H1216.1Z" fill="white"/>
<path d="M1248.8 951.05V967.55H1304.8V951.05H1248.8Z" fill="white"/>
<path d="M1503.01 790.267C1499.83 766.294 1518.48 745 1542.66 745H1827C1849.09 745 1867 762.909 1867 785V971.096C1867 993.187 1849.09 1011.1 1827 1011.1H1567.38C1547.33 1011.1 1530.37 996.244 1527.73 976.362L1503.01 790.267Z" fill="black"/>
<path d="M1649.3 968V951.5H1643.75C1640.15 951.5 1637.75 948.95 1636.55 945.2L1613.75 876.5C1612.25 872.15 1610.45 869 1608.05 866.6C1603.55 861.95 1597.7 860.45 1591.1 860.45H1583.9V877.7H1588.7C1592.75 877.7 1595.9 879.2 1597.25 884L1600.4 895.1L1572.2 968H1592.75L1609.7 920L1618.7 948.95C1622.15 960.2 1628 968 1641.2 968H1649.3Z" fill="white"/>
<path d="M1682 951.5V968H1738V951.5H1682Z" fill="white"/>
<path d="M 245.923 1712.64 C 254.47 1701.19 264.812 1692.21 276.949 1685.72 C 289.085 1679.05 301.991 1675.72 315.667 1675.72 C 349.684 1675.72 374.897 1688.37 391.308 1713.67 C 407.889 1738.79 416.18 1774.26 416.18 1820.08 C 416.18 1848.45 411.906 1873.67 403.359 1895.72 C 394.983 1917.6 382.59 1934.78 366.18 1947.26 C 349.94 1959.56 330.282 1965.72 307.205 1965.72 C 293.53 1965.72 280.795 1962.81 269 1957 C 257.376 1951.36 247.633 1943.15 239.769 1932.38 L 236.692 1957 L 164.897 1957 L 164.897 1576.49 L 245.923 1568.03 L 245.923 1712.64 Z M 285.923 1906.74 C 317.034 1906.74 332.59 1878.2 332.59 1821.1 C 332.59 1799.22 330.88 1782.04 327.462 1769.56 C 324.043 1756.91 319.171 1748.11 312.846 1743.15 C 306.692 1738.03 299.085 1735.46 290.026 1735.46 C 273.274 1735.46 258.573 1745.97 245.923 1767 L 245.923 1881.87 C 251.222 1890.25 257.034 1896.49 263.359 1900.59 C 269.855 1904.69 277.376 1906.74 285.923 1906.74 Z" style="fill: rgb(0, 91, 187);"/>
<path d="M 701.745 1878.54 C 701.745 1888.62 703.113 1896.06 705.848 1900.85 C 708.583 1905.46 713.198 1908.97 719.694 1911.36 L 703.027 1964.69 C 686.446 1963.15 672.686 1959.56 661.745 1953.92 C 650.976 1948.11 642.515 1939.74 636.361 1928.79 C 626.275 1940.93 613.198 1950.16 597.13 1956.49 C 581.233 1962.64 564.395 1965.72 546.617 1965.72 C 528.156 1965.72 511.916 1962.13 497.899 1954.95 C 484.053 1947.6 473.369 1937.51 465.848 1924.69 C 458.327 1911.7 454.566 1896.83 454.566 1880.08 C 454.566 1860.59 459.78 1843.92 470.207 1830.08 C 480.634 1816.23 495.763 1805.72 515.592 1798.54 C 535.421 1791.19 559.267 1787.51 587.13 1787.51 L 623.797 1787.51 L 623.797 1777.26 C 623.797 1749.39 605.848 1735.46 569.951 1735.46 C 560.891 1735.46 549.438 1736.74 535.592 1739.31 C 521.916 1741.87 508.498 1745.38 495.335 1749.82 L 476.617 1695.97 C 493.711 1689.48 511.745 1684.52 530.72 1681.1 C 549.694 1677.51 567.045 1675.72 582.771 1675.72 C 622.771 1675.72 652.6 1683.84 672.258 1700.08 C 691.916 1716.32 701.745 1740.25 701.745 1771.87 L 701.745 1878.54 Z M 574.566 1907.77 C 583.797 1907.77 593.113 1905.12 602.515 1899.82 C 611.916 1894.35 619.01 1887 623.797 1877.77 L 623.797 1833.67 L 603.797 1833.67 C 581.574 1833.67 565.079 1837.09 554.31 1843.92 C 543.54 1850.76 538.156 1860.93 538.156 1874.44 C 538.156 1885.03 541.318 1893.24 547.643 1899.05 C 554.139 1904.86 563.113 1907.77 574.566 1907.77 Z" style="fill: rgb(0, 91, 187);"/>
<path d="M984.204 1711.64C992.751 1700.19 1003.09 1691.21 1015.23 1684.72C1027.37 1678.05 1040.27 1674.72 1053.95 1674.72C1087.97 1674.72 1113.18 1687.37 1129.59 1712.67C1146.17 1737.79 1154.46 1773.26 1154.46 1819.08C1154.46 1847.45 1150.19 1872.67 1141.64 1894.72C1133.26 1916.6 1120.87 1933.78 1104.46 1946.26C1088.22 1958.56 1068.56 1964.72 1045.49 1964.72C1031.81 1964.72 1019.08 1961.81 1007.28 1956C995.657 1950.36 985.914 1942.15 978.05 1931.38L974.974 1956H903.179V1575.49L984.204 1567.03V1711.64ZM1024.2 1905.74C1055.32 1905.74 1070.87 1877.2 1070.87 1820.1C1070.87 1798.22 1069.16 1781.04 1065.74 1768.56C1062.32 1755.91 1057.45 1747.11 1051.13 1742.15C1044.97 1737.03 1037.37 1734.46 1028.31 1734.46C1011.55 1734.46 996.854 1744.97 984.204 1766V1880.87C989.503 1889.25 995.315 1895.49 1001.64 1899.59C1008.14 1903.69 1015.66 1905.74 1024.2 1905.74Z" style="fill: rgb(0, 91, 187);"/>
<path d="M1440.03 1877.54C1440.03 1887.62 1441.39 1895.06 1444.13 1899.85C1446.86 1904.46 1451.48 1907.97 1457.98 1910.36L1441.31 1963.69C1424.73 1962.15 1410.97 1958.56 1400.03 1952.92C1389.26 1947.11 1380.8 1938.74 1374.64 1927.79C1364.56 1939.93 1351.48 1949.16 1335.41 1955.49C1319.51 1961.64 1302.68 1964.72 1284.9 1964.72C1266.44 1964.72 1250.2 1961.13 1236.18 1953.95C1222.33 1946.6 1211.65 1936.51 1204.13 1923.69C1196.61 1910.7 1192.85 1895.83 1192.85 1879.08C1192.85 1859.59 1198.06 1842.92 1208.49 1829.08C1218.92 1815.23 1234.04 1804.72 1253.87 1797.54C1273.7 1790.19 1297.55 1786.51 1325.41 1786.51H1362.08V1776.26C1362.08 1748.39 1344.13 1734.46 1308.23 1734.46C1299.17 1734.46 1287.72 1735.74 1273.87 1738.31C1260.2 1740.87 1246.78 1744.38 1233.62 1748.82L1214.9 1694.97C1231.99 1688.48 1250.03 1683.52 1269 1680.1C1287.98 1676.51 1305.33 1674.72 1321.05 1674.72C1361.05 1674.72 1390.88 1682.84 1410.54 1699.08C1430.2 1715.32 1440.03 1739.25 1440.03 1770.87V1877.54ZM1312.85 1906.77C1322.08 1906.77 1331.39 1904.12 1340.8 1898.82C1350.2 1893.35 1357.29 1886 1362.08 1876.77V1832.67H1342.08C1319.86 1832.67 1303.36 1836.09 1292.59 1842.92C1281.82 1849.76 1276.44 1859.93 1276.44 1873.44C1276.44 1884.03 1279.6 1892.24 1285.92 1898.05C1292.42 1903.86 1301.39 1906.77 1312.85 1906.77Z" style="fill: rgb(0, 91, 187);"/>
<path d="M1627.64 1906.77C1641.49 1906.77 1652.43 1904.63 1660.46 1900.36C1668.67 1895.91 1672.77 1889.5 1672.77 1881.13C1672.77 1875.15 1671.15 1870.27 1667.9 1866.51C1664.65 1862.58 1658.58 1858.91 1649.7 1855.49C1640.81 1851.9 1626.96 1847.54 1608.16 1842.41C1580.81 1835.06 1559.87 1824.97 1545.34 1812.15C1530.98 1799.33 1523.8 1781.56 1523.8 1758.82C1523.8 1742.41 1528.33 1727.88 1537.39 1715.23C1546.62 1702.58 1560.12 1692.67 1577.9 1685.49C1595.68 1678.31 1617.05 1674.72 1642 1674.72C1685.25 1674.72 1722 1685.74 1752.26 1707.79L1719.95 1755.49C1708.16 1748.31 1695.76 1742.67 1682.77 1738.56C1669.95 1734.46 1657.13 1732.41 1644.31 1732.41C1631.15 1732.41 1621.32 1734.21 1614.82 1737.79C1608.5 1741.21 1605.34 1746.43 1605.34 1753.44C1605.34 1758.22 1606.96 1762.24 1610.21 1765.49C1613.63 1768.74 1619.7 1772.07 1628.41 1775.49C1637.3 1778.91 1651.06 1783.26 1669.7 1788.56C1689.35 1794.03 1705.34 1800.1 1717.64 1806.77C1729.95 1813.26 1739.52 1821.98 1746.36 1832.92C1753.37 1843.69 1756.87 1857.62 1756.87 1874.72C1756.87 1893.86 1751.06 1910.27 1739.44 1923.95C1727.99 1937.45 1712.52 1947.62 1693.03 1954.46C1673.54 1961.3 1651.92 1964.72 1628.16 1964.72C1602.69 1964.72 1579.78 1961.13 1559.44 1953.95C1539.1 1946.6 1521.58 1936.51 1506.87 1923.69L1547.64 1878.05C1558.93 1886.94 1571.32 1893.95 1584.82 1899.08C1598.33 1904.21 1612.6 1906.77 1627.64 1906.77Z" style="fill: rgb(0, 91, 187);"/>
<path d="M1907.06 1710.62C1929.79 1686.68 1956.46 1674.72 1987.06 1674.72C2011.16 1674.72 2029.62 1681.81 2042.44 1696C2055.43 1710.02 2061.93 1730.02 2061.93 1756V1956H1980.9V1778.56C1980.9 1767.45 1980.05 1758.74 1978.34 1752.41C1976.8 1746.09 1974.15 1741.56 1970.39 1738.82C1966.63 1735.91 1961.41 1734.46 1954.75 1734.46C1946.54 1734.46 1938.59 1737.28 1930.9 1742.92C1923.21 1748.56 1915.26 1756.77 1907.06 1767.54V1956H1826.03V1575.49L1907.06 1567.54V1710.62Z" style="fill: rgb(0, 91, 187);"/>
<path d="M2337.72 1956H2256.69V1575.49L2337.72 1567.03V1956ZM2425.67 1804.21L2522.59 1956H2430.28L2340.8 1806.77L2430.28 1683.69H2515.16L2425.67 1804.21Z" style="fill: rgb(0, 91, 187);"/>
<path d="M2793.54 1877.54C2793.54 1887.62 2794.91 1895.06 2797.64 1899.85C2800.38 1904.46 2805 1907.97 2811.49 1910.36L2794.82 1963.69C2778.24 1962.15 2764.48 1958.56 2753.54 1952.92C2742.77 1947.11 2734.31 1938.74 2728.16 1927.79C2718.07 1939.93 2705 1949.16 2688.93 1955.49C2673.03 1961.64 2656.19 1964.72 2638.41 1964.72C2619.95 1964.72 2603.71 1961.13 2589.7 1953.95C2575.85 1946.6 2565.17 1936.51 2557.64 1923.69C2550.12 1910.7 2546.36 1895.83 2546.36 1879.08C2546.36 1859.59 2551.58 1842.92 2562 1829.08C2572.43 1815.23 2587.56 1804.72 2607.39 1797.54C2627.22 1790.19 2651.06 1786.51 2678.93 1786.51H2715.59V1776.26C2715.59 1748.39 2697.64 1734.46 2661.75 1734.46C2652.69 1734.46 2641.23 1735.74 2627.39 1738.31C2613.71 1740.87 2600.29 1744.38 2587.13 1748.82L2568.41 1694.97C2585.51 1688.48 2603.54 1683.52 2622.52 1680.1C2641.49 1676.51 2658.84 1674.72 2674.57 1674.72C2714.57 1674.72 2744.4 1682.84 2764.06 1699.08C2783.71 1715.32 2793.54 1739.25 2793.54 1770.87V1877.54ZM2666.36 1906.77C2675.59 1906.77 2684.91 1904.12 2694.31 1898.82C2703.71 1893.35 2710.81 1886 2715.59 1876.77V1832.67H2695.59C2673.37 1832.67 2656.88 1836.09 2646.11 1842.92C2635.34 1849.76 2629.95 1859.93 2629.95 1873.44C2629.95 1884.03 2633.11 1892.24 2639.44 1898.05C2645.94 1903.86 2654.91 1906.77 2666.36 1906.77Z" style="fill: rgb(0, 91, 187);"/>
<path d="M862 1819C862 1848.27 838.271 1872 809 1872C779.729 1872 756 1848.27 756 1819C756 1789.73 779.729 1766 809 1766C838.271 1766 862 1789.73 862 1819Z" style="fill: rgb(255, 213, 0);"/>
<path d="M2215.5 1819C2215.5 1848.27 2191.77 1872 2162.5 1872C2133.23 1872 2109.5 1848.27 2109.5 1819C2109.5 1789.73 2133.23 1766 2162.5 1766C2191.77 1766 2215.5 1789.73 2215.5 1819Z" style="fill: rgb(255, 213, 0);"/>
</svg>

After

Width:  |  Height:  |  Size: 11 KiB

BIN
logo/babashka_red.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 141 KiB

31
logo/babashka_red.svg Normal file
View file

@ -0,0 +1,31 @@
<?xml version="1.0" encoding="utf-8"?>
<svg width="882" height="648" viewBox="0 0 2944 2162" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M1742.91 1219.89C1857.93 1138.38 1933 1004.21 1933 852.5C1933 603.972 1761 280.5 1483 139C1207.5 288 1033 603.972 1033 852.5C1033 1004.21 1108.07 1138.38 1223.09 1219.89C1218.98 1220.44 1214.95 1221.14 1211 1222C1123.61 1241.07 1017 1385.05 1017 1385.05H1281C1327.97 1385.05 1372.63 1367.41 1407.96 1347.62C1425.12 1370.32 1452.34 1385 1483 1385C1513.66 1385 1540.89 1370.32 1558.04 1347.62C1593.37 1367.41 1638.03 1385.05 1685 1385.05H1949C1949 1385.05 1842.39 1241.07 1755 1222C1751.05 1221.14 1747.02 1220.44 1742.91 1219.89Z" fill="url(#paint0_linear)"/>
<circle cx="1482.5" cy="878.5" r="311.5" fill="white"/>
<path d="M1212 745.5C1396.5 758.5 1505.5 713.5 1581 602C1581 602 1435.5 553 1347 602C1258.8 650.834 1212 745.5 1212 745.5Z" fill="#B4B4B4"/>
<path d="M1728 718C1654 710 1588 686 1556.5 595.5C1556.5 595.5 1621.93 610.435 1688 670.614C1756.62 733.114 1728 718 1728 718Z" fill="#B4B4B4"/>
<circle cx="1482.5" cy="878.5" r="311.5" stroke="#0A0000" stroke-width="40"/>
<path d="M1544 745H1421L1451 775V865C1455.5 835.5 1511.5 834.5 1514.5 865L1522 775L1544 745Z" fill="black"/>
<path d="M1098.12 785C1098.12 762.909 1116.03 745 1138.12 745H1423.02C1447.2 745 1465.85 766.292 1462.67 790.264L1437.91 976.764C1435.27 996.646 1418.31 1011.5 1398.26 1011.5H1138.12C1116.03 1011.5 1098.12 993.591 1098.12 971.5V785Z" fill="black"/>
<path d="M1216.1 967.55V951.05H1210.55C1206.95 951.05 1204.55 948.5 1203.35 944.75L1180.55 876.05C1179.05 871.7 1177.25 868.55 1174.85 866.15C1170.35 861.5 1164.5 860 1157.9 860H1150.7V877.25H1155.5C1159.55 877.25 1162.7 878.75 1164.05 883.55L1167.2 894.65L1139 967.55H1159.55L1176.5 919.55L1185.5 948.5C1188.95 959.75 1194.8 967.55 1208 967.55H1216.1Z" fill="white"/>
<path d="M1248.8 951.05V967.55H1304.8V951.05H1248.8Z" fill="white"/>
<path d="M1503.01 790.267C1499.83 766.294 1518.48 745 1542.66 745H1827C1849.09 745 1867 762.909 1867 785V971.096C1867 993.187 1849.09 1011.1 1827 1011.1H1567.38C1547.33 1011.1 1530.37 996.244 1527.73 976.362L1503.01 790.267Z" fill="black"/>
<path d="M1649.3 968V951.5H1643.75C1640.15 951.5 1637.75 948.95 1636.55 945.2L1613.75 876.5C1612.25 872.15 1610.45 869 1608.05 866.6C1603.55 861.95 1597.7 860.45 1591.1 860.45H1583.9V877.7H1588.7C1592.75 877.7 1595.9 879.2 1597.25 884L1600.4 895.1L1572.2 968H1592.75L1609.7 920L1618.7 948.95C1622.15 960.2 1628 968 1641.2 968H1649.3Z" fill="white"/>
<path d="M1682 951.5V968H1738V951.5H1682Z" fill="white"/>
<path d="M245.923 1711.64C254.47 1700.19 264.812 1691.21 276.949 1684.72C289.085 1678.05 301.991 1674.72 315.667 1674.72C349.684 1674.72 374.897 1687.37 391.308 1712.67C407.889 1737.79 416.18 1773.26 416.18 1819.08C416.18 1847.45 411.906 1872.67 403.359 1894.72C394.983 1916.6 382.59 1933.78 366.18 1946.26C349.94 1958.56 330.282 1964.72 307.205 1964.72C293.53 1964.72 280.795 1961.81 269 1956C257.376 1950.36 247.633 1942.15 239.769 1931.38L236.692 1956H164.897V1575.49L245.923 1567.03V1711.64ZM285.923 1905.74C317.034 1905.74 332.59 1877.2 332.59 1820.1C332.59 1798.22 330.88 1781.04 327.462 1768.56C324.043 1755.91 319.171 1747.11 312.846 1742.15C306.692 1737.03 299.085 1734.46 290.026 1734.46C273.274 1734.46 258.573 1744.97 245.923 1766V1880.87C251.222 1889.25 257.034 1895.49 263.359 1899.59C269.855 1903.69 277.376 1905.74 285.923 1905.74Z" style="fill: rgb(220, 27, 32);"/>
<path d="M701.745 1877.54C701.745 1887.62 703.113 1895.06 705.848 1899.85C708.583 1904.46 713.198 1907.97 719.694 1910.36L703.027 1963.69C686.446 1962.15 672.686 1958.56 661.745 1952.92C650.976 1947.11 642.515 1938.74 636.361 1927.79C626.275 1939.93 613.198 1949.16 597.13 1955.49C581.233 1961.64 564.395 1964.72 546.617 1964.72C528.156 1964.72 511.916 1961.13 497.899 1953.95C484.053 1946.6 473.369 1936.51 465.848 1923.69C458.327 1910.7 454.566 1895.83 454.566 1879.08C454.566 1859.59 459.78 1842.92 470.207 1829.08C480.634 1815.23 495.763 1804.72 515.592 1797.54C535.421 1790.19 559.267 1786.51 587.13 1786.51H623.797V1776.26C623.797 1748.39 605.848 1734.46 569.951 1734.46C560.891 1734.46 549.438 1735.74 535.592 1738.31C521.916 1740.87 508.498 1744.38 495.335 1748.82L476.617 1694.97C493.711 1688.48 511.745 1683.52 530.72 1680.1C549.694 1676.51 567.045 1674.72 582.771 1674.72C622.771 1674.72 652.6 1682.84 672.258 1699.08C691.916 1715.32 701.745 1739.25 701.745 1770.87V1877.54ZM574.566 1906.77C583.797 1906.77 593.113 1904.12 602.515 1898.82C611.916 1893.35 619.01 1886 623.797 1876.77V1832.67H603.797C581.574 1832.67 565.079 1836.09 554.31 1842.92C543.54 1849.76 538.156 1859.93 538.156 1873.44C538.156 1884.03 541.318 1892.24 547.643 1898.05C554.139 1903.86 563.113 1906.77 574.566 1906.77Z" style="fill: rgb(219, 25, 31);"/>
<path d="M984.204 1711.64C992.751 1700.19 1003.09 1691.21 1015.23 1684.72C1027.37 1678.05 1040.27 1674.72 1053.95 1674.72C1087.97 1674.72 1113.18 1687.37 1129.59 1712.67C1146.17 1737.79 1154.46 1773.26 1154.46 1819.08C1154.46 1847.45 1150.19 1872.67 1141.64 1894.72C1133.26 1916.6 1120.87 1933.78 1104.46 1946.26C1088.22 1958.56 1068.56 1964.72 1045.49 1964.72C1031.81 1964.72 1019.08 1961.81 1007.28 1956C995.657 1950.36 985.914 1942.15 978.05 1931.38L974.974 1956H903.179V1575.49L984.204 1567.03V1711.64ZM1024.2 1905.74C1055.32 1905.74 1070.87 1877.2 1070.87 1820.1C1070.87 1798.22 1069.16 1781.04 1065.74 1768.56C1062.32 1755.91 1057.45 1747.11 1051.13 1742.15C1044.97 1737.03 1037.37 1734.46 1028.31 1734.46C1011.55 1734.46 996.854 1744.97 984.204 1766V1880.87C989.503 1889.25 995.315 1895.49 1001.64 1899.59C1008.14 1903.69 1015.66 1905.74 1024.2 1905.74Z" style="fill: rgb(219, 25, 31);"/>
<path d="M1440.03 1877.54C1440.03 1887.62 1441.39 1895.06 1444.13 1899.85C1446.86 1904.46 1451.48 1907.97 1457.98 1910.36L1441.31 1963.69C1424.73 1962.15 1410.97 1958.56 1400.03 1952.92C1389.26 1947.11 1380.8 1938.74 1374.64 1927.79C1364.56 1939.93 1351.48 1949.16 1335.41 1955.49C1319.51 1961.64 1302.68 1964.72 1284.9 1964.72C1266.44 1964.72 1250.2 1961.13 1236.18 1953.95C1222.33 1946.6 1211.65 1936.51 1204.13 1923.69C1196.61 1910.7 1192.85 1895.83 1192.85 1879.08C1192.85 1859.59 1198.06 1842.92 1208.49 1829.08C1218.92 1815.23 1234.04 1804.72 1253.87 1797.54C1273.7 1790.19 1297.55 1786.51 1325.41 1786.51H1362.08V1776.26C1362.08 1748.39 1344.13 1734.46 1308.23 1734.46C1299.17 1734.46 1287.72 1735.74 1273.87 1738.31C1260.2 1740.87 1246.78 1744.38 1233.62 1748.82L1214.9 1694.97C1231.99 1688.48 1250.03 1683.52 1269 1680.1C1287.98 1676.51 1305.33 1674.72 1321.05 1674.72C1361.05 1674.72 1390.88 1682.84 1410.54 1699.08C1430.2 1715.32 1440.03 1739.25 1440.03 1770.87V1877.54ZM1312.85 1906.77C1322.08 1906.77 1331.39 1904.12 1340.8 1898.82C1350.2 1893.35 1357.29 1886 1362.08 1876.77V1832.67H1342.08C1319.86 1832.67 1303.36 1836.09 1292.59 1842.92C1281.82 1849.76 1276.44 1859.93 1276.44 1873.44C1276.44 1884.03 1279.6 1892.24 1285.92 1898.05C1292.42 1903.86 1301.39 1906.77 1312.85 1906.77Z" style="fill: rgb(219, 25, 31);"/>
<path d="M1627.64 1906.77C1641.49 1906.77 1652.43 1904.63 1660.46 1900.36C1668.67 1895.91 1672.77 1889.5 1672.77 1881.13C1672.77 1875.15 1671.15 1870.27 1667.9 1866.51C1664.65 1862.58 1658.58 1858.91 1649.7 1855.49C1640.81 1851.9 1626.96 1847.54 1608.16 1842.41C1580.81 1835.06 1559.87 1824.97 1545.34 1812.15C1530.98 1799.33 1523.8 1781.56 1523.8 1758.82C1523.8 1742.41 1528.33 1727.88 1537.39 1715.23C1546.62 1702.58 1560.12 1692.67 1577.9 1685.49C1595.68 1678.31 1617.05 1674.72 1642 1674.72C1685.25 1674.72 1722 1685.74 1752.26 1707.79L1719.95 1755.49C1708.16 1748.31 1695.76 1742.67 1682.77 1738.56C1669.95 1734.46 1657.13 1732.41 1644.31 1732.41C1631.15 1732.41 1621.32 1734.21 1614.82 1737.79C1608.5 1741.21 1605.34 1746.43 1605.34 1753.44C1605.34 1758.22 1606.96 1762.24 1610.21 1765.49C1613.63 1768.74 1619.7 1772.07 1628.41 1775.49C1637.3 1778.91 1651.06 1783.26 1669.7 1788.56C1689.35 1794.03 1705.34 1800.1 1717.64 1806.77C1729.95 1813.26 1739.52 1821.98 1746.36 1832.92C1753.37 1843.69 1756.87 1857.62 1756.87 1874.72C1756.87 1893.86 1751.06 1910.27 1739.44 1923.95C1727.99 1937.45 1712.52 1947.62 1693.03 1954.46C1673.54 1961.3 1651.92 1964.72 1628.16 1964.72C1602.69 1964.72 1579.78 1961.13 1559.44 1953.95C1539.1 1946.6 1521.58 1936.51 1506.87 1923.69L1547.64 1878.05C1558.93 1886.94 1571.32 1893.95 1584.82 1899.08C1598.33 1904.21 1612.6 1906.77 1627.64 1906.77Z" style="fill: rgb(219, 25, 31);"/>
<path d="M1907.06 1710.62C1929.79 1686.68 1956.46 1674.72 1987.06 1674.72C2011.16 1674.72 2029.62 1681.81 2042.44 1696C2055.43 1710.02 2061.93 1730.02 2061.93 1756V1956H1980.9V1778.56C1980.9 1767.45 1980.05 1758.74 1978.34 1752.41C1976.8 1746.09 1974.15 1741.56 1970.39 1738.82C1966.63 1735.91 1961.41 1734.46 1954.75 1734.46C1946.54 1734.46 1938.59 1737.28 1930.9 1742.92C1923.21 1748.56 1915.26 1756.77 1907.06 1767.54V1956H1826.03V1575.49L1907.06 1567.54V1710.62Z" style="fill: rgb(219, 25, 31);"/>
<path d="M2337.72 1956H2256.69V1575.49L2337.72 1567.03V1956ZM2425.67 1804.21L2522.59 1956H2430.28L2340.8 1806.77L2430.28 1683.69H2515.16L2425.67 1804.21Z" style="fill: rgb(219, 25, 31);"/>
<path d="M2793.54 1877.54C2793.54 1887.62 2794.91 1895.06 2797.64 1899.85C2800.38 1904.46 2805 1907.97 2811.49 1910.36L2794.82 1963.69C2778.24 1962.15 2764.48 1958.56 2753.54 1952.92C2742.77 1947.11 2734.31 1938.74 2728.16 1927.79C2718.07 1939.93 2705 1949.16 2688.93 1955.49C2673.03 1961.64 2656.19 1964.72 2638.41 1964.72C2619.95 1964.72 2603.71 1961.13 2589.7 1953.95C2575.85 1946.6 2565.17 1936.51 2557.64 1923.69C2550.12 1910.7 2546.36 1895.83 2546.36 1879.08C2546.36 1859.59 2551.58 1842.92 2562 1829.08C2572.43 1815.23 2587.56 1804.72 2607.39 1797.54C2627.22 1790.19 2651.06 1786.51 2678.93 1786.51H2715.59V1776.26C2715.59 1748.39 2697.64 1734.46 2661.75 1734.46C2652.69 1734.46 2641.23 1735.74 2627.39 1738.31C2613.71 1740.87 2600.29 1744.38 2587.13 1748.82L2568.41 1694.97C2585.51 1688.48 2603.54 1683.52 2622.52 1680.1C2641.49 1676.51 2658.84 1674.72 2674.57 1674.72C2714.57 1674.72 2744.4 1682.84 2764.06 1699.08C2783.71 1715.32 2793.54 1739.25 2793.54 1770.87V1877.54ZM2666.36 1906.77C2675.59 1906.77 2684.91 1904.12 2694.31 1898.82C2703.71 1893.35 2710.81 1886 2715.59 1876.77V1832.67H2695.59C2673.37 1832.67 2656.88 1836.09 2646.11 1842.92C2635.34 1849.76 2629.95 1859.93 2629.95 1873.44C2629.95 1884.03 2633.11 1892.24 2639.44 1898.05C2645.94 1903.86 2654.91 1906.77 2666.36 1906.77Z" style="fill: rgb(220, 27, 32);"/>
<path d="M862 1819C862 1848.27 838.271 1872 809 1872C779.729 1872 756 1848.27 756 1819C756 1789.73 779.729 1766 809 1766C838.271 1766 862 1789.73 862 1819Z" style="fill: rgb(219, 25, 31);"/>
<path d="M2215.5 1819C2215.5 1848.27 2191.77 1872 2162.5 1872C2133.23 1872 2109.5 1848.27 2109.5 1819C2109.5 1789.73 2133.23 1766 2162.5 1766C2191.77 1766 2215.5 1789.73 2215.5 1819Z" style="fill: rgb(219, 25, 31);"/>
<defs>
<linearGradient id="paint0_linear" x1="1499" y1="139" x2="1499" y2="1385.52" gradientUnits="userSpaceOnUse">
<stop stop-color="#E41F26"/>
<stop offset="1" stop-color="#B70000"/>
</linearGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 11 KiB

1
logo/badge.svg Normal file
View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="151" height="20" role="img" aria-label="babashka: compatible"><title>babashka: compatible</title><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="r"><rect width="151" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#r)"><rect width="80" height="20" fill="#555"/><rect x="80" width="71" height="20" fill="#97ca00"/><rect width="151" height="20" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><image x="5" y="3" width="14" height="14" xlink:href="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAxNDcyIDE0NzIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNOTk1LjkxMSAxMTkzLjg5QzExMTAuOTMgMTExMi4zOCAxMTg2IDk3OC4yMDYgMTE4NiA4MjYuNUMxMTg2IDU3Ny45NzIgMTAxNCAyNTQuNSA3MzYgMTEzQzQ2MC41IDI2MiAyODYgNTc3Ljk3MiAyODYgODI2LjVDMjg2IDk3OC4yMDYgMzYxLjA3IDExMTIuMzggNDc2LjA4OSAxMTkzLjg5QzQ3MS45ODMgMTE5NC40NCA0NjcuOTQ5IDExOTUuMTQgNDY0IDExOTZDMzc2LjYxMSAxMjE1LjA3IDI3MCAxMzU5LjA1IDI3MCAxMzU5LjA1SDUzNEM1ODAuOTcyIDEzNTkuMDUgNjI1LjYzMSAxMzQxLjQxIDY2MC45NTYgMTMyMS42MkM2NzguMTE1IDEzNDQuMzIgNzA1LjM0NCAxMzU5IDczNiAxMzU5Qzc2Ni42NTYgMTM1OSA3OTMuODg1IDEzNDQuMzIgODExLjA0NCAxMzIxLjYyQzg0Ni4zNjkgMTM0MS40MSA4OTEuMDI4IDEzNTkuMDUgOTM4IDEzNTkuMDVIMTIwMkMxMjAyIDEzNTkuMDUgMTA5NS4zOSAxMjE1LjA3IDEwMDggMTE5NkMxMDA0LjA1IDExOTUuMTQgMTAwMC4wMiAxMTk0LjQ0IDk5NS45MTEgMTE5My44OVoiIGZpbGw9InVybCgjcGFpbnQwX2xpbmVhcikiLz4KPGNpcmNsZSBjeD0iNzM1LjUiIGN5PSI4NTIuNSIgcj0iMzExLjUiIGZpbGw9IndoaXRlIi8+CjxwYXRoIGQ9Ik00NDMgNzUwLjQxN0M2NjIgNzY1Ljg2NiA3OTEuMzgyIDcxMi4zODggODgxIDU3OS44ODFDODgxIDU3OS44ODEgNzA4LjI5MyA1MjEuNjQ5IDYwMy4yNDQgNTc5Ljg4MUM0OTguNTUgNjM3LjkxNiA0NDMgNzUwLjQxNyA0NDMgNzUwLjQxN1oiIGZpbGw9IiNCNEI0QjQiLz4KPHBhdGggZD0iTTEwMzkuOTkgNzQ4LjI4MkM5MTQuODYyIDczNC43NDUgODAzLjI2NCA2OTQuMTM1IDc1MCA1NDFDNzUwIDU0MSA4NjAuNjMzIDU2Ni4yNzIgOTcyLjM1NSA2NjguMTAxQzEwODguMzkgNzczLjg1NyAxMDM5Ljk5IDc0OC4yODIgMTAzOS45OSA3NDguMjgyWiIgZmlsbD0iI0I0QjRCNCIvPgo8Y2lyY2xlIGN4PSI3MzUuNSIgY3k9Ijg1Mi41IiByPSIzMTEuNSIgc3Ryb2tlPSIjMEEwMDAwIiBzdHJva2Utd2lkdGg9IjQwIi8+CjxwYXRoIGQ9Ik03OTcgNzE5SDY3NEw3MDQgNzQ5VjgzOUM3MDguNSA4MDkuNSA3NjQuNSA4MDguNSA3NjcuNSA4MzlMNzc1IDc0OUw3OTcgNzE5WiIgZmlsbD0iYmxhY2siLz4KPHBhdGggZD0iTTM1MS4xMTcgNzU5QzM1MS4xMTcgNzM2LjkwOSAzNjkuMDI2IDcxOSAzOTEuMTE3IDcxOUg2NzYuMDE4QzcwMC4yIDcxOSA3MTguODUyIDc0MC4yOTIgNzE1LjY3IDc2NC4yNjRMNjkwLjkxIDk1MC43NjRDNjg4LjI3IDk3MC42NDYgNjcxLjMxNCA5ODUuNSA2NTEuMjU4IDk4NS41SDM5MS4xMTdDMzY5LjAyNiA5ODUuNSAzNTEuMTE3IDk2Ny41OTEgMzUxLjExNyA5NDUuNVY3NTlaIiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNNzU2LjAxMiA3NjQuMjY3Qzc1Mi44MjggNzQwLjI5NCA3NzEuNDgxIDcxOSA3OTUuNjY0IDcxOUgxMDgwQzExMDIuMDkgNzE5IDExMjAgNzM2LjkwOSAxMTIwIDc1OVY5NDUuMDk2QzExMjAgOTY3LjE4NyAxMTAyLjA5IDk4NS4wOTYgMTA4MCA5ODUuMDk2SDgyMC4zODFDODAwLjMyNSA5ODUuMDk2IDc4My4zNyA5NzAuMjQ0IDc4MC43MjkgOTUwLjM2Mkw3NTYuMDEyIDc2NC4yNjdaIiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNMTAyNCA5NTJWOTIxLjQ3SDEwMTMuNzFDMTAwNy4wMyA5MjEuNDcgMTAwMi41OCA5MTYuNzUyIDEwMDAuMzUgOTA5LjgxM0w5NTguMDY0IDc4Mi42OTdDOTU1LjI4MiA3NzQuNjQ5IDk1MS45NDQgNzY4LjgyIDk0Ny40OTIgNzY0LjM3OUM5MzkuMTQ2IDc1NS43NzUgOTI4LjI5NiA3NTMgOTE2LjA1NCA3NTNIOTAyLjdWNzg0LjkxOEg5MTEuNjAzQzkxOS4xMTUgNzg0LjkxOCA5MjQuOTU3IDc4Ny42OTMgOTI3LjQ2MSA3OTYuNTc1TDkzMy4zMDMgODE3LjExM0w4ODEgOTUySDkxOS4xMTVMOTUwLjU1MyA4NjMuMTg1TDk2Ny4yNDUgOTE2Ljc1MkM5NzMuNjQ0IDkzNy41NjggOTg0LjQ5NCA5NTIgMTAwOC45OCA5NTJIMTAyNFoiIGZpbGw9IndoaXRlIi8+CjxwYXRoIGQ9Ik01OTAgOTUyVjkyMS40N0g1NzkuNzA2QzU3My4wMjkgOTIxLjQ3IDU2OC41NzggOTE2Ljc1MiA1NjYuMzUyIDkwOS44MTNMNTI0LjA2NCA3ODIuNjk3QzUyMS4yODIgNzc0LjY0OSA1MTcuOTQ0IDc2OC44MiA1MTMuNDkyIDc2NC4zNzlDNTA1LjE0NiA3NTUuNzc1IDQ5NC4yOTYgNzUzIDQ4Mi4wNTQgNzUzSDQ2OC43Vjc4NC45MThINDc3LjYwM0M0ODUuMTE1IDc4NC45MTggNDkwLjk1NyA3ODcuNjkzIDQ5My40NjEgNzk2LjU3NUw0OTkuMzAzIDgxNy4xMTNMNDQ3IDk1Mkg0ODUuMTE1TDUxNi41NTMgODYzLjE4NUw1MzMuMjQ1IDkxNi43NTJDNTM5LjY0NCA5MzcuNTY4IDU1MC40OTQgOTUyIDU3NC45NzcgOTUySDU5MFoiIGZpbGw9IndoaXRlIi8+CjxkZWZzPgo8bGluZWFyR3JhZGllbnQgaWQ9InBhaW50MF9saW5lYXIiIHgxPSI3NTIiIHkxPSIxMTMiIHgyPSI3NTIiIHkyPSIxMzU5LjUyIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CjxzdG9wIHN0b3AtY29sb3I9IiNFNDFGMjYiLz4KPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjQjcwMDAwIi8+CjwvbGluZWFyR3JhZGllbnQ+CjwvZGVmcz4KPC9zdmc+Cg=="/><text aria-hidden="true" x="495" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="530">babashka</text><text x="495" y="140" transform="scale(.1)" fill="#fff" textLength="530">babashka</text><text aria-hidden="true" x="1145" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="610">compatible</text><text x="1145" y="140" transform="scale(.1)" fill="#fff" textLength="610">compatible</text></g></svg>

After

Width:  |  Height:  |  Size: 4.8 KiB

1
logo/built-in-badge.svg Normal file
View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="129" height="20" role="img" aria-label="babashka: built-in"><title>babashka: built-in</title><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="r"><rect width="129" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#r)"><rect width="80" height="20" fill="#555"/><rect x="80" width="49" height="20" fill="#97ca00"/><rect width="129" height="20" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><image x="5" y="3" width="14" height="14" xlink:href="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTI4IiBoZWlnaHQ9IjEyOCIgdmlld0JveD0iMCAwIDE0NzIgMTQ3MiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik05OTUuOTExIDExOTMuODlDMTExMC45MyAxMTEyLjM4IDExODYgOTc4LjIwNiAxMTg2IDgyNi41QzExODYgNTc3Ljk3MiAxMDE0IDI1NC41IDczNiAxMTNDNDYwLjUgMjYyIDI4NiA1NzcuOTcyIDI4NiA4MjYuNUMyODYgOTc4LjIwNiAzNjEuMDcgMTExMi4zOCA0NzYuMDg5IDExOTMuODlDNDcxLjk4MyAxMTk0LjQ0IDQ2Ny45NDkgMTE5NS4xNCA0NjQgMTE5NkMzNzYuNjExIDEyMTUuMDcgMjcwIDEzNTkuMDUgMjcwIDEzNTkuMDVINTM0QzU4MC45NzIgMTM1OS4wNSA2MjUuNjMxIDEzNDEuNDEgNjYwLjk1NiAxMzIxLjYyQzY3OC4xMTUgMTM0NC4zMiA3MDUuMzQ0IDEzNTkgNzM2IDEzNTlDNzY2LjY1NiAxMzU5IDc5My44ODUgMTM0NC4zMiA4MTEuMDQ0IDEzMjEuNjJDODQ2LjM2OSAxMzQxLjQxIDg5MS4wMjggMTM1OS4wNSA5MzggMTM1OS4wNUgxMjAyQzEyMDIgMTM1OS4wNSAxMDk1LjM5IDEyMTUuMDcgMTAwOCAxMTk2QzEwMDQuMDUgMTE5NS4xNCAxMDAwLjAyIDExOTQuNDQgOTk1LjkxMSAxMTkzLjg5WiIgZmlsbD0idXJsKCNwYWludDBfbGluZWFyKSIvPgo8Y2lyY2xlIGN4PSI3MzUuNSIgY3k9Ijg1Mi41IiByPSIzMTEuNSIgZmlsbD0id2hpdGUiLz4KPHBhdGggZD0iTTQ0MyA3NTAuNDE3QzY2MiA3NjUuODY2IDc5MS4zODIgNzEyLjM4OCA4ODEgNTc5Ljg4MUM4ODEgNTc5Ljg4MSA3MDguMjkzIDUyMS42NDkgNjAzLjI0NCA1NzkuODgxQzQ5OC41NSA2MzcuOTE2IDQ0MyA3NTAuNDE3IDQ0MyA3NTAuNDE3WiIgZmlsbD0iI0I0QjRCNCIvPgo8cGF0aCBkPSJNMTAzOS45OSA3NDguMjgyQzkxNC44NjIgNzM0Ljc0NSA4MDMuMjY0IDY5NC4xMzUgNzUwIDU0MUM3NTAgNTQxIDg2MC42MzMgNTY2LjI3MiA5NzIuMzU1IDY2OC4xMDFDMTA4OC4zOSA3NzMuODU3IDEwMzkuOTkgNzQ4LjI4MiAxMDM5Ljk5IDc0OC4yODJaIiBmaWxsPSIjQjRCNEI0Ii8+CjxjaXJjbGUgY3g9IjczNS41IiBjeT0iODUyLjUiIHI9IjMxMS41IiBzdHJva2U9IiMwQTAwMDAiIHN0cm9rZS13aWR0aD0iNDAiLz4KPHBhdGggZD0iTTc5NyA3MTlINjc0TDcwNCA3NDlWODM5QzcwOC41IDgwOS41IDc2NC41IDgwOC41IDc2Ny41IDgzOUw3NzUgNzQ5TDc5NyA3MTlaIiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNMzUxLjExNyA3NTlDMzUxLjExNyA3MzYuOTA5IDM2OS4wMjYgNzE5IDM5MS4xMTcgNzE5SDY3Ni4wMThDNzAwLjIgNzE5IDcxOC44NTIgNzQwLjI5MiA3MTUuNjcgNzY0LjI2NEw2OTAuOTEgOTUwLjc2NEM2ODguMjcgOTcwLjY0NiA2NzEuMzE0IDk4NS41IDY1MS4yNTggOTg1LjVIMzkxLjExN0MzNjkuMDI2IDk4NS41IDM1MS4xMTcgOTY3LjU5MSAzNTEuMTE3IDk0NS41Vjc1OVoiIGZpbGw9ImJsYWNrIi8+CjxwYXRoIGQ9Ik03NTYuMDEyIDc2NC4yNjdDNzUyLjgyOCA3NDAuMjk0IDc3MS40ODEgNzE5IDc5NS42NjQgNzE5SDEwODBDMTEwMi4wOSA3MTkgMTEyMCA3MzYuOTA5IDExMjAgNzU5Vjk0NS4wOTZDMTEyMCA5NjcuMTg3IDExMDIuMDkgOTg1LjA5NiAxMDgwIDk4NS4wOTZIODIwLjM4MUM4MDAuMzI1IDk4NS4wOTYgNzgzLjM3IDk3MC4yNDQgNzgwLjcyOSA5NTAuMzYyTDc1Ni4wMTIgNzY0LjI2N1oiIGZpbGw9ImJsYWNrIi8+CjxwYXRoIGQ9Ik0xMDI0IDk1MlY5MjEuNDdIMTAxMy43MUMxMDA3LjAzIDkyMS40NyAxMDAyLjU4IDkxNi43NTIgMTAwMC4zNSA5MDkuODEzTDk1OC4wNjQgNzgyLjY5N0M5NTUuMjgyIDc3NC42NDkgOTUxLjk0NCA3NjguODIgOTQ3LjQ5MiA3NjQuMzc5QzkzOS4xNDYgNzU1Ljc3NSA5MjguMjk2IDc1MyA5MTYuMDU0IDc1M0g5MDIuN1Y3ODQuOTE4SDkxMS42MDNDOTE5LjExNSA3ODQuOTE4IDkyNC45NTcgNzg3LjY5MyA5MjcuNDYxIDc5Ni41NzVMOTMzLjMwMyA4MTcuMTEzTDg4MSA5NTJIOTE5LjExNUw5NTAuNTUzIDg2My4xODVMOTY3LjI0NSA5MTYuNzUyQzk3My42NDQgOTM3LjU2OCA5ODQuNDk0IDk1MiAxMDA4Ljk4IDk1MkgxMDI0WiIgZmlsbD0id2hpdGUiLz4KPHBhdGggZD0iTTU5MCA5NTJWOTIxLjQ3SDU3OS43MDZDNTczLjAyOSA5MjEuNDcgNTY4LjU3OCA5MTYuNzUyIDU2Ni4zNTIgOTA5LjgxM0w1MjQuMDY0IDc4Mi42OTdDNTIxLjI4MiA3NzQuNjQ5IDUxNy45NDQgNzY4LjgyIDUxMy40OTIgNzY0LjM3OUM1MDUuMTQ2IDc1NS43NzUgNDk0LjI5NiA3NTMgNDgyLjA1NCA3NTNINDY4LjdWNzg0LjkxOEg0NzcuNjAzQzQ4NS4xMTUgNzg0LjkxOCA0OTAuOTU3IDc4Ny42OTMgNDkzLjQ2MSA3OTYuNTc1TDQ5OS4zMDMgODE3LjExM0w0NDcgOTUySDQ4NS4xMTVMNTE2LjU1MyA4NjMuMTg1TDUzMy4yNDUgOTE2Ljc1MkM1MzkuNjQ0IDkzNy41NjggNTUwLjQ5NCA5NTIgNTc0Ljk3NyA5NTJINTkwWiIgZmlsbD0id2hpdGUiLz4KPGRlZnM+CjxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQwX2xpbmVhciIgeDE9Ijc1MiIgeTE9IjExMyIgeDI9Ijc1MiIgeTI9IjEzNTkuNTIiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KPHN0b3Agc3RvcC1jb2xvcj0iI0U0MUYyNiIvPgo8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNCNzAwMDAiLz4KPC9saW5lYXJHcmFkaWVudD4KPC9kZWZzPgo8L3N2Zz4K"/><text aria-hidden="true" x="495" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="530">babashka</text><text x="495" y="140" transform="scale(.1)" fill="#fff" textLength="530">babashka</text><text aria-hidden="true" x="1035" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="390">built-in</text><text x="1035" y="140" transform="scale(.1)" fill="#fff" textLength="390">built-in</text></g></svg>

After

Width:  |  Height:  |  Size: 4.8 KiB

2
pods

@ -1 +1 @@
Subproject commit de4c3610c9ef3879370d01b7202a9f3a9d056f6e
Subproject commit 717cef7af5cb1c1b091bd10e012b2e71b7b8b9bc

@ -1 +1 @@
Subproject commit 4c6699d06b49773d3e5c5b4c11d3334fb78cc996
Subproject commit 2058c79fb63f80ca71917432eddea73e0c58717c

View file

@ -8,61 +8,83 @@
:license {:name "Eclipse Public License 1.0"
:url "http://opensource.org/licenses/eclipse-1.0.php"}
:source-paths ["src" "sci/src" "babashka.curl/src" "fs/src" "pods/src"
"babashka.core/src"
"babashka.nrepl/src" "depstar/src" "process/src"
"deps.clj/src" "deps.clj/resources"]
"deps.clj/src" "deps.clj/resources"
"impl-java/src"]
;; for debugging Reflector.java code:
;; :java-source-paths ["sci/reflector/src-java"]
:java-source-paths ["src-java"]
:resource-paths ["resources" "sci/resources"]
:test-selectors {:windows (complement :skip-windows)}
:dependencies [[org.clojure/clojure "1.11.0-alpha1"]
[borkdude/edamame "0.0.11"]
[borkdude/graal.locking "0.0.2"]
[org.clojure/tools.cli "1.0.206"]
[cheshire "5.10.0"]
[nrepl/bencode "1.1.0"]
[borkdude/sci.impl.reflector "0.0.1"]
[org.clojure/test.check "1.1.0"]]
:test-selectors {:default (complement (some-fn :windows-only :flaky))
:windows (complement (some-fn :skip-windows :flaky))
:non-flaky (complement :flaky)
:flaky :flaky}
:jvm-opts ["--enable-preview"]
:dependencies [[org.clojure/clojure "1.12.0"]
[borkdude/edamame "1.4.30"]
[org.clojure/tools.cli "1.0.214"]
[cheshire "6.0.0"]
[nrepl/bencode "1.2.0"]
[borkdude/sci.impl.reflector "0.0.4"]
[org.babashka/sci.impl.types "0.0.2"]
[org.babashka/babashka.impl.java "0.1.10"]
[org.clojure/core.async "1.8.741"]
[org.clojure/test.check "1.1.1"]
[com.github.clj-easy/graal-build-time "0.1.0"]
[rewrite-clj/rewrite-clj "1.1.49"]
[insn/insn "0.5.2"]
[org.babashka/cli "0.8.65"]
[org.babashka/http-client "0.4.22"]
[org.jsoup/jsoup "1.20.1"]
[borkdude/graal.locking "0.0.2"]]
:plugins [[org.kipz/lein-meta-bom "0.1.1"]]
:metabom {:jar-name "metabom.jar"}
:profiles {:feature/xml {:source-paths ["feature-xml"]
:dependencies [[org.clojure/data.xml "0.2.0-alpha6"]]}
:dependencies [[org.clojure/data.xml "0.2.0-alpha8"]]}
:feature/yaml {:source-paths ["feature-yaml"]
:dependencies [[clj-commons/clj-yaml "0.7.106"]]}
:dependencies [[clj-commons/clj-yaml "1.0.29"
:exclusions [org.flatland/ordered]#_#_clj-commons/clj-yaml "0.7.110"]
[org.flatland/ordered "1.15.12"]]}
:feature/jdbc {:source-paths ["feature-jdbc"]
:dependencies [[seancorfield/next.jdbc "1.1.610"]]}
:feature/sqlite [:feature/jdbc {:dependencies [[org.xerial/sqlite-jdbc "3.36.0.3"]]}]
:feature/postgresql [:feature/jdbc {:dependencies [[org.postgresql/postgresql "42.2.18"]]}]
;:feature/oracledb [:feature/jdbc {:dependencies [[com.oracle.database.jdbc/ojdbc8 "19.8.0.0"]]}]
:feature/oracledb [:feature/jdbc {:dependencies [[io.helidon.integrations.db/ojdbc "2.1.0"]]}] ; ojdbc10 + GraalVM config, by Oracle
:feature/hsqldb [:feature/jdbc {:dependencies [[org.hsqldb/hsqldb "2.5.1"]]}]
:feature/core-async {:source-paths ["feature-core-async"]
:dependencies [[org.clojure/core.async "1.3.610"]]}
:feature/csv {:source-paths ["feature-csv"]
:dependencies [[org.clojure/data.csv "1.0.0"]]}
:feature/transit {:source-paths ["feature-transit"]
:dependencies [[com.cognitect/transit-clj "1.0.324"]]}
:dependencies [[com.cognitect/transit-clj "1.0.333"]]}
:feature/datascript {:source-paths ["feature-datascript"]
:dependencies [[datascript "1.0.1"]]}
:dependencies [[datascript "1.3.10"]]}
:feature/httpkit-client {:source-paths ["feature-httpkit-client"]
:dependencies [[http-kit "2.5.3"]]}
:dependencies [[http-kit "2.8.0-RC1"]]}
:feature/httpkit-server {:source-paths ["feature-httpkit-server"]
:dependencies [[http-kit "2.5.3"]]}
:dependencies [[http-kit "2.8.0-RC1"]]}
:feature/lanterna {:source-paths ["feature-lanterna"]
:dependencies [[babashka/clojure-lanterna "0.9.8-SNAPSHOT"]]}
:feature/core-match {:source-paths ["feature-core-match"]
:dependencies [[org.clojure/core.match "1.0.0"]]}
:feature/hiccup {:source-paths ["feature-hiccup"]
:dependencies [[hiccup/hiccup "2.0.0-alpha2"]]}
:dependencies [[hiccup/hiccup "2.0.0-RC1"]]}
:feature/test-check {:source-paths ["feature-test-check"]}
:feature/spec-alpha {:source-paths ["feature-spec-alpha"]}
:feature/rewrite-clj {:source-paths ["feature-rewrite-clj"]
:dependencies [[rewrite-clj/rewrite-clj "1.0.605-alpha"]]}
:feature/selmer {:source-paths ["feature-selmer"]
:dependencies [[selmer/selmer "1.12.40"]]}
:dependencies [[selmer/selmer "1.12.59"]]}
:feature/logging {:source-paths ["feature-logging"]
:dependencies [[com.taoensso/timbre "6.6.0"]
[org.clojure/tools.logging "1.1.0"]]}
:feature/priority-map {:source-paths ["feature-priority-map"]
:dependencies [[org.clojure/data.priority-map "1.1.0"]]}
:feature/rrb-vector {:source-paths ["feature-rrb-vector"]
:dependencies [[org.clojure/core.rrb-vector "0.1.2"]]}
:test [:feature/xml
:feature/lanterna
:feature/yaml
:feature/postgresql
:feature/hsqldb
:feature/core-async
:feature/csv
:feature/transit
:feature/datascript
@ -72,10 +94,14 @@
:feature/hiccup
:feature/test-check
:feature/spec-alpha
:feature/rewrite-clj
:feature/selmer
{:dependencies [[com.clojure-goes-fast/clj-async-profiler "0.4.1"]
[com.opentable.components/otj-pg-embedded "0.13.3"]]}]
:feature/logging
:feature/priority-map
:feature/rrb-vector
{:dependencies [[borkdude/rewrite-edn "0.4.6"]
[com.clojure-goes-fast/clj-async-profiler "0.5.0"]
[com.opentable.components/otj-pg-embedded "0.13.3"]
[nubank/matcher-combinators "3.6.0"]]}]
:uberjar {:global-vars {*assert* false}
:jvm-opts ["-Dclojure.compiler.direct-linking=true"
"-Dclojure.spec.skip-macros=true"

View file

@ -1 +1 @@
0.4.6
1.12.200

View file

@ -1 +1 @@
0.4.7-SNAPSHOT
1.12.201-SNAPSHOT

View file

@ -0,0 +1,198 @@
{:paths ["src" "feature-xml"
"feature-yaml" "feature-csv" "feature-transit"
"feature-java-time" "feature-java-nio"
"feature-httpkit-client" "feature-httpkit-server"
"feature-lanterna"
"feature-core-match"
"feature-hiccup"
"feature-test-check"
"feature-spec-alpha"
"feature-selmer"
"feature-logging"
"feature-priority-map"
"feature-rrb-vector"
"feature-jdbc"
"pods/src"
"babashka.nrepl/src"
"depstar/src" "process/src"
"deps.clj/src" "deps.clj/resources"
"resources" "sci/resources"
"impl-java/src"],
:deps {org.clojure/clojure {:mvn/version "1.12.0"},
org.babashka/sci {:local/root "sci"}
org.babashka/babashka.impl.java {:mvn/version "0.1.10"}
org.babashka/sci.impl.types {:mvn/version "0.0.2"}
babashka/babashka.curl {:local/root "babashka.curl"}
babashka/fs {:local/root "fs"}
babashka/babashka.core {:local/root "babashka.core"}
org.clojure/core.async {:mvn/version "1.8.741"},
org.clojure/tools.cli {:mvn/version "1.0.214"},
org.clojure/data.csv {:mvn/version "1.0.0"},
cheshire/cheshire {:mvn/version "6.0.0"}
org.clojure/data.xml {:mvn/version "0.2.0-alpha8"}
clj-commons/clj-yaml {:mvn/version "1.0.29"}
com.cognitect/transit-clj {:mvn/version "1.0.333"}
org.clojure/test.check {:mvn/version "1.1.1"}
nrepl/bencode {:mvn/version "1.2.0"}
seancorfield/next.jdbc {:mvn/version "1.1.610"}
org.postgresql/postgresql {:mvn/version "42.2.18"}
org.hsqldb/hsqldb {:mvn/version "2.5.1"}
datascript/datascript {:mvn/version "1.0.1"}
http-kit/http-kit {:mvn/version "2.8.0-RC1"}
babashka/clojure-lanterna {:mvn/version "0.9.8-SNAPSHOT"}
org.clojure/core.match {:mvn/version "1.0.0"}
hiccup/hiccup {:mvn/version "2.0.0-RC1"}
rewrite-clj/rewrite-clj {:mvn/version "1.1.49"}
selmer/selmer {:mvn/version "1.12.59"}
com.taoensso/timbre {:mvn/version "6.6.0"}
org.clojure/tools.logging {:mvn/version "1.1.0"}
org.clojure/data.priority-map {:mvn/version "1.1.0"}
insn/insn {:mvn/version "0.5.2"}
org.clojure/core.rrb-vector {:mvn/version "0.1.2"}
org.babashka/cli {:mvn/version "0.8.65"}
org.babashka/http-client {:mvn/version "0.4.22"}
org.flatland/ordered {:mvn/version "1.15.12"}
org.jsoup/jsoup {:mvn/version "1.20.1"}}
:aliases {:babashka/dev
{:main-opts ["-m" "babashka.main"]}
:profile
{:extra-deps
{com.clojure-goes-fast/clj-async-profiler {:mvn/version "0.5.0"}}
:extra-paths ["test"]
:jvm-opts ["-Djdk.attach.allowAttachSelf"
"-Dclojure.compiler.direct-linking=true"]
:main-opts ["-m" "babashka.profile"]}
:lib-tests
{:extra-paths ["process/src" "process/test" "test-resources/lib_tests"]
:extra-deps {org.clj-commons/clj-http-lite {:mvn/version "0.4.392"}
#_#_org.babashka/spec.alpha {:git/url "https://github.com/babashka/spec.alpha"
:sha "0dec1f88cbde74a0470b454396f09a03adb4ae39"}
lambdaisland/regal {:mvn/version "0.0.143"}
cprop/cprop {:mvn/version "0.1.16"}
comb/comb {:mvn/version "0.1.1"}
mvxcvi/arrangement {:mvn/version "2.0.0"}
org.clojure/data.zip {:mvn/version "1.0.0"}
clojure-csv/clojure-csv {:mvn/version "2.0.2"}
org.clojure/math.combinatorics {:mvn/version "0.1.6"}
doric/doric {:mvn/version "0.9.0"}
henryw374/cljc.java-time
{:git/url "https://github.com/henryw374/cljc.java-time.git"
:sha "e3d184b78e933322b3fcaa6ca66cbb8f42a6b35c"}
camel-snake-kebab/camel-snake-kebab {:mvn/version "0.4.2"}
aero/aero {:mvn/version "1.1.6"}
org.clojure/data.generators {:mvn/version "1.0.0"}
honeysql/honeysql {:mvn/version "1.0.461"}
com.github.seancorfield/honeysql {:mvn/version "2.2.840"}
minimallist/minimallist {:mvn/version "0.0.10"}
circleci/bond {:mvn/version "0.6.0"}
version-clj/version-clj {:mvn/version "2.0.2"}
gaka/gaka {:mvn/version "0.3.0"}
failjure/failjure {:mvn/version "2.2.0"}
io.helins/binf {:mvn/version "1.1.0-beta0"}
rm-hull/jasentaa {:mvn/version "0.2.5"}
slingshot/slingshot {:mvn/version "0.12.2"}
io.replikativ/hasch {:mvn/version "0.3.7"}
com.grammarly/omniconf {:mvn/version "0.4.3"}
crispin/crispin {:mvn/version "0.3.8"}
org.clojure/data.json {:mvn/version "2.4.0"}
clj-commons/multigrep {:mvn/version "0.5.0"}
amperity/vault-clj {:mvn/version "1.0.4"}
java-http-clj/java-http-clj {:mvn/version "0.4.3"}
com.stuartsierra/component {:mvn/version "1.0.0"}
org.clojars.askonomm/ruuter {:mvn/version "1.2.2"}
org.clj-commons/digest {:mvn/version "1.4.100"}
hato/hato {:mvn/version "0.8.2"}
better-cond/better-cond {:mvn/version "2.1.1"}
org.clojure/core.specs.alpha {:mvn/version "0.2.62"}
reifyhealth/specmonstah {:git/url "https://github.com/reifyhealth/specmonstah", :sha "a2b357009a3aa99a0c2d2361f3bbcd0b0e36505e"}
exoscale/coax {:mvn/version "1.0.0-alpha14"}
orchestra/orchestra {:mvn/version "2021.01.01-1"}
expound/expound {:mvn/version "0.8.10"}
integrant/integrant {:git/url "https://github.com/weavejester/integrant", :git/sha "a9fd7c02bd7201f36344b47142badc3c3ef22f88"}
com.stuartsierra/dependency {:mvn/version "1.0.0"}
listora/again {:mvn/version "1.0.0"}
org.clojure/tools.gitlibs {:mvn/version "2.4.172"}
environ/environ {:mvn/version "1.2.0"}
table/table {:git/url "https://github.com/cldwalker/table", :sha "f6293c5f3dac1dd6f525a80fc80930f8ccdf16b7"}
markdown-clj/markdown-clj {:mvn/version "1.10.8"}
org.clojure/tools.namespace {:git/sha "daf82a10e70182aea4c0716a48f3922163441b32",
:git/url "https://github.com/clojure/tools.namespace"}
medley/medley {:mvn/version "1.3.0"}
io.github.cognitect-labs/test-runner {:git/url "https://github.com/cognitect-labs/test-runner",
:git/sha "7284cda41fb9edc0f3bc6b6185cfb7138fc8a023"}
borkdude/missing.test.assertions {:git/url "https://github.com/borkdude/missing.test.assertions", :sha "603cb01bee72fb17addacc53c34c85612684ad70"}
dev.nubank/docopt {:mvn/version "0.6.1-fix7"}
testdoc/testdoc {:mvn/version "1.4.1"}
org.clojars.lispyclouds/contajners {:mvn/version "0.0.6"}
borkdude/rewrite-edn {:mvn/version "0.1.0"}
clojure-term-colors/clojure-term-colors {:mvn/version "0.1.0"}
io.aviso/pretty {:mvn/version "1.1.1"}
progrock/progrock {:mvn/version "0.1.2"}
djblue/portal {:mvn/version "0.19.0"}
com.wsscode/cljc-misc {:mvn/version "2021.10.16"}
edn-query-language/eql {:mvn/version "2021.07.18"}
meta-merge/meta-merge {:mvn/version "1.0.0"}
com.exoscale/lingo {:mvn/version "1.0.0-alpha14"}
io.github.swirrl/dogstatsd {:mvn/version "0.1.39"}
org.clojure/algo.monads {:mvn/version "0.1.6"}
io.lambdaforge/datalog-parser {:mvn/version "0.1.9"}
clj-stacktrace/clj-stacktrace {:mvn/version "0.2.8"}
clojure-msgpack/clojure-msgpack {:mvn/version "1.2.1"}
cli-matic/cli-matic {:git/url "https://github.com/l3nz/cli-matic.git", :git/sha "9cd53ba7336363e3d06650dbad413b6f8b06e471"}
aysylu/loom {:mvn/version "1.0.2"}
com.layerware/hugsql-core {:mvn/version "0.5.3"}
com.github.seancorfield/expectations {:mvn/version "2.0.157"}
com.rpl/specter {:mvn/version "1.1.4"}
com.github.askonomm/clarktown {:mvn/version "1.1.2"}
org.clojure/math.numeric-tower {:git/tag "math.numeric-tower-0.0.5", :git/sha "12eb9c5", :git/url "https://github.com/clojure/math.numeric-tower"}
prismatic/schema {:git/url "https://github.com/plumatic/schema"
:git/sha "6846dc7c3a9df5bfd718f68f183c683ce0f621ff"
:git/tag "schema-1.3.0"}
metosin/malli {:git/url "https://github.com/metosin/malli"
:git/sha "588147ef49b2e41c7d12a8aa994b39c1c6fedd99"
:git/tag "0.8.9"}
meander/epsilon {:git/url "https://github.com/noprompt/meander"
:git/sha "55f5ce70e6ef717e95c58260f6bc725d70c0cb6d"}
cc.qbits/auspex {:git/url "https://github.com/mpenet/auspex"
:git/sha "1a9d7427e60e1a434a764aa820d1c53f7e22504a"
:deps/manifest :deps}
exoscale/interceptor {:git/url "https://github.com/exoscale/interceptor"
:git/sha "ca115fe00a0abf3a2f78452ab309c3aa4c00fc4e"
:deps/manifest :deps}
lambdaisland/uri {:git/url "https://github.com/lambdaisland/uri"
:git/sha "ac4f1f9c8e4f45a088db1c6383ce2191c973987c"
:deps/manifest :deps}
clj-commons/fs {:mvn/version "1.6.310"}
postmortem/postmortem {:git/url "https://github.com/athos/Postmortem"
:git/sha "1a29775a3d286f9f6fe3f979c78b6e2bf298d5ba"}
com.github.rawleyfowler/sluj {:git/url "https://github.com/rawleyfowler/sluj"
:git/sha "4a92e772b4e07bf127423448d4140748b5782198"
:deps/manifest :deps}
net.cgrand/xforms {:git/url "https://github.com/cgrand/xforms"
:git/sha "550dbc150a79c6ecc148d8a7e260e10bc36321c6"
:deps/manifest :deps}
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 "9385b6708ef35f161732d8464b3a3aa57dd79f30"}
com.potetm/fusebox {:git/url "https://github.com/potetm/fusebox"
:git/sha "ac6d6a0a69510b009b3c1bb2247cd110fd9f7246"}
net.sekao/odoyle-rules {:git/url "https://github.com/oakes/odoyle-rules"
:git/sha "0b1d825ec45a998c4d3481dfb292e08ce6a47f0b"}}
:classpath-overrides {org.clojure/clojure nil
org.clojure/spec.alpha nil}}
:clj-nvd
{:extra-deps {clj-nvd/clj-nvd {:git/url "https://github.com/miikka/clj-nvd.git"
:sha "f2ec98699e057a379baf170cb49cf7ad76874a70"}}
:main-opts ["-m" "clj-nvd.core"]}
:test
{:extra-paths ["test"]
:extra-deps {io.github.cognitect-labs/test-runner
{:git/tag "v0.5.0" :git/sha "b3fd0d2"}
nubank/matcher-combinators {:mvn/version "3.6.0"}}
:main-opts ["-m" "cognitect.test-runner"]
:exec-fn cognitect.test-runner.api/test}
:test-pod
{:extra-paths ["test-resources"]
:main-opts ["-m" "babashka.main" "test-resources/pod.clj"]}}}
;; release

View file

@ -0,0 +1,57 @@
ImageName=bb
Args=-H:+ReportExceptionStackTraces \
-J-Dborkdude.dynaload.aot=true \
-H:IncludeResources=BABASHKA_VERSION \
-H:IncludeResources=META-INF/babashka/.* \
-H:IncludeResources=src/babashka/.* \
-H:IncludeResources=SCI_VERSION \
-H:Log=registerResource:3 \
--enable-url-protocols=http,https,jar,unix \
--enable-all-security-services \
-H:+JNI \
--no-server \
--report-unsupported-elements-at-runtime \
--initialize-at-build-time=com.fasterxml.jackson \
--initialize-at-build-time=java.sql.SQLException \
--initialize-at-build-time=org.yaml.snakeyaml \
--initialize-at-run-time=org.postgresql.sspi.SSPIClient \
--initialize-at-run-time=org.httpkit.client.ClientSslEngineFactory$SSLHolder \
-H:ServiceLoaderFeatureExcludeServices=javax.sound.sampled.spi.AudioFileReader \
-H:ServiceLoaderFeatureExcludeServices=javax.sound.midi.spi.MidiFileReader \
-H:ServiceLoaderFeatureExcludeServices=javax.sound.sampled.spi.MixerProvider \
-H:ServiceLoaderFeatureExcludeServices=javax.sound.sampled.spi.FormatConversionProvider \
-H:ServiceLoaderFeatureExcludeServices=javax.sound.sampled.spi.AudioFileWriter \
-H:ServiceLoaderFeatureExcludeServices=javax.sound.midi.spi.MidiDeviceProvider \
-H:ServiceLoaderFeatureExcludeServices=javax.sound.midi.spi.SoundbankReader \
-H:ServiceLoaderFeatureExcludeServices=javax.sound.midi.spi.MidiFileWriter \
-H:ServiceLoaderFeatureExcludeServices=java.net.ContentHandlerFactory \
-H:ServiceLoaderFeatureExcludeServices=java.nio.charset.spi.CharsetProvider \
-EBABASHKA_STATIC \
-EBABASHKA_MUSL \
-EBABASHKA_FEATURE_YAML \
-EBABASHKA_FEATURE_XML \
-EBABASHKA_FEATURE_CSV \
-EBABASHKA_FEATURE_TRANSIT \
-EBABASHKA_FEATURE_JAVA_TIME \
-EBABASHKA_FEATURE_JAVA_NET_HTTP \
-EBABASHKA_FEATURE_JAVA_NIO \
-EBABASHKA_FEATURE_HTTPKIT_CLIENT \
-EBABASHKA_FEATURE_HTTPKIT_SERVER \
-EBABASHKA_FEATURE_CORE_MATCH \
-EBABASHKA_FEATURE_HICCUP \
-EBABASHKA_FEATURE_TEST_CHECK \
-EBABASHKA_FEATURE_SELMER \
-EBABASHKA_FEATURE_LOGGING \
-EBABASHKA_FEATURE_PRIORITY_MAP \
-EBABASHKA_FEATURE_JDBC \
-EBABASHKA_FEATURE_SQLITE \
-EBABASHKA_FEATURE_POSTGRESQL \
-EBABASHKA_FEATURE_ORACLEDB \
-EBABASHKA_FEATURE_HSQLDB \
-EBABASHKA_FEATURE_DATASCRIPT \
-EBABASHKA_FEATURE_LANTERNA \
-EBABASHKA_FEATURE_SPEC_ALPHA \
-EBABASHKA_FEATURE_RRB_VECTOR \
-EBABASHKA_REQUIRE_SCAN \
-EBABASHKA_SHA

View file

@ -0,0 +1,31 @@
[{
"interfaces": [
"java.util.function.Predicate"
]
},
{
"interfaces": [
"java.util.function.Function"
]
},
{
"interfaces": [
"java.io.FileFilter"
]
},
{
"interfaces": [
"java.nio.file.DirectoryStream$Filter"
]
},
{
"interfaces": [
"java.util.function.Supplier"
]
},
{
"interfaces": [
"java.util.function.UnaryOperator"
]
}
]

View file

@ -0,0 +1,55 @@
/*
* Copyright (c) 2018, 2020, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
import java.io.Closeable;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.net.URLClassLoader;
import java.security.AccessControlContext;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.WeakHashMap;
import com.oracle.svm.core.annotate.Alias;
import com.oracle.svm.core.annotate.RecomputeFieldValue;
import com.oracle.svm.core.annotate.Substitute;
import com.oracle.svm.core.annotate.TargetClass;
@TargetClass(URLClassLoader.class)
@SuppressWarnings({"unused", "static-method"})
final class Target_java_net_URLClassLoader {
@Alias//
@RecomputeFieldValue(kind = RecomputeFieldValue.Kind.NewInstance, declClass = WeakHashMap.class)//
private WeakHashMap<Closeable, Void> closeables;
@Substitute
public InputStream getResourceAsStream(String name) throws IOException {
System.out.println("getResource");
return null;
// return Resources.createInputStream(name);
}
}

View file

@ -0,0 +1,31 @@
(ns clojure.repl.deps
(:require [babashka.deps :as deps]))
(defn add-libs
"Given lib-coords, a map of lib to coord, will resolve all transitive deps for the libs
together and add them to the repl classpath, unlike separate calls to add-lib."
{:added "1.12"}
[lib-coords]
(deps/add-deps {:deps lib-coords})
nil)
(defn add-lib
"Given a lib that is not yet on the repl classpath, make it available by
downloading the library if necessary and adding it to the classloader.
Libs already on the classpath are not updated. Requires a valid parent
DynamicClassLoader.
lib - symbol identifying a library, for Maven: groupId/artifactId
coord - optional map of location information specific to the procurer,
or latest if not supplied
Returns coll of libs loaded, including transitive (or nil if none).
For info on libs, coords, and versions, see:
https://clojure.org/reference/deps_and_cli"
{:added "1.12"}
([lib coord]
(add-libs {lib coord}))
([lib]
(throw (ex-info "add-lib without explicit version isn't supported in babashka (yet)" {:lib lib}))))

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,227 @@
; Copyright (c) Rich Hickey. All rights reserved.
; The use and distribution terms for this software are covered by the
; Eclipse Public License 1.0 (http://opensource.org/licenses/eclipse-1.0.php)
; which can be found in the file epl-v10.html at the root of this distribution.
; By using this software in any fashion, you are agreeing to be bound by
; the terms of this license.
; You must not remove this notice, or any other, from this software.
(ns clojure.spec.gen.alpha
(:refer-clojure :exclude [boolean bytes cat hash-map list map not-empty set vector
char double int keyword symbol string uuid delay shuffle]))
(alias 'c 'clojure.core)
(defonce ^:private dynalock (Object.))
(defn- dynaload
[s]
(let [ns (namespace s)]
(assert ns)
(locking dynalock
(require (c/symbol ns)))
(let [v (resolve s)]
(if v
@v
(throw (RuntimeException. (str "Var " s " is not on the classpath")))))))
(def ^:private quick-check-ref
(c/delay (dynaload 'clojure.test.check/quick-check)))
(defn quick-check
[& args]
(apply @quick-check-ref args))
(def ^:private for-all*-ref
(c/delay (dynaload 'clojure.test.check.properties/for-all*)))
(defn for-all*
"Dynamically loaded clojure.test.check.properties/for-all*."
[& args]
(apply @for-all*-ref args))
(let [g? (c/delay (dynaload 'clojure.test.check.generators/generator?))
g (c/delay (dynaload 'clojure.test.check.generators/generate))
mkg (c/delay (dynaload 'clojure.test.check.generators/->Generator))]
(defn- generator?
[x]
(@g? x))
(defn- generator
[gfn]
(@mkg gfn))
(defn generate
"Generate a single value using generator."
[generator]
(@g generator)))
(defn ^:skip-wiki delay-impl
[gfnd]
;;N.B. depends on test.check impl details
(generator (fn [rnd size]
((:gen @gfnd) rnd size))))
(defmacro delay
"given body that returns a generator, returns a
generator that delegates to that, but delays
creation until used."
[& body]
`(delay-impl (c/delay ~@body)))
(defn gen-for-name
"Dynamically loads test.check generator named s."
[s]
(let [g (dynaload s)]
(if (generator? g)
g
(throw (RuntimeException. (str "Var " s " is not a generator"))))))
(defmacro ^:skip-wiki lazy-combinator
"Implementation macro, do not call directly."
[s]
(let [fqn (c/symbol "clojure.test.check.generators" (name s))
doc (str "Lazy loaded version of " fqn)]
`(let [g# (c/delay (dynaload '~fqn))]
(defn ~s
~doc
[& ~'args]
(apply @g# ~'args)))))
(defmacro ^:skip-wiki lazy-combinators
"Implementation macro, do not call directly."
[& syms]
`(do
~@(c/map
(fn [s] (c/list 'lazy-combinator s))
syms)))
(lazy-combinators hash-map list map not-empty set vector vector-distinct fmap elements
bind choose fmap one-of such-that tuple sample return
large-integer* double* frequency shuffle)
(defmacro ^:skip-wiki lazy-prim
"Implementation macro, do not call directly."
[s]
(let [fqn (c/symbol "clojure.test.check.generators" (name s))
doc (str "Fn returning " fqn)]
`(let [g# (c/delay (dynaload '~fqn))]
(defn ~s
~doc
[& ~'args]
@g#))))
(defmacro ^:skip-wiki lazy-prims
"Implementation macro, do not call directly."
[& syms]
`(do
~@(c/map
(fn [s] (c/list 'lazy-prim s))
syms)))
(lazy-prims any any-printable boolean bytes char char-alpha char-alphanumeric char-ascii double
int keyword keyword-ns large-integer ratio simple-type simple-type-printable
string string-ascii string-alphanumeric symbol symbol-ns uuid)
(defn cat
"Returns a generator of a sequence catenated from results of
gens, each of which should generate something sequential."
[& gens]
(fmap #(apply concat %)
(apply tuple gens)))
(defn- qualified? [ident] (not (nil? (namespace ident))))
(def ^:private
gen-builtins
(c/delay
(let [simple (simple-type-printable)]
{any? (one-of [(return nil) (any-printable)])
some? (such-that some? (any-printable))
number? (one-of [(large-integer) (double)])
integer? (large-integer)
int? (large-integer)
pos-int? (large-integer* {:min 1})
neg-int? (large-integer* {:max -1})
nat-int? (large-integer* {:min 0})
float? (double)
double? (double)
boolean? (boolean)
string? (string-alphanumeric)
ident? (one-of [(keyword-ns) (symbol-ns)])
simple-ident? (one-of [(keyword) (symbol)])
qualified-ident? (such-that qualified? (one-of [(keyword-ns) (symbol-ns)]))
keyword? (keyword-ns)
simple-keyword? (keyword)
qualified-keyword? (such-that qualified? (keyword-ns))
symbol? (symbol-ns)
simple-symbol? (symbol)
qualified-symbol? (such-that qualified? (symbol-ns))
uuid? (uuid)
uri? (fmap #(java.net.URI/create (str "http://" % ".com")) (uuid))
decimal? (fmap #(BigDecimal/valueOf %)
(double* {:infinite? false :NaN? false}))
inst? (fmap #(java.util.Date. %)
(large-integer))
seqable? (one-of [(return nil)
(list simple)
(vector simple)
(map simple simple)
(set simple)
(string-alphanumeric)])
indexed? (vector simple)
map? (map simple simple)
vector? (vector simple)
list? (list simple)
seq? (list simple)
char? (char)
set? (set simple)
nil? (return nil)
false? (return false)
true? (return true)
zero? (return 0)
rational? (one-of [(large-integer) (ratio)])
coll? (one-of [(map simple simple)
(list simple)
(vector simple)
(set simple)])
empty? (elements [nil '() [] {} #{}])
associative? (one-of [(map simple simple) (vector simple)])
sequential? (one-of [(list simple) (vector simple)])
ratio? (such-that ratio? (ratio))
bytes? (bytes)})))
(defn gen-for-pred
"Given a predicate, returns a built-in generator if one exists."
[pred]
(if (set? pred)
(elements pred)
(get @gen-builtins pred)))
(comment
(require :reload 'clojure.spec.gen.alpha)
(in-ns 'clojure.spec.gen.alpha)
;; combinators, see call to lazy-combinators above for complete list
(generate (one-of [(gen-for-pred integer?) (gen-for-pred string?)]))
(generate (such-that #(< 10000 %) (gen-for-pred integer?)))
(let [reqs {:a (gen-for-pred number?)
:b (gen-for-pred ratio?)}
opts {:c (gen-for-pred string?)}]
(generate (bind (choose 0 (count opts))
#(let [args (concat (seq reqs) (c/shuffle (seq opts)))]
(->> args
(take (+ % (count reqs)))
(mapcat identity)
(apply hash-map))))))
(generate (cat (list (gen-for-pred string?))
(list (gen-for-pred ratio?))))
;; load your own generator
(gen-for-name 'clojure.test.check.generators/int)
;; failure modes
(gen-for-name 'unqualified)
(gen-for-name 'clojure.core/+)
(gen-for-name 'clojure.core/name-does-not-exist)
(gen-for-name 'ns.does.not.exist/f)
)

Some files were not shown because too many files have changed in this diff Show more