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 github.com/iij/mruby-errno.git
-
mruby-set from github.com/yui-knk/mruby-set.git
-
mruby-dir from 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.