summaryrefslogtreecommitdiffhomepage
AgeCommit message (Collapse)Author
2021-12-03variable.c: first iv allocation size should be 4 instead of 1.Yukihiro "Matz" Matsumoto
2021-12-03variable.c: should not access `NULL[0]` to avoid asan warnings.Yukihiro "Matz" Matsumoto
2021-12-02parse.y: support anonymous block argument introduced by Ruby3.1.Yukihiro "Matz" Matsumoto
2021-12-01codegen.c: `ADDI/SUBI` should not be prefixed by `OP_EXT`; fix #5590Yukihiro "Matz" Matsumoto
As a general principles numeric instructions should not be prefixed by `OP_EXT` instructions since they are not supported by "mruby/c".
2021-12-01codegen.c: skip `ADDI/SUBI` for zero operand.Yukihiro "Matz" Matsumoto
2021-12-01codegen.c: fix a bug in `OP_ADDI` and `OP_SUBI` regarding negative values.Yukihiro "Matz" Matsumoto
2021-12-01codegen.c: `get_int_operand` to retrieve negative values correctly.Yukihiro "Matz" Matsumoto
2021-12-01codedump.c: print `OP_EXT` explicitly again for debugging purpose.Yukihiro "Matz" Matsumoto
2021-12-01variable.c: reduce memory usage of instance variable tableYukihiro "Matz" Matsumoto
This is a fundamentally simplified reimplementation of #5317 by @shuujii Instead of having array of `struct iv_elem`, we have sequences of keys and values packed in single chunk of malloc'ed memory. We don't have to worry about gaps from alignment, especially on 64 bit architecture, where `sizeof(struct iv_elem)` probably consumes 16 bytes, but `sizeof(mrb_sym)+sizeof(mrb_value)` is 12 bytes. In addition, this change could improve memory access locality. close #5317
2021-11-29vm.c: remove duplicate code in VM.Yukihiro "Matz" Matsumoto
2021-11-29Merge pull request #5589 from dearblue/argerrYukihiro "Matz" Matsumoto
Align "wrong number of arguments" messages
2021-11-28Merge pull request #5588 from dearblue/cmath+clang++Yukihiro "Matz" Matsumoto
Fixed compile error for `mrbgems/mruby-cmath` with `clang++`
2021-11-28Merge pull request #5587 from dearblue/args-pass.1Yukihiro "Matz" Matsumoto
Fix `args_unshift()` in `mrbgems/mruby-method`
2021-11-28Align "wrong number of arguments" messagesdearblue
Make "N for M" into the form "given N, expected M". As I worked, I noticed that the `argnum_error()` function had a part to include the method name in the message. I think this part is no longer needed by https://github.com/mruby/mruby/pull/5394. - Before this patch ```console % bin/mruby -e '[1, 2, 3].each 0' trace (most recent call last): [1] -e:1 -e:1:in each: 'each': wrong number of arguments (1 for 0) (ArgumentError) ``` - After this patch ```console % bin/mruby -e '[1, 2, 3].each 0' trace (most recent call last): [1] -e:1 -e:1:in each: wrong number of arguments (given 1, expected 0) (ArgumentError) ```
2021-11-28Fixed compile error for `mrbgems/mruby-cmath` with `clang++`dearblue
If the preprocessor check part is only `__clang__`, CI's such as `Ubuntu-2004-clang` will fail to compile. This is why we limited the addition to FreeBSD and OpenBSD, which have `clang++` in their base systems. DragonFly BSD and NetBSD have GCC built into their base systems, so nothing is changed.
2021-11-28Fix `args_unshift()` in `mrbgems/mruby-method`dearblue
Both keyword arguments and block arguments were being destroyed when there were no arguments. The cause of this is #5585. I' m sorry.
2021-11-26test/kernel.rb: remove duplicate tests; ref #5584Yukihiro "Matz" Matsumoto
2021-11-26Check more `MRB_ARGS_NONE()`dearblue
The `__id__` method implemented in the C function has `MRB_ARGS_NONE()` specified, but it is also effective in the following cases. ```ruby p nil.__id__ opts: 1 rescue p :a p nil.method(:__id__).call 1 rescue p :b p nil.method(:__id__).call opts: 1 rescue p :c p nil.method(:__id__).to_proc.call 1 rescue p :d p nil.method(:__id__).to_proc.call opts: 1 rescue p :e p nil.method(:__id__).unbind.bind_call nil, 1 rescue p :f p nil.method(:__id__).unbind.bind_call nil, opts: 1 rescue p :g p nil.__send__ :__id__, 1 rescue p :h p nil.__send__ :__id__, opts: 1 rescue p :i ``` After applying this patch, all items will output symbols in the same way as CRuby. For this purpose, add `MRB_PROC_NOARG` to `struct RProc::flags`.
2021-11-25Merge pull request #5585 from dearblue/args-passYukihiro "Matz" Matsumoto
Fixed some methods where keyword arguments are not passed
2021-11-24Fixed some methods where keyword arguments are not passeddearblue
2021-11-24Merge pull request #5581 from ↵Yukihiro "Matz" Matsumoto
mruby/dependabot/github_actions/actions/cache-2.1.7 build(deps): bump actions/cache from 2.1.6 to 2.1.7
2021-11-23build(deps): bump actions/cache from 2.1.6 to 2.1.7dependabot[bot]
Bumps [actions/cache](https://github.com/actions/cache) from 2.1.6 to 2.1.7. - [Release notes](https://github.com/actions/cache/releases) - [Commits](https://github.com/actions/cache/compare/v2.1.6...v2.1.7) --- updated-dependencies: - dependency-name: actions/cache dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <[email protected]>
2021-11-23AUTHORS: update entries [ci skip]Yukihiro "Matz" Matsumoto
2021-11-23Merge pull request #5580 from dearblue/static-procYukihiro "Matz" Matsumoto
Fixed occurs `SIGSEGV` with `mrbgems/mruby-method`
2021-11-22Fixed occurs `SIGSEGV` with `mrbgems/mruby-method`dearblue
Calling the `Method#{parameters,source_location}` method on a static `Proc` object resulted in `SIGSEGV`. The trigger is https://github.com/mruby/mruby/pull/5402. The original implementation of the `Method#{parameters,source_location}` method was to temporarily rewrite the object and then call the method of the same name in `Proc`. Rewriting of objects placed in the ROM section by #5402 above is prohibited by hardware such as the CPU. This caused a `SIGSEGV`.
2021-11-21parse.y: check duplicated argument names; fix #5575Yukihiro "Matz" Matsumoto
2021-11-20doc/internal/opcode.md: moved from doc/opcode.mdYukihiro "Matz" Matsumoto
2021-11-20doc/opcode.md: update according to #5579Yukihiro "Matz" Matsumoto
2021-11-20fixup! parse.y: unnamed rest argument should be `mul (*)`.Yukihiro "Matz" Matsumoto
2021-11-20parse.y: unnamed rest argument should be `mul (*)`.Yukihiro "Matz" Matsumoto
2021-11-20parse.y: skip unnecessary `local_add_f(p, 0)`.Yukihiro "Matz" Matsumoto
2021-11-20Merge pull request #5578 from dearblue/OP_SENDBYukihiro "Matz" Matsumoto
Fixes keywords are lost with the `OP_SENDB`
2021-11-20Merge pull request #5579 from dearblue/OP_ASETYukihiro "Matz" Matsumoto
Fixed a discrepancy in `OP_ASET`
2021-11-19Fixed a discrepancy in `OP_ASET`dearblue
There was a discrepancy in the actual behavior, assertions, and documentation. Therefore, I modified it based on the actual behavior.
2021-11-19Fixes keywords are lost with the `OP_SENDB`dearblue
If a splat argument was passed, it could write out of range on the VM stack. ```console % bin/mruby -e 'def m(*args, **opts, &blk) p [args, opts, blk] end; m(*%w(X Y Z), r: 1, g: 2, b: 3) {}' [["X", "Y", "Z"], {}, #<Proc:0x80077d7d0>] ```
2021-11-18Merge pull request #5577 from ↵Yukihiro "Matz" Matsumoto
mruby/dependabot/github_actions/github/super-linter-4.8.4 build(deps): bump github/super-linter from 4.8.3 to 4.8.4
2021-11-17build(deps): bump github/super-linter from 4.8.3 to 4.8.4dependabot[bot]
Bumps [github/super-linter](https://github.com/github/super-linter) from 4.8.3 to 4.8.4. - [Release notes](https://github.com/github/super-linter/releases) - [Changelog](https://github.com/github/super-linter/blob/main/docs/release-process.md) - [Commits](https://github.com/github/super-linter/compare/v4.8.3...v4.8.4) --- updated-dependencies: - dependency-name: github/super-linter dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <[email protected]>
2021-11-17codegen.c: fixed a bug in post mandatory arguments.Yukihiro "Matz" Matsumoto
2021-11-17codegen.c: should not emit the `MOVE` instruction to the same register.Yukihiro "Matz" Matsumoto
2021-11-16Merge pull request #5576 from ↵Yukihiro "Matz" Matsumoto
mruby/dependabot/github_actions/github/super-linter-4.8.3 build(deps): bump github/super-linter from 4.8.1 to 4.8.3
2021-11-15build(deps): bump github/super-linter from 4.8.1 to 4.8.3dependabot[bot]
Bumps [github/super-linter](https://github.com/github/super-linter) from 4.8.1 to 4.8.3. - [Release notes](https://github.com/github/super-linter/releases) - [Changelog](https://github.com/github/super-linter/blob/main/docs/release-process.md) - [Commits](https://github.com/github/super-linter/compare/v4.8.1...v4.8.3) --- updated-dependencies: - dependency-name: github/super-linter dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <[email protected]>
2021-11-15string-ext/string.c: fixed a memory leak.Yukihiro "Matz" Matsumoto
2021-11-14doc/internal/boxing.md: describe how `mrb_value` represents values.Yukihiro "Matz" Matsumoto
2021-11-13boxing_word.h: fix the error in the comment [ci skip]Yukihiro "Matz" Matsumoto
2021-11-12test/syntax.rb: test argument forwarding without parentheses.Yukihiro "Matz" Matsumoto
2021-11-12parse.y: should allow newline after `...`.Yukihiro "Matz" Matsumoto
2021-11-10parse.y: allow `...` in formal arguments without parentheses.Yukihiro "Matz" Matsumoto
2021-11-09etc.c: improve `mrb_obj_id` with NaN boxing and Word boxing.Yukihiro "Matz" Matsumoto
2021-11-08boxing_nan.h: update `mrb_immediate_p` and related macros.Yukihiro "Matz" Matsumoto
2021-11-08TODO.md: update.Yukihiro "Matz" Matsumoto