mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
[ruby/date] Make Ractor-compatible
This commit is contained in:
parent
ee102de6d7
commit
f2f00e24fa
Notes:
git
2020-12-22 17:13:19 +09:00
2 changed files with 31 additions and 1 deletions
|
@ -2977,7 +2977,7 @@ static const rb_data_type_t d_lite_type = {
|
|||
"Date",
|
||||
{d_lite_gc_mark, RUBY_TYPED_DEFAULT_FREE, d_lite_memsize,},
|
||||
0, 0,
|
||||
RUBY_TYPED_FREE_IMMEDIATELY|RUBY_TYPED_WB_PROTECTED,
|
||||
RUBY_TYPED_FREE_IMMEDIATELY|RUBY_TYPED_WB_PROTECTED|RUBY_TYPED_FROZEN_SHAREABLE,
|
||||
};
|
||||
|
||||
inline static VALUE
|
||||
|
@ -9118,6 +9118,9 @@ d_lite_zero(VALUE x)
|
|||
void
|
||||
Init_date_core(void)
|
||||
{
|
||||
#ifdef HAVE_RB_EXT_RACTOR_SAFE
|
||||
RB_EXT_RACTOR_SAFE(true);
|
||||
#endif
|
||||
id_cmp = rb_intern_const("<=>");
|
||||
id_le_p = rb_intern_const("<=");
|
||||
id_ge_p = rb_intern_const(">=");
|
||||
|
|
27
test/date/test_date_ractor.rb
Normal file
27
test/date/test_date_ractor.rb
Normal file
|
@ -0,0 +1,27 @@
|
|||
# frozen_string_literal: true
|
||||
require 'test/unit'
|
||||
require 'date'
|
||||
|
||||
class TestDateParse < Test::Unit::TestCase
|
||||
def code(klass = Date, share: false)
|
||||
<<~RUBY.gsub('Date', klass.name)
|
||||
share = #{share}
|
||||
d = Date.parse('Aug 23:55')
|
||||
Ractor.make_shareable(d) if share
|
||||
d2, d3 = Ractor.new(d) { |d| [d, Date.parse(d.to_s)] }.take
|
||||
if share
|
||||
assert_same d, d2
|
||||
else
|
||||
assert_equal d, d2
|
||||
end
|
||||
assert_equal d, d3
|
||||
RUBY
|
||||
end
|
||||
|
||||
def test_date_ractor
|
||||
assert_ractor(code , require: 'date')
|
||||
assert_ractor(code( share: true), require: 'date')
|
||||
assert_ractor(code(DateTime ), require: 'date')
|
||||
assert_ractor(code(DateTime, share: true), require: 'date')
|
||||
end
|
||||
end
|
Loading…
Add table
Reference in a new issue