The end of curl (in phobos)

Matthias Klumpp via Digitalmars-d digitalmars-d at puremagic.com
Sat Feb 18 18:41:35 PST 2017


On Saturday, 18 February 2017 at 22:48:53 UTC, Dmitry Olshansky 
wrote:
> [...]
> For some time I was a proponent of yanking stuff from Phobos 
> into oblivion. Now I'm not. Stop breaking code. Yes, we should 
> think harder before introducing libraries into Phobos but 
> continuing on with removal of stuff just introduces the 
> continuous churn for no adequate benefit.
>
> What would anyone get from std.net.curl removal? Are you going 
> to find all of D programs and patch them to use something else?
>
> Yes, Phobos is full of historical accidents and cruft. I'm 
> constantly tempted to propose Phobos v2 properly _designed_ 
> (not *grown*) and without the junk. I really think it might be 
> a good idea but only when we actually know what a proper design 
> looks like.

Due to writing the AppStream metadata generator in D, which is an 
infrastructure piece of many Linux distributions, I have a fair 
bit of knowledge now about the problems people (especially 
newcomers who just want to scratch an itch and submit a quick 
patch) encounter when working with D code. The inconsistent 
standard library is - after compiler bugs - the biggest issue. 
Some people described Phobos as "PHP-esque" in terms of design, 
and I have to agree with them. Working with it is often 
unpleasant, and you can clearly see which parts of it were 
designed recently and which are "historical accidents".

Constantly shuffling stuff around in Phobos and adding/removing 
things will not solve the problem, it will just give newcomers a 
feeling of insecurity and make the language feel less mature.
Stunningly, a lot of projects write their own primitives instead 
of using Phobos (Vibe, lots of dub modules just providing 
containers, just now another general purpose utility library was 
announced on the forums, ...) which is a clear sign that Phobos 
isn't seen to be sufficient.

I think investigating to build a "Phobos2" standard library would 
be a very good idea - make it opt-in for a while, and then set a 
flag-date and switch, so people will only need to adjust their 
code once to jump on the new version, and don't constantly need 
to play catch with Phobos API breaks and riddle their code with 
version() and static if instructions to be able to compile with 
multiple Phobos and LDC/GDC/DMD versions.

Cheers,
     Matthias



More information about the Digitalmars-d mailing list