Skip to content

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

Stars

523 stars

Watchers

18 watching

Forks

Latest commit

 

History

126 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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
✅ 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. requires reflect-config.json
✅ claypoole Claypoole: Threadpool tools for Clojure
✅ upit Very very simple library to initialise your app stack.
✅ zetasketch Sketch data structures like HLL requires reflect-config.json
✅ pg2-core A Fast PostgreSQL Driver For Clojure

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)

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

Stars

523 stars

Watchers

18 watching

Forks

Releases

Packages

Used by

Contributors

Languages