mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 32279e4128 | |||
| 06466fd2e0 | |||
| 28a1f7d143 | |||
| 69682e3d41 | |||
| f8511ecb22 | |||
| d4cd589733 |
@@ -4,6 +4,8 @@
|
||||
extends: default
|
||||
|
||||
rules:
|
||||
comments:
|
||||
min-spaces-from-content: 1
|
||||
document-start: disable
|
||||
line-length: disable
|
||||
truthy: false
|
||||
|
||||
@@ -11,12 +11,12 @@ jobs:
|
||||
- name: Build Fuzzers
|
||||
uses: google/oss-fuzz/infra/cifuzz/actions/build_fuzzers@master
|
||||
with:
|
||||
oss-fuzz-project-name: 'mruby'
|
||||
oss-fuzz-project-name: "mruby"
|
||||
dry-run: false
|
||||
- name: Run Fuzzers
|
||||
uses: google/oss-fuzz/infra/cifuzz/actions/run_fuzzers@master
|
||||
with:
|
||||
oss-fuzz-project-name: 'mruby'
|
||||
oss-fuzz-project-name: "mruby"
|
||||
fuzz-seconds: 600
|
||||
dry-run: false
|
||||
- name: Upload Crash
|
||||
|
||||
@@ -9,8 +9,8 @@ permissions:
|
||||
jobs:
|
||||
build:
|
||||
permissions:
|
||||
contents: read # for actions/checkout to fetch code
|
||||
statuses: write # for github/super-linter/slim to mark status of each linter run
|
||||
contents: read # for actions/checkout to fetch code
|
||||
statuses: write # for github/super-linter/slim to mark status of each linter run
|
||||
name: Lint Code Base
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
|
||||
@@ -31,5 +31,6 @@ compile_commands.json
|
||||
compile_flags.txt
|
||||
cscope.files
|
||||
cscope.out
|
||||
node_modules
|
||||
tags
|
||||
!Gemfile.lock
|
||||
|
||||
@@ -54,6 +54,7 @@ repos:
|
||||
rev: v4.0.0-alpha.8
|
||||
hooks:
|
||||
- id: prettier
|
||||
exclude: ^doc/internal/opcode\.md$
|
||||
- repo: https://github.com/igorshubovych/markdownlint-cli
|
||||
rev: v0.38.0
|
||||
hooks:
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"bracketSpacing": false
|
||||
}
|
||||
@@ -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.2.0
|
||||
PROJECT_NUMBER = 3.3.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,63 +1,189 @@
|
||||
NEWS
|
||||
----
|
||||
|
||||
# User visible changes in `mruby3.2`
|
||||
# User visible changes in `mruby3.3` from `mruby3.2`
|
||||
|
||||
"**_NOTE_**:" are changes to be aware of.
|
||||
|
||||
# The language
|
||||
|
||||
- Now `a::B = c` should evaluate `a` then `c`.
|
||||
- Anonymous arguments `*`, `**`, `&` can be passed for forwarding.
|
||||
- Multi-precision integer is available now via `mruby-bigint` gem.
|
||||
- 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))
|
||||
|
||||
# mruby VM and bytecode
|
||||
# Configuration
|
||||
|
||||
- `OP_ARYDUP` was renamed to `OP_ARYSPLAT`. The instruction name
|
||||
was changed but instruction number and basic behavior have not
|
||||
changed (except that `ARYDUP nil` makes `[]`).
|
||||
- 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))
|
||||
|
||||
# Tools
|
||||
# mruby memory API
|
||||
|
||||
## `mruby`
|
||||
- `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))
|
||||
|
||||
- `-b` only specifies the script is the binary. The files loaded by `-r` are not affected by the option.
|
||||
- `mruby` now loads complied binary if the suffix is `.mrb`.
|
||||
# Changes in C API
|
||||
|
||||
## `mrbc`
|
||||
- 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()`.
|
||||
|
||||
- Add `--no-optimize` option to disable optimization.
|
||||
# Changes in mrbgems
|
||||
|
||||
# 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-class-ext
|
||||
# Changes in build system
|
||||
|
||||
- Add `Class#subclasses` method.
|
||||
- Add `Module#undefined_instance_methods` method.
|
||||
- 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))
|
||||
|
||||
## New bundled gems
|
||||
# Other breaking changes
|
||||
|
||||
- mruby-errno from [https://github.com/iij/mruby-errno.git]
|
||||
- mruby-set from [https://github.com/yui-knk/mruby-set.git]
|
||||
- mruby-dir from [https://github.com/iij/mruby-dir.git]
|
||||
- `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))
|
||||
|
||||
# CVEs
|
||||
# Bugs Fixed
|
||||
|
||||
Following CVEs are 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`
|
||||
|
||||
- [CVE-2022-0080](https://nvd.nist.gov/vuln/detail/CVE-2022-0080)
|
||||
- [CVE-2022-0240](https://nvd.nist.gov/vuln/detail/CVE-2022-0240)
|
||||
- [CVE-2022-0326](https://nvd.nist.gov/vuln/detail/CVE-2022-0326)
|
||||
- [CVE-2022-0481](https://nvd.nist.gov/vuln/detail/CVE-2022-0481)
|
||||
- [CVE-2022-0525](https://nvd.nist.gov/vuln/detail/CVE-2022-0525)
|
||||
- [CVE-2022-0570](https://nvd.nist.gov/vuln/detail/CVE-2022-0570)
|
||||
- [CVE-2022-0614](https://nvd.nist.gov/vuln/detail/CVE-2022-0614)
|
||||
- [CVE-2022-0623](https://nvd.nist.gov/vuln/detail/CVE-2022-0623)
|
||||
- [CVE-2022-0630](https://nvd.nist.gov/vuln/detail/CVE-2022-0630)
|
||||
- [CVE-2022-0631](https://nvd.nist.gov/vuln/detail/CVE-2022-0631)
|
||||
- [CVE-2022-0632](https://nvd.nist.gov/vuln/detail/CVE-2022-0632)
|
||||
- [CVE-2022-0717](https://nvd.nist.gov/vuln/detail/CVE-2022-0717)
|
||||
- [CVE-2022-0890](https://nvd.nist.gov/vuln/detail/CVE-2022-0890)
|
||||
- [CVE-2022-1106](https://nvd.nist.gov/vuln/detail/CVE-2022-1106)
|
||||
- [CVE-2022-1212](https://nvd.nist.gov/vuln/detail/CVE-2022-1212)
|
||||
- [CVE-2022-1276](https://nvd.nist.gov/vuln/detail/CVE-2022-1276)
|
||||
- [CVE-2022-1286](https://nvd.nist.gov/vuln/detail/CVE-2022-1286)
|
||||
- [CVE-2022-1934](https://nvd.nist.gov/vuln/detail/CVE-2022-1934)
|
||||
# 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`
|
||||
|
||||
@@ -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.2.0 from the official mruby
|
||||
To get mruby, you can download the stable version 3.3.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.3.0 of mruby can be downloaded via the following URL: [https://github.com/mruby/mruby/archive/3.3.0-rc.zip](https://github.com/mruby/mruby/archive/3.3.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
|
||||
|
||||
+1
-1
@@ -11,7 +11,7 @@ We consider the following issues as vulnerabilities:
|
||||
- Remote code execution
|
||||
- Crash caused by a valid Ruby script
|
||||
|
||||
We *don't* consider the following issues as vulnerabilities:
|
||||
We _don't_ consider the following issues as vulnerabilities:
|
||||
|
||||
- Runtime C undefined behavior (including integer overflow)
|
||||
- Crash caused by misused API
|
||||
|
||||
@@ -34,7 +34,7 @@ MRuby::CrossBuild.new("dreamcast") do |conf|
|
||||
cc.defines << %w(_arch_sub_pristine)
|
||||
end
|
||||
|
||||
# C++ compiler
|
||||
# C++ compiler
|
||||
conf.cxx do |cxx|
|
||||
cxx.command = conf.cc.command.dup
|
||||
cxx.include_paths = conf.cc.include_paths.dup
|
||||
|
||||
@@ -80,7 +80,7 @@ conf.toolchain :clang
|
||||
#### Visual Studio 2010, 2012 and 2013
|
||||
|
||||
Toolchain configuration for Visual Studio on Windows. If you use the
|
||||
[Visual Studio Command Prompt](https://msdn.microsoft.com/en-us/library/ms229859\(v=vs.110\).aspx),
|
||||
[Visual Studio Command Prompt](<https://msdn.microsoft.com/en-us/library/ms229859(v=vs.110).aspx>),
|
||||
you normally do not have to specify this manually, since it gets automatically detected by our build process.
|
||||
|
||||
```ruby
|
||||
@@ -460,7 +460,7 @@ compile for `i386` a directory called `i386` is created under the
|
||||
build directory.
|
||||
|
||||
The cross compilation workflow starts in the same way as the normal
|
||||
compilation by compiling all *native* libraries and binaries, except
|
||||
compilation by compiling all _native_ libraries and binaries, except
|
||||
for we don't have `host/mrbc` directory (`host` directory itself works
|
||||
as placeholder for `mrbc`). Afterwards the cross compilation process
|
||||
proceeds like this:
|
||||
|
||||
@@ -38,7 +38,7 @@ To confirm mrdb was installed properly, run mrdb with the `--version` option:
|
||||
|
||||
```bash
|
||||
$ mrdb --version
|
||||
mruby 3.2.0 (2023-02-24)
|
||||
mruby 3.3.0 (2024-02-14)
|
||||
```
|
||||
|
||||
## 2.2 Basic Operation
|
||||
@@ -62,7 +62,7 @@ $ mrdb sample.rb
|
||||
You can execute the shell commands listed below:
|
||||
|
||||
| command | description |
|
||||
|:----------------:|:--------------------------------------------------------------------------|
|
||||
| :--------------: | :------------------------------------------------------------------------ |
|
||||
| run | execute programs |
|
||||
| step | execute stepping |
|
||||
| continue | execute continuing program |
|
||||
@@ -83,7 +83,7 @@ You can debug the mruby binary files.
|
||||
#### 2.2.2.1 Debugging the binary files
|
||||
|
||||
- notice
|
||||
To debug mruby binary files, you need to compile mruby files with option `-g`.
|
||||
To debug mruby binary files, you need to compile mruby files with option `-g`.
|
||||
|
||||
```bash
|
||||
$ mrbc -g sample.rb
|
||||
|
||||
@@ -4,7 +4,7 @@ _This is an English translation of [Matz's blog post][matz blog post]
|
||||
written in Japanese._
|
||||
_Some parts are updated to reflect recent changes._
|
||||
|
||||
[matz blog post]: <https://www.rubyist.net/~matz/20130731.html>
|
||||
[matz blog post]: https://www.rubyist.net/~matz/20130731.html
|
||||
|
||||
When you are extending mruby using C language, you may encounter
|
||||
mysterious "arena overflow error" or memory leak or very slow
|
||||
|
||||
+6
-6
@@ -51,8 +51,8 @@ for example:
|
||||
To retrieve compiler options used to build `mruby`, you can use `mruby-config`
|
||||
command with following options:
|
||||
|
||||
- `--cc` compiler name
|
||||
- `--cflags` options passed to compiler
|
||||
- `--cc` compiler name
|
||||
- `--cflags` options passed to compiler
|
||||
|
||||
```console
|
||||
$ mruby-config --cflags
|
||||
@@ -66,10 +66,10 @@ compatible to mruby configuration.
|
||||
|
||||
To retrieve linker options, you can use `mruby-config` with following options:
|
||||
|
||||
- `--ld` linker name
|
||||
- `--ldflags` options passed to linker
|
||||
- `--ldflags-before-libs` options passed to linker before linked libraries
|
||||
- `--libs` linked libraries
|
||||
- `--ld` linker name
|
||||
- `--ldflags` options passed to linker
|
||||
- `--ldflags-before-libs` options passed to linker before linked libraries
|
||||
- `--libs` linked libraries
|
||||
|
||||
```console
|
||||
$ mruby-config --ldflags
|
||||
|
||||
@@ -25,7 +25,7 @@ MRuby::Build.new do |conf|
|
||||
end
|
||||
```
|
||||
|
||||
***NOTE***
|
||||
**_NOTE_**
|
||||
|
||||
- Use common definitions (`conf.defines`) instead of per-compiler definitions (e.g., `conf.cc.defines`) unless there is a special reason not to.
|
||||
- It is now deprecated to edit the `include/mruby/mrbconf.h` file or give it directly as a compiler flag, as was the case before.
|
||||
@@ -123,7 +123,7 @@ end
|
||||
|
||||
- Defines value is `1024`.
|
||||
- Specifies number of `RBasic` per each heap page.
|
||||
- To calculate the number of bytes per heap page, it is "(size of management data per heap page) + (size per object) * `MRB_HEAP_PAGE_SIZE`".
|
||||
- To calculate the number of bytes per heap page, it is "(size of management data per heap page) + (size per object) \* `MRB_HEAP_PAGE_SIZE`".
|
||||
In mruby 3.1.0, the "size of management data per heap page" is 6 words, also "size per object" is 6 words.
|
||||
For a 32-bit CPU, `(6 * 4) + (6 * 4) * MRB_HEAP_PAGE_SIZE` gives the bytes of size per heap page.
|
||||
Conversely, for example, to keep the size per heap page to 4 Ki bytes,
|
||||
@@ -135,7 +135,7 @@ end
|
||||
|
||||
- Default value is `4`.
|
||||
- If you're allocating data types that requires alignment more than default value define the
|
||||
largest value of required alignment.
|
||||
largest value of required alignment.
|
||||
|
||||
`POOL_PAGE_SIZE`
|
||||
|
||||
@@ -149,7 +149,7 @@ largest value of required alignment.
|
||||
|
||||
- If defined enables fixed size `mrb_state` atexit stack.
|
||||
- Raises `RuntimeError` when `mrb_state_atexit` call count to same `mrb_state` exceeds
|
||||
`MRB_FIXED_STATE_ATEXIT_STACK_SIZE`'s value.
|
||||
`MRB_FIXED_STATE_ATEXIT_STACK_SIZE`'s value.
|
||||
|
||||
`MRB_FIXED_STATE_ATEXIT_STACK_SIZE`
|
||||
|
||||
|
||||
@@ -248,7 +248,7 @@ Version requirement supports following operators:
|
||||
- '<=': is equal or lesser
|
||||
- '~>': is equal or greater and is lesser than the next major version
|
||||
- example 1: '~> 2.2.2' means '>= 2.2.2' and '< 2.3.0'
|
||||
- example 2: '~> 2.2' means '>= 2.2.0' and '< 3.0.0'
|
||||
- example 2: '~> 2.2' means '>= 2.2.0' and '< 3.0.0'
|
||||
|
||||
When more than one version requirements is passed, the dependency must satisfy all of it.
|
||||
|
||||
@@ -395,8 +395,8 @@ override existing classes or add new ones in this way. Put all Ruby files
|
||||
into the `mrblib` directory and all C files into the `src` directory.
|
||||
|
||||
mruby codes under `mrblib` directory would be executed after gem init C
|
||||
function is called. Make sure *mruby script* depends on *C code* and
|
||||
*C code* doesn't depend on *mruby script*.
|
||||
function is called. Make sure _mruby script_ depends on _C code_ and
|
||||
_C code_ doesn't depend on _mruby script_.
|
||||
|
||||
### Pre-Conditions
|
||||
|
||||
|
||||
@@ -57,13 +57,13 @@ To save RAM, `mruby` can use compile-time allocation of some symbols. You can
|
||||
use following macros to get preallocated symbols by including `mruby/presym.h`
|
||||
header.
|
||||
|
||||
- `MRB_SYM(xor)` //=> xor (Word characters)
|
||||
- `MRB_SYM_B(xor)` //=> xor! (Method with Bang)
|
||||
- `MRB_SYM_Q(xor)` //=> xor? (Method with Question mark)
|
||||
- `MRB_SYM_E(xor)` //=> xor= (Method with Equal)
|
||||
- `MRB_CVSYM(xor)` //=> @@xor (Class Variable)
|
||||
- `MRB_IVSYM(xor)` //=> @xor (Instance Variable)
|
||||
- `MRB_OPSYM(xor)` //=> ^ (Operator)
|
||||
- `MRB_SYM(xor)` //=> xor (Word characters)
|
||||
- `MRB_SYM_B(xor)` //=> xor! (Method with Bang)
|
||||
- `MRB_SYM_Q(xor)` //=> xor? (Method with Question mark)
|
||||
- `MRB_SYM_E(xor)` //=> xor= (Method with Equal)
|
||||
- `MRB_CVSYM(xor)` //=> @@xor (Class Variable)
|
||||
- `MRB_IVSYM(xor)` //=> @xor (Instance Variable)
|
||||
- `MRB_OPSYM(xor)` //=> ^ (Operator)
|
||||
|
||||
For `MRB_OPSYM()`, specify the names corresponding to operators (see
|
||||
`MRuby::Presym::OPERATORS` in `lib/mruby/presym.rb` for the names that
|
||||
|
||||
@@ -15,7 +15,7 @@ Some values (called immediate values, e.g. integers, booleans, symbols, etc.) ar
|
||||
The Word boxing packing bit patterns are like following:
|
||||
|
||||
| Types | Bit Pattern |
|
||||
|--------|---------------------------------------|
|
||||
| ------ | ------------------------------------- |
|
||||
| object | `xxxxxxxx xxxxxxxx xxxxxxxx xxxxx000` |
|
||||
| fixnum | `xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxx1` |
|
||||
| nil | `00000000 00000000 00000000 00000000` |
|
||||
@@ -34,7 +34,7 @@ NaN boxing packs the Ruby data in a floating-point numbers, which represent NaN
|
||||
The NaN boxing packing bit patterns are like following:
|
||||
|
||||
| Types | Bit Pattern |
|
||||
|--------|---------------------------------------------------------------------------|
|
||||
| ------ | ------------------------------------------------------------------------- |
|
||||
| float | `SEEEEEEE EEEEFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF` |
|
||||
| +/-inf | `S1111111 11110000 00000000 00000000 00000000 00000000 00000000 00000000` |
|
||||
| nan | `01111111 11111000 00000000 00000000 00000000 00000000 00000000 00000000` |
|
||||
|
||||
+5
-4
@@ -42,10 +42,10 @@ We have ported some new syntax from CRuby.
|
||||
## Renamed for consistency
|
||||
|
||||
Some configuration macro names are changed for consistency (use `MRB_USE_XXX`
|
||||
or `MRB_NO_XXX`).
|
||||
or `MRB_NO_XXX`).
|
||||
|
||||
| mruby2 | mruby3 |
|
||||
|--------------------------------|---------------------------|
|
||||
| mruby2 | mruby3 |
|
||||
| ------------------------------ | ------------------------- |
|
||||
| `MRB_ENABLE_ALL_SYMBOLS` | `MRB_USE_ALL_SYMBOLS` |
|
||||
| `MRB_ENABLE_CXX_ABI` | `MRB_USE_CXX_ABI` |
|
||||
| `MRB_ENABLE_CXX_EXCEPTION` | `MRB_USE_CXX_EXCEPTION` |
|
||||
@@ -149,7 +149,8 @@ No more operand extension
|
||||
|
||||
## Changed Instructions
|
||||
|
||||
Jump addresses used to be specified by absolute offset from the start of `iseq`. Now they are relative offset from the address of the next instruction.
|
||||
Jump addresses used to be specified by absolute offset from the start of `iseq`. Now they are relative offset from the
|
||||
address of the next instruction.
|
||||
|
||||
## `Random` now use `xoshiro128++`.
|
||||
|
||||
|
||||
+186
@@ -0,0 +1,186 @@
|
||||
# User visible changes in `mruby3.3` from `mruby3.2`
|
||||
|
||||
"**_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))
|
||||
|
||||
# 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()`.
|
||||
|
||||
# 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))
|
||||
|
||||
# Changes in build system
|
||||
|
||||
- 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))
|
||||
|
||||
# Other breaking changes
|
||||
|
||||
- `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`
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
version: '3.8'
|
||||
version: "3.8"
|
||||
services:
|
||||
test:
|
||||
build:
|
||||
|
||||
@@ -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
|
||||
@@ -80,17 +80,17 @@ MRB_BEGIN_DECL
|
||||
/*
|
||||
* Release year.
|
||||
*/
|
||||
#define MRUBY_RELEASE_YEAR 2023
|
||||
#define MRUBY_RELEASE_YEAR 2024
|
||||
|
||||
/*
|
||||
* Release month.
|
||||
*/
|
||||
#define MRUBY_RELEASE_MONTH 12
|
||||
#define MRUBY_RELEASE_MONTH 2
|
||||
|
||||
/*
|
||||
* Release day.
|
||||
*/
|
||||
#define MRUBY_RELEASE_DAY 29
|
||||
#define MRUBY_RELEASE_DAY 14
|
||||
|
||||
/*
|
||||
* Release date as a string.
|
||||
|
||||
@@ -73,18 +73,18 @@ MS-DOS 286 C compiler (see credits above)
|
||||
|
||||
1. fgmp is considerably slower than gmp
|
||||
2. fgmp does not implement the following:
|
||||
all mpq_*
|
||||
internal mpn_* functions
|
||||
mpz_perfect_square_p
|
||||
mpz_inp_raw, mpz_out_raw
|
||||
mp_set_memory_functions, mpz_out_str, mpz_inp_str
|
||||
- all mpq\_\*
|
||||
- internal mpn\_\* functions
|
||||
- mpz_perfect_square_p
|
||||
- mpz_inp_raw, mpz_out_raw
|
||||
- mp_set_memory_functions, mpz_out_str, mpz_inp_str
|
||||
3. fgmp implements the following in addition to the routines in GNU gmp.
|
||||
`int mpz_jacobi(MP_INT *a, MP_INT *b)`
|
||||
- finds the jacobi symbol (a/b)
|
||||
`int mpz_jacobi(MP_INT *a, MP_INT *b)`
|
||||
- finds the jacobi symbol (a/b)
|
||||
4. mpz_sizeinbase often overestimates the exact value
|
||||
|
||||
5. To convert your gmp based program to fgmp (subject to the
|
||||
above)
|
||||
above)
|
||||
|
||||
- recompile your source. Make sure to include the gmp.h file included
|
||||
with fgmp rather than that included with gmp. (The point is to recompile
|
||||
|
||||
@@ -17,7 +17,7 @@ Add the line below to your build configuration.
|
||||
- <https://doc.ruby-lang.org/ja/1.9.3/class/IO.html>
|
||||
|
||||
| method | mruby-io | memo |
|
||||
|----------------------------|----------|----------|
|
||||
| -------------------------- | -------- | -------- |
|
||||
| IO.binread | | |
|
||||
| IO.binwrite | | |
|
||||
| IO.copy_stream | | |
|
||||
@@ -102,7 +102,7 @@ Add the line below to your build configuration.
|
||||
- <https://doc.ruby-lang.org/ja/1.9.3/class/File.html>
|
||||
|
||||
| method | mruby-io | memo |
|
||||
|-----------------------------|----------|----------|
|
||||
| --------------------------- | -------- | -------- |
|
||||
| File.absolute_path | | |
|
||||
| File.atime | | |
|
||||
| File.basename | o | |
|
||||
|
||||
@@ -45,7 +45,7 @@ There is no dependency on other mrbgems.
|
||||
- V : 32-bit unsigned, VAX (little-endian) byte order
|
||||
- v : 16-bit unsigned, VAX (little-endian) byte order
|
||||
- x : null byte
|
||||
- Z : same as "a", except that null is added with *
|
||||
- Z : same as "a", except that null is added with \*
|
||||
|
||||
## License
|
||||
|
||||
|
||||
@@ -2399,7 +2399,8 @@ RETRY_TRY_BLOCK:
|
||||
mrb->c = c->prev ? c->prev : mrb->root_c;
|
||||
c->prev = NULL;
|
||||
mrb->c->status = MRB_FIBER_RUNNING;
|
||||
if (c->vmexec) {
|
||||
if (c->vmexec ||
|
||||
(mrb->c == mrb->root_c && mrb->c->ci == mrb->c->cibase) /* case using Fiber#transfer in mrb_fiber_resume() */) {
|
||||
mrb_gc_arena_restore(mrb, ai);
|
||||
c->vmexec = FALSE;
|
||||
mrb->jmp = prev_jmp;
|
||||
|
||||
Reference in New Issue
Block a user