mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
Compare commits
15 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| a309524d0b | |||
| 2a435caf79 | |||
| 8b65a296db | |||
| 468c6f1901 | |||
| d1909320d9 | |||
| a6848ca2cb | |||
| eb455c19fe | |||
| 8472fe0f13 | |||
| 9c37098c15 | |||
| 609a5c23b2 | |||
| 17d5aaa048 | |||
| 5bc00bf199 | |||
| 1e6442f54e | |||
| 1e36d7662c | |||
| 92b18d6a44 |
@@ -100,7 +100,7 @@ repos:
|
||||
types: [markdown]
|
||||
files: \.md$
|
||||
- repo: https://github.com/tcort/markdown-link-check
|
||||
rev: v3.13.6
|
||||
rev: v3.13.7
|
||||
hooks:
|
||||
- id: markdown-link-check
|
||||
name: run markdown-link-check
|
||||
@@ -114,7 +114,7 @@ repos:
|
||||
- id: shellcheck
|
||||
name: run shellcheck
|
||||
- repo: https://github.com/adrienverge/yamllint
|
||||
rev: v1.35.1
|
||||
rev: v1.36.0
|
||||
hooks:
|
||||
- id: yamllint
|
||||
name: run yamllint
|
||||
|
||||
@@ -48,7 +48,7 @@ PROJECT_NAME = mruby
|
||||
# could be handy for archiving the generated documentation or if some version
|
||||
# control system is used.
|
||||
|
||||
PROJECT_NUMBER = 3.3.0
|
||||
PROJECT_NUMBER = 3.4.0
|
||||
|
||||
# Using the PROJECT_BRIEF tag one can provide an optional one line description
|
||||
# for a project that appears at the top of each page and should give viewer a
|
||||
|
||||
@@ -1,189 +1,254 @@
|
||||
NEWS
|
||||
----
|
||||
|
||||
# User visible changes in `mruby3.3` from `mruby3.2`
|
||||
# User visible changes in `mruby3.4` from `mruby3.3`
|
||||
|
||||
"**_NOTE_**:" are changes to be aware of.
|
||||
|
||||
# The language
|
||||
|
||||
- aliases work properly with `super` ([2ad3f0e](https://github.com/mruby/mruby/commit/2ad3f0e))
|
||||
- `callee` method work differently with aliases in mruby ([f2dc76e](https://github.com/mruby/mruby/commit/f2dc76e))
|
||||
- define `Kernel#respond_to_missing?` method ([347586e](https://github.com/mruby/mruby/commit/347586e))
|
||||
- `_inspect` method (`inspect` with recursive check) is removed
|
||||
([e2bbf75](https://github.com/mruby/mruby/commit/e2bbf75), [5cb0c74](https://github.com/mruby/mruby/commit/5cb0c74), [113565a](https://github.com/mruby/mruby/commit/113565a),
|
||||
[0713f2a](https://github.com/mruby/mruby/commit/0713f2a), [6ae6b63](https://github.com/mruby/mruby/commit/6ae6b63), [fc9fffc](https://github.com/mruby/mruby/commit/fc9fffc))
|
||||
- `__printstr__` method is removed; use `print` instead
|
||||
([acecee0](https://github.com/mruby/mruby/commit/acecee0), [192e6e3](https://github.com/mruby/mruby/commit/192e6e3))
|
||||
- New method `String#bytesplice` ([5274647](https://github.com/mruby/mruby/commit/5274647), [a2e2e83](https://github.com/mruby/mruby/commit/a2e2e83))
|
||||
- Allow `return` in blocks to cross C boundaries ([#6125](https://github.com/mruby/mruby/pull/6125))
|
||||
|
||||
# Configuration
|
||||
|
||||
- mruby can be built using Docker now. Try `docker-compose build` for example. ([#5961](https://github.com/mruby/mruby/pull/5961))
|
||||
- New Platform: DJGPP (MS-DOS) ([#6022](https://github.com/mruby/mruby/pull/6022))
|
||||
- New Platform: Nintendo Wii ([#6086](https://github.com/mruby/mruby/pull/6086))
|
||||
- Improved Platform: Android ([#6013](https://github.com/mruby/mruby/pull/6013))
|
||||
- Improved Platform: Dreamcast ([#6130](https://github.com/mruby/mruby/pull/6130))
|
||||
- Allow tests to be disabled for specific gems; warn about disabled tests ([#6012](https://github.com/mruby/mruby/pull/6012))
|
||||
- Replace `MRB_NO_DIRECT_THREADING` with `MRB_USE_VM_SWITCH_DISPATCH` ([#5902](https://github.com/mruby/mruby/pull/5902))
|
||||
|
||||
# mruby memory API
|
||||
|
||||
- `mrb_default_allocf` can be overridden by the application ([34c5d96](https://github.com/mruby/mruby/commit/34c5d96))
|
||||
- `mrb_open_allocf` will be deprecated ([cfee5c2](https://github.com/mruby/mruby/commit/cfee5c2))
|
||||
- mruby now supports `private` and `protected` visibitily ([b0db0bd](https://github.com/mruby/mruby/commit/b0db0bd))
|
||||
- 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))
|
||||
- Many methods are made private according to CRuby visibility ([4a0e806](https://github.com/mruby/mruby/commit/4a0e806))
|
||||
- Generate OP_SSEND for `self.method` type calls ([111fe4b](https://github.com/mruby/mruby/commit/111fe4b))
|
||||
- `initialize` method will be always private ([eb8b412](https://github.com/mruby/mruby/commit/eb8b412))
|
||||
- Add new hooks `method_removed`, `method_undefined` ([9c74f6e](https://github.com/mruby/mruby/commit/9c74f6e))
|
||||
- Add new hooks `singleton_method_removed`, `singleton_method_undefined` ([0863c08](https://github.com/mruby/mruby/commit/0863c08))
|
||||
- Updated `OP_DEF` output from codedump ([3a3e877](https://github.com/mruby/mruby/commit/3a3e877))
|
||||
- Better handling of binary strings, e.g. String#b ([b0127f0](https://github.com/mruby/mruby/commit/b0127f0))
|
||||
- Hash `to_s` format has changed ([baeeb5e](https://github.com/mruby/mruby/commit/baeeb5e))
|
||||
- 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))
|
||||
- Constant folding for `String#+` ([6687bdd](https://github.com/mruby/mruby/commit/6687bdd))
|
||||
- Remove Float bit-operation ([db8368f](https://github.com/mruby/mruby/commit/db8368f))
|
||||
- use SWAR technique for strlen performance ([cbb31e6](https://github.com/mruby/mruby/commit/cbb31e6))
|
||||
- use merge sort for `Array#sort` ([5bd63d6](https://github.com/mruby/mruby/commit/5bd63d6))
|
||||
|
||||
# Changes in C API
|
||||
|
||||
- add new error handling API functions ([8c8bbd9](https://github.com/mruby/mruby/commit/8c8bbd9))
|
||||
- Add `mrb_vm_ci_env_clear()` function with `MRB_API` ([#5945](https://github.com/mruby/mruby/pull/5945))
|
||||
- a new function `mrb_check_frozen_value()` ([ccdf75c](https://github.com/mruby/mruby/commit/ccdf75c))
|
||||
- avoid formatting in `mrb_bug()` ([82a48bd](https://github.com/mruby/mruby/commit/82a48bd)) <br>
|
||||
**_NOTE_**: If you are using it, you must give a simple string or replace it with a call to `mrb_raise()` series.
|
||||
- stop using `mrbc_` prefix for compiler context ([c5e3cbe](https://github.com/mruby/mruby/commit/c5e3cbe)) <br>
|
||||
The same names are provided as before, but we recommend replacing them.
|
||||
- Allow `Class#allocate` to be prohibited
|
||||
([#5979](https://github.com/mruby/mruby/pull/5979), [#6122](https://github.com/mruby/mruby/pull/6122), [#6123](https://github.com/mruby/mruby/pull/6123)) <br>
|
||||
To disable `#allocate`, use `MRB_UNDEF_ALLOCATOR()`.
|
||||
This is also automatically applied when the subclass is created, but to explicitly allow it, use `MRB_DEFINE_ALLOCATOR()`.
|
||||
- pool.c renamed to mempool.c (and mrb_pool to mrb_mempool) ([49525fa](https://github.com/mruby/mruby/commit/49525fa))
|
||||
- mrb_pool_value renamed to mrb_irep_pool to reduce confusion ([62ef5db](https://github.com/mruby/mruby/commit/62ef5db))
|
||||
- rename BOXNIX_SET_VALUE to BOXNO_SET_VALUE ([#6397](https://github.com/mruby/mruby/pull/6397))
|
||||
- `MRB_FROZEN_P()` is replaced by `mrb_frozen_p()` ([c11d18e](https://github.com/mruby/mruby/commit/c11d18e))
|
||||
- rename `color` to `gc_color` ([0e79f6b](https://github.com/mruby/mruby/commit/0e79f6b), [1e36d76](https://github.com/mruby/mruby/commit/1e36d76))
|
||||
- add `obj->frozen` instead of flags `MRB_SET_FROZEN_FLAG`/`MRB_UNSET_FROZEN_FLAG` ([8276143](https://github.com/mruby/mruby/commit/8276143))
|
||||
|
||||
# Build & Configuration
|
||||
|
||||
- New Build Target: `test:run:serial`, `test:run:serial:lib`, `test:run:serial:bin` ([#6423](https://github.com/mruby/mruby/pull/6423))
|
||||
- New Platform: Playstation Portable ([#6022](https://github.com/mruby/mruby/pull/6465))
|
||||
- New Platform: emscripten ([#6487](https://github.com/mruby/mruby/pull/6487))
|
||||
- New Config: no-float (with MRB_NO_FLOAT) ([32200f1](https://github.com/mruby/mruby/commit/32200f1))
|
||||
|
||||
# Changes in mrbgems
|
||||
|
||||
- **default.gembox**: Add mruby debugger mrdb (`mruby-bin-debugger`) ([#5966](https://github.com/mruby/mruby/pull/5966))
|
||||
- **mruby-bin-config**: new options `--cxx`, `--cxxflags`, `--as`, `--asflags`, `--objc`, `--objcflags` ([#6054](https://github.com/mruby/mruby/pull/6054))
|
||||
- **mruby-binding**: renamed from `mruby-binding-core` of mruby3.2 ([11af5db](https://github.com/mruby/mruby/commit/11af5db)) <br>
|
||||
**_NOTE_**: If using `mruby-binding-core` of mruby 3.2, replace it with `mruby-binding`.
|
||||
- **mruby-binding**: implemented `Binding#initialize_copy` method ([#5517](https://github.com/mruby/mruby/pull/5517))
|
||||
- **mruby-binding**: `Kernel#binding` responds only to calls from Ruby ([#5981](https://github.com/mruby/mruby/pull/5981))
|
||||
- **mruby-compar-ext**: Comparable#clamp to accept nil as arguments ([836bebc](https://github.com/mruby/mruby/commit/836bebc))
|
||||
- **mruby-compiler**: add print name for identifier tokens ([d7b2e3a](https://github.com/mruby/mruby/commit/d7b2e3a))
|
||||
- **mruby-data**: allow empty Data ([927a9df](https://github.com/mruby/mruby/commit/927a9df))
|
||||
- **mruby-enumerator**: remove internal attribute methods `obj`, `args`, `kwd`, `meth`, `fib`. ([735fa24](https://github.com/mruby/mruby/commit/735fa24))
|
||||
- **mruby-enumerator**: add Enumerator#size ([861f8bd](https://github.com/mruby/mruby/commit/861f8bd))
|
||||
- **mruby-eval**: merged `mruby-binding` of mruby3.2 ([501b22a](https://github.com/mruby/mruby/commit/501b22a), [#5989](https://github.com/mruby/mruby/pull/5989)) <br>
|
||||
**_NOTE_**: If using `mruby-binding` of mruby 3.2, replace it with `mruby-eval`.
|
||||
- **mruby-fiber**: Add a new `mrb_fiber_new()` with `MRB_API` ([#6097](https://github.com/mruby/mruby/pull/6097))
|
||||
- **mruby-fiber**: Allows calling `Fiber#resume` from C ([#6106](https://github.com/mruby/mruby/pull/6106))
|
||||
- **mruby-fiber**: `Fiber#to_s` format changed ([#6105](https://github.com/mruby/mruby/pull/6105))
|
||||
- **mruby-io**: add File#atime and File#ctime ([321cfe9](https://github.com/mruby/mruby/commit/321cfe9))
|
||||
- **mruby-io**: Add "x" mode option for `IO.open` ([#6081](https://github.com/mruby/mruby/pull/6081))
|
||||
- **mruby-io**: File.new should not take blocks ([53de964](https://github.com/mruby/mruby/commit/53de964))
|
||||
- **mruby-method**: `Method#to_s` format changed ([f5bc82f](https://github.com/mruby/mruby/commit/f5bc82f), [02f189c](https://github.com/mruby/mruby/commit/02f189c))
|
||||
- **mruby-numeric-ext**: `int.pow(n,m)` to take bigint as exponential ([d482eab](https://github.com/mruby/mruby/commit/d482eab))
|
||||
- **mruby-pack**: support new directives `j`, `J`, `b`, `B`, `#`
|
||||
([2a1e3a5](https://github.com/mruby/mruby/commit/2a1e3a5), [e7021f1](https://github.com/mruby/mruby/commit/e7021f1), [e17f325](https://github.com/mruby/mruby/commit/e17f325))
|
||||
- **mruby-range-ext**: new method `Range#overlap?` ([384d0e2](https://github.com/mruby/mruby/commit/384d0e2))
|
||||
- **mruby-string-ext**: Add `String#valid_encoding?` method ([eabe2d9](https://github.com/mruby/mruby/commit/eabe2d9))
|
||||
- **mruby-struct**: allow empty Struct when a name is not given ([c212ede](https://github.com/mruby/mruby/commit/c212ede))
|
||||
- **mruby-time**: should allow year before 1900 ([e5de08b](https://github.com/mruby/mruby/commit/e5de08b))
|
||||
- **mruby-time**: support bigint to time_t if necessary ([7096d27](https://github.com/mruby/mruby/commit/7096d27))
|
||||
- **mruby-time**: need to handle negative time_t ([b064d7e](https://github.com/mruby/mruby/commit/b064d7e))
|
||||
- **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))
|
||||
- **mruby-enum-lazy**: Add Enumerable::Lazy#grep_v to mruby-enum-lazy ([#6171](https://github.com/mruby/mruby/pull/6171))
|
||||
- **mruby-io**: Add `level` argument to `File.dirname` ([#6463](https://github.com/mruby/mruby/pull/6463))
|
||||
- **mruby-io**: File.absolute_path? ([#6482](https://github.com/mruby/mruby/pull/6482))
|
||||
- **mruby-io**: File.absolute_path ([96113a2](https://github.com/mruby/mruby/commit/96113a2))
|
||||
- **mruby-toplevel-ext**: top-level public/private/protected moved to the core ([2a876d2](https://github.com/mruby/mruby/commit/2a876d2))
|
||||
- **mruby-metaprog**: method list methods now works according to the visibility ([9229da1](https://github.com/mruby/mruby/commit/9229da1))
|
||||
- **mruby-metaprog**: `public_instance_methods`, `private_instance_methods`, `protected_instance_methods` ([9e3e7b2](https://github.com/mruby/mruby/commit/9e3e7b2))
|
||||
- **mruby-encoding**: MRB_UTF8_STRING turned on automatically with this gem ([74bdae9](https://github.com/mruby/mruby/commit/74bdae9))
|
||||
|
||||
# Changes in build system
|
||||
# Fixed GitHub Issues
|
||||
|
||||
- Extended `rake install` task ([#5928](https://github.com/mruby/mruby/pull/5928)) <br>
|
||||
**_NOTE_**: Due to this impact, executable files in the `mruby/bin/` directory by default are now symbolic links (batch files on Windows).
|
||||
If previously relied on those executables, should be replaced with direct references to the entity created under the build directory (e.g. `mruby/build/host/bin/`).
|
||||
- Encode and decode escape characters for presym ([#6011](https://github.com/mruby/mruby/pull/6011))
|
||||
- Rakefile: remove default build target directories in `deep_clean` ([#6032](https://github.com/mruby/mruby/pull/6032), [1e38569](https://github.com/mruby/mruby/commit/1e38569))
|
||||
- [#6173](https://github.com/mruby/mruby/issues/6173) Fails to build with tcc(Tiny C Compiler)
|
||||
- [#6156](https://github.com/mruby/mruby/issues/6156) '/LIBPATH' issue
|
||||
- [#6183](https://github.com/mruby/mruby/issues/6183) ".e".to_f returns NAN
|
||||
- [#6182](https://github.com/mruby/mruby/issues/6182) mrb_read_float() converts "0.3" with a small error compared to strtod()
|
||||
- [#6210](https://github.com/mruby/mruby/issues/6210) Unary minus seems broken
|
||||
- [#6255](https://github.com/mruby/mruby/issues/6255) Wrong number of characters in broken UTF-8 string
|
||||
- [#4038](https://github.com/mruby/mruby/issues/4038) Heap buffer overflow in OP_ENTER
|
||||
- [#6262](https://github.com/mruby/mruby/issues/6262) Unable to define == for objects when using Array#delete
|
||||
- [#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
|
||||
- [#6277](https://github.com/mruby/mruby/issues/6277) MSVC: can't use malloc() in string.c with WIN32_LEAN_AND_MEAN
|
||||
- [#6240](https://github.com/mruby/mruby/issues/6240) Differentiate between lib and lib64 in the build settings.
|
||||
- [#6304](https://github.com/mruby/mruby/issues/6304) Calling method_missing with only Kwargs passes arguments incorrectly
|
||||
- [#6317](https://github.com/mruby/mruby/issues/6317) mrb_gc_register() may cause GC and collect the object being protected
|
||||
- [#6307](https://github.com/mruby/mruby/issues/6307) Planned change patch for mrb_vm_exec()
|
||||
- [#6298](https://github.com/mruby/mruby/issues/6298) foo :bar {} is legal in mruby?
|
||||
- [#6326](https://github.com/mruby/mruby/issues/6326) Detect “Use-after-free” with address sanitizer
|
||||
- [#5358](https://github.com/mruby/mruby/issues/5358) static warning from getpwnam
|
||||
- [#6339](https://github.com/mruby/mruby/issues/6339) mrb_ary_delete() may refer to an invalid address (use-after-free)
|
||||
- [#6346](https://github.com/mruby/mruby/issues/6346) Block kwargs are passed as last positional arg when using yield
|
||||
- [#6365](https://github.com/mruby/mruby/issues/6365) powl() not available when compiling for Dreamcast
|
||||
- [#6369](https://github.com/mruby/mruby/issues/6369) 100x Performance Regression from 3.1
|
||||
- [#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
|
||||
- [#6297](https://github.com/mruby/mruby/issues/6297) Assigning to a block variable changes the actual block (thus affecting block_given? and yield)
|
||||
- [#6389](https://github.com/mruby/mruby/issues/6389) instance_exec named block args don't work properly
|
||||
- [#6388](https://github.com/mruby/mruby/issues/6388) Recent commit broke my windows build
|
||||
- [#6411](https://github.com/mruby/mruby/issues/6411) Wrong function unwinding when using return in a block
|
||||
- [#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
|
||||
- [#6441](https://github.com/mruby/mruby/issues/6441) break inside while loop will execute the ensure block outside of the while loop
|
||||
- [#6453](https://github.com/mruby/mruby/issues/6453) Bigint: incorrect behavior of ^ operator
|
||||
- [#6452](https://github.com/mruby/mruby/issues/6452) Bigint: weird mod behavior
|
||||
- [#6451](https://github.com/mruby/mruby/issues/6451) Bigint: incorrect division behavior
|
||||
- [#6456](https://github.com/mruby/mruby/issues/6456) bigint: bug with division of a small number by a bigint
|
||||
- [#6466](https://github.com/mruby/mruby/issues/6466) mruby-bin-mruby using Kernel#p and Kernel#print in bintest fails test
|
||||
- [#6467](https://github.com/mruby/mruby/issues/6467) Heap-Use-After-Free due to Recursive group_by Calls
|
||||
- [#6471](https://github.com/mruby/mruby/issues/6471) Discrepancy in codegen for binary operations between master branch and 3.3.0
|
||||
- [#6477](https://github.com/mruby/mruby/issues/6477) heap-buffer-overflow in mrb_vm_exec
|
||||
- [#6485](https://github.com/mruby/mruby/issues/6485) Hash#rehash does not check if the hash is frozen
|
||||
- [#6483](https://github.com/mruby/mruby/issues/6483) Hash#default_proc= accepts arbitrary objects that are not callable
|
||||
- [#6491](https://github.com/mruby/mruby/issues/6491) Destroy existing string literals when composing string literals
|
||||
|
||||
# Other breaking changes
|
||||
# Merged Pull Requests (User Visible Ones)
|
||||
|
||||
- `mrb_f_raise()` is now an internal function
|
||||
([#5923](https://github.com/mruby/mruby/pull/5923), [#6070](https://github.com/mruby/mruby/pull/6070))
|
||||
- `mrb_make_exception()` is now an internal function with different parameters
|
||||
([431f83e](https://github.com/mruby/mruby/commit/431f83e), [78137f3](https://github.com/mruby/mruby/commit/78137f3))
|
||||
- The `File#path` method no longer uses the `#to_path` method for implicit conversion
|
||||
([d86c4a7](https://github.com/mruby/mruby/commit/d86c4a7))
|
||||
- stop mrb isolation for each test file ([a20fbe5](https://github.com/mruby/mruby/commit/a20fbe5))
|
||||
- RBreak remembers the CI location ([#6103](https://github.com/mruby/mruby/pull/6103))
|
||||
|
||||
# Bugs Fixed
|
||||
|
||||
- [#5724](https://github.com/mruby/mruby/issues/5724) Rational#\*\* is missing
|
||||
- [#5725](https://github.com/mruby/mruby/issues/5725) weird const_missing exceptions in mrblib code
|
||||
- [#5789](https://github.com/mruby/mruby/issues/5789) No memory release of backtrace information due to stack error
|
||||
- [#5932](https://github.com/mruby/mruby/issues/5932) How to create a block using the C API? mrb_yield keeps crashing!
|
||||
- [#5943](https://github.com/mruby/mruby/issues/5943) TCPSocket#write is failed
|
||||
- [#5944](https://github.com/mruby/mruby/issues/5944) Behavior of calling method with a hash variable
|
||||
- [#5946](https://github.com/mruby/mruby/pull/5946) Don't switch constant search path from modules to Object
|
||||
- [#5949](https://github.com/mruby/mruby/issues/5949) Caller appears to report wrong line when block passed and brackets omitted
|
||||
- [0906cd7](https://github.com/mruby/mruby/commit/0906cd7) numeric.c: fix rounding function issues with big numbers
|
||||
- [#5974](https://github.com/mruby/mruby/issues/5974) Invalid escape sequences in gem_init.c on windows
|
||||
- [#5975](https://github.com/mruby/mruby/issues/5975) Equals comparison fails on extreme ends of 64-bit integers
|
||||
- [#5985](https://github.com/mruby/mruby/issues/5985) Sign extension with OP_LOADI32 in get_int_operand()
|
||||
- [#5986](https://github.com/mruby/mruby/issues/5986) Fix bugs in String#bytesplice
|
||||
- [#5987](https://github.com/mruby/mruby/issues/5987) ~(-1 << 64) is incorrect
|
||||
- [#5991](https://github.com/mruby/mruby/issues/5991) 'gets' method not working in mruby-3.2.0
|
||||
- [#5994](https://github.com/mruby/mruby/pull/5994) fix typo in mrbgems/mruby-io/src/io.c
|
||||
- [#5995](https://github.com/mruby/mruby/issues/5995) One seemingly unnecessary parameter is passed in the block parameters
|
||||
- [#6008](https://github.com/mruby/mruby/pull/6008) Make "bintest" independent of directory
|
||||
- [b47c8b7](https://github.com/mruby/mruby/commit/b47c8b7) gc.c (clear_all_old): fix a generational GC bug
|
||||
- [#6029](https://github.com/mruby/mruby/issues/6029) mruby build fails under mrbgems directory
|
||||
- [a264965](https://github.com/mruby/mruby/commit/a264965) mruby-os-memsize/memsize.c: fix irep size calculation
|
||||
- [3310e10](https://github.com/mruby/mruby/commit/3310e10) mruby-test/mrbgem.rake: fix mrb_state handling bug
|
||||
- [#6041](https://github.com/mruby/mruby/issues/6041) GC Performance may have degraded
|
||||
- [#6044](https://github.com/mruby/mruby/issues/6044) Generated presym/table.h contains invalid characters
|
||||
- [#6051](https://github.com/mruby/mruby/issues/6051) Null pointer dereference in mrb_addrinfo_unix_path
|
||||
- [#6052](https://github.com/mruby/mruby/issues/6052) Null pointer dereference while handling the Proc class
|
||||
- [#6055](https://github.com/mruby/mruby/pull/6055) Fix libmruby name for VisualC++
|
||||
- [#6060](https://github.com/mruby/mruby/issues/6060) SEGFAULT Issue Related to Fiber Usage in ngx_mruby Development
|
||||
- [#6061](https://github.com/mruby/mruby/issues/6061) Performance issue in String#codepoints
|
||||
- [#6064](https://github.com/mruby/mruby/issues/6064) MRUBY_PACKAGE_DIR does not always have a value.
|
||||
- [#6065](https://github.com/mruby/mruby/issues/6065) Null pointer dereference while handling the Proc class
|
||||
- [#6066](https://github.com/mruby/mruby/issues/6066) Null pointer dereference involving Struct.new()
|
||||
- [#6067](https://github.com/mruby/mruby/issues/6067) Null pointer dereference in mrb_string_value_cstr
|
||||
- [#6068](https://github.com/mruby/mruby/issues/6068) Stack overflow in mrb_vm_exec
|
||||
- [#6076](https://github.com/mruby/mruby/pull/6076) Fixed unwinding block that could point to invalid PC
|
||||
- [#6084](https://github.com/mruby/mruby/issues/6084) Incorrect symbolic sinks in binary built on Linux
|
||||
- [#6087](https://github.com/mruby/mruby/issues/6087) 'Remote branch HEAD not found in upstream origin' error on build
|
||||
- [#6089](https://github.com/mruby/mruby/issues/6089) binding.eval() handles def expressions differently from CRuby
|
||||
- [#6098](https://github.com/mruby/mruby/issues/6098) Fails to call superclass of wrapped method
|
||||
- [#6099](https://github.com/mruby/mruby/issues/6099) `ensure` section is not executed if the function exits via a return in a proc
|
||||
- [#6108](https://github.com/mruby/mruby/issues/6108) VM crashes with break
|
||||
- [#6118](https://github.com/mruby/mruby/pull/6118) Fixed IO#read with buf
|
||||
- [#6120](https://github.com/mruby/mruby/pull/6120) Set EBADF if check_file_descriptor() fails
|
||||
- [#6126](https://github.com/mruby/mruby/pull/6126) Fixed return value of `OP_RETURN_BLK` called directly under C function
|
||||
- [#6134](https://github.com/mruby/mruby/issues/6134) String#unpack1 returns an array instead of a single string
|
||||
- [#6136](https://github.com/mruby/mruby/pull/6136) Fixed when combined `mrb_fiber_resume()` and `Fiber#transfer`
|
||||
|
||||
# Pull Requests (User Visible Ones)
|
||||
|
||||
- [#5517](https://github.com/mruby/mruby/pull/5517) Fixed local variables not separated between copied binding objects
|
||||
- [#5902](https://github.com/mruby/mruby/pull/5902) Replace `MRB_NO_DIRECT_THREADING` with `MRB_USE_VM_SWITCH_DISPATCH`
|
||||
- [#5923](https://github.com/mruby/mruby/pull/5923) Demotion `mrb_f_raise()` from `MRB_API`
|
||||
- [#5928](https://github.com/mruby/mruby/pull/5928) Improved `rake install`
|
||||
- [#5945](https://github.com/mruby/mruby/pull/5945) Avoid exposure for `REnv` objects
|
||||
- [#5946](https://github.com/mruby/mruby/pull/5946) Don't switch constant search path from modules to Object
|
||||
- [#5966](https://github.com/mruby/mruby/pull/5966) Update default.gembox add mruby debugger mrdb
|
||||
- [#5979](https://github.com/mruby/mruby/pull/5979) Allow Class#allocate to be prohibited
|
||||
- [#5981](https://github.com/mruby/mruby/pull/5981) `Kernel#binding` responds only to calls from Ruby
|
||||
- [#5989](https://github.com/mruby/mruby/pull/5989) Integrate mruby-binding-eval into mruby-eval
|
||||
- [#5961](https://github.com/mruby/mruby/pull/5961) Add Docker to build and run all mruby tests. Run pre-commit and generate YARD docs with Docker
|
||||
- [#5994](https://github.com/mruby/mruby/pull/5994) fix typo in mrbgems/mruby-io/src/io.c
|
||||
- [#6008](https://github.com/mruby/mruby/pull/6008) Make "bintest" independent of directory
|
||||
- [#6009](https://github.com/mruby/mruby/pull/6009) Avoid adding <MRUBY_ROOT>/bintest which does not exist
|
||||
- [#6011](https://github.com/mruby/mruby/pull/6011) Encode and decode escape characters for presym
|
||||
- [#6012](https://github.com/mruby/mruby/pull/6012) Allow tests to be disabled for specific gems; warn about disabled tests
|
||||
- [#6013](https://github.com/mruby/mruby/pull/6013) Fix Android toolchain
|
||||
- [#6022](https://github.com/mruby/mruby/pull/6022) Build configuration for MS-DOS and DJGPP
|
||||
- [#6032](https://github.com/mruby/mruby/pull/6032) Rake: update task clean to remove bin and build folders
|
||||
- [#6045](https://github.com/mruby/mruby/pull/6045) Fixes escape sequence bug and enhancements in Presym scanning
|
||||
- [#6054](https://github.com/mruby/mruby/pull/6054) Extends `bin/mruby-config`
|
||||
- [#6055](https://github.com/mruby/mruby/pull/6055) Fix libmruby name for VisualC++
|
||||
- [#6070](https://github.com/mruby/mruby/pull/6070) Demotion mrb_f_raise() in kernel.c from MRB_API too
|
||||
- [#6076](https://github.com/mruby/mruby/pull/6076) Fixed unwinding block that could point to invalid PC
|
||||
- [#6081](https://github.com/mruby/mruby/pull/6081) Add "x" mode option for IO.open
|
||||
- [#6086](https://github.com/mruby/mruby/pull/6086) Add build config for Nintendo Wii
|
||||
- [#6097](https://github.com/mruby/mruby/pull/6097) Add a new mrb_fiber_new() with MRB_API
|
||||
- [#6103](https://github.com/mruby/mruby/pull/6103) RBreak remembers the CI location
|
||||
- [#6105](https://github.com/mruby/mruby/pull/6105) Implement `Fiber#to_s` method
|
||||
- [#6106](https://github.com/mruby/mruby/pull/6106) Ease fiber limitations
|
||||
- [#6118](https://github.com/mruby/mruby/pull/6118) Fixed IO#read with buf
|
||||
- [#6120](https://github.com/mruby/mruby/pull/6120) Set EBADF if check_file_descriptor() fails
|
||||
- [#6122](https://github.com/mruby/mruby/pull/6122) Prohibit `Class#allocate` in a different way
|
||||
- [#6123](https://github.com/mruby/mruby/pull/6123) Inherit `MRB_FL_UNDEF_ALLOCATE` in subclasses
|
||||
- [#6125](https://github.com/mruby/mruby/pull/6125) Allow `OP_RETURN_BLK` to cross C boundaries
|
||||
- [#6126](https://github.com/mruby/mruby/pull/6126) Fixed return value of `OP_RETURN_BLK` called directly under C function
|
||||
- [#6130](https://github.com/mruby/mruby/pull/6130) `dreamcast_shelf build config`: complete overhaul
|
||||
- [#6136](https://github.com/mruby/mruby/pull/6136) Fixed when combined `mrb_fiber_resume()` and `Fiber#transfer`
|
||||
- [#6171](https://github.com/mruby/mruby/pull/6171) Add Enumerable::Lazy#grep_v to mruby-enum-lazy
|
||||
- [#6174](https://github.com/mruby/mruby/pull/6174) Fix MRUBY_PACKAGE_DIR in mruby-config.bat
|
||||
- [#6175](https://github.com/mruby/mruby/pull/6175) Corrected strange conditional in mrb_vm_run()
|
||||
- [#6176](https://github.com/mruby/mruby/pull/6176) Stop assuming alias proc in CI_PROC_SET()
|
||||
- [#6177](https://github.com/mruby/mruby/pull/6177) gha: add macOS 14 to the build
|
||||
- [#6184](https://github.com/mruby/mruby/pull/6184) Remove the L_STOP label
|
||||
- [#6185](https://github.com/mruby/mruby/pull/6185) Added mrb_callinfo::u.keep_context for clarity
|
||||
- [#6186](https://github.com/mruby/mruby/pull/6186) Omit NULL check of e->cxt in OP_RETURN_BLK
|
||||
- [#6191](https://github.com/mruby/mruby/pull/6191) Speed up symbol equality comparison
|
||||
- [#6192](https://github.com/mruby/mruby/pull/6192) Fix `OP_STOP` with exception
|
||||
- [#6193](https://github.com/mruby/mruby/pull/6193) Fix wrong assertion in `OP_SENDB`.
|
||||
- [#6194](https://github.com/mruby/mruby/pull/6194) Simplify the calculation of the number of closures in `MRB_TT_FIBER`
|
||||
- [#6197](https://github.com/mruby/mruby/pull/6197) Fix int_xor to call flo_xor.
|
||||
- [#6201](https://github.com/mruby/mruby/pull/6201) tasks/doc.rake: standardize the `rake doc` error messages
|
||||
- [#6202](https://github.com/mruby/mruby/pull/6202) Remove the `.yardoc` folder with `rake doc:clean:api`
|
||||
- [#6204](https://github.com/mruby/mruby/pull/6204) Clean up the `.editorconfig` file
|
||||
- [#6209](https://github.com/mruby/mruby/pull/6209) Minor `.gitignore` clean up
|
||||
- [#6211](https://github.com/mruby/mruby/pull/6211) Minor `.gitignore` clean up; order entries
|
||||
- [#6216](https://github.com/mruby/mruby/pull/6216) Shared empty `iv_tbl` of module
|
||||
- [#6217](https://github.com/mruby/mruby/pull/6217) Strict declaration for `mrb_istruct_size()`
|
||||
- [#6219](https://github.com/mruby/mruby/pull/6219) Avoid assigning a fixed value in the loop
|
||||
- [#6220](https://github.com/mruby/mruby/pull/6220) Reorganize `mrb_cache_entry` and `mrb_method_t` types
|
||||
- [#6221](https://github.com/mruby/mruby/pull/6221) Arranging `each_backtrace()`
|
||||
- [#6222](https://github.com/mruby/mruby/pull/6222) Need to synchronize `dbg->regs` after VM call in `mrdb`
|
||||
- [#6224](https://github.com/mruby/mruby/pull/6224) `mrb_env_unshare()` to break the link to fiber
|
||||
- [#6225](https://github.com/mruby/mruby/pull/6225) Revert "Adjust environment when `mrb_exec_irep` happened."
|
||||
- [#6227](https://github.com/mruby/mruby/pull/6227) fix: `Array#shuffle(!)` result distribution
|
||||
- [#6228](https://github.com/mruby/mruby/pull/6228) Revert "`env` referred from top-level callinfo should not be unshared; fix #4019"
|
||||
- [#6230](https://github.com/mruby/mruby/pull/6230) Fix status of fiber after switched by exception raised
|
||||
- [#6231](https://github.com/mruby/mruby/pull/6231) Add a way to let other gems handle closing of fds in mruby-io
|
||||
- [#6232](https://github.com/mruby/mruby/pull/6232) Fold the code for freeing `env`
|
||||
- [#6233](https://github.com/mruby/mruby/pull/6233) Free stack memory at end of fiber
|
||||
- [#6235](https://github.com/mruby/mruby/pull/6235) fix `Array#delete` always firing the block when deleting `nil`
|
||||
- [#6236](https://github.com/mruby/mruby/pull/6236) unify the code for filter methods (and speed up `#reject!`)
|
||||
- [#6237](https://github.com/mruby/mruby/pull/6237) Stricter env objects to attach to ci
|
||||
- [#6238](https://github.com/mruby/mruby/pull/6238) Minimize zero initialization of the stack
|
||||
- [#6243](https://github.com/mruby/mruby/pull/6243) Fixed base64 decoding in `mruby-pack`
|
||||
- [#6244](https://github.com/mruby/mruby/pull/6244) Revise scope of role of `mrb_vm_run()`
|
||||
- [#6246](https://github.com/mruby/mruby/pull/6246) Fix typo in `test/t/hash.rb`
|
||||
- [#6249](https://github.com/mruby/mruby/pull/6249) Fix grammar in `src/vm.c`; `catched` -> `caught`
|
||||
- [#6250](https://github.com/mruby/mruby/pull/6250) Fix spelling
|
||||
- [#6251](https://github.com/mruby/mruby/pull/6251) Clean up root move `CODEOWNERS` to `.github` directory
|
||||
- [#6253](https://github.com/mruby/mruby/pull/6253) Allow recycling fibers by GC if not referenced directly
|
||||
- [#6256](https://github.com/mruby/mruby/pull/6256) Update documentation for `mrb_top_run()`
|
||||
- [#6257](https://github.com/mruby/mruby/pull/6257) fix some mrbconf.md typos
|
||||
- [#6260](https://github.com/mruby/mruby/pull/6260) Remove `exc_caught` from `mrb_vm_exec()`
|
||||
- [#6261](https://github.com/mruby/mruby/pull/6261) fix: `to_a` integer ranges with `begin > end` failing
|
||||
- [#6263](https://github.com/mruby/mruby/pull/6263) fix: `Array#delete` mistakenly calling block even if not passed
|
||||
- [#6264](https://github.com/mruby/mruby/pull/6264) Must pass keyword arguments for `Kernel#to_enum`
|
||||
- [#6265](https://github.com/mruby/mruby/pull/6265) Fixes `Dir.children` and `Dir.each_child`
|
||||
- [#6266](https://github.com/mruby/mruby/pull/6266) Passes the nonexistent key as a block argument in `Array#delete`
|
||||
- [#6273](https://github.com/mruby/mruby/pull/6273) Improvements to `mrb_protect_atexit()`
|
||||
- [#6275](https://github.com/mruby/mruby/pull/6275) Fixed `Binding#eval` that failed to assign to the same variable
|
||||
- [#6276](https://github.com/mruby/mruby/pull/6276) Always run `atexit` on the top-level call frame
|
||||
- [#6279](https://github.com/mruby/mruby/pull/6279) Include headers for malloc() explicitly; fix #6277
|
||||
- [#6280](https://github.com/mruby/mruby/pull/6280) Remove `MRB_ENV_CLOSED` flag
|
||||
- [#6281](https://github.com/mruby/mruby/pull/6281) Fixes local variables in `mruby-binding`.
|
||||
- [#6283](https://github.com/mruby/mruby/pull/6283) Simplify `uvenv()`
|
||||
- [#6288](https://github.com/mruby/mruby/pull/6288) Detach `env` of ci explicitly on atexit
|
||||
- [#6289](https://github.com/mruby/mruby/pull/6289) Simplify `OP_RETURN_BLK` and `OP_BREAK`
|
||||
- [#6290](https://github.com/mruby/mruby/pull/6290) Allow to change the output directory name of the `libmruby` file
|
||||
- [#6293](https://github.com/mruby/mruby/pull/6293) Changed the instruction table in `opcode.md`
|
||||
- [#6294](https://github.com/mruby/mruby/pull/6294) Optimise `mrb_iv_get`
|
||||
- [#6302](https://github.com/mruby/mruby/pull/6302) Minor cleanup in mrb_str_init
|
||||
- [#6303](https://github.com/mruby/mruby/pull/6303) mrb_str_aset_m() should return replace instead of str
|
||||
- [#6305](https://github.com/mruby/mruby/pull/6305) Protect keyword arguments in `prepare_missing()`
|
||||
- [#6308](https://github.com/mruby/mruby/pull/6308) Assume that `MRB_CATCH()` has `mrb->exc` set
|
||||
- [#6310](https://github.com/mruby/mruby/pull/6310) Doubling the call stack when extending it
|
||||
- [#6311](https://github.com/mruby/mruby/pull/6311) Added fast-path for positional arguments less than 15 in `OP_SEND`
|
||||
- [#6312](https://github.com/mruby/mruby/pull/6312) Omit error checking at `OP_RETURN`, `OP_RETURN_BLK` and `OP_BREAK`
|
||||
- [#6313](https://github.com/mruby/mruby/pull/6313) Fix wrong column number in opcode.md
|
||||
- [#6314](https://github.com/mruby/mruby/pull/6314) Optimize even?/odd? for big integers
|
||||
- [#6318](https://github.com/mruby/mruby/pull/6318) Shrink variables in `mrb_vm_exec()`
|
||||
- [#6320](https://github.com/mruby/mruby/pull/6320) Shrinking the code in `OP_BREAK` and `OP_RETURN_BLK`
|
||||
- [#6321](https://github.com/mruby/mruby/pull/6321) Avoid warnings in `lib/**/*.rb`
|
||||
- [#6322](https://github.com/mruby/mruby/pull/6322) Fix mrb_ro_data_p on Intel Mac
|
||||
- [#6324](https://github.com/mruby/mruby/pull/6324) Remove `localjump_error()`
|
||||
- [#6327](https://github.com/mruby/mruby/pull/6327) fix ncurses linking issues
|
||||
- [#6328](https://github.com/mruby/mruby/pull/6328) Fix use-after-free in `obj_free()` for env objects
|
||||
- [#6329](https://github.com/mruby/mruby/pull/6329) Fix use-after-free in `mrb_obj_alloc()`
|
||||
- [#6330](https://github.com/mruby/mruby/pull/6330) Add a precondition to call `mrb_env_unshare()`.
|
||||
- [#6331](https://github.com/mruby/mruby/pull/6331) Restore the GC arena with tests
|
||||
- [#6332](https://github.com/mruby/mruby/pull/6332) Must not depend on the “host” build to generate `mruby-compiler/core/y.tab.c`
|
||||
- [#6333](https://github.com/mruby/mruby/pull/6333) Reduce the number of branch instructions in the `heap_p()`
|
||||
- [#6335](https://github.com/mruby/mruby/pull/6335) Add `return_ci` in `CHECKPOINT_MAIN()` of `OP_RETURN`
|
||||
- [#6338](https://github.com/mruby/mruby/pull/6338) Need to place static proc objects into 8-byte alignments
|
||||
- [#6340](https://github.com/mruby/mruby/pull/6340) Fix use-after-free for `Array#<=>`
|
||||
- [#6341](https://github.com/mruby/mruby/pull/6341) Need to restore the GC arena after some function calls
|
||||
- [#6344](https://github.com/mruby/mruby/pull/6344) prefer using `mrb_yield` to call block arguments
|
||||
- [#6347](https://github.com/mruby/mruby/pull/6347) codegen.c,parse.y: remove flattening of `yield` arguments; fix #6346
|
||||
- [#6348](https://github.com/mruby/mruby/pull/6348) Cancel the warning disablement
|
||||
- [#6349](https://github.com/mruby/mruby/pull/6349) Perform GC before deleting directories
|
||||
- [#6350](https://github.com/mruby/mruby/pull/6350) Fixed character encoding conversion function mismatch
|
||||
- [#6351](https://github.com/mruby/mruby/pull/6351) Remove unnecessary `mrb_gc_arena_restore()`
|
||||
- [#6353](https://github.com/mruby/mruby/pull/6353) Fix use-after-free in `mrb_ary_delete()`
|
||||
- [#6356](https://github.com/mruby/mruby/pull/6356) Making splat argument objects invisible from Ruby side
|
||||
- [#6373](https://github.com/mruby/mruby/pull/6373) Add build config for Milk-V Duo (RISC-V Linux) board
|
||||
- [#6382](https://github.com/mruby/mruby/pull/6382) Make array objects invisible in `mrb_gc_register()`
|
||||
- [#6385](https://github.com/mruby/mruby/pull/6385) Small improvements for `mrb_gc_register()`
|
||||
- [#6386](https://github.com/mruby/mruby/pull/6386) Avoid calling `mrb_gv_set()` from `mrb_gc_unregister()`
|
||||
- [#6387](https://github.com/mruby/mruby/pull/6387) Small improvements for `mrb_gc_unregister()`
|
||||
- [#6390](https://github.com/mruby/mruby/pull/6390) Fix use-after-free by `mrb_gc_unregistor()`
|
||||
- [#6391](https://github.com/mruby/mruby/pull/6391) Fixed argument forwarding in `instance_exec`
|
||||
- [#6392](https://github.com/mruby/mruby/pull/6392) Fix argument forwarding in `mrb_exec_irep()`
|
||||
- [#6393](https://github.com/mruby/mruby/pull/6393) Follow-up to #6391
|
||||
- [#6395](https://github.com/mruby/mruby/pull/6395) Storing method-id inside Symbol#to_proc
|
||||
- [#6396](https://github.com/mruby/mruby/pull/6396) Milk-V Build Config: update GPIO gem URL
|
||||
- [#6397](https://github.com/mruby/mruby/pull/6397) boxing_no.h: rename BOXNIX_SET_VALUE -> BOXNO_SET_VALUE
|
||||
- [#6399](https://github.com/mruby/mruby/pull/6399) Add macOS 15 to the build
|
||||
- [#6405](https://github.com/mruby/mruby/pull/6405) `io_read`: use `%i` instead of `%d` in call to `mrb_raisef`
|
||||
- [#6407](https://github.com/mruby/mruby/pull/6407) Allow to exclude specific files in `rake install`
|
||||
- [#6408](https://github.com/mruby/mruby/pull/6408) Improve compliance with C++ standards
|
||||
- [#6410](https://github.com/mruby/mruby/pull/6410) Put `#include <stdlib.h>` in `parse.y`
|
||||
- [#6412](https://github.com/mruby/mruby/pull/6412) Distinguish the call frame of the generator with `OP_RETURN_BLK`
|
||||
- [#6413](https://github.com/mruby/mruby/pull/6413) Add links to documentation in `README.md`
|
||||
- [#6415](https://github.com/mruby/mruby/pull/6415) Fix numbered parameters when used as a singleton
|
||||
- [#6416](https://github.com/mruby/mruby/pull/6416) Optimize the "new" method's iseq
|
||||
- [#6419](https://github.com/mruby/mruby/pull/6419) Follow Ruby's behavior for numbered parameters in -> {}
|
||||
- [#6420](https://github.com/mruby/mruby/pull/6420) Update `labeler.yml`: add label for the `tools` directory
|
||||
- [#6422](https://github.com/mruby/mruby/pull/6422) Add annotations for function names defined in the preprocessor
|
||||
- [#6423](https://github.com/mruby/mruby/pull/6423) Adding a serialized test task
|
||||
- [#6427](https://github.com/mruby/mruby/pull/6427) Need to update `ci` variable after re-entry to VM
|
||||
- [#6428](https://github.com/mruby/mruby/pull/6428) Change the limits of OP_ADDI and OP_SUBI from 0-127 to 0-255.
|
||||
- [#6429](https://github.com/mruby/mruby/pull/6429) Fix numbered parameters when used as hash keys
|
||||
- [#6432](https://github.com/mruby/mruby/pull/6432) Moving code in macro arguments out of macros
|
||||
- [#6434](https://github.com/mruby/mruby/pull/6434) Added document "Layout of the mruby filesystem"
|
||||
- [#6436](https://github.com/mruby/mruby/pull/6436) Make `rake doc:update-index` prettier friendly
|
||||
- [#6437](https://github.com/mruby/mruby/pull/6437) Add more details to the pre-commit config
|
||||
- [#6438](https://github.com/mruby/mruby/pull/6438) Remove unused `MRuby::Build#list_install_excludes` method
|
||||
- [#6440](https://github.com/mruby/mruby/pull/6440) Fix `redo` keyword
|
||||
- [#6442](https://github.com/mruby/mruby/pull/6442) Fixed wrong range condition in `OP_JMPUW`
|
||||
- [#6443](https://github.com/mruby/mruby/pull/6443) Fix NODE_NEGATE for bigints
|
||||
- [#6444](https://github.com/mruby/mruby/pull/6444) Add test cases for bigints
|
||||
- [#6446](https://github.com/mruby/mruby/pull/6446) Omit the `_WIN64` definition check
|
||||
- [#6447](https://github.com/mruby/mruby/pull/6447) Fixed `File.expand_path`
|
||||
- [#6448](https://github.com/mruby/mruby/pull/6448) Suppress presym in `mruby/ext/io.h` file
|
||||
- [#6449](https://github.com/mruby/mruby/pull/6449) Using presym in the `mruby-io/src/file_test.c` file
|
||||
- [#6450](https://github.com/mruby/mruby/pull/6450) Change `MRB_WITH_IO_PREAD_PWRITE` configuration name
|
||||
- [#6454](https://github.com/mruby/mruby/pull/6454) mruby-bigint: handle rhs bigint in int_mod and int_divmod functions
|
||||
- [#6455](https://github.com/mruby/mruby/pull/6455) mruby-bigint: fix rounding behavior in mpz_mdiv and mpz_mdivmod functions
|
||||
- [#6457](https://github.com/mruby/mruby/pull/6457) bigint: fix bug with division of a small number by a bigint
|
||||
- [#6459](https://github.com/mruby/mruby/pull/6459) `FileTest` is a module
|
||||
- [#6461](https://github.com/mruby/mruby/pull/6461) To create a release package file in draft
|
||||
- [#6462](https://github.com/mruby/mruby/pull/6462) Properly cast the return value of `memchr()`
|
||||
- [#6463](https://github.com/mruby/mruby/pull/6463) Add `level` argument to `File.dirname`
|
||||
- [#6465](https://github.com/mruby/mruby/pull/6465) Add initial playstation portable crossbuild support
|
||||
- [#6468](https://github.com/mruby/mruby/pull/6468) Fixed missing changes to `IB_FIND_BY_KEY()` parameter names
|
||||
- [#6469](https://github.com/mruby/mruby/pull/6469) Add more `const` qualifier for `RProc`
|
||||
- [#6472](https://github.com/mruby/mruby/pull/6472) Moved tests for `Integer#quo`
|
||||
- [#6473](https://github.com/mruby/mruby/pull/6473) Hide `mpz_and()` symbol
|
||||
- [#6473](https://github.com/mruby/mruby/pull/6473) Hide mpz_and() symbol
|
||||
- [#6474](https://github.com/mruby/mruby/pull/6474) Avoid array object creation with “unknown keyword” error
|
||||
- [#6475](https://github.com/mruby/mruby/pull/6475) Don't include deleted mruby-print
|
||||
- [#6478](https://github.com/mruby/mruby/pull/6478) Fixed buffer overrun in function `chars2bytes()`
|
||||
- [#6479](https://github.com/mruby/mruby/pull/6479) Reimplementation of `File.expand_path` method
|
||||
- [#6482](https://github.com/mruby/mruby/pull/6482) Add `File.absolute_path?` method
|
||||
- [#6487](https://github.com/mruby/mruby/pull/6487) Add Emscripten toolchain & build_config
|
||||
|
||||
@@ -30,12 +30,10 @@ of the Ministry of Economy, Trade and Industry of Japan.
|
||||
|
||||
## How to get mruby
|
||||
|
||||
To get mruby, you can download the stable version 3.3.0 from the official mruby
|
||||
To get mruby, you can download the stable version 3.4.0 from the official mruby
|
||||
GitHub repository or clone the trunk of the mruby source tree with the "git
|
||||
clone" command. You can also install and compile mruby using [ruby-install](https://github.com/postmodern/ruby-install), [ruby-build](https://github.com/rbenv/ruby-build) or [rvm](https://github.com/rvm/rvm).
|
||||
|
||||
The release candidate version 3.4.0 of mruby can be downloaded via the following URL: [https://github.com/mruby/mruby/archive/3.4.0-rc.zip](https://github.com/mruby/mruby/archive/3.4.0-rc.zip)
|
||||
|
||||
The latest development version of mruby can be downloaded via the following URL: [https://github.com/mruby/mruby/zipball/master](https://github.com/mruby/mruby/zipball/master)
|
||||
|
||||
The trunk of the mruby source tree can be checked out with the
|
||||
|
||||
@@ -40,7 +40,7 @@ To confirm mrdb was installed properly, run mrdb with the `--version` option:
|
||||
|
||||
```bash
|
||||
$ mrdb --version
|
||||
mruby 3.3.0 (2024-02-14)
|
||||
mruby 3.4.0 (2025-04-20)
|
||||
```
|
||||
|
||||
## 2.2 Basic Operation
|
||||
|
||||
@@ -72,75 +72,6 @@ p Liste.new "foobar"
|
||||
|
||||
`ArgumentError` is raised.
|
||||
|
||||
## Method visibility
|
||||
|
||||
For simplicity reasons no method visibility (public/private/protected) is
|
||||
supported. Those methods are defined, but they are dummy methods.
|
||||
|
||||
```ruby
|
||||
class VisibleTest
|
||||
|
||||
def public_method; end
|
||||
|
||||
private
|
||||
def private_method; end
|
||||
|
||||
end
|
||||
|
||||
p VisibleTest.new.respond_to?(:private_method, false)
|
||||
p VisibleTest.new.respond_to?(:private_method, true)
|
||||
```
|
||||
|
||||
#### Ruby [ruby 2.0.0p645 (2015-04-13 revision 50299)]
|
||||
|
||||
```
|
||||
false
|
||||
true
|
||||
```
|
||||
|
||||
#### mruby [3.1.0 (2022-05-12)]
|
||||
|
||||
```
|
||||
true
|
||||
true
|
||||
```
|
||||
|
||||
### Visibility Declaration
|
||||
|
||||
The declaration form of following visibility methods are not implemented.
|
||||
|
||||
- `public`
|
||||
- `private`
|
||||
- `protected`
|
||||
- `module_function`
|
||||
|
||||
Especially, `module_function` method is not dummy, but no declaration form.
|
||||
|
||||
```ruby
|
||||
module TestModule
|
||||
module_function
|
||||
def test_func
|
||||
p 'test_func called'
|
||||
end
|
||||
|
||||
test_func
|
||||
end
|
||||
|
||||
p 'ok'
|
||||
```
|
||||
|
||||
#### Ruby [ruby 2.5.5p157 (2019-03-15 revision 67260)]
|
||||
|
||||
```
|
||||
ok
|
||||
```
|
||||
|
||||
#### mruby [3.1.0 (2022-05-12)]
|
||||
|
||||
```
|
||||
test.rb:8: undefined method 'test_func' (NoMethodError)
|
||||
```
|
||||
|
||||
## `defined?`
|
||||
|
||||
The `defined?` keyword is considered too complex to be fully
|
||||
|
||||
+251
@@ -0,0 +1,251 @@
|
||||
# User visible changes in `mruby3.4` from `mruby3.3`
|
||||
|
||||
"**_NOTE_**:" are changes to be aware of.
|
||||
|
||||
# The language
|
||||
|
||||
- mruby now supports `private` and `protected` visibitily ([b0db0bd](https://github.com/mruby/mruby/commit/b0db0bd))
|
||||
- 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))
|
||||
- Many methods are made private according to CRuby visibility ([4a0e806](https://github.com/mruby/mruby/commit/4a0e806))
|
||||
- Generate OP_SSEND for `self.method` type calls ([111fe4b](https://github.com/mruby/mruby/commit/111fe4b))
|
||||
- `initialize` method will be always private ([eb8b412](https://github.com/mruby/mruby/commit/eb8b412))
|
||||
- Add new hooks `method_removed`, `method_undefined` ([9c74f6e](https://github.com/mruby/mruby/commit/9c74f6e))
|
||||
- Add new hooks `singleton_method_removed`, `singleton_method_undefined` ([0863c08](https://github.com/mruby/mruby/commit/0863c08))
|
||||
- Updated `OP_DEF` output from codedump ([3a3e877](https://github.com/mruby/mruby/commit/3a3e877))
|
||||
- Better handling of binary strings, e.g. String#b ([b0127f0](https://github.com/mruby/mruby/commit/b0127f0))
|
||||
- Hash `to_s` format has changed ([baeeb5e](https://github.com/mruby/mruby/commit/baeeb5e))
|
||||
- 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))
|
||||
- Constant folding for `String#+` ([6687bdd](https://github.com/mruby/mruby/commit/6687bdd))
|
||||
- Remove Float bit-operation ([db8368f](https://github.com/mruby/mruby/commit/db8368f))
|
||||
- use SWAR technique for strlen performance ([cbb31e6](https://github.com/mruby/mruby/commit/cbb31e6))
|
||||
- use merge sort for `Array#sort` ([5bd63d6](https://github.com/mruby/mruby/commit/5bd63d6))
|
||||
|
||||
# Changes in C API
|
||||
|
||||
- pool.c renamed to mempool.c (and mrb_pool to mrb_mempool) ([49525fa](https://github.com/mruby/mruby/commit/49525fa))
|
||||
- mrb_pool_value renamed to mrb_irep_pool to reduce confusion ([62ef5db](https://github.com/mruby/mruby/commit/62ef5db))
|
||||
- rename BOXNIX_SET_VALUE to BOXNO_SET_VALUE ([#6397](https://github.com/mruby/mruby/pull/6397))
|
||||
- `MRB_FROZEN_P()` is replaced by `mrb_frozen_p()` ([c11d18e](https://github.com/mruby/mruby/commit/c11d18e))
|
||||
- rename `color` to `gc_color` ([0e79f6b](https://github.com/mruby/mruby/commit/0e79f6b), [1e36d76](https://github.com/mruby/mruby/commit/1e36d76))
|
||||
- add `obj->frozen` instead of flags `MRB_SET_FROZEN_FLAG`/`MRB_UNSET_FROZEN_FLAG` ([8276143](https://github.com/mruby/mruby/commit/8276143))
|
||||
|
||||
# Build & Configuration
|
||||
|
||||
- New Build Target: `test:run:serial`, `test:run:serial:lib`, `test:run:serial:bin` ([#6423](https://github.com/mruby/mruby/pull/6423))
|
||||
- New Platform: Playstation Portable ([#6022](https://github.com/mruby/mruby/pull/6465))
|
||||
- New Platform: emscripten ([#6487](https://github.com/mruby/mruby/pull/6487))
|
||||
- New Config: no-float (with MRB_NO_FLOAT) ([32200f1](https://github.com/mruby/mruby/commit/32200f1))
|
||||
|
||||
# Changes in mrbgems
|
||||
|
||||
- **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))
|
||||
- **mruby-enum-lazy**: Add Enumerable::Lazy#grep_v to mruby-enum-lazy ([#6171](https://github.com/mruby/mruby/pull/6171))
|
||||
- **mruby-io**: Add `level` argument to `File.dirname` ([#6463](https://github.com/mruby/mruby/pull/6463))
|
||||
- **mruby-io**: File.absolute_path? ([#6482](https://github.com/mruby/mruby/pull/6482))
|
||||
- **mruby-io**: File.absolute_path ([96113a2](https://github.com/mruby/mruby/commit/96113a2))
|
||||
- **mruby-toplevel-ext**: top-level public/private/protected moved to the core ([2a876d2](https://github.com/mruby/mruby/commit/2a876d2))
|
||||
- **mruby-metaprog**: method list methods now works according to the visibility ([9229da1](https://github.com/mruby/mruby/commit/9229da1))
|
||||
- **mruby-metaprog**: `public_instance_methods`, `private_instance_methods`, `protected_instance_methods` ([9e3e7b2](https://github.com/mruby/mruby/commit/9e3e7b2))
|
||||
- **mruby-encoding**: MRB_UTF8_STRING turned on automatically with this gem ([74bdae9](https://github.com/mruby/mruby/commit/74bdae9))
|
||||
|
||||
# Fixed GitHub Issues
|
||||
|
||||
- [#6173](https://github.com/mruby/mruby/issues/6173) Fails to build with tcc(Tiny C Compiler)
|
||||
- [#6156](https://github.com/mruby/mruby/issues/6156) '/LIBPATH' issue
|
||||
- [#6183](https://github.com/mruby/mruby/issues/6183) ".e".to_f returns NAN
|
||||
- [#6182](https://github.com/mruby/mruby/issues/6182) mrb_read_float() converts "0.3" with a small error compared to strtod()
|
||||
- [#6210](https://github.com/mruby/mruby/issues/6210) Unary minus seems broken
|
||||
- [#6255](https://github.com/mruby/mruby/issues/6255) Wrong number of characters in broken UTF-8 string
|
||||
- [#4038](https://github.com/mruby/mruby/issues/4038) Heap buffer overflow in OP_ENTER
|
||||
- [#6262](https://github.com/mruby/mruby/issues/6262) Unable to define == for objects when using Array#delete
|
||||
- [#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
|
||||
- [#6277](https://github.com/mruby/mruby/issues/6277) MSVC: can't use malloc() in string.c with WIN32_LEAN_AND_MEAN
|
||||
- [#6240](https://github.com/mruby/mruby/issues/6240) Differentiate between lib and lib64 in the build settings.
|
||||
- [#6304](https://github.com/mruby/mruby/issues/6304) Calling method_missing with only Kwargs passes arguments incorrectly
|
||||
- [#6317](https://github.com/mruby/mruby/issues/6317) mrb_gc_register() may cause GC and collect the object being protected
|
||||
- [#6307](https://github.com/mruby/mruby/issues/6307) Planned change patch for mrb_vm_exec()
|
||||
- [#6298](https://github.com/mruby/mruby/issues/6298) foo :bar {} is legal in mruby?
|
||||
- [#6326](https://github.com/mruby/mruby/issues/6326) Detect “Use-after-free” with address sanitizer
|
||||
- [#5358](https://github.com/mruby/mruby/issues/5358) static warning from getpwnam
|
||||
- [#6339](https://github.com/mruby/mruby/issues/6339) mrb_ary_delete() may refer to an invalid address (use-after-free)
|
||||
- [#6346](https://github.com/mruby/mruby/issues/6346) Block kwargs are passed as last positional arg when using yield
|
||||
- [#6365](https://github.com/mruby/mruby/issues/6365) powl() not available when compiling for Dreamcast
|
||||
- [#6369](https://github.com/mruby/mruby/issues/6369) 100x Performance Regression from 3.1
|
||||
- [#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
|
||||
- [#6297](https://github.com/mruby/mruby/issues/6297) Assigning to a block variable changes the actual block (thus affecting block_given? and yield)
|
||||
- [#6389](https://github.com/mruby/mruby/issues/6389) instance_exec named block args don't work properly
|
||||
- [#6388](https://github.com/mruby/mruby/issues/6388) Recent commit broke my windows build
|
||||
- [#6411](https://github.com/mruby/mruby/issues/6411) Wrong function unwinding when using return in a block
|
||||
- [#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
|
||||
- [#6441](https://github.com/mruby/mruby/issues/6441) break inside while loop will execute the ensure block outside of the while loop
|
||||
- [#6453](https://github.com/mruby/mruby/issues/6453) Bigint: incorrect behavior of ^ operator
|
||||
- [#6452](https://github.com/mruby/mruby/issues/6452) Bigint: weird mod behavior
|
||||
- [#6451](https://github.com/mruby/mruby/issues/6451) Bigint: incorrect division behavior
|
||||
- [#6456](https://github.com/mruby/mruby/issues/6456) bigint: bug with division of a small number by a bigint
|
||||
- [#6466](https://github.com/mruby/mruby/issues/6466) mruby-bin-mruby using Kernel#p and Kernel#print in bintest fails test
|
||||
- [#6467](https://github.com/mruby/mruby/issues/6467) Heap-Use-After-Free due to Recursive group_by Calls
|
||||
- [#6471](https://github.com/mruby/mruby/issues/6471) Discrepancy in codegen for binary operations between master branch and 3.3.0
|
||||
- [#6477](https://github.com/mruby/mruby/issues/6477) heap-buffer-overflow in mrb_vm_exec
|
||||
- [#6485](https://github.com/mruby/mruby/issues/6485) Hash#rehash does not check if the hash is frozen
|
||||
- [#6483](https://github.com/mruby/mruby/issues/6483) Hash#default_proc= accepts arbitrary objects that are not callable
|
||||
- [#6491](https://github.com/mruby/mruby/issues/6491) Destroy existing string literals when composing string literals
|
||||
|
||||
# Merged Pull Requests (User Visible Ones)
|
||||
|
||||
- [#6171](https://github.com/mruby/mruby/pull/6171) Add Enumerable::Lazy#grep_v to mruby-enum-lazy
|
||||
- [#6174](https://github.com/mruby/mruby/pull/6174) Fix MRUBY_PACKAGE_DIR in mruby-config.bat
|
||||
- [#6175](https://github.com/mruby/mruby/pull/6175) Corrected strange conditional in mrb_vm_run()
|
||||
- [#6176](https://github.com/mruby/mruby/pull/6176) Stop assuming alias proc in CI_PROC_SET()
|
||||
- [#6177](https://github.com/mruby/mruby/pull/6177) gha: add macOS 14 to the build
|
||||
- [#6184](https://github.com/mruby/mruby/pull/6184) Remove the L_STOP label
|
||||
- [#6185](https://github.com/mruby/mruby/pull/6185) Added mrb_callinfo::u.keep_context for clarity
|
||||
- [#6186](https://github.com/mruby/mruby/pull/6186) Omit NULL check of e->cxt in OP_RETURN_BLK
|
||||
- [#6191](https://github.com/mruby/mruby/pull/6191) Speed up symbol equality comparison
|
||||
- [#6192](https://github.com/mruby/mruby/pull/6192) Fix `OP_STOP` with exception
|
||||
- [#6193](https://github.com/mruby/mruby/pull/6193) Fix wrong assertion in `OP_SENDB`.
|
||||
- [#6194](https://github.com/mruby/mruby/pull/6194) Simplify the calculation of the number of closures in `MRB_TT_FIBER`
|
||||
- [#6197](https://github.com/mruby/mruby/pull/6197) Fix int_xor to call flo_xor.
|
||||
- [#6201](https://github.com/mruby/mruby/pull/6201) tasks/doc.rake: standardize the `rake doc` error messages
|
||||
- [#6202](https://github.com/mruby/mruby/pull/6202) Remove the `.yardoc` folder with `rake doc:clean:api`
|
||||
- [#6204](https://github.com/mruby/mruby/pull/6204) Clean up the `.editorconfig` file
|
||||
- [#6209](https://github.com/mruby/mruby/pull/6209) Minor `.gitignore` clean up
|
||||
- [#6211](https://github.com/mruby/mruby/pull/6211) Minor `.gitignore` clean up; order entries
|
||||
- [#6216](https://github.com/mruby/mruby/pull/6216) Shared empty `iv_tbl` of module
|
||||
- [#6217](https://github.com/mruby/mruby/pull/6217) Strict declaration for `mrb_istruct_size()`
|
||||
- [#6219](https://github.com/mruby/mruby/pull/6219) Avoid assigning a fixed value in the loop
|
||||
- [#6220](https://github.com/mruby/mruby/pull/6220) Reorganize `mrb_cache_entry` and `mrb_method_t` types
|
||||
- [#6221](https://github.com/mruby/mruby/pull/6221) Arranging `each_backtrace()`
|
||||
- [#6222](https://github.com/mruby/mruby/pull/6222) Need to synchronize `dbg->regs` after VM call in `mrdb`
|
||||
- [#6224](https://github.com/mruby/mruby/pull/6224) `mrb_env_unshare()` to break the link to fiber
|
||||
- [#6225](https://github.com/mruby/mruby/pull/6225) Revert "Adjust environment when `mrb_exec_irep` happened."
|
||||
- [#6227](https://github.com/mruby/mruby/pull/6227) fix: `Array#shuffle(!)` result distribution
|
||||
- [#6228](https://github.com/mruby/mruby/pull/6228) Revert "`env` referred from top-level callinfo should not be unshared; fix #4019"
|
||||
- [#6230](https://github.com/mruby/mruby/pull/6230) Fix status of fiber after switched by exception raised
|
||||
- [#6231](https://github.com/mruby/mruby/pull/6231) Add a way to let other gems handle closing of fds in mruby-io
|
||||
- [#6232](https://github.com/mruby/mruby/pull/6232) Fold the code for freeing `env`
|
||||
- [#6233](https://github.com/mruby/mruby/pull/6233) Free stack memory at end of fiber
|
||||
- [#6235](https://github.com/mruby/mruby/pull/6235) fix `Array#delete` always firing the block when deleting `nil`
|
||||
- [#6236](https://github.com/mruby/mruby/pull/6236) unify the code for filter methods (and speed up `#reject!`)
|
||||
- [#6237](https://github.com/mruby/mruby/pull/6237) Stricter env objects to attach to ci
|
||||
- [#6238](https://github.com/mruby/mruby/pull/6238) Minimize zero initialization of the stack
|
||||
- [#6243](https://github.com/mruby/mruby/pull/6243) Fixed base64 decoding in `mruby-pack`
|
||||
- [#6244](https://github.com/mruby/mruby/pull/6244) Revise scope of role of `mrb_vm_run()`
|
||||
- [#6246](https://github.com/mruby/mruby/pull/6246) Fix typo in `test/t/hash.rb`
|
||||
- [#6249](https://github.com/mruby/mruby/pull/6249) Fix grammar in `src/vm.c`; `catched` -> `caught`
|
||||
- [#6250](https://github.com/mruby/mruby/pull/6250) Fix spelling
|
||||
- [#6251](https://github.com/mruby/mruby/pull/6251) Clean up root move `CODEOWNERS` to `.github` directory
|
||||
- [#6253](https://github.com/mruby/mruby/pull/6253) Allow recycling fibers by GC if not referenced directly
|
||||
- [#6256](https://github.com/mruby/mruby/pull/6256) Update documentation for `mrb_top_run()`
|
||||
- [#6257](https://github.com/mruby/mruby/pull/6257) fix some mrbconf.md typos
|
||||
- [#6260](https://github.com/mruby/mruby/pull/6260) Remove `exc_caught` from `mrb_vm_exec()`
|
||||
- [#6261](https://github.com/mruby/mruby/pull/6261) fix: `to_a` integer ranges with `begin > end` failing
|
||||
- [#6263](https://github.com/mruby/mruby/pull/6263) fix: `Array#delete` mistakenly calling block even if not passed
|
||||
- [#6264](https://github.com/mruby/mruby/pull/6264) Must pass keyword arguments for `Kernel#to_enum`
|
||||
- [#6265](https://github.com/mruby/mruby/pull/6265) Fixes `Dir.children` and `Dir.each_child`
|
||||
- [#6266](https://github.com/mruby/mruby/pull/6266) Passes the nonexistent key as a block argument in `Array#delete`
|
||||
- [#6273](https://github.com/mruby/mruby/pull/6273) Improvements to `mrb_protect_atexit()`
|
||||
- [#6275](https://github.com/mruby/mruby/pull/6275) Fixed `Binding#eval` that failed to assign to the same variable
|
||||
- [#6276](https://github.com/mruby/mruby/pull/6276) Always run `atexit` on the top-level call frame
|
||||
- [#6279](https://github.com/mruby/mruby/pull/6279) Include headers for malloc() explicitly; fix #6277
|
||||
- [#6280](https://github.com/mruby/mruby/pull/6280) Remove `MRB_ENV_CLOSED` flag
|
||||
- [#6281](https://github.com/mruby/mruby/pull/6281) Fixes local variables in `mruby-binding`.
|
||||
- [#6283](https://github.com/mruby/mruby/pull/6283) Simplify `uvenv()`
|
||||
- [#6288](https://github.com/mruby/mruby/pull/6288) Detach `env` of ci explicitly on atexit
|
||||
- [#6289](https://github.com/mruby/mruby/pull/6289) Simplify `OP_RETURN_BLK` and `OP_BREAK`
|
||||
- [#6290](https://github.com/mruby/mruby/pull/6290) Allow to change the output directory name of the `libmruby` file
|
||||
- [#6293](https://github.com/mruby/mruby/pull/6293) Changed the instruction table in `opcode.md`
|
||||
- [#6294](https://github.com/mruby/mruby/pull/6294) Optimise `mrb_iv_get`
|
||||
- [#6302](https://github.com/mruby/mruby/pull/6302) Minor cleanup in mrb_str_init
|
||||
- [#6303](https://github.com/mruby/mruby/pull/6303) mrb_str_aset_m() should return replace instead of str
|
||||
- [#6305](https://github.com/mruby/mruby/pull/6305) Protect keyword arguments in `prepare_missing()`
|
||||
- [#6308](https://github.com/mruby/mruby/pull/6308) Assume that `MRB_CATCH()` has `mrb->exc` set
|
||||
- [#6310](https://github.com/mruby/mruby/pull/6310) Doubling the call stack when extending it
|
||||
- [#6311](https://github.com/mruby/mruby/pull/6311) Added fast-path for positional arguments less than 15 in `OP_SEND`
|
||||
- [#6312](https://github.com/mruby/mruby/pull/6312) Omit error checking at `OP_RETURN`, `OP_RETURN_BLK` and `OP_BREAK`
|
||||
- [#6313](https://github.com/mruby/mruby/pull/6313) Fix wrong column number in opcode.md
|
||||
- [#6314](https://github.com/mruby/mruby/pull/6314) Optimize even?/odd? for big integers
|
||||
- [#6318](https://github.com/mruby/mruby/pull/6318) Shrink variables in `mrb_vm_exec()`
|
||||
- [#6320](https://github.com/mruby/mruby/pull/6320) Shrinking the code in `OP_BREAK` and `OP_RETURN_BLK`
|
||||
- [#6321](https://github.com/mruby/mruby/pull/6321) Avoid warnings in `lib/**/*.rb`
|
||||
- [#6322](https://github.com/mruby/mruby/pull/6322) Fix mrb_ro_data_p on Intel Mac
|
||||
- [#6324](https://github.com/mruby/mruby/pull/6324) Remove `localjump_error()`
|
||||
- [#6327](https://github.com/mruby/mruby/pull/6327) fix ncurses linking issues
|
||||
- [#6328](https://github.com/mruby/mruby/pull/6328) Fix use-after-free in `obj_free()` for env objects
|
||||
- [#6329](https://github.com/mruby/mruby/pull/6329) Fix use-after-free in `mrb_obj_alloc()`
|
||||
- [#6330](https://github.com/mruby/mruby/pull/6330) Add a precondition to call `mrb_env_unshare()`.
|
||||
- [#6331](https://github.com/mruby/mruby/pull/6331) Restore the GC arena with tests
|
||||
- [#6332](https://github.com/mruby/mruby/pull/6332) Must not depend on the “host” build to generate `mruby-compiler/core/y.tab.c`
|
||||
- [#6333](https://github.com/mruby/mruby/pull/6333) Reduce the number of branch instructions in the `heap_p()`
|
||||
- [#6335](https://github.com/mruby/mruby/pull/6335) Add `return_ci` in `CHECKPOINT_MAIN()` of `OP_RETURN`
|
||||
- [#6338](https://github.com/mruby/mruby/pull/6338) Need to place static proc objects into 8-byte alignments
|
||||
- [#6340](https://github.com/mruby/mruby/pull/6340) Fix use-after-free for `Array#<=>`
|
||||
- [#6341](https://github.com/mruby/mruby/pull/6341) Need to restore the GC arena after some function calls
|
||||
- [#6344](https://github.com/mruby/mruby/pull/6344) prefer using `mrb_yield` to call block arguments
|
||||
- [#6347](https://github.com/mruby/mruby/pull/6347) codegen.c,parse.y: remove flattening of `yield` arguments; fix #6346
|
||||
- [#6348](https://github.com/mruby/mruby/pull/6348) Cancel the warning disablement
|
||||
- [#6349](https://github.com/mruby/mruby/pull/6349) Perform GC before deleting directories
|
||||
- [#6350](https://github.com/mruby/mruby/pull/6350) Fixed character encoding conversion function mismatch
|
||||
- [#6351](https://github.com/mruby/mruby/pull/6351) Remove unnecessary `mrb_gc_arena_restore()`
|
||||
- [#6353](https://github.com/mruby/mruby/pull/6353) Fix use-after-free in `mrb_ary_delete()`
|
||||
- [#6356](https://github.com/mruby/mruby/pull/6356) Making splat argument objects invisible from Ruby side
|
||||
- [#6373](https://github.com/mruby/mruby/pull/6373) Add build config for Milk-V Duo (RISC-V Linux) board
|
||||
- [#6382](https://github.com/mruby/mruby/pull/6382) Make array objects invisible in `mrb_gc_register()`
|
||||
- [#6385](https://github.com/mruby/mruby/pull/6385) Small improvements for `mrb_gc_register()`
|
||||
- [#6386](https://github.com/mruby/mruby/pull/6386) Avoid calling `mrb_gv_set()` from `mrb_gc_unregister()`
|
||||
- [#6387](https://github.com/mruby/mruby/pull/6387) Small improvements for `mrb_gc_unregister()`
|
||||
- [#6390](https://github.com/mruby/mruby/pull/6390) Fix use-after-free by `mrb_gc_unregistor()`
|
||||
- [#6391](https://github.com/mruby/mruby/pull/6391) Fixed argument forwarding in `instance_exec`
|
||||
- [#6392](https://github.com/mruby/mruby/pull/6392) Fix argument forwarding in `mrb_exec_irep()`
|
||||
- [#6393](https://github.com/mruby/mruby/pull/6393) Follow-up to #6391
|
||||
- [#6395](https://github.com/mruby/mruby/pull/6395) Storing method-id inside Symbol#to_proc
|
||||
- [#6396](https://github.com/mruby/mruby/pull/6396) Milk-V Build Config: update GPIO gem URL
|
||||
- [#6397](https://github.com/mruby/mruby/pull/6397) boxing_no.h: rename BOXNIX_SET_VALUE -> BOXNO_SET_VALUE
|
||||
- [#6399](https://github.com/mruby/mruby/pull/6399) Add macOS 15 to the build
|
||||
- [#6405](https://github.com/mruby/mruby/pull/6405) `io_read`: use `%i` instead of `%d` in call to `mrb_raisef`
|
||||
- [#6407](https://github.com/mruby/mruby/pull/6407) Allow to exclude specific files in `rake install`
|
||||
- [#6408](https://github.com/mruby/mruby/pull/6408) Improve compliance with C++ standards
|
||||
- [#6410](https://github.com/mruby/mruby/pull/6410) Put `#include <stdlib.h>` in `parse.y`
|
||||
- [#6412](https://github.com/mruby/mruby/pull/6412) Distinguish the call frame of the generator with `OP_RETURN_BLK`
|
||||
- [#6413](https://github.com/mruby/mruby/pull/6413) Add links to documentation in `README.md`
|
||||
- [#6415](https://github.com/mruby/mruby/pull/6415) Fix numbered parameters when used as a singleton
|
||||
- [#6416](https://github.com/mruby/mruby/pull/6416) Optimize the "new" method's iseq
|
||||
- [#6419](https://github.com/mruby/mruby/pull/6419) Follow Ruby's behavior for numbered parameters in -> {}
|
||||
- [#6420](https://github.com/mruby/mruby/pull/6420) Update `labeler.yml`: add label for the `tools` directory
|
||||
- [#6422](https://github.com/mruby/mruby/pull/6422) Add annotations for function names defined in the preprocessor
|
||||
- [#6423](https://github.com/mruby/mruby/pull/6423) Adding a serialized test task
|
||||
- [#6427](https://github.com/mruby/mruby/pull/6427) Need to update `ci` variable after re-entry to VM
|
||||
- [#6428](https://github.com/mruby/mruby/pull/6428) Change the limits of OP_ADDI and OP_SUBI from 0-127 to 0-255.
|
||||
- [#6429](https://github.com/mruby/mruby/pull/6429) Fix numbered parameters when used as hash keys
|
||||
- [#6432](https://github.com/mruby/mruby/pull/6432) Moving code in macro arguments out of macros
|
||||
- [#6434](https://github.com/mruby/mruby/pull/6434) Added document "Layout of the mruby filesystem"
|
||||
- [#6436](https://github.com/mruby/mruby/pull/6436) Make `rake doc:update-index` prettier friendly
|
||||
- [#6437](https://github.com/mruby/mruby/pull/6437) Add more details to the pre-commit config
|
||||
- [#6438](https://github.com/mruby/mruby/pull/6438) Remove unused `MRuby::Build#list_install_excludes` method
|
||||
- [#6440](https://github.com/mruby/mruby/pull/6440) Fix `redo` keyword
|
||||
- [#6442](https://github.com/mruby/mruby/pull/6442) Fixed wrong range condition in `OP_JMPUW`
|
||||
- [#6443](https://github.com/mruby/mruby/pull/6443) Fix NODE_NEGATE for bigints
|
||||
- [#6444](https://github.com/mruby/mruby/pull/6444) Add test cases for bigints
|
||||
- [#6446](https://github.com/mruby/mruby/pull/6446) Omit the `_WIN64` definition check
|
||||
- [#6447](https://github.com/mruby/mruby/pull/6447) Fixed `File.expand_path`
|
||||
- [#6448](https://github.com/mruby/mruby/pull/6448) Suppress presym in `mruby/ext/io.h` file
|
||||
- [#6449](https://github.com/mruby/mruby/pull/6449) Using presym in the `mruby-io/src/file_test.c` file
|
||||
- [#6450](https://github.com/mruby/mruby/pull/6450) Change `MRB_WITH_IO_PREAD_PWRITE` configuration name
|
||||
- [#6454](https://github.com/mruby/mruby/pull/6454) mruby-bigint: handle rhs bigint in int_mod and int_divmod functions
|
||||
- [#6455](https://github.com/mruby/mruby/pull/6455) mruby-bigint: fix rounding behavior in mpz_mdiv and mpz_mdivmod functions
|
||||
- [#6457](https://github.com/mruby/mruby/pull/6457) bigint: fix bug with division of a small number by a bigint
|
||||
- [#6459](https://github.com/mruby/mruby/pull/6459) `FileTest` is a module
|
||||
- [#6461](https://github.com/mruby/mruby/pull/6461) To create a release package file in draft
|
||||
- [#6462](https://github.com/mruby/mruby/pull/6462) Properly cast the return value of `memchr()`
|
||||
- [#6463](https://github.com/mruby/mruby/pull/6463) Add `level` argument to `File.dirname`
|
||||
- [#6465](https://github.com/mruby/mruby/pull/6465) Add initial playstation portable crossbuild support
|
||||
- [#6468](https://github.com/mruby/mruby/pull/6468) Fixed missing changes to `IB_FIND_BY_KEY()` parameter names
|
||||
- [#6469](https://github.com/mruby/mruby/pull/6469) Add more `const` qualifier for `RProc`
|
||||
- [#6472](https://github.com/mruby/mruby/pull/6472) Moved tests for `Integer#quo`
|
||||
- [#6473](https://github.com/mruby/mruby/pull/6473) Hide `mpz_and()` symbol
|
||||
- [#6473](https://github.com/mruby/mruby/pull/6473) Hide mpz_and() symbol
|
||||
- [#6474](https://github.com/mruby/mruby/pull/6474) Avoid array object creation with “unknown keyword” error
|
||||
- [#6475](https://github.com/mruby/mruby/pull/6475) Don't include deleted mruby-print
|
||||
- [#6478](https://github.com/mruby/mruby/pull/6478) Fixed buffer overrun in function `chars2bytes()`
|
||||
- [#6479](https://github.com/mruby/mruby/pull/6479) Reimplementation of `File.expand_path` method
|
||||
- [#6482](https://github.com/mruby/mruby/pull/6482) Add `File.absolute_path?` method
|
||||
- [#6487](https://github.com/mruby/mruby/pull/6487) Add Emscripten toolchain & build_config
|
||||
@@ -11,7 +11,7 @@
|
||||
struct RClass *c; \
|
||||
struct RBasic *gcnext; \
|
||||
enum mrb_vtype tt:8; \
|
||||
unsigned int gccolor:3; \
|
||||
unsigned int gc_color:3; \
|
||||
unsigned int frozen:1; \
|
||||
uint32_t flags:20
|
||||
|
||||
|
||||
@@ -90,7 +90,7 @@ struct RStringEmbed {
|
||||
# define RSTR_WRITE_SINGLE_BYTE_FLAG(s, v) (RSTR_UNSET_SINGLE_BYTE_FLAG(s), (s)->flags |= v)
|
||||
# define RSTR_COPY_SINGLE_BYTE_FLAG(dst, src) RSTR_WRITE_SINGLE_BYTE_FLAG(dst, RSTR_SINGLE_BYTE_P(src))
|
||||
#else
|
||||
# define RSTR_SINGLE_BYTE_P(s) (void)1
|
||||
# define RSTR_SINGLE_BYTE_P(s) TRUE
|
||||
# define RSTR_SET_SINGLE_BYTE_FLAG(s) (void)0
|
||||
# define RSTR_UNSET_SINGLE_BYTE_FLAG(s) (void)0
|
||||
# define RSTR_WRITE_SINGLE_BYTE_FLAG(s, v) (void)0
|
||||
|
||||
@@ -57,7 +57,7 @@ MRB_BEGIN_DECL
|
||||
/*
|
||||
* Patch level string. (optional)
|
||||
*/
|
||||
#define MRUBY_PATCHLEVEL_STR "RC"
|
||||
#define MRUBY_PATCHLEVEL_STR ""
|
||||
|
||||
#ifndef MRUBY_PATCHLEVEL_STR
|
||||
# if MRUBY_PATCHLEVEL < 0
|
||||
@@ -85,12 +85,12 @@ MRB_BEGIN_DECL
|
||||
/*
|
||||
* Release month.
|
||||
*/
|
||||
#define MRUBY_RELEASE_MONTH 3
|
||||
#define MRUBY_RELEASE_MONTH 4
|
||||
|
||||
/*
|
||||
* Release day.
|
||||
*/
|
||||
#define MRUBY_RELEASE_DAY 10
|
||||
#define MRUBY_RELEASE_DAY 20
|
||||
|
||||
/*
|
||||
* Release date as a string.
|
||||
|
||||
@@ -838,7 +838,7 @@ merge_op_string(codegen_scope *s, uint16_t dst, uint16_t b1, uint16_t b2, const
|
||||
struct mrb_insn_data data = mrb_decode_insn(i);
|
||||
if (data.insn == OP_STRING) {
|
||||
if (data.b == b1) used |= 1;
|
||||
else if (data.b == b2) used |= 2;
|
||||
if (data.b == b2) used |= 2;
|
||||
}
|
||||
switch (i[0]) {
|
||||
case OP_EXT1:
|
||||
@@ -3223,9 +3223,12 @@ codegen(codegen_scope *s, node *tree, int val)
|
||||
if (tree && tree->cdr && tree->cdr->cdr) {
|
||||
codegen(s, tree->cdr->cdr, VAL);
|
||||
}
|
||||
else {
|
||||
else if (s2) {
|
||||
gen_blkmove(s, 0, lv);
|
||||
}
|
||||
else {
|
||||
genop_1(s, OP_LOADNIL, cursp());
|
||||
}
|
||||
n = 0;
|
||||
}
|
||||
s->sp = sp;
|
||||
|
||||
@@ -1453,6 +1453,31 @@ heredoc_end(parser_state *p)
|
||||
}
|
||||
#define is_strterm_type(p,str_func) ((p)->lex_strterm->type & (str_func))
|
||||
|
||||
static void
|
||||
prohibit_literals(parser_state *p, node *n)
|
||||
{
|
||||
if (n == 0) {
|
||||
yyerror(NULL, p, "can't define singleton method for ().");
|
||||
}
|
||||
else {
|
||||
switch (typen(n->car)) {
|
||||
case NODE_INT:
|
||||
case NODE_STR:
|
||||
case NODE_DSTR:
|
||||
case NODE_XSTR:
|
||||
case NODE_DXSTR:
|
||||
case NODE_DREGX:
|
||||
case NODE_MATCH:
|
||||
case NODE_FLOAT:
|
||||
case NODE_ARRAY:
|
||||
case NODE_HEREDOC:
|
||||
yyerror(NULL, p, "can't define singleton method for literals");
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* xxx ----------------------------- */
|
||||
|
||||
%}
|
||||
@@ -4009,30 +4034,13 @@ opt_f_block_arg : ',' f_block_arg
|
||||
|
||||
singleton : var_ref
|
||||
{
|
||||
prohibit_literals(p, $1);
|
||||
$$ = $1;
|
||||
if (!$$) $$ = new_nil(p);
|
||||
}
|
||||
| '(' {p->lstate = EXPR_BEG;} expr rparen
|
||||
{
|
||||
if ($3 == 0) {
|
||||
yyerror(&@1, p, "can't define singleton method for ().");
|
||||
}
|
||||
else {
|
||||
switch (typen($3->car)) {
|
||||
case NODE_STR:
|
||||
case NODE_DSTR:
|
||||
case NODE_XSTR:
|
||||
case NODE_DXSTR:
|
||||
case NODE_DREGX:
|
||||
case NODE_MATCH:
|
||||
case NODE_FLOAT:
|
||||
case NODE_ARRAY:
|
||||
case NODE_HEREDOC:
|
||||
yyerror(&@1, p, "can't define singleton method for literals");
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
prohibit_literals(p, $3);
|
||||
$$ = $3;
|
||||
}
|
||||
;
|
||||
|
||||
+3
-2
@@ -790,7 +790,7 @@ mrb_define_method_raw(mrb_state *mrb, struct RClass *c, mrb_sym mid, mrb_method_
|
||||
|
||||
ptr.proc = p;
|
||||
if (p) {
|
||||
if (p->gccolor != MRB_GC_RED) {
|
||||
if (p->gc_color != MRB_GC_RED) {
|
||||
p->flags |= MRB_PROC_SCOPE;
|
||||
p->c = NULL;
|
||||
mrb_field_write_barrier(mrb, (struct RBasic*)c, (struct RBasic*)p);
|
||||
@@ -1464,6 +1464,7 @@ include_class_new(mrb_state *mrb, struct RClass *m, struct RClass *super)
|
||||
static int
|
||||
include_module_at(mrb_state *mrb, struct RClass *c, struct RClass *ins_pos, struct RClass *m, int search_super)
|
||||
{
|
||||
struct RClass *ic;
|
||||
void *klass_mt = find_origin(c)->mt;
|
||||
|
||||
while (m) {
|
||||
@@ -1494,7 +1495,7 @@ include_module_at(mrb_state *mrb, struct RClass *c, struct RClass *ins_pos, stru
|
||||
p = p->super;
|
||||
}
|
||||
|
||||
struct RClass *ic = include_class_new(mrb, m, ins_pos->super);
|
||||
ic = include_class_new(mrb, m, ins_pos->super);
|
||||
m->flags |= MRB_FL_CLASS_IS_INHERITED;
|
||||
ins_pos->super = ic;
|
||||
mrb_field_write_barrier(mrb, (struct RBasic*)ins_pos, (struct RBasic*)ic);
|
||||
|
||||
@@ -88,7 +88,7 @@
|
||||
|
||||
== Generational Mode
|
||||
|
||||
mruby's GC offers an Generational Mode while re-using the tri-color GC
|
||||
mruby's GC offers an Generational Mode while reusing the tri-color GC
|
||||
infrastructure. It will treat the Black objects as Old objects after each
|
||||
sweep phase, instead of painting them White. The key ideas are still the same
|
||||
as traditional generational GC:
|
||||
@@ -170,17 +170,17 @@ typedef struct mrb_heap_page {
|
||||
#define GC_COLOR_MASK 7
|
||||
mrb_static_assert(MRB_GC_RED <= GC_COLOR_MASK);
|
||||
|
||||
#define paint_gray(o) ((o)->gccolor = GC_GRAY)
|
||||
#define paint_black(o) ((o)->gccolor = GC_BLACK)
|
||||
#define paint_white(o) ((o)->gccolor = GC_WHITES)
|
||||
#define paint_partial_white(s, o) ((o)->gccolor = (s)->current_white_part)
|
||||
#define is_gray(o) ((o)->gccolor == GC_GRAY)
|
||||
#define is_white(o) ((o)->gccolor & GC_WHITES)
|
||||
#define is_black(o) ((o)->gccolor == GC_BLACK)
|
||||
#define is_red(o) ((o)->gccolor == GC_RED)
|
||||
#define paint_gray(o) ((o)->gc_color = GC_GRAY)
|
||||
#define paint_black(o) ((o)->gc_color = GC_BLACK)
|
||||
#define paint_white(o) ((o)->gc_color = GC_WHITES)
|
||||
#define paint_partial_white(s, o) ((o)->gc_color = (s)->current_white_part)
|
||||
#define is_gray(o) ((o)->gc_color == GC_GRAY)
|
||||
#define is_white(o) ((o)->gc_color & GC_WHITES)
|
||||
#define is_black(o) ((o)->gc_color == GC_BLACK)
|
||||
#define is_red(o) ((o)->gc_color == GC_RED)
|
||||
#define flip_white_part(s) ((s)->current_white_part = other_white_part(s))
|
||||
#define other_white_part(s) ((s)->current_white_part ^ GC_WHITES)
|
||||
#define is_dead(s, o) (((o)->gccolor & other_white_part(s) & GC_WHITES) || (o)->tt == MRB_TT_FREE)
|
||||
#define is_dead(s, o) (((o)->gc_color & other_white_part(s) & GC_WHITES) || (o)->tt == MRB_TT_FREE)
|
||||
|
||||
mrb_noreturn void mrb_raise_nomemory(mrb_state *mrb);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user