openbim-ifc-wasm
WebAssembly bindings for openbim-ifc: read, edit and write IFC STEP files from JavaScript.
| Status | Partial |
| Latest release | 0.2.0 (2026-09-29) |
| Registries | npm @openbim/ifc |
| API documentation | rustdoc |
| Source | crates/openbim-ifc-wasm/ |
Overview
WebAssembly bindings for the IFC facade (ADR 0013, #34).
Reads, edits and writes IFC STEP files from JavaScript. The surface is the record model: an IfcModel holds entities, each a type name plus positional attributes. Attribute values cross the boundary in the lossless tagged encoding of openbim_ifc_binding_core::value, so a file read and written back through JavaScript is unchanged.
Every operation lives in openbim-ifc-binding-core, shared with the C and Python bindings. This crate converts JS arguments and results only, and is empty outside wasm32.
A test of anything that does not need a JS host belongs in openbim-ifc-binding-core, where cargo test runs it natively; the Node suites here cover only the JS conversion itself.
Features
| Feature | Default | Enables |
|---|---|---|
ifc2x3 | yes | openbim-ifc-binding-core/ifc2x3 |
ifc4 | yes | openbim-ifc-binding-core/ifc4 |
ifc4x1 | yes | openbim-ifc-binding-core/ifc4x1 |
ifc4x2 | yes | openbim-ifc-binding-core/ifc4x2 |
ifc4x3 | yes | openbim-ifc-binding-core/ifc4x3 |
Depends on
Changes
Latest release, 0.2.0 (2026-09-29):
Added
- Release features
ifc2x3,ifc4,ifc4x1,ifc4x2,ifc4x3(all default, so the npm package is unchanged). A browser build with one release,--no-default-features --features ifc4, is 699,687 bytes afterwasm-bindgeninstead of 1,236,036 (#112).
Full history: crates/openbim-ifc-wasm/CHANGELOG.md