...there's a good amount of stuff that's changed, and we'll need to comb through the test suite and make sure we have a solid set of tests for 2.0 compliance.
[x] New multiline strings (base and raw) (need to wait until specifics are settled)
[x] New raw string syntax
[x] New identifier syntax (,<> are now legal. # is illegal)
[x] Identifiers in value positions being handled as strings
[x] / is no longer a valid escapable character
[x] \u{0020} (Space) can now be written as \s.
[x] Single-line // comments can now be immediately followed by a newline.
[x] All literal whitespace following a \ in a string is now discarded.
[x] Vertical tabs (U+000B) are now considered to be whitespace.
[x] Code points under 0x20, code points above 0x10FFFF, Delete control character (0x7F), and the unicode "direction control" characters are now completely banned from appearing literally in KDL documents. They can now only be represented in regular strings, and there's no facilities to represent them in raw strings. This should be considered a security improvement.
[x] Line continuations can be followed by an EOF now, instead of requiring a newline (or comment). node \<EOF> is now a legal KDL document.
[x] null, true, and false are now #null, #true, and #false. Using the unprefixed versions of these values is a syntax error.
[x] Code points have been constrained to Unicode Scalar Values only, including values used in string escapes (\u{}). All KDL documents and string values should be valid UTF-8 now, as was intended.
[x] The last node in a child block no longer needs to be terminated with ;, even if the closing } is on the same line, so this is now a legal node: node {foo;bar;baz}
[x] More places allow whitespace (node-spaces, specifically) now. With great power comes great responsibility:
Inside (foo) annotations (so, ( foo ) would be legal (( f oo ) would not be, since it has two identifiers))
Between annotations and the thing they're annotating ((blah) node (thing) 1 y= (who) 2)
Around = for props (x = 1)
[x] The BOM is now only allowed as the first character in a document. It was previously treated as generic whitespace.
...there's a good amount of stuff that's changed, and we'll need to comb through the test suite and make sure we have a solid set of tests for 2.0 compliance.
,<>
are now legal.#
is illegal)/
is no longer a valid escapable character\u{0020}
(Space) can now be written as\s
.//
comments can now be immediately followed by a newline.\
in a string is now discarded.U+000B
) are now considered to be whitespace.0x20
, code points above0x10FFFF
, Delete control character (0x7F
), and the unicode "direction control" characters are now completely banned from appearing literally in KDL documents. They can now only be represented in regular strings, and there's no facilities to represent them in raw strings. This should be considered a security improvement.node \<EOF>
is now a legal KDL document.null
,true
, andfalse
are now#null
,#true
, and#false
. Using the unprefixed versions of these values is a syntax error.\u{}
). All KDL documents and string values should be valid UTF-8 now, as was intended.;
, even if the closing}
is on the same line, so this is now a legal node:node {foo;bar;baz}
(foo)
annotations (so,( foo )
would be legal (( f oo )
would not be, since it has two identifiers))(blah) node (thing) 1 y= (who) 2
)=
for props (x = 1
)