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 newTranscendentalFunctionstrait.
Breaking/API changes:
- Removed deprecated methods and shortened Python custom symbol keywords:
custom_normalization,custom_print, andcustom_derivativeare now
normalization,print, andderivative. - Python
Expression.evaluate(constants, functions)and
evaluate_complex(...)were folded intoExpression.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 takesJITCompilationSettings. - Print options changed:
square_brackets_for_functionwas removed in favor of
function_brackets, andcustom_print_modenow accepts structured data. Graph.generate(...)renamedexternal_nodestoexternal_edges.- Minimum Rust version is now 1.89.
Check the migration guide for more details.