# mruby Documentation ## Getting Started New to mruby? Start here: | Document | Description | | -------------------------------------------- | -------------------------------------- | | [Getting Started](guides/getting-started.md) | Build mruby and run your first program | | [Language Features](guides/language.md) | Ruby subset supported by mruby | | [Limitations](limitations.md) | Behavioral differences from CRuby | ## Guides (for embedders and gem authors) ### Embedding mruby in C | Document | Description | | --------------------------------------- | ------------------------------------------------ | | [C API Reference](guides/capi.md) | Values, classes, methods, error handling, fibers | | [GC Arena](guides/gc-arena-howto.md) | Managing temporary objects in C extensions | | [Linking](guides/link.md) | Linking with `libmruby` | | [Amalgamation](guides/amalgamation.md) | Single-file build for easy integration | | [Precompiled Symbols](guides/symbol.md) | Compile-time symbol allocation | ### Building and Configuring | Document | Description | | ---------------------------------------- | ------------------------------------------- | | [Compilation](guides/compile.md) | Build system, cross-compilation, toolchains | | [Build Configuration](guides/mrbconf.md) | Compile-time macros (`MRB_*` flags) | | [mrbgems](guides/mrbgems.md) | Creating and managing gems | | [Memory](guides/memory.md) | Allocator customization and heap regions | ### Tools | Document | Description | | ----------------------------------------------- | ----------------------------------------------- | | [Debugger](guides/debugger.md) | Using `mrdb` for debugging | | [ROM Method Tables](guides/rom-method-table.md) | Read-only method tables for constrained devices | ### Reference | Document | Description | | ------------------------------------- | ------------------ | | [Directory Structure](guides/hier.md) | Source tree layout | ## Internals (for mruby contributors) Start with [Architecture](internal/architecture.md) for an overview, then dive into the subsystem you need: | Document | Description | | ----------------------------------------- | -------------------------------------------------- | | [Architecture](internal/architecture.md) | Overview of object model, VM, GC, compiler | | [Virtual Machine](internal/vm.md) | Dispatch loop, call frames, method lookup, fibers | | [Garbage Collector](internal/gc.md) | Tri-color marking, write barriers, generational GC | | [Compiler Pipeline](internal/compiler.md) | Parser, code generator, IRep, binary format | | [Opcodes](internal/opcode.md) | VM instruction set reference | | [Value Boxing](internal/boxing.md) | How `mrb_value` encodes types | ## Release Notes - [mruby 3.4](mruby3.4.md) - [mruby 3.3](mruby3.3.md) - [mruby 3.2](mruby3.2.md) - [mruby 3.1](mruby3.1.md) - [mruby 3.0](mruby3.0.md)