Expand description
Rust bindings to Lean 4’s C API
Functions and comments manually translated from those in the lean.h
header provided with Lean 4
Re-exports
pub use array::*;
pub use closure::*;
pub use constructor::*;
pub use dbg::*;
pub use external::*;
pub use fixpoint::*;
pub use init::*;
pub use int::*;
pub use io::*;
pub use nat::*;
pub use primitive::*;
pub use sarray::*;
pub use string::*;
pub use task::*;
pub use thunk::*;
Modules
Closures
Constructor objects
Debugging helper functions
External objects
Fixpoint
Utilities for initializing Lean’s runtime
Integers
IO Helper functions
Natural numbers
Primitive operations
Array of scalars
Strings
Tasks
Thunks
Structs
Array arrays
Lean object header.
Scalar arrays
Object of type Task _
. The lifetime of a lean_task
object can be represented as a state machine with atomic
state transitions.
Data required for executing a Lean task. It is released as soon as the task terminates even if the task object itself is still referenced.
Constants
Functions
Box a usize
into a lean_object
Just free memory
Whether an object is reference counted
Whether an object is multi-threaded
Whether this lean object is a scalar
Whether an object is single-threaded
The object size may be slightly bigger for constructor objects.
The runtime does not track the size of the scalar size area.
All constructor objects are “small”, and allocated into pages.
We retrieve their size by accessing the page header. The size of
small objects is a multiple of LEAN_OBJECT_SIZE_DELTA
Remark: we don’t need a reference counter for objects that are not stored in the heap. Thus, we use the area to store the object size for small objects.
lean_set_non_heap_header
for (potentially) big objects such as arrays and strings.
Enable/disable panic messages
Unbox a lean_object
into a usize
Perform a relaxed load of the reference counter of o
, which must be a pointer into a valid lean_object
Type Definitions
Borrowed object argument
Borrowed object result
Standard object argument
Standard object result
Unique (aka non shared) object argument