NimYAML/CHANGELOG.md

7.7 KiB

1.0.0

Features:

  • YamlNode can now be used with the serialization API (load / dump) and can be used to hold substructures that should not be deserialized to native types (#48).

Bugfixes:

  • Raise a proper exception when a stream contains no documents but one is expected (#108)
  • Comments after a block scalar do not lead to a crash anymore (#106)
  • Fixed an error with parsing document end markers (#115)
  • Fixed an error when serializing block scalars (#105)

0.16.0

Features:

  • dumping sparse objects now omits empty Option fields (#100).

Bugfixes:

  • Fixed several parser errors that emerged from updates on the test suite.
  • Fixed raises annotations which could lead to compilation errors (#99).

0.15.0

Features:

  • Compiles with --gc:arc and --gc:orc

Bugfixes:

  • Parser rewrite: Fixes some test suite errors (including #83)
  • Fixed problems where a syntax error lead to an invalid state (#39, #90)
  • Serialize boolean values as true / false instead of y / y to conform to YAML 1.2 spec.

0.14.0

Features:

  • Breaking change: transient, defaultVal, ignore and implicit are now annotations.
  • Added sparse annotation to treat all Option fields as optional.

Bugfixes:

  • can now use default values with ref objects (#66)

0.13.1

Bugfixes:

  • Changed nim tests to nim test to make nim ci happy.

0.13.0

Bugfixes:

  • Fixed submodule link to yaml-test-suite.

Features:

  • Added support for Option type.

0.12.0

Bugfixes:

  • Made it work with Nim 0.20.2

0.11.0

Bugfixes:

  • Made it work with Nim 0.19.0

NimYAML 0.11.0 is unlikely to work with older Nim versions.

0.10.4

Bugfixes:

  • Made it work with Nim 0.18.0

0.10.3

Bugfixes:

  • Fixed a nimble error when installing the package.

Features:

  • Added ignoreUnknownKeys macro to ignore all mapping keys that do not map to a field of an object / tuple (#43).

0.10.2

Bugfixes:

  • Fixed a nimble warning (#42)
  • Make sure special strings (e.g. "null") are properly quoted when dumping JSON (#44)

0.10.1

Bugfixes:

  • Made it actually work with Nim 0.17.0.

0.10.0

Features:

  • Compatibility with Nim 0.17.0 (#40). Important: This fix breaks compatibility with previous Nim versions!

0.9.1

Features:

  • Added YamlParser.display() which is mainly used by tests
  • NimYAML now builds for JS target (but does not work properly yet)

Bugfixes:

  • Correctly present empty collections in block-only style (#33)
  • Correctly handle {1} (#34)
  • Recognize empty plain scalar as possible !!null value
  • Require colons before subsequent keys in a flow mapping (#35)
  • Allow stream end after block scalar indicators
  • Fixed regression bugs introduced with timestamp parsing (#37)

0.9.0

Features:

  • Better DOM API:
    • yMapping is now a Table
    • field names have changed to imitate those of Nim's json API
    • Better getter and setter procs
  • Added ability to resolve non-specific tags in presenter.transform

Bugfixes:

  • Fixed parsing floating point literals (#30)
  • Fixed a bug with variant records (#31)
  • Empty documents now always contain an empty scalar
  • Block scalars with indentation indicator now have correct whitespace on first line.

0.8.0

Features:

  • NimYAML now has a global tag URI prefix for Nim types, tag:nimyaml.org,2016:. This prefix is denoted by the custom tag handle !n!.
  • Support arbitrary tag handles.
  • Added ability to mark object and tuple fields as transient.
  • Added ability to set a default value for object fields.
  • Added ability to ignore key-value pairs in the input when loading object values.
  • Support !!timestamp by parsing it to Time from module times.

Bugfixes:

  • Fixed a bug concerning duplicate TagIds for different tags in the serializationTagLibrary
  • Convert commas in tag URIs to semicolons when using a tag URI as generic parameter to another one, because commas after the tag handle are interpreted as flow separators.

0.7.0

Features:

  • Better handling of internal error messages
  • Refactoring of low-level API:
    • No more usage of first-class iterators (not supported for JS target)
    • Added ability to directly use strings as input without stdlib's streams (which are not available for JS)
  • Added ability to parse octal and hexadecimal numbers
  • Restructuring of API: now available as submodules of yaml. For backwards compatibility, it is still possible to import yaml, which will import all submodules
  • Check for missing, duplicate and unknown fields when deserializing tuples and objects

Bugfixes:

  • Fixed double quotes inside plain scalar (#25)
  • Return correct line content for errors if possible (#23)
  • Some smaller lexer/parser fixes

0.6.3

Bugfixes:

  • Can load floats from integer literals (without decimal point) (#22)

0.6.2

Bugfixes:

  • Fixed problem when serializing a type that overloads the == operator (#19)
  • Fixed type hints for floats (0 digit was not processed properly) (#21)

0.6.1

Bugfixes:

  • Fixed deserialization of floats (#17)
  • Handle IndexError from queues properly

0.6.0

Features:

  • Properly support variant object types
  • First version that works with a released Nim version (0.14.0)

Bugfixes:

  • Fixed a crash in presenter when outputting JSON or canonical YAML
  • Raise an exception when trying to output multiple documents in JSON style

0.5.1

Bugfixes:

  • Fixed a problem that was introduced by a change in Nim devel

0.5.0

Features:

  • Support variant object types (experimental)
  • Added ability to use variant object types to process heterogeneous data
  • Support set type
  • Support array type
  • Support int, uint and float types (previously, the precision must be specified)
  • Check for duplicate tag URIs at compile time
  • Renamed setTagUriForType to setTagUri

Bugfixes:

  • None, but fastparse.nim has seen heavy refactoring

0.4.0

Features:

  • Added option to output YAML 1.1
  • Added benchmark for processing YAML input
  • Serialization for OrderedMap
  • Use !nim:field for object field names (#12)

Bugfixes:

  • Code refactoring (#9, #10, #11, #13)
  • Some small improvements parsing and presenting

0.3.0

Features:

  • Renamed some symbols to improve consistency (#6):
    • yamlStartSequence -> yamlStartSeq
    • yamlEndSequence -> yamlEndSeq
    • yamlStartDocument -> yamlStartDoc
    • yamlEndDocument -> yamlEndDoc
    • yTagMap -> yTagMapping
  • Introduced PresentationOptions:
    • Let user specify newline style
    • Merged old presentation options indentationStep and presentationStyle into it
  • Use YAML test suite from yaml-dev-kit to test parser.

Bugfixes:

  • Fixed various parser bugs discovered with YAML test suite:
    • Block scalar as root node no longer leads to a parser error
    • Fixed a bug that caused incorrect handling of comments after plain scalars
    • Fixed bugs with newline handling of block scalars
    • Fixed a bug related to block sequence indentation
    • Skip content in tag and anchor names and single-quoted scalars when scanning for possible implicit map key
    • Properly handle more indented lines in folded block scalars
    • Fixed a problem with handling ':' after whitespace
    • Fixed indentation handling after block scalar

0.2.0

Features:

  • Added DOM API
  • Output block scalars in presenter if scalar is long and block scalar output is feasible. Else, use multiple lines for long scalars in double quotes.

Bugfixes:

  • Improved parser (#1, #3, #5)
  • Made parser correctly handle block sequences that have the same indentation as their parent node (#2)
  • Fixed problems with outputting double quoted strings (#4)

0.1.0

  • Initial release