@code3d/opencascade
v0.0.1-alpha.0
Published
The OpenCascade runtime selected by `@code3d/core`. It uses the `[email protected]` binding ABI and corrects native object destruction in the binding generator. The dependency on `replicad-opencascadejs` supplies the matching declarations used
Readme
@code3d/opencascade
The OpenCascade runtime selected by @code3d/core. It uses the [email protected]
binding ABI and corrects native object destruction in the binding generator.
The dependency on replicad-opencascadejs supplies the matching declarations
used by Replicad and core. This package exports its own generated loader and WASM.
Code3dMemory.AllocatedBytes() reports the native allocator's current occupancy
by summing allocated block sizes in the pinned mimalloc's heap areas, including
geometry shared between shape handles. The build explicitly selects mimalloc.
The binding parser receives the allocator's include directory from the same
pinned toolchain; it otherwise uses host Clang's system include paths.
Core combines this with estimated JavaScript cache storage for its memory budget.
The WASM buffer capacity is a growth high-water mark and is not used to decide
whether releasing cached geometry has reduced memory usage.
The upstream generator treats any two-argument operator delete as evidence
that a class cannot be destroyed. OCCT's allocation macros provide both ordinary
and placement delete, so this incorrectly emits empty destructors for shapes,
builders, and other owned native objects. JavaScript .delete() then invalidates
the handle while retaining its native allocation and referenced geometry.
The build patch checks whether the C++ delete expression is valid. Publicly deletable objects run their actual destructor and deallocator. The existing handling of objects whose destructor or deallocator is inaccessible is retained.
Run npm run build --workspace @code3d/opencascade with Docker available to
rebuild the checked-in runtime. The build pins the Linux amd64 toolchain image
by digest and includes the original binding configuration, native extractor
sources, and the generator patch. Rebuilding uses several gigabytes of disk and
can take tens of minutes. Ordinary repository builds use the checked-in files.
Upstream sources:
- Replicad binding configuration and extractors: 0180bf7384cd9f98b1b167e5ca19d2c9f6067fe4.
- Binding generator and toolchain: ebd263f15337b440b391492af073662707e86482, built against OCCT 8.0.1.
See LICENSE.LGPL-2.1 for the runtime license.
