[#67346] Future of test suites for Ruby — Charles Oliver Nutter <headius@...>
I'll try to be brief so we can discuss all this. tl;dr: RubySpec is
19 messages
2015/01/05
[#67353] Re: Future of test suites for Ruby
— Tanaka Akira <akr@...>
2015/01/05
2015-01-06 7:18 GMT+09:00 Charles Oliver Nutter <headius@headius.com>:
[#67444] [ruby-trunk - Feature #10718] [Open] IO#close should not raise IOError on closed IO objects. — akr@...
Issue #10718 has been reported by Akira Tanaka.
3 messages
2015/01/09
[#67689] Keyword Arguments — Anthony Crumley <anthony.crumley@...>
Please forgive my ignorance as I am new to MRI development and am still
5 messages
2015/01/20
[#67733] [ruby-trunk - Bug #10761] Marshal.dump 100% slower in 2.2.0 vs 2.1.5 — normalperson@...
Issue #10761 has been updated by Eric Wong.
4 messages
2015/01/21
[#67736] Re: [ruby-trunk - Bug #10761] Marshal.dump 100% slower in 2.2.0 vs 2.1.5
— Eric Wong <normalperson@...>
2015/01/22
normalperson@yhbt.net wrote:
[#67772] Preventing Redundant Email Messages — Jeremy Evans <code@...>
For a long time, I've wondered why I sometimes receive redundant email
5 messages
2015/01/23
[ruby-core:67417] [ruby-trunk - Bug #10713] Assigning default value for a Hash as an empty Array creating unpredictable results
From:
halostatue@...
Date:
2015-01-08 01:38:21 UTC
List:
ruby-core #67417
Issue #10713 has been updated by Austin Ziegler.
It's quite expected because the default array is created exactly once:
=20
letters =3D Hash.new([])
letters.default.object_id # =3D> 70310393550400
letters[:a].object_id # =3D> 70310393550400
letters[:b].object_id # =3D> 70310393550400
=20
The pattern that Arvinder *wants* is:
=20
letters =3D Hash.new { |h, k| h[k] =3D [] }
letters.default # =3D> nil
letters.default_proc # =3D> #<Proc:0x007fe4d4099988@(irb):7>
letters[:a].object_id # =3D> 70310393174180
letters[:b].object_id # =3D> 70310393171680
=20
It's possible to make the correct pattern do the "wrong thing":
=20
array =3D []
array.object_id # =3D> 70310393550400
letters =3D Hash.new { |h, k| h[k] =3D array }
letters.default # =3D> nil
letters.default_proc # =3D> #<Proc:0x007fe4d4099988@(irb):7>
letters[:a].object_id # =3D> 70310393550400
letters[:b].object_id # =3D> 70310393550400
=20
-a
=20
On Wed, Jan 7, 2015 at 8:16 PM, <duerst@it.aoyama.ac.jp> wrote:
=20
> Issue #10713 has been updated by Martin D=C3=BCrst.
>
>
> Hiroshi SHIBATA wrote:
> > It's expected behavior
>
> Hiroshi, can you tell us why it's expected behavior? It looks quite
> surprising.
>
> ----------------------------------------
> Bug #10713: Assigning default value for a Hash as an empty Array creating
> unpredictable results
> https://bugs.ruby-lang.org/issues/10713#change-50846
>
> * Author: Arvinder Singh
> * Status: Rejected
> * Priority: Normal
> * Assignee:
> * Category: core
> * Target version: current: 2.2.0
> * ruby -v: ruby 2.2.0p0 (2014-12-25 revision 49005) [x86_64-darwin14]
> * Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN
> ----------------------------------------
> Creating a Hash with a default value works fine, unless the default value
> is an empty Array.
>
> E.g. the following returns an empty Hash...
>
> ~~~
> irb(main):001:0> letters =3D Hash.new([])
> =3D> {}
> irb(main):002:0> letters[:a] << 1
> =3D> [1]
> irb(main):003:0> letters[:a] << 2
> =3D> [1, 2]
> irb(main):004:0> letters[:a]
> =3D> [1, 2]
> irb(main):005:0> letters
> =3D> {}
> ~~~
>
> whereas the following code explicitly defining hash keys works.
>
> ~~~
> irb(main):001:0> letters =3D {a: [], b: []}
> =3D> {:a=3D>[], :b=3D>[]}
> irb(main):002:0> letters[:a] << 1
> =3D> [1]
> irb(main):003:0> letters[:a] << 2
> =3D> [1, 2]
> irb(main):004:0> letters[:a]
> =3D> [1, 2]
> irb(main):005:0> letters
> =3D> {:a=3D>[1, 2], :b=3D>[]}
> ~~~
>
> Is this an unpredictable(bug) or an expected behavior(feature). I tend to
> lean towards the former, but I might be wrong.
>
>
>
> --
> https://bugs.ruby-lang.org/
>
=20
=20
=20
--=20
Austin Ziegler * halostatue@gmail.com * austin@halostatue.ca
http://www.halostatue.ca/ * http://twitter.com/halostatue
----------------------------------------
Bug #10713: Assigning default value for a Hash as an empty Array creating u=
npredictable results
https://bugs.ruby-lang.org/issues/10713#change-50848
* Author: Arvinder Singh
* Status: Rejected
* Priority: Normal
* Assignee:=20
* Category: core
* Target version: current: 2.2.0
* ruby -v: ruby 2.2.0p0 (2014-12-25 revision 49005) [x86_64-darwin14]
* Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN
----------------------------------------
Creating a Hash with a default value works fine, unless the default value i=
s an empty Array.
E.g. the following returns an empty Hash...
~~~
irb(main):001:0> letters =3D Hash.new([])
=3D> {}
irb(main):002:0> letters[:a] << 1
=3D> [1]
irb(main):003:0> letters[:a] << 2
=3D> [1, 2]
irb(main):004:0> letters[:a]
=3D> [1, 2]
irb(main):005:0> letters
=3D> {}
~~~
whereas the following code explicitly defining hash keys works.
~~~
irb(main):001:0> letters =3D {a: [], b: []}
=3D> {:a=3D>[], :b=3D>[]}
irb(main):002:0> letters[:a] << 1
=3D> [1]
irb(main):003:0> letters[:a] << 2
=3D> [1, 2]
irb(main):004:0> letters[:a]
=3D> [1, 2]
irb(main):005:0> letters
=3D> {:a=3D>[1, 2], :b=3D>[]}
~~~
Is this an unpredictable(bug) or an expected behavior(feature). I tend to l=
ean towards the former, but I might be wrong.
--=20
https://bugs.ruby-lang.org/