HNHacker News
TopNewBestAskShowJobs

canndrew2016

20 karma · joined March 12, 2016

submissionscomments
canndrew2016··on Async and Await in Rust: a full proposal
> The first part of your comment is unresponsive to mine;

I interpreted OP's comment as complaining about the lack of more general abstractions in Rust that would allow you to implement async/await. Your comment specifically mentioned Haskell-style monads (eg. a `Monad` trait), but that's not the only way to implement something like this.

> the last part is offensive & wrong

Quoting steveklabnik:

> it’s an open research problem if do notation can work in Rust. Until that’s solved at all, we’re just not sure it’s possible. ... "Open question" doesn't mean "impossible", mind you. But nobody has ever come up with a design. In the meantime, we have users to support...

Isn't this what I was saying? "We don't know how to do it, so we're going with the easier option."

Edit: To be clear, I don't think async/await we've ended up with is necessarily in the wrong direction. But I also don't think that "we thoroughly explored the design space of do/monads/effects and concluded that they were impossible to implement ergonomically/efficiently" is really true.

canndrew2016··on Async and Await in Rust: a full proposal
> Monads as implemented in pure functional programming languages like Haskell cannot usefully abstract over asynchronous and synchronous IO in Rust for a variety of reasons having to do with the way the type system exposes low level details by virtue of Rust being a systems programming language. I do not believe that `do` notation could be a useful mechanism for achieving either the ergonomics or the performance that async/await syntax will have in Rust.

Sorry, but I don't buy it. I had a half-baked, unfinished proposal for an effects system that would have allowed Rust to implement async/await just as efficiently (no stackful coroutines) along with any number of other effects [0]. Maybe it wouldn't have been a good idea due to stretching Rust's complexity budget too far, but that's very different from saying it's impossible. Having watched the development of Rust closely I really think that the design team just didn't understand the theory side well enough to be able explore the design space here. (I'm not being as critical as I might sound, PL theory is hard and the Rust devs have wielded it much more competently than the designers of any other non-research language).

[0] https://internals.rust-lang.org/t/start-of-an-effects-system...

canndrew2016··on The “.onion” Special-Use Domain Name (2015)
Not that I know of now. Here's the original RFC that became the RFC which got .onion recognized

http://www.potaroo.net/ietf/idref/draft-grothoff-iesg-specia...

They were trying to get .gns, .zkey, .onion, .exit, .i2p and .bit recognized.

canndrew2016··on The “.onion” Special-Use Domain Name (2015)
Also, they were originally trying to get several already-in-use psuedo-TLDs recognized including .onion, .i2p, .bit and .gns, but they had to compromise.
canndrew2016··on GNU name system
They recently got taken under the wing of Inria and have several people working on it full time.
canndrew2016··on Who's downloading pirated papers? Everyone
https://gnunet.org/gns
canndrew2016··on AlphaGo beats Lee Sedol 3-0 [video]
I asked about this in /r/dependent_types yesterday. Apparently there's already a fair bit or research going on in this area. See the links: https://www.reddit.com/r/dependent_types/comments/49z1uc/usi...