[ruby/prism] Revert "Mark extension as Ractor-safe"

https://github.com/ruby/prism/commit/56eaf53732
This commit is contained in:
Kevin Newton 2025-03-12 15:56:00 -04:00 committed by git
parent 242e99eb0f
commit af76b7f4d9
4 changed files with 4 additions and 76 deletions

View File

@ -7,10 +7,6 @@
require "rbconfig"
require "ffi"
# We want to eagerly load this file if there are Ractors so that it does not get
# autoloaded from within a non-main Ractor.
require "prism/serialize" if defined?(Ractor)
module Prism
module LibRubyParser # :nodoc:
extend FFI::Library
@ -163,9 +159,6 @@ module Prism
class PrismString # :nodoc:
SIZEOF = LibRubyParser.pm_string_sizeof
PLATFORM_EXPECTS_UTF8 =
RbConfig::CONFIG["host_os"].match?(/bccwin|cygwin|djgpp|mingw|mswin|wince|darwin/i)
attr_reader :pointer, :length
def initialize(pointer, length, from_string)
@ -200,7 +193,8 @@ module Prism
# On Windows and Mac, it's expected that filepaths will be encoded in
# UTF-8. If they are not, we need to convert them to UTF-8 before
# passing them into pm_string_mapped_init.
if PLATFORM_EXPECTS_UTF8 && (encoding = filepath.encoding) != Encoding::ASCII_8BIT && encoding != Encoding::UTF_8
if RbConfig::CONFIG["host_os"].match?(/bccwin|cygwin|djgpp|mingw|mswin|wince|darwin/i) &&
(encoding = filepath.encoding) != Encoding::ASCII_8BIT && encoding != Encoding::UTF_8
filepath = filepath.encode(Encoding::UTF_8)
end
@ -229,7 +223,7 @@ module Prism
private_constant :LibRubyParser
# The version constant is set by reading the result of calling pm_version.
VERSION = LibRubyParser.pm_version.read_string.freeze
VERSION = LibRubyParser.pm_version.read_string
class << self
# Mirror the Prism.dump API by using the serialization API.

View File

@ -1331,11 +1331,6 @@ Init_prism(void) {
);
}
#ifdef HAVE_RB_EXT_RACTOR_SAFE
// Mark this extension as Ractor-safe.
rb_ext_ractor_safe(true);
#endif
// Grab up references to all of the constants that we're going to need to
// reference throughout this extension.
rb_cPrism = rb_define_module("Prism");

View File

@ -592,7 +592,7 @@ module Prism
<%- tokens.each do |token| -%>
<%= token.name.to_sym.inspect %>,
<%- end -%>
].freeze
]
private_constant :MAJOR_VERSION, :MINOR_VERSION, :PATCH_VERSION
private_constant :ConstantPool, :FastStringIO, :Loader, :TOKEN_TYPES

View File

@ -1,61 +0,0 @@
# frozen_string_literal: true
return unless defined?(Ractor)
require_relative "test_helper"
module Prism
class RactorTest < TestCase
def test_version
refute_nil(with_ractor { Prism::VERSION })
end
def test_parse_file
assert_kind_of(Prism::Result, with_ractor(__FILE__) { |filepath| Prism.parse_file(filepath) })
end
def test_lex_file
assert_kind_of(Prism::Result, with_ractor(__FILE__) { |filepath| Prism.lex_file(filepath) })
end
def test_parse_file_comments
assert_kind_of(Array, with_ractor(__FILE__) { |filepath| Prism.parse_file_comments(filepath) })
end
def test_parse_lex_file
assert_kind_of(Prism::Result, with_ractor(__FILE__) { |filepath| Prism.parse_lex_file(filepath) })
end
def test_parse_success
assert(with_ractor("1 + 1") { |source| Prism.parse_success?(source) })
end
def test_parse_failure
assert(with_ractor("1 +") { |source| Prism.parse_failure?(source) })
end
def test_string_query_local
assert(with_ractor("foo") { |source| StringQuery.local?(source) })
end
def test_string_query_constant
assert(with_ractor("FOO") { |source| StringQuery.constant?(source) })
end
def test_string_query_method_name
assert(with_ractor("foo?") { |source| StringQuery.method_name?(source) })
end
if !ENV["PRISM_BUILD_MINIMAL"]
def test_dump_file
assert_kind_of(String, with_ractor(__FILE__) { |filepath| Prism.dump_file(filepath) })
end
end
private
def with_ractor(*arguments, &block)
ignore_warnings { Ractor.new(*arguments, &block) }.take
end
end
end