Skip to content

Releases: symbolica-dev/symbolica

Symbolica 2.0.0

04 Jun 08:18

Choose a tag to compare

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.

Symbolica 1.5.1

02 Jun 08:14

Choose a tag to compare

Symbolica 1.5.1 has been released!

Notable fixes

  • Proper handling of special cases for double-float arithmetic
  • Fix normalization of addition of a number and a term
  • Drastically improved parsing performance and factorization performance
  • Support empty evaluator parameters in Python API

Symbolica 1.5.0

02 Jun 08:14

Choose a tag to compare

Symbolica 1.5.0 has been released!

Notable changes

  • JIT compilation of evaluators using symjit by @Shahriar Iravanian
  • A new evaluation pipeline that is much faster and uses less memory
  • 2x faster arbitrary precision evaluation
  • Recursive match and replace and deepest first replacement
  • DoubleFloat arithmetic
  • Horner form construction

Symbolica 1.4.0

02 Jun 08:14

Choose a tag to compare

Symbolica 1.4.0 has been released!

Notable changes

  • Improved output featuring bracket colouring, division collection and multi-line formatting
  • Much faster and more memory efficient optimized evaluator generation
  • Fast arbitrary precision evaluation in Python API
  • Typst output mode
  • Toggle for partial pattern matching
  • Symbol aliases
  • Builtin abs and if functions

Symbolica 1.3.0

02 Jun 08:13

Choose a tag to compare

Symbolica 1.3.0 has been released!

Notable changes

  • Overall performance improvement due to faster normalization of terms
  • Performance improvements of pattern matching due to proofs of structural mismatches
  • Experimental sparse matrix library (written by Gregor Kälin)
  • Set parameters as real during evaluation, which allows for faster complex evaluators
  • Set dual components of parameters to 0, which allows for faster compiled dual evaluation
  • Add replace-once option
  • Allow for more flexible input of numpy arrays for evaluators

** Upgrade notice **

  • The ordering of terms in the output has changed and may be slightly harder to predict. Use to_canonical_string if you need predictable output.

Symbolica 1.2.0

18 Dec 11:30

Choose a tag to compare

Symbolica 1.2.0 has been released!

Notable changes

  • Support setting namespaces per module in Python

Symbolica 1.1.0

18 Dec 11:30

Choose a tag to compare

Symbolica 1.1.0 has been released!

Notable changes

  • Automatic differentation through duals for expression evaluation
  • Attach custom data to symbols
  • Improve linear system solving performance
  • Joint symbol definition for symbols with interdependent normalization functions

Symbolica 1.0.0

23 Nov 08:33

Choose a tag to compare

Symbolica 1.0.0 has been released! 🎉 🎉

The first major version is out! Thank you to everyone who contributed to making this happen 🙏 All your feedback and contributions are greatly appreciated.

Notable changes

  • Parts of Symbolica are open source. Check out numerica and graphica!
  • Support functions in most places that used to accept symbols (collect in function, etc)
  • Rework ring traits

Upgrade notice

  • Some traits got renamed: NumericalFloatLike -> FloatLike, RealNumberLike -> RealLike

Symbolica 0.20.0

18 Nov 12:09

Choose a tag to compare

Symbolica 0.20.0 has been released!

Notable changes

  • Return underdetermined solutions for linear_system_solve
  • Comprehensive parsing of Mathematica (InputForm excluding operators such as . and ->, and FullForm), and improved Mathematica output generation
  • Tensor canonization now supports nesting in functions
  • Floating point numbers are now supported as coefficients for (rational) polynomials

Upgrade notice

  • parse, parse_lit, and try_parse now take the optional default namespace as a named argument, e.g. parse!("x", default_namespace="test")

Symbolica 0.19.0

18 Nov 12:09

Choose a tag to compare

Symbolica 0.19.0 has been released!

Notable changes

  • Branching is now supported for evaluators
  • SIMD compiled code generation
  • Custom tags for symbols
  • New attributes: scalar, real, integer, positive
  • Expressions can be tested for realness, integerness, etc
  • Complex conjugation of whole expressions (including support for evaluation)
  • Wildcards now filter based on their attributes
  • Customizable logger
  • Support for numpy arrays
  • Half-edge notation for graph construction and progress callback

Upgrade notice

  • Wildcards now filter based on their attributes (symmetric f_ will not match non-symmetric functions)

The Symbolica Python bindings on PyPi will release as soon as the community packages have been upgraded.