agilecreativity / graalvm-clojure

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

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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
cprop Configuration/property management
datascript Immutable database and Datalog query engine
⚠️ fastmath Fast and primitive math and stats library See README
fire A lightweight clojure client for Firebase based using the REST API.
hiccup Fast library for rendering HTML in Clojure
http-kit Web server and server
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
selmer A fast, Django inspired template system for Clojure.
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.

License:Apache License 2.0


Languages

Language:Clojure 94.8%Language:Shell 5.2%