You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGES.rst
+47-60Lines changed: 47 additions & 60 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -5,64 +5,50 @@
5
5
10.0.0
6
6
======
7
7
8
-
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.
8
+
Some foundational work done to overhaul plotting using vectors with NumPy was started. Alas, work on it was not complete by release time to have finished this. Expect a future release to have revamped graphics.
9
9
10
-
A major revision of Form handling and character encoding ``$CharacterEncoding`` was started with a focus on ``TeXForm``, ``MLForm``, and ``OutputForm``.
11
-
12
-
Notes:
13
-
14
-
#. There are incompatible changes. Use with Mathics-scanner 10.0.0 or greater.
15
-
#. We are in the process of renaming ``Mathics`` to ``Mathics3``. You will notice a new Mathics3 logo in the documentation. ``Mathics`` was 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 that ``Mathics3`` uses modern Python 3 idioms. While right now the repository name and import refer to ``mathics``, several repositories that use the Mathics3 core, or that Mathics3 uses, have been renamed. In particular, ``Mathics_Scanner`` is now ``Mathics3_Scanner``.
10
+
Note: There are incompatible changes. Use with Mathics-scanner 10.0.0 or greater.
16
11
17
12
18
13
New Builtins
19
14
------------
20
15
21
16
#. ``$Language`` variable
22
17
#. ``ArcBox`` boxing function
23
-
#. ``Csch`` function `PR #1768 <https://github.com/Mathics3/mathics-core/pull/1768>`_
18
+
#. ``Csch`` function [PR # #1768]
24
19
#. ``JSON`Import`JSONImport``
25
20
#. ``RasterBox`` boxing function
26
-
#. ``Format``
27
-
#. ``FormBox``, and ``RoundBox`` boxing functions
21
+
#. ``RoundBox`` boxing function
28
22
#. ``ShowSpecialCharacters`` option
29
23
#. ``ShowStringCharacters`` option
30
24
31
25
32
26
Enhancements
33
27
------------
34
28
35
-
#. Many Builtin functions now report argument-mismatch errors
36
-
#. ``Trig`` option added to ``Numerator`` and ``Denominator``
37
-
#. ``CharacterEncoding``, and ``Path`` options option added to ``Get``
38
-
#. ``PowerMod`` and ``Quotient`` handle the 3-argument form, roots of exponents (``PowerMod``) lists of exponents, and numbers other than Integers.
39
-
#. ``N[integer, MachinePrecision]`` added
40
-
#. ``PrintPrecision`` for ``N[integer]`` matches WMA; so does largest mantissa before converting to MachinePrecision Integer (for display) matches WMA.
41
-
#. ``BeginPackage`` with ``Needs`` parameter added. This should allow more packages to load properly
42
-
#. ``Expand`` works with relations
43
-
29
+
* Many Builtin functions now report argument mismatch errors
30
+
* ``Trig`` option added to ``Numerator`` and ``Denominator``
44
31
45
32
Bugs Fixed
46
33
----------
47
34
48
-
#. `PR #1762 <https://github.com/Mathics3/mathics-core/pull/1762>`_ Fix Rayleigh expansion rules to only match half-integer orders. (Chenxin Zhong)
49
-
#. `#1741 <https://github.com/Mathics3/mathics-core/issues/1741>`_ Implement ``MachinePrecision`` option for large numbers that fall outside of Python's builtin ``float`` mantissa
50
-
#. `#1740 <https://github.com/Mathics3/mathics-core/issues/1740>`_ ``N[3^200]`` in formats as ``PrecisionReal`` instead of ``MachinePrecision``
51
-
#. `#1723 <https://github.com/Mathics3/mathics-core/issues/1723>`_ ``DiscretePlot`` gives wrong results nested function in ``First`` or ``Last``
52
-
#. `#1713 <https://github.com/Mathics3/mathics-core/issues/1713>`_ ``?`` *symbol* and ``??`` *symbol* should be parsed as ``Information["symbol"]`` and ``Information["symbol"#. #1699 Character sequences used for string representation of boxes should be treated as single characters in string character-wise manipulation operations.
53
-
#. `#1692 <https://github.com/Mathics3/mathics-core/issues/1692>`_ ``Map`` does not automatically map a function over ``Association`` values (vasdommes)
54
-
#. `#1639 <https://github.com/Mathics3/mathics-core/issues/1639>`_ Map does not automatically map a function over Association values
55
-
#. `#1519 <https://github.com/Mathics3/mathics-core/issues/1519>`_ ``Order`` for Numerics, e.g. ``Order[1.0, 1] == -1``, but is 0
56
-
#. `#1492 <https://github.com/Mathics3/mathics-core/issues/1492>`_ ``UpSet`` not giving a "Tag Integer is Protected." message
57
-
#. `#1487 <https://github.com/Mathics3/mathics-core/issues/1487>`_ ``FindMinimum``, ``FindMaximim`` do not give approximate results when ``$IterationLimit`` has been exceeded and convergence fails
58
-
#. `#1481 <https://github.com/Mathics3/mathics-core/issues/1481>`_ $TraceBuiltins=False does not work after more than one $TraceBuiltins=True use.
59
-
#. Reset ``evaluation.iteration__count`` on each new evaluation. This caused problems in long-running sessions, such as the Mathics3-django gallery examples.
60
-
61
-
62
-
Command-line Utilities
63
-
----------------------
35
+
#. PR #1762 Fix Rayleigh expansion rules to only match half-integer orders. (Chenxin Zhong)
36
+
#. #1741 Implement ``MachinePrecision`` option for large numbers that fall outside of Python's builtin ``float`` mantissa
37
+
#. #1740 ``N[3^200]`` in formats as ``PrecisionReal`` instead of ``MachinePrecision``
38
+
#. #1723 ``DiscretePlot`` gives wrong results nested function in ``First`` or ``Last``
39
+
#. #1713 ``?`` *symbol* and ``??`` *symbol* should be parsed as ``Information["symbol"]`` and ``Information["symbol"#. #1699 Character sequences used for string representation of boxes should be treated as single characters in string character-wise manipulation operations.
40
+
#. #1692 ``Map`` does not automatically map a function over ``Association`` values (vasdommes)
41
+
#. #1639 Map does not automatically map a function over Association values
42
+
#. #1519 ``Order`` for Numerics, e.g. ``Order[1.0, 1] == -1``, but is 0
43
+
#. #1492 ``UpSet`` not giving a "Tag Integer is Protected." message
44
+
#. #1487 ``FindMinimum``, ``FindMaximim`` do not give approximate results when ``$IterationLimit`` has been exceeded and convergence fails
45
+
#. #1481 $TraceBuiltins=False does not work after more than one $TraceBuiltins=True use.
46
+
47
+
48
+
Command-line Utilites
49
+
---------------------
64
50
65
-
Command-line program ``mathics`` was renamed to ``mathics3``; the old name will be available for a while. This apparently facilitates ``uv`` packaging.
51
+
Command-line program ``mathics`` was renamed to ``mathics3``; the old name will be available for a while. This appearently facilitates uv packaging.
66
52
67
53
Command-line program ``mathics3-code-parse`` was added to show how expressions are parsed. This is roughly analogous to the ``CodeParse`` function of the ``CodeParser`` WMA package.
68
54
@@ -71,29 +57,30 @@ Internals
71
57
72
58
* A major revision and reorganization was begun to improve Form handling, leading to the new modules ``mathics.forms.format`` and ``mathics.forms.render``. Existing render functions from ``mathics.format`` have been moved under ``mathics.form.render``. (mmatera)
73
59
Corrections were made to variables ``$PrintForms`` and ``$OutputForms``. (mmatera)
74
-
* 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 module ``mathics.core.atoms`` was split up.
60
+
* A major revision and reorganization was begun to improve Boxing.
61
+
Corrections were made to variables ``$PrintForms`` and ``$OutputForms``.
62
+
* 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 module ``mathics.core.atoms`` was split up.
75
63
* Internals for handling Graphics have been revised to be able to accept a more complete list.
76
-
* Parsing now uses more data from YAML tables instead of hard-coding values inside code.
77
-
* Revise representation for ``Complex`` Numbers; both the real and imaginary parts can now be arbitrary non-complex Real numbers. The precision, a derived value, is also saved.
64
+
* Parsing now uses more data from YAML tables insead of hard-coding values inside code.
65
+
* Revise representation for ``Complex`` Numbers; both the real and imaginary parts can now be arbitrary non-complex Real numbers. The precsion, a derived value, is also saved.
78
66
* Numerous internal changes were made to improve performance.
79
67
* ``mpmath`` is used to store large integer mantissas in ``N[x_Integer]``.
80
68
* Token names were changed to align better with the names reported in ``CodeParser`Tokenize``. Note however Mathics3 parsing is a bit different from ``CodeParser`Parse``.
81
69
82
70
Package updates
83
71
---------------
84
72
85
-
#. Python 3.14 supported. Support for Python 3.10 dropped; it may still work, but is not supported.
86
73
#. Sympy 1.14 supported
87
-
#. llvm 18+ now supported
74
+
#. llvm 15+ now supported
88
75
89
76
API incompatibility
90
77
-------------------
91
78
92
79
* Front ends must now issue an explicit call to
93
-
``import_and_load_builtins()``. Previously, this was handled simply by
80
+
``import_and_load_builtins()``. Previously this was handled simpy by
94
81
``import`` of ``MathicsSession``. Loading modules loaded via
95
82
``import`` was unpredictable in how and when things got loaded. The
96
-
change was made to address this and to be able to give more
83
+
change was make do address this and to be able to give more
97
84
flexibility in loading.
98
85
* Token names have changed to align better with ``CodeParser`CodeTokenize``
99
86
@@ -112,11 +99,11 @@ which happens a lot in plotting graphics. Also, Python 3.13 is a bit
112
99
faster than previous versions. Previously, rendering via ``asymptote`` was
113
100
slow. This is no longer the situation.
114
101
115
-
Preliminary work to track locations has started. This is useful in debugging and error reporting, and is controlled via the Boolean System variable ``$TrackLocations``.
102
+
Preliminary work to track locations has started. This is useful in debugging and error reporting, and is controlled via Boolean System variable ``$TrackLocations``.
116
103
117
104
Boxing operators have been added. The full range of escape sequences is supported. A limited form of boxing escape ``\*`` that handles a single Boxing function has been added.
118
105
119
-
A basic interrupt handler was added that loosely follows WolframScript's interrupt handler. Interrupt commands "abort", "exit", "continue", "debugger", "show", and "inspect" are available; "trace" will be added later.
106
+
A basic interrupt handler was added that loosely follows wolframscript's interrupt handler. Interrupt commands "abort", "exit", "continue", "debugger", "show", and "inspect" are available; "trace" will be added later.
120
107
121
108
``main.py`` has been moved to ``__main__.py`` following Python conventions for main routines. This makes ``python -m mathics`` work.
122
109
GNU Readline history is enabled for ``mathics`` when it is available. It shares history files with ``mathicsscript``.
@@ -161,13 +148,13 @@ Enhancements
161
148
------------
162
149
163
150
#. Set-related code reworked for better WMA conformance. There is better WMA conformance in rule selection when several rules match.
164
-
#. ``mathics`` CLI options are more like WolframScript
151
+
#. ``mathics`` CLI options are more like wolframscript
165
152
#. The debugging interface has been improved. ``TraceEvaluation[]`` and ``TraceDebug[]`` filter and colorize output for Mathics3 constructs much better. Single-dash long options like
166
-
``-help``, ``-file`` are now accepted. Short option ``-f`` is associated with ``-file`` rather than ``--fullform``; ``-F`` is now used for
153
+
``-help``, ``-file`` are now accepted. Short option ``-f`` is associated with ``-file`` rather than ``--fullform``; ``-F`` is is now used for
167
154
``FullForm``. Option ``--read`` with alias ``-r`` is now ``-code`` and short option ``-c``.
168
-
#. Boolean Options ``ShowRewrites`` and ``ShowEvaluation`` were added to ``TraceEvalation[]``. These filter either rewrite rules or evaluation expressions. Presumably, you don't want to filter both.
169
-
#. We check argument counts on more built-in functions and give error messages (tags ``argb``, ``argx``, ``argr``, ``argrx``) for invalid parameter combinations.
170
-
#. ``$TraceBuiltins`` output uses standard Mathics3 I/O mechanisms rather than Python's builtin ``print``. Therefore, it will be seen in more front-ends like Django or PyOxide.
155
+
#. Boolean Options ``ShowRewrites`` and ``ShowEvaluation`` were added to ``TraceEvalation[]``. These filtering for either rewrite rules or evaluation expressions. Presumably, you don't want to filter both.
156
+
#. We check argument counts on more Builtin Functions and give error messages (tags ``argb``, ``argx``, ``argr``, ``argrx``) for invalid parameter combinations.
157
+
#. ``$TraceBuiltins`` output uses standard Mathics3 I/O mechanisms rather than Python's builtin ``print``. Therefore it will be seen in more front-ends like Django or pyoxide.
171
158
172
159
Bugs Fixed
173
160
----------
@@ -176,13 +163,13 @@ Bugs Fixed
176
163
#. #1213 ``Condition[]`` expressions as second element in ``RuleDelayed`` behaviour not compatible with WMA
177
164
#. #1187 Add ``Hypergeometric2F1`` Builtin Function
178
165
#. #1198 Blanks in ``Set`` operations are not properly handled in tag positions.
179
-
#. #1245 Add "lpn" error message checking in _ListPlot.
180
-
#. #1383 Support for hypergeometric functions.
181
-
#. #1384 Option management tweaks.
166
+
#. #1245 Add "lpn" error message checking in _ListPlot
167
+
#. #1383 Support for hypergeometric functions
168
+
#. #1384 Option management tweaks
182
169
#. #1388 In WMA, ``Pochhammer[0,-2]`` returns 1/2
183
170
#. #1395 Match WMA for ``Gamma[1+x]`` and ``Product[...]``
184
171
#. #1405 structure_cache in ``mathics.core.expression.structure`` is ``None`` but we try to set it in ``_is_neutral_symbol()``
185
-
#. #1412 ``Transpose[]`` does not work on three-dimensional array.
172
+
#. #1412 ``Transpose[]`` does not work on three-dimensional array
186
173
#. #1425 `Erroneous Protected message in SetDelayed
187
174
#. #1432 URL links with $ in them are getting messed up
188
175
#. #1461 "noopen" errors sometimes return ``$Failed``
@@ -472,23 +459,23 @@ Internals
472
459
---------
473
460
474
461
* ``eval_abs`` and ``eval_sign`` extracted from ``Abs`` and ``Sign`` and added to ``mathics.eval.arithmetic``.
475
-
* The maximum number of digits allowed in a string is set to 7000 and can be adjusted using an environment variable
462
+
* Maximum number of digits allowed in a string set to 7000 and can be adjusted using environment variable
476
463
``MATHICS_MAX_STR_DIGITS`` on Python versions that don't adjust automatically (like pyston).
477
-
* Real number comparisons implemented now use the internal implementation of ``RealSign``.
464
+
* Real number comparisons implemented is based now in the internal implementation of ``RealSign``.
478
465
* For Python 3.11, the variable ``$MaxLengthIntStringConversion`` controls the maximum size of
479
466
the literal conversion between large integers and Strings.
480
467
* Older style non-appearing and non-pedagogical doctests have been converted to pytest
481
468
* Built-in code is directed explicitly rather than implicitly. This facilitates the ability to lazy load
482
469
builtins or "autoload" them a la GNU Emacs autoload.
483
470
* Add mpmath LRU cache
484
-
* Some work was done to make it possible so that in the future, we can speed up initial loading and reduce the initial memory footprint
471
+
* Some work was done to make it possible so that in the future we can speed up initial loading and reduce the initial memory footprint
485
472
486
473
487
474
Bugs Fixed
488
475
----------
489
476
490
477
* ``Definitions`` is compatible with ``pickle``.
491
-
* Improved support for ``Quantity`` expressions, including conversions, formatting, and arithmetic operations.
478
+
* Improved support for ``Quantity`` expressions, including conversions, formatting and arithmetic operations.
492
479
* ``Background`` option for ``Graphics`` and ``Graphics3D`` is operative again.
493
480
* Numeric comparisons against expressions involving ``String``; Issue #797)
494
481
* ``Switch[]`` involving ``Infinity``. Issue #956
@@ -506,7 +493,7 @@ API
506
493
We now require an explicit call to a new function
507
494
``import_and_load_builtins()``. Previously, loading was implicit and
508
495
indeterminate as to when this occurred, as it was based on import
509
-
order. We need this so that we can add support in the future for lazy-loading built-in modules.
496
+
order. We need this so that we can add support in the future for lazyloading built-in modules.
510
497
511
498
Package updates
512
499
---------------
@@ -1524,7 +1511,7 @@ Other changes
1524
1511
#. blacken (format) a number of Python files and remove blanks at the end of lines
Copy file name to clipboardExpand all lines: FUTURE.rst
+10-33Lines changed: 10 additions & 33 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,21 +1,8 @@
1
1
*One can always dream...*
2
2
3
-
2026-2027 Roadmap
3
+
2025-2026 Roadmap
4
4
=================
5
5
6
-
7
-
2026 Achievements
8
-
-----------------
9
-
10
-
Support Python 3.14 and Poetry packaging.
11
-
12
-
Major foundational work was done in revising Form and ``MakeBox`` handling.
13
-
14
-
How Mathics3 handles ``CharacterEncoding`` was revised.
15
-
16
-
Introduction of NumPy vectors using ``NumericArray`` was started. Some foundational work was done to revise Plotting and speed it up using vectorization.
17
-
18
-
19
6
2025 Achievements
20
7
-----------------
21
8
@@ -32,33 +19,22 @@ Some preliminary debugging support was added. Position information is starting t
32
19
Upcoming work
33
20
-------------
34
21
35
-
Support for NumPy Vectors and Arrays
36
-
++++++++++++++++++++++++++++++++++++
37
-
38
-
While ``NumericArray`` exists as atomic element, it is not accessible as a user function. Evaluation routines for built-in function needs to be expanded to accomodate ``NumericArray`` type. (Bruce Lucas)
39
-
40
-
Compilation
41
-
+++++++++++
42
-
43
-
A Compiler for pure functions to SymPy expressions was started to speed up Plotting. (Bruce Lucas).
44
-
45
-
This needs to be expanded to handle Mathics3 evaluation routines that do not have exact SymPy functions. The compiler also needs to be expanded to handle introduction of variables and procedural or statement kinds of expressions.
46
-
22
+
MakeBoxes
23
+
++++++++++
47
24
48
-
More Forms and MakeBoxes
49
-
++++++++++++++++++++++++
25
+
We hope to improve conformance of ``MakeBoxes`` and this will:
50
26
51
-
* Implement ``DisplayForm``, ``ScientificForm``, ``EngineeringForm``, and ``DecimalForm``
52
-
* Improve``TraditionalForm``
53
27
* Improve conformance to WMA for expressions such as polynomial expressions
28
+
* Make 2-D Character-oriented printing easy
54
29
* Improve data returned by ``Information[]``
30
+
* Allow better integration into Jupyter cells.
55
31
56
32
Improving MakeBoxes is also needed for improving formatting and rendering.
57
33
58
34
Evaluation
59
35
++++++++++
60
36
61
-
Some fundamental flaws have been detected around our main evaluation loop. We probably need to split function application from rule rewrite. ``Hold`` attributes, like ``HoldAll`` prevent function application, but not rule rewriting. This is apparent in the handling of ``Unevaluated[]``, ``Evaluate[]``, and ``With[]`` and ``Condition``. These need to be addressed. See for example: `Issue #1206 <https://github.com/Mathics3/mathics-core/issues/1206>`_ and `Issue #1789 <https://github.com/Mathics3/mathics-core/issues/1789>`_.
37
+
Some fundamental flaws have been detected around our main evaluation loop. This is appareent in the handling of ``Unevaluated[]``, ``Evaluate[]``, and ``With[]`` and ``Condition``. These need to be addressed. See for example: `Issue #1206 <https://github.com/Mathics3/mathics-core/issues/1206>`_.
62
38
63
39
Debugging
64
40
+++++++++
@@ -75,13 +51,14 @@ Major components that still need revision/rewrite
75
51
* Efficient pattern matching
76
52
* Documentation
77
53
* Start a real instruction-driven interpreter
54
+
* Compile system
78
55
* Rewrite how Graphics Routines are implemented and implement a robust API for extending
79
-
* Notebook Integration
80
56
81
57
Smaller things:
82
58
59
+
* Redo/rethink Complex representation
60
+
* Better and more back-end formatting and rendering
83
61
* Basic Object system. Some of our BaseElement objects don't feel right.
84
-
* Improve Complex conversion to SymPy (via SymPy.Add?)
0 commit comments