Yukihiro "Matz" Matsumoto
045761390d
Merge pull request #5094 from mruby-Forum/mruby3-preview
...
mruby 3.0.0-preview.
2020-10-16 10:56:54 +09:00
Hiroshi Mimaki
0589749952
mruby 3.0.0-preview.
2020-10-16 10:43:03 +09:00
Yukihiro "Matz" Matsumoto
4b5dd5683b
Merge branch 'zubycz-work_for_merge'
2020-10-15 18:35:53 +09:00
Yukihiro "Matz" Matsumoto
6b457d2c00
Merge branch 'work_for_merge' of https://github.com/zubycz/mruby into zubycz-work_for_merge
2020-10-15 18:35:13 +09:00
Yukihiro "Matz" Matsumoto
c779413df3
Fix out of bound access in parse.y.
2020-10-15 18:32:27 +09:00
Yukihiro "Matz" Matsumoto
9cebddf9fe
Merge pull request #5084 from mruby/mruby3
...
Mruby3
2020-10-15 18:31:06 +09:00
Yukihiro "Matz" Matsumoto
21e07d6113
Add indent to lv in the C dump.
2020-10-14 20:26:06 +09:00
Yukihiro "Matz" Matsumoto
5b40bb8d15
Avoid using C struct dump for test Ruby code.
...
Files under `test/t` and `mrbgem/*/test` are for tests, not for actual
execution. So symbols in those files need not to be pre-allocated. This
change slightly reduce the memory consumption.
2020-10-14 15:52:14 +09:00
taiyoslime
bec4d05340
Introduce endless range (a part of #5085 )
...
Co-Authored-By: n4o847 <22975590+n4o847@users.noreply.github.com >
Co-Authored-By: smallkirby <ssmallkirby@gmail.com >
2020-10-13 14:09:36 +09:00
Yukihiro "Matz" Matsumoto
8c276f95be
Merge pull request #5091 from zubycz/remove_unnecessary_assignment
...
Remove unnecessary assignment in String#upto
2020-10-12 18:23:22 +09:00
Yukihiro "Matz" Matsumoto
82046ff26e
Revert "Add a new function mrb_exc_protect()."
...
This reverts commit 8746a6fe4e7bda8a0fbc0eaece9314ec51a0c255.
We already have `mrb_protect()`, `mrb_ensure()` and `mrb_rescue()`
functions. If you need to handle exceptions from C functions, use those
functions above.
2020-10-12 18:20:30 +09:00
Yukihiro "Matz" Matsumoto
3d6adccfbe
Add a new function mrb_exc_protect().
...
`mrb_exc_protect()` takes two C functions, `body` to be executed first,
and `resc` to be executed when an error happens during `body` execution.
Since `mrb_exc_protect()` should be compiled with the proper compiler,
we will not see the problem like #5088 that was caused by `setjmp()` and
`throw` mixture.
2020-10-12 18:20:29 +09:00
Yukihiro "Matz" Matsumoto
5069fb15e4
Cause error explicitly from MRB_TRY() with cxx_exception; ref #5088
...
`MRB_TRY()` does not work when compiled by C compiler with `cxx_exception`
configuration. We should explicitly warn.
2020-10-12 18:20:29 +09:00
Yukihiro "Matz" Matsumoto
7ca59ecea2
Revert e2e6554b56 not to use MRB_TRY(); close #5088
...
`MRB_TRY()` does not work when compiled by C compiler with `cxx_exception`,
due to the mixture of `setjmp()` used by `mirb.c` and `throw` used by
the core. The original intension of e2e6554b56 is to protect code from
signal interruption, but the signal interruption is not well-defined in
mruby anyway.
2020-10-12 18:20:29 +09:00
Yukihiro "Matz" Matsumoto
041351fb05
No need to get the irep record size twice.
2020-10-12 18:20:28 +09:00
Yukihiro "Matz" Matsumoto
34356974ee
Update MRB_FLOAT_FMT to always use double precision.
2020-10-12 18:20:28 +09:00
Yukihiro "Matz" Matsumoto
d2b548de60
Remove the length of `Float' pool from the binary dump.
...
Also fixed the size calculation of `irep` dump, that could cause memory
corruption.
2020-10-12 18:20:28 +09:00
Yukihiro "Matz" Matsumoto
c80ece2149
Add bintest to host-m32 target.
2020-10-12 18:20:27 +09:00
Yukihiro "Matz" Matsumoto
356b719fef
Remove DEBUG_ONLY_EXPR() from CHECKPOINT_* macros; ref #5060
...
To allow C++ compilation. Fix suggested by @dearblue.
2020-10-12 18:20:27 +09:00
Yukihiro "Matz" Matsumoto
896338e219
Unify mrb_str_to_str to mrb_obj_as_string.
...
Redirect `mrb_str_to_str` to `mrb_obj_as_string` via C macro.
Inspired by #5082
2020-10-12 18:20:26 +09:00
Yukihiro "Matz" Matsumoto
bff79112a6
Dump/load 16 bits for ilen and slen in irep.
...
Those types are `uint16_t` in definition. Also we no longer need padding
for `iseq`.
2020-10-12 18:20:26 +09:00
Yukihiro "Matz" Matsumoto
f1d02bfc15
Clarify the meaning of MRB_IREP_STATIC; ref #5084
2020-10-12 18:20:26 +09:00
Yukihiro "Matz" Matsumoto
c1f5fdafb6
Remove duplicated constant IREP_TT_SFLAG; #5084
2020-10-12 18:20:25 +09:00
Yukihiro "Matz" Matsumoto
5d1d94d911
Use Markdown section marker #; ref #5084 [ci skip]
...
The fix was proposed by @dearblue
2020-10-12 18:20:25 +09:00
Yukihiro "Matz" Matsumoto
762556b6e8
Add const modifier to table in mrb_kwargs; #5084
...
The fix was proposed by @dearblue
2020-10-12 18:20:24 +09:00
Yukihiro "Matz" Matsumoto
618c589162
Should use PRId32 to dump .i32; ref #5084
...
The fix was proposed by @dearblue
2020-10-12 18:20:24 +09:00
Yukihiro "Matz" Matsumoto
ab2b42d363
Update bintest of mruby-bin-debugger.
...
Need to support `int / int -> int` update.
2020-10-12 18:20:24 +09:00
Yukihiro "Matz" Matsumoto
b9007244bd
Add const before struct mrb_irep in mruby-bin-debugger gem.
2020-10-12 18:20:23 +09:00
Yukihiro "Matz" Matsumoto
7932523052
Remove host-debug internal target.
...
Target `host-debug` to use `host` internal target with debugging
configuration.
2020-10-12 18:20:23 +09:00
Yukihiro "Matz" Matsumoto
12881ccb05
Use NULL instead of 0; close #2467
...
The PR was from @cubicdaiya.
2020-10-12 18:20:23 +09:00
Yukihiro "Matz" Matsumoto
3ff2757bf7
Fix mrb_int_mul_overflow() to check either operand being zero.
2020-10-12 18:20:22 +09:00
Yukihiro "Matz" Matsumoto
4dcc1819c9
Embed debug information to resolve Windows VC's issue.
2020-10-12 18:20:22 +09:00
Yukihiro "Matz" Matsumoto
21ee56d82a
Adjust backslash position in multi-line macros.
2020-10-12 18:20:21 +09:00
Yukihiro "Matz" Matsumoto
55a2ff5faf
Use MRB_INT_MAX instead of INT_MAX according to variable type.
2020-10-12 18:20:21 +09:00
Kondo Uchio
ed97c1779e
Remove duplicated pattern
2020-10-12 18:20:21 +09:00
Uchio Kondo
0d8793047d
Scan ruby files in directories
2020-10-12 18:20:20 +09:00
Kondo Uchio
cbb46f6975
Exact match to allowed method/variable names
2020-10-12 18:20:20 +09:00
Uchio Kondo
0c242e278d
Ensure exact match for symbols like foo!/foo?/foo=
...
e.g. symbols like "foo[]=" make invalid C codes
2020-10-12 18:20:20 +09:00
Yukihiro "Matz" Matsumoto
932b93fd12
Skip C comments from scan target; close #5072
...
The original PR was skipping Ruby comments as well, but caused some
issues in test suites.
2020-10-12 18:20:19 +09:00
Yukihiro "Matz" Matsumoto
a4c5824e59
Restore old function names for compatibility; ref #5070
...
- `mrb_check_intern()` to return `mrb_value`
- `mrb_intern_check()` to return `mrb_sym` [NEW]
Other new functions:
- `mrb_intern_check_cstr()`
- `mrb_intern_check_str()`
2020-10-12 18:20:19 +09:00
Yukihiro "Matz" Matsumoto
afcf19b727
Scan source code lines from downloaded mrbgems; fix #5071
2020-10-12 18:20:18 +09:00
Yukihiro "Matz" Matsumoto
30424dfa74
Restore old function names for compatibility; fix #5070
...
Rename new functions:
- `mrb_convert_type(mrb,val,type,tname,method)`
=> `mrb_type_convert(mrb,val,type,tname,method)`
- `mrb_check_convert_type(mrb,val,type,tname,method)`
=> `mrb_type_convert_check(mrb,val,type,tname,method)`
Old names are defined by macros (support `tname` drop and
`char*` => `mrb_sym` conversion).
2020-10-12 18:20:18 +09:00
Yukihiro "Matz" Matsumoto
9b8e5658ce
Fix integer casting on 64 bit platforms.
...
On platforms where `sizeof(long)` is 4, casting `(long)` can lose data
or sign information.
2020-10-12 18:20:18 +09:00
Yukihiro "Matz" Matsumoto
a127ded486
Fix warning from VC regarding implicit int conversion.
2020-10-12 18:20:17 +09:00
Yukihiro "Matz" Matsumoto
fe3c3bb661
Made Rational overhaul.
...
- Implement `Rational()` in `C`.
- Use `float` to `rational` conversion function taken from:
https://rosettacode.org/wiki/Convert_decimal_number_to_rational#C
2020-10-12 18:20:17 +09:00
Yukihiro "Matz" Matsumoto
f9e781d83a
Avoid unsigned int; Use mrb_int instead.
2020-10-12 18:20:16 +09:00
Yukihiro "Matz" Matsumoto
fc8885f2f4
Use mrb_int extensively instead of int.
...
The mixture causes warnings on 64 bit Windows (VC).
2020-10-12 18:20:16 +09:00
Yukihiro "Matz" Matsumoto
fe1ad37bfb
Use goto to avoid problems with DIRECT_THREADED.
...
You can now use `NEXT` within `switch` statement like 7c087eb.
2020-10-12 18:20:16 +09:00
Yukihiro "Matz" Matsumoto
9e842b3a75
Extract div code in VM and make them shared by div methods.
2020-10-12 18:20:15 +09:00
Yukihiro "Matz" Matsumoto
b81edb0035
Don't use NEXT within switch statement.
...
On non-`gcc` compatible environment, `NEXT` is translated to `break`.
2020-10-12 18:20:15 +09:00
Yukihiro "Matz" Matsumoto
86dee45f1d
Remove meaningless IO.open(1<<32) test.
2020-10-12 18:20:15 +09:00
Yukihiro "Matz" Matsumoto
08f61db6ee
Skip some Math.atan2() tests.
...
Linux `atan2(3)` man page says:
```
If y is positive infinity (negative infinity) and x is positive infinity,
+pi/4 (-pi/4) is re‐ turned.
```
But on Microsoft VC/MinGW, `atan2()` returns `NaN` if either of
arguments is infinite. So we skip those tests on the platforms.
2020-10-12 18:20:14 +09:00
Yukihiro "Matz" Matsumoto
7f66e50ba2
Explain MRB_USE_MALLOC_TRIM; ref #5069
2020-10-12 18:20:14 +09:00
Rory OConnell
5592c7413a
Remove compiler feature detection
2020-10-12 18:20:14 +09:00
Rory OConnell
fff0f17b49
Better malloc_trim define name
2020-10-12 18:20:13 +09:00
Rory OConnell
2b05cf48d0
Work around removing tmp dir
2020-10-12 18:20:13 +09:00
Rory OConnell
dae0de4461
Add call to malloc_trim on a full GC
2020-10-12 18:20:12 +09:00
Rory OConnell
cfe8b0c81d
Add methods for asking about compiler features
2020-10-12 18:20:12 +09:00
Yukihiro "Matz" Matsumoto
026726dd49
Remove obsolete MRB_WITHOUT_FLOAT macro from numeric.c.
2020-10-12 18:20:12 +09:00
Yukihiro "Matz" Matsumoto
d7986b449d
Change some int variables to mrb_int.
...
To silence some warnings. This change cancels part of 7ef3604134 .
2020-10-12 18:20:11 +09:00
Yukihiro "Matz" Matsumoto
4970e24a1c
Remove full-core from target/appveyor.rb.
2020-10-12 18:20:11 +09:00
Yukihiro "Matz" Matsumoto
950e60363a
Update IO#popen to use keyword arguments instead of Hash args.
2020-10-12 18:20:11 +09:00
Yukihiro "Matz" Matsumoto
87c7064bad
Update mrb_get_args() keyword argument support [incompatible]
...
* `mrb_kwargs` structure reordered (`values` and `rest` come last)
* take symbols instead of C `char*`
2020-10-12 18:20:10 +09:00
Yukihiro "Matz" Matsumoto
4cf1da9542
Separate jump destination check in OP_R_RETURN.
...
In the past code, the current `callinfo (ci)` was modified, thus it was
possible to pop `ci` beyond the `cibase`, that could cause out of memory
bound access for the code like the following:
```ruby
def m2
lambda {
Proc.new {
return :return # return from the method
}
}.call.call
:never_reached
end
p m2
```
2020-10-12 18:20:10 +09:00
Yukihiro "Matz" Matsumoto
b01207ea94
Make the scope of const struct RProc *dst narrower.
2020-10-12 18:20:09 +09:00
Yukihiro "Matz" Matsumoto
c2444b8424
Redefine CHECKPOINT_* macros.
...
By definition `mrb_assert()` called only when `MRB_DEBUG` is defined too.
But make I wanted to make clear that the local variable `current_checkpoint_tag`
is only accessed when `MRB_DEBUG` is set by wrapping with `DEBUG_ONLY_EXPR()`.
2020-10-12 18:20:09 +09:00
Yukihiro "Matz" Matsumoto
8461be11fc
Include mruby/endian.h only when MRB_NO_FLOAT is undefined.
2020-10-12 18:20:09 +09:00
Yukihiro "Matz" Matsumoto
260db0f5fb
Abandon packing all lower case symbols with 6 characters.
...
To make packed inline symbols within 31 bits, because the new method
hash tables allows only 31 bits of symbols. They use top 1 bit to maek
unused slots.
2020-10-12 18:20:08 +09:00
Yukihiro "Matz" Matsumoto
99ef00fe02
Add U prefix for mrb_sym dump.
...
Since `%u` of `mrb_sym` may be its MSB turned on.
2020-10-12 18:20:08 +09:00
Yukihiro "Matz" Matsumoto
b9dfd0438f
Don't compare int' with size_t (from sizeof()`).
2020-10-12 18:20:08 +09:00
Yukihiro "Matz" Matsumoto
d0b5d720ac
Use mrb_integer() instead of mrb_int().
...
`mrb_int()` includes implicit integer conversion, where `mrb_integer()`
does not. In this case, we know `obj` is an integer before hand.
2020-10-12 18:20:07 +09:00
Yukihiro "Matz" Matsumoto
dd1ce5d53e
Silence warnings from implicit integer conversions.
...
Caused from combination of `mrb_int`, `int` and `size_t`..
2020-10-12 18:20:07 +09:00
Yukihiro "Matz" Matsumoto
7eaaee5405
Add a new gem: mruby-catch.
...
Implements `catch`/`throw` non-local jump inherited from Lisp.
`catch([tag]) {|tag| block } -> obj`
Example:
```
catch(:foo) { 123 } # => 123
catch(:foo) { throw(:foo, 456) } # => 456
catch(:foo) { throw(:foo) } # => nil
```
2020-10-12 18:20:07 +09:00
Yukihiro "Matz" Matsumoto
471479e723
Change float representation in mrb binary files.
...
From human readable (ASCII) string representation to binary dump of
IEEE754 in little endian.
2020-10-12 18:20:06 +09:00
Yukihiro "Matz" Matsumoto
397b005715
Replace the implementation of method tables in classes/modules.
...
They are basically the copy of instance variable tables. On my Linux
box, memory consumption of `mrbtest` measured by `valgrind` is:
- old: 17,683,830 bytes
- new: 14,283,749 bytes
2020-10-12 18:20:06 +09:00
Yukihiro "Matz" Matsumoto
bf118b9006
Stop warning on 64 bit platforms.
2020-10-12 18:20:06 +09:00
Yukihiro "Matz" Matsumoto
7e3d22f095
Raname mrb_exc_new_str_lit() to mrb_exc_new_lit().
...
It uses `mrb_str_new_lit()` internally, but it doesn't need to express
it in the name of the function (macro).
2020-10-12 18:20:06 +09:00
Yukihiro "Matz" Matsumoto
01dbbcd553
Handle integer overflow in rational_s_new.
2020-10-12 18:20:05 +09:00
Yukihiro "Matz" Matsumoto
e479a42757
Handle potential overflow in int_div and flo_idiv.
2020-10-12 18:20:05 +09:00
Yukihiro "Matz" Matsumoto
5134031e18
Use mrb_int_value() instead of mrb_fixnum_value().
...
Where fixnum overflow can happen.
2020-10-12 18:20:05 +09:00
Yukihiro "Matz" Matsumoto
befcbd5607
Add MRB_NAN_BOXING for boxing target.
2020-10-12 18:20:04 +09:00
Yukihiro "Matz" Matsumoto
9d613159b5
Add mrb_integer() definition for MRB_NAN_BOXING.
2020-10-12 18:20:04 +09:00
Yukihiro "Matz" Matsumoto
3e71359d7a
Update mruby-random gem to support 32 bit platforms.
...
`sizeof(rand_state)` had been bigger than `sizeof(void*)*3`. Changed
random number generator to `Xorshift96` on 32 bit platforms.
2020-10-12 18:20:04 +09:00
Yukihiro "Matz" Matsumoto
2b188ed8a1
Reorganize Integer system.
...
- Integrate `Fixnum` and `Integer`
- Remove `Integral`
- `int / int -> int`
- Replace `mrb_fixnum()` to `mrb_int()`
- Replace `mrb_fixnum_value()` to `mrb_int_value()`.
- Use `mrb_integer_p()` instead of `mrb_fixnum_p()`
2020-10-12 18:19:54 +09:00
n4o847
59af217779
Remove unnecessary assignment in String#upto
...
Co-authored-by: taiyoslime <t@iyosli.me >
Co-authored-by: smallkirby <ssmallkirby@gmail.com >
2020-10-12 16:50:22 +09:00
Yukihiro "Matz" Matsumoto
2bb84f1f1a
Update build process for both host and cross compile.
2020-10-12 16:21:52 +09:00
Yukihiro "Matz" Matsumoto
850e200e84
Describe the need for -o option if multi files given.
2020-10-12 16:21:51 +09:00
Yukihiro "Matz" Matsumoto
b978231bda
Update usage description of mrbc.
2020-10-12 16:21:51 +09:00
Yukihiro "Matz" Matsumoto
b7fe929232
Update Rakefile.
...
So that you can omit `host` target. Now `host-debug` works.
2020-10-12 16:21:51 +09:00
Yukihiro "Matz" Matsumoto
20ffc2206a
"backport" CRuby r46756; ref #3500
...
Based on cremno/mruby@6bd0119
2020-10-12 16:21:50 +09:00
Yukihiro "Matz" Matsumoto
caee1f68a2
Change the return type of mrb_check_intern() and friends.
...
They used to return `mrb_value` but now return `mrb_sym` for consistency
with other `intern` functions. If symbols are not defined, `check`
functions return `0`, instead of `nil` in the past.
It causes API incompatibility but I believe few people use those
functions out of the core, and those changes are very easy to handle,
hopefully.
2020-10-12 16:21:50 +09:00
Yukihiro "Matz" Matsumoto
a4302524d0
Avoid using mrb_check_intern_str().
...
We call `mrb_intern_str()` later anyway, so there's no need to avoid
defining a new symbol here.
2020-10-12 16:21:49 +09:00
Yukihiro "Matz" Matsumoto
12d31c33af
"backport" CRuby r46656; #2500
...
Based on cremno/mruby@d446192
2020-10-12 16:21:49 +09:00
Yukihiro "Matz" Matsumoto
5a7cbebc8a
Remove MRB_NO_FLOAT_INLINE and MRB_WBOX_FLOAT_INLINE configuration.
...
They are not used from the beginning.
2020-10-12 16:21:49 +09:00
Yukihiro "Matz" Matsumoto
04fd7af23c
Fixed ISO section numbers in test/t/superclass.rb.
2020-10-12 16:21:48 +09:00
Yukihiro "Matz" Matsumoto
2a92fb2516
Make division by zero cause ZeroDivisionError.
...
As described in ISO 15.2.30.
2020-10-12 16:21:48 +09:00
Yukihiro "Matz" Matsumoto
18e3d39ee2
Fixed wrong size calculation for memsize_of().
2020-10-12 16:21:47 +09:00
Yukihiro "Matz" Matsumoto
55163a8a0a
Rename MRB_TT_FIXNUM to MRB_TT_INTEGER.
...
We still have `#define MRB_TT_FIXNUM MRB_TT_INTEGER` for compatibility.
2020-10-12 16:21:47 +09:00
cremno
867268897a
change linkage to internal
2020-10-12 16:21:47 +09:00
cremno
11317de468
define sprintf and format as global functions
2020-10-12 16:21:46 +09:00
cremno
857a1d9fc9
move mrbgem initialization into sprintf.c
...
Also remove some unnecessary code.
2020-10-12 16:21:46 +09:00
cremno
b44326b561
Add tests for CRuby bug #9982
...
https://bugs.ruby-lang.org/issues/9982
2020-10-12 16:21:45 +09:00
KOBAYASHI Shuji
8bd1bc47b3
Always add trailing .0 in Float#inspect; ref #4225
...
Trailing `.0` is removed from `Float#to_s` and `Float#inspect` at
9d08025b . However, I think the more human-readable format is better
for `Float#inspect`.
For example, in the `Float#to_s` format, the failure message is not
well understood when testing values including types by `eql?` (e.g.
`Numeric#step` test).
```ruby
assert "example" do
exp = 1.0
act = 1
assert_operator(exp, :eql?, act) #=> Expected 1 to be eql? 1.
end
```
2020-10-12 16:21:45 +09:00
Yukihiro "Matz" Matsumoto
c45674aff0
Rename mruby_version in the lockfile to mruby; close #4658
2020-10-12 16:21:44 +09:00
dearblue
80fe9838d2
Integrate Fixnum class into Integer class
...
* The `Fixnum` constant is now an alias for the `Integer` class.
* Remove `struct mrb_state::fixnum_class` member.
If necessary, use `struct mrb_state::integer_class` instead.
2020-10-12 16:21:44 +09:00
KOBAYASHI Shuji
40d0d8fe0e
Fix Fixnum and Float comparison in Hash lookup
...
```console
$ bin/mruby -e 'p({1 => 2}.key?(1.0))'
true
```
```console
$ bin/mruby -e 'p({1 => 2}.key?(1.0))'
false
```
2020-10-12 16:21:44 +09:00
Yukihiro "Matz" Matsumoto
ee544dc881
Update the PR #4922 according to #3123 .
...
close #3123
2020-10-12 16:21:43 +09:00
Yukihiro "Matz" Matsumoto
ed32b6fcdc
Update tests for integer division.
2020-10-12 16:21:43 +09:00
Yukihiro "Matz" Matsumoto
c8cf9512cd
Update the PR #4992 to enable integer division always.
2020-10-12 16:21:43 +09:00
Lanza
1835753f9f
Update vm.c
2020-10-12 16:21:42 +09:00
Yukihiro "Matz" Matsumoto
424afa4446
Make Proc#parameters to support keyword arguments; fix #5066
...
TODO: Unlike CRuby, mruby's `Proc#parameters` does not distinguish
required keyword arguments and optional keyword arguments currently.
2020-10-12 16:21:42 +09:00
Yukihiro "Matz" Matsumoto
02e69d1c2c
Update mruby3.md.
2020-10-12 16:21:41 +09:00
Yukihiro "Matz" Matsumoto
44a07393f4
Use xoshiro128++ instead of xorshift96/128.
2020-10-12 16:21:41 +09:00
Yukihiro "Matz" Matsumoto
0b22bf4a89
Fix rand_real to return random number [0,1) not [0,1].
2020-10-12 16:21:41 +09:00
Yukihiro "Matz" Matsumoto
1520c97e17
Add default host target for cross compiling.
...
You don't have to define explicit `host` build target any more.
2020-10-12 16:21:40 +09:00
Yukihiro "Matz" Matsumoto
8a87549315
Rename float configuration option names.
...
- `MRB_WITHOUT_FLOAT` => `MRB_NO_FLOAT`
- `MRB_USE_FLOAT` => `MRB_USE_FLOAT32`
The former is to use `USE_XXX` naming convention. The latter is to make
sure `float` is 32bit float and not floating point number in general.
2020-10-12 16:21:40 +09:00
Yukihiro "Matz" Matsumoto
ef9df5dc7d
Allow MRUBY_CONFIG to specify target file out of source tree.
2020-10-12 16:21:39 +09:00
Yukihiro "Matz" Matsumoto
7dc595f98f
Add a new document named mruby3.md.
...
That describes the changes in `mruby3`.
2020-10-12 16:21:39 +09:00
Yukihiro "Matz" Matsumoto
d4b89ccc61
Add assertion we can pack function pointers in mrb_method_t.
...
If this assertion fails, you have to define `MRB_USE_METHOD_T_STRUCT`.
2020-10-12 16:21:39 +09:00
Yukihiro "Matz" Matsumoto
72d071540c
Rename MRB_METHOD_T_STRUCT to MRB_USE_METHOD_T_STRUCT.
...
It's the first change of renaming configuration options to `MRB_XXX` to
`MRB_USE_XXX` or `MRB_NO_XXX`.
2020-10-12 16:21:38 +09:00
Yukihiro "Matz" Matsumoto
dea185e687
Change out-of-range condition of time_t conversion.
2020-10-12 16:21:38 +09:00
Yukihiro "Matz" Matsumoto
968053a35b
Avoid out-of-range error for negative time on MRB_TIME_T_UINT.
...
On platforms where `time_t` is unsigned, negative time can be a result
of integer casting. Out-of-range error is too strict for those cases.
This fix does not address wrong time value in `MRB_WORD_BOXING`. It will
be addressed later (by introducing "big" integers).
2020-10-12 16:21:37 +09:00
Yukihiro "Matz" Matsumoto
66114f8332
Change default mrb_value representation to MRB_WORD_BOXING.
2020-10-12 16:21:37 +09:00
Yukihiro "Matz" Matsumoto
8813ebec07
Skip array embedding if MRB_NO_BOXING and MRB_32BIT; fix #4382
...
On some platforms, `sizeof(mrb_value) > sizeof(void*)*3`, which makes
`MRB_ARY_EMBED_LEN_MAX` zero. And zero sized array cause compile errors.
2020-10-12 16:21:36 +09:00
Yukihiro "Matz" Matsumoto
a93ef815be
Add static check for MRB_USE_FLOAT and MRB_WITHOUT_FLOAT.
2020-10-12 16:21:36 +09:00
Yukihiro "Matz" Matsumoto
905d4010bf
Fix wrong YAML in .github/workflows/build.yml.
2020-10-12 16:21:36 +09:00
Yukihiro "Matz" Matsumoto
763b39d00b
Simplify NaN boxing definitions.
...
Remove `#ifdef` from `union mrb_value_`.
2020-10-12 16:21:35 +09:00
Yukihiro "Matz" Matsumoto
107c777341
Rename OP_JUW instruction to OP_JMPUW.
2020-10-12 16:21:35 +09:00
Yukihiro "Matz" Matsumoto
500f721f70
Fix typo _hander -> _handler.
2020-10-12 16:21:34 +09:00
Yukihiro "Matz" Matsumoto
cb89e1f0d9
Adjust PR #5060 to the latest mruby3 branch.
2020-10-12 16:21:34 +09:00
dearblue
6bc5857125
Suppress warnings for C++
...
Variables in jump destination block separate declaration and assignment.
2020-10-12 16:21:34 +09:00
dearblue
bfb7b491cc
Restore the variable pc after longjmp()
...
Changes made after `setjmp()` are destroyed and need reassignment.
This problem is now caused by the addition of the `OP_JUW` instruction.
When actually building on FreeBSD 12.1 with `clang10 -fsanitize=address`, mrbtest "NameError#name [15.2.31.2.1]" is failed.
However, qualifying `pc` with `volatile` slows down significantly and increases the object code.
Suppress them by qualifying only the variables that restore `pc`.
2020-10-12 16:21:33 +09:00
dearblue
c1f112c49a
Replace global jump with catch handler implementation
...
When a global jump occurs, look at the catch handler table to determine where to jump.
In that case, `pc` already shows the following instruction, but since the table shows `begin_offset ... end_offset`, the comparison is done with `begin_offset < pc && pc <= end_offset`.
If there is a corresponding handler, move `pc` to `handler.target_offset` and continue running the VM.
When a global jump across `ensure` is made by `return`, `break`, `next`, `redo` and `retry`, the extended `RBreak` object saves and restores the C-level execution position.
This extended `RBreak` can have tag information, which makes it a pseudo coroutine (the "tag" mimics CRuby).
The implementation of pseudo coroutines by `RBreak` is summarized by `CHECKPOINT_RESTORE ... CHECKPOINT_MAIN ... CHECKPOINT_END` and `throw_tagged_break` / `unwind_ensure` macros.
The restart of processing is branched by `RBREAK_TAG_FOREACH(DISPATCH_CHECKPOINTS)`.
- Not only `rescue` blocks but also `ensure` blocks are now sandwiched between `OP_EXCEPT` and `OP_RAISEIF`.
- Remove the function `ecall()`.
It is no longer necessary to re-enter the VM to perform an "ensure block".
This will resolves #1888 .
- Added instruction `OP_JUW` (Jump while UnWind).
It jumps unconditionally like `OP_JMP`, but searches the catch handler table and executes the ensure block.
Since it searches the catch handler table, it is much heavier than `OP_JMP`.
2020-10-12 16:21:33 +09:00
dearblue
0d7b4deccf
Removed push/pop instructions for rescue/ensure
...
`OP_PUSHERR`, `OP_POPERR`, `OP_EPUSH` and `OP_EPOP` are removed.
2020-10-12 16:21:32 +09:00
dearblue
f467b02d45
Extended OP_EXCEPT and OP_RAISE (OP_RAISEIF) instructions
...
- `OP_EXCEPT` checks if `mrb->exc` is `NULL`, `MRB_TT_EXCEPTION` or
`MRB_TT_BREAK`.
If `mrb->exc` is `NULL`, it will be replaced with `nil`.
- If `OP_RAISE` is `nil`, it does nothing and the immediately
following instruction is executed (like `OP_NOP`).
Also, in case of `RBreak` object, it moves to the processing for
`break`.
With this change, the instruction name is changed from
`OP_RAISE` to `OP_RAISEIF`.
2020-10-12 16:21:32 +09:00
dearblue
a54a3df32c
Extended mruby binary format
...
The catch handler table is combined with iseq block.
This is to prevent the structure from growing by adding a field for the
catch handler table to the `mrb_irep` structure.
"iseq block" and "catch handler table":
[number of catch handler table (2 bytes)]
[number of byte code (4 bytes)]
[iseq (any bytes)]
[catch handlers (multiple of 7 bytes)]
catch handler:
[catch type (1 byte)]
[begin offset (2 bytes)]
[end offset (2 bytes)]
[target offset (2 bytes)]
catch type: enum mrb_catch_type (0 = rescue, 1 = ensure)
begin offset: Includes the specified instruction address
end offset: Does not include the specified instruction address
target offset: replaces pc with the specified instruction address
This table is not expanded by `read_irep_record_1()`.
The necessary elements are expanded one by one when used.
2020-10-12 16:21:32 +09:00
Yukihiro "Matz" Matsumoto
3ad6bbc40c
Add target/host-cxx.rb to compile mruby with cxx_abi.
2020-10-12 16:21:31 +09:00
Yukihiro "Matz" Matsumoto
67d92c48b5
Avoid breaking the result array by side-effect in C++.
2020-10-12 16:21:31 +09:00
Yukihiro "Matz" Matsumoto
6fbc03b3a8
Revert 4c001673b
...
Probably I misunderstand strict aliasing rule of C++. The fix in
4c001673b was other way around.
2020-10-12 16:21:30 +09:00
Yukihiro "Matz" Matsumoto
690cafe274
Initialize kdict in OP_ENTER in vm.c.
2020-10-12 16:21:30 +09:00
Yukihiro "Matz" Matsumoto
4e56e0defc
Rename union mrb_value to union mrb_value_.
...
Since some compiler complains when we `typedef` `mrb_value`.
2020-10-12 16:21:30 +09:00
Yukihiro "Matz" Matsumoto
53e46be7e2
Simplify mrb_value structure for MRB_WORD_BOXING.
2020-10-12 16:21:29 +09:00
Yukihiro "Matz" Matsumoto
73e289c54e
Simplify mrb_value structure for MRB_NAN_BOXING.
2020-10-12 16:21:29 +09:00
Yukihiro "Matz" Matsumoto
ce372122ed
Remove mc_clear_by_id.
...
Clearing all method cache using `memset` is faster than conditional
clear by method id.
2020-10-12 16:21:28 +09:00
Yukihiro "Matz" Matsumoto
a733c6e0ea
Do not call mrb_mc_clear_by_class at mrb finalization.
2020-10-12 16:21:28 +09:00
Yukihiro "Matz" Matsumoto
425b142168
Refine MRB_NAN_BOXING on 32bit architecture.
...
You don't need pointer tweaking on 32bit architecture, where pointers
fit in 32bit (lower half of mrb_value).
2020-10-12 16:21:27 +09:00
Yukihiro "Matz" Matsumoto
f751c28ca4
Add target/host-m32.rb to compile mruby in 32bit mode.
...
Tested only on Linux. You need to install 32bit relate libraries,
e.g. libc6-dev-i386.
2020-10-12 16:21:27 +09:00
Yukihiro "Matz" Matsumoto
4281429412
Use memset() to clear method cache.
2020-10-12 16:21:27 +09:00
Yukihiro "Matz" Matsumoto
0e50ea90f3
Add const specifier to cipush(); ref #5052
2020-10-12 16:21:26 +09:00
Yukihiro "Matz" Matsumoto
1eb71b008f
Change default boxing scheme from MRB_NO_BOXING.
...
On 64bit platforms: `MRB_NAN_BOXING`
On 32bit platforms: `MRB_WORD_BOXING`
On debugging: `MRB_NO_BOXING`
2020-10-12 16:21:26 +09:00
Yukihiro "Matz" Matsumoto
84a68ca5ae
Make sure bintest only works with host target.
2020-10-12 16:21:26 +09:00
Yukihiro "Matz" Matsumoto
5e9dc72bc5
Pack mrb_value into uint64_t when MRB_NAN_BOXING.
2020-10-12 16:21:25 +09:00
Yukihiro "Matz" Matsumoto
1eacdae319
Use hash table instead of segment list for instance variables.
2020-10-12 16:21:25 +09:00
Yukihiro "Matz" Matsumoto
59b35250cc
Rename mrb_hash_modify to hash_modify.
...
Since it's an internal static function.
2020-10-12 16:21:24 +09:00
Yukihiro "Matz" Matsumoto
2b45d454bc
Use mrb_field_write_barrier instead of mrb_write_barrier for push.
...
When the array is very big, the simpler `mrb_write_barrier` causes
calling `gc_mark_children` for big arrays repeatedly. That would hinder
performance very badly.
2020-10-12 16:21:24 +09:00
Yukihiro "Matz" Matsumoto
ff0e3bcea6
Check lv before printing local variable names.
2020-10-12 16:21:24 +09:00
Yukihiro "Matz" Matsumoto
8b3f3c0bf3
Fix the bug by the combination with MRB_64BIT and MRB_INT32.
...
Which is caused by `MRB_NAN_BOXING`.
2020-10-12 16:21:23 +09:00
Yukihiro "Matz" Matsumoto
cf2aabdad6
Run tests for target/boxing.rb.
2020-10-12 16:21:23 +09:00
Yukihiro "Matz" Matsumoto
3d8a38bea4
You don't need to keep index in local variables info in irep.
2020-10-12 16:21:22 +09:00
Yukihiro "Matz" Matsumoto
639946a006
Enable method cache by default.
...
Introduced `MRB_NO_METHOD_CACHE` which is inverse of `MRB_METHOD_CACHE`
that should be enabled intestinally. In addition, the default cache is
made bigger (128 -> 256).
2020-10-12 16:21:22 +09:00
Yukihiro "Matz" Matsumoto
fb5e8ab6d5
Provide a new build target host-gprof that enables profiling.
2020-10-12 16:21:21 +09:00
Yukihiro "Matz" Matsumoto
11955ca1a1
Call #initialize_copy from init_copy only if it's redefined.
2020-10-12 16:21:21 +09:00
Yukihiro "Matz" Matsumoto
52dd0a8cd7
Skip mrb_get_args() in mrb_ary_push().
2020-10-12 16:21:21 +09:00
Yukihiro "Matz" Matsumoto
6db0162ec7
Upgrade RITE_VM_VERSION to 0300 (means mruby 3.0).
2020-10-12 16:21:20 +09:00
Yukihiro "Matz" Matsumoto
dec34d6c7b
Split MRB_BINARY_FORMAT to major and minor.
...
The minor versions should be upper compatible. So mere opcode, section
addition can be done without breaking compiled binary.
2020-10-12 16:21:20 +09:00
Yukihiro "Matz" Matsumoto
8f0ac27196
Update opcode reference and comment.
...
- no OP_EXT_ anymore
- OP_LOADI16 in right position
2020-10-12 16:21:19 +09:00
Yukihiro "Matz" Matsumoto
fd10c72319
Remove OP_EXT[123] from operands.
2020-10-12 16:21:19 +09:00
Yukihiro "Matz" Matsumoto
ce7508e0d5
Allow rescue modifier in endless method definitions.
2020-10-12 16:21:19 +09:00
Yukihiro "Matz" Matsumoto
c29212cf44
Implement endless-def as in CRuby [Feature#16746].
2020-10-12 16:21:18 +09:00
Yukihiro "Matz" Matsumoto
6e86e290e4
Rightward-assign by ASSOC.
...
[ruby-bugs:15921]
2020-10-12 16:21:18 +09:00
Yukihiro "Matz" Matsumoto
b2398879fa
Avoid including limits.h and stdint.h before mruby.h.
...
They are included from `mruby.h` anyway, and including it ahead can
cause some errors regarding `INT32_MAX` etc. with C++ compiler.
2020-10-12 16:21:18 +09:00
Yukihiro "Matz" Matsumoto
e01648b86b
Stop CXX_ABI test with VisualC++.
...
This combination is too hard to support. Difference between C and C++ is
too big with VisualC++. GCC and clang are OK.
2020-10-12 16:21:17 +09:00
Yukihiro "Matz" Matsumoto
e0c9b53217
Run rake gensym on AppVeyor.
2020-10-12 16:21:17 +09:00
Yukihiro "Matz" Matsumoto
ce30a4e04b
Add const to irep structure to place data on ROM.
2020-10-12 16:21:16 +09:00
Yukihiro "Matz" Matsumoto
31877043c4
Invoke rake gensym for GitHub action build.
2020-10-12 16:21:16 +09:00
Yukihiro "Matz" Matsumoto
167a747a41
Constify irep struct for Class#new.
2020-10-12 16:21:16 +09:00
Yukihiro "Matz" Matsumoto
cfc958b01a
Add const qualifier to generated Proc structures.
2020-10-12 16:21:15 +09:00
Yukihiro "Matz" Matsumoto
015f06ed8e
Should not mark red (i.e. ROM allocated) objects.
2020-10-12 16:21:15 +09:00
Yukihiro "Matz" Matsumoto
95169097fc
Add /std:c++latest option to VC CXX_ABI build.
2020-10-12 16:21:14 +09:00
Yukihiro "Matz" Matsumoto
474545bba2
Do not define mrb_lstat unless S_ISLNK is defined.
2020-10-12 16:21:14 +09:00
Yukihiro "Matz" Matsumoto
925cd2ab8f
Use int instead of mrb_int for arena index.
2020-10-12 16:21:14 +09:00
Yukihiro "Matz" Matsumoto
9debf63340
Specify the size of struct RStringEmbed array part.
2020-10-12 16:21:13 +09:00
Yukihiro "Matz" Matsumoto
0f978932e2
Use %u instead of %d to dump symbol IDs.
2020-10-12 16:21:13 +09:00
Yukihiro "Matz" Matsumoto
6488ae855f
Avoid use of designated initializer for the sake of cxx_abi.
2020-10-12 16:21:13 +09:00
Yukihiro "Matz" Matsumoto
d2f267a13d
Add casts to silence warnings.
2020-10-12 16:21:12 +09:00
Yukihiro "Matz" Matsumoto
a4a1e01e81
Add explicit gensym to GitHub Actions.
2020-10-12 16:21:12 +09:00
Yukihiro "Matz" Matsumoto
ee111dd175
Clarify the use of MRB_64BIT and MRB_INT64 in dump.c and load.c.
...
- `MRB_64BIT`: the size of a pointer is 64 bits
- `MRB_INT64`: the size of `mrb_int` is 64 bits
2020-10-12 16:21:11 +09:00
Yukihiro "Matz" Matsumoto
f0c1126997
Fix dump.c for MRB_INT32 env.
2020-10-12 16:21:11 +09:00
Yukihiro "Matz" Matsumoto
b7031e8bc8
Enable NUL (\0) again.
2020-10-12 16:21:10 +09:00
Yukihiro "Matz" Matsumoto
52507b1083
Generate C struct from irep instead of binary dump.
2020-10-12 16:21:10 +09:00
Yukihiro "Matz" Matsumoto
7deb41b0e8
Generate C source file to represent mrb_irep structures.
...
Type `mrbc -S -B<init> -o<outfile> <rbfiles...>` to generate the C
source code that holds compiled `mrb_irep`.
Appending the following code to the bottom of the generated code,
`mruby` executes the compiled code:
```C
int
main()
{
mrb_state *mrb = mrb_open();
struct RProc *p = mrb_proc_new(mrb, &init_irep);
mrb_vm_run(mrb, p, mrb_top_self(mrb), 0);
mrb_close(mrb);
return 0;
}
```
Eventually static compile should use this representation, instead
of `uint8_t` array that holds `mrb` data, so that we can skip
interpreting `mrb` data.
2020-10-12 16:21:09 +09:00
Yukihiro "Matz" Matsumoto
f1c06eef7c
Scan more symbols from Ruby files by rake gensym.
2020-10-12 16:21:09 +09:00
Yukihiro "Matz" Matsumoto
449317a251
Removed alignment pragma from -B output from mrbc.
...
We no longer need 4 bytes alignment after we moved to the byte oriented
instructions.
2020-10-12 16:21:09 +09:00
Yukihiro "Matz" Matsumoto
d428fa0c4a
Replace entire irep->pool.
...
Changes:
- `pool format is completely replaced
- supported types: `STR`, `INT32`, `INT64`, `FLOAT`
- `FLOAT` may be replaced by binary representation in the future
- insert `NUL` after string literals in `mrb` files
- `irep->pool` no longer store values in `mrb_value`
- instead it stores in `mrb_pool_value`
- less allocation
- `mrb_irep` can be stored in ROM
2020-10-12 16:21:08 +09:00
Yukihiro "Matz" Matsumoto
daa37be549
Rename struct mrb_locals to struct mrb_lvinfo.
...
That stands for "local variable information".
2020-10-12 16:21:08 +09:00
Yukihiro "Matz" Matsumoto
ad15e59cd9
Add irep C struct dump from mrbc with -S option.
...
But we need more work:
- recursive `irep` dump (`irep->reps`)
- pool values dump (`irep->pool`)
2020-10-12 16:21:07 +09:00
Yukihiro "Matz" Matsumoto
71eb4b2b22
Avoid use of designated initializers to generate irep struct.
...
Since it's not supported on VC without `/std:c++latest`. That means it
doesn't work for `cxx_api` build on Windows VC.
2020-10-12 16:21:07 +09:00
Yukihiro "Matz" Matsumoto
d93b1a48d2
Make call_irep static.
2020-10-12 16:21:07 +09:00
Yukihiro "Matz" Matsumoto
3a64cde61d
Add /std:c++latest to VC option in build.yml.
2020-10-12 16:21:06 +09:00
Yukihiro "Matz" Matsumoto
4684864f04
Specify new MRUBY_TARGET instead of MRUBY_CONFIG.
2020-10-12 16:21:06 +09:00
Yukihiro "Matz" Matsumoto
dd8c178a73
Use static const struct mrb_irep each_irep to ininitalize each.
2020-10-12 16:21:06 +09:00
Yukihiro "Matz" Matsumoto
029c7c1116
Add const modifier to mrb_irep for code_fetch_hook.
2020-10-12 16:21:05 +09:00
Yukihiro "Matz" Matsumoto
a68f005fd7
Remove remaining chomp:true option from Rakefile.
2020-10-12 16:21:05 +09:00
Yukihiro "Matz" Matsumoto
1adf93aa54
Stop Rake multitasking on Windows-VC for the time being.
2020-10-12 16:21:04 +09:00
Yukihiro "Matz" Matsumoto
26da07db15
Avoid using chomp:true option to File.readlines.
...
The option is not available in the old version of Ruby.
2020-10-12 16:21:04 +09:00
Yukihiro "Matz" Matsumoto
7ab7cadbbb
Stringify non C identifier symbols to stop macro errors by old gcc.
2020-10-12 16:21:04 +09:00
Yukihiro "Matz" Matsumoto
2c1d209fd5
Remove rake -v option from GitHub Actions.
2020-10-12 16:21:03 +09:00
Yukihiro "Matz" Matsumoto
5a3e014e49
Constify irep members.
...
- `pool`
- `syms`
- `reps`
2020-10-12 16:21:03 +09:00
Yukihiro "Matz" Matsumoto
744ba80919
Add explicit cast to DROP_PRECISION macro in rational.c.
2020-10-12 16:21:02 +09:00
Yukihiro "Matz" Matsumoto
0d755e583c
Build process updated:
...
You have to specify `TARGET` to specify a configuration, e.g.
```
rake TARGET=host-debug all test
```
When you port `mruby` to a new configuration:
1. copy an existing configuration under `target` directory
2. modify the new configuration file
3. build using the new configuration
4. send PR if you please
2020-10-12 16:21:02 +09:00
KOBAYASHI Shuji
92d8012b4e
Refine .travis.yml
...
* Disable automatic update and clean up on `brew install` (install time
160 sec -> 5 sec).
* Avoid using deprecated keys.
2020-10-12 16:21:02 +09:00
KOBAYASHI Shuji
cc587e6535
Removed Bison related settings from .travis.yml and appveyor.yml
2020-10-12 16:21:01 +09:00
KOBAYASHI Shuji
1122124f97
Revert part of "Start GitHub Actions" ( 4ce3997c)
...
Because some changes have been overridden.
2020-10-12 16:21:01 +09:00
KOBAYASHI Shuji
5405977a6e
Add y.tab.c to remove Bison from build dependencies; ref 4ce3997c
...
I sometimes see Bison related problems in setting up build environments.
Therefore to remove Bison from build time dependencies, add `y.tab.c`
generated by Bison to the repository.
The reduction of dependency at build time also reduces the labor and time
for setup and installation in CI.
In addition, a path in `#line` directive is converted to a relative path so
that its path is constant regardless of development environments.
2020-10-12 16:21:00 +09:00
Yukihiro "Matz" Matsumoto
f6dcc6dcfc
Use the newer bison on GitHub actions macOS; ref #4903
...
`Windows-MinGW` and `Windows-VC` also requires updates.
2020-10-12 16:21:00 +09:00
Takeshi Watanabe
9712379e0f
Start GitHub Actions; close #4903
2020-10-12 16:21:00 +09:00
Yukihiro "Matz" Matsumoto
b67955b8ca
Change the arguments of following implicit conversion functions:
...
- `mrb_convert_type`
- `mrb_check_convert_type`
Those function no longer take `tname` string representation of desired
type, and take method symbols instead of `const char*` names. This is
incompatible change. I hope no third-party gems use those functions.
2020-10-12 16:20:59 +09:00
Yukihiro "Matz" Matsumoto
2a366ffba8
Use functions that take symbols to reduce string litrals in C.
2020-10-12 16:20:59 +09:00
Yukihiro "Matz" Matsumoto
8864c30d16
Provide functions that take symbols instead of const char*.
...
- mrb_define_class_id
- mrb_define_module_id
- mrb_define_method_id
- mrb_define_singleton_method_id
- mrb_define_module_function_id
- mrb_define_const_id
- mrb_undef_method_id
- mrb_undef_class_method_id
- mrb_class_defined_id
- mrb_class_get_id
- mrb_class_defined_under_id
- mrb_class_get_under_id
- mrb_module_get_id
- mrb_module_get_under_id
- mrb_define_class_under_id
- mrb_define_module_under_id
- mrb_exc_get_id
2020-10-12 16:20:59 +09:00
Yukihiro "Matz" Matsumoto
3516a3c012
Use mrb->eStandardError instead of mrb_exc_get().
2020-10-12 16:20:58 +09:00
Yukihiro "Matz" Matsumoto
fa6a9f6f13
Add functions that take symbols as arguments.
...
- :
2020-10-12 16:20:58 +09:00
Yukihiro "Matz" Matsumoto
00f5ddc9ae
Use mrb_funcall_id() extensively.
...
Except for support files e.g. `mruby-test/driver.c`, which are not
target of symbol collection via `rake gensym`.
2020-10-12 16:20:58 +09:00
Yukihiro "Matz" Matsumoto
dcd3e5907c
Define a new function mrb_funcall_id().
...
`mrb_funcall_id()` takes `mrb_sym` instead of `char*` for a method name.
You can use `MRB_SYM()`/`MRB_QSYM()` to specify the method to call.
2020-10-12 16:20:57 +09:00
Yukihiro "Matz" Matsumoto
80c15ddd15
Update the build instruction.
2020-10-12 16:20:57 +09:00
Yukihiro "Matz" Matsumoto
7fde48b838
Remove unnecessary comments from host-shared target.
2020-10-12 16:20:56 +09:00
Yukihiro "Matz" Matsumoto
509f2bfd93
Add a new target clang-asan to use LLVM's address sanitizer.
2020-10-12 16:20:56 +09:00
Yukihiro "Matz" Matsumoto
b941e91866
Use more MRB_QSYM().
2020-10-12 16:20:56 +09:00
Yukihiro "Matz" Matsumoto
312f54b580
Add Rakefile to build/presym dependency.
2020-10-12 16:20:55 +09:00
Yukihiro "Matz" Matsumoto
3a162cc33f
Run rake gensym before the build.
2020-10-12 16:20:55 +09:00
Yukihiro "Matz" Matsumoto
b60809f117
Remove explicit rake gensym.
2020-10-12 16:20:55 +09:00
Yukihiro "Matz" Matsumoto
0881e34496
Add dependency from all to gensym.
...
You don't need to invoke `rake gensym` explicitly any longer.
2020-10-12 16:20:54 +09:00
Yukihiro "Matz" Matsumoto
24ad5f35b1
Removed unnecessary dependency from all.
...
`libmruby.flags.mak` is only required from `mruby-config` gem.
2020-10-12 16:20:54 +09:00
Yukihiro "Matz" Matsumoto
3c222e4e71
Add mruby-bin-config to default.gembox.
2020-10-12 16:20:54 +09:00
Yukihiro "Matz" Matsumoto
e2063fc267
Add operators to presym from Rakefile.
2020-10-12 16:20:53 +09:00
Yukihiro "Matz" Matsumoto
68f8d73308
Use MRB_QSYM() instead of MRB_OPSYM().
2020-10-12 16:20:53 +09:00
Yukihiro "Matz" Matsumoto
246c76e261
Rename MRB_OPSYM() to MRB_QSYM().
...
Where `QSYM` means quoted symbols, which cannot be represented C
symbols, so specify aliases instead.
- operators: name of the operation, e.g. add for `+`
- predicates: add `_p` suffix instead of `?`
- bang methods: add `_b` suffix instead of `!`
- instance variables: add `a_` prefix instead of `@`
- global variables: add `d_` prefix instead of `@`
- class variables: unsupported; don't use them
2020-10-12 16:20:53 +09:00
Yukihiro "Matz" Matsumoto
6128ae61a8
Simplified Rakefile.
2020-10-12 16:20:52 +09:00
Yukihiro "Matz" Matsumoto
e3e5596960
Use MRB_OPSYM() instead of mrb_intern_lit().
2020-10-12 16:20:52 +09:00
Yukihiro "Matz" Matsumoto
1bcf6d9f3c
Create MRB_OPSYM() macro to refer symbols corresponding operators.
...
For example, `MRB_OPSYM(add)` refers a symbol for `+`.
2020-10-12 16:20:51 +09:00
Yukihiro "Matz" Matsumoto
97e3c3a5a3
Undefine internal macros in presym.h.
...
- MRB_PRESYM_CSYM
- MRB_PRESYM_SYM
2020-10-12 16:20:51 +09:00
Yukihiro "Matz" Matsumoto
acd5317fb1
Create build directory first before gensym.
2020-10-12 16:20:50 +09:00
Yukihiro "Matz" Matsumoto
8d90c7c0fa
Remove unused variable from Rakefile.
2020-10-12 16:20:50 +09:00
Yukihiro "Matz" Matsumoto
5a88904fe8
Use File.open instead of File.write shortcut.
2020-10-12 16:20:49 +09:00
Yukihiro "Matz" Matsumoto
b3db34c2a8
Remove presym files before writing just to make sure.
2020-10-12 16:20:49 +09:00
Yukihiro "Matz" Matsumoto
6b7c12f523
Specify MRUBY_TARGET in CI configuration YAML.
2020-10-12 16:20:49 +09:00
Yukihiro "Matz" Matsumoto
fa18ffa90c
Add rake gensym to appveyor.yml too.
2020-10-12 16:20:48 +09:00
Yukihiro "Matz" Matsumoto
3ec61c0929
Update host* targets to use default.gembox.
...
And now `default.gembox` includes `mruby-socket` gem.
2020-10-12 16:20:48 +09:00
Yukihiro "Matz" Matsumoto
10b1a52bb8
Small updates on documents:
...
- README.md
- CONTRIBUTING.md
- doc/limitations.md
2020-10-12 16:20:48 +09:00
Yukihiro "Matz" Matsumoto
dcfc2dbf14
Add host-shared.rb to create shared mruby library.
2020-10-12 16:20:47 +09:00
Yukihiro "Matz" Matsumoto
d70536e0e8
Update host.rb build script.
2020-10-12 16:20:47 +09:00
Yukihiro "Matz" Matsumoto
fdbfeaf533
Build process updated:
...
You have to specify `TARGET` to specify a configuration, e.g.
```
rake TARGET=host-debug all test
```
When you port `mruby` to a new configuration:
1. copy an existing configuration under `target` directory
2. modify the new configuration file
3. build using the new configuration
4. send PR if you please
2020-10-12 16:20:47 +09:00
KOBAYASHI Shuji
ea31878b1f
Avoid changing directory in mruby-io test
2020-10-12 16:20:46 +09:00
KOBAYASHI Shuji
d33b9dc81f
Refine .travis.yml
...
* Disable automatic update and clean up on `brew install` (install time
160 sec -> 5 sec).
* Avoid using deprecated keys.
2020-10-12 16:20:46 +09:00
Yukihiro "Matz" Matsumoto
d612344e48
Should not use assert with expressions with side-effect; ref #4981
...
`assert()` can be completely removed when `NDEBUG` is set.
2020-10-12 16:20:45 +09:00
Yukihiro "Matz" Matsumoto
d7e183bfdf
Fixed wrong condition in #4981 .
2020-10-12 16:20:45 +09:00
Yukihiro "Matz" Matsumoto
d5c010422a
Run rake gensym before the build.
2020-10-12 16:20:45 +09:00
Yukihiro "Matz" Matsumoto
5738ed0474
Keep build/presym through rake clean.
2020-10-12 16:20:44 +09:00
Yukihiro "Matz" Matsumoto
3174061593
Prepend gensym rule to depfiles.
2020-10-12 16:20:44 +09:00
Yukihiro "Matz" Matsumoto
76d752c03b
Fix presym_find for strings without NUL terminators.
2020-10-12 16:20:44 +09:00
Yukihiro "Matz" Matsumoto
33647b904e
Avoid snprintf in mruby-io test; ref #4981
2020-10-12 16:20:43 +09:00
Yukihiro "Matz" Matsumoto
47f65a93c5
Remove the temporary file from the AF_UNIX socket test; #4981
2020-10-12 16:20:43 +09:00
Yukihiro "Matz" Matsumoto
a2fbb98fa6
Remove build/presym and build/presym.inc on rake clean.
2020-10-12 16:20:42 +09:00
Yukihiro "Matz" Matsumoto
721f934b9b
Scan .rb files as well to generate presym table.
2020-10-12 16:20:42 +09:00
Yukihiro "Matz" Matsumoto
d2cab16301
Update presym_find to use more efficient binary search.
2020-10-12 16:20:42 +09:00
Yukihiro "Matz" Matsumoto
eddd324979
Add MRB_SYM() for inline symbols.
2020-10-12 16:20:41 +09:00
Yukihiro "Matz" Matsumoto
f221f4e0fa
Update Rakefile to generate presym.
2020-10-12 16:20:41 +09:00
Yukihiro "Matz" Matsumoto
a476d71143
Support presym in symbol.c.
2020-10-12 16:20:41 +09:00
Yukihiro "Matz" Matsumoto
1e156974d5
Generate a table for preallocated symbols (presym).
...
`presym` are symbols used in the C source files. `gensym` rake rule
scans the entire C source files and collect symbols referenced from
them.
2020-10-12 16:20:40 +09:00
Yukihiro "Matz" Matsumoto
8853b03591
Merge pull request #5090 from zubycz/fix_error_when_build_without_float
...
Fix argument error when built with MRB_WITHOUT_FLOAT flag
2020-10-12 16:19:04 +09:00
Yukihiro "Matz" Matsumoto
f53781bdeb
Merge pull request #5089 from zubycz/fix_test_of_range_min
...
fix improper test of Range#min
2020-10-12 14:29:39 +09:00
ssmallkirby
afc0d7a6c3
Fix argument error when built with MRB_WITHOUT_FLOAT flag
...
Fixed inproper argument of mrb_fixnum_value() called in integral_div(),
when built with MRB_WITHOUT_FLOAT flag.
Co-authored-by: taiyoslime <t@iyosli.me >
Co-authored-by: n4o847 <22975590+n4o847@users.noreply.github.com >
2020-10-12 14:16:18 +09:00
taiyoslime
c4f75c7de0
fix improper test of Range#min
2020-10-12 13:42:27 +09:00
Yukihiro "Matz" Matsumoto
9ea7b71868
Merge pull request #5087 from dearblue/get-args-string
...
Prohibit string changes by "s"/"z" specifier of `mrb_get_args()`
2020-09-25 22:54:25 +09:00
dearblue
57611240a9
Prohibit string changes by "s"/"z" specifier of mrb_get_args()
...
- The `s` specifier is a string pointer obtained without performing `mrb_str_modify()`, so it cannot be changed.
- The `z` specifier cannot be changed because it is a string pointer obtained by `RSTRING_CSTR()` which returns `const char *`.
2020-09-25 21:02:58 +09:00
Yukihiro "Matz" Matsumoto
a97f085c52
Merge pull request #5083 from wataash/example-clarify-caller
...
examples/mrbgems: clarify the caller
2020-09-18 14:16:23 +09:00
Wataru Ashihara
2bf9fd06d2
examples/mrbgems: clarify the caller
...
Before this commit:
mruby -e 'CRubyExtension.ruby_method' # => A Ruby Extension
mruby -e 'CRubyExtension.c_method' # => A C Extension
mruby -e 'CExtension.c_method' # => A C Extension
mruby -e 'RubyExtension.ruby_method' # => A Ruby Extension
After this commit:
mruby -e 'CRubyExtension.ruby_method' # => CRubyExtension: A Ruby Extension
mruby -e 'CRubyExtension.c_method' # => CRubyExtension: A C Extension
mruby -e 'CExtension.c_method' # => CExtension: A C Extension
mruby -e 'RubyExtension.ruby_method' # => RubyExtension: A Ruby Extension
2020-09-18 14:10:20 +09:00
Yukihiro "Matz" Matsumoto
dffe4bc8ba
Merge pull request #5082 from wataash/remove-type-check
...
Remove redundant type-check
2020-09-18 13:42:02 +09:00
Wataru Ashihara
4375bffee5
Remove redundant type-check
...
since mrb_str_to_str() also does it.
2020-09-18 13:35:03 +09:00
Yukihiro "Matz" Matsumoto
e440681a06
Merge pull request #5081 from wataash/d-format-comment
...
*.d format is version-independent
2020-09-17 21:05:42 +09:00
Yukihiro "Matz" Matsumoto
758f8f4baf
Merge pull request #5080 from wataash/fix-dep-read
...
Fix skipping reading file
2020-09-17 21:05:30 +09:00
Wataru Ashihara
ea3b02e387
*.d format is version-independent
...
As pointed out by @shuujii on https://github.com/mruby/mruby/pull/5079 ,
multi-path in single-line could be appear even with older-gcc or clang.
2020-09-17 21:04:45 +09:00
Wataru Ashihara
069d9bb4d7
Fix skipping reading file
2020-09-17 20:30:17 +09:00
Yukihiro "Matz" Matsumoto
9757616c57
Merge pull request #5079 from wataash/fix-dep-parse
...
Fix *.d parsing with gcc 9.3.0
2020-09-17 20:20:03 +09:00
Wataru Ashihara
e8723a4f3f
Fix *.d parsing with gcc 9.3.0
...
Before this commit:
$ rake
...
$ rm build/host/src/gc.o
$ rake
rake aborted!
Don't know how to build task '/home/foo/mruby/build/host/src/gc.o' (See the list of available tasks with `rake --tasks`)
...
After this commit:
$ rake
...
$ rm build/host/src/gc.o
$ rake
CC src/gc.c -> build/host/src/gc.o
...
With gcc 9.3.0 on Ubuntu 20.04, build/host/src/array.d looks like:
/build/host/src/array.o: /src/array.c \
/include/mruby.h /include/mrbconf.h \
/include/mruby/common.h \
...
/include/mruby/range.h \
/src/value_array.h
and it has been parsed to:
[
# /src/array.c missing
"/include/mruby.h /include/mrbconf.h", # incorrectly parsed
"/include/mruby/common.h",
...
"/src/value_array.h",
]
After this change, *.d will be parsed correctly.
[
"/src/array.c",
"/include/mruby.h",
"/include/mrbconf.h",
"/include/mruby/common.h",
...
"/src/value_array.h",
]
2020-09-17 20:02:55 +09:00
Yukihiro "Matz" Matsumoto
5bfb70e9db
Fix File.extname bug; fix #5077
2020-09-13 11:38:31 +09:00
Yukihiro "Matz" Matsumoto
8b65e4b73c
Add test to ensure #5077
2020-09-13 11:38:06 +09:00
Yukihiro "Matz" Matsumoto
4e15832000
Update y.tab.c; ref #4933
2020-09-10 21:17:38 +09:00
Yukihiro "Matz" Matsumoto
c27e451931
Merge pull request #4933 from dearblue/variables
...
Fix take over file scope variables with `mruby` and `mirb` command
2020-09-10 18:12:38 +09:00
Yukihiro "Matz" Matsumoto
c345fe4321
Merge pull request #5076 from dearblue/call_type
...
Remove `enum call_type`
2020-09-07 23:22:13 +09:00
dearblue
f99c315400
Remove enum call_type
...
It seems to be unnecessary from mruby-1.0.0 or earlier.
2020-09-03 23:18:16 +09:00
Yukihiro "Matz" Matsumoto
e2c628583e
Fix mrb_ary_splat() to copy the array always.
2020-08-30 19:14:34 +09:00
Yukihiro "Matz" Matsumoto
705f95c983
Merge pull request #5068 from sizious/mingw32-legacy-fixes
...
mruby-io: Fixing compilation issue under the legacy MinGW environment
2020-08-29 23:04:02 +09:00
Yukihiro "Matz" Matsumoto
6b8664b951
Fix the bug caused by to_a returning a frozen array.
...
Reported by @shuujii.
2020-08-29 23:00:36 +09:00
Yukihiro "Matz" Matsumoto
f08f3c34be
Fix a bug introduced by the last commit.
...
Should have handled the case `to_a` returns `nil`.
2020-08-29 22:58:07 +09:00
SiZiOUS
510b9e7abc
mruby-io: Fixing compilation issue under the legacy MinGW environment
...
Adding MRB_MINGW32_LEGACY in common.h in order to identify the legacy MinGW environment (i.e. NOT to be confused with MinGW-w64).
For more info about MinGW defined macros, see: https://sourceforge.net/p/predef/wiki/Compilers/
2020-08-29 13:58:00 +02:00
Yukihiro "Matz" Matsumoto
564372d7b9
Fix mrb_obj_ceqq to avoid array copying.
2020-08-29 18:43:47 +09:00
Yukihiro "Matz" Matsumoto
a66d86cfc1
Fix mrb_ary_splat to copy the array; fix #5067
2020-08-29 18:43:26 +09:00
Yukihiro "Matz" Matsumoto
96bae1d508
Merge pull request #5065 from shuujii/simplify-MSVC-detection-to-mrb_static_assert
...
Simplify MSVC detection to `mrb_static_assert`
2020-08-12 21:51:45 +09:00
KOBAYASHI Shuji
77c35e7097
Simplify MSVC detection to mrb_static_assert
2020-08-12 20:05:31 +09:00
Yukihiro "Matz" Matsumoto
2aa70e9690
Merge pull request #5062 from shuujii/use-normal-static_assert-in-mrb_static_assert-as-much-as-possible
...
Use normal `static_assert` in `mrb_static_assert` as much as possible
2020-08-11 22:33:44 +09:00
Yukihiro "Matz" Matsumoto
ae09a219d5
Merge pull request #5063 from dearblue/stat32
...
Use `struct _stat32` instead of `struct __stat32`
2020-08-11 22:31:09 +09:00
dearblue
c5dc184a6d
Use struct _stat32 instead of struct __stat32
...
It is described as `struct __stat32` in the MSVC reference manual.
https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/stat-functions?view=vs-2019
But it doesn't really exist, so it must use `struct _stat32`.
It also replaces `struct __stat64` with `struct _stat64` to make it look
nicer.
2020-08-11 22:09:28 +09:00
KOBAYASHI Shuji
bab7e9f032
Use normal static_assert in mrb_static_assert as much as possible
...
* `_Static_assert` can also be used with `-std=gnu99` on GCC >= 4.6.
* `static_assert` can be used on MSVC.
* `static_assert` can be used even on old G++/Clang++ if
`__GXX_EXPERIMENTAL_CXX0X__` is defined.
2020-08-11 20:47:20 +09:00
Yukihiro "Matz" Matsumoto
3b8df2c285
Fixed VC fstat issue.
2020-08-11 16:35:50 +09:00
Yukihiro "Matz" Matsumoto
cfaaf7c6d4
Should use _fstat32() on 32bit Windows.
2020-08-11 16:02:05 +09:00
Yukihiro "Matz" Matsumoto
5210482c59
Add cast for mrb_fixnum_value() from time_t.
2020-08-11 16:01:23 +09:00
Yukihiro "Matz" Matsumoto
5e55b61c44
Fix mrb_int and size_t combination warnings.
2020-08-11 15:06:51 +09:00
Yukihiro "Matz" Matsumoto
4695dfdcb6
Avoid using mrb_funcall() from mruby-io gem.
2020-08-10 08:53:35 +09:00
Yukihiro "Matz" Matsumoto
55482063a7
Remove duplicated definition of E_EOF_ERROR.
2020-08-09 21:57:41 +09:00
Yukihiro "Matz" Matsumoto
ab5726d4e4
Merge pull request #5061 from shuujii/allow-mrb_static_assert-to-be-used-outside-of-functions
...
Allow `mrb_static_assert()` to be used outside of functions
2020-08-09 21:57:30 +09:00
KOBAYASHI Shuji
0d54568b4d
Allow mrb_static_assert() to be used outside of functions
...
The use of `struct` is an idea by @dearblue.
2020-08-09 20:39:36 +09:00
Yukihiro "Matz" Matsumoto
df969b163a
Return NaN for 0/0; d8e060d
2020-08-08 15:36:55 +09:00
Yukihiro "Matz" Matsumoto
ad8b36daa1
Should not use mrb_float_value() with MRB_WITHOUT_FLOAT.
2020-08-08 14:14:17 +09:00
Yukihiro "Matz" Matsumoto
c849b894ed
Reintroduce mrb_static_assert; #5051
...
Note that the home brew version of `mrb_static_assert` only works within
the function body. This reverts commit 8f99689 .
2020-08-08 10:39:26 +09:00
Yukihiro "Matz" Matsumoto
d8e060d2d3
Avoid division by zero undefined behavior.
2020-08-07 10:51:33 +09:00
Yukihiro "Matz" Matsumoto
9742bce198
Merge pull request #5059 from mruby/stable
...
Merge mruby 2.1.2
2020-08-06 17:47:36 +09:00
Hiroshi Mimaki
7f8d38bbbe
Merge master.
2020-08-06 17:38:20 +09:00
Yukihiro "Matz" Matsumoto
0b95c8a1e8
Use memcpy to copy stack.
2020-08-06 17:02:15 +09:00
Yukihiro "Matz" Matsumoto
57a798e687
Use memset() to clear stack unless MRB_NAN_BOXING.
2020-08-06 17:01:59 +09:00
Yukihiro "Matz" Matsumoto
755233ef7d
Remove block clear of callinfo.
2020-08-06 17:01:28 +09:00
Yukihiro "Matz" Matsumoto
8f99689ba3
Remove mrb_static_assert from the core; #5051
2020-08-06 16:01:45 +09:00
Hiroshi Mimaki
1a9bdfcde5
Update release date.
2020-08-06 12:45:59 +09:00
Yukihiro "Matz" Matsumoto
11cc7bed96
Merge pull request #5052 from dearblue/cistacks
...
Extend the `cipush()` and `cipop()` functions
2020-08-05 17:38:51 +09:00
Yukihiro "Matz" Matsumoto
ef9c68795f
Merge pull request #5058 from dearblue/benchmark
...
Improve `rake benchmark`
2020-08-05 06:51:54 +09:00
dearblue
fde95a7db5
Improve rake benchmark
...
- Use POSIX format instead of GNU extension for `time` command.
For example FreeBSD's `time(1)` does not have GNU extensions available.
- Sort `benchmark/bm_*.rb`.
This is because the order of the bar graph cannot be uniquely
determined depending on the result of `Dir.glob`.
2020-08-04 22:04:05 +09:00
Yukihiro "Matz" Matsumoto
cfb799a18e
Fix wrong condition for PACK_DIR_HEX; ref #5057
2020-08-04 17:50:09 +09:00
Yukihiro "Matz" Matsumoto
43443d9377
Should not decrement count when PACK_FLAG_COUNT2; fix #5057
2020-08-03 19:46:34 +09:00
Yukihiro "Matz" Matsumoto
faed5054f8
Initialized local variables in mrb_hash_shift().
2020-08-03 15:53:50 +09:00
Yukihiro "Matz" Matsumoto
0a505dcfd6
Simplify khash.h.
...
- Remove ` kh_put_prepare` function used only internally
- Remove `n_occupied` member from `kh_` struct
2020-07-31 18:14:02 +09:00
Yukihiro "Matz" Matsumoto
1517d77e93
Fix puts in mruby-print on no argument; 0e9bd24
...
`puts` should print newline when called without arguments.
2020-07-31 06:57:05 +09:00
KOBAYASHI Shuji
112120969d
Use type tag for hash code in ht_hash_func()
...
The function corresponding to `ht_hash_func()` was as follows in the days of
khash implementation (before d78acc7a ).
```c
mrb_hash_ht_hash_func(mrb_state *mrb, mrb_value key)
{
enum mrb_vtype t = mrb_type(key);
...
switch (t) {
...
default:
hv = mrb_funcall(mrb, key, "hash", 0);
h = (khint_t)t ^ (khint_t)mrb_fixnum(hv);
break;
}
...
}
```
When switched to the segmented list implementation (d78acc7a ), this function
was changed as follows.
```c
sg_hash_func(mrb_state *mrb, seglist *t, mrb_value key)
{
enum mrb_vtype tt = mrb_type(key);
...
switch (tt) {
...
default:
hv = mrb_funcall(mrb, key, "hash", 0);
h = (size_t)t ^ (size_t)mrb_fixnum(hv);
break;
}
...
}
```
Since the argument `t` was added, the variable for type tag was changed from
`t` to `tt`, but the variable used in the expression of `h` remained `t`.
Probably this is an omission of change, so fixed it.
2020-07-29 09:17:32 +09:00
Yukihiro "Matz" Matsumoto
63956036e1
Fix the VM stack handling bug in 'mrb_yield_with_class()`; fix #5042
2020-07-29 09:09:37 +09:00
dearblue
cdf45438f0
Fixed shift width for MRB_ENV_SET_BIDX()
...
ref c07f24cd1 and close #5035
2020-07-29 09:05:29 +09:00
Yukihiro "Matz" Matsumoto
9571a4c07e
Merge pull request #5050 from dearblue/memsize_of2
...
Update document for `ObjectSpace.memsize_of` [ci skip]
2020-07-26 13:56:26 +09:00
dearblue
d96be5c1b2
Extend the cipush() and cipop() functions
...
- Returns the updated call info.
- Unify the processing around `cipush()`.
- `cipop()` restores the stack.
2020-07-26 13:12:01 +09:00
dearblue
0983c723c5
Update document for ObjectSpace.memsize_of [ci skip]
...
The `recurse` keyword is removed by f00657ead7 .
2020-07-26 13:12:01 +09:00
Yukihiro "Matz" Matsumoto
425b5f32d6
Merge pull request #5049 from shuujii/use-type-tag-for-hash-code-in-ht_hash_func
...
Use type tag for hash code in `ht_hash_func()`
2020-07-25 19:40:05 +09:00
KOBAYASHI Shuji
0c88c71786
Use type tag for hash code in ht_hash_func()
...
The function corresponding to `ht_hash_func()` was as follows in the days of
khash implementation (before d78acc7a ).
```c
mrb_hash_ht_hash_func(mrb_state *mrb, mrb_value key)
{
enum mrb_vtype t = mrb_type(key);
...
switch (t) {
...
default:
hv = mrb_funcall(mrb, key, "hash", 0);
h = (khint_t)t ^ (khint_t)mrb_fixnum(hv);
break;
}
...
}
```
When switched to the segmented list implementation (d78acc7a ), this function
was changed as follows.
```c
sg_hash_func(mrb_state *mrb, seglist *t, mrb_value key)
{
enum mrb_vtype tt = mrb_type(key);
...
switch (tt) {
...
default:
hv = mrb_funcall(mrb, key, "hash", 0);
h = (size_t)t ^ (size_t)mrb_fixnum(hv);
break;
}
...
}
```
Since the argument `t` was added, the variable for type tag was changed from
`t` to `tt`, but the variable used in the expression of `h` remained `t`.
Probably this is an omission of change, so fixed it.
2020-07-25 16:59:02 +09:00
Yukihiro "Matz" Matsumoto
f868d7d357
Change the logic to calculate object (iv_tbl) size; #5045
2020-07-24 13:13:06 +09:00
Yukihiro "Matz" Matsumoto
c69ca2c7f8
Merge pull request #5045 from dearblue/memsize_of
...
Improve `mruby-os-memsize`
2020-07-24 12:02:05 +09:00
dearblue
ccd5f203bf
Improve prototype for mrb_objspace_page_slot_size(); ref #5032
...
If it qualify a return type that is not a pointer with `const`, the
compiler ignores it.
2020-07-24 11:48:09 +09:00
dearblue
5c2b11d215
Avoid using FPU with mruby-os-memsize; ref #5032
...
And, in the calculation of the instance variable size, the fraction was
always rounded down because of division of integers, so fix it.
At the same time, test items that are no longer passed due to this
change are deleted.
2020-07-24 11:42:37 +09:00
dearblue
c9ba761b9e
Support without mruby-method for mruby-os-memsize; ref #5032
2020-07-24 11:42:26 +09:00
dearblue
2b588b8566
Add NUL terminator to string object size calculation; ref #5032
2020-07-24 11:42:16 +09:00
Yukihiro "Matz" Matsumoto
b4f4f5968b
ObjectSpace.count_objects to support MRB_TT_ISTRUCT; #5046
2020-07-23 07:10:35 +09:00
Yukihiro "Matz" Matsumoto
e7599050dc
Fix a bug with ht_index called with size==0; fix #5046
...
It happens when a hash made empty calls `rehash`.
2020-07-23 07:06:35 +09:00
Yukihiro "Matz" Matsumoto
0e9bd24827
Fix puts to print newline with empty strings; ref b184772
2020-07-22 17:50:01 +09:00
Yukihiro "Matz" Matsumoto
b920270508
Use more mrb_field_write_barrier for instance variables.
2020-07-22 15:01:55 +09:00
Yukihiro "Matz" Matsumoto
491aa1bfe5
Use more local variables.
...
To make debugging easy, and to improve the performance little bit.
2020-07-22 15:01:54 +09:00
Yukihiro "Matz" Matsumoto
c99bb756c4
Move gray_list update from gc_mark_children.
...
The responsibility moved to caller to avoid confusion. Currently the
function is called from only 2 places, so it is relatively easy to
ensure not to update `gray_list` in the caller. But the assumption
may change in the future.
2020-07-22 15:01:54 +09:00
Yukihiro "Matz" Matsumoto
097f525817
Avoid using mrb_ary_modify from the internal function.
...
`mrb_ary_modify` calls `mrb_write_barrier`, so can cause the same
problem of the past `push`. It is provided for use-level API.
2020-07-22 15:01:54 +09:00
Yukihiro "Matz" Matsumoto
5533c29833
Use mrb_field_write_barrier instead of mrb_write_barrier for push.
...
When the array is very big, the simpler `mrb_write_barrier` causes
calling `gc_mark_children` for big arrays repeatedly. That would hinder
performance very badly.
2020-07-22 15:01:53 +09:00
Yukihiro "Matz" Matsumoto
0bb4d10ca7
Define Array#to_a to avoid unnecessary loops.
2020-07-22 14:56:56 +09:00
Yukihiro "Matz" Matsumoto
914da3d712
Small comment fix in mrblib/array.c.
2020-07-22 14:56:36 +09:00
Yukihiro "Matz" Matsumoto
670622f45d
Skip unnecessary mark_context if mrb->c == mrb->root_c.
2020-07-22 14:56:03 +09:00
dearblue
97f71b5a67
Fixed garbled characters; ref #5041
2020-07-22 00:03:17 +09:00
dearblue
639703cf01
Remove unnecessory methods in mruby-objectspace; ref #5041
...
The `ObjectSpace#memsize_of` and `ObjectSpace#memsize_of_all` in `mruby-objectspace` ware
migrated to `mruby-os-memsize` mrbgem.
2020-07-21 23:32:30 +09:00
Yukihiro "Matz" Matsumoto
6334949ba6
Fix the VM stack handling bug in 'mrb_yield_with_class()`; fix #5042
2020-07-21 12:47:35 +09:00
Yukihiro "Matz" Matsumoto
b1847721e8
Implement Kernel#print and Kernel#puts in C.
2020-07-20 23:35:17 +09:00
Yukihiro "Matz" Matsumoto
f0afdf7496
Merge pull request #5041 from RoryO/extract-memsize-to-gem
...
Extract memsize to gem
2020-07-20 08:23:46 +09:00
Rory OConnell
0685784119
Adding to authors
2020-07-19 15:40:29 -07:00
Rory OConnell
5f4a27217e
Separate memsize_of and memsize_of_all to a separate gem; #5040
...
Those methods are originally CRuby specific.
Co-authored-by: Yukihiro "Matz" Matsumoto <matz@ruby.or.jp >
2020-07-19 15:36:08 -07:00
Yukihiro "Matz" Matsumoto
c9ea39843b
Remove some tests from mruby-objectspace gem; #5040
...
Those tests succeeds only on some configuration.
2020-07-20 06:05:06 +09:00
Yukihiro "Matz" Matsumoto
a6f31ad6ce
Avoid accessing obj.tt of mrb_value; #5040
...
The old code compiles only on `MRB_NO_BOXING`.
2020-07-20 06:05:06 +09:00
Yukihiro "Matz" Matsumoto
07b75d927e
Replace 0 by MRB_EACH_OBJ_OK; #5040
2020-07-20 06:04:54 +09:00
Yukihiro "Matz" Matsumoto
71254be076
Skip MRB_TT_FREE and MRB_TT_BREAK in each_object.
2020-07-19 13:11:53 +09:00
Yukihiro "Matz" Matsumoto
1d2c5c12d3
Reorder members of struct os_each_object_data to stop warnings.
...
`mrb_value` may or may not be struct according to configuration.
2020-07-19 13:10:08 +09:00
Yukihiro "Matz" Matsumoto
00337543a5
Should have updated the arg spec for memsize_of&memsize_of_all; #5040
2020-07-19 09:11:16 +09:00
Yukihiro "Matz" Matsumoto
f76defd310
Use c specifier for mrb_get_args.
2020-07-19 07:47:07 +09:00
Yukihiro "Matz" Matsumoto
d023adcb12
Add new specifier c to mrb_get_args.
...
`C` retrieves a `mrb_value` that refers a class/module.
`c` retrieves a `struct RClass*` pointer to a class/module.
2020-07-19 07:45:16 +09:00
Yukihiro "Matz" Matsumoto
5b2763821e
Fix memsize_of_all to count all objects if no argument given; #5040
2020-07-19 07:42:35 +09:00
Yukihiro "Matz" Matsumoto
6d073f8d99
Fix memsize_of_all to count memory of subclass instances; #5040
...
`ObjectSpace.memsize_of_all` takes a class and count memory size of all
instances of the class and its subclasses (if any).
2020-07-19 06:57:34 +09:00
Yukihiro "Matz" Matsumoto
667ace2bfe
Merge pull request #5040 from RoryO/add-memsize-of-all
...
Add ObjectSpace.memsize_of_all
2020-07-19 06:43:13 +09:00
Rory O'Connell
ffe8bf6323
Avoid singleton classes with mrb_class_real
2020-07-18 13:55:45 -07:00
Rory OConnell
a79d1ba9ff
Adding memsize_of_all doc
2020-07-17 20:21:23 -07:00
Rory OConnell
fe1ec9afdd
Add ObjectSpace.memsize_of_all
2020-07-17 20:09:44 -07:00
Yukihiro "Matz" Matsumoto
1952004d5a
Use proc->env to check block_given? if possible; fix #5039
...
This bug has been there since mruby 1.4.0 (2018-04).
2020-07-17 16:15:47 +09:00
Yukihiro "Matz" Matsumoto
e41f1f5139
Fix indent of compiler conditions; #5032
2020-07-17 12:32:54 +09:00
Yukihiro "Matz" Matsumoto
495c1a377a
Fix memsize_of to count method table size; #5032
...
Also avoid `mrb_funcall` to minimize VM recursion.
2020-07-17 12:31:00 +09:00
Yukihiro "Matz" Matsumoto
9f52bcfca9
Fix memsize_of Fibers; #5032
...
Memory size of a Fiber is calculated by stack size only in CRuby.
2020-07-17 11:50:12 +09:00
Yukihiro "Matz" Matsumoto
a2b8c08a52
Add const to irep pointer in os_memsize_of_irep; #5032
2020-07-17 11:43:55 +09:00
Yukihiro "Matz" Matsumoto
f00657ead7
Remove recursive memsize_of; #5032
...
This is enhancement from CRuby's `memsize_of`. We need to change the
CRuby first for the enhancement.
2020-07-17 11:15:07 +09:00
Yukihiro "Matz" Matsumoto
2e56da5a78
Remove MRB_TT_DATA calculation of memsize_of; #5032
2020-07-17 10:59:43 +09:00
Yukihiro "Matz" Matsumoto
60279b2a8e
Use mrb_test instead of mrb_obj_eq; #5032
2020-07-17 10:53:24 +09:00
Yukihiro "Matz" Matsumoto
c6b8b58e0e
Fix memsize_of for fiber objects; #5032
2020-07-17 10:53:04 +09:00
Yukihiro "Matz" Matsumoto
7f66cf7d66
Fix memsize_of for string objects; #5032
2020-07-17 10:52:59 +09:00
Yukihiro "Matz" Matsumoto
9840d6a2e7
Merge pull request #5038 from dearblue/bidx
...
Fixed shift width for `MRB_ENV_SET_BIDX()`
2020-07-17 07:12:31 +09:00
Yukihiro "Matz" Matsumoto
b5bf9510ee
Merge pull request #5032 from RoryO/add-objspace-memsize-of
...
Add ObjectSpace.memsize_of
2020-07-17 07:10:58 +09:00
dearblue
5dc87f77d4
Fixed shift width for MRB_ENV_SET_BIDX()
...
ref c07f24cd1 and close #5035
2020-07-16 23:11:30 +09:00
Rory O'Connell
f74d370c15
mrb_ prefix convention
2020-07-15 19:57:22 -07:00
Rory O'Connell
38b0759108
Clarify memsize_of documentation
2020-07-14 23:43:10 -07:00
Rory O'Connell
4d32c671a7
Finishing out memsize_of recursion
2020-07-14 23:30:35 -07:00
Yukihiro "Matz" Matsumoto
bfd58a3fb3
Merge pull request #5036 from shuujii/fix-build_dir-mrbgems-gem_init.c-generation-condition
...
Fix `${build_dir}/mrbgems/gem_init.c` generation condition; ref #5010
2020-07-15 14:03:09 +09:00
Yukihiro "Matz" Matsumoto
1a4089803d
Merge pull request #5037 from shuujii/set-STDOUT.sync=true-when-testing-on-AppVeyor
...
Set `STDOUT.sync=true` when testing on AppVeyor [skip travis]
2020-07-15 09:57:49 +09:00
KOBAYASHI Shuji
4bf050a192
Set STDOUT.sync=true when testing on AppVeyor [skip travis]
...
This issue is a correction error at 5a682bfc .
2020-07-14 21:30:36 +09:00
KOBAYASHI Shuji
49896a4d28
Fix ${build_dir}/mrbgems/gem_init.c generation condition; ref #5010
...
The `${build_dir}/mrbgems/gem_init.c` generation condition has been changed
at #5010 , but it is somewhat insufficient, for example, there was a problem
with `rake && rake test`, which was also regenerated in `rake test`.
2020-07-14 19:55:23 +09:00
Rory OConnell
0e5394638b
Validate ensure stack presense before calculating
2020-07-13 17:05:03 -07:00
Rory OConnell
ad44021591
C89 compiler mode fixes
2020-07-13 16:43:59 -07:00
Rory OConnell
5759256ff8
Update tests for new calculations
2020-07-13 16:00:49 -07:00
Rory OConnell
5184263bdc
Calculating sizes of VM components for a Fiber
2020-07-13 16:00:14 -07:00
Rory OConnell
6f945a09b4
Use object iv table size in calculation
2020-07-13 15:59:24 -07:00
Rory OConnell
e7bd7d0eaf
Use size of hash's table in calculation
2020-07-13 15:58:50 -07:00
Rory OConnell
41e3220539
All values use page slot size in calculation
2020-07-13 15:56:27 -07:00
Yukihiro "Matz" Matsumoto
e3bb95bb6d
Merge pull request #5034 from dearblue/ssize_t
...
Fix `ssize_t` for mingw; ref #5030
2020-07-13 08:47:02 +09:00
dearblue
5df95e8d7b
Fix ssize_t for mingw; ref #5030
...
Legacy MinGW and MinGW-w64 had own `ssize_t`.
2020-07-12 17:10:57 +09:00
Yukihiro "Matz" Matsumoto
99bb2154ff
Merge pull request #5033 from dearblue/mrb_free_backtrace
...
Remove the prototype declaration `mrb_free_backtrace()`
2020-07-11 16:43:34 +09:00
dearblue
28e39419a5
Remove the prototype declaration mrb_free_backtrace()
...
This function is removed by 9644ad5 .
2020-07-11 16:15:17 +09:00
Yukihiro "Matz" Matsumoto
042f98912f
Merge pull request #5030 from RoryO/fix-compile-msvc-io-utf8
...
Fix compiling mruby-io on msc with UTF8 enabled
2020-07-11 13:58:41 +09:00
Rory OConnell
bb23faae65
downcase windows include file for mingw compatability
2020-07-10 21:18:31 -07:00
Rory OConnell
308c6c8311
Need typedef of ssize_t for msc compiler
2020-07-10 21:18:30 -07:00
Rory OConnell
37d6628688
fix case scopes and variable names
2020-07-10 00:57:45 -07:00
Rory OConnell
338c8538c9
Initial ObjectSpace.memsize_of implementation
2020-07-09 18:52:31 -07:00
Yukihiro "Matz" Matsumoto
c5fd8cbbe1
Merge pull request #5031 from RoryO/update-ci
...
Update Windows CI settings
2020-07-08 10:09:44 +09:00
Rory OConnell
8a44903992
remove verbose test output
2020-07-07 17:34:26 -07:00
Rory OConnell
3a79d60515
fix rake -m for separating build and test steps
2020-07-07 11:18:44 -07:00
Yukihiro "Matz" Matsumoto
01a8d8498f
Avoid infinite loop when converting objects to strings.
2020-07-06 23:11:51 +09:00
Rory OConnell
b759746890
try not separating build and test steps
2020-07-05 21:37:20 -07:00
Rory OConnell
b3dace6ae3
use verbose test output. use correct config file this time
2020-07-05 21:12:04 -07:00
Rory OConnell
4d393d5d09
use correct config file
2020-07-05 21:05:27 -07:00
Rory OConnell
5c7adf0534
separate build and test steps, remove MSC
2020-07-05 20:59:49 -07:00
Rory OConnell
4f189b2be9
remove vs2013, separate build and test commands
2020-07-05 20:55:56 -07:00
Yukihiro "Matz" Matsumoto
81fc5ff48a
Merge pull request #5029 from RoryO/true-eq-false
...
object_id of true, false, and undef are all 0
2020-07-05 22:04:25 +09:00
Rory OConnell
5746958470
fix object_id of true, false, and undef all 0
2020-07-04 20:33:38 -07:00
Yukihiro "Matz" Matsumoto
97319697c8
Cancel 9cdf439
...
Should not free the pointer in `realloc` since it can cause
use-after-free problem.
2020-07-02 10:41:03 +09:00
Hiroshi Mimaki
b6b9c57f24
Update version to 2.1.2. (mruby 2.1.2 RC)
2020-07-01 16:49:21 +09:00
Hiroshi Mimaki
aa578c346d
Revert "Free the original pointer if realloc failed."
...
This reverts commit 9cdf439db5 .
2020-06-30 18:33:47 +09:00
Yukihiro "Matz" Matsumoto
612e5d6aad
Merge pull request #5028 from RoryO/msvc-optimize-shuffle-bug
...
Work around MSC optimization generating non functional code with Array#shuffle
2020-06-30 10:41:26 +09:00
Rory OConnell
ba9f81db8b
VS2013 32-bit does not work
2020-06-29 16:16:55 -07:00
Rory OConnell
5b9f7c0b93
use 2015 image for 2013 builds, ruby 2 not on 2013 image
2020-06-29 15:59:13 -07:00
Rory OConnell
ce167d70b7
fix quoting
2020-06-29 15:44:13 -07:00
Rory OConnell
0ed623c442
name appveyor jobs, fix <=2015 config
2020-06-29 15:38:11 -07:00
Rory OConnell
206f7ce272
simplify appveyor config
2020-06-29 15:21:15 -07:00
Rory OConnell
b59283a03f
per-machine appveyor os config
2020-06-29 15:05:02 -07:00
Rory OConnell
3cf48713a2
Work around more MSC optimzer bugs
2020-06-29 14:25:59 -07:00
Rory OConnell
6d5652114e
update CI settings for Windows
2020-06-29 13:18:05 -07:00
Yukihiro "Matz" Matsumoto
ac8360003e
Fix the bug that mrbc generates a.rb.mrb instead of a.mrb.
...
The bug was introduced by 9dfe50f1d .
2020-06-29 07:25:03 +09:00
Rory OConnell
b1017b2651
Reduce scope of volatile keyword for MSC bug
2020-06-26 21:44:31 -07:00
Rory OConnell
b8d896e56a
Narrower scope working around MSC bug
2020-06-26 21:16:17 -07:00
Rory OConnell
db296e9593
work around MSC optimization generating non functional code
2020-06-26 15:13:04 -07:00
Yukihiro "Matz" Matsumoto
233cb49903
Remove unnecessary stack adjustment in OP_CALL.
2020-06-25 06:57:43 +09:00
Yukihiro "Matz" Matsumoto
9cdf439db5
Free the original pointer if realloc failed.
...
The POSIX `realloc` keep the original pointer untouched, so it can
easily leads to memory leakage. `mrb_realloc()` should handle those
bookkeeping, while `mrb_realloc_simple()` keeps the original `realloc`
behavior.
2020-06-25 06:57:43 +09:00
Yukihiro "Matz" Matsumoto
95360a17f2
Remove unnecessary break from numeric.c.
2020-06-25 06:57:42 +09:00
Yukihiro "Matz" Matsumoto
9dfe50f1d9
Use snprintf instead of memcpy in mrbc.c.
2020-06-25 06:57:42 +09:00
Yukihiro "Matz" Matsumoto
c07f24cd18
Change flag names in preparation of REnv refactoring.
2020-06-25 06:57:41 +09:00
Yukihiro "Matz" Matsumoto
03c2b8656b
Use mrb_get_argc() to improve performance.
2020-06-25 06:57:41 +09:00
Yukihiro "Matz" Matsumoto
ea6e1b003c
Create codeql-analysis.yml
2020-06-23 12:36:20 +09:00
Yukihiro "Matz" Matsumoto
c2b37e76b3
Skip mrb_get_args() in mrb_ary_{aget,aset} unless necessary.
...
Use simpler `mrb_get_argc()` and `mrb_get_arg1()` instead.
2020-06-22 21:47:23 +09:00
Yukihiro "Matz" Matsumoto
d40b922c98
Fix potential buffer overflow in sprintf.c.
2020-06-20 18:56:33 +09:00
Yukihiro "Matz" Matsumoto
28e793496a
Support integer and float combination in mrb_equal().
2020-06-20 18:56:05 +09:00
Yukihiro "Matz" Matsumoto
33c8d6af1e
Move definition of BasicObject#!= to mrblib.
...
C implementation used `mrb_funcall()` that bypassed many optimization.
2020-06-20 14:09:23 +09:00
Yukihiro "Matz" Matsumoto
49ae2a69f2
Add mrb_get_arg1() that retrieves single (and only) argument.
...
`mrb_get_arg1()` raises `ArgumentError` if the method does not receive one
argument.
And replaces all `mrb_get_args(mrb, "o", &arg)` by the new function.
2020-06-20 12:49:46 +09:00
Yukihiro "Matz" Matsumoto
2ffb77586a
Symbolify saved alias name to improve performance.
2020-06-20 12:07:49 +09:00
Yukihiro "Matz" Matsumoto
dad99afae8
Remove unnecessary comments from MRB_TT_* definitions.
2020-06-15 09:54:55 +09:00
Yukihiro "Matz" Matsumoto
f93dffb5ee
Remove unused MRB_TT_FILE.
2020-06-15 07:47:22 +09:00
Yukihiro "Matz" Matsumoto
742117e7a3
Reorganize gray mark functions in GC.
2020-06-11 16:18:52 +09:00
Yukihiro "Matz" Matsumoto
15ceb35e05
Remove GC test code from ancient.
2020-06-11 16:18:51 +09:00
Yukihiro "Matz" Matsumoto
f0bad600e0
Remove endian configuration methods.
...
Since we made our opcode byte based, we need no endian option (`-e`
and `-E`) to `mrbc`.
2020-06-11 16:18:50 +09:00
Yukihiro "Matz" Matsumoto
a8aeba89ef
Merge pull request #5023 from dearblue/nesting
...
Remove `mrb_assert()` in `Module.nesting`
2020-06-11 12:21:26 +09:00
Yukihiro "Matz" Matsumoto
7f593893e8
Update OP_HASH generation to support big hash creation.
2020-06-09 22:42:38 +09:00
Yukihiro "Matz" Matsumoto
5d5b1d1f3c
Merge pull request #5022 from dearblue/test-dir
...
Need `build/XXX/mrbgems/mruby-test` directory
2020-06-09 22:42:29 +09:00
Yukihiro "Matz" Matsumoto
bb6846468a
Merge pull request #5021 from dearblue/kernel-test
...
Update `test/t/kernel.rb`
2020-06-09 22:41:44 +09:00
dearblue
960c82e396
Remove mrb_assert() in Module.nesting
...
The following code was causing SIGSEGV:
```ruby
Module.method(:nesting).call
```
2020-06-09 21:54:13 +09:00
dearblue
5be33b82c7
Need build/XXX/mrbgems/mruby-test directory
...
An error may occur when performing `rake clean all` or `rake clean test`.
The directory is needed before writing to `mrbgems/mruby-test/assert.c`.
2020-06-09 21:24:53 +09:00
dearblue
4cd858f93d
Update test/t/kernel.rb
...
- Remove unnecessoury assert
- Fix typo
2020-06-09 20:33:56 +09:00
Yukihiro "Matz" Matsumoto
2098acee7d
Merge pull request #5020 from jethrodaniel/master
...
only use GEMNAME if defined in assert.rb
2020-06-08 15:51:03 +09:00
Mark Delk
3157efa57c
only use GEMNAME if defined in assert.rb
...
Check if the constant GEMNAME is defined before use in `assert.rb`.
This is added to prevent an undefined constant error when using
`assert.rb` in other environments - for example, testing CRuby.
2020-06-08 00:30:46 -05:00
Yukihiro "Matz" Matsumoto
613e0bee5e
Merge pull request #5013 from shuujii/print-exception-backtrace-if-possible-without--v-in-test
...
Print exception backtrace if possible without `-v` in test
2020-06-08 09:59:43 +09:00
Yukihiro "Matz" Matsumoto
78c9c71bdf
Add proper cast.
2020-06-05 17:52:22 +09:00
Yukihiro "Matz" Matsumoto
aa30b13b36
Change arena index from mrb_int to int.
2020-06-05 17:26:40 +09:00
Yukihiro "Matz" Matsumoto
6ba542cd53
Revert part of #5019 (mruby_io_test.c) to honor #4987
...
The issue was reported by @shuujii.
2020-06-05 17:20:41 +09:00
Yukihiro "Matz" Matsumoto
106f4c4e9d
Add proper casts to silence VC warnings.
2020-06-05 16:04:30 +09:00
Yukihiro "Matz" Matsumoto
f1523d2404
Squashed commit of the following:
...
commit 2d7d545c4c4bfce7fdcbcbe9baaeb437915742f0
Merge: 625a1249 b178914b
Author: Yukihiro "Matz" Matsumoto <matz@ruby.or.jp >
Date: Fri Jun 5 14:35:13 2020 +0900
Merge branch 'fix-mrb_open-with-nomem' of https://github.com/dearblue/mruby into dearblue-fix-mrb_open-with-nomem
commit b178914b11
Author: dearblue <dearblue@users.noreply.github.com >
Date: Sat Jan 19 22:22:44 2019 +0900
Fix invalid pointer free inside other heap's block
1. `e = mrb_obj_alloc(...)`
2. `e->stack = mrb->c->stack` (`mrb->c->stack` is anywhere in the range `stbase...stend`)
3. And raised exception by `mrb_malloc()`!
4. `mrb_free(e->stack)` by GC part (wrong free)
commit 52e3d5d858
Author: dearblue <dearblue@users.noreply.github.com >
Date: Sat Jan 19 21:55:36 2019 +0900
Fix memory leak for temporary symbols when out of memory
commit 4c5499b88e
Author: dearblue <dearblue@users.noreply.github.com >
Date: Sun Jan 20 11:42:07 2019 +0900
Fix uninitialized pointer dereference for debug section
commit 8e993167de
Author: dearblue <dearblue@users.noreply.github.com >
Date: Sun Jan 20 11:41:09 2019 +0900
Fix memory leak for temporary filenames when out of memory
commit 8b422577e6
Author: dearblue <dearblue@users.noreply.github.com >
Date: Sun Jan 20 10:57:51 2019 +0900
Fix memory leak for irep when out of memory
commit 6b35ebf49a
Author: dearblue <dearblue@users.noreply.github.com >
Date: Sun Jan 20 10:55:50 2019 +0900
Fix uninitialized pointer dereference when do not finished initializing irep
commit 2531f2631e
Author: dearblue <dearblue@users.noreply.github.com >
Date: Sun Jan 20 10:48:15 2019 +0900
Fix NULL pointer dereference when do not finished initializing irep
commit e2d6896eba
Author: dearblue <dearblue@users.noreply.github.com >
Date: Sat Jan 19 12:54:19 2019 +0900
Fix memory leak for irep when out of memory by `mrb_proc_new()`
commit b6214ff8a0
Author: dearblue <dearblue@users.noreply.github.com >
Date: Sat Jan 19 12:53:07 2019 +0900
Fix memory leak for `khash_t` in `kh_init_size()` when out of memory by `kh_alloc()`
commit 19162dd6c1
Author: dearblue <dearblue@users.noreply.github.com >
Date: Sun Jan 20 02:15:07 2019 +0900
Fix memory leak for symbol string when out of memory in `kh_put()`
commit 15e67297ff
Author: dearblue <dearblue@users.noreply.github.com >
Date: Sun Jan 20 02:12:24 2019 +0900
Fix keep wrong symbol index when out of memory
commit 3f8e2b3752
Author: dearblue <dearblue@users.noreply.github.com >
Date: Sun Jan 20 02:08:13 2019 +0900
Fix keep wrong symbol capacity when out of memory
commit a3cfe755ab
Author: dearblue <dearblue@users.noreply.github.com >
Date: Sat Jan 19 10:11:37 2019 +0900
Fix NULL pointer dereference `mrb->c` by `mark_context()`
commit d9c7b6be6e
Author: dearblue <dearblue@users.noreply.github.com >
Date: Sun Jan 20 15:25:09 2019 +0900
Fix protect exception for print error message
commit 100642750e
Author: dearblue <dearblue@users.noreply.github.com >
Date: Sun Jan 20 11:59:02 2019 +0900
Protect exception for mruby core initialization
commit 7a0418304e
Author: dearblue <dearblue@users.noreply.github.com >
Date: Fri Jan 18 20:38:27 2019 +0900
Fix memory leak for string object when out of memory
The `mrb_str_pool()` function has a path to call `malloc()` twice.
If occurs `NoMemoryError` exception in second `malloc()`,
first `malloc()` pointer is not freed.
commit fef1c152ce
Author: dearblue <dearblue@users.noreply.github.com >
Date: Sat Jan 19 13:05:09 2019 +0900
Fix stack overflow when out of memory
As a result of this change, no backtrace information is set
for NoMemoryError (`mrb->nomem_err`).
Detailes:
When generating a backtrace, called `mrb_intern_lit()`,
`mrb_str_new_cstr()` and `mrb_obj_iv_set()` function with
`exc_debug_info()` function in `src/error.c`.
If a `NoMemoryError` exception occurs at this time,
the `exc_debug_info()` function will be called again,
and in the same way `NoMemoryError` exception raised will result
in an infinite loop to occurs stack overflow (and SIGSEGV).
commit da7d7f881b
Author: dearblue <dearblue@users.noreply.github.com >
Date: Sun Jan 20 12:00:38 2019 +0900
Fix NULL pointer dereference `mrb->nomem_err` when not initialized
Add internal functions (not `static`):
* `mrb_raise_nomemory()`
* `mrb_core_init_abort()`
2020-06-05 14:40:07 +09:00
Yukihiro "Matz" Matsumoto
00f6271e3b
Change arena index from mrb_int to int.
2020-06-05 14:40:07 +09:00
Yukihiro "Matz" Matsumoto
b0e49ef79e
Merge pull request #5019 from mruby/stable
...
Merge mruby 2.1.1
2020-06-05 13:04:36 +09:00
Hiroshi Mimaki
81d340e042
Merge master.
2020-06-05 12:42:56 +09:00
Yukihiro "Matz" Matsumoto
4e40169ed6
Remove rake -v option from GitHub Actions.
2020-06-04 18:24:58 +09:00
Yukihiro "Matz" Matsumoto
49f1c0e94d
Ignore files for clangd.
...
- `compile_flags.txt'
- `compile_commands.json`
2020-06-04 18:09:03 +09:00
Yukihiro "Matz" Matsumoto
dcfebc6eed
Remove bison installation from GitHub Actions.
2020-06-04 18:08:08 +09:00
Hiroshi Mimaki
f9d113f764
Update release date.
2020-06-04 17:20:46 +09:00
Yukihiro "Matz" Matsumoto
3d2d9f8a9b
Add explicit cast to DROP_PRECISION macro in rtional.c.
2020-06-04 11:01:31 +09:00
Yukihiro "Matz" Matsumoto
07129c76d9
Add mruby-complex and mruby-rational to default.gembox.
2020-06-04 11:01:30 +09:00
Yukihiro "Matz" Matsumoto
6fe03f3b39
Add explicit cast to silence warnings on AppVeyor.
2020-06-04 11:01:30 +09:00
Yukihiro "Matz" Matsumoto
41f3456a28
Merge pull request #4865 from take-cheeze/istruct_align
...
Align RIStruct data for rational/complex
2020-06-04 11:01:04 +09:00
Yukihiro "Matz" Matsumoto
7a420d4bba
Add .ccls* to .gitignore.
2020-06-04 10:05:42 +09:00
Yukihiro "Matz" Matsumoto
d2b9c90f28
Merge branch 'dearblue-hide-func'; merge #4937
2020-06-03 14:16:11 +09:00
dearblue
ce12ef7e5c
Hiding method implementation C functions in mruby-io
2020-06-03 14:12:51 +09:00
Yukihiro "Matz" Matsumoto
8bca11a64e
Merge pull request #4800 from shuujii/set-MRB_STR_ASCII-flag-to-some-stringize-methods
...
Set `MRB_STR_ASCII` flag to some stringize methods
2020-06-03 14:01:52 +09:00
Yukihiro "Matz" Matsumoto
14e325e45d
Merge branch 'dearblue-eval-patchfree'; close #5016
2020-06-02 14:49:49 +09:00
dearblue
f85906b679
Remove patch_irep() in mruby-eval
...
- It can now deal with operands in the range of `OP_EXT*`.
- It can now call the same method as the variable name without arguments.
```ruby
def a
"Safe!"
end
a = "Auto!"
eval "a()" # call method `a`
```
2020-06-02 14:49:27 +09:00
Yukihiro "Matz" Matsumoto
1fc9345b45
Add mruby-eval to default.gembox.
2020-06-01 23:00:37 +09:00
Yukihiro "Matz" Matsumoto
0a5983dd5e
Merge pull request #5014 from dearblue/local_variables
...
Get local variable names from orphan block; ref #3710
2020-06-01 22:58:17 +09:00
Yukihiro "Matz" Matsumoto
aec40d10b8
Merge pull request #5017 from RoryO/master
...
Fix float constant redefinition warnings
2020-06-01 21:26:57 +09:00
Rory OConnell
89ceb3e7ba
Fix float constant redefinition warnings
2020-05-31 20:11:38 -07:00
dearblue
fc80e4b651
Get local variable names from orphan block; ref #3710
2020-05-31 15:56:04 +09:00
KOBAYASHI Shuji
52ab095ccf
Print exception backtrace if possible without -v in test
...
Backtrace is useful for debugging.
2020-05-29 13:46:16 +09:00
Yukihiro "Matz" Matsumoto
d5cca2bdb2
Check c->eidx before decrement in ecall(); close #4977
2020-05-28 18:53:27 +09:00
Yukihiro "Matz" Matsumoto
ebbb4fd7fb
Merge pull request #5011 from shuujii/respect-CFLAGS-CXXFLAGS-and-LDFLAGS-env-vars-in-appveyor_config.rb
...
Respect CFLAGS, CXXFLAGS, and LDFLAGS env vars in appveyor_config.rb
2020-05-27 22:15:44 +09:00
KOBAYASHI Shuji
b717cc7830
Respect CFLAGS, CXXFLAGS, and LDFLAGS env vars in appveyor_config.rb
...
[skip travis]
2020-05-27 16:50:44 +09:00
Yukihiro "Matz" Matsumoto
a476c83caf
Move fmt_setup until absolutely necessary.
2020-05-27 14:09:36 +09:00
Yukihiro "Matz" Matsumoto
15c63688e3
Integer format can be bigger than 32 on 64bit platforms.
...
We made it `64` which should be big enough:
- Format modifier: 4 characters max
- Maximum width: 19 digits max
- Period between width and precision: 1 character
- Maximum precision: 19 digits max
- Format specifier: 1 character
- NUL terminator: 1 byte
- Total: 45 < 64
2020-05-26 23:53:16 +09:00
Yukihiro "Matz" Matsumoto
69c62415c0
Merge pull request #5010 from udzura/patch-1
...
Detect newly added mrbgems when re-creating gem_init.c
2020-05-26 23:37:22 +09:00
Kondo Uchio
690b2aa761
Detect newly added mrbgems when re-creating gem_init.c
2020-05-26 23:15:00 +09:00
Yukihiro "Matz" Matsumoto
69311fa4c9
Merge pull request #5009 from shuujii/removed-Bison-related-settings-from-.travis.yml-and-appveyor.yml
...
Removed Bison related settings from `.travis.yml` and `appveyor.yml`
2020-05-26 20:17:49 +09:00
Yukihiro "Matz" Matsumoto
ab9be1b48a
Merge pull request #5008 from shuujii/revert-part-of-Start-GitHub-Actions
...
Revert part of "Start GitHub Actions" (4ce3997c )
2020-05-26 12:43:38 +09:00
KOBAYASHI Shuji
5a682bfc7b
Removed Bison related settings from .travis.yml and appveyor.yml
2020-05-26 11:56:35 +09:00
KOBAYASHI Shuji
53ea8abea6
Revert part of "Start GitHub Actions" ( 4ce3997c)
...
Because some changes have been overridden.
2020-05-26 11:48:42 +09:00
Yukihiro "Matz" Matsumoto
6445e4683f
Specify the latest bison on macOS; ref #4903
2020-05-26 08:17:39 +09:00
Yukihiro "Matz" Matsumoto
6d49ec25a9
Merge pull request #5007 from shuujii/add-y.tab.c-to-remove-Bison-from-build-dependencies
...
Add `y.tab.c` to remove Bison from build dependencies; ref 4ce3997c
2020-05-26 08:17:23 +09:00
KOBAYASHI Shuji
a3ec6ede76
Add y.tab.c to remove Bison from build dependencies; ref 4ce3997c
...
I sometimes see Bison related problems in setting up build environments.
Therefore to remove Bison from build time dependencies, add `y.tab.c`
generated by Bison to the repository.
The reduction of dependency at build time also reduces the labor and time
for setup and installation in CI.
In addition, a path in `#line` directive is converted to a relative path so
that its path is constant regardless of development environments.
2020-05-25 23:26:30 +09:00
Yukihiro "Matz" Matsumoto
6803ddb8e2
Use the newer bison on GitHub actions macOS; ref #4903
...
`Windows-MinGW` and `Windows-VC` also requires updates.
2020-05-24 23:12:27 +09:00
Takeshi Watanabe
4ce3997ca4
Start GitHub Actions; close #4903
2020-05-24 22:34:28 +09:00
Yukihiro "Matz" Matsumoto
93e78fcde1
Merge pull request #5006 from mame/fix-send-with-splat-args
...
Do not destruct rest arguments for __send__
2020-05-24 08:31:06 +09:00
Yusuke Endoh
6f4c585bd7
Do not destruct rest arguments for __send__
...
Formerly, `__send__(*args)` modified `args` with `Array#shift`.
This bug affects optcarrot.
This changeset avoids the array destruction by using
`args = args[1, len-1]`.
2020-05-24 01:25:03 +09:00
Yukihiro "Matz" Matsumoto
47ea60814b
Merge pull request #5003 from shuujii/retry-rake--m-on-AppVeyor
...
Retry `rake -m` on AppVeyor [skip travis]
2020-05-20 13:49:10 +09:00
KOBAYASHI Shuji
86223b6eca
Retry rake -m on AppVeyor [skip travis]
...
The following error occurs when using `rake -m` on AppVeyor:
```
fatal error C1041: cannot open program database 'C:\projects\mruby\vc140.pdb'; if multiple CL.EXE write to the same .PDB file, please use /FS
```
Therefore, the issue is solved by not creating the PDB file. It is expected
to be somewhat faster by not generating debugging information (I don't think
debugging information is necessary for normal CI).
2020-05-20 13:32:23 +09:00
Yukihiro "Matz" Matsumoto
d79147fe5d
Revert "Use rake -m (multi-task) to appveyor.yml."
...
This reverts commit ac68c90800 .
`rake -m` does not work for VisualC.
2020-05-19 22:42:19 +09:00
Yukihiro "Matz" Matsumoto
ac68c90800
Use rake -m (multi-task) to appveyor.yml.
2020-05-19 17:37:17 +09:00
Yukihiro "Matz" Matsumoto
82194c01ca
Merge pull request #5002 from RoryO/master
...
Adding warnings for mrb_load functions leaking RProc objects
2020-05-19 17:34:56 +09:00
Rory OConnell
69bc477b43
Adding warnings for mrb_load functions leaking RProc objects
2020-05-19 01:07:49 -07:00
Yukihiro "Matz" Matsumoto
3655d4e0f4
Merge pull request #5000 from shuujii/unify-eql-receiver-in-Hash-according-to-Ruby
...
Unify `eql?` receiver in `Hash` according to Ruby
2020-05-15 23:42:19 +09:00
KOBAYASHI Shuji
bc929656fb
Unify eql? receiver in Hash according to Ruby
...
### Example
```ruby
# example.rb
class A
def eql?(o)
p self.class
super
end
def hash
1
end
end
class B < A; end
h = {A.new => 1}
h[B.new]
```
#### Before this patch:
```console
$ bin/mruby example.rb
A
```
#### After this patch (same as Ruby)
```console
$ bin/mruby example.rb
B
```
2020-05-15 21:17:24 +09:00
Yukihiro "Matz" Matsumoto
4aba93c969
Rename C function mrb_proc_lambda.
2020-05-15 15:55:35 +09:00
Yukihiro "Matz" Matsumoto
49d97d6051
Add pread/pwrite support on __MACH__ (MacOS) in addition to __unix__.
2020-05-15 12:31:18 +09:00
Yukihiro "Matz" Matsumoto
484577670f
Remove YYERROR_VERBOSE which no longer supported since bison 3.6.
...
Instead we added `%define parse.error verbose`.
2020-05-15 12:30:13 +09:00
Yukihiro "Matz" Matsumoto
d64c4d64e6
Make off_t handling simpler; #4872 #4939
...
The newer `clang` warns implicit float conversions.
2020-05-11 10:14:25 +09:00
Yukihiro "Matz" Matsumoto
846af371c0
Merge pull request #4998 from dearblue/special-vars
...
Get an irep symbol if it's `OP_GETSV` or `OP_SETSV`
2020-05-11 09:59:23 +09:00
Yukihiro "Matz" Matsumoto
38b4483f9d
Merge pull request #4999 from dearblue/opcode-doc
...
Update `doc/opcode.md` [ci skip]
2020-05-11 09:58:11 +09:00
dearblue
bb2512641f
Update doc/opcode.md [ci skip]
...
The difference of `include/mruby/ops.h` is applied.
- OP_NOP - update semantics
- OP_GETSV - update semantics
- OP_SETSV - update semantics
- OP_GETUPVAR - update prefix
- OP_SETUPVAR - update prefix
- OP_JMPIF - update operands and semantics
- OP_JMPNOT - update operands and semantics
- OP_JMPNIL - add entry
- OP_ONERR - update semantics
- OP_POPERR - update prefix
- OP_EPOP - update prefix
- OP_SENDB - update semantics
- OP_ADD - update prefix and operands
- OP_ADDI - update operands and semantics
- OP_SUB - update prefix and operands
- OP_SUBI - update semantics
- OP_MUL - update prefix and operands
- OP_DIV - update prefix and operands
- OP_EQ - update prefix and operands
- OP_LT - update prefix and operands
- OP_LE - update prefix and operands
- OP_GT - update prefix and operands
- OP_GE - update prefix and operands
- OP_ARYDUP - add entry
- OP_INTERN - add entry
- OP_HASHCAT - add entry
- OP_ERR - update semantics
2020-05-10 20:34:10 +09:00
dearblue
bd60ad98eb
Get an irep symbol if it's OP_GETSV or OP_SETSV
2020-05-10 20:15:55 +09:00
Yukihiro "Matz" Matsumoto
7826af38ac
Merge pull request #4997 from dearblue/byteorder
...
Remove byteorder constants; ref 87576b8
2020-05-09 23:01:02 +09:00
Yukihiro "Matz" Matsumoto
84d842ea5c
Merge pull request #4996 from dearblue/loadi16
...
Fix boundary check for `OP_LOADI16`; ref fa8668c
2020-05-09 22:41:23 +09:00
dearblue
f6c2662632
Remove byteorder constants; ref 87576b8
...
The `FLAG_BYTEORDER_NATIVE` and `FLAG_BYTEORDER_NONATIVE` are no longer
needed.
2020-05-09 22:30:05 +09:00
dearblue
e2aecacaeb
Fix boundary check for OP_LOADI16; ref fa8668c
...
It was making a negative integer if the highest-order bit of a 16-bit
integer was 1.
no patched:
```ruby
p 0x7fff # => 32767
p 0x8000 # => -32768
p 0xffff # => -1
p 0x10000 # => 65536
```
2020-05-09 21:12:31 +09:00
Yukihiro "Matz" Matsumoto
8cdf6a87ed
Merge pull request #4995 from shuujii/fix-some-Hash-methods-are-inconsistent-with-values
...
Fix some `Hash` methods are inconsistent with `values`
2020-05-09 18:59:22 +09:00
KOBAYASHI Shuji
181f7b97d6
Fix some Hash methods are inconsistent with values
...
Inconsistent when hash has duplicate key.
### Example
```ruby
# example.rb
keys = (1..3).map{[_1]}
h = keys.to_h{[_1, _1[0]]}
keys[0][0] = 2
p h.values
p h.each_value.to_a
p h
```
#### Before this patch:
```console
$ bin/mruby example.rb
[1, 2, 3]
[1, 1, 3]
{[2]=>1, [2]=>1, [3]=>3}
```
#### After this patch (same as Ruby)
```console
$ bin/mruby example.rb
[1, 2, 3]
[1, 2, 3]
{[2]=>1, [2]=>2, [3]=>3}
```
2020-05-09 15:27:42 +09:00
Yukihiro "Matz" Matsumoto
3491372a1d
Update doc/opcode.md for operand signs. [ci skip]
2020-05-07 18:41:43 +09:00
Yukihiro "Matz" Matsumoto
03b0741994
Remove unnecessary sprintf test that fails since 91368c1.
2020-05-07 10:31:49 +09:00
Yukihiro "Matz" Matsumoto
a87f0b158d
Update README.md to address old bison problem on macOS.
2020-05-07 10:17:38 +09:00
Yukihiro "Matz" Matsumoto
5e01674b72
Should not use assert with expressions with side-effect; ref #4981
...
`assert()` can be completely removed when `NDEBUG` is set.
2020-05-07 09:37:02 +09:00
Yukihiro "Matz" Matsumoto
b652a4ff14
Fixed wrong condition in #4981 .
2020-05-07 09:36:43 +09:00
Yukihiro "Matz" Matsumoto
7dc0fe66c7
Add #include <string.h> on all platforms for strncpy; #4981
2020-05-07 09:36:21 +09:00
Yukihiro "Matz" Matsumoto
1cdcd00cc0
Remove unused local variable if MRB_UTF8_STRING is not set.
...
Ref #4982 #4983
2020-05-07 09:35:47 +09:00
Yukihiro "Matz" Matsumoto
9f4b5227fe
Avoid snprintf in mruby-io test; ref #4981
2020-05-07 09:33:44 +09:00
Yukihiro "Matz" Matsumoto
d464fe5003
Remove the temporary file from the AF_UNIX socket test; #4981
2020-05-07 09:33:08 +09:00
Yukihiro "Matz" Matsumoto
6b839b2319
Fix IO#readchar to return broken UTF-8 rather than EOF error.
...
The behavior is different from CRuby, but we believe this is a right
behavior for mruby, which only supports either ASCII or UTF-8
exclusively; fix #4983 , ref #4982
```
$ printf '\xe3\x81' | ruby -e 'p STDIN.readchar'
"\xE3\x81"
```
```
$ printf '\xe3\x81' | mruby -e 'p STDIN.readchar'
"\xE3"
```
2020-05-07 09:32:46 +09:00
Yukihiro "Matz" Matsumoto
45bd372755
Fix IO#readchar to support UTF-8 char reading; fix #4712
...
This fix only effective when `MRB_UTF8_STRING` is set.
2020-05-07 09:31:38 +09:00
Yukihiro "Matz" Matsumoto
f5ee7df7f3
Rename (and expose) UTF-8 related functions; ref #4712
...
- mrb_utf8len() - returns the size of a UTF-8 char (in bytes)
- mrb_utf8_strlen() - returns the length of a UTF-8 string (in char)
2020-05-07 09:31:07 +09:00
Yukihiro "Matz" Matsumoto
e82b8b7bf8
Update cmpnum document.
...
`cmpnum` function may return `nil` on error.
2020-05-07 08:38:46 +09:00
Yukihiro "Matz" Matsumoto
91368c117c
Avoid mrb_funcall if MRB_UFT8_STRING is not set.
2020-05-07 08:38:46 +09:00
Yukihiro "Matz" Matsumoto
87576b819e
Remove endian information/flags from compiled binary format.
...
Since `mruby 2.0`, compiled bytecode no longer depends on the
endian of the machine.
2020-05-07 08:38:46 +09:00
Yukihiro "Matz" Matsumoto
48c473a0c4
Remove -e/-E options from mrbc.
...
You don't have to specify endian since `mruby 2.0`.
2020-05-07 08:38:46 +09:00
Yukihiro "Matz" Matsumoto
87d77c13f5
Update compiled binary format version for OP_LOADI16.
2020-05-07 08:38:46 +09:00
Yukihiro "Matz" Matsumoto
4188219620
Update doc/opcode.md to reflect the latest bytecode.
...
- Add `OP_LOADI16`
- Update keyword argument related ops (e.g. OP_KEY_P, etc.)
- Fix some wrong descriptions
2020-05-07 08:38:46 +09:00
Yukihiro "Matz" Matsumoto
fa8668c77d
Add a new instruction OP_LOADI16.
...
Which loads 16bit integer to the register. The instruction number should
be reorder on massive instruction refactoring. The instruction is added
for `mruby/c` which had performance issue with `OP_EXT`. With this
instruction, `mruby/c` VM can just raise errors on `OP_EXT` extension
instructions.
2020-05-07 08:38:46 +09:00
Yukihiro "Matz" Matsumoto
47f5f887e8
Fix wrong line number before comment line; fix #4993
2020-05-07 08:38:46 +09:00
Yukihiro "Matz" Matsumoto
c143d87e7c
Remove mrb_run from MRB_API; #4488
...
`mrb_run` requires to push callinfo stack before calling, which is very
hard from outside of `vm.c`. So there should be virtually no correct
usage of the function, hence the cause of #4488 . We removed it.
You can use `mrb_top_run(mrb, proc, self, 0)` instead of
`mrb_run(mrb, proc self)`.
2020-05-07 08:38:46 +09:00
Yukihiro "Matz" Matsumoto
2fcdd3f8eb
Add assertion as originally intended; ref #4986
2020-05-07 08:38:46 +09:00
Yukihiro "Matz" Matsumoto
8c0dc55af8
Update doc/guides/compile.md to note the bison failure on Mac.
2020-05-07 08:38:46 +09:00
Yukihiro "Matz" Matsumoto
8c04379a4c
Merge pull request #4990 from komainu8/enable-method-t-struct-on-32bit-linux
...
Enable MRB_METHOD_T_STRUCT by default on 32bit GUN/Linux
2020-05-05 22:57:40 +09:00
Horimoto Yasuhiro
a5bfe548d7
Enable MRB_METHOD_T_STRUCT by default on 32bit GUN/Linux
...
Because we can't use the highest 2 bits of function pointers.
2020-05-04 15:34:16 +09:00
Yukihiro "Matz" Matsumoto
e77e6e9d12
Fix _read_buf to be more efficient; fix #4982
...
The bug was introduced by #4712 . The `getc' problem resurrected.
It should be addressed soon.
2020-05-01 16:57:45 +09:00
Yukihiro "Matz" Matsumoto
a2b87c033a
Fix IO#sysread to update buffer string on EOF; ref #4982
2020-05-01 16:54:13 +09:00
Yukihiro "Matz" Matsumoto
b3c5d94bd1
Update IO#ungetc to keep @buf string; ref #4982
2020-05-01 16:53:55 +09:00
Yukihiro "Matz" Matsumoto
d029549c2f
Fix UTF-8 boundary check; ref #4982
2020-05-01 16:53:25 +09:00
Uchio Kondo
6e13467ce8
Fix typo and include location
2020-05-01 16:52:11 +09:00
Uchio Kondo
508ac2030e
Skip socket check on windows
2020-05-01 16:51:47 +09:00
Uchio Kondo
4b81bce48d
Follow C90 style
2020-05-01 16:51:22 +09:00
Uchio Kondo
3486675e00
Test mruby-io in tmpdir when AF_UNIX cannot be created on cwd
2020-05-01 16:50:54 +09:00
Yukihiro "Matz" Matsumoto
84aad39940
Merge pull request #4987 from shuujii/avoid-changing-directory-in-mruby-io-test
...
Avoid changing directory in `mruby-io` test
2020-04-30 17:13:11 +09:00
Yukihiro "Matz" Matsumoto
c89ca5ebb8
Merge pull request #4988 from shuujii/refine-.travis.yml
...
Refine `.travis.yml`
2020-04-30 17:12:36 +09:00
KOBAYASHI Shuji
1a4b86233f
Refine .travis.yml
...
* Disable automatic update and clean up on `brew install` (install time
160 sec -> 5 sec).
* Avoid using deprecated keys.
2020-04-30 13:42:24 +09:00
Yukihiro "Matz" Matsumoto
69a487c407
Merge pull request #4984 from dearblue/break-to_s
...
Sorting the list of gems at build time by name
2020-04-30 08:38:33 +09:00
Yukihiro "Matz" Matsumoto
f32c73ad1f
Merge pull request #4986 from dearblue/assert-io
...
Avoid comparing pointers and integers
2020-04-29 18:34:40 +09:00
Yukihiro "Matz" Matsumoto
a343439973
Merge pull request #4985 from dearblue/print-gems
...
Makes `mrb_any_to_s()` accept an object whose class is `NULL`
2020-04-29 18:34:03 +09:00
KOBAYASHI Shuji
aeb86d953e
Avoid changing directory in mruby-io test
2020-04-29 17:48:01 +09:00
dearblue
49bba6c997
Avoid comparing pointers and integers
2020-04-29 17:18:09 +09:00
dearblue
49b2e8c3a9
Makes mrb_any_to_s() accept an object whose class is NULL
...
When using `mrb_any_to_s()` for debugging purposes, giving an object
whose class is `NULL` no longer causes a SIGSEGV and no crash.
This is achieved by making `mrb_class_name()` and `mrb_str_cat_cstr()`
null safe.
2020-04-29 16:59:16 +09:00
dearblue
9c1220e14d
Sorting the list of gems at build time by name
...
Printing them in sorted order makes it easier to find the desired gem.
But it has come to completely ignore the dependency.
2020-04-29 16:55:18 +09:00
Yukihiro "Matz" Matsumoto
e2ac2a82a5
Should not use assert with expressions with side-effect; ref #4981
...
`assert()` can be completely removed when `NDEBUG` is set.
2020-04-28 22:37:14 +09:00
Yukihiro "Matz" Matsumoto
bb6290a5d5
Fixed wrong condition in #4981 .
2020-04-28 22:34:33 +09:00
Yukihiro "Matz" Matsumoto
312411dea0
Add #include <string.h> on all platforms for strncpy; #4981
2020-04-28 22:34:33 +09:00
Yukihiro "Matz" Matsumoto
7277682cfb
Remove unused local variable if MRB_UTF8_STRING is not set.
...
Ref #4982 #4983
2020-04-28 22:34:01 +09:00
Yukihiro "Matz" Matsumoto
0f229bfbbf
Avoid snprintf in mruby-io test; ref #4981
2020-04-28 18:30:50 +09:00
Yukihiro "Matz" Matsumoto
28b23b44ec
Remove the temporary file from the AF_UNIX socket test; #4981
2020-04-28 18:13:43 +09:00
Yukihiro "Matz" Matsumoto
8627157298
Fix IO#readchar to return broken UTF-8 rather than EOF error.
...
The behavior is different from CRuby, but we believe this is a right
behavior for mruby, which only supports either ASCII or UTF-8
exclusively; fix #4983 , ref #4982
```
$ printf '\xe3\x81' | ruby -e 'p STDIN.readchar'
"\xE3\x81"
```
```
$ printf '\xe3\x81' | mruby -e 'p STDIN.readchar'
"\xE3"
```
2020-04-28 18:07:17 +09:00
Yukihiro "Matz" Matsumoto
b87268f130
Fix IO#readchar to support UTF-8 char reading; fix #4712
...
This fix only effective when `MRB_UTF8_STRING` is set.
2020-04-28 13:57:46 +09:00
Yukihiro "Matz" Matsumoto
a395f8e2c8
Rename (and expose) UTF-8 related functions; ref #4712
...
- mrb_utf8len() - returns the size of a UTF-8 char (in bytes)
- mrb_utf8_strlen() - returns the length of a UTF-8 string (in char)
2020-04-28 13:57:46 +09:00
Yukihiro "Matz" Matsumoto
3ce459f23a
Fix _read_buf to be more efficient; fix #4982
...
The bug was introduced by #4712 . The `getc' problem resurrected.
It should be addressed soon.
2020-04-28 13:57:46 +09:00
Yukihiro "Matz" Matsumoto
e51923778f
Fix IO#sysread to update buffer string on EOF; ref #4982
2020-04-28 13:57:46 +09:00
Yukihiro "Matz" Matsumoto
468578113a
Update IO#ungetc to keep @buf string; ref #4982
2020-04-28 13:57:46 +09:00
Yukihiro "Matz" Matsumoto
2c32154115
Fix UTF-8 boundary check; ref #4982
2020-04-28 13:57:46 +09:00
Yukihiro "Matz" Matsumoto
47d99457d9
Merge pull request #4981 from udzura/fix-test-mruby-io-on-vboxsf
...
Test mruby-io in tmpdir when AF_UNIX cannot be created on cwd
2020-04-28 09:46:56 +09:00
Uchio Kondo
88b756b39f
Fix typo and include location
2020-04-28 01:52:56 +09:00
Uchio Kondo
462ff4cc84
Skip socket check on windows
2020-04-28 01:49:39 +09:00
Uchio Kondo
18274e717a
Follow C90 style
2020-04-28 01:45:46 +09:00
Uchio Kondo
7870f74c21
Test mruby-io in tmpdir when AF_UNIX cannot be created on cwd
2020-04-28 01:33:50 +09:00
Yukihiro "Matz" Matsumoto
8dee2e3984
Updating parse.y for recent bison` (retry).
2020-04-27 18:52:43 +09:00
Yukihiro "Matz" Matsumoto
8e86e64d78
Revert "Change obsolete %pure-parser to %define api.pure."
...
This reverts commit 682a31f92b .
Unfortunately, I couldn't run newer `bison` on TravisCI. Maybe next
time.
2020-04-27 12:27:56 +09:00
Yukihiro "Matz" Matsumoto
e79e972255
Update .travis.yml to support newer bison on MacOS.
...
If it doesn't work, I will revert the last update to `parse.y`.
2020-04-27 12:21:35 +09:00
Yukihiro "Matz" Matsumoto
682a31f92b
Change obsolete %pure-parser to %define api.pure.
...
Recent `bison` warns for `%pure-parser`. We kept it since MacOS only
provide ancient `bison`, but the warning is noisy and there's no hope
that Apple will upgrade `bison`. MacOS users must install the newer
version of `bison`, by typing `brew install bison` for example.
Note that `brew` does not overwrite the `bison` execution path
automatically, so you need to update your `.bash_profile` as instructed
by `brew`.
2020-04-27 09:00:22 +09:00
Yukihiro "Matz" Matsumoto
17974aa285
Merge pull request #4978 from dearblue/test-ensure
...
Integrate class `EnsureYieldBreak` under test
2020-04-27 09:00:13 +09:00
Yukihiro "Matz" Matsumoto
0a7fd86d59
Merge pull request #4980 from dearblue/context
...
Reduce `struct mrb_context`
2020-04-27 08:59:19 +09:00
Yukihiro "Matz" Matsumoto
d95d46dee6
Merge pull request #4979 from dearblue/mruby-bin
...
Remove unused `mruby-error` in `mruby-bin-mruby`
2020-04-27 08:56:50 +09:00
dearblue
81c8352179
Integrate class EnsureYieldBreak under test
2020-04-26 21:16:44 +09:00
dearblue
6d80c9505d
Remove unused mruby-error in mruby-bin-mruby
2020-04-26 21:16:22 +09:00
dearblue
1b0cf6a91b
Reduce struct mrb_context
2020-04-26 21:15:24 +09:00
Yukihiro "Matz" Matsumoto
954ce5379c
Implemented argument forwarding by ...
2020-04-25 00:00:22 +09:00
Yukihiro "Matz" Matsumoto
8b5c19218d
Merge pull request #4976 from dearblue/splice-undef
...
Support `undef` for `mrb_ary_splice()` instead of `[]`
2020-04-24 23:36:12 +09:00
Yukihiro "Matz" Matsumoto
f6408c7b11
Merge pull request #4975 from dearblue/io-comment
...
Removed comments mentioning `MRB_WITHOUT_FLOAT`; ref 2e661e8
2020-04-24 23:35:10 +09:00
dearblue
095aae5e2c
Removed comments mentioning MRB_WITHOUT_FLOAT; ref 2e661e8
...
The comment is for messages when `MRB_INT16` and `MRB_WITHOUT_FLOAT` are
specified at the same time.
The comment itself is no longer needed now that `MRB_INT16` is gone.
2020-04-24 21:47:20 +09:00
dearblue
26eb29547b
Support undef for mrb_ary_splice() instead of []
...
When removing elements from an array, it is possible to avoid creating
an empty array.
Before this patch:
```c
mrb_ary_splice(mrb, ary, head, len, mrb_ary_new(mrb));
```
After this patch:
```c
mrb_ary_splice(mrb, ary, head, len, mrb_undef_value());
```
2020-04-24 21:32:35 +09:00
Yukihiro "Matz" Matsumoto
d3a02a297f
Fix instance_exec and class_exec to avoid crash on indirect calls.
...
Thank you @shuujii to additional report on #4973
2020-04-22 16:48:33 +09:00
Yukihiro "Matz" Matsumoto
ab508e1e7f
Make mrb_obj_instance_eval to use mrb_singleton_class_ptr; #4973
2020-04-22 16:47:26 +09:00
Yukihiro "Matz" Matsumoto
87d1bbe947
Add new function mrb_singleton_class_ptr(); ref #4973
...
The difference between `mrb_singleton_class` and `mrb_singleton_class_ptr`:
- `mrb_singleton_class_ptr` returns `struct RClass*`.
- `mrb_singleton_class_ptr` returns `NULL` on immediate values where
`mrb_singleton_class` raises exceptions.
2020-04-22 16:44:39 +09:00
Yukihiro "Matz" Matsumoto
2e661e82d1
Removed comments mentioning MRB_INT16.
2020-04-21 20:47:22 +09:00
Yukihiro "Matz" Matsumoto
61c6832b48
Fix the bug by #instance_eval called via a method object; fix #4973
...
The tranpoline code in 6a0b68f8b was wrong; reverted.
2020-04-21 15:44:21 +09:00
Yukihiro "Matz" Matsumoto
ed0038fdf2
Simplified mrb_obj_instance_eval; ref #4973
2020-04-21 15:43:35 +09:00
Yukihiro "Matz" Matsumoto
c181d89c9d
Kernel#clone and Kernel#dup no longer raise TypeError; fix #4974
...
In ISO, those methods should raise `TypeError`, but the spec has been
changed. The change was discussed in [Feature#12979].
2020-04-21 13:21:12 +09:00
Yukihiro "Matz" Matsumoto
c91c9e2429
Merge pull request #4968 from dearblue/check-fd
...
Check the file descriptor with `IO#initialize`; resolve #4966
2020-04-15 09:58:20 +09:00
Yukihiro "Matz" Matsumoto
7add524041
Selecting fd should be less than FD_SETSIZE; close #4966
2020-04-14 14:51:22 +09:00
Yukihiro "Matz" Matsumoto
72928f201c
Merge pull request #4972 from dearblue/boxnan-cptr
...
Fix `MRB_TT_CPTR` object with `MRB_NAN_BOXING`
2020-04-14 14:51:00 +09:00
Yukihiro "Matz" Matsumoto
81a9210091
Merge pull request #4969 from dearblue/nostdio-pack
...
Support `MRB_DISABLE_STDIO` for mruby-pack; ref #4954
2020-04-14 14:46:25 +09:00
Yukihiro "Matz" Matsumoto
e9877bc72a
Merge pull request #4970 from dearblue/nostdio-sprintf
...
Support `MRB_DISABLE_STDIO` for mruby-sprintf; ref #4954
2020-04-14 14:45:26 +09:00
Yukihiro "Matz" Matsumoto
ea632ab8a4
Merge pull request #4971 from dearblue/mruby-config
...
Fixed a build error in mruby-config
2020-04-14 09:29:00 +09:00
dearblue
d0501c69b0
Fix MRB_TT_CPTR object with MRB_NAN_BOXING
...
Previously, if `MRB_NAN_BOXING` is defined, for example,
`mrb_cptr_value()` could not keep an odd address.
If it is `MRB_32BIT`, it can be embedded in `NaN` as it is.
If it is `MRB_64BIT`, some operations are shared with `MRB_WORD_BOXING`.
In this case, the MRB_API function `mrb_nan_boxing_cptr_value()` is
defined.
2020-04-13 23:12:09 +09:00
dearblue
3c03385e2e
Check the file descriptor with IO#initialize; resolve #4966
2020-04-12 14:18:36 +09:00
dearblue
191ccbf660
Support MRB_DISABLE_STDIO for mruby-sprintf; ref #4954
2020-04-11 22:11:24 +09:00
dearblue
d983269908
Add mrb_float_to_cstr() MRB_API function
...
In order to share the same operation with `mrb_float_to_str()`,
the internal structure is modified.
2020-04-11 22:11:24 +09:00
dearblue
2ceab2d270
Supports some specifier flags with mrb_float_to_str()
...
Changed to understand `#`, `0`, `-`, ` ` and `+`.
Based on src/stdio/vfprintf.c in git://git.musl-libc.org/musl
2020-04-11 22:11:10 +09:00
dearblue
8ce3664305
Supports width specifier with mrb_float_to_str()
...
Based on src/stdio/vfprintf.c in git://git.musl-libc.org/musl
2020-04-11 22:10:57 +09:00
dearblue
ccd8485111
Add missing MRB_API
2020-04-11 21:59:30 +09:00
dearblue
70caf4ed6d
Fixed a build error in mruby-config
...
The build error occurred when the "build/XXX/bin" directory did not exist.
2020-04-11 15:43:24 +09:00
dearblue
b7c8bf7781
Support MRB_DISABLE_STDIO for mruby-pack; ref #4954
2020-04-11 15:29:07 +09:00
Hiroshi Mimaki
3d46f1b620
Update version to 2.1.1. (mruby 2.1.1 RC)
2020-04-10 13:05:23 +09:00
Yukihiro "Matz" Matsumoto
63c7ff341a
Merge pull request #4965 from mimaki/remove-cygwin_filename
...
Merged `cygwin_filename()` into `filename()`.
2020-04-08 22:40:49 +09:00
mimaki
a8ab74a6dc
Merged cygwin_filename() into filename() because Cygwin pathnames are in UNIX format.
2020-04-08 13:27:14 +09:00
Yukihiro "Matz" Matsumoto
7ab5353f80
Merge pull request #4960 from Reckordp/BuildAndroid
...
Validate windows by Dir testing
2020-04-05 14:17:09 +09:00
Reckordp
d7df30bdd8
Unused library folder
2020-04-04 21:57:13 +07:00
Reckordp
d317ee144b
Correct naming file from Mingw
2020-04-04 21:56:40 +07:00
Yukihiro "Matz" Matsumoto
3cef380b20
Revert part of #4959
...
To prevent infinite loop on errors; reported by @shuujii
2020-04-04 11:50:59 +09:00
Reckordp
707933aa8e
Helper for link window's library
2020-04-03 20:34:00 +07:00
Yukihiro "Matz" Matsumoto
068b16a352
Merge pull request #4959 from dsisnero/master
...
build when directories and files have spaces
2020-04-02 13:26:53 +09:00
dsisnero
c7ab4cf616
fix for quoting visualcpp
2020-04-01 12:31:48 -06:00
Dominic Sisneros
e3875ae8c5
build when directories and files have spaces
...
Modified the build to quote filenames so that it builds when files have spaces
2020-04-01 11:55:35 -06:00
Yukihiro "Matz" Matsumoto
226fcb4f2a
Avoid unnecessary nextc() recursion.
2020-04-01 23:23:07 +09:00
Yukihiro "Matz" Matsumoto
d22b72a7cc
Merge pull request #4957 from dearblue/excessive-arena
...
Fix `mrb_funcall_with_block()` uses more GC arena
2020-04-01 15:40:25 +09:00
dearblue
15dec83832
Fix mrb_funcall_with_block() uses more GC arena
...
If `mrb->jmp` is `NULL` and the function `mrb_funcall_with_block()` is
called, GC Arena is returned from the function with over-used.
- A normal (no global exodus) return will consume two GC Arena's.
- In the event of an exception, five GC Arena are consumed.
This patch reduces consumption in both cases to one.
2020-03-31 23:24:53 +09:00
Yukihiro "Matz" Matsumoto
5acd802d2b
Merge pull request #4956 from dearblue/null-local_variables
...
Fix NULL pointer dereferences in mrb_local_variables; fix #4955
2020-03-31 22:04:18 +09:00
dearblue
9b15860ddb
Fix NULL pointer dereferences in mrb_local_variables; fix #4955
...
However, the behavior of `#call` on the method object of
`local_variables` is not corrected.
2020-03-30 23:52:59 +09:00
Yukihiro "Matz" Matsumoto
0dacc9a62a
Merge pull request #4954 from dearblue/nostdio
...
Improve configuration guard
2020-03-08 22:37:22 +09:00
dearblue
67606170e3
Add configuration guard for MRB_DISABLE_STDIO
...
ref #4576 and ref #4947
* Need MRBAPI functions without `MRB_DISABLE_STDIO`:
* mrbgems/mruby-bin-debugger
* mrbgems/mruby-bin-mirb
* mrbgems/mruby-bin-mrbc
* mrbgems/mruby-bin-mruby
* mrbgems/mruby-bin-strip
* Need `stdio.h`:
* mrbgems/mruby-io
* mrbgems/mruby-print
* Need `snprintf()` in `stdio.h`:
* mrbgems/mruby-pack
* mrbgems/mruby-sprintf
2020-03-08 21:57:17 +09:00
dearblue
cc1db2d117
Remove unnecessary 'stdio.h'; ref #4947
...
'stdio.h' is included in 'mruby.h' ('mrbconf.h').
However, keep 'stdio.h' used by mruby-test.
2020-03-08 21:42:09 +09:00
dearblue
b3d4ab0cd8
Improve conflict error message of mruby-bin-debugger; ref 87d1b2a91
2020-03-08 20:49:22 +09:00
Yukihiro "Matz" Matsumoto
5bf5a2cc6e
Merge pull request #4953 from Reckordp/BuildAndroid
...
Some rule to CrossBuild Android
2020-03-08 19:07:32 +09:00
Yukihiro "Matz" Matsumoto
e15e6e761e
Merge branch 'master' into BuildAndroid
2020-03-08 19:01:29 +09:00
Yukihiro "Matz" Matsumoto
1cc270f0cc
Small refactoring on #4952
...
Fix the argument of `mrb_file_is_absolute_path()`.
2020-03-08 18:57:49 +09:00
Yukihiro "Matz" Matsumoto
55f3202650
Merge pull request #4952 from Reckordp/master
...
Traditional, UNC, and Drive Path
2020-03-08 18:52:24 +09:00
Reckordp
a8d508c567
Let me in Please
2020-03-08 14:41:38 +07:00
Reckordp
7c85a1ff07
Increase flexibility of CrossBuild
2020-03-08 14:23:55 +07:00
Reckordp
dd6f5e4607
Let me in Please
2020-03-08 11:50:26 +07:00
Reckordp
ab1465d9d5
Traditional, UNC, and Device Is Absolute?
2020-03-08 10:53:18 +07:00
Reckordp
66c44b8568
Commit from remote
2020-03-08 05:40:47 +07:00
Reckordp
6ee24fe1bc
Evaluate all type path
2020-03-08 05:32:27 +07:00
Yukihiro "Matz" Matsumoto
4398bae56a
Merge branch 'dearblue-io-pread-pwrite'
2020-03-07 19:07:13 +09:00
Yukihiro "Matz" Matsumoto
20f9128f73
Small refactoring on #4939
2020-03-07 19:06:46 +09:00
Yukihiro "Matz" Matsumoto
6901752723
Use in-house macro ISALPHA instead of isalpha; ref #4950
2020-03-07 19:03:45 +09:00
Yukihiro "Matz" Matsumoto
886355007c
Merge branch 'io-pread-pwrite' of https://github.com/dearblue/mruby into dearblue-io-pread-pwrite
2020-03-07 19:00:30 +09:00
Yukihiro "Matz" Matsumoto
f45549edbf
Merge pull request #4951 from Reckordp/master
...
Fix unfinished changes
2020-03-07 17:58:26 +09:00
Reckordp
5a4b9fd877
Add absolute path for UNC
2020-03-07 15:50:14 +07:00
Reckordp
f319c5fb26
Fix typo
2020-03-07 15:18:48 +07:00
Yukihiro "Matz" Matsumoto
4687f8790c
Merge the update suggested by @mattn; ref #4950
2020-03-07 14:58:05 +09:00
Yukihiro "Matz" Matsumoto
30eaee30fa
Merge pull request #4950 from Reckordp/master
...
Absolute path for windows
2020-03-07 14:53:37 +09:00
Reckordp
8df49ea955
Absolute path for windows
2020-03-07 09:09:28 +07:00
Yukihiro "Matz" Matsumoto
7905431fe9
Merge pull request #4948 from kou/32bit-windows-method-t-struct
...
Enable MRB_METHOD_T_STRUCT by default on 32bit Windows
2020-03-04 21:25:10 +09:00
Sutou Kouhei
96d727177e
Enable MRB_METHOD_T_STRUCT by default on 32bit Windows
...
Because we can't use the highest 2 bits of function pointers.
2020-03-04 18:35:40 +09:00
Yukihiro "Matz" Matsumoto
be86bd3c49
Merge pull request #4946 from sizious/sega-dreamcast-example
...
Improving comments in the cross-compiling sample for the Sega Dreamcast.
2020-02-23 18:01:05 +09:00
SiZiOUS
260dc6d741
Improving comments in the cross-compiling example for the Sega Dreamcast (sh-elf).
2020-02-22 23:44:13 +01:00
Yukihiro "Matz" Matsumoto
3ba32e80af
Merge pull request #4945 from Leo-Neat/master
...
Add CIFuzz action
2020-02-22 14:09:23 +09:00
Yukihiro "Matz" Matsumoto
ac5ec1a153
Merge pull request #4944 from sizious/sega-dreamcast-example
...
Added example for cross-compiling for Sega Dreamcast (sh-elf).
2020-02-22 14:07:46 +09:00
Yukihiro "Matz" Matsumoto
34be5acc99
Merge pull request #4942 from inobelar/patch-1
...
Updated README.md - Fixed link to github issues
2020-02-22 13:25:11 +09:00
Leo Neat
4713502083
CIFuzz action
2020-02-21 15:27:53 -08:00
SiZiOUS
2f6afb52a9
Added example for cross-compiling for Sega Dreamcast (sh-elf).
...
Thanks to @yujiyokoo for demonstrating mruby usage on Sega Dreamcast at RubyConf AU 2020!
See more here: https://youtu.be/ni-1x5Esa_o
2020-02-21 22:07:07 +01:00
Yurii Nakonechnyi
20597b6d36
Updated README.md - Fixed link to github issues
2020-02-21 16:57:19 +02:00
Yukihiro "Matz" Matsumoto
0301d8a89b
Fix integer boundary check before float to time_t casting.
2020-02-12 11:54:32 +09:00
Yukihiro "Matz" Matsumoto
736ea1f5c7
Merge pull request #4941 from davidsiaw/mac-compat
...
Include time.h for ios
2020-02-05 23:11:45 +09:00
Yukihiro "Matz" Matsumoto
ffb55e51f1
Add explicit type cast to return value from mrmchr; ref #4940
...
C++ is stricter in implicit type casting.
2020-02-03 12:59:29 +09:00
Yukihiro "Matz" Matsumoto
6d9109bf70
Use simple search for short strings in mrb_memsearch_qs; close #4940
...
Differences from the PR #4940 :
* Use simple search for short strings only.
* "short" means `m+n` is shorter than `MRB_QS_SHORT_STRING_LENGTH`.
* The current default value for `MRB_QS_SHORT_STRING_LENGTH` is 2048.
2020-02-03 12:59:29 +09:00
dearblue
4c6d524c47
Implement IO#pread and IO#pwrite
...
It is available by default in environments where `__unix__` is defined.
Other environments are enabled by defining `MRB_WITH_IO_PREAD_PWRITE`
(requires an implementation of `pread()` and `pwrite()` functions).
In any case, you can disable it by defining
`MRB_WITHOUT_IO_PREAD_PWRITE`.
2020-02-02 21:20:25 +09:00
Yukihiro "Matz" Matsumoto
3c67d9b1c0
Merge pull request #4938 from dearblue/socket-mingw
...
Fix builds for old mingw in mruby-socket; ref #4914
2020-02-01 17:41:19 +09:00
dearblue
8020374d6b
Fix builds for old mingw in mruby-socket; ref #4914
2020-02-01 15:58:32 +09:00
Yukihiro "Matz" Matsumoto
db64bd42d3
Add explicit casting in file.c to silence warnings.
2020-01-31 09:26:45 +09:00
Yukihiro "Matz" Matsumoto
724c90f369
Avoid casting warning from mrb_int to int in io.c.
2020-01-31 09:26:05 +09:00
Yukihiro "Matz" Matsumoto
c0a6439a69
Avoid implicit integer casting in backtrace.c and hash.c.
2020-01-31 09:25:10 +09:00
Yukihiro "Matz" Matsumoto
10c2b7ee1c
Remove unnecessary use of uint16_t in symbol.c.
2020-01-31 09:22:27 +09:00
Yukihiro "Matz" Matsumoto
f34623fb03
Fix arena index type from mrb_int to just int.
2020-01-30 17:35:50 +09:00
Yukihiro "Matz" Matsumoto
c8f4d72302
Move fallback definitions of FLT_EPSILON etc. after #include <mruby/value.h>
...
that includes `float.h`. It allows definitions from native headers.
2020-01-30 17:16:12 +09:00
dearblue
9840e5352b
Isolate top-level local variables by file scope; fix #4931
2020-01-29 23:30:13 +09:00
dearblue
0aa5aa1de2
Add test for top level local variables are in file scope; ref #4931
2020-01-29 23:29:48 +09:00
Yukihiro "Matz" Matsumoto
7771c215e4
Removed junk.
...
My cat stepped on the keyboard at the last moment before the commit.
2020-01-29 10:23:31 +09:00
Yukihiro "Matz" Matsumoto
ff5d1914ab
Remove unused local variable mid; ref #4936
2020-01-29 08:56:05 +09:00
Yukihiro "Matz" Matsumoto
e7e999414c
Merge pull request #4873 from dearblue/open-flags
...
Support bit flags for `IO.open`
2020-01-28 11:09:33 +09:00
David Siaw
36efc33650
include time.h for ios
2020-01-28 00:43:49 +08:00
Yukihiro "Matz" Matsumoto
364c47610f
Fixed backtrace message for top-level blocks; fix #4936
...
In top-level, `mid` is `NULL`. We used to ignore 'mid` update for `NULL`.
2020-01-27 14:34:54 +09:00
Yukihiro "Matz" Matsumoto
59464f3528
Merge pull request #4935 from mimaki/delete-duplicated-Array-delete_if
...
Delete duplicated `Array#delete_if`.
2020-01-21 13:40:30 +09:00
Hiroshi Mimaki
7d9a49efab
Delete duplicated Array#delete_if test.
2020-01-21 12:50:26 +09:00
Hiroshi Mimaki
e24b4a1e19
Delete duplicated Array#delete_if.
2020-01-21 11:35:53 +09:00
dearblue
25d9370f97
Fix take over file scope variable names with mirb command
...
Ref #4931
With this change, the `_` variable is defined after the `-r` switch.
2020-01-19 21:59:47 +09:00
dearblue
2bab6e197d
Fix take over file scope variables with mruby command
...
Resolve #4931
2020-01-19 21:52:37 +09:00
dearblue
893cc2780c
Add mrbc_cleanup_local_variables() with mrbc_context; ref #4931
...
Clean up defined local variables.
2020-01-19 21:42:09 +09:00
Yukihiro "Matz" Matsumoto
f7abda1437
Remove debug target from travis_config.rb.
2020-01-15 23:39:19 +09:00
Yukihiro "Matz" Matsumoto
ff57c0278f
Remove broken MRB_INT16 configuration option.
2020-01-15 21:32:00 +09:00
Yukihiro "Matz" Matsumoto
2742ded32f
Fixed wrong condition in #4926 fix.
2020-01-10 23:05:27 +09:00
Yukihiro "Matz" Matsumoto
70e5746896
Fixed wrong condition for copying arguments on stack; fix #4926
...
This bug was introduced in 694089f to address #4832
2020-01-10 17:58:15 +09:00
Yukihiro "Matz" Matsumoto
fc8fb41451
Small refactoring in hash_slice; ref #4926
2020-01-10 17:57:33 +09:00
Yukihiro "Matz" Matsumoto
dc86e35cac
Add MRB_WITHOUT_FLOAT guard to <math.h>.
2020-01-08 10:53:11 +09:00
Yukihiro "Matz" Matsumoto
2124b9b4c9
Fix buffer overflow in mrb_str_len_to_dbl.
...
Issue 19902: mruby:mruby_fuzzer: Stack-buffer-overflow in mrb_str_len_to_dbl
2020-01-08 10:52:24 +09:00
Yukihiro "Matz" Matsumoto
dbba0ca517
p->locals may be NULL when error occurs before the point.
...
This is reported by oss-fuzz:
Issue 19886: mruby:mruby_fuzzer: Potential-null-reference in setup_numparams
2020-01-08 01:18:53 +09:00
Yukihiro "Matz" Matsumoto
afad939173
Check memory boundary in mrb_str_len_to_dbl.
2020-01-07 08:58:06 +09:00
Yukihiro "Matz" Matsumoto
3e4e10ffb6
"0x10".to_f should be 0, not 16.0; fix #4924
2020-01-06 22:27:39 +09:00
Yukihiro "Matz" Matsumoto
c60bccaa94
Check remaining string length before access to avoid OOB access.
2020-01-06 22:25:47 +09:00
Yukihiro "Matz" Matsumoto
59756aef14
Need to preserve the original input string in mrb_str_len_to_dbl.
2020-01-06 22:25:05 +09:00
Yukihiro "Matz" Matsumoto
874797f36f
Merge branch 'dearblue-file-size-truncate'
2020-01-06 18:58:42 +09:00
Yukihiro "Matz" Matsumoto
b545f62aeb
Avoid Boxing/Unboxing of file descriptors; ref #4872
2020-01-06 18:57:43 +09:00
Yukihiro "Matz" Matsumoto
ca71eb7eef
Merge branch 'file-size-truncate' of https://github.com/dearblue/mruby into dearblue-file-size-truncate
2020-01-06 18:49:52 +09:00
Yukihiro "Matz" Matsumoto
ccf28775b8
Fix mrb_str_len_to_dbl to support Hexadecimal like 0x10.
2020-01-06 15:52:39 +09:00
Yukihiro "Matz" Matsumoto
2532e625ed
Refactor mrb_cstr_to_dbl; ref #4920
2020-01-06 15:52:39 +09:00
Yukihiro "Matz" Matsumoto
111045ecad
Avoid creating temporary objects in read_irep_record_1; close #4920
...
The basic idea of this change is from @dearblue.
Note: the arguments of `mrb_str_pool()` have changed, but the function
is provided for internal use (No `MRB_API`). So basically you don't have
to worry about the change.
2020-01-06 15:52:39 +09:00
Yukihiro "Matz" Matsumoto
282f907f1b
Merge pull request #4923 from dearblue/kwargs-block
...
Fix ainfo with keyword arguments; fix #4921
2020-01-05 20:59:18 +09:00
dearblue
541185ef14
Fix ainfo with keyword arguments; fix #4921
2020-01-05 16:48:34 +09:00
Yukihiro "Matz" Matsumoto
d82e91898d
Merge pull request #4917 from dearblue/va_end
...
Call `va_end()` before return
2020-01-02 09:26:15 +09:00
dearblue
00f5c92149
Call va_end() before return
...
The behavior when returning from a function without `va_end()` is
undefined.
2020-01-02 00:58:27 +09:00
Yukihiro "Matz" Matsumoto
9174b18f34
Rename mrb_num_args_error to mrb_argnum_error; ref #4863
2020-01-01 22:37:14 +09:00
Yukihiro "Matz" Matsumoto
b9c78c3fcc
Merge pull request #4863 from shuujii/add-mrb_num_args_error-for-wrong-number-of-arguments-error
...
Add `mrb_num_args_error()` for "wrong number of arguments" error
2020-01-01 22:34:22 +09:00
Yukihiro "Matz" Matsumoto
021f228f9d
Merge pull request #4919 from shuujii/revert-SHARED-string-is-not-required-when-sharing-POOL-string
...
Revert "SHARED string is not required when sharing POOL string" (75949836 )
2020-01-01 22:32:41 +09:00
KOBAYASHI Shuji
40b8490fa4
Revert "SHARED string is not required when sharing POOL string" ( 75949836)
...
Because literal pool may be released by GC.
#### Example:
```ruby
s1 = eval('"abcdefghijklmnopqrstuvwxyz01"')
GC.start
p s1 #=> "\x00\x00\x00\x00\x00\x00\x00\x90\x00\x00\x00\x00\x00\x00\x00\x90\x03\x00stuvwxyz01"
```
2020-01-01 19:16:05 +09:00
Yukihiro "Matz" Matsumoto
7247e4cf1b
Merge pull request #4918 from dearblue/sync-vars
...
Integrate `i` and `arg_i` in `mrb_get_args()`
2020-01-01 15:31:16 +09:00
Yukihiro "Matz" Matsumoto
b49bc17f48
Merge pull request #4916 from dearblue/stdint
...
Do not include `stdint.h` before `mruby.h`; ref #4750
2020-01-01 15:30:29 +09:00
dearblue
7ed26ead9b
Integrate i and arg_i in mrb_get_args()
...
The behavior of these two variables is the same.
2020-01-01 15:07:16 +09:00
dearblue
20d3882469
Do not include stdint.h before mruby.h; ref #4750
2020-01-01 14:17:11 +09:00
Yukihiro "Matz" Matsumoto
fd1cff7735
Fixed wrong usages of mrb_get_args in vformat.c.
2020-01-01 12:34:30 +09:00
Yukihiro "Matz" Matsumoto
943fbb2bea
Allow here-doc in the middle of Hash expressions; fix #4815
2020-01-01 12:21:17 +09:00
Yukihiro "Matz" Matsumoto
28c8e29c4d
Merge pull request #4915 from shuujii/silence-GCC-warning-in-time.c-on-Travis-CI
...
Silence GCC warning in `time.c` on Travis CI
2019-12-31 22:36:41 +09:00
KOBAYASHI Shuji
b493229a23
Silence GCC warning in time.c on Travis CI
...
Silence the following warnings:
```
/mruby/mrbgems/mruby-time/src/time.c:260:55: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
if ((MRB_INT_MAX > MRB_TIME_MAX && i > 0 && i > MRB_TIME_MAX) ||
^
```
2019-12-31 21:52:20 +09:00
Yukihiro "Matz" Matsumoto
83e502b847
Merge pull request #4914 from dearblue/fix-4869
...
Fix builds for modern mingw; fix #4869
2019-12-31 09:42:47 +09:00
dearblue
93d0e5d9fb
Fix builds for modern mingw; fix #4869
...
What I intended to fix in #4869 was a patch for an old MinGW.
Recent MinGWs have their own `mkstemp()` function.
I knew this after checking the patch #4903 .
2019-12-31 00:11:40 +09:00
Yukihiro "Matz" Matsumoto
5e519cdbb5
Merge pull request #4913 from shuujii/use-rake-instead-of-minirake-in-.gitlab-ci.yml
...
Use `rake` instead of `minirake` in `.gitlab-ci.yml`
2019-12-30 22:24:08 +09:00
KOBAYASHI Shuji
b96fa664b0
Use rake instead of minirake in .gitlab-ci.yml
...
There was an error in the `.gitlab-ci.yml` generation script, so it was also
fixed.
2019-12-30 17:46:22 +09:00
Yukihiro "Matz" Matsumoto
4327f36940
Merge pull request #4912 from shuujii/avoid-unneeded-directory-creation-during-rake--T-etc
...
Avoid unneeded directory creation during `rake -T`, etc.
2019-12-29 21:08:49 +09:00
KOBAYASHI Shuji
b97ebf2aeb
Avoid unneeded directory creation during rake -T, etc.
2019-12-29 17:46:55 +09:00
Yukihiro "Matz" Matsumoto
e9de5a7a5c
Merge pull request #4911 from shuujii/use-Rake.verbose-instead-of-verbose-and-pp_show
...
Use `Rake.verbose` instead of `$verbose` and `$pp_show` in build scripts
2019-12-28 17:43:54 +09:00
KOBAYASHI Shuji
bb98fd78c3
Use Rake.verbose instead of $verbose and $pp_show in build scripts
...
The incompatibility that the commands of `FileUtils` origin output verbose
by default due to the changes in d8a5163b and 26e6e75b is also fixed.
2019-12-28 17:03:37 +09:00
Yukihiro "Matz" Matsumoto
d2f34a8455
Merge pull request #4910 from shuujii/use-Rake-DSL-instead-of-commands-of-FileUtils
...
Use Rake DSL instead of commands of `FileUtils`
2019-12-27 18:35:19 +09:00
KOBAYASHI Shuji
26e6e75ba6
Use Rake DSL instead of commands of FileUtils
...
- Respect `--verbose(-v)` and `--dry-run(-n)` options.
- Silence warnings to keyword arguments on Ruby 2.7.
2019-12-27 16:49:32 +09:00
Yukihiro "Matz" Matsumoto
03244b52a0
Revert "Enable sanitizer in travis test"; ref #4864
...
`gcc` sanitizer does not work on some environment (namely my localhost).
Although it works on Travis, it is not convenient that tests fail on the
local host. We keep sanitizer tests on the local (using `clang`).
This reverts commit 9cde967321 .
2019-12-27 11:16:37 +09:00
Yukihiro "Matz" Matsumoto
d15e56dab0
Prohibit assignment to numbered parameters.
...
It is stricter than CRuby but confusing anyway.
2019-12-27 11:05:56 +09:00
Yukihiro "Matz" Matsumoto
ff16331754
Allow non numbered-parameter identifier like _1 outside of blocks.
...
But it causes warnings as CRuby does; fix #4892 fix #489
2019-12-27 11:05:56 +09:00
Yukihiro "Matz" Matsumoto
d8a5163b24
Support -v flag of rake; close #4887
...
The patch was originally written by @take-cheese. I have fixed the
conflict caused by `minirake` deletion - @matz.
2019-12-27 11:05:56 +09:00
Yukihiro "Matz" Matsumoto
ed8491cde6
Numbered parameters: usually linked list uses cdr for links.
2019-12-27 11:05:56 +09:00
Yukihiro "Matz" Matsumoto
7e6355975e
Prohibit numbered parameters as method arguments; fix #4892
...
As of CRuby2.7 it is only warned. `mruby` prohibits explicitly to
implement the future Ruby3 behavior.
2019-12-27 11:05:56 +09:00
KOBAYASHI Shuji
716102fff3
Enable MRB_GC_STRESS test on CI
...
The `debug` build target (`MRB_GC_STRESS` is enabled) on CI have been
compiled but not tested so far. However, I think testing with
`MRB_GC_STRESS` is effective (in fact, I found #4907 bug).
Therefore, I integrated `debug` and `full-debug` build targets to enable
`MRB_GC_STRESS` testing. Testing with `MRB_GC_STRESS` takes a little time,
but compiling takes more time, so CI execution time does not increase due to
decrease of build target.
2019-12-27 11:05:56 +09:00
Yukihiro "Matz" Matsumoto
ef6805f599
Merge pull request #4864 from take-cheeze/enable_sanitizer_travis
...
Enable sanitizer in travis test
2019-12-27 10:58:24 +09:00
Yukihiro "Matz" Matsumoto
d6b898685f
Merge pull request #4907 from shuujii/fix-poteltially-use-of-wrong-method-cache
...
Fix potentially use of wrong method cache
2019-12-25 23:23:00 +09:00
KOBAYASHI Shuji
0b2d54f4f1
Fix potentially use of wrong method cache
...
#### Example (with `MRB_METHOD_CACHE`)
```ruby
GC.start
c = Class.new
p c #=> #<Class:0x7fd6a180e790>
c.new #=> cache `c.new`
c = nil
GC.start #=> `c` is GCed
r = Range.dup
p r #=> #<Class:0x7fd6a180e790>
# [same pointer as `c`]
r.new(2, 3) #=> ArgumentError: 'initialize':
# wrong number of arguments (2 for 0)
# [`c.new` is called instead of `r.new`]
```
#### Cause
An entry of method cache is identified by class pointer and method
id. However, reusing memory after GC may create a class with the same
pointer as the cached class.
#### Treatment
Cleared method caches of the class when the class is GCed.
2019-12-25 21:31:10 +09:00
Yukihiro "Matz" Matsumoto
d4cbe6271c
Merge pull request #4906 from shuujii/refine-the-assertion-failure-message-in-mrdb-print-tests
...
Refine the assertion failure message in mrdb print tests
2019-12-25 10:58:04 +09:00
KOBAYASHI Shuji
f92867a59e
Refine the assertion failure message in mrdb print tests
...
#### Before this patch:
```console
Fail: mruby-bin-debugger(print) error (mrbgems: mruby-bin-debugger)
- Assertion[2]
Expected true to be false.
```
#### After this patch:
```console
Fail: mruby-bin-debugger(print) error (mrbgems: mruby-bin-debugger)
- Assertion[2]
Expected "$2 = undefined method 'bar' (NoMethodError)\n" to be start_with? "$2 = (eval):2: undefined method".
```
2019-12-24 23:20:20 +09:00
Yukihiro "Matz" Matsumoto
d062528653
Merge pull request #4905 from kishima/cygwin_compile
...
Add double quotes for cygwin filenames #4904
2019-12-24 14:23:24 +09:00
kishima
b63f1912df
add double quotes for cygwin filenames #4904
2019-12-23 23:36:59 +09:00
Yukihiro "Matz" Matsumoto
18248cfd00
Merge pull request #4901 from take-cheeze/gnu_cxx
...
Use GNU extension in C++ for cygwin
2019-12-23 21:32:26 +09:00
Yukihiro "Matz" Matsumoto
0f89a91607
Merge pull request #4902 from take-cheeze/native_crlf
...
Handle CR LF newline natively in lexer
2019-12-23 21:31:51 +09:00
take-cheeze
bb0aec1d94
Use binary mode in mrbc source code reading
2019-12-23 21:01:42 +09:00
take-cheeze
10e9f193ca
Handle CR LF newline natively in lexer
2019-12-23 21:01:11 +09:00
take-cheeze
38fdca82c6
Use GNU extension in C++ for cygwin
2019-12-23 20:58:43 +09:00
Yukihiro "Matz" Matsumoto
49301ed785
Merge pull request #4900 from shuujii/parallelize-compilation-only-on-Travis-CI
...
Parallelize compilation only on Travis CI
2019-12-23 20:37:25 +09:00
KOBAYASHI Shuji
212d12f269
Parallelize compilation only on Travis CI
...
Parallel execution of tests makes log difficult to see due to mixing.
2019-12-23 20:04:11 +09:00
Yukihiro "Matz" Matsumoto
a562a9aa93
Merge pull request #4899 from dearblue/build-git
...
Use `git checkout` instead of `git reset`
2019-12-22 22:31:33 +09:00
dearblue
f08d9b288d
Use git checkout instead of git reset
...
With this change, if the checkout fails, it will stop with an error.
The purpose is to avoid deleting working branch history when
developing gem.
2019-12-22 15:09:29 +09:00
dearblue
dc15c2838f
Display directory with git command
2019-12-22 14:26:00 +09:00
Yukihiro "Matz" Matsumoto
0bd3a67dea
Merge pull request #4898 from shuujii/refine-.travis.yml
...
Refine `.travis.yml`
2019-12-22 13:13:49 +09:00
Yukihiro "Matz" Matsumoto
572958ece3
Merge pull request #4896 from shuujii/fix-undefined-method-Pathname
...
Fix "undefined method `Pathname'"; fix #4895
2019-12-22 13:12:59 +09:00
Yukihiro "Matz" Matsumoto
fa90bcb9ab
Merge pull request #4897 from shuujii/use-exec-instead-of-system-in-minirake-for-exit-status
...
Use `exec` instead of `system` in `minirake` for exit status
2019-12-22 13:11:23 +09:00
KOBAYASHI Shuji
5974d53ab0
Refine .travis.yml
...
* Use `rake` instead of `minirake`.
* Remove `gperf` configuration.
Execution time seems to be reduced by about 15%.
2019-12-22 11:48:04 +09:00
KOBAYASHI Shuji
66349bcef1
Use exec instead of system in minirake for exit status
...
#### Before this patch:
```console
$ ./minirake --foo; echo $?
invalid option: --foo
0
```
#### After this patch:
```console
$ ./minirake --foo; echo $?
invalid option: --foo
1
```
2019-12-21 23:44:33 +09:00
KOBAYASHI Shuji
9f1167f7c9
Fix "undefined method `Pathname'"; fix #4895
2019-12-21 23:31:17 +09:00
Yukihiro "Matz" Matsumoto
089bb6acad
Merge pull request #4888 from dearblue/shellquote
...
Perform `shellquote` on referenced string
2019-12-21 22:46:27 +09:00
Yukihiro "Matz" Matsumoto
06e09fc7a9
Numbered parameters should not be available in the lambda bodies.
...
`mruby` does not warn like `CRuby` for cases like #4893 .
Fix #4890 , fix #4891 , fix #4893 .
2019-12-21 22:41:32 +09:00
Yukihiro "Matz" Matsumoto
2fe78a0c7c
Add emulating minirake that calls real rake.
2019-12-21 22:11:08 +09:00
Yukihiro "Matz" Matsumoto
de17f63b45
Abandon minirake. Use rake for compilation; fix #4884
2019-12-21 22:11:08 +09:00
Yukihiro "Matz" Matsumoto
fee3c1c242
Merge pull request #4889 from shuujii/_0-is-not-numbered-parameter
...
`_0` is not numbered parameter
2019-12-21 22:10:42 +09:00
KOBAYASHI Shuji
74f564b0bb
_0 is not numbered parameter
...
#### Before this patch:
```console
$ bin/mruby rb -e '_0=:l; p ->{_0}.()'
-e:1:13: _0 is not available
-e:1:13: syntax error, unexpected $end, expecting '}'
```
#### After this patch (same as Ruby):
```console
$ bin/mruby rb -e '_0=:l; p ->{_0}.()'
:l
```
2019-12-21 18:54:15 +09:00
dearblue
acef52c35e
Perform shellquote on referenced string
2019-12-21 17:25:22 +09:00
Yukihiro "Matz" Matsumoto
5cc595cb2a
Fix SEGV from numbered parameters outside of blocks; fix #4862
2019-12-21 01:24:56 +09:00
Yukihiro "Matz" Matsumoto
ef8621cb61
Merge pull request #4885 from shuujii/fix-potentially-crash-in-%n-of-mrb_vformat-with-64-bit-int
...
Fix potentially crash in `%n` of `mrb_vformat()` with 64-bit `int`
2019-12-21 01:18:09 +09:00
KOBAYASHI Shuji
e8299a89da
Fix potentially crash in %n of mrb_vformat() with 64-bit int
...
If `mrb_sym` is smaller than `int`, it is promoted to `int`.
2019-12-20 23:04:46 +09:00
Yukihiro "Matz" Matsumoto
19fa77ddbb
Merge pull request #4871 from dearblue/method-in-method
...
Avoid method in method
2019-12-20 19:29:48 +09:00
Yukihiro "Matz" Matsumoto
adf358363c
Merge pull request #4870 from dearblue/unnessesary-branch
...
Remove unnessesary branches
2019-12-20 19:24:45 +09:00
Yukihiro "Matz" Matsumoto
64e9f278b3
Merge pull request #4874 from dearblue/method-list
...
Fix for `#methods` to include methods that were `undef`
2019-12-20 19:23:13 +09:00
take-cheeze
9cde967321
Enable sanitizer in travis test
2019-12-19 14:21:49 +09:00
Yukihiro "Matz" Matsumoto
87809742f5
Fix mixed declarations in 429f6de
2019-12-19 10:00:33 +09:00
Yukihiro "Matz" Matsumoto
fcde80a4d0
Merge pull request #4881 from shuujii/fix-mruby-bin-debugger-tests
...
Fix `mruby-bin-debugger` tests; ref d2f2f9db
2019-12-19 09:51:31 +09:00
Yukihiro "Matz" Matsumoto
868ba8464e
Merge pull request #4882 from shuujii/simplify-print_backtrace
...
Simplify `print_backtrace()`
2019-12-19 09:50:22 +09:00
Yukihiro "Matz" Matsumoto
429f6defdd
Reimplement vformat tests; close #4868
...
Avoid creating `Data` object that refers `mruby` objects.
Also close #4622 ref #4613
2019-12-19 09:35:51 +09:00
Yukihiro "Matz" Matsumoto
7f0e1fc90b
Revert "%C value need not to be saved in TestVFormat::Native; close #4868 "
...
This reverts commit f507ff4842 .
It makes AppVeyor tests fail.
2019-12-19 00:07:08 +09:00
KOBAYASHI Shuji
6df6bd4ac7
Simplify print_backtrace()
2019-12-18 19:35:24 +09:00
KOBAYASHI Shuji
f0b8c9ec06
Fix mruby-bin-debugger tests; ref d2f2f9db
2019-12-18 19:34:11 +09:00
Yukihiro "Matz" Matsumoto
815e0c400a
Merge pull request #4875 from shuujii/remove-location-info-from-Exception-inspect
...
Remove location info from `Exception#inspect`
2019-12-18 01:55:23 +09:00
Yukihiro "Matz" Matsumoto
4c1667a5f6
Merge pull request #4879 from shuujii/refine-output-of-mrb_print_error
...
Refine output of `mrb_print_error()`
2019-12-18 01:54:28 +09:00
Yukihiro "Matz" Matsumoto
f507ff4842
%C value need not to be saved in TestVFormat::Native; close #4868
2019-12-18 01:40:11 +09:00
KOBAYASHI Shuji
29ecc3840a
Refine output of mrb_print_error()
...
The following improvements are made according to Ruby's behavior:
- Match location number to index.
- Remove duplicate most recent call output.
- Fix that first call is not output when array (unpacked) backtrace.
### Example
```ruby
def a; raise "error!" end
def b; a end
begin
b
rescue => e
e.backtrace if ARGV[0] == "unpack" # unpack backtrace
raise e
end
```
#### Before this patch:
```
$ bin/mruby example.rb unpack
trace (most recent call last):
[0] example.rb:2:in b
[1] example.rb:1:in a
example.rb:1: error! (RuntimeError)
```
#### After this patch:
```
$ bin/mruby example.rb unpack
trace (most recent call last):
[2] example.rb:4
[1] example.rb:2:in b
example.rb:1:in a: error! (RuntimeError)
```
2019-12-17 23:16:20 +09:00
Yukihiro "Matz" Matsumoto
8bc9a79e65
Merge pull request #4869 from dearblue/mingw32-io-test
...
Fix mruby-io test for mingw32
2019-12-17 00:49:01 +09:00
Yukihiro "Matz" Matsumoto
6a22fa7f47
Merge pull request #4878 from shuujii/remove-unneeded-null-checks-to-struct-backtrace_locationfilename
...
Remove unneeded null checks to `struct backtrace_location::filename`
2019-12-17 00:48:27 +09:00
KOBAYASHI Shuji
854c61c3ab
Remove unneeded null checks to struct backtrace_location::filename
...
`struct backtrace_location` is created only in `each_backtrace()`, and
the `filename` field will never be null (it will be `(unknown)` if null).
2019-12-16 18:57:53 +09:00
Yukihiro "Matz" Matsumoto
85b4ed623e
Merge pull request #4876 from dearblue/class-methods
...
Remove module only methods from class
2019-12-16 13:53:55 +09:00
Yukihiro "Matz" Matsumoto
fc5a9c2be2
Merge pull request #4877 from shuujii/drop-dependencies-from-mruby-complex-to-some-gems
...
Drop dependencies from `mruby-complex` to some gems
2019-12-16 13:51:48 +09:00
Yukihiro "Matz" Matsumoto
cc6d17423b
Merge pull request #4859 from dearblue/authors
...
Add "mruby developers" into some gems; Resolve #4709
2019-12-16 13:50:33 +09:00
KOBAYASHI Shuji
4bdb1eb5aa
Drop dependencies from mruby-complex to some gems
2019-12-15 22:51:07 +09:00
KOBAYASHI Shuji
d2f2f9db51
Remove location info from Exception#inspect
...
Because location info (file name and line number) is kept in the backtrace,
it should not be kept in the result of `inspect` (and the exception object
itself), I think.
### Example
```ruby
# example.rb
begin
raise "err"
rescue => e
p e
end
```
#### Before this patch:
```
$ bin/mruby example.rb
example.rb:2: err (RuntimeError)
```
#### After this patch:
```
$ bin/mruby example.rb
err (RuntimeError)
```
2019-12-14 22:29:37 +09:00
dearblue
cc52fa66e8
Remove module only methods from class
...
The `#prepend_features` and `#module_function` methods are not haves for
class objects.
2019-12-14 22:12:32 +09:00
dearblue
184ad732df
Fix for #methods to include methods that were undef
...
If `#methods` traverse the super class, it includes the methods that
were does `undef` in the subclass.
Before patched:
```terminal
% bin/mruby -e 'p Module.instance_methods - Class.instance_methods'
[]
```
After patched:
```terminal
% bin/mruby -e 'p Module.instance_methods - Class.instance_methods'
[:append_features, :extend_object]
```
2019-12-14 21:30:44 +09:00
dearblue
69619aeeb1
Support bit flags for IO.open
...
Note that this bit flags are not compatible with the native flags
defined in `#include <fcntl.h>`.
2019-12-14 15:19:13 +09:00
dearblue
6d9ac89f92
Implement File#size and File#truncate
2019-12-14 15:10:57 +09:00
dearblue
5b30f789e5
Avoid method in method
...
And rename `File.concat_path` to `File._concat_path`.
2019-12-14 15:04:56 +09:00
dearblue
c18a8c53e8
Remove unnessesary branches
2019-12-14 15:01:42 +09:00
dearblue
ec1ef925a9
Fix mruby-io test for mingw32
...
Need `mkstemp()` implements.
2019-12-14 14:57:10 +09:00
Yukihiro "Matz" Matsumoto
6c5ee8f79e
Merge pull request #4866 from shuujii/fix-arguments-check-to-Array-each
...
Fix arguments check to `Array#each`
2019-12-14 01:14:26 +09:00
KOBAYASHI Shuji
e18aa4d893
Fix arguments check to Array#each
...
#### Before this patch:
```
$ mruby -e '[].each(1){}' #=> no error
```
#### After this patch:
```
$ mruby -e '[].each(1){}' #=> ArgumentError: wrong number of arguments
```
2019-12-13 17:30:34 +09:00
take-cheeze
6af555b394
Align RIStruct data for rational
2019-12-13 04:41:43 +09:00
KOBAYASHI Shuji
81de1f159c
Add mrb_num_args_error() for "wrong number of arguments" error
...
To unify the style of messages.
2019-12-12 11:45:58 +09:00
Yukihiro "Matz" Matsumoto
9c4c82ed1c
Merge pull request #4861 from shuujii/fix-behavior-of-Kernel-Integer-to-numbers-ending-with-_-and-spaces
...
Fix behavior of `Kernel#Integer` to numbers ending with `_` and spaces
2019-12-12 09:26:14 +09:00
KOBAYASHI Shuji
7192429e83
Fix behavior of Kernel#Integer to numbers ending with _ and spaces
...
#### Before this patch:
```ruby
Integer("1_ ") #=> 1
```
#### After this patch (same as Ruby):
```ruby
Integer("1_ ") #=> ArgumentError
```
2019-12-11 16:40:39 +09:00
Yukihiro "Matz" Matsumoto
994da0fd73
Merge pull request #4860 from shuujii/fix-behavior-of-String-to_i-Kernel-Integer-to-numbers-starting-with-_
...
Fix behavior of `String#to_i`/`Kernel#Integer` to numbers starting with `_`
2019-12-10 23:00:17 +09:00
KOBAYASHI Shuji
bf431e77b8
Fix behavior of String#to_i/Kernel#Integer to numbers starting with _
...
#### Before this patch:
```ruby
Integer("_1") #=> 1
"_1".to_i #=> 1
```
#### After this patch (same as Ruby):
```ruby
Integer("_1") #=> ArgumentError
"_1".to_i #=> 0
```
2019-12-10 21:31:30 +09:00
Yukihiro "Matz" Matsumoto
543a9f84d1
Merge pull request #4858 from shuujii/fix-that-String-to_f-accepts-consecutive-_-as-a-numeric-expression
...
Fix that `String#to_f` accepts consecutive `_` as a numeric expression
2019-12-10 11:09:55 +09:00
dearblue
56de911b7a
Add "mruby developers" into some gems; Resolve #4709
...
It is writing side by side with the original authors.
2019-12-09 23:49:03 +09:00
KOBAYASHI Shuji
0893ee492c
Fix that String#to_f accepts consecutive _ as a numeric expression
...
Consecutive `_` is not allowed as a numeric expression:
1_2__3 #=> SyntaxError
Float("1_2__3") #=> ArgumentError
Integer("1_2__3") #=> ArgumentError
"1_2__3".to_i #=> 12
But `String#to_f` accept it, so I fixed the issue.
Before this patch:
"1_2__3".to_f #=> 123
After this patch:
"1_2__3".to_f #=> 12
2019-12-09 21:47:59 +09:00
Yukihiro "Matz" Matsumoto
694089fafe
Fix mrb_get_argv() to return array pointer every time; fix #4832
2019-12-09 20:50:41 +09:00
Yukihiro "Matz" Matsumoto
fb9e92e828
Warnings for numbered parameters in nested blocks.
2019-12-09 20:50:41 +09:00
Yukihiro "Matz" Matsumoto
f7a0f11c36
Parser refactoring on numbered parameters.
...
Now identifiers like `_1abc` are allowed.
2019-12-09 20:50:41 +09:00
Yukihiro "Matz" Matsumoto
0011652a28
Support new numbered parameter syntax _1 instead of @1.
2019-12-09 20:50:41 +09:00
Ukrainskiy Sergey
72d57ad094
Implement numbered parameters
2019-12-09 20:50:41 +09:00
Yukihiro "Matz" Matsumoto
8267993988
Merge pull request #4855 from dearblue/kwargs-uninit
...
Fix keyword arguments not be obtained with `mrb_get_args()`; Fix #4754
2019-12-09 17:31:53 +09:00
Yukihiro "Matz" Matsumoto
ef644120e4
Merge pull request #4856 from shuujii/fix-the-error-message-of-Kernel-Float
...
Fix the error message of `Kernel#Float`
2019-12-08 21:31:14 +09:00
KOBAYASHI Shuji
cf6ae0de6a
Fix the error message of Kernel#Float
...
#### Before this patch:
```
$ bin/mruby -e 'Float("1_a")'
-e:1: invalid string for float(a) (ArgumentError)
```
#### After this patch:
```
$ bin/mruby -e 'Float("1_a")'
-e:1: invalid string for float("1_a") (ArgumentError)
```
2019-12-08 18:31:41 +09:00
Yukihiro "Matz" Matsumoto
2456d3abc0
Merge pull request #4854 from shuujii/add-tests-to-Math
...
Add tests to `Math`
2019-12-08 11:24:29 +09:00
dearblue
1ca4fdc4c7
Fix keyword arguments not be obtained with mrb_get_args(); Fix #4754
...
If ":" is after "|" and there is no "?" or "*", the keyword argument
could not be obtained and it was not initialized with `undef`.
For example: "|oo:"
2019-12-07 22:48:58 +09:00
KOBAYASHI Shuji
d908a73b04
Add tests to Math
2019-12-07 20:50:56 +09:00
Yukihiro "Matz" Matsumoto
6e5c861fff
Merge pull request #4852 from shuujii/auto-detect-MRB_TIME_T_UINT
...
Auto detect `MRB_TIME_T_UINT`
2019-12-06 08:00:53 +09:00
KOBAYASHI Shuji
e6033e00fe
Auto detect MRB_TIME_T_UINT
2019-12-05 21:40:15 +09:00
Yukihiro "Matz" Matsumoto
52318b3359
Merge pull request #4851 from shuujii/refine-mrb_alloca
...
Refine `mrb_alloca()`
2019-12-05 09:40:44 +09:00
KOBAYASHI Shuji
a030446a94
Refine mrb_alloca()
...
* The allocated memory is guaranteed to be aligned for any data type (it was
not guaranteed when string type is embed).
* Make allocation size exactly specified size (does not allocate space for a
null byte).
2019-12-04 22:21:00 +09:00
Yukihiro "Matz" Matsumoto
bc22991ac3
Merge pull request #4850 from shuujii/silence-Clang-warning-with-MRB_INT64-and-MRB_32BIT-in-time.c
...
Silence Clang warning with `MRB_INT64` and `MRB_32BIT` in `time.c`
2019-12-04 07:10:17 +09:00
KOBAYASHI Shuji
ea1911d23f
Silence Clang warning with MRB_INT64 and MRB_32BIT in time.c
...
Silence the following warnings:
```
/mruby/mrbgems/mruby-time/src/time.c:871:15: warning: result of comparison of constant 9223372036854775807 with expression of type 'time_t' (aka 'long') is always false [-Wtautological-constant-out-of-range-compare]
if (tm->sec > MRB_INT_MAX || tm->sec < MRB_INT_MIN) {
~~~~~~~ ^ ~~~~~~~~~~~
/mruby/mrbgems/mruby-time/src/time.c:871:40: warning: result of comparison of constant -9223372036854775808 with expression of type 'time_t' (aka 'long') is always false [-Wtautological-constant-out-of-range-compare]
if (tm->sec > MRB_INT_MAX || tm->sec < MRB_INT_MIN) {
~~~~~~~ ^ ~~~~~~~~~~~
/mruby/mrbgems/mruby-time/src/time.c:887:16: warning: result of comparison of constant 9223372036854775807 with expression of type 'time_t' (aka 'long') is always false [-Wtautological-constant-out-of-range-compare]
if (tm->usec > MRB_INT_MAX || tm->usec < MRB_INT_MIN) {
~~~~~~~~ ^ ~~~~~~~~~~~
/mruby/mrbgems/mruby-time/src/time.c:887:42: warning: result of comparison of constant -9223372036854775808 with expression of type 'time_t' (aka 'long') is always false [-Wtautological-constant-out-of-range-compare]
if (tm->usec > MRB_INT_MAX || tm->usec < MRB_INT_MIN) {
~~~~~~~~ ^ ~~~~~~~~~~~
```
2019-12-03 22:50:50 +09:00
Yukihiro "Matz" Matsumoto
54f2ed6afd
Merge pull request #4849 from shuujii/silence-Clang-warning-with-MRB_INT32-and-MRB_64BIT-in-time.c
...
Silence Clang warning with `MRB_INT32` and `MRB_64BIT` in `time.c`
2019-12-03 22:35:44 +09:00
KOBAYASHI Shuji
6973539005
Silence Clang warning with MRB_INT32 and MRB_64BIT in time.c
...
Silence the following warning:
```
/mruby/mrbgems/mruby-time/src/time.c:258:60: warning: result of comparison of constant -9223372036854775808 with expression of type 'mrb_int' (aka 'int') is always false [-Wtautological-constant-out-of-range-compare]
if ((mrb_time_int)i > MRB_TIME_MAX || MRB_TIME_MIN > i) {
~~~~~~~~~~~~ ^ ~
```
2019-12-02 20:00:36 +09:00
Yukihiro "Matz" Matsumoto
3c67872805
Merge pull request #4848 from shuujii/fix-MRB_FIXNUM_SHIFT-with-MRB_WORD_BOXING-MRB_INT32-and-MRB_64BIT
...
Fix `MRB_FIXNUM_SHIFT` with `MRB_WORD_BOXING`, `MRB_INT32` and `MRB_64BIT`
2019-12-02 13:42:16 +09:00
KOBAYASHI Shuji
a53f28275e
Fix MRB_FIXNUM_SHIFT with MRB_WORD_BOXING, MRB_INT32 and MRB_64BIT
...
### Example
```ruby
# example.rb
max32 = 2**30 - 1 + 2**30
min32 = -max32-1
[max32, max32+1, min32, min32-1].each{|n| p [n, n.class]}
```
#### Before this patch:
```
$ bin/mruby example.rb
[2147483647, Float]
[2147483648, Float]
[-2147483648, Float]
[-2147483649, Float]
```
#### After this patch:
```
$ bin/mruby example.rb
[2147483647, Fixnum]
[2147483648, Float]
[-2147483648, Fixnum]
[-2147483649, Float]
```
2019-12-01 22:09:38 +09:00
Yukihiro "Matz" Matsumoto
ef95a9fa93
Use a string as a common regexp representation; ref #4847
2019-11-30 21:10:36 +09:00
Yukihiro "Matz" Matsumoto
25b5b79cc3
Merge pull request #4847 from shuujii/quit-mruby-v-immediately-if-no-program-is-given
...
Quit `mruby -v` immediately if no program is given for Ruby compatibility
2019-11-30 21:08:54 +09:00
KOBAYASHI Shuji
49653b81ea
Quit mruby -v immediately if no program is given for Ruby compatibility
2019-11-30 19:52:22 +09:00
Yukihiro "Matz" Matsumoto
5eb08a0d1a
Merge pull request #4846 from shuujii/fix-mruby---verbose-regression-by--4827
...
Fix `mruby --verbose` (regression by #4827 )
2019-11-29 21:53:12 +09:00
KOBAYASHI Shuji
df437eebcc
Fix mruby --verbose (regression by #4827 )
...
#### Before this patch:
```
$ bin/mruby --verbose -e 'p 1'
bin/mruby: Cannot open program file: --verbose
```
#### After this patch:
```
$ bin/mruby --verbose -e 'p 1'
00001 NODE_SCOPE:
(snip)
irep 0x7fe97041df30 nregs=4 nlocals=1 pools=0 syms=1 reps=0 iseq=11
file: -e
1 000 OP_LOADSELF R1
(snip)
1
```
2019-11-29 19:02:04 +09:00
Yukihiro "Matz" Matsumoto
75e96c6927
Merge pull request #4845 from shuujii/change-URL-of-mruby.org
...
Change the URL of `mruby.org` [ci skip]
2019-11-29 09:22:26 +09:00
KOBAYASHI Shuji
1680f2c95e
Change the URL of mruby.org [ci skip]
...
- `http` -> `https`
- Remove `www.`
2019-11-28 17:54:52 +09:00
Yukihiro "Matz" Matsumoto
17ec885270
Merge pull request #4843 from shuujii/support-end-of-options-to-mruby-command
...
Support `--` (end of options) to `mruby` command
2019-11-27 22:41:36 +09:00
KOBAYASHI Shuji
f4b528e07a
Support -- (end of options) to mruby command
...
#### Before this patch:
```
$ bin/mruby -e 'p ARGV' -- -x
bin/mruby: invalid option -- (-h will show valid options)
```
#### After this patch:
```
$ bin/mruby -e 'p ARGV' -- -x
["-x"]
```
2019-11-27 19:51:43 +09:00
Yukihiro "Matz" Matsumoto
190649e591
Merge pull request #4837 from shuujii/add-assertion-to-RVALUE-size
...
Add assertion to `RVALUE` size
2019-11-27 09:47:35 +09:00
Yukihiro "Matz" Matsumoto
ec957ec5ee
Merge pull request #4838 from shuujii/rename-BITSIZE-to-BIT-and-BIT-to-BIT_POS-for-consistency
...
Rename `BITSIZE` to `BIT` and `BIT` to `BIT_POS` for consistency
2019-11-26 06:31:48 +09:00
Yukihiro "Matz" Matsumoto
ff15a586a0
Merge pull request #4841 from shuujii/fix-ARGV-value-in-mruby-command-regression-by-4827
...
Fix `ARGV` value in `mruby` command (regression by #4827 )
2019-11-25 23:19:17 +09:00
KOBAYASHI Shuji
f9bd414350
Fix ARGV value in mruby command (regression by #4827 )
...
#### Before this patch:
```
$ bin/mruby -e 'p ARGV' a b
["bin/mruby", "-e", "p ARGV", "a", "b"]
```
#### After this patch:
```
$ bin/mruby -e 'p ARGV' a b
["a", "b"]
```
2019-11-25 21:56:27 +09:00
Yukihiro "Matz" Matsumoto
a89d15cdde
Merge pull request #4827 from shuujii/support-short-options-concatenation-to-mruby-command
...
Support short options concatenation to `mruby` command
2019-11-25 09:49:28 +09:00
Yukihiro "Matz" Matsumoto
1d1c81258e
Merge pull request #4840 from shuujii/remove-unused-methods-of-MRubyIOTestUtil
...
Remove unused methods of `MRubyIOTestUtil`
2019-11-24 23:07:15 +09:00
KOBAYASHI Shuji
ce553fa834
Remove unused methods of MRubyIOTestUtil
2019-11-24 21:40:22 +09:00
Yukihiro "Matz" Matsumoto
b3e6a993a9
Merge pull request #4834 from shuujii/use-proper-PEEK-macro-for-OP_EPUSH-in-patch_irep
...
Use proper `PEEK` macro for `OP_EPUSH` in `patch_irep`; fix #4833
2019-11-24 07:52:17 +09:00
KOBAYASHI Shuji
375c1ebc41
Rename BITSIZE to BIT and BIT to BIT_POS for consistency
...
The bit width terminology is unified to `BIT` according to `MRB_INT_BIT`
and `CHAR_BIT`. Also the bit position terminology is unified to `BIT_POS`.
2019-11-23 20:40:23 +09:00
KOBAYASHI Shuji
6cf99d12ac
Add assertion to RVALUE size
2019-11-23 17:36:46 +09:00
Yukihiro "Matz" Matsumoto
56f9106d94
Merge pull request #4836 from shuujii/allow-true-false-argument-to-Kernel-exit
...
Allow `true`/`false` argument to `Kernel#exit`
2019-11-23 06:25:02 +09:00
Yukihiro "Matz" Matsumoto
8bcf44669c
Merge pull request #4835 from shuujii/introduce-mrb_ssize-type-for-buffer-size-on-memory
...
Introduce `mrb_ssize` type for buffer size on memory; ref #4483
2019-11-22 19:40:19 +09:00
KOBAYASHI Shuji
d81e4d71c1
Allow true/false argument to Kernel#exit
2019-11-22 18:29:38 +09:00
KOBAYASHI Shuji
a2df247063
Introduce mrb_ssize type for buffer size on memory; ref #4483
...
Previously, `mrb_int` was used as the type that represents the buffer size
on memory, but the sizes of `RString` and `RArray` exceed 6 words when
`MRB_INT64` is enabled on 32-bit CPU.
I don't think it is necessary to be able to represent the buffer size on
memory that exceeds the virtual address space. Therefore, for this purpose,
introduce `mrb_ssize` which doesn't exceed the sizes of `mrb_int` and
pointer.
I think all `mrb_int` used for this purpose should be changed to
`mrb_ssize`, but currently only the members of the structures (`RString`,
`mrb_shared_string`, `RArray` and `mrb_shared_array`) are changed.
2019-11-21 19:34:02 +09:00
KOBAYASHI Shuji
8596edba09
Use proper PEEK macro for OP_EPUSH in patch_irep; fix #4833
2019-11-20 16:00:58 +09:00
Yukihiro "Matz" Matsumoto
1bb1df19d8
Merge pull request #4831 from shuujii/always-enable-the-rational-and-complex-literals
...
Always enable the rational and complex literals
2019-11-19 23:32:16 +09:00
Yukihiro "Matz" Matsumoto
125c660974
Merge pull request #4830 from mruby/stable
...
Release `mruby 2.1.0`.
2019-11-19 23:30:37 +09:00
KOBAYASHI Shuji
351c9c80e7
Always enable the rational and complex literals
...
I think they can always be enabled because the regular expression literal is
always enabled.
2019-11-19 21:10:59 +09:00
Hiroshi Mimaki
57a56ddaa2
Release mruby 2.1.0.
2019-11-19 18:58:11 +09:00
Yukihiro "Matz" Matsumoto
79e73dd86a
Merge pull request #4828 from shuujii/refactor-mrb_string_value_cstr
...
Refactor `mrb_string_value_cstr`
2019-11-19 02:52:39 +09:00
KOBAYASHI Shuji
3241a7e5a8
Refactor mrb_string_value_cstr
...
- Keep `MRB_STR_ASCII` flag.
- Avoid a string object creation.
2019-11-19 01:07:58 +09:00
Yukihiro "Matz" Matsumoto
bd87799673
Merge pull request #4825 from shuujii/fix-argument-specs-to-Kernel
...
Fix argument specs to `Kernel`
2019-11-18 08:15:58 +09:00
KOBAYASHI Shuji
9de7130a9a
Support short options concatenation to mruby command
...
#### Before this patch:
```
$ bin/mruby -ce 1
bin/mruby: Cannot open program file: 1
```
#### After this patch:
```
$ bin/mruby -ce 1
Syntax OK
```
2019-11-17 16:38:50 +09:00
Yukihiro "Matz" Matsumoto
74310f41d7
Merge pull request #4826 from shuujii/revert-Implement-Ruby2.7-frozen-strings-from-Symbol-to_s
...
Revert "Implement Ruby2.7's frozen strings from `Symbol#to_s`"
2019-11-17 04:38:46 +09:00
KOBAYASHI Shuji
a367373fe3
Revert "Implement Ruby2.7's frozen strings from Symbol#to_s"
...
This feature was reverted from Ruby 2.7.
2019-11-16 19:47:31 +09:00
KOBAYASHI Shuji
04baaab311
Fix argument specs to Kernel
2019-11-15 19:07:42 +09:00
Yukihiro "Matz" Matsumoto
c9f156ef0c
Merge pull request #4823 from shuujii/fix-here-document-with-EOF
...
Fix here document with EOF
2019-11-15 08:16:33 +09:00
KOBAYASHI Shuji
455930fbc4
Fix here document with EOF
...
#### Before this patch:
```
$ bin/mruby -e 'p <<EOS
1
EOS'
-e:4:0: can't find heredoc delimiter "EOS" anywhere before EOF
-e:4:0: syntax error, unexpected $end, expecting tHEREDOC_END or tHD_STRING_PART or tHD_STRING_MID
```
#### After this patch (same as Ruby):
```
$ bin/mruby -e 'p <<EOS
1
EOS'
"1\n"
```
2019-11-14 20:28:36 +09:00
Yukihiro "Matz" Matsumoto
db43738397
Merge pull request #4821 from shuujii/use-mrb_intern_lit-if-possible-in-parse.y
...
Use `mrb_intern_lit` if possible in `parse.y`
2019-11-13 21:08:47 +09:00
Yukihiro "Matz" Matsumoto
079aff1779
Revert a76dc04 to resolve #4820
2019-11-13 21:06:26 +09:00
KOBAYASHI Shuji
29133b2fe2
Use mrb_intern_lit if possible in parse.y
2019-11-13 19:20:47 +09:00
Yukihiro "Matz" Matsumoto
37c8cbe76b
Merge pull request #4819 from shuujii/use-intern-instead-of-intern_cstr-if-possible-in-parse.y
...
Use `intern` instead of `intern_cstr` if possible in `parse.y`
2019-11-13 08:10:50 +09:00
KOBAYASHI Shuji
ac917983c5
Use intern instead of intern_cstr if possible in parse.y
2019-11-12 21:04:12 +09:00
Yukihiro "Matz" Matsumoto
1259564c01
Merge pull request #4818 from shuujii/fix-argument-specs-to-Integer
...
Fix argument specs to `Integer`
2019-11-12 08:33:21 +09:00
KOBAYASHI Shuji
edbc6d8ab5
Fix argument specs to Integer
2019-11-11 20:48:52 +09:00
Yukihiro "Matz" Matsumoto
c268e36e44
Require Regexp.escape before interpolating build_dir; fix #4817
2019-11-11 18:13:24 +09:00
Yukihiro "Matz" Matsumoto
067c11f65d
Merge pull request #4816 from shuujii/defer-getting-caller_dir-until-needed-in-MRubyLoadGems-gem
...
Defer getting `caller_dir` until needed in `MRuby::LoadGems#gem`
2019-11-11 07:33:31 +09:00
KOBAYASHI Shuji
b5946822af
Defer getting caller_dir until needed in MRuby::LoadGems#gem
2019-11-10 19:40:07 +09:00
Yukihiro "Matz" Matsumoto
cc54257de5
Merge pull request #4814 from shuujii/fix-argument-specs-to-IO
...
Fix argument specs to `IO`
2019-11-10 08:29:55 +09:00
KOBAYASHI Shuji
a72917541f
Fix argument specs to IO
2019-11-09 22:08:00 +09:00
Yukihiro "Matz" Matsumoto
e50344b5da
Avoid unnecessary Symbol#to_s call; fix #4812
2019-11-08 23:38:40 +09:00
Yukihiro "Matz" Matsumoto
1a0c799898
Merge pull request #4813 from shuujii/remove-unneeded-dependency-from-mruby-hash-ext
...
Remove unneeded dependency from `mruby-hash-ext`
2019-11-08 23:37:40 +09:00
KOBAYASHI Shuji
ac213907d7
Remove unneeded dependency from mruby-hash-ext
2019-11-08 20:40:20 +09:00
Yukihiro "Matz" Matsumoto
7750c61e29
Fixed a bug in keyword arguments in block parameters; fix #4810
...
This is caused by incomplete fix in #4746
2019-11-08 14:06:46 +09:00
Yukihiro "Matz" Matsumoto
8ff001ef30
Avoid crashing of Array#unshift; fix #4808
...
On cases like `a.unshift(*a)`.
2019-11-08 10:57:18 +09:00
Yukihiro "Matz" Matsumoto
962776fe25
Allow here-doc before closing parentheses; ref #4796
2019-11-08 09:50:48 +09:00
Yukihiro "Matz" Matsumoto
0f64cb421e
Merge pull request #4811 from shuujii/clear-MRB_STR_SHARED-flag-in-mrb_str_modify_keep_ascii
...
Clear `MRB_STR_SHARED` flag in `mrb_str_modify_keep_ascii`; close #4807
2019-11-08 08:12:23 +09:00
KOBAYASHI Shuji
45aa5081e4
Clear MRB_STR_SHARED flag in mrb_str_modify_keep_ascii; close #4807
2019-11-07 22:16:59 +09:00
Yukihiro "Matz" Matsumoto
c10e191ac7
Merge pull request #4806 from shuujii/drop-test-dependency-from-mruby-hash-ext-to-mruby-enumerator
...
Drop test dependency from `mruby-hash-ext` to `mruby-enumerator`
2019-11-06 21:10:21 +09:00
KOBAYASHI Shuji
ea2424d36d
Drop test dependency from mruby-hash-ext to mruby-enumerator
2019-11-06 18:57:35 +09:00
Yukihiro "Matz" Matsumoto
1cc0180a81
Merge pull request #4805 from shuujii/remove-test-that-depend-on-mruby-enumerator-from-mruby-array-ext
...
Remove test that depend on `mruby-enumerator` from `mruby-array-ext`
2019-11-05 21:35:06 +09:00
KOBAYASHI Shuji
b5bb981959
Remove test that depend on mruby-enumerator from mruby-array-ext
...
`Object.const_defined?(:Enumerator)` is always false because
`mruby-enumerator` is not specified in `test_dependency`. I don't
think this test is necessary.
2019-11-05 19:45:04 +09:00
Yukihiro "Matz" Matsumoto
ee86721ef9
Merge pull request #4804 from shuujii/avoid-using-C++-style-comments-in-parse.y
...
Avoid using C++ style comments (`//`) in `parse.y` [ci skip]
2019-11-05 17:08:53 +09:00
KOBAYASHI Shuji
4841754aba
Avoid using C++ style comments (//) in parse.y [ci skip]
2019-11-04 22:12:59 +09:00
Yukihiro "Matz" Matsumoto
2166cc2e80
Merge pull request #4803 from shuujii/remove-unused-enum-in-mrb_cstr_to_dbl
...
Remove unused enum in `mrb_cstr_to_dbl`
2019-11-03 22:31:35 +09:00
KOBAYASHI Shuji
bf0b591b2f
Remove unused enum in mrb_cstr_to_dbl
2019-11-03 19:39:25 +09:00
Yukihiro "Matz" Matsumoto
5812d05b71
Merge pull request #4802 from shuujii/fix-argument-specs-to-Hash
...
Fix argument specs to `Hash`
2019-11-02 19:40:48 +09:00
KOBAYASHI Shuji
7a06e49008
Fix argument specs to Hash
2019-11-02 17:37:43 +09:00
Yukihiro "Matz" Matsumoto
8cbee9695b
Merge pull request #4801 from shuujii/fix-argument-specs-to-File
...
Fix argument specs to `File`
2019-11-02 08:40:22 +09:00
KOBAYASHI Shuji
7e03f47370
Fix argument specs to File
2019-11-01 22:02:18 +09:00
KOBAYASHI Shuji
ad6c58972c
Set MRB_STR_ASCII flag to some stringize methods
...
- `Fixnum#to_s`, `Fixnum#inspect`
- `Float#to_s`, `Float#inspect`
- `NilClass#to_s`, `NilClass#inspect`
- `FalseClass#to_s`, `FalseClass#inspect`
- `TrueClass#to_s`, `TrueClass#inspect`
- `Time#to_s`, `Time#inspect`
2019-10-31 22:04:56 +09:00
Yukihiro "Matz" Matsumoto
ad7f9b3542
Merge pull request #4799 from shuujii/fix-argument-specs-to-Fiber
...
Fix argument specs to `Fiber`
2019-10-31 11:29:19 +09:00
KOBAYASHI Shuji
e4d078b520
Fix argument specs to Fiber
2019-10-30 23:00:22 +09:00
Yukihiro "Matz" Matsumoto
1dc0da8218
Fix here-doc inside parens and brackets; fix #4796
2019-10-30 10:05:28 +09:00
mimaki
a9e27933a9
Fix file/directory name parameter for git command.
2019-10-30 09:32:24 +09:00
Yukihiro "Matz" Matsumoto
fdc0219db5
Merge pull request #4798 from mimaki/fix-git-params-for-windows
...
Fix `git` command parameter for Windows.
2019-10-30 00:40:58 +09:00
Yukihiro "Matz" Matsumoto
ecdc6c6507
Merge pull request #4797 from shuujii/remove-unneeded-Array-creation-in-Struct-_inspect
...
Remove unneeded `Array` creation in `Struct#_inspect`
2019-10-30 00:39:44 +09:00
mimaki
f68212cc7a
Fix file/directory name parameter for git command.
2019-10-29 20:56:12 +09:00
KOBAYASHI Shuji
e23840a3fc
Remove unneeded Array creation in Struct#_inspect
2019-10-29 20:55:28 +09:00
Yukihiro "Matz" Matsumoto
34f68d0104
Merge pull request #4795 from shuujii/remove-documents-about-Regexp-argument-from-string
...
Remove documents about `Regexp` argument from `String#{[],[]=}` [ci skip]
2019-10-28 22:24:04 +09:00
KOBAYASHI Shuji
23cb78a0ff
Remove documents about Regexp argument from String#{[],[]=} [ci skip]
2019-10-28 18:37:40 +09:00
Yukihiro "Matz" Matsumoto
552bd9daff
Merge pull request #4792 from shuujii/refine-String-split-document
...
Refine `String#split` document
2019-10-27 22:52:50 +09:00
KOBAYASHI Shuji
799ad0e1c7
Refine String#split document
2019-10-27 19:14:12 +09:00
Yukihiro "Matz" Matsumoto
8710a22c31
Merge pull request #4791 from shuujii/optimize-chars2bytes-with-MRB_UTF8_STRING-to-ASCII-only-string
...
Optimize `chars2bytes` with `MRB_UTF8_STRING` to ASCII only string
2019-10-26 23:09:30 +09:00
KOBAYASHI Shuji
db0a4d9045
Optimize chars2bytes with MRB_UTF8_STRING to ASCII only string
...
### Benchmark (with `MRB_UTF8_STRING`)
```
$ mruby -e '
COUNT = 150000
SIZE = 10000
strs = Array.new(COUNT) do
s = "a" * SIZE
s.size # set `MRB_STR_ASCII` flag
s
end
i = 0
t = Time.now
while i < COUNT
strs[i][-2..-1] = ""
i += 1
end
printf "%.2f sec\n", Time.now - t
'
1.10 sec # before
0.07 sec # after
```
2019-10-26 22:19:04 +09:00
Yukihiro "Matz" Matsumoto
9c99451607
Merge pull request #4790 from shuujii/squeeze-redundant-spaces
...
Squeeze redundant spaces in `test/t/numeric.rb` [ci skip]
2019-10-25 22:14:18 +09:00
KOBAYASHI Shuji
4b14c4633a
Squeeze redundant spaces in test/t/numeric.rb [ci skip]
2019-10-25 19:39:31 +09:00
Yukihiro "Matz" Matsumoto
39a0a25f20
Merge pull request #4788 from shuujii/fix-argument-specs-to-Exception
...
Fix argument specs to `Exception`
2019-10-25 08:21:53 +09:00
KOBAYASHI Shuji
85e34f1ca4
Fix argument specs to Exception
2019-10-24 22:24:40 +09:00
Yukihiro "Matz" Matsumoto
b4262972dc
Merge pull request #4787 from shuujii/optimize-str_subseq-with-MRB_UTF8_STRING-to-ASCII-only-string
...
Optimize `str_subseq` with `MRB_UTF8_STRING` to ASCII only string
2019-10-23 20:12:55 +09:00
KOBAYASHI Shuji
06bd4ffdaf
Optimize str_subseq with MRB_UTF8_STRING to ASCII only string
...
### Benchmark (with `MRB_UTF8_STRING`)
```ruby
# benchmark.rb
COUNT = 300000
SIZE = 10000
s = "a" * SIZE
s.size # set `MRB_STR_ASCII` flag
i = 0
while i < COUNT
s[-1]
i += 1
end
```
#### Before this patch:
```
$ time mruby benchmark.rb
2.06 real 2.05 user 0.00 sys
```
#### After this patch:
```
$ time mruby benchmark.rb
0.05 real 0.04 user 0.00 sys
```
2019-10-23 19:03:39 +09:00
Hiroshi Mimaki
4eb8fca140
Merge branch 'master' into stable
2019-10-23 15:44:21 +09:00
Yukihiro "Matz" Matsumoto
fa85f91e0e
Add type cast to avoid an error from int and enum mixture; fix #4786
2019-10-23 14:47:55 +09:00
Yukihiro "Matz" Matsumoto
9540a8309c
Remove unnecessary mrb_funcall().
2019-10-23 14:47:55 +09:00
Yukihiro "Matz" Matsumoto
11184e9186
Remove unnecessary mrb_string_p() check.
2019-10-23 14:47:55 +09:00
Yukihiro "Matz" Matsumoto
2f0bf1e110
Merge pull request #4785 from shuujii/fix-incorrect-MRB_STR_ASCII-flag-update-in-mrb_str_dump
...
Fix incorrect `MRB_STR_ASCII` flag update in `mrb_str_dump`
2019-10-23 09:55:47 +09:00
KOBAYASHI Shuji
41c43234a7
Fix incorrect MRB_STR_ASCII flag update in mrb_str_dump
...
### Example (with `MRB_UTF8_STRING`)
```ruby
s = "\u3042"
p s.size
s.dump
p s.size
```
#### Before this patch:
```
1
3
```
#### After this patch:
```
1
1
```
2019-10-22 21:56:40 +09:00
Yukihiro "Matz" Matsumoto
1aacde20fa
Merge pull request #4784 from shuujii/remove-Kernel-getc
...
Remove `Kernel#getc`
2019-10-21 21:27:02 +09:00
KOBAYASHI Shuji
941b99955a
Remove Kernel#getc
...
`Kernel#getc` has been removed since Ruby 1.9 and is not defined in ISO.
2019-10-21 18:50:52 +09:00
Yukihiro "Matz" Matsumoto
0701cc493c
Merge pull request #4783 from shuujii/use-mrb_str_cat_str-instead-of-mrb_str_concat-if-possible
...
Use `mrb_str_cat_str` instead of `mrb_str_concat` if possible
2019-10-20 20:24:10 +09:00
KOBAYASHI Shuji
7047c52d7b
Use mrb_str_cat_str instead of mrb_str_concat if possible
2019-10-20 16:26:10 +09:00
Yukihiro "Matz" Matsumoto
fddefeb7ee
Merge pull request #4781 from shuujii/fix-that-Module-to_s-may-return-frozen-string
...
Fix that `Module#to_s` may return frozen string; ref 08eafe2
2019-10-19 17:55:26 +09:00
KOBAYASHI Shuji
347729a7c0
Fix that Module#to_s may return frozen string; ref 08eafe2
2019-10-19 17:27:17 +09:00
Yukihiro "Matz" Matsumoto
7957f75bd8
Merge pull request #4779 from take-cheeze/print_mrbc_cmd
...
Print mrbc command on verbose mode
2019-10-19 11:12:03 +09:00
take-cheeze
4877dbf2a9
Print mrbc command on verbose mode
2019-10-19 01:42:34 +09:00