normalperson (Eric Wong) wrote: > Yes. The "timeout scheduler" is the same idea I used for auto-fiber. > ... Still wonder, why you don't use binary min-heap for timers - most commonly used datastructure for this task. It has guaran...funny_falcon (Yura Sokolov)
I'd rather say that File.join is currently broken, and it should behave like Pathname.join. But probably I'm missing something. funny_falcon (Yura Sokolov)
Why your object has `to_hash` method? Ruby uses long named methods for implicit conversion: `to_str` - if your object should act as a string, `to_int` - if your object should act as an integer, `to_ary` - if your object should act as ...funny_falcon (Yura Sokolov)
@ioquatix, your patch doesn't seems to be correct for me on first glance. Imagine pipelined RPC server: - we read data into buffer - while buffer larger than request size - detect first request and split buffer into request and r...funny_falcon (Yura Sokolov)
> Yes, they are great, but it's probably impossible to implement in Ruby. It is impossible to implement Thread migration between native threads. All other is possible. > ... Don't get me wrong: most of code is linear and thread-saf...funny_falcon (Yura Sokolov)
> In my experience, threads simply don't scale as as well as fibers, there is too much overhead. Native threads doesn't scale. But we have example of Go: goroutine is a really green thread, and they do really scale. And Ruby 1.8 ha...funny_falcon (Yura Sokolov)
> It's also going to be more useful for existing code bases like ActionCable, Puma, Async, etc which use their own IO scheduler. They have their own IO scheduler because ruby had just native threads, which are bad as IO scheduler. Ok...funny_falcon (Yura Sokolov)
@ioquatix About "extendable api" vs "implicit behavior" (ie between your proposal for "Thread.scheduler=' and replacing "Thread" with green implementation), I'd prefer "implicit behavior". Because, there were already EM::Synchrony, th...funny_falcon (Yura Sokolov)
I've shown `to_enum(:aga).to_a` to present the place where I wasn't right. But if you look at your own second example, you will see that it doesn't do what it should do (if `Fiber.yield` is replaced with yield point of your scheduler...funny_falcon (Yura Sokolov)