"NOTE:" are changes to be aware of.
mruby now supports pattern matching (case/in) syntax:
- Basic pattern matching with
case/insyntax (dadfac6) - Array pattern matching (ec67fd9)
- Hash pattern matching (2147263)
- Find pattern matching (
[*pre, target, *post]) (6c4d98b) - Pin operator (
^variable) (1de6340) - Guard clauses (
if/unlessconditions) (07ac110) - One-line pattern matching (
expr in pattern) (e76ce24) - Brace-less hash pattern support (e8096bf)
- Array/Hash/String subclasses can now override
[]and[]=methods (#6675) OP_SETIDXoptimization for Array and Hash (ddd8fe1)
- NOTE:
mruby/ext/io.hrenamed tomruby/io.h(2813f79) mrb_time_get_tm()API for accessing struct tm (daaaafe)MRB_OPEN_FAILURE()macro for checking mrb_open result (40b0cb9)mrb_print_error()now handles NULL gracefully (8e50a45)mrb_open()returns mrb_state with exc set on init failure (05ffe0c)mrb_utf8_to_buf()for UTF-8 encoding consolidation (7e28e68)kh_is_end()macro for safe khash iteration (893cc75)
- New Platform: Cosmopolitan Libc (#6681)
- Emscripten: use native WASM exception handling (ca364e3)
- HAL (Hardware Abstraction Layer) for platform abstraction in mruby-io, mruby-socket, mruby-dir, mruby-task (74ca22f)
MRUBY_MIRB_READLINEenvironment variable to control readline library selection (0aafb83)- Inter-gem headers separated from external API headers (#6671)
- mruby-task: Cooperative multitasking with preemptive scheduling (ae0d7a0)
- mruby-benchmark: Benchmarking gem (2f40f3d)
- mruby-strftime: Time#strftime implementation (b31e22f)
- Custom multi-line editor replacing readline (527018c)
- Tab completion support (2f15282)
- Colored output for prompts and errors (b36e0b4)
- Auto-indentation for continuation lines (d52f318)
- TAB auto-indentation (fa74186)
- Auto-dedent for
else,elsif,when,rescue,ensure,in(e901b6d, 814b0cc) - Command history with Up/Down navigation (5f85c1b)
- Line numbers in multi-line prompts (5a3f0e2)
- Enhanced syntax error display (ac39b7d)
- mruby-array-ext: Add
Array#findandArray#rfindmethods - mruby-io: Add
IO#putcandKernel#putc(baff6e6) - mruby-random: Replace xoshiro with PCG for better memory efficiency (f1bab01)
- mruby-compiler: Variable-sized AST nodes for reduced memory usage
- mruby-compiler:
no_return_valuecontext flag for script optimization (613b03a)
- Variable-sized AST nodes for reduced memory consumption (821b989)
- Pattern matching bytecode optimizations (21d4135)
- Optimized masgn to generate literals directly into target registers (fb5d966)
- Optimized splat of literal arrays in args/literals (1cb8d73)
- #6675 Allow Hash#[] to be aliased again
- #6674 Document pattern matching limitations
- #6671 Separate inter-gem headers from external API headers
- #6668 Method#== for aliased methods and comparison bug
- #6666 Regexp literal with encoding
- #6664 Set#flatten memory leak
- #6662 Array set operations use-after-free
- #6660 Regression on struct/array/hash == override with super
- #6659 Super with keyword arguments
- #6657 Exception handling for ||= on class variables
- #6652 Array comparison use-after-realloc
- #6650 Array#fill validation
- #6649 Array#sort! use-after-realloc
- #6648 sprintf buffer overread
- #6647 IO#ungetc buffer overflow
- #6646 IO#gets negative length
- #6645 Set memory leak from double initialization
- #6642 Task segfault when sleep called from C
- #6637 arm64 mingw64 builtin setjmp/longjmp
- #6635, #6636 Colon3 constant lookup
- #6613 const_added hook during bootstrapping
- #6570 instance_eval crash
- #6554 Socket private #initialize
- #6516 Private backquote
- #6515 y.tab.c in repository
- #6509 scope_new nregs initialization
- #6508 Enumerable#sum index
- #6507 tally multi-values
- #6506 Constant lookup in singleton class
- #5531 Hash recursion detection
- #6418 Add
ls-lintwith GitHub Actions - #6492 fix a typo, update specs
- #6493 Fix TYPO in memory.md
- #6495 Remove
MRB_ENDIAN_LOHI()that is no longer in use - #6497 gha: update
build.ymltrywindows-2025image - #6498 Clean up and standardize the pre-commit config
- #6501 Update pre-commit Node.js version to
v22.14.0 LTS - #6502 pre-commit: update prettier to the latest version
- #6503 misc: fix typos
- #6505 mrbgems: fix spelling
- #6510 Fixed class method visibility via
module_function - #6511 Exclude the external project "lrama" from pre-commit
- #6513 mruby 3.4.0 released
- #6517 core/codegen.c: remove unneeded duplicate semicolon
- #6518 Change mrbc_args.flags bit width from 2 to 3
- #6519 Add
tools/lramato.prettierignore - #6520 pre-commit: autoupdate and update node LTS version
- #6521 Add codespell config file
.codespellrc - #6522 gha: label more files
- #6523 add
rand(Range)and unify implementations ofRandom#randandKernel#rand - #6524 Fix Kernel#p when no argument
- #6525 Skip adding empty input to mirb history
- #6526 Add build config for Luckfox Pico embedded SBC
- #6528 misc: fix spelling
- #6530 Revert "class.c (find_visibility_scope): when callinfo returns, *ep == NULL; #6512"
- #6531 Improve method table performance by rehashing at 75% load factor
- #6532 Reverted method table optimizations to prioritize memory savings
- #6533 Fix calling
extendedcallback - #6534 Add descriptive comment to mrb_read_float function
- #6535 Added descriptive comments for functions/macros in src/mempool.c
- #6536 Add descriptive comments to public functions in src/debug.c
- #6537 Updated comments in
cdump.cto remove the@brieftag - #6539 Add descriptive comments for functions in src/load.c
- #6540 Add descriptive comments to MRB_API functions in object.c
- #6541 Add descriptive comments for MRB_API functions in src/array.c
- #6542 Add descriptive comments to MRB_API functions in src/symbol.c
- #6543 Add descriptive comments to several functions in src/dump.c
- #6544 Fix build strings that must be mutable
- #6545 Add descriptive comments for MRB_API functions in src/class.c
- #6548 Add descriptive comments to MRB_API functions in src/etc.c
- #6549 Add descriptive comments to kernel functions
- #6550 Add descriptive comments for MRB_API functions in src/proc.c
- #6551 Add descriptive comments for MRB_API functions in src/state.c
- #6552 Fix: Correct placement of comments in src/variable.c
- #6553 Add descriptive comments for MRB_API functions in src/vm.c
- #6555
mrb_mt_foreach()needs to update the pointer at each loop - #6556
iv_foreach()needs to update the pointer at each loop - #6560 Refactor: Improve Set GC marking and freeing
- #6561 pre-commit updates and fix prettier entrypoint
- #6562 misc: fix spelling word case
- #6563 pre-commit add rubocop with one rule spaces for indentation
- #6564 Remove jumanjihouse pre-commit hooks no longer maintained
- #6565 Rubocop: fix target Ruby version; add two more cops; fix lint error
- #6566 Removed unreferenced variables in
CrossBuild#run_bintest - #6567 Avoid array object creation in
cmd_binmethod in bintest - #6568 mruby-bin-debugger depends on mruby-bin-mrbc in bintest
- #6569 sed s/Mruby/MRuby/g
- #6571 Update limitations.md to add behavior on small hash
- #6572 Add Claude Code GitHub Workflow
- #6573 pre-commit fixes and updates
- #6574 Support initializing structs via keyword arguments
- #6575 Fix typo in file time methods
- #6581 Merge
mrb_obj_iv_inspect()intomrb_obj_inspect() - #6582 Stricter type tag in
mrb_obj_alloc() - #6583 Add fallback to local build_config.rb before using default configuration
- #6585 Fix typo in mruby3.2 docs
- #6586 Makefile: refactor add docs and add command line
helptarget - #6587 Add Set#hash tests
- #6588 Add CodeQL Analysis for GitHub Actions
- #6589 Add pre-commit hook
check-zip-file-is-not-committed - #6591 mruby-eval fix license link in README
- #6593 README: Add Contributors Avatars, Star History, Table of Contents
- #6599 pre-commit: run
markdown-link-check,oxipng,prettiermanually - #6600
dreamcast_shelf build config: update to use KallistiOS wrappers - #6601 fix: skip local build_config.rb when working in MRUBY_ROOT
- #6602 Improved iseq annotations for
newand!= - #6604 pre-commit config updates
- #6607 fix bigint on raspberry pi
- #6610 Extract golden ratio prime into constant
- #6614 Fix uninitialized variable in io_gets causing segmentation fault
- #6617 Fix various minor problems and speed up build
- #6618 Stop generating unnecessary C++ files in mruby-bin-mruby
- #6621 Set up all GEMS before mruby core tasks definition
- #6624 Fixed wrong
MRuby::Build.currentat the top level ofmrbgem.rake - #6628 Revert
File.absolute_pathlogic - #6629 pre-commit update
- #6631 Revert "Rakefile: make the whole thing parallel unless SERIAL=1"
- #6633 Fix a heap-buffer-overflow in str strip! methods
- #6643 Fix crash caused by an incorrect node type check in
codegen_masgn - #6651 Address stack-use-after-return in the mruby bigint implementation
- #6653 Improve HAL-related components for MinGW
- #6655 Preventing Memory Leaks in
Array#__combination_init - #6656 Fix integer overflow in allocation size calculation
- #6663 Added the
kh_is_end()macro function - #6665 Fixed use-after-free with
Set#join - #6670 Arranging VM dispatch macros
- #6673 Adjust broken license links; clean up Markdown
- #6677 gha: run pre-commit with
--color=always - #6678 Put ls-lint and pre-commit in separate workflow files
- #6679 pre-commit autoupdate; update node and prettier
- #6681 Add Cosmopolitan Libc build configuration
- Buffer overflow in bigint uadd (3f2611e)
- Buffer overflow in pack_uu encoding (2993302)
- Buffer overflow in IO#ungetc (01ab2ff)
- Use-after-free in Set operations (a6b55e7)
- Use-after-free in Array set operations (729b84c)
- Use-after-free in Set#join (0e653eb)
- Use-after-realloc in Array#sort! (eb39897)
- Multiple memory leak fixes in bigint, Set, Array, and Task gems