Skip to content

Commit 198582d

Browse files
authored
Merge pull request #52 from Watson1978/ractor
Add Ractor support
2 parents 44ac00f + 3a49d9f commit 198582d

File tree

4 files changed

+42
-0
lines changed

4 files changed

+42
-0
lines changed

ext/zstdruby/main.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@ void zstd_ruby_streaming_decompress_init(void);
77
void
88
Init_zstdruby(void)
99
{
10+
#ifdef HAVE_RB_EXT_RACTOR_SAFE
11+
rb_ext_ractor_safe(true);
12+
#endif
13+
1014
rb_mZstd = rb_define_module("Zstd");
1115
zstd_ruby_init();
1216
zstd_ruby_streaming_compress_init();

spec/zstd-ruby-streaming-compress_spec.rb

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,5 +52,18 @@
5252
expect(Zstd.decompress(res)).to eq('abcdef')
5353
end
5454
end
55+
56+
if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('3.0.0')
57+
describe 'Ractor' do
58+
it 'should be supported' do
59+
r = Ractor.new {
60+
stream = Zstd::StreamingCompress.new(5)
61+
stream << "abc" << "def"
62+
res = stream.finish
63+
}
64+
expect(Zstd.decompress(r.take)).to eq('abcdef')
65+
end
66+
end
67+
end
5568
end
5669

spec/zstd-ruby-streaming-decompress_spec.rb

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,5 +32,21 @@
3232
end
3333
end
3434

35+
if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('3.0.0')
36+
describe 'Ractor' do
37+
it 'should be supported' do
38+
r = Ractor.new {
39+
cstr = Zstd.compress('foo bar buzz')
40+
stream = Zstd::StreamingDecompress.new
41+
result = ''
42+
result << stream.decompress(cstr[0, 5])
43+
result << stream.decompress(cstr[5, 5])
44+
result << stream.decompress(cstr[10..-1])
45+
result
46+
}
47+
expect(r.take).to eq('foo bar buzz')
48+
end
49+
end
50+
end
3551
end
3652

spec/zstd-ruby_spec.rb

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,5 +74,14 @@ def to_str
7474
expect(Zstd.decompress(DummyForDecompress.new)).to eq('abc')
7575
end
7676
end
77+
78+
if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('3.0.0')
79+
describe 'Ractor' do
80+
it 'should be supported' do
81+
r = Ractor.new { Zstd.compress('abc') }
82+
expect(Zstd.decompress(r.take)).to eq('abc')
83+
end
84+
end
85+
end
7786
end
7887

0 commit comments

Comments
 (0)