<feed xmlns='http://www.w3.org/2005/Atom'>
<title>nissy-core/src/solvers/solutions.h, branch python-callback</title>
<subtitle>The "engine" of nissy, including the H48 optimal solver.</subtitle>
<id>https://git.tronto.net/nissy-core/atom?h=python-callback</id>
<link rel='self' href='https://git.tronto.net/nissy-core/atom?h=python-callback'/>
<link rel='alternate' type='text/html' href='https://git.tronto.net/nissy-core/'/>
<updated>2025-08-07T13:28:01Z</updated>
<entry>
<title>Added API function for solution variations</title>
<updated>2025-08-07T13:28:01Z</updated>
<author>
<name>Sebastiano Tronto</name>
<email>sebastiano@tronto.net</email>
</author>
<published>2025-08-07T13:09:46Z</published>
<link rel='alternate' type='text/html' href='https://git.tronto.net/nissy-core/commit/?id=5355de2921126e2b75e24abd57e17556e22a6ed0'/>
<id>urn:sha1:5355de2921126e2b75e24abd57e17556e22a6ed0</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fix bug</title>
<updated>2025-07-31T11:09:42Z</updated>
<author>
<name>Sebastiano Tronto</name>
<email>sebastiano@tronto.net</email>
</author>
<published>2025-07-31T11:09:42Z</published>
<link rel='alternate' type='text/html' href='https://git.tronto.net/nissy-core/commit/?id=bf3497420c9a12397dc13a34faf3ce3e456f3aa7'/>
<id>urn:sha1:bf3497420c9a12397dc13a34faf3ce3e456f3aa7</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fixed bug with counting solutions for coordinate solver</title>
<updated>2025-07-30T14:35:25Z</updated>
<author>
<name>Sebastiano Tronto</name>
<email>sebastiano@tronto.net</email>
</author>
<published>2025-07-30T14:35:25Z</published>
<link rel='alternate' type='text/html' href='https://git.tronto.net/nissy-core/commit/?id=36c317ebd1cf1dba8a8cbec494f4d3971e6cefd3'/>
<id>urn:sha1:36c317ebd1cf1dba8a8cbec494f4d3971e6cefd3</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Cleanup some TODOs</title>
<updated>2025-07-29T08:55:29Z</updated>
<author>
<name>Sebastiano Tronto</name>
<email>sebastiano@tronto.net</email>
</author>
<published>2025-07-29T08:55:29Z</published>
<link rel='alternate' type='text/html' href='https://git.tronto.net/nissy-core/commit/?id=52c21640508c3fc668107778ae027ff4428ebd89'/>
<id>urn:sha1:52c21640508c3fc668107778ae027ff4428ebd89</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Removed VLA notation from function parameters.</title>
<updated>2025-05-27T07:03:51Z</updated>
<author>
<name>Sebastiano Tronto</name>
<email>sebastiano@tronto.net</email>
</author>
<published>2025-05-27T07:03:51Z</published>
<link rel='alternate' type='text/html' href='https://git.tronto.net/nissy-core/commit/?id=7c934801f88c640970ad41b5ddd39f4e39609f28'/>
<id>urn:sha1:7c934801f88c640970ad41b5ddd39f4e39609f28</id>
<content type='text'>
I found out that this gives undefined behavior when then size is 0.
Better not to have it at all, it is confusing for other developers anyway.
</content>
</entry>
<entry>
<title>Do all loggin in main thread</title>
<updated>2025-05-23T14:54:59Z</updated>
<author>
<name>Sebastiano Tronto</name>
<email>sebastiano@tronto.net</email>
</author>
<published>2025-05-23T14:48:58Z</published>
<link rel='alternate' type='text/html' href='https://git.tronto.net/nissy-core/commit/?id=c6a77f30f64be73a5e55e06336975f2ecfbb2324'/>
<id>urn:sha1:c6a77f30f64be73a5e55e06336975f2ecfbb2324</id>
<content type='text'>
Before this committ, the solver (via the generic solution-appender
routines in src/solve/solutions.h) and the H48 data generator did some
logging in the worker threads, without using any locks. This was not nice,
but in practice it did not cause any problem, because the log messages
were rare.

However, this turned out to be a problem when building to WASM, because
web workers do not have access to the main JS memory, and therefore
they cannot call functions from the main JS. This includes not only the
callback functions for logging, but also those for polling the status
of the solver (run / pause / stop).

This commit fixes this at the cost or being somewhat inelegant: the
solutions are not logged as they are found, but only every 500ms.
</content>
</entry>
<entry>
<title>Adjusted solvers, fixed bug</title>
<updated>2025-04-23T12:52:58Z</updated>
<author>
<name>Sebastiano Tronto</name>
<email>sebastiano@tronto.net</email>
</author>
<published>2025-04-23T12:42:28Z</published>
<link rel='alternate' type='text/html' href='https://git.tronto.net/nissy-core/commit/?id=039267a278bb9e0580e8aebd85ef5f3ed774688f'/>
<id>urn:sha1:039267a278bb9e0580e8aebd85ef5f3ed774688f</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Improve order of moves in NISS solutions</title>
<updated>2025-04-20T14:57:38Z</updated>
<author>
<name>Sebastiano Tronto</name>
<email>sebastiano@tronto.net</email>
</author>
<published>2025-04-20T14:47:52Z</published>
<link rel='alternate' type='text/html' href='https://git.tronto.net/nissy-core/commit/?id=f1575ed335166a0897f2cfd314a0f4bade6a10fc'/>
<id>urn:sha1:f1575ed335166a0897f2cfd314a0f4bade6a10fc</id>
<content type='text'>
Now the side that has more moves is written first.
For example: write (U L F) B instead of B (U L F)

This also fixes the test on appendsolutions, which used an older version
of the function's signature.
</content>
</entry>
<entry>
<title>Improved logging, especially for solve</title>
<updated>2025-04-19T10:28:52Z</updated>
<author>
<name>Sebastiano Tronto</name>
<email>sebastiano@tronto.net</email>
</author>
<published>2025-04-19T10:28:52Z</published>
<link rel='alternate' type='text/html' href='https://git.tronto.net/nissy-core/commit/?id=3485be851f4fff1c9c6fe621f0619d2b4103bc06'/>
<id>urn:sha1:3485be851f4fff1c9c6fe621f0619d2b4103bc06</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Small rework of optimal vs maxsols</title>
<updated>2025-04-17T12:36:27Z</updated>
<author>
<name>Sebastiano Tronto</name>
<email>sebastiano@tronto.net</email>
</author>
<published>2025-04-17T08:50:57Z</published>
<link rel='alternate' type='text/html' href='https://git.tronto.net/nissy-core/commit/?id=0ece4b72db22139db51e8f5f37c25f24c84f3e43'/>
<id>urn:sha1:0ece4b72db22139db51e8f5f37c25f24c84f3e43</id>
<content type='text'>
I wanted to make the "optimal" and "maxsolutions" options mutually
exclusive, but in the end I decided there is value in keeping both
(e.g. for specifying a limit to the number of solutions when asking
for "all" optimal").

Now optimal cannot be negative anymore, for the same reason of maxsolutions.

The interface user (shell, UI) will have to take care of handling this
in a way that makes sense for the user. Usually this means setting
the maximum number of solutions to UINT_MAX (or a similar very high
number) when the user wants "all optimal".
</content>
</entry>
</feed>
