# Building a JIT: Extreme Laziness - Using LazyReexports to JIT from ASTs

**This tutorial is under active development. It is incomplete and details may
change frequently.** Nonetheless we invite you to try it out as it stands, and
we welcome any feedback.

## Chapter 4 Introduction

Welcome to Chapter 4 of the "Building an ORC-based JIT in LLVM" tutorial. This
chapter introduces custom MaterializationUnits and Layers, and the lazy
reexports API. Together these will be used to replace the CompileOnDemandLayer
from [Chapter 3](BuildingAJIT3.md) with a custom lazy-JITing scheme that JITs
directly from Kaleidoscope ASTs.

**To be done:**

**(1) Describe the drawbacks of JITing from IR (have to compile to IR first,
which reduces the benefits of laziness).**

**(2) Describe CompileCallbackManagers and IndirectStubManagers in detail.**

**(3) Run through the implementation of addFunctionAST.**

## Full Code Listing

Here is the complete code listing for our running example that JITs lazily from
Kaleidoscope ASTS. To build this example, use:

```bash
# Compile
clang++ -g toy.cpp `llvm-config --cxxflags --ldflags --system-libs --libs core orcjit native` -O3 -o toy
# Run
./toy
```

Here is the code:

```{literalinclude} ../../examples/Kaleidoscope/BuildingAJIT/Chapter4/KaleidoscopeJIT.h
:language: c++
```

[Next: Remote-JITing -- Process-isolation and laziness-at-a-distance](https://llvm.org/docs/tutorial/BuildingAJIT5.html)

