Repository navigation
10.0.0
Some foundational work on overhauling plotting with NumPy vectors was started. Alas, work on it was not complete by release time, so this could not be finished. Expect a future release to have revamped graphics.
A major revision of Form handling and character encoding $CharacterEncoding was started with a focus on TeXForm, MathMLForm, and OutputForm.
Notes:
- There are numerous incompatible changes. Use with Mathics-scanner 10.0.0 or greater.
- We are in the process of renaming
MathicstoMathics3. You will notice a new Mathics3 logo in the documentation.Mathicswas monolithic Python 2-ish code. Mathics3 has rewritten a number of major subcomponents and split off a number of subcomponents. There are still several that need to be revised or rewritten. The name change reflects this distinction between the two efforts, and emphasizes thatMathics3uses modern Python 3 idioms. While right now the repository name and import refer tomathics, several repositories that use the Mathics3 core, or that Mathics3 uses, have been renamed. In particular,Mathics_Scanneris nowMathics3_Scanner.
New Builtins
$LanguagevariableArcBoxboxing functionCschfunction PR #1768JSON`Import`JSONImportRasterBoxboxing functionFormatFormBox, andRoundBoxboxing functionsShowSpecialCharactersoptionShowStringCharactersoption
Enhancements
- Many Builtin functions now report argument-mismatch errors
Trigoption added toNumeratorandDenominatorCharacterEncoding, andPathoptions added toGetPowerModandQuotienthandle the 3-argument form, roots of exponents (PowerMod), lists of exponents, and numbers other than Integers.N[integer, MachinePrecision]addedPrintPrecisionforN[integer]matches WMA; so does the largest mantissa before converting to MachinePrecision Integer (for display) matches WMA.BeginPackagewithNeedsparameter added. This should allow more packages to load properlyExpand, andApartwork with relations- #1596 Improve
FullFormcompatibility
Bugs Fixed
- PR #1755 Ensure date formats have a year in them. This is needed for future Python versions.
- PR #1762 Fix Rayleigh expansion rules to only match half-integer orders. (Chenxin Zhong)
- #1741 Implement
MachinePrecisionoption for large numbers that fall outside of Python's built-infloatmantissa - #1740
N[3^200]in formats asPrecisionRealinstead ofMachinePrecision - #1723 Plotting nested functions
- #1713
?symbol and??symbol should be parsed asInformation["symbol"]andInformation["symbol"] - #1699 Character sequences used for the string representation of boxes should be treated as single characters in string character-wise manipulation operations.
- #1692
Mapdoes not automatically map a function overAssociationvalues (Li-Xiang-Ideal) - #1639 Map does not automatically map a function over Association values
- #1622 Handling escape sequences inside string literals
- #1519
Orderfor Numerics, e.g.Order[1.0, 1] == -1, but is 0 - #1492
UpSetnot giving a "Tag Integer is Protected." message - #1487
FindMinimum,FindMaximumdo not give approximate results when$IterationLimithas been exceeded and convergence fails - #1481 $TraceBuiltins=False does not work after more than one $TraceBuiltins=True use.
- Reset
evaluation.iteration_counton each new evaluation. This caused problems in long-running sessions, such as the Mathics3-django gallery examples. Binomialattributes corrected
Command-line Utilities
Command-line program mathics was renamed to mathics3; the old name will be available for a while. This apparently facilitates uv packaging.
Command-line program mathics3-codeparser-parse was added to show how expressions are parsed. This is roughly analogous to the CodeParse function of the CodeParser WMA package.
Internals
- A major revision and reorganization was begun to improve Form
handling, leading to the new modulesmathics.forms.formatand
mathics.forms.render. Existing render functions from
mathics.formathas been moved undermathics.form.render. (mmatera) Corrections were made to variables$PrintFormsand$OutputForms. (mmatera) - Primitive datatype
NumericArray, which is essentially a NumPy array, was added to support vector operations, such as plotting. (Bruce Lucas) In support of this, the modulemathics.core.atomswas split up. - Internals for handling Graphics have been revised to be able to accept a more complete list.
- Parsing now uses more data from YAML tables instead of hard-coding values inside code.
- Revise representation for
ComplexNumbers; both the real and imaginary parts can now be arbitrary non-complex Real numbers. The precision, a derived value, is also saved. - Numerous internal changes were made to improve performance.
mpmathis used to store large integer mantissas inN[x_Integer].- Token names were changed to align better with the names reported in
CodeParser`Tokenize. Note, however, Mathics3 parsing is a bit different fromCodeParser`Parse.
Package updates
- Python 3.14 supported. Support for Python 3.10 dropped; it may still work, but is not supported.
- Sympy 1.14 supported
- llvm 18+ now supported
API incompatibility
- Front ends must now issue an explicit call to
import_and_load_builtins(). Previously, this was handled simply by
importofMathicsSession. Loading modules loaded viaimportwas unpredictable in how and when things got loaded. The change was made to address this and to be able to give more flexibility in loading. - Token names have changed to align better with
CodeParser ' CodeTokenize.
Documentation
Go over documentation for PowerMod[], Denominator[], Numerator[], Limit, and ColorData, among other things.