News for hackers. Stuff that matters.
Re:"Ruby developers need to stop using EventMachine. It's th... by tptacek on Thursday October 25, 2012 @12:16AM (#4696347)
Sure, I'm using the Go http server.

Take the example of a simple proxy to see where I'm coming from. Sure, I'm happy to have Go manage all the connections and sockets and I'm happy to spawn new goroutines for each connection and all that. But a proxy accepts an inbound connection, makes an outbound connection, and then monitors the outbound and inbound sides for data. The loop to do this with sockets could be a simple two-descriptor read select(2) call. But instead, I have to spawn two more goroutines, one to "monitor" (really, read) from inbound, and one for outbound.

Re:"Ruby developers need to stop using EventMachine. It's th... by smegel on Thursday October 25, 2012 @03:05AM (#4696656)
> But instead, I have to spawn two more goroutines, one to "monitor" (really, read) from inbound, and one for outbound.

What does Golang's select/case not do that you want?

Re:"Ruby developers need to stop using EventMachine. It's th... by tptacek on Thursday October 25, 2012 @05:52PM (#4699739)
Is there some feature of the language or the libraries that I am missing that turns a socket (err, a TCPConn) into a channel that I can read with Golang's select construction? Seriously asking. That would be awesome.
Re:"Ruby developers need to stop using EventMachine. It's th... by smegel on Thursday October 25, 2012 @07:31PM (#4700119)
No, I think you would need to wrap the TCPConn in a goroutine that does the Read, handles any errors, then passes the bytes back to the consumer via a channel. At least it would be a very generic and small goroutine to do this.

I agree that would be a nice feature though.

Re:"Ruby developers need to stop using EventMachine. It's th... by tptacek on Thursday October 25, 2012 @09:46PM (#4700468)
You know what's happening in this thread? I made it sound like I was criticizing Go for needing to spawn goroutines to do this. I'm not! It makes sense, in the context of Go, to do it this way, even though as a C programmer by training that's not my first thought on how to do it.

I'm not criticizing Go for being anti-event; I'm just observing that it is. Idiomatic Go --- like, the code in the standard library --- has a strong bias towards straight-line code.

Re:"Ruby developers need to stop using EventMachine. It's th... by smegel on Thursday October 25, 2012 @10:41PM (#4700592)
> I'm not criticizing Go for being anti-event; I'm just observing that it is. Idiomatic Go --- like, the code in the standard library --- has a strong bias towards straight-line code.

I think I understand where you are coming from now - I think you are saying Go is "anti-event-based-callback-driven" rather than "anti-event-loop-implementation" - which is absolutely true. Go's concurrency model is build on CSP (Hoare's Communicating Sequential Processes)[1] which seems to advocate procedural threads rather than callbacks.

[1] http://golang.org/doc/go_faq.html#goroutines

Re:"Ruby developers need to stop using EventMachine. It's th... by drivebyacct2 on Thursday October 25, 2012 @01:30AM (#4696497)
Is there a large overhead for having to use a goroutine rather than the lower level? Do you think it's appropriate for Go to expose that, or do you just miss it?
Re:"Ruby developers need to stop using EventMachine. It's th... by cmccabe on Thursday October 25, 2012 @03:54AM (#4696724)
> Is there a large overhead for having to use a > goroutine rather than the lower level?

No.