Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 6 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,12 @@

Clojuire Real Time (clojure-rt) is a compiler of Clojure programming language.

It is being developed to allow deterministic and fast execution that could allow Clojure to proliferate beyond its
It is being developed to allow deterministic and fast execution that could enable Clojure to proliferate beyond its
original domains of application. It uses LLVM for agressive optimisations, JIT and platform independence.

It aims for C++ interoperability, with the exception model following C++ ABI. Its performance targets are much higher than any known
Clojure implementation.

The compiler strives to be a full implementation of Clojure following the reference java implementation as closely as possible.

The interop part of java has been reimplemented in C to enable the compilation of *.clj part of the clojure source code (this is work in progress).
Expand All @@ -16,7 +19,7 @@ Furthermore, advanced optimisations allowed by llvm enable the compiler to often

Type annotations, commonly used in the java implementation to speed the execution up are not needed in clojure-rt as
all the types are being discovered during programme execution and the resulting JITted representations are optimised to benefit from static type
analysis. To archieve the above result, two tiered JIT compiler designed specifically with CLojure in mind has been developed.
analysis. To archieve the above result, two tiered JIT compiler, designed specifically with Clojure in mind, has been developed.

Currently the compiler is set up in bootstrap mode and consists of two separate parts

Expand Down Expand Up @@ -54,10 +57,7 @@ leaks --atExit -- ./name_of_the_test

./compile.sh fib.clj

Please note that currently the backend prints out a lot of debug information. The primary info it prints is the LLVM code generated for given clojure statements.
Please also note, that currently the programmes compiled bu the frontend have to be *executed* by the frontend to generate the AST. Therefore, running
the naive recursive (fib 42) runs on my machine for 26 seconds (frontend using java implementation) and 0.46 seconds (backend, clojre-rt).
This not only shows how much faster clojure-rt can be, but also how much will be gained when the compiler bootstrapping process will be complete.
Please note that currently the backend prints out a lot of debug information. The primary info it prints is the LLVM code generated for given clojure statements.

## Generating protobuf models

Expand Down
Loading