Skip to content

Introduce modern math expressions, plotting and SkiaSharp rendering - #3

Merged
Olof-Lagerkvist merged 12 commits into
masterfrom
experimental/math-expression-redesign
Sep 8, 2026
Merged

Introduce modern math expressions, plotting and SkiaSharp rendering#3
Olof-Lagerkvist merged 12 commits into
masterfrom
experimental/math-expression-redesign

Conversation

@Olof-Lagerkvist

@Olof-Lagerkvist Olof-Lagerkvist commented Sep 8, 2026

Copy link
Copy Markdown
Member

The historical expression and graph APIs combined parsing, evaluation, sampling and drawing, which prevented portable server-side PNG rendering and made consumer behavior difficult to maintain. This branch implements the accepted design and the consumer-tested rendering and numerical calculus slices.

  • Add immutable mathematical syntax, diagnostics, binding, interpreted evaluation and portable expression-tree layout.
  • Add parser-independent sampling, clipped plot geometry, numerical differentiation and finite-run integration.
  • Keep SkiaSharp rendering and PNG encoding at the edge; legacy APIs remain available for other consumers.
  • Prepare stable packages: MathExpression 1.1.0, FunctionPlotting 1.2.0 and Graphics.SkiaSharp 1.1.0.
  • Use ArgumentNullException.ThrowIfNull on supported frameworks, with preprocessor fallbacks; use the corresponding supported negative-range guard for source spans.

Validation: the application owner built and tested all consumers successfully. The final local pass built the portable packages across all nine target frameworks and the renderer across .NET 8/9/10. Packages were then consumed through a shared NuGet feed by netexpr, Windows GraphViewer and both full-site targets; CLI scenarios and HTTP/native PNG checks passed. Repository CI passed on Windows, Linux and macOS. Windows passed the main suite on .NET Framework 4.8 and .NET 8/9/10, plus all four renderer tests on each modern runtime; the platform-specific skip remains intentional. Renderer tests now have their own output directory so their test-host version cannot collide with the main test project; CI tests the already-built assemblies.

Review the language and numerical semantics documented in docs/math-expression-redesign, and the final release-checkpoint.md. Merge/build this producer before the companion MathTools, WindowsTools and website migrations. The ltrwebdb serializer fix is a separate PR and precedes the website's database package update. FreeBSD compatibility remains deferred. No packages have been published to NuGet servers.

Companion PRs: MathTools #1, WindowsTools #1, ltrwebdb #1, ltr-data.se #1.

@Olof-Lagerkvist
Olof-Lagerkvist merged commit 5c0c4e9 into master Sep 8, 2026
9 checks passed
@Olof-Lagerkvist
Olof-Lagerkvist deleted the experimental/math-expression-redesign branch September 8, 2026 21:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant