Yearly Status as of September, 2021
In the past year we have:
- Upgraded all packages and libraries that Mathics depends on
- Broken up what was one single repository into several git repositories and installable Python libraries/packages
- Expanded and strengthened each of these components
- Added about 150 Mathematica Built-in Functions, and enhanced or fixed bugs in about 60 existing Built-in Functions
- Expanded and Improved interactive online and printed documentation
- Added a package for Networks and Graphs via networkx
- Greatly expanded the command-line utility
- Provide an up-to-date docker images for major releases which contains all of the components and add-ons, and even the most recent LaTeX PDF (with a program to read it)
Fixed numerous bugs and enhanced performance
This is the one minute summary. However in my opinion this doesn't do justice to the huge amount of work behind some of these. So if you have more than a minute here
is an elaboration of some of the bullet items above
Updated versions of software
- Python: from 2.7 to 3.x up to 3.9
- Django from 1.6 .10 to 3.2.6
- MathJax 2.0 to 2.7.9
- three.js r49 to r132
- mpmath 0.17 to 1.2.1
- Sympy 0.7.3 to 1.8
Significant split-off or new packages/repositories:
- mathics-scanner — extensive tables of Mathematica symbols and their properties, also includes a scanner for Mathematica
- mathics-pygments —
lexer and highlighter using the pygments engine based on rsmenon's pygments-mathematica. This uses the scanner tables above.
- mathicsscript —
command-line utility using the above and prompt toolkit which has enhanced syntax coloring, command-completion and can display 2D and 3D graphics (via matplotlib for 2D and asymptote for 3D)
- mathics-threejs-backend —
An implementation of Mathematica Graphics3D using
- mathics-django —
the Django-based Web front-end using the above minus mathicsscript
- pymathics-graph —
Mathics Graph add-on functions using NetworkX and Matplotlib
- pymathics-natlang —
Mathics Natural-Language Processing add-on
- mathics-omnibus —
a repository to bind them all into a single PyPI package and provides the docker scripts that make up the Mathics docker image.
- mathics-development-guide —
Sphinx documentation for developing Mathics. Browsable developer docs are here.
It is hoped that a number of the above can and will be used
outside of Mathics. Those of note are the Mathematica tables and scanner mathics-scanner, the Graphics3D implementation in
three.js, mathics-threejs-backend, and the syntax highlighter
mathics-pygments. In fact, Symja which is interesting of its own
right, uses or consults some of these.
We are always looking for ways to collaborate with Sage or other open-source projects.
Although what we have now is pretty impressive (and I am amazed we have gotten this far), we should not give the impression that Mathics is anywhere complete.
Here is what we are working on and what I hope to see accomplished over the next year:
- Speeding up performance in the Mathics interpreter — we are working on this right now.
- FindMinimum — it was started but is not complete
- Speeding up loading time - this is harder and can only come after the above
- Being able to run more large Mathematica packages out of the box. Right now we can handle Steven Skiena"e;s Combinatorica v0.9. We would like to see, Rubi and KnotTheory at least added to this. If you have suggestions and are willing to help out contact us. Right now we are finding the performance the biggest obstacle here.
Setting up some sort of registry of Mathematica packages that work on Mathics
- Supporting Backward compatibility of older Mathematica versions
- Jupyter integration. Right now the main obstacle is cleaning up the API interaction between Mathics core and front ends
We could use lots of help in just about every aspect. Please help out! If you are not a Python programmer, that"e;s okay. Here are some areas outside of Python programming where you could help:
And of course if you are a Python programmer, especially with a facility for Sympy, numpy, mpmath or Scipy, please join us.
- Mathematica Programmers —
Add missing Built in Function or functions which bridge compatibility between Mathematica versions
- Mathematicians —
Make our online and printed documentation more usable and informative. Find better examples for the functions, or describe the functions better.
- Literary types —
Write or adapt your Mathematica Tutorial. As above, improve our user (or developer) documentation
- Asymptote and LaTeX gurus —
our Asymptote library especially needs work
Last, and most important, I would like to mention and offer great thanks to those who have been a part of the Mathics team which has done all of the things above. Without these people we would have been stuck back a decade ago in 2011.
What has happend and will happen is not without a lot effort, work and a dedication to making Mathics better. Special thanks to:
- Mauricio Matera — he knows the most about the current system, the Wolfram Language and Mathematica. He has written most of the new Built-in Functions too
- Tiago Cavalcante Trindade — he started the mathics-threejs-backend and has gotten us a decade further in three.js has modernized most of the Django code. He is also a performance guru so the graphics speedups in rendering 3D objects is all due to him.
- Pablo Emilio Escobar Gaviria — he started the Mathematica Symbol Tables (mathics-scanner) moved us forward in Django and has a great general knowledge of the system.
A full list of people who have contributed can be found here.