Expand description
§OxiLean Code Generation
Multi-target code generation backend for the OxiLean theorem prover.
This crate compiles type-checked OxiLean kernel expressions into executable code for a wide range of target platforms. Expressions are first lowered to a Lambda-Case Normal Form (LCNF) intermediate representation, then run through optimization passes, and finally emitted by a target-specific backend.
§Pipeline
- Kernel
Expris lowered viato_lcnfinto thelcnfIR. - Optimization passes in
opt_passesorchestrate dead-code elimination (opt_dce), copy propagation and inlining (opt_copy_prop,opt_inline), join-point analysis (opt_join), reference-count reuse (opt_reuse), monomorphization (opt_specialize), common-subexpression elimination (opt_cse), loop-invariant code motion (opt_licm), vectorization (opt_vectorize), and many more. closure_convertflattens closures.- A backend module emits the target-specific source or bytecode.
§Backends
Native and systems targets include native_backend (Rust), c_backend,
llvm_backend, cranelift_backend, x86_64_backend, riscv_backend,
mlir_backend, spirv_backend, wasm_backend, and
wasm_component_backend. GPU and shader targets include cuda_backend,
metal_backend, glsl_backend, and wgsl_backend. Functional and
proof-assistant targets include agda_backend, coq_backend,
lean4_backend, haskell_backend, idris_backend, ocaml_backend,
fsharp_backend, and dhall_backend. Mainstream language targets
include js_backend, typescript_backend, python_backend,
java_backend, jvm_backend, kotlin_backend, scala_backend,
csharp_backend, cil_backend, go_backend, swift_backend,
dart_backend, ruby_backend, php_backend, lua_backend,
elixir_backend, beam_backend, bash_backend, r_backend,
julia_backend, matlab_backend, fortran_backend, zig_backend,
nix_backend, prolog_backend, chapel_backend, futhark_backend,
chisel_backend, verilog_backend, sql_backend,
graphql_backend, and the smart-contract targets evm_backend,
solidity_backend, and vyper_backend. C FFI headers are produced by
ffi_bridge.
§Usage
See the README for a configuration example using CodegenConfig and
CodegenTarget, and the pipeline module for the end-to-end driver.
Code Generation Backend for Oxilean
This crate provides compilation from Oxilean kernel expressions
Re-exports§
pub use core_types::*;
Modules§
- agda_
backend - Auto-generated module structure
- bash_
backend - Auto-generated module structure
- beam_
backend - Auto-generated module structure
- c_
backend - Auto-generated module structure
- chapel_
backend - Auto-generated module structure
- chisel_
backend - Auto-generated module structure
- cil_
backend - Auto-generated module structure
- closure_
convert - Auto-generated module structure
- coq_
backend - Auto-generated module structure
- core_
types - Auto-generated module structure
- cranelift_
backend - Auto-generated module structure
- csharp_
backend - Auto-generated module structure
- cuda_
backend - Auto-generated module structure
- dart_
backend - Auto-generated module structure
- dhall_
backend - Auto-generated module structure
- elixir_
backend - Auto-generated module structure
- evm_
backend - Auto-generated module structure
- ffi_
bridge - Auto-generated module structure
- fortran_
backend - Auto-generated module structure
- fsharp_
backend - Auto-generated module structure
- futhark_
backend - Auto-generated module structure
- glsl_
backend - Auto-generated module structure
- go_
backend - Auto-generated module structure
- graphql_
backend - Auto-generated module structure
- haskell_
backend - Auto-generated module structure
- idris_
backend - Auto-generated module structure
- ir_
serialize - Serialization and deserialization of the LCNF intermediate representation.
- java_
backend - Auto-generated module structure
- js_
backend - Auto-generated module structure
- julia_
backend - Auto-generated module structure
- jvm_
backend - Auto-generated module structure
- kotlin_
backend - Auto-generated module structure
- lcnf
- Auto-generated module structure
- lean4_
backend - Auto-generated module structure
- llvm_
backend - Auto-generated module structure
- llvm_
ir_ text - Auto-generated module structure
- lua_
backend - Auto-generated module structure
- matlab_
backend - Auto-generated module structure
- metal_
backend - Auto-generated module structure
- mlir_
backend - Auto-generated module structure
- native_
backend - Auto-generated module structure
- nix_
backend - Auto-generated module structure
- ocaml_
backend - Auto-generated module structure
- opt_
algebraic - Algebraic Simplification optimisation pass.
- opt_
alias - Auto-generated module structure
- opt_
beta_ eta - Auto-generated module structure
- opt_
cache - Auto-generated module structure
- opt_
copy_ prop - Auto-generated module structure
- opt_cse
- Auto-generated module structure
- opt_
ctfe - Auto-generated module structure
- opt_dce
- Auto-generated module structure
- opt_
dead_ branch - Auto-generated module structure
- opt_dse
- Auto-generated module structure
- opt_
escape - Auto-generated module structure
- opt_gvn
- Auto-generated module structure
- opt_
inline - Auto-generated module structure
- opt_
join - Auto-generated module structure
- opt_
licm - Auto-generated module structure
- opt_
loop_ unroll - Auto-generated module structure
- opt_
mem2reg - Auto-generated module structure
- opt_
parallel - Auto-generated module structure
- opt_
partial_ eval - Auto-generated module structure
- opt_
passes - Auto-generated module structure
- opt_
peephole - Peephole optimisation pass for the Oxilean code generation pipeline.
- opt_
regalloc - Auto-generated module structure
- opt_
reuse - Auto-generated module structure
- opt_
specialize - Auto-generated module structure
- opt_
specialize_ types - Auto-generated module structure
- opt_
strength - Auto-generated module structure
- opt_
tail_ recursion - Auto-generated module structure
- opt_
vectorize - Auto-generated module structure
- pgo
- Auto-generated module structure
- php_
backend - Auto-generated module structure
- pipeline
- Auto-generated module structure
- prolog_
backend - Auto-generated module structure
- python_
backend - Auto-generated module structure
- r_
backend - Auto-generated module structure
- riscv_
backend - Auto-generated module structure
- ruby_
backend - Auto-generated module structure
- runtime_
codegen - Auto-generated module structure
- rust_
target_ backend - Auto-generated module structure
- scala_
backend - Auto-generated module structure
- solidity_
backend - Auto-generated module structure
- spirv_
backend - Auto-generated module structure
- sql_
backend - Auto-generated module structure
- swift_
backend - Auto-generated module structure
- to_lcnf
- Auto-generated module structure
- typescript_
backend - Auto-generated module structure
- verilog_
backend - Auto-generated module structure
- vyper_
backend - Auto-generated module structure
- wasm_
backend - Auto-generated module structure
- wasm_
component_ backend - Auto-generated module structure
- wgsl_
backend - Auto-generated module structure
- x86_
64_ backend - Auto-generated module structure
- zig_
backend - Auto-generated module structure