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