mimaki
b4f36b1ad9
Merge branch 'master' into stable
2023-01-18 10:45:35 +09:00
Yukihiro "Matz" Matsumoto
3a7e138c05
mruby/internal.h: add mrb_env_new to the internal function header
2023-01-18 10:37:48 +09:00
Yukihiro "Matz" Matsumoto
e6cf932d38
fixup! mruby/internal.h: add codedump functions to the internal function header
2023-01-18 10:37:48 +09:00
Yukihiro "Matz" Matsumoto
55eea005c8
mruby/internal.h: add codedump functions to the internal function header
...
ref #5906
2023-01-18 10:37:48 +09:00
mimaki
23aa5f91bc
Update version to 3.2.0RC2.
2023-01-18 10:26:58 +09:00
mimaki
830f88c5a0
Merge commit '9deb52c7b2ba6028d996172bfdd6cf8a0405ce1c' into stable
2023-01-18 09:45:23 +09:00
Yukihiro "Matz" Matsumoto
3639feb047
Merge pull request #5908 from dearblue/env-unshare.2
...
Make `mrb_env_unshare()` call in `mrb_vm_run()`
2023-01-18 08:05:00 +09:00
Yukihiro "Matz" Matsumoto
63597cbbd1
Merge pull request #5910 from mruby/dependabot/github_actions/github/super-linter-4.10.1
...
build(deps): bump github/super-linter from 4.10.0 to 4.10.1
2023-01-18 07:53:11 +09:00
Yukihiro "Matz" Matsumoto
faa6a5cb4f
Merge pull request #5906 from AlexDenisov/codedump-to-file
...
Add ability to dump bytecode into an arbitrary file
2023-01-18 07:37:12 +09:00
AlexDenisov
e15288e460
Add ability to dump bytecode into an arbitrary file
2023-01-17 19:01:55 +01:00
dependabot[bot]
823b8e4148
build(deps): bump github/super-linter from 4.10.0 to 4.10.1
...
Bumps [github/super-linter](https://github.com/github/super-linter ) from 4.10.0 to 4.10.1.
- [Release notes](https://github.com/github/super-linter/releases )
- [Changelog](https://github.com/github/super-linter/blob/main/docs/release-process.md )
- [Commits](https://github.com/github/super-linter/compare/v4.10.0...v4.10.1 )
---
updated-dependencies:
- dependency-name: github/super-linter
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2023-01-17 14:01:22 +00:00
Yukihiro "Matz" Matsumoto
9deb52c7b2
mruby-io/io.c: allow disabling popen
...
When `MRB_NO_IO_POPEN` is defined (or iPhone is target), `IO#popen`
will be disabled.
2023-01-17 18:25:23 +09:00
Yukihiro "Matz" Matsumoto
6b87aae757
doc/guides/compile.md: update compilation example
...
Show usage of multiple command-line options to `mruby-config`.
2023-01-17 18:23:29 +09:00
Yukihiro "Matz" Matsumoto
10768c1191
LEGAL: add entries for non-MIT licensed files.
2023-01-17 18:23:29 +09:00
Yukihiro "Matz" Matsumoto
2c261503b5
doc/internal/boxing.md: remove an extra double quote sign.
2023-01-16 19:01:11 +09:00
Yukihiro "Matz" Matsumoto
7a6d03f869
vm.c: transferred fiber termination should kick root fiber; fix #5907
2023-01-16 18:25:50 +09:00
Yukihiro "Matz" Matsumoto
3f6fd994f0
README.md: mruby is not Ruby 3.x compatible (for syntax at least)
...
With pattern matching as an exception.
2023-01-16 14:39:47 +09:00
dearblue
365c151df0
Make mrb_env_unshare() call in mrb_vm_run()
...
Move the detachment of the "env" object, now done by `mrb_top_run()` by #5904 , to `mrb_vm_run()`.
This is because `mrb_vm_run()` can remove `mrb_env_unshare()` which is called from `bin/mirb`.
Also, even if the mruby VM is already running, either of the following conditions should be used to detach "env":
- If the `stack_keep` variable is 0.
- If the stack length of "env" is longer than `irep->nlocals`.
The reason for the change is that the stack beyond `irep->nlocals` is used inside the called method, and previously it was possible to reference and manipulate the state inside the method via "env".
env stack | |
main stack | top | m1 | m2 |
|<--------------->|
operable via env stack (including self)
If the problematic block is called from the `m2` method above, it is possible to replace `self` in `m1` and `m2` as well as the internal variables.
This change may cause compatibility problems, but I believe it is better to make `MRB_API`, `mrb_vm_run()` safe.
If a dangerous procedure is absolutely necessary, `mrb_vm_exec()` can still be called as before.
2023-01-15 18:16:42 +09:00
mimaki
7a0eabb574
Update version to 3.2.0RC.
2023-01-13 09:12:08 +09:00
Yukihiro "Matz" Matsumoto
a96a9f2c2b
mruby-fiber/fiber.c: detect resume/transfer mixture; fix #5905
...
Also, transferred fibers should kick the root fiber at termination.
2023-01-12 07:23:35 +09:00
Yukihiro "Matz" Matsumoto
9211bf0950
mruby-fiber/test: Fiber#transfer should not be mixed with Fiber#resume
...
ref #5905
The original tests failed with CRuby.
2023-01-11 18:19:07 +09:00
Yukihiro "Matz" Matsumoto
d9145b8621
mruby-test/drive.c: add string type check
2023-01-11 10:43:11 +09:00
Yukihiro "Matz" Matsumoto
00339b3aa8
Merge pull request #5904 from dearblue/env-unshare-on-top-run
...
Call `mrb_env_unshare()` in `mrb_top_run()` if necessary
2023-01-10 18:22:43 +09:00
Yukihiro "Matz" Matsumoto
1bba8cf53b
mruby-dir: remove files needed for an independent gem
2023-01-10 10:53:15 +09:00
Yukihiro "Matz" Matsumoto
a800988239
mruby-set: remove files needed for an independent gem
2023-01-10 10:51:23 +09:00
dearblue
c101261f45
Call mrb_env_unshare() in mrb_top_run() if necessary
...
This is to keep the local variables of the previously created blocks consistent in case the `mrbc_context` passed to `mrb_load_exec()` is `NULL` or different.
Switching between `mrbc_context` pointers that are non `NULL` can be done safely by calling `mrbc_cleanup_local_variables()`.
Before this patch, the result of the following code is not as expected.
```console
% cat loadstr.c
#include <mruby.h>
#include <mruby/compile.h>
int
main(int argc, char *argv[])
{
mrb_state *mrb = mrb_open();
mrb_load_string(
mrb,
"(a, b, c, d, e, f, g) = [1, 2, 3, 4, 5, 6, 7] \n"
"$lambda = -> { p [a, b, c, d, e, f, g] }");
mrb_load_string(mrb, "$lambda.call");
mrb_close(mrb);
return 0;
}
% $(bin/mruby-config --cc --cflags --ldflags) loadstr.c $(bin/mruby-config --libs) && ./a.out
[main, nil, nil, main, nil, nil, main]
```
Also, since `mrb_env_unshare()` was not used before, the internal stack of simply detached `env` objects could show invalid addresses by `stack_extend()`.
ref. https://github.com/kou/mruby-pp/commit/ef5951aca870183d8767cb61f6414240988ca35e
2023-01-09 22:47:37 +09:00
Yukihiro "Matz" Matsumoto
e2ffcbab6e
mruby-io/io.c: cast return pointer from malloc/realloc for C++
2023-01-09 19:58:30 +09:00
Yukihiro "Matz" Matsumoto
8b7e240e67
mruby-io/io.c: improve code around io_cloexec_open()
2023-01-09 19:43:37 +09:00
Yukihiro "Matz" Matsumoto
91727f38de
mruby-io/io.c: change the implementation of read buffers
...
The original implementations used plain Ruby strings referenced from
instance variable (`@buf`) as buffers. We replaced those buffers by C
structure (`struct mrb_io_buf`) referenced directly from `fptr`.
The result is significant improvement of both performance and memory
consumption. Our simple benchmarks (reading `README.md` 10,000 times)
runs 5+ times faster, and `mrbtest` test suites consumes 85% less
memory.
Recent changes on `mruby-io` is preparation for this improvement.
2023-01-09 10:18:35 +09:00
Yukihiro "Matz" Matsumoto
6bc44f8aa8
Remove non-existent ISO section numbers suffixed with "(x)" [ci skip]
...
We don't know how we introduced these section references.
Weak memories.
2023-01-08 22:32:16 +09:00
Yukihiro "Matz" Matsumoto
29fa3d9950
AUTHORS: update entries [ci skip]
2023-01-08 16:56:13 +09:00
Yukihiro "Matz" Matsumoto
4462e3d8b3
string.c: add assertion for positive length
2023-01-08 16:36:20 +09:00
Yukihiro "Matz" Matsumoto
e45e57fe22
mruby-io: update ISO section numbers
2023-01-07 16:39:59 +09:00
Yukihiro "Matz" Matsumoto
6de5e00a6c
pre-commit-config.yaml: update
2023-01-07 16:39:46 +09:00
Yukihiro "Matz" Matsumoto
ad7802a3a0
Merge pull request #5901 from dearblue/doc/gem-block
...
Added tips for giving blocks to `MRuby::Build#gem`
2023-01-06 09:50:31 +09:00
Yukihiro "Matz" Matsumoto
e7052f78b7
Merge pull request #5900 from dearblue/doc/dup-allsyms
...
Remove duplicate entry `MRB_USE_ALL_SYMBOLS`
2023-01-06 09:49:37 +09:00
Yukihiro "Matz" Matsumoto
fadb39a096
mruby-io/io.c: remove unused method _bufread
2023-01-06 08:52:02 +09:00
Yukihiro "Matz" Matsumoto
412b1f0fb3
mruby-io/io.c: implement IO#readlines in C
2023-01-06 08:51:21 +09:00
Yukihiro "Matz" Matsumoto
7827808d3b
mruby-io/io.c: remove Ruby implementation of IO#gets
2023-01-05 23:54:46 +09:00
dearblue
9016acf54e
Added tips for giving blocks to MRuby::Build#gem
...
ref. #5860
2023-01-05 21:50:17 +09:00
dearblue
c5163fe29f
Remove duplicate entry MRB_USE_ALL_SYMBOLS
2023-01-05 21:50:17 +09:00
Yukihiro "Matz" Matsumoto
9797138aca
mruby-io/io.c: rename io_read_buf_noraise to io_read_buf
2023-01-05 19:50:17 +09:00
Yukihiro "Matz" Matsumoto
714cc254c0
mruby-io/io.c: remove unused function io_read_buf()
2023-01-05 19:50:16 +09:00
Yukihiro "Matz" Matsumoto
cd01f1173a
mruby-io/io.c: implement IO#gets in C
...
In addition, reimplement `IO#readline` using `IO#gets`.
2023-01-05 19:50:16 +09:00
Yukihiro "Matz" Matsumoto
b7147bbd8d
mruby-io/io.c: implement IO#getbyte in C
...
In addition, reimplement `IO#readbyte` using `IO#getbyte`.
2023-01-05 19:50:16 +09:00
Yukihiro "Matz" Matsumoto
eec546a9cf
mruby-io/io.c: implement IO#getc in C
...
In addition, reimplement `IO#readchar` using `IO#getc`.
2023-01-05 19:50:16 +09:00
Yukihiro "Matz" Matsumoto
6e7322a3fe
mruby-io/io.c (eof_error): a new function to raise EOFError exception
2023-01-05 19:50:15 +09:00
Yukihiro "Matz" Matsumoto
40039d93ab
mruby-io/io.c: implement IO#getline in C
2023-01-05 19:50:15 +09:00
Yukihiro "Matz" Matsumoto
a9c98ab855
mruby-io/io.c: implement IO#read in C
2023-01-05 19:50:15 +09:00
Yukihiro "Matz" Matsumoto
99dffb6daf
mruby-io/io.c: use RSTR_SET_LEN() instead of mrb_str_resize()
...
since the latter may shrink allocated buffer, and may cause repeated
allocations.
2023-01-05 19:50:14 +09:00
Yukihiro "Matz" Matsumoto
1bc0be3e43
mruby-io/io.c: implement IO#eof? in C
2023-01-05 19:50:14 +09:00
Yukihiro "Matz" Matsumoto
9e808512d5
mruby-io/io.c: remove duplicated initializations after io_alloc()
2023-01-05 19:50:14 +09:00
Yukihiro "Matz" Matsumoto
2b90937a2e
mruby-io/io.c: add ISO section comments
2023-01-05 19:50:14 +09:00
Yukihiro "Matz" Matsumoto
d57540118b
mruby-io/io.c: rename _common functions
2023-01-05 19:50:13 +09:00
Yukihiro "Matz" Matsumoto
64bf33adb4
Merge pull request #5899 from mruby/dependabot/github_actions/github/super-linter-4.10.0
...
build(deps): bump github/super-linter from 4.9.7 to 4.10.0
2023-01-05 09:15:06 +09:00
dependabot[bot]
fd57c5284b
build(deps): bump github/super-linter from 4.9.7 to 4.10.0
...
Bumps [github/super-linter](https://github.com/github/super-linter ) from 4.9.7 to 4.10.0.
- [Release notes](https://github.com/github/super-linter/releases )
- [Changelog](https://github.com/github/super-linter/blob/main/docs/release-process.md )
- [Commits](https://github.com/github/super-linter/compare/v4.9.7...v4.10.0 )
---
updated-dependencies:
- dependency-name: github/super-linter
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2023-01-04 14:02:05 +00:00
Yukihiro "Matz" Matsumoto
51dca6eda8
mruby-io/io.c: rename receiver names from self to io in this file
2023-01-02 10:01:09 +09:00
Yukihiro "Matz" Matsumoto
0e25448a20
mruby-io/io.c (io_check_readable): hide internal method in backtraces
2023-01-02 10:01:08 +09:00
Yukihiro "Matz" Matsumoto
7cc6a720f3
mruby-io/io.c: implement IO#readchar in C
2023-01-02 10:01:08 +09:00
Yukihiro "Matz" Matsumoto
10a5edd978
mruby-io/io.c: implement IO#getbyte in C
2023-01-02 10:01:08 +09:00
Yukihiro "Matz" Matsumoto
a117095ca1
Merge pull request #5897 from dearblue/doc/MRB_HEAP_PAGE_SIZE
...
Added more description of the `MRB_HEAP_PAGE_SIZE` configuration
2023-01-02 10:00:30 +09:00
dearblue
4a39a9f1c4
Added more description of the MRB_HEAP_PAGE_SIZE configuration
2023-01-01 21:59:24 +09:00
Yukihiro "Matz" Matsumoto
170326cb41
Merge pull request #5896 from dearblue/dir-open
...
Avoid `IOError` when returning from `Dir.open`
2023-01-01 19:27:45 +09:00
dearblue
72ab1821de
Avoid IOError when returning from Dir.open
...
Ignore `IOError` if `Dir#close` was done in the block.
2023-01-01 17:40:50 +09:00
Yukihiro "Matz" Matsumoto
0c9798373a
mruby-io/io.c (fptr_finalize): close stdin/out/err as well
...
if not during the termination process.
2022-12-31 17:53:20 +09:00
Yukihiro "Matz" Matsumoto
965997d91b
mruby-io/io.c: implement IO#flush in C
2022-12-31 10:39:05 +09:00
Yukihiro "Matz" Matsumoto
0628669790
mruby-data/data.c (to_s): add class name in string representation
2022-12-31 07:51:09 +09:00
Yukihiro "Matz" Matsumoto
b79563af60
mruby-io/test: remove test for internal IO#_read_buf
2022-12-30 13:59:21 +09:00
Yukihiro "Matz" Matsumoto
a68b1200c2
mruby-io/test: test IO#ungetc
2022-12-30 13:59:01 +09:00
Yukihiro "Matz" Matsumoto
26f458baab
mruby-io/io.c: implement IO#ungetc in C
2022-12-30 13:59:01 +09:00
Yukihiro "Matz" Matsumoto
99a4c1f703
mruby-io/io.c (io_buf): protect @buf from modification
...
Users may re-assign `@buf` using `instance_variable_set` for example.
2022-12-30 13:59:00 +09:00
Yukihiro "Matz" Matsumoto
9a6a251460
mruby-io/io.c (io_bufread_m): remove unnecessary checks
2022-12-30 13:59:00 +09:00
Yukihiro "Matz" Matsumoto
af59e30710
mruby-io/io.c: implement IO#pos in C
2022-12-30 13:59:00 +09:00
Yukihiro "Matz" Matsumoto
d0659b089f
mruby-io/io.c: remove wrong ISO section comment
2022-12-30 13:58:59 +09:00
Yukihiro "Matz" Matsumoto
d905746218
mruby-io/io.c: implement IO#seek in C
2022-12-30 13:58:59 +09:00
Yukihiro "Matz" Matsumoto
14a374c6bc
mruby-io/io.c: implement IO#write in C
...
And now `write` takes multiple string arguments
2022-12-30 13:58:59 +09:00
Yukihiro "Matz" Matsumoto
663d5715bc
mruby-io/io.c: new function io_get_write_fd
2022-12-30 13:58:59 +09:00
Yukihiro "Matz" Matsumoto
5732948108
mruby-io/io.c (io_init): check opt if it's a hash
...
But `opt` will be ignored anyway in mruby.
2022-12-30 13:58:58 +09:00
Yukihiro "Matz" Matsumoto
0cdecd2e9e
mruby-io/io.c (io_init): remove redundant code
2022-12-30 13:58:58 +09:00
Yukihiro "Matz" Matsumoto
ef0b43d9a1
mruby-io/test/io.rb: specify access mode for IO.{sysopen,open} in tests
2022-12-30 13:58:58 +09:00
Yukihiro "Matz" Matsumoto
a9330dbc4b
Merge pull request #5895 from jbampton/yardopts-add-pages
...
`.yardopts` add LEGAL, NEWS, TODO.md
2022-12-30 13:58:47 +09:00
John Bampton
6fe3e8dae3
.yardopts add LEGAL, NEWS, TODO.md
2022-12-30 14:05:16 +10:00
Yukihiro "Matz" Matsumoto
69791b1078
Merge pull request #5894 from jbampton/use-rubygems-org-links
...
Use rubygems.org links for yard-mruby and yard-coderay
2022-12-30 11:47:55 +09:00
John Bampton
d318e992ea
Use rubygems.org links for yard-mruby and yard-coderay
...
The RubyGems website gives a much better overview of both Gems
A lot more quick links and statistics.
https://rubygems.org/gems/yard-mruby
https://rubygems.org/gems/yard-coderay
2022-12-30 12:39:54 +10:00
Yukihiro "Matz" Matsumoto
df35e36682
Merge pull request #5893 from jbampton/contributing-building-documentation
...
Add more building documentation
2022-12-30 11:26:53 +09:00
John Bampton
6da82230e8
Add more building documentation
2022-12-30 11:14:12 +10:00
Yukihiro "Matz" Matsumoto
7fab8275dc
Merge pull request #5892 from jbampton/rake-doc-capi-graphviz
...
rake doc: C API needs both Doxygen and Graphviz
2022-12-30 09:15:51 +09:00
John Bampton
e9b69c611d
rake doc: C API needs both Doxygen and Graphviz
...
https://www.doxygen.nl/
https://graphviz.org/download/
2022-12-30 10:08:15 +10:00
Yukihiro "Matz" Matsumoto
d437182f79
Merge pull request #5891 from jbampton/update-doxyfile
...
`Doxyfile` add `LEGAL`, `LICENSE`, `NEWS`
2022-12-30 08:01:02 +09:00
Yukihiro "Matz" Matsumoto
4d3cc0975a
Merge pull request #5887 from rmalizia44/cdata-example
...
Add cdata example
2022-12-30 08:00:14 +09:00
Yukihiro "Matz" Matsumoto
618d8c6706
Merge pull request #5885 from FnControlOption/patch-2
...
Use `getsegmentdata` instead of deprecated `get_etext`/`get_edata`
2022-12-30 07:58:20 +09:00
fn ⌃ ⌥
8c23385f62
Add reason for include
2022-12-29 08:08:55 -08:00
John Bampton
ee61a1ebfe
Doxyfile add LEGAL, LICENSE, NEWS
2022-12-30 01:40:34 +10:00
rmalizia44
e062af51f3
Add cdata example
...
Fix trailing-whitespace and tabs
2022-12-29 08:36:43 -03:00
Yukihiro "Matz" Matsumoto
9845872168
Merge pull request #5888 from jbampton/update-contributing-guide
...
CONTRIBUTING.md: update `pre-commit` info with `make` and `rake`
2022-12-29 14:47:49 +09:00
Yukihiro "Matz" Matsumoto
b7552ece6e
Merge pull request #5890 from jbampton/update-doxyfile
...
Update `Doxyfile` add `CONTRIBUTING.md` and `TODO.md`
2022-12-29 14:47:15 +09:00
Yukihiro "Matz" Matsumoto
6a062d79f1
Merge pull request #5889 from jbampton/remove-blank-lines
...
Remove blank line from the top of Ruby files
2022-12-29 14:46:00 +09:00
John Bampton
d82ab7835e
Update Doxyfile add CONTRIBUTING.md and TODO.md
2022-12-29 15:16:22 +10:00
John Bampton
42946fed8f
CONTRIBUTING.md: update pre-commit info with make and rake
2022-12-29 14:46:58 +10:00
John Bampton
41572d71b6
Remove blank line from the top of Ruby files
2022-12-29 14:29:48 +10:00
Yukihiro "Matz" Matsumoto
9dbcdd51c2
mruby-io/io.c (io_sysseek): fixed wrong condition when off_t < mrb_int
2022-12-29 12:19:57 +09:00
Yukihiro "Matz" Matsumoto
bc8d8da81a
class.c (get_args_v): fixed integer type mismatch
2022-12-29 11:55:44 +09:00
Yukihiro "Matz" Matsumoto
142915acd6
mruby-io: mistakenly committed WIP code, sigh
2022-12-29 11:44:35 +09:00
Yukihiro "Matz" Matsumoto
80e5c8a90a
mruby-io/io.c: forgot to rename mrb_io_pread on non-Unix platforms
2022-12-29 11:37:28 +09:00
Yukihiro "Matz" Matsumoto
5401d95017
mruby-io/ext/io.h: remove unused macros
2022-12-29 11:22:37 +09:00
Yukihiro "Matz" Matsumoto
aa3005da02
mruby-io/io.c: remove mrb_ prefix from function names
2022-12-29 11:22:37 +09:00
Yukihiro "Matz" Matsumoto
0172388aa2
mruby-io/io.c: rename mrb_io_read_write_size to fssize_t
2022-12-29 11:22:36 +09:00
Yukihiro "Matz" Matsumoto
c83b715f0c
mruby-io/io.c: small format updates
2022-12-29 11:22:36 +09:00
Yukihiro "Matz" Matsumoto
8e1a82b424
mruby-io/io.c: raise error if seek position is too big
2022-12-29 11:22:36 +09:00
Yukihiro "Matz" Matsumoto
f3a5f3ee1d
mruby-io/io.c: define seek constants in C
...
From C macro definitions instead of literal integers (may differ from
the platform's definitions).
- SEEK_SET
- SEEK_CUR
- SEEK_END
2022-12-29 11:22:35 +09:00
Yukihiro "Matz" Matsumoto
830c882f06
mruby-io/io.rb (IO.read): should not allow path starting "|"
...
It was made obsolete long time ago.
2022-12-29 11:22:35 +09:00
Yukihiro "Matz" Matsumoto
20606c4455
mruby-io/io.rb: update a comment
2022-12-29 11:20:52 +09:00
Yukihiro "Matz" Matsumoto
ba1b12948d
mruby-io/io.c: implement _read_buf in C
2022-12-29 11:20:51 +09:00
Yukihiro "Matz" Matsumoto
1940bec0af
mruby-io/io.c: rename mrb_dup to clearer sysdup
2022-12-29 11:20:51 +09:00
Yukihiro "Matz" Matsumoto
7ef0b6e66e
mruby-io/io.c (mrb_io_initialize_copy): dupe the buffer
2022-12-29 11:20:51 +09:00
Yukihiro "Matz" Matsumoto
2d765bfa90
mruby-io/io.c: use MRB_IVSYM() instead of mrb_intern_lit()
2022-12-29 11:20:51 +09:00
Yukihiro "Matz" Matsumoto
fb8cfa8a90
mruby-io/io.c: rename functions
...
Remove the word `dummy` from working function names.
2022-12-29 11:20:50 +09:00
Yukihiro "Matz" Matsumoto
7b130004da
mruby-io/io.c: reorder functions to remove function prototype
2022-12-29 11:20:50 +09:00
Yukihiro "Matz" Matsumoto
8a6344b64f
mruby-io/io.c (mrb_io_readchar): avoid redundant call to mrb_utf8len()
2022-12-29 11:20:50 +09:00
Yukihiro "Matz" Matsumoto
2970607267
mruby-io/io.c (mrb_io_readchar): RSTRING_PTR(buf) never be NULL
2022-12-29 11:20:50 +09:00
Yukihiro "Matz" Matsumoto
5c36a768f7
mruby-io/io.c (mrb_io_readchar): no need to pass @buf
2022-12-29 11:20:49 +09:00
Yukihiro "Matz" Matsumoto
134c9f3178
Merge pull request #5886 from jbampton/remove-coding-utf-8-ruby
...
Remove `# coding: utf-8` from Ruby file
2022-12-29 09:56:51 +09:00
John Bampton
efd0e52cfd
Remove # coding: utf-8 from Ruby file
...
The default script encoding is Encoding::UTF-8 after v2.0.
https://ruby-doc.org/core-2.1.2/Encoding.html#class-Encoding-label-Script+encoding
2022-12-29 10:15:48 +10:00
fn ⌃ ⌥
e6c0f324ae
Use getsegmentdata instead of deprecated get_etext/get_edata
2022-12-28 08:50:59 -08:00
Yukihiro "Matz" Matsumoto
73fbc33596
Merge pull request #5884 from jbampton/remove-unneeded-return
...
Remove unneeded `return` keyword from last line in Ruby functions
2022-12-27 14:14:50 +09:00
Yukihiro "Matz" Matsumoto
54d408aa57
Merge pull request #5883 from jbampton/rakefile-remove-encoding-comment
...
Rakefile: remove unnecessary utf-8 encoding comment
2022-12-27 14:14:16 +09:00
John Bampton
3ba388fc78
Remove unneeded return keyword from last line in Ruby functions
2022-12-27 11:42:48 +10:00
John Bampton
0075b6f240
Rakefile: remove unnecessary utf-8 encoding comment
2022-12-27 11:20:29 +10:00
Yukihiro "Matz" Matsumoto
02c576accf
Merge pull request #5882 from rmalizia44/master
...
Add code block in boxing docs to better spacing
2022-12-27 09:58:22 +09:00
Yukihiro "Matz" Matsumoto
fb34d9ee17
Merge pull request #5881 from jbampton/fix-spelling
...
Fix spelling
2022-12-27 09:56:52 +09:00
Yukihiro "Matz" Matsumoto
4aad86a3e1
Merge pull request #5880 from jbampton/android-rake-style
...
style: pass `&:to_i` as an argument to collect instead of a block
2022-12-27 09:56:06 +09:00
Yukihiro "Matz" Matsumoto
1282527342
Merge pull request #5879 from jbampton/rake-task-generate-active-gems-txt
2022-12-27 09:12:31 +09:00
rmalizia44
1614a88cb7
Add code block in boxing docs to better spacing
2022-12-26 20:12:54 -03:00
John Bampton
1aa2fff1e8
Fix spelling
...
https://en.wikipedia.org/wiki/Single-precision_floating-point_format
https://en.wikipedia.org/wiki/Double-precision_floating-point_format
2022-12-26 20:50:35 +10:00
John Bampton
10250f835c
style: pass &:to_i as an argument to collect instead of a block
2022-12-26 19:12:56 +10:00
John Bampton
b5af16b93a
Add generate_active_gems_txt to rake --tasks
2022-12-26 17:16:50 +10:00
Yukihiro "Matz" Matsumoto
feb6164d8d
Merge pull request #5878 from jbampton/rake-tasks-benchmark
...
Add `benchmark` to `rake --tasks`
2022-12-26 14:45:52 +09:00
John Bampton
6c10351c88
Add benchmark to rake --tasks
2022-12-26 15:41:37 +10:00
Yukihiro "Matz" Matsumoto
bb3f403511
Merge pull request #5876 from dearblue/dir-foreach
...
Close the directory object with the `Dir.foreach` method
2022-12-26 13:27:53 +09:00
Yukihiro "Matz" Matsumoto
3518d15d04
Merge pull request #5875 from dearblue/dir-cstr
...
Get argument of the `Dir` method takes a C string directly
2022-12-26 13:26:56 +09:00
Yukihiro "Matz" Matsumoto
954a847141
Merge pull request #5877 from jbampton/update-rake-tasks
...
Add `check` and `checkupdate` to `rake --tasks`
2022-12-26 13:25:30 +09:00
John Bampton
f5cd3bfa82
Add check and checkupdate to rake --tasks
2022-12-26 14:20:34 +10:00
Yukihiro "Matz" Matsumoto
2656a92380
Merge pull request #5874 from dearblue/dir-funcs
...
Hide substance functions of methods in `mruby-dir`
2022-12-26 12:58:44 +09:00
Yukihiro "Matz" Matsumoto
79f586d7b4
Merge pull request #5873 from dearblue/dir-ioerr
...
Define also the exception class `IOError` in `mruby-dir`
2022-12-26 12:48:43 +09:00
dearblue
50b24c124f
Close the directory object with the Dir.foreach method
2022-12-25 21:25:30 +09:00
dearblue
1fb19ca046
Get argument of the Dir method takes a C string directly
2022-12-25 21:25:30 +09:00
dearblue
71df263bdf
Hide substance functions of methods in mruby-dir
2022-12-25 21:25:30 +09:00
dearblue
35490c2c32
Define also the exception class IOError in mruby-dir
...
Since `IOError` is a standard exception class in Ruby, there is no need to assume different superclasses.
The Ruby specification allows repeated class definitions as long as the superclass is the same.
This also avoids using the `mruby/ext/io.h` file to reference `E_IO_ERROR`.
2022-12-25 21:25:21 +09:00
Yukihiro "Matz" Matsumoto
a6e456e72e
Merge pull request #5872 from dearblue/src-headers
...
Avoid uses `mruby/src/error.h` file
2022-12-25 18:10:59 +09:00
Yukihiro "Matz" Matsumoto
fbc4730cf7
doc/mruby3.2.md: update CVE-2022 entries
2022-12-25 18:00:11 +09:00
Yukihiro "Matz" Matsumoto
a082c5d61e
doc/mruby3.2.md: update entries for new gems
2022-12-25 18:00:11 +09:00
Yukihiro "Matz" Matsumoto
684ca72439
Merge pull request #5871 from ukrainskiysergey/fix_nil_redefinition_limitation_type
...
Fix typo in doc/limitations.md
2022-12-25 17:56:34 +09:00
dearblue
fec74cd040
Avoid uses mruby/src/error.h file
2022-12-25 17:31:53 +09:00
Sergey Ukrainskiy
872f01ddef
Fix typo in doc/limitations.md
2022-12-25 13:33:11 +09:00
Yukihiro "Matz" Matsumoto
89830296eb
numeric.c (int_round): n may not be a bigint
...
`mrb_bint_add()` expects its first operand to be a bigint.
2022-12-24 19:20:37 +09:00
Yukihiro "Matz" Matsumoto
48e5ca4802
include/value.h (mrb_float_p): define always
...
even when `MRB_NO_FLOAT` is set. In that case, it is FALSE always.
2022-12-24 19:05:41 +09:00
Yukihiro "Matz" Matsumoto
14f8cf040e
mruby-string-ext: add unary +/- for strings to freeze/unfreeze
2022-12-24 10:42:28 +09:00
Yukihiro "Matz" Matsumoto
4288ee39b3
doc/mruby3.2.md: update - add mruby-dir entry
2022-12-23 14:17:18 +09:00
Yukihiro "Matz" Matsumoto
7821462571
mruby-dir/dirtest.c: need to include <io.h> for mktemp() on Windows
2022-12-22 22:07:07 +09:00
Yukihiro "Matz" Matsumoto
e6544e44f7
class.c (mrb_get_args_a): avoid an uninitialized warning from VC.
2022-12-22 15:13:08 +09:00
Yukihiro "Matz" Matsumoto
67addd7da3
mruby-dir/dirtest.c: avoid string allocations for mrb_raisef
2022-12-22 11:36:03 +09:00
Yukihiro "Matz" Matsumoto
1d174404b3
mruby-dir/dirtest.c: refactor mkdir in mrb_dirtest_setup
2022-12-22 11:33:44 +09:00
Yukihiro "Matz" Matsumoto
d51d5825ad
mruby-dir/dir.c: update compatibility macros for Windows
2022-12-22 11:13:50 +09:00
Yukihiro "Matz" Matsumoto
084871abf3
mruby-dir/dirtest.c: use _mktemp instead of mktemp for Windows
2022-12-22 11:12:32 +09:00
Yukihiro "Matz" Matsumoto
c737519d02
mruby-dir/dirtest.c: add compatibility macro for getcwd
2022-12-22 11:11:49 +09:00
Yukihiro "Matz" Matsumoto
4cbcf743a7
mruby-dir/dirtest.c: wrap function prototypes by extern "C"
2022-12-22 11:11:18 +09:00
Yukihiro "Matz" Matsumoto
783e62e582
mruby-dir/dirtest.c: copy some of dirent header information
...
Instead of including whole "dirent.c" file.
2022-12-22 09:53:16 +09:00
Yukihiro "Matz" Matsumoto
965d1d1554
mruby-dir/dirtest.c: should not include <unistd.h>
2022-12-22 09:27:13 +09:00
Yukihiro "Matz" Matsumoto
0aa8ce5c57
mruby-dir/dirtest.c: did not work for Windows
2022-12-22 09:10:40 +09:00
Yukihiro "Matz" Matsumoto
cfb2d3e888
mruby-dir: include Enumerable module
2022-12-22 00:03:28 +09:00
Yukihiro "Matz" Matsumoto
ca3b694efe
mruby-dir/dir.rb: make each_child as an alias to each
2022-12-22 00:02:33 +09:00
Yukihiro "Matz" Matsumoto
3d6a4c39bf
mruby-dir: reformat
2022-12-21 15:18:09 +09:00
Yukihiro "Matz" Matsumoto
d656ea87c6
mruby-dir: add compatibility macro
2022-12-21 15:15:10 +09:00
Yukihiro "Matz" Matsumoto
b93a624b5f
mruby-dir/dir.c: add new method Dir.empty?(path)
2022-12-21 15:11:37 +09:00
Yukihiro "Matz" Matsumoto
e4b80cc282
mruby-dir/dir.rb: add new method children as an alias to entries
2022-12-21 14:48:22 +09:00
Yukihiro "Matz" Matsumoto
818212b5db
mruby-dir/dir.rb: rename each to each_child
2022-12-21 14:44:24 +09:00
Yukihiro "Matz" Matsumoto
afcdf5e803
mruby-dir/dir.rb: simplify loop delegation
2022-12-21 14:42:50 +09:00
Yukihiro "Matz" Matsumoto
d0af9e9863
README.md: update the simplest build instruction
2022-12-20 22:14:34 +09:00
Yukihiro "Matz" Matsumoto
d3e997f4f9
mruby-dir: remove run_test.rb that is no longer used
2022-12-20 22:13:34 +09:00
Yukihiro "Matz" Matsumoto
4b48c86103
mruby-dir: extra spaces and typos are removed
2022-12-20 22:12:21 +09:00
Yukihiro "Matz" Matsumoto
e3589bf001
AUTHORS: update "as of" info
...
Forgot to update last time.
2022-12-20 21:57:53 +09:00
Yukihiro "Matz" Matsumoto
f486069a94
mruby-dir/test: reformat
2022-12-20 21:56:52 +09:00
Yukihiro "Matz" Matsumoto
869a2778a9
mruby-dir/test: remove warnings from lacked assertions
2022-12-20 20:24:28 +09:00
Yukihiro "Matz" Matsumoto
fbf04c6ec3
mruby-dir/dir.rb: removed work around for old mruby bug
2022-12-20 20:13:04 +09:00
Yukihiro "Matz" Matsumoto
e6a2f0b98e
mruby-dir/dir.rb: reformat according to coding standard
2022-12-20 19:51:18 +09:00
Yukihiro "Matz" Matsumoto
d46bbb72ac
mrbgems/stdlib-io.gembox: add mruby-dir gem
2022-12-20 18:49:29 +09:00
Yukihiro "Matz" Matsumoto
277341f694
Add 'mrbgems/mruby-dir/' from commit '89dceefa1250fb1ae868d4cb52498e9e24293cd1'
...
git-subtree-dir: mrbgems/mruby-dir
git-subtree-mainline: f2d43069f0
git-subtree-split: 89dceefa12
2022-12-20 18:06:36 +09:00
Yukihiro "Matz" Matsumoto
f2d43069f0
mruby-socet: add socket constants
...
Introduced in Ruby3.2:
- SO_INCOMING_CPU
- SO_INCOMING_NAPI_ID
- SO_RTABLE
- SO_SETFIB
- SO_USER_COOKIE
- TCP_KEEPALIVE
- TCP_CONNECTION_INFO
2022-12-19 18:59:10 +09:00
Yukihiro "Matz" Matsumoto
772bf559ef
codedump.c: print embedded operands
...
- LOADNIL (nil)
- LOADSELF (R0)
- LOADT (true)
- LOADF (false)
2022-12-18 19:08:28 +09:00
Yukihiro "Matz" Matsumoto
f7a8a42521
mruby-compiler/parse.y: allow multiple anonymous splat in args rule
...
For example, this should be allowed:
```ruby
def f(*)
p(*,*)
end
```
2022-12-17 09:37:44 +09:00
Yukihiro "Matz" Matsumoto
6d01c5b56c
codedump.c: print embedded operands (with parentheses)
2022-12-16 07:51:31 +09:00
Yukihiro "Matz" Matsumoto
b18a267709
codedump.c: print LOADINEG for the instruction; close #5869
...
Stopped unifying LOADI and LOAINEG in instruction printing.
The issue is reported by @NaokiM03.
2022-12-15 18:35:14 +09:00
Yukihiro "Matz" Matsumoto
8819183088
gc.c (mrb_field_write_barrier): value may be NULL
...
Especially when called from MRB_PROC_SET_TARGET_CLASS() from
f_instance_eval().
2022-12-15 07:50:11 +09:00
Yukihiro "Matz" Matsumoto
d6dc9caa02
mruby-hash-ext/hash.rb: make transform_keys! to keep old keys
...
```ruby
h={1=>2,2=>3}
h.transform_keys!{_1.succ}
```
used to make `h` to `{2=>2}` (duplicated keys were squashed), but now
makes it `{2=>2,3=>3}`.
2022-12-14 07:39:10 +09:00
Yukihiro "Matz" Matsumoto
ba3541bbc4
mruby-set/set.rb (reset): add reset method defined in Ruby 2.5
2022-12-14 07:38:38 +09:00
Yukihiro "Matz" Matsumoto
ddefcea151
mruby-eval/eval.c (f_instance_eval): skip mrb_value to get singleton
...
Use mrb_singleton_class_ptr() instead of mrb_instance_class(), because
the former returns NULL, when the latter raises error for immediate
objects.
```
1.instance_eval <<END
def foo
:foo
end
END
```
2022-12-13 10:51:44 +09:00
Yukihiro "Matz" Matsumoto
3bd2c56dae
vm.c (check_target_class): raise error if target_class is NULL
...
It fixes a bug that instance_eval for immediate objects defines methods
in Object, instead of raising error.
```ruby
1.instance_eval do
def foo
p :foo
end
end
```
2022-12-13 10:49:14 +09:00
Yukihiro "Matz" Matsumoto
7ad657b532
mrb_kwargs numbers changed to mrb_int from uint32_t
...
They are unsigned but `mrb_int` is more common among mruby
implementation, e.g. length of strings and arrays.
2022-12-12 14:42:38 +09:00
Yukihiro "Matz" Matsumoto
cc8ce1b5c7
Merge pull request #5868 from boatrite/2022-12-10-path-with-spaces-fix
...
Fix cloning gem when destination path contains spaces
2022-12-12 14:42:26 +09:00
Gwendolyn Boatrite
8b728e4056
Fix cloning gem when destination path contains spaces
...
This was how clone command was previously being generated, for example:
```
git clone --recursive --branch "master" --depth 1 https://github.com/mattn/mruby-onig-regexp.git /path/to mruby with spaces/mruby-3.1.0/build/repos/wasm/mruby-onig-regexp
```
Now it's changed so the path is quoted and will work when containing
spaces:
```
git clone --recursive --branch "master" --depth 1 https://github.com/mattn/mruby-onig-regexp.git "/path/to mruby with spaces/mruby-3.1.0/build/repos/wasm/mruby-onig-regexp"
```
Similar for the other commands.
2022-12-11 17:18:29 -06:00
Yukihiro "Matz" Matsumoto
dc508eafe8
Merge pull request #5867 from dearblue/gha-ci
...
Combine gcc/clang jobs with matrix
2022-12-11 15:14:05 +09:00
dearblue
9068a157c7
Combine gcc/clang jobs with matrix
2022-12-10 23:37:52 +09:00
Yukihiro "Matz" Matsumoto
38c50b3094
mruby-struct (struct_index): avoid direct array indexing
...
Caused crash probably due to the combination of C++ UB & optimizer.
2022-12-10 08:00:31 +09:00
Yukihiro "Matz" Matsumoto
990d41f9f7
mruby-class-ext: new method attached_object introduced in Ruby3.2
2022-12-09 17:30:17 +09:00
Yukihiro "Matz" Matsumoto
6fecea1a7d
AUTHORS: update entries [ci skip]
2022-12-09 07:38:42 +09:00
Yukihiro "Matz" Matsumoto
a7e304a51c
mruby-struct (struct_index): unify indexing access code
2022-12-08 08:01:53 +09:00
Yukihiro "Matz" Matsumoto
de0ed25fbf
mruby-struct (struct_corrupted): unify error raising code
2022-12-07 17:07:33 +09:00
Yukihiro "Matz" Matsumoto
0c1d6c5d1b
Merge pull request #5866 from jbampton/md-fix-c-code-block
...
docs: fix start of `C` code block
2022-12-07 08:01:13 +09:00
Yukihiro "Matz" Matsumoto
672495555b
mruby-data (mrb_data_init_copy): use data_corrupted() for errors
2022-12-07 07:49:19 +09:00
John Bampton
8eee3ce150
docs: fix start of C code block
2022-12-06 21:48:28 +10:00
Yukihiro "Matz" Matsumoto
38098ddf2a
class.c (prepare_singleton_class): remove unnecessary write barrier
...
Since sc (singleton class) is a newly created object so it's not needed
to call write barrier.
2022-12-06 15:45:39 +09:00
Yukihiro "Matz" Matsumoto
375d22b412
gc.c (clear_all_old): avoid calling GC twice in the function
2022-12-06 15:26:24 +09:00
Yukihiro "Matz" Matsumoto
b3c95f3851
Merge pull request #5863 from dearblue/doc/OP_CALL
...
Update semantics comment for `OP_CALL`
2022-12-06 14:20:16 +09:00
Yukihiro "Matz" Matsumoto
94b3d48df2
Merge pull request #5862 from dearblue/doc/update-opcode.md
...
Update `opcode.md` to match the latest implementation
2022-12-06 14:20:03 +09:00
Yukihiro "Matz" Matsumoto
a7232ecf8d
mruby-sprintf (mrb_str_format): fixed integer size confusion
...
Declared as int, checked as mrb_int.
2022-12-06 08:31:30 +09:00
Yukihiro "Matz" Matsumoto
4295a8c560
gc.c (final_marking_phase): mark gray objects after marking
...
If pre-allocate object is modified (e.g. singleton class added) in
certain timing, some objects may be swept even if it's alive.
The problem was reported by Denis Kasak via private communication.
2022-12-05 22:34:15 +09:00
Yukihiro "Matz" Matsumoto
d4fb67a1a0
Merge pull request #5864 from dearblue/doc/escape-pipe
...
Escaping pipes in the code of table elements
2022-12-05 10:51:51 +09:00
Yukihiro "Matz" Matsumoto
841bf6a270
mruby-data: update a comment (there's no Data.new) [ci skip]
2022-12-05 10:49:40 +09:00
Yukihiro "Matz" Matsumoto
0d261aff6b
mruby-data: freeze Data object after initialize
2022-12-04 22:45:36 +09:00
Yukihiro "Matz" Matsumoto
9992de5a4f
Rename MRB_TT_DATA to MRB_TT_CDATA
...
`TT_DATA` is too confusing with `Data` objects (which is immutable
Struct like objects introduced in Ruby 3.2).
2022-12-04 22:45:36 +09:00
Yukihiro "Matz" Matsumoto
0ef4796dfb
mruby-data: improve comment description
2022-12-04 22:45:35 +09:00
Yukihiro "Matz" Matsumoto
951caa8f42
mruby-data: rename some internal functions and a macro
2022-12-04 22:45:35 +09:00
Yukihiro "Matz" Matsumoto
25faa74d23
array.c (mrb_ary_unshift_m): small refactoring
...
Unify size error by `ary_too_big()` function.
2022-12-04 22:45:35 +09:00
Yukihiro "Matz" Matsumoto
6d8e025901
Merge pull request #5865 from dearblue/errno-to-stdlib-io
...
Move `mruby-errno` to `stdlib-io.gembox`
2022-12-04 22:45:24 +09:00
dearblue
392033fb6b
Move mruby-errno to stdlib-io.gembox
...
This is because GEMs that use errno are currently limited to `mruby-io` and `mruby-socket`.
2022-12-04 18:33:12 +09:00
Yukihiro "Matz" Matsumoto
5deb8c7894
Merge pull request #5861 from dearblue/doc/addfiles.2
...
Additional document files for doxygen
2022-12-03 15:27:04 +09:00
dearblue
32d48a5f0e
Escaping pipes in the code of table elements
...
ref. https://github.github.com/gfm/#example-200
2022-12-03 14:40:30 +09:00
dearblue
478fd615af
Update semantics comment for OP_CALL
2022-12-03 14:26:05 +09:00
dearblue
13d8804d88
Update opcode.md to match the latest implementation
2022-12-03 13:59:35 +09:00
dearblue
4bd3e0e20b
Additional document files for doxygen
...
Complements #5802 .
2022-12-03 13:37:32 +09:00
Yukihiro "Matz" Matsumoto
5f3aed7413
mruby-data (mrb_data_new): Data#new to accept keyword arguments
2022-12-01 15:38:06 +09:00
Yukihiro "Matz" Matsumoto
a40fdfde5c
mruby-data: cosmetic changes regarding for loop variables
2022-11-30 21:51:52 +09:00
Yukihiro "Matz" Matsumoto
c7f1195ccb
mruby-random: fix size of kw symbol arrays
2022-11-30 21:50:08 +09:00
Yukihiro "Matz" Matsumoto
138adbe282
mruby-data (mrb_data_initialize): update argument error conditions
...
- raise ArgumentError if arguments size differs from data size.
Previously it accepted smaller argument size.
- the message is updated to "wrong number of arguments". It's not
"struct" any longer.
2022-11-30 21:47:31 +09:00
Yukihiro "Matz" Matsumoto
fce2c5131f
mruby-data: new gem for Data class introduced in Ruby 3.2
2022-11-29 15:58:05 +09:00
Yukihiro "Matz" Matsumoto
3fa029b079
mruby-io (mrb_fd_cloexec): instead of assertion call mrb_sys_fail()
...
Should provide system call failure information to the user.
2022-11-29 08:16:22 +09:00
Yukihiro "Matz" Matsumoto
551d603d9c
mruby-sprintf: remove unnecessary format specifier
2022-11-26 23:22:50 +09:00
Yukihiro "Matz" Matsumoto
16ed467266
mruby-struct: avoid using mrb_bug(); ref #5852
...
Use mrb_assert() instead.
2022-11-25 16:17:29 +09:00
Yukihiro "Matz" Matsumoto
855e63e17c
parse.y: avoid using mrb_bug(); ref #5852
2022-11-25 16:17:29 +09:00
Yukihiro "Matz" Matsumoto
eb988c9025
cdump.c (cdump_pool): simplify IREP_TT_FLOAT dump.
2022-11-25 16:17:29 +09:00
Yukihiro "Matz" Matsumoto
c39ee489e1
Remove non formatting fprintf().
2022-11-25 16:17:29 +09:00
Yukihiro "Matz" Matsumoto
260c2b60df
Merge pull request #5859 from dearblue/rake/opcode.md
...
Add task `rake doc:update-opcode.md`
2022-11-23 18:00:52 +09:00
Yukihiro "Matz" Matsumoto
ffb6b2243b
Merge pull request #5858 from dearblue/mrb_print_backtrace
...
Print errors by calling `mrb_print_backtrace()` without backtrace
2022-11-21 08:37:01 +09:00
dearblue
5e62990748
Add task rake doc:update-opcode.md
...
Allow to update `doc/internal/opcode.md` file mechanically from `include/mruby/ops.h` file.
At the same time, the `doc/internal/opcode.md` file has been updated.
Consecutive hyphens at the end of the table were removed as they would have created noise as markdown flavours.
2022-11-20 21:58:13 +09:00
dearblue
61b60273ea
Print errors by calling mrb_print_backtrace() without backtrace
...
- In case of `NoMemoryError` exceptions, the error message is now printed directly.
- Replaced `mrb_p()` used by #4250 with `mrb_print_error()`.
ref. squashed commit f1523d2404
ref. subcommit da7d7f881b
ref. subcommit d9c7b6be6e
2022-11-20 20:58:03 +09:00
Yukihiro "Matz" Matsumoto
3a0e2255bd
Merge pull request #5857 from dearblue/avoid-abort-resume
...
Avoid `abort()` when exception occurs in `mrb_fiber_resume()`
2022-11-20 20:37:44 +09:00
dearblue
f0a65ec3c2
Avoid abort() when FiberError occurs in mrb_fiber_resume()
...
However, this may not be the case depending on where the `FiberError` raises.
2022-11-20 20:32:44 +09:00
Yukihiro "Matz" Matsumoto
9c5dc42e59
small cosmetic changes.
...
I prefer `i++` style unless absolutely necessary.
This commit is an addition to 41e4148.
2022-11-19 17:11:56 +09:00
Yukihiro "Matz" Matsumoto
7ab7608094
small cosmetic changes.
...
I prefer `i++` style unless absolutely necessary.
2022-11-19 17:11:56 +09:00
Yukihiro "Matz" Matsumoto
89a34e1b7e
Revert "error.c (mrb_sys_fail): errno argument removed from _sys_fail."
...
Intermediate function calls may update `errno`.
This reverts commit a099ca44f4 .
2022-11-19 17:11:56 +09:00
Yukihiro "Matz" Matsumoto
80986804cc
Merge pull request #5856 from dearblue/doc/fiber-funcs
...
Updates documentation for `mrb_fiber_resume()` and `mrb_fiber_yield()`
2022-11-19 17:11:48 +09:00
dearblue
6fed73445e
Updates documentation for mrb_fiber_resume() and mrb_fiber_yield()
...
- Added note on `mrb_fiber_resume()` and `mrb_fiber_yield()`.
Removed comments from C files that were not documented by yard and doxygen instead.
- Leads to use of `mrb_fiber_resume()` instead of `Fiber#resume` in C.
- Leads to use of `mrb_fiber_yield()` instead of `Fiber.yield` in C.
2022-11-19 16:59:28 +09:00
Yukihiro "Matz" Matsumoto
a099ca44f4
error.c (mrb_sys_fail): errno argument removed from _sys_fail.
...
As a side effect, `errno.h` dependency removed from `error.c`.
2022-11-15 13:27:32 +09:00
Yukihiro "Matz" Matsumoto
71a1d0ad26
mruby-sprintf: fix a debug error message (remove additional "1").
2022-11-15 13:27:31 +09:00
Yukihiro "Matz" Matsumoto
0ad29fda67
Merge pull request #5854 from jbampton/add-ubuntu-2204-to-build
...
gha: replace `Ubuntu 18.04` with `Ubuntu 22.04` in `build` workflow
2022-11-15 13:27:18 +09:00
John Bampton
512486d067
gha: replace Ubuntu 18.04 with Ubuntu 22.04 in build workflow
...
https://github.blog/changelog/2022-08-09-github-actions-ubuntu-22-04-is-now-generally-available-on-github-hosted-runners/
2022-11-15 09:27:52 +10:00
Yukihiro "Matz" Matsumoto
c9f67d376f
Merge pull request #5853 from jbampton/standardize-markdown-headings
...
docs: standardize Markdown headings
2022-11-13 17:21:59 +09:00
John Bampton
4903aa2be9
docs: standardize Markdown headings
2022-11-13 16:32:38 +10:00
Yukihiro "Matz" Matsumoto
5412f525fa
Merge pull request #5851 from dearblue/prepare_missing
...
Changed `prepare_missing()` parameters
2022-11-13 09:14:12 +09:00
dearblue
f9b13d27b5
Changed prepare_missing() parameters
...
- Now that it is called after `cipush()`, pass in a new ci pointer.
- Removed the parameters `clsp`, `a`, and `c`, which are no longer needed since they now operate directly on `ci`.
- Change the parameter `super`, which is treated as a boolean, to `mrb_bool`.
- Leave the parameter `mid`.
Because if `prepare_missing()` raises the exception `NoMethodError`, `ci->mid` must not be set when suppressing extra information on the stack trace.
However, set `ci->mid` here, since the preparation is completed at the end of the function.
2022-11-12 20:56:46 +09:00
Yukihiro "Matz" Matsumoto
6bcbfed8bb
mruby-sprintf/sprintf.c: check integer overflow before casting.
2022-11-11 08:08:07 +09:00
Yukihiro "Matz" Matsumoto
9fcfd01f20
mruby-pack/pack.c (read_tmpl): check integer overflow before casting.
2022-11-10 22:21:12 +09:00
Yukihiro "Matz" Matsumoto
3b56332952
doc/mruby3.2.md: update [ci skip]
2022-11-09 23:37:02 +09:00
Yukihiro "Matz" Matsumoto
c759ee5f77
AUTHORS: update entries [ci skip]
2022-11-08 16:28:09 +09:00
Yukihiro "Matz" Matsumoto
98cc66070b
readnum.c: provide obsolete functions.
...
- mrb_int_read()
- mrb_float_read()
Both functions should not be use and this file should not be linked.
This is just for compatibility.
2022-11-07 16:09:31 +09:00
Yukihiro "Matz" Matsumoto
4a888a34bb
readfloat.c (mrb_read_float): a new function.
...
We no longer use `mrb_float_read()` that depends on `errno`.
2022-11-07 16:09:31 +09:00
Yukihiro "Matz" Matsumoto
4e9773ae3d
readint.c (mrb_int_read): new function.
...
We no longer use `mrb_read_int` which is kinda compatible with `strtol`.
2022-11-07 16:09:31 +09:00
Yukihiro "Matz" Matsumoto
440adc447b
Merge pull request #5849 from dearblue/re-stackerr
2022-11-06 19:46:21 +09:00
dearblue
5db5b27aa0
Using mrb_realloc() with stack_extend_alloc()
...
Raising a `SystemStackError` exception in an out-of-memory situation will generate backtrace information.
This can eventually lead to a `NoMemoryError` exception, and this process flow is completely undesirable.
In effect, this change means that it will include a revert of commit 0dbb9e6e41 .
2022-11-05 20:34:49 +09:00
Yukihiro "Matz" Matsumoto
47575ed72a
Merge pull request #5848 from dearblue/mrb_str_inspect-utf-8
...
Reduce memory copy in `mrb_str_inspect()` with UTF-8
2022-11-04 23:27:05 +09:00
dearblue
97c075ad68
Reduce memory copy in mrb_str_inspect() with UTF-8
2022-11-04 22:13:07 +09:00
Yukihiro "Matz" Matsumoto
4f385f119c
parse.y (call_with_block): a->cdr may be NULL.
2022-11-04 14:05:52 +09:00
Yukihiro "Matz" Matsumoto
c6b7029cdc
mruby-sprintf: fix int and mrb_int mixtures.
2022-11-04 13:11:36 +09:00
Yukihiro "Matz" Matsumoto
7e7cc425d4
bingint.c: add cast to silence some warnings (on VC).
2022-11-04 13:10:51 +09:00
Yukihiro "Matz" Matsumoto
b7240056f8
vm.c (funcall_args_capture): fix integer size mixture.
2022-11-04 12:07:00 +09:00
Yukihiro "Matz" Matsumoto
5617de0071
mruby-method/method.c (method_eql): do not check _klass for equality.
2022-11-03 23:38:27 +09:00
Yukihiro "Matz" Matsumoto
bf642becc2
internal.h: aggregate prototypes to internal.h.
...
- mrb_f_send()
- mrb_ci_nregs()
2022-11-02 14:24:42 +09:00
Yukihiro "Matz" Matsumoto
e3dd65f761
throw.h: simplified a compilation conditional.
2022-11-02 14:22:04 +09:00
Yukihiro "Matz" Matsumoto
c68d3dcbac
vm.c: stop wrapping implementation by extern "C".
2022-11-02 14:22:04 +09:00
Yukihiro "Matz" Matsumoto
37fac6c089
throw.h: avoid using static member in C++ struct; fix #5846
...
The initialization causes linkage error with gcc (not clang), caused by
the following gcc bug:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86254
2022-11-02 14:22:03 +09:00
Yukihiro "Matz" Matsumoto
ab0a7f0583
Merge pull request #5839 from jbampton/script-must-not-have-extension
...
pre-commit(shell): add hook `script-must-not-have-extension`
2022-11-01 23:16:04 +09:00
Yukihiro "Matz" Matsumoto
a4b41fe53c
Merge pull request #5843 from dearblue/simple-raise
...
Simplify the `L_RAISE` block
2022-11-01 00:06:06 +09:00
Yukihiro "Matz" Matsumoto
ce535b872f
Merge pull request #5844 from jbampton/ruby-remove-parenthesis
...
ruby: remove unneeded parenthesis from methods
2022-11-01 00:05:38 +09:00
John Bampton
2438195289
ruby: remove unneeded parenthesis from methods
...
commit eeb33da43035b5400f8d1830ea52a68691b3a678
Author: John Bampton <jbampton@gmail.com >
Date: Mon Oct 31 23:53:43 2022 +1000
Fix up
commit 80923c8f92a58b2f33a36d6403de7f6341973110
Merge: bc89500f6 416f012f6
Author: John Bampton <jbampton@users.noreply.github.com >
Date: Mon Oct 31 20:12:59 2022 +1000
Merge branch 'master' into ruby-remove-parenthesis
commit bc89500f6357c453b457516452ffcc7fd03fee88
Author: John Bampton <jbampton@gmail.com >
Date: Mon Oct 31 14:39:20 2022 +1000
ruby: remove unneeded parenthesis from methods
2022-11-01 00:25:09 +10:00
Yukihiro "Matz" Matsumoto
416f012f68
Merge pull request #5845 from jbampton/ruby-fix-whitespace
...
ruby: standardize whitespace
2022-10-31 18:43:08 +09:00
John Bampton
ea8964ef35
ruby: standardize whitespace
2022-10-31 16:25:56 +10:00
Yukihiro "Matz" Matsumoto
734fe47de4
Merge pull request #5841 from dearblue/raise-in-vm
...
Use macro in `mrb_vm_exec()` exception raising
2022-10-31 13:04:23 +09:00
Yukihiro "Matz" Matsumoto
e4d6ea3382
Merge pull request #5838 from jbampton/editorconfig-batch-charset-encoding
...
Remove `charset = latin1` from `.editorconfig` for batch files
2022-10-31 12:56:42 +09:00
Yukihiro "Matz" Matsumoto
9832e7db5b
Merge pull request #5837 from jbampton/pre-commit-tabs-exclude
...
pre-commit(tabs): use blacklist to exclude files
2022-10-31 07:30:52 +09:00
Yukihiro "Matz" Matsumoto
21436e2350
Merge pull request #5842 from mattn/fix-use-after-free
...
fix use after free
2022-10-31 07:28:24 +09:00
dearblue
8a62bf25c8
Simplify the L_RAISE block
...
The current flow of the `L_RAISE` block is as follows:
```mermaid
flowchart LR
raise((raise))
raise --> citop{"top of call info?"}
citop -- YES --> chftop{"no catch handler?"}
citop -- NO --> chf{"no catch handler?"}
chftop -- YES --> fiber{"root of fiber?"}
chftop -- NO --> vmexec((vmexec))
fiber -- YES --> vmstop((vmstop))
fiber -- NO --> fswitch["switch fiber"]
fswitch --> citop
chf -- YES --> cipop["cipop"]
chf -- NO --> vmexec((vmexec))
cipop --> citop
```
This patch makes the catch handler search first:
```mermaid
flowchart LR
raise((raise))
raise --> chf{"no catch handler?"}
chf -- NO --> vmexec((vmexec))
chf -- YES --> citop{"top of call info?"}
citop -- YES --> fiber{"root of fiber?"}
citop -- NO --> cipop["cipop"]
cipop --> chf
fiber -- YES --> vmstop((vmstop))
fiber -- NO --> fswitch["switch fiber"]
fswitch --> chf
```
2022-10-30 23:05:29 +09:00
Yasuhiro Matsumoto
6697a6a067
fix use after free
2022-10-30 20:51:33 +09:00
Yukihiro "Matz" Matsumoto
4371b736b7
Merge pull request #5811 from FnControlRuby/splat
...
ops.h: update `OP_ARYDUP` instruction and rename to `OP_ARYSPLAT`
2022-10-30 16:50:58 +09:00
fn ⌃ ⌥
273fcbc347
ops.h: update OP_ARYDUP instruction and rename to OP_ARYSPLAT.
...
Transforms the value of a splat inside a return statement (similar
to an array). For example, `return *nil` should return `nil.to_a`,
while `return *1` should return `[1]`
2022-10-29 19:54:34 -07:00
dearblue
1de8fda2ec
Use macro in mrb_vm_exec() exception raising
...
Introduce the macro functions `RAISE_EXC()`, `RAISE_FORMAT()` and `RAISE_LIT()`.
2022-10-30 11:04:38 +09:00
Yukihiro "Matz" Matsumoto
6ee4f845c6
Merge pull request #5840 from mattn/errno-windows
...
errno must be set before mrb_sys_fail
2022-10-30 07:56:59 +09:00
Yasuhiro Matsumoto
4612c8b2d6
errno must be set before mrb_sys_fail
2022-10-30 01:00:27 +09:00
John Bampton
bd51915679
Remove charset = latin1 from .editorconfig for batch files
...
The top `.editorconfig` rule `charset = utf-8` now applies to batch files
```
mruby % file -I mrbgems/mruby-bin-config/mruby-config.bat
mrbgems/mruby-bin-config/mruby-config.bat: text/x-msdos-batch; charset=us-ascii
```
US-ASCII (basic English) is a 7-bit, 128 characters code page, originally designed for telegraphy.
UTF-8 encoding uses the same encoding as 7-bit ASCII for its first 128 characters. So a text file that only contains characters from that range of the first 128 characters will be identical at a byte level whether encoded with UTF-8 or 7-bit ASCII.
https://stackoverflow.com/questions/11303405/force-encode-from-us-ascii-to-utf-8-iconv
2022-10-29 23:45:39 +10:00
John Bampton
af0b3e3388
pre-commit(shell): add hook script-must-not-have-extension
...
```
mruby % file -I mrbgems/mruby-bin-config/mruby-config
mrbgems/mruby-bin-config/mruby-config: text/x-shellscript; charset=us-ascii
```
The Google shell style guide states:
Executables should have no extension (strongly preferred)
This hook checks for conformance.
https://github.com/jumanjihouse/pre-commit-hooks#script-must-not-have-extension
We are already using hooks from "jumanjihouse" in the `mgem-list` repo.
https://github.com/mruby/mgem-list/blob/f5904922d5fbc87f45c582b8ef759e2ebf16df79/.pre-commit-config.yaml#L39
2022-10-29 23:08:48 +10:00
John Bampton
e7507778a4
pre-commit(tabs): use blacklist to exclude files
...
Add `indent_style = space` to the `.editorconfig` file for batch files.
2022-10-29 20:26:00 +10:00
Yukihiro "Matz" Matsumoto
15eb62479b
Merge pull request #5836 from jbampton/fix-whitespace-in-md-files
...
docs: standardize whitespace in Markdown files
2022-10-29 18:56:45 +09:00
John Bampton
f631460dfb
docs: standardize whitespace in Markdown files
...
Most of the Markdown has a single space between sentences.
This pr changes `2 spaces` to `1 space`.
2022-10-29 18:49:31 +10:00
Yukihiro "Matz" Matsumoto
ce86585281
Merge pull request #5812 from FnControlRuby/block
...
parse.y: fix return/break/next with method call with args and block
2022-10-29 16:29:41 +09:00
Yukihiro "Matz" Matsumoto
9edf311fd3
Merge pull request #5834 from FnControlRuby/<=>
...
kernel.c (mrb_cmp_m): use mrb_equal instead of mrb_obj_equal.
2022-10-29 16:29:26 +09:00
fn ⌃ ⌥
55c423fc55
kernel.c (mrb_cmp_m): use mrb_equal instead of mrb_obj_equal.
...
`Kernel#<=>` should also call `#==` to check if the objects are equal.
2022-10-28 06:19:37 -07:00
Yukihiro "Matz" Matsumoto
63c0abeabd
Merge pull request #5835 from mattn/windows-errno
...
use WSAGetLastError() for errno on Windows
2022-10-28 18:13:39 +09:00
Yasuhiro Matsumoto
fd5e3654c4
use WSAGetLastError() for errno on Windows
2022-10-28 17:17:09 +09:00
Yukihiro "Matz" Matsumoto
5ccca7e45b
mruby-bigint/bigint.c (udiv): skip loop if xd<yd.
2022-10-28 17:01:46 +09:00
Yukihiro "Matz" Matsumoto
02f44d76fc
codegen.c: stop peephole optimization for headless case statement.
...
This fixes #5815
2022-10-28 15:57:35 +09:00
Yukihiro "Matz" Matsumoto
9ff247c5c2
Revert "codegen.c: exit headless case early if a condition is always true"
...
This reverts commit e5b32e559860073632fc7b69cb98b90f2c069e81; ref #5815
2022-10-28 15:54:40 +09:00
Yukihiro "Matz" Matsumoto
604d7e9c86
mruby-bigint/bigint.c (mpz_mul_2exp): move mpz_clear() call.
...
No need to call mpz_clear() after mpz_move().
2022-10-28 15:36:34 +09:00
Yukihiro "Matz" Matsumoto
5f5109b72b
Merge pull request #5815 from FnControlRuby/case
...
codegen.c: exit headless `case` early if a condition is always true
2022-10-28 15:36:22 +09:00
Yukihiro "Matz" Matsumoto
4f8ab59e79
Merge pull request #5819 from FnControlRuby/allocate
...
class.c (mrb_instance_alloc): raise error if NilClass/FalseClass
2022-10-28 15:19:24 +09:00
Yukihiro "Matz" Matsumoto
bb67008663
Merge pull request #5832 from FnControlRuby/comparable
...
Fix `Comparable#clamp` with range
2022-10-27 18:13:40 +09:00
Yukihiro "Matz" Matsumoto
5ee42ff1dd
Merge pull request #5833 from jbampton/remove-coding-utf-8-ruby
...
Remove `# coding: utf-8` from Ruby files
2022-10-27 18:11:54 +09:00
Yukihiro "Matz" Matsumoto
8a67a26104
mruby-pack/pack.c (unpack): check if the given length is positive.
...
To avoid out-of-bound array access.
2022-10-27 16:32:05 +09:00
John Bampton
44db4f18d3
Remove # coding: utf-8 from Ruby files
...
The default script encoding is Encoding::UTF-8 after v2.0.
https://ruby-doc.org/core-2.1.2/Encoding.html#class-Encoding-label-Script+encoding
2022-10-27 04:43:13 +10:00
fn ⌃ ⌥
c1697a9c4e
kernel.c (mrb_cmp_m): implement Kernel#<=>
2022-10-26 09:04:29 -07:00
fn ⌃ ⌥
3adae7d237
mruby-compar-ext/compar.rb (clamp): fix range support.
...
Also, raise error if any comparison among min, max, and self
returns nil.
2022-10-26 09:02:32 -07:00
Yukihiro "Matz" Matsumoto
a8a8e7fbd8
Merge pull request #5831 from jbampton/fix-spelling
...
Fix spelling: `floating point` -> `floating-point`
2022-10-27 00:29:32 +09:00
Yukihiro "Matz" Matsumoto
b49eb72a5a
Merge pull request #5830 from jbampton/remove-semi-colons-ruby
...
Remove unneeded trailing semi-colons from Ruby files
2022-10-27 00:28:54 +09:00
John Bampton
8208a836ff
Fix spelling: floating point -> floating-point
...
https://en.wikipedia.org/wiki/Floating-point_arithmetic
2022-10-27 00:09:12 +10:00
John Bampton
7870409cf1
Remove unneeded trailing semi-colons from Ruby files
2022-10-26 23:48:27 +10:00
Yukihiro "Matz" Matsumoto
7eb6d626f5
update pre-commit-config by rake checkupdate; ref #5816
2022-10-26 22:10:38 +09:00
Yukihiro "Matz" Matsumoto
eba36f5991
Merge pull request #5827 from jbampton/c-remove-extra-semicolon
...
Remove unneeded trailing semi-colons from `C` files
2022-10-26 22:10:22 +09:00
Yukihiro "Matz" Matsumoto
e678af175e
Merge pull request #5829 from jbampton/fiber-c-fix-grammar
...
fiber.c: fix grammar
2022-10-26 22:09:58 +09:00
Yukihiro "Matz" Matsumoto
f18a75e1dc
Merge pull request #5828 from jbampton/add-hooks-for-tabs
...
pre-commit: add hooks `forbid-tabs` and `remove-tabs`
2022-10-26 22:09:21 +09:00
John Bampton
da4d7d4bc6
fiber.c: fix grammar
...
`suspend` -> `suspended`
2022-10-26 22:48:01 +10:00
John Bampton
aab7bc0023
pre-commit: add hooks forbid-tabs and remove-tabs
...
The indentation settings have been taken from the `.editorconfig` file
https://github.com/Lucas-C/pre-commit-hooks
2022-10-26 21:33:32 +10:00
John Bampton
664c9e533b
Remove unneeded trailing semi-colons from C files
2022-10-26 20:07:18 +10:00
Yukihiro "Matz" Matsumoto
52a3dc2153
Merge pull request #5825 from jbampton/add-pre-commit-hook
...
pre-commit: add hook `check-shebang-scripts-are-executable`
2022-10-26 18:55:18 +09:00
Yukihiro "Matz" Matsumoto
ce9918d45c
Merge pull request #5824 from jbampton/tasks-rake-doc-macos
...
tasks: enable rake docs to open on macOS
2022-10-26 18:53:32 +09:00
Yukihiro "Matz" Matsumoto
1aa77c9f23
Merge pull request #5826 from jbampton/replace-gsub-with-tr
...
Replace `gsub` with `tr`
2022-10-26 18:04:32 +09:00
Yukihiro "Matz" Matsumoto
580134e07a
Merge pull request #5823 from jbampton/remove-travis-button
...
docs: remove unused Travis CI button from README
2022-10-26 18:03:26 +09:00
Yukihiro "Matz" Matsumoto
f718408371
Merge pull request #5822 from jbampton/assert-remove-comma
...
Remove unneeded trailing comma from `assert_equal` statement
2022-10-26 17:42:36 +09:00
John Bampton
1626758ccc
Replace gsub with tr
...
Using `tr` is faster than `gsub` when replacing a single character in a string with another single character
2022-10-26 18:17:17 +10:00
John Bampton
1d37f75add
pre-commit: add hook check-shebang-scripts-are-executable
...
chmod +x ./mrbgems/mruby-bin-config/mruby-config
https://github.com/pre-commit/pre-commit-hooks#check-shebang-scripts-are-executable
2022-10-26 16:37:17 +10:00
John Bampton
1bf9ed196c
tasks: enable rake docs to open on macOS
...
The `xdg-open` command is not available on macOS.
macOS uses the `open` command.
Add info to install doxygen on macOS with Homebrew.
https://formulae.brew.sh/formula/doxygen
2022-10-26 15:39:10 +10:00
John Bampton
2e3861ff7c
docs: remove unused Travis CI button from README
...
The building on travis-ci.org is ceased.
2022-10-26 14:40:20 +10:00
Yukihiro "Matz" Matsumoto
20617017df
Merge pull request #5821 from jbampton/standardize-md-lists
...
docs: standardize Markdown lists
2022-10-26 13:12:56 +09:00
John Bampton
b049a71582
Remove unneeded trailing comma from assert_equal statement
2022-10-26 13:58:53 +10:00
John Bampton
696226a60e
docs: standardize Markdown lists
...
Previously for lists we were using both `*` and `-` to start the list items.
This pr changes all lists to use `-`.
2022-10-26 13:09:41 +10:00
Yukihiro "Matz" Matsumoto
0ae85c9233
Merge pull request #5816 from jbampton/add-target
...
Makefile/Rakefile: add checkupdate target
2022-10-26 11:20:25 +09:00
John Bampton
72f22afc99
Makefile/Rakefile: add checkupdate target
...
Runs `pre-commit autoupdate`
2022-10-26 12:04:59 +10:00
Yukihiro "Matz" Matsumoto
a1cdb3240e
Merge pull request #5820 from FnControlRuby/nil
...
Implement `nil.to_c` and `nil.to_r`
2022-10-26 07:32:19 +09:00
Yukihiro "Matz" Matsumoto
fe5191398a
mruby-set: rename mrb_set.rb to set.rb.
2022-10-25 16:59:49 +09:00
Yukihiro "Matz" Matsumoto
e3f74074ba
mruby-set: remove intialize_{dup,clone}.
2022-10-25 16:58:31 +09:00
Yukihiro "Matz" Matsumoto
1152c43039
mruby-set: remove taint/untaint which are no longer exist.
2022-10-25 16:57:24 +09:00
fn ⌃ ⌥
c65200cb5a
complex.rb: implement Numeric#to_c
2022-10-24 17:31:52 -07:00
fn ⌃ ⌥
7801741790
complex.c: implement nil.to_c
2022-10-24 17:31:52 -07:00
fn ⌃ ⌥
f3ec5f744f
rational.c: implement nil.to_r and Float#to_r
2022-10-24 17:31:52 -07:00
fn ⌃ ⌥
91f8245a0c
class.c (mrb_instance_alloc): raise error if NilClass/FalseClass.
...
MRB_TT_FALSE is equal to 0, so we have to explicitly check if the
class is either NilClass or FalseClass.
2022-10-24 07:57:28 -07:00
Yukihiro "Matz" Matsumoto
7cf3b57cba
mruby-set/mrb_set.rb (<=>): update definition.
...
Set#<=> needs to be comparing sets to be subset/superset relation.
2022-10-24 07:53:52 +09:00
Yukihiro "Matz" Matsumoto
7acf756b6f
mruby-set/mrb_set.rb: add __ prefix to internal methods.
2022-10-24 07:44:21 +09:00
Yukihiro "Matz" Matsumoto
ca0db4a161
mruby-set/README.md: more cleanup after #5814
2022-10-24 07:42:53 +09:00
Yukihiro "Matz" Matsumoto
b1fd3dc160
mruby-set/mrbgem.rake; remove test dependency to mruby-metaprog.
...
mruby-set no longer depends on mruby-metaprog by introducing the
internal `_hash` method.
2022-10-24 07:42:52 +09:00
Yukihiro "Matz" Matsumoto
e9ee0f2953
mruby-set/set.rb (_hash): add utility function to access internal hash.
...
Since `instance_variable_get` is no longer in the core.
2022-10-24 07:42:52 +09:00
Yukihiro "Matz" Matsumoto
d5e13a7f2a
mruby-set/set.rb (do_with_enum): prefix _ to internal method.
2022-10-24 07:41:30 +09:00
Yukihiro "Matz" Matsumoto
59162ceb4e
Merge pull request #5817 from FnControlRuby/set
...
mrb_set.rb: improve ruby/spec compliance.
2022-10-24 07:41:20 +09:00
fn ⌃ ⌥
b0a494c414
mrb_set.rb: improve ruby/spec compliance.
...
- Alias `#===` to `#include?`
- Alias `#filter!` to `#select!`
- Fix `#subset?` and `#proper_subset?` for Set-like objects.
- Fix `#==`
- Fix `#inspect` for self-referencing sets.
- Add `#<=>` and `#join`
2022-10-23 07:42:25 -07:00
Yukihiro "Matz" Matsumoto
f5824029ad
Merge pull request #5814 from jbampton/mruby-set-docs
...
Clean up the mruby-set README
2022-10-22 22:57:22 +09:00
fn ⌃ ⌥
fee8f540c6
parse.y: fix return/break/next with method call with args and block
2022-10-21 20:01:08 -07:00
fn ⌃ ⌥
e5b32e5598
codegen.c: exit headless case early if a condition is always true
2022-10-21 20:00:44 -07:00
John Bampton
f78fdecfc8
Clean up the mruby-set README
2022-10-22 12:25:29 +10:00
Yukihiro "Matz" Matsumoto
2d57967afa
Merge pull request #5813 from jbampton/fix-pre-commit
...
gha: fix pre-commit
2022-10-22 07:50:03 +09:00
John Bampton
2ebb001e76
gha: fix pre-commit
...
Run `pre-commit run --all-files`
2022-10-22 08:31:38 +10:00
Yukihiro "Matz" Matsumoto
e8e7887efe
Merge pull request #5809 from dearblue/dep-mruby-proc-binding
...
Needs `mruby-proc-ext` by `mruby-proc-binding`
2022-10-22 00:34:05 +09:00
Yukihiro "Matz" Matsumoto
d459b82c35
Merge pull request #5810 from dearblue/add-depends
...
Add default sauce to `#add_dependency`
2022-10-22 00:33:52 +09:00
dearblue
bbb04d257f
Add default sauce to #add_dependency
2022-10-21 22:27:20 +09:00
dearblue
6adbbd8773
Needs mruby-proc-ext by mruby-proc-binding
...
The `mruby-proc_source_location()` function used in `src/proc-binding.c` of `mruby-proc-binding` is defined in `mruby-proc-ext`.
2022-10-21 21:44:06 +09:00
Yukihiro "Matz" Matsumoto
63f7db0fba
stdlib.gembox: add mruby-set gem.
2022-10-21 14:14:51 +09:00
Yukihiro "Matz" Matsumoto
dad0852944
mruby-set/mrbgem.rake: add test dependency.
...
The `instance_variable_get` has been separated to `mruby-metaprog` gem,
so we need to specify the gem as test dependency.
2022-10-21 14:12:10 +09:00
Yukihiro "Matz" Matsumoto
4c86a7a5c3
Add 'mrbgems/mruby-set/' from commit '68334311ac7386eef84f3034a256e7135a87625d'
...
git-subtree-dir: mrbgems/mruby-set
git-subtree-mainline: 3b55a09f91
git-subtree-split: 68334311ac
2022-10-21 13:56:07 +09:00
Yukihiro "Matz" Matsumoto
3b55a09f91
mruby-hash-ext/hash.c (hash_values_at): early return from the function.
2022-10-21 13:41:38 +09:00
Yukihiro "Matz" Matsumoto
33f97bccba
array.c (mrb_ary_unshift): use mrb_get_argc() and mrb_get_argv().
2022-10-21 13:31:32 +09:00
Yukihiro "Matz" Matsumoto
c27ae4337d
mruby-array-ext/array.c (mrb_ary_values_at): avoid mrb_get_args().
...
If your function doesn't call VM recursively, you can use mrb_get_argv()
instead of mrb_get_args(mrb, "*", ...).
2022-10-20 19:07:25 +09:00
Yukihiro "Matz" Matsumoto
da8ef29fba
array.c (mrb_ary_push_m): fixed a stupid bug.
2022-10-19 17:14:49 +09:00
Yukihiro "Matz" Matsumoto
cd17e177a7
Merge pull request #5808 from FnControlRuby/regx
...
parse.y: fix NODE_REGX dump
2022-10-19 17:12:50 +09:00
fn ⌃ ⌥
6ba44f64d5
parse.y: fix NODE_REGX dump
2022-10-18 20:56:00 -07:00
Yukihiro "Matz" Matsumoto
bdb51d1af4
array.c (mrb_ary_push_m): adjust function order.
...
ary_modify() and ary_expand_capa() may cause garbage collection and may
make argv invalid (in the future).
2022-10-18 17:11:07 +09:00
Yukihiro "Matz" Matsumoto
3f286f1bfd
array.c: make ary_modify_check() an alias to mrb_check_frozen().
2022-10-17 21:59:22 +09:00
Yukihiro "Matz" Matsumoto
84c26870d2
mruby-errno/errno.c (mrb_errno_list): no need to check array type here.
2022-10-16 23:20:49 +09:00
Yukihiro "Matz" Matsumoto
5c2f3f72a4
mruby-array-ext/array.c (mrb_ary_slice_bang): refactor.
...
Use `mrb_ary_new_from_value()` instead of adding individual elements
using a loop.
2022-10-15 08:46:48 +09:00
Yukihiro "Matz" Matsumoto
d84daa56fa
mruby-struct/struct.c (mrb_struct_modify): remove the write barrier.
...
Instead of calling write barriers (mrb_write_barrier) in the function,
call field write barriers (mrb_field_write_barrier_value) from the
individual functions.
2022-10-14 15:54:09 +09:00
Yukihiro "Matz" Matsumoto
6c40d64327
mruby-struct/struct.c: refactoring.
2022-10-13 23:12:53 +09:00
Yukihiro "Matz" Matsumoto
af9ce1f64c
mruby-struct/struct.c: adjust spaces.
2022-10-12 22:02:21 +09:00
Yukihiro "Matz" Matsumoto
37a3252ed3
mruby-struct/struct.c: need to use MRB_TT_STRUCT.
2022-10-11 23:24:19 +09:00
Yukihiro "Matz" Matsumoto
83fc75f399
doc/guides/mrbconf.md: update description for the configuration file.
2022-10-10 22:28:51 +09:00
Yukihiro "Matz" Matsumoto
e19d55dbdd
AUTHORS: update entries [ci skip]
2022-10-10 22:23:11 +09:00
Yukihiro "Matz" Matsumoto
4cefb2cccd
class.c (mt_get): fix a bug regarding inline method cache.
2022-10-10 22:23:10 +09:00
Yukihiro "Matz" Matsumoto
16a224e25d
mrbconf.h: add MRB_USE_INLINE_METHOD_CACHE option description.
...
Currently it does not improve the performance (yet).
2022-10-10 22:23:10 +09:00
Yukihiro "Matz" Matsumoto
5d1d58d4d1
Merge pull request #5805 from dearblue/doc/another-bigint
...
Add `examples/mrbgems/mruby-YOUR-bigint`
2022-10-10 19:52:30 +09:00
Yukihiro "Matz" Matsumoto
c01587672d
Merge pull request #5806 from dearblue/doc/mrbconf
...
Induce configuration to the `build_config` file
2022-10-10 19:51:08 +09:00
dearblue
6f80f09547
Induce configuration to the build_config file
2022-10-10 18:22:05 +09:00
dearblue
8f0dba2985
Add examples/mrbgems/mruby-YOUR-bigint
2022-10-10 14:12:53 +09:00
Yukihiro "Matz" Matsumoto
9fe5fc441a
Merge pull request #5803 from bovi/patch-1
...
Update year in LICENSE file
2022-10-10 00:13:50 +09:00
Daniel Bovensiepen Li
c47038462f
Update year to 2022 in mruby.h
2022-10-09 17:02:27 +08:00
Daniel Bovensiepen Li
8717ef86c0
Update year in LICENSE file
2022-10-09 15:40:06 +08:00
Yukihiro "Matz" Matsumoto
95bf3c0d99
Merge pull request #5802 from dearblue/doc/addfiles
...
Additional file patterns to be documented
2022-10-07 12:05:31 +09:00
Yukihiro "Matz" Matsumoto
daf2e23487
Merge pull request #5801 from dearblue/doc/call-seq
...
Corrected document directive to "call-seq"
2022-10-07 12:04:59 +09:00
Yukihiro "Matz" Matsumoto
27619cebc0
mruby.h: update documentation for mrb_singleton_class(); ref #5800
2022-10-07 12:03:28 +09:00
Yukihiro "Matz" Matsumoto
5d13733352
vm.c (OP_ENTER): address fast path.
...
For method of fixed arguments only (no rest arguments, no keyword
arguments). Makes Fibonacci benchmark and ao_bench 4-5% faster.
2022-10-07 12:01:13 +09:00
Yukihiro "Matz" Matsumoto
df8295cbeb
Merge pull request #5800 from dearblue/doc/singleton-class
...
Added documentation for `mrb_singleton_class()`
2022-10-07 12:01:02 +09:00
dearblue
911c81e0f1
Additional file patterns to be documented
2022-10-06 21:57:43 +09:00
dearblue
366185a54d
Corrected document directive to "call-seq"
2022-10-06 21:56:38 +09:00
dearblue
dbc78cd861
Added documentation for mrb_singleton_class()
2022-10-06 21:56:07 +09:00
Yukihiro "Matz" Matsumoto
52562f7dcc
Merge pull request #5799 from mruby/dependabot/github_actions/github/super-linter-4.9.7
...
build(deps): bump github/super-linter from 4.9.6 to 4.9.7
2022-10-05 23:13:09 +09:00
Yukihiro "Matz" Matsumoto
78c8b649e7
mruby-print/print.c: small refactoring.
...
Inline `printstr` function which is called from only one place.
2022-10-05 23:11:11 +09:00
dependabot[bot]
5f4b83f7c1
build(deps): bump github/super-linter from 4.9.6 to 4.9.7
...
Bumps [github/super-linter](https://github.com/github/super-linter ) from 4.9.6 to 4.9.7.
- [Release notes](https://github.com/github/super-linter/releases )
- [Changelog](https://github.com/github/super-linter/blob/main/docs/release-process.md )
- [Commits](https://github.com/github/super-linter/compare/v4.9.6...v4.9.7 )
---
updated-dependencies:
- dependency-name: github/super-linter
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2022-10-05 14:08:56 +00:00
Yukihiro "Matz" Matsumoto
268f6dcab3
numeric.c (mrb_float_to_integer): isinf/isnan takes any float values.
...
So don't need to cast to `float`, just use `mrb_float`.
2022-10-04 11:05:15 +09:00
Yukihiro "Matz" Matsumoto
62e0e3eebe
class.c (mrb_get_args_a): adjust spacing [ci skip]
2022-10-04 11:05:15 +09:00
Yukihiro "Matz" Matsumoto
ea1bc39b52
mruby-proc-ext/proc.c (mrb_proc_inspect): update the format.
2022-10-04 11:05:15 +09:00
Yukihiro "Matz" Matsumoto
e7e22ec6a8
mruby-method/method.c (method_to_s): add location information.
...
Test updated too.
2022-10-04 11:05:14 +09:00
Yukihiro "Matz" Matsumoto
0c9fd9cffd
Merge pull request #5798 from boahc077/github_actions_token_permission
...
ci: add minimum GitHub token permissions for workflows
2022-10-04 11:05:07 +09:00
Ashish Kurmi
34c640b8be
ci: add minimum GitHub token permissions for workflows
...
Signed-off-by: Ashish Kurmi <akurmi@stepsecurity.io >
2022-10-02 10:15:55 -07:00
Yukihiro "Matz" Matsumoto
751ac378bd
codegen.c: should not skip rhs array; fix #5797
...
When the value of multiple assignment taken, the rhs array needs to be
generated anyway.
2022-10-01 15:18:45 +09:00
Yukihiro "Matz" Matsumoto
db7d40be85
mruby-proc-ext/proc.c (mrb_proc_parameters): disclose unnamed arguments.
...
Unnamed arguments (*, **, &) should be disclosed in the parameter list.
The test is also updated.
2022-09-30 22:19:59 +09:00
Yukihiro "Matz" Matsumoto
7ced009d4c
mruby-proc-ext/proc.c (mrb_proc_parameters): unify conditions.
2022-09-30 22:19:58 +09:00
Yukihiro "Matz" Matsumoto
3d766aa1ef
mruby-proc-ext/proc.c (mrb_proc_parameters): count arguments first.
...
Instead of approximating using `irep->nlocals-1` (which should be bigger
than argument numbers).
2022-09-30 22:19:36 +09:00
Yukihiro "Matz" Matsumoto
3a2de4af00
mruby-proc-ext/proc.c (mrb_proc_parameters): skip empty block slot.
...
Unlike other formal arguments, a block argument has an empty slot even
when the block is not given.
2022-09-30 07:49:44 +09:00
Yukihiro "Matz" Matsumoto
7667b0fc04
mruby-proc-ext/proc.c (mrb_proc_parameters): reformat.
2022-09-30 07:43:57 +09:00
Yukihiro "Matz" Matsumoto
3c16423c0a
mruby-method/method.c (method_to_s): making it compatible with CRuby.
2022-09-29 11:00:49 +09:00
Yukihiro "Matz" Matsumoto
b73802d437
vm.c (cipop): wrong callinfo shifts fixed; ref #5791
2022-09-28 16:57:11 +09:00
Yukihiro "Matz" Matsumoto
5e1c16653f
mruby-method/method.c (method_super_method): fixed module related bug.
...
When the method is defined in module, super_method started method
searching from wrong point. We needed to find ICLASS corresponding to the
module, then start searching super_method from the next ancestor.
2022-09-27 23:03:38 +09:00
Yukihiro "Matz" Matsumoto
0a0ab73e8d
mruby-class-ext: #subclasses should be a method of Class, not Module.
2022-09-27 23:03:23 +09:00
Yukihiro "Matz" Matsumoto
0c475708de
vm.c (cipop): use mrb_object_dead_p() to detect reclaimed block; #5791
2022-09-26 07:50:41 +09:00
Yukihiro "Matz" Matsumoto
993c8c1053
gc.c (final_marking_phase): move exception clearing after marking; #5789
2022-09-24 23:08:28 +09:00
Yukihiro "Matz" Matsumoto
d9061bd969
numeric.c: update documents [ci skip].
2022-09-23 22:13:28 +09:00
Yukihiro "Matz" Matsumoto
a04b09d535
Merge pull request #5796 from dearblue/bigint-readme
...
Small improves for `mrbgems/mruby-bigint/README.md` [ci skip]
2022-09-22 10:53:57 +09:00
dearblue
b7069dba41
Small improves for mrbgems/mruby-bigint/README.md [ci skip]
...
- Add a period at the end of the line because markdown will combine lines if there are no blank lines.
- Enable link to `README-fgmp.md`.
2022-09-21 22:50:47 +09:00
Yukihiro "Matz" Matsumoto
07470eb538
mruby-exit.c: make exit() to raise SystemExit exception.
...
Now it allows error handlers to work, unlike `exit!`.
2022-09-21 22:37:23 +09:00
Yukihiro "Matz" Matsumoto
11504318b8
string-ext/string.rb: String#prepend to take multiple arguments.
2022-09-20 18:31:04 +09:00
Yukihiro "Matz" Matsumoto
4cba1b49c0
string-ext/string.c: String#concat to take multiple arguments.
2022-09-20 18:26:23 +09:00
Yukihiro "Matz" Matsumoto
a4099ff776
enum-ext/enum.rb: add Enumerable#sum
2022-09-19 12:31:11 +09:00
Yukihiro "Matz" Matsumoto
81f98a3925
vm.c (cipop): check type of the callinfo::blk; fix #5791
...
Since `callinfo::blk` is not marked in the GC, it may be reclaimed in
the sweep phase. When it reclaimed, it will become either (a) a non Proc
object, or (b) a Proc object that happen to have the same address.
For case (a), adding `b->tt == MRB_TT_PROC` check works. We should avoid
the following `MRB_PROC_STRICT_P()` and `MRB_PROC_ENV()` operations for
non Proc objects.
For case (b), `MRB_PROC_ENV(b) == CI_ENV(&c->ci[-1])` check should work.
Unrelated Proc objects should be filtered by the check.
We don't need to clear `callinfo::blk` by `NULL` because the callinfo
struct will be discarded afterward in the `cipop()` function.
2022-09-19 08:35:36 +09:00
Yukihiro "Matz" Matsumoto
5b62fbc0fc
array.c (mrb_ary_concat_m): Array#concat to take multiple arguments.
2022-09-19 08:25:00 +09:00
Yukihiro "Matz" Matsumoto
9caa4d642c
errno.rb: fixed a typo.
2022-09-18 08:01:07 +09:00
Yukihiro "Matz" Matsumoto
3d125aeb89
errno.c (mrb_exxx_init): simplify the function.
...
Code duplication with mrb_sce_init has been unified.
2022-09-18 07:59:36 +09:00
Yukihiro "Matz" Matsumoto
db536da412
errno.c (mrb_sce_sys_fail): SystemCallError may be overridden; fix #5793
2022-09-18 00:07:28 +09:00
Yukihiro "Matz" Matsumoto
a5d7326eaa
Merge pull request #5795 from jbampton/pre-commit-autoupdate
...
pre-commit autoupdate, fix spelling, update codespell.txt
2022-09-18 00:06:36 +09:00
John Bampton
2990aaa343
pre-commit autoupdate, fix spelling, update codespell.txt
...
https://pre-commit.com/#pre-commit-autoupdate
2022-09-18 00:22:55 +10:00
Yukihiro "Matz" Matsumoto
71d5cae016
Merge pull request #5792 from dearblue/stderr
...
Retrieve the `StandardError` class from `mrb_state`
2022-09-17 22:48:50 +09:00
Yukihiro "Matz" Matsumoto
dd5a9f74d8
Merge pull request #5794 from jbampton/fix-makefile
...
Fix Makefile. Change `lint` to `check`
2022-09-17 22:45:38 +09:00
John Bampton
d0ba1fb3ca
Fix Makefile. Change lint to check
2022-09-17 23:23:35 +10:00
dearblue
50ea98e76d
Retrieve the StandardError class from mrb_state
2022-09-17 22:03:52 +09:00
Yukihiro "Matz" Matsumoto
a9d0e9a412
Makefile,Rakefile: rename lint target to check; #5790
...
The pre-commit check does some static analysis but the term lint is used
as static analysis of software code under the UNIX environment. So we
have renamed the target `check`.
2022-09-17 16:44:24 +09:00
Yukihiro "Matz" Matsumoto
52b2e12f07
numeric_ext.c: implement Integer#digits method.
...
Which is added in Ruby 2.4.
2022-09-17 16:43:06 +09:00
Yukihiro "Matz" Matsumoto
bd1310c9f9
gc.c (incremental_gc_finish): rename the function.
...
incremental_gc_until() are always called with MRB_GC_STATE_ROOT.
So no need to supply it from outside.
2022-09-17 16:43:06 +09:00
Yukihiro "Matz" Matsumoto
b774a004a0
Merge pull request #5790 from jbampton/add-lint-target-to-make
...
Add `lint` target to the Makefile
2022-09-17 16:41:16 +09:00
John Bampton
b466271f16
Add lint target to the Makefile
...
Add `lint` task to the Rakefile
Runs `pre-commit run --all-files`
2022-09-16 13:26:25 +10:00
Yukihiro "Matz" Matsumoto
74b8bbd8b3
TODO.md: update [ci skip]
...
Remove bigint entry that we have implemented finally.
2022-09-15 06:43:11 +09:00
Yukihiro "Matz" Matsumoto
97a419f540
gc.c (clear_error_object): need to mark class of error objects; ref #5789
2022-09-13 22:20:34 +09:00
Yukihiro "Matz" Matsumoto
b5677bff1f
gc.c (final_marking_phase): clear error objects before sweep; close #5789
...
Some error objects are referenced from `mrb_state`, and previously they
are simply marked as root objects. But when they are not referenced from
other part of the program, they are no longer used at the current incarnation.
That means we can safely reclaim their child objects (their messages and
backtrace information).
2022-09-13 07:16:38 +09:00
Yukihiro "Matz" Matsumoto
b716bf005e
mruby-range-ext/range.c: use the reference from mrb structure.
...
Avoid `mrb_class_get()` if possible.
2022-09-12 10:29:45 +09:00
Yukihiro "Matz" Matsumoto
d72d26afcb
mruby-string-ext/string.c: use the reference from mrb structure.
2022-09-12 10:27:31 +09:00
Yukihiro "Matz" Matsumoto
3662d3d9da
fixup! numeric_ext.c: use the reference from mrb structure.
2022-09-12 10:27:30 +09:00
Yukihiro "Matz" Matsumoto
fc85523cf1
numeric_ext.c: use the reference from mrb structure.
2022-09-12 10:27:29 +09:00
Yukihiro "Matz" Matsumoto
f05574606e
mruby-numeric-ext: add ceildiv test with Float and Rational.
2022-09-12 10:27:29 +09:00
Yukihiro "Matz" Matsumoto
b6d7564846
numeric_ext.rb: add Integer#ceildiv.
2022-09-12 10:27:28 +09:00
Yukihiro "Matz" Matsumoto
ed28547553
doc/guides/mrbconf.md: updates.
2022-09-12 10:27:27 +09:00
Yukihiro "Matz" Matsumoto
3d26993458
AUTHORS: update entries [ci skip]
2022-09-06 13:49:30 +09:00
Yukihiro "Matz" Matsumoto
b06fef65ea
mruby-exit.c: add reference to exit method.
...
Currently `exit` works as `exit!` (no handler). It should be fixed
soon.
2022-09-05 23:36:04 +09:00
Yukihiro "Matz" Matsumoto
d508c94f0e
mruby-exit.c: add exit! method.
2022-09-05 23:35:37 +09:00
Yukihiro "Matz" Matsumoto
6ff00810c6
Merge pull request #5788 from ksss/patch-1
...
Fix doc for limitation
2022-09-05 14:46:24 +09:00
Yuki Kurihara
9d6cb6ecff
Fix doc for limitation
...
`binding` has been supported since 3.1.0.
2022-09-05 12:12:37 +09:00
Yukihiro "Matz" Matsumoto
966d90e182
src/readfloat.c: renamed from readflt.c
2022-09-05 07:30:13 +09:00
Yukihiro "Matz" Matsumoto
4669d43f50
error.h: move rbreak_tag definitions to src/vm.c.
2022-09-05 07:30:12 +09:00
Yukihiro "Matz" Matsumoto
bf16315b70
mruby-exit/exit.c: add fallback definition of constants.
...
- EXIT_SUCCESS
- EXIT_FAILURE
2022-09-05 07:30:12 +09:00
Yukihiro "Matz" Matsumoto
9f47f11abd
math.c: update prototype style.
2022-09-05 07:30:12 +09:00
Yukihiro "Matz" Matsumoto
0cc361990c
Merge pull request #5787 from dearblue/count_objects
...
Improves `ObjectSpace.count_objects`
2022-09-05 07:30:03 +09:00
dearblue
c123c49ac4
Improves ObjectSpace.count_objects
...
- Support for `MRB_TT_STRUCT`, `MRB_TT_BREAK` and `MRB_TT_BIGINT`.
- Performs symbol value embedding with `MRB_SYM()`.
2022-09-04 20:53:18 +09:00
Yukihiro "Matz" Matsumoto
eecb6cc080
vm.c (cipush): push block information in the callinfoa; fix #5786
2022-09-01 18:57:19 +09:00
Yukihiro "Matz" Matsumoto
4f0679bb86
pack.c (pack_unpack): small refactoring.
2022-08-31 23:29:12 +09:00
Yukihiro "Matz" Matsumoto
3643f067c2
proc.h: remove unused env flags.
...
- MRB_ENV_TOUCHED
- MRB_ENV_HEAPED
2022-08-31 07:27:14 +09:00
Yukihiro "Matz" Matsumoto
15e9b09bef
pack.c (hex2int): should return signed integer.
2022-08-30 18:08:05 +09:00
Yukihiro "Matz" Matsumoto
0645c4536b
readflt.c: small style modifications.
2022-08-29 15:14:46 +09:00
Yukihiro "Matz" Matsumoto
dfeda0acc8
random.c: remove Random::DEFAULT.
2022-08-28 08:01:59 +09:00
Yukihiro "Matz" Matsumoto
8c1b2ee0bb
numeric_ext.c (int_powm): avoid integer overflow by modulo first.
...
We do not fall back to big integer calculation unless absolutely necessary.
2022-08-27 22:18:38 +09:00
Yukihiro "Matz" Matsumoto
5b1e14b96b
numeric_ext.c (int_powm): better error message.
2022-08-26 14:27:54 +09:00
Yukihiro "Matz" Matsumoto
f5a3f4f2ea
bigint.c (mpz_powm): avoid stack allocations.
2022-08-26 14:27:54 +09:00
Yukihiro "Matz" Matsumoto
b158581118
bigint.c (udiv): xx%yy should have been xx when xx<yy.
2022-08-26 14:19:10 +09:00
Yukihiro "Matz" Matsumoto
4e0da4f0d8
bigint.c (mpz_init_set): fully initialize mpz_t first.
2022-08-26 14:18:30 +09:00
Yukihiro "Matz" Matsumoto
62c36c03b3
bigint.c (mpz_set_int): fixed a bug in integer size check.
2022-08-26 12:55:29 +09:00
Yukihiro "Matz" Matsumoto
6598732892
numeric_ext.c (int_powm): try bigint pow when overflow.
2022-08-26 12:37:54 +09:00
Yukihiro "Matz" Matsumoto
b4785044d5
bigint.c (mrb_bint_powm): fix a return value bug.
2022-08-26 12:13:24 +09:00
Yukihiro "Matz" Matsumoto
ef1974099d
bigint.c (mrb_bint_powm): check zero division first.
2022-08-26 12:10:22 +09:00
Yukihiro "Matz" Matsumoto
818ca413af
symbol.c (find_symbol): use mrb_byte_hash() instead of symhash().
2022-08-25 18:50:17 +09:00
Yukihiro "Matz" Matsumoto
b832856978
Merge branch 'sasq64-get-args-array'
2022-08-24 16:50:02 +09:00
Yukihiro "Matz" Matsumoto
d4e649f8bf
class.c: refactoring mrb_get_args(); ref #5596
2022-08-24 16:49:10 +09:00
Yukihiro "Matz" Matsumoto
eaa89fbe2a
Merge branch 'get-args-array' of https://github.com/sasq64/mruby into sasq64-get-args-array
2022-08-24 16:46:00 +09:00
Yukihiro "Matz" Matsumoto
7c0f7e2665
parse.y: allow NUMPARAMs (e.g. _1) as hash keys; fix #5785
2022-08-23 18:36:26 +09:00
Yukihiro "Matz" Matsumoto
f587edd849
pack.c: need extra space for the terminal NULL.
2022-08-23 15:05:27 +09:00
Yukihiro "Matz" Matsumoto
a641f146fc
codegen.c (gen_assignment): use nsym() instead of simple type cast.
2022-08-23 11:30:54 +09:00
Yukihiro "Matz" Matsumoto
108875c972
codegen.c (gen_assignment): support NODE_COLON3 as lhs; fix #5752
...
We should allow `::C = 1` for example.
2022-08-23 07:53:23 +09:00
Yukihiro "Matz" Matsumoto
c6daaa8c07
struct.c (make_struct): use preallocated symbols.
2022-08-22 16:12:59 +09:00
Yukihiro "Matz" Matsumoto
35a5678899
mruby-pack/pack.c: make base64_dec_tab a static array of chars.
2022-08-21 19:25:16 +09:00
Yukihiro "Matz" Matsumoto
9b4bbed047
vm.c (OP_SEND): remove scoping braces; ref #5775
2022-08-20 21:24:30 +09:00
Yukihiro "Matz" Matsumoto
43c5cd2dea
Merge pull request #5775 from dearblue/integrate-super
...
Integrate the second half of `OP_SUPER` with `OP_SENDB`
2022-08-20 21:23:16 +09:00
Yukihiro "Matz" Matsumoto
c7d2eaa3e8
Revert "vm.c (mrb_funcall_with_block): avoid use of MRB_METHOD_CFUNC_P()."
...
This reverts commit c28ac75a87 .
This change caused SEGV in the case like the following:
```
class C
class << self
attr_accessor :a
alias :const_missing :a=
end
end
p C::CONST
```
2022-08-20 12:58:17 +09:00
Yukihiro "Matz" Matsumoto
563010697e
doc/guides/compile.md: add rake clean tip; ref #5784 [ci skip]
2022-08-20 12:54:30 +09:00
dearblue
9c3e0145eb
Directly write ARGUMENT_NORMALIZE()
...
The common parts of `OP_SEND` and `OP_SUPER` have been merged so they no longer need to be independent.
This effectively means revert commit d0e8637e30 .
2022-08-20 10:46:46 +09:00
dearblue
a7bfddecdb
Integrate the second half of OP_SUPER with OP_SENDB
...
Not exactly the same, but I think there were some things that should have been fixed in the original `OP_SUPER`.
2022-08-20 10:46:46 +09:00
Yukihiro "Matz" Matsumoto
28d1e794db
vm.c (mrb_funcall_with_block): need to initialize arginfo.
2022-08-19 23:17:23 +09:00
Yukihiro "Matz" Matsumoto
82b98bb8a4
vm.c (funcall_args_capture): move argument set-up in the function; #5777
2022-08-18 13:00:08 +09:00
Yukihiro "Matz" Matsumoto
c28ac75a87
vm.c (mrb_funcall_with_block): avoid use of MRB_METHOD_CFUNC_P().
2022-08-18 12:58:30 +09:00
Yukihiro "Matz" Matsumoto
772fe11d83
vm.c (stack_copy): use early return.
2022-08-18 12:57:51 +09:00
Yukihiro "Matz" Matsumoto
d577221c2d
vm.c (stack_copy) check if src is NULL before memcpy(); ref #5777
...
Because 2nd argument of memcpy() is declared to never be null.
2022-08-18 08:17:44 +09:00
Yukihiro "Matz" Matsumoto
8c08324d2f
Merge pull request #5777 from dearblue/gc-on-cipush
...
Protect prepared arguments when GC occurs in `cipush()`
2022-08-18 08:09:05 +09:00
Yukihiro "Matz" Matsumoto
490d805577
Merge pull request #5783 from jbampton/patch-1
...
Use Super-Linter Slim Image
2022-08-17 12:58:54 +09:00
John Bampton
890d48463a
Use Super-Linter Slim Image
...
Should improve workflow time.
https://github.com/github/super-linter#slim-image
2022-08-17 08:53:06 +10:00
Yukihiro "Matz" Matsumoto
993c388cce
bigint.c (mrb_bint_idiv): remove unused function.
2022-08-16 15:45:54 +09:00
Yukihiro "Matz" Matsumoto
4107cc95a2
internal.c: move some functions to <mruby/internal.h>.
...
Ref #5776
2022-08-15 18:13:59 +09:00
Yukihiro "Matz" Matsumoto
37dc1be74b
internal.c: move mrb_method_missing prototype to <mruby/internal.h>.
...
Ref #5776
2022-08-15 17:25:08 +09:00
Yukihiro "Matz" Matsumoto
db20cbce53
src/class.c: move method_missing from Kernel to BasicObject; fix #5776
...
In ISO30170, method_missing is defined under Kernel, but BasicObject is
introduced after ISO and we should move (and have moved) some Kernel
methods to BasicObject, e.g. instance_eval, equal?, etc.
We have missed method_missing (mostly because built-in method_missing
in VM handles most of the case).
2022-08-15 16:41:19 +09:00
Yukihiro "Matz" Matsumoto
6a7fa26411
Merge pull request #5782 from haramako/crash-on-resume-from-cfunc
...
Protect when call Fiber#resume from C function.
2022-08-14 17:31:56 +09:00
Yukihiro "Matz" Matsumoto
83e8fd54f4
Merge pull request #5779 from dearblue/debug.h
...
Make definition of `mrb_irep` by `typedef` in `mruby.h`
2022-08-14 17:27:11 +09:00
HARADA Makoto
dc65b1faf1
fiber.c: add fiber_check_cfunc in fiber_resume().
2022-08-13 15:52:52 +09:00
Yukihiro "Matz" Matsumoto
3365388164
Merge pull request #5780 from dearblue/doc/mrb_value
...
Match the `mrb_value` documentation to the current implementation
2022-08-13 14:06:26 +09:00
dearblue
61c68927a2
Match the mrb_value documentation to the current implementation
2022-08-12 22:35:35 +09:00
dearblue
1e72c61b0f
Make definition of mrb_irep by typedef in mruby.h
...
Eliminated invisible dependencies from `mruby/debug.h` to `mruby/irep.h`.
2022-08-12 22:25:27 +09:00
Yukihiro "Matz" Matsumoto
b891c63ae1
numeric.c: calculate correct rounding for bigger numbers.
2022-08-12 12:31:38 +09:00
Yukihiro "Matz" Matsumoto
1a95da4ac2
numeric.c (mrb_cmp): inline big-integer comparison.
2022-08-12 12:24:04 +09:00
Yukihiro "Matz" Matsumoto
d14fd77148
numeric.c (mrb_int_pow): make the function to take 2 operands.
2022-08-12 12:19:21 +09:00
Yukihiro "Matz" Matsumoto
15184c50f7
Merge pull request #5778 from dearblue/shadowing-insn
...
Avoid shadowing `insn` variables in `OP_EXT3`
2022-08-12 12:18:32 +09:00
dearblue
170118e4de
Avoid shadowing insn variables in OP_EXT3
2022-08-12 11:12:18 +09:00
dearblue
3c2fcb5e74
Protect prepared arguments when GC occurs in cipush()
...
When `cipush()` extends "callinfo", GC may occur.
In this case, there was a problem that prepared arguments were spoiled depending on the situation when `cipush()` is called.
Therefore, in the problematic part, `cipush()` is prepared first, and then the arguments are prepared.
The reason for passing `CINFO_DIRECT` to `cipush()` is that it is simply ignored in the `MRB_CATCH()` part of `mrb_vm_exec()`.
Also, the argument processing parts of `mrb_funcall_with_block()` and `mrb_yield_with_class()` are combined and made independent as `funcall_args_capture()`.
2022-08-11 15:25:29 +09:00
Yukihiro "Matz" Matsumoto
8cdf14c06b
numeric.c (int_rounding): unify code duplication.
2022-08-10 13:38:24 +09:00
Yukihiro "Matz" Matsumoto
4e735eb8ba
numeric.c (flo_rounding): refactor float rounding methods.
2022-08-10 13:38:24 +09:00
Yukihiro "Matz" Matsumoto
7ffdb4c30e
numeric.c: implement ndigits truncation for rounding methods.
...
- ceil
- floor
- round
- truncate
2022-08-10 13:38:23 +09:00
Yukihiro "Matz" Matsumoto
abec98c681
numeric.c: implement ceil, floor, round, truncate methods in C.
...
- ISO 15.2.8.3.14 Integer#ceil
- ISO 15.2.8.3.17 Integer#floor
- ISO 15.2.8.3.20 Integer#round
- ISO 15.2.8.3.26 Integer#truncate
2022-08-10 13:38:23 +09:00
Yukihiro "Matz" Matsumoto
7340ad1c8b
Merge pull request #5764 from dearblue/red-protect
...
Check `MRB_GC_RED` with `mrb_gc_protect()`
2022-08-09 23:01:55 +09:00
Yukihiro "Matz" Matsumoto
9f7cef2d42
Merge pull request #5763 from dearblue/realloc-fullgc
...
Perform Full-GC from `mrb_realloc_simple()` by `MRB_GC_STRESS + MRB_DEBUG`
2022-08-09 14:00:18 +09:00
Yukihiro "Matz" Matsumoto
78a3200fa5
etc.c (mrb_obj_id): separate object_id and hash values.
...
It's OK for hash values to conflict. But object_id is not (in theory).
2022-08-08 23:00:13 +09:00
dearblue
520df805a9
Check MRB_GC_RED with mrb_gc_protect()
...
When `gc_protect()` is called from `mrb_obj_alloc()`, unnecessary overhead is eliminated.
2022-08-08 22:10:22 +09:00
dearblue
71c398f298
Perform Full-GC from mrb_realloc_simple() by MRB_GC_STRESS + MRB_DEBUG
...
It also fills the GC'ed object area with `0xff` for debugging purposes.
2022-08-08 21:44:11 +09:00
Yukihiro "Matz" Matsumoto
f653e89227
etc.c: refactor boxing/unboxing float values.
2022-08-07 20:43:31 +09:00
Yukihiro "Matz" Matsumoto
521072ca3a
mruby-struct/struct.rb: include Enumerable module.
...
Struct.ancestors should be [Struct, Enumerable, Object, Kernel, BasicObject]
2022-08-06 16:03:26 +09:00
Yukihiro "Matz" Matsumoto
a0c02e0a64
Merge pull request #5765 from dearblue/mrb_env_unshare
...
Improve out-of-memory tolerance of `mrb_env_unshare()`
2022-08-06 16:03:11 +09:00
Yukihiro "Matz" Matsumoto
5eaef1cf25
mruby-time/time.c: properly generate hash from time objects.
2022-08-06 06:43:42 +09:00
Yukihiro "Matz" Matsumoto
579379c517
rational.c (rational_hash): generate hash code from rational numbers.
2022-08-06 06:43:42 +09:00
Yukihiro "Matz" Matsumoto
25f9d2f65a
complex.c (complex_hash): generate hash code from complex numbers.
2022-08-06 06:43:42 +09:00
Yukihiro "Matz" Matsumoto
a7c3d59971
kernel.c (mrb_obj_hash): generate hash value for big-integers.
2022-08-06 06:43:41 +09:00
Yukihiro "Matz" Matsumoto
6d683785f9
etc.c: use mrb_byte_hash instead of simple hash function.
2022-08-06 06:43:41 +09:00
Yukihiro "Matz" Matsumoto
61f447e5df
string.c (mrb_byte_hash): separate byte hashing functions.
2022-08-06 06:43:41 +09:00
Yukihiro "Matz" Matsumoto
62a35e502b
bigint.c: rename double sized mp_limb.
...
- mp_limb2 -> mp_dbl_limb
- mp_limb2s -> mp_dbl_limb_signed
2022-08-06 06:43:41 +09:00
Yukihiro "Matz" Matsumoto
1718d9bafb
bigint.c: add type cast to mp_limb.
2022-08-06 06:43:40 +09:00
Yukihiro "Matz" Matsumoto
b7bc326b4c
bigint.c (mpz_set_int): check mp_limb overflow from mrb_int.
2022-08-06 06:43:40 +09:00
Yukihiro "Matz" Matsumoto
798a2b1888
Merge pull request #5774 from dearblue/bidx-assert
...
Fixed assertion in `ARGUMENT_NORMALIZE()` for `bidx`.
2022-08-06 06:43:28 +09:00
dearblue
5bc15dd69b
Fixed assertion in ARGUMENT_NORMALIZE() for bidx.
...
It should be compared to the `irep->nregs` value as is.
At the same time, discovered problems have been fixed.
2022-08-04 22:43:06 +09:00
Yukihiro "Matz" Matsumoto
72f2ac155e
Merge pull request #5772 from mruby/dependabot/github_actions/github/super-linter-4.9.6
...
build(deps): bump github/super-linter from 4.9.5 to 4.9.6
2022-08-04 08:18:08 +09:00
Yukihiro "Matz" Matsumoto
e2decd0528
Merge pull request #5773 from jbampton/run-pre-commit
...
Remove whitespace
2022-08-04 08:17:26 +09:00
John Bampton
791410ba3f
Remove whitespace
...
pre-commit run --all-files
2022-08-04 00:51:03 +10:00
dependabot[bot]
cf8d1eddf6
build(deps): bump github/super-linter from 4.9.5 to 4.9.6
...
Bumps [github/super-linter](https://github.com/github/super-linter ) from 4.9.5 to 4.9.6.
- [Release notes](https://github.com/github/super-linter/releases )
- [Changelog](https://github.com/github/super-linter/blob/main/docs/release-process.md )
- [Commits](https://github.com/github/super-linter/compare/v4.9.5...v4.9.6 )
---
updated-dependencies:
- dependency-name: github/super-linter
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2022-08-03 14:05:47 +00:00
Yukihiro "Matz" Matsumoto
84b53fc1ee
Merge pull request #5771 from sakisakira/master
...
Reenabling building for Android NDK
2022-08-03 12:34:12 +09:00
SAkira a.k.a. Akira Suzuki
4610fa55b9
Enabled building for Android again with NDK 25.0.
2022-08-03 08:23:54 +09:00
Yukihiro "Matz" Matsumoto
441c6ea30d
bigint.c (udiv): check out of bound memory access.
2022-08-02 13:36:36 +09:00
Yukihiro "Matz" Matsumoto
75bd101685
AUTHORS: update entries [ci skip]
2022-08-02 09:04:47 +09:00
Yukihiro "Matz" Matsumoto
90e75f983e
Merge pull request #5769 from dearblue/opdef-proc
...
Protected `proc` objects given by `OP_DEF` on registers
2022-08-01 17:46:09 +09:00
Yukihiro "Matz" Matsumoto
51f404be33
Merge pull request #5768 from dearblue/hash-expansion
...
Fix property between `ar_set()` and `ht_init()`.
2022-08-01 17:37:25 +09:00
Yukihiro "Matz" Matsumoto
c32a8a71e9
Merge pull request #5767 from dearblue/fiber-gc
...
Fix `SIGSEGV` caused by GC during fiber initialization
2022-08-01 17:17:29 +09:00
Yukihiro "Matz" Matsumoto
dd00724f30
Merge pull request #5766 from dearblue/red-write-barrier
...
Ignore `MRB_GC_RED` objects in `mrb_field_write_barrier()`
2022-08-01 17:15:54 +09:00
Yukihiro "Matz" Matsumoto
c34bb7825a
mruby-time/time.c: add Time#eql? to compare.
2022-08-01 16:29:35 +09:00
Yukihiro "Matz" Matsumoto
9dfbcbae7b
object.c (mrb_equal): support big-integers.
2022-08-01 16:26:02 +09:00
Yukihiro "Matz" Matsumoto
4fb018d407
object.c (mrb_equal): shortcut per object comparison.
...
To reduce the chance to call mrb_funcall(), which is heavy and
unfriendly to fiber context switches.
2022-08-01 16:24:48 +09:00
Yukihiro "Matz" Matsumoto
585d80e0a7
numeric.c (num_eql): move eql? definition to Numeric class.
...
We no longer need Float#eql? etc.
2022-08-01 16:20:35 +09:00
Yukihiro "Matz" Matsumoto
569a8910af
bigint.c: check division by zero errors.
2022-08-01 13:58:05 +09:00
Yukihiro "Matz" Matsumoto
b5a3fe5276
Merge pull request #5770 from dearblue/doc-1
...
Avoid comparing `mrb_bool` to integer values in the documentation
2022-08-01 13:57:54 +09:00
dearblue
5215b9ce8b
Avoid comparing mrb_bool to integer values in the documentation
2022-07-31 20:38:31 +09:00
Yukihiro "Matz" Matsumoto
9198b9c7db
Merge pull request #5760 from jbampton/fix-type-use-array
...
CodeQL: fix type use array
2022-07-31 08:01:59 +09:00
Yukihiro "Matz" Matsumoto
d28009ebd8
mruby-print/print.rb: reduce explicit return values; ref #5762
...
By making __printstr__ to return nil.
2022-07-31 07:56:06 +09:00
Yukihiro "Matz" Matsumoto
a8e6b840ea
Merge pull request #5762 from dearblue/iso-puts
...
Removed unnecessary ISO section numbers for `Kernel.puts` [ci skip]
2022-07-31 07:55:46 +09:00
dearblue
2d9ecc660e
Fix property between ar_set() and ht_init().
...
If GC occurs in `mrb_realloc()` in `ht_init()` called from `ar_set()`, the following inconsistency occurs:
- If `h_ht_on()` is called before `mrb_realloc()`, `hash->hsh.ht` is referenced instead of `hash->hsh.ea` during GC.
- If the pointer is changed by `ea_adjust()` in `ar_set()`, `hash->hsh.ea` (`hash->hsh.ht`) is referenced in GC before the change.
These modifications can be resolved by changing the order of processing.
However, if a `NoMemoryError` exception is raised, it is presumed that the size of the "AR" will be exceeded and the unintended state will continue.
To prevent this, elements should be added after they have been converted to "HT".
2022-07-30 23:20:48 +09:00
dearblue
43fdce5019
Protected proc objects given by OP_DEF on registers
...
If a GC occurs in `mrb_calloc()` called by `mt_rehash()` inside `mrb_define_method_raw(), the `proc` may be destroyed.
2022-07-30 22:34:50 +09:00
dearblue
a82a3533e6
Fix SIGSEGV caused by GC during fiber initialization
...
GC may occur in the `c->stbase = mrb_malloc()` part of the `fiber_init()` function.
The `SIGSEGV` happens because it references the `c->ci->stack` field without checking `c->ci`.
This is caused by #5272 .
2022-07-30 22:32:02 +09:00
dearblue
2eefee0d6a
Ignore MRB_GC_RED objects in mrb_field_write_barrier()
2022-07-30 22:32:01 +09:00
dearblue
be3c0e5f4f
Improve out-of-memory tolerance of mrb_env_unshare()
...
Exception raising can now be controlled by the caller.
The main purpose on this patch is:
- Suppress exceptions from `obj_free()` in `src/gc.c` with `mrb_env_unshare()`.
- Consider the possibility that calls to `mrb_malloc()` may cause `e` objects to be subject to GC.
When control is returned to `mrb_env_unshare()`, `struct free_obj::next` in the same offset as `struct REnv::stack` is rewritten.
Unexpected results then occur when the object is reused.
Also, if `mrb_heap_page` containing an `e` object is freed, it may cause `SIGSEGV` at that point.
- Protects the value of the stack on `callinfo` that just exits if GC occurs inside `mrb_env_unshare()`.
```ruby
def m
b = -> { b }
end
p m.call
# => print block object, not nil
```
This patch does not raise a `NoMemoryError` exception in `mrb_env_unshare()` and can detect that error.
Thus, the problem fixed in # 3087 is not resurrected.
Also, it may seem that this patch should suppress exceptions raised by `cipop()` during `mrb_protect_error()` and `mrb_vm_exec()` unwinds.
However, `mrb_callinfo::u.env` by `CINFO_DIRECT` is not seen to be set.
So in that case `mrb_env_unshare()` is assumed to be originally exception-free.
2022-07-30 22:32:00 +09:00
Yukihiro "Matz" Matsumoto
9e38aa8948
Merge pull request #5761 from jbampton/fix-grammar
...
docs: fix grammar
2022-07-30 15:56:48 +09:00
dearblue
2e6d2abf09
Removed unnecessary ISO section numbers for Kernel.puts [ci skip]
...
The `Kernel.puts` method is defined in the `mrbgems/mruby-print/mrblib/print.rb` file.
2022-07-30 11:54:23 +09:00
Yukihiro "Matz" Matsumoto
b77b8f4deb
numeric.c (flo_ceil_floor): negate after converting integer to float.
...
Otherwise integer negate may overflow.
2022-07-30 09:08:42 +09:00
Yukihiro "Matz" Matsumoto
9d774bc011
numeric.c (flo_ceil_floor): return bigint if possible.
2022-07-30 09:08:02 +09:00
Yukihiro "Matz" Matsumoto
eb392cb643
numeric.c (mrb_float_to_integer): check for RangeError.
...
Otherwise flo_to_i raises FloatDomainError instead.
2022-07-30 09:06:49 +09:00
Yukihiro "Matz" Matsumoto
e4bcd8a96a
numeric.c (mrb_float_to_integer): unify with flo_to_i().
2022-07-30 09:05:21 +09:00
Yukihiro "Matz" Matsumoto
5af98f2088
numeric.c (flo_ceil_floor): add exact number check.
2022-07-30 09:01:24 +09:00
Yukihiro "Matz" Matsumoto
aebf75fed4
bigint.c (mrb_bint_as_int): change overflow message.
...
From "integer too big" to "integer out of range" because the integer can
be too small if it's negative.
2022-07-30 08:58:30 +09:00
Yukihiro "Matz" Matsumoto
b8d3bc0eae
numeric.c: move FloatDomainError description to the sufficient place.
2022-07-30 08:46:06 +09:00
Yukihiro "Matz" Matsumoto
89b0c7d7ab
complex.c (mrb_complex_to_i): return bigint if possible.
2022-07-30 08:44:15 +09:00
Yukihiro "Matz" Matsumoto
273ca4d4f6
tasks/toolchains/gcc.rake: remove -lm on Windows; #5757
2022-07-30 07:33:45 +09:00
Yukihiro "Matz" Matsumoto
6da34fa735
numeric.c (int_div): add checks for division by zero.
2022-07-29 17:48:02 +09:00
John Bampton
9521e4e974
docs: fix grammar
2022-07-29 16:30:46 +10:00
John Bampton
5cae37abe5
CodeQL: fix type use array
2022-07-29 14:44:02 +10:00
Yukihiro "Matz" Matsumoto
387f383eeb
bigint.c (mrb_sizeinbase): cast to remove a signedness warning.
2022-07-29 10:26:04 +09:00
Yukihiro "Matz" Matsumoto
5df3f8221d
bigint.c (lzb): check x==0 before calling clz().
...
In theory, we should not call lzb() with 0, and we assume checks are
done before calling it. But we got a report that we call lzb(0) in some
use-case. We could not reproduce the issue, so we add this guard.
2022-07-29 10:24:41 +09:00
Yukihiro "Matz" Matsumoto
64ea7f0930
doc/guides/link.md: fixed typo.
2022-07-29 10:24:41 +09:00
Yukihiro "Matz" Matsumoto
23cb2a73ff
bigint.c (mpz_move): reduce copying of digits arrays.
2022-07-29 10:24:41 +09:00
Yukihiro "Matz" Matsumoto
dcf9e32870
Merge pull request #5759 from jbampton/lint-modified-files
...
Super-Linter: Lint modified files only
2022-07-29 10:24:01 +09:00
John Bampton
9ddc6c1915
Super-Linter: Lint modified files only
...
Following the basic example shown here
https://github.com/github/super-linter#example-connecting-github-action-workflow
2022-07-29 09:19:28 +10:00
Yukihiro "Matz" Matsumoto
33b11daca7
Merge pull request #5758 from jbampton/pre-commit-autoupdate
...
pre-commit autoupdate
2022-07-29 07:43:59 +09:00
John Bampton
718547be2b
pre-commit autoupdate
...
https://pre-commit.com/#pre-commit-autoupdate
2022-07-29 08:29:12 +10:00
Yukihiro "Matz" Matsumoto
d0780c0525
vm.c: should cast bigint length to unsigned.
...
Otherwise length>127 would be considered as negative.
2022-07-28 15:21:32 +09:00
Yukihiro "Matz" Matsumoto
de2ea3c389
bigint.c (udiv): avoid integer underflow.
2022-07-28 15:07:22 +09:00
Yukihiro "Matz" Matsumoto
9592b7e4ec
mruby_proto_fuzzer.cpp: try to print the code before evaluating it.
2022-07-27 13:42:28 +09:00
Yukihiro "Matz" Matsumoto
4620485135
Merge pull request #5756 from mruby/dependabot/github_actions/github/super-linter-4.9.5
...
build(deps): bump github/super-linter from 4.9.4 to 4.9.5
2022-07-27 09:23:05 +09:00
dependabot[bot]
a65f953356
build(deps): bump github/super-linter from 4.9.4 to 4.9.5
...
Bumps [github/super-linter](https://github.com/github/super-linter ) from 4.9.4 to 4.9.5.
- [Release notes](https://github.com/github/super-linter/releases )
- [Changelog](https://github.com/github/super-linter/blob/main/docs/release-process.md )
- [Commits](https://github.com/github/super-linter/compare/v4.9.4...v4.9.5 )
---
updated-dependencies:
- dependency-name: github/super-linter
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2022-07-26 14:09:39 +00:00
Yukihiro "Matz" Matsumoto
25a32ed681
bigint.c (ulshift,urshift): check uzero before actual shifting.
...
Bit-shifting zero always result in zero.
2022-07-26 15:06:06 +09:00
Yukihiro "Matz" Matsumoto
97b9bfc4fa
bigint.c (mpz_init_set_str): move negative trick to mrb_bint_new_str().
...
It used to take negative base to generate negative value. But this weird
trick is now belong to the mruby API side.
2022-07-26 15:03:52 +09:00
Yukihiro "Matz" Matsumoto
c2e4b82d84
codegen.c (new_litbint): remove surrounding braces.
...
It was to allow local variable declarations, but now we allow
declarations in the middle.
2022-07-26 13:55:54 +09:00
Yukihiro "Matz" Matsumoto
26ce85bd5d
bigint.c (ucmp): fixed error with zero length zero value.
...
Big integers have two kind of zero values:
- digits in `p` array are all zeros
- length `sn` is zero
The old code crashed with the latter zero.
2022-07-26 00:13:15 +09:00
Yukihiro "Matz" Matsumoto
e8ce82bf31
codegen.c (new_litbint): forgot else in a107b85.
2022-07-26 00:11:53 +09:00
Yukihiro "Matz" Matsumoto
3d1b5d2b06
Merge pull request #5754 from artichoke/lopopolo/class-name-use-after-free
...
Fix possible use after free in `mrb_class_find_path`
2022-07-25 15:41:07 +09:00
Yukihiro "Matz" Matsumoto
c6bf4eaac0
codegen.c (new_litbint): renamed from new_litbn.
2022-07-25 15:33:43 +09:00
Yukihiro "Matz" Matsumoto
a107b850eb
codegen.c (new_bitbn): fixed wrong packing of integer radix.
2022-07-25 15:31:43 +09:00
Yukihiro "Matz" Matsumoto
d2d105b589
bigint.c (mpz_get_int): should work with zero (i.e. y->p == NULL).
2022-07-25 14:54:41 +09:00
Yukihiro "Matz" Matsumoto
6a4c8e36b5
bigint.c (udiv): should trim remainder before bit shifting.
2022-07-25 14:54:41 +09:00
Yukihiro "Matz" Matsumoto
e02e9ae434
bigint.c (mpz_mmod): should call mpz_clear() for internal mpz_t.
2022-07-25 14:54:41 +09:00
Yukihiro "Matz" Matsumoto
7d5475916c
bigint.c (udiv): avoid out of bound access in division.
2022-07-25 14:54:40 +09:00
Yukihiro "Matz" Matsumoto
657263446e
bigint.c: cosmetic changes (add spaces, etc.)
2022-07-25 14:54:40 +09:00
Yukihiro "Matz" Matsumoto
866ab88c94
mruby-os-memsize/memsize.c: add fall through comment.
2022-07-25 10:58:03 +09:00
Yukihiro "Matz" Matsumoto
13d909bd3c
array.c: new configuration MRB_ARY_LENGTH_MAX.
...
The default value is 2**17 entries. If you want to avoid the limitation,
set this value to 0.
2022-07-25 10:58:02 +09:00
Yukihiro "Matz" Matsumoto
c4cb416460
string.c: new configuration MRB_STR_LENGTH_MAX.
...
The default value is 1MB. If you want to avoid the limitation, set this
value to 0.
2022-07-25 10:58:02 +09:00
Yukihiro "Matz" Matsumoto
199758c0b9
bigint.c (mpz_sizeinbase): should return size_t instead of int.
...
`int` may overflow.
2022-07-25 10:58:02 +09:00
Ryan Lopopolo
547d465340
Fix possible use after free in mrb_class_find_path
...
`mrb_class_find_path` resolves a `char*` pointer to a class name string
by calling `mrb_class_name`. It then allocates a new string with
capacity 40 to copy that `char*` into.
https://github.com/mruby/mruby/blob/e04184185ab43b94980550e850d8813a415fa438/src/variable.c#L1111-L1112
`mrb_class_name` resolves the class name via `class_name_str`, which
returns an `mrb_value` with type tag `MRB_TT_STRING` and backed by an
`RString*`. Then `mrb_class_name` extracts the `RSTRING_PTR`:
https://github.com/mruby/mruby/blob/e04184185ab43b94980550e850d8813a415fa438/src/class.c#L2133-L2134
That `RString*`-backed `mrb_value` ultimately comes from `mrb_class_path`
which resolves the string from the symbol table:
https://github.com/mruby/mruby/blob/e04184185ab43b94980550e850d8813a415fa438/src/class.c#L2111
The allocation of the target `str` after resolving the class name
`mrb_value` and extracting its pointer is fragile and assumes the
`RString*` is "static". If the `RString*` is not static, the
interleaving of extracting the `RSTRING_PTR` followed by a subsequent
allocation might result in the class name `mrb_value` being garbage
collected, which will leave the extracted pointer invalid.
Fix this bad interleaving by allocating the destination string first
before taking a raw pointer to an `RString*`.
2022-07-24 09:33:51 -07:00
Yukihiro "Matz" Matsumoto
e04184185a
bigint.c: heavy restructuring of big-integers.
...
Instead of splitting mp_limb by bit operations (using HIGH/LOW macros),
now we use mp_limb2 (which is bigger integer size, e.g uint64_t). It
makes operations (especially mulitiplication) a lot faster. As a side
effect, it also reduces memory consumption (16,452,033 -> 15,545,853 on
my Linux machine).
Other changes:
- trailing zeros are removed after operations.
- division algorithm is simplified.
2022-07-23 07:50:30 +09:00
Yukihiro "Matz" Matsumoto
c0a636c007
mruby-os-memsize/memsize.c: add up digit spaces for big-integers.
2022-07-21 20:56:32 +09:00
Yukihiro "Matz" Matsumoto
8bd1c56465
bigint.c (mpz_get_str): fixed wrong loop termination condition.
2022-07-21 20:40:35 +09:00
Yukihiro "Matz" Matsumoto
450382735b
bigint.c (mrb_bint_to_s): shortcut for bigint zero.
2022-07-20 14:40:45 +09:00
Yukihiro "Matz" Matsumoto
a4ce63abc5
bigint.c (mpz_sizeinbase): check zero length bigint.
2022-07-20 14:40:12 +09:00
Yukihiro "Matz" Matsumoto
cfea0c28a0
bigint.c (digits): check zero length bigint.
2022-07-20 14:39:05 +09:00
Yukihiro "Matz" Matsumoto
2b07489372
codegen.c: keep stack space for block argument.
2022-07-20 14:27:02 +09:00
Yukihiro "Matz" Matsumoto
b84bca666f
bigint.c (mpz_get_int): avoid buffer overflow.
2022-07-19 18:20:28 +09:00
Yukihiro "Matz" Matsumoto
a99d003622
Merge pull request #5751 from dearblue/mrb_insn_data
...
Fix the first operand of `struct mrb_insn_data` to 32 bits
2022-07-19 07:44:45 +09:00
Yukihiro "Matz" Matsumoto
714e8a57af
bigint.c: avoid default allocation.
...
The digit space would be allocated on demand.
2022-07-19 00:52:54 +09:00
Yukihiro "Matz" Matsumoto
04ec65b87a
mruby-numeric-ext/numeric.rb: add reference description.
...
- zero?
- nonzero?
- positive?
- negative?
2022-07-18 15:46:47 +09:00
Yukihiro "Matz" Matsumoto
56af812b98
mruby-numeric-ext/numeric.rb: bit predicates are implemented in Ruby now.
2022-07-18 12:59:10 +09:00
Yukihiro "Matz" Matsumoto
a3f2470907
Merge pull request #5749 from dearblue/patch-5565
...
Corrected the number of registers in the `Class#new` method
2022-07-18 09:26:34 +09:00
Yukihiro "Matz" Matsumoto
0e530dbb63
numeric.c: fix smallint op bigint error in bitwise logical operators.
2022-07-18 08:29:52 +09:00
dearblue
1d95dd6e9b
Fix the first operand of struct mrb_insn_data to 32 bits
...
Because there is `W` type, at least 24 bits must be represented.
2022-07-17 20:27:42 +09:00
Yukihiro "Matz" Matsumoto
2d749f5275
mruby-compar-ext/compar.rb (clamp): update document; ref #5748
2022-07-17 18:53:55 +09:00
Yukihiro "Matz" Matsumoto
33bf027d79
mruby-compar-ext/compar.rb (clamp): support endless/beginless range.
...
Ref #5748
2022-07-17 18:52:59 +09:00
dearblue
c621d3cb95
Corrected the number of registers in the Class#new method
...
`OP_SEND R4 :allocate 0` requires an an invisible `nil` block to `R5`.
If `R5` is not allocated, this can lead to unexpected results due to buffer overflow.
This problem is caused by #5565 .
ref. commit 33792c2a02
2022-07-17 10:38:53 +09:00
Yukihiro "Matz" Matsumoto
b1bfa1d5c8
mruby-compar-ext/compar.rb (clamp): should take ranges too; fix #5748
2022-07-17 07:49:34 +09:00
Yukihiro "Matz" Matsumoto
53f131d8f1
bigint.c: remove unnecessary break in for loop.
2022-07-16 12:26:08 +09:00
Yukihiro "Matz" Matsumoto
4f737b8afb
bigint.c: adjust integer types to remove warnings.
2022-07-15 18:37:45 +09:00
Yukihiro "Matz" Matsumoto
275684cf07
bigint.c: update header commend description.
2022-07-15 18:36:47 +09:00
Yukihiro "Matz" Matsumoto
30f6ad314d
bigint.c (mpz_get_str): stringify multiple digits at once.
...
Instead of dividing by 10, 10000 (32 bit) or 100000000 (64 bit), for
example (Karatsuba method?).
2022-07-15 13:45:17 +09:00
Yukihiro "Matz" Matsumoto
d9e0f3328b
bigint.c (mpz_get_str): avoid bigint division for performance.
2022-07-15 13:45:17 +09:00
Yukihiro "Matz" Matsumoto
f1f8221bf3
Merge pull request #5747 from dearblue/errno-summary
...
Added summary for `mrbgems/mruby-errno`
2022-07-15 13:45:09 +09:00
Yukihiro "Matz" Matsumoto
1d8f4bc775
Merge pull request #5746 from dearblue/cleanup-errno
...
Delete unnecessary files in `mrbgems/mruby-errno`
2022-07-15 13:44:35 +09:00
Yukihiro "Matz" Matsumoto
ec688b34ec
Merge pull request #5745 from dearblue/neg-errno
...
Allow negative `errno` to be handled as well
2022-07-15 13:43:33 +09:00
Yukihiro "Matz" Matsumoto
74a3e2353b
Merge pull request #5744 from dearblue/checkout-ignore
...
Ignore git checkout if nil commit-hash
2022-07-14 23:49:39 +09:00
dearblue
b012ebfa79
Ignore git checkout if nil commit-hash
...
If there is no `.lock` file and no commit hash specified, avoid `git checkout --detach`.
This behavior will be the same as up to mruby-3.1.
ref. #5638
2022-07-14 21:58:20 +09:00
dearblue
bd98b71668
Added summary for mrbgems/mruby-errno
2022-07-14 21:55:15 +09:00
dearblue
a74b0fb62b
Delete unnecessary files in mrbgems/mruby-errno
...
This is because it has been integrated into the mruby repository.
2022-07-14 21:53:03 +09:00
dearblue
66b72430e6
Allow negative errno to be handled as well
2022-07-14 21:49:44 +09:00
Yukihiro "Matz" Matsumoto
7733f6b246
Merge pull request #5743 from dearblue/dummy-errno
...
Define `Errno::EXXX` when needed
2022-07-12 18:16:28 +09:00
Yukihiro "Matz" Matsumoto
37c2f080f0
numeric.c (int_to_s): should not bypass base range check.
2022-07-12 14:48:36 +09:00
Yukihiro "Matz" Matsumoto
bae11ef689
complex.c (mrb_complex_copy): allow copying of complex numbers.
2022-07-11 11:25:31 +09:00
Yukihiro "Matz" Matsumoto
67f47c9b42
rational.c (mrb_rational_copy): allow copying of rational numbers.
2022-07-11 11:19:22 +09:00
Yukihiro "Matz" Matsumoto
3ebb55b75f
bigint.c (mrb_bint_copy): allow dup operation for bigints.
2022-07-11 11:02:27 +09:00
Yukihiro "Matz" Matsumoto
95610a292b
bigint.c (lzb): use __builtin_clz() if available.
2022-07-11 08:01:52 +09:00
Yukihiro "Matz" Matsumoto
3046440b5a
bigint.c (mpz_set_int): remove an unused local variable.
2022-07-11 08:01:18 +09:00
dearblue
c14e26d79e
Define Errno::EXXX when needed
...
If the `Errno::EXXX` class is defined minimally when needed, it will save about 17 KiB of RAM in a 32-bit environment.
Define the singular methods `.const_defined?`, `.const_missing` and `.constants` in the `Errno` module and act as if there are classes that have not yet been defined.
However, if real classes are enumerated, for example by the following code, the effect is lost.
```ruby
Errno.constants.map { |id| Errno.const_get(id) }
```
But I believe that such codes are rarely written with the intention of being written.
In this patch, the `Errno::EXXX#initialize` method is no longer defined for further memory reduction.
Instead, it has been merged into the `SystemCallError#initialize` method.
2022-07-10 20:53:55 +09:00
Yukihiro "Matz" Matsumoto
04b153a3b1
bigint.c (mpz_init_set_int): unified with mpz_set_int().
2022-07-10 08:06:55 +09:00
Yukihiro "Matz" Matsumoto
84d73ba6e8
bigint.c: small refactoring (removing extra lines and spaces).
2022-07-09 19:33:39 +09:00
Yukihiro "Matz" Matsumoto
e157a84418
bigint.c (mpz_init_set_int): should avoid integer overflow.
...
Check MRB_INT_MIN which could overflow by negation.
2022-07-09 17:27:27 +09:00
Yukihiro "Matz" Matsumoto
48b43af37f
numeric.c (mrb_div_int_value): should support integer overflow.
...
Especially in `MRB_INT_MIN/-1` which is bigger than MRB_INT_MAX.
2022-07-09 15:21:45 +09:00
Yukihiro "Matz" Matsumoto
fa0ff7cf86
numeric.c: better error message (Float -> Integer).
2022-07-09 15:13:52 +09:00
Yukihiro "Matz" Matsumoto
7de03cbb68
numeric.c: add mrb_noreturn qualifier to error functions.
...
- mrb_int_zerodiv()
- mrb_int_overflow()
2022-07-09 15:12:37 +09:00
Yukihiro "Matz" Matsumoto
e1980d7596
numeric.c (mrb_div_int): separate the function in two.
...
- mrb_div_int() does integer division in Ruby way (mdiv)
returns mrb_int
- mrb_div_int_value() division with zero div and overflow checks.
returns mrb_value
2022-07-09 14:38:18 +09:00
Yukihiro "Matz" Matsumoto
f1275803c9
bigint.c (mpz_set): simplify memory reallocation code.
2022-07-09 14:36:17 +09:00
Yukihiro "Matz" Matsumoto
a40842eb73
bigint.c (udiv): use (signed) int for loop counters.
...
Sometimes (xd-yd) may be negative and should be checked.
2022-07-09 10:56:02 +09:00
Yukihiro "Matz" Matsumoto
a64d2bfbe6
bigint.c (mpz_mul,mpz_mdiv): return early on zero.
2022-07-09 10:47:23 +09:00
Yukihiro "Matz" Matsumoto
a2f0fd81e6
numeric.c (mrb_int_mul): fix error message (Float -> Integer).
2022-07-09 10:45:44 +09:00
Yukihiro "Matz" Matsumoto
8d34981530
numeric.c: avoid mathematical operations for simple cases.
2022-07-09 10:45:11 +09:00
Yukihiro "Matz" Matsumoto
960021e519
numeric.c (cmpnum): call mrb_bigint_cmp() if v1 is bigint, not v2.
2022-07-08 21:57:05 +09:00
Yukihiro "Matz" Matsumoto
872020bb3d
math.gembox: add cmath and bigint to math gembox; ref #5742
2022-07-07 15:39:36 +09:00
Yukihiro "Matz" Matsumoto
b5538eded1
vm.c (OP_ENTER): need to protect kdict from GC; ref #5741
2022-07-06 14:57:06 +09:00
Yukihiro "Matz" Matsumoto
8fed80f5eb
vm.c (OP_ENTER): protect kdict from GC; ref #5741
2022-07-06 14:29:14 +09:00
Yukihiro "Matz" Matsumoto
4225ae4176
vm.c (OP_ENTER): need to update ci->nk when kd is set; fix #5741
2022-07-06 13:57:12 +09:00
Yukihiro "Matz" Matsumoto
7e8a4212fb
vm.c: refactor OP_ENTER code; ref #5741
2022-07-06 13:37:29 +09:00
Yukihiro "Matz" Matsumoto
82a419cde3
vm.c (mrb_ci_kdict): should return -1 when no kargs given; ref #5741
2022-07-06 13:37:20 +09:00
Yukihiro "Matz" Matsumoto
638356af03
class.c (mc_clear_by_id): clear method cache with method id specified.
2022-07-05 17:39:36 +09:00
Yukihiro "Matz" Matsumoto
a99e4a926d
class.c (mrb_mc_clear_by_class): simplify method cache clear condition.
2022-07-05 17:39:30 +09:00
Yukihiro "Matz" Matsumoto
1e7012f8c1
class.c (mrb_class_inherited): no need to clear method cache.
...
Since the function is only called for a newly created class, there is no
need to modify the method cache here.
2022-07-04 21:47:19 +09:00
Yukihiro "Matz" Matsumoto
e8a202d461
vm.c: inline callinfo related functions.
2022-07-04 21:15:42 +09:00
Yukihiro "Matz" Matsumoto
78e723accb
AUTHORS: update entries [ci skip]
2022-07-03 18:17:29 +09:00
Yukihiro "Matz" Matsumoto
ce89ab8660
parse.y: class cannot be followed by modifier if. [ruby-bugs:18884]
2022-07-02 10:31:33 +09:00
Yukihiro "Matz" Matsumoto
0db9a8e8d7
Merge pull request #5740 from dearblue/src-include
...
Avoid adding `MRUBY_ROOT/src` to `cc.include_paths`
2022-07-02 10:31:14 +09:00
dearblue
9a84ef926b
Avoid adding MRUBY_ROOT/src to cc.include_paths
2022-07-02 09:56:13 +09:00
Yukihiro "Matz" Matsumoto
03ae46e88d
string.c: keep values in local variables to reduce member access.
2022-06-30 10:12:24 +09:00
Yukihiro "Matz" Matsumoto
f2bc7c305a
array.c (mrb_assoc_new): keep pointer in a local variable.
...
The optimizer may do the same, but tried to make it clear.
2022-06-30 10:09:34 +09:00
Yukihiro "Matz" Matsumoto
e2c4a8cef0
array.c (ary_check_too_big): make the function inline.
2022-06-30 09:57:30 +09:00
Yukihiro "Matz" Matsumoto
72b60eb449
include/mruby/value.h: remove assertion from mrb_obj_value()
...
The function was called too often, so that even slightest assertion may
bother performance. The function is stable enough.
2022-06-30 08:11:36 +09:00
Yukihiro "Matz" Matsumoto
b58094c881
mruby-sprintf/sprintf.c: call mrb_str_resize() less often.
2022-06-29 15:03:41 +09:00
Yukihiro "Matz" Matsumoto
580af1cf73
vm.c (mrb_bidx): avoid repeated packing/unpacking argument info.
2022-06-29 07:51:08 +09:00
Yukihiro "Matz" Matsumoto
f7c2b0388a
benchmark/bm_so_lists.rb: address the broken link; close #5737
...
The original page was lost, so we added the link to the wayback machine.
2022-06-28 11:31:16 +09:00
Yukihiro "Matz" Matsumoto
0b7822581f
string.c (str_rindex): use more local variables; ref #5734
2022-06-27 19:04:36 +09:00
Yukihiro "Matz" Matsumoto
7319e744ad
src/vm.c: move some inline functions from mruby/proc.h; ref #5732
...
Those functions are seldom called so no need to be inline functions.
2022-06-27 19:04:35 +09:00
Yukihiro "Matz" Matsumoto
e5ec9a18fe
Merge pull request #5738 from jbampton/fix-case-of-mruby
...
Fix case of `mruby`
2022-06-27 18:56:56 +09:00
John Bampton
48f03dceeb
Fix case of mruby
2022-06-27 18:58:31 +10:00
Yukihiro "Matz" Matsumoto
1d87493803
Merge pull request #5736 from jbampton/update-docs
...
docs: add link and fix command
2022-06-27 16:53:08 +09:00
John Bampton
8f16c1d99e
docs: add link and fix command
2022-06-27 15:30:17 +10:00
Yukihiro "Matz" Matsumoto
f080005720
Merge pull request #5735 from jbampton/pre-commit-skip-docs
...
Add docs on the `SKIP` pre-commit environment variable
2022-06-27 13:18:43 +09:00
John Bampton
9841980bce
Add docs on the SKIP pre-commit environment variable
...
Knowing about `SKIP` is useful
https://pre-commit.com/#temporarily-disabling-hook
2022-06-27 14:01:14 +10:00
Yukihiro "Matz" Matsumoto
dc8da16b6b
Merge pull request #5734 from sjothen/master
...
Fix out of bounds access by memcmp in String#rindex
2022-06-27 10:34:07 +09:00
Stephen Jothen
103f8bcad0
Fix out of bounds access by memcmp in String#rindex
2022-06-25 15:09:35 +02:00
Yukihiro "Matz" Matsumoto
a3ccda657e
Merge pull request #5733 from dearblue/patch-5402
...
Do not expand "included class" in `mrb_proc_new()`.
2022-06-25 14:48:02 +09:00
Yukihiro "Matz" Matsumoto
d3e8494f8d
Merge pull request #5732 from dearblue/patch-5272
...
Fixes `mrb_vm_ci_target_class_set()`
2022-06-25 12:24:33 +09:00
Yukihiro "Matz" Matsumoto
0caaf4da7f
Merge pull request #5731 from dearblue/fix5725
...
Use `mrb->object_class` instead if `MRB_PROC_TARGET_CLASS()` is `NULL`
2022-06-25 12:23:34 +09:00
dearblue
8bab20ef7c
Do not expand "included class" in mrb_proc_new().
...
If `target_class->tt` is `MRB_TT_ICLASS`, it may cause loss of class inheritance relationships.
This problem is caused by #5402 .
ref. #5725
2022-06-25 11:45:18 +09:00
dearblue
109da08d8a
Fixes mrb_vm_ci_target_class_set()
...
If `ci->u.target_class` was `NULL`, the value of the argument was always ignored.
This problem is caused by #5272 .
ref. #5725
2022-06-25 11:41:55 +09:00
dearblue
1489338145
Use mrb->object_class instead if MRB_PROC_TARGET_CLASS() is NULL
...
Fix #5725
2022-06-25 11:10:39 +09:00
Yukihiro "Matz" Matsumoto
ab3486d9ff
Merge pull request #5730 from aoki1980taichi/patch-1
...
delete unused variable
2022-06-25 07:37:24 +09:00
aoki1980taichi
ad1d35c342
delete unused variable
...
cnt is unused
2022-06-25 00:21:23 +09:00
Yukihiro "Matz" Matsumoto
88f3c19e5d
Merge pull request #5729 from aoki1980taichi/patch-1
...
delete unnecessary code
2022-06-24 22:58:53 +09:00
aoki1980taichi
4332f56056
delete unnecessary code
...
"else 0.0" is not used
2022-06-24 19:22:28 +09:00
Yukihiro "Matz" Matsumoto
d4d902b072
Merge pull request #5728 from artichoke/lopopolo/broken-extern-c-blocks-mrb-use-cxx-exception
...
Fix mismatched braces in `extern "C"` blocks when compiling as C++
2022-06-24 17:14:03 +09:00
Ryan Lopopolo
8a5e6f47f2
Match #if at end of vm.c
2022-06-23 22:25:15 -07:00
Ryan Lopopolo
3af82fbb51
Respect MRB_USE_CXX_ABI #define
2022-06-23 21:54:53 -07:00
Ryan Lopopolo
c4c37b2069
Fix mismatched braces in extern "C" blocks when compiling as C++
...
When compiling mruby with `-DMRB_USE_CXX_EXCEPTION`, clang fails to
compile and emits these warnings:
vendor/mruby/src/vm.c:3066:1: error: extraneous closing brace ('}')
} /* end of extern "C" */
^
vendor/mruby/src/vm.c:3072:7: error: expected '}'
#endif
^
vendor/mruby/src/vm.c:3070:12: note: to match this '{'
extern "C" {
^
2 errors generated.
Fixup the implementation of the `extern "C"` block in `vm.c`.
2022-06-23 21:38:55 -07:00
Yukihiro "Matz" Matsumoto
16cc6f3292
build_config/host-debug.rb: enable MRB_UTF8_STRING; ref #5727
2022-06-24 13:25:46 +09:00
Yukihiro "Matz" Matsumoto
89f22158d3
string.rb (each_line): may truncate string by mistake; fix #5727
2022-06-24 13:25:45 +09:00
Yukihiro "Matz" Matsumoto
22d0f4580e
Merge pull request #5726 from aoki1980taichi/patch-1
...
fix typo otherBasis -> orthoBasis
2022-06-24 06:29:15 +09:00
aoki1980taichi
ad8286c447
fix typo otherBasis -> orthoBasis
...
The original function name in ao.c was orthoBasis.
I guess the function is generating orthonormal basis (https://en.wikipedia.org/wiki/Orthonormal_basis ).
2022-06-24 06:26:58 +09:00
Yukihiro "Matz" Matsumoto
92be161b1f
vm.c (check_target_class): return Object class if target is NULL.
...
Since #5272 target_class kept in a Proc may be NULL. It crashes
`iij/mruby-require` gem for example; close #5725
2022-06-23 07:54:04 +09:00
Yukihiro "Matz" Matsumoto
cd6e94c09f
mruby/internal.h: move functions from internal.h; #5725
...
To compile `iij/mruby-require` gem.
2022-06-23 07:53:29 +09:00
Yukihiro "Matz" Matsumoto
01392e2719
mrblib/array.rb: add call-seq to each method description. [ci skip]
2022-06-22 19:02:54 +09:00
Yukihiro "Matz" Matsumoto
981740b1f2
mrblib/compar.rb: add call-seq to each method description. [ci skip]
2022-06-22 19:02:48 +09:00
Yukihiro "Matz" Matsumoto
cf7aa74f7c
mruby-rational/rational.c: update error message.
2022-06-21 22:17:17 +09:00
Yukihiro "Matz" Matsumoto
019a2ddff4
mruby-rational/rational.c: implement Rational#**; close #5724
2022-06-21 16:53:17 +09:00
Yukihiro "Matz" Matsumoto
04de280997
mruby-rational/rational.c: wrap prototype with mrb_float
...
When `MRB_NO_FLOAT` is defined, `mrb_float` is not defined.
2022-06-21 16:37:32 +09:00
Yukihiro "Matz" Matsumoto
6f78cd6c99
mruby-rational/rational.c: remove unused prototype [ci skip]
2022-06-21 14:01:38 +09:00
Yukihiro "Matz" Matsumoto
9a34bd9971
hash.rb: update Hash class documents [ci skip]
2022-06-20 12:19:54 +09:00
Yukihiro "Matz" Matsumoto
d2a24a540c
hash.c: implement typical part of merge in C.
2022-06-19 22:28:31 +09:00
Yukihiro "Matz" Matsumoto
909e1044ed
mruby-hash-ext/hash.rb (merge!): takes multiple arguments.
2022-06-18 16:12:14 +09:00
Yukihiro "Matz" Matsumoto
0565bbf85a
test/hash.rb: test Hash#merge that takes multiple arguments.
2022-06-18 08:30:26 +09:00
Yukihiro "Matz" Matsumoto
14e5c0c7b9
hash.rb (merge): now takes multiple arguments.
2022-06-18 08:25:11 +09:00
Yukihiro "Matz" Matsumoto
7dec6e776e
mruby-random/random.c: pointer to uint32_t cast may fail with clang.
2022-06-17 10:06:07 +09:00
Yukihiro "Matz" Matsumoto
f1d669024a
mruby-random/random.c: srand to use pointer address as a seed.
...
Utilize process randomiser which may not be provided by non Linux OSes.
With those OSes, rand() would return same values if the processes are
invoked within a second.
2022-06-17 07:14:29 +09:00
Yukihiro "Matz" Matsumoto
267c26d20b
mruby-random/random.c: randomize Random::DEFAULT.
...
Using time(2) and randomized pointer address. May not work well with old
OSes without process randomiser.
2022-06-17 07:12:12 +09:00
Yukihiro "Matz" Matsumoto
0a63cdd594
mruby-random/random.c: use random: keyword argument.
...
For Array#sample and Array#shuffle. They used to take optional ordinal
argument for Random object but CRuby uses `random:` keyword argument.
Now mruby is compatible with CRuby here.
2022-06-16 11:17:22 +09:00
Yukihiro "Matz" Matsumoto
7005f8661b
parse.y (paser_pfree): recycle memory if possible.
2022-06-15 07:28:05 +09:00
Yukihiro "Matz" Matsumoto
65ff04b20d
Merge pull request #5722 from dearblue/gc_protect
...
Fixed possible inconsistency in `gc_protect()`
2022-06-15 07:27:36 +09:00
dearblue
cbeb392d7d
Fixed possible inconsistency in gc_protect()
...
If `mrb_realloc()` raises an out-of-memory exception, `arena_capa` will hold the wrong value.
2022-06-14 22:31:45 +09:00
Yukihiro "Matz" Matsumoto
561dffcccc
parse.y: fix nested here-document bug; fix #5607
...
- remove `lex_strterm_before_heredoc` that does not nest
- remove `all_heredocs` that cannot distinguish nested and followed
here-doc
- replace `lex_strterm` represented by cons list by C struct
- push/pop `lex_strterm` before/after interpolation
2022-06-13 22:25:37 +09:00
Yukihiro "Matz" Matsumoto
3cab2e7b78
mruby-compiler: remove spaces before * in type casting.
2022-06-13 17:00:30 +09:00
Yukihiro "Matz" Matsumoto
4d70d17af7
compile.h: reorder parser_heredoc_info members to reduce alignment gap.
2022-06-12 18:48:34 +09:00
Yukihiro "Matz" Matsumoto
c41f24216b
Merge pull request #5718 from dearblue/rehash-iv_mt
...
Asigns table properties after `mrb_calloc()`
2022-06-10 10:44:14 +09:00
dearblue
56c6dde9c5
Asigns table properties after mrb_calloc()
...
If GC occurs in `mrb_calloc()` called by `iv_rehash()` or `mt_rehash()`, the object as table data may be destroyed.
2022-06-08 22:10:58 +09:00
Yukihiro "Matz" Matsumoto
b1f6c856e3
parse.y (nextc0): small refactoring.
2022-06-08 21:59:51 +09:00
Yukihiro "Matz" Matsumoto
0d2c550f0f
parse.y: use info as abbreviation for information.
...
Replace `inf` that looks like abbreviation for `infinity`.
2022-06-07 18:42:53 +09:00
Yukihiro "Matz" Matsumoto
62fc021f5a
.git-blame-ignore-revs: add 650ffb9 to ignore indentation fix.
2022-06-06 08:00:43 +09:00
Yukihiro "Matz" Matsumoto
9cc9c9fe63
parse.y (heredoc_treat_nextline): simplify the logic using append().
2022-06-06 08:00:04 +09:00
Yukihiro "Matz" Matsumoto
4c92636684
AUTHORS: update entries [ci skip]
2022-06-06 08:00:04 +09:00
Yukihiro "Matz" Matsumoto
81fb3c5a4b
parse.y: need to update p->lex_strterm in heredoc_treat_nextline().
2022-06-06 08:00:03 +09:00
Yukihiro "Matz" Matsumoto
5233865c47
codegen.c (search_upvar): update messages for anonymous parameters.
2022-06-03 13:00:13 +09:00
Yukihiro "Matz" Matsumoto
aec849888e
parse.y (new_kw_rest_args): aggregate integer to node* type casts.
2022-06-03 13:00:12 +09:00
Yukihiro "Matz" Matsumoto
e49ae398bd
Rakefile: add install target; close #5712
...
This change is not complete. Contribution is welcome.
- need to update `mruby-config` to refer installed path
- may need to support installing shared library
- need to support cross-compiled binaries
2022-06-03 13:00:12 +09:00
Yukihiro "Matz" Matsumoto
5cbce646b0
parse.y: allow anonymous rest (and keyword rest) arguments.
2022-06-03 13:00:12 +09:00
Yukihiro "Matz" Matsumoto
6649b353c9
Merge pull request #5716 from dearblue/__method__check
...
Check `NULL` for `proc` and `env` in `Kernel#__method__`
2022-05-31 11:23:23 +09:00
Yukihiro "Matz" Matsumoto
0d828fa918
Merge pull request #5717 from mruby/dependabot/github_actions/github/super-linter-4.9.4
...
build(deps): bump github/super-linter from 4.9.3 to 4.9.4
2022-05-31 11:23:00 +09:00
dependabot[bot]
0f88b74f2b
build(deps): bump github/super-linter from 4.9.3 to 4.9.4
...
Bumps [github/super-linter](https://github.com/github/super-linter ) from 4.9.3 to 4.9.4.
- [Release notes](https://github.com/github/super-linter/releases )
- [Changelog](https://github.com/github/super-linter/blob/main/docs/release-process.md )
- [Commits](https://github.com/github/super-linter/compare/v4.9.3...v4.9.4 )
---
updated-dependencies:
- dependency-name: github/super-linter
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2022-05-30 14:07:39 +00:00
Yukihiro "Matz" Matsumoto
8981b2fb28
vm.c (ary_new_from_regs): stack may be reallocated.
...
Unlike `hash_new_from_regs`, `ary_new_from_regs` do not call
`mrb_funcall` et al directly or indirectly. But since it may invoke the
garbage collection, and hooks for GC may call `mrb_funcall` etc (although
calling them is not encouraged), we care stack reallocation just for the
safety.
2022-05-30 11:52:12 +09:00
Yukihiro "Matz" Matsumoto
aa7f98dedb
vm.c (hash_new_from_regs): stack may be reallocated.
2022-05-30 01:18:15 +09:00
Yukihiro "Matz" Matsumoto
af5acf3566
parse.y: fix wrong indent [ci skip].
2022-05-30 01:16:47 +09:00
Yukihiro "Matz" Matsumoto
d55a152b3d
mruby-string-ext/string.c (utf8code): max length of UTF-8 is 4 bytes.
...
It used to be 6 bytes in RFC2279 but overridden by new RFC3629.
2022-05-29 22:19:00 +09:00
Yukihiro "Matz" Matsumoto
82b87be4df
string.c (mrb_utf8len): retry 7cdef2b0.
...
C++ requires `extern` declaration before variable definition.
2022-05-29 22:18:59 +09:00
Yukihiro "Matz" Matsumoto
0a8bfd1f8b
Merge pull request #5713 from dearblue/assert-object-size
...
Introduced `mrb_static_assert_object_size()`
2022-05-29 22:18:48 +09:00
dearblue
444fbd76c2
Check NULL for proc and env in Kernel#__method__
...
Fix #5714
2022-05-29 11:28:54 +09:00
dearblue
23611332d9
Introduced mrb_static_assert_object_size()
...
Asserts the size of the object structure is less than or equal to 6 words.
2022-05-28 11:08:27 +09:00
Yukihiro "Matz" Matsumoto
2e0d371ef1
Merge pull request #5711 from mruby/dependabot/github_actions/github/super-linter-4.9.3
...
build(deps): bump github/super-linter from 4.9.2 to 4.9.3
2022-05-26 08:03:30 +09:00
dependabot[bot]
0efe2e6514
build(deps): bump github/super-linter from 4.9.2 to 4.9.3
...
Bumps [github/super-linter](https://github.com/github/super-linter ) from 4.9.2 to 4.9.3.
- [Release notes](https://github.com/github/super-linter/releases )
- [Changelog](https://github.com/github/super-linter/blob/main/docs/release-process.md )
- [Commits](https://github.com/github/super-linter/compare/v4.9.2...v4.9.3 )
---
updated-dependencies:
- dependency-name: github/super-linter
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2022-05-25 14:08:32 +00:00
Yukihiro "Matz" Matsumoto
82f0ba14a9
Revert "string.c: share UTF-8 length table with mruby-string-ext."
...
This reverts commit 7cdef2b03e .
This sharing does not with C++ compilers.
2022-05-25 16:07:52 +09:00
Yukihiro "Matz" Matsumoto
7cdef2b03e
string.c: share UTF-8 length table with mruby-string-ext.
2022-05-25 11:25:43 +09:00
Yukihiro "Matz" Matsumoto
be0b5f8cee
mruby-string-ext/string.c: reduce UTF-8 table size.
2022-05-25 11:22:28 +09:00
Yukihiro "Matz" Matsumoto
2f4695b759
mruby-string-ext/string.c: check sequence length before decoding.
2022-05-25 11:20:29 +09:00
Yukihiro "Matz" Matsumoto
f08e66e53e
mruby-string-ext/string.c (mrb_str_ord): fail with invalid UTF-8.
2022-05-25 11:17:49 +09:00
Yukihiro "Matz" Matsumoto
bb99d7b2ca
string.c (mrb_utf8len): reduce UTF-8 table size.
2022-05-25 08:04:19 +09:00
Yukihiro "Matz" Matsumoto
d7731a95ab
string.c (mrb_str_rindex_m): avoid RSTRING_CHAR_LEN() if possible.
...
Since it scans the string. Use char_backtrack() instead for negative
offset (counting from the tail).
2022-05-24 08:47:07 +09:00
Yukihiro "Matz" Matsumoto
9475521fa3
string.c (char_adjust): simplify and unroll function.
2022-05-23 23:12:40 +09:00
Yukihiro "Matz" Matsumoto
4769ace7e1
string.c (char_backtrack): simplify the code using utf8_islead().
2022-05-23 23:12:40 +09:00
Yukihiro "Matz" Matsumoto
916fd642fa
string.c (mrb_utf8len): unroll a for loop.
2022-05-21 16:14:16 +09:00
Yukihiro "Matz" Matsumoto
54bbc062fb
string.c (index,rindex) use single byte version for ASCII strings.
2022-05-21 08:51:11 +09:00
Yukihiro "Matz" Matsumoto
ac79849fde
mruby-io/io.c: refactor readable/writable checks for fptr.
2022-05-20 09:59:23 +09:00
Yukihiro "Matz" Matsumoto
013c9f31bc
mruby-io/io.c: remove unnecessary type casts.
2022-05-20 09:53:12 +09:00
Yukihiro "Matz" Matsumoto
038aa6beb2
strinc.rb (sub, gsub): use byte index instead of char index.
2022-05-19 10:14:59 +09:00
Yukihiro "Matz" Matsumoto
ce141b1332
string.rb (each_line): should not use [] reference.
...
Use `byteslice` instead.
2022-05-19 10:14:59 +09:00
Yukihiro "Matz" Matsumoto
19e4287d8b
Merge pull request #5710 from suetanvil-misc/project-gemdecl-path-arg-flat
...
Fix `conf.gem path:` build_config argument.
2022-05-19 10:07:07 +09:00
Chris Reuter
b297809b51
Fix conf.gem path: build_config argument.
...
The mrbgem guide (`doc/guides/mrbgems.md`) documents the `path:`
argument for `conf.gem` as being used to point to the root directory
of a gem when that gem is retrieved via git but is located in a
subdirectory of the checkout.
The actual code does not do this. Instead, it treats path as (mostly)
identical to the `gemdir:` argument; that is, it points to a local
directory containing the gem.
This change fixes this by making `path:` behave as documented.
2022-05-18 14:02:47 -04:00
Yukihiro "Matz" Matsumoto
2cd966abc7
Merge pull request #5708 from jbampton/fix-spelling
...
Fix spelling
2022-05-18 07:50:00 +09:00
John Bampton
73580c49c4
Fix spelling
2022-05-17 19:47:54 +10:00
Yukihiro "Matz" Matsumoto
f8b9464118
string.rb (each_line): use byteindex for performance; fix #4522
...
Character-wise String#index method calculate UTF-8 character width
numerous times if the string is long.
2022-05-17 07:18:44 +09:00
Yukihiro "Matz" Matsumoto
960da4ded4
cdump.c: should dump zero symbol (skip) too.
...
Zero symbol in the symbol table now means anonymous arguments.
2022-05-16 16:39:56 +09:00
Yukihiro "Matz" Matsumoto
c2648ad95d
string.c: add byteindex and byterindex methods.
2022-05-16 16:00:00 +09:00
Yukihiro "Matz" Matsumoto
8c985ff851
string.c (mrb_str_index_m): no need to align the position; ref #4569
2022-05-16 14:17:21 +09:00
Yukihiro "Matz" Matsumoto
0299ccf6c7
parse.y: allow inner anonymous block argument.
2022-05-16 14:17:21 +09:00
Yukihiro "Matz" Matsumoto
0a52f171aa
mruby-random/random.c: factored out Random argument retrieval.
2022-05-16 14:17:20 +09:00
Yukihiro "Matz" Matsumoto
4283e2a950
Merge pull request #5707 from mruby/stable
...
Merge mruby 3.1.0
2022-05-13 07:38:26 +09:00
mimaki
b3c04d036e
Merge master branch.
2022-05-12 19:59:10 +09:00
Yukihiro "Matz" Matsumoto
6c6d8a98fa
codedump.c: avoid printing 'local variable names:' header.
...
If there is no local variable defined in `irep`.
2022-05-12 19:14:40 +09:00
mimaki
1bec339230
Update version and release date. (mruby 3.1.0 (2022-05-12))
2022-05-12 12:19:10 +09:00
Yukihiro "Matz" Matsumoto
257d16181d
mruby3.2.md: add fixed CVE list.
2022-05-11 07:09:27 +09:00
Yukihiro "Matz" Matsumoto
090303568c
mruby3.2.md: use dash instead of asterisk for itemize.
2022-05-11 07:08:39 +09:00
Yukihiro "Matz" Matsumoto
3ee10ccc63
mruby3.1.md: update fixed CVE list.
2022-05-11 07:06:36 +09:00
Yukihiro "Matz" Matsumoto
242a7f14e0
mruby3.1.md: update fixed CVE list.
2022-05-10 20:32:04 +09:00
Yukihiro "Matz" Matsumoto
f13db72d26
load.c: add data boundary check for broken compiled binary.
2022-05-10 20:11:17 +09:00
Yukihiro "Matz" Matsumoto
b82065aa92
load.c: should check if length of irep sections are valid.
2022-05-10 20:11:17 +09:00
Yukihiro "Matz" Matsumoto
11679e3f3a
vm.c: check if target_class is NULL (when prepended).
...
Address CVE-2022-1427
2022-05-10 20:11:17 +09:00
Yukihiro "Matz" Matsumoto
82d3b3d11b
vm.c: target class may be NULL.
...
Address CVE-2022-1201
2022-05-10 20:11:17 +09:00
Yukihiro "Matz" Matsumoto
2cbfc2f350
vm.c: vm.c: stack may be reallocated in functions calls; aaa28a5
...
`mrb_range_new()` also calls VM recursively.
Address CVE-2022-1106
2022-05-10 20:11:16 +09:00
Yukihiro "Matz" Matsumoto
6db4a58fbd
vm.c: stack may be reallocated in functions calls.
...
Probably due to recursive VM calls via `mrb_funcall()`.
Address CVE-2022-1071
2022-05-10 19:24:46 +09:00
Yukihiro "Matz" Matsumoto
96cfde3488
fiber.c: should pack 15+ arguments in an array.
...
Address CVE-2022-0890
2022-05-10 19:24:46 +09:00
Yukihiro "Matz" Matsumoto
2e48070ab6
codegen.c: adjust stack position for OP_SUPER instruction.
...
Address CVE-2022-0632
2022-05-10 16:34:19 +09:00
Yukihiro "Matz" Matsumoto
d823045af4
vm.c: packed arguments length may be zero for send method.
...
Address CVE-2022-0631
2022-05-10 16:32:03 +09:00
Yukihiro "Matz" Matsumoto
c9ab1e601d
codegen.c: fixed a bug in hash code generation with !val.
...
Address CVE-2022-0481
2022-05-10 14:56:53 +09:00
Yukihiro "Matz" Matsumoto
beef5d37ad
codegen.c: no OP_HASHADD required when val is false.
...
Address CVE-2022-0326
2022-05-10 14:55:58 +09:00
Yukihiro "Matz" Matsumoto
15f597e835
class.c: add obj->c check before prepare_singleton_class().
...
Address CVE-2022-0240
2022-05-10 14:54:45 +09:00
Yukihiro "Matz" Matsumoto
6189a90933
github/workflow: remove Cygwin build from Github Actions.
...
It often cross the 15 minutes timeout limit, so we just give up for now.
2022-05-10 14:02:16 +09:00
Yukihiro "Matz" Matsumoto
fc4e9cdf81
mruby-test-inline-struct/inline.c: add type cast from void* to char*.
2022-05-09 18:57:26 +09:00
Yukihiro "Matz" Matsumoto
eafc4b3f96
doc/mruby3.1.md: update for the 3.1 release.
2022-05-09 17:49:53 +09:00
Yukihiro "Matz" Matsumoto
84b0ba3f8d
doc/mruby3.1.md: update for the release.
2022-05-09 17:46:26 +09:00
Yukihiro "Matz" Matsumoto
04d160f90b
mruby-test-inline-struct/inline.c: add a comment about istruct protection.
2022-05-08 23:14:20 +09:00
Yukihiro "Matz" Matsumoto
8c2dbb761f
mruby-test-inline-struct/inline.c: add mrb_istruct_p() checks.
2022-05-08 23:09:14 +09:00
Yukihiro "Matz" Matsumoto
45f61e3879
class.c (mrb_get_args): remove I specifier (istruct); close #5706
2022-05-07 17:35:45 +09:00
Yukihiro "Matz" Matsumoto
457abf4c9e
error.c: now mrb_exc_mesg_get() returns a string or nil.
2022-05-06 16:45:17 +09:00
Yukihiro "Matz" Matsumoto
38b69b6014
error.c: protect mrb_print_error() from exceptions.
...
Now the function can be called when `mrb->jmp` is not set.
2022-05-06 16:26:31 +09:00
Yukihiro "Matz" Matsumoto
c3e4ee0bf2
error.c: store error message converted as a string.
...
This is controversial since this change alters the `raise` behavior.
Previously, when an object that cannot be converted to a string, it just
ignore message when it's printed (using `Exception#inspect`). But after
this change, `raise` (more precisly `Exception.new`) raises TypeError
exception. I think the new behavior is clearer, more intuitive.
2022-05-06 16:21:39 +09:00
Yukihiro "Matz" Matsumoto
d40822b148
Merge pull request #5705 from dearblue/adjust-stack
...
Introduce `mrb_stack_extend_adjust()`
2022-05-05 13:04:44 +09:00
dearblue
c32cac6e59
Introduce mrb_stack_extend_adjust()
...
If necessary, adjust the pointer on the VM stack after `mrb_stack_extend()`.
2022-05-04 09:13:56 +09:00
Yukihiro "Matz" Matsumoto
50b1ded350
mruby-random/random.c: use rand_i() extensively.
2022-05-04 08:07:02 +09:00
Yukihiro "Matz" Matsumoto
49b8cef31f
Merge pull request #5703 from dearblue/random-getargs
...
Strict acquisition of the `Random` class given by `mrb_get_args()`
2022-05-03 19:27:11 +09:00
dearblue
9b9424fe32
Strict acquisition of the Random class given by mrb_get_args()
...
This is to prevent data corruption of the substituted `Random` instance.
If the `Object::Random` constants are redefined to a different `MRB_TT_ISTRUCT` object class, they can pass `mrb_get_args()` validation.
The following is an example of how the `Array#shuffle` method rewrites the data of a non `Random` instance.
```c
// code.c
#include <mruby.h>
#include <mruby/class.h>
#include <mruby/compile.h>
#include <mruby/istruct.h>
#define EVAL_LIT(MRB, ...) mrb_load_string((MRB), #__VA_ARGS__)
static mrb_value
fake_initialize(mrb_state *mrb, mrb_value self)
{
char *p = ISTRUCT_PTR(self);
for (int i = 0; i < ISTRUCT_DATA_SIZE; i++) {
p[i] = 'A' + i;
}
return self;
}
static mrb_value
fake_to_bytes(mrb_state *mrb, mrb_value self)
{
const char *p = ISTRUCT_PTR(self);
return mrb_str_new(mrb, p, ISTRUCT_DATA_SIZE);
}
int
main(int argc, char *argv[])
{
mrb_state *mrb = mrb_open();
struct RClass *fake = mrb_define_class(mrb, "Fake", mrb->object_class);
MRB_SET_INSTANCE_TT(fake, MRB_TT_ISTRUCT);
mrb_define_method(mrb, fake, "initialize", fake_initialize, MRB_ARGS_NONE());
mrb_define_method(mrb, fake, "to_bytes", fake_to_bytes, MRB_ARGS_NONE());
EVAL_LIT(mrb,
Random = Fake \n
fake = Fake.new \n
p [fake, fake.to_bytes] \n
p a = (1..10).to_a \n
p a.shuffle(fake) \n
p [fake, fake.to_bytes]
);
mrb_close(mrb);
return 0;
}
```
```console
% `bin/mruby-config --cc --cflags --ldflags` code.c `bin/mruby-config --libs`
% ./a.out
[#<Fake:0x8007d8f20>, "ABCDEFGHIJKLMNOPQRSTUVWX"]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[1, 7, 8, 10, 2, 6, 9, 3, 4, 5]
[#<Fake:0x8007d8f20>, "\xe81{\v\fM\xb0D<\x99\xb1V+l\x84\x86QRSTUVWX"]
```
2022-05-03 13:35:29 +09:00
Yukihiro "Matz" Matsumoto
23ce122fc2
vm.c (mrb_funcall_with_block): copy argv before prepare_missing(); fix #5704
...
Since prepare_missing() may call `missing` method internally.
2022-05-02 18:59:38 +09:00
Yukihiro "Matz" Matsumoto
651c872a71
Merge branch 'dearblue-exception'
2022-05-01 20:01:04 +09:00
Yukihiro "Matz" Matsumoto
06c4c76be8
Merge branch 'exception' of https://github.com/dearblue/mruby into dearblue-exception
2022-05-01 20:00:37 +09:00
Yukihiro "Matz" Matsumoto
a243cf4d68
codedump.c: adjust integer size.
...
* uint32_t and ptrdiff_t
* uint16_t and uint8_t
2022-04-30 16:51:38 +09:00
Yukihiro "Matz" Matsumoto
49f3a028d1
AUTHORS: update entries [ci skip]
2022-04-29 16:52:34 +09:00
Yukihiro "Matz" Matsumoto
32fb8b19aa
class.c: fix integer size mixtures (int, mrb_ssize and mrb_int).
2022-04-28 14:22:11 +09:00
Yukihiro "Matz" Matsumoto
6499efb8dd
fmt_fp.c: add type cast to remove a warning.
2022-04-27 13:01:30 +09:00
Yukihiro "Matz" Matsumoto
132d55c924
symbol.c: fix size_t and uint32_t mixture.
2022-04-27 12:52:51 +09:00
Yukihiro "Matz" Matsumoto
4f14ada88a
Merge pull request #5701 from jbampton/fix-grammar-and-spelling
...
docs: fix grammar and spelling
2022-04-26 17:40:32 +09:00
Yukihiro "Matz" Matsumoto
a31cfff838
Merge pull request #5702 from jbampton/update-minimum-pre-commit-version
...
Update minimum `pre-commit` version to latest `2.18.1`
2022-04-26 17:37:14 +09:00
John Bampton
c4bfbb2079
Update minimum pre-commit version to latest 2.18.1
...
Conda, Homebrew and PyPI all have `2.18.1`
https://github.com/pre-commit/pre-commit/releases
https://pypi.org/project/pre-commit/#history
https://formulae.brew.sh/formula/pre-commit
https://anaconda.org/conda-forge/pre-commit
Also run `pre-commit autoupdate`
https://pre-commit.com/#pre-commit-autoupdate
2022-04-26 15:50:49 +10:00
John Bampton
c391d94da9
docs: fix grammar and spelling
2022-04-26 13:48:05 +10:00
Yukihiro "Matz" Matsumoto
a31ff629ba
Merge pull request #5700 from jbampton/codeql-on-pull-request-only
...
Avoid triggering CodeQL on the "push" event for Dependabot branches
2022-04-26 11:09:42 +09:00
Yukihiro "Matz" Matsumoto
50d1bf6214
Merge pull request #5699 from mruby/dependabot/github_actions/github/codeql-action-2
...
build(deps): bump github/codeql-action from 1 to 2
2022-04-26 08:45:55 +09:00
John Bampton
68ce424889
Avoid triggering CodeQL on the "push" event for Dependabot branches
2022-04-26 01:15:10 +10:00
dependabot[bot]
d20ee7298a
build(deps): bump github/codeql-action from 1 to 2
...
Bumps [github/codeql-action](https://github.com/github/codeql-action ) from 1 to 2.
- [Release notes](https://github.com/github/codeql-action/releases )
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md )
- [Commits](https://github.com/github/codeql-action/compare/v1...v2 )
---
updated-dependencies:
- dependency-name: github/codeql-action
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com >
2022-04-25 14:08:22 +00:00
Yukihiro "Matz" Matsumoto
dd4da14772
symbol.c: remove type mismatch warnings.
2022-04-25 19:14:16 +09:00
Yukihiro "Matz" Matsumoto
73db8c5861
Merge branch 'dearblue-bigint-gem'
2022-04-25 11:21:12 +09:00
Yukihiro "Matz" Matsumoto
118ff0a529
Merge branch 'bigint-gem' of https://github.com/dearblue/mruby into dearblue-bigint-gem
2022-04-25 11:03:39 +09:00
Yukihiro "Matz" Matsumoto
f225db4ed6
string.c: move compilation condition to remove unreachable code.
2022-04-25 10:04:39 +09:00
Yukihiro "Matz" Matsumoto
39c8c051f8
numeric.c: mrb_integer_to_str now supports big integers.
2022-04-25 10:03:47 +09:00
Yukihiro "Matz" Matsumoto
df09838503
numeric.c: mrb_float_to_integer can return a big integer.
2022-04-25 10:02:54 +09:00
Yukihiro "Matz" Matsumoto
61700dbb0a
mruby-sprintf/sprintf.c: raise an error with MRB_NO_FLOAT.
2022-04-25 10:01:09 +09:00
Yukihiro "Matz" Matsumoto
b835979bf3
bigint.c: update the error message for too big integers.
2022-04-25 07:31:39 +09:00
Yukihiro "Matz" Matsumoto
0f4769536b
src/numeric.c: use mrb_ensure_float_type().
...
Instead of obsolete `mrb_to_float()` or the combination of
`mrb_float_value(mrb_as_float())`.
2022-04-25 07:29:55 +09:00
Yukihiro "Matz" Matsumoto
f45ac65532
fixup! mruby-kernel-ext/kernel.c: use mrb_ensure_integer_type().
2022-04-25 07:29:21 +09:00
Yukihiro "Matz" Matsumoto
425097c7be
mruby-kernel-ext/kernel.c: use mrb_ensure_integer_type().
...
Instead of obsolete `mrb_to_integer()`.
2022-04-25 07:26:42 +09:00
Yukihiro "Matz" Matsumoto
ede3bed9e6
object.c: add new function mrb_ensure_integer_type().
...
that checks if the value is an `Integer` which may be a big integer,
where existing `mrb_ensure_int_type()` checks if the value is an Integer
**and** fits in `mrb_int`.
2022-04-25 07:21:40 +09:00
Yukihiro "Matz" Matsumoto
2bea39f339
mruby-range-ext/range.c: Range#cover?() takes a range too.
2022-04-24 14:02:00 +09:00
Yukihiro "Matz" Matsumoto
56a35131a4
numeric.c (mrb_cmp): should not raise NoMethodError.
...
Even when `obj1` does not have `<=>` method.
2022-04-24 14:02:00 +09:00
Yukihiro "Matz" Matsumoto
083691dbd1
variable.c (const_get): stop searching constant before Object.
...
`String::String` should raise `NameError` exception.
2022-04-24 14:02:00 +09:00
Yukihiro "Matz" Matsumoto
17b4d82f65
variable.c: remove mrb_ prefix from a static function.
2022-04-24 14:02:00 +09:00
Yukihiro "Matz" Matsumoto
8bd77ca332
vm.c: target_class should be retrieved from callinfo.
2022-04-24 14:01:59 +09:00
Yukihiro "Matz" Matsumoto
4afbf8ff01
Merge pull request #5697 from dearblue/mrb_alloca
...
Hides the class of string objects allocated by `mrb_alloca()`
2022-04-24 14:00:49 +09:00
dearblue
889f1b898f
Hides the class of string objects allocated by mrb_alloca()
...
Prevents retrieval with the `ObjectSpace.each_object` method.
2022-04-23 22:13:30 +09:00
dearblue
cc3a213fef
Move bigint implementation files to mruby-bigint
...
Users can now switch to their own implementation of GEM.
However, we do not guarantee that this will not be a problem in the current situation.
This may need to be improved in the future.
2022-04-23 21:19:12 +09:00
dearblue
e3e85df13a
Removed duplicate prototype declarations for bigint
...
A part of `include/mruby/bigint.h` has been removed because it duplicates `include/mruby/internal.h`.
2022-04-23 21:11:42 +09:00
Yukihiro "Matz" Matsumoto
a4d97934d5
vm.c: check if target_class is NULL (when prepended).
2022-04-22 08:32:18 +09:00
Yukihiro "Matz" Matsumoto
bdc244e9b0
mruby-errno/errno.c: fix integer size mixtures.
2022-04-21 14:47:15 +09:00
Yukihiro "Matz" Matsumoto
3be461077d
mruby-pack/pack.c: fix integer size mixtures.
2022-04-21 14:47:15 +09:00
Yukihiro "Matz" Matsumoto
9dd45df804
numeric.c (int_pow): should not overflow.
2022-04-21 11:35:52 +09:00
Yukihiro "Matz" Matsumoto
e7d0e6fd5a
vm.c: fix integer size mixtures.
2022-04-20 16:18:18 +09:00
Yukihiro "Matz" Matsumoto
b07ce286f1
fmt_fp.c: fix int and size_t mixture.
2022-04-20 16:11:32 +09:00
Yukihiro "Matz" Matsumoto
dd582069ed
bigint.c: simplify a loop in mrb_bint_new_float().
2022-04-20 14:47:40 +09:00
Yukihiro "Matz" Matsumoto
b0be2b0176
bigint.c: fix integer size mixture warnings.
2022-04-20 14:47:40 +09:00
Yukihiro "Matz" Matsumoto
791635a8d1
Merge pull request #5695 from dearblue/mrbc-build
...
Setting `Command#build` correctly in automatic "mrbc" build for presym
2022-04-20 14:47:25 +09:00
Yukihiro "Matz" Matsumoto
eb8f7e1b77
Merge pull request #5694 from dearblue/method_added
...
Move `method_added` method into the `Module`
2022-04-20 08:05:54 +09:00
dearblue
be782b7d36
Setting Command#build correctly in automatic "mrbc" build for presym
...
This was the cause of the command line flag being affected by changes in the parent build.
So, for example, if `mruby-rational` was included, even the automatically added `mrbc` builds included `MRB_USE_RATIONAL`.
2022-04-19 21:48:50 +09:00
dearblue
8bd924c905
Move method_added method into the Module
...
Previously defined as `BasicObject#method_added`.
2022-04-19 21:00:45 +09:00
Yukihiro "Matz" Matsumoto
4ce0f6dc05
Merge pull request #5692 from jbampton/update-lint-workflow
...
Fix step names in lint workflow
2022-04-19 07:45:47 +09:00
Yukihiro "Matz" Matsumoto
94585a5902
mruby-binding/bindinc.c: should not mix int and size_t.
2022-04-18 17:47:10 +09:00
Yukihiro "Matz" Matsumoto
b38a766427
numeric.c (flo_to_i): use bigint if the value is bigger than mrb_int.
2022-04-18 12:31:15 +09:00
Yukihiro "Matz" Matsumoto
96ff3c31c4
bigint.c: cast to unsigned integer to avoid undefined behavior.
2022-04-18 11:34:30 +09:00
Yukihiro "Matz" Matsumoto
25e6e24c19
bigint.c: adjust integer types to remove warnings.
2022-04-18 11:33:53 +09:00
Yukihiro "Matz" Matsumoto
a89130561b
bigint.c: remove unused function prototypes.
2022-04-18 11:32:09 +09:00
Yukihiro "Matz" Matsumoto
c0b829acce
bigint.h: remove unused macro OVMASK.
2022-04-18 11:30:50 +09:00
Yukihiro "Matz" Matsumoto
cb353af9ad
Merge pull request #5693 from dearblue/each_byte
...
Improvements to `String#each_byte`
2022-04-18 09:58:59 +09:00
Yukihiro "Matz" Matsumoto
c0ef940c90
numeric.c: add boundary checks in Float#to_f.
...
- check_num_exact() before rounding the float value
- check integer (mrb_int) overflow.
2022-04-17 09:32:04 +09:00
Yukihiro "Matz" Matsumoto
790910b50a
codegen.c: genop_3 to take uint16_t instead of uint8_t.
2022-04-17 09:32:04 +09:00
Yukihiro "Matz" Matsumoto
6df1e68e70
Merge pull request #5691 from dearblue/newlit
...
Avoid creating temporary objects with `new_lit()` in `codegen.c`
2022-04-17 09:18:25 +09:00
dearblue
76d3ea8458
Improvements to String#each_byte
...
Each byte value is now retrieved inside the loop.
2022-04-16 22:23:34 +09:00
John Bampton
d1f754cc19
Fix step names in lint workflow
2022-04-16 22:40:03 +10:00
dearblue
1354ad96ec
Avoid creating temporary objects with new_lit() in codegen.c
...
At the same time, the saving and restoration of unwanted object arenas was removed.
In addition, the common code to extend the pool that existed before has been grouped together and newly established as `lit_pool_extend()`.
Note that previously the variable `i` was updated at that time, but since it is the same as the value at the end of a `for` statement, it has been omitted.
The original catalyst was that `bin/mrbc` with the `MRB_WORD_BOXING` + not `MRB_BOXWORD_NO_FLOAT_TRUNCATE` configuration caused `bin/mrbtest` with the `MRB_NO_BOXING` configuration to fail.
Upon investigation, I concluded that avoiding the creation of temporary objects would prevent the truncation of floating point numbers.
Therefore, this patch also prevents the `rake test` from failing with the following configuration.
```console
% cat test_config.rb
bootstrap_mrbc = nil
MRuby::Build.new do |conf|
conf.toolchain
conf.enable_debug
conf.enable_test
conf.disable_presym
conf.defines << %w(MRB_WORD_BOXING)
#conf.defines << %w(MRB_WORDBOX_NO_FLOAT_TRUNCATE)
gem core: "mruby-bin-mrbc"
gem core: "mruby-kernel-ext"
bootstrap_mrbc = File.join(conf.build_dir, "bin/mrbc")
end
MRuby::Build.new("nobox") do |conf|
conf.toolchain
conf.enable_debug
conf.enable_test
conf.defines << %(MRB_NO_BOXING)
conf.mrbcfile = bootstrap_mrbc
gem core: "mruby-kernel-ext"
end
```
2022-04-16 18:22:32 +09:00
Yukihiro "Matz" Matsumoto
b352e462cf
Merge pull request #5690 from jbampton/enable-MD010
...
Enable markdownlint rule MD010 no-hard-tabs
2022-04-15 14:22:04 +09:00
John Bampton
2e35a88c7b
Enable markdownlint rule MD010 no-hard-tabs
2022-04-15 12:19:27 +10:00
Yukihiro "Matz" Matsumoto
528335ee99
Merge pull request #5689 from jbampton/case-and-grammar
...
Fix grammar and case of Ruby
2022-04-15 10:46:49 +09:00
John Bampton
888931c103
Fix grammar and case of Ruby
2022-04-15 11:32:32 +10:00
Yukihiro "Matz" Matsumoto
5f1ed381ae
Merge pull request #5688 from jbampton/fix-spelling
...
Fix spelling in `doc/mruby3.2.md`
2022-04-15 07:44:50 +09:00
John Bampton
aa4049e5e6
Fix spelling in doc/mruby3.2.md
2022-04-15 07:06:23 +10:00
Yukihiro "Matz" Matsumoto
eba74c038e
string.c: avoid a local variable.
2022-04-14 10:55:00 +09:00
Yukihiro "Matz" Matsumoto
15af07562a
variable.c: use size_t to avoid integer type mismatch.
2022-04-14 10:54:37 +09:00
Yukihiro "Matz" Matsumoto
3c96ee704b
fiber.c: cast integer to avoid a warning.
2022-04-14 10:53:58 +09:00
Yukihiro "Matz" Matsumoto
fef7deabd5
doc/mruby3.2.md: add description about multi-precision integers.
2022-04-12 20:28:47 +09:00
Yukihiro "Matz" Matsumoto
2f918f1926
errno.c: fix int and mrb_int mixture.
...
`strerror(3) takes `int` not `mrb_int`.
2022-04-12 16:11:01 +09:00
Yukihiro "Matz" Matsumoto
0e975c1571
bigint.h: simplified the condition.
2022-04-12 15:06:28 +09:00
Yukihiro "Matz" Matsumoto
ff2b21ddf3
Merge pull request #5687 from dearblue/sysfail
...
Must the `mrb_sys_fail()` function raise an exception
2022-04-12 08:59:50 +09:00
Yukihiro "Matz" Matsumoto
0ec5c3e493
bigint.c (mrb_bint_cmp): avoid object allocation for comparison.
2022-04-11 11:12:47 +09:00
Yukihiro "Matz" Matsumoto
f63f57391f
bigint.c: fix bugs caused by integer size variety.
2022-04-11 11:04:22 +09:00
Yukihiro "Matz" Matsumoto
30f6669d09
bigint.h: use int64_t as mp_limb if MRB_INT64 is set.
2022-04-11 11:03:08 +09:00
Yukihiro "Matz" Matsumoto
bafca84c54
dump.c: should dump INT64 with MRB_32BIT.
2022-04-11 11:00:49 +09:00
dearblue
ef5ae084d7
Must the mrb_sys_fail() function raise an exception
...
Normal return of control from the `mrb_sys_fail()` function has unexpected results.
Example: double free, malloc with huge size used as error integer
The following is an example of an actual crash:
```console
% cat crash.rb
def SystemCallError._sys_fail(*a)
nil
end
File.readlink("/404")
% bin/mruby crash.rb
zsh: segmentation fault (core dumped) bin/mruby crash.rb
```
2022-04-10 21:36:59 +09:00
Yukihiro "Matz" Matsumoto
676e9bcf81
bigint.h: use LL suffix for bigger integer literals.
2022-04-10 19:55:45 +09:00
Yukihiro "Matz" Matsumoto
dda1626105
bigint.c: wrong position of break statement.
2022-04-10 19:55:22 +09:00
Yukihiro "Matz" Matsumoto
2f832f4479
bigint.c: fix infinite loop bugs.
2022-04-10 19:04:20 +09:00
Yukihiro "Matz" Matsumoto
e14782e8a1
vm.c: fixed wrong compilation condition for MRB_INT32.
2022-04-10 19:03:37 +09:00
Yukihiro "Matz" Matsumoto
17a31efa8a
vm.c: adjust size of int types.
2022-04-10 19:03:01 +09:00
Yukihiro "Matz" Matsumoto
b3420faafd
class.c: use mrb_ssize to keep the array length.
2022-04-10 19:02:17 +09:00
Yukihiro "Matz" Matsumoto
b22044fca6
vm.c: cipush() to take uint16_t argc.
2022-04-10 17:36:03 +09:00
Yukihiro "Matz" Matsumoto
4260ce83a9
vm.c: avoid bare macro constant reference. wrap it by defined().
2022-04-09 23:43:03 +09:00
Yukihiro "Matz" Matsumoto
bbf4423f4c
bigint.c: y->sz > 2 can be fit in mrb_int.
2022-04-09 18:21:45 +09:00
Yukihiro "Matz" Matsumoto
88e0c64ffc
class.c: fix bugs in inline method cache.
2022-04-09 17:16:12 +09:00
Yukihiro "Matz" Matsumoto
b1d0296a93
class.c: clear method cache after remove_method.
2022-04-09 17:16:12 +09:00
Yukihiro "Matz" Matsumoto
c30e6ebe12
gc.c: add red (persistent no scan) color in the comment [ci skip]
2022-04-09 17:16:12 +09:00
Yukihiro "Matz" Matsumoto
c8c083cb75
codegen.c: need to pack argument when n==13 too.
...
Because we have extra 2 arguments coming (kw and rhs).
2022-04-09 17:16:12 +09:00
Yukihiro "Matz" Matsumoto
55b526167b
test/bigint.rb: add test for multi-precision integers.
2022-04-09 17:16:11 +09:00
Yukihiro "Matz" Matsumoto
f33537f4fd
dump.c: fix a bug in dump data size of BIGINT pool.
...
Was dumping extra NUL (\0) after the data.
2022-04-09 17:16:11 +09:00
Yukihiro "Matz" Matsumoto
a252893292
load.c: should not skip bigint literal length.
2022-04-09 17:16:11 +09:00
Yukihiro "Matz" Matsumoto
dcaf4083d5
src/bigint.c: implement multi-precision integer.
...
To enable multi-precision integer support, you need to link
`mruby-bigint` mrbgem. The gem itself is empty but it turns on
the "bigint" support.
2022-04-09 17:16:10 +09:00
Yukihiro "Matz" Matsumoto
e3c20b7319
build_config: use full-core gembox on host configuration (except default)
2022-04-06 22:51:47 +09:00
Yukihiro "Matz" Matsumoto
5a27b69aa6
numeric.c: remove duplicated code in int_divmod.
2022-04-06 17:04:40 +09:00
Yukihiro "Matz" Matsumoto
5bef8e4135
numeric.c: the result of -5.div(2) should be -3 as CRuby does.
2022-04-06 17:04:40 +09:00
Yukihiro "Matz" Matsumoto
6ed21ead21
Merge pull request #5682 from dearblue/heap_p
...
Fixed bounds check for `heap_p()` function in `src/gc.c`
2022-04-06 17:04:32 +09:00
Yukihiro "Matz" Matsumoto
f9378f45b9
Merge pull request #5684 from jbampton/run-super-linter-once
...
Run Super-Linter only once
2022-04-05 14:12:43 +09:00
Yukihiro "Matz" Matsumoto
c9c63846e9
Merge pull request #5683 from mruby/dependabot/github_actions/github/super-linter-4.9.2
...
build(deps): bump github/super-linter from 4.9.1 to 4.9.2
2022-04-05 14:11:59 +09:00
John Bampton
b4c70fbe51
Run Super-Linter only once
2022-04-05 00:18:29 +10:00
dependabot[bot]
70aded64f7
build(deps): bump github/super-linter from 4.9.1 to 4.9.2
...
Bumps [github/super-linter](https://github.com/github/super-linter ) from 4.9.1 to 4.9.2.
- [Release notes](https://github.com/github/super-linter/releases )
- [Changelog](https://github.com/github/super-linter/blob/main/docs/release-process.md )
- [Commits](https://github.com/github/super-linter/compare/v4.9.1...v4.9.2 )
---
updated-dependencies:
- dependency-name: github/super-linter
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2022-04-04 14:08:43 +00:00
Yukihiro "Matz" Matsumoto
3cf291f722
vm.c: create break object before clearing GC arena.
...
Otherwise it possibly cause use-after-free.
2022-04-04 12:26:52 +09:00
dearblue
87c9bd0754
Fixed bounds check for heap_p() function in src/gc.c
...
One extra element was included.
2022-04-03 22:14:42 +09:00
Yukihiro "Matz" Matsumoto
8aec568fc5
range.c: detect integer overflow.
2022-04-03 18:39:40 +09:00
Yukihiro "Matz" Matsumoto
3dabd18dcc
errno.c: resolve signedness warning.
2022-04-02 18:25:13 +09:00
Yukihiro "Matz" Matsumoto
b99c389ec3
internal.h: aggregate internal functions.
...
Internal functions can only be called from within the library.
Functions listed in `mruby/internal.h` can be called from:
* core (src/*.c)
* gems (mrbgems/**/*.c)
But not from the application linked with `libmruby`.
2022-04-02 18:25:13 +09:00
dearblue
92ef9f1a9e
Store backtrace to field of struct RException
...
Since the possible values of the backtrace are limited to `nil`, `RData`, and `RAray`, they are now stored as object pointers.
This change saves memory by eliminating the need to use instance variables for common exceptions.
ref. #2485
2022-04-01 23:27:19 +09:00
dearblue
7d85092bc4
Reorganize the struct RException::mesg member
...
There is no need to limit the type to `struct RString`.
Also, the `MRB_EXC_MESG_STRING_FLAG` flag can be eliminated by checking if `struct RException::mesg` is `NULL` or not.
ref. #2485
2022-04-01 23:25:20 +09:00
Yukihiro "Matz" Matsumoto
00acae117d
vm.c: target class may be NULL.
2022-04-01 16:40:06 +09:00
Yukihiro "Matz" Matsumoto
d1f1b4ea38
cdump.c: add const qualifier for line number arrays.
2022-04-01 15:02:39 +09:00
Yukihiro "Matz" Matsumoto
9de6065ae2
Merge pull request #5680 from jbampton/pre-commit-autoupdate
...
pre-commit autoupdate
2022-04-01 14:57:08 +09:00
John Bampton
cc380c6546
pre-commit autoupdate
...
https://pre-commit.com/#pre-commit-autoupdate
2022-04-01 08:26:40 +10:00
mimaki
7d3bc5c3d7
Update version to 3.1.0RC2.
2022-03-31 15:17:17 +09:00
Yukihiro "Matz" Matsumoto
f71d389649
codegen.c: fix the negative division regression; fix #5678
2022-03-31 13:05:06 +09:00
Yukihiro "Matz" Matsumoto
eaadc5e79f
parse.y: empty here-doc delimiter caused infinite loop; fix #5676
2022-03-31 13:01:27 +09:00
Yukihiro "Matz" Matsumoto
c627e3b2ab
codegen.c: fix a bug in super with keyword arguments; fix #5660
2022-03-31 13:00:34 +09:00
Yukihiro "Matz" Matsumoto
9424e4d4cf
parse.y: revert 9e064f2; fix #5647
...
Need to declare unnamed parameter when argument decomposition used.
2022-03-31 12:59:44 +09:00
Yukihiro "Matz" Matsumoto
64d3f4c730
vm.c: need to adjust argument after packing keyword args; fix #5632
...
It was caused by #5628 .
2022-03-31 12:58:48 +09:00
Yukihiro "Matz" Matsumoto
a3f2c95334
codegen.c: skip overwritten MOVE instructions.
2022-03-30 15:34:40 +09:00
Yukihiro "Matz" Matsumoto
60cf382ff9
codegen.c: peephole optimize consecutive MOVE instructions.
2022-03-29 22:36:40 +09:00
Yukihiro "Matz" Matsumoto
9593c15603
AUTHORS: update entries [ci skip]
2022-03-28 17:21:10 +09:00
Yukihiro "Matz" Matsumoto
bb5f6a8b56
Merge pull request #5679 from dearblue/expiration-code
...
Remove old compatibility code
2022-03-27 19:13:26 +09:00
dearblue
f9d72908ca
Remove old compatibility code
...
The `mrb_voidp()` related macros have been removed in mruby-1.1.0.
2022-03-27 11:26:43 +09:00
Yukihiro "Matz" Matsumoto
91255c7e9f
mrblib/array.rb: Array#<=> to handle NoMethodError exception.
...
Array element may not respond to `<=>` method.
2022-03-26 22:57:41 +09:00
Yukihiro "Matz" Matsumoto
7f5a490d09
vm.c: vm.c: stack may be reallocated in functions calls; aaa28a5
...
`mrb_range_new()` also calls VM recursively.
2022-03-26 21:06:02 +09:00
Yukihiro "Matz" Matsumoto
bf5bbf0a4b
test/integer: test negative integer divisions; ref #5678
2022-03-26 11:26:57 +09:00
Yukihiro "Matz" Matsumoto
a91b55f5ca
codegen.c: allow constant folding for multiply with zero.
2022-03-26 11:20:59 +09:00
Yukihiro "Matz" Matsumoto
90969cef4c
codegen.c: fix the negative division regression; fix #5678
2022-03-26 11:20:59 +09:00
Yukihiro "Matz" Matsumoto
8afdf78928
Merge pull request #5677 from mruby/dependabot/github_actions/github/super-linter-4.9.1
...
build(deps): bump github/super-linter from 4.9.0 to 4.9.1
2022-03-26 10:52:24 +09:00
dependabot[bot]
4b118fcb0c
build(deps): bump github/super-linter from 4.9.0 to 4.9.1
...
Bumps [github/super-linter](https://github.com/github/super-linter ) from 4.9.0 to 4.9.1.
- [Release notes](https://github.com/github/super-linter/releases )
- [Changelog](https://github.com/github/super-linter/blob/main/docs/release-process.md )
- [Commits](https://github.com/github/super-linter/compare/v4.9.0...v4.9.1 )
---
updated-dependencies:
- dependency-name: github/super-linter
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2022-03-25 14:08:20 +00:00
Yukihiro "Matz" Matsumoto
aaa28a5089
vm.c: stack may be reallocated in functions calls.
...
Probably due to recursive VM calls via `mrb_funcall()`.
2022-03-25 12:54:45 +09:00
Yukihiro "Matz" Matsumoto
b4168c9b68
parse.y: empty here-doc delimiter caused infinite loop; fix #5676
2022-03-25 07:45:06 +09:00
Yukihiro "Matz" Matsumoto
d53a991b07
Merge pull request #5668 from dearblue/gcred
...
No need to protect red objects
2022-03-24 10:33:40 +09:00
Yukihiro "Matz" Matsumoto
ad568ebee5
Merge pull request #5674 from jbampton/fix-markdown-tables
...
Format Markdown tables
2022-03-24 09:37:45 +09:00
John Bampton
7e4eaaa11a
Format Markdown tables
2022-03-24 01:00:24 +10:00
Yukihiro "Matz" Matsumoto
9debdf5a37
Merge pull request #5673 from mruby/dependabot/github_actions/actions/cache-3
...
build(deps): bump actions/cache from 2.1.7 to 3
2022-03-23 10:20:21 +09:00
Yukihiro "Matz" Matsumoto
a153315975
Merge pull request #5665 from dearblue/benchmark1
...
Update benchmark task
2022-03-23 10:19:46 +09:00
dependabot[bot]
be229d666f
build(deps): bump actions/cache from 2.1.7 to 3
...
Bumps [actions/cache](https://github.com/actions/cache ) from 2.1.7 to 3.
- [Release notes](https://github.com/actions/cache/releases )
- [Commits](https://github.com/actions/cache/compare/v2.1.7...v3 )
---
updated-dependencies:
- dependency-name: actions/cache
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com >
2022-03-21 14:09:17 +00:00
Yukihiro "Matz" Matsumoto
982a4769a1
metaprog.c: add undefined_instance_methods method.
2022-03-21 11:15:23 +09:00
Yukihiro "Matz" Matsumoto
74597c6159
numeric.c: fix compile errors with MRB_NO_FLOAT; fix #5672
2022-03-20 19:04:00 +09:00
Yukihiro "Matz" Matsumoto
59d95352d6
doc/mruby3.2.md: new file to describe 3.2 changes.
2022-03-19 14:37:55 +09:00
Yukihiro "Matz" Matsumoto
4f869f3367
numeric.c: enhance float division to support Complex.
2022-03-18 14:23:17 +09:00
Yukihiro "Matz" Matsumoto
e45081d310
mrbc/stub.c: define stub functions in a separated file.
2022-03-18 12:29:47 +09:00
Yukihiro "Matz" Matsumoto
fe03e01078
numeric.c: enhance integer division to support Rational and Complex.
...
No longer need to override division methods in mrbgems.
2022-03-18 12:27:46 +09:00
Yukihiro "Matz" Matsumoto
4dcdf78f8a
numeric_ext.c: add Integer#pow() method.
...
Which takes optional second argument of modulo.
2022-03-17 23:25:50 +09:00
Yukihiro "Matz" Matsumoto
6b2f08d933
Merge pull request #5670 from dearblue/exc-message
...
Reimplement `Exception#message` in Ruby
2022-03-16 22:17:55 +09:00
Yukihiro "Matz" Matsumoto
13d014ab5e
complex.c: rename static functions to remove abbreviations.
...
- `flo_`
- `cpx_`
2022-03-15 19:14:45 +09:00
Yukihiro "Matz" Matsumoto
a869e4e540
numeric.h: remove obsolete functions.
...
- mrb_flo_to_fixnum()
- mrb_to_flo()
This commit removes weird abbreviation `_flo`.
2022-03-15 19:10:49 +09:00
Yukihiro "Matz" Matsumoto
4e1cf3293b
string.h: replace obsolete functions with macros.
...
- mrb_string_value_ptr()
- mrb_string_value_len()
2022-03-15 19:08:25 +09:00
Yukihiro "Matz" Matsumoto
6aa5d53867
numeric.c: avoid mrb_float with MRB_NO_FLOAT; fix #5671
...
`MRB_USE_COMPLEX` is exclusive with `MRB_NO_FLOAT`, so we only need to
check the former.
2022-03-15 19:07:28 +09:00
Yukihiro "Matz" Matsumoto
37d6506972
string.c: remove unused API mrb_str_strlen().
...
Compatibility macro is provided for safety.
2022-03-14 14:11:25 +09:00
Yukihiro "Matz" Matsumoto
7cd8641645
Merge pull request #5666 from dearblue/annotation.1
...
Correct truncated `SystemStackError` [ci skip]
2022-03-14 12:52:31 +09:00
Yukihiro "Matz" Matsumoto
c5f2ac896c
array.c: refactoring allocation size error.
2022-03-13 19:58:57 +09:00
Yukihiro "Matz" Matsumoto
daebdb8a7a
Merge pull request #5669 from dearblue/donothing
...
Change function name `mrb_bob_init` to `mrb_do_nothing`
2022-03-13 19:58:46 +09:00
dearblue
75371b8831
Reimplement Exception#message in Ruby
...
Suppresses the possibility of `mrb_vm_exec()` being called recursively.
2022-03-13 18:56:23 +09:00
dearblue
98d90d83cc
Change function name mrb_bob_init to mrb_do_nothing
...
This is because it is not limited to the `BasicObject#initialize` method.
2022-03-13 16:45:20 +09:00
dearblue
c3eac4fe5c
No need to protect red objects
...
The object in `GC_RED` does not need to be marked, and the objects connected to this object should also not need to be marked.
2022-03-13 16:28:43 +09:00
dearblue
34048abcfc
Correct truncated SystemStackError [ci skip]
2022-03-13 14:56:56 +09:00
Yukihiro "Matz" Matsumoto
a2e9005286
parse.y: add type cast to integer comparison.
2022-03-12 13:31:46 +09:00
Yukihiro "Matz" Matsumoto
4beebc73a7
complex.c: avoid mrb_funcall; call functions directly.
2022-03-12 13:31:38 +09:00
Yukihiro "Matz" Matsumoto
2772e07dc8
rational.c: avoid mrb_funcall; call functions directly.
2022-03-12 13:31:38 +09:00
Yukihiro "Matz" Matsumoto
062c2128a3
numops.c: avoid mrb_funcall; call functions directly.
2022-03-12 13:31:38 +09:00
Yukihiro "Matz" Matsumoto
7659b3b271
numeric.c: avoid mrb_funcall; call functions directly.
...
When you try to call functions defined in mrbgems, you need to add the
names of functions to `mrbc.c`, since `mrbc` does not link any mrbgem
regardless of the configuration.
2022-03-12 13:31:38 +09:00
Yukihiro "Matz" Matsumoto
b0d6413f2d
numops.c: rename functions for addition and subtraction.
...
To more consistent names.
* mrb_num_plus() -> mrb_num_add()
* mrb_num_minus() -> mrb_num_sub()
Since no one seems to use those functions, there should be no problem.
We added migration macros for compatibility for safety.
2022-03-12 10:54:11 +09:00
Yukihiro "Matz" Matsumoto
a20064bcb7
numops.c: separate API functions not used from mruby.
...
* mrb_num_plus()
* mrb_num_minus()
* mrb_num_mul()
2022-03-12 10:53:59 +09:00
Yukihiro "Matz" Matsumoto
5636e6ab54
numeric.c: rename and expose integer arithmetic functions.
...
* mrb_int_add()
* mrb_int_sub()
* mrb_int_mul()
2022-03-12 08:44:04 +09:00
Yukihiro "Matz" Matsumoto
10001ff67f
rational.c, complex.c: expose arithmetic operation functions.
...
* mrb_{rational,complex}_{add,sub,mul,div}
2022-03-12 08:35:07 +09:00
Yukihiro "Matz" Matsumoto
55476efb62
error.c: use mrb_funcall_id and presym to call _sys_fail method.
2022-03-11 10:25:32 +09:00
Yukihiro "Matz" Matsumoto
b3416832f4
vm.c: refactor block type checking.
2022-03-10 10:43:51 +09:00
Yukihiro "Matz" Matsumoto
0293037b21
proc.c: refactor proc type checking.
2022-03-10 10:43:22 +09:00
Yukihiro "Matz" Matsumoto
6ca1e5c8e0
kernel.c: use preallocated symbol.
2022-03-09 17:14:57 +09:00
Yukihiro "Matz" Matsumoto
da48e7dbb2
fiber.c: should pack 15+ arguments in an array.
2022-03-09 15:21:15 +09:00
Yukihiro "Matz" Matsumoto
6e964bd1c6
array.c: check size bound by ARY_MAX_SIZE not MRB_INT_MAX.
2022-03-09 15:21:15 +09:00
Yukihiro "Matz" Matsumoto
6fa5aaf694
socket.c: unify error handling code.
2022-03-09 15:21:14 +09:00
Yukihiro "Matz" Matsumoto
2cb82803b3
socket.c: reorganize error condition in mrb_ipsocket_ntop().
2022-03-09 15:21:14 +09:00
Yukihiro "Matz" Matsumoto
50f357ee5d
mruby-sleep: make error messages consistent.
2022-03-09 15:21:14 +09:00
Yukihiro "Matz" Matsumoto
22a98a0ba7
pack.c: unify duplicated error handling code.
2022-03-09 15:21:14 +09:00
Yukihiro "Matz" Matsumoto
19b9184aa3
string.c: remove unnecessary goto.
2022-03-09 15:21:13 +09:00
Yukihiro "Matz" Matsumoto
c2f7ed514d
Merge pull request #5663 from dearblue/include-prepend
...
Small improvements to `Module#{include,prepend}`
2022-03-07 18:57:25 +09:00
Yukihiro "Matz" Matsumoto
2f8eba325a
Merge pull request #5664 from dearblue/extend
...
Reimplement `Kernel.extend` in Ruby
2022-03-07 11:21:59 +09:00
Yukihiro "Matz" Matsumoto
dc98988482
string.c: small refactoring regarding check_null_byte.
2022-03-06 23:49:40 +09:00
dearblue
267dd15767
Allow build settings to define if benchmarks are covered or not
...
Each build target can be explicitly disabled from benchmarking with `MRuby::Build#disable_benchmark`.
Also, the build target "host", which was previously excluded, is now included in the benchmark.
2022-03-06 15:35:05 +09:00
dearblue
1f0d265a83
Raise an exception if there is no benchmark target
2022-03-06 15:29:35 +09:00
dearblue
e39581242d
Display file paths for benchmark results
2022-03-06 15:28:56 +09:00
dearblue
dfddb04063
Use standardized approach for get build configuration name
2022-03-06 15:27:50 +09:00
dearblue
ac0d27d1a9
Reimplement Kernel.extend in Ruby
2022-03-06 13:48:04 +09:00
dearblue
9d04183ce1
Small improvements to Module#{include,prepend}
...
Array objects obtained as splat arguments are generated within the method.
Therefore, it is safe to perform destructive operations.
2022-03-06 13:43:31 +09:00
Yukihiro "Matz" Matsumoto
2dff7ed6a2
mrbc.c: add --no-optimize option to disable optimization; close #5661
2022-03-05 08:04:34 +09:00
Yukihiro "Matz" Matsumoto
41f5f464ae
codegen.c: disable constant folding if no_optimize is set; ref #5661
2022-03-05 08:04:33 +09:00
Yukihiro "Matz" Matsumoto
7528c25aae
string.c: remove unnecessary mrb_assert_int_fit().
2022-03-05 08:04:33 +09:00
Yukihiro "Matz" Matsumoto
47cb831369
Merge pull request #5662 from mruby/dependabot/github_actions/actions/upload-artifact-3
...
build(deps): bump actions/upload-artifact from 2.3.1 to 3
2022-03-04 23:08:59 +09:00
dependabot[bot]
d6e69ffef8
build(deps): bump actions/upload-artifact from 2.3.1 to 3
...
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact ) from 2.3.1 to 3.
- [Release notes](https://github.com/actions/upload-artifact/releases )
- [Commits](https://github.com/actions/upload-artifact/compare/v2.3.1...v3 )
---
updated-dependencies:
- dependency-name: actions/upload-artifact
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com >
2022-03-04 14:07:02 +00:00
Yukihiro "Matz" Matsumoto
278f46f971
unpack.c: check if srcidx is shorter than srclen for safety.
2022-03-04 14:19:10 +09:00
Yukihiro "Matz" Matsumoto
bc9476e7ca
unpack.c: unpack_BER() did assume the string length is not zero.
2022-03-04 14:18:20 +09:00
Yukihiro "Matz" Matsumoto
31d4bbcfea
string.c: improve size/capacity check before allocations.
2022-03-04 14:17:21 +09:00
Yukihiro "Matz" Matsumoto
876bcba694
string.c: avoid integer type mixture in mrb_str_cat().
2022-03-03 16:29:54 +09:00
Yukihiro "Matz" Matsumoto
85c347c3af
codegen.c: fix a bug in super with keyword arguments; fix #5660
2022-03-03 14:48:39 +09:00
Yukihiro "Matz" Matsumoto
ef3a56c92b
error.c: (mrb_exc_new) use mrb_int instead of size_t.
2022-03-03 14:48:39 +09:00
Yukihiro "Matz" Matsumoto
b6531fa691
error.h: remove obsolete macro mrb_exc_new_str_lit().
2022-03-03 14:48:39 +09:00
Yukihiro "Matz" Matsumoto
c3f0f84da5
string.c: remove code duplication using str_init_modifiable().
2022-03-03 14:48:29 +09:00
Yukihiro "Matz" Matsumoto
1a9991f165
string.c: remove unnecessary size check before string initialization.
2022-03-03 08:08:02 +09:00
Yukihiro "Matz" Matsumoto
a9bde42641
string.c: small refactoring (open else clause after return).
2022-03-03 08:08:02 +09:00
Yukihiro "Matz" Matsumoto
a4f740ff9a
string.c: use mrb_int instead of size_t.
2022-03-03 08:08:02 +09:00
Yukihiro "Matz" Matsumoto
51a3317c5b
string.c: check integer overflow using mrb_int_mul_overflow().
2022-03-03 08:08:01 +09:00
Yukihiro "Matz" Matsumoto
0bf1ed9f2c
array-ext/array.c: remove unused local variable.
2022-03-03 08:08:01 +09:00
Yukihiro "Matz" Matsumoto
84b5b4c6bf
Merge pull request #5658 from mruby/dependabot/github_actions/actions/checkout-3
...
build(deps): bump actions/checkout from 2.4.0 to 3
2022-03-03 08:06:39 +09:00
dependabot[bot]
d6ac7a3a7d
build(deps): bump actions/checkout from 2.4.0 to 3
...
Bumps [actions/checkout](https://github.com/actions/checkout ) from 2.4.0 to 3.
- [Release notes](https://github.com/actions/checkout/releases )
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md )
- [Commits](https://github.com/actions/checkout/compare/v2.4.0...v3 )
---
updated-dependencies:
- dependency-name: actions/checkout
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com >
2022-03-02 14:10:07 +00:00
Yukihiro "Matz" Matsumoto
1508da4740
array.c: check integer overflow in mrb_ary_set().
2022-03-01 15:04:08 +09:00
Yukihiro "Matz" Matsumoto
9d8f3c60ff
kernel.c: inline mrb_obj_extend() that is called only from one place.
2022-02-28 19:07:31 +09:00
Yukihiro "Matz" Matsumoto
740083eb72
AUTHORS: update entries [ci skip]
2022-02-27 23:42:45 +09:00
Yukihiro "Matz" Matsumoto
57540fbf6c
object.c: improve handling of the broken inspect method.
...
When `inspect` method returns non-string value, it will return a string
given from `to_s` (and if `to_s` fails, will raise an exception).
2022-02-26 22:01:52 +09:00
Yukihiro "Matz" Matsumoto
5305c5c84d
array.c: call mrb_ary_delete_at() directly from Array#slice!.
...
Avoid `mrb_funcall()`.
2022-02-26 14:21:35 +09:00
Yukihiro "Matz" Matsumoto
b118ba9fb3
rational.c: avoid indirect calls using mrb_funcall().
2022-02-25 17:53:55 +09:00
Yukihiro "Matz" Matsumoto
64d9808575
Merge pull request #5656 from suetanvil-misc/bug-missing-yaml
...
Added a dependency on 'yaml' to load_gems.rb.
2022-02-24 18:45:24 +09:00
Chris Reuter
73df87f7bd
Added a dependency on 'yaml' to load_gems.rb.
...
It appears that some execution paths no longer load YAML before it is
needed so we explicitly `require` it here.
2022-02-23 14:23:57 -05:00
Yukihiro "Matz" Matsumoto
c75dfad796
Merge pull request #5638 from suetanvil-misc/project-git-path-clash
...
Refactored load_gems.rb to be simpler and easier to understand.
Gracefully handle the case where multiple gems use the same git check out path.
2022-02-23 16:11:28 +09:00
Chris Reuter
8d1ffa8a11
Refactored load_gems.rb to be simpler and easier to understand:
...
- Converted LoadGems::load_special_path_gems() into a class, then
subdivided the various types of gem dependencies into smaller
private methods.
- Added class GemDepDetails to hold the relationship between a gem's
location on the local disk and its upstream repository. This will
be used later.
- Removed the last remains of the '--pull-gems' option from the code
base and documentation. This is no longer present and the dead code
is clutter.
Gracefully handle the case where multiple gems use the same git checkout path.
Previously, if two gems had the same directory name when cloning them
from git, mrbgems would assume they were the same gem. This also
applied to different branches and/or commits of the same repository.
This led to a strange situation where the first `conf.gem` statement
"won" in cloning the repository but the last `conf.gem` ended up
choosing the branch/commit-id to use.
This change detects this situation and makes it an error. It also
allows the config writer to explicitly specify a gem checkout to use
in place of the others.
2022-02-23 16:08:15 +09:00
Yukihiro "Matz" Matsumoto
776be1b397
codegen.c: use OP_ARRAY instead of OP_ARRAY2 in optimization.
...
If operand 1 and operand 2 specify the same register `OP_ARRAY2`
can/should be transformed to `OP_ARRAY`.
2022-02-22 19:28:40 +09:00
Yukihiro "Matz" Matsumoto
d4d29b21b3
codegen.c: peephole optimize OP_MOVE after OP_ARRAY or OP_ARRAY2.
2022-02-22 17:27:24 +09:00
Yukihiro "Matz" Matsumoto
c37f648552
codegen.c: use OP_ARRAY instead of OP_ARRAY2 if possible.
...
`OP_ARRAY` inline elements, i.e: with `OP_ARRAY Rn Rm len`, `Rn` and
`Rm` should always be the same register.
2022-02-22 17:21:51 +09:00
Yukihiro "Matz" Matsumoto
75e86dcfcd
codegen.c: assign post assignees for fixed number of RHS.
2022-02-22 17:20:00 +09:00
Yukihiro "Matz" Matsumoto
ae231924a9
parse.y: small refactoring in mrb_parser_dump().
2022-02-22 16:46:02 +09:00
Yukihiro "Matz" Matsumoto
0282d3ec9f
codegen.c: rename gen_vmassinment to gen_massignment.
...
`m` stands for `multiple` but I don't remember why I put `v` first.
2022-02-22 16:43:51 +09:00
Yukihiro "Matz" Matsumoto
80b44c6ade
socket.c: avoid mrb_funcall_id() to retrieve file descriptor.
2022-02-22 11:46:02 +09:00
Yukihiro "Matz" Matsumoto
0fbdfaa831
Merge pull request #5652 from dearblue/check-type
...
Need to check the type of the method return value
2022-02-22 11:10:18 +09:00
Yukihiro "Matz" Matsumoto
f72315575f
codegen.c: fix a argument generation bug in array assignment.
2022-02-22 11:06:20 +09:00
Yukihiro "Matz" Matsumoto
349307ba88
codedump.c: do not print nameless registers.
2022-02-21 11:46:34 +09:00
Yukihiro "Matz" Matsumoto
ce3b1c4780
SECURITY.md: added memory allocation error as a non security issue.
...
mruby expects `malloc(3)` returns `NULL` for too big allocations, so
even if big object allocation (e.g. `[1,2,3]*268888888888888818`)
caused ASAN/Valgrind warnings, it's intentional, and we won't consider
the warning as a security issue.
2022-02-20 18:39:34 +09:00
Yukihiro "Matz" Matsumoto
5d9239c2c4
Merge pull request #5653 from dearblue/doc-keywords
...
Improved documentation for `struct mrb_kwargs` [ci skip]
2022-02-20 16:40:11 +09:00
dearblue
d7c09fb24a
Improved documentation for struct mrb_kwargs [ci skip]
...
- Changed the description to match the order of the changed members.
- Replaced "array of symbols" instead of "array of strings that mean symbols".
- The `mrb_kwargs::optional` member has not been present since the first merge. It is a remnant from development time.
- Removed `const` modifier used in variable declarations in examples. This is not always necessary from a user perspective.
- Added note on the use of `MRB_SYM()`.
resolved #5649
2022-02-19 21:55:52 +09:00
Yukihiro "Matz" Matsumoto
44f591aa8f
codegen.c: adjust stack position for OP_SUPER instruction.
2022-02-19 16:17:33 +09:00
Yukihiro "Matz" Matsumoto
f906ac314c
Merge pull request #5651 from dearblue/doc3.1
...
Update `doc/mruby3.1.md`
2022-02-19 15:49:44 +09:00
dearblue
621cafde68
Need to check the type of the method return value
2022-02-19 15:01:46 +09:00
dearblue
401d316bcf
Update doc/mruby3.1.md
...
- `OP_GETIDX`, `OP_SETIDX` : Fix operand number
- `OP_SYMBOL` : Add entry
2022-02-19 14:39:17 +09:00
Yukihiro "Matz" Matsumoto
5a014997ef
Merge pull request #5650 from dearblue/keywords
...
Insert an empty hash before the first `NODE_KW_REST_ARGS`
2022-02-19 10:25:11 +09:00
dearblue
12d51807a3
Insert an empty hash before the first NODE_KW_REST_ARGS
...
I expect this will fix the two problems that "#5640 " didn't address.
- It is expected to raise an exception `TypeError`, but it didn't before.
```console
% bin/mruby -e 'p [**1]'
[1]
```
- The variable `h` is expected to keep an empty hash, but it didn't before.
```console
% bin/mruby -e 'h = {}; p(**h, a: 1, b: 2); p h'
{:a=>1, :b=>2}
{:a=>1, :b=>2}
```
2022-02-18 22:15:50 +09:00
Yukihiro "Matz" Matsumoto
47068ae07a
vm.c: packed arguments length may be zero for send method.
2022-02-18 14:38:07 +09:00
Yukihiro "Matz" Matsumoto
1e314242e4
Merge pull request #5648 from mruby/dependabot/github_actions/github/super-linter-4.9.0
...
build(deps): bump github/super-linter from 4.8.7 to 4.9.0
2022-02-17 13:07:27 +09:00
dependabot[bot]
90e61e6a26
build(deps): bump github/super-linter from 4.8.7 to 4.9.0
...
Bumps [github/super-linter](https://github.com/github/super-linter ) from 4.8.7 to 4.9.0.
- [Release notes](https://github.com/github/super-linter/releases )
- [Changelog](https://github.com/github/super-linter/blob/main/docs/release-process.md )
- [Commits](https://github.com/github/super-linter/compare/v4.8.7...v4.9.0 )
---
updated-dependencies:
- dependency-name: github/super-linter
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2022-02-16 14:05:48 +00:00
Yukihiro "Matz" Matsumoto
a8f0e79107
parse.y: revert 9e064f2; fix #5647
...
Need to declare unnamed parameter when argument decomposition used.
2022-02-16 13:56:10 +09:00
Yukihiro "Matz" Matsumoto
1e0bdea30b
codedump.c: print implicit operand of OP_HASHCAT.
...
Just like `OP_ARYCAT` and `OP_STRCAT`.
2022-02-16 07:40:42 +09:00
Yukihiro "Matz" Matsumoto
ff3a5ebed6
vm.c: should check type before hash access.
...
Since the operand of double splat (`**`) may not be a hash, simple
assertion (previous code since d42a64e ) was not enough for this case.
2022-02-15 18:36:38 +09:00
Yukihiro "Matz" Matsumoto
ecb28f4bf4
load.c: add data boundary check for broken compiled binary.
2022-02-14 17:34:28 +09:00
Yukihiro "Matz" Matsumoto
aba3d427c7
state.c: reps may be NULL if a broken compiled binary given.
2022-02-14 17:34:27 +09:00
Yukihiro "Matz" Matsumoto
e884236e1c
dump.h, irep.h: update comments not to omit buffer length for loading. [ci skip]
2022-02-14 17:34:27 +09:00
Yukihiro "Matz" Matsumoto
ad3ce7b41c
Merge pull request #5642 from dearblue/errmesg
...
Avoid direct access to error messages as instance variables
2022-02-13 20:59:47 +09:00
Yukihiro "Matz" Matsumoto
38b164ace7
codegen.c: fix a bug in gen_values().
...
- Fix limit handling that fails 15 arguments method calls.
- Fix too early argument packing in arrays.
2022-02-12 12:39:35 +09:00
Yukihiro "Matz" Matsumoto
0ed3fcfa26
Merge pull request #5646 from koic/support_array_join_with_string_argument
...
Make `Array#*` the CRuby compatible behavior when giving a string argument
2022-02-11 15:21:01 +09:00
Yukihiro "Matz" Matsumoto
11e7ca5db9
Merge pull request #5645 from jbampton/pre-commit-autoupdate
...
pre-commit autoupdate
2022-02-10 11:31:01 +09:00
Yukihiro "Matz" Matsumoto
fb82108acb
load.c: should check if length of irep sections are valid.
2022-02-10 11:25:45 +09:00
Yukihiro "Matz" Matsumoto
d912b864df
mruby-range-ext/range.c: cover? should work with begin-less ranges.
2022-02-09 13:32:20 +09:00
Yukihiro "Matz" Matsumoto
4e8ab145da
vm.c: adjust integer types.
2022-02-08 13:11:44 +09:00
Yukihiro "Matz" Matsumoto
9037e447a5
numeric.c: avoid implicit cast from integer to double.
2022-02-08 13:11:44 +09:00
Yukihiro "Matz" Matsumoto
4562ba14c0
codegen.c: limit check was too restrictive in gen_values().
...
That can create unnecessary arrays when more than 12 arguments are
given to a method.
2022-02-08 13:11:43 +09:00
Yukihiro "Matz" Matsumoto
0849a2885f
codegen.c: stack position may be wrong on assignments.
...
When `[]=` access includes keyword arguments.
2022-02-08 13:11:43 +09:00
Yukihiro "Matz" Matsumoto
4c13188ea6
codegen.c: generate OP_HASH in gen_hash() if limit exceeds.
...
That means when `limit` is `0` it should always generate a hash.
2022-02-08 13:11:43 +09:00
Yukihiro "Matz" Matsumoto
6f5e74f576
codegen.c: change size_t to uint16_t To remove type conversion warnings.
2022-02-08 13:11:42 +09:00
Koichi ITO
182096d8c0
Make Array#* the CRuby compatible behavior when giving a string argument
...
## Summary
This following is a behavior from CRuby 1.8.7 to 3.1.0.
```console
% ruby -ve "p ['a', 'b', 'c']*''"
ruby 1.8.7 (2013-12-22 patchlevel 375) [i686-darwin13.0.2]
"abc"
% ruby -ve "p ['a', 'b', 'c']*''"
ruby 3.1.0p0 (2021-12-25 revision fb4df44d16) [x86_64-darwin19]
"abc"
```
### Before (mruby 3.0.0)
mruby unexpectedly gives the TypeError.
```ruby
['a', 'b', 'c']*'' #=> String cannot be converted to Integer (TypeError)
```
### After
This PR makes mruby behave compatible with CRuby.
```ruby
['a', 'b', 'c']*'' #=> 'abc'
```
As far as I checked, the behavior is unspecified when `Array#*`'s argument
is not an instance of Integer class in X 3017 : 2013 (ISO/IEC 30170 : 2012).
## Additional Information
I noticed this difference by the following idiom when writing ASCII art code
using Ruby.
```ruby
%w(foo bar baz)*''
```
e.g. TRICK (https://github.com/tric )
2022-02-08 11:20:14 +09:00
John Bampton
4f986060c0
pre-commit autoupdate
...
https://pre-commit.com/#pre-commit-autoupdate
2022-02-07 19:52:12 +10:00
Yukihiro "Matz" Matsumoto
6cc6d9b078
Merge pull request #5644 from dearblue/errno-nopresym
...
Support `disable_presym` for `mrbgems/mruby-errno`
2022-02-07 16:05:22 +09:00
Yukihiro "Matz" Matsumoto
8b32a1f7ae
Merge pull request #5643 from dearblue/errno-nostdio
...
Support `MRB_NO_STDIO` for `mrbgems/mruby-errno`
2022-02-07 15:43:51 +09:00
Yukihiro "Matz" Matsumoto
e24e81cd3c
mruby.c: rindex() is not supported by VC.
2022-02-06 22:44:02 +09:00
Yukihiro "Matz" Matsumoto
d42a64eadf
vm.c: add assertion for type of register values.
...
We used to check them by `mrb_ensure_xxx_type()` functions, but type
errors there should not occur if there's no bug in code generations.
So we use assertion rather than dynamic type checks.
2022-02-06 22:17:53 +09:00
Yukihiro "Matz" Matsumoto
cf00c32e3a
mruby.c: -b option should only affects the script.
...
Not the libraries loaded by `-r`. Instead, `.mrb` extension in the path
should determine whether they are compiled binary.
2022-02-06 22:17:41 +09:00
Yukihiro "Matz" Matsumoto
bf8e061c17
Merge pull request #5641 from dearblue/ci-win2022
...
Pinning the Visual Studio version in GitHub Actions
2022-02-06 20:49:53 +09:00
dearblue
0a4f21c60f
Support disable_presym for mrbgems/mruby-errno
...
The `mrbgems/mruby-errno/src/known_errors_def.cstub` file has been extended, so the `mrbgems/mruby-errno/src/known_errors_e2c.cstub` file is no longer needed.
2022-02-06 18:39:46 +09:00
dearblue
a82220211d
Support MRB_NO_STDIO for mrbgems/mruby-errno
2022-02-06 16:12:41 +09:00
dearblue
d6773cbd71
Avoid direct access to error messages as instance variables
...
ref. #2485
The `SystemCallError#to_s` method also needed to be modified, but since it has no functional difference from the `Exception#to_s` method, it will be removed.
2022-02-06 15:45:13 +09:00
dearblue
faffc0c4d3
Pinning the Visual Studio version in GitHub Actions
...
Until now, `windows-latest` meant `windows-2019`, but now it seems that it is being replaced by `windows-2022` in stages.
At the same time, Visual Studio 2019 will be replaced by Visual Studio 2022.
Since mruby's CI is configured to assume Visual Studio 2019, we'll update this and explicitly specify `windows-2022`.
2022-02-05 21:42:54 +09:00
Yukihiro "Matz" Matsumoto
b7adf61fe2
Merge pull request #5640 from dearblue/rest-keywords
...
Check the type of the keyword rest argument
2022-02-05 18:30:58 +09:00
dearblue
6dfc47f5d4
Check the type of the keyword rest argument
...
If a non-hash object is passed in `OP_SEND` and `OP_SUPER`, an error should occur.
```ruby
kwd = "string"
p(**kwd) # => expect raised TypeError
```
2022-02-05 17:41:01 +09:00
dearblue
d0e8637e30
Integrate argument normalization for OP_SEND and OP_SUPER
2022-02-05 17:36:23 +09:00
Yukihiro "Matz" Matsumoto
903c5f978a
vm.c: check object type before concatenating strings.
2022-02-03 10:41:09 +09:00
Yukihiro "Matz" Matsumoto
ae3c99767a
codegen.c: fixed a bug in hash code generation with !val.
2022-02-03 10:40:05 +09:00
Yukihiro "Matz" Matsumoto
8d06e79c57
codedump.c: remove unnecessary condition.
...
`(irep->pool[b].tt & IREP_TT_NFLAG) == 0` is always true ensured by
the assertion.
2022-02-02 20:57:43 +09:00
Yukihiro "Matz" Matsumoto
f9f2d4c4e3
codedump.c: adjust OP_HASHCAT variable label position.
2022-02-02 20:51:37 +09:00
Yukihiro "Matz" Matsumoto
f0af96c130
mruby-class-ext: add Class#subclasses method.
2022-02-01 22:37:49 +09:00
Yukihiro "Matz" Matsumoto
d9bf7982e9
class.c: set MRB_FL_CLASS_IS_INHERITED flag for bootstrapped classes.
2022-02-01 22:36:42 +09:00
Yukihiro "Matz" Matsumoto
00f2b74ab2
kernel.c, binding.c: use MRB_SYM() instead of mrb_intern_lit().
2022-01-31 16:20:52 +09:00
Yukihiro "Matz" Matsumoto
92fb6d3526
Merge pull request #5639 from suetanvil-misc/project-mruby-errno-readme
...
Updated mruby-errno/README.md to pass the lint checks.
2022-01-31 15:45:18 +09:00
Yukihiro "Matz" Matsumoto
8252352d7b
parse.y: fix buffer overflow with tweaked mruby binary.
2022-01-31 15:42:52 +09:00
Chris Reuter
198e10473b
Updated mruby-errno/README.md to pass the lint checks.
2022-01-29 18:40:05 -05:00
Yukihiro "Matz" Matsumoto
0cd12c6d6f
Merge pull request #5637 from mruby/dependabot/github_actions/github/super-linter-4.8.7
...
build(deps): bump github/super-linter from 4.8.6 to 4.8.7
2022-01-29 09:09:36 +09:00
dependabot[bot]
319340f309
build(deps): bump github/super-linter from 4.8.6 to 4.8.7
...
Bumps [github/super-linter](https://github.com/github/super-linter ) from 4.8.6 to 4.8.7.
- [Release notes](https://github.com/github/super-linter/releases )
- [Changelog](https://github.com/github/super-linter/blob/main/docs/release-process.md )
- [Commits](https://github.com/github/super-linter/compare/v4.8.6...v4.8.7 )
---
updated-dependencies:
- dependency-name: github/super-linter
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2022-01-28 14:06:26 +00:00
Yukihiro "Matz" Matsumoto
8b443aa43b
Merge pull request #5636 from mruby/dependabot/github_actions/github/super-linter-4.8.6
...
build(deps): bump github/super-linter from 4.8.5 to 4.8.6
2022-01-28 11:24:46 +09:00
dependabot[bot]
912925eab7
build(deps): bump github/super-linter from 4.8.5 to 4.8.6
...
Bumps [github/super-linter](https://github.com/github/super-linter ) from 4.8.5 to 4.8.6.
- [Release notes](https://github.com/github/super-linter/releases )
- [Changelog](https://github.com/github/super-linter/blob/main/docs/release-process.md )
- [Commits](https://github.com/github/super-linter/compare/v4.8.5...v4.8.6 )
---
updated-dependencies:
- dependency-name: github/super-linter
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2022-01-27 14:09:18 +00:00
Yukihiro "Matz" Matsumoto
c5bdfe1bd4
mruby-errno: add errno constants to known_errors.def.
...
Add unlisted errno constants found in macOS and FreeBSD.
If you see unlisted errno, please report.
2022-01-26 12:58:52 +09:00
Yukihiro "Matz" Matsumoto
b7cdb59f26
errno.c: stop generating Errno::Exxx error classes on the fly.
2022-01-26 12:29:19 +09:00
Yukihiro "Matz" Matsumoto
dd93dd7419
errno.c: refactor _sys_fail to avoid mrb_funcall.
2022-01-25 16:01:33 +09:00
Yukihiro "Matz" Matsumoto
9892742d27
errno.c: use C array instead of a hash table to lookup a errno class.
...
To reduce memory consumption by avoiding allocating Ruby objects.
2022-01-25 11:15:34 +09:00
Yukihiro "Matz" Matsumoto
194d0c6f46
mruby-errno: change the format of known_errors_e2c.cstub.
2022-01-25 11:08:52 +09:00
Yukihiro "Matz" Matsumoto
4176e8e88f
error.c: use MRB_SYM() in mrb_sys_fail.
2022-01-25 11:08:05 +09:00
Yukihiro "Matz" Matsumoto
5c7338491c
errno.c: use mrb_fixnum_p() instead of mrb_type().
2022-01-25 10:39:13 +09:00
Yukihiro "Matz" Matsumoto
6744d69d3d
errno.c: replace string literals by MRB_SYM().
2022-01-25 10:39:13 +09:00
Yukihiro "Matz" Matsumoto
1e866dffc4
errno.c: bundled mrbgem need not to support mruby 1.x.
2022-01-25 10:28:50 +09:00
Yukihiro "Matz" Matsumoto
0f5829795e
errno.c: use MRB_SYM() instead of mrb_intern_lit().
2022-01-25 10:26:34 +09:00
Yukihiro "Matz" Matsumoto
3b5486e3ae
mruby-errno/test: update test suites not to report warnings.
2022-01-25 10:22:28 +09:00
Yukihiro "Matz" Matsumoto
3a15d18ebb
errno.c: hide internal _sys_fail from backtrace.
2022-01-24 18:14:28 +09:00
Yukihiro "Matz" Matsumoto
c8d96ed782
stdlib.gembox: add mruby-errno
2022-01-24 18:13:28 +09:00
Yukihiro "Matz" Matsumoto
a60073d7b9
mruby-errno: remove .gitkeep.
2022-01-24 18:07:59 +09:00
Yukihiro "Matz" Matsumoto
0a6d57ab3c
Merge remote-tracking branch 'mruby-errno/master'
2022-01-24 17:58:41 +09:00
Yukihiro "Matz" Matsumoto
2adf32a3f4
add mruby-errno directory
2022-01-24 16:42:36 +09:00
Yukihiro "Matz" Matsumoto
7bedd5e05d
codegen.c: generate OP_SETIDX from attribute assignments.
2022-01-24 11:18:27 +09:00
Yukihiro "Matz" Matsumoto
cda4d9bcb4
codegen.c: refactor gen_call and gen_values.
...
Remove no longer used arguments from the functions.
2022-01-22 16:40:21 +09:00
Yukihiro "Matz" Matsumoto
b611c43a5d
codegen.c: no OP_HASHADD required when val is false.
2022-01-21 15:42:51 +09:00
Yukihiro "Matz" Matsumoto
adb16fc6df
codegen.c: adjust indentation after OP_STRCAT.
2022-01-21 10:51:07 +09:00
Yukihiro "Matz" Matsumoto
ebb5287e29
codedump.c: omit raw c operand for OP_SEND etc.
2022-01-21 10:41:14 +09:00
Yukihiro "Matz" Matsumoto
b53cd3ce25
codegen.c: fix evaluation order of attribute assignment.
2022-01-21 10:41:14 +09:00
Yukihiro "Matz" Matsumoto
f8944792be
parse.y: consistent argument pass for new_call().
2022-01-21 10:41:13 +09:00
Yukihiro "Matz" Matsumoto
ef98eb2c29
codegen.c: fix evaluation order of constant initialization.
...
`a::B = c` should evaluate `a` then `c`. It used to be `c` then `a`. The
`OP_SETMCNST` instruction operands are designed for older order in mind.
Should we changed the operand order?
2022-01-21 10:41:13 +09:00
Yukihiro "Matz" Matsumoto
b68ba2df49
Merge pull request #5634 from hasumikin/fix_mruby-bin-example_tree
...
Fix tree of mruby-bin-example
2022-01-17 23:27:29 +09:00
HASUMI Hitoshi
fb9bba34fb
Fix tree of mruby-bin-example
2022-01-17 22:36:41 +09:00
mimaki
6f2efebbb9
Merge commit '7e7f1b2' into stable
2022-01-17 21:36:52 +09:00
Yukihiro "Matz" Matsumoto
31fa330404
class.c: add obj->c check before prepare_singleton_class().
2022-01-16 22:22:46 +09:00
Yukihiro "Matz" Matsumoto
475b868b72
time.c: remove duplicated UTC condition check.
2022-01-15 18:24:39 +09:00
Yukihiro "Matz" Matsumoto
171d32c007
time.c: 1969-12-31 23:59:59 is a valid time.
...
But `mktime(3)` for the date returns `-1` which happen to be the
error value.
2022-01-14 11:40:52 +09:00
Yukihiro "Matz" Matsumoto
8f09d8feb4
time.c: check year range before creating Time object.
2022-01-13 15:40:09 +09:00
Yukihiro "Matz" Matsumoto
9f012724fb
vm.c: need to adjust argument after packing keyword args; fix #5632
...
It was caused by #5628 .
2022-01-12 12:44:23 +09:00
Yukihiro "Matz" Matsumoto
7e7f1b2f1d
parse.y: numbered parameters should not appear on toplevel.
...
Toplevel includes the top of the method/class/module definitions.
2022-01-11 14:52:05 +09:00
Yukihiro "Matz" Matsumoto
3a30cc27da
parse.y: move numbered parameter indexing to lexer.
2022-01-11 14:49:41 +09:00
Yukihiro "Matz" Matsumoto
5dfbfb3ecd
parse.y: p->nvar (numbered argument index list) may be NULL.
2022-01-10 15:44:15 +09:00
Yukihiro "Matz" Matsumoto
8c7b995962
AUTHORS: update entries [ci skip]
2022-01-10 12:33:01 +09:00
Yukihiro "Matz" Matsumoto
69b1667b5b
Merge pull request #5630 from dearblue/dumps
...
Fixes file header in src/{cdump,dump}.c [ci skip]
2022-01-09 21:46:40 +09:00
dearblue
178daf1a75
Fixes file header in src/{cdump,dump}.c [ci skip]
...
The file headers were pointing to each other's files.
2022-01-09 16:30:06 +09:00
mimaki
f29924c838
Update version to 3.1.0RC.
2022-01-07 14:15:50 +09:00
Yukihiro "Matz" Matsumoto
696589cf27
Merge pull request #5628 from dearblue/super-kwargs
...
Fixing keyword arguments with `super`
2022-01-06 10:05:05 +09:00
Yukihiro "Matz" Matsumoto
b1fc0dd5a4
Merge pull request #5629 from dearblue/nanbox
...
Allows handling of unaligned cptrs for `MRB_NAN_BOXING`
2022-01-06 10:02:49 +09:00
Yukihiro "Matz" Matsumoto
dfa21f2e58
class.c: cancel #5620 which is no longer needed since #5622
...
This reverts commit d3b7601af9 .
2022-01-05 19:40:55 +09:00
Yukihiro "Matz" Matsumoto
aaa3bd0e80
mrbc.c: simplify place holder functions; #5622
2022-01-05 19:39:39 +09:00
Yukihiro "Matz" Matsumoto
c088af87b8
object.c: Call functions directly from mrb_ensure_int_type(); #5622
2022-01-05 19:00:14 +09:00
dearblue
88b1654725
Allows handling of unaligned cptrs for MRB_NAN_BOXING
...
It seems to be preferable to be able to handle pointers of type `char` as well.
For this purpose, `mrb_nanbox_tt_inline` has been reorganized.
- `MRB_NANBOX_TT_POINTER` has been split into `MRB_NANBOX_TT_OBJECT` and `MRB_NANBOX_TT_CPTR`
- `MRB_NANBOX_TT_SYMBOL` has been merged into `MRB_NANBOX_TT_MISC`
2022-01-05 17:23:35 +09:00
dearblue
55b2e45a26
Fixing keyword arguments with super
...
fix #5627
2022-01-05 16:40:13 +09:00
Yukihiro "Matz" Matsumoto
d34e1cb84c
Merge pull request #5623 from dearblue/more-presym
...
Improves presym scanning
2022-01-04 11:54:09 +09:00
Yukihiro "Matz" Matsumoto
6c68b516ff
Merge pull request #5624 from dearblue/powerof2
...
Assert that `MRB_METHOD_CACHE_SIZE` is a power of 2
2022-01-04 11:51:00 +09:00
Yukihiro "Matz" Matsumoto
5c75dc9edc
Merge pull request #5625 from dearblue/proc_new
...
Assign after `mrb_irep_incref()` in `mrb_proc_new()`
2022-01-03 08:54:01 +09:00
Yukihiro "Matz" Matsumoto
4e0b162253
Merge pull request #5622 from dearblue/to_f
...
Call functions directly from `mrb_ensure_float_type()`
2022-01-02 18:04:18 +09:00
Yukihiro "Matz" Matsumoto
ab4baba283
Merge pull request #5620 from dearblue/adjust-stacks
...
Adjusting the stack for after it enters the virtual machine
2022-01-02 18:01:53 +09:00
dearblue
bee9665400
Assign after mrb_irep_incref() in mrb_proc_new()
...
ref. 28ccc664e5
2022-01-02 16:43:43 +09:00
dearblue
82a1b00eb6
Assert that MRB_METHOD_CACHE_SIZE is a power of 2
...
The `mrb_static_assert_powerof2()` macro has been introduced for this purpose.
2022-01-02 14:59:55 +09:00
dearblue
f2d19aaaac
Improves presym scanning
...
The main purpose is to increase the chances of finding presym and to prevent errors due to C++11 lambda expressions.
- The argument to receive the class may be written, for example, `mrb_class_get()`.
- The argument that receives the implementation function of the method may be a C++ lambda expression.
In this case, if multiple variable declarations are separated by colons, the preprocessor will recognize them as argument delimiters and report an error.
This patch prevents it from happening.
```c++
// When preprocessing...
func([] { int x, y, z; })
// ^^^^^^^^^^ 1st argument?
// ^ 2nd argument?
// ^^^^ 3rd argument?
```
2022-01-02 11:52:19 +09:00
Yukihiro "Matz" Matsumoto
28ccc664e5
proc.c: should not reference irep when copying failed.
...
It may cause broken reference count numbers.
2022-01-01 21:02:58 +09:00
dearblue
ac22a63ae3
Call functions directly from mrb_ensure_float_type()
...
ref. commit 7f40b645d2
Currently, the build configurations `MRB_USE_COMPLEX` and `MRB_USE_RATIONAL` are not listed in the documentation.
In other words, they are hidden settings.
They are defined in `mrbgems/mruby-{complex,rational}/mrbgem.rake`.
So this patch assumes that it is safe to refer to these functions in core-gems directly from core functions.
However, applications that link with `libmruby_core.a` will have compatibility issues.
In fact, `mrbgems/mruby-bin-mrbc` links with `libmruby_core.a`, so I had to prepare a dummy function.
2021-12-31 19:12:11 +09:00
Yukihiro "Matz" Matsumoto
3de9ddfb39
vm.c: use prepare_missing in mrb_funcall_with_block
...
Remove code duplication.
2021-12-31 18:15:41 +09:00
Yukihiro "Matz" Matsumoto
5ca17c2dce
Merge pull request #5621 from dearblue/ci-cygwin
...
Extend the Cygwin CI time limit to 15 minutes.
2021-12-31 16:32:33 +09:00
Yukihiro "Matz" Matsumoto
9fc26eacd1
Merge pull request #5619 from dearblue/properties
...
Get object properties after `mrb_get_args()`
2021-12-31 15:28:11 +09:00
Yukihiro "Matz" Matsumoto
b9e1b9b328
numeric.c: merge mrb_as_float implementation to mrb_ensure_float_type.
...
Since they are basically duplicated functionality. `mrb_as_float` is now
a macro defined using `mrb_ensure_float_type`; #5620
2021-12-31 15:14:37 +09:00
Yukihiro "Matz" Matsumoto
566a8d3fcb
object.c: add conversion to Float from Rational, Complex; #5620
2021-12-31 15:13:04 +09:00
Yukihiro "Matz" Matsumoto
7f40b645d2
numeric.c: mrb_as_float should not call to_f for generic objects.
...
It should only call `to_f` for Rational and Complex numbers.
Ref #5540 #5613 #5620
2021-12-31 10:54:28 +09:00
Yukihiro "Matz" Matsumoto
eea418bcce
class.c, variable,c: replace size_t by int.
...
That reduce memory consumption by iv/mt tables.
2021-12-31 10:54:28 +09:00
dearblue
4c8a8818ec
Extend the Cygwin CI time limit to 15 minutes.
...
The main reason for failure is to exceed the time limit, and even when it succeeds, there is less than a minute left.
The 10-minute time limit seems to be too short.
2021-12-30 22:58:41 +09:00
dearblue
d3b7601af9
Adjusting the stack for after it enters the virtual machine
...
ref. #5613 .
I mentioned in #5540 that there was no reentrant to the virtual machine, but in fact it was still a possibility at that point.
Also, the variable `ci` needs to be recalculated at the same time.
2021-12-30 22:45:19 +09:00
dearblue
a137ef12f9
Get object properties after mrb_get_args()
...
ref. #5613
I checked with Valgrind, and the methods that can cause use-after-free are `Array#rotate`, `Array#rotate!`, and `String#byteslice`.
Since `String#rindex` uses `RSTRING_LEN()` indirectly inside the function, no reference to the out-of-bounds range is generated.
2021-12-30 22:34:22 +09:00
Yukihiro "Matz" Matsumoto
77f4a8b669
object.c: move string to float conversion to mrb_f_float.
2021-12-29 16:58:05 +09:00
Yukihiro "Matz" Matsumoto
66a099b1b3
string.c: reorganize str_convert_range using mrb_ensure_int_type
2021-12-29 16:44:35 +09:00
Yukihiro "Matz" Matsumoto
b6d31810fe
string.c: use mrb_as_int macro.
2021-12-29 16:39:56 +09:00
Yukihiro "Matz" Matsumoto
4f297ac29c
object.c: introduce mrb_ensure_{int,float}_type.
...
Since `mrb_to_integer` and `mrb_to_float` does not convert the object
but checks types, they are named so by historical reason. We introduced
properly named functions.
This commit obsoletes the following functions:
* mrb_to_integer()
* mrb_to_int()
* mrb_to_float()
Use `mrb_ensure_int_type()` instead for the first 2 functions. Use
`mrb_ensure_float_type()` for the last.
2021-12-29 16:39:29 +09:00
Yukihiro "Matz" Matsumoto
b6283978c5
object.c: avoid implicit to_i and to_f calls.
...
mruby have removed `to_int` implicit conversion, so `mrb_to_integer`
should not call `to_i` for conversion.
2021-12-29 16:21:29 +09:00
Yukihiro "Matz" Matsumoto
41e8b210b8
common.h: include <sys/types.h> for ssize_t; #5617
2021-12-29 15:57:45 +09:00
Yukihiro "Matz" Matsumoto
27d1e0132a
array.c: fix mrb_ary_shift_m initialization bug.
...
The `ARY_PTR` and `ARY_LEN` may be modified in `mrb_get_args`.
2021-12-29 15:50:28 +09:00
Yukihiro "Matz" Matsumoto
83f2e75d17
Merge pull request #5616 from mimaki/refine-ssize_t-on-msvc
...
Fix build error and refine definition of `ssize_t` on MSVC.
2021-12-29 12:58:43 +09:00
mimaki
1f3a385ec5
Fix build error and refine definition of ssize_t on MSVC.
2021-12-28 17:18:59 +09:00
Yukihiro "Matz" Matsumoto
6f5c211c78
Merge pull request #5614 from jbampton/patch-1
...
Fix word casing in the README
2021-12-28 16:19:52 +09:00
Yukihiro "Matz" Matsumoto
8933a6fcbf
Merge pull request #5615 from jbampton/pre-commit-autoupdate
...
pre-commit autoupdate
2021-12-28 16:19:14 +09:00
John Bampton
69affd6983
pre-commit autoupdate
...
https://pre-commit.com/#pre-commit-autoupdate
2021-12-28 10:28:14 +10:00
John Bampton
c997229ecf
Fix word casing in the README
...
Changed `Actual` to `actual` mid sentence
2021-12-28 10:22:20 +10:00
Yukihiro "Matz" Matsumoto
6de0fcbda2
class.c: remove mt_elem structure to avoid alignment gaps.
2021-12-27 11:15:34 +09:00
Yukihiro "Matz" Matsumoto
a388d609ae
variable.c: need to initialize size of iv table.
2021-12-27 10:55:17 +09:00
Yukihiro "Matz" Matsumoto
27e57aad0b
parse.y: prohibit numbered parameters as arguments; fix #5605
2021-12-27 10:55:17 +09:00
Yukihiro "Matz" Matsumoto
e6b6413932
Merge pull request #5612 from dearblue/compar-ext
...
Fix summary typo for `mrbgems/mruby-compar-ext`
2021-12-26 08:13:23 +09:00
dearblue
65195cd784
Fix summary typo for mrbgems/mruby-compar-ext
2021-12-25 20:46:25 +09:00
Yukihiro "Matz" Matsumoto
39191cd9fa
parse.y: allow arguments start with _ to appear multiple times; fix #5604
2021-12-24 07:41:37 +09:00
Yukihiro "Matz" Matsumoto
3b59c95ead
pack.c: check integer overflow in unpacking BER; fix #5611
2021-12-23 07:57:58 +09:00
Yukihiro "Matz" Matsumoto
42a6872c2b
parse.y: adjust void_expr_error(); fix #5606
...
Allow void expression on some places e.g. right hand of `rescue`
modifier. In addition, checks added on some places, e.g. left hand of
logical operators.
2021-12-22 14:08:04 +09:00
Yukihiro "Matz" Matsumoto
4e8d376417
Merge pull request #5610 from mruby/dependabot/github_actions/github/super-linter-4.8.5
...
build(deps): bump github/super-linter from 4.8.4 to 4.8.5
2021-12-21 23:13:43 +09:00
dependabot[bot]
916fbcce2c
build(deps): bump github/super-linter from 4.8.4 to 4.8.5
...
Bumps [github/super-linter](https://github.com/github/super-linter ) from 4.8.4 to 4.8.5.
- [Release notes](https://github.com/github/super-linter/releases )
- [Changelog](https://github.com/github/super-linter/blob/main/docs/release-process.md )
- [Commits](https://github.com/github/super-linter/compare/v4.8.4...v4.8.5 )
---
updated-dependencies:
- dependency-name: github/super-linter
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2021-12-21 14:11:38 +00:00
Yukihiro "Matz" Matsumoto
8a5f18a1d8
codegen.c: generate OP_SETIDX; close #5608
...
Note that the current implantation only calls `[]=` method. No
performance improvement. Just 2 bytes less byte code per assignment.
2021-12-20 17:46:57 +09:00
Yukihiro "Matz" Matsumoto
a42b676ae9
vm.c: fix a half-baked implementation of OP_SETIDX; ref #5608
2021-12-20 17:45:10 +09:00
Yukihiro "Matz" Matsumoto
5774a7a38b
codedump.c: adjust the position of local variable labels.
2021-12-20 17:44:31 +09:00
Yukihiro "Matz" Matsumoto
a17955259e
Merge pull request #5602 from dearblue/no-ext-ops
...
Add `bin/mrbc --no-ext-ops` switch
2021-12-19 19:11:51 +09:00
Yukihiro "Matz" Matsumoto
d7812bd3d6
Merge pull request #5603 from dearblue/codegen_error
...
Print error before cleanup in `codegen_error()`
2021-12-18 19:42:31 +09:00
dearblue
26338fe640
Print error before cleanup in codegen_error()
...
Previously, it always pointed to the highest scope as the location of the error.
- example code `code.rb`
```ruby
huge_num = "1" + "0" * 300; eval <<CODE, nil, "test.rb", 1
class Object
module A
#{huge_num}
end
end
CODE
```
- Before this patch
```console
% bin/mruby code.rb
test.rb:1: integer too big
trace (most recent call last):
[1] code.rb:1
code.rb:1:in eval: codegen error (ScriptError)
```
- After this patch
```console
% bin/mruby code.rb
test.rb:3: integer too big
trace (most recent call last):
[1] code.rb:1
code.rb:1:in eval: codegen error (ScriptError)
```
2021-12-17 23:03:27 +09:00
dearblue
6b8582c95d
Add bin/mrbc --no-ext-ops switch
...
Print an error if `OP_EXT[123]` is needed when generating mruby binary.
This may be useful for mruby/c.
Inspired by #5590 .
2021-12-17 23:02:04 +09:00
Yukihiro "Matz" Matsumoto
9b65d0dc86
Merge pull request #5601 from mruby/dependabot/github_actions/actions/upload-artifact-2.3.1
...
build(deps): bump actions/upload-artifact from 2.2.4 to 2.3.1
2021-12-17 07:49:53 +09:00
dependabot[bot]
a7aa0b1da2
build(deps): bump actions/upload-artifact from 2.2.4 to 2.3.1
...
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact ) from 2.2.4 to 2.3.1.
- [Release notes](https://github.com/actions/upload-artifact/releases )
- [Commits](https://github.com/actions/upload-artifact/compare/v2.2.4...v2.3.1 )
---
updated-dependencies:
- dependency-name: actions/upload-artifact
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2021-12-16 14:08:05 +00:00
Yukihiro "Matz" Matsumoto
57d93c4d76
string-ext.c: fix memory leak in tr_parse_pattern.
2021-12-16 11:39:35 +09:00
Yukihiro "Matz" Matsumoto
0fbdd71dcf
boxing_nan.h: remove false description in the comment [ci skip]
...
Ref #5597
2021-12-15 23:07:34 +09:00
Yukihiro "Matz" Matsumoto
a3d240c2ed
Merge pull request #5599 from dearblue/loss-digits
...
Avoid losing the upper digits for mruby binary
2021-12-15 23:07:13 +09:00
Yukihiro "Matz" Matsumoto
f5e10c5a79
proc.c: add mrb_state argument to mrb_proc_copy().
...
The function may invoke the garbage collection and it requires
`mrb_state` to run.
2021-12-14 13:35:18 +09:00
dearblue
fa33a5bb0c
Avoid losing the upper digits for mruby binary
...
- `rlen` keeps 16 bits.
- `ilen` keeps 32 bits.
Note that this change will break mruby binary format compatibility.
2021-12-13 22:58:57 +09:00
Yukihiro "Matz" Matsumoto
8a74b2a25d
string-ext/string.c: fixed memory leak from tr on exception.
...
With some refactoring.
* `ret` argument is always non-nil, so no check needed.
* move allocation check right after malloc().
* simplify conditions.
2021-12-13 10:29:16 +09:00
Yukihiro "Matz" Matsumoto
d01707d4cf
benchmark/bm_ao_render.rb: enable specifying the size of the image.
2021-12-13 10:29:16 +09:00
Yukihiro "Matz" Matsumoto
7b84fd4ce8
variable.c: resurrect size member in iv_tbl.
...
The existence of this member reduces memory and execution time.
2021-12-13 10:29:15 +09:00
Yukihiro "Matz" Matsumoto
786156d48c
class.c: increase first allocated page size.
2021-12-13 10:29:15 +09:00
Yukihiro "Matz" Matsumoto
bd4268210e
class.c: implement method cache (off by default).
2021-12-13 10:29:15 +09:00
Yukihiro "Matz" Matsumoto
523197c831
Merge pull request #5598 from dearblue/array-combinations
...
Add `Array#{repeated_combination,repeated_permutation}` methods
2021-12-13 10:28:50 +09:00
Jonas Minnberg
c6f0452d13
Added comments about removal of objects[]
...
Made mrb_get_args_v() static
2021-12-12 16:14:53 +01:00
dearblue
586525f99a
Add Array#{repeated_combination,repeated_permutation} methods
...
Ruby 1.9.2 feature.
ref: https://docs.ruby-lang.org/ja/3.1.0/method/Array/i/repeated_combination.html
ref: https://docs.ruby-lang.org/ja/3.1.0/method/Array/i/repeated_permutation.html
2021-12-12 21:28:03 +09:00
Jonas Minnberg
b1cf973186
Added mrb_get_args_a() - an array version of mrb_get_args()
2021-12-11 14:24:36 +01:00
Jonas Minnberg
24939723d7
Remove zero length array since it is not C++ compatible
2021-12-11 14:23:59 +01:00
Yukihiro "Matz" Matsumoto
7349902d5b
irep.h: c operand may require 16 bits for BSS operand type.
...
fix #5593
2021-12-09 14:28:47 +09:00
Yukihiro "Matz" Matsumoto
d2a904c884
vm.c (check_method_noarg): the value at kidx may not be a hash.
2021-12-08 16:43:02 +09:00
Yukihiro "Matz" Matsumoto
c593e3e30a
vm.c: use check_method_noarg() to reduce code duplication; ref #5584
2021-12-08 16:42:23 +09:00
Yukihiro "Matz" Matsumoto
5bad1c7429
vm.c: fix mrb_ci_kidx.
...
It used to return wrong value for 14 positional arguments.
2021-12-08 16:22:24 +09:00
Yukihiro "Matz" Matsumoto
0b6b042fe8
variable.c: fix clang integer warning.
2021-12-08 13:27:10 +09:00
Yukihiro "Matz" Matsumoto
47092ccfa5
mruby-compiler/mrbgem.rake: fix regexp pattern; close #5591
2021-12-07 23:57:32 +09:00
Yukihiro "Matz" Matsumoto
9935cf1aef
variable.c: avoid redundant iv scan in mrb_mod_cv_set().
...
Now `iv_get()` returns `pos+1` if it finds the entry, so you don't need
to call `iv_put()`. You can replace the entry value by assigning to
`t->ptr[pos-1]`.
2021-12-07 08:19:16 +09:00
Yukihiro "Matz" Matsumoto
856ae52021
bm_ao_rendar.rb: use instance variables instead of class variables.
...
Class variables are slower than instance variables of classes.
2021-12-06 21:12:23 +09:00
Yukihiro "Matz" Matsumoto
e5810db1ad
variable.c: reduce array access in iv hash table.
2021-12-04 10:43:58 +09:00
Yukihiro "Matz" Matsumoto
9d554017f0
variable.c: avoid mrb_undef_value() for delete entries.
...
Instead embed deleted flag in the key (`mrb_sym` only occupies 30bits).
2021-12-03 18:36:29 +09:00
Yukihiro "Matz" Matsumoto
4f2a153ada
variable.c: remove size member from iv_tbl to reduce memory.
...
`iv_size()` is approximated by the allocated table size.
2021-12-03 16:06:25 +09:00
Yukihiro "Matz" Matsumoto
d3ebe4894b
variable.c: first iv allocation size should be 4 instead of 1.
2021-12-03 15:38:16 +09:00
Yukihiro "Matz" Matsumoto
a20c2a08ab
variable.c: should not access NULL[0] to avoid asan warnings.
2021-12-03 15:04:14 +09:00
Yukihiro "Matz" Matsumoto
6ac26e4442
parse.y: support anonymous block argument introduced by Ruby3.1.
2021-12-02 18:24:48 +09:00
Yukihiro "Matz" Matsumoto
bd88870afb
codegen.c: ADDI/SUBI should not be prefixed by OP_EXT; fix #5590
...
As a general principles numeric instructions should not be prefixed by
`OP_EXT` instructions since they are not supported by "mruby/c".
2021-12-01 14:33:52 +09:00
Yukihiro "Matz" Matsumoto
76659a66ae
codegen.c: skip ADDI/SUBI for zero operand.
2021-12-01 14:29:44 +09:00
Yukihiro "Matz" Matsumoto
7d6b8024b5
codegen.c: fix a bug in OP_ADDI and OP_SUBI regarding negative values.
2021-12-01 14:28:27 +09:00
Yukihiro "Matz" Matsumoto
2e2f81a443
codegen.c: get_int_operand to retrieve negative values correctly.
2021-12-01 14:26:22 +09:00
Yukihiro "Matz" Matsumoto
7a31a1743a
codedump.c: print OP_EXT explicitly again for debugging purpose.
2021-12-01 13:42:40 +09:00
Yukihiro "Matz" Matsumoto
b5842dea58
variable.c: reduce memory usage of instance variable table
...
This is a fundamentally simplified reimplementation of #5317
by @shuujii
Instead of having array of `struct iv_elem`, we have sequences of keys
and values packed in single chunk of malloc'ed memory. We don't have to
worry about gaps from alignment, especially on 64 bit architecture,
where `sizeof(struct iv_elem)` probably consumes 16 bytes, but
`sizeof(mrb_sym)+sizeof(mrb_value)` is 12 bytes.
In addition, this change could improve memory access locality.
close #5317
2021-12-01 12:27:19 +09:00
Yukihiro "Matz" Matsumoto
b137eb2678
vm.c: remove duplicate code in VM.
2021-11-29 23:18:57 +09:00
Yukihiro "Matz" Matsumoto
a245c34210
Merge pull request #5589 from dearblue/argerr
...
Align "wrong number of arguments" messages
2021-11-29 10:14:59 +09:00
Yukihiro "Matz" Matsumoto
a0f38005fb
Merge pull request #5588 from dearblue/cmath+clang++
...
Fixed compile error for `mrbgems/mruby-cmath` with `clang++`
2021-11-28 19:04:57 +09:00
Yukihiro "Matz" Matsumoto
6bb2af9666
Merge pull request #5587 from dearblue/args-pass.1
...
Fix `args_unshift()` in `mrbgems/mruby-method`
2021-11-28 19:03:33 +09:00
dearblue
c4bca7cbb3
Align "wrong number of arguments" messages
...
Make "N for M" into the form "given N, expected M".
As I worked, I noticed that the `argnum_error()` function had a part to include the method name in the message.
I think this part is no longer needed by https://github.com/mruby/mruby/pull/5394 .
- Before this patch
```console
% bin/mruby -e '[1, 2, 3].each 0'
trace (most recent call last):
[1] -e:1
-e:1:in each: 'each': wrong number of arguments (1 for 0) (ArgumentError)
```
- After this patch
```console
% bin/mruby -e '[1, 2, 3].each 0'
trace (most recent call last):
[1] -e:1
-e:1:in each: wrong number of arguments (given 1, expected 0) (ArgumentError)
```
2021-11-28 18:21:29 +09:00
dearblue
f81bc3de38
Fixed compile error for mrbgems/mruby-cmath with clang++
...
If the preprocessor check part is only `__clang__`, CI's such as `Ubuntu-2004-clang` will fail to compile.
This is why we limited the addition to FreeBSD and OpenBSD, which have `clang++` in their base systems.
DragonFly BSD and NetBSD have GCC built into their base systems, so nothing is changed.
2021-11-28 17:28:44 +09:00
dearblue
58a9621df7
Fix args_unshift() in mrbgems/mruby-method
...
Both keyword arguments and block arguments were being destroyed when there were no arguments.
The cause of this is #5585 . I' m sorry.
2021-11-28 14:10:37 +09:00
Yukihiro "Matz" Matsumoto
e4d6917786
test/kernel.rb: remove duplicate tests; ref #5584
2021-11-26 12:18:41 +09:00
dearblue
668b12e756
Check more MRB_ARGS_NONE()
...
The `__id__` method implemented in the C function has `MRB_ARGS_NONE()` specified, but it is also effective in the following cases.
```ruby
p nil.__id__ opts: 1 rescue p :a
p nil.method(:__id__).call 1 rescue p :b
p nil.method(:__id__).call opts: 1 rescue p :c
p nil.method(:__id__).to_proc.call 1 rescue p :d
p nil.method(:__id__).to_proc.call opts: 1 rescue p :e
p nil.method(:__id__).unbind.bind_call nil, 1 rescue p :f
p nil.method(:__id__).unbind.bind_call nil, opts: 1 rescue p :g
p nil.__send__ :__id__, 1 rescue p :h
p nil.__send__ :__id__, opts: 1 rescue p :i
```
After applying this patch, all items will output symbols in the same way as CRuby.
For this purpose, add `MRB_PROC_NOARG` to `struct RProc::flags`.
2021-11-26 12:18:41 +09:00
Yukihiro "Matz" Matsumoto
b631c226eb
Merge pull request #5585 from dearblue/args-pass
...
Fixed some methods where keyword arguments are not passed
2021-11-25 17:08:32 +09:00
dearblue
16e388863a
Fixed some methods where keyword arguments are not passed
2021-11-24 23:35:42 +09:00
Yukihiro "Matz" Matsumoto
d6e1114f71
Merge pull request #5581 from mruby/dependabot/github_actions/actions/cache-2.1.7
...
build(deps): bump actions/cache from 2.1.6 to 2.1.7
2021-11-24 09:39:50 +09:00
dependabot[bot]
9ae657520b
build(deps): bump actions/cache from 2.1.6 to 2.1.7
...
Bumps [actions/cache](https://github.com/actions/cache ) from 2.1.6 to 2.1.7.
- [Release notes](https://github.com/actions/cache/releases )
- [Commits](https://github.com/actions/cache/compare/v2.1.6...v2.1.7 )
---
updated-dependencies:
- dependency-name: actions/cache
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2021-11-23 14:12:20 +00:00
Yukihiro "Matz" Matsumoto
d627c22924
AUTHORS: update entries [ci skip]
2021-11-23 10:05:16 +09:00
Yukihiro "Matz" Matsumoto
4a84fa5db5
Merge pull request #5580 from dearblue/static-proc
...
Fixed occurs `SIGSEGV` with `mrbgems/mruby-method`
2021-11-23 10:03:44 +09:00
dearblue
b02bd63dc5
Fixed occurs SIGSEGV with mrbgems/mruby-method
...
Calling the `Method#{parameters,source_location}` method on a static `Proc` object resulted in `SIGSEGV`.
The trigger is https://github.com/mruby/mruby/pull/5402 .
The original implementation of the `Method#{parameters,source_location}` method was to temporarily rewrite the object and then call the method of the same name in `Proc`.
Rewriting of objects placed in the ROM section by #5402 above is prohibited by hardware such as the CPU.
This caused a `SIGSEGV`.
2021-11-22 21:55:02 +09:00
Yukihiro "Matz" Matsumoto
01cadd3e70
parse.y: check duplicated argument names; fix #5575
2021-11-21 19:05:50 +09:00
Yukihiro "Matz" Matsumoto
f69eafc6bd
doc/internal/opcode.md: moved from doc/opcode.md
2021-11-20 14:56:59 +09:00
Yukihiro "Matz" Matsumoto
28f00b23bf
doc/opcode.md: update according to #5579
2021-11-20 14:55:09 +09:00
Yukihiro "Matz" Matsumoto
a04d2a8865
fixup! parse.y: unnamed rest argument should be mul (*).
2021-11-20 08:50:52 +09:00
Yukihiro "Matz" Matsumoto
2e41b20590
parse.y: unnamed rest argument should be mul (*).
2021-11-20 08:50:52 +09:00
Yukihiro "Matz" Matsumoto
9e064f2353
parse.y: skip unnecessary local_add_f(p, 0).
2021-11-20 08:50:51 +09:00
Yukihiro "Matz" Matsumoto
4c28356b71
Merge pull request #5578 from dearblue/OP_SENDB
...
Fixes keywords are lost with the `OP_SENDB`
2021-11-20 08:50:42 +09:00
Yukihiro "Matz" Matsumoto
c6c789d2e8
Merge pull request #5579 from dearblue/OP_ASET
...
Fixed a discrepancy in `OP_ASET`
2021-11-20 08:48:05 +09:00
dearblue
6fba0dbece
Fixed a discrepancy in OP_ASET
...
There was a discrepancy in the actual behavior, assertions, and documentation.
Therefore, I modified it based on the actual behavior.
2021-11-19 22:53:01 +09:00
dearblue
279e0122da
Fixes keywords are lost with the OP_SENDB
...
If a splat argument was passed, it could write out of range on the VM stack.
```console
% bin/mruby -e 'def m(*args, **opts, &blk) p [args, opts, blk] end; m(*%w(X Y Z), r: 1, g: 2, b: 3) {}'
[["X", "Y", "Z"], {}, #<Proc:0x80077d7d0>]
```
2021-11-19 22:35:47 +09:00
Yukihiro "Matz" Matsumoto
1a1ff6b3ff
Merge pull request #5577 from mruby/dependabot/github_actions/github/super-linter-4.8.4
...
build(deps): bump github/super-linter from 4.8.3 to 4.8.4
2021-11-18 10:28:35 +09:00
dependabot[bot]
a66db89a5d
build(deps): bump github/super-linter from 4.8.3 to 4.8.4
...
Bumps [github/super-linter](https://github.com/github/super-linter ) from 4.8.3 to 4.8.4.
- [Release notes](https://github.com/github/super-linter/releases )
- [Changelog](https://github.com/github/super-linter/blob/main/docs/release-process.md )
- [Commits](https://github.com/github/super-linter/compare/v4.8.3...v4.8.4 )
---
updated-dependencies:
- dependency-name: github/super-linter
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2021-11-17 14:09:11 +00:00
Yukihiro "Matz" Matsumoto
f4e18a5d84
codegen.c: fixed a bug in post mandatory arguments.
2021-11-17 16:34:44 +09:00
Yukihiro "Matz" Matsumoto
f5d9aab372
codegen.c: should not emit the MOVE instruction to the same register.
2021-11-17 16:33:53 +09:00
Yukihiro "Matz" Matsumoto
e3e54453a7
Merge pull request #5576 from mruby/dependabot/github_actions/github/super-linter-4.8.3
...
build(deps): bump github/super-linter from 4.8.1 to 4.8.3
2021-11-16 16:59:10 +09:00
dependabot[bot]
927812a7e6
build(deps): bump github/super-linter from 4.8.1 to 4.8.3
...
Bumps [github/super-linter](https://github.com/github/super-linter ) from 4.8.1 to 4.8.3.
- [Release notes](https://github.com/github/super-linter/releases )
- [Changelog](https://github.com/github/super-linter/blob/main/docs/release-process.md )
- [Commits](https://github.com/github/super-linter/compare/v4.8.1...v4.8.3 )
---
updated-dependencies:
- dependency-name: github/super-linter
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2021-11-15 14:08:13 +00:00
Yukihiro "Matz" Matsumoto
e0a3800e5d
string-ext/string.c: fixed a memory leak.
2021-11-15 09:49:05 +09:00
Yukihiro "Matz" Matsumoto
a0b58eed46
doc/internal/boxing.md: describe how mrb_value represents values.
2021-11-14 17:45:21 +09:00
Yukihiro "Matz" Matsumoto
1fe722cd78
boxing_word.h: fix the error in the comment [ci skip]
2021-11-13 20:59:54 +09:00
Yukihiro "Matz" Matsumoto
4e3df65d6f
test/syntax.rb: test argument forwarding without parentheses.
2021-11-12 15:02:49 +09:00
Yukihiro "Matz" Matsumoto
7c1878669a
parse.y: should allow newline after ....
2021-11-12 15:02:04 +09:00
Yukihiro "Matz" Matsumoto
885a87e408
parse.y: allow ... in formal arguments without parentheses.
2021-11-10 22:25:02 +09:00
Yukihiro "Matz" Matsumoto
2e0c1b4361
etc.c: improve mrb_obj_id with NaN boxing and Word boxing.
2021-11-09 17:24:53 +09:00
Yukihiro "Matz" Matsumoto
a5567fbad4
boxing_nan.h: update mrb_immediate_p and related macros.
2021-11-08 14:33:50 +09:00
Yukihiro "Matz" Matsumoto
5dc91029d1
TODO.md: update.
2021-11-08 14:33:50 +09:00
Yukihiro "Matz" Matsumoto
5c8e184fcf
Merge pull request #5437 from dearblue/parse.y
...
Run the task only once when `parse.y` is updated
2021-11-06 19:58:28 +09:00
Yukihiro "Matz" Matsumoto
c3a1456cc8
mruby3.1.md: update.
2021-11-06 18:18:38 +09:00
Yukihiro "Matz" Matsumoto
879f074cd0
mruby3.1.md: update new methods description.
2021-11-05 15:08:44 +09:00
Yukihiro "Matz" Matsumoto
d6f6467ad7
boxing_nan.h (mrb_float_p): wrap macro argument by parenthesis.
2021-11-04 20:49:19 +09:00
Yukihiro "Matz" Matsumoto
c21a094a7f
hash.c: avoid mrb_obj_id to get the hash value if possible.
2021-11-04 15:54:31 +09:00
Yukihiro "Matz" Matsumoto
877e82eb92
Merge pull request #5570 from dearblue/random-bytes
...
Added `Random.#bytes` method
2021-11-04 15:54:22 +09:00
Yukihiro "Matz" Matsumoto
8f67a0d0e1
Merge pull request #5569 from dearblue/array-product
...
Added `Array#product` method
2021-11-04 15:54:09 +09:00
Yukihiro "Matz" Matsumoto
b940ed69d9
Merge pull request #5571 from mruby/dependabot/github_actions/actions/checkout-2.4.0
...
build(deps): bump actions/checkout from 2.3.5 to 2.4.0
2021-11-04 07:48:14 +09:00
dependabot[bot]
b8b5d4094f
build(deps): bump actions/checkout from 2.3.5 to 2.4.0
...
Bumps [actions/checkout](https://github.com/actions/checkout ) from 2.3.5 to 2.4.0.
- [Release notes](https://github.com/actions/checkout/releases )
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md )
- [Commits](https://github.com/actions/checkout/compare/v2.3.5...v2.4.0 )
---
updated-dependencies:
- dependency-name: actions/checkout
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2021-11-03 14:06:38 +00:00
Yukihiro "Matz" Matsumoto
36efd018e2
Merge pull request #5565 from dearblue/class.new
...
Improved `Class#new` method
2021-11-03 19:38:11 +09:00
Yukihiro "Matz" Matsumoto
59b7846ab0
Merge pull request #5568 from dearblue/nan+cxx_abi
...
Fix failed build with `MRB_NAN_BOXING` and `enable_cxx_abi`
2021-11-01 13:54:15 +09:00
Yukihiro "Matz" Matsumoto
a0dd466840
object.c: fast implementation of mrb_obj_eq.
...
For `MRB_NAN_BOXING` and `MRB_WORD_BOXING`.
2021-11-01 13:35:10 +09:00
dearblue
7bb4a57e56
Added Random.#bytes method
...
ref: https://docs.ruby-lang.org/ja/3.0.0/method/Random/i/bytes.html
2021-10-31 23:36:10 +09:00
dearblue
5ea26260fa
Added Array#product method
...
Ruby-1.9.0 feature.
ref: https://docs.ruby-lang.org/ja/3.0.0/method/Array/i/product.html
2021-10-31 23:02:37 +09:00
dearblue
1de662cb8b
Fix failed build with MRB_NAN_BOXING and enable_cxx_abi
...
```console
% c++ -xc++ -std=c++03 -S -Iinclude -DMRB_NAN_BOXING -DMRB_NO_PRESYM -o- src/array.c > /dev/null
In file included from src/array.c:7:
In file included from include/mruby.h:115:
In file included from include/mruby/value.h:201:
include/mruby/boxing_nan.h:95:12: error: cannot initialize return object of type 'enum mrb_vtype' with an rvalue of type 'int'
return (enum mrb_vtype)(o.u >> 8) & 0x1f;
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.
```
2021-10-31 22:17:15 +09:00
Yukihiro "Matz" Matsumoto
d8204d51af
Merge pull request #5566 from dearblue/no_float_truncate
...
Avoid redefining `MRB_WORDBOX_NO_FLOAT_TRUNCATE`
2021-10-31 17:29:20 +09:00
Yukihiro "Matz" Matsumoto
f0b0f9d69d
Merge pull request #5567 from dearblue/mrb_static_assert.1
...
Avoid violations of the `mrb_static_assert()` standard
2021-10-30 17:46:40 +09:00
Yukihiro "Matz" Matsumoto
9f0410789d
boxing_nan.h: allow MRB_INT64 with MRB_NAN_BOXING.
...
Integers out of 32 bit range will be allocated in the heap.
2021-10-30 17:44:46 +09:00
Yukihiro "Matz" Matsumoto
85fcd2dc6f
boxing_nan.h: implement Favor pointer NaN Boxing.
...
Favor pointer means encode NaN boxed values to keep pointer values
unmodified, to reduce the cost of far frequent pointer value retrievals.
2021-10-30 17:43:35 +09:00
dearblue
61ee857178
Avoid violations of the mrb_static_assert() standard
...
ref: #5564
```console
% cc -pedantic -S -Iinclude -DMRB_NO_PRESYM -o- src/array.c > /dev/null
In file included from src/array.c:7:
In file included from include/mruby.h:115:
In file included from include/mruby/value.h:204:
include/mruby/boxing_word.h:133:1: warning: must specify at least one argument for '...' parameter of variadic macro [-Wgnu-zero-variadic-macro-arguments]
mrb_static_assert(sizeof(mrb_value) == sizeof(union mrb_value_));
^
include/mruby.h:109:108: note: expanded from macro 'mrb_static_assert'
mrb_static_assert_expand(mrb_static_assert_selector(__VA_ARGS__, mrb_static_assert2, mrb_static_assert1)(__VA_ARGS__))
^
include/mruby.h:100:10: note: macro 'mrb_static_assert_selector' defined here
# define mrb_static_assert_selector(a, b, name, ...) name
^
1 warning generated.
```
2021-10-30 13:22:35 +09:00
dearblue
fa8bd00b57
Avoid redefining MRB_WORDBOX_NO_FLOAT_TRUNCATE
...
Adding `MRB_WORDBOX_NO_FLOAT_TRUNCATE` to the build configuration in 32-bit CPU mode had a double definition.
```console
% cat myconf.rb
MRuby::Build.new do
toolchain "clang"
defines << "MRB_WORDBOX_NO_FLOAT_TRUNCATE"
cc.flags << "-m32"
linker.flags << "-m32"
enable_debug
end
% rake CONFIG=myconf.rb
CPP src/array.c -> build/host/src/array.pi
In file included from /var/tmp/mruby/src/array.c:7:
In file included from /var/tmp/mruby/include/mruby.h:115:
In file included from /var/tmp/mruby/include/mruby/value.h:203:
/var/tmp/mruby/include/mruby/boxing_word.h:11:10: warning:
'MRB_WORDBOX_NO_FLOAT_TRUNCATE' macro redefined [-Wmacro-redefined]
# define MRB_WORDBOX_NO_FLOAT_TRUNCATE
^
<command line>:3:9: note: previous definition is here
#define MRB_WORDBOX_NO_FLOAT_TRUNCATE 1
^
1 warning generated.
...SNIP...
```
2021-10-30 09:55:35 +09:00
dearblue
33792c2a02
Improved Class#new method
...
The number of registers used is reduced.
Also, previously `R6` and` R7` were used, which exceeded the limit of `new_irep.nregs = 6`.
This could cause the VM stack to overrun.
2021-10-29 22:20:20 +09:00
Yukihiro "Matz" Matsumoto
0069e6738a
boxing_nan.h: refactor NaN Boxing.
...
Preparation for:
* 64 bit integer with NaN Boxing
* Favor pointer NaN Boxing
2021-10-28 12:22:21 +09:00
Yukihiro "Matz" Matsumoto
fca63c6060
boxing_nan.h: revert part of dccd66f
...
WIP code was mistakenly committed.
2021-10-26 17:33:49 +09:00
Yukihiro "Matz" Matsumoto
abf2d653d7
Merge pull request #5564 from dearblue/static_assert
...
Make `mrb_static_assert()` a variable argument
2021-10-25 07:59:01 +09:00
dearblue
b774832ee1
Make mrb_static_assert() a variable argument
...
`mrb_static_assert()` extends the macro function to take one or two arguments.
If the argument is other than that, an error will occur.
References:
- static_assert のメッセージ省略を許可 - cpprefjp C++日本語リファレンス
https://cpprefjp.github.io/lang/cpp17/extending_static_assert.html
- c - Overloading Macro on Number of Arguments - Stack Overflow
https://stackoverflow.com/a/11763277
2021-10-24 23:11:52 +09:00
Yukihiro "Matz" Matsumoto
5c6e8b32a3
doc/mruby3.1.h: separate mruby3.0 changes and mruby3.1 changes.
2021-10-24 13:21:54 +09:00
Yukihiro "Matz" Matsumoto
7850549a5e
string.c: use FNV1a algorithm for the string hash function.
2021-10-23 09:31:01 +09:00
Yukihiro "Matz" Matsumoto
74b02fba81
Merge pull request #5563 from suetanvil-misc/project-bintest-emulator-4-flat
...
Added testing support for cross-MinGW builds.
2021-10-22 13:41:50 +09:00
Chris Reuter
5c4273f944
Added testing support for cross-MinGW builds.
...
This adds a build_config that will cross-build a Windows executable
using the MinGW cross-compiler and will also run the unit (i.e.
'rake test') using Wine.
For this to work, I made some modifications to the underlying test
scripts as well as some minor changes to a couple of the tests
themselves.
2021-10-21 21:58:45 -04:00
Yukihiro "Matz" Matsumoto
fabe8212fe
codedump.c: add indentation for OP_MOVE.
2021-10-21 15:35:25 +09:00
Yukihiro "Matz" Matsumoto
dc0d5db699
doc/mruby3.md: updated to the most recent mruby3.1 (to be).
2021-10-20 09:40:17 +09:00
Yukihiro "Matz" Matsumoto
f653556731
dump.h: bump RITE_BINARY_MAJOR_VER to 03.
...
Since we have added several new instructions.
2021-10-19 15:27:29 +09:00
Yukihiro "Matz" Matsumoto
d965d90edf
codedump.c: remove OP_ prefix from disasm output.
2021-10-19 12:29:06 +09:00
Yukihiro "Matz" Matsumoto
90484cac63
codegen.c: skip OP_LOADSELF using OP_SSEND.
2021-10-19 12:13:05 +09:00
Yukihiro "Matz" Matsumoto
5d5e4f5214
ops.h: add new instructions OP_SSEND and OP_SSENDB.
...
These instructions call methods of the receiver.
2021-10-19 12:03:12 +09:00
Yukihiro "Matz" Matsumoto
45491cdd8c
ops.h: update descriptions for array-like accesses.
...
* `R(a)` -> `R[a]`
* `Pool(a)` -> `Pool[a]`
* `Syms(a)` -> `Syms[a]`
* `Irep(a)` -> `Irep[a]`
2021-10-19 11:49:02 +09:00
Yukihiro "Matz" Matsumoto
ab986ff108
ops.h: update OP_SEND description.
2021-10-19 11:37:59 +09:00
Yukihiro "Matz" Matsumoto
b6b4ac8270
Merge pull request #5560 from mruby/dependabot/github_actions/actions/checkout-2.3.5
...
build(deps): bump actions/checkout from 2.3.4 to 2.3.5
2021-10-19 08:06:28 +09:00
dependabot[bot]
cdccb5ea13
build(deps): bump actions/checkout from 2.3.4 to 2.3.5
...
Bumps [actions/checkout](https://github.com/actions/checkout ) from 2.3.4 to 2.3.5.
- [Release notes](https://github.com/actions/checkout/releases )
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md )
- [Commits](https://github.com/actions/checkout/compare/v2.3.4...v2.3.5 )
---
updated-dependencies:
- dependency-name: actions/checkout
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2021-10-18 14:05:53 +00:00
Yukihiro "Matz" Matsumoto
10edda9698
Merge pull request #5559 from igrep/fix-commented-out-example
...
Fix a syntax error in commented-out code
2021-10-18 13:07:32 +09:00
YAMAMOTO Yuji
66e61c5ab8
Fix a syntax error in commented-out code
...
By uncommenting the line changed by this commit, `ruby -c build_config/default.rb` complains of a syntax error due to the illegally nested double quotes
2021-10-18 12:45:55 +09:00
Yukihiro "Matz" Matsumoto
0d08f89159
codegen.c: Reduce MRB_CODEGEN_LEVEL_MAX from 1024 to 256.
...
1024 was too big. Some deep recursion could not be detected before
actual stack overflow.
2021-10-18 12:01:07 +09:00
Yukihiro "Matz" Matsumoto
de2b4bd0dc
codegen.c: fixed a bug regarding attribute assignment with kargs.
2021-10-18 08:01:26 +09:00
Yukihiro "Matz" Matsumoto
be189ae9f9
codegen.c: forgot to check s2 extensively in super codegen.
2021-10-17 08:03:24 +09:00
Yukihiro "Matz" Matsumoto
2b19a6c1b4
AUTHORS: update.
2021-10-17 08:02:36 +09:00
Yukihiro "Matz" Matsumoto
36bca25e58
codegen.c: s2 may be NULL.
...
Since `s2` is `NULL` on top-level, it will be an error. No need to
generate strict bytecode.
2021-10-16 11:09:52 +09:00
Yukihiro "Matz" Matsumoto
0dc5fcec7b
parse.y: check car part of return node.
2021-10-16 10:33:35 +09:00
Yukihiro "Matz" Matsumoto
0b095406bf
Merge pull request #5558 from jbampton/fix-grammar
...
Fix grammar in doc/guides/mrbgems.md
2021-10-15 09:47:23 +09:00
Yukihiro "Matz" Matsumoto
a9a2dcd3cc
rational.c: avoid recursion between rational_eq and complex_eq.
2021-10-14 22:48:54 +09:00
Yukihiro "Matz" Matsumoto
7010ed0f0a
vm.c: need to ensure the stack size is sufficient.
...
Need to add `n` because the stack will be shifted in the `mrb_funcall`.
2021-10-14 22:47:19 +09:00
John Bampton
a3da482683
Fix grammar in doc/guides/mrbgems.md
2021-10-14 19:55:57 +10:00
Yukihiro "Matz" Matsumoto
6b3b1012ca
codegen.c: skip OP_ARGARY before super if the method has no arguments.
2021-10-13 07:06:17 +09:00
Yukihiro "Matz" Matsumoto
a1027812bd
error.c: small refactoring regarding #2485
2021-10-12 22:38:59 +09:00
Yukihiro "Matz" Matsumoto
3c8f0ac14b
Merge branch 'take-cheeze-exc_mesg'
2021-10-12 22:16:21 +09:00
Yukihiro "Matz" Matsumoto
291234c7aa
Merge branch 'exc_mesg' of https://github.com/take-cheeze/mruby into take-cheeze-exc_mesg
2021-10-12 22:14:11 +09:00
Yukihiro "Matz" Matsumoto
5004d9a282
codegen.c: should not assign negative number to ainfo (size_t).
2021-10-12 20:16:36 +09:00
Yukihiro "Matz" Matsumoto
dccd66f9ef
Support Ruby3.0 keyword arguments.
...
The Difference
Since Ruby1.9, the keyword arguments were emulated by Ruby using the hash
object at the bottom of the arguments. But we have gradually moved toward
keyword arguments separated from normal (positinal) arguments.
At the same time, we value compatibility, so that Ruby3.0 keyword
arguments are somewhat compromise. Basically, keyword arguments are
separated from positional arguments, except when the method does not
take any formal keyword arguments, given keyword arguments (packed
in the hash object) are considered as the last argument.
And we also allow non symbol keys in the keyword arguments. In that
case, those keys are just passed in the `**` hash (or raise
`ArgumentError` for unknown keys).
The Instruction Changes
We have changed `OP_SEND` instruction. `OP_SEND` instruction used to
take 3 operands, the register, the symbol, the number of (positional)
arguments. The meaning of the third operand has been changed. It is now
considered as `n|(nk<<4)`, where `n` is the number of positional
arguments, and `nk` is the number of keyword arguments, both occupies
4 bits in the operand.
The number `15` in both `n` and `nk` means variable sized arguments are
packed in the object. Positional arguments will be packed in the array,
and keyword arguments will be packed in the hash object. That means
arguments more than 14 values are always packed in the object.
Arguments information for other instructions (`OP_SENDB` and `OP_SUPER`)
are also changed. It works as the third operand of `OP_SEND`. the
difference between `OP_SEND` and `OP_SENDB` is just trivial. It assigns
`nil` to the block hidden arguments (right after arguments).
The instruction `OP_SENDV` and `OP_SENDVB` are removed. Those
instructions are replaced by `OP_SEND` and `OP_SENDB` respectively with
the `15` (variable sized) argument information.
Calling Convention
When calling a method, the stack elements shall be in the order of the
receiver of the method, positional arguments, keyword arguments and the
block argument. If the number of positional or keyword arugument (`n` or
`nk`) is zero, corresponding arguments will be empty. So when `n=0` and
`nk=0` the stack layout (from bottom to top) will be:
+-----------------------+
| recv | block (or nil) |
+-----------------------+
The last elements `block` should be explicitly filled before `OP_SEND`
or assigned to `nil` by `OP_SENDB` internally. In other words, the
following have exactly same behavior:
OP_SENDB clears `block` implicitly:
```
OP_SENDB reg sym 0
```
OP_SEND clears `block` implicitly:
```
OP_LOADNIL R2
OP_SEND R2 sym 0
```
When calling a method with only positional arguments (n=0..14) without
keyword arguments, the stack layout will be like following:
+--------------------------------------------+
| recv | arg1 | ... | arg_n | block (or nil) |
+--------------------------------------------+
When calling a method with arguments packed in the array (n=15) which
means argument splat (*) is used in the actual arguments, or more than
14 arguments are passed the stack layout will be like following:
+-------------------------------+
| recv | array | block (or nil) |
+-------------------------------+
The number of the actual arguments is determined by the length of the
argument array.
When keyword arguments are given (nk>0), keyword arguments are passed
between positional arguments and the block argument. For example, when
we pass one positional argument `1` and one keyword argument `a: 2`,
the stack layout will be like:
+------------------------------------+
| recv | 1 | :a | 2 | block (or nil) |
+------------------------------------+
Note that keyword arguments consume `2*nk` elements in the stack when
`nk=0..14` (unpacked).
When calling a method with keyword arguments packed in the hash object
(nk=15) which means keyword argument splat (**) is used or more than
14 keyword arguments in the actual arguments, the stack layout will
be like:
+------------------------------+
| recv | hash | block (or nil) |
+------------------------------+
Note for mruby/c
When mruby/c authors try to support new keyword arguments, they need
to handle the new meaning of the argument information operand. If they
choose not to support keyword arguments in mruby/c, it just raise
error when `nk` (taken by `(c>>4)&0xf`) is not zero. And combine
`OP_SENDV` behavior with `OP_SEND` when `n` is `15`.
If they want to support keyword arguments seriously, contact me at
<matz@ruby.or.jp > or `@yukihiro_matz`. I can help you.
2021-10-12 20:16:36 +09:00
Yukihiro "Matz" Matsumoto
c6df4bf9a8
Merge pull request #5557 from jbampton/pre-commit-autoupdate
...
pre-commit autoupdate
2021-10-12 20:16:18 +09:00
John Bampton
843d3d4e41
pre-commit autoupdate
...
https://pre-commit.com/index.html#pre-commit-autoupdate
2021-10-12 19:03:35 +10:00
Yukihiro "Matz" Matsumoto
8e5d89df7f
vm.c: unify mrb_gc_arena_restore and mrb_gc_arena_shrink.
2021-10-10 20:12:11 +09:00
Yukihiro "Matz" Matsumoto
5cdf1eabdd
Merge pull request #5555 from dearblue/str-ref-regexp
...
Partially allow overriding of `String#[]` methods
2021-10-09 14:15:06 +09:00
Yukihiro "Matz" Matsumoto
07f805aa88
Merge pull request #5556 from dearblue/setidx
...
Fix typo for `OP_SETIDX`
2021-10-09 14:00:09 +09:00
dearblue
e8205ec906
Fix typo for OP_SETIDX
2021-10-09 13:36:19 +09:00
Yukihiro "Matz" Matsumoto
87b673fc9a
codegen.c: peephole optimization OP_MOVE after OP_AREF.
2021-10-09 13:31:07 +09:00
dearblue
8c355ec7e3
Partially allow overriding of String#[] methods
...
This is for the purpose of supporting `Regexp`.
- configuration and build
```console
% cat regexp_config.rb
MRuby::Lockfile.disable
MRuby::Build.new do
toolchain "clang"
enable_debug
gem core: "mruby-bin-mruby"
gem core: "mruby-print"
gem mgem: "mruby-onig-regexp"
#gem mgem: "mruby-regexp-pcre"
end
% rake MRUBY_CONFIG=regexp_config.rb
```
- mruby HEAD (bec074e )
```console
% build/host/bin/mruby -e 'p "abcdefg"[/.(?=...$)/]'
-e:1: can't convert OnigRegexp into Integer (TypeError)
```
- with this patch
```console
% build/host/bin/mruby -e 'p "abcdefg"[/.(?=...$)/]'
"d"
```
2021-10-09 13:28:10 +09:00
Yukihiro "Matz" Matsumoto
bec074e6a3
vm.c: check call stack depth before pushing the frame.
...
Existing call stack depth checks are unified into this check in
`cipush()`. The maximum depth is now specified by `MRB_CALL_LEVEL_MAX`
(the default is 512). The older `MRB_FUNCALL_DEPTH_MAX` is no longer
used.
2021-10-08 15:35:33 +09:00
Yukihiro "Matz" Matsumoto
fd6d911b53
codegen.c: peephole optimize OP_MOVE after OP_ARRAY or OP_HASH.
...
When the length operand is zero, we don't need `OP_MOVE` but adjust the
destination operand instead.
2021-10-08 12:09:05 +09:00
Yukihiro "Matz" Matsumoto
7018286453
Merge pull request #5554 from mruby/dependabot/github_actions/github/super-linter-4.8.1
...
build(deps): bump github/super-linter from 4.8.0 to 4.8.1
2021-10-07 10:30:12 +09:00
Yukihiro "Matz" Matsumoto
376e84c9d7
codedump.c: remove trailing extra newline.
...
The bug was introduced in 8be78bd.
2021-10-06 07:36:44 +09:00
Yukihiro "Matz" Matsumoto
9aa3c26221
io.c: hide internal method names in backtrace.
2021-10-05 07:11:59 +09:00
dependabot[bot]
4ef612a586
build(deps): bump github/super-linter from 4.8.0 to 4.8.1
...
Bumps [github/super-linter](https://github.com/github/super-linter ) from 4.8.0 to 4.8.1.
- [Release notes](https://github.com/github/super-linter/releases )
- [Changelog](https://github.com/github/super-linter/blob/main/docs/release-process.md )
- [Commits](https://github.com/github/super-linter/compare/v4.8.0...v4.8.1 )
---
updated-dependencies:
- dependency-name: github/super-linter
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2021-10-04 14:08:09 +00:00
Yukihiro "Matz" Matsumoto
ab1047b445
codegen.c: no OP_ARGARY is needed here.
2021-10-04 07:45:46 +09:00
Yukihiro "Matz" Matsumoto
09336c5d49
mruby/ops.h: add new instructions OP_GETIDX and OP_SETIDX.
...
Which represent `obj[int]` and `obj[int]=val` respectively where `obj`
is either `string`, `array` or `hash`, so that index access could be
faster. When `obj` is not assumed type or `R(a+1)` is not integer, the
instructions fallback to method calls.
2021-10-03 17:14:00 +09:00
Yukihiro "Matz" Matsumoto
d64d8ca8e4
Merge branch 'dearblue-inline-struct-gem'
2021-10-02 20:11:32 +09:00
Yukihiro "Matz" Matsumoto
31e3dbc5a8
Merge branch 'inline-struct-gem' of https://github.com/dearblue/mruby into dearblue-inline-struct-gem
2021-10-02 20:09:20 +09:00
Yukihiro "Matz" Matsumoto
4e504eaca1
SECURITY.md: add scope description.
2021-10-01 19:13:07 +09:00
Yukihiro "Matz" Matsumoto
d96f53f8f8
TODO.md: update.
2021-09-30 17:15:29 +09:00
Yukihiro "Matz" Matsumoto
eea605bfc5
dreamcast_shelf.rb: remove unnecessary gem lines.
...
- `mruby-binding-core` should be handle through dependency
- `mruby-inline-struct` is only for tests
2021-09-30 12:46:45 +09:00
Yukihiro "Matz" Matsumoto
bb3cd69aff
value.h: introduce MRB_TT_STRUCT for mruby-struct.
2021-09-30 12:46:45 +09:00
Yukihiro "Matz" Matsumoto
f1a5c050f4
Merge pull request #5553 from mruby/dependabot/github_actions/github/super-linter-4.8.0
...
build(deps): bump github/super-linter from 4.7.3 to 4.8.0
2021-09-28 23:14:39 +09:00
dependabot[bot]
1b53b973e5
build(deps): bump github/super-linter from 4.7.3 to 4.8.0
...
Bumps [github/super-linter](https://github.com/github/super-linter ) from 4.7.3 to 4.8.0.
- [Release notes](https://github.com/github/super-linter/releases )
- [Changelog](https://github.com/github/super-linter/blob/master/docs/release-process.md )
- [Commits](https://github.com/github/super-linter/compare/v4.7.3...v4.8.0 )
---
updated-dependencies:
- dependency-name: github/super-linter
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2021-09-28 14:07:15 +00:00
Yukihiro "Matz" Matsumoto
906f9f2ba7
parse.y: __ENCODING__ should be determined in run-time; fix #5552
...
It used to be compiled to the static string in the compiler. But the
encoding status actually depends on the runtime configuration. A new
method `Kernel#__ENCODING__` is introduced to implement the feature.
2021-09-27 10:10:35 +09:00
Yukihiro "Matz" Matsumoto
368e8ce3d5
codegen.c: should not loop_push() before constant folding.
...
Otherwise, the following code will crash:
```ruby
1.times{{}until 1; break}
```
2021-09-26 16:58:40 +09:00
Yukihiro "Matz" Matsumoto
89ea41f15e
mrbconf.h: rename a configuration macro for no truncate floats.
...
Rename `MRB_WORDBOX_USE_HEAP_FLOAT` to `MRB_WORDBOX_NO_FLOAT_TRUNCATE'.
2021-09-25 14:44:43 +09:00
Yukihiro "Matz" Matsumoto
c70159b356
Revert "vm.c: add assertions instead of mrb_ensure_hash_type()."
...
This reverts commit 913a0a5a03 .
In some cases, `OP_HASHADD` operand may not be `Hash`. We should check
explicitly in those cases.
2021-09-24 17:10:11 +09:00
Yukihiro "Matz" Matsumoto
ab54ca272a
codegen.c: refactor NODE_WHILE and NODE_UNTIL.
2021-09-24 11:39:00 +09:00
Yukihiro "Matz" Matsumoto
7c6c4ebb56
codegen.c: add short circuit constant folding for NODE_AND, NODE_OR.
2021-09-24 11:38:02 +09:00
Yukihiro "Matz" Matsumoto
863671c89f
codegen.c: refactor NODE_IF generation for boolean constants.
...
In addition, add `NODE_SYM` for always true expression.
2021-09-24 11:36:27 +09:00
Yukihiro "Matz" Matsumoto
a844f89655
codegen.c: need to check no_peephole() before constant folding.
2021-09-23 21:19:36 +09:00
Yukihiro "Matz" Matsumoto
4c196dbba5
codegen.c: separate maximum stack size from GEN_LIT_ARY_MAX.
2021-09-23 20:11:30 +09:00
Yukihiro "Matz" Matsumoto
fd7896e579
error.c: stop calling initialize from VM exceptions.
...
The invocation of `initialize` hook can cause infinite recursion too
easily. We stop invoking the method for safety, at the cost of less
flexibility.
The `initialize` methods (e.g. ones defined in `mrblib/10error.rb`) are
called only from `NoMethodError.new(args..)` forms.
2021-09-22 11:41:38 +09:00
Yukihiro "Matz" Matsumoto
913a0a5a03
vm.c: add assertions instead of mrb_ensure_hash_type().
2021-09-21 16:47:55 +09:00
Yukihiro "Matz" Matsumoto
dd0caf8728
Create SECURITY.md
2021-09-20 19:44:41 +09:00
Yukihiro "Matz" Matsumoto
d6dd6f0e7b
Update struct initializer to work with relatively older C++.
2021-09-20 19:13:17 +09:00
Yukihiro "Matz" Matsumoto
8be78dbf9d
codedump.c: add cosmetic tabs before variable labels.
2021-09-20 17:33:07 +09:00
Yukihiro "Matz" Matsumoto
c29822f80c
codegen.c (gen_addsub): use mrb_int_sub_overflow().
2021-09-20 17:32:38 +09:00
Yukihiro "Matz" Matsumoto
0455313a9b
codegen.c: avoid constant folding OP_LOADI16 across branch target.
2021-09-20 17:30:14 +09:00
Yukihiro "Matz" Matsumoto
ca7228ad42
codegen.c: gen_move should generate proper OP_LOADI16.
2021-09-20 16:58:27 +09:00
Yukihiro "Matz" Matsumoto
1baf08f174
codegen.c: rename loopinfo->acc to reg.
...
`acc` meant `accumulator` but it is not an accumulator but just a
register position.
2021-09-20 10:40:30 +09:00
Yukihiro "Matz" Matsumoto
2083d99392
codegen.c: check no_peephole(s) before mrb_last_insn(s).
2021-09-20 10:37:11 +09:00
Yukihiro "Matz" Matsumoto
f85c50543b
codegen.c (mrb_last_insn): no previous instruction on top.
2021-09-20 10:35:01 +09:00
Yukihiro "Matz" Matsumoto
938af8a8ff
vm.c: add array assertions.
2021-09-19 23:17:19 +09:00
Yukihiro "Matz" Matsumoto
8bfa99975c
codegen.c: unify OP_ARYPUSH and OP_ARYPUSH_N.
...
- `OP_ARYPUSH` now takes operand for the number of pushing elements
- the code generator consume the stack no more than `64` for `mruby/c`
2021-09-19 09:07:20 +09:00
Yukihiro "Matz" Matsumoto
7c99df8416
ops.h: add OP_ARYPUSH_N instruction.
...
Add n elements at once. Reduces instructions for huge array
initialization. In addition, `gen_value` function in `codegen.c` was
refactored and clarified.
2021-09-17 07:49:47 +09:00
Yukihiro "Matz" Matsumoto
6f044de578
AUTHORS: update. [ci skip]
2021-09-17 07:47:45 +09:00
Yukihiro "Matz" Matsumoto
f7063ccd1b
AUTHORS: update. [ci skip]
2021-09-16 20:24:29 +09:00
Yukihiro "Matz" Matsumoto
8619ba6a38
Use struct initializer instead of memset.
2021-09-15 13:02:15 +09:00
Yukihiro "Matz" Matsumoto
e5e7bd29ef
sprintf.c: width may have been INT_MAX.
...
Now `width` is limited to `INT16_MIN..INT16_MAX`.
2021-09-14 14:12:56 +09:00
Yukihiro "Matz" Matsumoto
6dbf49fdb4
parse.y: cons_free unused node (empty string node).
2021-09-13 12:20:11 +09:00
Yukihiro "Matz" Matsumoto
100eac3fec
parse.y: allow non-local variable access from hash value omission.
...
For example, `{p:}` (means `{p:p}`) and `{String:}` (`{String:String}`)
should be allowed like CRuby.
2021-09-13 12:15:10 +09:00
Yukihiro "Matz" Matsumoto
6c76926d05
parse.y: allow value omission in Hash literals introduced in Ruby3.1.
...
`{x:, y:}` now is a syntax sugar of `{x: x, y: y}`.
This fix also includes the update of #4815 fix.
2021-09-13 11:04:27 +09:00
Yukihiro "Matz" Matsumoto
31fc74f5a8
parse.y: fix nint (int to node) and intn (node to int).
2021-09-12 23:14:43 +09:00
Yukihiro "Matz" Matsumoto
9e86d204e5
parse.y: avoid adding zero length strings.
2021-09-12 07:58:57 +09:00
Yukihiro "Matz" Matsumoto
e1a865f272
codedump.c: avoid printing OP_EXT? prefix.
2021-09-11 11:00:11 +09:00
Yukihiro "Matz" Matsumoto
648a774ef6
ops.h: update OP_HASHADD description.
2021-09-10 19:11:56 +09:00
Yukihiro "Matz" Matsumoto
da749d870f
array.c: forgot to adjust tail position in mrb_ary_splice.
2021-09-10 17:34:40 +09:00
Yukihiro "Matz" Matsumoto
cd0ffd6f1c
codegen.c: fixed gen_setxv bug with taking assignment value; fix #5550
2021-09-10 15:39:24 +09:00
Yukihiro "Matz" Matsumoto
69da192eec
codegen.c: gen_move refactoring.
2021-09-10 15:38:51 +09:00
Yukihiro "Matz" Matsumoto
7df31d9451
mruby.h: remove acc from callinfo; add cci instead.
...
`acc` was used as an index of the receiver (if positive), or a flag for
methods implemented in C. We replace `regs[ci->acc]` by `ci[1].stack[0]`.
And renamed `acc` (originally meant accumulator position) to `cci`
(means callinfo for C implemented method).
2021-09-10 12:39:51 +09:00
Yukihiro "Matz" Matsumoto
3050630b69
vm.c, codedump.c: add IREP_TT_NFLAG assertions.
...
The pool specified by `OP_STRING` (and `OP_SYMBOL`) should represent a
string, so that `IREP_TT_NFLAG` should be zero.
2021-09-10 10:25:07 +09:00
Yukihiro "Matz" Matsumoto
28b5c30b96
ops.h: add OP_SYMBOL instruction.
...
It generates a symbol by interning from the pool string.
2021-09-10 10:23:28 +09:00
Yukihiro "Matz" Matsumoto
b34713304a
fixup! codegen.c: resurrect s->lastpc to reduce iseq scans.
2021-09-10 10:22:49 +09:00
Yukihiro "Matz" Matsumoto
5fbea87fe5
codegen.c: resurrect s->lastpc to reduce iseq scans.
...
When parsing scripts frequent scans could cost too much.
2021-09-10 10:15:55 +09:00
Yukihiro "Matz" Matsumoto
3693187beb
vm.c: ci->acc (int16_t) may overflow.
2021-09-10 10:15:32 +09:00
Yukihiro "Matz" Matsumoto
c0f39bcaaf
Merge pull request #5549 from mruby/dependabot/github_actions/github/super-linter-4.7.3
...
build(deps): bump github/super-linter from 4.7.2 to 4.7.3
2021-09-10 10:15:20 +09:00
dependabot[bot]
a7e85bb7e9
build(deps): bump github/super-linter from 4.7.2 to 4.7.3
...
Bumps [github/super-linter](https://github.com/github/super-linter ) from 4.7.2 to 4.7.3.
- [Release notes](https://github.com/github/super-linter/releases )
- [Changelog](https://github.com/github/super-linter/blob/master/docs/release-process.md )
- [Commits](https://github.com/github/super-linter/compare/v4.7.2...v4.7.3 )
---
updated-dependencies:
- dependency-name: github/super-linter
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2021-09-09 14:04:06 +00:00
Yukihiro "Matz" Matsumoto
7e612b1c89
string.c: check integer overflow in str_replace_partial.
2021-09-09 19:12:59 +09:00
Yukihiro "Matz" Matsumoto
8a41d2b876
string.c: check integer overflow in mrb_str_aset().
2021-09-09 19:12:36 +09:00
Yukihiro "Matz" Matsumoto
5777e33c2a
doc/guides/mrbconf.rb: add RO_DATA configuration description; #5547
2021-09-09 16:20:29 +09:00
Yukihiro "Matz" Matsumoto
49602f636d
value.h: add configuration macros around mrb_ro_data_p(); close #5547
...
- `MRB_USE_ETEXT_RO_DATA_P`: use `etext` and `edata`
- `MRB_NO_DEFAULT_RO_DATA_P`: not use the default `mrb_ro_data_p()`
2021-09-09 16:15:25 +09:00
Yukihiro "Matz" Matsumoto
5dd8b04d91
load.c: no need for conditional compilation; #5547
...
`mrb_ro_data_p()` is available anyway.
2021-09-09 11:07:19 +09:00
Yukihiro "Matz" Matsumoto
a503484cb3
value.h: use etext and edata which are more widely available; #5547
2021-09-09 10:12:50 +09:00
Yukihiro "Matz" Matsumoto
a3fe04eda2
Merge pull request #5548 from mruby/dependabot/github_actions/github/super-linter-4.7.2
...
build(deps): bump github/super-linter from 4.7.1 to 4.7.2
2021-09-09 07:34:02 +09:00
dependabot[bot]
ddf2a49622
build(deps): bump github/super-linter from 4.7.1 to 4.7.2
...
Bumps [github/super-linter](https://github.com/github/super-linter ) from 4.7.1 to 4.7.2.
- [Release notes](https://github.com/github/super-linter/releases )
- [Changelog](https://github.com/github/super-linter/blob/master/docs/release-process.md )
- [Commits](https://github.com/github/super-linter/compare/v4.7.1...v4.7.2 )
---
updated-dependencies:
- dependency-name: github/super-linter
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2021-09-08 14:04:32 +00:00
Yukihiro "Matz" Matsumoto
e4a0728b24
array.c: refactor mrb_ary_splice.
2021-09-08 07:33:08 +09:00
Yukihiro "Matz" Matsumoto
1d1a89874f
value.h: fixed address comparison on macOS.
2021-09-07 18:51:04 +09:00
Yukihiro "Matz" Matsumoto
cbfaa5e20f
object.c: rename mrb_to_int to mrb_to_integer.
...
Consistent naming: `integer` to represent integer packed in `mrb_value`
instead of `int`.
2021-09-07 14:31:56 +09:00
Yukihiro "Matz" Matsumoto
79bc8e2539
string.h: rename mrb_str_to_inum to mrb_str_to_integer.
...
Consistent naming: `integer` to represent integer packed in `mrb_value`
instead of `inum`.
2021-09-07 14:31:56 +09:00
Yukihiro "Matz" Matsumoto
674d841ead
eval.c: if the parser raises an exception without an error message
...
`eval` would have crashed in formatting.
2021-09-07 07:37:19 +09:00
Yukihiro "Matz" Matsumoto
711f06a562
eval.c: check length of the file name.
...
It should be lexx than `UINT16_MAX`. If you don't check here, the parser
would raise an exception.
2021-09-07 07:35:35 +09:00
Yukihiro "Matz" Matsumoto
6fc6880f1f
codegen.c: improve exception handling in generate_code.
...
- remove `mrb_jmpbuf` from `codegen_scope`
- unify exception handling of `mrb_state` and `codegen_scope`
2021-09-07 07:33:28 +09:00
Yukihiro "Matz" Matsumoto
2fb06aabe6
parse.y: refactor mrb_parser_parse().
...
- remove `mrb_jmpbuf` from `truct mrb_parser_state`
- unify exception handling of `mrb_state` and `mrb_parser_state`.
2021-09-07 07:31:21 +09:00
Yukihiro "Matz" Matsumoto
ad3404229f
parse.y: refactoring mrb_parser_parser().
2021-09-06 13:58:01 +09:00
Yukihiro "Matz" Matsumoto
fc1f7c4bf0
numeric.c: shortcut overflowing operation when ndigit is too small.
2021-09-06 10:21:42 +09:00
Yukihiro "Matz" Matsumoto
ab3db07752
boxing_word.h: avoid mrb_float_p() when MRB_NO_FLOAT is on; fix #5546
2021-09-05 20:59:49 +09:00
Yukihiro "Matz" Matsumoto
43abf36f00
array.c: check integer overflow before addition.
2021-09-05 16:41:08 +09:00
Yukihiro "Matz" Matsumoto
7552b9322a
codegen.c: avoid integer overflow.
2021-09-05 09:25:44 +09:00
Yukihiro "Matz" Matsumoto
28c4f2f683
kernel.c: add __method__; ref #4468
2021-09-04 17:57:35 +09:00
Yukihiro "Matz" Matsumoto
09f686cd7b
Merge branch 'shuujii-rename-Kernel-__method__-to-Kernel-__callee__'
2021-09-04 16:18:20 +09:00
KOBAYASHI Shuji
8a9f891fd3
Rename Kernel#__method__ to Kernel#__callee__
...
Because the current behavior of `__method__` is equivalent to `__callee__`.
Example:
# example.rb
def src
__send__(ARGV[0])
end
alias dst src
%w[src dst].each {|n| puts "call #{n} => #{__send__(n).inspect}"}
Ruby:
$ ruby example.rb __method__
call src => :src
call dst => :src
$ ruby example.rb __callee__
call src => :src
call dst => :dst
mruby:
$ mruby example.rb __method__
call src => :src
call dst => :dst
2021-09-04 16:17:06 +09:00
Yukihiro "Matz" Matsumoto
2d8f4fa92f
proc.c: need to preserve target_class in callinfo.
...
Otherwise `target_class` can be lost when it differs from `proc`'s
`target_class`, e.g. when called from `instance_eval`.
Also we should not pass `target_class` to `MRB_OBJ_ALLOC` since it
checks instance type from the class, and `target_class` may not have
proper information. ref #5272
2021-09-04 13:50:32 +09:00
Yukihiro "Matz" Matsumoto
5acf7e7cf7
vm.c: remove duplicated calls of mrb_vm_ci_target_class().
2021-09-04 12:54:04 +09:00
Yukihiro "Matz" Matsumoto
e02350dd02
range.c: len = b - a may overflow.
2021-09-03 16:30:42 +09:00
Yukihiro "Matz" Matsumoto
dc4b60291a
range.c: hide internal `__num_to_a' method from backtrace.
2021-09-03 16:30:42 +09:00
Yukihiro "Matz" Matsumoto
161f2403b3
Merge pull request #5545 from mruby/dependabot/github_actions/github/super-linter-4.7.1
...
build(deps): bump github/super-linter from 4.6.3 to 4.7.1
2021-09-02 07:26:25 +09:00
dependabot[bot]
a6bb53f65a
build(deps): bump github/super-linter from 4.6.3 to 4.7.1
...
Bumps [github/super-linter](https://github.com/github/super-linter ) from 4.6.3 to 4.7.1.
- [Release notes](https://github.com/github/super-linter/releases )
- [Changelog](https://github.com/github/super-linter/blob/master/docs/release-process.md )
- [Commits](https://github.com/github/super-linter/compare/v4.6.3...v4.7.1 )
---
updated-dependencies:
- dependency-name: github/super-linter
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2021-09-01 14:06:39 +00:00
Yukihiro "Matz" Matsumoto
de9bf86432
Merge pull request #5544 from stuarth/change-language
...
Use gender-neutral pronouns
2021-09-01 13:59:04 +09:00
Stuart Hinson
2c167361d5
use gender-neutral pronouns
2021-08-31 19:17:49 -07:00
Yukihiro "Matz" Matsumoto
5211a3f209
Merge pull request #5543 from mruby/dependabot/github_actions/github/super-linter-4.6.3
...
build(deps): bump github/super-linter from 4.6.2 to 4.6.3
2021-09-01 07:03:01 +09:00
Yukihiro "Matz" Matsumoto
41d0b343e6
string.c: need to adjust index for UTF-8.
2021-09-01 07:00:56 +09:00
Yukihiro "Matz" Matsumoto
7ffffbfe01
build_config/ci/gcc-clang.rb: enable MRB_UTF8_STRING.
2021-09-01 07:00:55 +09:00
Yukihiro "Matz" Matsumoto
3622f2c4b5
string.c: implement __sub_replace() in C.
...
To reduce number of string allocation.
2021-09-01 07:00:55 +09:00
Yukihiro "Matz" Matsumoto
2c41739b66
mruby.h: obsolete mrb_to_str().
...
Replace them by `mrb_ensure_string_type()`.
2021-09-01 07:00:55 +09:00
Yukihiro "Matz" Matsumoto
082882da69
string.rb: avoid internal __to_str calls.
...
`__to_str` was a mere type check method despite its name.
2021-09-01 07:00:55 +09:00
Yukihiro "Matz" Matsumoto
8c296a3818
object.c: remove `mrb_convert_to_integer()' function.
...
And merged to `mrb_f_integer()` which is only usage of the function.
2021-09-01 07:00:54 +09:00
Yukihiro "Matz" Matsumoto
37a7ff228b
string-ext/string.c: implement casecmp in C.
...
* should not raise error for non-string arguments
* avoid allocating case converted string internally
2021-09-01 07:00:54 +09:00
Yukihiro "Matz" Matsumoto
f6e5c902f0
string.h: obsolete mrb_str_to_str(), even from examples.
2021-09-01 07:00:54 +09:00
Yukihiro "Matz" Matsumoto
e86c9cb57c
Do no use return values from mrb_ensure_ functions.
...
They return the checking argument without modification, so the values
are already there. Maybe we should change the return type to `void` but
keep them unchanged for compatibility.
2021-09-01 07:00:54 +09:00
Yukihiro "Matz" Matsumoto
572a43de84
mruby.h: reorganize mrb_ensure/check functions in headers.
2021-09-01 07:00:53 +09:00
dependabot[bot]
ad5c90e556
build(deps): bump github/super-linter from 4.6.2 to 4.6.3
...
Bumps [github/super-linter](https://github.com/github/super-linter ) from 4.6.2 to 4.6.3.
- [Release notes](https://github.com/github/super-linter/releases )
- [Commits](https://github.com/github/super-linter/compare/v4.6.2...v4.6.3 )
---
updated-dependencies:
- dependency-name: github/super-linter
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2021-08-31 14:07:23 +00:00
Yukihiro "Matz" Matsumoto
64d5a40cde
Merge pull request #5542 from dearblue/mrb_get_args-cI
...
Allow `nil` for `c!` and `I!` specifiers of `mrb_get_args()`
2021-08-30 07:38:45 +09:00
Yukihiro "Matz" Matsumoto
84e36d748c
Merge pull request #5541 from dearblue/mrb_get_args-oCSAH
...
Integrate the processing of similar specifiers of `mrb_get_args()`
2021-08-29 08:32:05 +09:00
dearblue
f99620436d
Allow nil for c! and I! specifiers of mrb_get_args()
2021-08-28 15:54:30 +09:00
dearblue
c9f7bcc0cf
Integrate the processing of similar specifiers of mrb_get_args()
...
It is `o`, `C`, `S`, `A` and `H` specifiers that are integrated.
As a side effect, the `C!` Specifier can now be used.
2021-08-28 15:52:37 +09:00
Yukihiro "Matz" Matsumoto
07f12fe890
Merge pull request #5540 from dearblue/mrb_get_args
...
Refactor the `mrb_get_args()` function
2021-08-28 12:50:47 +09:00
dearblue
6ac8d14b7b
Refactor the mrb_get_args() function
...
- Removed the `ARGV` macro.
The current path doesn't go into the mruby VM and there's also no need to separate variables.
- Use common functions to check object types.
- Use `mrb_ensure_string_type()` to check the string instead of `mrb_to_str()`.
This is for consistency with array and hash.
- Use `mrb_ensure_array_type()` to check the array instead of `to_ary()`.
- Use `mrb_ensure_hash_type()` to check the hash instead of `to_hash()`.
- Add and use `ensure_class_type()` to check class and module.
- Changed the argument index type from `mrb_int` to `int`.
Even if it is `int16_t`, it is enough.
`mrb_int` is overkill, especially if `MRB_32BIT` and `MRB_INT64` are defined.
2021-08-27 22:43:25 +09:00
Yukihiro "Matz" Matsumoto
12a483c1bc
Merge pull request #5539 from mruby/dependabot/github_actions/github/super-linter-4.6.2
...
build(deps): bump github/super-linter from 4.6.1 to 4.6.2
2021-08-27 07:43:48 +09:00
dependabot[bot]
86c5414dc1
build(deps): bump github/super-linter from 4.6.1 to 4.6.2
...
Bumps [github/super-linter](https://github.com/github/super-linter ) from 4.6.1 to 4.6.2.
- [Release notes](https://github.com/github/super-linter/releases )
- [Commits](https://github.com/github/super-linter/compare/v4.6.1...v4.6.2 )
---
updated-dependencies:
- dependency-name: github/super-linter
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2021-08-26 14:05:40 +00:00
Yukihiro "Matz" Matsumoto
4654de9074
etc.c: keep full float32 with MRB_64BIT and MRB_USE_FLOAT32.
2021-08-26 16:06:02 +09:00
Yukihiro "Matz" Matsumoto
ba6e121537
boxing_nan.h: rename prefix BOXNAN to NANBOX.
2021-08-26 16:06:02 +09:00
Yukihiro "Matz" Matsumoto
9d6755569e
boxing_word.h: rename prefix BOXWORD to WORDBOX.
2021-08-26 16:06:01 +09:00
Yukihiro "Matz" Matsumoto
fdfa0caa46
boxing_word.h: rename configuration macro name.
...
`MRB_WORDBOX_USE_HEAP_FLOAT` instead of `MRB_USE_FLOAT_FULL_PRECISION`.
2021-08-26 16:06:01 +09:00
Yukihiro "Matz" Matsumoto
e9c6e52f5b
value.h: reconstruct mrb_ro_data_p().
...
* use predefined `mrb_ro_data_p()` for user-mode Linux and macOS
* define `MRB_LINK_TIME_RO_DATA_P` if predefined one is used
* configure macro `MRB_USE_LINK_TIME_RO_DATA_P` is no longer used
* contributions for new platforms are welcome
2021-08-26 16:06:01 +09:00
Yukihiro "Matz" Matsumoto
d00ae8d166
Merge pull request #5538 from jbampton/pre-commit-autoupdate
...
pre-commit autoupdate
2021-08-26 11:11:04 +09:00
John Bampton
db884a05e8
pre-commit autoupdate
...
https://pre-commit.com/#pre-commit-autoupdate
2021-08-25 18:24:02 +10:00
Yukihiro "Matz" Matsumoto
b8b86d1976
Merge pull request #5535 from dearblue/get-args-frozen
...
Checks the frozen object with `mrb_get_args()`
2021-08-24 16:33:15 +09:00
dearblue
66aa184a82
Checks the frozen object with mrb_get_args()
...
This now works with the `+` modifier that can be added after each specifier.
- `nil` is bypassed.
- The `s` and `z` specifiers are received in C as a `const char *`, so adding a `+` modifier will raise an exception.
- The `a` specifier is received in C as `const mrb_value *`, so adding a `+` modifier will raise an exception.
- The `|`, `*`, `&`, `?` and `:` specifiers with `+` modifier raises an exception.
If `!`/`+` exceeds one for each specifier, an exception will occur in the subsequent processing.
This is the same behavior as before.
2021-08-23 21:58:57 +09:00
dearblue
6415faabaa
Integrate each element expansion process of the argument
...
The previously used `given` variable will be merged into the `pickarg` pointer variable, which points to the argument currently being processed for each loop.
2021-08-23 21:58:51 +09:00
Yukihiro "Matz" Matsumoto
6f46f88873
numeric.c: fix: -0.0.abs returned -0.0.
2021-08-23 10:53:23 +09:00
Yukihiro "Matz" Matsumoto
11cfe77eb1
Merge pull request #5537 from dearblue/header-files
...
Organize the include of header files
2021-08-23 07:34:37 +09:00
Yukihiro "Matz" Matsumoto
0f36710445
Merge pull request #5536 from dearblue/random-seed
...
Stirs internal state when `seed` is set in `Random`
2021-08-22 12:37:34 +09:00
dearblue
5a57602860
Organize the include of header files
...
- `#include <math.h>` is done in `mruby.h`.
Eliminate the need to worry about the `MRB_NO_FLOAT` macro.
- Include mruby header files before standard header files.
If the standard header file is already placed before `mruby.h`, the standard header file added in the future tends to be placed before `mruby.h`.
This change should some reduce the chances of macros that must be defined becoming undefined in C++ or including problematic header files in a particular mruby build configuration.
2021-08-21 15:42:57 +09:00
dearblue
2121b6e689
Stirs internal state when seed is set in Random
...
This is to avoid the approximation of `Random#rand` when `seed`s are close together.
For example, the first `#rand` values after doing `Random#srand(0)` and `Random#srand(1)` are very similar.
Below is the sequence of mruby before this patch was given a `seed` of `0...20`:
```console
% bin/mruby -e 'r = Random.new; 20.times { |i| r.srand(i); puts "seed=%2d %s" % [i, 10.times.map { "%0.3f" % r.rand }.join(" ")] }'
seed= 0 0.643 0.585 0.198 0.732 0.087 0.605 0.548 0.468 0.573 0.966
seed= 1 0.643 0.585 0.198 0.607 0.370 0.605 0.633 0.593 0.395 0.439
seed= 2 0.643 0.585 0.197 0.981 0.652 0.730 0.875 0.713 0.529 0.269
seed= 3 0.643 0.585 0.198 0.857 0.934 0.730 0.960 0.216 0.286 0.523
seed= 4 0.643 0.585 0.197 0.231 0.217 0.605 0.959 0.958 0.478 0.482
seed= 5 0.643 0.585 0.197 0.106 0.249 0.605 0.044 0.330 0.925 0.047
seed= 6 0.643 0.585 0.197 0.481 0.781 0.731 0.285 0.960 0.804 0.725
seed= 7 0.643 0.585 0.197 0.356 0.813 0.731 0.370 0.711 0.937 0.448
seed= 8 0.643 0.585 0.198 0.732 0.329 0.108 0.243 0.974 0.766 0.936
seed= 9 0.643 0.585 0.198 0.607 0.611 0.108 0.827 0.102 0.962 0.597
seed=10 0.643 0.585 0.198 0.981 0.393 0.233 0.569 0.723 0.472 0.805
seed=11 0.643 0.585 0.198 0.857 0.676 0.233 0.154 0.222 0.603 0.371
seed=12 0.643 0.585 0.198 0.231 0.458 0.108 0.654 0.979 0.928 0.577
seed=13 0.643 0.585 0.198 0.106 0.490 0.108 0.239 0.355 0.749 0.831
seed=14 0.643 0.585 0.198 0.481 0.523 0.233 0.981 0.486 0.505 0.131
seed=15 0.643 0.585 0.198 0.356 0.555 0.234 0.565 0.233 0.011 0.666
seed=16 0.643 0.585 0.197 0.730 0.573 0.611 0.904 0.512 0.971 0.153
seed=17 0.643 0.585 0.197 0.605 0.855 0.611 0.240 0.636 0.041 0.509
seed=18 0.643 0.585 0.196 0.979 0.137 0.736 0.229 0.765 0.674 0.832
seed=19 0.643 0.585 0.197 0.855 0.420 0.736 0.566 0.268 0.183 0.219
```
2021-08-21 15:37:12 +09:00
Yukihiro "Matz" Matsumoto
886055b3fb
etc.c: clear mrb_value if sizeof(void*) is bigger than sizeof(mrb_float).
2021-08-21 15:25:59 +09:00
Yukihiro "Matz" Matsumoto
8ca40da3fe
test/float.rb: avoid 1.0e16 in tests without precision specified.
2021-08-21 15:25:59 +09:00
Yukihiro "Matz" Matsumoto
3b4c4caddc
mruby-test/driver.c: change FLOAT_TOLERANCE bigger for inline floats.
2021-08-21 15:25:59 +09:00
Yukihiro "Matz" Matsumoto
36632f55f4
boxing_word.h: embed mrb_float in mrb_value if possible.
...
Embedding reduce memory consumption, sacrificing precision. It clips least
significant 2 bits from `mrb_float`, so if you need to keep float precision,
define `MRB_USE_FLOAT_FULL_PRECISION`.
`MRB_WORD_BOXING` and `MRB_INT64`:
`mrb_float` (`double`) is embedded in `mrb_value` clipped last 2 bits.
`MRB_WORD_BOXING` and `MRB_INT64` and `MRB_USE_FLOAT_FULL_PRECISION`:
`mrb_float` is allocated in the heaps wrapped by `struct RFloat`.
`MRB_WORD_BOXING` and `MRB_INT32` and `MRB_USE_FLOAT32`:
`mrb_float` (`float`) is embedded in `mrb_value` clipped last 2 bits.
In addition, to reserve bit space in the `mrb_value`, maximum inline
symbol length become 4 (instead of 5) in the configuration.
`MRB_WORD_BOXING` and `MRB_INT32`:
Assume `MRB_USE_FLOAT_FULL_PRECISION` and allocate Float values in heap.
2021-08-21 15:25:58 +09:00
Yukihiro "Matz" Matsumoto
4ea80913c2
Merge pull request #5533 from dantecatalfamo/serenity-32bit-crossbuild
...
Add SerenityOS crossbuild
2021-08-21 15:25:46 +09:00
Dante Catalfamo
7f290bebaf
Specify potential values for SERENITY_ARCH
2021-08-20 22:27:50 -04:00
Dante Catalfamo
5e030491e7
Replace 32-bit serenity config with 64-bit compatible version.
2021-08-20 14:48:49 -04:00
Dante Catalfamo
124c4d617f
Add serenity-32bit crossbuild
...
Cross compile mruby for SerenityOS (https://github.com/SerenityOS/serenity )
2021-08-19 23:34:30 -04:00
Yukihiro "Matz" Matsumoto
ca295a2c23
symbol.c: reduce memory by avoiding alignment gaps.
...
In additions:
* use bitmap for flags
* BER integer compression for length
2021-08-19 20:39:34 +09:00
Yukihiro "Matz" Matsumoto
7f8b30261f
gc.c: remove unused structs from RVALUE.
2021-08-19 16:06:17 +09:00
Yukihiro "Matz" Matsumoto
6f305c01a2
value.h: fixed warnings on __APPLE__.
2021-08-19 13:08:39 +09:00
Yukihiro "Matz" Matsumoto
959383df75
value.h: enable mrb_ro_data_p() on __linux__ and __APPLE__.
...
Probably we should add conditions for FreeBSD, etc.
2021-08-19 12:52:10 +09:00
Yukihiro "Matz" Matsumoto
ef66406c50
string.c: mrb_str_to_cstr() should always return a mutable string.
2021-08-18 21:40:10 +09:00
Yukihiro "Matz" Matsumoto
20635e6bdc
debug.c: export integer compressing functions.
...
- mrb_packed_int_len()
- mrb_packed_int_encode()
- mrb_packed_int_decode()
2021-08-18 17:18:04 +09:00
Yukihiro "Matz" Matsumoto
96a8703ca8
boxing_word.h: simplifies inline symbols on MRB_64BIT.
2021-08-17 16:03:42 +09:00
Yukihiro "Matz" Matsumoto
80cf293bf6
pack.c: rename pack/unpack functions for readability.
2021-08-17 13:04:11 +09:00
Yukihiro "Matz" Matsumoto
57b347088d
fixup! pack.c: reduce dispatch in pack_unpack().
2021-08-17 13:04:06 +09:00
Yukihiro "Matz" Matsumoto
4385590d31
pack.c: reduce dispatch in pack_unpack().
2021-08-17 12:52:56 +09:00
Yukihiro "Matz" Matsumoto
bfe2bd4960
pack.c: fix M packing bug.
2021-08-16 10:56:44 +09:00
Yukihiro "Matz" Matsumoto
8d85d4ac9b
AUTHORS: update. [ci skip]
2021-08-15 07:07:08 +09:00
Yukihiro "Matz" Matsumoto
40c4c5d344
random.c: use I specifier for mrb_get_args(); ref #5530
2021-08-14 15:28:38 +09:00
Yukihiro "Matz" Matsumoto
8e5e96239c
pack.c: fixed a overwriting bug in pack_w and pack_M.
2021-08-14 14:58:09 +09:00
Yukihiro "Matz" Matsumoto
ad194bd46b
error.c: the error message may contain NUL character.
2021-08-14 13:01:47 +09:00
Yukihiro "Matz" Matsumoto
73798bff65
Merge pull request #5532 from dantecatalfamo/rhel-doxygen
...
Add instructions for installing doxygen on RHEL/Fedora/CentOS
2021-08-14 08:18:11 +09:00
Dante Catalfamo
89ea8fa34a
Add instructions for installing doxygen on RHEL/Fedora/CentOS
2021-08-13 14:53:20 -04:00
Yukihiro "Matz" Matsumoto
32c30c35b2
Merge pull request #5530 from dearblue/mrb_get_args-I
...
Check the class with `I` specifier of `mrb_get_args()`
2021-08-13 18:11:26 +09:00
dearblue
01da5e1392
Check the class with I specifier of mrb_get_args()
...
Previously, the `I` specifier only checked if the object was `MRB_TT_ISTRUCT`.
So it was at risk of getting pointers to different C structs if multiple classes were to use the `MRB_TT_ISTRUCT` instance.
Change this behavior and change the C argument corresponding to the `I` specifier to `(void *, struct RClass)`.
This change is not compatible with the previous mruby.
Please note that if the user uses the previous specifications, `SIGSEGV` may occur or the machine stack may be destroyed.
resolve #5527
2021-08-13 15:04:19 +09:00
Yukihiro "Matz" Matsumoto
9e74aad43c
codegen.c: fixed a bug in mrb_decode_insn().
2021-08-13 12:38:10 +09:00
Yukihiro "Matz" Matsumoto
7907c184be
codegen.c: add a comment that notice rewind_pc calling convention.
...
`rewind_pc` should not be called when `s->pc` is `0` (top).
2021-08-13 10:11:36 +09:00
Yukihiro "Matz" Matsumoto
9c3d305530
codegen.c: refactor mrb_last_insn().
...
Last commit made `mrb_decode_insn()` to take `NULL` as `pc`.
2021-08-13 10:10:17 +09:00
Yukihiro "Matz" Matsumoto
cbdc4f2c5c
codegen.c: mrb_prev_pc can return NULL at the top of iseq.
2021-08-13 10:02:01 +09:00
Yukihiro "Matz" Matsumoto
013365498d
test/eval.c: add test for #5528
2021-08-12 11:57:56 +09:00
Yukihiro "Matz" Matsumoto
43f9901ec2
Revert "Drop unnecessary upper procs linked from class/module/def syntax"
...
Fix #5528
This reverts commit 59201b59046b9e73c309508350cd3c0fafd20e4d; #5497
2021-08-12 11:42:27 +09:00
Yukihiro "Matz" Matsumoto
80893811c0
class.c: const_missing do not have to be in the backtrace; ref #5528
2021-08-12 08:10:09 +09:00
Yukihiro "Matz" Matsumoto
e1b170160b
codegen.c: avoid signedness warning of int comparison.
2021-08-11 16:10:32 +09:00
Yukihiro "Matz" Matsumoto
a85f2299c0
codegen.c: avoid cross initialization of mrb_insn_data.
2021-08-11 16:09:51 +09:00
Yukihiro "Matz" Matsumoto
fd597d2655
codedump.c: print local variable name for `ADDI/SUBI/ instructions.
...
Recent peephole optimization made `ADDI/SUBI` destinations possibly
local variables.
2021-08-11 10:48:18 +09:00
Yukihiro "Matz" Matsumoto
b1b9b157f8
codegen.c: more peephole optimization.
...
`a=10; a+=1` to generate:
```
1 000 OP_LOADI R1 11 ; R1:a
```
instead of:
```
1 000 OP_LOADI R1 10 ; R1:a
1 003 OP_MOVE R2 R1 ; R1:a
1 006 OP_ADDI R2 1
1 009 OP_MOVE R1 R2 ; R1:a
```
2021-08-11 10:48:18 +09:00
Yukihiro "Matz" Matsumoto
52eb2af7d0
Merge pull request #5526 from mruby/dependabot/github_actions/github/super-linter-4.6.1
...
build(deps): bump github/super-linter from 4.6.0 to 4.6.1
2021-08-11 06:27:53 +09:00
dependabot[bot]
b83eb8dcff
build(deps): bump github/super-linter from 4.6.0 to 4.6.1
...
Bumps [github/super-linter](https://github.com/github/super-linter ) from 4.6.0 to 4.6.1.
- [Release notes](https://github.com/github/super-linter/releases )
- [Commits](https://github.com/github/super-linter/compare/v4.6.0...v4.6.1 )
---
updated-dependencies:
- dependency-name: github/super-linter
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2021-08-10 14:06:15 +00:00
Yukihiro "Matz" Matsumoto
3909281126
Merge pull request #5524 from dearblue/gem-headers
...
Expose all header files of the gems for small compilation
2021-08-10 06:21:18 +09:00
dearblue
4c25ace8b3
Expose all header files of the gems for small compilation
...
After building mruby, if the user compiles and links to `libmruby.a`, expose the included directory of the captured gems.
This is a change to the `<build-dir> /lib/libmruby.flags.mak` file and will result in being added to `bin/mruby-config --cflags`.
This eliminates the need for the user to look up the path and add the compiler flag if the user wants to take advantage of her gems publishing features.
In the main build with `rake CONFIG=...`, there is no problem because it can only be seen from the gems that depends directly and indirectly as before.
However, when compiling independently by the user using `bin/mruby-config`, a header file name collision may occur if a unique header directory is added.
2021-08-09 21:16:45 +09:00
Yukihiro "Matz" Matsumoto
e8dbf1db9a
Merge pull request #5525 from jbampton/pre-commit-autoupdate
...
pre-commit autoupdate
2021-08-09 11:38:31 +09:00
John
530a91752f
pre-commit autoupdate
...
https://pre-commit.com/#pre-commit-autoupdate
2021-08-09 10:10:09 +10:00
Yukihiro "Matz" Matsumoto
0b2ebf4868
Merge pull request #5522 from dearblue/pack-EOF
...
Fixed compilation error of "mruby-pack" with `MRB_NO_STDIO`
2021-08-09 08:39:12 +09:00
Yukihiro "Matz" Matsumoto
1e1d296497
Merge pull request #5523 from jbampton/patch-1
...
docs: fix case of mruby
2021-08-08 09:25:23 +09:00
John Bampton
0516d94c83
docs: fix case of mruby
2021-08-07 16:51:04 +10:00
dearblue
18ef4e35f3
Fixed compilation error of "mruby-pack" with MRB_NO_STDIO
2021-08-07 14:29:55 +09:00
Yukihiro "Matz" Matsumoto
35d230a669
codedump.c: print two operands R(x) and R(x+1) for clarity.
2021-08-07 12:12:24 +09:00
Yukihiro "Matz" Matsumoto
06f49b3f84
codegen.c: need to push the value when the loop was eliminated.
2021-08-07 12:11:38 +09:00
Yukihiro "Matz" Matsumoto
cd02cef465
array.h: avoid duplicated defined of MRB_ARY_NO_EMBED; fix #5520
2021-08-07 06:48:03 +09:00
Yukihiro "Matz" Matsumoto
ce0b38fb72
Merge pull request #5521 from mruby/dependabot/github_actions/github/super-linter-4.6.0
...
build(deps): bump github/super-linter from 4.5.1 to 4.6.0
2021-08-07 06:46:35 +09:00
dependabot[bot]
d0b214c269
build(deps): bump github/super-linter from 4.5.1 to 4.6.0
...
Bumps [github/super-linter](https://github.com/github/super-linter ) from 4.5.1 to 4.6.0.
- [Release notes](https://github.com/github/super-linter/releases )
- [Commits](https://github.com/github/super-linter/compare/v4.5.1...v4.6.0 )
---
updated-dependencies:
- dependency-name: github/super-linter
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2021-08-06 14:05:46 +00:00
Yukihiro "Matz" Matsumoto
46a1c40fe3
numeric_ext.c: fix a bug regarding MRB_INT_MIN.
2021-08-06 11:16:12 +09:00
Yukihiro "Matz" Matsumoto
ff2da0b66e
numeric.c: fix a bug regarding MRB_INT_MIN.
2021-08-06 11:15:46 +09:00
Yukihiro "Matz" Matsumoto
37dbb91b96
codegen.c: -9223372036854775808 % -1 overflows 64 bit integer.
2021-08-06 10:35:06 +09:00
Yukihiro "Matz" Matsumoto
7ecc16f97a
codegen.c: remove code duplication from NODE_ARRAY.
2021-08-05 16:59:32 +09:00
Yukihiro "Matz" Matsumoto
9cb44f5ae3
codegen.c: detect integer overflow in division.
...
`MRB_INT_MIN / -1` overflows.
2021-08-04 12:25:14 +09:00
Yukihiro "Matz" Matsumoto
9f37733382
numeric.c: fix a bug in left shift of negative integer.
...
`-1 * (1<<63)` causes overflow, but `-1<<63` is a valid value.
2021-08-04 12:05:09 +09:00
Yukihiro "Matz" Matsumoto
9b3b2a4c95
numeric.c: check zero division before modulo.
2021-08-03 16:45:08 +09:00
Yukihiro "Matz" Matsumoto
caaa07f2da
codegen.c: check zero division before constant folding.
2021-08-03 16:43:50 +09:00
Yukihiro "Matz" Matsumoto
c480ac4457
numeric_ext.c: modulo and remainder should handle infinite argument.
2021-08-03 16:35:31 +09:00
Yukihiro "Matz" Matsumoto
e75572af6a
numeric_ext.c: add Float#modulo and #remainder methods.
2021-08-03 16:30:47 +09:00
Yukihiro "Matz" Matsumoto
f4afcbef67
numeric_ext.c: update Integer#remainder method.
...
- need to detect zero division error
- support floating point number argument (as `%`)
2021-08-03 16:28:11 +09:00
Yukihiro "Matz" Matsumoto
b70fd09f47
Revert "numeric.c: simplifies int_mod definition."
...
This reverts commit 3738d62a86 .
The change changed the behavior with floating point numbers.
2021-08-03 16:11:02 +09:00
Yukihiro "Matz" Matsumoto
2092bc7fe8
codegen.c: avoid division by zero in constant folding.
2021-08-03 15:57:01 +09:00
Yukihiro "Matz" Matsumoto
fad47a98a7
numeric_ext.c: use mrb_integer instead of mrb_as_int.
...
`mrb_as_int` implicitly converts the value into the integer, but those
methods are defined for Integer class so that the value should always be
integers.
2021-08-03 13:15:34 +09:00
Yukihiro "Matz" Matsumoto
3738d62a86
numeric.c: simplifies int_mod definition.
2021-08-03 13:14:23 +09:00
Yukihiro "Matz" Matsumoto
df6ef39d1c
numeric_ext.c: define modulo and remainder methods for Integer.
2021-08-03 13:13:42 +09:00
Yukihiro "Matz" Matsumoto
b9d2b47f16
Replace mrb_fixnum_value() with mrb_int_value().
...
Use `mrb_fixnum_value()` only when you are absolutely sure that the
value is within `Fixnum` range, i.e. 31 bits signed integer at least.
2021-08-03 13:00:11 +09:00
Yukihiro "Matz" Matsumoto
23e7cb41e5
Replace fixnum references with int.
...
The `Fixnum` class is no longer provided by `mruby`.
2021-08-03 13:00:10 +09:00
Yukihiro "Matz" Matsumoto
019b006ee5
numeric_ext.c: remove unnecessary prefix mrb_ from static functions.
2021-08-03 10:33:04 +09:00
Yukihiro "Matz" Matsumoto
1f0238a928
numeric.c: rename fixdivmod to intdivmod.
2021-08-03 07:30:59 +09:00
Yukihiro "Matz" Matsumoto
4fa24e4ff9
codegen.c: allow constant folding for negative integer modulo.
2021-08-02 16:48:16 +09:00
Yukihiro "Matz" Matsumoto
81d56477f2
numeric.c: simpler integer modulo calculation.
2021-08-02 16:47:50 +09:00
Yukihiro "Matz" Matsumoto
504d05232d
mrdb.c: do not skip OP_JMP on step execution.
2021-08-02 16:19:08 +09:00
Yukihiro "Matz" Matsumoto
e93642d53f
codegen.c: refactor readint() to read MRB_INT_MIN.
2021-08-02 14:10:38 +09:00
Yukihiro "Matz" Matsumoto
6ea0c04c06
numeric.c: use C's modulo operator if both operands are positive.
2021-08-02 14:09:38 +09:00
Yukihiro "Matz" Matsumoto
a5ac9c8790
test/driver.c: remove unused constants related to FIXNUM.
2021-08-02 08:56:38 +09:00
Yukihiro "Matz" Matsumoto
9902ab50fc
codegen.c: fix a bug in bit shift constant folding.
2021-08-02 08:53:50 +09:00
Yukihiro "Matz" Matsumoto
a9d721ea8f
numeric.c: refactor integer bit shift operations.
2021-08-02 08:53:14 +09:00
Yukihiro "Matz" Matsumoto
907df715ef
codegen.c: refactor unary operator optimization.
2021-08-02 08:51:39 +09:00
Yukihiro "Matz" Matsumoto
188c150f44
codegen.c: constant folding binary operators, <<, >>, %, &, |, ^.
2021-08-02 07:34:54 +09:00
Yukihiro "Matz" Matsumoto
1315e8751e
codegen.c: eliminate loop if condition is constant.
...
For example, `while false; ...; end` should be removed.
2021-08-01 20:33:41 +09:00
Yukihiro "Matz" Matsumoto
9dc801a798
codegen.c: peephole optimize OP_JMPxxx.
2021-08-01 20:31:19 +09:00
Yukihiro "Matz" Matsumoto
b1cb6c3c69
codegen.c: allow constant folding for mul / div.
2021-07-31 21:14:54 +09:00
Yukihiro "Matz" Matsumoto
43999492a7
codegen.c: mrb_prev_pc() to take previous instruction position.
...
It rescans `s->iseq` so that peephole optimizer can take multiple
previous instructions for constant folding, etc.
2021-07-31 21:11:36 +09:00
Yukihiro "Matz" Matsumoto
4306893971
codedump.c: instruction length should be ilen, not iseq.
2021-07-30 17:50:24 +09:00
Yukihiro "Matz" Matsumoto
517071e3fa
codegen.c: order instructions in natural order for loops.
...
`while` and `until` generates in `cond` `jmpif` `body` `jmp` order.
It used to be in `jmp` `body` `cond` `jmpif` order.
2021-07-29 17:38:18 +09:00
Yukihiro "Matz" Matsumoto
5cde5983d9
debug.c: uses most space efficient packed map for line information.
2021-07-28 23:08:58 +09:00
Yukihiro "Matz" Matsumoto
64358c09d9
codegen.c: labels should be uint32_t.
2021-07-28 23:08:58 +09:00
Yukihiro "Matz" Matsumoto
adfd29c1b0
codegen.c: fix loopinfo structure members.
...
- `pc0`: `next` destination
- `pc1`: `redo` destination (renamed from `pc2`)
- `pc3`: `break` destination (renamed from `pc3`)
old `pc1` was unused so removed.
2021-07-28 23:08:58 +09:00
Yukihiro "Matz" Matsumoto
e81d497155
codegen.c: removed bytecode when the value of while is not used.
2021-07-28 23:08:58 +09:00
Yukihiro "Matz" Matsumoto
2910af0010
codegen.c: fixed a bug when value is taken from while and until.
...
```ruby
p ((while true; p 1; break; end))
```
should print `1 nil` but was `1`.
2021-07-28 23:08:57 +09:00
Yukihiro "Matz" Matsumoto
9dd3e23fc9
Merge pull request #5518 from jbampton/pre-commit-autoupdate
...
pre-commit autoupdate
2021-07-28 23:08:10 +09:00
John Bampton
cbd54782c6
pre-commit autoupdate
...
https://pre-commit.com/#pre-commit-autoupdate
2021-07-28 21:21:57 +10:00
Yukihiro "Matz" Matsumoto
1f1dca1746
parse.y: fix an integer cast warning.
2021-07-26 11:46:22 +09:00
Yukihiro "Matz" Matsumoto
984161e6bb
parse.y: mrb_int_read() returns mrb_int not unsigned long.
...
Also, now too big capture group index just gives `nil`, not error.
2021-07-26 11:20:59 +09:00
Yukihiro "Matz" Matsumoto
4803718b14
parse.y: unify redundant functions yywarn() and yywarning().
2021-07-26 11:12:10 +09:00
Yukihiro "Matz" Matsumoto
f6b37ff44d
debug.c: small refactoring.
2021-07-26 11:10:20 +09:00
Yukihiro "Matz" Matsumoto
b4696c3935
debug.c: remove type cast warnings.
2021-07-26 11:09:42 +09:00
Yukihiro "Matz" Matsumoto
642497fe19
fmt_fp.c: add implicit cast from mrb_float to int8_t.
2021-07-26 10:57:42 +09:00
Yukihiro "Matz" Matsumoto
966aa476d1
vm.c: fix integer type error in mrb_protect_error.
2021-07-26 10:49:12 +09:00
Yukihiro "Matz" Matsumoto
6175db2746
irep.h: operand c should be fit in uint8_t.
2021-07-26 10:47:40 +09:00
Yukihiro "Matz" Matsumoto
22b24d5d76
test/binding.rb: remove a duplicated test.
2021-07-26 10:46:36 +09:00
Yukihiro "Matz" Matsumoto
26340a8818
time.c: fixed a potential buffer overflow in time_zonename.
2021-07-25 16:43:00 +09:00
Yukihiro "Matz" Matsumoto
c2c0250063
time.c: fixed time_zonename buffer size bug.
2021-07-25 16:38:37 +09:00
Yukihiro "Matz" Matsumoto
368b75d81b
time.c: stop returning LOCAL for the zone name from Time.zone.
2021-07-25 13:07:11 +09:00
Yukihiro "Matz" Matsumoto
2bed2fabae
time.c: update the document for Time#usec; close #5515
2021-07-25 13:07:11 +09:00
Yukihiro "Matz" Matsumoto
47eca476e8
pack.c: fixed sign comparison warning.
2021-07-25 13:07:11 +09:00
Yukihiro "Matz" Matsumoto
8de8521cb6
parse.y: replace strtoul() by mrb_int_read().
2021-07-25 13:07:10 +09:00
Yukihiro "Matz" Matsumoto
5c804cf68f
Remove redundant include headers.
...
- stdlib.h
- stddef.h
- stdint.h
- stdarg.h
- limits.h
- float.h
2021-07-25 13:07:10 +09:00
Yukihiro "Matz" Matsumoto
1f90a39799
Merge pull request #5514 from mruby/dependabot/github_actions/github/super-linter-4.5.1
...
build(deps): bump github/super-linter from 4.5.0 to 4.5.1
2021-07-24 13:21:08 +09:00
dependabot[bot]
5b3a4b36c7
build(deps): bump github/super-linter from 4.5.0 to 4.5.1
...
Bumps [github/super-linter](https://github.com/github/super-linter ) from 4.5.0 to 4.5.1.
- [Release notes](https://github.com/github/super-linter/releases )
- [Commits](https://github.com/github/super-linter/compare/v4.5.0...v4.5.1 )
---
updated-dependencies:
- dependency-name: github/super-linter
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2021-07-23 14:06:33 +00:00
Yukihiro "Matz" Matsumoto
9c43276eb5
codegen.c: fixed a bug in OP_LOADI32 peephole optimization.
2021-07-23 11:20:18 +09:00
Yukihiro "Matz" Matsumoto
598c97ef76
codegen.c: get_int_operand() to support OP_LOADL (int in pool).
2021-07-22 11:49:47 +09:00
Yukihiro "Matz" Matsumoto
d0fed63414
codegen.c: add constant folding for unary numeric operators (+, -, ~).
2021-07-22 11:39:52 +09:00
Yukihiro "Matz" Matsumoto
3e9ed1cca2
codegen.c: compare symbol names directly avoiding string conversion.
2021-07-22 11:21:00 +09:00
Yukihiro "Matz" Matsumoto
e42f192827
codegen.c: skip -@ call if the argument is a literal integer.
2021-07-21 13:20:34 +09:00
Yukihiro "Matz" Matsumoto
2ef6e94489
codegen.c: move gen_setxv() after new_sym().
2021-07-21 13:15:27 +09:00
Yukihiro "Matz" Matsumoto
81b384e3fb
codegen.c: introduce gen_int() to generate integer instructions.
2021-07-21 13:15:27 +09:00
Yukihiro "Matz" Matsumoto
47fca90069
codegen.c: add peephole optimization for OP_LOADI32 before OP_MOVE.
2021-07-21 08:00:02 +09:00
Yukihiro "Matz" Matsumoto
28bf950e01
codegen.c: add peephole optimization for OP_LOADI16 before OP_MOVE.
2021-07-21 07:54:08 +09:00
Yukihiro "Matz" Matsumoto
275fe8c94b
codegen.c: a new function get_int_operand.
2021-07-21 07:52:39 +09:00
Yukihiro "Matz" Matsumoto
5066e2370d
codegen.c: negative zero equals to positive zero.
...
`OP_LOADI Rn -0` should be `OP_LOADI_0`.
2021-07-20 18:24:33 +09:00
Yukihiro "Matz" Matsumoto
cdf54f3159
codegen.c: allow OP_EXT before OP_ADDI and OP_SUBI.
...
This is preparation for integer constant folding.
2021-07-20 11:07:37 +09:00
Yukihiro "Matz" Matsumoto
43f6f765b0
Remove unused prototypes for mrb_proc_merge_lvar(); ref #5511
2021-07-19 07:42:49 +09:00
Yukihiro "Matz" Matsumoto
ed2a6a160e
Merge pull request #5511 from dearblue/binding.3
...
Explicit write barrier for binding
2021-07-19 07:40:22 +09:00
Yukihiro "Matz" Matsumoto
71c778dbfc
Merge pull request #5510 from dearblue/check-stdint
...
Output an error if the `INTPTR_MAX` macro is undefined in C++
2021-07-18 14:34:48 +09:00
Yukihiro "Matz" Matsumoto
86f8edca64
Merge pull request #5509 from dearblue/cast-c++
...
Avoid implicit casting from void pointers for C++
2021-07-17 20:55:18 +09:00
dearblue
de4523f793
Explicit write barrier for binding
2021-07-17 20:43:19 +09:00
dearblue
dbd249cace
Output an error if the INTPTR_MAX macro is undefined in C++
...
When doing `conf.enable_cxx_abi` and compiling with FreeBSD + clang or MinGW, such as `INTPTR_MAX` constant macro is not defined if `#include <stdint.h>` precedes `#include <mruby.h>`.
Currently I get a warning when I use an undefined macro, but if I don't notice it I get confused in a link error.
It can be expected that the problem will be easier to understand by making a clear error.
Adding `-Werror=undef` as a compiler flag can also result in an error, but this can be a problem if the system header file itself uses undefined macros, for example.
This patch does minimal confirmation only, but has no side effects.
2021-07-17 20:32:38 +09:00
dearblue
c8750048be
Avoid implicit casting from void pointers for C++
2021-07-17 20:21:30 +09:00
Yukihiro "Matz" Matsumoto
d4e22c2cec
codedump.c: update some instructions.
...
- OP_GETGV
- OP_SETGV
- OP_GETSV
- OP_SETSV
- OP_GETIV
- OP_SETIV
- OP_GETCV
- OP_SETCV
- OP_GETCONST
- OP_SETCONST
- OP_GETMCNST
- OP_SETMCNST
- OP_GETUPVAR
- OP_SETUPVAR
2021-07-17 19:51:25 +09:00
Yukihiro "Matz" Matsumoto
887df090cb
codegen.c: optimize variable assignments after OP_MOVE.
...
- `OP_SETGV`
- `OP_SETIV`
- `OP_SETCV`
- `OP_SETCONST`
2021-07-17 19:51:25 +09:00
Yukihiro "Matz" Matsumoto
4dda97502b
codegen.c: optimize OP_SETUPVAR after OP_MOVE.
2021-07-17 19:51:24 +09:00
Yukihiro "Matz" Matsumoto
3401396a16
Merge pull request #5508 from mruby/dependabot/github_actions/github/super-linter-4.5.0
...
build(deps): bump github/super-linter from 4.4.1 to 4.5.0
2021-07-16 07:57:58 +09:00
Yukihiro "Matz" Matsumoto
70f31d4bb4
codegen.c: add new peephole optimization for OP_MOVE.
...
If `OP_MOVE` comes after `OP_GETUPVAR`, you can skip move and redirect
the destination register of `OP_GETUPVAR`.
2021-07-16 07:55:25 +09:00
Yukihiro "Matz" Matsumoto
1a3564f2f1
codegen.c: add new peephole optimization for OP_GETUPVAR.
...
When `OP_GETUPVAR` is generated right after `OP_SETUPVAR`, there is no
need to read the upvar back to the register, e.g.
3 008 OP_ADDI R2 1
3 011 OP_SETUPVAR R2 1 0
4 015 OP_GETUPVAR R2 1 0
4 019 OP_LOADI_2 R3
`OP_GETUPVAR` at the address `015` is useless. We can skip it like:
3 008 OP_ADDI R2 1
3 011 OP_SETUPVAR R2 1 0
4 015 OP_LOADI_2 R3
2021-07-16 07:52:21 +09:00
dependabot[bot]
1284c0615e
build(deps): bump github/super-linter from 4.4.1 to 4.5.0
...
Bumps [github/super-linter](https://github.com/github/super-linter ) from 4.4.1 to 4.5.0.
- [Release notes](https://github.com/github/super-linter/releases )
- [Commits](https://github.com/github/super-linter/compare/v4.4.1...v4.5.0 )
---
updated-dependencies:
- dependency-name: github/super-linter
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2021-07-15 14:06:05 +00:00
Yukihiro "Matz" Matsumoto
d4abbf1b77
test/syntax.rb: add tests for break and redo.
2021-07-15 15:22:23 +09:00
Yukihiro "Matz" Matsumoto
b7d75591f3
codegen.c: gen_jmpdst always needs to generate relative address.
2021-07-15 14:08:17 +09:00
Yukihiro "Matz" Matsumoto
b8863c69dc
Merge pull request #4141 from udzura/add-test-for-attr-nil-guard
...
Add a testcase of #4137 fix
2021-07-15 07:27:48 +09:00
Yukihiro "Matz" Matsumoto
f5eeb76a85
Merge pull request #5507 from mruby/dependabot/github_actions/github/super-linter-4.4.1
...
build(deps): bump github/super-linter from 4.3.0 to 4.4.1
2021-07-15 07:25:53 +09:00
dependabot[bot]
b2f3327ade
build(deps): bump github/super-linter from 4.3.0 to 4.4.1
...
Bumps [github/super-linter](https://github.com/github/super-linter ) from 4.3.0 to 4.4.1.
- [Release notes](https://github.com/github/super-linter/releases )
- [Commits](https://github.com/github/super-linter/compare/v4.3.0...v4.4.1 )
---
updated-dependencies:
- dependency-name: github/super-linter
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2021-07-14 14:05:53 +00:00
Yukihiro "Matz" Matsumoto
70aee96050
Merge pull request #5506 from mruby/dependabot/github_actions/github/super-linter-4.3.0
...
build(deps): bump github/super-linter from 4.2.2 to 4.3.0
2021-07-14 08:11:56 +09:00
dependabot[bot]
b89678b30d
build(deps): bump github/super-linter from 4.2.2 to 4.3.0
...
Bumps [github/super-linter](https://github.com/github/super-linter ) from 4.2.2 to 4.3.0.
- [Release notes](https://github.com/github/super-linter/releases )
- [Commits](https://github.com/github/super-linter/compare/v4.2.2...v4.3.0 )
---
updated-dependencies:
- dependency-name: github/super-linter
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2021-07-13 14:06:38 +00:00
Yukihiro "Matz" Matsumoto
0712a5406a
load.c: call mrb_top_run() from mrb_load_proc(); fix #5504
...
So that the function behave consistently with `mrb_load_proc()`.
2021-07-12 08:17:43 +09:00
Yukihiro "Matz" Matsumoto
bb94082fa5
TODO.md: update.
2021-07-11 18:16:17 +09:00
Yukihiro "Matz" Matsumoto
ce2d7c2e01
numeric.c: self should always be an integer in __coerce_step_counter.
2021-07-10 17:04:57 +09:00
Yukihiro "Matz" Matsumoto
be6d559853
Update internal methods not to be listed in backtraces.
...
- String#__lines
- Array#__ary_eq
- Array#__ary_cmp
- Hash#__delete
- Kernel#__case_eqq
- Integer#__coerce_step_counter
2021-07-10 14:15:43 +09:00
Yukihiro "Matz" Matsumoto
ce6319af61
Merge pull request #5503 from ntl/correct-header-files-when-cdump-disabled
...
Mrbgem gem_init.c: add headers for irep loading when cdump is disabled, but presym is enabled
2021-07-10 07:53:53 +09:00
Yukihiro "Matz" Matsumoto
13c0dc98f7
Merge pull request #5505 from dearblue/stdint
...
Do not include `stdint.h` before `mruby.h`
2021-07-10 07:42:25 +09:00
dearblue
a7e41c74de
Do not include stdint.h before mruby.h
2021-07-09 23:20:30 +09:00
Nathan Ladd
6598607fea
Mrbgem gem_init.c compilation correction
...
When `disable_cdump` is declared on a Mrbgem spec, the procedure for
loading MRuby code from the gem's `mrblib` directory is slightly
different; instead of loading the mrblib code as a Proc built from the
compiled irep, the compiled irep is loaded directly. The header files
`mruby.h` and `mruby/proc.h` are needed only when the irep is loaded
directly. They are currently included only when presym is disabled, they
should be included whenever either presym is disabled *or* when
`disable_cdump` is called. The `cdump?` predicate method happens to
return true in either case (presym disabled *or* cdump disabled), so
this change should be safe.
2021-07-09 08:16:12 -05:00
Yukihiro "Matz" Matsumoto
93cce94e06
debug.h: use uint8_t instead of char for BER compressed binary.
...
A change in `load.c` is left uncommitted.
2021-07-09 21:11:28 +09:00
Yukihiro "Matz" Matsumoto
b5039fdb6c
debug.h: use uint8_t instead of char for BER compressed binary.
2021-07-09 14:10:48 +09:00
Yukihiro "Matz" Matsumoto
29556a49a0
cdump.c: avoid uninitialized local variable.
2021-07-09 14:10:17 +09:00
Yukihiro "Matz" Matsumoto
b5aa08fc9e
range.c: avoid implicit conversion from mrb_float to mrb_int.
2021-07-09 09:10:06 +09:00
Yukihiro "Matz" Matsumoto
a1ba6cb728
codegen.c: avoid uninitialized local variable.
2021-07-09 09:09:11 +09:00
Yukihiro "Matz" Matsumoto
b3fe9da329
range.c: should not include internal __num_to_a in the backtrace.
2021-07-08 10:07:18 +09:00
Yukihiro "Matz" Matsumoto
38c9c5c627
backtrace.c: skip C method without mid set.
...
That means it's a method not to be included in the backtrace, for
example `raise`.
2021-07-08 10:06:01 +09:00
Yukihiro "Matz" Matsumoto
f9303699d1
pack.c: fix integer signedness mixture.
2021-07-08 09:59:14 +09:00
Yukihiro "Matz" Matsumoto
06b1662807
mruby-bin-debugger: remove unused local variables.
2021-07-08 09:58:44 +09:00
Yukihiro "Matz" Matsumoto
c572165292
mruby-bin-debugger: support mrb_debug_line_packed_map.
2021-07-08 09:54:11 +09:00
Yukihiro "Matz" Matsumoto
f16ea05a17
debug.c: new debug line information format mrb_debug_line_packed_map.
...
It uses BER number compression of delta of instruction positions and line
numbers. BER compression is a variable length number representation.
* `mrb_debug_line_ary`: array of line numbers represented in `uint16_t`.
`[lineno, lineno, ...]`
* `mrb_debug_line_flat_map`: array of `mrb_irep_debug_info_line`, which
is `struct {uint32_t pos; uint16_t lineno}`, for each line.
* `mrb_debug_line_packed_map` [new]: sequence of BER compressed 2
numbers, `pos_delta, lineno_delta`. Deltas are differences from
previous values (starting `0`). `line_entry_counts` represents total
length of a packed map string for this type.
2021-07-08 07:24:12 +09:00
Yukihiro "Matz" Matsumoto
fb1d4ff682
mruby-bin-debugger: rename prefix 'mrb_debug_' to mrdb_.
2021-07-08 07:24:12 +09:00
Yukihiro "Matz" Matsumoto
5f61b36a21
Merge pull request #5502 from jbampton/add-docs-yamllint
...
Add information on yamllint as comments
2021-07-08 07:24:00 +09:00
John Bampton
6b892e652b
Add information on yamllint as comments
2021-07-07 23:18:00 +10:00
Yukihiro "Matz" Matsumoto
9079082b88
Merge pull request #5501 from jbampton/update-contributing-guide
...
Style the CONTRIBUTING guide
2021-07-07 22:05:50 +09:00
John Bampton
c9db3ec7c3
Style the CONTRIBUTING guide
2021-07-07 22:26:19 +10:00
Yukihiro "Matz" Matsumoto
17748ecd1a
Merge branch 'cremno-mrb_debug_strdup-and-strndup'
2021-07-06 17:02:31 +09:00
Yukihiro "Matz" Matsumoto
7c362ee723
Merge branch 'mrb_debug_strdup-and-strndup' of https://github.com/cremno/mruby into cremno-mrb_debug_strdup-and-strndup
2021-07-06 17:01:37 +09:00
Yukihiro "Matz" Matsumoto
7fa0a704e0
Make LocalJumpError a direct subclass of StandardError.
...
To be compatible with CRuby.
2021-07-05 11:57:04 +09:00
Yukihiro "Matz" Matsumoto
a6657afab9
codegen.c: jump address should be generated by gen_jmpdst().
2021-07-04 00:08:17 +09:00
Yukihiro "Matz" Matsumoto
39aed39139
ops.h: made terms consistent.
...
- `Lit` -> `Pool`
- `SEQ` -> `Irep`
2021-07-03 12:06:44 +09:00
Yukihiro "Matz" Matsumoto
2519659100
Update .git-blame-ignore-revs to skip a reformatting commit.
2021-07-03 06:51:35 +09:00
Yukihiro "Matz" Matsumoto
61e8a54086
doc/opcode.md: table reformatted.
2021-07-03 06:42:26 +09:00
Yukihiro "Matz" Matsumoto
d9a8981c26
vm.c: OP_DEF to push a symbol to a register.
...
The code generator no longer need to emit `OP_LOADSYM` after `OP_DEF`.
`doc/opcode.md` is also updated.
2021-07-03 06:40:05 +09:00
Yukihiro "Matz" Matsumoto
a624da6fdb
vm.c: need to adjust pc for OP_EXT[123].
2021-07-02 21:57:52 +09:00
Yukihiro "Matz" Matsumoto
040d1799ec
error.c: mrb_obj_as_string and mrb_inspect may return non-object (undef).
2021-07-02 14:24:20 +09:00
Yukihiro "Matz" Matsumoto
e60ddc431d
AUTHORS: update.
2021-07-01 07:35:11 +09:00
Yukihiro "Matz" Matsumoto
99dbcec89c
Revert "Remove OP_EXT[123] from operands."
...
This reverts commit fd10c72319 .
I thought it was OK to restrict index value within 1 byte, but in some
cases index value could be 16 bits (2 bytes). I had several ideas to
address the issue, but reverting `fd10c72` is the easiest way. The
biggest reason is `mruby/c` still supports `OP_EXT[123]`, so that they
don't need any additional work.
2021-06-30 22:41:13 +09:00
Yukihiro "Matz" Matsumoto
b2b0329d29
string.rb: upto to break when the string length is longer than end.
2021-06-29 16:49:16 +09:00
Yukihiro "Matz" Matsumoto
f09eb196da
Merge pull request #5497 from dearblue/drop-upper
...
Drop unnecessary upper procs linked from class/module/def syntax
2021-06-29 09:49:59 +09:00
Yukihiro "Matz" Matsumoto
f05f6963f8
Merge pull request #5498 from dearblue/ruby-warns
...
Avoid warnings with `ruby -cw`
2021-06-29 09:48:32 +09:00
dearblue
2d0b50f6f3
Avoid warnings with ruby -cw
...
```console
% for rb in `git ls-files '*/mrblib/*.rb' 'mrblib'`; do ruby30 -cw $rb > /dev/null; done
mrbgems/mruby-array-ext/mrblib/array.rb:389: warning: assigned but unused variable - ary
mrbgems/mruby-array-ext/mrblib/array.rb:663: warning: assigned but unused variable - len
mrbgems/mruby-hash-ext/mrblib/hash.rb:119: warning: possibly useless use of a variable in void context
mrbgems/mruby-hash-ext/mrblib/hash.rb:259: warning: assigned but unused variable - keys
mrbgems/mruby-io/mrblib/io.rb:229: warning: literal in condition
mrbgems/mruby-io/mrblib/io.rb:280: warning: literal in condition
mrbgems/mruby-string-ext/mrblib/string.rb:347: warning: assigned but unused variable - len
mrbgems/mruby-toplevel-ext/mrblib/toplevel.rb:2: warning: parentheses after method name is interpreted as an argument list, not a decomposed argument
```
2021-06-28 23:21:47 +09:00
dearblue
59201b5904
Drop unnecessary upper procs linked from class/module/def syntax
...
It does not need to hold an anonymous proc for constant search.
Also, this change can be expected to cause an anonymous proc to be GC'd.
This is useful for metaprogramming that makes heavy use of the `class`/`module`/`def` syntax in the `class_eval`/`eval` method.
Example:
- code
```ruby
p ObjectSpace.count_objects
String.class_eval do
def a
end
end
p ObjectSpace.count_objects
String.class_eval do
eval <<~CODE
def b
end
CODE
end
p ObjectSpace.count_objects
```
- result of building mruby-head (d63c0df6b ) with `build_config/default.rb`
```
{:TOTAL=>1024, :FREE=>262, :T_PROC=>495, :T_ENV=>61, ...}
{:TOTAL=>1024, :FREE=>259, :T_PROC=>497, :T_ENV=>62, ...}
{:TOTAL=>1024, :FREE=>255, :T_PROC=>500, :T_ENV=>63, ...}
```
- result of building mruby with this patch and `build_config/default.rb`
```
{:TOTAL=>1024, :FREE=>264, :T_PROC=>494, :T_ENV=>60, ...}
{:TOTAL=>1024, :FREE=>262, :T_PROC=>495, :T_ENV=>61, ...}
{:TOTAL=>1024, :FREE=>261, :T_PROC=>496, :T_ENV=>61, ...}
```
2021-06-28 23:04:43 +09:00
Yukihiro "Matz" Matsumoto
d63c0df6bc
Merge pull request #5493 from dearblue/binding.2
...
Fixed finding variables from `proc` in `binding.eval` failed
2021-06-28 09:13:54 +09:00
Yukihiro "Matz" Matsumoto
e462b42ff0
Merge pull request #5495 from dearblue/eval.2
...
Fixed finding variables defined in the upper proc failed
2021-06-27 14:32:43 +09:00
dearblue
c182903ea0
Fixed finding variables from proc in binding.eval failed
...
Previously the following code did not produce the expected results:
```ruby
bx = binding
block = bx.eval("a = 1; proc { a }")
bx.eval("a = 2")
p block.call # Expect 2 but return 1 due to a bug
```
The previous implementation of `Binding#eval` evaluated the code and then merged the top layer variables.
This patch will parse and expand the variable space before making a call to `eval`.
This means that the call to `Binding#eval` will do the parsing twice.
In addition, the following changes will be made:
- Make `mrb_parser_foreach_top_variable()`, `mrb_binding_extract_proc()` and `mrb_binding_extract_env()` functions private global functions.
- Remove the `posthook` argument from `mrb_exec_irep()`.
The `posthook` argument was introduced to implement the `binding` method.
This patch is unnecessary because it uses a different implementation method.
ref #5362
fixed #5491
2021-06-26 13:43:36 +09:00
Yukihiro "Matz" Matsumoto
912b2f8df3
Merge pull request #5494 from dearblue/eval.1
...
Fix memory leak in `Kernel#eval`
2021-06-26 12:17:14 +09:00
dearblue
52b29f41a3
Fixed finding variables defined in the upper proc failed
...
If no new variable was defined in the `eval` method, the variable was hidden from the nested `eval` method.
```ruby
a = 1
p eval %(b = 2; eval %(a)) # => 1 (good)
p eval %(eval %(a)) # => undefined method 'a' (NoMethodError)
```
This issue has occurred since mruby 3.0.0.
2021-06-26 11:00:32 +09:00
dearblue
cf38fc2f9e
Fix memory leak in Kernel#eval
...
The `mrbc_context` remained unreleased when the `mrb_parse_nstring()` function returned `NULL`.
2021-06-26 10:59:39 +09:00
Yukihiro "Matz" Matsumoto
5fc301f07d
class.c: call method_added hooks on alias definitions; #2339
2021-06-25 10:10:34 +09:00
Yukihiro "Matz" Matsumoto
888be9611b
class.c: call hook methods on method definitions; close #2339
...
- `Module#method_added`
- `BasicObject#singleton_method_added`
2021-06-24 13:13:59 +09:00
Yukihiro "Matz" Matsumoto
f314a5132e
Remove unused build configuration file benchmark/build_config_cc.rb.
2021-06-24 13:13:59 +09:00
Yukihiro "Matz" Matsumoto
d0e07b5fdb
Merge pull request #5492 from jbampton/add-file-contents-sorter-pre-commit
...
Add official pre-commit file-contents-sorter
2021-06-23 10:54:51 +09:00
John Bampton
7d2a2e10b3
Add official pre-commit file-contents-sorter
...
Remove unneeded bash script sort-codespell-wordlist.sh
https://github.com/pre-commit/pre-commit-hooks#file-contents-sorter
2021-06-23 10:55:26 +10:00
Yukihiro "Matz" Matsumoto
388bcb15e8
Rename two files for consistency; close #5488
...
* android_arm64-v8a.rb -> android_arm64_v8a.rb
* no-float.rb -> host-nofloat.rb
2021-06-22 16:36:26 +09:00
Yukihiro "Matz" Matsumoto
fc6210763c
Merge pull request #5487 from jbampton/lint-markdown
...
Enable markdownlint rules MD003,MD005,MD007
2021-06-22 13:14:34 +09:00
Yukihiro "Matz" Matsumoto
40ca240c4c
Merge pull request #5489 from jbampton/pre-commit-autoupdate
...
pre-commit autoupdate
2021-06-22 13:13:13 +09:00
John Bampton
34b8dc211d
pre-commit autoupdate
...
https://pre-commit.com/#pre-commit-autoupdate
2021-06-22 13:17:40 +10:00
John Bampton
188e9b6fb0
Enable markdownlint rules MD003,MD005,MD007
...
Lint Markdown
https://github.com/DavidAnson/markdownlint#rules--aliases
2021-06-22 06:57:03 +10:00
Yukihiro "Matz" Matsumoto
8416e706ba
numeric.c: add optional ndigits argument to rounding methods.
...
- `truncate`
- `floor`
- `ceil`
`round` already takes `ndigits`.
2021-06-21 10:24:55 +09:00
Yukihiro "Matz" Matsumoto
e893f805b1
Merge pull request #5486 from dearblue/alloc-castfree
...
Added `MRB_OBJ_ALLOC()` macro that does not require a cast
2021-06-21 10:24:44 +09:00
dearblue
0c5c04d7c8
Use MRB_VTYPE_FOREACH() in src/object.c
2021-06-20 11:11:37 +09:00
dearblue
cc95e346fd
Added MRB_OBJ_ALLOC() macro that does not require a cast
...
The `MRB_OBJ_ALLOC()` macro function returns a pointer of the type corresponding to the constant literal defined in `enum mrb_vtype`.
2021-06-20 11:08:28 +09:00
Yukihiro "Matz" Matsumoto
f678620a43
Merge branch 'dearblue-block_given'
2021-06-19 21:19:42 +09:00
Yukihiro "Matz" Matsumoto
1fca58f7ca
codegen.c: stop uninitialized warning.
2021-06-19 21:18:27 +09:00
dearblue
c40802865a
Added MRB_API function to get block arguments info.
...
- ` mrb_block_given_p()` -- The name comes from CRuby's `rb_block_given_p ()`
At the same time, it applies to `f_instance_eval()` and `f_class_eval()` of `mruby-eval`.
2021-06-19 21:15:02 +09:00
Yukihiro "Matz" Matsumoto
43eddfd4d5
Merge pull request #5484 from jbampton/enable-markdownlint-rule
...
Enable markdownlint rule MD046 code-block-style
2021-06-19 11:06:03 +09:00
John Bampton
625210f67c
Enable markdownlint rule MD046 code-block-style
...
Fix C Markdown code block style
2021-06-19 08:38:58 +10:00
Yukihiro "Matz" Matsumoto
e1637e716a
Merge pull request #5434 from jbampton/add-markdownlint-rules-as-comments
...
Add the rules to the markdownlint config file as comments
2021-06-18 10:55:04 +09:00
Yukihiro "Matz" Matsumoto
e812b1ccb3
Merge pull request #5483 from mruby/dependabot/github_actions/actions/upload-artifact-2.2.4
...
build(deps): bump actions/upload-artifact from 2.2.3 to 2.2.4
2021-06-18 07:26:35 +09:00
dependabot[bot]
d3be93129e
build(deps): bump actions/upload-artifact from 2.2.3 to 2.2.4
...
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact ) from 2.2.3 to 2.2.4.
- [Release notes](https://github.com/actions/upload-artifact/releases )
- [Commits](https://github.com/actions/upload-artifact/compare/v2.2.3...v2.2.4 )
---
updated-dependencies:
- dependency-name: actions/upload-artifact
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2021-06-17 14:05:11 +00:00
Yukihiro "Matz" Matsumoto
4fcb5e8e4f
variable.c: add skip argument to skip base class in lookup.
...
`mrb_vm_const_get` function looks up the constant first in the base
class, so that fallback `const_get` need not to search from the base.
2021-06-17 16:53:54 +09:00
Yukihiro "Matz" Matsumoto
63bafca7f5
variable.c: refactor mrb_vm_const_get function.
2021-06-17 16:53:21 +09:00
Yukihiro "Matz" Matsumoto
090356ec3b
variable.c: skip prepended module for constant lookup.
...
```ruby
module M
FOO = 'm'
end
class A
FOO = 'a'
prepend M
end
class B < A
def foo
p FOO
end
end
B.new.foo # should print `m` not `a`
```
2021-06-17 16:35:39 +09:00
Yukihiro "Matz" Matsumoto
62754a4739
class.c: use MRB_FLAG_TEST() macro.
2021-06-17 16:34:51 +09:00
Yukihiro "Matz" Matsumoto
02aed7af10
Merge pull request #5480 from jbampton/add-more-pre-commit-hooks
...
Add two more pre-commit hooks
2021-06-17 11:44:21 +09:00
Yukihiro "Matz" Matsumoto
dee895ae79
Merge pull request #5482 from jbampton/standardize-backtick-commands
...
Standardize commands inside backticks
2021-06-17 11:43:07 +09:00
John Bampton
d08ea8a92c
Standardize commands inside backticks
...
Remove whitespace
2021-06-17 12:02:21 +10:00
Yukihiro "Matz" Matsumoto
7b0eb1f9b3
Merge pull request #5481 from jbampton/fix-shebang
...
Fix shebang by removing whitespace
2021-06-17 10:26:47 +09:00
John Bampton
233366a00c
Fix shebang by removing whitespace
2021-06-17 10:26:38 +10:00
John Bampton
f1aaa5ee2b
Add two more pre-commit hooks
2021-06-17 10:13:56 +10:00
John Bampton
96bc39e527
Add the rules to the markdownlint config file as comments
...
Enable MD011 no-reversed-links - Reversed link syntax
2021-06-17 09:46:52 +10:00
Yukihiro "Matz" Matsumoto
a528834df7
Revert "instance_eval for classes and modules should behave as class_eval."
...
This reverts commit ee3017496b .
I misunderstood something and the new behavior was different from CRuby.
The issue was reported by @dearblue, regarding #5478
2021-06-17 07:54:54 +09:00
Yukihiro "Matz" Matsumoto
7893cbb523
Merge pull request #5444 from jbampton/add-misspell-docs
...
Add documentation on spell checking with misspell
2021-06-16 09:17:36 +09:00
Yukihiro "Matz" Matsumoto
2341e4f5e5
Merge pull request #5445 from jbampton/add-codespell-pre-commit-hook
...
Run pre-commit with GitHub Actions
2021-06-16 09:15:07 +09:00
Yukihiro "Matz" Matsumoto
651c234f9c
eval.c: implement class_eval with string; close #5478
2021-06-16 09:12:03 +09:00
John Bampton
dab5502e8a
Run pre-commit with GitHub Actions
...
Running pre-commit with GitHub Actions now gives us more tests and coverage
Remove duplicate GitHub Actions for merge conflicts and trailing whitespace
Remove duplicate checks for markdownlint and yamllint from the GitHub Super-Linter
Add new custom pre-commit hook running with a shell script to sort alphabetically and uniquify codespell.txt
Add new pre-commit hook to check spelling with codespell
https://github.com/codespell-project/codespell
Fix spelling
2021-06-16 08:34:54 +10:00
Yukihiro "Matz" Matsumoto
7c8a91ff5a
numeric.c: restore fmt argument for backward compatibility.
...
`mrb_float_to_str()` used to take `fmt` argument. We thought no one used
the function, and OK to remove the argument. But at least `mruby-redis`
gem used the function.
2021-06-15 16:19:16 +09:00
Yukihiro "Matz" Matsumoto
50b6fafddf
pack.c: support `w' directive (BER integer compression).
2021-06-14 11:20:52 +09:00
Yukihiro "Matz" Matsumoto
1ed01a8d47
pack.c: count should not be negative for directives xX@.
2021-06-13 20:13:50 +09:00
Yukihiro "Matz" Matsumoto
bf2b06ced7
pack.c: raise error for unsupported w directive.
2021-06-13 14:21:51 +09:00
Yukihiro "Matz" Matsumoto
eaaa9148b5
readint.c: fixed typo.
2021-06-12 16:18:45 +09:00
Yukihiro "Matz" Matsumoto
96ad60b9aa
pack.c: support `@' directive (absolute position).
2021-06-12 16:18:45 +09:00
Yukihiro "Matz" Matsumoto
952e7efdd7
pack.c: refactor pack/unpack 'X'.
2021-06-12 16:18:45 +09:00
Yukihiro "Matz" Matsumoto
3ddc57ed6e
pack.c: add X directive (back up byte).
2021-06-12 16:18:44 +09:00
Yukihiro "Matz" Matsumoto
fb013595ed
pack.c: count should be always positive. no check needed.
2021-06-12 16:18:44 +09:00
Yukihiro "Matz" Matsumoto
203495ccea
pack.c: fix long/int mixtures.
2021-06-12 16:18:44 +09:00
Yukihiro "Matz" Matsumoto
72ea85c8da
pack.c: remove unused arguments from static functions.
2021-06-12 16:18:44 +09:00
Yukihiro "Matz" Matsumoto
f764467c19
pack.c: wrong position after count read.
2021-06-12 16:18:43 +09:00
Yukihiro "Matz" Matsumoto
56593764c8
Merge pull request #5476 from dearblue/eval+super
...
Raise `TypeError` with `super` inside `instance_eval` / `class_eval`
2021-06-12 16:18:35 +09:00
dearblue
b45d95fa9e
Raise TypeError with super inside instance_eval / class_eval
...
Commit d0f60182af introduced an exception as a limitation of mruby.
Subsequent CRuby-2.7 has changed its behavior to raise an exception.
ref: https://github.com/ruby/ruby/commit/55b7ba368696033f2e89b77cbcd4a05dec97b139
2021-06-12 16:08:21 +09:00
Yukihiro "Matz" Matsumoto
f7777f64e6
codegen.c: refactor readint()
...
* renamed from redundant `readint_mrb_int()`
* supports only base upto 16
* no base validation (already done in parser)
* no negative read (negate after read)
* overflow detection using `mrb_int_{mul,add}_overflow()`
2021-06-11 16:44:47 +09:00
Yukihiro "Matz" Matsumoto
49af1fca03
readint.c: add new function mrb_int_read.
...
Difference from `strtoul(3)`:
* reads `mrb_int` based on configuration
* specifies the end of the string
* no sign interpretation
* base 10 only
2021-06-11 15:14:17 +09:00
Yukihiro "Matz" Matsumoto
14a69c6ffd
Merge pull request #5475 from mruby/dependabot/github_actions/github/super-linter-4.2.2
...
build(deps): bump github/super-linter from 4.2.1 to 4.2.2
2021-06-11 15:14:00 +09:00
dependabot[bot]
0271972e0f
build(deps): bump github/super-linter from 4.2.1 to 4.2.2
...
Bumps [github/super-linter](https://github.com/github/super-linter ) from 4.2.1 to 4.2.2.
- [Release notes](https://github.com/github/super-linter/releases )
- [Commits](https://github.com/github/super-linter/compare/v4.2.1...v4.2.2 )
---
updated-dependencies:
- dependency-name: github/super-linter
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2021-06-11 05:50:49 +00:00
Yukihiro "Matz" Matsumoto
62f4cc8cd1
sprintf.c: check value range before type casting.
2021-06-10 18:42:51 +09:00
Yukihiro "Matz" Matsumoto
df549c12e5
readflt.c: renamed from strtod.c
...
The file provides `mrb_read_float()` renamed from `vim_strtod()`.
2021-06-10 15:04:35 +09:00
Yukihiro "Matz" Matsumoto
f2f6f2179b
Merge pull request #5474 from mruby/dependabot/github_actions/github/super-linter-4.2.1
...
build(deps): bump github/super-linter from 4.2.0 to 4.2.1
2021-06-10 15:04:10 +09:00
dependabot[bot]
d46e7c759f
build(deps): bump github/super-linter from 4.2.0 to 4.2.1
...
Bumps [github/super-linter](https://github.com/github/super-linter ) from 4.2.0 to 4.2.1.
- [Release notes](https://github.com/github/super-linter/releases )
- [Commits](https://github.com/github/super-linter/compare/v4.2.0...v4.2.1 )
---
updated-dependencies:
- dependency-name: github/super-linter
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2021-06-10 05:55:58 +00:00
Yukihiro "Matz" Matsumoto
82428de5f9
Merge pull request #5473 from mruby/dependabot/github_actions/github/super-linter-4.2.0
...
build(deps): bump github/super-linter from 4.1.0 to 4.2.0
2021-06-09 17:11:23 +09:00
dependabot[bot]
670fa8607b
build(deps): bump github/super-linter from 4.1.0 to 4.2.0
...
Bumps [github/super-linter](https://github.com/github/super-linter ) from 4.1.0 to 4.2.0.
- [Release notes](https://github.com/github/super-linter/releases )
- [Commits](https://github.com/github/super-linter/compare/v4.1.0...v4.2.0 )
---
updated-dependencies:
- dependency-name: github/super-linter
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2021-06-09 06:03:03 +00:00
Yukihiro "Matz" Matsumoto
3acc09ae61
string.c: make mrb_str_len_{inum,dbl}() static.
2021-06-08 17:19:31 +09:00
Yukihiro "Matz" Matsumoto
d8ec544564
string.c: remove two unused functions.
...
* `mrb_cstr_to_inum()`
* `mrb_cstr_to_dbl()`
2021-06-08 17:00:54 +09:00
Yukihiro "Matz" Matsumoto
a5f323835e
string.c: add base>36 check to String#to_i.
2021-06-08 16:59:57 +09:00
Yukihiro "Matz" Matsumoto
972cc8b5a8
sprintf.c: fix mrb_int and int mixture errors.
2021-06-07 23:26:06 +09:00
Yukihiro "Matz" Matsumoto
b10a6fd472
pack.c: fix 'void* to char*` assignment.
2021-06-07 22:42:31 +09:00
Yukihiro "Matz" Matsumoto
32e96a1d4a
pack.c: add default to switch statement to silence warnings.
2021-06-07 09:06:37 +09:00
Yukihiro "Matz" Matsumoto
0afa651363
pack.c: support M specifier (quoted-printable).
2021-06-07 09:03:25 +09:00
Yukihiro "Matz" Matsumoto
bba044cfc8
test/pack.c: reorganize test suits.
2021-06-07 08:54:54 +09:00
Yukihiro "Matz" Matsumoto
cd64ddf372
pack.c: raise exception for unsupported specifiers.
2021-06-07 07:18:17 +09:00
Yukihiro "Matz" Matsumoto
e112c46281
pack.c: check overflow before calling pack_x.
2021-06-06 08:01:58 +09:00
Yukihiro "Matz" Matsumoto
d518294f20
pack.c: check overflow before reading count.
2021-06-06 08:01:01 +09:00
Yukihiro "Matz" Matsumoto
af3e0ddfc0
pack.c: failed to detect overflow when ch is zero in read_tmpl.
2021-06-06 08:00:24 +09:00
Yukihiro "Matz" Matsumoto
f01c29b0ec
pack.c: hold enum values in enum variables not int.
2021-06-05 20:04:59 +09:00
Yukihiro "Matz" Matsumoto
abb288f5cb
codedump.c: fix a compiler condition bug with MRB_NO_FLOAT.
2021-06-05 08:09:04 +09:00
Yukihiro "Matz" Matsumoto
cb7d351bfb
ops.h: fix term consistency. Lit -> Pool.
2021-06-05 08:08:25 +09:00
Yukihiro "Matz" Matsumoto
c2d3718b6e
Merge branch 'mirichi-test'
2021-06-04 22:26:57 +09:00
mirichi
a997e41d17
add block argument test #2144
2021-06-04 22:25:33 +09:00
Yukihiro "Matz" Matsumoto
001fb58698
Merge branch 'test' of https://github.com/mirichi/mruby into mirichi-test
2021-06-04 22:22:16 +09:00
Yukihiro "Matz" Matsumoto
45dd6b140a
Merge pull request #5469 from mruby/dependabot/github_actions/github/super-linter-4.1.0
...
build(deps): bump github/super-linter from 4.0.2 to 4.1.0
2021-06-04 16:41:18 +09:00
dependabot[bot]
8d6f3595c3
build(deps): bump github/super-linter from 4.0.2 to 4.1.0
...
Bumps [github/super-linter](https://github.com/github/super-linter ) from 4.0.2 to 4.1.0.
- [Release notes](https://github.com/github/super-linter/releases )
- [Commits](https://github.com/github/super-linter/compare/v4.0.2...v4.1.0 )
---
updated-dependencies:
- dependency-name: github/super-linter
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2021-06-04 06:54:20 +00:00
Yukihiro "Matz" Matsumoto
01a21085f6
add a few regressions test from #2313
...
The code was contributed from Carson McDonald (@carsonmcdonald)
2021-06-03 16:47:04 +09:00
Yukihiro "Matz" Matsumoto
9775315240
vm.c: unify JUMP instructions in OP_SEND.
2021-06-02 18:53:22 +09:00
Yukihiro "Matz" Matsumoto
843abc5c7b
cdump.c: rename dump_ prefix to cdump for static functions.
2021-06-01 22:21:04 +09:00
Yukihiro "Matz" Matsumoto
ff93854c4a
cdump.c: separate irep dump in C feature.
2021-06-01 16:47:06 +09:00
Yukihiro "Matz" Matsumoto
a41174aa86
Merge pull request #5464 from shuujii/fix-typo-in-lib-mruby-presym.rb
...
Fix typo in `lib/mruby/presym.rb`
2021-05-31 09:16:34 +09:00
KOBAYASHI Shuji
2a4d340ce4
Fix typo in lib/mruby/presym.rb
2021-05-31 08:25:42 +09:00
Yukihiro "Matz" Matsumoto
cf2e78de44
numeric.c: fixed a silly bug related to pointer decrement.
2021-05-31 02:59:33 +09:00
Yukihiro "Matz" Matsumoto
be647acd3e
sprintf.c: avoid object allocation in integer formatting.
2021-05-30 19:57:56 +09:00
Yukihiro "Matz" Matsumoto
8a4bcc58c9
numeric.c: introduce mrb_int_to_cstr() to dump mrb_int.
...
* refactor `mrb_integer_to_str()`
* refactor `mrb_str_format()`
2021-05-30 08:15:51 +09:00
Yukihiro "Matz" Matsumoto
60aa2192a8
codegen.c: just raise the exception on broken node for assignments.
2021-05-29 15:46:30 +09:00
Yukihiro "Matz" Matsumoto
8aa15b0096
Merge pull request #5463 from mruby/dependabot/github_actions/actions/cache-2.1.6
...
build(deps): bump actions/cache from 2.1.5 to 2.1.6
2021-05-28 16:33:09 +09:00
dependabot[bot]
fc7a00f12f
build(deps): bump actions/cache from 2.1.5 to 2.1.6
...
Bumps [actions/cache](https://github.com/actions/cache ) from 2.1.5 to 2.1.6.
- [Release notes](https://github.com/actions/cache/releases )
- [Commits](https://github.com/actions/cache/compare/v2.1.5...v2.1.6 )
Signed-off-by: dependabot[bot] <support@github.com >
2021-05-28 06:02:32 +00:00
Yukihiro "Matz" Matsumoto
269470babc
kernel.c: avoid recursive VM call in mrb_f_caller.
2021-05-28 07:39:34 +09:00
Yukihiro "Matz" Matsumoto
4e683c20a2
kernel.c: caller should not include the frame for itself.
2021-05-28 07:38:21 +09:00
Yukihiro "Matz" Matsumoto
2a717cf2aa
backtrace.c: do not skip frames for C function calls.
2021-05-28 07:36:20 +09:00
Yukihiro "Matz" Matsumoto
cefbc21e67
vm.c: skip actual method_missing call unless it's overridden.
...
So that `mruby -e 'a'` does not print backtrace history, i.e.
```
% mruby -e 'a'
-e:1: undefined method 'a' (NoMethodError)
```
Instead of
```
% mruby -e 'a'
trace (most recent call last):
[1] -e:1
-e:1: undefined method 'a' (NoMethodError)
```
2021-05-28 07:30:43 +09:00
Yukihiro "Matz" Matsumoto
d9c8626bb1
kernel.c: clear mid for raise and method_missing
...
Method names need not to be printed in backtrace history.
2021-05-27 21:48:26 +09:00
Yukihiro "Matz" Matsumoto
cb92f9ce0b
backtrace.c: do not print trace line if there's no backtrace history
2021-05-27 21:44:55 +09:00
Yukihiro "Matz" Matsumoto
48b08fecba
array.c: unify mrb_ary_ref and mrb_ary_entry
...
Use only `mrb_ary_entry` hereafter.
2021-05-27 21:43:43 +09:00
Yukihiro "Matz" Matsumoto
9a72869043
array.c: check for negative shift size.
2021-05-27 08:13:49 +09:00
Yukihiro "Matz" Matsumoto
c019d8d34d
fmt_fp.c: move mruby specific mrb_float_to_str to numeric.c
2021-05-26 17:29:18 +09:00
Yukihiro "Matz" Matsumoto
05cc3a8d99
Merge pull request #5461 from mruby/dependabot/github_actions/github/super-linter-4.0.2
...
build(deps): bump github/super-linter from 3.17.1 to 4.0.2
2021-05-26 15:09:52 +09:00
dependabot[bot]
705632c99d
build(deps): bump github/super-linter from 3.17.1 to 4.0.2
...
Bumps [github/super-linter](https://github.com/github/super-linter ) from 3.17.1 to 4.0.2.
- [Release notes](https://github.com/github/super-linter/releases )
- [Commits](https://github.com/github/super-linter/compare/v3.17.1...v4.0.2 )
Signed-off-by: dependabot[bot] <support@github.com >
2021-05-26 05:58:37 +00:00
Yukihiro "Matz" Matsumoto
063b49ab8e
fmt_fp.c: truncate precision to prevent buffer overflow.
2021-05-25 13:32:29 +09:00
Yukihiro "Matz" Matsumoto
afbc199ed3
fmt_fp.c: use constant that depends on mrb_float size.
2021-05-25 13:31:41 +09:00
Yukihiro "Matz" Matsumoto
5ed3a3475e
fmt_fp.c: use a const int instead of a macro constant.
2021-05-25 13:30:17 +09:00
Yukihiro "Matz" Matsumoto
bf523b71d1
strtod.c: new public domain implementation of strtod; ref #5448
...
Instead of using copyrighted `strtod`, now use the public domain
implementation of `strtod` by Yasuhiro Matsumoto (@mattn). The function
has been renamed to `mrb_float_read()`; ref #5460 as well.
2021-05-24 12:10:14 +09:00
Yukihiro "Matz" Matsumoto
a44ca2e9be
fmt_fp.c: exponential may be bigger than 100.
2021-05-24 11:50:30 +09:00
Yukihiro "Matz" Matsumoto
d121075e49
class.c: no need to create aliases if both symbols are same.
2021-05-24 11:50:30 +09:00
Yukihiro "Matz" Matsumoto
e323cd0c6e
class.c: add write barrier for aliases.
2021-05-24 11:50:29 +09:00
Yukihiro "Matz" Matsumoto
a3f779c5b6
Merge pull request #5459 from shuujii/fix-typo-in-src-fmt_fp.c
...
Fix typo in `src/fmt_fp.c` [ci skip]
2021-05-23 00:02:55 +09:00
KOBAYASHI Shuji
6cfe184d39
Fix typo in src/fmt_fp.c [ci skip]
2021-05-22 17:00:14 +09:00
Yukihiro "Matz" Matsumoto
b9bde0c918
mruby-sprintf: reduce float digits to avoid test failure.
...
Too many digits to fit in single precision float numbers, so that tests
fail when `MRB_USE_FLOAT32` defined.
2021-05-22 14:46:37 +09:00
Yukihiro "Matz" Matsumoto
5c7fe225a6
fp_fmt.c: remove mrb_float_to_cstr().
...
The function was intended to be a utility function for `mruby-sprintf`.
The functionality was integrated into `sprintf.c`.
2021-05-22 14:16:55 +09:00
Yukihiro "Matz" Matsumoto
328563995f
fmt_fp.c: replace with public domain float format routine; ref #5448
...
The original code can be found in `https://github.com/dhylands/format-float `.
Changes:
- support `double`
- support `#` (alt_form) modifier
- small refactoring
2021-05-22 09:35:27 +09:00
Yukihiro "Matz" Matsumoto
fa29bb3bb4
fmt_fp.c: remove fmt argument from mrb_float_to_str().
...
With major refactoring to prepare removing `snprintf(3) calls.
2021-05-21 08:13:38 +09:00
Yukihiro "Matz" Matsumoto
beaf365dd4
numeric.h: remove 2 functions from MRB_API
...
- `mrb_float_to_str()`
- `mrb_float_to_cstr()`
Both functions will be replaced to support new coming `format-float.c`.
2021-05-21 08:13:38 +09:00
Yukihiro "Matz" Matsumoto
03c4e114a9
test/syntax.rb: fix endless def warning (no assertion).
2021-05-21 08:13:37 +09:00
Yukihiro "Matz" Matsumoto
f0e1d575f2
sprintf.c: remove specifiers %a and %A.
...
`fmt_fp.c` does not support those specifiers. In addition, I believe no
one uses hexadecimal representation of float values.
2021-05-21 08:13:37 +09:00
Yukihiro "Matz" Matsumoto
8f73ee2e82
Merge pull request #5456 from shuujii/support-load-64-bit-integer-from-mrb-format-with-MRB_32BIT-and-MRB_INT64
...
Support load 64-bit integer from mrb format with MRB_32BIT and MRB_INT64
2021-05-21 08:12:54 +09:00
KOBAYASHI Shuji
e9e720eab9
Support load 64-bit integer from mrb format with MRB_32BIT and MRB_INT64
2021-05-20 19:39:08 +09:00
Yukihiro "Matz" Matsumoto
07c8470278
parse.y: allow "command" syntax in endless method definition.
...
This change allows `def hello = puts "Hello"` without parentheses.
This syntax has been introduced since Ruby3.1.
2021-05-18 16:26:36 +09:00
Yukihiro "Matz" Matsumoto
d50c83cca7
parse.y: endless singleton method definition can omit parens.
2021-05-18 16:25:53 +09:00
Yukihiro "Matz" Matsumoto
5eebbd7df2
Global renaming regarding integer and float.
...
Consistent number conversion function names:
* `mrb_value` to immediate (C) value
* `mrb_int()` -> `mrb_as_int()`
* `mrb_to_flo()` -> `mrb_as_float()`
* `mrb_value` to `mrb_value` (converted)
* `mrb_to_int()'
* `mrb_Integer()` - removed
* `mrb_Float()` -> `mrb_to_float`
Consistent function name (avoid `_flo` suffix):
* `mrb_div_flo()` -> `mrb_div_float`
2021-05-17 15:07:05 +09:00
Yukihiro "Matz" Matsumoto
ea7f1953c3
Rename mrb_fixnum_to_str to mrb_integer_to_str.
2021-05-17 13:59:01 +09:00
Yukihiro "Matz" Matsumoto
080fdbf9e8
Rename mrb_flo_to_fixnum to mrb_float_to_integer.
2021-05-17 13:58:54 +09:00
Yukihiro "Matz" Matsumoto
fbbcee835f
rational.c: update function prefixes.
...
To be consistent, functions with `rational_` prefix implements methods,
functions with `rat_` prefix are utility functions.
2021-05-17 13:39:51 +09:00
Yukihiro "Matz" Matsumoto
e7db158321
numeric.h: reduce conditional compilation branch on MRB_NO_FLOAT.
2021-05-16 18:21:08 +09:00
Yukihiro "Matz" Matsumoto
361b380eaf
AUTHORS: update authors information as of 2021-05-15.
2021-05-15 17:27:23 +09:00
Yukihiro "Matz" Matsumoto
ae4c952d2e
mruby-array-ext/array.c: implement Array#rotate in C.
...
The Ruby version of `Array#rotate!` generated a rotated array and
replaced the receiver, but the C version rotates the receiver array
in-place. So the performance is improved a lot both in speed and memory
consumption. Look for the comments in `array.c` for the in-place rotating
algorithm, if you are interested.
2021-05-15 17:26:36 +09:00
Yukihiro "Matz" Matsumoto
9422fdbc87
mruby-array-ext/array.c: implement Array#compact in C.
2021-05-14 10:39:41 +09:00
Yukihiro "Matz" Matsumoto
bdb5d85adc
array.rb: replace can't with cannot.
...
To avoid editor coloring failures.
2021-05-14 10:34:11 +09:00
Yukihiro "Matz" Matsumoto
364f275997
range.c: implement (part of) Range#to_a in C.
...
Mostly for performance reason.
2021-05-14 08:39:14 +09:00
Yukihiro "Matz" Matsumoto
99f0adc3f4
range.c: refactor conditional compilation code.
...
So that auto indentation works.
2021-05-14 08:28:27 +09:00
Yukihiro "Matz" Matsumoto
dfac706ac2
range.c: rename RANGE_INITIALIZED_MASK to RANGE_INITIALIZED_FLAG.
2021-05-14 08:27:21 +09:00
Yukihiro "Matz" Matsumoto
1d0cfb359c
Update mrb_bool definition; close #2385
...
- move `TRUE/FALSE` definition from `mrbconf.h` (not configurable)
- use C/C++ definition of boolean type for `mrb_bool`
The fix is originally written by @take-cheeze.
2021-05-13 19:30:41 +09:00
Yukihiro "Matz" Matsumoto
3a3761ec69
string.c: remove unnecessary branch in the internal method.
2021-05-13 16:08:25 +09:00
Yukihiro "Matz" Matsumoto
5c7aa4f299
Simplify module inclusion for Array, Hash and Range.
2021-05-13 16:07:09 +09:00
Yukihiro "Matz" Matsumoto
2597e5192f
Merge pull request #5451 from mruby/dependabot/github_actions/github/super-linter-3.17.1
...
build(deps): bump github/super-linter from 3.17.0 to 3.17.1
2021-05-13 15:55:34 +09:00
Yukihiro "Matz" Matsumoto
2bed750eb0
range.c: avoid use of mrb_fixnum_p.
...
`mrb_int` may not fit in `fixnum` (inline integer).
2021-05-13 15:35:34 +09:00
Yukihiro "Matz" Matsumoto
4d6f5be1df
mruby-test: MRB_INT_MAX etc. may not fit in Fixnum (inline int).
2021-05-13 15:34:20 +09:00
dependabot[bot]
649600ba9f
build(deps): bump github/super-linter from 3.17.0 to 3.17.1
...
Bumps [github/super-linter](https://github.com/github/super-linter ) from 3.17.0 to 3.17.1.
- [Release notes](https://github.com/github/super-linter/releases )
- [Commits](https://github.com/github/super-linter/compare/v3.17.0...v3.17.1 )
Signed-off-by: dependabot[bot] <support@github.com >
2021-05-13 06:24:44 +00:00
Yukihiro "Matz" Matsumoto
5f9f26f6e6
backtrace.c: stop skipping frame with file/line information.
...
Instead, copy them from the outer frame as CRuby does.
2021-05-13 08:00:05 +09:00
Yukihiro "Matz" Matsumoto
bd04630710
Merge pull request #5450 from mruby/dependabot/github_actions/actions/checkout-2.3.4
...
build(deps): bump actions/checkout from 2 to 2.3.4
2021-05-12 16:49:02 +09:00
dependabot[bot]
800b534a35
build(deps): bump actions/checkout from 2 to 2.3.4
...
Bumps [actions/checkout](https://github.com/actions/checkout ) from 2 to 2.3.4.
- [Release notes](https://github.com/actions/checkout/releases )
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md )
- [Commits](https://github.com/actions/checkout/compare/v2...v2.3.4 )
Signed-off-by: dependabot[bot] <support@github.com >
2021-05-12 05:53:03 +00:00
Yukihiro "Matz" Matsumoto
032d11de1b
range.rb: add Range#entries as an alias to Range#to_a.
2021-05-12 11:09:03 +09:00
Yukihiro "Matz" Matsumoto
955c7f703e
array.rb: add Array#entries as an alias to Array#to_a.
...
The performance of `Enumerable#entries` are significantly slower than
`Array#to_a`.
2021-05-12 07:17:49 +09:00
Yukihiro "Matz" Matsumoto
2a280a8f70
Remove the obsolete term Fixnum.
...
Except for compatibility code.
2021-05-11 07:36:34 +09:00
Yukihiro "Matz" Matsumoto
23019213b7
doc/limitation.md: update the limitation.
...
- `puts` behavior changed as CRuby
- fix wrong behavior in re-raising in `rescue`
2021-05-10 17:39:50 +09:00
Yukihiro "Matz" Matsumoto
033aa98cf4
time.c: Windows API provides clock_gettime.
...
`gettimeofday` emulation needed no longer.
2021-05-08 10:34:38 +09:00
Yukihiro "Matz" Matsumoto
f8345dbc44
Add .git-blame-ignore-revs file to ignore whitespace fixes.
2021-05-07 17:28:52 +09:00
Yukihiro "Matz" Matsumoto
6eedb6173b
Merge pull request #5447 from dearblue/tab
...
Extend the tab with 8 whitespace
2021-05-07 17:25:44 +09:00
Yukihiro "Matz" Matsumoto
bc620824be
Merge pull request #5443 from jbampton/order-editorconfig-properties
...
Order the EditorConfig properties
2021-05-07 17:25:05 +09:00
Yukihiro "Matz" Matsumoto
4458000404
symbol.c: add Symbol#name method
...
`Symbol#name` is similar to `#to_s` but returns a frozen string.
2021-05-06 16:45:54 +09:00
Yukihiro "Matz" Matsumoto
a93d9d8585
symbol.c: rename sym_name to sym_cstr.
2021-05-06 16:45:27 +09:00
dearblue
6fc5dc986a
Extend the tab with 8 whitespace
...
This work was done as follows:
- check: `git grep $'\011' -- :^oss-fuzz`
- convert: `ruby -pi -e 'nil while $_.sub!(/^(.*?)\t/) { $1 + " " * (8 - $1.size % 8) }'`
The `doc/guide/{compile,mrbgems}.md` file adds and removes whitespace to make the directory tree look the same.
In `mrbgems/mruby-socket/src/socket.c`, there is a part where the indent is changed from 4 to 2 at the same time as the tab is changed.
2021-05-05 22:16:03 +09:00
Yukihiro "Matz" Matsumoto
1c9260db6b
Merge pull request #5446 from mruby/dependabot/github_actions/github/super-linter-v3.17.0
...
build(deps): bump github/super-linter from v3 to v3.17.0
2021-05-05 19:05:39 +09:00
dependabot[bot]
7460e165dc
build(deps): bump github/super-linter from v3 to v3.17.0
...
Bumps [github/super-linter](https://github.com/github/super-linter ) from v3 to v3.17.0.
- [Release notes](https://github.com/github/super-linter/releases )
- [Commits](https://github.com/github/super-linter/compare/v3...28cfebb84fd6dd9e8773b5efe5ac0f8f3714f228 )
Signed-off-by: dependabot[bot] <support@github.com >
2021-05-05 07:11:09 +00:00
Yukihiro "Matz" Matsumoto
35a6dfe905
Merge pull request #5442 from dearblue/mruby-pack
...
Fix documents for `mruby-io`
2021-05-05 09:38:45 +09:00
Yukihiro "Matz" Matsumoto
b50be31d2b
Merge pull request #5441 from dearblue/mruby-sleep
...
Update gem spec for `mruby-sleep`
2021-05-05 09:38:18 +09:00
John Bampton
f4d9a9beec
Add documentation on spell checking with misspell
2021-05-04 09:16:22 +10:00
Yukihiro "Matz" Matsumoto
b517274921
Merge pull request #5440 from jbampton/fix-whitespace-in-src-symbol-c
...
Fix whitespace in `src/symbol.c`
2021-05-04 07:59:55 +09:00
John Bampton
1d5d912148
Order the EditorConfig properties
2021-05-04 08:14:12 +10:00
dearblue
8eb5a8867b
Fix documents for mruby-io
2021-05-03 23:27:40 +09:00
dearblue
eca990b2ec
Update gem spec for mruby-sleep
...
To align the spec like any other core mrbgems:
- Delete `spec.version`
- Set `spec.summary`
2021-05-03 23:17:04 +09:00
John Bampton
356e1740f2
Fix whitespace in src/symbol.c
2021-05-03 21:15:29 +10:00
Yukihiro "Matz" Matsumoto
0c8cd60097
symbol.c: remove id2name reference from documents.
2021-05-03 15:33:39 +09:00
Yukihiro "Matz" Matsumoto
ce054bd078
symbol.c: remove Symbol#id2sym.
...
In the ancient Ruby, symbols are represented by integers. In that era,
to get string representation from integers, we used `Integer#id2sym`
method. Later, `Symbol` was introduced, and `id2sym` was used for
compatibility. Today, no one uses `id2sym` any longer. It is described
in ISO 30170:2012 standard but I consider it as a mistake.
2021-05-03 15:30:59 +09:00
Yukihiro "Matz" Matsumoto
24dcd252f8
Merge pull request #5439 from dearblue/opcode.md
...
Enclose the table contents of `opcode.md` as code
2021-05-02 20:41:43 +09:00
Yukihiro "Matz" Matsumoto
4626348e47
array.c: mrb_ary_shift_m should be static.
2021-05-02 20:30:41 +09:00
dearblue
3e5ff7543a
Enclose the table contents of opcode.md as code
2021-05-02 20:06:16 +09:00
dearblue
ce973685d0
Rename mrbgems/mruby-inline-struct with mrbgems/mruby-test-inline-struct
...
This gem contains only tests.
2021-05-02 18:25:00 +09:00
Yukihiro "Matz" Matsumoto
14c13bb4d2
symbol.c: remove mrb_sym_static_p() function that no one use.
2021-05-02 17:57:34 +09:00
dearblue
66a55fb4df
Run the task only once when parse.y is updated
...
Previously, the task was executed as many times as there were targets, including `mruby-compiler`.
```console
% rm mrbgems/mruby-compiler/core/y.tab.c
% rake `pwd`/mrbgems/mruby-compiler/core/y.tab.c
YACC mrbgems/mruby-compiler/core/parse.y -> mrbgems/mruby-compiler/core/y.tab.c
YACC mrbgems/mruby-compiler/core/parse.y -> mrbgems/mruby-compiler/core/y.tab.c
```
2021-05-02 16:52:50 +09:00
Yukihiro "Matz" Matsumoto
8f362eaf8a
io.rb,print.rb: puts to expand array arguments.
...
As CRuby behaves.
2021-05-01 00:00:14 +09:00
Yukihiro "Matz" Matsumoto
519dc3d19c
Merge pull request #5432 from shuujii/fix-typo-in-mrbgems-mruby-io-mrblib-io.rb
...
Fix typo in `mrbgems/mruby-io/mrblib/io.rb`; ref cb55e7eca
2021-04-29 11:17:41 +09:00
KOBAYASHI Shuji
a633f0f9f6
Fix typo in mrbgems/mruby-io/mrblib/io.rb; ref cb55e7eca
2021-04-29 09:27:12 +09:00
Yukihiro "Matz" Matsumoto
2ad5d4f53d
string.c: add a new method String#center.
2021-04-28 21:44:19 +09:00
Yukihiro "Matz" Matsumoto
e5e5acefaf
string.{c,rb}: fix type of return values from some methods as Ruby3.0
...
When the receiver is the instance of subclass of `String`.
- `String#each_char`
- `String#each_line`
- `String#partition`
2021-04-28 21:41:01 +09:00
Yukihiro "Matz" Matsumoto
6666b4fa62
doc/opcode.md: stop reversed link syntax check from markdownlint.
2021-04-28 21:37:06 +09:00
Yukihiro "Matz" Matsumoto
cb55e7eca9
io.rb: reimplement IO#each_char.
...
It used to be an alias to `IO#each_byte` but those methods should have
behave differently.
2021-04-28 21:37:05 +09:00
Yukihiro "Matz" Matsumoto
aff3743c12
array.rb: Array#uniq to return always Array.
...
Even called for subclass of `Array`, according to new Ruby3.0 behavior.
Other methods of `Array` behave as Ruby3.0 from the first hand.
2021-04-28 17:45:19 +09:00
Yukihiro "Matz" Matsumoto
9f77232b71
array.c: update Array#shift to take optional argument; close #5428
2021-04-27 16:37:24 +09:00
Yukihiro "Matz" Matsumoto
2e165b9e20
Merge pull request #5425 from dearblue/exc_to_s
...
Fix symbol leak in `exc_to_s()`
2021-04-26 23:13:22 +09:00
Yukihiro "Matz" Matsumoto
f22535045a
mruby.c: specify file names for libraries set by -r; fix #5427
2021-04-26 19:00:49 +09:00
Yukihiro "Matz" Matsumoto
14bd07f831
backtrace.c: skip innermost frame only when the method is in C; #5394
2021-04-26 16:46:44 +09:00
Yukihiro "Matz" Matsumoto
b937463706
Merge pull request #5424 from dearblue/new_iseq
...
Fix annotations for inline iseq of `Class.new` [ci skip]
2021-04-26 14:29:46 +09:00
Yukihiro "Matz" Matsumoto
2ead8a0520
Merge pull request #5423 from dearblue/gc-red
...
Introduce `MRB_GC_RED`
2021-04-26 07:29:08 +09:00
Yukihiro "Matz" Matsumoto
8cd51578fb
build_config/no-float.rb: unify two build configurations; #5421
...
- stop cross building
- add more gems for tests
- add `bintest`
2021-04-26 07:25:21 +09:00
Yukihiro "Matz" Matsumoto
767577efb1
Merge pull request #5422 from dearblue/binding1
...
Avoid ill-advised `goto`
2021-04-25 14:36:17 +09:00
dearblue
c0cd004b21
Fix symbol leak in exc_to_s()
2021-04-25 10:49:33 +09:00
dearblue
8f66dd278b
Fix annotations for inline iseq of Class.new [ci skip]
2021-04-24 21:31:50 +09:00
Yukihiro "Matz" Matsumoto
4d249c28d9
Skip tests that use Float inside; ref #5421
2021-04-24 12:04:08 +09:00
Yukihiro "Matz" Matsumoto
f46b4056f8
numeric.c: remove duplicated definitions; #5421
...
Following functions are defined in `mrblib/numeric.c`:
- `Integer#ceil`
- `Integer#floor`
- `Integer#round`
- `Integer#truncate`
2021-04-24 11:56:50 +09:00
Yukihiro "Matz" Matsumoto
4b4622f711
time.c: fixable_time_t_p is not used with MRB_NO_FLOAT; #5421
2021-04-24 11:38:56 +09:00
Yukihiro "Matz" Matsumoto
237f3339bf
random.c: refactoring; #5421
...
- `Random.rand` with `MRB_NO_FLOAT` behaves as `Random.rand(100)`
- `Random.rand(i)` where `i<0` raises `ArgumentError`
2021-04-24 11:15:53 +09:00
Yukihiro "Matz" Matsumoto
2e49a25740
build_config/nofloat.rb: build configuration with MRB_NO_FLOAT; #5421
2021-04-24 10:54:42 +09:00
dearblue
94c5c8f44c
Introduce MRB_GC_RED
...
Replaces the magic number `7` except in `src/gc.c`.
2021-04-24 10:31:21 +09:00
Yukihiro "Matz" Matsumoto
90a59efbec
numeric.c: fix errors from MRB_NO_FLOAT; close #5421
2021-04-24 10:23:40 +09:00
dearblue
b18fd23cef
Avoid ill-advised goto
...
ref #5362
2021-04-23 22:54:12 +09:00
Yukihiro "Matz" Matsumoto
39dc7b7901
vm.c: fix errors with MRB_NO_FLOAT; fix #5421
2021-04-23 11:28:17 +09:00
Yukihiro "Matz" Matsumoto
dc88a87f9b
time.c: time_t may be unsigned on some platforms.
2021-04-23 07:53:17 +09:00
Yukihiro "Matz" Matsumoto
1a82bab1b0
error.h: rename mrb_protect_raw to mrb_protect_error; #5415
...
- `_raw` does not describe the nature of the function
- the function protect errors during C function execution
2021-04-22 17:01:33 +09:00
Yukihiro "Matz" Matsumoto
91c4ac8d66
numeric.c: update error messages in int_pow; ref #5420
2021-04-21 22:08:07 +09:00
Yukihiro "Matz" Matsumoto
5cf1de5b31
numeric.c: fix int_pow to detect integer overflow; fix #5420
2021-04-21 22:05:52 +09:00
Yukihiro "Matz" Matsumoto
2268405fe6
test/math.rb: 10**30 could cause integer overflow; ref #5420
2021-04-21 22:04:20 +09:00
Yukihiro "Matz" Matsumoto
bf11f87599
Merge pull request #5419 from shuujii/remove-unused-struct-in-include-mruby-variable.h
...
Remove unused struct in `include/mruby/variable.h`
2021-04-20 17:41:26 +09:00
Yukihiro "Matz" Matsumoto
bd66115257
Merge pull request #5418 from shuujii/remove-unused--include-in-complex.c-and-rational.c
...
Remove unused `#include` in `complex.c` and `rational.c`
2021-04-20 17:41:01 +09:00
Yukihiro "Matz" Matsumoto
ca744e77c4
Merge pull request #5417 from shuujii/remove-MRB_API-from-mrb_get_backtrace-definition
...
Remove `MRB_API` from `mrb_get_backtrace` definition
2021-04-20 17:40:33 +09:00
KOBAYASHI Shuji
903fbd767a
Remove unused struct in include/mruby/variable.h
2021-04-20 16:53:11 +09:00
KOBAYASHI Shuji
c6911c54e5
Remove unused #include in complex.c and rational.c
2021-04-20 16:42:40 +09:00
KOBAYASHI Shuji
0d8b025d9b
Remove MRB_API from mrb_get_backtrace definition
2021-04-20 16:07:48 +09:00
Yukihiro "Matz" Matsumoto
ff366b65eb
Merge pull request #5415 from dearblue/unwind-mrb_protect
...
Introducing the `mrb_protect_raw()` API function
2021-04-19 22:34:20 +09:00
dearblue
891e852286
Introducing the mrb_protect_raw() API function
...
The purpose is two-fold:
1. to be able to specify a pointer directly when user data is used
When using `mrb_protect()`, it is necessary to allocate objects by `mrb_obj_cptr()` function when using user data.
Adding `mrb_protect_raw()` will make it simpler to reimplement `mrbgems/mruby-error`.
2. to correctly unwind callinfo when an exception is raised from a C function defined as a method (the main topic)
If a method call is made directly under `mrb_protect()` and a C function is called, control is returned from `mrb_protect()` if an exception occurs there.
In this case, callinfo is not restored, so it is out of sync.
Moreover, returning to mruby VM (`mrb_vm_exec()` function) in this state will indicate `ci->pc` of C function which is equal to `NULL`, and subsequent `JUMP` will cause `SIGSEGV`.
Following is an example that actually causes `SIGSEGV`:
- `crash.c`
```c
#include <mruby.h>
#include <mruby/compile.h>
#include <mruby/error.h>
static mrb_value
level1_body(mrb_state *mrb, mrb_value self)
{
return mrb_funcall(mrb, self, "level2", 0);
}
static mrb_value
level1(mrb_state *mrb, mrb_value self)
{
return mrb_protect(mrb, level1_body, self, NULL);
}
static mrb_value
level2(mrb_state *mrb, mrb_value self)
{
mrb_raise(mrb, E_RUNTIME_ERROR, "error!");
return mrb_nil_value();
}
int
main(int argc, char *argv[])
{
mrb_state *mrb = mrb_open();
mrb_define_method(mrb, mrb->object_class, "level1", level1, MRB_ARGS_NONE());
mrb_define_method(mrb, mrb->object_class, "level2", level2, MRB_ARGS_NONE());
mrb_p(mrb, mrb_load_string(mrb, "p level1"));
mrb_close(mrb);
return 0;
}
```
- compile & run
```console
% `bin/mruby-config --cc --cflags --ldflags` crash.c `bin/mruby-config --libs`
% ./a.out
zsh: segmentation fault (core dumped) ./a.out
```
After applying this patch, it will print exception object and exit normally.
The `mrb_protect()`, `mrb_ensure()` and `mrb_rescue_exceptions()` in `mrbgems/mruby-error` have been rewritten using `mrb_protect_raw()`.
2021-04-19 22:11:57 +09:00
Yukihiro "Matz" Matsumoto
9d362f2c27
backtrace.c: remove MRB_API from internal functions.
...
- `mrb_exc_backtrace` to implement `Exception#backtrace`
- `mrb_get_backtrace` to implement `#caller`
2021-04-19 15:49:51 +09:00
Yukihiro "Matz" Matsumoto
13eba43100
backtrace.c: small refactoring in mrb_exc_backtrace(); ref #5394
...
- add comment for unpacking
- avoid saving the symbol in a local variable
2021-04-19 15:49:51 +09:00
Yukihiro "Matz" Matsumoto
2275e76262
backtrace.c: pedantic check for empty backtrace; ref #5394
2021-04-19 15:49:50 +09:00
Yukihiro "Matz" Matsumoto
85808e50b0
backtrace.c: should skip first (innermost) frame w/out position; #5394
...
Otherwise we suffer `(unknown):0:` errors.
2021-04-19 15:49:50 +09:00
Yukihiro "Matz" Matsumoto
049ec9056e
time.c: add integer boundary check for year.
...
On configurations where `sizeof(mrb_int) > sizeof(int)`.
2021-04-19 15:49:50 +09:00
Yukihiro "Matz" Matsumoto
713fb53bbf
Merge pull request #5414 from shuujii/mRubyPresym-no-longer-needs-RakeDSL
...
`MRuby::Presym` no longer needs `Rake::DSL`
2021-04-18 08:24:15 +09:00
Yukihiro "Matz" Matsumoto
737254588b
array.rb: add Array#intersect? from Ruby3.0.1.
2021-04-17 17:38:44 +09:00
KOBAYASHI Shuji
f0318aca23
MRuby::Presym no longer needs Rake::DSL
2021-04-17 16:42:08 +09:00
John Bampton
9d32d440eb
feat(CI): add the GitHub Super Linter
...
The GitHub Super Linter is a more robust and better supported
tool than the current GitHub Actions we are using.
Running these checks:
ERROR_ON_MISSING_EXEC_BIT: true
VALIDATE_BASH: true
VALIDATE_BASH_EXEC: true
VALIDATE_EDITORCONFIG: true
VALIDATE_MARKDOWN: true
VALIDATE_SHELL_SHFMT: true
VALIDATE_YAML: true
https://github.com/marketplace/actions/super-linter
https://github.com/github/super-linter
Added the GitHub Super Linter badge to the README.
Also updated the pre-commit framework and added
more documentation on pre-commit.
Added one more pre-commit check: check-executables-have-shebangs
Added one extra check for merge conflicts to our
GitHub Actions.
EditorConfig and Markdown linting.
Minor grammar and spelling fixes.
Update linter.yml
2021-04-16 16:37:52 +09:00
Yukihiro "Matz" Matsumoto
ac9038121b
Merge pull request #5413 from shuujii/fix-enable_debug_info-in-mrbgems-mruby-proc-ext-test-proc.rb
...
Fix `enable_debug_info?` in `mrbgems/mruby-proc-ext/test/proc.rb`
2021-04-15 16:55:43 +09:00
KOBAYASHI Shuji
35b2798a5d
Fix enable_debug_info? in mrbgems/mruby-proc-ext/test/proc.rb
2021-04-15 15:49:23 +09:00
Yukihiro "Matz" Matsumoto
3c5467af63
Merge pull request #5411 from artichoke/mrb_protect_atexit_prototype_mismatch
...
Fix incorrect prototype on declaration of mrb_protect_atexit
2021-04-14 07:27:12 +09:00
Yukihiro "Matz" Matsumoto
5a8f0bdaf2
Merge pull request #5410 from mruby/dependabot/github_actions/actions/cache-v2.1.5
...
build(deps): bump actions/cache from v2.1.4 to v2.1.5
2021-04-14 07:25:07 +09:00
Ryan Lopopolo
7fe6f3976e
Fix incorrect prototype on declaration of mrb_protect_atexit
...
`state.c` makes a prototype declaration for the private
`mrb_protect_atexit` which is defined in `error.c`. `error.c` defines
this function with a void return type, but `state.c` defines the
prototype with an `int` return type.
This mismatch prevents mruby from compiling on stricter compilers like
emscripten.
2021-04-13 07:57:09 -07:00
dependabot[bot]
99bd84e76b
build(deps): bump actions/cache from v2.1.4 to v2.1.5
...
Bumps [actions/cache](https://github.com/actions/cache ) from v2.1.4 to v2.1.5.
- [Release notes](https://github.com/actions/cache/releases )
- [Commits](https://github.com/actions/cache/compare/v2.1.4...1a9e2138d905efd099035b49d8b7a3888c653ca8 )
Signed-off-by: dependabot[bot] <support@github.com >
2021-04-13 07:16:35 +00:00
Yukihiro "Matz" Matsumoto
1a3846b492
mrbgem.rake: avoid implicit receivers in mrbgem.rake.
2021-04-13 07:35:39 +09:00
Yukihiro "Matz" Matsumoto
dd89a618b3
mruby-io: fix IO#ungetbyte; ref #5389
...
- remove `Integer#chr` (thus `mruby-sting-ext`) dependency
- fix the behavior when `c.is_a? String`
- fix the behavior when `c > 255`
2021-04-13 07:24:56 +09:00
Yukihiro "Matz" Matsumoto
9a9c842cb0
Rakefile: remove GitLab configuration; close #5409
...
This CI could consume too much CPU time on GitLab. Maybe we should add
resource concious CI configuration on GitLab.
2021-04-13 07:16:21 +09:00
Yukihiro "Matz" Matsumoto
475fc6ed26
AUTHORS: update authors information as of 2021-04-12.
2021-04-12 19:04:57 +09:00
Yukihiro "Matz" Matsumoto
ff2ffe3b07
proc.h: add type cast to silence warning; ref #5402
2021-04-12 15:21:54 +09:00
Yukihiro "Matz" Matsumoto
2cb9a0653a
Merge branch 'io_getbyte' close #5389
2021-04-10 19:08:51 +09:00
Yukihiro "Matz" Matsumoto
5cac9c8478
io.rb: fix IO#getbyte to work with UTF-8 characters; ref #5389
2021-04-10 19:08:15 +09:00
Yukihiro "Matz" Matsumoto
8fa1ff9a03
io.rb: add IO#readbyte; ref #5389
2021-04-10 19:08:15 +09:00
Yukihiro "Matz" Matsumoto
167e0b3f4f
io.c: add assertions to mrb_io_bufread(); ref #5389
2021-04-10 19:08:14 +09:00
Yukihiro "Matz" Matsumoto
5342b5cfef
io.rb: @buf should be empty on EOF; #4983 , #5389
2021-04-10 19:08:14 +09:00
take-cheeze
bf455fd582
Add IO#getbyte
2021-04-10 19:08:14 +09:00
Yukihiro "Matz" Matsumoto
44d5e214cc
Rename some internal functions; ref #5401
2021-04-10 17:33:50 +09:00
Yukihiro "Matz" Matsumoto
f7493b73cb
Merge pull request #5400 from jbampton/fix-spelling
...
chore: fix spelling
2021-04-09 22:07:50 +09:00
Yukihiro "Matz" Matsumoto
c2c37e1451
Merge pull request #5401 from dearblue/mcall
...
Reorganize `mcall()` in `mruby-method`
2021-04-09 21:46:09 +09:00
Yukihiro "Matz" Matsumoto
6d3c022749
mruby-config.bat: update as the shell version. [ci skip]
2021-04-08 07:32:35 +09:00
Yukihiro "Matz" Matsumoto
cbe061c2f4
codeql-analysis.yml: remove git checkout HEAD^2.
...
According to CodeQL instruction, `HEAD^2` is no longer needed.
2021-04-08 07:32:34 +09:00
Yukihiro "Matz" Matsumoto
77405e11b6
Merge pull request #5407 from mruby/dependabot/github_actions/actions/upload-artifact-v2.2.3
...
build(deps): bump actions/upload-artifact from v2.2.2 to v2.2.3
2021-04-07 16:22:08 +09:00
dependabot[bot]
2544e7f0d1
build(deps): bump actions/upload-artifact from v2.2.2 to v2.2.3
...
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact ) from v2.2.2 to v2.2.3.
- [Release notes](https://github.com/actions/upload-artifact/releases )
- [Commits](https://github.com/actions/upload-artifact/compare/v2.2.2...ee69f02b3dfdecd58bb31b4d133da38ba6fe3700 )
Signed-off-by: dependabot[bot] <support@github.com >
2021-04-07 07:12:15 +00:00
Yukihiro "Matz" Matsumoto
fa2ad34792
Removing trailing white spaces; ref #5406 [ci skip]
2021-04-07 11:02:47 +09:00
Yukihiro "Matz" Matsumoto
32ae96af1f
Merge pull request #5406 from sizious/dreamcast-shelf-build-config-update
...
Updating dreamcast_shelf build configuration.
2021-04-07 11:00:51 +09:00
SiZiOUS
03f7e88ee9
dreamcast_shelf: typo fix.
2021-04-06 20:49:03 +02:00
SiZiOUS
7ad2827900
Updating dreamcast_shelf build configuration.
2021-04-06 17:30:02 +02:00
Yukihiro "Matz" Matsumoto
71bf362a5b
doc/link.md: update mruby-config description.
2021-04-06 17:25:54 +09:00
Yukihiro "Matz" Matsumoto
58ab97e300
mruby-config: add --cc and --ld options.
...
* `--cc` print compiler name
* `--ld` print linker name
2021-04-06 17:25:53 +09:00
Yukihiro "Matz" Matsumoto
e19346fd8b
Merge pull request #5405 from shuujii/fix-heading-level-in-doc-guides-link.md
...
Fix heading level in `doc/guides/link.md` [ci skip]
2021-04-06 13:14:34 +09:00
Yukihiro "Matz" Matsumoto
339216b5ec
Merge pull request #5404 from shuujii/fix-typo-in-doc-guides-link.md
...
Fix typo in `doc/guides/link.md` [ci skip]
2021-04-06 12:52:14 +09:00
KOBAYASHI Shuji
6844ef7131
Fix heading level in doc/guides/link.md [ci skip]
2021-04-06 12:52:07 +09:00
KOBAYASHI Shuji
516756d538
Fix typo in doc/guides/link.md [ci skip]
2021-04-06 12:44:58 +09:00
Yukihiro "Matz" Matsumoto
1f03d34fd7
link.md: add new document for linking libmruby; ref #5393
2021-04-05 22:26:15 +09:00
Yukihiro "Matz" Matsumoto
27d3747faa
Merge pull request #5402 from dearblue/catch1
...
Making a proc object static for a method with static irep
2021-04-04 17:56:25 +09:00
dearblue
caeacea86e
Making a proc object static for a method with static irep
...
The following methods will be made static.
- `Class#new`
- `Proc#call`
- `Kernel#catch`
Previously, static const RProc could not be registered as a method, but this has been changed to allow it.
2021-04-04 15:44:19 +09:00
dearblue
4c196dcdaa
Reorganize mcall() in mruby-method.
...
Use `mrb_exec_irep()`. If possible, re-entry into the VM will be suppressed.
Note that due to the effect of being a tail-call, the backtrace of `Method#call` will be lost, and it will look as if the target method was called directly.
This change fixes the problem of infinite loops when redefining methods that make block calls using `mruby-method`.
```console
% bin/mruby -e 'mm = method(:proc); define_method(:proc, ->(*a, &b) { mm.call(*a, &b) }); p proc { 1 }'
trace (most recent call last):
[257] -e:1
[256] -e:1:in proc
[255] -e:1:in proc
...SNIP...
[1] -e:1:in proc
-e:1:in proc: stack level too deep (SystemStackError)
```
2021-04-03 21:20:59 +09:00
dearblue
dd34ac647f
Make mrb_exec_irep() allow non-VM to enter.
...
Change the old `mrb_exec_irep()` as-is to static `mrb_exec_irep_vm()`.
Extract the VM entry part from the old `exec_irep()` in `mruby-eval/src/eval.c` and make it the core of the new `mrb_exec_irep()`.
2021-04-03 21:17:48 +09:00
John Bampton
d8622fc68b
chore: fix spelling
2021-04-03 19:51:01 +10:00
Yukihiro "Matz" Matsumoto
fb8e12f37c
Merge pull request #5397 from dearblue/c++dump
...
Fix build failures with `enable_debug` and `enable_cxx_abi`
2021-04-03 18:44:17 +09:00
Yukihiro "Matz" Matsumoto
474ec3e5c6
Merge pull request #5398 from jbampton/fix-authors-link
...
Fix the Authors link in the README
2021-04-03 17:58:30 +09:00
Yukihiro "Matz" Matsumoto
7561bed32a
Merge pull request #5399 from jbampton/fix-spelling
...
chore: fix spelling
2021-04-03 17:57:08 +09:00
John Bampton
ce2b8aa05e
chore: fix spelling
2021-04-03 18:14:25 +10:00
John Bampton
049c1d0a45
Fix the Authors link in the README
2021-04-03 17:43:04 +10:00
dearblue
3e48f4eebc
Fix build failures with enable_debug and enable_cxx_abi
...
Under C++, there is no implicit conversion from `int` to `enum`, which caused a compilation error.
2021-04-03 16:22:40 +09:00
Yukihiro "Matz" Matsumoto
aca59de88e
Merge branch 'shuujii-define-MRB_NO_GEMS-if-disable_libmruby-is-specified'
2021-04-02 07:55:43 +09:00
Yukihiro "Matz" Matsumoto
ade9368510
Merge branch 'define-MRB_NO_GEMS-if-disable_libmruby-is-specified' of https://github.com/shuujii/mruby into shuujii-define-MRB_NO_GEMS-if-disable_libmruby-is-specified
2021-04-02 07:53:27 +09:00
Yukihiro "Matz" Matsumoto
f68c0d092c
Merge pull request #5396 from shuujii/fix-build-with-MRB_USE_ALL_SYMBOLS
...
Fix build with `MRB_USE_ALL_SYMBOLS`
2021-04-02 07:44:14 +09:00
Yukihiro "Matz" Matsumoto
bda242a135
vm.c: change the default error message for undefined super method.
...
- (old) `undefined method 'foo'`
- (new) `no superclass method 'foo'`
2021-04-01 08:42:30 +09:00
KOBAYASHI Shuji
4309a5b1f4
Fix build with MRB_USE_ALL_SYMBOLS
2021-03-31 19:10:39 +09:00
Yukihiro "Matz" Matsumoto
d5a4d5e393
codegen.c: s->ainfo should be zero along with OP_ENTER(0).
2021-03-31 17:20:14 +09:00
Yukihiro "Matz" Matsumoto
9f85c5e483
codegen.c: yield outside of method is now SyntaxError.
2021-03-31 15:57:43 +09:00
Yukihiro "Matz" Matsumoto
a7ca5a9b6e
backtrace.c: change missing-lineno to 0 for cosmetic reason; #5394
2021-03-31 15:41:19 +09:00
Yukihiro "Matz" Matsumoto
f2da051367
Merge pull request #5394 from fundamental/partial-backtrace
...
Add support for partial backtraces
2021-03-31 15:39:47 +09:00
Yukihiro "Matz" Matsumoto
b7c23a4a14
vm.c: resolve int and mrb_int mixture.
2021-03-31 11:46:21 +09:00
Yukihiro "Matz" Matsumoto
9038a1ca40
rational.c: add explicit cast from mrb_int to mrb_float.
2021-03-31 11:39:59 +09:00
Yukihiro "Matz" Matsumoto
590c1073fc
should have removed codegen error: prefix from the test.
2021-03-31 11:35:56 +09:00
Yukihiro "Matz" Matsumoto
cb8dabeb8c
codegen.c: remove codegen error: prefix from error messages.
2021-03-31 10:48:18 +09:00
Yukihiro "Matz" Matsumoto
4428ce6050
codegen.c: ainfo may be negative.
...
When argument information is not available. So it should not happen for
`yield` (error). In contrast, the error from `super` should be handled
in run time (ignored).
2021-03-31 10:48:17 +09:00
Yukihiro "Matz" Matsumoto
87f113e19d
Merge pull request #5395 from fundamental/mrbc-debug-cstruct
...
mrbc: Dump debug info with -g option
2021-03-31 10:48:01 +09:00
fundamental
c146e81c4a
Disable tests on backtraces w/ unknown line numbers
2021-03-30 20:26:10 -04:00
fundamental
5266f76346
mrbc: Dump debug info with -g option
...
Adds debug source information (line/file) when mrbc uses -g.
This commit results in usable backtraces for all gems when build_config
is setup with enable_debug.
2021-03-30 19:26:12 -04:00
fundamental
49f0da6821
Add support for partial backtraces
...
When debug information is omitted within ireps, show that a stack
frame existed rather than silently hiding it.
2021-03-30 19:16:15 -04:00
Yukihiro "Matz" Matsumoto
a963e29b67
src/vm.c: calling C function may raise global jumps; fix #5391
2021-03-29 17:28:32 +09:00
Yukihiro "Matz" Matsumoto
3c2186f050
Merge pull request #5392 from mruby/revert-5391-throw
...
Revert "Fix `SIGSEGV` with mruby-method + mruby-catch"
2021-03-29 17:27:17 +09:00
Yukihiro "Matz" Matsumoto
4d3a1198f8
Revert "Fix SIGSEGV with mruby-method + mruby-catch"
2021-03-29 17:26:42 +09:00
Yukihiro "Matz" Matsumoto
76e4de7486
Merge pull request #5391 from dearblue/throw
...
Fix `SIGSEGV` with mruby-method + mruby-catch
2021-03-29 17:11:21 +09:00
Yukihiro "Matz" Matsumoto
a5244b02c5
numeric.c: function renaming.
...
- `mrb_num_div_int(mrb,x,y)` -> `mrb_div_int(mrb,x,y)`
- `mrb_num_div_flo(mrb,x,y)` -> `mrb_div_flo(x,y)`
They are internal function not supposed to be used outside of the core.
2021-03-28 08:35:29 +09:00
dearblue
6c097c7113
Fix SIGSEGV with mruby-method + mruby-catch
...
Previously, the following code would cause a `SIGSEGV`.
```ruby
mm = method(:throw)
define_method(:throw, ->(*args) { mm.call(*args) })
catch { |tag| throw tag }
```
I think the reason is in the `mrb_yield_with_class()` function:
- Even if a C function is called, `CI_ACC_SKIP` is used
- `cipop()` is not done if globally jumping from a C function
2021-03-27 17:35:02 +09:00
Yukihiro "Matz" Matsumoto
c2f929ad0f
Move default Integer#/ from rational.c to complex.c.
2021-03-27 12:38:16 +09:00
Yukihiro "Matz" Matsumoto
01a8edea35
complex.rb: add test for arithmetic operators. [ci skip]
...
Tests for (`Float` or `Integer`) `op` `Complex`. Also added test
dependency to `mruby-rational` since `int_div` definition relies on
`Rational` when `MRB_USE_RATIONAL` is defined.
2021-03-26 17:20:25 +09:00
Yukihiro "Matz" Matsumoto
9492e389b8
rational.rb: add test for arithmetic operators.
...
Tests for (`Float` or `Integer`) `op` `Rational`.
2021-03-26 07:37:50 +09:00
Yukihiro "Matz" Matsumoto
6d89047637
rational.c: fix wrong funcall method in rational_mul.
2021-03-25 22:31:32 +09:00
Yukihiro "Matz" Matsumoto
0aff83dcdc
rational.c: inline mrb_rational_eq().
...
It removes non-static function, so that strictly saying, it's
an incompatible change. But the function was added recently and I am
sure no one uses it yet.
2021-03-25 08:28:41 +09:00
Yukihiro "Matz" Matsumoto
4a0c14e3bd
rational.c: implement Rational#<=> in C.
2021-03-24 19:49:20 +09:00
Yukihiro "Matz" Matsumoto
3a2075343c
rational.c: implement Rational#/ and #quo in C.
2021-03-24 19:21:38 +09:00
Yukihiro "Matz" Matsumoto
f05f6f4d11
rational.c: implement Rational#* in C.
2021-03-24 19:11:02 +09:00
Yukihiro "Matz" Matsumoto
9d058342a5
rational.c: implement Rational#- in C.
2021-03-24 19:01:58 +09:00
Yukihiro "Matz" Matsumoto
7a35b64251
fixup! rational.c: prepare utility function rat_to_flo().
2021-03-24 19:01:38 +09:00
Yukihiro "Matz" Matsumoto
ac4fe26fbb
rational.c: prepare utility function rat_to_flo().
...
This function takes `struct mrb_rational*` and returns converted
`mrb_float` value.
2021-03-24 18:59:35 +09:00
Yukihiro "Matz" Matsumoto
7ca7bee9b3
rational.c: implement Rational#+ in C.
2021-03-24 13:57:49 +09:00
Yukihiro "Matz" Matsumoto
5a4958af26
complex.c: use mrb_num_div_flo to avoid copying function.
...
This change relies that `mrb_num_div_flo` does not use `mrb` inside.
2021-03-24 13:56:08 +09:00
Yukihiro "Matz" Matsumoto
092bba64e7
rational.c: check integer overflow in rational_minus.
2021-03-24 13:28:01 +09:00
Yukihiro "Matz" Matsumoto
49f75703cc
complex.rb: unary plus (+@) to return self avoiding copying.
2021-03-24 11:06:48 +09:00
Yukihiro "Matz" Matsumoto
9ed212ef9e
complex.c: implement Complex addition and subtraction in C.
2021-03-24 11:06:14 +09:00
Yukihiro "Matz" Matsumoto
fa3ac351ff
complex.c: override float division to support Complex.
2021-03-24 11:04:58 +09:00
Yukihiro "Matz" Matsumoto
afb3c00e8c
Use div_flo (copy of mrb_num_div_flo) for float division.
2021-03-24 10:56:01 +09:00
Yukihiro "Matz" Matsumoto
ec456e5b18
Use mrb_num_div_flo for float division.
...
This function handles zero division properly. Also fixed bugs that multiply
numbers instead of division.
2021-03-24 10:54:24 +09:00
Yukihiro "Matz" Matsumoto
98799aa6b8
Fix infinite recursive call bugs in integer division.
2021-03-24 10:52:31 +09:00
Yukihiro "Matz" Matsumoto
3deb62d653
complex.c: implement Complex#/ and #quo in C.
2021-03-24 10:27:49 +09:00
Yukihiro "Matz" Matsumoto
5573707d7f
complex.c: implement Complex#* in C.
2021-03-24 09:53:39 +09:00
Yukihiro "Matz" Matsumoto
dc5d74dda8
rational.rb: avoid 'NaNi` representation.
...
Use `NaN*i` as CRuby does.
2021-03-24 09:52:15 +09:00
Yukihiro "Matz" Matsumoto
6e1a13360f
Add `timeout-minutes' to GitHub workflow. [ci skip]
2021-03-23 15:02:48 +09:00
Yukihiro "Matz" Matsumoto
30576bf3c6
Merge pull request #5387 from shuujii/use-global-defines-for-mruby-bin-debugger
...
Use global defines for `mruby-bin-debugger`
2021-03-22 12:43:58 +09:00
Yukihiro "Matz" Matsumoto
2e87d83d8d
Merge pull request #5388 from shuujii/reorganize-types-for-ObjectSpace.count_objects
...
Reorganize types for `ObjectSpace.count_objects`
2021-03-22 12:43:13 +09:00
Yukihiro "Matz" Matsumoto
7479ae307b
nintendo_switch.rb: remove trailing white spaces; #5386
2021-03-22 12:39:48 +09:00
KOBAYASHI Shuji
c0fb675526
Reorganize types for ObjectSpace.count_objects
...
#### Addition
- T_COMPLEX
- T_RATIONAL
#### Deletion
- T_FALSE
- T_FREE
- T_TRUE
- T_SYMBOL
- T_UNDEF
2021-03-22 12:24:42 +09:00
Yukihiro "Matz" Matsumoto
dc6e7d5414
Merge pull request #5386 from LanzaSchneider/master
...
Add example for cross-compiling to Nintendo Switch
2021-03-22 12:06:59 +09:00
Yukihiro "Matz" Matsumoto
cd047b2989
Merge pull request #5385 from shuujii/add-configuration-for-MinGW-cross-compilation
...
Add configuration for MinGW cross compilation [ci skip]
2021-03-22 12:05:03 +09:00
KOBAYASHI Shuji
00a13e22dd
Use global defines for mruby-bin-debugger
2021-03-22 12:02:26 +09:00
Yukihiro "Matz" Matsumoto
68cf8346cd
Use global defines for Rational and Complex.
2021-03-22 10:59:35 +09:00
Yukihiro "Matz" Matsumoto
384865997d
build: provide global defines by build.defines.
2021-03-22 10:58:47 +09:00
Yukihiro "Matz" Matsumoto
fbc629c56f
codegen.c: fix integer size warnings.
...
along with repeated calls of `strlen()`.
2021-03-22 10:57:36 +09:00
Lanza
ad09c39514
Add example for cross-compiling to Nintendo Switch
...
Cross Compiling configuration for the Nintendo Switch, it requires Nintendo SDK
2021-03-21 16:58:42 +08:00
KOBAYASHI Shuji
b2c3ab8f3f
Add configuration for MinGW cross compilation [ci skip]
...
With this cross compiler configuration, all tests for full-core gembox on
Windows on GitHub Actions were successful.
2021-03-21 16:43:04 +09:00
Yukihiro "Matz" Matsumoto
5764ff0740
command.rb: replace %w() to plain [].
2021-03-21 13:23:35 +09:00
Yukihiro "Matz" Matsumoto
73056aeb2b
complex.c: define Complex#== in C.
...
This change also fixes the error caused by `rational.c` that calls
`mrb_complex_eq()`, which had been undefined.
2021-03-21 08:30:52 +09:00
Yukihiro "Matz" Matsumoto
a6d4477a09
memsize.c: handle MRB_TT_RATIONAL and MRB_TT_COMPLEX.
2021-03-21 08:29:05 +09:00
Yukihiro "Matz" Matsumoto
e21f293de5
rational.c: fix MRB_TT_RATIONAL and MRB_TT_COMPLEX confusion.
2021-03-20 18:03:11 +09:00
Yukihiro "Matz" Matsumoto
98821d2725
random.c: fixed seed underflow bug.
...
`MRB_INT_MIN` does not have a corresponding positive value.
2021-03-20 14:40:54 +09:00
Yukihiro "Matz" Matsumoto
d3184e4a6d
complex.c: overhaul complex operators.
...
- define `MRB_TT_COMPLEX`
- change object structure (`struct RComplex`)
- add memory management for `MRB_TT_COMPLEX`
- avoid operator overloading as much as possible
- as a result, performance improved a log
- should work with and without `Rational` defined
2021-03-19 10:37:10 +09:00
Yukihiro "Matz" Matsumoto
08f9d5bab5
rational.c: overhaul rational operators.
...
- define `MRB_TT_RATIONAL`
- change object structure (`struct RRational`)
- add memory management for `MRB_TT_RATIONAL`
- avoid operator overloading as much as possible
- implement division overloading in C
- as a result, performance improved a lot
2021-03-19 10:37:10 +09:00
Yukihiro "Matz" Matsumoto
eb07030308
numeric.c: avoid integer overflow; close #5384
...
Since `mruby` does not have `Bignum`, `Float#divmod` could overflow, so
it will return `Float` values when the divided value does not fit in
`mrb_int`. This behavior will be changed when `Bignum` is introduced to
`mruby` in the future.
2021-03-19 07:15:05 +09:00
Yukihiro "Matz" Matsumoto
087e1719e4
Float#divmod with zero should cause ZeroDivisionError; #5384
2021-03-19 07:13:19 +09:00
Yukihiro "Matz" Matsumoto
0d96c1bb40
Merge branch 'dearblue-break-in-conf'
2021-03-18 22:48:11 +09:00
Yukihiro "Matz" Matsumoto
0e4f438eca
lib/mruby/build.rb: refactoring ensure clause; ref #5381
2021-03-18 22:47:00 +09:00
Yukihiro "Matz" Matsumoto
99f00de040
Merge branch 'break-in-conf' of https://github.com/dearblue/mruby into dearblue-break-in-conf
2021-03-18 22:34:31 +09:00
Yukihiro "Matz" Matsumoto
e5a3a37ae9
Merge pull request #5383 from shuujii/floatNAN-0-should-be-FloatNAN
...
`Float::NAN/0` should be `Float::NAN`; ref a0b3378b3
2021-03-18 20:54:56 +09:00
KOBAYASHI Shuji
6731f935cc
Float::NAN/0 should be Float::NAN; ref a0b3378b3
...
#### Before this patch:
```console
$ bin/mruby -e 'p(Float::NAN/0)'
Infinity
```
#### After this patch (same as Ruby):
```console
$ bin/mruby -e 'p(Float::NAN/0)'
NaN
```
2021-03-18 17:10:51 +09:00
Yukihiro "Matz" Matsumoto
a0b3378b36
numeric.c: float zero division should be infinity with sign kept; fix #5382
2021-03-18 15:24:31 +09:00
dearblue
199bbd73a3
Allow break in build_config.
...
If I break out of a block given to `MRuby::Build.new` with `break` or `throw`, I will get a seemingly inexplicable error because the `presym`-related initialization is not done.
```console
% cat build_config1.rb
MRuby::Build.new do
toolchain
break
end
% rake CONFIG=build_config1.rb
rake aborted!
external mrbc or mruby-bin-mrbc gem in current('host') or 'host' build is required
/var/tmp/mruby/lib/mruby/build.rb:332:in `mrbcfile'
/var/tmp/mruby/tasks/mrblib.rake:9:in `block in <top (required)>'
/var/tmp/mruby/lib/mruby/build.rb:18:in `instance_eval'
/var/tmp/mruby/lib/mruby/build.rb:18:in `block in each_target'
/var/tmp/mruby/lib/mruby/build.rb:17:in `each'
/var/tmp/mruby/lib/mruby/build.rb:17:in `each_target'
/var/tmp/mruby/tasks/mrblib.rake:1:in `<top (required)>'
/var/tmp/mruby/Rakefile:27:in `load'
/var/tmp/mruby/Rakefile:27:in `<top (required)>'
(See full trace by running task with --trace)
```
If a non-exceptional global jump occurs, it can be initialized by `ensure` to solve this problem.
2021-03-17 23:01:52 +09:00
Yukihiro "Matz" Matsumoto
c0d63ea09f
hash.c: Hash#shift to return nil when a hash is empty.
...
It used to be return the default value if available, but it should
ignore the default value for behavior consistency. CRuby will adopt
this behavior too in the future. [ruby-bugs:16908]
2021-03-17 15:14:23 +09:00
Yukihiro "Matz" Matsumoto
75ae3d3e23
range.c: fixed a begin-less ranges issue.
2021-03-17 09:48:27 +09:00
Yukihiro "Matz" Matsumoto
80f6b14ac1
AUTHORS: add the commit hash as of we counted.
2021-03-16 19:32:08 +09:00
Yukihiro "Matz" Matsumoto
f576482082
Merge pull request #5379 from shuujii/fix-typo-in-AUTHORS
...
Fix typo in `AUTHORS` [ci skip]
2021-03-15 12:41:33 +09:00
KOBAYASHI Shuji
def2ba56fd
Fix typo in AUTHORS [ci skip]
2021-03-15 12:29:30 +09:00
Yukihiro "Matz" Matsumoto
266eccdf91
AUTHOR: fixed typos.
2021-03-15 11:57:49 +09:00
Yukihiro "Matz" Matsumoto
d433a4e825
AUTHORS: add 2 new GitHub accounts.
2021-03-15 11:23:41 +09:00
Yukihiro "Matz" Matsumoto
a3e73de2ba
AUTHORS: re-renamed from AUTHOR.md.
2021-03-15 11:03:26 +09:00
Yukihiro "Matz" Matsumoto
5158b73ab4
AUTHORS.md: add GitHub accounts if available.
2021-03-15 10:32:55 +09:00
Yukihiro "Matz" Matsumoto
be2bdce17d
Remove mail addresses from AUTHORS.md.
2021-03-14 19:14:43 +09:00
Yukihiro "Matz" Matsumoto
bf524e7002
time.c: calendar clock should use CLOCK_REALTIME; 5e95f11
...
The issue was reported by @shuujii
2021-03-14 14:54:53 +09:00
Yukihiro "Matz" Matsumoto
f92a27f918
codegen.c: fix memory leak from new_litbn().
2021-03-13 09:33:16 +09:00
Yukihiro "Matz" Matsumoto
bf2110d206
codegen.c: need to preserve neg info.
2021-03-12 18:34:29 +09:00
Yukihiro "Matz" Matsumoto
01fdf03bce
codegen.c: fixed a typo.
2021-03-12 18:34:09 +09:00
Yukihiro "Matz" Matsumoto
b52078aa92
codegen.c: avoid integer comparison of different sign.
2021-03-12 16:26:51 +09:00
Yukihiro "Matz" Matsumoto
4ae5ae3535
codegen.c: no integer overflow error in codegen; close #5376
...
Add new pool value type `IREP_TT_BIGINT` and generate integer overflow
error in the VM. In the future, `mruby` will support `Bignum` for
integers bigger than `mrb_int` (probably using `mpz`).
2021-03-12 16:21:32 +09:00
Yukihiro "Matz" Matsumoto
84e27d3b51
Rename AUTHORS to AUTHORS.md.
2021-03-11 10:37:48 +09:00
Yukihiro "Matz" Matsumoto
c45fc556f5
AUTHORS: update according to git log commit entries.
2021-03-11 10:34:10 +09:00
Yukihiro "Matz" Matsumoto
14f531355f
Use relative path for files under doc directory [ci skip]
2021-03-10 18:39:21 +09:00
Yukihiro "Matz" Matsumoto
a62a07f40e
Merge pull request #5375 from artichoke/mrb_cmp-presym-op-maro
...
bug(presym): Fix mrb_cmp declaration of <=> symbol for funcall
2021-03-09 16:09:58 +09:00
Yukihiro "Matz" Matsumoto
adbdbbb779
Merge pull request #5378 from jbampton/update-node-version
...
chore: upgrade markdownlint GitHub Action node version to 14
2021-03-09 15:29:21 +09:00
Yukihiro "Matz" Matsumoto
405b5225ae
Merge pull request #5377 from jbampton/fix-grammar
...
chore: fix grammar
2021-03-09 15:03:35 +09:00
John Bampton
32261c96fa
chore: upgrade markdownlint GitHub Action node version to 14
...
Upgrade to markdownlint-cli version 0.27.1
2021-03-09 05:05:17 +10:00
John Bampton
3c1ce680a3
chore: fix grammar
2021-03-09 04:35:03 +10:00
Yukihiro "Matz" Matsumoto
f2b3529441
time.c: fix errors on Windows and macOS; ref #5354
...
`gmtime_r` detection logic was too strict.
2021-03-08 15:23:29 +09:00
Ryan Lopopolo
b199f6fc5a
bug(presym): Fix mrb_cmp declaration of <=> symbol for funcall
2021-03-07 21:29:11 -08:00
Yukihiro "Matz" Matsumoto
cb3a6dd168
ISO C99 doesn't support unnamed unions; fix #5354
2021-03-08 11:50:52 +09:00
Yukihiro "Matz" Matsumoto
833f556c70
Merge pull request #5374 from jbampton/fix-spelling
...
chore: fix spelling
2021-03-07 18:12:16 +09:00
John Bampton
15f7b0182d
chore: fix spelling
2021-03-07 04:58:15 +10:00
Yukihiro "Matz" Matsumoto
111e4e1ba8
Merge pull request #5373 from mruby/stable
...
Merge mruby 3.0.0
2021-03-05 17:36:12 +09:00
mimaki
0f45836b59
Update version and release date. (mruby 3.0.0 (2021-03-05))
2021-03-05 17:07:35 +09:00
Yukihiro "Matz" Matsumoto
a712755036
Merge pull request #5372 from shuujii/fix-load-64-bit-integer-from-mrb-format
...
Fix load 64-bit integer from mrb format; fix #5369
2021-03-05 14:39:42 +09:00
KOBAYASHI Shuji
cb10469dee
Fix load 64-bit integer from mrb format; fix #5369
2021-03-05 13:41:13 +09:00
Yukihiro "Matz" Matsumoto
25f604635d
Merge pull request #5371 from shuujii/update-minimal-build-configuration
...
Update minimal build configuration [ci skip]
2021-03-04 22:47:09 +09:00
Yukihiro "Matz" Matsumoto
32f66d4616
Merge pull request #5370 from shuujii/remove-unused-mrblib-init_mrblib.c
...
Remove unused `mrblib/init_mrblib.c`
2021-03-04 22:46:09 +09:00
KOBAYASHI Shuji
5296e0f5af
Update minimal build configuration [ci skip]
2021-03-04 22:18:26 +09:00
KOBAYASHI Shuji
c065002b51
Remove unused mrblib/init_mrblib.c
2021-03-04 21:54:00 +09:00
Yukihiro "Matz" Matsumoto
2f335e1a58
Fix mrb_pool_value to keep int64 on 32 bit platforms; fix #5366
2021-03-04 17:17:13 +09:00
Takashi Kokubun
f5d3d89ac2
Skip --depth=1 when it's locked
2021-03-04 15:50:13 +09:00
Yukihiro "Matz" Matsumoto
2be1a9c3c7
time.c: timespec_get() never fails.
2021-03-03 12:01:49 +09:00
Yukihiro "Matz" Matsumoto
42afafbd23
time.c: fixed wrong condition to include unistd.h.
2021-03-03 10:15:50 +09:00
Yukihiro "Matz" Matsumoto
79e2ad9a44
time.c: Windows does not have unistd.h.
2021-03-03 10:01:32 +09:00
Yukihiro "Matz" Matsumoto
5e95f11756
time.c: use clock_gettime() if possible.
2021-03-03 09:53:11 +09:00
Yukihiro "Matz" Matsumoto
0c631a4c08
time.c: adjust buffer size in mrb_time_asctime().
2021-03-03 09:52:26 +09:00
Yukihiro "Matz" Matsumoto
384209b8dd
time.c: fix compile errors in mrb_time_asctime().
2021-03-03 09:51:27 +09:00
Yukihiro "Matz" Matsumoto
187384124b
Merge pull request #5368 from jbampton/add-pre-commit-framework
...
feat: add pre-commit framework
2021-03-02 16:53:33 +09:00
Yukihiro "Matz" Matsumoto
55ac5dba86
dump.c: remove operator_table if MRB_NO_STDIO is defined.
2021-03-01 14:57:58 +09:00
Yukihiro "Matz" Matsumoto
37e206472a
minimal.rb: add minimal configuration; ref #1225
2021-03-01 14:54:29 +09:00
Yukihiro "Matz" Matsumoto
f3507818e7
binding-core.c: add cast to remove warnings; ref #5362
2021-03-01 11:38:30 +09:00
Yukihiro "Matz" Matsumoto
935a135553
time.c: fixed a bug on no builtin overflow (e.g. VC).
2021-03-01 11:35:15 +09:00
John Bampton
1c9b1bfeb7
feat: add pre-commit framework
2021-03-01 10:06:17 +10:00
Yukihiro "Matz" Matsumoto
65add8c650
time.c: avoid using mrb_int_{add,sub}_overflow().
...
The size and signedness of `mrb_int` and `time_t` may differ.
2021-03-01 07:58:14 +09:00
Yukihiro "Matz" Matsumoto
eb68adafa1
Merge pull request #5367 from dearblue/libedit
...
Support libedit on mirb for FreeBSD
2021-02-28 20:26:33 +09:00
Yukihiro "Matz" Matsumoto
03eb3b5e87
time.c: check overflow in addition and subtraction of Time.
2021-02-28 19:33:57 +09:00
Yukihiro "Matz" Matsumoto
8684abd697
Remove periods from error messages according to the convention.
2021-02-28 19:32:52 +09:00
Yukihiro "Matz" Matsumoto
b61766473b
time.c: change RuntimeError to ArgumentError.
2021-02-28 19:26:40 +09:00
dearblue
15a7d5be3d
Support libedit on mirb for FreeBSD
2021-02-28 16:23:37 +09:00
Yukihiro "Matz" Matsumoto
4dbbe14117
state.c: remove stdint.h inclusion.
...
Fixes C++03 compilation.
2021-02-27 16:40:05 +09:00
Yukihiro "Matz" Matsumoto
3da372b30f
pack.c: add more checks for pack_pack().
2021-02-27 12:00:24 +09:00
Yukihiro "Matz" Matsumoto
30b1287df5
state.c: check irep reference count overflow.
2021-02-26 22:16:07 +09:00
Yukihiro "Matz" Matsumoto
5d37160455
Use MRB_SYM() more extensively.
2021-02-26 15:05:55 +09:00
Yukihiro "Matz" Matsumoto
192f3df9a1
Merge pull request #5362 from dearblue/binding
...
Binding
2021-02-25 21:15:24 +09:00
Yukihiro "Matz" Matsumoto
f1c2096f8e
parse.y: endless_method_name should allow ==.
...
e.g. `def ==(v) = true`. The issue is reported by @shuujii
2021-02-24 22:20:16 +09:00
Yukihiro "Matz" Matsumoto
386b53e6d9
parse.y: upgrade endless def syntax.
...
- prohibit defining setter method
- allow endless def without parentheses
2021-02-24 16:56:55 +09:00
Yukihiro "Matz" Matsumoto
a9ebd4703f
Merge pull request #5364 from mruby/dependabot/github_actions/actions/setup-node-v2.1.5
...
Bump actions/setup-node from v2.1.4 to v2.1.5
2021-02-23 16:43:37 +09:00
dependabot[bot]
09ebfc43a6
Bump actions/setup-node from v2.1.4 to v2.1.5
...
Bumps [actions/setup-node](https://github.com/actions/setup-node ) from v2.1.4 to v2.1.5.
- [Release notes](https://github.com/actions/setup-node/releases )
- [Commits](https://github.com/actions/setup-node/compare/v2.1.4...46071b5c7a2e0c34e49c3cb8a0e792e86e18d5ea )
Signed-off-by: dependabot[bot] <support@github.com >
2021-02-23 07:17:23 +00:00
dearblue
927615e1f0
Added other methods for Binding
...
- Added to `mruby-binding-core`
- `Binding#local_variable_defined?`
- `Binding#local_variable_get`
- `Binding#local_variable_set`
- `Binding#local_variables`
- `Binding#receiver`
- `Binding#source_location`
- `Binding#inspect`
- Added to `mruby-proc-binding`
- `Proc#binding`
The reason for separating `Proc#binding` is that core-mrbgems has a method that returns a closure object to minimize possible problems with being able to manipulate internal variables.
By separating it as different mrbgem, each user can judge this problem and incorporate it arbitrarily.
2021-02-22 23:32:43 +09:00
dearblue
792f6ac670
Adjustment of the current HEAD and bindings, and separation
...
Make changes to make `Binding` work.
At the same time, it separates `Binding#eval`, which depends on `mruby-eval`, from `mruby-binding-core`.
2021-02-22 23:32:18 +09:00
dearblue
935ffa46a3
Change mruby-binding to mruby-binding-core
2021-02-22 22:15:46 +09:00
dearblue
297c5ac598
Merge branch 'binding' of https://github.com/ksss/mruby into HEAD
2021-02-22 22:14:46 +09:00
Yukihiro "Matz" Matsumoto
d64c7330bc
print.c: fix a compilation errors with MRB_NO_STDIO; fix #5361
2021-02-22 13:39:37 +09:00
Yukihiro "Matz" Matsumoto
60f9028612
Merge pull request #5360 from dearblue/opcode
...
Updated `doc/opcode.md` to match `include/mruby/ops.h` [ci skip]
2021-02-21 20:26:28 +09:00
dearblue
07874a3d29
Updated doc/opcode.md to match include/mruby/ops.h [ci skip]
2021-02-21 19:30:19 +09:00
Yukihiro "Matz" Matsumoto
6b8393081a
Merge pull request #5359 from dearblue/warn
...
Comment out `warn` used in the `Array#fetch` method
2021-02-20 20:56:30 +09:00
dearblue
7ef4e54370
Comment out warn used in the Array#fetch method
...
I get an error because the current mruby does not have a `Kernel#warn` method.
But the warning itself is useful and I'll just comment it out in case it's implemented in the future.
2021-02-20 18:19:00 +09:00
Yukihiro "Matz" Matsumoto
0d7f5b8216
metaprog.c: fix a methods() bug with false argument; fix #5351
2021-02-20 14:56:55 +09:00
Yukihiro "Matz" Matsumoto
8ed15c078b
metaprog.c: remove unused argument from a private function.
2021-02-20 13:20:14 +09:00
Yukihiro "Matz" Matsumoto
16fe040479
mruby/value.h: MRB_TT_CPTR is immediate with MRB_NO_BOXING.
...
The issue is reported by @shuujii.
2021-02-19 23:23:18 +09:00
Yukihiro "Matz" Matsumoto
e5559184e0
Fix mrb_immediate_p() definition for MRB_NO_BOXING; ref #5352
2021-02-19 21:02:31 +09:00
Yukihiro "Matz" Matsumoto
787487b16d
Check MRB_TT_* before object allocation; ref #5352
2021-02-19 15:36:41 +09:00
Yukihiro "Matz" Matsumoto
ce0a381406
Merge pull request #5352 from shuujii/fix-type-tag-that-set-to-NilClass-and-FalseClass
...
Fix type tag that set to `NilClass` and `FalseClass`
2021-02-18 21:51:07 +09:00
Yukihiro "Matz" Matsumoto
bdf2cf005e
Merge pull request #5357 from k0kubun/lock-depth
...
Skip --depth=1 when it's locked
2021-02-17 15:23:24 +09:00
Takashi Kokubun
6ac79a2c44
Skip --depth=1 when it's locked
2021-02-16 20:56:13 -08:00
Yukihiro "Matz" Matsumoto
cb43dda009
Merge pull request #5347 from shuujii/add--s-option-to-mrbc-for-make-variable-static
...
Add `-s` option to `mrbc` for make variable static
2021-02-17 12:43:45 +09:00
Yukihiro "Matz" Matsumoto
dee9168882
Merge pull request #5356 from mruby/dependabot/github_actions/actions/upload-artifact-v2.2.2
...
Bump actions/upload-artifact from v1 to v2.2.2
2021-02-16 13:54:24 +09:00
Yukihiro "Matz" Matsumoto
cb9225bcbf
Merge pull request #5355 from mruby/dependabot/github_actions/actions/cache-v2.1.4
...
Bump actions/cache from v2 to v2.1.4
2021-02-16 13:54:00 +09:00
dependabot[bot]
cf2fce93ec
Bump actions/upload-artifact from v1 to v2.2.2
...
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact ) from v1 to v2.2.2.
- [Release notes](https://github.com/actions/upload-artifact/releases )
- [Commits](https://github.com/actions/upload-artifact/compare/v1...e448a9b857ee2131e752b06002bf0e093c65e571 )
Signed-off-by: dependabot[bot] <support@github.com >
2021-02-16 04:23:03 +00:00
dependabot[bot]
1c8e1e20e4
Bump actions/cache from v2 to v2.1.4
...
Bumps [actions/cache](https://github.com/actions/cache ) from v2 to v2.1.4.
- [Release notes](https://github.com/actions/cache/releases )
- [Commits](https://github.com/actions/cache/compare/v2...26968a09c0ea4f3e233fdddbafd1166051a095f6 )
Signed-off-by: dependabot[bot] <support@github.com >
2021-02-16 04:23:03 +00:00
Yukihiro "Matz" Matsumoto
e2d4bedb7b
Merge pull request #5343 from jbampton/add-dependabot-config
...
feat: add Dependabot config file
2021-02-16 13:08:39 +09:00
Yukihiro "Matz" Matsumoto
d6164817f5
Use full-core gembox for clang-asan configuration.
...
For better coverage.
2021-02-16 12:55:19 +09:00
Yukihiro "Matz" Matsumoto
7470337a82
Update URL explaining alignment issue; close #5344
2021-02-16 12:50:31 +09:00
Yukihiro "Matz" Matsumoto
61370ca98c
Merge pull request #5350 from shuujii/refine-checking-for-trailing-whitespace
...
Refine checking for trailing whitespace [skip travis][skip appveyor]
2021-02-15 13:49:52 +09:00
Yukihiro "Matz" Matsumoto
2725755bc5
Merge pull request #5349 from shuujii/remove-trailing-tab-in-build_config-dreamcast_shelf.rb
...
Remove trailing tab in `build_config/dreamcast_shelf.rb` [ci skip]
2021-02-15 10:54:29 +09:00
Yukihiro "Matz" Matsumoto
330dd3f450
Merge pull request #5353 from dearblue/editorconfig
...
Introduce EditorConfig [skip ci]
2021-02-15 10:53:48 +09:00
dearblue
9b38dddc61
Introduce EditorConfig [skip ci]
2021-02-14 22:19:20 +09:00
KOBAYASHI Shuji
68daa3bf96
Fix type tag that set to NilClass and FalseClass
2021-02-14 20:55:46 +09:00
Yukihiro "Matz" Matsumoto
3217febfe9
Merge pull request #5348 from dearblue/optable
...
Place optable in ROM
2021-02-14 17:49:00 +09:00
KOBAYASHI Shuji
4203e574e3
Refine checking for trailing whitespace [skip travis][skip appveyor]
...
* Include tabs in checking.
* Use `git grep` to avoid including `.git` directory.
* Avoid running `grep` multiple times.
2021-02-14 16:07:04 +09:00
KOBAYASHI Shuji
29dfadf0de
Remove trailing tab in build_config/dreamcast_shelf.rb [ci skip]
2021-02-14 16:02:02 +09:00
dearblue
297df70bc1
Place optable in ROM
2021-02-14 13:53:51 +09:00
KOBAYASHI Shuji
a6a76d8fd2
Add -s option to mrbc for make variable static
2021-02-14 11:55:53 +09:00
Yukihiro "Matz" Matsumoto
c3ec5861ac
Merge pull request #5346 from jbampton/clean-up-linters
...
refactor: add the spell checker Action to the Lint Action file
2021-02-13 18:25:27 +09:00
John Bampton
c263aec748
refactor: add the spell checker Action to the Lint Action file
...
Order jobs in workflow.
2021-02-13 18:58:48 +10:00
Yukihiro "Matz" Matsumoto
da6c4ed169
Merge pull request #5345 from jbampton/fix-missing-https-on-links
...
chore: fix missing HTTPS on links
2021-02-13 17:21:12 +09:00
John Bampton
6204244b41
chore: fix missing HTTPS on links
2021-02-13 18:17:47 +10:00
Yukihiro "Matz" Matsumoto
d04c651405
Merge pull request #5342 from jbampton/fix-spelling
...
chore: fix spelling
2021-02-13 16:38:02 +09:00
John Bampton
d52da3fe77
feat: add Dependabot config file
...
Set for GitHub Actions to check for update everyday.
When you add or update the dependabot.yml file, this triggers an immediate check for version updates. Any options that also affect security updates are used the next time a security alert triggers a pull request for a security update.
https://docs.github.com/en/github/administering-a-repository/configuration-options-for-dependency-updates
2021-02-13 17:37:30 +10:00
John Bampton
be40e9c783
chore: fix spelling
...
Normally a single spell checker can't find all the mistakes or check all types of code.
These mistakes were found by another spell checker inside my editor with a more manual sift / find.
2021-02-13 17:21:17 +10:00
Yukihiro "Matz" Matsumoto
9a9c95986a
Merge pull request #5341 from jbampton/check-for-trailing-whitespace
...
feat(CI): check for trailing whitespace
2021-02-13 15:46:51 +09:00
John Bampton
d55a74c418
feat(CI): check for trailing whitespace
...
Run on pull request only.
Use a shell script to check for trailing whitespace in all files.
Fail if trailing whitespace is found.
2021-02-13 16:37:46 +10:00
Yukihiro "Matz" Matsumoto
8e01fc8933
Merge pull request #5340 from jbampton/use-certified-actions
...
refactor: only use certified GitHub Actions to increase security
2021-02-13 15:19:34 +09:00
John Bampton
4c7ecbb8a6
refactor: only use certified GitHub Actions to increase security
...
Official -> "The individual jobs in a workflow can interact with (and compromise) other jobs. For example, a job querying the environment variables used by a later job, writing files to a shared directory that a later job processes, or even more directly by interacting with the Docker socket and inspecting other running containers and executing commands in them.
This means that a compromise of a single action within a workflow can be very significant, as that compromised action would have access to all secrets configured on your repository, and can use the GITHUB_TOKEN to write to the repository. Consequently, there is significant risk in sourcing actions from third-party repositories on GitHub. "
https://docs.github.com/en/actions/learn-github-actions/security-hardening-for-github-actions#using-third-party-actions
2021-02-13 16:13:30 +10:00
Yukihiro "Matz" Matsumoto
acdd939d80
Merge pull request #5339 from shuujii/update-compile-prerequisites-in-doc-guides-compile.md
...
Update compile prerequisites in `doc/guides/compile.md` [ci skip]
2021-02-13 14:17:58 +09:00
Yukihiro "Matz" Matsumoto
94fb86f89b
parse.y: string buffer (tokbuf) can overflow.
...
Check if `esclen` is smaller than `len` (original string length).
2021-02-13 14:06:37 +09:00
KOBAYASHI Shuji
d470163b22
Update compile prerequisites in doc/guides/compile.md [ci skip]
...
Bison and gperf are optional.
2021-02-13 11:53:52 +09:00
Yukihiro "Matz" Matsumoto
adb50df71a
Update GitHub Actions.
...
- Remove Ubuntu-16.04
- Add Ubuntu-20.04 {gcc,clang}
2021-02-12 21:14:06 +09:00
Yukihiro "Matz" Matsumoto
5ba37db981
Merge pull request #5336 from shuujii/fix-build-mruby-catch-gem-without-presym
...
Fix build `mruby-catch` gem without presym
2021-02-12 21:11:59 +09:00
Yukihiro "Matz" Matsumoto
d3fbac4d53
Merge pull request #5335 from shuujii/add-UncaughtThrowError-tagvalue-for-Ruby-compatibility
...
Add `UncaughtThrowError#{tag,value}` for Ruby compatibility
2021-02-12 21:10:53 +09:00
Yukihiro "Matz" Matsumoto
5f71e0e754
Merge pull request #5337 from shuujii/remove-skip-ci-hack-to-GitHub-Actions
...
Remove "skip ci" hack to GitHub Actions [skip travis][skip appveyor]
2021-02-12 21:09:07 +09:00
KOBAYASHI Shuji
28729deed6
Remove "skip ci" hack to GitHub Actions [skip travis][skip appveyor]
...
GitHub Actions now supports "skip ci" natively:
https://github.blog/changelog/2021-02-08-github-actions-skip-pull-request-and-push-workflows-with-skip-ci/
2021-02-12 19:44:41 +09:00
KOBAYASHI Shuji
8ba7be0999
Fix build mruby-catch gem without presym
2021-02-12 19:19:32 +09:00
KOBAYASHI Shuji
955464ca3c
Add UncaughtThrowError#{tag,value} for Ruby compatibility
2021-02-12 19:09:18 +09:00
Yukihiro "Matz" Matsumoto
2af8e16cc6
include/mruby/array.h: ARY_LEN() should return mrb_int.
...
It used to return `mrb_ssize` but its size may differ from `mrb_int`,
e.g. `MRB_INT64` on `MRB_32BIT` architecture.
2021-02-12 16:57:33 +09:00
Yukihiro "Matz" Matsumoto
31051fd656
doc/mruby3.md: use relative path.
2021-02-12 15:39:19 +09:00
Yukihiro "Matz" Matsumoto
ca7cac8b31
Merge pull request #5334 from shuujii/avoid-possibility-of-reading-uninitialized-areas-in-h_check_modified
...
Avoid possibility of reading uninitialized areas in `h_check_modified()`
2021-02-12 15:38:59 +09:00
KOBAYASHI Shuji
453296a729
Avoid possibility of reading uninitialized areas in h_check_modified()
...
In `h_check_modified()`, in the case of `MRB_NO_BOXING`, `ht_ea()` or
`ht_ea_capa()` for AR may read uninitialized area. Therefore, do not use
those macros for AR in `MRB_NO_BOXING` (but in the case of `MRB_64BIT`,
`ht_ea_capa()` is the same as `ar_ea_capa()`, so use it).
fix #5332
2021-02-12 15:00:06 +09:00
Yukihiro "Matz" Matsumoto
22ffc1108b
src/print.c: stop warning with MRB_NO_STDIO.
2021-02-12 11:14:25 +09:00
Yukihiro "Matz" Matsumoto
793fbab7d5
Rename mrb_sleep.c to sleep.c in mruby-sleep gem.
2021-02-12 11:11:10 +09:00
Yukihiro "Matz" Matsumoto
a96bd02127
Update docs/guides/mrbgems.md; ref #5210
...
Binary gems description added, along with a few cosmetic changes.
2021-02-12 11:07:45 +09:00
Yukihiro "Matz" Matsumoto
5c130e8e7b
Do not collect linker options from binary gems; close #5210
...
Binary gems are mrbgems that set `spec.bins` in their `mrbgem.rake`,
and usually their names are prefixed with `mruby-bin-`.
2021-02-12 10:33:53 +09:00
Yukihiro "Matz" Matsumoto
69f8a52866
Update docs/guides/compile.md.
...
Especially description regarding the build process and `build` directory
structures, along with some typo fixes and cosmetic changes.
2021-02-12 10:27:10 +09:00
Yukihiro "Matz" Matsumoto
0db6e3eb6f
Rename mruby-catch.c to catch.c; ref #5328
2021-02-12 10:09:19 +09:00
Yukihiro "Matz" Matsumoto
d178e147f5
Merge pull request #5333 from shuujii/fix-heap-buffer-overflow-for-small-Hash-HT-in-Hash-rehash
...
Fix heap-buffer-overflow for small `Hash` (HT) in `Hash#rehash`
2021-02-11 08:26:33 +09:00
Yukihiro "Matz" Matsumoto
5735d7c2fd
Merge branch 'dearblue-mruby-catch'
2021-02-10 20:11:40 +09:00
Yukihiro "Matz" Matsumoto
c7809ca025
Refactor mruby-catch; ref #5328
...
- Move `#catch` definition to `mruby-catch.c` to avoid tweaking
- Remove `#__preserve_catch_method`
- Implement whole `#throw` method in C
2021-02-10 20:09:00 +09:00
KOBAYASHI Shuji
28eb6271ba
Fix heap-buffer-overflow for small Hash (HT) in Hash#rehash
...
### Example
##### example.rb
```ruby
h = {}
(1..17).each{h[_1] = _1}
(1..16).each{h.delete(_1)}
h.rehash
```
##### ASAN report
```console
$ bin/mruby example.rb
==52587==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x602000006998 at pc 0x55a29cddf96b bp 0x7fff7b1b1720 sp 0x7fff7b1b1710
READ of size 4 at 0x602000006998 thread T0
#0 0x55a29cddf96a in ib_it_next /mruby/src/hash.c:639
#1 0x55a29cde2ca2 in ht_rehash /mruby/src/hash.c:900
#2 0x55a29cde379f in h_rehash /mruby/src/hash.c:996
#3 0x55a29cde7f3d in mrb_hash_rehash /mruby/src/hash.c:1735
#4 0x55a29ce77b62 in mrb_vm_exec /mruby/src/vm.c:1451
#5 0x55a29ce5fa88 in mrb_vm_run /mruby/src/vm.c:981
#6 0x55a29ceb87e1 in mrb_top_run /mruby/src/vm.c:2874
#7 0x55a29cf36bdf in mrb_load_exec mrbgems/mruby-compiler/core/parse.y:6805
#8 0x55a29cf36f25 in mrb_load_detect_file_cxt mrbgems/mruby-compiler/core/parse.y:6848
#9 0x55a29cdba0a2 in main /mruby/mrbgems/mruby-bin-mruby/tools/mruby/mruby.c:347
#10 0x7f24ef43b0b2 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x270b2)
#11 0x55a29cdb4a6d in _start (/mruby/bin/mruby+0x2a3a6d)
0x602000006998 is located 0 bytes to the right of 8-byte region [0x602000006990,0x602000006998)
allocated by thread T0 here:
#0 0x7f24f01cfffe in __interceptor_realloc (/lib/x86_64-linux-gnu/libasan.so.5+0x10dffe)
#1 0x55a29ceb9440 in mrb_default_allocf /mruby/src/state.c:68
#2 0x55a29cdba747 in mrb_realloc_simple /mruby/src/gc.c:228
#3 0x55a29cdba928 in mrb_realloc /mruby/src/gc.c:242
#4 0x55a29cde12e5 in ht_init /mruby/src/hash.c:749
#5 0x55a29cde2b8e in ht_rehash /mruby/src/hash.c:897
#6 0x55a29cde379f in h_rehash /mruby/src/hash.c:996
#7 0x55a29cde7f3d in mrb_hash_rehash /mruby/src/hash.c:1735
#8 0x55a29ce77b62 in mrb_vm_exec /mruby/src/vm.c:1451
#9 0x55a29ce5fa88 in mrb_vm_run /mruby/src/vm.c:981
#10 0x55a29ceb87e1 in mrb_top_run /mruby/src/vm.c:2874
#11 0x55a29cf36bdf in mrb_load_exec mrbgems/mruby-compiler/core/parse.y:6805
#12 0x55a29cf36f25 in mrb_load_detect_file_cxt mrbgems/mruby-compiler/core/parse.y:6848
#13 0x55a29cdba0a2 in main /mruby/mrbgems/mruby-bin-mruby/tools/mruby/mruby.c:347
#14 0x7f24ef43b0b2 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x270b2)
```
2021-02-10 20:03:34 +09:00
Yukihiro "Matz" Matsumoto
f0e25121fd
Merge branch 'mruby-catch' of https://github.com/dearblue/mruby into dearblue-mruby-catch
2021-02-10 15:43:24 +09:00
Yukihiro "Matz" Matsumoto
20342714ea
Upgrade supported Ruby version to 2.5.
...
Ruby 2.5 is the oldest maintained version.
2021-02-09 22:29:42 +09:00
Yukihiro "Matz" Matsumoto
aa5b7fbd80
i_gcd() does not work for MRB_INT_MIN.
2021-02-08 21:18:50 +09:00
Yukihiro "Matz" Matsumoto
db1172b48c
Allow the case MRB_32BIT and MRB_NO_BOXING and MRB_USE_FLOAT32; #4382
2021-02-08 17:46:38 +09:00
Yukihiro "Matz" Matsumoto
bc21278a7c
Merge pull request #5331 from shuujii/explicit-top-level-task-to-clarify-in-tasks-test.rake
...
Explicit top level task to clarify in `tasks/test.rake`
2021-02-08 07:19:05 +09:00
KOBAYASHI Shuji
3cf0e85ed7
Explicit top level task to clarify in tasks/test.rake
2021-02-07 19:11:54 +09:00
Yukihiro "Matz" Matsumoto
530afca2d7
Move F(x) definition inside of #ifdef; fix #5330
2021-02-07 15:28:23 +09:00
Yukihiro "Matz" Matsumoto
1cc20978cf
Enlarge tolerance limit for float32; close #5329
...
Along with some refactoring on `mruby-math` tests.
2021-02-07 14:56:34 +09:00
Yukihiro "Matz" Matsumoto
3252518a3c
Fix tests to work with MRB_USE_FLOAT32; fix #5329
2021-02-07 14:55:45 +09:00
Yukihiro "Matz" Matsumoto
70b7ebd72f
Add host-f32 config to test MRB_USE_FLOAT32; ref #5329
2021-02-07 14:54:01 +09:00
dearblue
232e07ad61
Reimplement mruby-catch; ref #5321
...
When there is a corresponding tag, the `RBreak` object is used to make a global jump.
Like CRuby, it can't be caught by `rescue`.
It is also the same as CRuby that it can be canceled in the middle by `ensure`.
### How to find the corresponding tag with `throw`
The called `catch` method remains in the call stack, and the tag also remains in the stack at that time.
So it is possible to find the called location by searching the two.
Note that no method can be given to the `proc` object specified in `RBreak`.
Therefore, inside the `catch` method, the argument block is called in a seemingly meaningless closure.
Also, as a countermeasure against `alias` etc., the `proc` object, which is the body of the `catch` method, is saved when mrbgem is initialized.
2021-02-06 21:41:08 +09:00
Yukihiro "Matz" Matsumoto
ef8f475722
MinGW does not need MSVC hack.
...
Both MinGW and MSVC provide _WIN32 macro.
2021-02-06 19:30:59 +09:00
Yukihiro "Matz" Matsumoto
c6c632cf97
Merge pull request #5325 from dearblue/c++-exc.2
...
`compile_as_cxx` should generate a path under` conf.build_dir`
2021-02-06 18:36:25 +09:00
Yukihiro "Matz" Matsumoto
94d8dfed66
Merge pull request #5327 from dearblue/notest
...
Ignore if `conf.enable_test` does not exist
2021-02-06 18:28:53 +09:00
Yukihiro "Matz" Matsumoto
6d0b5102cf
Merge pull request #5326 from dearblue/struct
...
No need to check class definition
2021-02-06 18:25:49 +09:00
dearblue
9d1a659bc7
Ignore if conf.enable_test does not exist
...
Because if the configuration file didn't contain any `conf.enable_test`, `rake test` would report an exception and exit.
```console
% cat my_config.rb
MRuby::Build.new { toolchain }
% rake MRUBY_CONFIG=my_config.rb test
...SNIP...
rake aborted!
NoMethodError: undefined method `invoke' for nil:NilClass
/var/tmp/mruby/tasks/test.rake:24:in `block (3 levels) in <top (required)>'
Tasks: TOP => test => test:build => test:build:lib
(See full trace by running task with --trace)
```
2021-02-06 18:09:27 +09:00
dearblue
0f8d3d8777
No need to check class definition
...
Because now the `Struct` class is always defined when this file is included.
2021-02-06 18:05:05 +09:00
dearblue
e0d2f4e0ae
compile_as_cxx should generate a path under conf.build_dir
...
If the current directory is different from `MRUBY_ROOT` and it has` conf.build_dir` and `conf.enable_cxx_exception` set, it was generating a pathname outside of` build_dir`.
As a result, in some cases files unrelated to mruby could be linked.
```console
% pwd
/tmp/mruby/1/2/3/4/5/6
% mruby_dir=/tmp/mruby/a/b/c/d/mruby
% cat my_config.rb
MRuby::Build.new("host", "build/to/custom/directory") do
toolchain
enable_cxx_exception
end
% rake MRUBY_CONFIG=my_config.rb -f $mruby_dir/Rakefile > logs
% grep CXX logs
CXX a/b/c/d/mruby/src/error-cxx.cxx -> a/b/c/d/mruby/src/error-cxx.o
CXX a/b/c/d/mruby/src/gc-cxx.cxx -> a/b/c/d/mruby/src/gc-cxx.o
CXX a/b/c/d/mruby/src/vm-cxx.cxx -> a/b/c/d/mruby/src/vm-cxx.o
CXX a/b/c/d/mruby/mrbgems/mruby-compiler/core/codegen-cxx.cxx -> a/b/c/d/mruby/mrbgems/mruby-compiler/core/codegen-cxx.o
CXX a/b/c/d/mruby/mrbgems/mruby-compiler/core/y.tab-cxx.cxx -> a/b/c/d/mruby/mrbgems/mruby-compiler/core/y.tab-cxx.o
CXX ../a/b/c/d/mruby/src/error-cxx.cxx -> ../a/b/c/d/mruby/src/error-cxx.o
CXX ../a/b/c/d/mruby/src/gc-cxx.cxx -> ../a/b/c/d/mruby/src/gc-cxx.o
CXX ../a/b/c/d/mruby/src/vm-cxx.cxx -> ../a/b/c/d/mruby/src/vm-cxx.o
```
2021-02-06 17:27:23 +09:00
Yukihiro "Matz" Matsumoto
88113df098
Fixed compile errors in cmath.c in MinGW and macOS.
2021-02-06 17:00:03 +09:00
Yukihiro "Matz" Matsumoto
2a69f5105c
Merge pull request #5324 from dearblue/c++-exc
...
Exclude `<build-dir>/mrbc/**/*` from rake target rules
2021-02-06 16:58:27 +09:00
Yukihiro "Matz" Matsumoto
0bd01c545f
Merge pull request #5323 from shuujii/make-the-argument-of-Kernel-catch-optional-as-Ruby-does
...
Make the argument of `Kernel#catch` optional as Ruby does
2021-02-06 16:57:36 +09:00
dearblue
5c3b5f4221
Exclude <build-dir>/mrbc/**/* from rake target rules
...
Prevents the auto-generated mrbc target source code from being compiled under host conditions.
This is because a build error occurred when `conf.enable_cxx_exception` was set.
2021-02-06 16:37:15 +09:00
KOBAYASHI Shuji
1ea4c51245
Make the argument of Kernel#catch optional as Ruby does
...
Also implement the following changes.
* Add tests
* Use `Object#equal?` to compare tags for Ruby compatibility
* Use `attr_reader`
2021-02-06 13:28:47 +09:00
Yukihiro "Matz" Matsumoto
4bf4650321
Avoid implicit conversion from mrb_float to mrb_complex.
2021-02-06 00:50:13 +09:00
Yukihiro "Matz" Matsumoto
8945afe38e
Merge pull request #5322 from shuujii/fix-message-of-ThrowCatchJump-in-mruby-catch-gem
...
Fix message of `ThrowCatchJump` in `mruby-catch` gem
2021-02-06 00:42:51 +09:00
Yukihiro "Matz" Matsumoto
8ecd38d648
Reimplement complex division.
2021-02-06 00:40:18 +09:00
Yukihiro "Matz" Matsumoto
ea0737ecfd
Define M_E for some platforms.
2021-02-06 00:39:53 +09:00
Yukihiro "Matz" Matsumoto
a6994f51c8
Update mruby-cmath to support MSVC complex.
...
* Use `_Complex` instead of `complex` (MSYS2 do not support `complex`)
* Use `_Dcomplex` instead of `_Complex` on MSCV
* Avoid operator division and multiplication of complex
2021-02-06 00:08:25 +09:00
KOBAYASHI Shuji
80965fe2d7
Fix message of ThrowCatchJump in mruby-catch gem
...
### Example
```ruby
begin
throw 1
rescue Exception => e
puts e.message
end
```
#### Before this patch:
```console
$ bin/mruby example.rb
uncaught throw :1
```
#### After this patch (same as Ruby):
```console
$ bin/mruby example.rb
uncaught throw 1
```
2021-02-05 23:14:58 +09:00
Yukihiro "Matz" Matsumoto
a0050541d1
Add mruby-cmath gem to the core.
...
This gem uses C99 `_Complex` features. You need a C compiler that
supports `_Complex` to enable this gem. All `gcc`, `clang`, `VC` support
`_Complex` so there should not be a big problem.
2021-02-05 22:27:27 +09:00
Yukihiro "Matz" Matsumoto
d898002096
Add a few new API for complex access.
2021-02-05 21:54:49 +09:00
Yukihiro "Matz" Matsumoto
c6149370b0
Refactor method overriding.
...
* Use `class_eval` instead of `instance_eval`.
* Reduce `class_eval` calls
* define `Numeric#i`
* undefine `Complex#i`
2021-02-05 21:54:11 +09:00
Yukihiro "Matz" Matsumoto
7ce03e32b7
Add Complex#to_c method.
2021-02-05 21:42:42 +09:00
Yukihiro "Matz" Matsumoto
ee3017496b
instance_eval for classes and modules should behave as class_eval.
2021-02-05 21:39:44 +09:00
KOBAYASHI Shuji
5e814ea912
Define MRB_NO_GEMS if disable_libmruby is specified
2021-02-05 18:52:00 +09:00
Yukihiro "Matz" Matsumoto
043fe9d9f5
Merge pull request #5319 from shuujii/check-if-.pi-build-rules-are-defined
...
Check if `.pi` build rules are defined
2021-02-04 22:19:19 +09:00
KOBAYASHI Shuji
67a28b56ab
Check if .pi build rules are defined
...
`.pi` files are created for `.o` files that `build.products` depends on, but
an error will occur if the build rule is unknown, so add a check.
I don't think this situation would normally arise. However, in
`mattn/mruby-onig-regexp`, when using bundled onigmo, onigmo's `.o` files
are added to dependency of `libmruby.a` in the second and subsequent builds,
and mruby does not know the build rule, so the following error had occured.
```console
rake aborted!
Don't know how to build task '/mruby/build/host/mrbgems/mruby-onig-regexp/onigmo-6.2.0/libonig_objs/ascii.pi' (See the list of available tasks with `rake --tasks`)
```
2021-02-04 21:17:58 +09:00
Yukihiro "Matz" Matsumoto
6f354322a8
Merge pull request #5318 from shuujii/fix-breakage-where-builds-except-host-dont-refer-mrbc-in-host
...
Fix breakage where builds except `host` don't refer` mrbc` in `host`
2021-02-04 15:24:05 +09:00
KOBAYASHI Shuji
f92c1f1b7f
Fix breakage where builds except host don't refer mrbc in host
...
Build error occurred under the following conditions.
* `host` build is presym enabled and unspecified `mruby-bin-mrbc` gem.
* Build except `host` unspecified `mruby-bin-mrbc` gem and mrbcfile.
### Example
#### Build configuration
```ruby
MRuby::Build.new{|conf| conf.toolchain}
MRuby::Build.new("host2"){|conf| conf.toolchain}
```
#### Error
```console
rake aborted!
external mrbc or mruby-bin-mrbc gem in current('host2') or 'host' build is required
/mruby/lib/mruby/build.rb:326:in `mrbcfile'
/mruby/tasks/mrblib.rake:9:in `block in <top (required)>'
/mruby/lib/mruby/build.rb:18:in `instance_eval'
/mruby/lib/mruby/build.rb:18:in `block in each_target'
/mruby/lib/mruby/build.rb:17:in `each'
/mruby/lib/mruby/build.rb:17:in `each_target'
/mruby/tasks/mrblib.rake:1:in `<top (required)>'
/mruby/Rakefile:27:in `load'
/mruby/Rakefile:27:in `<top (required)>'
```
2021-02-04 14:57:37 +09:00
Uchio KONDO
7c52734243
Add a testcase of #4137 fix
2018-10-15 14:46:24 +09:00
Tomoyuki Sahara
89dceefa12
s/__android__/__ANDROID__/. fixes #15 .
...
mruby core uses __ANDROID__ to know whether the target system is
Android or not (in mrbgems/mruby-math).
2018-09-14 15:49:36 +09:00
ksss
e8988197f2
Try Binding class
2017-02-24 11:06:47 +09:00
Tomoyuki Sahara
14bc5c3e51
Merge pull request #14 from masahino/add_pointer_casting
...
Add pointer casting
2016-12-16 23:02:28 +09:00
masahino
b1ccf9764b
Add pointer casting
2016-12-15 21:34:27 +09:00
Tomoyuki Sahara
0c3c538855
Merge pull request #13 from udzura/add-chroot
...
Implement Dir.chroot on mruby
2016-06-13 09:54:03 +09:00
Uchio KONDO
7318ae5977
Remove perror
2016-06-13 09:42:16 +09:00
Uchio KONDO
e9c4b10446
Implement Dir.chroot on mruby
2016-06-10 15:59:20 +09:00
yui-knk
68334311ac
Remove dependency to mruby-sprintf ( Fix #3 )
2016-02-11 21:47:13 +09:00
yui-knk
fbf8c10a94
Merge pull request #5 from yui-knk/use_new_container_based_infrastructure
...
Use the new container-based test infrastructure on travis ci
2016-02-11 20:38:46 +09:00
yui-knk
4f0a509342
Use the new container-based test infrastructure on travis ci
2016-02-11 20:36:25 +09:00
yui-knk
96ea55d2f9
Add a test case for Set#inspect
2016-02-11 20:27:55 +09:00
yui-knk
24b09fca69
Remove src directory ( Fix #2 )
...
This gem does not have c implementation, so remove src directory.
2016-02-11 20:13:53 +09:00
yui-knk
d39dcb4370
[ci skip] Fix indent
2016-02-11 20:13:26 +09:00
yui-knk
ea9a99541a
[ci skip] Update license year
2016-02-11 20:13:00 +09:00
yui-knk
f48f6e01b5
Merge pull request #4 from yui-knk/fix_test_script
...
Reform build process on travis ci
2016-02-11 20:03:23 +09:00
yui-knk
604fd5c437
Reform build process on travis ci
...
* Change to create "mruby" directory in a repository
* Create Rakefile and use it in .travis.yml
This enable us to write build script with Ruby syntax
2016-02-11 19:53:48 +09:00
yui-knk
befc5a4d83
Merge pull request #1 from takahashim/add-dependency
...
add add_dependency
2016-02-05 01:38:39 +09:00
Tomoyuki Sahara
b4415207ff
Merge pull request #2 from kazuho/kazuho/mrbint64
...
cast `mrb_int` to `int` before applying sprintf "%d"
2016-01-07 13:24:03 +09:00
Kazuho Oku
b14df08be6
cast mrb_int to int before applying sprintf "%d"
2016-01-06 12:10:21 +09:00
Tomoyuki Sahara
b64c701c64
Merge pull request #11 from takahashim/fix-win-test
...
fix test for windows
2015-12-03 16:45:25 +09:00
takahashim
71f21845ca
fix test for windows
...
* _mkdir() has only one argument
* use mktemp && mkdir instead of mkdtemp
* use _getcwd instead of P_tmpdir (sandbox is on current dir)
* test for Dir#tell and Dir#seek: skip when NotImplementedError
2015-12-03 15:48:37 +09:00
Tomoyuki Sahara
66c6f8b9d1
Merge pull request #10 from takahashim/notimplemented
...
use NotImplementedError instead of RuntimeError for Win
2015-12-03 15:32:13 +09:00
takahashim
6140cb158d
use NotImplementedError instead of RuntimeError for Win
2015-12-03 15:25:12 +09:00
Tomoyuki Sahara
d98ecabd90
Merge pull request #9 from takahashim/enable_test
...
add conf.enable_test into build_config.rb
2015-12-03 09:51:36 +09:00
takahashim
3501af9ba2
add conf.enable_test into build_config.rb
2015-12-03 00:10:19 +09:00
takahashim
7584d49aa3
add add_dependency
2015-09-13 15:16:28 +09:00
Tomoyuki Sahara
49f6fa51d9
Merge pull request #8 from joans321/master
...
disable dir_seek and dir_tell on android platform
2015-08-13 20:19:58 +09:00
xuejianqing
6e30353dfd
disable dir_seek and dir_tell on android platform
2015-08-13 17:33:45 +08:00
Tomoyuki Sahara
444abbe5f9
Merge pull request #7 from furunkel/master
...
Use _WIN32 and _WIN64 to detect Windows instead of RUBY_PLATFORM
2015-06-02 09:27:33 +09:00
furunkel
9eec22cda1
Add missing declarations
2015-06-01 21:16:25 +02:00
furunkel
5542f7b0fc
Use _WIN32 and _WIN64 to detect Windows instead of RUBY_PLATFORM
2015-06-01 21:06:59 +02:00
cremno
f31733045f
use mrb_debug_strdup() and mrb_debug_strndup()
...
As they are safer to use than mrb_malloc()+strlen()+strncpy() (see #2652 ).
2014-12-02 00:00:55 +01:00
cremno
ce5a3dbcba
add mrb_debug_strdup() and mrb_debug_strndup()
...
They behave similar to their POSIX equivalents, except
mrb_malloc_simple() is used for memory allocation and
errno might not be set since ISO C99 doesn't have ENOMEM.
2014-12-02 00:00:54 +01:00
Tomoyuki Sahara
dfb471b40b
type of 2nd argument was changed.
2014-09-19 13:49:39 +09:00
Tomoyuki Sahara
f7a0946452
mrb_const_defined returns true if it is defined on a super class.
2014-09-19 13:22:56 +09:00
Tomoyuki Sahara
37105ef13b
Merge pull request #1 from cremno/patch-1
...
use mrb_basic_ptr instead of obsolete mrb_basic
2014-09-01 09:29:31 +09:00
cremno
baba54fb49
use mrb_basic_ptr instead of obsolete mrb_basic
2014-08-29 16:41:11 +02:00
yui-knk
93e1d2b992
implemente Set#divide (with 1 arity block)
2014-08-03 23:40:05 +09:00
yui-knk
93a8b08f59
implement #classify
2014-08-03 13:06:30 +09:00
yui-knk
a442f232e9
Refactor #flatten_merge
...
Not to unnecessary recursive search.
2014-08-03 12:52:29 +09:00
yui-knk
0d89802877
fix typo
2014-08-03 12:50:51 +09:00
yui-knk
7861034bcf
add test case to #flatten
2014-08-03 12:50:23 +09:00
yui-knk
2836acf045
implement flatten_merge, flatten, flatten!
2014-08-03 12:45:54 +09:00
take_cheeze
f77fb11f4e
Use RString in mesg instead.
2014-07-28 20:30:02 +09:00
take_cheeze
e926b532ee
Store exception message to mesg field of struct RException.
2014-07-28 16:34:01 +09:00
yui-knk
dd10f722ad
Delete unused code in .h .c
2014-07-24 08:39:47 +09:00
yui-knk
4f73ff51e2
Add not implemented methods to README.md
2014-07-24 08:35:42 +09:00
yui-knk
b4e4d98125
Add some comment outed methods
...
+ classify
+ divide
2014-07-24 08:29:45 +09:00
yui-knk
5e10c11662
Comment out some method
...
+ freeze
+ taint
+ untaint
2014-07-24 08:27:48 +09:00
yui-knk
fad2bd9617
Add example to README.md
2014-07-24 08:22:22 +09:00
yui-knk
500bd30d6c
Initial commit
2014-07-24 08:15:57 +09:00
Tomoyuki Sahara
6cc24d0793
add tests for #tell and #seek.
2014-06-20 15:25:10 +09:00
Tomoyuki Sahara
193c82174f
P_tmpdir does not have trailing / on Linux.
2014-06-17 11:47:16 +09:00
Tomoyuki Sahara
14e325348b
copy-and-paste bug...
2014-06-17 11:37:57 +09:00
Tomoyuki Sahara
0d378be34e
tests and documentation.
2014-06-17 11:33:10 +09:00
Tomoyuki Sahara
546d923e67
Merge pull request #5 from windwiny/patch-1
...
compatible 32 bit windows
2014-05-09 01:56:46 +09:00
windwiny
627282a5f6
compatible 32 bit windows
2014-05-07 20:43:12 +08:00
mirichi
670a457e06
add block argument test #2144
2014-04-28 13:49:50 +09:00
Akira Yumiyama
536e83614d
Update .travis.yml
2014-04-04 11:31:28 +09:00
Akira Yumiyama
2a0423c11d
Update .travis.yml
2014-04-04 11:30:38 +09:00
Akira Yumiyama
06b4dd56a4
Create .travis.yml
2014-04-04 11:24:52 +09:00
Akira Yumiyama
a252681f39
Create .travis.yml
2014-04-04 11:24:07 +09:00
Tomoyuki Sahara
4800836dd4
On Windows platforms, users must agree on addional license.
2014-03-14 10:06:14 +09:00
Tomoyuki Sahara
dc17037349
Merge pull request #3 from pbosetti/master
...
Can Build with VisualStudio
2014-03-14 09:45:44 +09:00
Tomoyuki Sahara
c0abfaf69d
catch up with mrb_class_get API change.
2014-02-13 16:32:52 +09:00
Paolo Bosetti
9768535582
Made compatible with VisualStudio
2013-12-10 14:33:36 +01:00
Tomoyuki Sahara
09d51f46a7
mrb_intern API change.
2013-12-03 10:06:32 +09:00
Paolo Bosetti
d7e880d9b9
Fix for compilation under Win/MinGW
2013-12-02 12:15:21 +01:00
Akira Yumiyama
a036be21bc
fix chdir (pass the current directory)
2013-11-16 14:37:21 +09:00
Akira Yumiyama
12dce91db8
support Dir.chdir with block
2013-11-16 14:28:40 +09:00
Akira Yumiyama
797c1cc178
Merge pull request #2 from syuu1228/chdir
...
add Dir.chdir
2013-11-15 20:50:01 -08:00
Takuya ASADA
0380865a55
add chdir
2013-11-14 03:08:43 -08:00
Tomoyuki Sahara
487ab66ea0
ARGS_XXX macros was renamed to MRG_ARGS_XXX.
2013-08-21 09:23:56 +09:00
Tomoyuki Sahara
09ea0586ee
catch up with DATA API changes.
2013-08-20 17:27:10 +09:00
Akira Yumiyama
838e4f975d
add run_test.rb, .gitignore
2013-05-02 23:57:20 +09:00
Akira Yumiyama
5903e2f3bf
rename mrb_class_obj_get -> mrb_class_get
2013-05-02 23:56:52 +09:00
Akira Yumiyama
ee4fef5127
update run_test.rb
2013-05-02 23:38:50 +09:00
Akira Yumiyama
57296298e9
put MRB_ prefix before ARGS_XXX macros
2013-04-27 09:46:11 +09:00
Tomoyuki Sahara
db5e3af473
mrb_str_new2 -> mrb_str_new_cstr
2013-04-09 15:47:12 +09:00
Akira Yumiyama
104b69d943
rename mrb_str_new2 -> mrb_str_new_cstr
2013-03-13 22:28:06 +09:00
Tomoyuki Sahara
e56d53e354
Errno module for mruby.
2013-03-13 10:00:22 +09:00
Tomoyuki Sahara
b6c71e4c68
Initial commit
2013-03-12 00:21:04 -07:00
Akira Yumiyama
5e296b24f3
remove Makefile
2013-03-06 12:59:19 +09:00
Akira Yumiyama
221296cb55
update README.md
2013-03-06 12:59:03 +09:00
Akira Yumiyama
1cde1f24ce
fix with mruby/mruby support.
2013-03-06 12:51:04 +09:00
Akira Yumiyama
f22a72e754
update README.md
2013-01-30 17:02:54 +09:00
Akira Yumiyama
04d51d9719
add mrbgem test runner
2013-01-30 15:11:53 +09:00
Akira Yumiyama
ae5671369e
update mrbgem.rake
2013-01-30 15:11:15 +09:00
Akira Yumiyama
6b7e81f75b
update mrbgem.rake
2013-01-24 10:18:13 +09:00
Akira Yumiyama
2f486fbccb
add mrb_mruby_dir_gem_final
2013-01-24 10:18:05 +09:00
Akira Yumiyama
2e2225e2d3
add mrbgem.rake
2013-01-04 00:19:04 +09:00
Tomoyuki Sahara
92ad6dc8c3
should not ignore Makefile...
2012-12-25 13:44:22 +09:00
Tomoyuki Sahara
f210dd553e
requires iij/mruby.
2012-12-25 13:34:52 +09:00
Tomoyuki Sahara
7a593bf2d4
Dir class for mruby (from iij/mruby)
2012-12-25 13:32:29 +09:00
Tomoyuki Sahara
ca525d5482
Initial commit
2012-12-24 20:11:55 -08:00