Skip to content

Avoid direct constructors from JRuby#355

Merged
headius merged 2 commits intojruby:masterfrom
headius:no_string_constructors
Apr 9, 2026
Merged

Avoid direct constructors from JRuby#355
headius merged 2 commits intojruby:masterfrom
headius:no_string_constructors

Conversation

@headius
Copy link
Copy Markdown
Member

@headius headius commented Apr 8, 2026

The string class will be made abstract in the future. We should avoid using the direct constructors from now on.

These classes either have been made abstract or will be made
abstract in the future. We should avoid using the direct
constructors from now on.
headius added a commit to headius/jruby that referenced this pull request Apr 9, 2026
We would like to make RubyString abstract, so it can be represented
more efficiently when containing a single character or a Java
String. In order to do so, we need users to stop using the public
constructors.

This patch deprecates all of the constructors for removal. They
will not prevent compilation, but they should show up a bit more
boldly and most Java editing tools will highlight them as errors.

See jruby#9369 for the attempt to abstract RubyString. This
effort will be put on hold for now due to the many exposed
constructors.

See jruby/jruby-openssl#355 for an example of an external library
that was using these constructors directly.
headius added a commit to headius/jruby that referenced this pull request Apr 9, 2026
We would like to make RubyString abstract, so it can be represented
more efficiently when containing a single character or a Java
String. In order to do so, we need users to stop using the public
constructors.

This patch deprecates all of the constructors for removal. They
will not prevent compilation, but they should show up a bit more
boldly and most Java editing tools will highlight them as errors.

See jruby#9369 for the attempt to abstract RubyString. This
effort will be put on hold for now due to the many exposed
constructors.

See jruby/jruby-openssl#355 for an example of an external library
that was using these constructors directly.
This RubyString factory was added in 9.2.1.0. Since nobody should
expect support for 9.2.0.0 at this point, I am bumping the compile-
time dependency.
@headius headius merged commit e7eda5b into jruby:master Apr 9, 2026
22 checks passed
@headius headius deleted the no_string_constructors branch April 9, 2026 04: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.

1 participant