Should "std.net.curl" be moved from Phobos to Deimos?

Jonas Drewsen nospam4321 at hotmail.com
Thu Nov 28 03:37:44 PST 2013


On Wednesday, 27 November 2013 at 01:32:18 UTC, Jonathan M Davis 
wrote:
> On Wednesday, November 27, 2013 02:05:39 Adam D. Ruppe wrote:
>> ...unless doing a new interface is on the table too. Then, we 
>> can
>> leave std.net.curl exactly how it is, so people who use it 
>> don't
>> have broken code, while a new std.net.http, std.net.smtp,
>> std.net.ftp, and so on are phased in for people who want them. 
>> I
>> could get behind that.
>
> If we were going to replace std.net.curl, I would fully expect 
> us to end up
> with a new API, because the current API is what is beacuse of 
> what curl can
> and can't do rather than because it's the best API for what 
> you're
> conceptually trying to do. The new API might end up being 
> fairly close to the
> current one, but I would not consider it desirable to try and 
> maintain a 100%
> compatible API if we were replacing the current implementation 
> except in cases
> where the current API is the best choice even without curl 
> underneath it.
> Maybe that would be most of the API, but I'd hate to see us put 
> ourselves in a
> straightjacket based on how curl works when writing an API 
> which didn't depend
> on curl - particularly as writing our own would give us the 
> opportunity to
> make sure that we had something that made the most conceptual 
> sense rather
> than necessarily having what curl has.

I definitely agree. In addition D has obtained some nice features 
since the definition of the std.net.curl API that I would liked 
have used back then.

I do believe that people underestimate the work needed to make a 
proper http client implementation with the bells and whristles 
that people expect like cookie store, chuncked transfers, ssl, 
authentication... and handle wierd per server type bugs as well.

I definitely think that a native solution is the end goal here. 
But if that is the case then it should be based on a proper event 
based system (std.event?) to support async handling (peek at how 
vibe has done it very nicely). But that in turn depends somewhat 
on allocators being well defined and implemented as I see it.

-Jonas






More information about the Digitalmars-d mailing list