Announcing Savage, a computer algebra system written in Rust

604 points -p-e-w-

After several months of work I am proud to announce the first usable version of Savage, a computer algebra system written from scratch in 100% Rust!

Savage is still in its infancy, but it can already do some pretty cool things, such as symbolically evaluate the determinant of a matrix:

in: det([[a, 2], [3, a]])
out: a ^ 2 - 6

Or perform large calculations with full precision:

in: 1.1 ^ 100
out: 13780.612339822270184118337172089636776264331200038466433146477552154985209
5523076769401159497458526446001

Or compute the ten millionth prime number:

in: nth_prime(10^7)
out: 179424673

Savage comes with a nice REPL with syntax highlighting, multi-line editing, and persistent history (note that evaluation has no sanity checks and cannot be aborted yet, so if you enter something like 10 ^ 10 ^ 10, don't be shocked if Savage eats all your RAM!).

Obviously, building a useful CAS from the ground up is a huge task and will require years of work. However, I believe that most of the architectural problems are solved already, and adding new functions is straightforward thanks to Savage's macro-based function dispatch system. I'm hoping that contributors will help me in the effort of growing Savage's library of functions.

Anyway, enjoy the shiny/rusty new computer algebra system!