Skip to content

Consider .class a source extension during search#9006

Merged
headius merged 2 commits intojruby:masterfrom
headius:explicit_class_require
Sep 29, 2025
Merged

Consider .class a source extension during search#9006
headius merged 2 commits intojruby:masterfrom
headius:explicit_class_require

Conversation

@headius
Copy link
Member

@headius headius commented Sep 14, 2025

The logic here was ported from CRuby, which only considers .rb to be a source extension. This causes our logic to think a filename like "foo.class" is not a source file and try to load it as either "foo.class.rb" or "foo.class.class". This is the cause of #8758 and prevents explicitly loading precompiled Ruby sources using the filename with .class extension.

The fix here modifies the source extension check to also consider other configured source extensions, so that when .class searching is enabled, we will properly treat require "foo.class" as a source file.

Fixes #8758

This affects all releases since 9.3.0.0 and could be backported all the way if we choose.

The logic here was ported from CRuby, which only considers .rb to
be a source extension. This causes our logic to think a filename
like "foo.class" is not a source file and try to load it as either
"foo.class.rb" or "foo.class.class". This is the cause of jruby#8758 and
prevents explicitly loading precompiled Ruby sources using the
filename with .class extension.

The fix here modifies the source extension check to also consider
other configured source extensions, so that when .class searching
is enabled, we will properly treat `require "foo.class"` as a
source file.

Fixes jruby#8758
@headius headius added this to the JRuby 10.0.3.0 milestone Sep 14, 2025
This enables precompiled .class files to be loaded with require,
since that behavior was made optional in JRuby 9.3, and adds a
test that confirms it works for a full filename, reported as
broken in jruby#8758.
@headius headius merged commit a8318f6 into jruby:master Sep 29, 2025
74 checks passed
@headius headius deleted the explicit_class_require branch September 29, 2025 22:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Require is not working for .class file if the class is inside a module since 9.3.0

1 participant