Yukihiro "Matz" Matsumoto
1961059330
Merge pull request #4643 from lopopolo/externally-define-MRB_API
...
Allow external definition of MRB_API macro
2019-08-19 13:18:41 +09:00
Ryan Lopopolo
b5662c87c8
Allow external definition of MRB_API macro
...
When building WebAssembly targets with clang (e.g. wasm32-unknown-unknown), all
symbols are hidden by default. To export a symbol, it must be marked with
__attribute__((visibility(default)))
Rather than detecting this exotic target in mruby, allow MRB_API to be defined
externally.
2019-08-18 19:40:12 -07:00
Yukihiro "Matz" Matsumoto
3fbd5f0029
Merge pull request #4639 from dearblue/suppress-Wstringop-truncation
...
Suppress warnings for `strncat()`
2019-08-19 07:31:26 +09:00
Yukihiro "Matz" Matsumoto
f263088b0d
Merge pull request #4638 from dearblue/simplify-get-args
...
Simplify get arguments
2019-08-19 07:30:48 +09:00
Yukihiro "Matz" Matsumoto
b5e2d208b9
Merge pull request #4636 from davidsiaw/doxygen
...
Generate doxygen docs for mruby
2019-08-19 07:29:46 +09:00
Yukihiro "Matz" Matsumoto
fe8428b33b
Merge pull request #4642 from dearblue/unique-symlink
...
Make symbolic link names unique for test
2019-08-19 07:25:07 +09:00
Yukihiro "Matz" Matsumoto
1b9801a04b
Merge pull request #4641 from shuujii/rename-mrb_shared_string-len-to-mrb_shared_string-capa
...
Rename `mrb_shared_string::len` to `mrb_shared_string::capa`
2019-08-19 07:24:06 +09:00
Yukihiro "Matz" Matsumoto
feecb3321a
Merge pull request #4640 from shuujii/also-use-str_init_shared-for-orig-in-str_make_shared
...
Also use `str_init_shared` for `orig` in `str_make_shared()`
2019-08-19 07:23:23 +09:00
Yukihiro "Matz" Matsumoto
6f61b35bcf
Merge pull request #4637 from dearblue/immutable-iseq
...
Prohibit changes to iseq in principle
2019-08-18 23:25:40 +09:00
dearblue
734a7f52a7
Make symbolic link names unique for test
2019-08-18 22:10:41 +09:00
David Siaw
b5299b1c58
fix up documentation for values
2019-08-18 20:12:44 +09:00
KOBAYASHI Shuji
d2d201cc82
Rename mrb_shared_string::len to mrb_shared_string::capa
...
Because this field is used as capacity of string buffer.
2019-08-18 20:08:04 +09:00
KOBAYASHI Shuji
aaa509dd07
Also use str_init_shared for orig in str_make_shared()
2019-08-18 19:44:00 +09:00
dearblue
74395d7577
Suppress warnings for strncat()
...
`strncat()` also needs `'\0'`.
2019-08-18 15:46:17 +09:00
dearblue
05a873c25c
Simplify get arguments
...
- `mrb_str_index_m()` and `mrb_str_rindex()`
Make `mrb_get_args()` called only once from called twice.
- `mrb_str_byteslice()`
Replace `goto` with `if ~ else`.
2019-08-18 15:38:25 +09:00
dearblue
279c21b816
Prohibit changes to iseq in principle
2019-08-18 15:00:32 +09:00
David Siaw
2c86895468
fix up markdown display in doxygen
2019-08-18 13:59:29 +09:00
David Siaw
8d70a9b1b5
first bit of doc generation
2019-08-18 13:07:24 +09:00
Yukihiro "Matz" Matsumoto
83dab1ee0d
Merge pull request #4634 from shuujii/refactor-set-unset-string-type-flags
...
Refactor set/unset string type flags
2019-08-17 23:41:52 +09:00
KOBAYASHI Shuji
caba5fef27
Refactor set/unset string type flags
...
Introduce `RSTR_SET_TYPE_FLAG` macro to set the specified string type flag and
clear the others.
2019-08-17 21:24:08 +09:00
Yukihiro "Matz" Matsumoto
277c91e94c
Merge pull request #4625 from dearblue/rindex-broken-utf8
...
Fix `String#rindex` with invalid UTF-8 string
2019-08-17 15:52:34 +09:00
Yukihiro "Matz" Matsumoto
b55e72b2d6
Resolve conflict between #4582 and C++ warning.
2019-08-17 15:47:14 +09:00
Yukihiro "Matz" Matsumoto
5b1f25a4e0
Implement Array#each using inline mruby bytecode.
2019-08-17 14:46:32 +09:00
Yukihiro "Matz" Matsumoto
13eaff4f9f
Remove unnecessary OP_JMPNOT for unless statement.
2019-08-17 12:29:04 +09:00
dearblue
bc27273087
Fix String#rindex with invalid UTF-8 string
...
Previously `String#rindex` returned the wrong index when given an
invalid UTF-8 string.
```terminal
% ruby26 -e 'str = "\xf0☀\xf1☁\xf2☂\xf3☃\xf0☀\xf1☁\xf2☂\xf3☃"; p str.rindex("☁")'
11
% ./mruby-head -e 'str = "\xf0☀\xf1☁\xf2☂\xf3☃\xf0☀\xf1☁\xf2☂\xf3☃"; p str.rindex("☁")'
nil
% ./mruby-patched -e 'str = "\xf0☀\xf1☁\xf2☂\xf3☃\xf0☀\xf1☁\xf2☂\xf3☃"; p str.rindex("☁")'
11
```
2019-08-17 12:05:03 +09:00
Yukihiro "Matz" Matsumoto
e76c5aad36
Stop using mrb_to_str as a converter (it is not).
2019-08-17 11:49:00 +09:00
dearblue
414ab682f3
Add String#rindex test for invalid UTF-8 string
2019-08-17 11:44:27 +09:00
dearblue
cf5f290fa0
Fix String#rindex test for UTF-8 string
2019-08-17 11:44:27 +09:00
Yukihiro "Matz" Matsumoto
0286a7f709
Avoid mrb_funcall from Class#new when no overloading.
2019-08-17 09:02:47 +09:00
Yukihiro "Matz" Matsumoto
99715a2e62
Merge pull request #4633 from shuujii/shared-fshared-string-is-not-required-when-sharing-nofree-string
...
SHARED/FSHARED string is not required when sharing NOFREE string
2019-08-16 23:20:44 +09:00
Yukihiro "Matz" Matsumoto
c1a0a99309
Update struct RArray union to silence C++ warning.
2019-08-16 22:51:07 +09:00
Yukihiro "Matz" Matsumoto
0923ff6313
Optimize bytecode for Class#new.
2019-08-16 22:37:30 +09:00
Yukihiro "Matz" Matsumoto
61763129db
Implement Class#new using inline mruby bytecode.
2019-08-16 22:30:03 +09:00
KOBAYASHI Shuji
9832e91304
SHARED/FSHARED string is not required when sharing NOFREE string
...
I think the string buffer of NOFREE string always exists and does not need
to be released, so it can be shared as another NOFREE string.
Also changed the `mrb_shared_string` field order so that eliminate padding if
`int` and `mrb_int` sizes are less than pointer size.
2019-08-16 22:05:58 +09:00
Yukihiro "Matz" Matsumoto
06c7ff0666
Avoid creating unnecessary empty arrays on splat.
...
But this changes requires `OP_ARYCAT` and `OP_ARYPUSH` to accept `nil`
as their first operand. Alternative VMs (e.g. `mruby/c`) that understand
mruby bytecode need to be updated.
2019-08-16 16:42:40 +09:00
Yukihiro "Matz" Matsumoto
fa8515bc2c
Stop raising exceptions from undef C API.
...
Some `undef' functions may be called before initialization, thus causes
infinite error recursion.
2019-08-16 16:42:40 +09:00
Yukihiro "Matz" Matsumoto
8fa9a7b965
Merge pull request #4632 from shuujii/remove-unneeded--include-in-src-string.c
...
Remove unneeded `#include` in `src/string.c`
2019-08-15 18:41:30 +09:00
KOBAYASHI Shuji
59844ddde0
Remove unneeded #include in src/string.c
2019-08-15 12:18:33 +09:00
Yukihiro "Matz" Matsumoto
0c5ebd75a3
Merge pull request #4631 from shuujii/extract-initialization-code-of-shared-and-fshared-string-to-function
...
Extract initialization code of shared and fshared string to function
2019-08-14 23:29:07 +09:00
KOBAYASHI Shuji
af6724c2f6
Extract initialization code of shared and fshared string to function
2019-08-14 22:20:34 +09:00
Yukihiro "Matz" Matsumoto
d986b9ff7b
Avoid array copying in mrb_instance_new.
2019-08-14 15:08:48 +09:00
Yukihiro "Matz" Matsumoto
603005ba65
Integrate kazuho/mruby-class-new-fiber-safe in the master.
...
Avoid calling `initialize` via `mrb_funcall`, which cause `cross C
boundary` error from Fibers started in the method.
2019-08-14 14:09:56 +09:00
Yukihiro "Matz" Matsumoto
8ed15fd92e
Small refactoring on #4630
2019-08-14 12:20:40 +09:00
Yukihiro "Matz" Matsumoto
9f6328d499
Remove MRB_API from functions only called from vm.c.
...
* `mrb_vm_define_class`
* `mrb_vm_define_module`
Only functions called from user code requires `MRB_API`.
2019-08-14 09:33:23 +09:00
Yukihiro "Matz" Matsumoto
e2ab8cca82
Merge pull request #4630 from shuujii/extract-struct-RString-initialization-code-to-function
...
Extract `struct RString` initialization code to function
2019-08-14 08:16:45 +09:00
KOBAYASHI Shuji
7af0ee099d
Extract struct RString initialization code to function
2019-08-13 22:40:30 +09:00
Yukihiro "Matz" Matsumoto
8a3457c330
Merge pull request #4629 from shuujii/mrb_str_pool-can-embed-one-more-byte
...
`mrb_str_pool` can embed one more byte; ref #4626
2019-08-12 22:41:51 +09:00
KOBAYASHI Shuji
dfb297e3c4
mrb_str_pool can embed one more byte; ref #4626
2019-08-12 21:42:31 +09:00
Yukihiro "Matz" Matsumoto
f113fa2a4f
Remove unnecessary prototypes from 'keywords`; fix #4628
2019-08-12 18:22:31 +09:00
Yukihiro "Matz" Matsumoto
ad0b546088
Merge pull request #4626 from shuujii/mrb_str_modify_keep_ascii-can-embed-one-more-byte
...
`mrb_str_modify_keep_ascii` can embed one more byte
2019-08-12 17:09:21 +09:00