Skip to content

This project contains a set of "hello world" projects to verify which Clojure libraries do actually compile and produce native images under GraalVM.

License

Notifications You must be signed in to change notification settings

kolharsam/graalvm-clojure

 
 

Repository files navigation

Clojure meets GraalVM

This project contains a set of "hello world" projects to verify which Clojure libraries do actually compile and produce native images under GraalVM.

Here the instructions on how to build your own Clojure projects with GraalVM.

Here the list of libraries tested:

Status Library Description Remarks
Clojure core Clojure core
clojure spec Clojure Spec
clojure/tools.logging Logging library
clojure/tools.logging+log4j Logging library
aleph Web server
amazonica+s3 Cloud API wrapper library
cheshire JSON parser/writer
clj-http-lite Web client
clj-sophia A fast RAM-Disk hybrid storage Runtime error/JNA
clj-uuid RFC4122 Unique Identifiers for Clojure No objects in namespaced uuids
clostache {{ mustache }} for Clojure
cognitect/aws-api+s3 Cloud API library Buildtime error
component Managing lifecycle and dependencies of software
datascript Immutable database and Datalog query engine
⚠️ fastmath Fast and primitive math and stats library See README
hiccup Fast library for rendering HTML in Clojure
http-kit Web server Web client ❌
monger An idiomatic Clojure MongoDB driver with sane defaults
next.jdbc + honeysql Database driver and SQL-in-Clojure
⚠️ nippy Clojure serialization/deserialization library Can't serialize exceptions
ring/jetty Web server
safely Circuit breaker
secure-random SecureRandom initialization
system Layer on top of components Buildtime error, see Readme

More libraries to come (PRs are welcome).

Interesting GraalVM documentation to build native-images:

How to contribute

If you wish to add a library and contribute with a PR please follow these steps:

  1. Fork the project
  2. use the sample-project as a template. cp -r sample-project my-library
  3. add the library to the project.clj and the native-image parameters used
  4. amend the my-library/src/simple/main.clj to use the library
  5. amend the my-library/README.md with the info you discovered.
  6. Make a PR with your findings and "Thank you" in advance.

License

Copyright © 2019-2020 Bruno Bonacci

Distributed under the Apache License v 2.0 (http://www.apache.org/licenses/LICENSE-2.0)

About

This project contains a set of "hello world" projects to verify which Clojure libraries do actually compile and produce native images under GraalVM.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Clojure 94.7%
  • Shell 5.3%