Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ openbim-ifc = { path = "crates/openbim-ifc", version = "0.39.0", default-feature
openbim-ifc-binding-core = { path = "crates/openbim-ifc-binding-core", version = "0.1.0", default-features = false }
ifc-step = { path = "crates/ifc-step", version = "0.6.0" }
ifc-xml = { path = "crates/ifc-xml", version = "0.5.0" }
ifc-model = { path = "crates/ifc-model", version = "0.4.3" }
ifc-model = { path = "crates/ifc-model", version = "0.4.4" }
ifc-geometry = { path = "crates/ifc-geometry", version = "0.32.0", default-features = false }
ifc-properties = { path = "crates/ifc-properties", version = "0.10.0", default-features = false }
ifc-template-catalog = { path = "crates/ifc-template-catalog", version = "0.4.0", default-features = false }
Expand Down
5 changes: 4 additions & 1 deletion crates/ifc-model/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ everything released before per-crate changelogs began.

## [Unreleased]

## [0.4.4] - 2026-10-29

### Fixed (#595)

- `Model::set_attribute` and `Model::set_attributes` panic before any write
Expand Down Expand Up @@ -185,7 +187,8 @@ First release under per-crate versioning. See the
[repository changelog](../../CHANGELOG.md) for the family-wide history
that produced this version.

[Unreleased]: https://github.com/openbimrs/ifc/compare/ifc-model-v0.4.3...HEAD
[Unreleased]: https://github.com/openbimrs/ifc/compare/ifc-model-v0.4.4...HEAD
[0.4.4]: https://github.com/openbimrs/ifc/releases/tag/ifc-model-v0.4.4
[0.4.3]: https://github.com/openbimrs/ifc/releases/tag/ifc-model-v0.4.3
[0.4.2]: https://github.com/openbimrs/ifc/releases/tag/ifc-model-v0.4.2
[0.4.1]: https://github.com/openbimrs/ifc/releases/tag/ifc-model-v0.4.1
Expand Down
2 changes: 1 addition & 1 deletion crates/ifc-model/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "ifc-model"
version = "0.4.3"
version = "0.4.4"
edition = "2021"
rust-version = "1.99"
license = "AGPL-3.0-or-later OR LicenseRef-Commercial"
Expand Down
5 changes: 4 additions & 1 deletion crates/openbim-ifc/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ everything released before per-crate changelogs began.

## [Unreleased]

## [0.39.3] - 2026-10-29

### Added (#595)

- `Model::preview` (from `ifc-model` 0.4.4); the `authoring` bench measures it
Expand Down Expand Up @@ -1399,7 +1401,8 @@ First release under per-crate versioning. See the
[repository changelog](../../CHANGELOG.md) for the family-wide history
that produced this version.

[Unreleased]: https://github.com/openbimrs/ifc/compare/openbim-ifc-v0.39.2...HEAD
[Unreleased]: https://github.com/openbimrs/ifc/compare/openbim-ifc-v0.39.3...HEAD
[0.39.3]: https://github.com/openbimrs/ifc/releases/tag/openbim-ifc-v0.39.3
[0.39.2]: https://github.com/openbimrs/ifc/releases/tag/openbim-ifc-v0.39.2
[0.39.1]: https://github.com/openbimrs/ifc/releases/tag/openbim-ifc-v0.39.1
[0.39.0]: https://github.com/openbimrs/ifc/releases/tag/openbim-ifc-v0.39.0
Expand Down
2 changes: 1 addition & 1 deletion crates/openbim-ifc/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "openbim-ifc"
version = "0.39.2"
version = "0.39.3"
edition = "2021"
rust-version = "1.99"
license = "AGPL-3.0-or-later OR LicenseRef-Commercial"
Expand Down
10 changes: 5 additions & 5 deletions docs/.vitepress/data/facts.json
Original file line number Diff line number Diff line change
Expand Up @@ -175,10 +175,10 @@
"url": "https://crates.io/crates/ifc-model"
}
],
"released": "0.4.3",
"released_date": "2026-10-28",
"released": "0.4.4",
"released_date": "2026-10-29",
"status": "implemented",
"version": "0.4.3"
"version": "0.4.4"
},
"ifc-occurrence": {
"description": "Built element and distribution occurrence classes and their type pairing.",
Expand Down Expand Up @@ -400,10 +400,10 @@
"url": "https://crates.io/crates/openbim-ifc"
}
],
"released": "0.39.2",
"released": "0.39.3",
"released_date": "2026-10-29",
"status": "implemented",
"version": "0.39.2"
"version": "0.39.3"
},
"openbim-ifc-binding-core": {
"description": "Host-independent core shared by the openbim-ifc language bindings (WebAssembly, C ABI, Python).",
Expand Down
2 changes: 1 addition & 1 deletion docs/guide/install.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ one reads the same in the others.

| Language | Package | Latest release | Install | Requires | Reference |
| --- | --- | --- | --- | --- | --- |
| Rust | [`openbim-ifc`](https://crates.io/crates/openbim-ifc) | 0.39.2 (2026-10-29) | `cargo add openbim-ifc` | Rust `1.99.0` | [`openbim-ifc`](/reference/crates/openbim-ifc) |
| Rust | [`openbim-ifc`](https://crates.io/crates/openbim-ifc) | 0.39.3 (2026-10-29) | `cargo add openbim-ifc` | Rust `1.99.0` | [`openbim-ifc`](/reference/crates/openbim-ifc) |
| JavaScript / TypeScript | [`@openbim/ifc`](https://www.npmjs.com/package/@openbim/ifc) | 0.15.0 (2026-10-28) | `npm install @openbim/ifc` | Node `>=18` | [`openbim-ifc-wasm`](/reference/crates/openbim-ifc-wasm) |
| Python | [`openbim-ifc`](https://pypi.org/project/openbim-ifc/) | 0.15.0 (2026-10-28) | `pip install openbim-ifc` | Python `>=3.9` | [`openbim-ifc-py`](/reference/crates/openbim-ifc-py) |
| C / C++ | [`openbim_ifc`](https://github.com/openbimrs/ifc/releases/tag/openbim-ifc-capi-v0.1.20) (CMake, prebuilt archives) | 0.1.20 (2026-10-28) | `find_package(openbim_ifc)` | a C11 or C++17 compiler and CMake 3.21; Rust to build from source | [`openbim-ifc-capi`](/reference/crates/openbim-ifc-capi) |
Expand Down
29 changes: 12 additions & 17 deletions docs/reference/crates/ifc-model.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ The IFC entity graph: storage and structural queries, free of domain semantics a
| | |
| --- | --- |
| Status | <span class="status-implemented">Implemented</span> |
| Latest release | 0.4.3 (2026-10-28) |
| Latest release | 0.4.4 (2026-10-29) |
| Registries | [crates.io `ifc-model`](https://crates.io/crates/ifc-model) |
| API documentation | [rustdoc](/api/rustdoc/ifc_model/index.html){target="_self"} · [docs.rs](https://docs.rs/ifc-model) |
| Source | [`crates/ifc-model/`](https://github.com/openbimrs/ifc/tree/main/crates/ifc-model) |
Expand All @@ -29,25 +29,20 @@ serialization.

## Changes

Latest release, 0.4.3 (2026-10-28):
Latest release, 0.4.4 (2026-10-29):

### Added (#587)
### Fixed (#595)

- `Model::reverse_index`: the reverse index, built on the first call and kept
current by every write, undo and redo after that; equal to
`ReverseIndex::build` at every moment.
- `Model::global_id_candidates`: the entities whose first attribute is the
text of a `Guid`, ascending by id, kept the same way.
- `Model::drop_derived_indexes`, to free both.
- `PartialEq` and `Eq` on `ReverseIndex`.
- `Model::set_attribute` and `Model::set_attributes` panic before any write
for an attribute index of `usize::MAX`, instead of wrapping in release builds
and truncating the entity, or leaving the first edits of a batch unrecorded.

### Changed (#587)
### Added (#595)

- `Transaction::preflight` reads the model's own reverse index when something
built it, instead of scanning the model for a commit that removes.
- Undoing a batch is linear in the batch: file order and type buckets are
searched from the end.

Semver: minor.
- `Model::preview` runs a change and rolls it back exactly, the revision
included: entities, orders, header, next free id, diagnostics and the
maintained indexes are put back, and a `History`, `Transaction` or `Inverse`
made before it stays valid. Revisions drawn inside are never reissued.
Semver: minor (additive).

Full history: [`crates/ifc-model/CHANGELOG.md`](https://github.com/openbimrs/ifc/blob/main/crates/ifc-model/CHANGELOG.md)
16 changes: 5 additions & 11 deletions docs/reference/crates/openbim-ifc.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ Facade for the openBIM IFC crates: pick codecs and domains as features.
| | |
| --- | --- |
| Status | <span class="status-implemented">Implemented</span> |
| Latest release | 0.39.2 (2026-10-29) |
| Latest release | 0.39.3 (2026-10-29) |
| Registries | [crates.io `openbim-ifc`](https://crates.io/crates/openbim-ifc) |
| API documentation | [rustdoc](/api/rustdoc/ifc/index.html){target="_self"} · [docs.rs](https://docs.rs/openbim-ifc) |
| Source | [`crates/openbim-ifc/`](https://github.com/openbimrs/ifc/tree/main/crates/openbim-ifc) |
Expand Down Expand Up @@ -103,17 +103,11 @@ Facade for the openBIM IFC crates: pick codecs and domains as features.

## Changes

Latest release, 0.39.2 (2026-10-29):
Latest release, 0.39.3 (2026-10-29):

### Fixed (#596)
### Added (#595)

- A layer, profile or constituent set, or an IFC2X3 `IfcMaterialList`,
naming several materials no longer refuses the product before looking at
them: with no styled material it has no colour, with all styled
materials agreeing on rgb and transparency it takes that colour, and
anything else (differing styles, or a mix of styled and unstyled
materials) is `ColourError::AmbiguousMaterial`.

Semver: patch.
- `Model::preview` (from `ifc-model` 0.4.4); the `authoring` bench measures it
against a clone.

Full history: [`crates/openbim-ifc/CHANGELOG.md`](https://github.com/openbimrs/ifc/blob/main/crates/openbim-ifc/CHANGELOG.md)
4 changes: 2 additions & 2 deletions docs/reference/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,14 @@ Every page here is generated from the crate itself: its manifest, its crate docu

| Crate | Status | Latest release | Description |
| --- | --- | --- | --- |
| [`openbim-ifc`](./crates/openbim-ifc) | <span class="status-implemented">Implemented</span> | 0.39.2 | Facade for the openBIM IFC crates: pick codecs and domains as features. |
| [`openbim-ifc`](./crates/openbim-ifc) | <span class="status-implemented">Implemented</span> | 0.39.3 | Facade for the openBIM IFC crates: pick codecs and domains as features. |

## Model, codecs, schema, authoring and validation

| Crate | Status | Latest release | Description |
| --- | --- | --- | --- |
| [`ifc-author`](./crates/ifc-author) | <span class="status-implemented">Implemented</span> | 0.4.2 | Schema-checked IFC authoring: construct entities by attribute name with arity and type validation. |
| [`ifc-model`](./crates/ifc-model) | <span class="status-implemented">Implemented</span> | 0.4.3 | The IFC entity graph: storage and structural queries, free of domain semantics and serialization. |
| [`ifc-model`](./crates/ifc-model) | <span class="status-implemented">Implemented</span> | 0.4.4 | The IFC entity graph: storage and structural queries, free of domain semantics and serialization. |
| [`ifc-schema`](./crates/ifc-schema) | <span class="status-implemented">Implemented</span> | 0.3.5 | IFC schema as data: entity table, supertype chain, attribute names. |
| [`ifc-step`](./crates/ifc-step) | <span class="status-implemented">Implemented</span> | 0.6.2 | STEP physical file (ISO 10303-21) codec for the IFC model. |
| [`ifc-validate`](./crates/ifc-validate) | <span class="status-implemented">Implemented</span> | 0.8.2 | Schema conformance: WHERE rules, cardinality, GUID and reference integrity. |
Expand Down
Loading