Changelog
All notable changes to lineforge are documented in this file. The format follows Keep a Changelog, and the project adheres to Semantic Versioning.
Unreleased
Phase 4: Polish + 1.0.0 prep
- Added geometry optimizer (
lineforge.optimize_for): wrap scipy.optimize for finding dimensions that hit Z0 / Zdiff / εeff targets. - Added disk-cached solves (
lineforge.cache): repeated runs are instant. Disable withATLC3_NO_CACHE=1. - Theory documentation: Laplace solver, Faraday solver, skin effect, 3-wire decomposition.
- Added
OptimizeResultto top-level public API. - Added
lineforge lrsandlineforge sweepCLI subcommands.
Phase 3: Faraday solver, full RLGC, sweeps
- Added Faraday/PEEC sparse-system solver for L and Rs
(
lineforge.solvers.solve_lrs). - Added skin-depth prediction and pixel masking
(
lineforge.solvers.skin_depth) matching atlc2's "Restrict to skin depth". - Added full-RLGC orchestrator (
lineforge.solvers.solve_full) returningRLGCResultwith L, C, R, G, complex Z0, εeff, vp, α, β. - Added parameter sweep API (
lineforge.sweep) with CLI / Python / MCP surfaces. - Added atlc2 parity benchmark suite (
benchmarks/atlc2_parity.py). - MCP tools:
solve_lrs,solve_full,sweep(long-running ones returntaskIds; poll viatasks_get).
Phase 2: C/Gp bitmap solver + atlc2 file compat
- Added
Usermapclass with BMP/PNG/TIFF/JSON I/O (atlc/atlc2 compatible). - Added per-geometry rasterizers (microstrip, stripline, CPWG, diff pairs).
- Added
MoreColors.txtparser; JSON material packs. - Added Laplace SOR + PyAMG multigrid solvers
(
lineforge.solvers.laplace.solve_laplace). - Added charge-shift E-prediction for fast initial V-field
(
lineforge.solvers.charge_shift). - Added open-boundary 8× progressive grid extension
(
lineforge.solvers.extension). - Added C/Gp orchestrator with energy-integral capacitance extraction
(
lineforge.solvers.cgp.solve_cgp). - Added field visualization (V/E/D/T/J + contour lines) in
lineforge.visualization.fields. - Added atlc2
.txtscript-file interpreter (lineforge.scripting.run_script_file). - MCP tools:
import_usermap,rasterize,solve_cgp(async via Tasks),tasks_get,tasks_cancel,run_atlc2_script. - MCP resources:
atlc://geometries/{id},atlc://results/{id},atlc://results/{id}/field/{V|E|D|T}.
Phase 1: Closed-form analytical solvers + UX
- All 8 standard PCB geometries supported via IPC-2141A formulas (Hammerstad-Jensen, Wadell, Cohn, Wen).
- Differential-pair coupling correction (edge-coupled microstrip + stripline, broadside-coupled stripline).
- Pydantic v2 geometry models with discriminated-union JSON Schema export.
pint-based unit parsing (mil, mm, in, AWG).- atlc2's 45 standard-color material database encoded.
- CLI:
lineforge solve / list-geometries / describe-geometry / export-schema / info / mcp-serve. - Python API:
lineforge.microstrip(),.stripline(),.cpwg(),.edge_coupled_diff(),.solve(). - MCP server:
ping,calculate_impedance,list_geometry_types,describe_geometry,export_geometry_schema, plusatlc://materialsresources. - Documentation site (mkdocs-material) with quickstart, three tutorials, geometry reference, analytical theory.
Phase 0: Bootstrap
- Initial Python + Rust monorepo with maturin build, PyO3 module skeleton.
- GitHub Actions CI matrix (Linux/macOS/Windows × Python 3.11/3.12/3.13; ruff, black, mypy, pytest, cargo test, cargo clippy).
- cibuildwheel release pipeline → TestPyPI on tags.
- GPLv3 license, README, CONTRIBUTING, GitHub issue templates.