110
edits
(→Improve TIFF image support: Shrink project size) |
(→Symbolic package: More realistic project) |
||
Line 89: | Line 89: | ||
== Symbolic package == | == Symbolic package == | ||
The [[Symbolic package]] provides symbolic computing and other [https://en.wikipedia.org/wiki/Computer_algebra_system computer algebra system] tools. The main component of Symbolic is a pure m-file class "@sym" which uses the Python package [https://www.sympy.org SymPy] to do (most of) the actual computations. The package aims to expose the | The [[Symbolic package]] provides symbolic computing and other [https://en.wikipedia.org/wiki/Computer_algebra_system computer algebra system] tools. The main component of Symbolic is a pure m-file class "@sym" which uses the Python package [https://www.sympy.org SymPy] to do (most of) the actual computations. The package aims to expose much of the functionality of SymPy while also providing a high level of compatibility with the Matlab Symbolic Math Toolbox. The Symbolic package requires communication between Octave and Python. In 2016 another GSoC project successfully re-implemented this communication using the new [[Pythonic|Pythonic package]]. | ||
This project proposes to | This project proposes to take this work further while also improving the long-term viability of the Symbolic package. Some goals include: | ||
1. instead of using Pythonic only for the communication layer, we'll use it throughout the Symbolic project. For example, we might make "@sym" a subclass of "@pyobject". We also could stop using the "pycall_sympy__" interface and use Pythonic directly from methods. Note: there are open questions about how to do this during a transition time when we still support other IPC mechanisms. | |||
2. exposing more functionality of SymPy with ''less glue'' in between. For example, we could allow OO-style method calls such as <code>f.diff(x)</code> as well as <code>diff(f, x)</code>. | |||
3. Improvements to the Pythonic package and its long-term maintenance. | |||
4. fixing up Symbolic to work with the latest releases of SymPy and Octave. The project has lagged for a few years and needs some efforts to port to recent and upcoming changes in SymPy code. | |||
5. making Symbolic easier to maintain. The project currently has a low ''bus factor'': improving the CI, making regular releases easier, improving other aspects of maintenance and making the project more welcoming to newcomers. | |||
Working on this project involves and interesting and challenging mix of m-file code, Python code, and in the case of Pythonic, perhaps some lower-level C code. | |||
* '''Project size''' [[#Project sizes | [?]]] and '''Difficulty''' | * '''Project size''' [[#Project sizes | [?]]] and '''Difficulty''' |
edits