Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
169 commits
Select commit Hold shift + click to select a range
a4af3c2
feat: OCCT V8.0.0-RC4 + Emscripten 5.0.1 migration with native WASM e…
rifont Mar 6, 2026
96a475c
wip: bindgen config & typescript bindings coverage
rifont Mar 6, 2026
5b06683
wip: type overloads
rifont Mar 6, 2026
65af5ce
wip-full-bindings
rifont Mar 8, 2026
b26b473
wip-smoke-tests
rifont Mar 8, 2026
d573c4f
wip: idiomatic js and jsdoc
rifont Mar 9, 2026
44e265d
wip: namespace experiment
rifont Mar 10, 2026
502ab3b
feat: esmodule exports
rifont Mar 12, 2026
250f5ac
wip-suffix-overload-removal
rifont Mar 19, 2026
55dcf25
wip-suffix-overload-fixes
rifont Mar 19, 2026
ffee9e7
wip-string-enums
rifont Mar 20, 2026
508e00a
feat(bindings): return pointers by value instead of by reference
rifont Mar 22, 2026
74f4b49
rbv-fixes
rifont Mar 22, 2026
5cdc132
build: add nx build system for batteries-included caching
rifont Mar 23, 2026
082e4ad
chore: format build-system md
rifont Mar 23, 2026
586ffe5
chore: format nx files
rifont Mar 23, 2026
3bed91a
fix: ensure git ignored files are included as cache key inputs
rifont Mar 23, 2026
019004b
fix: ensure provenance has correct task deps
rifont Mar 23, 2026
164f226
chore: remove stale build manifest
rifont Mar 23, 2026
05bab9e
build: add non-exceptions simd config
rifont Mar 23, 2026
3aee45d
fix: exclude Intersector method from BRepClass3d_SolidExplorer
rifont Mar 23, 2026
fdf8e10
fix: skip raw pointer parameters in bindings generation
rifont Mar 23, 2026
5422659
fix: exclude visualization classes depending on TKOpenGl
rifont Mar 23, 2026
c60e53e
chore: remove deprecated Transient collection symbols
rifont Mar 23, 2026
b8f99b1
fix: specify O3 instead of invalid O4 wasm-opt flag
rifont Mar 23, 2026
dffe7a4
build: add --traps-never-happen flag to wasm-opt optimization
rifont Mar 23, 2026
7d3634c
docs: add optimization flag analysis
rifont Mar 23, 2026
a6d205b
test: fix wasm exception decoding
rifont Mar 23, 2026
aada2af
test: fix brep tool overload to use non-indexed overloads
rifont Mar 23, 2026
ecbe987
build: add build scripts to cache inputs
rifont Mar 23, 2026
d0551b4
chore: exclude deprecated TopOpe* symbols from build
rifont Mar 23, 2026
b445923
test: add smoke tests for missing occt modules
rifont Mar 23, 2026
278954f
build: add patch scripts to cache input
rifont Mar 23, 2026
9f217d1
test: update all tests to use [Symbol.dispose] API
rifont Mar 23, 2026
b76ecae
test: smoke test all embind machinery
rifont Mar 25, 2026
2db9fdf
refactor: extract patch application into dedicated step_apply_patches…
rifont Mar 25, 2026
14a9d4f
feat: add OCJS_EXTRA_CFLAGS environment variable for custom compiler …
rifont Mar 25, 2026
66a3f34
chore: add alternative build flag configurations
rifont Mar 25, 2026
6a4649e
build: enable caching for apply-patches task with dependency tracking
rifont Mar 25, 2026
a267bd3
build: add libembind.js patching step for type-based overload dispatch
rifont Mar 25, 2026
cbb1e32
fix: replace manual FairCurve Compute wrappers with auto-generated in…
rifont Mar 26, 2026
fdd1879
build: add commit hash tracking for Doxygen binary
rifont Mar 26, 2026
7738c67
chore: remove stale d.ts file
rifont Mar 28, 2026
4c4a7ae
refactor(build): consolidate WebAssembly build configurations
rifont Mar 28, 2026
7c47e6d
build: Separate compiled-bindings output and remove deprecated headers
rifont Mar 28, 2026
234d34f
feat: Add NCollection auto-discovery pipeline with two-phase AST scan
rifont Mar 28, 2026
bd87e15
fix: Improve overload filtering, type resolution, and struct binding
rifont Mar 28, 2026
e4aa4fe
test: Add and update tests for modern NCollection bindings
rifont Mar 28, 2026
3ec6043
chore: Bump version to 3.0.0-beta
rifont Mar 28, 2026
c517943
chore: rebuild with v8 release candidate 5
rifont Apr 10, 2026
d991dfb
build: replace deprecated GCE2d aliases with GC_*2d canonicals
rifont Apr 17, 2026
b3b39a1
fix: Discover compiled-bindings under build/compiled-bindings/
rifont Apr 17, 2026
73542d3
refactor: Track all typedef aliases per underlying spelling
rifont Apr 17, 2026
aa0ee65
feat: Validate identifier resolution in resolve_type fallback
rifont Apr 17, 2026
018f893
feat: Emit fixed-size tuples for C-array parameters
rifont Apr 17, 2026
f986219
feat: Map fixed-width C primitives and char families to TS scalars
rifont Apr 17, 2026
9afe66e
feat: Resolve Handle_<T> typedefs alongside opencascade::handle<T>
rifont Apr 17, 2026
33c489e
feat: Prefer OCCT-public NCollection aliases over generic spellings
rifont Apr 17, 2026
edb6cd1
fix: Mirror base override field names and synthesize missing overloads
rifont Apr 17, 2026
9493980
feat: Sanitize identifiers in TS output
rifont Apr 17, 2026
757ab77
refactor: Replace empty interface stubs with unknown type aliases
rifont Apr 17, 2026
34f45fa
feat: Inject ambient WebAssembly.Exception decls and runtime-exports …
rifont Apr 17, 2026
94ba584
chore: Remove auto-generated namespace blocks and dedupe aggregate type
rifont Apr 17, 2026
dbe89ff
feat: Replace unbound references with unknown via post-pass
rifont Apr 17, 2026
1a2dbe6
test: Add semantic-diagnostic harness for codegen output
rifont Apr 17, 2026
5b1e284
test: Migrate smoke 2D geometry test to GC_MakeCircle2d
rifont Apr 17, 2026
b3b3330
build(package): update distribution files and entry points
rifont Apr 17, 2026
9ab3043
docs(jsdoc): emit Doxygen detailed/simplesect into JSDoc
rifont Apr 21, 2026
9e54e1b
docs(jsdoc): R2-R5 link normalization, separator, and prose splitting
rifont Apr 21, 2026
d453dbf
docs(jsdoc): rescind R4 separator (Monaco hr asymmetric margin)
rifont Apr 21, 2026
36c69b6
build(simd): gate `-mrelaxed-simd` behind new `OCJS_RELAXED_SIMD` opt-in
rifont Apr 23, 2026
37f6306
fix(bindings): invalidate stale .o files when build flags change
rifont Apr 23, 2026
05da2a0
fix(link): emit WebAssembly.Tag import via -fwasm-exceptions
rifont Apr 23, 2026
ee56b65
refactor(build): consolidate full and full-exceptions configs into un…
rifont Apr 24, 2026
3c5e4e0
docs: add comprehensive BREAKING_CHANGES.md migration guide for v3.0.0
rifont Apr 24, 2026
9d29aee
chore: upgrade OCCT from V8_0_0_rc5 to V8_0_0 final release
rifont May 13, 2026
cb07385
feat(bindings): add base method argument name mirroring for overrides
rifont May 13, 2026
90ebce6
feat(wasm): unify same-arity overload dispatch and deduplicate V8 int…
rifont May 14, 2026
ca8c9d8
fix(bindings): dedup Embind type aliases for BRepGraph ReverseIterato…
rifont May 14, 2026
5411ff8
build(docs): add typedoc dependency and configure docs generation
rifont May 14, 2026
2d2cc50
refactor: migrate monolithic Common.py into modular ocjs_bindgen pack…
rifont May 15, 2026
f32d7b9
build(full.yml): add 100+ nested symbol exports for BRepGraph module
rifont May 16, 2026
9580330
feat(discover): add template typedef substitution and canonical dedup…
rifont May 18, 2026
63f978f
build(bindgen): exclude OCCT internal structs with deleted constructors
rifont May 18, 2026
eeea535
feat(link): implement R2 NCollection link-time filter with YAML-scope…
rifont May 19, 2026
4419ba9
build: update all deps to latest
rifont May 19, 2026
378567c
build(devcontainer,launch): align dev configs with YAML-based build s…
rifont May 19, 2026
97beaf6
refactor(scripts): consolidate clone-deps.sh with flexible destinatio…
rifont May 19, 2026
20e266d
build(bindgen): exclude WASM-inapplicable OSD and Standard classes
rifont May 19, 2026
c29b6b0
build: update gitignore to target new script
rifont May 19, 2026
fa9a8d6
build: replace legacy Python source compilation with CMake
rifont May 19, 2026
709e15d
build(project): replace setup-deps.sh with clone-deps.sh script
rifont May 19, 2026
72bc897
test: add comprehensive smoke tests for all exposed OCCT apis
rifont May 19, 2026
40a2c46
build: remove redundant symbols from full.yml list
rifont May 19, 2026
ac0cb3d
docs: update build system docs
rifont May 19, 2026
442da99
ci(docker): add multi-arch Docker build + publish workflow
rifont May 20, 2026
88c252e
docs: remove obsolete research doc references from codebase
rifont May 21, 2026
bc16d66
docs(changelog): update v3.0.0 entry with libclang 18, LLVM 17, and b…
rifont May 21, 2026
921a072
refactor(yaml_build): flip strict-types gate to warn-by-default
rifont May 21, 2026
6a0ffc2
build: rename default OCJS_CONFIG from O3-wasm-exc-simd to single-thr…
rifont May 21, 2026
b98b08c
refactor(docker): split Dockerfile into three cached build stages
rifont May 21, 2026
bf003b3
chore: expose wasm as package.json subexport for improved DX
rifont May 21, 2026
a51190c
refactor(bindgen): modularize python bindgen
rifont May 21, 2026
71af57f
feat(patches): add OCCT V8 Embind compatibility patch script
rifont May 21, 2026
2074865
test(smoke): add Handle elision, overload dispatch, and package-expor…
rifont May 21, 2026
78ac565
chore(python): add pyproject.toml with pytest and linting configuration
rifont May 21, 2026
3eeaee3
test: add pytest bindgen tests
rifont May 21, 2026
cf7d0b3
chore(bindgen): remove redudnant patches
rifont May 21, 2026
fa347a9
feat(docker): add entrypoint script for Nx-cached container builds
rifont May 21, 2026
091e2a2
test(smoke): add multi-threaded WASM module initialization helpers
rifont May 22, 2026
82562ac
build: add multi-threaded wasm build configuration with pthread pool …
rifont May 22, 2026
f5036f2
docs(guides): add reproducible builds in CI and symbol trimming guides
rifont May 22, 2026
eaa264f
chore: remove redundant dead code sweep test
rifont May 22, 2026
33442c5
docs(starter-templates): add v3 canonical templates with smoke tests
rifont May 22, 2026
c6f0240
docs(changelog): add v3.0.0-beta.2 release notes with multi-threaded …
rifont May 22, 2026
0d5400f
build: add experiments evidencing empirical evaluation of wasm strate…
rifont May 22, 2026
178a3f7
style: format yaml-schema.md doc
rifont May 22, 2026
908a017
docs: add new fumadocs website following diataxis style
rifont May 22, 2026
bf1e24d
docs: update todo list
rifont May 22, 2026
0233eb9
chore: add best-practices to package.json for reelease
rifont May 22, 2026
17446ed
chore: remove old docs website
rifont May 22, 2026
451af17
chore: cleanup experiment artifacts
rifont May 22, 2026
3d5cd45
build(dockerfile): refactor stages to final-single/final-multi/bindge…
rifont May 22, 2026
c492170
docs(toolchain): remove deprecated OCJS_PATCH_DUMP config
rifont May 22, 2026
938b74c
refactor(patch): rename STEPCAF RTTI
rifont May 22, 2026
723ec6f
feat(home): redesign landing page with V3 highlights and footer
rifont May 25, 2026
f100586
build(scripts): add sentinel-aware skip logic for emsdk activate and …
rifont May 25, 2026
a1751d5
docs: replace deprecated `full` subcommand with `link` throughout
rifont May 26, 2026
b4091a9
build: increase docker build timeout
rifont May 26, 2026
9bc839f
build: drop redundant src when invoking docker link command
rifont May 26, 2026
3437871
build(config): add multi-threaded browser build configuration
rifont May 27, 2026
3bfb1a6
docs: remove allowedUndefinedSymbols from YAML schema
rifont May 27, 2026
7916ffe
fix: ensure provenance is emitted and denoise build logs
rifont May 27, 2026
08bd08f
test: add libclang pytest marker for integration tests
rifont May 27, 2026
1a16522
chore: bump uv lockfile
rifont May 27, 2026
a5e4f82
style: format generate-docs script
rifont May 27, 2026
9c56601
docs(multi-threading): add performance tuning guide for pthread + mem…
rifont May 27, 2026
b919ec9
docs(benchmarks): expand empirical evidence hub with four performance…
rifont May 27, 2026
def106c
refactor(tests): redirect imports from build-configs to dist directory
rifont May 27, 2026
2a438a6
build: remove unused IMeshData handle symbols from build configs
rifont May 27, 2026
8d20017
feat: add support for optional method overloads
rifont May 29, 2026
1576ec8
feat(api): add Streamdown markdown renderer with semantic highlighting
rifont May 30, 2026
3edca44
feat(api-docs): add deep-link anchors with smooth scroll and flash hi…
rifont May 31, 2026
c830f2f
feat(constructor): add string_view owning-cast support for embind bin…
rifont May 31, 2026
8479853
build: remove deprecated BRepApprox compute line symbols from configs
rifont May 31, 2026
e5b027f
docs: update OCCT version from V8.0.0 RC5 to V8.0.0
rifont May 31, 2026
3253988
fix(docker): disable Nx daemon to resolve plugin worker failures on D…
rifont May 31, 2026
612f374
docs(todo): add upstream OCCT Doxygen enrichment initiative to roadmap
rifont May 31, 2026
b38db0b
ci: add docs-site workflow for typecheck, lint, test, build
rifont May 31, 2026
f59d785
feat(bindings): add ambiguity detection for trailing primitive outputs
rifont May 31, 2026
4cc2e31
test(smoke): add fuzzy boolean, IGES import, multi-threaded tessellat…
rifont May 31, 2026
19e036b
feat(yaml_build): support NCollection filtering in dts-only generatio…
rifont May 31, 2026
739e0ee
chore: clean up old test suite
rifont May 31, 2026
981b4cc
revert(release): revert version bump to 3.0.0-beta.2
rifont May 31, 2026
852cf2a
build(dockerfile): add write permissions for emsdk libembind.js
rifont May 31, 2026
95412c2
chore: add missing tsdoc snippets for docs-site
rifont May 31, 2026
1447922
fix(docs-site): declare lucide-react and mermaid for Vercel builds
rifont May 31, 2026
75aabf5
fix(docs-site): paginate oversized API package pages for Vercel ISR l…
rifont Jun 1, 2026
0935399
fix(docs-site): keep sidebar layout on paginated API package pages
rifont Jun 1, 2026
48521da
fix(docs-site): show BRepGraph in sidebar for paginated API packages
rifont Jun 1, 2026
873eb88
fix(ci): branch-publish load builds + bump GitHub Actions for Node 24
rifont Jun 1, 2026
796bc47
fix(ci): write BuildKit cache only after e2e gate passes
rifont Jun 1, 2026
3bd7856
chore: ignore .vercel directory at repo root
rifont Jun 1, 2026
6a765f1
fix(ci): e2e gate uses build-configs/full.yml, not replicad
rifont Jun 2, 2026
5abd8ab
fix(ci): cap docker e2e link CPUs to host nproc
rifont Jun 2, 2026
e22bf66
fix(ci): scope NCollection ratio gate to link-filter-poc smoke
rifont Jun 2, 2026
a2a709f
fix(ci): raise warm-link budget to 20 min and harden docker e2e gates
rifont Jun 4, 2026
af37684
fix(ci): load multi-threaded e2e smoke via dynamic import
rifont Jun 4, 2026
9eea6f5
ci(docker): run branch-publish parallel to smoke
rifont Jun 4, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
68 changes: 28 additions & 40 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -1,53 +1,41 @@
{
"name": "Existing Dockerfile",

// Sets the run context to one level up instead of the .devcontainer folder.
"name": "opencascade.js (V8)",
"context": "..",

// Update the 'dockerFile' property if you aren't using the standard 'Dockerfile' filename.
"dockerFile": "../Dockerfile",

// Set *default* container specific settings.json values on container create.
"settings": {
"terminal.integrated.shell.linux": null
"customizations": {
"vscode": {
"settings": {
"python.defaultInterpreterPath": "/opencascade.js/.venv/bin/python",
"python.analysis.extraPaths": ["/opencascade.js/src"],
"terminal.integrated.defaultProfile.linux": "bash"
},
"extensions": [
"ms-vscode.cpptools",
"ms-vscode.cpptools-extension-pack",
"ms-python.python",
"ms-python.vscode-pylance",
"nrwl.angular-console",
"dtsvet.vscode-wasm",
"eamodio.gitlens"
]
}
},

// Add the IDs of extensions you want installed when the container is created.
"extensions": [
"ms-vscode.cpptools",
"ms-vscode.cpptools-extension-pack",
"mhutchie.git-graph",
"eamodio.gitlens",
"ms-python.python",
"dtsvet.vscode-wasm"
],

"mounts": [
"source=${localWorkspaceFolder}/src,target=/opencascade.js/src,type=bind,consistency=cached",
"source=${localWorkspaceFolder}/build,target=/opencascade.js/build,type=bind,consistency=cached",
"source=${localWorkspaceFolder}/builds,target=/opencascade.js/builds,type=bind,consistency=cached",
"source=${localWorkspaceFolder}/dist,target=/opencascade.js/dist,type=bind,consistency=cached",
"source=${localWorkspaceFolder}/test,target=/opencascade.js/test,type=bind,consistency=cached"
// "source=${localWorkspaceFolder}/occt-src,target=/occt/occt-0dc2c37/src,type=bind,consistency=cached",
"source=${localWorkspaceFolder}/build-configs,target=/opencascade.js/build-configs,type=bind,consistency=cached",
"source=${localWorkspaceFolder}/tests,target=/opencascade.js/tests,type=bind,consistency=cached",
"source=${localWorkspaceFolder}/scripts,target=/opencascade.js/scripts,type=bind,consistency=cached",
"source=${localWorkspaceFolder}/build-wasm.sh,target=/opencascade.js/build-wasm.sh,type=bind,consistency=cached",
"source=${localWorkspaceFolder}/bindgen-filters.yaml,target=/opencascade.js/bindgen-filters.yaml,type=bind,consistency=cached",
"source=${localWorkspaceFolder}/DEPS.json,target=/opencascade.js/DEPS.json,type=bind,consistency=cached"
],

// Use 'forwardPorts' to make a list of ports inside the container available locally.
// "forwardPorts": [],

// Uncomment the next line to run commands after the container is created - for example installing curl.
// "postCreateCommand": "apt-get update && apt-get install -y curl",
"remoteEnv": {
"OCJS_CONFIG": "single-threaded"
}

// Uncomment when using a ptrace-based debugger like C++, Go, and Rust
// Uncomment when using a ptrace-based debugger like C++, Go, or Rust.
// "runArgs": [ "--cap-add=SYS_PTRACE", "--security-opt", "seccomp=unconfined" ],

// Uncomment to use the Docker CLI from inside the container. See https://aka.ms/vscode-remote/samples/docker-from-docker.
// "mounts": [ "source=/var/run/docker.sock,target=/var/run/docker.sock,type=bind" ],

// Uncomment to connect as a non-root user if you've added one. See https://aka.ms/vscode-remote/containers/non-root.
// "remoteUser": "vscode"

"build": {
"cacheFrom": "donalffons/opencascade.js:staging-master",
"target": "custom-build-image"
}
}
47 changes: 44 additions & 3 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,46 @@
# Version control and editor metadata
.git
.github
.gitignore
.gitattributes
.vscode
.cursor
.devcontainer

# Nx / pnpm caches and workspace metadata
.nx
node_modules

# Python venv and bytecode
.venv
**/__pycache__/
*.pyc

# Build outputs and host-side dependency checkouts
deps/
build/
dist/
node_modules/
occt-src/
**/.git
docker-e2e-output/
docs-site/
website/
tarballs/
tmp/
tools/

# Prebuilt host-side artifacts left next to YAML configs
# (the docker build re-creates these inside the image; shipping them as
# build context bloats the build-configs/ COPY layer by ~63 MB).
build-configs/opencascade_full.js
build-configs/opencascade_full.d.ts
build-configs/opencascade_full.wasm
build-configs/opencascade_full.js.symbols
build-configs/opencascade_full.provenance.json
build-configs/provenance.json

# Legacy / pre-V8 directories (excluded so the build context stays minimal)
test/
occt-src/

# Packaging artifacts and logs
*.tgz
*.log
Loading