Skip to content

Latest commit

 

History

History
89 lines (72 loc) · 10.1 KB

README.md

File metadata and controls

89 lines (72 loc) · 10.1 KB

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
asami Asami DB
aws-api+s3 Cognitect AWS client library
buffy Buffy, The Byte Buffer Slayer
carmine Redis client and message queue for Clojure
cheshire JSON parser/writer
cli4clj Interactive Command Line Interfaces (CLIs) for Clojure Applications
cljfmt Source Formatter
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
clara-rules A Clojure forward-chaining rules engine Using AOT compiled session
clostache {{ mustache }} for Clojure
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
integrant Alternative to mount, component etc.
lacinia A GraphQL server implementation in pure Clojure
loom A Graph manipulation and computation library.
monger An idiomatic Clojure MongoDB driver with sane defaults
μ/log Event logging system
next.jdbc + honeysql Database driver and SQL-in-Clojure
nippy Clojure serialization/deserialization library
pp-grid A text-formatting library
ring/jetty Web server
RoaringBitmap Bitset library
safely Circuit breaker
secure-random SecureRandom initialization
selmer A fast, Django inspired template system for Clojure.
system Layer on top of components
tech.ml.dataset A Clojure high performance data processing system
timbre Pure Clojure/Script logging library
pedestal Pedestal is a sturdy and reliable base for services and APIs.
claypoole Claypoole: Threadpool tools for Clojure
upit Very very simple library to initialise your app stack.
::white_check_mark: zetasketch Sketch data structures like HLL requires reflect-config.json

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-2021 Bruno Bonacci

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