User visible changes in mruby3.2 from mruby3.1
The language
- Now
a::B = cshould evaluateathenc. - Anonymous arguments
*,**,&can be passed for forwarding. - Multi-precision integer is available now via
mruby-bigintgem.
mruby VM and bytecode
OP_ARYDUPwas renamed toOP_ARYSPLAT. The instruction name was changed but instruction number and basic behavior have not changed (except thatARYDUP nilmakes[]).
Tools
mruby
-bonly specifies the script is the binary. The files loaded by-rare not affected by the option.mrubynow loads complied binary if the suffix is.mrb.
mrbc
- Add
--no-optimizeoption to disable optimization.
mrbgems
mruby-class-ext
- Add
Class#subclassesmethod. - Add
Module#undefined_instance_methodsmethod.
New bundled gems
- mruby-errno from https://github.com/iij/mruby-errno.git
- mruby-set from https://github.com/yui-knk/mruby-set.git
- mruby-dir from https://github.com/iij/mruby-dir.git
- mruby-data
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_keepparameter is given as 0. - If the number of variables in
irepto 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_contextpointer parameter, or themrbc_contextpointer parameter is set toNULL. - If the number of variables held in the
mrbc_contextpointer 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.