Releases: compas-dev/compas_pb
Releases · compas-dev/compas_pb
Release list
v1.2.0
Added
- Added
create-proto-bundle, which zips the.protoschemas 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_LANGUAGESmaps 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
.protofiles versus who implements a runtime. - Added a guide for implementing a
compas_pbruntime 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
.protofiles can reuse them.base_folderandproto_foldernow accept a string or aPath. - 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-classesto 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
Added
Changed
- Updated CI infrastructure to new
compas-dev/compas-actions
Removed
v1.1.3
v1.1.2
v1.1.1
v1.1.0
Added
- Added a
compas_pb migratecommand that re-encodes data written by an older, wire-incompatible version into the current format. It decodes the blob in an ephemeraluvenvironment 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--inspectreports which version wrote a blob without migrating it. - Added
compas_pb.cli.migrate_bytesandcompas_pb.cli.detect_wire_versionfor 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 migrateinstead of only telling the user to re-serialize the source.
Removed
v1.0.0
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
doubleinstead offloat, sofloat64geometry round-trips exactly. - Changed
AnyDatato use explicitint64/double/dict_value/list_valuearms instead of routing values throughgoogle.protobuf.Value/Any, so integral floats no longer come back as ints and nested dicts/lists no longer carry a type URL.Mesh/Graphare now fully lossless (canonical hash matches). - Changed mesh vertices, pointcloud, polyline, polygon, bezier and polyhedron points to a flat packed
repeated doublelayout, 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 AttributeColumnlayout with packed numeric arrays, replacing the previous per-elementmap<string, AnyData>. Empty/absent attribute sets cost nothing. - Changed
GraphDatato store node keys once, node attributes (includingx/y/z) column-wise, and edges as index pairs into the node keys. - Changed
guidandnameto only be serialized when explicitly set. Auto-generated guids (session-localuuid4s) no longer round-trip; explicit guids still do. - Changed
Rotationto be stored as its flattened 4x4 matrix (like other transforms) and reconstructed viaRotation.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
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 removex,y,zkeys. - Added support for
compas.datastructures.Graphserialization and deserialization.
Changed
Removed
v0.4.10
Added
Changed
- Better handling of os and architecture combinations in the invocations module.
Removed
v0.4.9
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
guidisn't maintained round-trip on some types.