Takashi Kokubun
6ac79a2c44
Skip --depth=1 when it's locked
2021-02-16 20:56:13 -08:00
Yukihiro "Matz" Matsumoto
88113df098
Fixed compile errors in cmath.c in MinGW and macOS.
2021-02-06 17:00:03 +09:00
Yukihiro "Matz" Matsumoto
2a69f5105c
Merge pull request #5324 from dearblue/c++-exc
...
Exclude `<build-dir>/mrbc/**/*` from rake target rules
2021-02-06 16:58:27 +09:00
Yukihiro "Matz" Matsumoto
0bd01c545f
Merge pull request #5323 from shuujii/make-the-argument-of-Kernel-catch-optional-as-Ruby-does
...
Make the argument of `Kernel#catch` optional as Ruby does
2021-02-06 16:57:36 +09:00
dearblue
5c3b5f4221
Exclude <build-dir>/mrbc/**/* from rake target rules
...
Prevents the auto-generated mrbc target source code from being compiled under host conditions.
This is because a build error occurred when `conf.enable_cxx_exception` was set.
2021-02-06 16:37:15 +09:00
KOBAYASHI Shuji
1ea4c51245
Make the argument of Kernel#catch optional as Ruby does
...
Also implement the following changes.
* Add tests
* Use `Object#equal?` to compare tags for Ruby compatibility
* Use `attr_reader`
2021-02-06 13:28:47 +09:00
Yukihiro "Matz" Matsumoto
4bf4650321
Avoid implicit conversion from mrb_float to mrb_complex.
2021-02-06 00:50:13 +09:00
Yukihiro "Matz" Matsumoto
8945afe38e
Merge pull request #5322 from shuujii/fix-message-of-ThrowCatchJump-in-mruby-catch-gem
...
Fix message of `ThrowCatchJump` in `mruby-catch` gem
2021-02-06 00:42:51 +09:00
Yukihiro "Matz" Matsumoto
8ecd38d648
Reimplement complex division.
2021-02-06 00:40:18 +09:00
Yukihiro "Matz" Matsumoto
ea0737ecfd
Define M_E for some platforms.
2021-02-06 00:39:53 +09:00
Yukihiro "Matz" Matsumoto
a6994f51c8
Update mruby-cmath to support MSVC complex.
...
* Use `_Complex` instead of `complex` (MSYS2 do not support `complex`)
* Use `_Dcomplex` instead of `_Complex` on MSCV
* Avoid operator division and multiplication of complex
2021-02-06 00:08:25 +09:00
KOBAYASHI Shuji
80965fe2d7
Fix message of ThrowCatchJump in mruby-catch gem
...
### Example
```ruby
begin
throw 1
rescue Exception => e
puts e.message
end
```
#### Before this patch:
```console
$ bin/mruby example.rb
uncaught throw :1
```
#### After this patch (same as Ruby):
```console
$ bin/mruby example.rb
uncaught throw 1
```
2021-02-05 23:14:58 +09:00
Yukihiro "Matz" Matsumoto
a0050541d1
Add mruby-cmath gem to the core.
...
This gem uses C99 `_Complex` features. You need a C compiler that
supports `_Complex` to enable this gem. All `gcc`, `clang`, `VC` support
`_Complex` so there should not be a big problem.
2021-02-05 22:27:27 +09:00
Yukihiro "Matz" Matsumoto
d898002096
Add a few new API for complex access.
2021-02-05 21:54:49 +09:00
Yukihiro "Matz" Matsumoto
c6149370b0
Refactor method overriding.
...
* Use `class_eval` instead of `instance_eval`.
* Reduce `class_eval` calls
* define `Numeric#i`
* undefine `Complex#i`
2021-02-05 21:54:11 +09:00
Yukihiro "Matz" Matsumoto
7ce03e32b7
Add Complex#to_c method.
2021-02-05 21:42:42 +09:00
Yukihiro "Matz" Matsumoto
ee3017496b
instance_eval for classes and modules should behave as class_eval.
2021-02-05 21:39:44 +09:00
Yukihiro "Matz" Matsumoto
043fe9d9f5
Merge pull request #5319 from shuujii/check-if-.pi-build-rules-are-defined
...
Check if `.pi` build rules are defined
2021-02-04 22:19:19 +09:00
KOBAYASHI Shuji
67a28b56ab
Check if .pi build rules are defined
...
`.pi` files are created for `.o` files that `build.products` depends on, but
an error will occur if the build rule is unknown, so add a check.
I don't think this situation would normally arise. However, in
`mattn/mruby-onig-regexp`, when using bundled onigmo, onigmo's `.o` files
are added to dependency of `libmruby.a` in the second and subsequent builds,
and mruby does not know the build rule, so the following error had occured.
```console
rake aborted!
Don't know how to build task '/mruby/build/host/mrbgems/mruby-onig-regexp/onigmo-6.2.0/libonig_objs/ascii.pi' (See the list of available tasks with `rake --tasks`)
```
2021-02-04 21:17:58 +09:00
Yukihiro "Matz" Matsumoto
6f354322a8
Merge pull request #5318 from shuujii/fix-breakage-where-builds-except-host-dont-refer-mrbc-in-host
...
Fix breakage where builds except `host` don't refer` mrbc` in `host`
2021-02-04 15:24:05 +09:00
KOBAYASHI Shuji
f92c1f1b7f
Fix breakage where builds except host don't refer mrbc in host
...
Build error occurred under the following conditions.
* `host` build is presym enabled and unspecified `mruby-bin-mrbc` gem.
* Build except `host` unspecified `mruby-bin-mrbc` gem and mrbcfile.
### Example
#### Build configuration
```ruby
MRuby::Build.new{|conf| conf.toolchain}
MRuby::Build.new("host2"){|conf| conf.toolchain}
```
#### Error
```console
rake aborted!
external mrbc or mruby-bin-mrbc gem in current('host2') or 'host' build is required
/mruby/lib/mruby/build.rb:326:in `mrbcfile'
/mruby/tasks/mrblib.rake:9:in `block in <top (required)>'
/mruby/lib/mruby/build.rb:18:in `instance_eval'
/mruby/lib/mruby/build.rb:18:in `block in each_target'
/mruby/lib/mruby/build.rb:17:in `each'
/mruby/lib/mruby/build.rb:17:in `each_target'
/mruby/tasks/mrblib.rake:1:in `<top (required)>'
/mruby/Rakefile:27:in `load'
/mruby/Rakefile:27:in `<top (required)>'
```
2021-02-04 14:57:37 +09:00
Yukihiro "Matz" Matsumoto
c43dd75ea9
Avoid Heap Overflow in heredoc_remove_indent; fix #5316
2021-02-03 13:06:13 +09:00
Yukihiro "Matz" Matsumoto
810d13dacd
Move MRB_TRY part of mrb_close to src/error.c; ref 6cc52b3
...
We don't want to increase number of files that should be compiled by C++
compiler when `enable_cxx_exception` is turned on.
2021-02-03 09:43:41 +09:00
Yukihiro "Matz" Matsumoto
6cc52b3210
Ignore errors from atexit finalizers.
2021-02-02 10:57:32 +09:00
Yukihiro "Matz" Matsumoto
d759a73525
Allow more than 256 child irep; fix #5310
...
We have introduced following new instructions.
* `OP_LAMBDA16`
* `OP_BLOCK16`
* `OP_METHOD16`
* `OP_EXEC16`
Each instruction uses 16 bits operand for `reps` index. Since new
instructions are added, `mruby/c` VM should be updated.
Due to new instructions, dump format compatibility is lost, we have
increased `RITE_BINARY_MAJOR_VER`.
In addition, we have decreased the size of `refcnt` in `mrb_irep` from
`uint32_t` to `uint16_t`, which is reasonably big enough.
2021-02-01 16:20:58 +09:00
Yukihiro "Matz" Matsumoto
bd6b48fa3b
Copy iv table with #prepend; fix #5309
...
In addition, stop eager allocation of `mt` table.
2021-02-01 14:33:28 +09:00
Yukihiro "Matz" Matsumoto
d0ba7b95a9
Merge pull request #5314 from dearblue/presym_init
...
Introduced `MRB_PRESYM_INIT_SYMBOLS()`
2021-02-01 11:19:13 +09:00
Yukihiro "Matz" Matsumoto
5cce4ad433
Merge pull request #5315 from shuujii/use-mrb_open_core-instead-of-mrb_open--in-mrbc
...
Use `mrb_open_core()` instead of `mrb_open()` in `mrbc`
2021-02-01 10:12:29 +09:00
Yukihiro "Matz" Matsumoto
874f828a7a
Merge pull request #5313 from dearblue/diet-5272
...
Remove unnecessary `ci0` variables; ref #5272
2021-02-01 09:36:11 +09:00
KOBAYASHI Shuji
1fc8e00e4a
Use mrb_open_core() instead of mrb_open() in mrbc
2021-01-31 22:37:27 +09:00
Yukihiro "Matz" Matsumoto
406159d412
Merge pull request #5312 from dearblue/diet-5060
...
Remove unnecessary configuration macros; ref #5060
2021-01-31 19:57:31 +09:00
dearblue
a9949f5da4
Introduced MRB_PRESYM_INIT_SYMBOLS()
...
The `init_SYMBOLS()` function implicitly defined in `MRB_PRESYM_DEFINE_VAR_AND_INITER()` requires some familiarity when trying to find it from the caller.
By introducing `MRB_PRESYM_INIT_SYMBOLS()`, it is possible to find directly from the identifier.
2021-01-31 18:13:28 +09:00
dearblue
d824488915
Remove unnecessary ci0 variables; ref #5272
2021-01-31 17:24:16 +09:00
dearblue
5ede25c40f
Remove unnecessary configuration macros; ref #5060
...
The following macros will be removed:
- `ENSURE_STACK_INIT_SIZE`
- `RESCUE_STACK_INIT_SIZE`
- `MRB_ECALL_DEPTH_MAX`
2021-01-31 17:22:27 +09:00
Yukihiro "Matz" Matsumoto
cee916ab0f
Merge pull request #5311 from shuujii/change-.o.d-back-to-.d-because-.pi.d-is-no-longer-created
...
Change `.o.d` back to `.d` because `.pi.d` is no longer created
2021-01-31 15:25:58 +09:00
KOBAYASHI Shuji
d90abc648e
Change .o.d back to .d because .pi.d is no longer created
2021-01-31 15:08:37 +09:00
Yukihiro "Matz" Matsumoto
02e336ee27
Merge pull request #5308 from dearblue/internal-mrbc
...
Build internal mrbc in an internal directory
2021-01-30 15:43:50 +09:00
Yukihiro "Matz" Matsumoto
dd603d494d
Merge pull request #5306 from dearblue/unpack
...
Fixed `String#unpack` to handle the highest range of integer values
2021-01-29 23:51:26 +09:00
dearblue
14e07f721a
Build internal mrbc in an internal directory
2021-01-29 23:02:17 +09:00
dearblue
b500e82950
Remove unnecessary range confirmation
...
This is a correction based on the review by @matz.
https://github.com/mruby/mruby/pull/5306#pullrequestreview-578378401
2021-01-29 22:33:03 +09:00
dearblue
9c36499e31
Fixed String#unpack to handle the highest range of integer values
...
Previously, problems occurred when the `fixnum` was exceeded.
- 32-bit cpu mode with `MRB_WORD_BOXING` and `MRB_INT32`:
```console
% bin/mruby -e 'p [0x7fffffff].pack("N").unpack("N")'
trace (most recent call last):
-e:1: cannot unpack to Integer: 2147483647 (RangeError)
```
- 64-bit cpu mode with `MRB_WORD_BOXING` and `MRB_INT64`:
```console
% bin/mruby -e 'p [0x7fffffff_ffffffff].pack("q").unpack("q")'
trace (most recent call last):
-e:1: cannot unpack to Integer: 9223372036854775807 (RangeError)
```
2021-01-29 22:27:36 +09:00
Yukihiro "Matz" Matsumoto
825241205f
Replace mrb_intern_cstr to mrb_intern_lit.
2021-01-29 18:32:26 +09:00
Yukihiro "Matz" Matsumoto
4a7309d327
Merge pull request #5307 from dearblue/stackerr
...
Raise SystemStackError if mruby VM stack expansion fails
2021-01-28 23:01:40 +09:00
Yukihiro "Matz" Matsumoto
0030417ace
Merge pull request #5305 from dearblue/symbol0
...
Check first `0` when converting symbols into strings
2021-01-28 22:56:27 +09:00
dearblue
0dbb9e6e41
Raise SystemStackError if mruby VM stack expansion fails
2021-01-28 22:04:47 +09:00
dearblue
3d8a8fb661
Check first 0 when converting symbols into strings
...
This was because it caused `SIGSEGV` when `mruby -v` displayed an unnamed variable.
```console
% bin/mruby -ve 'call { |(a, b)| }'
...SNIP...
irep 0x8007d0050 nregs=3 nlocals=1 pools=0 syms=1 reps=1 iseq=12
file: -e
1 000 OP_LOADSELF R1
1 002 OP_BLOCK R2 I(0:0x8007d00a0)
1 005 OP_SENDB R1 :call 0
1 009 OP_RETURN R1
1 011 OP_STOP
irep 0x8007d00a0 nregs=6 nlocals=5 pools=0 syms=0 reps=0 iseq=29
local variable names:
zsh: segmentation fault (core dumped) bin/mruby -ve 'call { |(a, b)| }'
```
2021-01-28 21:15:31 +09:00
Yukihiro "Matz" Matsumoto
bb42c1b286
Merge pull request #5304 from shuujii/refine-preprocess_options
...
Refine `preprocess_options`; ref d95ffb036
2021-01-28 19:57:16 +09:00
Yukihiro "Matz" Matsumoto
d42d308620
Remove duplicated --cflags; [ci skip]
2021-01-28 19:55:05 +09:00
KOBAYASHI Shuji
c858cba3e9
Refine preprocess_options; ref d95ffb036
...
If we modify an option that may have been specified by users, we may
make unintended changes, so it is better not to modify it as much as
possible, IMO.
2021-01-28 18:42:19 +09:00
Yukihiro "Matz" Matsumoto
1c05764ba3
Update limitation.md for integer division change in 3.0.
2021-01-28 17:08:30 +09:00