* Remove `Module`'s `finalize_function` and `finalize_data`. Remove the ability to finalize individiual functions and data objects, and instead just provide a way to finalize everything that's been defined but not yet finalized. This allows SimpleJIT to share an allocation between multiple functions without having to worry about individual functions being finalized and needing to be published without the other functions in the same allocation. Users of the return values of `Module`'s `finalize_function` and `finalize_data` should now use `get_finalized_function` and `get_finalized_data` to obtain these values.
This crate provides module-level functionality, which allow multiple functions and data to be emitted with Cranelift and then linked together.
This crate is structured as an optional layer on top of cranelift-codegen. It provides additional functionality, such as linking, however users that require greater flexibility don't need to use it.
A Module is a collection of functions and data objects that are linked
together. Backend is a trait that defines an interface for backends
that compile modules into various forms. Most users will use one of the
following Backend implementations:
SimpleJITBackend, provided by cranelift-simplejit, which JITs code to memory for direct execution.FaerieBackend, provided by cranelift-faerie, which emits native object files.