# Cranelift Documentation ## Miscellaneous documentation pages: - [Cranelift IR](ir.md) Cranelift IR is the data structure that most of the compiler operates on. - [Testing Cranelift](testing.md) This page documents Cranelift's testing frameworks. - [Cranelift compared to LLVM](compare-llvm.md) LLVM and Cranelift have similarities and differences. ## Cranelift crate documentation: - [cranelift](https://docs.rs/cranelift) This is an umbrella crate that re-exports the codegen and frontend crates, to make them easier to use. - [cranelift-codegen](https://docs.rs/cranelift-codegen) This is the core code generator crate. It takes Cranelift IR as input and emits encoded machine instructions, along with symbolic relocations, as output. - [cranelift-codegen-meta](https://docs.rs/cranelift-codegen-meta) This crate contains the meta-language utilities and descriptions used by the code generator. - [cranelift-frontend](https://docs.rs/cranelift-frontend) This crate provides utilities for translating code into Cranelift IR. - [cranelift-native](https://docs.rs/cranelift-native) This crate performs auto-detection of the host, allowing Cranelift to generate code optimized for the machine it's running on. - [cranelift-reader](https://docs.rs/cranelift-reader) This crate translates from Cranelift IR's text format into Cranelift IR in in-memory data structures. - [cranelift-module](https://docs.rs/cranelift-module) This crate manages compiling multiple functions and data objects together. - [cranelift-object](https://docs.rs/cranelift-object) This crate provides a object-based backend for `cranelift-module`, which emits native object files using the [object](https://github.com/gimli-rs/object) library. - [cranelift-jit](https://docs.rs/cranelift-jit) This crate provides a JIT backend for `cranelift-module`, which emits code and data into memory.