capnp v0.4.0.0 Release Notes

    • 👍 RPC support! This should be considered alpha quality for now. The API will likely change substantially.
    • ⬆️ Many bug fixes; users are strongly encouraged to upgrade.
    • Reorganization of the module hierarchy:
      • Generated code is now placed under Capnp.Gen, rather than Capnp.
      • The Data prefix has been removed from the Data.Capnp hierarchy.
    • ⚡️ The included generated modules for the core schema have been updated to those shipped with version 0.7 of the reference implementation.
    • Other miscellaneous API Changes:
      • createPure can now be used with any instance of MonadThrow, not just Either SomeException.
      • LimitT m is now an instance of MonadIO, provided that m is an instance.
      • More type class instances from elsewhere in the library are re-exported via the Capnp module.
      • The IsPtr type class has been split into FromPtr and ToPtr. Most user code should not care about this.
      • Generated high-level types no longer have Read instances; interfaces make this problematic.
      • Getters for anonymous unions are now get_Foo' instead of get_Foo'union'.
      • newMessage now accepts an optional size hint.
      • Instances of Cerialize now exist/are generated for (Vector (Vector (Vector ...))) up to a reasonable depth.
    • Other improvements not directly reflected in the API:
      • The allocation strategy has changed to reduce unnecessary copying.
      • It is now possible to create messages with a size > 2GiB. Note that individual segments are still limited.