Skip to content

Latest commit

 

History

History
79 lines (55 loc) · 3.21 KB

mruby3.2.md

File metadata and controls

79 lines (55 loc) · 3.21 KB

User visible changes in mruby3.2 from mruby3.1

The language

  • Now a::B = c should evaluate a then c.
  • Anonymous arguments *, **, & can be passed for forwarding.
  • Multi-precision integer is available now via mruby-bigint gem.

mruby VM and bytecode

  • OP_ARYDUP was renamed to OP_ARYSPLAT. The instruction name was changed but instruction number and basic behavior have not changed (except that ARYDUP nil makes []).

Tools

mruby

  • -b only specifies the script is the binary. The files loaded by -r are not affected by the option.
  • mruby now loads complied binary if the suffix is .mrb.

mrbc

  • Add --no-optimize option to disable optimization.

mrbgems

mruby-class-ext

  • Add Class#subclasses method.
  • Add Module#undefined_instance_methods method.

New bundled gems

Breaking Changes

mrb_vm_run() may detach top-level local variables referenced from blocks

When the mrb_vm_run() function (including mrb_top_run()) is called, the previous top-level local variables referenced from blocks is detached under either of the following conditions.

  • If the stack_keep parameter is given as 0.
  • If the number of variables in irep to be executed is less than the number of previous top-level local variables.

This change also affects API functions such as mrb_load_string() and mrb_load_file(). The conditions under which the previous top-level local variables referenced from blocks is detached in these functions are as follows:

  • If the function has no mrbc_context pointer parameter, or the mrbc_context pointer parameter is set to NULL.
  • If the number of variables held in the mrbc_context pointer is less than the number of previous top-level local variables.

Intentional reliance on previous behavior may cause compatibility problems in your application.

CVEs

Following CVEs are fixed.