Skip to content

Commit fb3f744

Browse files
committed
Make frozen matrices Ractor shareable
1 parent c604391 commit fb3f744

File tree

2 files changed

+14
-1
lines changed

2 files changed

+14
-1
lines changed

lib/matrix.rb

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -532,7 +532,8 @@ def collect!(which = :all)
532532
alias map! collect!
533533

534534
def freeze
535-
@rows.freeze
535+
@rows.each(&:freeze).freeze
536+
536537
super
537538
end
538539

@@ -2118,6 +2119,9 @@ def zero?
21182119
all?(&:zero?)
21192120
end
21202121

2122+
#
2123+
# Makes the matrix frozen and Ractor-shareable
2124+
#
21212125
def freeze
21222126
@elements.freeze
21232127
super

test/matrix/test_matrix.rb

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -812,4 +812,13 @@ def test_adjoint
812812
assert_equal(Matrix[[(1-2i), 1], [(0-1i), 2], [0, 3]], @c1.adjoint)
813813
assert_equal(Matrix.empty(0,2), @e1.adjoint)
814814
end
815+
816+
def test_ractor
817+
obj1 = @m1.freeze
818+
819+
obj2 = Ractor.new obj1 do |obj|
820+
obj
821+
end.take
822+
assert_same obj1, obj2
823+
end if defined?(Ractor)
815824
end

0 commit comments

Comments
 (0)