D:YAML 0.4 released

Jan. 23, 2012, 8:03 p.m.

I've released D:YAML 0.4 . This release brings mostly updates to keep compatibility with DMD 2.057 and bugfixes (in particular, compilation on 32bit works now). The constructor API has also been simplified.

Any custom YAML types (structs and classes serialized directly from/to YAML nodes) now need to define the opCmp operator. This is used to detect duplicates and will be used for faster access to data in unordered maps in future. (AAs were used previously, but caused bugs) If this turns out to be too impractical, and if Phobos gets a usable hash map, I might use that in future - which would still require toHash and opEquals, though.

API documentation, tutorials and examples were updated to reflect the changes, and slightly improved.

See CHANGES.txt in the source package for detailed information.

Again, the API is unstable and might change in future.

D:YAML 0.3 released

Nov. 16, 2011, 8:57 p.m.

I've released D:YAML 0.3 . This release brings some API improvements and many
optimizations, drastically improving parsing speed and decreasing memory usage.
There are also many bugfixes, more examples, and both the API documentation and
tutorials have seen various improvements.

API has been streamlined, Constructor in particular is now easier to use to add
support for custom YAML data types. Constructor API compatibility has been
broken as a result. Another breaking change is removal of the Node.getToVar
method as it turned out to be a premature optimization. Node.get can now be used
in a shorter form - , which might eventually replace it (1.0 release).

Nodes now preserve their styles between loading and dumping. There is no way to
access those styles, though (as it should be according to the specification).

Focus of this release was optimization, greatly reducing parsing/emitting time
and memory usage (in particular, decreasing garbage collector usage). There are
no comparative benchmarks at the moment, but parsing time seems to be reduced to
about 10%, and dumping time to about 50%.

Error messages, API documentation and tutorials were improved as well. There are
also new example and benchmark applications. Lastly, there were many bugfixes.
See CHANGES.txt in the source package for detailed information.

As before, it should be noted that D:YAML API is a work in progress, and there
WILL be more breaking changes (although most of the API should now be in place).

D:YAML 0.2 released

Oct. 15, 2011, 6:55 p.m.

I've just released D:YAML 0.2 . This release brings emitting functionality, finishing the main part of D:YAML feature set. From now on, the focus will be on polishing D:YAML, making code more maintainable, optimizing and improving documentation.

Emitting code has been fully implemented (mostly translated from PyYAML), along with support for emitting custom types (loading custom types already works with 0.1).

YAML tags are now stored in nodes, allowing D:YAML to be more compliant to the specification.

Many scanner, composer and constructor bugs have been fixed.

Loader API has been broken to make it more extensible in future - Representer and Constructor are no more specified in the constructor, and the load() shortcut functions have been removed, as all that's needed to load a YAML document now is Loader("file.yaml").load() .

Tutorials, API documentation and examples have been updated to reflect the changes.

Note that D:YAML is still a work in progress and its API might yet see some compatibility breaking changes. Basic Loader/Dumper API is unlikely to break any more, but it will be updated when is rewritten.

D:YAML homepage online!

Aug. 20, 2011, 12:58 a.m.

I finally managed to create an official D:YAML homepage.
Using a generic webhost since no open source hosting seems to have decent Python support.