forgekernel 0.1.0__tar.gz → 0.8.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. forgekernel-0.8.0/PKG-INFO +79 -0
  2. forgekernel-0.8.0/README.md +44 -0
  3. {forgekernel-0.1.0 → forgekernel-0.8.0}/pyproject.toml +3 -4
  4. {forgekernel-0.1.0 → forgekernel-0.8.0}/src/forgekernel/__init__.py +1 -1
  5. forgekernel-0.8.0/src/forgekernel.egg-info/PKG-INFO +79 -0
  6. {forgekernel-0.1.0 → forgekernel-0.8.0}/src/forgekernel.egg-info/requires.txt +1 -1
  7. forgekernel-0.1.0/PKG-INFO +0 -82
  8. forgekernel-0.1.0/README.md +0 -47
  9. forgekernel-0.1.0/src/forgekernel.egg-info/PKG-INFO +0 -82
  10. {forgekernel-0.1.0 → forgekernel-0.8.0}/LICENSE +0 -0
  11. {forgekernel-0.1.0 → forgekernel-0.8.0}/setup.cfg +0 -0
  12. {forgekernel-0.1.0 → forgekernel-0.8.0}/src/forgekernel/brep.py +0 -0
  13. {forgekernel-0.1.0 → forgekernel-0.8.0}/src/forgekernel/bsolid.py +0 -0
  14. {forgekernel-0.1.0 → forgekernel-0.8.0}/src/forgekernel/csg.py +0 -0
  15. {forgekernel-0.1.0 → forgekernel-0.8.0}/src/forgekernel/curve.py +0 -0
  16. {forgekernel-0.1.0 → forgekernel-0.8.0}/src/forgekernel/exact.py +0 -0
  17. {forgekernel-0.1.0 → forgekernel-0.8.0}/src/forgekernel/interval.py +0 -0
  18. {forgekernel-0.1.0 → forgekernel-0.8.0}/src/forgekernel/io.py +0 -0
  19. {forgekernel-0.1.0 → forgekernel-0.8.0}/src/forgekernel/kernel.py +0 -0
  20. {forgekernel-0.1.0 → forgekernel-0.8.0}/src/forgekernel/loft.py +0 -0
  21. {forgekernel-0.1.0 → forgekernel-0.8.0}/src/forgekernel/nurbs.py +0 -0
  22. {forgekernel-0.1.0 → forgekernel-0.8.0}/src/forgekernel/profile2d.py +0 -0
  23. {forgekernel-0.1.0 → forgekernel-0.8.0}/src/forgekernel/quadric.py +0 -0
  24. {forgekernel-0.1.0 → forgekernel-0.8.0}/src/forgekernel/ssi.py +0 -0
  25. {forgekernel-0.1.0 → forgekernel-0.8.0}/src/forgekernel/stepio.py +0 -0
  26. {forgekernel-0.1.0 → forgekernel-0.8.0}/src/forgekernel/surd.py +0 -0
  27. {forgekernel-0.1.0 → forgekernel-0.8.0}/src/forgekernel/surfacing.py +0 -0
  28. {forgekernel-0.1.0 → forgekernel-0.8.0}/src/forgekernel/tess.py +0 -0
  29. {forgekernel-0.1.0 → forgekernel-0.8.0}/src/forgekernel/trim.py +0 -0
  30. {forgekernel-0.1.0 → forgekernel-0.8.0}/src/forgekernel.egg-info/SOURCES.txt +0 -0
  31. {forgekernel-0.1.0 → forgekernel-0.8.0}/src/forgekernel.egg-info/dependency_links.txt +0 -0
  32. {forgekernel-0.1.0 → forgekernel-0.8.0}/src/forgekernel.egg-info/top_level.txt +0 -0
  33. {forgekernel-0.1.0 → forgekernel-0.8.0}/tests/test_k1_exact.py +0 -0
  34. {forgekernel-0.1.0 → forgekernel-0.8.0}/tests/test_k37_loft.py +0 -0
  35. {forgekernel-0.1.0 → forgekernel-0.8.0}/tests/test_k38_profile.py +0 -0
  36. {forgekernel-0.1.0 → forgekernel-0.8.0}/tests/test_k3_curves.py +0 -0
  37. {forgekernel-0.1.0 → forgekernel-0.8.0}/tests/test_k3_ssi.py +0 -0
  38. {forgekernel-0.1.0 → forgekernel-0.8.0}/tests/test_k3_step.py +0 -0
  39. {forgekernel-0.1.0 → forgekernel-0.8.0}/tests/test_k6_surfacing.py +0 -0
  40. {forgekernel-0.1.0 → forgekernel-0.8.0}/tests/test_k7_bsolid.py +0 -0
  41. {forgekernel-0.1.0 → forgekernel-0.8.0}/tests/test_k7_stepexport.py +0 -0
  42. {forgekernel-0.1.0 → forgekernel-0.8.0}/tests/test_k7_trim.py +0 -0
  43. {forgekernel-0.1.0 → forgekernel-0.8.0}/tests/test_k7_trimflux.py +0 -0
  44. {forgekernel-0.1.0 → forgekernel-0.8.0}/tests/test_rust_oracle.py +0 -0
  45. {forgekernel-0.1.0 → forgekernel-0.8.0}/tests/test_scaffold.py +0 -0
@@ -0,0 +1,79 @@
1
+ Metadata-Version: 2.4
2
+ Name: forgekernel
3
+ Version: 0.8.0
4
+ Summary: Exact-arithmetic B-rep CAD kernel
5
+ Author-email: Dan Willis <danielcwillis@gmail.com>
6
+ Maintainer-email: Dan Willis <danielcwillis@gmail.com>
7
+ License: Apache-2.0
8
+ Project-URL: Homepage, https://github.com/gitcad-xyz/forge
9
+ Project-URL: Repository, https://github.com/gitcad-xyz/forge
10
+ Project-URL: Issues, https://github.com/gitcad-xyz/forge/issues
11
+ Project-URL: Design — ADR-0018, https://github.com/gitcad-xyz/gitcad/blob/main/docs/adr/0018-native-kernel.md
12
+ Project-URL: Benchmarks vs OCCT, https://github.com/gitcad-xyz/gitcad/blob/main/bench/RUST-vs-OCCT.md
13
+ Keywords: cad,b-rep,brep,geometry,kernel,nurbs,solid-modeling,computational-geometry,exact-arithmetic,rational-arithmetic,step
14
+ Classifier: Development Status :: 3 - Alpha
15
+ Classifier: Intended Audience :: Developers
16
+ Classifier: Intended Audience :: Manufacturing
17
+ Classifier: Intended Audience :: Science/Research
18
+ Classifier: License :: OSI Approved :: Apache Software License
19
+ Classifier: Operating System :: OS Independent
20
+ Classifier: Programming Language :: Python :: 3
21
+ Classifier: Programming Language :: Python :: 3.11
22
+ Classifier: Programming Language :: Python :: 3.12
23
+ Classifier: Programming Language :: Python :: 3.13
24
+ Classifier: Topic :: Scientific/Engineering
25
+ Classifier: Topic :: Scientific/Engineering :: Mathematics
26
+ Classifier: Topic :: Multimedia :: Graphics :: 3D Modeling
27
+ Requires-Python: >=3.11
28
+ Description-Content-Type: text/markdown
29
+ License-File: LICENSE
30
+ Provides-Extra: rust
31
+ Requires-Dist: forgekernel_rs>=0.8.0; extra == "rust"
32
+ Provides-Extra: test
33
+ Requires-Dist: pytest>=7; extra == "test"
34
+ Dynamic: license-file
35
+
36
+ # forge
37
+
38
+ An exact-arithmetic boundary-representation (B-rep) CAD kernel. Geometric and
39
+ topological decisions use exact rational arithmetic (ℚ, ℚ[π], ℚ[√d]) or
40
+ certified intervals; no result depends on a floating-point tolerance.
41
+
42
+ It ships as two PyPI packages:
43
+
44
+ - `forgekernel` — the kernel, pure Python.
45
+ - `forgekernel_rs` — a native (Rust) build of the performance-critical routines,
46
+ installed automatically when a wheel is available and returning the same
47
+ results.
48
+
49
+ ## Capabilities
50
+
51
+ - Planar solids: rational linear algebra, plane-based B-rep, booleans,
52
+ divergence-theorem mass properties.
53
+ - Quadrics (cylinder, cone, sphere, torus) with closed-form intersections.
54
+ - NURBS curves and surfaces; surface–surface intersection with complete branch
55
+ detection and certified points.
56
+ - Procedural offsets and shells; edge blends (fillets); lofts.
57
+ - Exact volume, centroid, and inertia via the divergence theorem.
58
+ - STEP (AP203/AP214) import and export.
59
+
60
+ ## Design
61
+
62
+ A Python reference implementation defines the exact semantics. A Rust build
63
+ provides the same operations for production use; each ported routine is
64
+ cross-checked against the reference. Design notes and decisions are recorded in
65
+ the gitcad repository (ADR-0018).
66
+
67
+ ## Layout
68
+
69
+ - `src/forgekernel/` — the Python kernel.
70
+ - `rust/forge-core/` — the native build (`forgekernel_rs`).
71
+
72
+ ## Install
73
+
74
+ ```
75
+ pip install forgekernel # pure Python
76
+ pip install forgekernel[rust] # add the native build
77
+ ```
78
+
79
+ License: Apache-2.0. Source: https://github.com/gitcad-xyz/forge
@@ -0,0 +1,44 @@
1
+ # forge
2
+
3
+ An exact-arithmetic boundary-representation (B-rep) CAD kernel. Geometric and
4
+ topological decisions use exact rational arithmetic (ℚ, ℚ[π], ℚ[√d]) or
5
+ certified intervals; no result depends on a floating-point tolerance.
6
+
7
+ It ships as two PyPI packages:
8
+
9
+ - `forgekernel` — the kernel, pure Python.
10
+ - `forgekernel_rs` — a native (Rust) build of the performance-critical routines,
11
+ installed automatically when a wheel is available and returning the same
12
+ results.
13
+
14
+ ## Capabilities
15
+
16
+ - Planar solids: rational linear algebra, plane-based B-rep, booleans,
17
+ divergence-theorem mass properties.
18
+ - Quadrics (cylinder, cone, sphere, torus) with closed-form intersections.
19
+ - NURBS curves and surfaces; surface–surface intersection with complete branch
20
+ detection and certified points.
21
+ - Procedural offsets and shells; edge blends (fillets); lofts.
22
+ - Exact volume, centroid, and inertia via the divergence theorem.
23
+ - STEP (AP203/AP214) import and export.
24
+
25
+ ## Design
26
+
27
+ A Python reference implementation defines the exact semantics. A Rust build
28
+ provides the same operations for production use; each ported routine is
29
+ cross-checked against the reference. Design notes and decisions are recorded in
30
+ the gitcad repository (ADR-0018).
31
+
32
+ ## Layout
33
+
34
+ - `src/forgekernel/` — the Python kernel.
35
+ - `rust/forge-core/` — the native build (`forgekernel_rs`).
36
+
37
+ ## Install
38
+
39
+ ```
40
+ pip install forgekernel # pure Python
41
+ pip install forgekernel[rust] # add the native build
42
+ ```
43
+
44
+ License: Apache-2.0. Source: https://github.com/gitcad-xyz/forge
@@ -5,7 +5,7 @@ build-backend = "setuptools.build_meta"
5
5
  [project]
6
6
  name = "forgekernel"
7
7
  dynamic = ["version"]
8
- description = "Exact-arithmetic B-rep CAD kernel: topology decided in ℚ, never by floating-point epsilon"
8
+ description = "Exact-arithmetic B-rep CAD kernel"
9
9
  readme = "README.md"
10
10
  license = {text = "Apache-2.0"}
11
11
  requires-python = ">=3.11"
@@ -13,8 +13,7 @@ authors = [{name = "Dan Willis", email = "danielcwillis@gmail.com"}]
13
13
  maintainers = [{name = "Dan Willis", email = "danielcwillis@gmail.com"}]
14
14
  keywords = [
15
15
  "cad", "b-rep", "brep", "geometry", "kernel", "nurbs", "solid-modeling",
16
- "computational-geometry", "exact-arithmetic", "rational-arithmetic",
17
- "step", "occt", "opencascade",
16
+ "computational-geometry", "exact-arithmetic", "rational-arithmetic", "step",
18
17
  ]
19
18
  classifiers = [
20
19
  "Development Status :: 3 - Alpha",
@@ -44,7 +43,7 @@ Issues = "https://github.com/gitcad-xyz/forge/issues"
44
43
  [project.optional-dependencies]
45
44
  # Optional native accelerator (separate compiled wheels). forgekernel runs
46
45
  # pure-Python and exact WITHOUT it; forgekernel_rs only speeds the hot paths.
47
- rust = ["forgekernel_rs>=0.1.0"]
46
+ rust = ["forgekernel_rs>=0.8.0"]
48
47
  test = ["pytest>=7"]
49
48
 
50
49
  [tool.setuptools.dynamic]
@@ -4,4 +4,4 @@ Exact rational arithmetic for every topological decision; approximation
4
4
  only with tracked error bounds. See README for the three-oracle chain.
5
5
  """
6
6
 
7
- __version__ = "0.1.0"
7
+ __version__ = "0.8.0"
@@ -0,0 +1,79 @@
1
+ Metadata-Version: 2.4
2
+ Name: forgekernel
3
+ Version: 0.8.0
4
+ Summary: Exact-arithmetic B-rep CAD kernel
5
+ Author-email: Dan Willis <danielcwillis@gmail.com>
6
+ Maintainer-email: Dan Willis <danielcwillis@gmail.com>
7
+ License: Apache-2.0
8
+ Project-URL: Homepage, https://github.com/gitcad-xyz/forge
9
+ Project-URL: Repository, https://github.com/gitcad-xyz/forge
10
+ Project-URL: Issues, https://github.com/gitcad-xyz/forge/issues
11
+ Project-URL: Design — ADR-0018, https://github.com/gitcad-xyz/gitcad/blob/main/docs/adr/0018-native-kernel.md
12
+ Project-URL: Benchmarks vs OCCT, https://github.com/gitcad-xyz/gitcad/blob/main/bench/RUST-vs-OCCT.md
13
+ Keywords: cad,b-rep,brep,geometry,kernel,nurbs,solid-modeling,computational-geometry,exact-arithmetic,rational-arithmetic,step
14
+ Classifier: Development Status :: 3 - Alpha
15
+ Classifier: Intended Audience :: Developers
16
+ Classifier: Intended Audience :: Manufacturing
17
+ Classifier: Intended Audience :: Science/Research
18
+ Classifier: License :: OSI Approved :: Apache Software License
19
+ Classifier: Operating System :: OS Independent
20
+ Classifier: Programming Language :: Python :: 3
21
+ Classifier: Programming Language :: Python :: 3.11
22
+ Classifier: Programming Language :: Python :: 3.12
23
+ Classifier: Programming Language :: Python :: 3.13
24
+ Classifier: Topic :: Scientific/Engineering
25
+ Classifier: Topic :: Scientific/Engineering :: Mathematics
26
+ Classifier: Topic :: Multimedia :: Graphics :: 3D Modeling
27
+ Requires-Python: >=3.11
28
+ Description-Content-Type: text/markdown
29
+ License-File: LICENSE
30
+ Provides-Extra: rust
31
+ Requires-Dist: forgekernel_rs>=0.8.0; extra == "rust"
32
+ Provides-Extra: test
33
+ Requires-Dist: pytest>=7; extra == "test"
34
+ Dynamic: license-file
35
+
36
+ # forge
37
+
38
+ An exact-arithmetic boundary-representation (B-rep) CAD kernel. Geometric and
39
+ topological decisions use exact rational arithmetic (ℚ, ℚ[π], ℚ[√d]) or
40
+ certified intervals; no result depends on a floating-point tolerance.
41
+
42
+ It ships as two PyPI packages:
43
+
44
+ - `forgekernel` — the kernel, pure Python.
45
+ - `forgekernel_rs` — a native (Rust) build of the performance-critical routines,
46
+ installed automatically when a wheel is available and returning the same
47
+ results.
48
+
49
+ ## Capabilities
50
+
51
+ - Planar solids: rational linear algebra, plane-based B-rep, booleans,
52
+ divergence-theorem mass properties.
53
+ - Quadrics (cylinder, cone, sphere, torus) with closed-form intersections.
54
+ - NURBS curves and surfaces; surface–surface intersection with complete branch
55
+ detection and certified points.
56
+ - Procedural offsets and shells; edge blends (fillets); lofts.
57
+ - Exact volume, centroid, and inertia via the divergence theorem.
58
+ - STEP (AP203/AP214) import and export.
59
+
60
+ ## Design
61
+
62
+ A Python reference implementation defines the exact semantics. A Rust build
63
+ provides the same operations for production use; each ported routine is
64
+ cross-checked against the reference. Design notes and decisions are recorded in
65
+ the gitcad repository (ADR-0018).
66
+
67
+ ## Layout
68
+
69
+ - `src/forgekernel/` — the Python kernel.
70
+ - `rust/forge-core/` — the native build (`forgekernel_rs`).
71
+
72
+ ## Install
73
+
74
+ ```
75
+ pip install forgekernel # pure Python
76
+ pip install forgekernel[rust] # add the native build
77
+ ```
78
+
79
+ License: Apache-2.0. Source: https://github.com/gitcad-xyz/forge
@@ -1,6 +1,6 @@
1
1
 
2
2
  [rust]
3
- forgekernel_rs>=0.1.0
3
+ forgekernel_rs>=0.8.0
4
4
 
5
5
  [test]
6
6
  pytest>=7
@@ -1,82 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: forgekernel
3
- Version: 0.1.0
4
- Summary: Exact-arithmetic B-rep CAD kernel: topology decided in ℚ, never by floating-point epsilon
5
- Author-email: Dan Willis <danielcwillis@gmail.com>
6
- Maintainer-email: Dan Willis <danielcwillis@gmail.com>
7
- License: Apache-2.0
8
- Project-URL: Homepage, https://github.com/gitcad-xyz/forge
9
- Project-URL: Repository, https://github.com/gitcad-xyz/forge
10
- Project-URL: Issues, https://github.com/gitcad-xyz/forge/issues
11
- Project-URL: Design — ADR-0018, https://github.com/gitcad-xyz/gitcad/blob/main/docs/adr/0018-native-kernel.md
12
- Project-URL: Benchmarks vs OCCT, https://github.com/gitcad-xyz/gitcad/blob/main/bench/RUST-vs-OCCT.md
13
- Keywords: cad,b-rep,brep,geometry,kernel,nurbs,solid-modeling,computational-geometry,exact-arithmetic,rational-arithmetic,step,occt,opencascade
14
- Classifier: Development Status :: 3 - Alpha
15
- Classifier: Intended Audience :: Developers
16
- Classifier: Intended Audience :: Manufacturing
17
- Classifier: Intended Audience :: Science/Research
18
- Classifier: License :: OSI Approved :: Apache Software License
19
- Classifier: Operating System :: OS Independent
20
- Classifier: Programming Language :: Python :: 3
21
- Classifier: Programming Language :: Python :: 3.11
22
- Classifier: Programming Language :: Python :: 3.12
23
- Classifier: Programming Language :: Python :: 3.13
24
- Classifier: Topic :: Scientific/Engineering
25
- Classifier: Topic :: Scientific/Engineering :: Mathematics
26
- Classifier: Topic :: Multimedia :: Graphics :: 3D Modeling
27
- Requires-Python: >=3.11
28
- Description-Content-Type: text/markdown
29
- License-File: LICENSE
30
- Provides-Extra: rust
31
- Requires-Dist: forgekernel_rs>=0.1.0; extra == "rust"
32
- Provides-Extra: test
33
- Requires-Dist: pytest>=7; extra == "test"
34
- Dynamic: license-file
35
-
36
- # forge — the gitcad-native B-rep kernel
37
-
38
- From-scratch, unencumbered (Apache-2.0), built to pass the bar OCCT
39
- sets and then raise it — the plan and the decision record live in
40
- gitcad ([ADR-0018](https://github.com/gitcad-xyz/gitcad/blob/main/docs/adr/0018-native-kernel.md),
41
- [coverage plan](https://github.com/gitcad-xyz/gitcad/blob/main/docs/research/kernel-coverage-plan.md)).
42
-
43
- ## The three-oracle chain
44
-
45
- ```
46
- forgekernel.ref Python + exact rational arithmetic — the executable
47
- specification; topological decisions are EXACT, never
48
- epsilon-guarded
49
- ⇅ differential
50
- OCCT the 30-year-hardened independent oracle, driven from
51
- the gitcad benchmark corpus through the Kernel seam
52
- ⇅ oracle
53
- forge (Rust) the production port, added operator class by operator
54
- class once ref has proven the semantics
55
- ```
56
-
57
- ## How progress is measured
58
-
59
- Not vibes: the [benchmark trend](https://github.com/gitcad-xyz/gitcad/blob/main/bench/TREND.md)
60
- in the gitcad repo scores every backend on the shared corpus —
61
- capability %, torture-case pass rate, correctness deltas, wall time.
62
- Day-one baseline: OCCT scores 93.8%, failing `swept_channel`
63
- (sharp-cornered sweep → invalid geometry). Beating that number with
64
- exact arithmetic is the first milestone.
65
-
66
- ## Roadmap (gates, not dates)
67
-
68
- - **K1** exact planar core: rational linear algebra, plane-based
69
- polyhedral B-rep, epsilon-free booleans, divergence-theorem mass
70
- properties, native lineage. Gate: planar corpus green vs OCCT.
71
- - **K2** quadrics + torus with closed-form intersectors — most of
72
- real mech. Gate: ≥80% corpus green.
73
- - **K3** NURBS + branch-complete surface–surface intersection (the
74
- crown jewel). **K4** procedural offsets/shell. **K5** G2 blends.
75
- **K6** the surfacing suite — the SolidWorks-class end goal.
76
-
77
- ## Layout
78
-
79
- - `src/forgekernel/` — the Python reference kernel (`ref`)
80
- - `rust/` — the forge port (arrives with K1 stability)
81
- - gitcad consumes both through its `Kernel` seam; nothing here depends
82
- on gitcad
@@ -1,47 +0,0 @@
1
- # forge — the gitcad-native B-rep kernel
2
-
3
- From-scratch, unencumbered (Apache-2.0), built to pass the bar OCCT
4
- sets and then raise it — the plan and the decision record live in
5
- gitcad ([ADR-0018](https://github.com/gitcad-xyz/gitcad/blob/main/docs/adr/0018-native-kernel.md),
6
- [coverage plan](https://github.com/gitcad-xyz/gitcad/blob/main/docs/research/kernel-coverage-plan.md)).
7
-
8
- ## The three-oracle chain
9
-
10
- ```
11
- forgekernel.ref Python + exact rational arithmetic — the executable
12
- specification; topological decisions are EXACT, never
13
- epsilon-guarded
14
- ⇅ differential
15
- OCCT the 30-year-hardened independent oracle, driven from
16
- the gitcad benchmark corpus through the Kernel seam
17
- ⇅ oracle
18
- forge (Rust) the production port, added operator class by operator
19
- class once ref has proven the semantics
20
- ```
21
-
22
- ## How progress is measured
23
-
24
- Not vibes: the [benchmark trend](https://github.com/gitcad-xyz/gitcad/blob/main/bench/TREND.md)
25
- in the gitcad repo scores every backend on the shared corpus —
26
- capability %, torture-case pass rate, correctness deltas, wall time.
27
- Day-one baseline: OCCT scores 93.8%, failing `swept_channel`
28
- (sharp-cornered sweep → invalid geometry). Beating that number with
29
- exact arithmetic is the first milestone.
30
-
31
- ## Roadmap (gates, not dates)
32
-
33
- - **K1** exact planar core: rational linear algebra, plane-based
34
- polyhedral B-rep, epsilon-free booleans, divergence-theorem mass
35
- properties, native lineage. Gate: planar corpus green vs OCCT.
36
- - **K2** quadrics + torus with closed-form intersectors — most of
37
- real mech. Gate: ≥80% corpus green.
38
- - **K3** NURBS + branch-complete surface–surface intersection (the
39
- crown jewel). **K4** procedural offsets/shell. **K5** G2 blends.
40
- **K6** the surfacing suite — the SolidWorks-class end goal.
41
-
42
- ## Layout
43
-
44
- - `src/forgekernel/` — the Python reference kernel (`ref`)
45
- - `rust/` — the forge port (arrives with K1 stability)
46
- - gitcad consumes both through its `Kernel` seam; nothing here depends
47
- on gitcad
@@ -1,82 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: forgekernel
3
- Version: 0.1.0
4
- Summary: Exact-arithmetic B-rep CAD kernel: topology decided in ℚ, never by floating-point epsilon
5
- Author-email: Dan Willis <danielcwillis@gmail.com>
6
- Maintainer-email: Dan Willis <danielcwillis@gmail.com>
7
- License: Apache-2.0
8
- Project-URL: Homepage, https://github.com/gitcad-xyz/forge
9
- Project-URL: Repository, https://github.com/gitcad-xyz/forge
10
- Project-URL: Issues, https://github.com/gitcad-xyz/forge/issues
11
- Project-URL: Design — ADR-0018, https://github.com/gitcad-xyz/gitcad/blob/main/docs/adr/0018-native-kernel.md
12
- Project-URL: Benchmarks vs OCCT, https://github.com/gitcad-xyz/gitcad/blob/main/bench/RUST-vs-OCCT.md
13
- Keywords: cad,b-rep,brep,geometry,kernel,nurbs,solid-modeling,computational-geometry,exact-arithmetic,rational-arithmetic,step,occt,opencascade
14
- Classifier: Development Status :: 3 - Alpha
15
- Classifier: Intended Audience :: Developers
16
- Classifier: Intended Audience :: Manufacturing
17
- Classifier: Intended Audience :: Science/Research
18
- Classifier: License :: OSI Approved :: Apache Software License
19
- Classifier: Operating System :: OS Independent
20
- Classifier: Programming Language :: Python :: 3
21
- Classifier: Programming Language :: Python :: 3.11
22
- Classifier: Programming Language :: Python :: 3.12
23
- Classifier: Programming Language :: Python :: 3.13
24
- Classifier: Topic :: Scientific/Engineering
25
- Classifier: Topic :: Scientific/Engineering :: Mathematics
26
- Classifier: Topic :: Multimedia :: Graphics :: 3D Modeling
27
- Requires-Python: >=3.11
28
- Description-Content-Type: text/markdown
29
- License-File: LICENSE
30
- Provides-Extra: rust
31
- Requires-Dist: forgekernel_rs>=0.1.0; extra == "rust"
32
- Provides-Extra: test
33
- Requires-Dist: pytest>=7; extra == "test"
34
- Dynamic: license-file
35
-
36
- # forge — the gitcad-native B-rep kernel
37
-
38
- From-scratch, unencumbered (Apache-2.0), built to pass the bar OCCT
39
- sets and then raise it — the plan and the decision record live in
40
- gitcad ([ADR-0018](https://github.com/gitcad-xyz/gitcad/blob/main/docs/adr/0018-native-kernel.md),
41
- [coverage plan](https://github.com/gitcad-xyz/gitcad/blob/main/docs/research/kernel-coverage-plan.md)).
42
-
43
- ## The three-oracle chain
44
-
45
- ```
46
- forgekernel.ref Python + exact rational arithmetic — the executable
47
- specification; topological decisions are EXACT, never
48
- epsilon-guarded
49
- ⇅ differential
50
- OCCT the 30-year-hardened independent oracle, driven from
51
- the gitcad benchmark corpus through the Kernel seam
52
- ⇅ oracle
53
- forge (Rust) the production port, added operator class by operator
54
- class once ref has proven the semantics
55
- ```
56
-
57
- ## How progress is measured
58
-
59
- Not vibes: the [benchmark trend](https://github.com/gitcad-xyz/gitcad/blob/main/bench/TREND.md)
60
- in the gitcad repo scores every backend on the shared corpus —
61
- capability %, torture-case pass rate, correctness deltas, wall time.
62
- Day-one baseline: OCCT scores 93.8%, failing `swept_channel`
63
- (sharp-cornered sweep → invalid geometry). Beating that number with
64
- exact arithmetic is the first milestone.
65
-
66
- ## Roadmap (gates, not dates)
67
-
68
- - **K1** exact planar core: rational linear algebra, plane-based
69
- polyhedral B-rep, epsilon-free booleans, divergence-theorem mass
70
- properties, native lineage. Gate: planar corpus green vs OCCT.
71
- - **K2** quadrics + torus with closed-form intersectors — most of
72
- real mech. Gate: ≥80% corpus green.
73
- - **K3** NURBS + branch-complete surface–surface intersection (the
74
- crown jewel). **K4** procedural offsets/shell. **K5** G2 blends.
75
- **K6** the surfacing suite — the SolidWorks-class end goal.
76
-
77
- ## Layout
78
-
79
- - `src/forgekernel/` — the Python reference kernel (`ref`)
80
- - `rust/` — the forge port (arrives with K1 stability)
81
- - gitcad consumes both through its `Kernel` seam; nothing here depends
82
- on gitcad
File without changes
File without changes