Skip to content

8.0.0

Latest
Compare
Choose a tag to compare
@rocky rocky released this 26 Jan 20:37
· 28 commits to master since this release

This release is to get out some of the major changes that have gone on already in advance of redoing Boxing and Formatting.

Code now supports the emscripten platform, so this code can be installed in pyodide using micropip.install.

Operators are now controlled from a new operators YAML table from the mathics-scanner repository. A pass was made over the Mathics parser to handle box operators more properly. More work is needed here.

We started adding more debugging capabilities:

  • Breakpoint[]
  • Stack[], and
  • Trace[]

And in the Mathics3-Trepan repository:

  • DebugActivate[]
  • Debugger[], and
  • TraceActivate[]

Option --post-mortem was added which goes into the trepan3k debugger on an unrecoverable error. This option is available on other front ends.

This debugging code is very much alpha quality, but it greatly improves the ability to debug problems in loading existing packages
written from Mathematica. So packages BoolEval and CleanSlate were added to the repository.

Also as a result of the improved ability to debug Mathics3, we now provide a version of Rubi 4.17 using git submodules . To use this you will need a patched version of stopit. Aravindh Krishnamoorthy led the initial port of Rubi.

David A. Roberts worked on ensuring Mathics3 runs on pyodide and contributed a number of new Built-in Functions that are found in The On-Line Encyclopedia of Integer Sequences (OEIS).

New Builtins

  • Between
  • Breakpoint - (not WMA; forces a Python breakpoint()
  • CheckAbort
  • FileNameDrop
  • FormatValues
  • ListStepPlot
  • MapApply
  • PythonCProfileEvaluation (not WMA; interface to Python cProfile)
  • RealValuedNumberQ
  • SequenceForm
  • SetEnvironment
  • Stack
  • SyntaxQ
  • Trace
  • UnitStep

By @davidar <https://github.com/davidar>_:

  • BellB
  • DivisorSigma
  • DivisorSum
  • EulerE
  • HypergeometricU
  • IntegerPart
  • IntegerPartitions
  • JacobiSymbol
  • KroneckerSymbol
  • LambertW
  • LinearRecurrence
  • LucasL
  • MersennePrimeExponent
  • MoebiusMu
  • NumberDigit
  • PolygonalNumber
  • PolyLog
  • PowersRepresentations
  • ReverseSort
  • RootSum
  • SeriesCoefficient
  • SquaresR
  • Subfactorial

Documentation

  • Unicode operators appear in Django documentation. In the PDF, AMSLaTeX is used.
  • Summaries of builtin functions have been improved and regularized

mathics command line

Option --post-mortem was added which goes into the trepan3k debugger <https https://pypi.org/project/trepan3k/>_ on an
unrecoverable error. This option is available on other front-ends..

WMA Compatibility

  • GetEnvironment expanded to handle [] and {var1, var2,...} forms
  • The system packages directory has been renamed Packages to conformance with WMA.
  • $Path now includes a Packages directory under $HOME.
  • All of the 100 or so Unicode operators without a pre-defined meaning are now supported

Internals

  • More of the on-OO evaluation code that forms what might be an
    instruction evaluator has been moved out of the module
    mathics.builtins put in mathics.eval. This includes code for plotting and making boxes.
  • nested TimeConstraint[] works via external Python module stopit.
  • Pause[] is more interruptable
  • More code has been linted, more type errors removed, and docstrings added/improved

Performance

  • Blank* patterns without arguments are now singletons.

API incompatibility

  • Matcher now requires an additional evaluation parameter
  • Romberg removed as an NIntegrate[] method. It is deprecated in SciPy and is to be removed by SciPy 1.15.
  • The signature of the Definition.__init__ now receives a single dict parameter instead of the several *values parameters.
  • Rule positions in Definition.{get|set}_values now includes the word values. For example pos="up" now is pos="upvalues".
  • Definitions.get_ownvalue now returns a BaseElement instead of a BaseRule object.
  • Patterns in eval_ and format_ methods of builtin classes
    parses patterns in docstrings of the form
    Symbol: Expr as Pattern[Symbol, Expr].
    To specify the associated format in format_ methods the
    docstring, the list of format must be wrapped in parenthesis, like
    (InputForm,): Definitions[...] instead of just InputForm: Definitions[...].
  • Character and Operator information that has been gone over in the Mathics Scanner project. The information in JSON tables, the keys, and values have thus change. Here, we read this information in and use that instead of previously hard-coded values.

Bugs

Mathics3 Packages

  • Added BoolEval
  • Added CleanSlate
  • Combinatorica moved to a separate repository and v.9 was renamed to 0.9.1.
    More code v0.9.1 works. v2.0 was renamed v2.0.1 and some code now works.
  • Rubi version 4.17 (work in progress; algebraic integrations work)

Mathics3 Modules

Python Package Updates

  • Python 3.12 is now supported
  • SymPy 1.13 is now supported