[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: