mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
9f0950da13
When generating code for pattern matching with potential failures, the success and failure paths both need to pop the matched value. At runtime, only one path executes. But during codegen, both pop() calls affected the compile-time stack pointer (cursp), corrupting register allocation and causing heap-buffer-overflow when accessing symbol tables with wrong indices. Fix by saving/restoring the stack pointer around the branch point, so each path correctly tracks the stack state independently. Co-authored-by: Claude <noreply@anthropic.com>
mruby-compiler
This mrbgem provides the mruby compiler, which is responsible for parsing Ruby code and generating mruby bytecode.
Functionality
The mruby-compiler gem includes the following components:
- Parser: Translates Ruby source code into an abstract syntax tree (AST).
- Code Generator: Traverses the AST to produce executable mruby bytecode.
mrbcexecutable: A command-line tool for compiling.rbfiles into.mrbbytecode files.
Usage
The mrbc (mruby-bin-mrbc) executable will generate compiled binary from Ruby
programs via this gem.
Example of using mrbc:
# Compile a Ruby script to bytecode
bin/mrbc my_script.rb
# Run the compiled script
bin/mruby my_script.mrb