KOBAYASHI Shuji
bedd672571
Add const to pack_table to src/symbol.c
2019-02-14 18:44:00 +09:00
Yukihiro "Matz" Matsumoto
37bc343e0a
Disable Symbol.all_symbols.
2019-02-12 17:30:34 +09:00
Yukihiro "Matz" Matsumoto
06ba5905f0
Implement inline packed symbols.
...
Small symbols with all alphanumeric characters (<5) are packed in 32bit
symbol integer a la base64. This means those small symbols are not
listed in `Symbol.all_symbols`.
2019-02-12 17:30:34 +09:00
Yukihiro "Matz" Matsumoto
ef93ff6405
Should not copy keys&values when a hash table is empty; fix #4270
2019-02-11 15:20:34 +09:00
Yukihiro "Matz" Matsumoto
639f6e2799
No strict argument check for blocks when keyword arguments exist; ref #4270
2019-02-11 15:20:34 +09:00
dearblue
eb6aee117b
mrb_default_allocf() is default allocator for NULL safe
2019-02-09 20:22:08 +09:00
Yukihiro "Matz" Matsumoto
d52f46da45
Implement symbol hash table to boost find_symbol.
...
In 4174e02, we removed the symbol hash table from `mrb_state` but
`find_symbol` was too slow with linear search. My performance estimation
was wrong. So we implemented a new compact hash table for symbols.
2019-02-06 22:07:11 +09:00
Yukihiro "Matz" Matsumoto
905fef2669
Reduce invocation of mrb_convert_type() from mrb_str_to_str().
2019-02-06 22:07:11 +09:00
Yukihiro "Matz" Matsumoto
02fbb2c211
Remove symbol hash table from mrb_state structure.
...
Use linear search instead. Number of symbols is usually small (<1K), so
we don't need performance boost from hash tables. In our benchmark
measurement, hash tables consumes 790KB for `build/full-debug/mrbtest`.
2019-02-06 22:07:11 +09:00
Yukihiro "Matz" Matsumoto
cb8bbd9e12
Merge pull request #4262 from shuujii/remove-old-comment-in-symbol
...
Remove old comment for `mrb_sym2name_len()` [ci skip]
2019-02-05 22:51:26 +09:00
KOBAYASHI Shuji
5ef1e479da
Remove old comment for mrb_sym2name_len() [ci skip]
2019-02-05 19:16:23 +09:00
KOBAYASHI Shuji
7a2865cfef
Fix markup and remove unneeded comment for doc in src/string.c [ci skip]
2019-02-05 19:11:59 +09:00
KOBAYASHI Shuji
69fd1a5925
Fix Symbol#size for multi-byte characters with MRB_UTF8_STRING
...
Before:
p :あ.size #=> 3
After:
p :あ.size #=> 1
2019-02-04 18:11:22 +09:00
KOBAYASHI Shuji
486154ce34
Remove unused macro in src/string.c
2019-01-29 20:21:25 +09:00
KOBAYASHI Shuji
dff0f2ee10
Remove .gitkeep files
2019-01-19 20:40:21 +09:00
Yukihiro "Matz" Matsumoto
cb1946f26c
Merge pull request #4233 from shuujii/remove-special-treatments-for-without-float-in-build-scripts
...
Remove special treatments for `MRB_WITHOUT_FLOAT` in build scripts
2019-01-18 16:17:58 +09:00
KOBAYASHI Shuji
366a14f297
Remove special treatments for MRB_WITHOUT_FLOAT in build scripts
2019-01-16 23:48:59 +09:00
KOBAYASHI Shuji
8969edf03b
Avoid runtime evaluation for MRB_WITHOUT_FLOAT
2019-01-16 19:32:29 +09:00
Yukihiro "Matz" Matsumoto
17333bde3a
Merge pull request #4222 from shuujii/use-g-instead-of-e
...
Use `%g` instead of `%e` for float representation in dump format
2019-01-14 19:13:48 +09:00
KOBAYASHI Shuji
0e04c46261
Use 2 digits exponent format for printf family on old MSVC
...
For conforming C standard.
2019-01-13 23:24:57 +09:00
KOBAYASHI Shuji
9f081183d2
Improve compatibility to CRuby for Float#to_s
...
Bfore:
Float::INFINITY.to_s #=> "inf"
50.0.to_s #=> "50"
1e20.to_s #=> "1e+20"
After / CRuby:
Float::INFINITY.to_s #=> "Infinity"
50.0.to_s #=> "50.0"
1e20.to_s #=> "1.0e+20"
2019-01-13 19:59:22 +09:00
KOBAYASHI Shuji
2d8aec2b88
Use %g instead of %e for float representation in dump format
...
`%g` use shorter representation than `%e`.
2019-01-11 19:54:46 +09:00
KOBAYASHI Shuji
856b8d9610
Remove duplicate code in numeric.c
2019-01-10 23:22:23 +09:00
KOBAYASHI Shuji
68735d1261
Fix dump/load float leteral evaluate to infinity
...
Example:
# example.rb
p(2e308)
p(-2e308)
Good:
$ bin/mruby example.rb
inf
-inf
Bad:
$ bin/mrbc example.rb
$ bin/mruby -b example.mrb
0
-0
Cause:
Float infinity representation is `inf` on dump and it is converted by
corresponding `String#to_f` on load.
Treatment:
- Introduce new representations (`i`: +infinity, `I`: -infinity)
- Allow old representations (`inf`, `-inf`, `infinity`, `-infinity`) too
- Raise error for unknown representations (use corresponding `Kernel#Float`)
2019-01-08 20:43:23 +09:00
KOBAYASHI Shuji
b30ca87bd0
Integrate mrblib/float.rb into src/numeric.c
...
- Avoid hack for `MRB_WITHOUT_FLOAT` in build scripts
- Avoid runtime dispatch for `MRB_WITHOUT_FLOAT`
2019-01-04 20:31:05 +09:00
Yukihiro "Matz" Matsumoto
53d87c59c0
Remove unused local variable n in range_initialize; #4213
2019-01-04 14:42:47 +09:00
Yukihiro "Matz" Matsumoto
1bf6c84682
Merge pull request #4213 from shuujii/range-rafactor
...
range: Refactor range.h/range.c
2019-01-04 14:39:04 +09:00
KOBAYASHI Shuji
eb216fc858
range: Refactor range.h/range.c
...
Functions order, name, linkage and so on.
2019-01-03 20:09:41 +09:00
Yukihiro "Matz" Matsumoto
cca19532c5
Remove Kernel#class_defined? which is not available in CRuby; #3829
2019-01-03 11:34:35 +09:00
KOBAYASHI Shuji
648b57620a
range: Embed edges in RRange on boxing environment.
...
[Breaking changes]
Developers must use following APIs for accessing attributes of RRange
because RRange structure depends on boxing setting.
- mrb_range_beg
- mrb_range_end
- mrb_range_excl_p
2019-01-01 15:35:56 +09:00
KOBAYASHI Shuji
b0dc163b5d
Suppress a struct initializer warning
...
Suppress a compiler (clang) warning bellow:
src/vm.c:104:38: warning: suggest braces around initialization of
subobject [-Wmissing-braces]
const mrb_value mrb_value_zero = { 0 };
^
{}
2018-12-23 14:23:44 +09:00
Yukihiro "Matz" Matsumoto
11071b9ab1
Merge pull request #4189 from sdottaka/fix-mrb_ary_clear
...
Make mrb_ary_clear() function callable from C again
2018-12-17 16:29:00 +09:00
Yukihiro "Matz" Matsumoto
ccc5edc60d
Small refactoring of #4188
2018-12-17 16:00:22 +09:00
Yukihiro "Matz" Matsumoto
e690314525
Recover #to_int; ref #4177
...
We have removed implicit conversion to strings using `to_int`. But some
users still using `to_int` as a typical integer method, i.e. they do
string check by code like: `obj.respond_to?(:to_int)`. So we have
recovered the method.
2018-12-17 15:59:42 +09:00
Yukihiro "Matz" Matsumoto
c03fa0e1b3
Recover String#to_str; ref #4177
...
We have removed implicit conversion to strings using `to_str`. But some
people still using `to_str` as a typical string method, i.e. they do
string check by code like: `obj.respond_to?(:to_str)`. So we have
recovered the method.
2018-12-17 15:59:42 +09:00
Takashi Sawanaka
d8c70167f7
Make mrb_ary_clear() function callable from C again
2018-12-15 05:17:38 +09:00
dearblue
62dd4d89fc
Add mrb_hash_size() function.
2018-12-14 21:41:07 +09:00
Yukihiro "Matz" Matsumoto
60da293d5c
Avoid using floating point number for HT_SEG_INCREASE_RATIO; ref #4182
2018-12-11 10:54:47 +09:00
Yukihiro "Matz" Matsumoto
265171a28c
Rename ht_foreach_func to mrb_hash_foreach_func.
2018-12-11 10:41:26 +09:00
Yukihiro "Matz" Matsumoto
e935d20ab5
Add mrb_ prefix to iv_foreach_func.
2018-12-11 10:39:53 +09:00
Yukihiro "Matz" Matsumoto
a0df27d8e0
Add new API mrb_iv_foreach() to iterate over instance variables.
2018-12-11 09:48:15 +09:00
Yukihiro "Matz" Matsumoto
f6b2e6231a
Update iv_foreach() function.
...
* return `void` instead of `mrb_bool'.
* non zero return value from `func` breaks the loop.
* no longer remove items on negative return value from `func`.
2018-12-11 09:47:06 +09:00
Yukihiro "Matz" Matsumoto
378c728338
Update comments.
2018-12-11 09:04:08 +09:00
Yukihiro "Matz" Matsumoto
c0d91a14e7
Add API function mrb_hash_foreach() to iterate over items in a hash.
2018-12-11 09:01:05 +09:00
Yukihiro "Matz" Matsumoto
c23e68d32b
Need to clear stack before invoking a block; fix #4181
2018-12-10 10:23:01 +09:00
Yukihiro "Matz" Matsumoto
86d102350b
Restrict total recursion number of ecall(); fix #3789
2018-11-20 09:14:34 +09:00
Yukihiro "Matz" Matsumoto
65a2c2082d
Call mrb_str_to_str from mrb_string_value_ptr for compatibility.
2018-11-19 17:11:19 +09:00
Yukihiro "Matz" Matsumoto
53e2df3e93
Restore mrb_string_type function for compatibility.
2018-11-19 16:13:26 +09:00
Yukihiro "Matz" Matsumoto
c308a149f0
Add Hash type check for OP_KARG and OP_KEY_P; ref #4166
2018-11-19 15:35:59 +09:00
Yukihiro "Matz" Matsumoto
87ffab5713
Adjust codedump output format; ref #4166
2018-11-19 15:25:42 +09:00