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:
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.
And here, I should also mention that 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'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's okay. Here are some areas outside of Python programming where you could help:
- 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.
And of course if you are a Python programmer, especially with a facility for Sympy, numpy, mpmath or Scipy, please join us.
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.
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.