dearblue
7ef4e54370
Comment out warn used in the Array#fetch method
...
I get an error because the current mruby does not have a `Kernel#warn` method.
But the warning itself is useful and I'll just comment it out in case it's implemented in the future.
2021-02-20 18:19:00 +09:00
Yukihiro "Matz" Matsumoto
0d7f5b8216
metaprog.c: fix a methods() bug with false argument; fix #5351
2021-02-20 14:56:55 +09:00
Yukihiro "Matz" Matsumoto
8ed15c078b
metaprog.c: remove unused argument from a private function.
2021-02-20 13:20:14 +09:00
KOBAYASHI Shuji
a6a76d8fd2
Add -s option to mrbc for make variable static
2021-02-14 11:55:53 +09:00
John Bampton
6204244b41
chore: fix missing HTTPS on links
2021-02-13 18:17:47 +10:00
John Bampton
be40e9c783
chore: fix spelling
...
Normally a single spell checker can't find all the mistakes or check all types of code.
These mistakes were found by another spell checker inside my editor with a more manual sift / find.
2021-02-13 17:21:17 +10:00
John Bampton
d55a74c418
feat(CI): check for trailing whitespace
...
Run on pull request only.
Use a shell script to check for trailing whitespace in all files.
Fail if trailing whitespace is found.
2021-02-13 16:37:46 +10:00
Yukihiro "Matz" Matsumoto
94fb86f89b
parse.y: string buffer (tokbuf) can overflow.
...
Check if `esclen` is smaller than `len` (original string length).
2021-02-13 14:06:37 +09:00
Yukihiro "Matz" Matsumoto
5ba37db981
Merge pull request #5336 from shuujii/fix-build-mruby-catch-gem-without-presym
...
Fix build `mruby-catch` gem without presym
2021-02-12 21:11:59 +09:00
KOBAYASHI Shuji
8ba7be0999
Fix build mruby-catch gem without presym
2021-02-12 19:19:32 +09:00
KOBAYASHI Shuji
955464ca3c
Add UncaughtThrowError#{tag,value} for Ruby compatibility
2021-02-12 19:09:18 +09:00
Yukihiro "Matz" Matsumoto
793fbab7d5
Rename mrb_sleep.c to sleep.c in mruby-sleep gem.
2021-02-12 11:11:10 +09:00
Yukihiro "Matz" Matsumoto
0db6e3eb6f
Rename mruby-catch.c to catch.c; ref #5328
2021-02-12 10:09:19 +09:00
Yukihiro "Matz" Matsumoto
c7809ca025
Refactor mruby-catch; ref #5328
...
- Move `#catch` definition to `mruby-catch.c` to avoid tweaking
- Remove `#__preserve_catch_method`
- Implement whole `#throw` method in C
2021-02-10 20:09:00 +09:00
Yukihiro "Matz" Matsumoto
f0e25121fd
Merge branch 'mruby-catch' of https://github.com/dearblue/mruby into dearblue-mruby-catch
2021-02-10 15:43:24 +09:00
Yukihiro "Matz" Matsumoto
aa5b7fbd80
i_gcd() does not work for MRB_INT_MIN.
2021-02-08 21:18:50 +09:00
Yukihiro "Matz" Matsumoto
530afca2d7
Move F(x) definition inside of #ifdef; fix #5330
2021-02-07 15:28:23 +09:00
Yukihiro "Matz" Matsumoto
1cc20978cf
Enlarge tolerance limit for float32; close #5329
...
Along with some refactoring on `mruby-math` tests.
2021-02-07 14:56:34 +09:00
Yukihiro "Matz" Matsumoto
3252518a3c
Fix tests to work with MRB_USE_FLOAT32; fix #5329
2021-02-07 14:55:45 +09:00
dearblue
232e07ad61
Reimplement mruby-catch; ref #5321
...
When there is a corresponding tag, the `RBreak` object is used to make a global jump.
Like CRuby, it can't be caught by `rescue`.
It is also the same as CRuby that it can be canceled in the middle by `ensure`.
### How to find the corresponding tag with `throw`
The called `catch` method remains in the call stack, and the tag also remains in the stack at that time.
So it is possible to find the called location by searching the two.
Note that no method can be given to the `proc` object specified in `RBreak`.
Therefore, inside the `catch` method, the argument block is called in a seemingly meaningless closure.
Also, as a countermeasure against `alias` etc., the `proc` object, which is the body of the `catch` method, is saved when mrbgem is initialized.
2021-02-06 21:41:08 +09:00
Yukihiro "Matz" Matsumoto
ef8f475722
MinGW does not need MSVC hack.
...
Both MinGW and MSVC provide _WIN32 macro.
2021-02-06 19:30:59 +09:00
dearblue
0f8d3d8777
No need to check class definition
...
Because now the `Struct` class is always defined when this file is included.
2021-02-06 18:05:05 +09:00
Yukihiro "Matz" Matsumoto
88113df098
Fixed compile errors in cmath.c in MinGW and macOS.
2021-02-06 17:00:03 +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
c43dd75ea9
Avoid Heap Overflow in heredoc_remove_indent; fix #5316
2021-02-03 13:06:13 +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
KOBAYASHI Shuji
1fc8e00e4a
Use mrb_open_core() instead of mrb_open() in mrbc
2021-01-31 22:37:27 +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
d42d308620
Remove duplicated --cflags; [ci skip]
2021-01-28 19:55:05 +09:00
Yukihiro "Matz" Matsumoto
2e33c2d120
Remove unnecessary bit shift in rational_new_f.
2021-01-28 08:47:16 +09:00
Yukihiro "Matz" Matsumoto
d4101d0a08
Revert "Fix the wrong directory host-bin to host/bin."
...
This reverts commit 34f82f24e9 .
Ref #5282
2021-01-26 21:17:28 +09:00
Yukihiro "Matz" Matsumoto
63b7439ddf
Change mruby-config to print usage on invalid arguments.
...
Or no argument at all.
2021-01-26 11:37:01 +09:00
Yukihiro "Matz" Matsumoto
34f82f24e9
Fix the wrong directory host-bin to host/bin.
...
Where `mruby-config` command should be generated.
2021-01-26 11:35:59 +09:00
Yukihiro "Matz" Matsumoto
17ecf14511
Revert "Minimize the changes in #5277 "
...
This reverts commit dc51d89ac2 .
2021-01-26 10:57:07 +09:00
Yukihiro "Matz" Matsumoto
0903e2a72e
Silence 'loss of data' warnings.
2021-01-25 15:45:32 +09:00
Yukihiro "Matz" Matsumoto
efef4541aa
Fix a bug for the case frexp() return Infinity.
2021-01-25 15:44:59 +09:00
Yukihiro "Matz" Matsumoto
23e5c08e31
Should use a limit for 32 bit platform; ref 05a8cc44
2021-01-25 15:44:59 +09:00
Yukihiro "Matz" Matsumoto
05a8cc44cc
Define RAT_INT_LIMIT for 32 bit platforms.
2021-01-24 22:21:56 +09:00