CCF Specifications 1.0.0-RC2 is the first tagged version.
Many thanks to @ramtinms and @turbolent! 🎉
NOTE: Some optional parts of CCF Specifications 1.0.0-RC2 are not yet implemented by the CCF Codec in the Cadence repository.
Acknowledgements
This document would not exist without Ramtin M. Seraj and Bastian Müller.
Ramtin and Bastian's contributions on this effort is hard to list exhaustively because they inspire individuals and teams to produce impactful results.
Ramtin M. Seraj led the effort to require a deterministic and more compact alternative to JSON-Cadence Data Interchange Format. This document's "Objectives" section includes and adds to the initial objectives Ramtin listed (in a notion) for a binary format for Cadence external values.
Bastian Müller helped the author understand details related to Cadence types and values, which made writing this document possible. Bastian also led the PR reviews of this document, contributed changes, asked great questions during CCF meetings, and identified sections that needed clarification (in both the CDDL notation and English text).
What's Changed
- Add parentheses to CDDL for readability by @fxamacker in #5
- Add more examples by @fxamacker in #8
- Add CI workflow to check CDDL syntax by @fxamacker in #15
- Fix CDDL compile errors and improve formatting of CCF specs document by @turbolent in #10
- Fix formatting error and bump revision by @fxamacker in #16
- Use CDDL naming convention specified in Section 3.1 in RFC 8610 by @fxamacker in #17
- Fix CBOR tag numbers to match CCF codec by @fxamacker in #19
- Add simple type ID in CDDL by @fxamacker in #21
- Add Cadence value encodings in CDDL by @fxamacker in #22
- Fix capability type encoding in CDDL by @fxamacker in #24
- Update CDDL to use more consistent naming, etc. by @fxamacker in #25
- Rename specs file to ccf_specs.md and add normal README.md by @fxamacker in #27
- Add Type Value encoding in CDDL by @fxamacker in #28
- Fix formatting by @fxamacker in #29
- Simplify CDDL choice by using CDDL group by @fxamacker in #30
- Add numeric ranges in CDDL by @fxamacker in #31
- Use array for capability type by @fxamacker in #32
- Add info about Cadence and a Timeline section by @fxamacker in #33
- Add more types and reassign tag numbers in CDDL by @fxamacker in #35
- Rewrite Abstract and update README by @fxamacker in #36
- Update intro, add sections with copyright notice & status, reformat a CDDL comment by @fxamacker in #37
- Rename CCF Design section to Objectives by @fxamacker in #38
- Add preliminary size and benchmark comparisons to README by @fxamacker in #40
- Clarify difference between Cadence type and TypeValue by @fxamacker in #39
- Update Status, Timeline, Next Steps by @fxamacker in #41
- Cite RFC 8949 section 6 for CBOR/JSON conversion by @fxamacker in #43
- Remove link-value from CDDL by @fxamacker in #44
- Remove path-domain in CDDL by @fxamacker in #45
- Add cadence-type-id to restricted-type in CDDL by @fxamacker in #46
- Add nil type value in CDDL by @fxamacker in #47
- Simplify function-type-value in CDDL by @fxamacker in #48
- Add a top level CCF message that combines a Cadence value with list of referenced type definitions by @fxamacker in #51
- Add constraints to uint values in CDDL by @fxamacker in #53
- Update Terminology section and add RFC 8174 boilerplate by @fxamacker in #55
- Update Terminology by @fxamacker in #56
- Specify requirements for Valid and Deterministic Encodings by @fxamacker in #57
- Update CCF status and timeline in README by @fxamacker in #58
- Add Acknowledgements Section by @fxamacker in #60
- Replace DRAFT status with RC1 by @fxamacker in #61
- Update CCF and JSON comparisons in README by @fxamacker in #63
- Update benchmark results in README by @fxamacker in #65
- Fix multiplicities by @turbolent in #66
- Fix more multiplicities by replacing CDDL representing "one or more" with "zero or more" by @fxamacker in #67
- Remove unnecessary cadence-type-id by @fxamacker in #69
- Add type-parameters to function-value in CDDL by @fxamacker in #71
- Update composite-type-value.initializers by @fxamacker in #74
- Improve
function-value
by @turbolent in #75 - Remove nullable type-value and explicitly specify by @fxamacker in #77
- Allow null for capability and restricted type elem by @fxamacker in #79
- Explain one-or-more multiplicity in composite-typedef by @turbolent in #80
- Update examples to match latest CDDL by @fxamacker in #82
- Update text about fxamacker/cbor (CBOR codec) by @fxamacker in #85
- Update text sections to not bury ledes by @fxamacker in #86
- Add Introduction section to README, update Status & Timeline sections by @fxamacker in #88
- Update Security Considerations and other text by @fxamacker in #89
- Add IETF published comparisons between CBOR and other binary formats by @fxamacker in #91
- Update ccf_specs.md for RC2 DRAFT by @fxamacker in #93
- Update CCF Specifications to add Scope, etc. by @fxamacker in #94
- Improve and shorten Introduction by @fxamacker in #95
- Improve Why CBOR section by @fxamacker in #96
- Add more context in Introduction about efficient rejection of malformed inputs by @fxamacker in #97
- Add new Cadence types and values to CDDL by @fxamacker in #98
- Update status from "RC2 DRAFT" to "RC2" by @fxamacker in #99
- Update "Interoperability and Reuse of CBOR Codecs" by @fxamacker in #100
Full Changelog: https://github.com/fxamacker/ccf_draft/commits/1.0.0-RC2