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

Comments

Projects
None yet
2 participants
@headius
Member

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 referenced this issue Apr 20, 2016

Closed

Ruby 2.3 support #3479

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

Add Enumerator::Lazy#grep_v for #3816
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

This comment has been minimized.

Show comment
Hide comment
@headius

headius Aug 12, 2016

Member

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

Member

headius commented Aug 12, 2016

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

@headius

This comment has been minimized.

Show comment
Hide comment
Member

headius commented Nov 14, 2016

Ref #4293

@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