Expand description
This crate provides a set of traits that, when implemented, comprise a complete Ruby interpreter.
artichoke-core is no_std + alloc with an optional (enabled by default)
std feature.
Interpreters implement the traits in Artichoke Core to indicate which capabilities they offer. Defining interpreters by their capabilities allows for interpreter agnostic implementations of Ruby Core and Standard Library.
§Interpreter APIs
Artichoke Core defines traits for the following interpreter capabilities:
ClassRegistry: Define and store class specs for RubyClasses.CoerceToNumeric: Coerce Ruby values to native numerics (floats and integers).Debug: Provide debugging andExceptionmessage support.DefineConstant: Define global, class, and module constants to be arbitrary RubyValues.Eval: Execute Ruby source code on an interpreter from various sources.Globals: Get, set, and unset interpreter-level global variables.Hash: Hashing functions such as building hashers.Intern: Intern byte strings to a cheap to copy and compare symbol type.Io: External I/O APIs, such as writing to the standard output of the current process.LoadSources: Require source code from interpreter disk orFilegems.ModuleRegistry: Define and store module spec for RubyModules.Parser: Manipulate the parser state, e.g. setting the current filename.Prng: An interpreter-level pseudorandom number generator that is the backend forRandom::DEFAULT.Regexp: Manipulate interpreter-globalRegexpstate.ReleaseMetadata: Enable interpreters to describe themselves.TopSelf: Access to the root execution context.Warn: Emit warnings.
Artichoke Core also describes what capabilities a Ruby
Value must have and how to convert between Ruby VM and
Rust types.
§Examples
artichoke-backend
is one implementation of the artichoke-core traits.
To use all the APIs defined in Artichoke Core, bring the traits into scope by importing the prelude:
use artichoke_core::prelude::*;§Crate features
All features are enabled by default:
- std: By default,
artichoke-coreisno_std+alloc. Enabling this feature adds several trait methods that depend onOsStrandPathas well as several implementations ofstd::error::Error.
Modules§
- class_
registry - Define and store class specs on an interpreter.
- coerce_
to_ numeric - Coerce Ruby values to native numerics.
- constant
- Define constants on an interpreter.
- convert
- Convert between Rust and Ruby objects.
- debug
- Routines for debugging and printing exception messages.
- eval
- Run code on an Artichoke interpreter.
- file
- File-backed Rust extensions for the Artichoke VM.
- globals
- Get and set global variables on an interpreter.
- hash
- Build hashers and hash values.
- intern
- Intern
Symbols on an interpreter. - io
- I/O read and write APIs.
- load
- Load Ruby and Rust sources into the VM.
- module_
registry - Define and store module specs on an interpreter.
- parser
- Parse code on an Artichoke interpreter.
- prelude
- A “prelude” for users of the
artichoke-corecrate. - prng
- Interpreter global pseudorandom number generator.
- regexp
- Track
Regexpglobal state. - release_
metadata - Information about an Artichoke build.
- top_
self - Expose the global context, called top self, to the interpreter.
- types
- Ruby and Rust type mappings.
- value
- Types that implement
Valuecan be represented in the Artichoke VM. - warn
- Emit warnings during interpreter execution.