Skip to content

Symbolica 2.0.0

Latest

Choose a tag to compare

@benruijl benruijl released this 04 Jun 08:18

Symbolica 2.0 has been released! 🎉

Symbolica 2.0 is a major update with a redesigned evaluator stack, richer
Python and Rust APIs, and broader support for special functions and notebook
display.

  • Added many transcendental and special functions, including gamma, zeta,
    polylogarithms, Bessel functions, Euler gamma, two-argument atan, and Laurent
    series support around poles.
  • Reworked expression evaluation around a unified evaluator API, with builder
    patterns in Rust, a simpler Python evaluator constructor, improved error
    handling, and direct expression evaluation through a single constants map.
  • Added custom symbol evaluation and series hooks, including tagged external
    functions, arbitrary-precision constants, C++ external function export, and
    automatic dualization support.
  • Improved optimized numerical evaluation with SymJIT 2.18, JIT compilation
    options, SIMD always enabled in the SymJIT backend, save/load support for JIT
    evaluators, and faster batch JIT matrix evaluation.
  • Added rich output for notebooks: HTML, LaTeX, and formatted display for
    expressions, series, polynomials, matrices, and graphs.
  • Added symbol import/export, ASCII export names, wrapped exported rationals,
    and better function-map merging for exported or optimized evaluators.
  • Improved polynomial and rational-polynomial workflows with simpler
    conversion APIs, coefficient-based collection, faster factoring/conversion,
    and Hu-Monagan polynomial GCD enabled when expected to be faster.
  • Added a Rust prelude with common imports, plus method-style transcendental
    functions through the new TranscendentalFunctions trait.

Breaking/API changes:

  • Removed deprecated methods and shortened Python custom symbol keywords:
    custom_normalization, custom_print, and custom_derivative are now
    normalization, print, and derivative.
  • Python Expression.evaluate(constants, functions) and
    evaluate_complex(...) were folded into Expression.evaluate(constants).
  • Python optimized evaluator construction changed from
    expr.evaluator(constants, functions, params, ...) to
    expr.evaluator(params, functions=..., ...).
  • Rust evaluator construction now returns an EvaluatorBuilder; JIT compilation
    now takes JITCompilationSettings.
  • Print options changed: square_brackets_for_function was removed in favor of
    function_brackets, and custom_print_mode now accepts structured data.
  • Graph.generate(...) renamed external_nodes to external_edges.
  • Minimum Rust version is now 1.89.

Check the migration guide for more details.