Next Steps

Community

Engineering

Slogan: do for M2 what V8 does for JavaScript.

old scope of work

  1. figure out how to bring the benefits of parallelization on multiple threads to the user at top level without placing any demands on the user;
  2. figure out the best way to parallelize computation-intensive engine routines;
  3. review and simplify the interface to internal Gröbner basis algorithms;
  4. reorganize the engine and the Core package, including its tests and documentation;
  5. update the hierarchy of mathematical types and the way functions use it (e.g., in a categorical sense);
  6. move some mathematical types or methods to separate packages (e.g., moving ideal quotients and saturation to Colon.m2);
  7. making the Core package’s code more readable and maintainable.

Item (1) includes making printing thread safe; figuring out how to get good speed-ups from running tasks in parallel; making lots of Macaulay2 code thread-safe; parallelizing standard list/vector functions like ‘all’, ‘any’, etc.

Item (2) includes parallelizing Gröbner basis routines or free resolution computations using vectorization or multiple threads.

Item (3) includes integrating already implemented algorithms such as FGLM as strategies of the default Gröbner basis functions and updating the documentation of the improved Gröbner basis methods.