Thread overview
XML support in libphobos
Jul 15, 2020
Carsten Schlote
Jul 15, 2020
Sebastian Wilzbach
Jul 15, 2020
Carsten Schlote
July 15, 2020
Hi,

there is a definite removal date for std.xml in the docs now:
> It will be removed from Phobos in 2.101.0.

Ok.

Will basic XML support be removed from libphobos entirely? Are we forced to use external libraries?

We use simple XML code in some D shebang scripts at work. It is a fine feature, that we never needed external dependancies, just libphobos.

Removing the simple but working XML code from libphobos also removes some advantages from using D for scripting, IMHO.

Having everything essential in libphobos and no external dependancies was a great argument for using D vs. using other popular languages and alternatives in the past.

Carsten
July 15, 2020
On 15/07/2020 17.39, Carsten Schlote via Dlang-internal wrote:
> Hi,
> 
> there is a definite removal date for std.xml in the docs now:
>> It will be removed from Phobos in 2.101.0.
> 
> Ok.
> 
> Will basic XML support be removed from libphobos entirely?

Yes.

> Are we forced to use external libraries?

Yes, but you can simply use undead in case you don't want to switch to a different library (https://github.com/dlang/undeaD).

> We use simple XML code in some D shebang scripts at work. It is a fine feature, that we never needed external dependancies, just libphobos.

The same argument can also be made for many other packages on dub
(requests, vibe.d, mir, ...).
Anyhow, it's super simple to switch over to dub as it supports shebang
scripts too:

```
#!/usr/bin/env dub
/+dub.sdl:
dependency "undead" version="~>1.1.0"
+/
import undead.xml
...
(code as before)
```

If you don't want to use dub and want to keep using rdmd, you can
a) drop the undead module in your /usr/include/dlang path
b) add the undead folder via DMD/LDC's config file (dmd.conf or
ldc2.conf) or an environment variable
c) copy the xml module into your script's directory

$ mkdir undead
$ curl
https://raw.githubusercontent.com/dlang/undeaD/master/src/undead/xml.d >
undead/xml.d

(xml doesn't depend on other modules of undead at the moment)

However, I do recommend using dub as it's the easiest and most resilient solution.

> Removing the simple but working XML code from libphobos also removes some advantages from using D for scripting, IMHO.

Only simple use cases were "working". There were/are tons of problems
with its parser (see e.g. https://issues.dlang.org/show_bug.cgi?id=17709
for an example).
So having a library that silently misparses your documents, can't handle
many use cases, can't handle big files, ..., forces you to use the GC,
is vastly slower than comparable libraries etc. is a worse experience.

For a full reasoning see: https://forum.dlang.org/post/giykzxblfcgaavvndpbn@forum.dlang.org

> Having everything essential in libphobos and no external dependancies was a great argument for using D vs. using other popular languages and alternatives in the past.

No one stops people from bundling snapshots of a few popular dub packages with a D release (i.e. a "full "batteries included" release) for user convenience.

-- Seb

July 15, 2020
On Wednesday, 15 July 2020 at 16:11:43 UTC, Sebastian Wilzbach wrote:
> On 15/07/2020 17.39, Carsten Schlote via Dlang-internal wrote:
>> [...]
>
> Yes.
>
>> [...]
>
> Yes, but you can simply use undead in case you don't want to switch to a different library (https://github.com/dlang/undeaD).
>
> [...]

Hi Seb,

thanks for the info. It will surely help others as well.

Carsten