Monthly Archive: July 2015

Progress of the Universe project

I made some progress in rewriting the Universe project in Rust during the last few days.

Before I started with the project itself, I had to make some preparations. The order of magnitude of the numbers appearing in the program caused the need for the GMP and MPFR libraries, allowing for calculations on arbitrarily big numbers. I also used the xxhash algorithm. The problem? All 3 pieces of code were written in C.

It's not actually that big of a problem, since one of the advantages of Rust is the ease of using it with C libraries. The only thing to do was to find or create modules (or, in Rust terms - crates) which would make it more straightforward, so I started searching.

I focused on GMP and MPFR first. There were 2 crates for GMP and one for MPFR, created by the author of one of the GMP crates. After having a look at them I decided that the GMP module without corresponding MPFR one is more straightforward to use, which left me with the task of writing my own crate for MPFR. Moreover, the GMP module was old and didn't even compile with the latest version of the language.

I started working. Fixing the GMP crate turned out to be tedious, but not very hard. Writing the MPFR module was similar, but needed a bit more work (like writing many similar functions that only served to call their C counterparts...). Both modules are available on GitHub (click, click). I created a pull request for the author of the GMP crate, but he turned out not to be interested in maintaining the project any longer.

Then it was time for xxhash. Here, like with GMP, a crate existed, but it didn't compile. A few hours of work later everything was fixed and the library worked.

So, now I have working dependencies for the project. I also started to rewrite the code of the project itself, but for now only a small part of it is done. More news about the project progress - (hopefully) soon.