-
Notifications
You must be signed in to change notification settings - Fork 526
Description
It appears there are multiple "base extensions" that commonly come up. It may be a good idea to create a list of extension id's that are super commonly used if only to create a ad-hoc'ish standard. (a list sort of like the one on wikipedia for port's)
For example:
| ID | Type | Description | Recursive |
|---|---|---|---|
| 0 | Set | Array without duplicates | ✔ |
| 1 | Strict-Map | Guarantees a Map Object | ✔ |
| 2 | BigInt | 64-bit Int's | ✖ |
Obviously these would not need to be implemented by all systems (or even recognised) however it may be useful to have a general list to monitor common extensions since if a extension is used enough we may wish to "canonize" it and give a dedicated negative number for its use.
I propose using the msgpack/custom-types project's wiki (along with getting links to it) for collecting the list along with a list of implementations for the types along with descriptions of their format's and rationals.
It may also provide a good testing ground for how needed different extensions are. A quick check of the issues gives me:
- ASCII Support of ASCII strings #331 (?)
- Database Types Proposal: Addition of 4 Predefined Extension Types to MessagePack to improve on-demand forward reading and storage efficiency #330, Records and references #297,
- Timestamp Modifications (Date only Add timestamp for date only (days since 1970-01-01, years since 1970). #296, nanoseconds Explicitly state how nanoseconds are added to seconds. #275, Etc.)
- Dynamic Length Array's & Maps Proposal: support dynamic length arrays and maps for data streaming #270
- Cyclic References Cyclic structure references not mentioned #253
- typed N-D array Add support for typed N-D array to simplify large array storage #267
- UUID Support UUID as msgpack type in tuple, index, protocol #239 A special format for UUID #222
- IPv4 (binary representation)
- IPv6 (binary representation)
- Extended Extensions (Using one top-level Extension ID for multiple sub-extensions)
Many of the issues are domain-specific and likely not needed in the majority of use-cases, however more examples would likely be useful.