[#55853] ruby 1.9.3 p448 breaks ABI — V咜 Ondruch <v.ondruch@...>

Hi,

13 messages 2013/07/08

[#55951] [ruby-trunk - Bug #8625][Open] IO#read(len, buf) shortens buf even if data is not read actually — "no6v (Nobuhiro IMAI)" <nov@...>

10 messages 2013/07/11

[#55976] [ruby-trunk - Feature #8629][Open] Method#parameters should include the default value — "rosenfeld (Rodrigo Rosenfeld Rosas)" <rr.rosas@...>

13 messages 2013/07/12

[#55985] [ruby-trunk - Feature #8631][Open] Add a new method to ERB to allow assigning the local variables from a hash — "rosenfeld (Rodrigo Rosenfeld Rosas)" <rr.rosas@...>

19 messages 2013/07/12

[#56004] [ruby-trunk - Feature #8636][Open] Documentation hosting on ruby-lang.org — "zzak (Zachary Scott)" <e@...>

18 messages 2013/07/15

[#56019] [ruby-trunk - Feature #8639][Open] Add Queue#each — "avdi (Avdi Grimm)" <avdi@...>

15 messages 2013/07/15

[#56027] [CommonRuby - Feature #8640][Open] Add Time#elapsed to return nanoseconds since creation — "tenderlovemaking (Aaron Patterson)" <aaron@...>

24 messages 2013/07/15

[#56041] [CommonRuby - Feature #8643][Open] Add Binding.from_hash — "rosenfeld (Rodrigo Rosenfeld Rosas)" <rr.rosas@...>

26 messages 2013/07/16

[#56087] [ruby-trunk - Feature #8658][Open] Process.clock_gettime — "akr (Akira Tanaka)" <akr@...>

23 messages 2013/07/19

[#56096] [CommonRuby - Feature #8661][Open] Add option to print backstrace in reverse order(stack frames first & error last) — "gary4gar (Gaurish Sharma)" <gary4gar@...>

18 messages 2013/07/20

[#56193] [ruby-trunk - Bug #8693][Open] lambda invoked by yield acts as a proc with respect to return — "rits (First Last)" <redmine@...>

33 messages 2013/07/26

[#56274] [ruby-trunk - Bug #8709][Open] Dir.glob should return sorted file list — "tommorris (Tom Morris)" <tom@...>

19 messages 2013/07/30

[ruby-core:56030] Re: [ruby-trunk - Feature #8639][Open] Add Queue#each

From: Avdi Grimm <avdi@...>
Date: 2013-07-15 20:52:01 UTC
List: ruby-core #56030
On Mon, Jul 15, 2013 at 4:24 PM, Alex Young <alex@blackkettle.org> wrote:

> I thought this sounded familiar.  It has come up before:
> http://bugs.ruby-lang.org/issues/4589
>

Hey, thanks for finding that! I figured it had probably come up before.
Some notes responding to that conversation:

- First, as Alex pointed out then, IO#each is often destructive in the
sense that it's either moving the read pointer forward or (in the case of a
pipe or socket) losing info once it advances. So there IS a precedent.
- I feel like the semantics I've implemented in the PR are moderately sane,
but feel free to point out anything I've missed.
- "Loop forever over the things coming out of this queue until something
breaks the loop" seems like a common enough use case to warrant some sugar.
- Note this is NOT "loop until the queue is exhausted", unless you turn
non_block on.
- I am explicitly not discussing the inclusion of Enumerable in this
ticket. That's a much bigger can of worms and I haven't even begun to think
through all the implications.
- Note, though, that with this PR if you DO want a full Enumerable over a
queue all you have to do now is say `q.each`, omitting the block. So we're
not making Queue enumerable, but we're making it easy to get at a queue
Enumerator if you really want one. Without this PR the shortest code I've
found to do that is:

  q = Queue.new
  eq = Enumerator.new do |y|
    loop do
      y << q.shift
    end
  end

...and this code doesn't cover all the cases that I've covered in the PR.

In This Thread