summaryrefslogtreecommitdiff
path: root/doc/NEWS
diff options
context:
space:
mode:
Diffstat (limited to 'doc/NEWS')
-rw-r--r--doc/NEWS285
1 files changed, 285 insertions, 0 deletions
diff --git a/doc/NEWS b/doc/NEWS
new file mode 100644
index 0000000000..703508ae2e
--- /dev/null
+++ b/doc/NEWS
@@ -0,0 +1,285 @@
+Summary of the changes since 1.6.3:
+
+: Hash#replace
+
+ Fixed so the following code does not fail in core dump.
+
+ h = { 10 => 100, 20 => 200 }
+ h2 = { }
+
+ h.each { |k, v|
+ if (k == 10)
+ h.delete(10)
+ h2.replace(h) # => Abort core dumped
+ end
+ }
+
+: File::unlink
+
+ Changed to be forbidden under $SAFE >= 2.
+
+: ruby -T4
+
+ Fixed. ARGV is now properly marked as tainted so ruby -T4 no longer
+ fails in SecurityError.
+
+: Regexp
+
+ Fixed. Now \1 .. \9 always mean backreferences, and referring to
+ unclosed/unmatched parentheses always fails.
+
+: String taint infection
+
+ Fixed for the following cases. [ruby-dev:13340]
+
+ # []=
+ s1 = "abc"
+ s2 = "cde".taint
+ s1[0]= s2
+ p s1.tainted? # => false
+
+ # crypt
+ s = "abc".taint
+ p s.crypt("cd").tainted? # => false
+
+ # ljust
+ s = "abc".taint
+ p s.ljust(10).tainted? # => false
+
+ # rjust
+ s = "abc".taint
+ p s.rjust(10).tainted? # => false
+
+ # center
+ s = "abc".taint
+ p s.center(10).tainted? # => false
+
+ Now they will all be marked as tainted.
+
+: rb_yield_0()
+
+ Fixed so it adjusts a 1-element array when yielded from C API, as
+ well. Previously, the following code produced a wrong result:
+
+ class X
+ include Enumerable
+
+ def each(&block)
+ block.call(1)
+ block.call(2)
+ block.call(3)
+ end
+ end
+
+ x = X.new
+ p x.to_a #=> [[1], [2], [3]]
+
+ Now it properly produces [1, 2, 3].
+
+: $SAFE
+
+ Fixed so aliasing global valiables is disallowed under $SAFE = 4.
+ ((<ruby-dev:13287>))
+
+: Open3::popen3
+
+ Fixed to do exit! instead of exit so the dying process does not
+ invoke at_exit. ((<ruby-dev:13170>))
+
+: SizedQueue#pop
+
+ Fixed so the following code does not cause a dead lock.
+ ((<ruby-dev:13169>))
+
+ ruby -r thread -e 'q = SizedQueue.new(1); q.push(1);'
+ -e 'Thread.new{sleep 1; q.pop}; q.push(1);'
+
+: SizedQueue#max=
+
+ Fixed so it really works. ((<ruby-dev:13170>))
+
+: Queue
+: SizedQueue
+
+ Fixed to rescue ThreadError in case the thread is dead just before
+ calling Thread#run. ((<ruby-dev:13194>))
+
+: Array#&
+: Array#|
+: Array#uniq
+
+ Fixed so they do not freeze the elements. ((<ruby-list:29665>))
+
+ (%w(foo bar) & %w(foo baz))[0].upcase!
+ => -:1:in `upcase!': can't modify frozen string (TypeError)
+
+ %w(foo bar bar baz).uniq[0].upcase!
+ => -:1:in `upcase!': can't modify frozen string (TypeError)
+
+: shell.rb
+
+ shell.rb 0.6 is newly imported as a standard library, along with
+ documents.
+
+: forwardable.rb
+
+ forwardable.rb 1.1 is newly imported as a standard library, along with
+ documents.
+
+: irb & irb-tools
+
+ irb and irb-tolls are updated to 0.7.4 and 0.7.1, respectively.
+
+: Daylight saving time
+
+ Fixed so it is handled correctly. [ruby-bugs-ja (PR#46)]
+
+ env TZ=America/Managua ruby -e 'p Time.local(1998,12,1,0,59,59)'
+ => Mon Nov 30 01:59:59 EST 1998
+ env TZ=America/Managua ruby -e 'p Time.local(1998,12,1,0,59,59).tv_sec'
+ => 912409199
+
+: SIGINFO
+
+ Support SIGINFO of 4.4BSD. [ruby-bugs-ja (PR#45)]
+
+: Modifier rescue
+
+ Fixed so the following code does not emit a parse error any more.
+ ((<ruby-dev:13073>)), ((<ruby-dev:13292>))
+
+ raise "" rescue []
+ raise "" rescue (p "foo"; true)
+ raise "" rescue -1
+ raise "" rescue (-1)
+
+: Thread
+
+ Fixed so the following code does not cause a dead lock any more.
+
+ Thread.start { Thread.stop }
+ sleep
+
+ => deadlock 0x40199b58: 2:0 - -:1
+ deadlock 0x401a2528: 2:4 (main) - -:2
+ -:2:in `sleep': Thread: deadlock (fatal)
+ from -:2
+ ruby 1.6.3 (2001-03-19) [i586-linux]
+
+: Module#const_defined?
+: Module#const_get
+: Module#const_set
+
+ Fixed so they do not access to anything other than constants.
+ ((<ruby-dev:13019>))
+
+: Marshal.dump
+
+ Improved so it dumps Float with better precision: "%.12g" -> "%.16g"
+ ((<ruby-list:29349>))
+
+: Fixnum#[]
+
+ Fixed a bug on the platforms which sizeof(long) > sizeof(int).
+
+: Regular Expression
+
+ Fixed a couple of minor bugs. ((<ruby-talk:13658>)), ((<ruby-talk:13744>))
+
+: retry
+
+ Fixed so the following code works correctly again. ((<ruby-talk:13957>))
+
+ def WHILE(cond)
+ return if not cond
+ yield
+ retry
+ end
+
+ i=0
+ WHILE(i<3) {
+ print i
+ i+=1
+ }
+
+ ruby 1.6.2 (2000-12-25) [i586-linux]
+ => 012
+
+ ruby 1.6.3 (2001-03-19) [i586-linux]
+ => 0
+
+ ruby 1.6.4 (2001-05-02) [i586-linux]
+ => 012
+
+: ((<File::Stat>))#size
+
+ Fixed to return a correct value for files larger than 1G bytes.
+
+ File.open("/tmp/1GB", "w") {|f|
+ f.seek(2**30-1, 0)
+ f.puts
+ f.flush
+ p f.stat.size
+ }
+
+ # => ruby 1.6.3 (2001-04-03) [i586-linux]
+ -1073741824
+ # => ruby 1.6.4 (2001-04-19) [i586-linux]
+ 1073741824
+
+: ((<Float>))#modulo, ((<Float>))#divmod
+
+ Fixed. ((<ruby-dev:12718>))
+
+: ((<ObjectSpace>))#_id2ref
+
+ Fixed so it does not raise a exception.
+
+: recursive malloc problem
+
+ Fixed by preallocating a buffer for stdio using setvbuf().
+ ((<ruby-dev:12795>))
+
+: ((<File>))#flock
+
+ Fixed so it does not raise Errno::EACCES when the file to flock is
+ already locked. (only applicable to the platforms which lack
+ flock())
+
+: ((<File::Stat>)).new(filename)
+
+ Added. ((<ruby-dev:12803>))
+
+: ((<Bignum>))#% miscalculation
+
+ (Re-)Fixed.
+
+ a = 677330545177305025495135714080
+ b = 14269972710765292560
+ p a % b #=> 0
+ p -a % b #=>
+
+ => ruby 1.6.3 (2001-04-02) [i386-cygwin]
+ 0
+ 14269972710765292560
+
+ => ruby 1.6.4 (2001-04-19) [i586-linux]
+ 0
+ 0
+
+: ((<Marshal>))
+
+ Fixed so a Bignum is properly restored through dump & load.
+
+: Universal Naming Convention(UNC) support (win32)
+
+ Added. Now the UNC form (//host/share) is supported. Use slash
+ (`(({/}))') instead of backslash (`(({\}))') for separating
+ components.
+
+: ((<Dir>)).glob (win32)
+
+ Fixed so it works for the current directory as well.
+
+ p Dir["./*.c"]
+ => []