An experimental C/C++ replacement for the scrambling guts of cubing/tnoodle.
NOTHING IN HERE IS SANCTIONED BY THE WCA. THIS MUST NOT BE USED FOR OFFICIAL WCA COMPETITIONS.
See jtnoodle-demo for an example project that uses jtnoodle.
sudo pip install clang==3.3
(Read
this if you
think you installed the wrong version.)A properly configured Linux machine can cross-compile binaries for Windows and OS X as well.
If you have trouble setting up a development environment, it might be worth
checking out .travis.yml
, which has all the commands to set things up for
Travis CI's 64 bit Ubuntu 12.04 environment.
./gradlew jar
produces build/libs/jtnoodle-VERSION.jar../gradlew run
runs main.cpp (this may be removed in the future)../gradlew js
produces build/tnoodle-VERSION.js../gradlew test
to run python tests.src/test/
directly, you need to run ./gradlew pytnoodle
first to produce the Swig wrapper code in build/pytnoodle
.Travis CI is configured to publish to http://oss.jfrog.org/oss-snapshot-local/tk/tnoodle/ on each build.
We could investigate manual deployment to oss-release-local
and promoting
releases to jcenter.
libcnoodle.{so,dll,dylib}
jtnoodle-VERSION.jar
.pytnoodle.py
and
_pytnoodle.so
in build/pytnoodle
. We could investigate publishing this to
PyPI.This is an experiment. It remains to be seen how we're going to include a version of libtnoodle for every major operating system + architecture pair in jtnoodle.jar so that it just works (like the current pure Java tnoodle).
If we succeed at producing a Java desktop app that can work everywhere, then we can declare this experiment a success, and start porting the Java scrambling code in tnoodle to libtnoodle. As this port is occurring, we can change tnoodle to depend on jtnoodle. This way we can reuse the existing webserver/pdf/zip/json generation infrastructure that we've already written in Java in tnoodle.
TNoodle evolved strangly. Generating random turn scrambles for an event like 7x7x7 takes seconds, when it should be instantaneous. This is due to a lot of infrastructure that was added to aid in scramble filtering. Porting the scrambling code to C++ gives us a needed excuse to revisit and rewrite.
In addition to needing a rewrite, C++ code gives us the option to run libtnoodle in as many places as possible.