Final commit before tha 0.3 release.

This commit is contained in:
Ferdinand Majerech 2011-11-16 20:41:21 +01:00
parent 2c9d464389
commit ab154480fb
11 changed files with 101 additions and 31 deletions

View file

@ -1,3 +1,69 @@
0.3.0:
- FEATURES/IMPROVEMENTS:
- API BREAKING: Removed Node.getToVar as it turned out to be a premature
optimization.
- API BREAKING: Constructor API for constructing custom YAML data types has
been improved to make it easier to load custom classes/structs. See the
custom types tutorial and Constructor API documentation.
- Node.opIndex now returns a reference to a node.
- Added a shortcut alias Node.as for Node.get . Node.as might eventually
replace Node.get (in a 1.0 release).
- User can now access a string representation of tag of a node.
- Nodes now remember their scalar and collection styles between loading and
dumping. These are not accessible to user. User can set output styles in
Representer.
- Updated API documentation to reflect the new changes, added more examples
and overall made the documentation more readable.
- Improved error messages of exceptions.
- Drastically optimized scanning and parsing, decreasing parsing time to about
10% (no precise benchmark comparison with 0.2 at the moment).
- Eliminated most GC usage, improving speed and memory usage.
- Optimized Dumper for speed, especially when dumping many small files.
- Reader has been reimplemented to improve performance.
- Many other speed and memory optimizations.
- Added a profiling build target and a parsing/dumping benchmark.
- Added a random YAML file generator and a YAML file analyzer, as example
applications and for benchmarking.
- Added a "clean" target to example Makefiles.
- Got rid of all global state.
- BUGFIXES:
- Fixed compatibility issues with DMD 2.056.
- Fixed an Emitter bug which caused tags to always be emitted in full format.
- Fixed a bug that caused errors when loading documents with YAML version
directives.
- Fixed many const-correctness bugs.
- Minor bugfixes all over the code.
- Fixed many documentation bugs.
0.2.0: 0.2.0:

View file

@ -4,7 +4,7 @@
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="generator" content="Docutils 0.7: http://docutils.sourceforge.net/" /> <meta name="generator" content="Docutils 0.7: http://docutils.sourceforge.net/" />
<title>D:YAML 0.2</title> <title>D:YAML 0.3</title>
<style type="text/css"> <style type="text/css">
/* /*
@ -310,36 +310,37 @@ ul.auto-toc {
</style> </style>
</head> </head>
<body> <body>
<div class="document" id="d-yaml-0-2"> <div class="document" id="d-yaml-0-3">
<h1 class="title">D:YAML 0.2</h1> <h1 class="title">D:YAML 0.3</h1>
<div class="section" id="introduction"> <div class="section" id="introduction">
<h1>Introduction</h1> <h1>Introduction</h1>
<p>D:YAML is an open source YAML parser and emitter library for the D programming <p>D:YAML is an open source YAML parser and emitter library for the D programming
language. It is language. It is
(<a class="reference external" href="https://github.com/kiith-sa/D-YAML/wiki/Differences-between-D:YAML-and-the-YAML-specification">almost</a>) (<a class="reference external" href="https://github.com/kiith-sa/D-YAML/wiki/Differences-between-D:YAML-and-the-YAML-specification">almost</a>)
compliant to the YAML 1.1 specification. Much of D:YAML code is based on compliant to the YAML 1.1 specification. D:YAML is based on
<a class="reference external" href="http://www.pyyaml.org">PyYAML</a> created by Kirill Simonov. D:YAML has no <a class="reference external" href="http://www.pyyaml.org">PyYAML</a> created by Kirill Simonov. It has no external
external dependencies, all it needs is a D compiler and Phobos (standard dependencies, it only needs a D compiler and Phobos (standard library). It is
library). It is written in D2 and there are no plans for D1 or Tango support.</p> written in D2 and there are no plans for D1 support.</p>
<p>D:YAML is designed to be as easy to use as possible while supporting the full <p>D:YAML is designed to be easy to use while supporting the full feature set of
feature set of YAML. To start using it in your project, see the YAML. To start using it in your project, see the
<a class="reference external" href="https://github.com/kiith-sa/D-YAML/wiki/Getting-Started">Getting Started</a> <a class="reference external" href="https://github.com/kiith-sa/D-YAML/wiki/Getting-Started">Getting Started</a>
tutorial.</p> tutorial.</p>
<p>D:YAML is still a work in progress. Its API is still not stable and there might <p>D:YAML is still a work in progress. Its API is not stable and there might be
be compatibility breaking changes. For instance, currently some D:YAML API compatibility breaking changes. For instance, currently some D:YAML API
functions depend on the <tt class="docutils literal">std.stream</tt> module in Phobos. This module is expected functions depend on the <tt class="docutils literal">std.stream</tt> module in Phobos. This module is expected
to be rewritten in future and D:YAML will change accordingly.</p> to be rewritten in future and D:YAML will change accordingly.</p>
</div> </div>
<div class="section" id="features"> <div class="section" id="features">
<h1>Features</h1> <h1>Features</h1>
<ul class="simple"> <ul class="simple">
<li>Easy to use, high-level API and detailed debugging messages.</li> <li>Easy to use, high level API and detailed debugging messages.</li>
<li>Detailed API documentation and tutorials.</li> <li>Detailed API documentation and tutorials.</li>
<li>Code examples.</li>
<li>No external dependencies.</li> <li>No external dependencies.</li>
<li>Supports all YAML 1.1 constructs. All examples from the YAML 1.1 specification <li>Supports all YAML 1.1 constructs. All examples from the YAML 1.1 specification
are parsed correctly.</li> are parsed correctly.</li>
<li>Read and write from/to YAML files as well as memory or user defined streams.</li> <li>Reads from and writes to YAML files as well as memory or user defined streams.</li>
<li>UTF-8, UTF-16 and UTF-32 encodings are supported, both big and little endian <li>UTF-8, UTF-16 and UTF-32 encodings are supported, both big and little endian
(plain ASCII also works as it is a subset of UTF-8).</li> (plain ASCII also works as it is a subset of UTF-8).</li>
<li>Support for both block (Python-like, based on indentation) and flow <li>Support for both block (Python-like, based on indentation) and flow
@ -351,6 +352,7 @@ scalar tags.</li>
<li>All tags (data types) described at <a class="reference external" href="http://yaml.org/type/">http://yaml.org/type/</a> are supported, with <li>All tags (data types) described at <a class="reference external" href="http://yaml.org/type/">http://yaml.org/type/</a> are supported, with
the exception of <tt class="docutils literal">tag:yaml.org,2002:yaml</tt>, which is used to represent YAML the exception of <tt class="docutils literal">tag:yaml.org,2002:yaml</tt>, which is used to represent YAML
code in YAML.</li> code in YAML.</li>
<li>Remembers YAML style information between loading and dumping if possible.</li>
<li>There is no support for recursive data structures. <li>There is no support for recursive data structures.
There are no plans to implement this at the moment.</li> There are no plans to implement this at the moment.</li>
</ul> </ul>

View file

@ -1,5 +1,5 @@
========== ==========
D:YAML 0.2 D:YAML 0.3
========== ==========
------------ ------------
@ -9,18 +9,18 @@ Introduction
D:YAML is an open source YAML parser and emitter library for the D programming D:YAML is an open source YAML parser and emitter library for the D programming
language. It is language. It is
(`almost <https://github.com/kiith-sa/D-YAML/wiki/Differences-between-D:YAML-and-the-YAML-specification>`_) (`almost <https://github.com/kiith-sa/D-YAML/wiki/Differences-between-D:YAML-and-the-YAML-specification>`_)
compliant to the YAML 1.1 specification. Much of D:YAML code is based on compliant to the YAML 1.1 specification. D:YAML is based on
`PyYAML <http://www.pyyaml.org>`_ created by Kirill Simonov. D:YAML has no `PyYAML <http://www.pyyaml.org>`_ created by Kirill Simonov. It has no external
external dependencies, all it needs is a D compiler and Phobos (standard dependencies, it only needs a D compiler and Phobos (standard library). It is
library). It is written in D2 and there are no plans for D1 or Tango support. written in D2 and there are no plans for D1 support.
D:YAML is designed to be as easy to use as possible while supporting the full D:YAML is designed to be easy to use while supporting the full feature set of
feature set of YAML. To start using it in your project, see the YAML. To start using it in your project, see the
`Getting Started <https://github.com/kiith-sa/D-YAML/wiki/Getting-Started>`_ `Getting Started <https://github.com/kiith-sa/D-YAML/wiki/Getting-Started>`_
tutorial. tutorial.
D:YAML is still a work in progress. Its API is still not stable and there might D:YAML is still a work in progress. Its API is not stable and there might be
be compatibility breaking changes. For instance, currently some D:YAML API compatibility breaking changes. For instance, currently some D:YAML API
functions depend on the ``std.stream`` module in Phobos. This module is expected functions depend on the ``std.stream`` module in Phobos. This module is expected
to be rewritten in future and D:YAML will change accordingly. to be rewritten in future and D:YAML will change accordingly.
@ -29,12 +29,13 @@ to be rewritten in future and D:YAML will change accordingly.
Features Features
-------- --------
* Easy to use, high-level API and detailed debugging messages. * Easy to use, high level API and detailed debugging messages.
* Detailed API documentation and tutorials. * Detailed API documentation and tutorials.
* Code examples.
* No external dependencies. * No external dependencies.
* Supports all YAML 1.1 constructs. All examples from the YAML 1.1 specification * Supports all YAML 1.1 constructs. All examples from the YAML 1.1 specification
are parsed correctly. are parsed correctly.
* Read and write from/to YAML files as well as memory or user defined streams. * Reads from and writes to YAML files as well as memory or user defined streams.
* UTF-8, UTF-16 and UTF-32 encodings are supported, both big and little endian * UTF-8, UTF-16 and UTF-32 encodings are supported, both big and little endian
(plain ASCII also works as it is a subset of UTF-8). (plain ASCII also works as it is a subset of UTF-8).
* Support for both block (Python-like, based on indentation) and flow * Support for both block (Python-like, based on indentation) and flow
@ -46,6 +47,7 @@ Features
* All tags (data types) described at http://yaml.org/type/ are supported, with * All tags (data types) described at http://yaml.org/type/ are supported, with
the exception of ``tag:yaml.org,2002:yaml``, which is used to represent YAML the exception of ``tag:yaml.org,2002:yaml``, which is used to represent YAML
code in YAML. code in YAML.
* Remembers YAML style information between loading and dumping if possible.
* There is no support for recursive data structures. * There is no support for recursive data structures.
There are no plans to implement this at the moment. There are no plans to implement this at the moment.

View file

@ -29,7 +29,7 @@ links = ../index.html Documentation home
# Source files or patterns to ignore. Supports regexp syntax. # Source files or patterns to ignore. Supports regexp syntax.
# E.g; To ignore main.d and all source files in the test/ directory, # E.g; To ignore main.d and all source files in the test/ directory,
# you would use: "main.d test/*" # you would use: "main.d test/*"
ignore = test/*, examples/*, docsrc/*, autoddoc/*, yaml.d, unittest.d, cdc.d, dyaml/composer.d, dyaml/event.d, dyaml/parser.d, dyaml/reader.d, dyaml/scanner.d, dyaml/token.d, dyaml/util.d, dyaml/anchor.d, dyaml/emitter.d, dyaml/flags.d, dyaml/serializer.d, dyaml/sharedobject.d, dyaml/tag.d, dyaml/tagdirectives.d, dyaml/queue.d, dyaml/escapes.d, dyaml/fastcharsearch.d ignore = test/*, examples/*, docsrc/*, autoddoc/*, yaml.d, unittest.d, cdc.d, dyaml/composer.d, dyaml/event.d, dyaml/parser.d, dyaml/reader.d, dyaml/scanner.d, dyaml/token.d, dyaml/util.d, dyaml/anchor.d, dyaml/emitter.d, dyaml/flags.d, dyaml/serializer.d, dyaml/zerostring.d, dyaml/tag.d, dyaml/tagdirective.d, dyaml/queue.d, dyaml/escapes.d, dyaml/fastcharsearch.d
[DDOC] [DDOC]
# Command to use to generate the documentation. # Command to use to generate the documentation.

Binary file not shown.

View file

@ -138,7 +138,7 @@ struct appears in Phobos.</p>
</div> </div>
<div class="footer"> <div class="footer">
&copy; Copyright 2011, Ferdinand Majerech. Based on PyYAML http://www.pyyaml.org by Kirill Simonov. &copy; Copyright 2011, Ferdinand Majerech. Based on PyYAML http://www.pyyaml.org by Kirill Simonov.
Last updated on Nov 15, 2011. Last updated on Nov 16, 2011.
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.0.7. Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.0.7.
</div> </div>
</body> </body>

View file

@ -104,7 +104,7 @@
</div> </div>
<div class="footer"> <div class="footer">
&copy; Copyright 2011, Ferdinand Majerech. Based on PyYAML http://www.pyyaml.org by Kirill Simonov. &copy; Copyright 2011, Ferdinand Majerech. Based on PyYAML http://www.pyyaml.org by Kirill Simonov.
Last updated on Nov 15, 2011. Last updated on Nov 16, 2011.
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.0.7. Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.0.7.
</div> </div>
</body> </body>

View file

@ -87,7 +87,7 @@
</div> </div>
<div class="footer"> <div class="footer">
&copy; Copyright 2011, Ferdinand Majerech. Based on PyYAML http://www.pyyaml.org by Kirill Simonov. &copy; Copyright 2011, Ferdinand Majerech. Based on PyYAML http://www.pyyaml.org by Kirill Simonov.
Last updated on Nov 15, 2011. Last updated on Nov 16, 2011.
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.0.7. Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.0.7.
</div> </div>
</body> </body>

View file

@ -368,7 +368,7 @@ directory of the D:YAML package.</p>
</div> </div>
<div class="footer"> <div class="footer">
&copy; Copyright 2011, Ferdinand Majerech. Based on PyYAML http://www.pyyaml.org by Kirill Simonov. &copy; Copyright 2011, Ferdinand Majerech. Based on PyYAML http://www.pyyaml.org by Kirill Simonov.
Last updated on Nov 15, 2011. Last updated on Nov 16, 2011.
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.0.7. Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.0.7.
</div> </div>
</body> </body>

View file

@ -237,7 +237,7 @@ example in the <tt class="docutils literal"><span class="pre">example/getting_st
</div> </div>
<div class="footer"> <div class="footer">
&copy; Copyright 2011, Ferdinand Majerech. Based on PyYAML http://www.pyyaml.org by Kirill Simonov. &copy; Copyright 2011, Ferdinand Majerech. Based on PyYAML http://www.pyyaml.org by Kirill Simonov.
Last updated on Nov 15, 2011. Last updated on Nov 16, 2011.
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.0.7. Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.0.7.
</div> </div>
</body> </body>

View file

@ -330,7 +330,7 @@ Some of these might change in the future (especially !!map and !!set).</p>
</div> </div>
<div class="footer"> <div class="footer">
&copy; Copyright 2011, Ferdinand Majerech. Based on PyYAML http://www.pyyaml.org by Kirill Simonov. &copy; Copyright 2011, Ferdinand Majerech. Based on PyYAML http://www.pyyaml.org by Kirill Simonov.
Last updated on Nov 15, 2011. Last updated on Nov 16, 2011.
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.0.7. Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.0.7.
</div> </div>
</body> </body>