Request for review of my binary encoding proposal
John Cowan
(17 Sep 2019 22:39 UTC)
|
Re: Request for review of my binary encoding proposal
Lassi Kortela
(18 Sep 2019 00:35 UTC)
|
Re: Request for review of my binary encoding proposal
Alaric Snell-Pym
(18 Sep 2019 10:09 UTC)
|
Re: Request for review of my binary encoding proposal
John Cowan
(18 Sep 2019 23:48 UTC)
|
Re: Request for review of my binary encoding proposal
Arthur A. Gleckler
(18 Sep 2019 23:51 UTC)
|
Data type registry
Lassi Kortela
(19 Sep 2019 16:47 UTC)
|
Re: Data type registry
John Cowan
(19 Sep 2019 20:21 UTC)
|
Re: Data type registry
Arthur A. Gleckler
(19 Sep 2019 21:37 UTC)
|
Symbol registry
Lassi Kortela
(19 Sep 2019 21:46 UTC)
|
Re: Symbol registry
Arthur A. Gleckler
(19 Sep 2019 21:48 UTC)
|
Why ASN.1 is not, like, actually evil
John Cowan
(18 Sep 2019 12:24 UTC)
|
Re: Why ASN.1 is not, like, actually evil
hga@xxxxxx
(18 Sep 2019 13:43 UTC)
|
Re: Why ASN.1 is not, like, actually evil
John Cowan
(18 Sep 2019 21:13 UTC)
|
Re: Why ASN.1 is not, like, actually evil
Lassi Kortela
(19 Sep 2019 17:01 UTC)
|
Re: Why ASN.1 is not, like, actually evil
John Cowan
(19 Sep 2019 18:27 UTC)
|
Re: Why ASN.1 is not, like, actually evil Lassi Kortela (19 Sep 2019 21:53 UTC)
|
Re: Request for review of my binary encoding proposal
John Cowan
(18 Sep 2019 23:29 UTC)
|
Re: Request for review of my binary encoding proposal
Lassi Kortela
(19 Sep 2019 16:08 UTC)
|
> here are a few sample serializations (if I haven't screwed up) > > 5 => 02 (fixed integer) 01 (length) 05 (value) > -32767 => 02 (fixed integer) 02 (length) 80 00 (value) > Some exact hugenum => 02 (fixed integer) 82 (meta-length of 2) 01 00 > (length of 256) xx xx xx ... (256 bytes of big-endian value) > > 1.22 => DB (IEEE float) 08 (length) 3F F3 85 1E B8 51 EB 85 (big-endian > float64) > > "abcäöü" => 0C (UTF-8) 09 (length) 61 62 63 C3 A4 C3 B6 C3 BC (UTF-8 > representation) > > xyz => DD (symbol) 03 (length) 78 79 7A (value) > > (5 1.22 "abcäöü" xyz) => E0 (list) 1D (length of 29) 02 01 05 DB 08 3F F3 > 85 1E B8 51 EB 85 0C 09 61 62 63 C3 A4 C3 B6 C3 Bc DD 03 78 79 7A > > #(5 1.22 "abcäöü" xyz) => same, except type code is 30, which is X.690 > standard as opposed to E0 which is in the set of type codes for private > standards. > > Note that a deserializer that doesn't understand symbols (code DD, also a > private standard code) can safely skip over the 3 bytes of the symbol > without losing registration with what might come next. Thanks for taking the time to produce detailed examples. These seem entirely reasonable to me. In fact, almost identical to the varint+typetag stuff. The only significant difference is that ASN.1 has some fixed-length numbers (though prefixed by a byte count). There's a bit of a chicken-and-egg problem here; I'd have to see a spec of a simple subset to evaluate it as a whole, but you have no incentive to produce a spec if you're not sure I'll like it. > Read this email and tell me what you think. It's not quite as simple as > your idea, but it does play nicely with other people, up to the limit of > their understanding, and they always know what they do not understand (see > below) and can't be confused by it, not only at the level of objects, but > at the level of parts of objects. That is a nice property to have. I'll have to think about it some more. >> Crucially, those binary S-expressions are also easy to use from C (well, >> as easy as any hierarchical dynamically-typed structure can be). > > I think these are too The above examples definitely are easy enough. > Not core at all. OIDs are a way of assigning vectors of numbers to things > or concepts in such a way that when lexicographically sorted they are > grouped administratively, which is useful for the purposes ASN.1 is > normally used for, but they are just another datatype. > > (You can get your very own official OID by going to < > https://oidplus.viathinksoft.com/oidplus/?goto=oid%3A1.3.6.1.4.1.37476.9000> > and asking for one at no charge Nice. Is there any way to use DNS names as identifiers within ASN.1? > The maximum safe value to use as an OID component is 2^32-1, so plain > vectors or s16vectors would be the Right Thing. You mean s32vectors? > As shown above, all types are prefixed with their length in bytes > (excluding the type and length itself), and for those types with > components, each component is prefixed with its length in bytes. There are > plenty of codes we can register and plenty of purely private-use codes, as > noted in one of my other postings. This is all good stuff.