Skip to content

vacp2p/nim-cbor-serialization

Repository files navigation

nim-cbor-serialization

License: Apache License: MIT Stability: experimental Github action

Introduction

nim-cbor-serialization is a library in the nim-serialization family for turning Nim objects into CBOR and back. Features include:

  • Efficient coding of CBOR directly to and from Nim data types
    • Full type-based customization of both encoding and decoding
    • Flavors for defining multiple CBOR serialization styles per Nim type
    • Efficient skipping of data items for partial CBOR parsing
  • Flexibility in mixing type-based and dynamic CBOR access
    • Structured CborValueRef node type for DOM-style access to parsed data
    • Flat CborBytes type for passing nested CBOR data between abstraction layers
  • RFC8949 spec compliance
    • Passes CBORTestVectors
    • Customizable parser strictness including support for non-standard extensions
  • Well-defined handling of malformed / malicious inputs with configurable parsing limits

Getting started

requires "cbor_serialization"

Create a type and use it to encode and decode CBOR:

import cbor_serialization

type Request = object
  cborrpc: string
  `method`: string

let encoded = Cbor.encode(Request(cborrpc: "2.0", `method`: "name"))
let decoded = Cbor.decode(encoded, Request)

echo decoded.cborrpc

Documentation

See the user guide.

Contributing

Contributions are welcome - please make sure to add test coverage for features and fixes!

cbor_serialization follows the Status Nim Style Guide.

License

Licensed and distributed under either of

or

at your option. These files may not be copied, modified, or distributed except according to those terms.

About

Flexible CBOR serialization not relying on run-time type information

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHEv2
MIT
LICENSE-MIT

Stars

Watchers

Forks

Languages