Hi @vmihailenco,
First, thank you for building and maintaining msgpack-go — it's been a fantastic library and we've relied on it in production for high-throughput workloads processing millions of records per second.
We noticed the last release was ~3 years ago and there are several open issues that affect our use case. We've decided to create a community fork at Basekick-Labs/msgpack where we plan to actively maintain and improve the library.
What we're working on
Bug fixes (from your open issues):
Performance optimizations:
- Zero-allocation byte-slice reader for
Unmarshal (bypass bytes.NewReader + bufio.NewReader)
- Fast path for
*interface{} in Decode() type-switch
- Buffer pooling in
Marshal()
- Direct encode paths for
map[string]interface{} and []interface{}
Our full roadmap: Basekick-Labs#8
Contributing back
We're happy to contribute fixes back upstream as PRs if you're interested. If you'd prefer to keep the upstream as-is, that's completely fine — we'll maintain the fork independently.
Thanks again for the great foundation!
Hi @vmihailenco,
First, thank you for building and maintaining msgpack-go — it's been a fantastic library and we've relied on it in production for high-throughput workloads processing millions of records per second.
We noticed the last release was ~3 years ago and there are several open issues that affect our use case. We've decided to create a community fork at Basekick-Labs/msgpack where we plan to actively maintain and improve the library.
What we're working on
Bug fixes (from your open issues):
reflect.Value.SetString using unaddressable valueon concrete values contained within any structures #373 — SetString panic on nestedanystructuresomitemptyunexpectedly omits a member when the member is a struct with a non-zero unexported member #378 — omitempty with unexported fieldsPerformance optimizations:
Unmarshal(bypassbytes.NewReader+bufio.NewReader)*interface{}inDecode()type-switchMarshal()map[string]interface{}and[]interface{}Our full roadmap: Basekick-Labs#8
Contributing back
We're happy to contribute fixes back upstream as PRs if you're interested. If you'd prefer to keep the upstream as-is, that's completely fine — we'll maintain the fork independently.
Thanks again for the great foundation!