kernel2d-Port Phase 1: Crate-Skelett + WASM-Fassade + build:kernel2d

- src-tauri/kernel2d: eigenstaendiges Crate (cdylib+rlib, eigener leerer
  [workspace]), Feature web (wasm-bindgen) und additives robust-predicates.
- Vektor-Helfer 1:1 aus src/model/geometry.ts portiert (hypot-len,
  normalize-Nullguard, hartkodiertes 1e-9 in line_intersect) + Unit-Tests.
- Leere Batch-Fassade kernel2d_normalize_json als WASM-Grenzen-Ping.
- package.json: build:kernel2d; src-tauri/Cargo.toml: workspace-exclude.
- PORT_PLAN.md: Portierungsplan (Scope, Crate-vs-Port, Diff-Harness, Phasen).
This commit is contained in:
2026-07-05 00:09:12 +02:00
parent dec431579e
commit 2d96a864da
6 changed files with 527 additions and 2 deletions
+40
View File
@@ -0,0 +1,40 @@
# Eigener leerer Workspace-Block: entkoppelt kernel2d vollstaendig vom
# cad-tauri-Workspace (src-tauri/Cargo.toml), damit `cargo test`/`wasm-pack`
# aus diesem Verzeichnis heraus nicht faelschlich dessen Workspace erben.
# Muster: render2d/render3d. (Parent-`exclude` allein greift beim Bauen aus
# dem Unterverzeichnis nicht zuverlaessig.)
[workspace]
[package]
name = "kernel2d"
version = "0.1.0"
edition = "2021"
description = "2D-Geometrie-Kern (Port von src/geometry/kernel2d.ts) — handgeschriebene f64-Mathematik, headless per `cargo test` UND per wasm-pack (Feature \"web\") zu WASM baubar. Hinter identischer TS-Fassade; TS-Legacy bleibt Differential-Referenz."
# cdylib: von wasm-pack (Feature "web") fuer das .wasm-Modul. rlib: als
# Pfad-Abhaengigkeit und fuer den Test-/Example-Build (parity). Muster:
# render2d/render3d/geometry.
[lib]
crate-type = ["cdylib", "rlib"]
[features]
# Standard: reiner f64-Rechenkern, headless per `cargo test` pruefbar.
default = []
# Browser-Bindings: dieselbe Geometrie hinter wasm-bindgen-Batch-Fassaden,
# aus TS via wasm-pack aufgerufen. Nur fuer wasm32-unknown-unknown sinnvoll.
web = ["dep:wasm-bindgen", "dep:serde_json", "dep:console_error_panic_hook"]
# ADDITIV, NICHT im web-Default: exakte Orientierungs-Praedikate (robust::orient2d)
# nur intern fuer Korrektheits-Golden-Cases (detectRooms/point-in-polygon). Der
# Zufalls-Diff-Test gegen TS-naiv laeuft OHNE dieses Feature (siehe PORT_PLAN §3).
robust-predicates = ["dep:robust"]
[dependencies]
serde = { version = "1", features = ["derive"] }
serde_json = { version = "1", optional = true }
wasm-bindgen = { version = "0.2", optional = true }
console_error_panic_hook = { version = "0.1", optional = true }
robust = { version = "1", optional = true }
# Nur fuers Paritaets-Beispiel (examples/parity.rs) — JSON von stdin lesen.
[dev-dependencies]
serde_json = "1"