D:YAML 0.5 (also, D:YAML 0.4.5, TinyEndian 0.1)

Kiith-Sa via Digitalmars-d-announce digitalmars-d-announce at puremagic.com
Wed Aug 6 10:09:50 PDT 2014


D:YAML is a YAML parser and emitter for D.


It's been a while since the last release and many small features
have been
added to the Git master over time, so I finally forced myself to
do an
official release.

D:YAML at GitHub:

https://github.com/kiith-sa/D-YAML


## Highlights ##

Some breaking changes:

    YAML loading API using std.stream is now obsolete. D:YAML 0.5
requires DMD
    2.066 (yes, the one that is not yet released - see 0.4.5 below
for
    compatibility).

DUB by default:

    Stopped using my own build script, updated examples to use DUB,
etc.

Significantly less memory allocations, both GC and malloc:

    D:YAML scanner now uses slices to avoid any allocations. UTF-8
is now used
    internally instead of decoding into UTF-32.

Better performance:

    I've spent some time profiling and optimizing, mainly for the
use case of
    'parsing few-kiB mostly ASCII files not using crazy advanced
YAML features'
    (I use YAML for game-related stuff). Performance for the above
use case
    is up about 80% (or, time spent is down to about 55%). For
mostly-unicode
    (that is, mostly non-ASCII unicode) files, performance is down
slightly
    (~10-15%). I don't have any thorough measurements to release,
just did various
    tests as I went.

Retired the dyaml.alwaysdata.net site, moved API docs/tutorials
to my new
site:

    http://defenestrate.eu/docs/dyaml/


And various small features/fixes/improvements. See the full
changelog for
details:

https://github.com/kiith-sa/D-YAML/releases/tag/v0.5.0


## D:YAML 0.4.5 ##

For compatibility with DMD 2.065, I also made a "release" out of
the last
state of git master before 2.066 was required. See the release at
GitHub:

https://github.com/kiith-sa/D-YAML/releases/tag/v0.4.5


## TinyEndian ##

This is just a single module with two functions that I separated
into a DUB
package as I think it may be useful. When removing the std.stream
dependency
from D:YAML I had to replace EndianStream with my own code (based
on
EndianStream but mostly rewritten). The result are two pure
nothrow
@nogc functions to detect UTF byte order marks and swap endianness

https://github.com/kiith-sa/tinyendian


More information about the Digitalmars-d-announce mailing list