# TODO-list for version 2.1 (or is it 3.0 at this point?) ## Rework solver ### 1. Implement minimum viable * Implement nxopt31 with fst_cube. Remember that the function move_check_solved() should do one axis at the time, so that we don't move everything before checking. * test? ### 2. Rework achitecture and file dependencies * solve.h depends only on moves(alg?) (dependency on step and trans is removed). * Other modules have changed dependencies, might as well rework all. * Make files smaller, do not include definition in .h, separate data from abstract operations. * remove cubetypes.h * Create a module for multi-step (maybe wait?) * Possible changes: in step solver, copy cube only if niss; add cleanup function in solver (called by solve()) to free cube and perhaps pruning tables. * see various TODO's in files ### 4. More threading options * Lazy multithread: threads are as independent as possible and only merged at the end. Ideal when all solutions of a certain length are requested. * (Done) Eager multithread: current implementation, branches communicate the number and list of solutions to stop as soon as possible. Good when only one solution of a certain depth is required. ## Simplify steps * Remove one type of rotation. * Change steps to choicestep and stepalt to step (or was this already done?). ## Add missing coordinates and steps * Check the old file for a list. Many are missing. * Checkers in steps.c should use coordinates. ## Missing and new commands * gen * freemem * twophase ## Easy improvements * Solve should re-orient the cube if centers are off * Solve: add options for -I (inverse only) and -L (linear = normal + inverse).