forgekernel-rs 0.1.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.
- forgekernel_rs-0.1.0/Cargo.lock +224 -0
- forgekernel_rs-0.1.0/Cargo.toml +20 -0
- forgekernel_rs-0.1.0/PKG-INFO +45 -0
- forgekernel_rs-0.1.0/README.md +21 -0
- forgekernel_rs-0.1.0/pyproject.toml +35 -0
- forgekernel_rs-0.1.0/src/lib.rs +1497 -0
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
# This file is automatically @generated by Cargo.
|
|
2
|
+
# It is not intended for manual editing.
|
|
3
|
+
version = 4
|
|
4
|
+
|
|
5
|
+
[[package]]
|
|
6
|
+
name = "autocfg"
|
|
7
|
+
version = "1.5.1"
|
|
8
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
9
|
+
checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53"
|
|
10
|
+
|
|
11
|
+
[[package]]
|
|
12
|
+
name = "cfg-if"
|
|
13
|
+
version = "1.0.4"
|
|
14
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
15
|
+
checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
|
|
16
|
+
|
|
17
|
+
[[package]]
|
|
18
|
+
name = "forge-core"
|
|
19
|
+
version = "0.1.0"
|
|
20
|
+
dependencies = [
|
|
21
|
+
"num-bigint",
|
|
22
|
+
"num-integer",
|
|
23
|
+
"num-rational",
|
|
24
|
+
"num-traits",
|
|
25
|
+
"pyo3",
|
|
26
|
+
]
|
|
27
|
+
|
|
28
|
+
[[package]]
|
|
29
|
+
name = "heck"
|
|
30
|
+
version = "0.5.0"
|
|
31
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
32
|
+
checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
|
|
33
|
+
|
|
34
|
+
[[package]]
|
|
35
|
+
name = "indoc"
|
|
36
|
+
version = "2.0.7"
|
|
37
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
38
|
+
checksum = "79cf5c93f93228cf8efb3ba362535fb11199ac548a09ce117c9b1adc3030d706"
|
|
39
|
+
dependencies = [
|
|
40
|
+
"rustversion",
|
|
41
|
+
]
|
|
42
|
+
|
|
43
|
+
[[package]]
|
|
44
|
+
name = "libc"
|
|
45
|
+
version = "0.2.189"
|
|
46
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
47
|
+
checksum = "3eaf3ede3fee6db1a4c2ee091bf8a8b4dccdc6d17f656fb07896ee72867612f2"
|
|
48
|
+
|
|
49
|
+
[[package]]
|
|
50
|
+
name = "memoffset"
|
|
51
|
+
version = "0.9.1"
|
|
52
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
53
|
+
checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a"
|
|
54
|
+
dependencies = [
|
|
55
|
+
"autocfg",
|
|
56
|
+
]
|
|
57
|
+
|
|
58
|
+
[[package]]
|
|
59
|
+
name = "num-bigint"
|
|
60
|
+
version = "0.4.8"
|
|
61
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
62
|
+
checksum = "c89e69e7e0f03bea5ef08013795c25018e101932225a656383bd384495ecc367"
|
|
63
|
+
dependencies = [
|
|
64
|
+
"num-integer",
|
|
65
|
+
"num-traits",
|
|
66
|
+
]
|
|
67
|
+
|
|
68
|
+
[[package]]
|
|
69
|
+
name = "num-integer"
|
|
70
|
+
version = "0.1.46"
|
|
71
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
72
|
+
checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f"
|
|
73
|
+
dependencies = [
|
|
74
|
+
"num-traits",
|
|
75
|
+
]
|
|
76
|
+
|
|
77
|
+
[[package]]
|
|
78
|
+
name = "num-rational"
|
|
79
|
+
version = "0.4.2"
|
|
80
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
81
|
+
checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824"
|
|
82
|
+
dependencies = [
|
|
83
|
+
"num-bigint",
|
|
84
|
+
"num-integer",
|
|
85
|
+
"num-traits",
|
|
86
|
+
]
|
|
87
|
+
|
|
88
|
+
[[package]]
|
|
89
|
+
name = "num-traits"
|
|
90
|
+
version = "0.2.19"
|
|
91
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
92
|
+
checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
|
|
93
|
+
dependencies = [
|
|
94
|
+
"autocfg",
|
|
95
|
+
]
|
|
96
|
+
|
|
97
|
+
[[package]]
|
|
98
|
+
name = "once_cell"
|
|
99
|
+
version = "1.21.4"
|
|
100
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
101
|
+
checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50"
|
|
102
|
+
|
|
103
|
+
[[package]]
|
|
104
|
+
name = "portable-atomic"
|
|
105
|
+
version = "1.14.0"
|
|
106
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
107
|
+
checksum = "3d20d5497ef88037a52ff98267d066e7f11fcc5e99bbfbd58a42336193aacec3"
|
|
108
|
+
|
|
109
|
+
[[package]]
|
|
110
|
+
name = "proc-macro2"
|
|
111
|
+
version = "1.0.107"
|
|
112
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
113
|
+
checksum = "985e7ec9bb745e6ce6535b544d84d6cd6f7ad8bd711c398938ae983b91a766d9"
|
|
114
|
+
dependencies = [
|
|
115
|
+
"unicode-ident",
|
|
116
|
+
]
|
|
117
|
+
|
|
118
|
+
[[package]]
|
|
119
|
+
name = "pyo3"
|
|
120
|
+
version = "0.22.6"
|
|
121
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
122
|
+
checksum = "f402062616ab18202ae8319da13fa4279883a2b8a9d9f83f20dbade813ce1884"
|
|
123
|
+
dependencies = [
|
|
124
|
+
"cfg-if",
|
|
125
|
+
"indoc",
|
|
126
|
+
"libc",
|
|
127
|
+
"memoffset",
|
|
128
|
+
"num-bigint",
|
|
129
|
+
"once_cell",
|
|
130
|
+
"portable-atomic",
|
|
131
|
+
"pyo3-build-config",
|
|
132
|
+
"pyo3-ffi",
|
|
133
|
+
"pyo3-macros",
|
|
134
|
+
"unindent",
|
|
135
|
+
]
|
|
136
|
+
|
|
137
|
+
[[package]]
|
|
138
|
+
name = "pyo3-build-config"
|
|
139
|
+
version = "0.22.6"
|
|
140
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
141
|
+
checksum = "b14b5775b5ff446dd1056212d778012cbe8a0fbffd368029fd9e25b514479c38"
|
|
142
|
+
dependencies = [
|
|
143
|
+
"once_cell",
|
|
144
|
+
"target-lexicon",
|
|
145
|
+
]
|
|
146
|
+
|
|
147
|
+
[[package]]
|
|
148
|
+
name = "pyo3-ffi"
|
|
149
|
+
version = "0.22.6"
|
|
150
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
151
|
+
checksum = "9ab5bcf04a2cdcbb50c7d6105de943f543f9ed92af55818fd17b660390fc8636"
|
|
152
|
+
dependencies = [
|
|
153
|
+
"libc",
|
|
154
|
+
"pyo3-build-config",
|
|
155
|
+
]
|
|
156
|
+
|
|
157
|
+
[[package]]
|
|
158
|
+
name = "pyo3-macros"
|
|
159
|
+
version = "0.22.6"
|
|
160
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
161
|
+
checksum = "0fd24d897903a9e6d80b968368a34e1525aeb719d568dba8b3d4bfa5dc67d453"
|
|
162
|
+
dependencies = [
|
|
163
|
+
"proc-macro2",
|
|
164
|
+
"pyo3-macros-backend",
|
|
165
|
+
"quote",
|
|
166
|
+
"syn",
|
|
167
|
+
]
|
|
168
|
+
|
|
169
|
+
[[package]]
|
|
170
|
+
name = "pyo3-macros-backend"
|
|
171
|
+
version = "0.22.6"
|
|
172
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
173
|
+
checksum = "36c011a03ba1e50152b4b394b479826cad97e7a21eb52df179cd91ac411cbfbe"
|
|
174
|
+
dependencies = [
|
|
175
|
+
"heck",
|
|
176
|
+
"proc-macro2",
|
|
177
|
+
"pyo3-build-config",
|
|
178
|
+
"quote",
|
|
179
|
+
"syn",
|
|
180
|
+
]
|
|
181
|
+
|
|
182
|
+
[[package]]
|
|
183
|
+
name = "quote"
|
|
184
|
+
version = "1.0.47"
|
|
185
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
186
|
+
checksum = "1fbf4db142a473a8d80c26bbf18454ed458bf8d26c8219c331daecfdbd079001"
|
|
187
|
+
dependencies = [
|
|
188
|
+
"proc-macro2",
|
|
189
|
+
]
|
|
190
|
+
|
|
191
|
+
[[package]]
|
|
192
|
+
name = "rustversion"
|
|
193
|
+
version = "1.0.23"
|
|
194
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
195
|
+
checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f"
|
|
196
|
+
|
|
197
|
+
[[package]]
|
|
198
|
+
name = "syn"
|
|
199
|
+
version = "2.0.119"
|
|
200
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
201
|
+
checksum = "872831b642d1a07999a962a351ed35b955ea2cfc8f3862091e2a240a84f17297"
|
|
202
|
+
dependencies = [
|
|
203
|
+
"proc-macro2",
|
|
204
|
+
"quote",
|
|
205
|
+
"unicode-ident",
|
|
206
|
+
]
|
|
207
|
+
|
|
208
|
+
[[package]]
|
|
209
|
+
name = "target-lexicon"
|
|
210
|
+
version = "0.12.16"
|
|
211
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
212
|
+
checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1"
|
|
213
|
+
|
|
214
|
+
[[package]]
|
|
215
|
+
name = "unicode-ident"
|
|
216
|
+
version = "1.0.24"
|
|
217
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
218
|
+
checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75"
|
|
219
|
+
|
|
220
|
+
[[package]]
|
|
221
|
+
name = "unindent"
|
|
222
|
+
version = "0.2.4"
|
|
223
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
224
|
+
checksum = "7264e107f553ccae879d21fbea1d6724ac785e8c3bfc762137959b5802826ef3"
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
[package]
|
|
2
|
+
name = "forge-core"
|
|
3
|
+
version = "0.1.0"
|
|
4
|
+
edition = "2021"
|
|
5
|
+
license = "Apache-2.0"
|
|
6
|
+
description = "Native (Rust) accelerator for the forgekernel exact-arithmetic B-rep CAD kernel"
|
|
7
|
+
repository = "https://github.com/gitcad-xyz/forge"
|
|
8
|
+
readme = "README.md"
|
|
9
|
+
|
|
10
|
+
[lib]
|
|
11
|
+
name = "forgekernel_rs"
|
|
12
|
+
crate-type = ["cdylib"]
|
|
13
|
+
|
|
14
|
+
[dependencies]
|
|
15
|
+
num-rational = { version = "0.4", features = ["num-bigint"] }
|
|
16
|
+
num-bigint = "0.4"
|
|
17
|
+
num-integer = "0.1"
|
|
18
|
+
num-traits = "0.2"
|
|
19
|
+
# abi3-py311: one wheel per platform covers every CPython >= 3.11.
|
|
20
|
+
pyo3 = { version = "0.22", features = ["extension-module", "num-bigint", "abi3-py311"] }
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: forgekernel_rs
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Classifier: Development Status :: 3 - Alpha
|
|
5
|
+
Classifier: Intended Audience :: Developers
|
|
6
|
+
Classifier: License :: OSI Approved :: Apache Software License
|
|
7
|
+
Classifier: Operating System :: POSIX :: Linux
|
|
8
|
+
Classifier: Operating System :: MacOS
|
|
9
|
+
Classifier: Operating System :: Microsoft :: Windows
|
|
10
|
+
Classifier: Programming Language :: Python :: 3
|
|
11
|
+
Classifier: Programming Language :: Rust
|
|
12
|
+
Classifier: Topic :: Scientific/Engineering :: Mathematics
|
|
13
|
+
Classifier: Topic :: Multimedia :: Graphics :: 3D Modeling
|
|
14
|
+
Summary: Native (Rust) accelerator for forgekernel — the exact-arithmetic B-rep CAD kernel
|
|
15
|
+
Keywords: cad,b-rep,geometry,kernel,nurbs,exact-arithmetic,rust,pyo3
|
|
16
|
+
Author-email: Dan Willis <danielcwillis@gmail.com>
|
|
17
|
+
License: Apache-2.0
|
|
18
|
+
Requires-Python: >=3.11
|
|
19
|
+
Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
|
|
20
|
+
Project-URL: Homepage, https://github.com/gitcad-xyz/forge
|
|
21
|
+
Project-URL: Issues, https://github.com/gitcad-xyz/forge/issues
|
|
22
|
+
Project-URL: Repository, https://github.com/gitcad-xyz/forge
|
|
23
|
+
|
|
24
|
+
# forgekernel_rs — native accelerator for forgekernel
|
|
25
|
+
|
|
26
|
+
The optional Rust build of the hot paths in
|
|
27
|
+
[`forgekernel`](https://pypi.org/project/forgekernel/), the exact-arithmetic
|
|
28
|
+
B-rep CAD kernel. It is a **drop-in speed-up, not a dependency**: `forgekernel`
|
|
29
|
+
runs pure-Python and produces identical (exact ℚ) results without it, then
|
|
30
|
+
transparently uses `forgekernel_rs` for the surface–surface intersection and
|
|
31
|
+
predicate inner loops when the extension is importable.
|
|
32
|
+
|
|
33
|
+
Bit-identical to the Python reference — every ported routine is oracle-checked
|
|
34
|
+
against it, so the accelerator never changes an answer, only the wall time.
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
pip install forgekernel[rust] # forgekernel + this accelerator
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
Built with [PyO3](https://pyo3.rs) + [maturin](https://www.maturin.rs) as an
|
|
41
|
+
`abi3-py311` wheel (one wheel per platform serves every CPython ≥ 3.11).
|
|
42
|
+
Exact rationals use `num-bigint` / `num-rational`.
|
|
43
|
+
|
|
44
|
+
Apache-2.0. Source and design: https://github.com/gitcad-xyz/forge
|
|
45
|
+
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# forgekernel_rs — native accelerator for forgekernel
|
|
2
|
+
|
|
3
|
+
The optional Rust build of the hot paths in
|
|
4
|
+
[`forgekernel`](https://pypi.org/project/forgekernel/), the exact-arithmetic
|
|
5
|
+
B-rep CAD kernel. It is a **drop-in speed-up, not a dependency**: `forgekernel`
|
|
6
|
+
runs pure-Python and produces identical (exact ℚ) results without it, then
|
|
7
|
+
transparently uses `forgekernel_rs` for the surface–surface intersection and
|
|
8
|
+
predicate inner loops when the extension is importable.
|
|
9
|
+
|
|
10
|
+
Bit-identical to the Python reference — every ported routine is oracle-checked
|
|
11
|
+
against it, so the accelerator never changes an answer, only the wall time.
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
pip install forgekernel[rust] # forgekernel + this accelerator
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Built with [PyO3](https://pyo3.rs) + [maturin](https://www.maturin.rs) as an
|
|
18
|
+
`abi3-py311` wheel (one wheel per platform serves every CPython ≥ 3.11).
|
|
19
|
+
Exact rationals use `num-bigint` / `num-rational`.
|
|
20
|
+
|
|
21
|
+
Apache-2.0. Source and design: https://github.com/gitcad-xyz/forge
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["maturin>=1.0,<2.0"]
|
|
3
|
+
build-backend = "maturin"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "forgekernel_rs"
|
|
7
|
+
version = "0.1.0"
|
|
8
|
+
description = "Native (Rust) accelerator for forgekernel — the exact-arithmetic B-rep CAD kernel"
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
license = {text = "Apache-2.0"}
|
|
11
|
+
requires-python = ">=3.11"
|
|
12
|
+
authors = [{name = "Dan Willis", email = "danielcwillis@gmail.com"}]
|
|
13
|
+
keywords = ["cad", "b-rep", "geometry", "kernel", "nurbs", "exact-arithmetic", "rust", "pyo3"]
|
|
14
|
+
classifiers = [
|
|
15
|
+
"Development Status :: 3 - Alpha",
|
|
16
|
+
"Intended Audience :: Developers",
|
|
17
|
+
"License :: OSI Approved :: Apache Software License",
|
|
18
|
+
"Operating System :: POSIX :: Linux",
|
|
19
|
+
"Operating System :: MacOS",
|
|
20
|
+
"Operating System :: Microsoft :: Windows",
|
|
21
|
+
"Programming Language :: Python :: 3",
|
|
22
|
+
"Programming Language :: Rust",
|
|
23
|
+
"Topic :: Scientific/Engineering :: Mathematics",
|
|
24
|
+
"Topic :: Multimedia :: Graphics :: 3D Modeling",
|
|
25
|
+
]
|
|
26
|
+
|
|
27
|
+
[project.urls]
|
|
28
|
+
Homepage = "https://github.com/gitcad-xyz/forge"
|
|
29
|
+
Repository = "https://github.com/gitcad-xyz/forge"
|
|
30
|
+
Issues = "https://github.com/gitcad-xyz/forge/issues"
|
|
31
|
+
|
|
32
|
+
[tool.maturin]
|
|
33
|
+
manifest-path = "Cargo.toml"
|
|
34
|
+
# abi3 wheel — a single artifact per platform serves all CPython >= 3.11.
|
|
35
|
+
features = ["pyo3/abi3-py311"]
|