Native and compatibility boundary
CadFlow is migrating geometry-heavy work into the native C++ session while preserving the complete public feature surface. A passing compatibility suite does not imply that every geometry path is native.
Current measured surface
The CadFlow 0.1.0 repository snapshot documents:
| Metric | Count |
|---|---|
| Preserved compatibility exports | 329 |
| Complete current package exports | 414 |
| Public functions in the compatibility surface | 213 |
| Modeling-operation functions | 164 |
| Native dispatcher operations | 36 |
| Regression tests | 1010 plus 313 parametrized subtests |
Counts are implementation evidence, not a compatibility promise. Use public imports and capability reports rather than branching on these totals.
Native C++ today
The session owns and executes:
- box, cylinder, sphere, and cone primitives;
- polyline, circle, arc, interpolated spline, helix, and exact B-spline curves;
- planar faces, Bezier surfaces, fitted B-spline surfaces, and surface construction;
- extrude, revolve, loft, sweep, twisted sweep, fillet, chamfer, and shell;
- exact cut, union, and intersection;
- translate, rotate, mirror, and scale;
- mass properties, bounds, topology, distance, normals, curvature, and face-pair metrics;
- tessellation, STEP/BREP/STL import, STEP/STL export, and GLB source buffers;
- a multi-operation batch graph through one C ABI call.
Python by design
The following are intentionally Python-owned:
- expression graphs and unit systems;
- Model JSON, strict replay, Scene archives, and schema validation;
- product assemblies, connectors, and constraint reports;
- materials, physical connection declarations, and solver-neutral contact packages;
- semantic tags, source mapping, and lineage;
- translators, documentation tools, and standard-part parameterization.
These are public features even when they are not native.
Remaining kernel migration
Two richer compatibility paths are explicitly tracked:
- Hole filling with the full legacy N-side constraint parameter set.
- Exact Gordon curve-network interpolation matching the optional
ocp_gordonbehavior byte-for-byte.
The native facade already provides deterministic surface filling and Gordon construction, but it does not promise every legacy parameter or identical implementation detail.
Integration rule
Depend on behavior and public modules, not implementation placement:
import cadflow as cad
with cad.Model() as model:
part = model.box(10, 20, 3)
Do not import cadflow._engine, retain OCP objects, inspect private shape handles, or load libcadflow_core directly. That boundary is what lets a feature move from Python to C++ without rewriting application code.