Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Unimplemented Ruby 2.4 features #4687

Open
4 of 17 tasks
headius opened this issue Jun 26, 2017 · 3 comments
Open
4 of 17 tasks

Unimplemented Ruby 2.4 features #4687

headius opened this issue Jun 26, 2017 · 3 comments

Comments

@headius
Copy link
Member

headius commented Jun 26, 2017

This issue tracks the new features and failing specs/tests we did not get implemented in time for release of Ruby 2.4 support in JRuby 9.2. We will work with users to get as many of these remaining features implemented as possible.

See #4293 for the original 2.4 support issue.

The checklist below is transferred from #4293 based on MRI's NEWS. It is only as complete as that file, so see also the tags and excludes from specs and tests associated with this issue, and see other issues linked to this one.

Language changes

  • Refinements is enabled at method by Symbol#to_proc. Feature #9451

  • Refinements is enabled with Kernel#send and BasicObject#__send__. Feature #11476

Core classes updates (outstanding ones only)

Stdlib updates (only items that need specific attention in JRuby)

  • Readline

    • Readline.quoting_detection_proc and Readline.quoting_detection_proc= Feature #12659

Compatibility issues (excluding feature bug fixes)

Implementation improvements

  • In some condition, [x, y].max and [x, y].min are optimized so that a temporal array is not created. The concrete condition is an implementation detail: currently, the array literal must have no splat, must have at least one expression but literal, the length must be <= 0x100, and Array#max and min must not be redefined. It will work in most casual and real-life use case where it is written with intent to Math.max(x, y).

  • Thread deadlock detection now shows their backtrace and dependency. Feature #8214

  • st_table (st.c) internal data structure is improved. Feature #12142

  • Rational is extensively optimized. Feature #12484

@headius
Copy link
Member Author

headius commented Jun 26, 2017

Specs tagged:

Array#concat concatenates the initial value when given arguments contain 2 self
Enumerable#uniq when yielded with multiple arguments returns all yield arguments as an array
Enumerator::Lazy#uniq when yielded with multiple arguments returns all yield arguments as an array
Process.spawn with Integer option keys maps the key to a file descriptor in the child that inherits the file descriptor from the parent specified by the value
String#capitalize works for all of Unicode
String#downcase works for all of Unicode
String#swapcase works for all of Unicode
String#upcase works for all of Unicode

@headius
Copy link
Member Author

headius commented Jun 26, 2017

MRI excludes:

TestException:

exclude :test_name_error_info_method, "method_missing errors do not have original call type available"
exclude :test_name_error_info_method_missing, "method_missing errors do not have original call type available"
exclude :test_redefined_backtrace, "Our backtrace is lazily set up and the flow does not work with this change"

More spec tags:

Regexps with repetition does not treat {m,n}+ as possessive
BigDecimal#> properly handles NaN values
BigDecimal#>= properly handles NaN values
BigDecimal#inspect looks like this
BigDecimal#< properly handles NaN values
BigDecimal#<= properly handles NaN values
BigDecimal.new raises ArgumentError for invalid strings

@eregon
Copy link
Member

eregon commented Oct 6, 2017

For information, ruby/spec#473 is the list of missing specs for 2.4. If you want/need more tests/specs for a feature, please consider contributing specs (directly in the jruby repo, that's fine) 😃

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants