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/.
2021-06-15T11:10:38.113200Z

@borkdude: Looking at refl I see that the code to compute the classpath is duplicated in bb.edn and compile.clj - is there a good way to dry that up?

2021-06-15T11:11:19.113600Z

Presumably it should always run with the same aliases etc

2021-06-15T11:12:21.114100Z

I guess compile.clj could read the classpath as its sole command-line-arg… I’ll try that

2021-06-16T14:24:04.134100Z

@borkdude: FYI this ⬆️ does seem to work; it’s a possible improvement I could issue a PR if you’re interested.

borkdude 2021-06-16T14:27:35.134500Z

yeah, I think that makes sense. There is already a classpath task as well in the bb.edn

borkdude 2021-06-16T14:27:47.134700Z

which we should feed into this script probably instead of hardcoding it

2021-06-16T14:28:14.134900Z

funny you should mention that; that’s exactly what I did 🙂

2021-06-16T14:28:50.135100Z

but I did it in my project, not your repo.

raspasov 2021-06-15T18:15:05.114500Z

Wow. That’s neat. Do you see any fundamental limitations at this point?

raspasov 2021-06-15T18:17:46.114700Z

So this is a real native app, like from Xcode or built from the terminal? What does the process of creating a binary from Clojure code look like? (I have no practical experience with graalvm at the moment)

phronmophobic 2021-06-15T18:42:24.115200Z

It's a real native app built with a combination of commands in terminal and xcode. The current process is pretty clunky: 1. Compile java classes for shared library interfaces 2. Build an uber jar 3. run native-image on the uber jar to produce a shared library 4. Build and run from Xcode It would be possible to package all these together, but I'm not sure what that should look like. There are still many limitations, but none of them seem insurmountable if someone was motivated: • Build process is clunky (see above) • Foreign function interface to iOS APIs unimplemented (can be automatically generated from https://developer.apple.com/tutorials/data/documentation/technologies.json?language=objc api) • Long build times • Repl integration lacking. the babashka remote repl does compile and run. There's still some work to integrate it into a comfortable workflow • The current setup only builds for device. It should be possible to build for simulator, but I haven't tried it yet. Building for the simulator might not be strictly necessary, but it might be useful.

kokada 2021-06-15T19:08:14.115400Z

Does it starts fast :thinking_face: ?

phronmophobic 2021-06-15T19:09:55.115800Z

Seems fast to me, but I have no metrics and the todo app I have is pretty dinky.

phronmophobic 2021-06-15T19:10:20.116Z

It would be interesting to compare with a similar app using cljs+react native

phronmophobic 2021-06-15T20:58:22.116900Z

does anyone have xcode experience that wants to try it out?