Re: Next YAML: drop equality definition

Ingy dot Net <[email protected]> Mon, 7 Mar 2016 11:33:11 -0800
Newsgroups gmane.text.yaml.general
Message-ID <CAHJtQJ61F7ZaZ-k0nLWwKnWr9yjOg37J_bUdPrWUbnetmuZLJA@mail.gmail.com>
Thanks Oren,

I'll try to make all of this clear in the YAML Developers Guide. I can
start by making a document that declares the layers and what properties
apply and such. Then we can have more precise and targeted arguments. :)

My main addition is that the reader/writer transforms between your layer 0
and 1 are responsible for transforming between a unicode encoding and a
stream of unicode code point integers. Do you agree?

Ingy

On Mon, Mar 7, 2016 at 10:54 AM, Oren Ben-Kiki <[email protected]> wrote:

> This has been a long thread...
>
> The way I see it: The spec is what it is :-)
>
> Using the layered approach to describe YAML processing, then:
>
> Layer 0 is the text file (Unicode encoding etc.). It doesn't do anything.
>
> Layer 1 is the parser/scanner/grammer/etc. It doesn't do duplicate key
> detection. It does provide key order. It provides indentation levels, and
> the way strings are wrapped in lines, and how characters are quoted, and
> lots of other "presentation" details. It can be streaming. YamlReference is
> an example.
>
> Layer 2 is building an abstract node graph (with either some or all of the
> nodes having resolved tags). It _need not_ preserve key order. It _need
> not_ preserve identity of scalars. It _may_ do duplicate key detection, but
> if it does it _must_ do so in a way that ensures "no false positives", that
> is, it may _only_ flag keys as duplicate if the application _must_ consider
> them equal, given the YAML data model (thanks to Osamu for finding a gap in
> the definition of this data model).
>
> Layer 3 is the application native data structures. They _must not_ depend
> on scalar identity. They _must not_ depend on key order in a mapping. They
> _must not_ depend on duplicate keys in a mapping. You can have key order
> and duplicate keys in an !!omap or something like that.
>
> A concrete system can work at level 0 only (e.g., re-encode a YAML file
> from utf-8 to utf-32be). Or level 0/1 only (e.g., a YAML pretty-printer).
> Or level 0/1/2 only (e.g., a ypath tool for extracting specific fragments
> from a document). Or level /0/1/2/3 (a full application). All are valid.
> Each one uses a different (related) data model.
>
> Much of the confusion in this very long thread is due to people applying
> the restrictions or data model of a level X to another level Y where they
> do not apply. Also, confusing between what is _allowed_ and what is
> _required_ in each level.
>
> The above rules allow _control_ over the interoperability of YAML data
> between systems. Note - "control", not "guarantee". Nothing can "guarantee"
> interoperability between the native data types of completely unrelated
> platforms.
>
> The rules also try to minimize the "surprise" people may feel when
> learning on how the application actually interprets the data.
>
> Sometimes this means that less-common data needs to be serialized with a
> bit more syntax (e.g., !!omap notation vs. !!map notation). Note the fact
> we _require_ the use of a less-streamlined syntax (1) does not _prevent_ us
> from being able to serialize "anything at all" into YAML and (2) does not
> necessarily reduce legibility - in fact, it arguably increases.
>
> Now, you can break any of the above rules, with the understanding that by
> doing so you are stepping outside of what YAML provides. In this case your
> system may produce unexpected results if valid YAML processors are applied
> to the data, and will "surprise" people who expect YAML behavior. So, while
> we can't prevent people from doing whatever they want - this is a free
> universe - we can require that people doing such such things will not say
> "this is a valid YAML system".
>
> BTW: The reason that tags can't apply to different kinds of nodes is due
> to the identity issue. Collection identity is guaranteed by YAML. Scalar
> identity is not. Applying the same tag to both raises some sticky issues.
> That said, we may be able to relax this by using careful wording
> (especially given the gap Osamu has found). I'm not certain it is a problem
> in practice, though.
>
> So... "it is what it is". I hope the above helps explain why.
>
> Oren.
>
>
> ------------------------------------------------------------------------------
> Transform Data into Opportunity.
> Accelerate data analysis in your applications with
> Intel Data Analytics Acceleration Library.
> Click to learn more.
> http://makebettercode.com/inteldaal-eval
> _______________________________________________
> Yaml-core mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/yaml-core
>
>

------------------------------------------------------------------------------
Transform Data into Opportunity.
Accelerate data analysis in your applications with
Intel Data Analytics Acceleration Library.
Click to learn more.
http://makebettercode.com/inteldaal-eval

_______________________________________________
Yaml-core mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/yaml-core