# mojoler v0.1.0 - Table of Contents

> Mojo NIFs for OTP 28. Generated ABI, checked terms, resources, dirty schedulers, and a Mix compiler. Mojo 1.1.0 is required at build time and is not vendored.

## Pages

- [Mojoler](readme.md)
- [Glossary](glossary.md)
- [Decisions](decisions.md)
- [Evidence ledger](evidence-ledger.md)
- [Direct Mojo proof](direct_mojo_proof.md)

- Guides
  - [Quickstart](quickstart.md)
  - [Value ownership and value lifecycles](ownership.md)
  - [API](api.md)
  - [Runtime packaging](runtime.md)
  - [Compatibility](compatibility.md)
  - [Mojoler tutorial](tutorial.md)

- Stage 0
  - [00 — Environment and sources](00-environment-and-sources.md)
  - [01 — Research questions](01-research-questions.md)
  - [02 — Mojo language and compiler](02-mojo-language-and-compiler.md)
  - [03 — Mojo FFI and the C ABI](03-mojo-ffi-and-abi.md)
  - [04 — BEAM NIF internals](04-beam-nif-internals.md)
  - [05 — OTP ABI map for erts 16.2](05-otp-abi-map.md)
  - [06 — Mojo meets the OTP ABI](06-mojo-meets-otp-abi.md)
  - [07 — Memory and lifetime](07-memory-and-lifetime.md)
  - [08 — Schedulers and the Mojo runtime](08-schedulers-and-runtime.md)
  - [09 — Feasibility report](09-feasibility-report.md)

- Curriculum
  - [Unit 1 — From Stage 0 to a library](01-from-stage-0.md)
  - [Unit 2 — Mojo language essentials](02-mojo-essentials.md)
  - [Unit 3 — Mojo compiler pipeline](03-compiler-pipeline.md)
  - [Unit 4 — ABI and layout](04-abi-and-layout.md)
  - [Unit 5 — Dynamic linking](05-dynamic-linking.md)
  - [Unit 6 — BEAM internals for NIF authors](06-beam-internals.md)
  - [Unit 7 — OTP ABI automation](07-otp-abi-automation.md)
  - [Unit 8 — Safe conversion design](08-safe-conversion.md)
  - [Unit 9 — Memory across runtimes](09-memory-across-runtimes.md)
  - [Unit 10 — Resources and finalizers](10-resources-and-finalizers.md)
  - [Unit 11 — Binary ownership](11-binary-ownership.md)
  - [Unit 12 — Scheduling](12-scheduling.md)
  - [Unit 13 — Mojo runtime and threads](13-runtime-and-threads.md)
  - [Unit 14 — Mix integration](14-mix-integration.md)
  - [Unit 15 — DSL and code generation](15-dsl.md)
  - [Unit 16 — Debugging native failures](16-debugging.md)
  - [Unit 17 — Performance engineering](17-performance.md)
  - [Unit 18 — GPU internals and ownership](18-gpu.md)
  - [Unit 19 — CI and compatibility](19-ci.md)
  - [Unit 20 — Design comparison and capstone](20-capstone.md)

- Stages
  - [Stage report](report.md)
  - [Stage 1 — ABI foundation](s1.md)
  - [Stage 10 — Tutorial and release candidate](s10.md)
  - [Stage 2 — Conversions](s2.md)
  - [Stage 3 — Ownership](s3.md)
  - [Stage 4 — Schedulers](s4.md)
  - [Stage 5 — Mix](s5.md)
  - [Stage 6 — DSL](s6.md)
  - [Stage 7 — CPU demos](s7.md)
  - [Stage 8 — Apple GPU batch](s8.md)
  - [Stage 9 — CI](s9.md)

## Modules

- [Mojoler.Build](Mojoler.Build.md): Decides whether a native build is required and publishes `.so` files by rename.
- [Mojoler.Dsl.Arith](Mojoler.Dsl.Arith.md): Checked addition generated from `tools/dsl/decls.json`.
- [Mojoler.Dsl.Box](Mojoler.Dsl.Box.md): A generated resource whose step function is `native/examples/box_user.mojo`.
- [Mojoler.Dsl.Bytes](Mojoler.Dsl.Bytes.md): Binary examples generated from `tools/dsl/decls.json`.
- [Mojoler.Nif](Mojoler.Nif.md): Shared path and load bookkeeping.
- [Mojoler.Own](Mojoler.Own.md): Resource ownership for counters, blobs, pins, and retained terms.
- [Mojoler.POC](Mojoler.POC.md): Checked signed 64-bit addition, loaded from `priv/native/libpoc.so`.
- [Mojoler.Sched](Mojoler.Sched.md): Scheduler jobs.
- [Mojoler.Shell](Mojoler.Shell.md): Exit check for Mix tasks that run a shell script.
- [Mojoler.Term](Mojoler.Term.md): Checked conversions between Elixir terms and Mojo values.
- [Mojoler.Twice](Mojoler.Twice.md): Checked doubling of a signed 64-bit integer, loaded from `priv/native/libtwice.so`.

## Mix Tasks

- [mix compile.mojoler](Mix.Tasks.Compile.Mojoler.md): Builds the Mojo NIFs into `priv/native`.
- [mix mojoler.abi](Mix.Tasks.Mojoler.Abi.md): Runs `scripts/check-abi.sh`.
- [mix mojoler.doctor](Mix.Tasks.Mojoler.Doctor.md): Prints the toolchain check from `scripts/doctor.sh`.
- [mix mojoler.inspect](Mix.Tasks.Mojoler.Inspect.md): Prints `nif_init`, undefined symbols, and dynamic dependencies for one library.

