Commit graph

7854 commits

Author SHA1 Message Date
Kenta Murata
82f6085b3e [ruby/bigdecimal] Fix trailing zero handling in rb_uint64_convert_to_BigDecimal
2056604d56
2021-01-07 10:20:40 +09:00
Kenta Murata
fa8295ccb9
[ruby/bigdecimal] Rename BDIGIT to DECDIG
686487d942
2021-01-06 13:52:12 +09:00
Kenta Murata
7da06c04b2
Need to convert the return value of rb_big_cmp 2021-01-06 13:39:09 +09:00
Kenta Murata
f289f8ae3a [ruby/bigdecimal] Optimize the conversion from small Bignum
4792a917d8
2021-01-06 10:56:48 +09:00
Kenta Murata
31854403b3
[ruby/bigdecimal] Check the function availabilities separately
cf839a34c8
75db4dabb9
2021-01-06 09:25:13 +09:00
Marcus Stollsteimer
3108ad7bf3 [DOC] Fix grammar: "is same as" -> "is the same as" 2021-01-05 15:13:53 +01:00
Kazuhiro NISHIYAMA
3d43944725
Fix a typo [ci skip] 2021-01-05 23:10:39 +09:00
Nobuyoshi Nakada
83e62d7798 [ruby/io-console] Shrink struct query_args
720be0a3e5
2021-01-05 21:26:15 +09:00
Nobuyoshi Nakada
4272395982 [ruby/io-console] Pre-define chomp! ID
028e1c9497
2021-01-05 21:26:13 +09:00
Nobuyoshi Nakada
ead8d89bd7 [ruby/io-console] Ignore chomp! result and return the modified string
09e5ccc729
2021-01-05 21:26:11 +09:00
Marcus Stollsteimer
451b456051 [ruby/io-console] [DOC] Note that IO#getpass returns a chomped string
IO#getpass uses String#chomp! on the read input line.

1e98c93bc8
2021-01-05 12:59:53 +09:00
Koichi Sasada
e7fc353f04 enable constant cache on ractors
constant cache `IC` is accessed by non-atomic manner and there are
thread-safety issues, so Ruby 3.0 disables to use const cache on
non-main ractors.

This patch enables it by introducing `imemo_constcache` and allocates
it by every re-fill of const cache like `imemo_callcache`.
[Bug #17510]

Now `IC` only has one entry `IC::entry` and it points to
`iseq_inline_constant_cache_entry`, managed by T_IMEMO object.

`IC` is atomic data structure so `rb_mjit_before_vm_ic_update()` and
`rb_mjit_after_vm_ic_update()` is not needed.
2021-01-05 02:27:58 +09:00
Nobuyoshi Nakada
433a3be86a
ripper: call #pretty_print on also state 2021-01-04 23:37:00 +09:00
Kenta Murata
4b90ea8480
Update ext/bigdecimal/depend 2021-01-04 13:42:10 +09:00
Kenta Murata
71f0dd339b
[ruby/bigdecimal] Move some definitions to missing.h
c2b22cc8b3
8cbca8481d
f05aecf673
2021-01-04 13:29:10 +09:00
Kenta Murata
597e063606
Revert "Include RUBY_EXTCONF_H if available"
It is unnecessary because RUBY_EXTCONF_H has already been included in
ruby/internal/config.h.

This reverts commit 0644f466b0.
2021-01-04 12:01:04 +09:00
Kenta Murata
0644f466b0
Include RUBY_EXTCONF_H if available 2021-01-03 23:38:21 +09:00
Kenta Murata
a6bbba1135
Avoid to use __builtin_clzl in SPARC Solaris 2021-01-02 12:06:14 +09:00
Kenta Murata
ef6ab776d5
Add __x86_64__ guard to include x86intrin.h 2021-01-02 10:18:58 +09:00
Nobuyoshi Nakada
5aa28d9d6d
Check if x86intrin.h is available not only existing 2021-01-02 09:48:42 +09:00
Kenta Murata
830afd94fe
[ruby/bigdecimal] Update depend 2021-01-02 01:03:32 +09:00
Kenta Murata
c2c0147538
[ruby/bigdecimal] Fix test for Ruby 2.4
Ruby 2.4 does not have RbConfig::LIMITS.

c8087523b0
2021-01-02 00:54:09 +09:00
Kenta Murata
448a67cd81
[ruby/bigdecimal] Implement special conversions for 64-bit integers
This change improves the conversion speed from small integers.

```
Comparison:
                           big_n9
              master:   4003688.9 i/s
    bigdecimal 3.0.0:   1270551.0 i/s - 3.15x  slower

                          big_n19
              master:   5410096.4 i/s
    bigdecimal 3.0.0:   1000250.3 i/s - 5.41x  slower
```

3429bd7e6f
2021-01-02 00:54:09 +09:00
Kenta Murata
a8014dae47 [ruby/bigdecimal] Refactor object allocation
271cebe567
2020-12-31 02:05:02 +09:00
Kenta Murata
4569e46550 [ruby/bigdecimal] Remove ToValue
97e9feeebd
2020-12-31 02:04:53 +09:00
Kenta Murata
8d93c1e70f [ruby/bigdecimal] Remove VP_EXCEPTION_MEMORY
It is no longer used due to the previous commit.

7d463f802b
2020-12-30 00:22:21 +09:00
Kenta Murata
086f3f1872 [ruby/bigdecimal] Remove needless pointer checks
xmalloc and xrealloc return non-NULL pointers or raise memory error.

507f0a6a64
2020-12-30 00:22:11 +09:00
Kenta Murata
47a1f5ff73
[ruby/bigdecimal] Define bool, true, and false for old Ruby
a6d3bd2d44
2020-12-29 17:46:37 +09:00
Kenta Murata
29d012c964
[ruby/bigdecimal] Alloc wrapper object before VpAlloc
Calling TypedData_Wrap_Struct after VpAlloc may cause memory leak.

This commit reverts d11b78f9c4.

2c5a288caf
2020-12-29 17:46:36 +09:00
Kenta Murata
13b520d578
[ruby/bigdecimal] Refactor to extract VpCheckException
6fd171308b
2020-12-29 17:46:36 +09:00
Nobuyoshi Nakada
d57c5a7b61 transcode-tblgen.rb: make silent a little when just -v 2020-12-29 17:45:19 +09:00
Masaki Matsushita
1ffb267c5c Fix compile error of sockssocket
The patch is provided by PhobosK (Phobos Kappa).

This should be backported to Ruby 3.0.

[Feature #17187]
2020-12-29 15:52:42 +09:00
Kenta Murata
512e08895f [ruby/bigdecimal] Refactor to decompose VpNewVarArg into small functions
7504871c48
2020-12-29 12:56:10 +09:00
Kenta Murata
d11b78f9c4 [ruby/bigdecimal] Reduce needless object allocation in f_BigDecimal
5c808eeabb
2020-12-29 12:54:39 +09:00
Kenta Murata
06b44f819e [ruby/bigdecimal] [Doc] Fix the document of BigDecimal()
[ci-skip]

905d0345ec
2020-12-28 21:26:26 +09:00
Kenta Murata
80d9e457c5
[ruby/bigdecimal] Reduce conditional branch count in VpNewVarArg
741fb3e00f
2020-12-28 21:16:48 +09:00
Nobuyoshi Nakada
730b0099fd
Get rid of inconsistent dll linkages against vcpkg readline 2020-12-27 19:35:27 +09:00
Nobuyoshi Nakada
0a2e4a8f0c
Removed declarations conflicting on MinGW 2020-12-27 19:19:31 +09:00
Nobuyoshi Nakada
66719d7dc8 etc: use atomic operation instead of mutex 2020-12-24 11:43:21 +09:00
Nobuyoshi Nakada
6ed6b85ece Expose atomic operation macros with RUBY prefix
Now we need atomic operations, which are lighter than mutex, more
widely for extension libraries because of Ractor.
2020-12-24 11:43:21 +09:00
Kenta Murata
94015200b6
[fiddle] Update to 1.0.6 2020-12-23 23:40:04 +09:00
Hiroshi SHIBATA
684649ea05 [ruby/psych] Bump version to 3.3.0
0abce07b90
2020-12-23 19:53:21 +09:00
Kenta Murata
aad88cc10b [ruby/date] Define dummy RUBY_TYPED_FROZEN_SHAREABLE for old Ruby
9f3e90ad10
2020-12-23 18:32:24 +09:00
Marc-Andre Lafortune
daec109f42 [ruby/psych] Optimize cache with compare_by_identity
Using `compare_by_identity` gives a 4x performance boost on cache hits.
Benchmark in https://github.com/JuanitoFatas/fast-ruby/issues/189
2020-12-23 01:08:38 -05:00
Marc-Andre Lafortune
c5a445d577 [ruby/psych] Make Ractor-ready.
Config is Ractor-local.

Benchmarking reveals that using `Ractor.local_storage` for storing cache
is similar to accessing a constant (~15% slower).
2020-12-23 01:08:38 -05:00
Marc-Andre Lafortune
3ee0ad9190 [ruby/psych] Don't use instance variables directly for config 2020-12-23 01:08:38 -05:00
Marc-Andre Lafortune
d1963adae8 [ruby/psych] Avoid methods depending on bindings
Improves Ractor-readiness.
2020-12-23 01:08:38 -05:00
Marc-Andre Lafortune
0eb94dae4a [ruby/psych] Freeze constants.
Improves Ractor-readiness.
2020-12-23 01:08:38 -05:00
Hiroshi SHIBATA
5cf25c55a6
Update version for Ractor-safe extensions 2020-12-23 14:03:54 +09:00
Marc-Andre Lafortune
cd63f0358f [ruby/etc] Make Ractor safe 2020-12-22 19:46:07 -05:00