Skip to content

Releases: compas-dev/compas_pb

v1.2.0

Choose a tag to compare

@github-actions github-actions released this 19 Aug 08:50
8c33c65

Added

  • Added create-proto-bundle, which zips the .proto schemas for upload as a release asset, so downstream generators can pin a schema version instead of reading files out of this repository.
  • Added TypeScript to the generated bindings, via @bufbuild/protoc-gen-es. PROTO_PLUGIN_LANGUAGES maps a language to the flag its protoc plugin registers, so javascript and go can be added the same way.
  • Added an Architecture page describing how one domain model reaches many languages, and who owns .proto files versus who implements a runtime.
  • Added a guide for implementing a compas_pb runtime in a new language.

Changed

  • Changed the asset tasks to take their package name and output folder from the invoke configuration, so any package that owns .proto files can reuse them. base_folder and proto_folder now accept a string or a Path.
  • Changed assets built by a protoc plugin to carry the plugin version rather than the protoc version, since the plugin is what shapes the generated API.
  • Changed generate-proto-classes to raise on an unsupported target language, instead of warning and then running protoc with an empty output flag.
  • Changed the asset job to use compas-dev/compas-actions/release-assets@v1.

Removed

v1.1.4

Choose a tag to compare

@github-actions github-actions released this 13 Aug 14:35
0521b1d

Added

Changed

  • Updated CI infrastructure to new compas-dev/compas-actions

Removed

v1.1.3

Choose a tag to compare

@github-actions github-actions released this 13 Aug 10:08

Added

Changed

Removed

v1.1.2

Choose a tag to compare

@github-actions github-actions released this 13 Aug 09:47
Bump version: 1.1.1 → 1.1.2

v1.1.1

Choose a tag to compare

@github-actions github-actions released this 13 Aug 09:05

Added

Changed

Removed

v1.1.0

Choose a tag to compare

@github-actions github-actions released this 10 Aug 12:17

Added

  • Added a compas_pb migrate command that re-encodes data written by an older, wire-incompatible version into the current format. It decodes the blob in an ephemeral uv environment holding the version that wrote it, bridges through COMPAS JSON, and re-encodes with the current build. Reads from a file or stdin, writes to a file or stdout, and --inspect reports which version wrote a blob without migrating it.
  • Added compas_pb.cli.migrate_bytes and compas_pb.cli.detect_wire_version for the same migration from Python.
  • Added a migration guide at docs/migration.md.

Changed

  • Changed the incompatible-wire-format error to point at compas_pb migrate instead of only telling the user to re-serialize the source.

Removed

v1.0.0

Choose a tag to compare

@github-actions github-actions released this 05 Aug 12:15

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

v0.5.0

Choose a tag to compare

@github-actions github-actions released this 08 May 14:01

Added

  • Added support for attributes of compas.datastructures.Mesh (mesh, edges, vertices, faces attributes) to be serialized and deserialized. PointData is backwards compatible with previous versions, so vertex attributes are filtered to remove x, y, z keys.
  • Added support for compas.datastructures.Graph serialization and deserialization.

Changed

Removed

v0.4.10

Choose a tag to compare

@github-actions github-actions released this 15 Apr 08:51
v0.4.10
3cf3362

Added

Changed

  • Better handling of os and architecture combinations in the invocations module.

Removed

v0.4.9

Choose a tag to compare

@github-actions github-actions released this 16 Feb 16:48
v0.4.9
4aa4c54

Added

Changed

  • Refactored proto definitions from 31 separate files into three organized files (geometry.proto, datastructures.proto, message.proto) to better reflect COMPAS package structure.
  • Fixed guid isn't maintained round-trip on some types.

Removed