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[]
, andTrace[]
And in the Mathics3-Trepan repository:
DebugActivate[]
Debugger[]
, andTraceActivate[]
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 Pythonbreakpoint()
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 renamedPackages
to conformance with WMA. $Path
now includes aPackages
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 inmathics.eval
. This includes code for plotting and making boxes. - nested
TimeConstraint[]
works via external Python modulestopit
. 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 additionalevaluation
parameterRomberg
removed as anNIntegrate[]
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 wordvalues
. For examplepos="up"
now ispos="upvalues"
. Definitions.get_ownvalue
now returns aBaseElement
instead of aBaseRule
object.- Patterns in
eval_
andformat_
methods of builtin classes
parses patterns in docstrings of the form
Symbol: Expr
asPattern[Symbol, Expr]
.
To specify the associated format informat_
methods the
docstring, the list of format must be wrapped in parenthesis, like
(InputForm,): Definitions[...]
instead of justInputForm: 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
- Fix infinite recursion when formatting
Sequence[...]
- Parsing
\(
...\)
improved - Fixed #1105, #1106, #1107, #1172 #1173, #1195, #1205, #1221, #1223, and #1228 among others
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
- Added preliminary Mathics3 debugger.
Python Package Updates
- Python 3.12 is now supported
- SymPy 1.13 is now supported