[][src]Crate artichoke_core

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:

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 of 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:

Modules

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.

intern

Intern Symbols on an interpreter.

io

I/O read and write APIs.

load

Load Ruby and Rust sources into the VM.

parser

Parse code on an Artichoke interpreter.

prelude

A "prelude" for users of the artichoke-core crate.

prng

Interpreter global psuedorandom number generator.

regexp

Track Regexp global 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 Value can be represented in the Artichoke VM.

warn

Emit warnings during interpreter execution.