<feed xmlns='http://www.w3.org/2005/Atom'>
<title>nissy-core/src/solvers/distribution.h, branch master</title>
<subtitle>The "engine" of nissy, including the H48 optimal solver.</subtitle>
<id>https://git.tronto.net/nissy-core/atom?h=master</id>
<link rel='self' href='https://git.tronto.net/nissy-core/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://git.tronto.net/nissy-core/'/>
<updated>2026-04-06T13:55:33Z</updated>
<entry>
<title>Make the project build with Microsoft's broken C compiler.</title>
<updated>2026-04-06T13:55:33Z</updated>
<author>
<name>Sebastiano Tronto</name>
<email>sebastiano@tronto.net</email>
</author>
<published>2026-04-06T13:55:33Z</published>
<link rel='alternate' type='text/html' href='https://git.tronto.net/nissy-core/commit/?id=fc41f7917531693680b5baf71ffe38c47333fe84'/>
<id>urn:sha1:fc41f7917531693680b5baf71ffe38c47333fe84</id>
<content type='text'>
MSVC is not fully C11-compliant, even when compiling with /std:c11.
Some changes were needed to make the codebase compatible. Notably, the
notation a[static N] and a[n] for function parameters of array type is
not supported, so that had to be hidden behind a macro.  Atomic types
are also an experimental feature, apparently, but at least they work
with the correct compiler flag.

One thing that MSVC does well, however, is warning on integer conversions
on /W4 level. I am not sure if Clang and GCC have something similar,
so I took this chance to fix some of these.
</content>
</entry>
<entry>
<title>Improve Windows build support.</title>
<updated>2026-03-01T17:09:44Z</updated>
<author>
<name>Sebastiano Tronto</name>
<email>sebastiano@tronto.net</email>
</author>
<published>2026-03-01T17:09:44Z</published>
<link rel='alternate' type='text/html' href='https://git.tronto.net/nissy-core/commit/?id=2c291aed4bb80f07e8557284d3399cf1e2a4ccb9'/>
<id>urn:sha1:2c291aed4bb80f07e8557284d3399cf1e2a4ccb9</id>
<content type='text'>
- Use multithreading (works with a sufficiently recent version of
  the Microsoft developer tools / C SDK).
- Detect CPU architecture and use AVX2 or NEON when appropriate.
- Automatically detect python installation path.
</content>
</entry>
<entry>
<title>Intertwined table seems to work</title>
<updated>2025-12-14T09:26:34Z</updated>
<author>
<name>Sebastiano Tronto</name>
<email>sebastiano@tronto.net</email>
</author>
<published>2025-12-13T18:16:32Z</published>
<link rel='alternate' type='text/html' href='https://git.tronto.net/nissy-core/commit/?id=b25989e47adfadabcf0dabfd58d615622887cee0'/>
<id>urn:sha1:b25989e47adfadabcf0dabfd58d615622887cee0</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Wrapped pthread use in custom API</title>
<updated>2025-08-11T09:48:40Z</updated>
<author>
<name>Sebastiano Tronto</name>
<email>sebastiano@tronto.net</email>
</author>
<published>2025-08-11T08:22:56Z</published>
<link rel='alternate' type='text/html' href='https://git.tronto.net/nissy-core/commit/?id=d25f23805c6d7128b508a359d47af136dd2fd0db'/>
<id>urn:sha1:d25f23805c6d7128b508a359d47af136dd2fd0db</id>
<content type='text'>
</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>Refactored checkdata</title>
<updated>2025-05-19T15:45:14Z</updated>
<author>
<name>Sebastiano Tronto</name>
<email>sebastiano@tronto.net</email>
</author>
<published>2025-05-19T15:45:14Z</published>
<link rel='alternate' type='text/html' href='https://git.tronto.net/nissy-core/commit/?id=62d87e063318cc4c842b1b2d8c184f48aeaf6659'/>
<id>urn:sha1:62d87e063318cc4c842b1b2d8c184f48aeaf6659</id>
<content type='text'>
Relevant changes include:
  - Changed the signature of nissy_checkdata().
  - Removed expected_distribution.h from tools; this data is now included
    in each solver's src/ code.
  - Removed distribution check for cocsep; may add back later.
</content>
</entry>
<entry>
<title>Refactor solver dispatch and checkdata</title>
<updated>2025-05-18T06:48:13Z</updated>
<author>
<name>Sebastiano Tronto</name>
<email>sebastiano@tronto.net</email>
</author>
<published>2025-05-18T06:48:13Z</published>
<link rel='alternate' type='text/html' href='https://git.tronto.net/nissy-core/commit/?id=8b94d135429a9f3253cc7f25a1453b412065c4a0'/>
<id>urn:sha1:8b94d135429a9f3253cc7f25a1453b412065c4a0</id>
<content type='text'>
</content>
</entry>
</feed>
