Roadmap
This page names the directions the project is heading in and links the issues that track them. It deliberately carries no task lists or counts: open work lives in GitHub issues, what exists today is on the capability matrix and the coverage page, and what changed is in the changelog.
Milestones group the issues a release depends on:
Umbrella issues carry the tracking label; accepted capabilities the capability label.
Harden authoring and codecs
Authoring by attribute name, transactional edits, STEP and ifcXML are implemented. What remains is making them dependable for applications that write files others will read: schema-checked updates of existing entities, deterministic STEP output across scalar edge cases, and strict ifcXML namespace profiles with path-rich diagnostics. Tracked in #7.
Exact geometry interpretation
Every IFC4 representation item is addressed (see coverage), but several are lowered only in part and a few are refused with a typed reason. The goal is exact neutral geometry for all of them, without approximation or silent substitution. Tracked in #19.
Deriving plan drawings from solids needs a plane section, which is a kernel capability: it belongs in Axiolid, not here.
Georeferencing and alignment
ifc-georef and ifc-alignment are partial by design: their version profiles are pinned before their coverage grows. Tracked in #8.
More schema versions
IFC2X3 TC1, IFC4 ADD2 TC1, IFC4X1 FINAL, IFC4X2 FINAL and IFC4X3 ADD2 are bundled for validation; domain views state per crate which releases they read. IFC4X1 and IFC4X2 (#33) are recognised and validated against their own tables, and every domain crate refuses them until it verifies its layouts. The scope of IFC5/IFCX (#35) is an open question. Domain crates that read one release only are being bound to the model's declared release one by one.
Bindings and packaging
JavaScript, Python and C bindings ship from this repository (see install); the npm package carries tested Node, bundler and browser builds. Broader platform coverage and CMake packaging are tracked in #34.
Scale
Lazy reads keep large files cheap. A committed harness measures the STEP codec (eager, lazy and mapped reads, decode_all, write) and the entity graph (construction, lookup, iteration, by-type queries, traversal, heap retained and peak) at three synthetic scales and on redistributable fixtures; the baseline records the machine, load and method it was taken with, and benchmarks/README.md how to compare a change against it. A cross-backend geometry benchmark is tracked in #31.
Proposing work
Ideas and unresolved ownership questions start in Discussions. Concrete bugs and feature requests use the issue forms. Priority among unfinished work is demand-driven: an issue that describes a real use case moves faster. See the contributing guide.