4 # User visible changes in `mruby3.4` from `mruby3.3`
6 "**_NOTE_**:" are changes to be aware of.
10 - mruby now supports `private` and `protected` visibility ([b0db0bd](https://github.com/mruby/mruby/commit/b0db0bd))
11 - Maximum length of inlined symbols reduced from 5 to 4 characters to provide space for visibility flags ([6442a01](https://github.com/mruby/mruby/commit/6442a01))
12 - Many methods are made private according to CRuby visibility ([4a0e806](https://github.com/mruby/mruby/commit/4a0e806))
13 - Generate OP_SSEND for `self.method` type calls ([111fe4b](https://github.com/mruby/mruby/commit/111fe4b))
14 - `initialize` method will be always private ([eb8b412](https://github.com/mruby/mruby/commit/eb8b412))
15 - Add new hooks `method_removed`, `method_undefined` ([9c74f6e](https://github.com/mruby/mruby/commit/9c74f6e))
16 - Add new hooks `singleton_method_removed`, `singleton_method_undefined` ([0863c08](https://github.com/mruby/mruby/commit/0863c08))
17 - Updated `OP_DEF` output from codedump ([3a3e877](https://github.com/mruby/mruby/commit/3a3e877))
18 - Better handling of binary strings, e.g. String#b ([b0127f0](https://github.com/mruby/mruby/commit/b0127f0))
19 - Hash `to_s` format has changed ([baeeb5e](https://github.com/mruby/mruby/commit/baeeb5e))
20 - Some encoding related method such as `#force_encoding` ([e47b4ca](https://github.com/mruby/mruby/commit/e47b4ca)), `#b` ([b0127f0](https://github.com/mruby/mruby/commit/b0127f0))
21 - Constant folding for `String#+` ([6687bdd](https://github.com/mruby/mruby/commit/6687bdd))
22 - Remove Float bit-operation ([db8368f](https://github.com/mruby/mruby/commit/db8368f))
23 - use SWAR technique for strlen performance ([cbb31e6](https://github.com/mruby/mruby/commit/cbb31e6))
24 - use merge sort for `Array#sort` ([5bd63d6](https://github.com/mruby/mruby/commit/5bd63d6))
28 - pool.c renamed to mempool.c (and mrb_pool to mrb_mempool) ([49525fa](https://github.com/mruby/mruby/commit/49525fa))
29 - mrb_pool_value renamed to mrb_irep_pool to reduce confusion ([62ef5db](https://github.com/mruby/mruby/commit/62ef5db))
30 - rename BOXNIX_SET_VALUE to BOXNO_SET_VALUE ([#6397](https://github.com/mruby/mruby/pull/6397))
31 - `MRB_FROZEN_P()` is replaced by `mrb_frozen_p()` ([c11d18e](https://github.com/mruby/mruby/commit/c11d18e))
32 - rename `color` to `gc_color` ([0e79f6b](https://github.com/mruby/mruby/commit/0e79f6b), [1e36d76](https://github.com/mruby/mruby/commit/1e36d76))
33 - add `obj->frozen` instead of flags `MRB_SET_FROZEN_FLAG`/`MRB_UNSET_FROZEN_FLAG` ([8276143](https://github.com/mruby/mruby/commit/8276143))
35 # Build & Configuration
37 - New Build Target: `test:run:serial`, `test:run:serial:lib`, `test:run:serial:bin` ([#6423](https://github.com/mruby/mruby/pull/6423))
38 - New Platform: Playstation Portable ([#6022](https://github.com/mruby/mruby/pull/6465))
39 - New Platform: emscripten ([#6487](https://github.com/mruby/mruby/pull/6487))
40 - New Config: no-float (with MRB_NO_FLOAT) ([32200f1](https://github.com/mruby/mruby/commit/32200f1))
44 - **mruby-print**: removed; if you do not use `mruby-io`, mruby use `#print` etc. in the core ([8c8bbd9](https://github.com/mruby/mruby/commit/8c8bbd9))
45 - **mruby-enum-lazy**: Add Enumerable::Lazy#grep_v to mruby-enum-lazy ([#6171](https://github.com/mruby/mruby/pull/6171))
46 - **mruby-io**: Add `level` argument to `File.dirname` ([#6463](https://github.com/mruby/mruby/pull/6463))
47 - **mruby-io**: File.absolute_path? ([#6482](https://github.com/mruby/mruby/pull/6482))
48 - **mruby-io**: File.absolute_path ([96113a2](https://github.com/mruby/mruby/commit/96113a2))
49 - **mruby-toplevel-ext**: top-level public/private/protected moved to the core ([2a876d2](https://github.com/mruby/mruby/commit/2a876d2))
50 - **mruby-metaprog**: method list methods now works according to the visibility ([9229da1](https://github.com/mruby/mruby/commit/9229da1))
51 - **mruby-metaprog**: `public_instance_methods`, `private_instance_methods`, `protected_instance_methods` ([9e3e7b2](https://github.com/mruby/mruby/commit/9e3e7b2))
52 - **mruby-encoding**: MRB_UTF8_STRING turned on automatically with this gem ([74bdae9](https://github.com/mruby/mruby/commit/74bdae9))
56 - [#6173](https://github.com/mruby/mruby/issues/6173) Fails to build with tcc(Tiny C Compiler)
57 - [#6156](https://github.com/mruby/mruby/issues/6156) '/LIBPATH' issue
58 - [#6183](https://github.com/mruby/mruby/issues/6183) ".e".to_f returns NAN
59 - [#6182](https://github.com/mruby/mruby/issues/6182) mrb_read_float() converts "0.3" with a small error compared to strtod()
60 - [#6210](https://github.com/mruby/mruby/issues/6210) Unary minus seems broken
61 - [#6255](https://github.com/mruby/mruby/issues/6255) Wrong number of characters in broken UTF-8 string
62 - [#4038](https://github.com/mruby/mruby/issues/4038) Heap buffer overflow in OP_ENTER
63 - [#6262](https://github.com/mruby/mruby/issues/6262) Unable to define == for objects when using Array#delete
64 - [#6267](https://github.com/mruby/mruby/issues/6267) When MRB_UTF8_STRING is enabled, giving byte characters for String#index and String#split gives wrong results
65 - [#6277](https://github.com/mruby/mruby/issues/6277) MSVC: can't use malloc() in string.c with WIN32_LEAN_AND_MEAN
66 - [#6240](https://github.com/mruby/mruby/issues/6240) Differentiate between lib and lib64 in the build settings.
67 - [#6304](https://github.com/mruby/mruby/issues/6304) Calling method_missing with only Kwargs passes arguments incorrectly
68 - [#6317](https://github.com/mruby/mruby/issues/6317) mrb_gc_register() may cause GC and collect the object being protected
69 - [#6307](https://github.com/mruby/mruby/issues/6307) Planned change patch for mrb_vm_exec()
70 - [#6298](https://github.com/mruby/mruby/issues/6298) foo :bar {} is legal in mruby?
71 - [#6326](https://github.com/mruby/mruby/issues/6326) Detect “Use-after-free” with address sanitizer
72 - [#5358](https://github.com/mruby/mruby/issues/5358) static warning from getpwnam
73 - [#6339](https://github.com/mruby/mruby/issues/6339) mrb_ary_delete() may refer to an invalid address (use-after-free)
74 - [#6346](https://github.com/mruby/mruby/issues/6346) Block kwargs are passed as last positional arg when using yield
75 - [#6365](https://github.com/mruby/mruby/issues/6365) powl() not available when compiling for Dreamcast
76 - [#6369](https://github.com/mruby/mruby/issues/6369) 100x Performance Regression from 3.1
77 - [#6270](https://github.com/mruby/mruby/issues/6270) NODE_ZSUPER from deeply nested blocks will result in a truncated digits for block index in OP_ARGARY
78 - [#6297](https://github.com/mruby/mruby/issues/6297) Assigning to a block variable changes the actual block (thus affecting block_given? and yield)
79 - [#6389](https://github.com/mruby/mruby/issues/6389) instance_exec named block args don't work properly
80 - [#6388](https://github.com/mruby/mruby/issues/6388) Recent commit broke my windows build
81 - [#6411](https://github.com/mruby/mruby/issues/6411) Wrong function unwinding when using return in a block
82 - [#6439](https://github.com/mruby/mruby/issues/6439) OP_JMPUW does not call the ensure block when it jumps to the beginning of the begin block
83 - [#6441](https://github.com/mruby/mruby/issues/6441) break inside while loop will execute the ensure block outside of the while loop
84 - [#6453](https://github.com/mruby/mruby/issues/6453) Bigint: incorrect behavior of ^ operator
85 - [#6452](https://github.com/mruby/mruby/issues/6452) Bigint: weird mod behavior
86 - [#6451](https://github.com/mruby/mruby/issues/6451) Bigint: incorrect division behavior
87 - [#6456](https://github.com/mruby/mruby/issues/6456) bigint: bug with division of a small number by a bigint
88 - [#6466](https://github.com/mruby/mruby/issues/6466) mruby-bin-mruby using Kernel#p and Kernel#print in bintest fails test
89 - [#6467](https://github.com/mruby/mruby/issues/6467) Heap-Use-After-Free due to Recursive group_by Calls
90 - [#6471](https://github.com/mruby/mruby/issues/6471) Discrepancy in codegen for binary operations between master branch and 3.3.0
91 - [#6477](https://github.com/mruby/mruby/issues/6477) heap-buffer-overflow in mrb_vm_exec
92 - [#6485](https://github.com/mruby/mruby/issues/6485) Hash#rehash does not check if the hash is frozen
93 - [#6483](https://github.com/mruby/mruby/issues/6483) Hash#default_proc= accepts arbitrary objects that are not callable
94 - [#6491](https://github.com/mruby/mruby/issues/6491) Destroy existing string literals when composing string literals
96 # Merged Pull Requests (User Visible Ones)
98 - [#6171](https://github.com/mruby/mruby/pull/6171) Add Enumerable::Lazy#grep_v to mruby-enum-lazy
99 - [#6174](https://github.com/mruby/mruby/pull/6174) Fix MRUBY_PACKAGE_DIR in mruby-config.bat
100 - [#6175](https://github.com/mruby/mruby/pull/6175) Corrected strange conditional in mrb_vm_run()
101 - [#6176](https://github.com/mruby/mruby/pull/6176) Stop assuming alias proc in CI_PROC_SET()
102 - [#6177](https://github.com/mruby/mruby/pull/6177) gha: add macOS 14 to the build
103 - [#6184](https://github.com/mruby/mruby/pull/6184) Remove the L_STOP label
104 - [#6185](https://github.com/mruby/mruby/pull/6185) Added mrb_callinfo::u.keep_context for clarity
105 - [#6186](https://github.com/mruby/mruby/pull/6186) Omit NULL check of e->cxt in OP_RETURN_BLK
106 - [#6191](https://github.com/mruby/mruby/pull/6191) Speed up symbol equality comparison
107 - [#6192](https://github.com/mruby/mruby/pull/6192) Fix `OP_STOP` with exception
108 - [#6193](https://github.com/mruby/mruby/pull/6193) Fix wrong assertion in `OP_SENDB`.
109 - [#6194](https://github.com/mruby/mruby/pull/6194) Simplify the calculation of the number of closures in `MRB_TT_FIBER`
110 - [#6197](https://github.com/mruby/mruby/pull/6197) Fix int_xor to call flo_xor.
111 - [#6201](https://github.com/mruby/mruby/pull/6201) tasks/doc.rake: standardize the `rake doc` error messages
112 - [#6202](https://github.com/mruby/mruby/pull/6202) Remove the `.yardoc` folder with `rake doc:clean:api`
113 - [#6204](https://github.com/mruby/mruby/pull/6204) Clean up the `.editorconfig` file
114 - [#6209](https://github.com/mruby/mruby/pull/6209) Minor `.gitignore` clean up
115 - [#6211](https://github.com/mruby/mruby/pull/6211) Minor `.gitignore` clean up; order entries
116 - [#6216](https://github.com/mruby/mruby/pull/6216) Shared empty `iv_tbl` of module
117 - [#6217](https://github.com/mruby/mruby/pull/6217) Strict declaration for `mrb_istruct_size()`
118 - [#6219](https://github.com/mruby/mruby/pull/6219) Avoid assigning a fixed value in the loop
119 - [#6220](https://github.com/mruby/mruby/pull/6220) Reorganize `mrb_cache_entry` and `mrb_method_t` types
120 - [#6221](https://github.com/mruby/mruby/pull/6221) Arranging `each_backtrace()`
121 - [#6222](https://github.com/mruby/mruby/pull/6222) Need to synchronize `dbg->regs` after VM call in `mrdb`
122 - [#6224](https://github.com/mruby/mruby/pull/6224) `mrb_env_unshare()` to break the link to fiber
123 - [#6225](https://github.com/mruby/mruby/pull/6225) Revert "Adjust environment when `mrb_exec_irep` happened."
124 - [#6227](https://github.com/mruby/mruby/pull/6227) fix: `Array#shuffle(!)` result distribution
125 - [#6228](https://github.com/mruby/mruby/pull/6228) Revert "`env` referred from top-level callinfo should not be unshared; fix #4019"
126 - [#6230](https://github.com/mruby/mruby/pull/6230) Fix status of fiber after switched by exception raised
127 - [#6231](https://github.com/mruby/mruby/pull/6231) Add a way to let other gems handle closing of fds in mruby-io
128 - [#6232](https://github.com/mruby/mruby/pull/6232) Fold the code for freeing `env`
129 - [#6233](https://github.com/mruby/mruby/pull/6233) Free stack memory at end of fiber
130 - [#6235](https://github.com/mruby/mruby/pull/6235) fix `Array#delete` always firing the block when deleting `nil`
131 - [#6236](https://github.com/mruby/mruby/pull/6236) unify the code for filter methods (and speed up `#reject!`)
132 - [#6237](https://github.com/mruby/mruby/pull/6237) Stricter env objects to attach to ci
133 - [#6238](https://github.com/mruby/mruby/pull/6238) Minimize zero initialization of the stack
134 - [#6243](https://github.com/mruby/mruby/pull/6243) Fixed base64 decoding in `mruby-pack`
135 - [#6244](https://github.com/mruby/mruby/pull/6244) Revise scope of role of `mrb_vm_run()`
136 - [#6246](https://github.com/mruby/mruby/pull/6246) Fix typo in `test/t/hash.rb`
137 - [#6249](https://github.com/mruby/mruby/pull/6249) Fix spelling in `src/vm.c`
138 - [#6250](https://github.com/mruby/mruby/pull/6250) Fix spelling
139 - [#6251](https://github.com/mruby/mruby/pull/6251) Clean up root move `CODEOWNERS` to `.github` directory
140 - [#6253](https://github.com/mruby/mruby/pull/6253) Allow recycling fibers by GC if not referenced directly
141 - [#6256](https://github.com/mruby/mruby/pull/6256) Update documentation for `mrb_top_run()`
142 - [#6257](https://github.com/mruby/mruby/pull/6257) fix some mrbconf.md typos
143 - [#6260](https://github.com/mruby/mruby/pull/6260) Remove `exc_caught` from `mrb_vm_exec()`
144 - [#6261](https://github.com/mruby/mruby/pull/6261) fix: `to_a` integer ranges with `begin > end` failing
145 - [#6263](https://github.com/mruby/mruby/pull/6263) fix: `Array#delete` mistakenly calling block even if not passed
146 - [#6264](https://github.com/mruby/mruby/pull/6264) Must pass keyword arguments for `Kernel#to_enum`
147 - [#6265](https://github.com/mruby/mruby/pull/6265) Fixes `Dir.children` and `Dir.each_child`
148 - [#6266](https://github.com/mruby/mruby/pull/6266) Passes the nonexistent key as a block argument in `Array#delete`
149 - [#6273](https://github.com/mruby/mruby/pull/6273) Improvements to `mrb_protect_atexit()`
150 - [#6275](https://github.com/mruby/mruby/pull/6275) Fixed `Binding#eval` that failed to assign to the same variable
151 - [#6276](https://github.com/mruby/mruby/pull/6276) Always run `atexit` on the top-level call frame
152 - [#6279](https://github.com/mruby/mruby/pull/6279) Include headers for malloc() explicitly; fix #6277
153 - [#6280](https://github.com/mruby/mruby/pull/6280) Remove `MRB_ENV_CLOSED` flag
154 - [#6281](https://github.com/mruby/mruby/pull/6281) Fixes local variables in `mruby-binding`.
155 - [#6283](https://github.com/mruby/mruby/pull/6283) Simplify `uvenv()`
156 - [#6288](https://github.com/mruby/mruby/pull/6288) Detach `env` of ci explicitly on atexit
157 - [#6289](https://github.com/mruby/mruby/pull/6289) Simplify `OP_RETURN_BLK` and `OP_BREAK`
158 - [#6290](https://github.com/mruby/mruby/pull/6290) Allow to change the output directory name of the `libmruby` file
159 - [#6293](https://github.com/mruby/mruby/pull/6293) Changed the instruction table in `opcode.md`
160 - [#6294](https://github.com/mruby/mruby/pull/6294) Optimise `mrb_iv_get`
161 - [#6302](https://github.com/mruby/mruby/pull/6302) Minor cleanup in mrb_str_init
162 - [#6303](https://github.com/mruby/mruby/pull/6303) mrb_str_aset_m() should return replace instead of str
163 - [#6305](https://github.com/mruby/mruby/pull/6305) Protect keyword arguments in `prepare_missing()`
164 - [#6308](https://github.com/mruby/mruby/pull/6308) Assume that `MRB_CATCH()` has `mrb->exc` set
165 - [#6310](https://github.com/mruby/mruby/pull/6310) Doubling the call stack when extending it
166 - [#6311](https://github.com/mruby/mruby/pull/6311) Added fast-path for positional arguments less than 15 in `OP_SEND`
167 - [#6312](https://github.com/mruby/mruby/pull/6312) Omit error checking at `OP_RETURN`, `OP_RETURN_BLK` and `OP_BREAK`
168 - [#6313](https://github.com/mruby/mruby/pull/6313) Fix wrong column number in opcode.md
169 - [#6314](https://github.com/mruby/mruby/pull/6314) Optimize even?/odd? for big integers
170 - [#6318](https://github.com/mruby/mruby/pull/6318) Shrink variables in `mrb_vm_exec()`
171 - [#6320](https://github.com/mruby/mruby/pull/6320) Shrinking the code in `OP_BREAK` and `OP_RETURN_BLK`
172 - [#6321](https://github.com/mruby/mruby/pull/6321) Avoid warnings in `lib/**/*.rb`
173 - [#6322](https://github.com/mruby/mruby/pull/6322) Fix mrb_ro_data_p on Intel Mac
174 - [#6324](https://github.com/mruby/mruby/pull/6324) Remove `localjump_error()`
175 - [#6327](https://github.com/mruby/mruby/pull/6327) fix ncurses linking issues
176 - [#6328](https://github.com/mruby/mruby/pull/6328) Fix use-after-free in `obj_free()` for env objects
177 - [#6329](https://github.com/mruby/mruby/pull/6329) Fix use-after-free in `mrb_obj_alloc()`
178 - [#6330](https://github.com/mruby/mruby/pull/6330) Add a precondition to call `mrb_env_unshare()`.
179 - [#6331](https://github.com/mruby/mruby/pull/6331) Restore the GC arena with tests
180 - [#6332](https://github.com/mruby/mruby/pull/6332) Must not depend on the “host” build to generate `mruby-compiler/core/y.tab.c`
181 - [#6333](https://github.com/mruby/mruby/pull/6333) Reduce the number of branch instructions in the `heap_p()`
182 - [#6335](https://github.com/mruby/mruby/pull/6335) Add `return_ci` in `CHECKPOINT_MAIN()` of `OP_RETURN`
183 - [#6338](https://github.com/mruby/mruby/pull/6338) Need to place static proc objects into 8-byte alignments
184 - [#6340](https://github.com/mruby/mruby/pull/6340) Fix use-after-free for `Array#<=>`
185 - [#6341](https://github.com/mruby/mruby/pull/6341) Need to restore the GC arena after some function calls
186 - [#6344](https://github.com/mruby/mruby/pull/6344) prefer using `mrb_yield` to call block arguments
187 - [#6347](https://github.com/mruby/mruby/pull/6347) codegen.c,parse.y: remove flattening of `yield` arguments; fix #6346
188 - [#6348](https://github.com/mruby/mruby/pull/6348) Cancel the warning disablement
189 - [#6349](https://github.com/mruby/mruby/pull/6349) Perform GC before deleting directories
190 - [#6350](https://github.com/mruby/mruby/pull/6350) Fixed character encoding conversion function mismatch
191 - [#6351](https://github.com/mruby/mruby/pull/6351) Remove unnecessary `mrb_gc_arena_restore()`
192 - [#6353](https://github.com/mruby/mruby/pull/6353) Fix use-after-free in `mrb_ary_delete()`
193 - [#6356](https://github.com/mruby/mruby/pull/6356) Making splat argument objects invisible from Ruby side
194 - [#6373](https://github.com/mruby/mruby/pull/6373) Add build config for Milk-V Duo (RISC-V Linux) board
195 - [#6382](https://github.com/mruby/mruby/pull/6382) Make array objects invisible in `mrb_gc_register()`
196 - [#6385](https://github.com/mruby/mruby/pull/6385) Small improvements for `mrb_gc_register()`
197 - [#6386](https://github.com/mruby/mruby/pull/6386) Avoid calling `mrb_gv_set()` from `mrb_gc_unregister()`
198 - [#6387](https://github.com/mruby/mruby/pull/6387) Small improvements for `mrb_gc_unregister()`
199 - [#6390](https://github.com/mruby/mruby/pull/6390) Fix use-after-free by `mrb_gc_unregistor()`
200 - [#6391](https://github.com/mruby/mruby/pull/6391) Fixed argument forwarding in `instance_exec`
201 - [#6392](https://github.com/mruby/mruby/pull/6392) Fix argument forwarding in `mrb_exec_irep()`
202 - [#6393](https://github.com/mruby/mruby/pull/6393) Follow-up to #6391
203 - [#6395](https://github.com/mruby/mruby/pull/6395) Storing method-id inside Symbol#to_proc
204 - [#6396](https://github.com/mruby/mruby/pull/6396) Milk-V Build Config: update GPIO gem URL
205 - [#6397](https://github.com/mruby/mruby/pull/6397) boxing_no.h: rename BOXNIX_SET_VALUE -> BOXNO_SET_VALUE
206 - [#6399](https://github.com/mruby/mruby/pull/6399) Add macOS 15 to the build
207 - [#6405](https://github.com/mruby/mruby/pull/6405) `io_read`: use `%i` instead of `%d` in call to `mrb_raisef`
208 - [#6407](https://github.com/mruby/mruby/pull/6407) Allow to exclude specific files in `rake install`
209 - [#6408](https://github.com/mruby/mruby/pull/6408) Improve compliance with C++ standards
210 - [#6410](https://github.com/mruby/mruby/pull/6410) Put `#include <stdlib.h>` in `parse.y`
211 - [#6412](https://github.com/mruby/mruby/pull/6412) Distinguish the call frame of the generator with `OP_RETURN_BLK`
212 - [#6413](https://github.com/mruby/mruby/pull/6413) Add links to documentation in `README.md`
213 - [#6415](https://github.com/mruby/mruby/pull/6415) Fix numbered parameters when used as a singleton
214 - [#6416](https://github.com/mruby/mruby/pull/6416) Optimize the "new" method's iseq
215 - [#6419](https://github.com/mruby/mruby/pull/6419) Follow Ruby's behavior for numbered parameters in -> {}
216 - [#6420](https://github.com/mruby/mruby/pull/6420) Update `labeler.yml`: add label for the `tools` directory
217 - [#6422](https://github.com/mruby/mruby/pull/6422) Add annotations for function names defined in the preprocessor
218 - [#6423](https://github.com/mruby/mruby/pull/6423) Adding a serialized test task
219 - [#6427](https://github.com/mruby/mruby/pull/6427) Need to update `ci` variable after re-entry to VM
220 - [#6428](https://github.com/mruby/mruby/pull/6428) Change the limits of OP_ADDI and OP_SUBI from 0-127 to 0-255.
221 - [#6429](https://github.com/mruby/mruby/pull/6429) Fix numbered parameters when used as hash keys
222 - [#6432](https://github.com/mruby/mruby/pull/6432) Moving code in macro arguments out of macros
223 - [#6434](https://github.com/mruby/mruby/pull/6434) Added document "Layout of the mruby filesystem"
224 - [#6436](https://github.com/mruby/mruby/pull/6436) Make `rake doc:update-index` prettier friendly
225 - [#6437](https://github.com/mruby/mruby/pull/6437) Add more details to the pre-commit config
226 - [#6438](https://github.com/mruby/mruby/pull/6438) Remove unused `MRuby::Build#list_install_excludes` method
227 - [#6440](https://github.com/mruby/mruby/pull/6440) Fix `redo` keyword
228 - [#6442](https://github.com/mruby/mruby/pull/6442) Fixed wrong range condition in `OP_JMPUW`
229 - [#6443](https://github.com/mruby/mruby/pull/6443) Fix NODE_NEGATE for bigints
230 - [#6444](https://github.com/mruby/mruby/pull/6444) Add test cases for bigints
231 - [#6446](https://github.com/mruby/mruby/pull/6446) Omit the `_WIN64` definition check
232 - [#6447](https://github.com/mruby/mruby/pull/6447) Fixed `File.expand_path`
233 - [#6448](https://github.com/mruby/mruby/pull/6448) Suppress presym in `mruby/ext/io.h` file
234 - [#6449](https://github.com/mruby/mruby/pull/6449) Using presym in the `mruby-io/src/file_test.c` file
235 - [#6450](https://github.com/mruby/mruby/pull/6450) Change `MRB_WITH_IO_PREAD_PWRITE` configuration name
236 - [#6454](https://github.com/mruby/mruby/pull/6454) mruby-bigint: handle rhs bigint in int_mod and int_divmod functions
237 - [#6455](https://github.com/mruby/mruby/pull/6455) mruby-bigint: fix rounding behavior in mpz_mdiv and mpz_mdivmod functions
238 - [#6457](https://github.com/mruby/mruby/pull/6457) bigint: fix bug with division of a small number by a bigint
239 - [#6459](https://github.com/mruby/mruby/pull/6459) `FileTest` is a module
240 - [#6461](https://github.com/mruby/mruby/pull/6461) To create a release package file in draft
241 - [#6462](https://github.com/mruby/mruby/pull/6462) Properly cast the return value of `memchr()`
242 - [#6463](https://github.com/mruby/mruby/pull/6463) Add `level` argument to `File.dirname`
243 - [#6465](https://github.com/mruby/mruby/pull/6465) Add initial playstation portable crossbuild support
244 - [#6468](https://github.com/mruby/mruby/pull/6468) Fixed missing changes to `IB_FIND_BY_KEY()` parameter names
245 - [#6469](https://github.com/mruby/mruby/pull/6469) Add more `const` qualifier for `RProc`
246 - [#6472](https://github.com/mruby/mruby/pull/6472) Moved tests for `Integer#quo`
247 - [#6473](https://github.com/mruby/mruby/pull/6473) Hide `mpz_and()` symbol
248 - [#6473](https://github.com/mruby/mruby/pull/6473) Hide mpz_and() symbol
249 - [#6474](https://github.com/mruby/mruby/pull/6474) Avoid array object creation with “unknown keyword” error
250 - [#6475](https://github.com/mruby/mruby/pull/6475) Don't include deleted mruby-print
251 - [#6478](https://github.com/mruby/mruby/pull/6478) Fixed buffer overrun in function `chars2bytes()`
252 - [#6479](https://github.com/mruby/mruby/pull/6479) Reimplementation of `File.expand_path` method
253 - [#6482](https://github.com/mruby/mruby/pull/6482) Add `File.absolute_path?` method
254 - [#6487](https://github.com/mruby/mruby/pull/6487) Add Emscripten toolchain & build_config