This crate provides a set of traits that, when implemented, comprise a complete Ruby interpreter.
alloc with an optional (enabled by default)
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.
Artichoke Core defines traits for the following interpreter capabilities:
ClassRegistry: Define and store class specs for Ruby
CoerceToNumeric: Coerce Ruby values to native numerics (floats and integers).
Debug: Provide debugging and
DefineConstant: Define global, class, and module constants to be arbitrary Ruby
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 or
ModuleRegistry: Define and store module spec for Ruby
Parser: Manipulate the parser state, e.g. setting the current filename.
Prng: An interpreter-level pseudorandom number generator that is the backend for
Regexp: Manipulate [
Regexp][regexp-globals] global state.
ReleaseMetadata: Enable interpreters to describe themselves.
TopSelf: Access to the root execution context.
Warn: Emit warnings.
is one implementation of the
To use all the APIs defined in Artichoke Core, bring the traits into scope by importing the prelude:
All features are enabled by default:
- std: By default,
alloc. Enabling this feature adds several trait methods that depend on
Pathas well as several implementations of
Valuecan be represented in the Artichoke VM.