Top 0.1% dependent packages on proxy.golang.org
Top 0.1% dependent repos on proxy.golang.org
Top 1.6% forks on proxy.golang.org
Top 0.1% docker downloads on proxy.golang.org
proxy.golang.org : github.com/ugorji/go/codec
Package codec provides a High Performance, Feature-Rich Idiomatic Go 1.4+ codec/encoding library for binc, msgpack, cbor, json. Supported Serialization formats are: This package will carefully use 'package unsafe' for performance reasons in specific places. You can build without unsafe use by passing the safe or appengine tag i.e. 'go install -tags=codec.safe ...'. This library works with both the standard `gc` and the `gccgo` compilers. For detailed usage information, read the primer at http://ugorji.net/blog/go-codec-primer . The idiomatic Go support is as seen in other encoding packages in the standard library (ie json, xml, gob, etc). Rich Feature Set includes: We gain performance by code-generating fast-paths for slices and maps of built-in types, and monomorphizing generic code explicitly so we gain inlining and de-virtualization benefits. The results are 20-40% performance improvements. Building and running is configured using build tags as below. At runtime: - codec.safe: run in safe mode (not using unsafe optimizations) - codec.notmono: use generics code (bypassing performance-boosting monomorphized code) - codec.notfastpath: skip fast path code for slices and maps of built-in types (number, bool, string, bytes) Each of these "runtime" tags have a convenience synonym i.e. safe, notmono, notfastpath. Pls use these mostly during development - use codec.XXX in your go files. Build only: - codec.build: used to generate fastpath and monomorphization code Test only: - codec.notmammoth: skip the mammoth generated tests Users can register a function to handle the encoding or decoding of their custom types. There are no restrictions on what the custom type can be. Some examples: As an illustration, MyStructWithUnexportedFields would normally be encoded as an empty map because it has no exported fields, while UUID would be encoded as a string. However, with extension support, you can encode any of these however you like. There is also seamless support provided for registering an extension (with a tag) but letting the encoding mechanism default to the standard way. This package maintains symmetry in the encoding and decoding halfs. We determine how to encode or decode by walking this decision tree This symmetry is important to reduce chances of issues happening because the encoding and decoding sides are out of sync e.g. decoded via very specific encoding.TextUnmarshaler but encoded via kind-specific generalized mode. Consequently, if a type only defines one-half of the symmetry (e.g. it implements UnmarshalJSON() but not MarshalJSON() ), then that type doesn't satisfy the check and we will continue walking down the decision tree. RPC Client and Server Codecs are implemented, so the codecs can be used with the standard net/rpc package. The Handle is SAFE for concurrent READ, but NOT SAFE for concurrent modification. The Encoder and Decoder are NOT safe for concurrent use. Consequently, the usage model is basically: Sample usage model: To run tests, use the following: To run the full suite of tests, use the following: You can run the tag 'codec.safe' to run tests or build in safe mode. e.g. You can run the tag 'codec.notmono' to build bypassing the monomorphized code e.g. Running Benchmarks Please see http://github.com/ugorji/go-codec-bench . Struct fields matching the following are ignored during encoding and decoding Every other field in a struct will be encoded/decoded. Embedded fields are encoded as if they exist in the top-level struct, with some caveats. See Encode documentation.
Registry
-
Source
- Documentation
- JSON
purl: pkg:golang/github.com/ugorji/go/codec
License: MIT
Latest release: 4 months ago
First release: over 6 years ago
Namespace: github.com/ugorji/go
Dependent packages: 19,089
Dependent repositories: 82,619
Stars: 1,906 on GitHub
Forks: 301 on GitHub
Docker dependents: 3,758
Docker downloads: 2,525,830,250
Total Commits: 1088
Committers: 18
Average commits per author: 60.444
Development Distribution Score (DDS): 0.018
More commit stats: commits.ecosyste.ms
See more repository details: repos.ecosyste.ms
Last synced: about 5 hours ago