graalvm

Discuss GraalVM related topics. Use clojure 1.10.2 or newer for all new projects. Contribute to https://github.com/clj-easy/graal-docs and https://github.com/BrunoBonacci/graalvm-clojure. GraalVM slack: https://www.graalvm.org/slack-invitation/.
Alys Brooks 2021-03-03T03:34:04.053900Z

I believe it's /path/to/graal/Contents/Home/bin/gu

1👍
borkdude 2021-03-03T12:01:53.054300Z

@katox merged, thanks

borkdude 2021-03-03T12:02:12.054700Z

now for your babashka compilation problem: have you solved this too?

katox 2021-03-03T12:02:31.055100Z

no, let's move to a proper forum .)

borkdude 2021-03-03T12:04:39.055300Z

we can do in private.

katox 2021-03-03T12:17:33.055900Z

for the record, the error was cloning the repo without --recursive, thanks!

borkdude 2021-03-03T16:35:43.056700Z

I think all the ingredients for an all native deps.edn / tools.deps CLI are there now: https://github.com/borkdude/tools-deps-native-experiment/tree/shell#shell-branch This + deps.clj = no JVM for dep resolution / downloading, just JVM for REPL / running of apps / bytecode AOT compilation

borkdude 2021-03-03T16:36:36.057300Z

Will wait a bit for the shell approach to appear properly in tools.deps.alpha.

borkdude 2021-03-03T16:38:59.058500Z

What do we win with this? Maybe a bit questionable to go through these hoops, but: - startup time for downloading deps - running this is about as fast with caching of the CLI as it is without, if the deps are already there - could be used in babashka to decouple downloading of scripting deps from a JVM

ghadi 2021-03-03T16:53:23.059Z

what percentage of execution time is startup vs. downloading deps?

borkdude 2021-03-03T16:53:49.059200Z

it depends on how many deps you have

borkdude 2021-03-03T16:53:58.059400Z

and how fast your network is

alexmiller 2021-03-03T16:54:23.059600Z

and how much is in your cache :)

borkdude 2021-03-03T16:54:34.059900Z

I will do a small test locally with only medley

borkdude 2021-03-03T16:57:43.060100Z

300ms vs 3000ms

borkdude 2021-03-03T16:57:54.060400Z

(with medley and .cpcache removed from local caches)

borkdude 2021-03-03T17:00:23.061600Z

The comparison wasn't entirely fair because I ran clojure in my tools-deps-native project which had more deps so calculating the classpath would take more time. Better comparison:

$ time ./tools-deps-native '{:deps {medley/medley {:mvn/version "1.3.0"}}}'
Downloading: medley/medley/1.3.0/medley-1.3.0.pom from clojars
Downloading: medley/medley/1.3.0/medley-1.3.0.jar from clojars
"/Users/borkdude/.m2/repository/medley/medley/1.3.0/medley-1.3.0.jar:/Users/borkdude/.m2/repository/org/clojure/clojure/1.9.0/clojure-1.9.0.jar:/Users/borkdude/.m2/repository/org/clojure/core.specs.alpha/0.1.24/core.specs.alpha-0.1.24.jar:/Users/borkdude/.m2/repository/org/clojure/spec.alpha/0.1.143/spec.alpha-0.1.143.jar"
./tools-deps-native '{:deps {medley/medley {:mvn/version "1.3.0"}}}'   0.05s  user 0.03s system 27% cpu 0.300 total
$ (cd /tmp; time clojure -Spath -Sdeps '{:deps {medley/medley {:mvn/version "1.3.0"}}}')
Downloading: medley/medley/1.3.0/medley-1.3.0.pom from clojars
Downloading: medley/medley/1.3.0/medley-1.3.0.jar from clojars
src:/Users/borkdude/.m2/repository/medley/medley/1.3.0/medley-1.3.0.jar:/Users/borkdude/.m2/repository/org/clojure/clojure/1.10.1/clojure-1.10.1.jar:/Users/borkdude/.m2/repository/org/clojure/core.specs.alpha/0.2.44/core.specs.alpha-0.2.44.jar:/Users/borkdude/.m2/repository/org/clojure/spec.alpha/0.2.176/spec.alpha-0.2.176.jar
clojure -Spath -Sdeps '{:deps {medley/medley {:mvn/version "1.3.0"}}}'   7.88s  user 0.40s system 336% cpu 2.464 total

borkdude 2021-03-03T23:03:38.061900Z

Update regarding tools-deps-native. The GraalVM problems have now vanished due to getting rid of Jsch.

borkdude 2021-03-03T23:12:20.062800Z

The startup time + downloading medley with clojure at 1.10.2.801 (which doesn't use JSch anymore) also seems to have improved a little, now down to 2s compared to 2.5s above