11 KiB
11 KiB
Go Cap'n Proto Release Notes
2.17.3
- Clear read limits for
const
messages in schemas. (#131)
2.17.0
- Add
capnp.Canonicalize
function that implements the canonicalization algorithm. (#92) - Zero-sized struct pointers are now written with an offset of -1 to distinguish them from a null pointer. (#92)
- Better support for alternate
Arena
implementations- Document
Arena
contract in more detail - Permit an
Arena
to have a single empty segment inNewMessage
- Document
Arena
allocation optimizations: bothSingleSegment
andMultiSegment
now gradually ramp up the amount of space allocated in a single allocation as the message grows. This is similar to how built-in Goappend
function works. Workloads with medium to large messages should expect a decrease in number of allocations, while small message workloads should remain about the same. Please file an issue if you encounter any performance regressions. (#96)- Fix double-far pointer logic. (#97) This is a long-standing bug with reading and writing multi-segment messages. I've added broader test coverage for multi-segment messages and far pointers, so it's unlikely that such a failure will persist in the future.
- Accessing a field in a union when that field is not the one set now
results in a panic. (#56)
This is intended to help uncover programming mistakes where a union
field is accessed without checking
Which()
. Prior to this change, unset union field accessors would silently return garbage. Struct.Address()
andList.Address()
are now deprecated. Especially forList
, where the address is at the beginning of the data, not the composite literal, the return value is not well-defined and its not clear how to use it. Usecapnp.SamePtr
if you need to check for pointer reference equality. File an issue if you're usingAddress()
for something else.
2.16.0
- Add BUILD.bazel files (#88)
2.15.0
- capnpc-go now fails when a file does not include an import annotation. (#41)
- Remove rbtree dependency (#80)
- Add option to reduce allocations in
capnp.Decoder
(#79) - Add
String()
methods for lists (#85) - Add
String()
methods to schema.capnp.go (#83)
2.14.1
- Use new Go generated code convention in capnpc-go output (#78)
Retroactive Releases
go-capnproto2 was originally a "build from HEAD" sort of library, as was convention for most Go libraries at the time. Before 2.14.1, Semantic Versioning tags were retroactively added so that it would be clear what the differences were since original release, since marking it as "2.0.0" would seem awkward.
The general process was: any significant new feature was given a minor release, and then any bugfixes before the next minor release were given a "2.X.1" release.
Version | Description |
---|---|
2.14.0 | Add support to pogs for interface types (#66 and #74) |
2.13.1 | Fix bug with far far pointers (#71), use writev system call to encode multi-segment messages efficiently in Go 1.8+ (#70), and add GitHub-Linguist-compatible code generation comment |
2.13.0 | Add Conn.Done and Conn.Err methods |
2.12.4 | Fix size of created List(Float32) |
2.12.3 | Fix bugs from fuzz tests: mismatched element size on list access causing crashes (#59) and miscellaneous packed reader issues |
2.12.2 | Fix another shutdown race condition (#54) |
2.12.1 | Fix ownership bug with receiver-hosted capabilities, add discriminant check to HasField (#55), fix multi-segment bug for data/text lists, and use nulls for setting empty data/text |
2.12.0 | Add rpc.ConnLog option and fix race conditions and edge cases in RPC implementation |
2.11.1 | Fix packed reader behavior on certain readers (#49), add capnp.UnmarshalPacked function that performs faster, and reduce locking overhead of segment maps |
2.11.0 | Fix shutdown deadlock in RPC shutdown (#45) |
2.10.1 | Work around lack of support for RPC-level promise capabilities (#2) |
2.10.0 | Add pogs package (#33) |
2.9.1 | Fix not-found behavior in schemas and add missing group IDs in generated embedded schemas |
2.9.0 | Add encoding/text package (#20) |
2.8.0 | Reduce generated code size for text fields and correct NUL check |
2.7.0 | Insert compressed schema data into generated code |
2.6.1 | Strip NUL byte from TextList.BytesAt and fix capnpc-go output for struct groups |
2.6.0 | Add packages for predefined Cap'n Proto schemas |
2.5.1 | Fix capnpc-go regression (#29) and strip trailing NUL byte in TextBytes accessor |
2.5.0 | Add NewFoo method for list fields in generated structs (#7) |
2.4.0 | Add maximum segment limit (#25) |
2.3.0 | Add depth and traversal limit security checks |
2.2.1 | Fix data race in reading Message from multiple goroutines |
2.2.0 | Add HasFoo pointer field methods to generated code (#24) |
2.1.0 | Introduce Ptr type and reduce allocations in single-segment cases |
2.0.2 | Allow allocation-less string field access via TextList.BytesAt() and StringBytes() (#17) |
2.0.1 | Allow nil params in client wrappers (#9) and fix integer underflow on compare function (#12) |
2.0.0 | First release under zombiezen.com/go/capnproto2 |