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

Remaining 2.3 checklist items not in JRuby 9.1 #3816

Open
headius opened this issue Apr 20, 2016 · 2 comments
Open

Remaining 2.3 checklist items not in JRuby 9.1 #3816

headius opened this issue Apr 20, 2016 · 2 comments

Comments

@headius
Copy link
Member

@headius headius commented Apr 20, 2016

Here's the remaining checklist of changes needed to support Ruby 2.3. The original bulk was implemented in JRuby 9.1 for #3479.

This list is currently based on https://github.com/ruby/ruby/blob/v2_3_0/NEWS

Language changes

Core classes updates (outstanding ones only)

  • Encoding
    • new Encoding::IBM037 (alias ebcdic-cp-us; dummy)
  • Enumerator::Lazy
  • IO
  • Proc
    • Testing of Proc#call optimizations
  • RubyVM::InstructionSequence (May or may not be supportable in JRuby; very specific to MRI)
    • add the following methods as a primitive tool of iseq loader.
      See sample/iseq_loader.rb for usage.
      Note that loader does not have verifier so it is easy to cause
      critical problem by loading modified/broken binary data.
      See https://bugs.ruby-lang.org/issues/11788 for more details. (experimental feature)
      • RubyVM::InstructionSequence#to_binary(extra_data = nil)
      • RubyVM::InstructionSequence.load_from_binary(binary)
      • RubyVM::InstructionSequence.load_from_binary_extra_data(binary)

Core classes compatibility issues (excluding feature bug fixes)

  • File::Stat
    • On Windows File::Stat#ino always returned 0, but now returns
      BY_HANDLE_FILE_INFORMATION.nFileIndexHigh/Low.
  • pack/unpack (Array/String)

Stdlib updates (outstanding ones only)

Only items relevant to JRuby

  • Bundle did_you_mean gem #3480
  • ObjectSpace (objspace) (Most of these are specific to MRI and not relevant to JRuby)
    • ObjectSpace.count_symbols is added.
    • ObjectSpace.count_imemo_objects is added.
    • ObjectSpace.internal_class_of is added.
    • ObjectSpace.internal_super_of is added.
  • StringIO
    • In read-only mode, StringIO#set_encoding no longer sets the encoding
      of its buffer string. Setting the encoding of the string directly
      without StringIO#set_encoding may cause unpredictable behavior now.
      (https://bugs.ruby-lang.org/issues/11827)

Implementation improvements

Only items relevant to JRuby

  • Case dispatch is now optimized for all special constant literals
    including nil, true, and false. Previously, only literal strings,
    symbols, integers and floats compiled to optimized case dispatch.
    (https://bugs.ruby-lang.org/issues/11769) (We have implemented the Fixnum part of this in JRuby for #3513 and #3672 but are missing other types that MRI optimizes).
  • Instance variables on non-pure Ruby classes (T_DATA, T_FILE,
    etc..) is less expensive to store than before. (https://bugs.ruby-lang.org/issues/11170) (We have enabled reified instance variables in this release, where up to ten variables will be represented as Java fields. There is likely more we can do here.)
  • All accesses to members of big Struct objects are performed in
    constant-time. Previously, Struct elements beyond the first 10
    10 elements used a linear scan. (https://bugs.ruby-lang.org/issues/10585) (We should do a pass over our Struct class to look for opportunities. Most operations should already be constant time. A quick exploration revealed that #[] currently still does a linear search.)
  • CGI.escapeHTML is optimized with C extention.
    ruby/ruby#1164 (JRuby may want to follow suit if this is a commonly-called method.)
@headius headius added this to the JRuby 9.1.1.0 milestone Apr 20, 2016
@headius headius mentioned this issue Apr 20, 2016
50 of 58 tasks complete
@headius headius modified the milestones: JRuby 9.1.1.0, JRuby 9.1.2.0 May 11, 2016
@enebo enebo modified the milestones: JRuby 9.1.2.0, JRuby 9.1.3.0 May 23, 2016
headius added a commit that referenced this issue Aug 12, 2016
Also enable MRI's test_lazy_enumerator.rb.
@headius headius modified the milestones: JRuby 9.1.4.0, JRuby 9.1.3.0 Aug 12, 2016
@headius
Copy link
Member Author

@headius headius commented Aug 12, 2016

Got a few more in...punt the rest to 9.1.4.0.

@headius
Copy link
Member Author

@headius headius commented Nov 14, 2016

Ref #4293

headius added a commit that referenced this issue Dec 12, 2016
@headius headius modified the milestones: JRuby 9.2.0.0, JRuby 9.1.7.0 Dec 14, 2016
@headius headius removed this from the JRuby 9.2.0.0 milestone May 15, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked pull requests

Successfully merging a pull request may close this issue.

None yet
2 participants
You can’t perform that action at this time.