[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

[ruby] Proposal: ruby 1.6.8 for stable



Hi, Ruby users in debian.

Currently, we have ruby 1.6.7 in stable.  However, this version has
many functionality problem (*1), so upstream released 1.6.8 in stable
branch on 2002-12-24. For half a year since 1.6.8 released, there are 
a few important problem found in 1.6.8 compared with 1.6.7.

So, we, debian ruby maintainance team (akira, tagoh, ukai), are considering
to upgrade ruby to 1.6.8 in stable (stable-proposed-updates). 
I believe this upgrade won't break any ruby scripts and modules in stable.

Backporting only important functionality fixes is another option, but
I'm afraid that it would introduce another problem by backporting since 
there are many fixes. Ruby 1.6.8 package is known to work in unstable for
long time.  So, we prefer 1.6.8 to backporting.

Any comments?

Regards,
Fumitoshi UKAI

(*1) 
http://www.ruby-lang.org/ja/man-1.6/index.cgi?cmd=view;name=ruby+1.6+feature
Yes, this is written in Japanese. So, I've attached breif translation
only 1.6.7 -> 1.6.8.

1.6.7 (2002-03-01) -> 1.6.8 (2002-12-24)
2002-10-02: Thread (cygwin)
    Cygwin's Thread switch problem fixed [ruby-list:36058], [ruby-list:24637]
   
2002-10-01: Socket (win)
   
    Windows socket problem fixed [ruby-talk:40015], [ruby-win32:366]
   
2002-09-12: Thread.status (?)
   
    When signal is trapped by 'trap', thread status was not preserved, so
    that thread status sometimes become strange if interrupted by signal.
    [ruby-talk:40337], [ruby-core:00019]
   
2002-09-11: Queue#pop
   
    Queue#pop race condition fixed [ruby-dev:17223]
   
2002-09-11: SizedQueue.new
   
    fix bug to accept negative integer as argument.
   
2002-09-05: expression interpolation
   
    feature changes in stable snapshot was reverted.

    p "#{ "" }"
    
    => ruby 1.6.7 (2002-03-01) [i586-linux]
       ""
    
    => -:1: warning: bad substitution in string
       ruby 1.6.7 (2002-09-12) [i586-linux]
       "#{  }"
    
    => ruby 1.6.7 (2002-09-25) [i586-linux]
       ""

    Note that this is not backport from 1.7.

    p "#{ "" # comment }"
    => ruby 1.6.8 (2002-10-04) [i586-linux]
       ""
    => -:1: parse error
       ruby 1.7.3 (2002-10-04) [i586-linux]
    
SizedQueue#deq, #shift
SizedQueue#enq
   
    added(aliases to push, pop).
    Since these were not undefiend, enq will use method in superclass Queue.
   
2002-09-11: Tempfile#size
   
    Added [ruby-dev:17221]
   
2002-09-09
   
    fix bug not to set environment variable to child process in mswin32/mingw32
    version since 1.6.6 [ruby-dev:18236]
   
2002-09-03
   
    Great performance improvement.
    Ruby compiled by using bison become much faster when load library 
    many times. [ruby-dev:18145]
   
2002-08-20 File.expand_path
   
    fix bugs for Cygwin 1.3.x [ruby-bugs-ja:PR#299]
    
    p File.expand_path('file', 'c:/')
    
    => ruby 1.6.7 (2002-03-01) [i586-linux]
       /tmp/c:/file
    => ruby 1.6.7 (2002-08-21) [i586-linux]
       c:/file
    
2002-08-19 Thread (win)
   
    fix bugs that ruby was dead if you use both Ruby's thread and Win32
    structured exception (including callbacks from Win32 API).[ruby-win32:273]
   
2002-08-12 Hash#==
   
    Default values of Hash object are considered equal when equal 
    by '==' method.
    
    p Hash.new("foo") == Hash.new("bar")
    
    => ruby 1.6.7 (2002-03-01) [i586-linux]
       true
    => ruby 1.6.7 (2002-08-21) [i586-linux]
       false

2002-07-11 String#slice!

    ruby 1.6.7 raise exception if out of range string is used.
    ruby 1.6.8 always return nil. (same as String#[], String#slice)
    
    p "foo".slice!("bar")   # <- return nil in ruby 1.6.7 or prior
    p "foo".slice!(5,10)
    
    => ruby 1.6.7 (2002-03-01) [i586-linux]
       nil
       -:2:in `slice!': index 5 out of string (IndexError)
            from -:2
    => ruby 1.6.7 (2002-08-01) [i586-linux]
       nil
       nil

2002-07-05 String#split
   
    ruby 1.6.8 accept nil for first argument.[ruby-talk:43513] 
    In this case, $; is used for separator.
    ruby 1.6.7 uses $; only when argument is omitted.
    
    $; = ":"
    p "a:b:c".split(nil)
    => -:2:in `split': bad separator (ArgumentError)
            from -:2
       ruby 1.6.7 (2002-03-01) [i586-linux]
    
    => ruby 1.6.7 (2002-07-30) [i586-linux]
       ["a", "b", "c"]

2002-06-15 Dir.glob
   
    ruby 1.6.7 doesn't match dangling symlink by Dir.glob.

    File.symlink("foo", "bar")
    p Dir.glob("bar")
    => ruby 1.6.7 (2002-03-01) [i586-linux]
       []
    => ruby 1.6.7 (2002-08-01) [i586-linux]
       ["bar"]
    
2002-06-13 Hash[]
   
    ruby 1.6.7 doesn't dup & freeze key string in Hash[].
    
    a = "key"
    h = Hash[a,"val"]
    h.keys[0].upcase!
    p a
    => ruby 1.6.7 (2002-03-01) [i586-linux]
       "KEY"
    => -:3:in `upcase!': can't modify frozen string (TypeError)
            from -:3
       ruby 1.6.7 (2002-08-01) [i586-linux]

2002-06-10 Fixnum#>>, <<
   
    By shifing negative integer to right, you may get 0 in ruby 1.6.7
    [ruby-bugs-ja:PR#247]
   
    Strange behaviour to shift left with negative argument, that means 
    to shift right, in ruby 1.6.7. [ruby-bugs-ja:PR#248]
    
    p(-1 >> 31)
    => ruby 1.6.7 (2002-03-01) [i586-linux]
       0
    => ruby 1.6.7 (2002-08-01) [i586-linux]
       -1
    
    p(-1 << -1)
    => ruby 1.6.7 (2002-03-01) [i586-linux]
       -2147483649
    => ruby 1.6.7 (2002-08-01) [i586-linux]
       -1

2002-06-05
Math.acosh
Math.asinh
Math.atanh
   
    Added
   
2002-06-03
String#[]=
   
    ruby 1.6.7 returns rvalue if receiver doesn't have such index key string.
    ruby 1.6.8 raise IndexError exception in such a case.
    
    foo = "foo"
    p foo["bar"] = "baz"
    p foo
    
    => ruby 1.6.7 (2002-03-01) [i586-linux]
       "baz"
       "foo"
    => -:2:in `[]=': string not matched (IndexError)
            from -:2
       ruby 1.6.7 (2002-07-30) [i586-linux]
    
2002-06-03 sprintf()
   
    ruby 1.6.8 follow same rule of type conversion for "%d" in format string
    with Integer.
    
    p sprintf("%d", nil)
    
    => -:1:in `sprintf': no implicit conversion from nil (TypeError)
            from -:1
       ruby 1.6.7 (2002-03-01) [i586-linux]
    
    => ruby 1.6.7 (2002-07-30) [i586-linux]
       "0"

2002-05-23 -* option(?)
   
    ruby 1.6.7 accept the following line
   
    #! ruby -*- mode: ruby -*-

    ruby 1.6.8 don't.  
    Put -*- line for Emacs in 2nd line not 1st line as above.
    [ruby-dev:17193]
   
    ruby '-*' -v
    => ruby 1.6.7 (2002-03-01) [i586-linux]
    
    => ruby: invalid option -*  (-h will show valid options)
    

2002-05-22 parsedate
   
    version up [ruby-dev:17171]
   
2002-05-22 -T option
   
    ruby 1.6.7 ignores options after -T if you put options after -T without
    spaces.
    ruby 1.6.8 considers such options if -T is followed by non-digit.
    (same as -0 option)
    [ruby-dev:17179]
   
    ruby -Tv  # -v is ignored (ruby 1.6.7 (2002-03-01) [i586-linux])
    
    => ruby: No program input from stdin allowed in tainted mode (SecurityError)
    
    => ruby 1.6.7 (2002-07-30) [i586-linux]
    

2002-05-20 IO#close
   
    ruby 1.6.7 raise error if you close_write dupped bidirectional pipe.
    [ruby-dev:17155]
   
    open("|-","r+") {|f|
      if f
        f.dup.close_write
      else
         sleep 1
      end
    }
    
    => ruby 1.6.7 (2002-03-01) [i586-linux]
       -:3:in `close_write': closing non-duplex IO for writing (IOError)
            from -:3
            from -:1:in `open'
            from -:1
    
    
    => ruby 1.6.7 (2002-07-30) [i586-linux]
    
2002-05-02 Regexp.quote
   
    ruby 1.6.8 quotes # with backslash, so that you can use
    quoted regexp in //x [ruby-bugs-ja:PR#231]
    
    p Regexp.quote("#")
    
    p /a#{Regexp.quote("#")}b/x =~ "ab"
    
    => -:3: warning: ambiguous first argument; make sure
       ruby 1.6.7 (2002-03-01) [i586-linux]
       "#"
       0
    
    => -:3: warning: ambiguous first argument; make sure
       ruby 1.6.7 (2002-07-30) [i586-linux]
       "\\#"
       nil
    
2002-04-29: rb_find_file()
   
    ruby 1.6.8 raises SecurityError for non absolute path in $SAFE >= 4.
   
2002-04-26: Regexp.quote
   
    ruby 1.6.8 quotes \ with backslash, so that you can use
    quoted regexp in //x [ruby-bugs-ja:PR#231]
    
    p Regexp.quote("\t")
    
    p /a#{Regexp.quote("\t")}b/x =~ "ab"
    
    => -:3: warning: ambiguous first argument; make sure
       ruby 1.6.7 (2002-03-01) [i586-linux]
       "\t"
       0
    
    => -:3: warning: ambiguous first argument; make sure
       ruby 1.6.7 (2002-05-04) [i586-linux]
       "\\t"
       nil
    
2002-04-20: Regexp#inspect
   
    In ruby 1.6.7, inspect for Regexp object with /x flag converts
    newline to \n [ruby-bugs-ja:PR#225]
    
    p /a
            b/x
    
    => -:1: warning: ambiguous first argument; make sure
       ruby 1.6.7 (2002-03-01) [i586-linux]
       /a\n                b/x
    
    => -:1: warning: ambiguous first argument; make sure
       ruby 1.7.2 (2002-04-24) [i586-linux]
       /a
                       b/x

2002-04-19: termination
   
    Fix bug that you need send a signal twice for the following script.
    [ruby-bugs-ja:PR#223]
   
    trap(:TERM, "EXIT")
    
    END{
      puts "exit"
    }
    
    Thread::start{ Thread::stop }
    sleep
    
2002-04-17: Regexp#inspect
   
    [ruby-bugs-ja:PR#222]
   
    p %r{\/}
    
    => ruby 1.6.7 (2002-03-01) [i586-linux]
       /\\//
    
    => ruby 1.6.7 (2002-05-04) [i586-linux]
       /\//
    
2002-04-15: pack('U')
   
    Fix bug that pack('U') and unpack('U') are not reverse function.
    (unpack process by character, not by byte) [ruby-bugs-ja:PR#220]
    
    p [128].pack("U")
    p [128].pack("U").unpack("U")
    
    => ruby 1.6.7 (2002-03-01) [i586-linux]
       "\302\200"
       [0]
    
    => ruby 1.6.7 (2002-05-04) [i586-linux]
       "\302\200"
       [128]
    
2002-04-11: IO#write
   
    Fix bug to fail to detect EPIPE on socket or pipe.
    [ruby-dev:16849]
   
2002-04-11: cgi/session.rb
   
    support for multipart form.
   
2002-04-10: Object#remove_instance_variable
   
    ruby 1.6.8 raises NameError if specified instance variable is undefined.
    [ruby-bugs-ja:PR#216]

    Object.new.instance_eval {
      p remove_instance_variable :@foo
    }
    => ruby 1.6.7 (2002-03-01) [i586-linux]
       nil
    
    => -:2:in `remove_instance_variable': instance variable @foo not defined (NameError)
       ruby 1.6.7 (2002-04-10) [i586-linux]
    
2002-04-04: Integer#step
   
    ruby 1.6.7 raises ArgumentError if 2nd argument is less than 1
    because it is considerd as 0.
    ruby 1.6.8 works.
    
    1.step(2, 0.1) {|f| p f }
    
    => -:1:in `step': step cannot be 0 (ArgumentError)
            from -:1
       ruby 1.6.7 (2002-03-01) [i586-linux]
    
    => ruby 1.6.7 (2002-04-10) [i586-linux]
       1
       1.1
        :
       1.9
    
2002-04-01: $~
   
    You can't assign nil to $~ in ruby 1.6.7.
    ruby 1.6.8 accept such operation.[ruby-dev:16697]
    
    /foo/ =~ "foo"
    p $~
    $~ = nil
    p $~
    => ruby 1.6.7 (2002-03-01) [i586-linux]
       #<MatchData:0x401b1be4>
       -:3: wrong argument type nil (expected Match) (TypeError)
                                              ^^^^^ MatchData 
    => ruby 1.6.7 (2002-04-04) [i586-linux]
       #<MatchData:0x401b1c98>
       nil
    

2002-03-25 BasicSocket.do_not_reverse_lookup
   
    ruby 1.6.8 doesn't accept to set value when $SAFE > 3 [ruby-dev:16554]
   
2002-03-23 IO#read
   
    ruby 1.6.7 fails to File#read file with size 0 but with contents
    (for example, in Linux's procfs)
    ruby 1.6.8 can read such files.
    
    p File.open("/proc/#$$/cmdline").read
    
    => ruby 1.6.7 (2002-03-01) [i586-linux]
       ""
    
    => ruby 1.6.7 (2002-03-29) [i586-linux]
       "ruby-1.6\000-v\000-"
    
2002-03-22 module_eval
   
    ruby 1.6.8 doesn't change scope of constant or class variable in 
    module_eval block. [ruby-dev:17876]
    
    class Foo
      FOO = 1
      @@foo = 1
    end
    
    FOO = 2
    @@foo = 2
    
    Foo.module_eval { p FOO, @@foo }
    
    => ruby 1.6.7 (2002-03-01) [i586-linux]
       1
       1
    
    => ruby 1.6.7 (2002-03-29) [i586-linux]
       2
       2
    

2002-03-22 net/http.rb
   
    ruby 1.6.7 returns nil if Net::HTTP.new has no block.
    [ruby-bugs-ja:PR#214]
   
    Note that net/protocol.rb will be deprecated.
   
2002-03-20 File.expand_path
   
   Fix memory leak [ruby-bugs:PR#276]
   
2002-03-18 String literal
   
    fix improper handling kanji character in #{..}
    [ruby-list:34478]
    
    #! ruby -Ks
    p a = "#{"表"}"
    => -:1: compile error in string expansion (SyntaxError)
       -:1: unterminated string meets end of file
       ruby 1.6.7 (2002-03-15) [i586-linux]
    => ruby 1.6.7 (2002-03-19) [i586-linux]
       "表"
    
    #! ruby -Ks
    p %[評価]
    => -:2: parse error
               p %[評価]
                       ^
       ruby 1.6.7 (2002-03-15) [i586-linux]
    
    => ruby 1.6.7 (2002-03-19) [i586-linux]
       "評価"
    
2002-03-16 $~
   
    ruby 1.6.7 doesn't clear $~ when regexp match method doesn't do matching
    actually. [ruby-bugs-ja:PR#208]
    
    /foo/ =~ "foo"
    /foo/ =~ nil
    p $~
    
    /foo/ =~ "foo"
    $_ = nil; ~"foo"
    p $~
    
    /foo/ =~ "foo"
    "foo".index(/bar/, 4)
    p $~
    
    /foo/ =~ "foo"
    "foo".rindex(/bar/, -4)
    p $~
    
    => ruby 1.6.7 (2002-03-06) [i586-linux]
       #<MatchData:0x401b1be4>
       #<MatchData:0x401b198c>
       #<MatchData:0x401b1644>
       #<MatchData:0x401b1414>
    => ruby 1.6.7 (2002-03-19) [i586-linux]
       nil
       nil
       nil
       nil
    
2002-03-14 autoload of extension library
   
    ruby 1.6.7 can't autoload extension library [ruby-dev:16379]
   
    autoload :Fcntl, "fcntl"
    require "fcntl"
    
    => -:2:in `require': uninitialized constant Fcntl (NameError)
            from -:2
       ruby 1.6.7 (2002-03-01) [i586-linux]
    
    => ruby 1.6.7 (2002-03-15) [i586-linux]
    
2002-03-13 getopts.rb
   
    refine. [ruby-dev:16193], [ruby-dev:16213]
   
2002-03-11 octal code in regexp
   
    ruby 1.6.7 accept 4-octal if first number is 0 in \nnn in regexp.
    。[ruby-bugs-ja:PR#207]
   
    p /\0001/ =~ "\0001"   # equivalent to "\0" + "1"
    => -:1: warning: ambiguous first argument; make sure
       ruby 1.6.7 (2002-03-01) [i586-linux]
       nil
    => -:1: warning: ambiguous first argument; make sure
       ruby 1.6.7 (2002-03-15) [i586-linux]
       0
    
2002-03-11 trap
   
    [ruby-bugs-ja:PR#206]
   
    trap('EXIT','Foo')
    => -:1: [BUG] Segmentation fault
       ruby 1.6.7 (2002-03-01) [i586-linux]
    => ruby 1.6.7 (2002-03-15) [i586-linux]
    
2002-03-10 return value of method
   
    fix return values of the following methods [ruby-bugs-ja:PR#205]
   
     - each_with_index should return self (ruby 1.6.7, return nil)
     - Process.setpgrp return unspecified in ruby 1.6.7
     - ljust, rjust, center should return dupped string even if same result

2002-03-08 class variable
   
    [ruby-talk:35122]
   
    class C
      class << self
        def test
          @@cv = 5
          p @@cv
        end
      end
    
      test
    end
    => -:5:in `test': uninitialized class variable @@cv in C (NameError)
            from -:9
       ruby 1.6.7 (2002-03-01) [i586-linux]
    
    => ruby 1.6.6 (2001-12-26) [i586-linux]
       5
    
2002-03-03 Marshal.load
   
    Marshal.load uses Proc#yield which is a mathod introduced in ruby 1.7
    [ruby-dev:16178]
   
    Marshal.load(Marshal.dump('foo'), proc {|o| p o})
    => -:1:in `load': undefined method `yield' for #<Proc:0x401b1b30> (NameError)
            from -:1
       ruby 1.6.7 (2002-03-01) [i586-linux]
    
    => ruby 1.6.6 (2001-12-26) [i586-linux]
       "foo"
    



Reply to: