Skip to content

v1.0.0

Choose a tag to compare

@github-actions github-actions released this 05 Aug 12:15
· 46 commits to main since this release

Added

Changed

  • Breaking: The wire format changed in a way that is not backwards compatible. Once the version is bumped at release, data serialized by older versions will be refused on deserialization (the wire-version check is now a hard gate; compatibility follows SemVer — under 0.x every minor is breaking, from 1.0 on only major bumps are).
  • Breaking: Auto-generated guids no longer round-trip. They were always session-local uuid4s and never stable across save/load; only explicitly set guids are now serialized.
  • Reworked the wire format into a fully lossless binary mode: all geometry coordinate/scalar fields are now double instead of float, so float64 geometry round-trips exactly.
  • Changed AnyData to use explicit int64/double/dict_value/list_value arms instead of routing values through google.protobuf.Value/Any, so integral floats no longer come back as ints and nested dicts/lists no longer carry a type URL. Mesh/Graph are now fully lossless (canonical hash matches).
  • Changed mesh vertices, pointcloud, polyline, polygon, bezier and polyhedron points to a flat packed repeated double layout, and mesh faces to CSR form (face_vertices + face_sizes), instead of one message per point/face.
  • Changed per-element attributes (mesh vertices/faces/edges and graph nodes/edges) to a columnar repeated AttributeColumn layout with packed numeric arrays, replacing the previous per-element map<string, AnyData>. Empty/absent attribute sets cost nothing.
  • Changed GraphData to store node keys once, node attributes (including x/y/z) column-wise, and edges as index pairs into the node keys.
  • Changed guid and name to only be serialized when explicitly set. Auto-generated guids (session-local uuid4s) no longer round-trip; explicit guids still do.
  • Changed Rotation to be stored as its flattened 4x4 matrix (like other transforms) and reconstructed via Rotation.from_matrix, so rotations round-trip bit-exact.
  • Changed the wire-version check into a hard gate: deserialization now raises on a missing or incompatible wire version (compatibility follows SemVer) instead of warning and continuing.

Removed