babashka-sci-dev

lispyclouds 2023-09-23T07:53:54.060119Z

@borkdude should we be looking into bumping to GraalVM/JDK 21? I remember we discussing we would like to do this upgrade and then only if absolutely needed. I can look into it.

lispyclouds 2023-09-24T07:31:55.750369Z

I can review and merge @lee β€˜s PR

borkdude 2023-09-24T07:43:39.324969Z

already done, looks simple enough. @rahul080327 can you verify if the bug in your PR also occurs with graalvm CE (vs the Oracle one)?

lispyclouds 2023-09-24T07:44:44.933629Z

Yeah will try that. Wanted to narrow down to a piece of code that causes it too

πŸ‘ 1
lispyclouds 2023-09-24T08:58:50.577649Z

Fails on ce at the same place

lispyclouds 2023-09-24T09:02:45.723959Z

i think the ce build time was much less too, less optimisations maybe πŸ˜›

borkdude 2023-09-24T09:09:46.063539Z

Yes, see -O1 remark before in this thread, this is closer to what CE does and yields even a smaller binary and less compile time with the Oracle version compared to CE. Already known, also see issue

borkdude 2023-09-24T09:10:56.412209Z

Perhaps -O1 also avoids the error because perhaps it’s due to an optimization

lispyclouds 2023-09-24T09:12:13.031209Z

but ce aslo shows this error with the usual build flags

borkdude 2023-09-24T09:13:25.029969Z

Hmyeah ok

lispyclouds 2023-09-24T09:19:19.615069Z

im trying to run the tests for io.replikative/hasch (one of the libs i think causes this) bb.edn

{:deps {io.replikativ/hasch {:mvn/version "0.3.7"}}
 :tasks {test {:extra-paths ["test"]
               :extra-deps {io.github.cognitect-labs/test-runner
                            {:git/tag "v0.5.1" :git/sha "dfb30dd"}}
               :task (exec 'cognitect.test-runner.api/test)
               :exec-args {:dirs ["test"]}}}}

lispyclouds 2023-09-24T09:19:43.535959Z

i get this:

~/code/repos/babashka/bb test 
Running tests in #{"test"}

Testing exec-bcc5a671-8961-4ca5-a03c-baa5387d69ed

Ran 0 tests containing 0 assertions.
0 failures, 0 errors.

lispyclouds 2023-09-24T09:20:04.816509Z

im missing something stupid, why cant this find the tests?

lispyclouds 2023-09-24T09:21:05.880259Z

also that Testing exec line is nowhere

lispyclouds 2023-09-24T09:34:48.298529Z

got it running with https://book.babashka.org/#_running_tests and can repro the issue. homing in now. something is off with cognitect test runner

borkdude 2023-09-24T09:39:04.285669Z

> Im missing something stupid, why cant this find the tests? Because the regular tools namespace doesn't look for .bb files perhaps?

borkdude 2023-09-24T09:39:11.766089Z

not sure if there are any in that project

lispyclouds 2023-09-24T09:42:45.378609Z

this is enough to cause this: bb -Sdeps '{:deps {io.replikativ/hasch {:mvn/version "0.3.7"}}}' -e "(require '[hasch.core])"

lispyclouds 2023-09-24T09:43:22.607769Z

at least now down to a single ns πŸ˜„

borkdude 2023-09-24T09:45:03.610219Z

nice, progress :)

lispyclouds 2023-09-24T09:56:46.950779Z

this code specifically: https://github.com/replikativ/hasch/blob/main/src/hasch/platform.clj#L175

borkdude 2023-09-24T09:57:16.094319Z

aha

borkdude 2023-09-24T09:57:22.659359Z

I'll try locally too

lispyclouds 2023-09-24T09:58:53.836249Z

on a side note, native image comes bundled now, no need for gu install ... removing that too. there is no gu btw

borkdude 2023-09-24T10:03:22.789989Z

please don't remove it if it's not necessary, so it keeps working with older graal versions

borkdude 2023-09-24T10:04:13.717399Z

oh yeah, if gu is missing, that won't work for 21+ then

lispyclouds 2023-09-24T10:05:20.178809Z

i can keep it, there is a benign if check, will only fail if the native image bin is missing somehow

borkdude 2023-09-24T10:05:31.896719Z

ah nice

borkdude 2023-09-24T10:05:47.690359Z

please keep then, keep PR minimal with only relevant changes (haven't checked the PR yet btw)

πŸ‘πŸΎ 1
borkdude 2023-09-24T10:06:03.934009Z

bit jetlagged, literally no sleep last night on the plane ;)

lispyclouds 2023-09-24T10:06:26.130539Z

yeah understandable. pretty much trying to nail this mystery bug now

borkdude 2023-09-24T10:06:40.181439Z

alright, I got it compiled locally with 21

borkdude 2023-09-24T10:08:02.068599Z

repro:

./bb -e '(defprotocol Foo (barf [_])) (extend (Class/forName "[B") Foo {:barf (fn [^bytes this])})'

lispyclouds 2023-09-24T10:08:13.850969Z

nice

borkdude 2023-09-24T10:08:43.562489Z

see if it can be smaller

lispyclouds 2023-09-24T10:08:50.614529Z

bb -e '(Class/forName "[B")'

borkdude 2023-09-24T10:08:57.708049Z

gotcha

borkdude 2023-09-24T10:09:36.831109Z

./bb -e '(Class/forName "String")'

borkdude 2023-09-24T10:09:39.228849Z

also same issue

borkdude 2023-09-24T10:10:17.143999Z

so seems to be an issue with Class for Name then, perhaps it's possible to reproduce this in Java as well. What is done in SCI: look up the method forName reflectively on the Class class and then invoke it with the argument

borkdude 2023-09-24T10:10:22.985729Z

I'll try a bit too

lispyclouds 2023-09-24T10:10:49.095819Z

yeah the stack trace hints at reflection too

borkdude 2023-09-24T10:22:03.556809Z

Can repro using this example:

public class ReflectionIssue {
    public static void main(String [] args) throws NoSuchMethodException, IllegalAccessException, java.lang.reflect.InvocationTargetException {
        var clazz = Class.class;
        var meth = clazz.getMethod("forName", String.class);
        var stringClazz = meth.invoke(null, "java.lang.String");
        System.out.println(stringClazz);
    }
}

borkdude 2023-09-24T10:22:10.996799Z

compile with native image and then same error

lispyclouds 2023-09-24T10:24:42.608779Z

nice, do we post on the Graal Slack?

lispyclouds 2023-09-24T10:24:50.691289Z

I can start the convo

borkdude 2023-09-24T10:27:22.213159Z

I think it's better to make a small github repo first with the problem, a script to compile the java + native image, given that $GRAALVM_HOME is set to 21, describe how to run it in the README. Then start convo, but I'm fairly certain they will ask you to just create the github issue so you might just want to do that

lispyclouds 2023-09-24T10:27:53.538249Z

i'll make a repo

πŸ‘ 1
borkdude 2023-09-24T10:27:56.692489Z

and then paste the github issue link in their slack

borkdude 2023-09-24T10:33:35.599319Z

Also make sure to include a reflect config.json with String in there, else you can't reflectively call String

πŸ‘πŸΎ 1
borkdude 2023-09-24T10:34:24.060029Z

it's interesting that 20 also already had this problem

borkdude 2023-09-24T10:34:41.645989Z

graalvm-jdk-20.0.1+9.1

lispyclouds 2023-09-24T10:34:48.462849Z

ah interesting

lispyclouds 2023-09-24T10:35:08.128979Z

maybe something useful in the release notes?

borkdude 2023-09-24T10:35:28.549079Z

I'd just try every version until you find a version that works. Currently bb still uses 19

lispyclouds 2023-09-24T10:35:47.447169Z

yeah we didnt update or we wouldve seen it

lispyclouds 2023-09-24T10:36:23.494859Z

i meant if they changed something in the release notes of native image re: reflection

borkdude 2023-09-24T10:37:15.762599Z

yeah

lispyclouds 2023-09-24T10:40:03.673469Z

do you have the reflection.json at hand for this?

borkdude 2023-09-24T10:41:53.603339Z

check resources/META-INF/native-image/babashka/babashka/reflect-config.json on your local system and only extract the String entry

πŸ‘πŸΎ 1
borkdude 2023-09-24T10:42:13.784219Z

These changes in 20 seem relevant:

Improved reporting of missing metadata in Native Image by throwing special exceptions. Native Image does not distinguish between missing reachability metadata and exceptions that were thrown by the Reflection API. For example, the ClassNotFoundException that is thrown when a class is not on the classpath, or when the metadata for a class is not present. Now Native Image users can catch metadata exceptions and debug their programs using the option -XX:ExitOnMissingMetadata to guarantee that all metadata entries are correct. Read more here. This is an experimental feature and is not on by default.
Introduced safe composition of Reflection and Resources metadata in Native Image. For example, reflective methods such as java.lang.Class#getDeclaredMethodsreturn are based on the reachability of other reflective elements. Adding new metadata makes more elements reachable and can change the program functionality. Thanks to the safe composition of metadata optimization, the native-image builder now ensures that every reflective call on java.lang.Class requires a metadata entry. Read more here.

lispyclouds 2023-09-24T10:43:44.232559Z

so this is something we need to config?

borkdude 2023-09-24T10:45:05.857429Z

define "this"?

lispyclouds 2023-09-24T10:45:28.276239Z

as in something we need to add to the reflect config json or something?

lispyclouds 2023-09-24T10:45:42.206989Z

not sure what metadata here refers to?

borkdude 2023-09-24T10:45:48.331939Z

class metadata

borkdude 2023-09-24T10:46:09.061369Z

I think it's just about error reporting when native image fails to find class data at runtime

lispyclouds 2023-09-24T10:46:31.150329Z

right, so this is a bug i suppose

borkdude 2023-09-24T10:46:52.599209Z

I'm not sure where to put that flag and I'm not sure if this has anything to do with the bug, but it could very well be

borkdude 2023-09-24T10:46:58.581239Z

that flag = -XX:ExitOnMissingMetadata

lispyclouds 2023-09-24T10:47:14.367739Z

i'll try this with the java code

lispyclouds 2023-09-24T10:57:00.984859Z

https://github.com/lispyclouds/graalvm21-reflection-issue

lispyclouds 2023-09-24T10:58:17.529859Z

if this looks okay will post it

lispyclouds 2023-09-24T11:13:00.817779Z

when all this dust settles, wanna play with the G1 GC, pgo etc optiions too on the Oracle build, looks nice and could speed things up!

lread 2023-09-24T23:02:47.863089Z

Interesting tidbit: The GraalVM install instructions don't mention GRAALVM_HOME anymore, just JAVA_HOME.

πŸ‘πŸΎ 1
borkdude 2023-09-25T19:19:18.418379Z

@rahul080327 I made a fix (workaround) for Class/forName in SCI + bb. Both branches are called prefab-static-methods but you can just use the branch of bb which will set the right SCI branch when using submodules (as CI does). you could try to merge this branch within your upgrade branch

πŸ‘πŸΎ 1
borkdude 2023-09-25T19:19:45.422309Z

running libtests locally with 21:

Ran 26 tests containing 93 assertions.
0 failures, 0 errors.
{:test 2323, :pass 14605, :fail 0, :error 0}
and:
./bb -e '[(Class/forName "java.lang.String") (System/getProperty "java.version")]'
[java.lang.String "21"]

borkdude 2023-09-25T19:22:55.121579Z

not sure yet about the new SCI feature, I think I'll also add the class as the first argument. It works like this:

{:classes {'java.lang.Class {:class Class :static-methods {'forName (fn [^String the-name] (Class/forName the-name))}}}

borkdude 2023-09-25T19:23:11.439869Z

when a static method is provided via the config, the configurator is responsible for handling all the interop for you

borkdude 2023-09-25T19:23:43.430119Z

so reflection is avoided

lispyclouds 2023-09-25T22:48:57.962409Z

all tests pass, pulled in the latest process changes

lispyclouds 2023-09-25T22:49:29.013899Z

the windows path is still an issue, need some help there

lispyclouds 2023-09-25T22:54:34.659019Z

[linux-aarch64-static - graal21@f6ef5da75f902650df7609b1f3102a7485bb54a1 - 108115200]: https://37276-201467090-gh.circle-artifacts.com/0/release/babashka-1.3.185-SNAPSHOT-linux-aarch64-static.tar.gz [macos-amd64 - graal21@f6ef5da75f902650df7609b1f3102a7485bb54a1 - 92640304]: https://37279-201467090-gh.circle-artifacts.com/0/release/babashka-1.3.185-SNAPSHOT-macos-amd64.tar.gz [linux-amd64-static - graal21@f6ef5da75f902650df7609b1f3102a7485bb54a1 - 94472944]: https://37278-201467090-gh.circle-artifacts.com/0/release/babashka-1.3.185-SNAPSHOT-linux-amd64-static.tar.gz [linux-amd64 - graal21@f6ef5da75f902650df7609b1f3102a7485bb54a1 - 108993504]: https://37275-201467090-gh.circle-artifacts.com/0/release/babashka-1.3.185-SNAPSHOT-linux-amd64.tar.gz ~20M size increase. quite something

borkdude 2023-09-25T23:09:06.724959Z

I already said a few times that using -O1 will reduce the image siZe and also cuts compilation time :)

borkdude 2023-09-25T23:09:48.810099Z

Why did you revert classes.clj? It contains a workaround for the Graal bug

borkdude 2023-09-25T23:10:48.951179Z

-O1 is closer to what CE does by default. I want to use that setting until we try what effect PGO has

borkdude 2023-09-25T23:10:59.585699Z

Does

lispyclouds 2023-09-25T23:12:26.939729Z

> Why did you revert classes.clj? It contains a workaround for the Graal bug i thought it was a merge goof up, putting it back

borkdude 2023-09-25T23:13:34.188029Z

No it contains essential changes. No need to upgrade process though, it’s not related to this PR at all

lispyclouds 2023-09-25T23:13:43.565579Z

yeah forgot it was from another branch, was surprised when comparing with master πŸ˜›

lispyclouds 2023-09-25T23:14:30.398759Z

the process update fixes the java regex test

borkdude 2023-09-25T23:14:49.759059Z

Aah ok then

borkdude 2023-09-25T23:15:06.074879Z

How?

borkdude 2023-09-25T23:15:35.290849Z

Anyway it’s fine then

borkdude 2023-09-25T23:16:23.176169Z

The vcvars thing in Windows isn’t necessary anymore I think, I saw a tweet about it by Fabio Niehaus

lispyclouds 2023-09-25T23:16:36.394849Z

will try removing it

borkdude 2023-09-25T23:17:12.814919Z

That is what fails the build right? I’m chatting from pho e right now

lispyclouds 2023-09-25T23:17:41.935169Z

yeah that path doesnt exist

πŸ‘ 1
borkdude 2023-09-25T23:17:43.499239Z

might be good to look up that tweet and docs

lispyclouds 2023-09-25T23:18:16.333719Z

pushed without it, wont be any worse than now

πŸ‘ 1
borkdude 2023-09-25T23:20:41.077599Z

Add -O1 to the Graal arguments too until we PGO

lispyclouds 2023-09-25T23:21:14.100699Z

also do we try G1 GC?

borkdude 2023-09-25T23:21:15.671089Z

This yields a 10mb smaller binary than before on macOS

borkdude 2023-09-25T23:21:50.633999Z

Not yet, I want to keep things the same which is the point of O1

πŸ‘πŸΎ 1
borkdude 2023-09-25T23:22:55.539129Z

Don’t change too many thing in one PR if you don’t knkq what you’re doing, with G1 we can play around but I don’t know how to test that, different issue

πŸ‘πŸΎ 1
lispyclouds 2023-09-25T23:26:19.756399Z

removing that path helps appveyor

πŸŽ‰ 1
borkdude 2023-09-25T23:29:22.079559Z

You forgot Windows O1 ;)

1
borkdude 2023-09-25T23:31:12.625529Z

It’s really fast compilation if you compile with O1 on Mac m1/m2, like 1 minute or so compared to 3 or 4

lispyclouds 2023-09-25T23:36:46.784739Z

> with G1 we can play around but I don’t know how to test that i can possibly come up with a (ThePrimeagen inspired) stress test to make the GC work with lots of objects living at different lifetimes

borkdude 2023-09-25T23:38:08.885429Z

Ok different branch though after this one

lispyclouds 2023-09-25T23:38:28.369289Z

yeah after this is merged

borkdude 2023-09-25T23:38:33.579189Z

To me startup size and performance matter but in that order probably

borkdude 2023-09-25T23:39:08.575289Z

Don’t know how G1 affects that, but needs to be included in benchmark

lispyclouds 2023-09-25T23:39:08.920109Z

can do a different release with G1 if promising

lispyclouds 2023-09-25T23:40:28.193299Z

will hammock a bit on a GC specific benchmark, dont think we have one right?

borkdude 2023-09-25T23:40:58.029419Z

Indeed. Start with a problem statement maybe ;)

πŸ‘πŸΎ 1
borkdude 2023-09-25T23:42:28.779229Z

There, 10mb less instead of 20m bloat

🀟🏾 1
lispyclouds 2023-09-25T23:43:41.314889Z

and cirrus ran 2x faster

borkdude 2023-09-25T23:44:55.312989Z

Told you ;)

lispyclouds 2023-09-25T23:46:20.236939Z

changes look good from my side, lemme know if the way im downloading and setting the vars looks okay

borkdude 2023-09-25T23:46:48.730829Z

Ok I’ll look tomorrow. First gonna merge those SCI changes

borkdude 2023-09-25T23:46:57.115149Z

Thanks so far!

πŸ™πŸΎ 1
lread 2023-09-26T00:03:21.750889Z

FYI: While setting up my Windows VM yesterday, I got an error about failing auto-setup of windows build env. While looking for the error msg, https://github.com/oracle/graal/blob/69f247be3fab0a7ca71a8059c4366713aefb3d5a/substratevm/src/com.oracle.svm.driver/src/com/oracle/svm/driver/WindowsBuildEnvironmentUtil.java#L61-L127. Looks like it is fine if you want call vcvars bat file yourself, but if you don't native-image will try to do it for you.

πŸ‘ 1
borkdude 2023-09-26T00:06:38.480059Z

I wouldn’t be surprised if there was something in the changelogs about this since I also saw a tweet about it

lread 2023-09-26T00:09:45.182259Z

Ya probably. Somewhere!

borkdude 2023-09-26T00:12:30.603219Z

Also he has a tweet about a new build time feature, perhaps relevant to graal build time

lread 2023-09-26T00:12:56.319129Z

I haven't been on X since it was Twitter. Maybe I'm missing out.

lread 2023-09-26T00:15:05.944389Z

I wonder if he was talking about something related to: https://clojurians.slack.com/archives/CAJN79WNT/p1695137870805729?thread_ts=1695136706.616289&cid=CAJN79WNT

borkdude 2023-09-27T10:10:19.029239Z

ok, change "/latest/" in the url to "/archive/" and we should be good

borkdude 2023-09-27T10:10:28.387229Z

according to Niephaus

borkdude 2023-09-27T10:12:30.428089Z

pushed those changes

borkdude 2023-09-27T10:24:45.201609Z

merged

lispyclouds 2023-09-27T10:29:49.585439Z

awesome! πŸ˜„

πŸ™Œ 1
borkdude 2023-09-27T10:37:19.818679Z

nice, with pgo, the loop examples becomes almost 2x faster:

$ ./bb -e '(time (loop [val 0 cnt 10000000] (if (pos? cnt) (recur (inc val) (dec cnt)) val)))'
"Elapsed time: 318.995125 msecs"
10000000
vs (old, fresh from CI):
$ /tmp/bb -e '(time (loop [val 0 cnt 10000000] (if (pos? cnt) (recur (inc val) (dec cnt)) val)))'
"Elapsed time: 584.00275 msecs"
10000000

borkdude 2023-09-27T10:37:26.612749Z

and the binary is equal in size

borkdude 2023-09-27T10:37:35.267609Z

seems like a win

lispyclouds 2023-09-27T10:37:43.507809Z

beauty

lispyclouds 2023-09-27T10:38:03.157719Z

this is better than -O2/3?

lispyclouds 2023-09-27T10:38:10.939609Z

keeping the size aside

borkdude 2023-09-27T10:38:12.765309Z

pgo uses -o3 automatically

lispyclouds 2023-09-27T10:38:17.505859Z

nice

borkdude 2023-09-27T10:38:58.550919Z

it does mean that we have to compile the binary twice on CI, once for instrumentation, once for optimizing

borkdude 2023-09-27T10:39:09.401909Z

not sure if I find that worth the hassle to be honest

lispyclouds 2023-09-27T10:39:19.153529Z

we can do this only on the master branch

borkdude 2023-09-27T10:39:34.451789Z

unless the .iprof file can be shared over multiple builds

borkdude 2023-09-27T10:41:40.362829Z

the lib tests run in 27 seconds with the pgo optimized binary and 29 with the -O1 binary. I think for typical scripts people won't notice a damn difference

borkdude 2023-09-27T10:42:00.308159Z

but it's nice to know that this works

borkdude 2023-09-27T11:04:45.326609Z

for fun I'm just going to try to re-use the iprof file on CI and see what happens...

borkdude 2023-09-27T11:05:01.671949Z

I bet you can't re-use the same iprof file for different builds, so I expect things to blow up

lispyclouds 2023-09-27T11:05:25.890489Z

or can use it on a linux vm and the windows build locally?

lispyclouds 2023-09-27T11:05:52.716009Z

i can try the linux one here if that can be uploaded

borkdude 2023-09-27T11:06:07.548999Z

I'll share the iprof file through dropbox

borkdude 2023-09-27T11:07:01.775029Z

curl -L works on that link

borkdude 2023-09-27T11:07:45.328669Z

and then compile with

script/uberjar && script/compile --pgo=default.iprof 

borkdude 2023-09-27T11:09:31.358179Z

I'm going to try this on cirrus only in a branch

lispyclouds 2023-09-27T11:11:09.342909Z

compiling, hasnt complained yet

lispyclouds 2023-09-27T11:11:27.406279Z

CPU on fire

borkdude 2023-09-27T11:12:44.487569Z

on thinkpad?

lispyclouds 2023-09-27T11:12:50.517189Z

yeah

borkdude 2023-09-27T11:13:20.585359Z

guessed so ;)

lispyclouds 2023-09-27T11:14:42.753259Z

compiled

lispyclouds 2023-09-27T11:16:27.198429Z

heh:

bb -e '(time (loop [val 0 cnt 10000000] (if (pos? cnt) (recur (inc val) (dec cnt)) val)))'
"Elapsed time: 769.122283 msecs"
10000000
./bb-pgo -e '(time (loop [val 0 cnt 10000000] (if (pos? cnt) (recur (inc val) (dec cnt)) val)))'
"Elapsed time: 259.723079 msecs"
10000000

borkdude 2023-09-27T11:16:40.141389Z

ooh nice, and sizes?

lispyclouds 2023-09-27T11:16:42.765629Z

we can reuse it

borkdude 2023-09-27T11:17:33.270849Z

(compare pgo to the graalvm21 one without pgo)

lispyclouds 2023-09-27T11:17:41.665119Z

du `which bb`
64508   /usr/local/bin/bb
du ./bb-pgo
61968   ./bb-pgo

lispyclouds 2023-09-27T11:17:51.169359Z

i run bb from master

borkdude 2023-09-27T11:18:00.885739Z

nice, this sounds about right

borkdude 2023-09-27T11:18:10.291399Z

ok, I guess we'll just do the re-use of the pgo then ;)

lispyclouds 2023-09-27T11:18:44.006439Z

its VERY noticeable, the perf difference on my machine

borkdude 2023-09-27T11:18:51.492779Z

as in?

lispyclouds 2023-09-27T11:19:21.671729Z

the pgo one is much faster with the loop, feel wise, not just numbers

borkdude 2023-09-27T11:19:35.733829Z

that isn't scientific ;)

lispyclouds 2023-09-27T11:19:49.556549Z

well, that gives more joy

lispyclouds 2023-09-27T11:20:37.469149Z

this could be done in the gen-ci.clj right? the reuse

borkdude 2023-09-27T11:20:49.773369Z

I guess I could make a repro to upload the iprof file periodically

borkdude 2023-09-27T11:20:52.755069Z

*repo

borkdude 2023-09-27T11:21:28.299289Z

gen-ci would only work for circleci stuff

lispyclouds 2023-09-27T11:21:32.362249Z

yeah

borkdude 2023-09-27T11:21:36.069669Z

I want to not do any extra builds whatsoever

lispyclouds 2023-09-27T11:21:52.834679Z

need to pull from a common place, repo should be okay

lispyclouds 2023-09-27T11:24:01.045589Z

does the pgo beat python even more?

borkdude 2023-09-27T11:24:22.838539Z

tadaaa https://github.com/babashka/pgo-profiles/releases/tag/2023.09.27

borkdude 2023-09-27T11:24:29.398719Z

yes, python is like 850ms or so on my machine

borkdude 2023-09-27T11:24:35.803619Z

see my slides of strangeloop, it's in there

lispyclouds 2023-09-27T11:25:08.195009Z

also we could compare with uclj too πŸ˜›

borkdude 2023-09-27T11:25:53.284959Z

bb is already faster than uclj ;)

πŸ‘ 1
borkdude 2023-09-27T11:26:04.732479Z

in most cases

borkdude 2023-09-27T11:26:11.490189Z

but of course, could always try harder ;)

lispyclouds 2023-09-27T11:26:44.485929Z

i'll look into hooking in the iprof file into the CIs

borkdude 2023-09-27T11:27:03.188569Z

I'm already on that in a branch

borkdude 2023-09-27T11:27:07.583539Z

called pgo

lispyclouds 2023-09-27T11:27:11.516889Z

nice

borkdude 2023-09-27T11:27:36.291709Z

guess we just make it part of the compile script right?

borkdude 2023-09-27T11:28:20.931019Z

I guess the nix folks are going to not like it perhaps

lispyclouds 2023-09-27T11:28:25.881209Z

yeah, maybe download it externally and supply to the script instead of the script downloading it?

borkdude 2023-09-27T11:28:49.430849Z

or perhaps we could use git deps or so..?

borkdude 2023-09-27T11:29:10.236489Z

or we use pgo only iff there is a pgo file locally

borkdude 2023-09-27T11:30:05.247829Z

and then display a warning if there isn't

lispyclouds 2023-09-27T11:30:19.585469Z

the pattern of compile --pgo=... looks okay right? people will add it when they need to?

lispyclouds 2023-09-27T11:30:41.646619Z

we can add it in our CI

borkdude 2023-09-27T11:30:42.682519Z

yes, so CI adds the arguments, not part of the script

borkdude 2023-09-27T11:30:44.812199Z

makes sense

lispyclouds 2023-09-27T11:30:46.376859Z

yes

borkdude 2023-09-27T11:31:10.166589Z

that's what I also wanted to do for O1 but perhaps O1 is nice enough as a default for people compiling locally

lispyclouds 2023-09-27T11:31:32.029909Z

yeah doesnt change much from whats released

lispyclouds 2023-09-27T11:32:05.272149Z

they would be using Rust or Haskell if they wanted to warm their rooms by default

borkdude 2023-09-27T11:34:53.864939Z

$ ./bb -e '(time (loop [val 0 cnt 10000000] (if (pos? cnt) (recur (inc val) (dec cnt)) val)))'
"Elapsed time: 312.083 msecs"
10000000
from cirrus, works excellently. the only thing I wonder about is Windows, but we'll see :)

borkdude 2023-09-27T11:35:05.409589Z

since perhaps those pgo profiles refer to OS-specific things somewhere

lispyclouds 2023-09-27T11:35:42.300629Z

possibly. interestingly my linux amd64 binary runs faster than the macos aarch64 one?

borkdude 2023-09-27T11:35:51.164819Z

also clojure builds aren't reproducible, class names are using random numbers, but it doesn't really seem to affect things

borkdude 2023-09-27T11:35:53.923429Z

how much faster?

borkdude 2023-09-27T11:36:08.034849Z

oh yes, I seee

borkdude 2023-09-27T11:36:10.287099Z

*see

borkdude 2023-09-27T11:36:13.549199Z

that is very interesting

borkdude 2023-09-27T11:36:18.756069Z

since m1 is generally faster

borkdude 2023-09-27T11:36:34.563079Z

then this is like ... 3x faster than the previous bb on linux amd64 haha

lispyclouds 2023-09-27T11:36:48.813769Z

yeah from an pgo on mac

borkdude 2023-09-27T11:36:53.011159Z

haha

borkdude 2023-09-27T11:36:54.994079Z

wild

lispyclouds 2023-09-27T11:38:49.488549Z

i should really work on the GC stressing thing, wanna see if G1 is nicer

borkdude 2023-09-27T11:39:17.082579Z

yeah, I think there was an xml example once where bb really didn't do well, because of all the laziness + GC

lispyclouds 2023-09-27T11:39:51.903529Z

lemme know of it if you have it handy

borkdude 2023-09-27T11:40:06.834429Z

trying to find it, but I can't

borkdude 2023-09-27T11:40:28.427959Z

having an example where bb does terrible with GC would be good

lispyclouds 2023-09-27T11:40:58.619699Z

yeah ThePrimagen's code to screw with V8's GC should work well i think

borkdude 2023-09-27T11:45:37.397409Z

I guess I could also tune clj-kondo by linting a shitload of code during instrumentation

borkdude 2023-09-27T11:45:44.744939Z

and clojure-lsp...

lispyclouds 2023-09-27T11:47:16.591919Z

bb has been influencing their build pipelines anyways πŸ˜‰

borkdude 2023-09-27T11:48:49.220199Z

ok added the profile to all the builds now: https://github.com/babashka/babashka/tree/pgo

🀟🏾 1
borkdude 2023-09-27T11:58:09.761909Z

btw circle is deprecating their macos x64 gen1 environments by october 2. I moved most of the stuff to gen2 which will be deprecated in january or so, the next step is to just use their aarch mac machines then and use rosetta to build for x64. I've already tested this and works fine

borkdude 2023-09-27T11:58:41.306399Z

the bottom line is that mac x64 hardware is disappearing

borkdude 2023-09-27T11:58:52.891069Z

I wonder if that will affect github actions too, but perhaps they bought their own crap

borkdude 2023-09-27T12:00:32.190219Z

hmm on Windows it says:

Graal compiler: optimization level: 1, target machine: x86-64-v3, PGO: off
 

borkdude 2023-09-27T12:01:02.204749Z

probably because script.bat doesn't pass arguments yet

borkdude 2023-09-27T12:04:54.912649Z

the joys of .bat scripts. perhaps I should finally move those scripts to bb as well :P but no, nostalgia prevails ;)

borkdude 2023-09-27T12:16:09.664719Z

my Windows computer stopped working btw :(

borkdude 2023-09-27T12:16:15.757039Z

a 3k machine, but can't power it up anymore

lread 2023-09-27T12:33:06.022679Z

Maybe it has Covid?

borkdude 2023-09-27T12:34:14.913849Z

it happened before, then it miraculously worked again, and then it didn't again :(

lispyclouds 2023-09-27T12:45:47.376979Z

> the joys of .bat scripts die die, bat bash all die

lispyclouds 2023-09-27T12:48:46.197489Z

maybe we need to target some Windows confs too with bb scripting

πŸ‘ 1
borkdude 2023-09-27T12:59:08.412869Z

To compete with the .NET folks with a weird JVM lisp scripting language? Makes total sense

lispyclouds 2023-09-27T12:59:54.757629Z

Less weird than bat and powershell

lread 2023-09-27T13:09:29.534049Z

Is it a hardware or software issue @borkdude? Can you reinstall Windows?

borkdude 2023-09-27T13:10:08.157199Z

Hardware unfortunately, doesn’t power on

lread 2023-09-27T13:10:43.648369Z

Oh... so you can't even run one of those bootable hardware testers... that sucks!

borkdude 2023-09-27T13:11:25.609599Z

I opened it recently and then it randomly started working again

lread 2023-09-27T13:12:15.457179Z

Loose cable or chip maybe?

borkdude 2023-09-27T13:18:31.682239Z

Yeah something like that probably

borkdude 2023-09-27T13:19:10.512889Z

Does someone know how to scroll to the end of a thread on slack mobile? It’s taking about a minute now

lispyclouds 2023-09-27T13:58:10.429859Z

maybe always go to the Threads menu first instead of the thread directly and then it should be towards the end? hit the answer button there then

borkdude 2023-09-23T11:06:54.421999Z

PR welcome, I'm curious to what effect it has on the binary size. The -O1 setting yielded the best results locally for me. Not sure if I'm immediately merging it, but preparation in a PR / branch seems good.

borkdude 2023-09-23T11:07:33.612839Z

There is a script/bump-graal script, but this only updates a version number. All the urls have changed now though, so this is where the PR would be valuable

πŸ‘πŸΎ 1
lread 2023-09-23T11:39:55.770789Z

Did you find comfort with the perhaps more restrictive Oracle license or are you going to more cautiously stay with the Community Edition?

lread 2023-09-23T11:41:16.701529Z

And lemme know if you want help bumping bb process native test.

borkdude 2023-09-23T11:41:23.601259Z

I had dinner with Thomas Wuerthinger last night and he said it's only limiting when you sell the binary but this has been the case with CE too. No problems

borkdude 2023-09-23T11:41:33.715799Z

@lee sure!

lread 2023-09-23T11:44:17.743519Z

Ah very good to know! What if one were to use bb in a paid service without distributing? Still ok?

borkdude 2023-09-23T11:45:50.719629Z

yes

πŸŽ‰ 1
lispyclouds 2023-09-23T11:46:41.032219Z

Should we try the enterprise one then?

borkdude 2023-09-23T11:46:49.548309Z

Thomas told me "tell me whatever you'll need in GraalVM and we'll get it done" with a smiling face, I had some good laughs with that guy ;)

borkdude 2023-09-23T11:46:53.199879Z

yeah

borkdude 2023-09-23T11:47:50.598029Z

let's just move to Oracle version, then I'll be able to try PGO as well which should make the loop example faster and the binary smaller as well

lispyclouds 2023-09-23T11:48:03.687759Z

And I too made acquaintances with Alina in Oslo too, all set with the graal team now πŸ˜†

borkdude 2023-09-23T11:48:13.155429Z

Ah nice :)

borkdude 2023-09-23T11:49:25.831449Z

Maybe we should visit more Java conferences then. I tried JFall in the Netherlands, but unfortunately their CFP closed a few days before. I should set reminders or so

lispyclouds 2023-09-23T11:50:40.896129Z

Sneaking in bb scripting in a Java/non clojure conf is always appreciated I’ve seen πŸ˜†

lispyclouds 2023-09-23T11:51:10.254729Z

Rather bashing on bash talks/workshops

lread 2023-09-23T11:52:01.463249Z

You two are mega connected! You got swagger! You need bling. To wear some GraalVM chains and rings!

borkdude 2023-09-23T11:52:33.089749Z

One of the keynote speakers here at STL (Julia Evans who makes amazing little comics) did a pretty good job of bashing on bash. I should just refer to that section of her talk in the README of bb when the talk comes out

lispyclouds 2023-09-23T11:52:41.306659Z

As soon as @borkdude designs some for the merch shop

borkdude 2023-09-23T11:52:59.878469Z

Btw, I've got some GraalVM stickers now to hand out to people, I think I'm being assimilated too by Thomas now ;)

lread 2023-09-23T11:53:36.578619Z

Run Thomas, it’s a trap!

borkdude 2023-09-23T11:54:15.096239Z

trap is also something in bash

borkdude 2023-09-23T11:54:27.274149Z

(https://www.linuxjournal.com/content/bash-trap-command)

lread 2023-09-23T11:54:55.661139Z

Oh you are in deep, sir!

lread 2023-09-23T12:04:37.842159Z

Hey, Oracle should def sponsor your work @borkdude, you could tell Thomas, he could make it happen maybe.

borkdude 2023-09-23T12:08:59.529119Z

I wouldn't be against that but Oracle has provided me with GraalVM native-image which is already a pretty awesome thing to give away :)

lread 2023-09-23T12:50:32.712929Z

It is a win-win.

lispyclouds 2023-09-23T13:51:38.023719Z

according to https://www.graalvm.org/downloads/ and https://github.com/graalvm/graalvm-ce-builds/releases/tag/jdk-21.0.0 GraalVM doesnt seem to have its "own version" now? its just jdk21?

lispyclouds 2023-09-23T13:52:22.260599Z

am i understanding it right? and we dont need the GRAALVM_VERSION var any more?

lispyclouds 2023-09-23T13:52:57.087229Z

or the version now is jdk-21.0.0?

lread 2023-09-23T14:01:34.724559Z

Yes, the version now matches the JDK. I described this a bit here: https://github.com/clj-easy/graal-docs#graalvm-version-scheme-change

πŸ‘πŸΎ 1
lread 2023-09-23T14:04:59.235679Z

I think they still use the old version scheme for their jars though (what else could they do, right?). Example: https://mvnrepository.com/artifact/org.graalvm.sdk/graal-sdk

lread 2023-09-23T14:05:24.727359Z

I see why they did what they did, but it is all a bit awkward for users to adapt.

lispyclouds 2023-09-23T14:06:15.411669Z

well i'll have to wrangle some bash which downloads it, one time headache

borkdude 2023-09-23T14:22:11.555959Z

I would say the new env var should contain at least 21

lread 2023-09-23T14:45:15.505089Z

I did some https://github.com/babashka/process/blob/d24961a8b101ee1a95569256c9ddb260d0f9bb36/.circleci/config.yml#L105. Made use of the https://github.com/babashka/process/blob/d24961a8b101ee1a95569256c9ddb260d0f9bb36/script/circle_ci.clj#L17-L27. Not sure if that is of any use to you. Have not updated to GraalVM JDK 21 yet, will do so soon.

lispyclouds 2023-09-23T16:13:08.266739Z

https://github.com/babashka/babashka/pull/1624

lispyclouds 2023-09-23T16:13:59.181069Z

had to move some bits around, lemme know if there is a better way. also not sure if the windows one has better way to extract

lispyclouds 2023-09-23T16:43:18.315099Z

does this mean we dont need cirrus? https://discuss.circleci.com/t/macos-intel-support-deprecation-in-january-2024/48718

borkdude 2023-09-23T16:49:50.770989Z

Yeah probably

borkdude 2023-09-23T16:50:38.149459Z

But I’m going to actually use circles Mac aarch to build for x64 via Rosetta, as described in the issue

borkdude 2023-09-23T16:51:18.811879Z

No need to change cirrus imo, never had any problems so far with them. If it works don’t touch it

lispyclouds 2023-09-23T16:52:06.323549Z

better cond seems to have an interesting error:

Testing better-cond.core-test

Ran 1 tests containing 11 assertions.
0 failures, 0 errors.
Fatal error: Cannot invoke method that has a @CallerSensitiveAdapter without an explicit caller
https://app.circleci.com/pipelines/github/babashka/babashka/6924/workflows/4c7640c4-c3c9-4c6a-ba41-e7c8ef45d6c8/jobs/37208

lispyclouds 2023-09-23T16:52:26.095449Z

or something else is failing, one of the libs?

lispyclouds 2023-09-23T16:56:04.865019Z

borkdude 2023-09-23T16:58:31.344359Z

Doesn’t ring a bell. Does it fail consistently on every OS/arch? I’m about to board a flight

lispyclouds 2023-09-23T16:59:22.664449Z

failed in all, running again now, trying to dig deeper

lispyclouds 2023-09-23T17:00:51.559739Z

i  SP 0x00007fff619a04d0 IP 0x00005607b743617e size=32    com.oracle.svm.core.jdk.VMErrorSubstitutions.shutdown(VMErrorSubstitutions.java:148)
  i  SP 0x00007fff619a04d0 IP 0x00005607b743617e size=32    com.oracle.svm.core.jdk.VMErrorSubstitutions.shouldNotReachHere(VMErrorSubstitutions.java:141)
  A  SP 0x00007fff619a04d0 IP 0x00005607b743617e size=32    com.oracle.svm.core.util.VMError.shouldNotReachHere(VMError.java:90)
  A  SP 0x00007fff619a04f0 IP 0x00005607b73e5c44 size=64    com.oracle.svm.core.reflect.SubstrateMethodAccessor.invoke(SubstrateMethodAccessor.java:112)
  i  SP 0x00007fff619a0530 IP 0x00005607b8e28d7a size=144   java.lang.reflect.Method.invoke(Method.java:580)
  A  SP 0x00007fff619a0530 IP 0x00005607b8e28d7a size=144   sci.impl.Reflector.invokeMatchingMethod(Reflector.java:172)
  i  SP 0x00007fff619a05c0 IP 0x00005607b8e38e4c size=160   sci.impl.interop$invoke_static_method.invokeStatic(interop.cljc:104)
....
something to do with reflection?

borkdude 2023-09-23T17:12:51.351849Z

Could be. Hopefully we’ll be able to reduce it down to something we could report to Graal

lispyclouds 2023-09-23T17:13:32.597559Z

i'll try to repro locally, feels like a Graal hiccup

❀️ 1
lispyclouds 2023-09-23T17:27:12.486559Z

also if a windows user can help: https://ci.appveyor.com/project/borkdude/babashka/builds/48109114 updated visual studio to 2022, min required for Graal 21, not sure of the path

borkdude 2023-09-23T17:28:41.676829Z

Taking off new to New York ✈️

lispyclouds 2023-09-23T17:28:53.399049Z

have fun!

borkdude 2023-09-23T17:29:06.389639Z

To transfer back home actually

lispyclouds 2023-09-23T17:51:15.521049Z

same tests passes on my intel linux machine

borkdude 2023-09-23T17:51:44.691439Z

Cool is it aarch specific you think ?

lispyclouds 2023-09-23T17:52:03.019129Z

fails in all the os+arch on circle

borkdude 2023-09-23T17:52:20.542299Z

You did use the 21 version right?

lispyclouds 2023-09-23T17:53:32.283979Z

it might have used my system bb, checking properly

lispyclouds 2023-09-23T17:54:11.410929Z

./bb -e '(System/getProperty "java.version")' 
"21"

πŸ‘ 1
lispyclouds 2023-09-23T17:56:23.967909Z

yes failed now

lispyclouds 2023-09-23T18:27:49.147499Z

Tests from these libs causes the issue: β€’ meander β€’ cli matic β€’ hasch β€’ binf β€’ aviso/pretty β€’ portal β€’ cljc.java-time β€’ malli β€’ clj-yaml β€’ prismatic/schema β€’ core-match finding more...

lispyclouds 2023-09-23T18:28:43.206179Z

if you remove the tests progresses. all have the same Cannot invoke method that has a @CallerSensitiveAdapter without an explicit caller feels like some code here triggers some reflection path in sci?

lispyclouds 2023-09-23T18:35:16.311349Z

added all of this to the PR

lread 2023-09-24T00:04:09.174809Z

FWIW, all went very smoothly for babashka/process bump: https://github.com/babashka/process/pull/145

borkdude 2023-09-24T05:58:00.528429Z

I'll take a look probably in a few days after recovering from the amazing Strange Loop

lispyclouds 2023-09-26T17:40:23.049579Z

im getting a bit confused by the merge conflicts when merging master, some help would be nice @borkdude

lispyclouds 2023-09-26T17:40:45.293439Z

the sci submodule things specially

borkdude 2023-09-26T17:40:51.580869Z

already done

lispyclouds 2023-09-26T17:41:03.513399Z

awesome!

lispyclouds 2023-09-26T17:41:32.261759Z

i wanna do one more change in the Dockerfile

borkdude 2023-09-26T17:45:55.301629Z

I added a comment about getting rid of the version in the directory

borkdude 2023-09-26T17:46:08.274149Z

I wonder if we could get stuck with older graalvm versions this way accidentally?

borkdude 2023-09-26T17:46:41.997609Z

perhaps not, just double checking :)

borkdude 2023-09-26T18:01:53.039299Z

I'm trying to ask how to get a more specific version of graalvm via a link in their slack now

borkdude 2023-09-26T18:02:12.012709Z

I'd also be fine to hardcode 21+35.1 for now, and we can change it manually once it changes

lispyclouds 2023-09-26T18:02:28.263329Z

yeah saw it now, it seems comparing SHAs is an option according to their docs

borkdude 2023-09-26T18:02:31.681909Z

since I expected these version number to only change every 6 months and at least I'm aware that something changes

lispyclouds 2023-09-26T18:03:32.160679Z

the 35.1 could change more frequently than 6 months i think

lispyclouds 2023-09-26T18:03:55.709579Z

thats probably some security patches etc

lispyclouds 2023-09-26T18:04:47.121399Z

lemme try to factor in this version

borkdude 2023-09-26T18:05:10.098819Z

I have tried manually but I couldn't get it to work

borkdude 2023-09-26T18:05:19.862089Z

e.g.: curl -vLO

lispyclouds 2023-09-26T18:05:41.585049Z

yeah dont think its there

lispyclouds 2023-09-26T18:06:43.699599Z

should we say GRAALVM_VERSION=21+35.1 when downloading? making the URL from this is harder

borkdude 2023-09-26T18:07:04.359179Z

?

lispyclouds 2023-09-26T18:07:48.564629Z

what is the GRAALVM_VERSION var that we should set in the CI? i use that to make the download url

borkdude 2023-09-26T18:08:09.555999Z

It used to be 22.3.1

borkdude 2023-09-26T18:08:19.696629Z

but they moved to a new version scheme

lispyclouds 2023-09-26T18:08:23.384529Z

yeah and it lined up with download url too

borkdude 2023-09-26T18:08:23.886929Z

to align with openjdk

lispyclouds 2023-09-26T18:09:11.676969Z

this different version inside the tar is complicating it. i could call it something and hardcode it somewhere

borkdude 2023-09-26T18:09:19.185819Z

those graalvm people are in an inside conference though (I was invited for it, but I suspected something like covid would happen)

borkdude 2023-09-26T18:09:25.050259Z

so they won't reply until Thursday or so

lispyclouds 2023-09-26T18:09:55.951809Z

right, lemme put something together in the PR

borkdude 2023-09-26T18:10:23.989979Z

this is their example URL for a more specific version:

This is for java, not graalvm

borkdude 2023-09-26T18:10:59.311989Z

so I'd expect curl -vLO or so to work

borkdude 2023-09-26T18:12:39.975899Z

but it doesn't

lispyclouds 2023-09-26T18:13:31.407299Z

yeah was anticipating this and thought its either crappy scripts or some loss of precision

lispyclouds 2023-09-26T18:14:29.749389Z

if there is some endpoint to query the specific version, could be useful too

borkdude 2023-09-26T18:14:56.803109Z

I have bad experiences with upgrading to newer versions of graalvm so I don't trust this to happen automatically

borkdude 2023-09-26T18:15:07.092259Z

this is why I want the specific version

lispyclouds 2023-09-26T18:16:13.619359Z

set two vars GRAALVM_MAJOR_VERSION and MINOR_VERSION? use them to make the URL and untarring?

borkdude 2023-09-26T18:16:28.072199Z

we first should know what the url is, I still dont' knwo

lispyclouds 2023-09-26T18:17:05.632159Z

well i dont see anything more specific than the ones we found, can wait til they answer back too

borkdude 2023-09-26T18:17:36.997919Z

ok

borkdude 2023-09-26T18:17:42.412679Z

let's wait

borkdude 2023-09-26T18:23:11.148239Z

https://github.com/oracle/graal/discussions/7498

lispyclouds 2023-09-26T18:27:24.549829Z

interestingly https://download.oracle.com/java/21/latest/jdk-21_linux-x64_bin.tar.gz doenst have that subversion when untarring

borkdude 2023-09-26T18:29:18.912109Z

another idea, we could reverse engineer the graalvm action to see what its constructing

lispyclouds 2023-09-26T18:30:52.638019Z

looking at it

lread 2023-09-26T18:30:57.317679Z

Is the +35 something that ever gets bumped independently? This downloads: https://download.oracle.com/graalvm/21/archive/graalvm-jdk-21_linux-x64_bin.tar.gz

lispyclouds 2023-09-26T18:32:04.751049Z

yeah my feeling is with something > 35 the URL could be the same

lread 2023-09-26T18:32:39.021839Z

Archive implies a static thing, but I guess we don't know until we know.

borkdude 2023-09-26T18:33:08.123209Z

21 is definitely not a full number so they imply 21.latest

borkdude 2023-09-26T18:34:10.073549Z

I can't find any useful info in that javascript code

lispyclouds 2023-09-26T18:34:44.612619Z

they seem to be looking at git tags

lispyclouds 2023-09-26T18:35:32.768739Z

https://github.com/oracle/graal/tags

lread 2023-09-26T18:35:35.696269Z

They oddly did not specify minor and patch for this 21 release, which makes it all the more confusing.

borkdude 2023-09-26T18:35:50.233879Z

@rahul080327 those tags are for CE

lispyclouds 2023-09-26T18:36:05.987939Z

there is vm and vm-ce

borkdude 2023-09-26T18:36:12.837389Z

21 is the JDK version number, they aligned with OpenJDK versioning which releases every 6 months

lispyclouds 2023-09-26T18:36:12.963269Z

not sure if that matters?

borkdude 2023-09-26T18:36:31.658139Z

those tags are for CE and EE, not relevant here since we are upgrading to Oracle GraalVM which is neither CE or EE

lispyclouds 2023-09-26T18:36:41.207069Z

ah

borkdude 2023-09-26T18:37:27.321639Z

unfortunately we're redirected to some oracle download url and we can't inspect what lives on that server

lispyclouds 2023-09-26T18:38:26.487439Z

i thought EE was the Oracle one? otherwise we cant use the official action to install the oracle one?

lispyclouds 2023-09-26T18:38:52.711299Z

the readme links to the oracle one from EE

borkdude 2023-09-26T18:39:01.133539Z

no, it isn't. EE used to be the commercial version, Oracle GraalVM is not EE

borkdude 2023-09-26T18:39:35.246269Z

you cannot use EE in production without paying

borkdude 2023-09-26T18:39:39.655149Z

so let's not go there

lispyclouds 2023-09-26T18:39:43.662029Z

right

borkdude 2023-09-26T18:41:15.401219Z

the builds are failing with the graalvm21 branch btw

borkdude 2023-09-26T18:42:03.456789Z

oh it's that process thing

borkdude 2023-09-26T18:42:05.318419Z

let me fix that

lispyclouds 2023-09-26T18:42:07.665739Z

ah the process submodule updates isnt there

borkdude 2023-09-26T18:43:50.875229Z

pushed

borkdude 2023-09-26T18:45:02.264849Z

I can finally fix this issue too now with that new SCI feature:

./bb -e '(Thread/sleep (/ 1 2))'
----- Error --------------------------------------------------------------------
Type:     java.lang.IllegalArgumentException
Message:  No matching method sleep found taking 1 args
Location: <expr>:1:1

----- Context ------------------------------------------------------------------
1: (Thread/sleep (/ 1 2))
   ^--- No matching method sleep found taking 1 args

πŸ‘πŸΎ 1
borkdude 2023-09-26T18:45:27.141719Z

https://github.com/babashka/babashka/issues/1513

lispyclouds 2023-09-26T18:50:00.766949Z

the seem to ignore all the dir nesting https://github.com/graalvm/setup-graalvm/blob/main/src/utils.ts#L87C21-L87C21

borkdude 2023-09-26T18:53:51.321599Z

yay it works:

borkdude@m1 ~/dev/babashka (issue-1513*) $ ./bb -e '(Thread/sleep (/ 1 2))'
borkdude@m1 ~/dev/babashka (issue-1513*) $ ./bb -e '(Thread/sleep (/ 1 2) 234)'
borkdude@m1 ~/dev/babashka (issue-1513*) $ ./bb -e '(Thread/sleep (/ 1 2) (/ 1 234))'
borkdude@m1 ~/dev/babashka (issue-1513*) $ ./bb -e '(Thread/sleep (java.time.Duration/ofSeconds 1))'

πŸŽ‰ 2
borkdude 2023-09-26T19:16:57.294419Z

@lee remember that issue we had with etaoin and Thread/sleep + bb? it's now properly solved :) (see issue 1513 where there's a reference to etaoin)

πŸŽ‰ 1
lread 2023-09-26T19:39:04.627939Z

Even with Covid, you remain productive! simple_smile

1