[#59462] [ruby-trunk - Bug #9342][Open] [PATCH] SizedQueue#clear does not notify waiting threads in Ruby 1.9.3 — "jsc (Justin Collins)" <redmine@...>

9 messages 2014/01/02

[#59466] [ruby-trunk - Bug #9343][Open] [PATCH] SizedQueue#max= wakes up waiters properly — "normalperson (Eric Wong)" <normalperson@...>

11 messages 2014/01/02

[#59498] [ruby-trunk - Bug #9352][Open] [BUG] rb_sys_fail_str(connect(2) for [fe80::1%lo0]:3000) - errno == 0 — "kain (Claudio Poli)" <claudio@...>

10 messages 2014/01/03

[#59516] [ruby-trunk - Bug #9356][Open] TCPSocket.new does not seem to handle INTR — "charliesome (Charlie Somerville)" <charliesome@...>

48 messages 2014/01/03

[#59538] [ruby-trunk - Feature #9362][Assigned] Minimize cache misshit to gain optimal speed — "shyouhei (Shyouhei Urabe)" <shyouhei@...>

33 messages 2014/01/03
[#59582] Re: [ruby-trunk - Feature #9362][Assigned] Minimize cache misshit to gain optimal speed — SASADA Koichi <ko1@...> 2014/01/06

Intersting challenge.

[#59541] Re: [ruby-trunk - Feature #9362][Assigned] Minimize cache misshit to gain optimal speed — Eric Wong <normalperson@...> 2014/01/04

Hi, I noticed a trivial typo in array.c, and it fails building struct.c

[#59583] [ruby-trunk - Bug #9367][Open] REXML::XmlDecl doesn't use user specified quotes — "bearmini (Takashi Oguma)" <bear.mini@...>

12 messages 2014/01/06

[#59642] [ruby-trunk - Bug #9384][Open] Segfault in ruby 2.1.0p0 — "cbliard (Christophe Bliard)" <christophe.bliard@...>

11 messages 2014/01/08

[#59791] About unmarshallable DRb objects life-time — Rodrigo Rosenfeld Rosas <rr.rosas@...>

A while ago I created a proof-of-concept that I intended to use in my

16 messages 2014/01/15
[#59794] Re: About unmarshallable DRb objects life-time — Eric Hodel <drbrain@...7.net> 2014/01/15

On 15 Jan 2014, at 11:58, Rodrigo Rosenfeld Rosas <rr.rosas@gmail.com> wrote:

[#59808] Re: About unmarshallable DRb objects life-time — Rodrigo Rosenfeld Rosas <rr.rosas@...> 2014/01/16

Em 15-01-2014 19:42, Eric Hodel escreveu:

[#59810] Re: About unmarshallable DRb objects life-time — Eric Hodel <drbrain@...7.net> 2014/01/16

On 16 Jan 2014, at 02:15, Rodrigo Rosenfeld Rosas <rr.rosas@gmail.com> wrote:

[#59826] Re: About unmarshallable DRb objects life-time — Rodrigo Rosenfeld Rosas <rr.rosas@...> 2014/01/17

Em 16-01-2014 19:43, Eric Hodel escreveu:

[#59832] Re: About unmarshallable DRb objects life-time — Eric Hodel <drbrain@...7.net> 2014/01/17

On 17 Jan 2014, at 04:22, Rodrigo Rosenfeld Rosas <rr.rosas@gmail.com> wrote:

[ruby-core:59602] [ruby-trunk - Bug #9340] Document order related behavior in Array#uniq

From: "tmm1 (Aman Gupta)" <ruby@...1.net>
Date: 2014-01-06 19:38:51 UTC
List: ruby-core #59602
Issue #9340 has been updated by tmm1 (Aman Gupta).

Assignee set to naruse (Yui NARUSE)
Target version set to next minor
% Done changed from 100 to 0
Backport changed from 1.9.3: UNKNOWN, 2.0.0: UNKNOWN, 2.1: UNKNOWN to 1.9.3: UNKNOWN, 2.0.0: UNKNOWN, 2.1: REQUIRED


----------------------------------------
Bug #9340: Document order related behavior in Array#uniq
https://bugs.ruby-lang.org/issues/9340#change-44131

Author: agrimm (Andrew Grimm)
Status: Closed
Priority: Normal
Assignee: naruse (Yui NARUSE)
Category: 
Target version: next minor
ruby -v: ruby 2.1.0p0 (2013-12-25 revision 44422) [x86_64-linux]
Backport: 1.9.3: UNKNOWN, 2.0.0: UNKNOWN, 2.1: REQUIRED


The behavior of Array#uniq without a block in Ruby 2.1.0 is inconsistent with the behavior of Array#uniq in Ruby 2.0.0, and with the behavior of Array#uniq with a block in Ruby 2.1.0.

Array#uniq without a block in Ruby 2.1.0 returns the last item that is duplicate, while everything else returns the first item that is duplicate.

    class Person
      attr_reader :name
    
      def initialize(id, name)
        # @id is not used by hash or eql?
        @id = id
        @name = name
      end
    
      def hash
        [@name].hash
      end
    
      def eql?(other)
        [@name].eql?([other.name])
      end
    end
    
    p1 = Person.new(1, "Bob")
    p2 = Person.new(2, "Bob")
    p3 = Person.new(3, "Bob")
    
    arr = [p1, p2, p3]
    arr2 = arr.uniq {|p| p}
    arr3 = arr.uniq
    p RUBY_VERSION
    p arr2
    p arr3

Gives

    "2.1.0"
    [#<Person:0x007f1b47ef7720 @id=1, @name="Bob">]
    [#<Person:0x007f1b47ef7680 @id=3, @name="Bob">]
    
    "2.0.0"
    [#<Person:0x007ffa9203bf30 @id=1, @name="Bob">]
    [#<Person:0x007ffa9203bf30 @id=1, @name="Bob">]

This behavior does not contradict what RDoc says about Array#uniq, so people ought not to rely upon which duplicate item is chosen. However, at the very least, different behavior for Array#uniq with and without a block would be somewhat unexpected.

Should the documentation explicitly warn that uniq is not guaranteed to choose the first duplicate item?

As Ruby 2.1.0 has already been released, I assume it is too late to change the behavior of Array#uniq .


-- 
http://bugs.ruby-lang.org/

In This Thread