<feed xmlns='http://www.w3.org/2005/Atom'>
<title>tools.nes/lib/xixanta/fuzz, branch main</title>
<subtitle>Tools for NES/Famicom development.
</subtitle>
<id>https://git.mssola.com/nes/tools.nes/atom?h=main</id>
<link rel='self' href='https://git.mssola.com/nes/tools.nes/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://git.mssola.com/nes/tools.nes/'/>
<updated>2026-07-08T19:09:42Z</updated>
<entry>
<title>Upgrade to the 2024 edition of Rust</title>
<updated>2026-07-08T19:09:42Z</updated>
<author>
<name>Miquel Sabaté Solà</name>
<email>mssola@mssola.com</email>
</author>
<published>2026-07-08T18:45:05Z</published>
<link rel='alternate' type='text/html' href='https://git.mssola.com/nes/tools.nes/commit/?id=6333dc7ee02332cd06e20b56cefd3210368e54f8'/>
<id>urn:sha1:6333dc7ee02332cd06e20b56cefd3210368e54f8</id>
<content type='text'>
And also adjust the code so the clippy from the 2024 edition is fine
with it.

Signed-off-by: Miquel Sabaté Solà &lt;mssola@mssola.com&gt;
</content>
</entry>
<entry>
<title>tests: fix the assembler fuzzer</title>
<updated>2026-04-30T11:18:13Z</updated>
<author>
<name>Miquel Sabaté Solà</name>
<email>mssola@mssola.com</email>
</author>
<published>2026-04-30T11:18:13Z</published>
<link rel='alternate' type='text/html' href='https://git.mssola.com/nes/tools.nes/commit/?id=355120109b18844a29cdc25cf04380575c2589c4'/>
<id>urn:sha1:355120109b18844a29cdc25cf04380575c2589c4</id>
<content type='text'>
We needed to pass the new 'allow_unused' parameter.

Signed-off-by: Miquel Sabaté Solà &lt;mssola@mssola.com&gt;
</content>
</entry>
<entry>
<title>assembler: Add support for asan:reserve,ignore</title>
<updated>2025-09-02T14:40:38Z</updated>
<author>
<name>Miquel Sabaté Solà</name>
<email>mikisabate@gmail.com</email>
</author>
<published>2025-09-02T14:40:38Z</published>
<link rel='alternate' type='text/html' href='https://git.mssola.com/nes/tools.nes/commit/?id=8e7993a63e32981757c4d65fe6519439dde97d8e'/>
<id>urn:sha1:8e7993a63e32981757c4d65fe6519439dde97d8e</id>
<content type='text'>
This is the initial support for both directives for the address
sanitizer. Note that asan:weak has been moved into asan:ignore, which is
not exactly the same but for now it should suffice.

Signed-off-by: Miquel Sabaté Solà &lt;mikisabate@gmail.com&gt;
</content>
</entry>
<entry>
<title>Drop lazy_static dependency</title>
<updated>2025-01-22T21:38:33Z</updated>
<author>
<name>Miquel Sabaté Solà</name>
<email>mikisabate@gmail.com</email>
</author>
<published>2025-01-22T21:38:33Z</published>
<link rel='alternate' type='text/html' href='https://git.mssola.com/nes/tools.nes/commit/?id=9660a01f4bcc514b70fe83fb64dc91659cf2bfa2'/>
<id>urn:sha1:9660a01f4bcc514b70fe83fb64dc91659cf2bfa2</id>
<content type='text'>
Apparently the standard library had LazyLock which is enough for what I
wanted to achieve with lazy_static.

Signed-off-by: Miquel Sabaté Solà &lt;mikisabate@gmail.com&gt;
</content>
</entry>
<entry>
<title>nasm: Implement the -D flag</title>
<updated>2025-01-22T20:56:45Z</updated>
<author>
<name>Miquel Sabaté Solà</name>
<email>mikisabate@gmail.com</email>
</author>
<published>2025-01-22T20:46:03Z</published>
<link rel='alternate' type='text/html' href='https://git.mssola.com/nes/tools.nes/commit/?id=4a7e8db884fdaa80f6a026ec4c0c8409ea975d81'/>
<id>urn:sha1:4a7e8db884fdaa80f6a026ec4c0c8409ea975d81</id>
<content type='text'>
This allows users to define variables directly from the command line,
which is useful for testing purposes.

Signed-off-by: Miquel Sabaté Solà &lt;mikisabate@gmail.com&gt;
</content>
</entry>
<entry>
<title>Remove dependency on TOML</title>
<updated>2025-01-22T15:05:24Z</updated>
<author>
<name>Miquel Sabaté Solà</name>
<email>mikisabate@gmail.com</email>
</author>
<published>2025-01-22T15:05:24Z</published>
<link rel='alternate' type='text/html' href='https://git.mssola.com/nes/tools.nes/commit/?id=3f643b961cc54aa5b198c7edfc354ffec0b28a67'/>
<id>urn:sha1:3f643b961cc54aa5b198c7edfc354ffec0b28a67</id>
<content type='text'>
When I introduced this dependency it looked like a good idea to have a
better-looking replacement to cl65's cfg format. That being said, the
end result wasn't *much* prettier either, and the end result could be
even bigger and equally confusing.

Since 5f48de69f46d ("Add support for cfg files") there is quite the
framework in order to support regular cl65's cfg files. Hence, this
commit takes another approach: let's tune this format to a more
compressed and simplified one. This is now the current "nasm cfg"
format, and it allowed us to re-use a lot of code while also being more
to the point for NES/Famicom development than the original cfg format.

With this new format, we can now remove the dependency on TOML and all
of the inner dependencies which were quite a lot.

Signed-off-by: Miquel Sabaté Solà &lt;mikisabate@gmail.com&gt;
</content>
</entry>
<entry>
<title>Remove dependency to the rand crate</title>
<updated>2025-01-22T14:55:25Z</updated>
<author>
<name>Miquel Sabaté Solà</name>
<email>mikisabate@gmail.com</email>
</author>
<published>2025-01-22T14:55:25Z</published>
<link rel='alternate' type='text/html' href='https://git.mssola.com/nes/tools.nes/commit/?id=b4a779f040f18257fde1c357626461ab187490db'/>
<id>urn:sha1:b4a779f040f18257fde1c357626461ab187490db</id>
<content type='text'>
This dependency was easily avoidable and it brought with it a lot of
inner dependencies of its own, most notably 'zerocopy-derive', which
forbid us to compile the affected programs purely statically.

Signed-off-by: Miquel Sabaté Solà &lt;mikisabate@gmail.com&gt;
</content>
</entry>
<entry>
<title>Implement the .include statement</title>
<updated>2025-01-09T15:01:39Z</updated>
<author>
<name>Miquel Sabaté Solà</name>
<email>mikisabate@gmail.com</email>
</author>
<published>2025-01-08T11:34:47Z</published>
<link rel='alternate' type='text/html' href='https://git.mssola.com/nes/tools.nes/commit/?id=8b1c270910fce13077864bf39d6e88971a6eb062'/>
<id>urn:sha1:8b1c270910fce13077864bf39d6e88971a6eb062</id>
<content type='text'>
This needed some heavy lifting when it comes to how files were located.
This means that statements like .include/.incbin now take into
consideration a new list made out of SourceInfo, which holds enough
information to translate from which file a node comes from. This has
also been added into errors, so they are more informative on what went
wrong.

In order to tests this, besides all the regular unit tests, a new e2e
test has been added.

Signed-off-by: Miquel Sabaté Solà &lt;mikisabate@gmail.com&gt;
</content>
</entry>
<entry>
<title>Add the .repeat control statement</title>
<updated>2025-01-07T15:38:54Z</updated>
<author>
<name>Miquel Sabaté Solà</name>
<email>mikisabate@gmail.com</email>
</author>
<published>2024-12-24T15:48:16Z</published>
<link rel='alternate' type='text/html' href='https://git.mssola.com/nes/tools.nes/commit/?id=9b5e5aa6d36a550bed84f85df8e1e46fcf9765e1'/>
<id>urn:sha1:9b5e5aa6d36a550bed84f85df8e1e46fcf9765e1</id>
<content type='text'>
This is a control statement which acts similarly as .proc/.macro/.scope,
in which an inner block is allocated for it. Hence, all the previous
work from 1f8a6becc7cd ("parser: Implement block bodies") and
ec8b709fa24c ("Implement block bodies inside of the assembler") make
this one out possible, as .repeat statements don't have an identifier
that can be used for hashing.

From the parser perspective this introduction raises two new things.
First of all this control statement also needed a differentiation
between the amount of required arguments, and the allowed ones, since
there is a second optional argument to it. And second, even the
identifier is not given, we have to generate one so to add a context for
it. This was at first not needed, but introducing .repeat-only variables
means that we have to have inner contexts which need to be named somehow
so we can retrieve the context later when picking up the value for them
again.

This last thing brought the need for a new dependency: rand. This is
used to generate a random string to identify the .repeat block.

Signed-off-by: Miquel Sabaté Solà &lt;mikisabate@gmail.com&gt;
</content>
</entry>
<entry>
<title>Store a reference for macros instead of an index</title>
<updated>2025-01-06T23:50:30Z</updated>
<author>
<name>Miquel Sabaté Solà</name>
<email>mikisabate@gmail.com</email>
</author>
<published>2025-01-05T15:34:52Z</published>
<link rel='alternate' type='text/html' href='https://git.mssola.com/nes/tools.nes/commit/?id=f3c6b02fb2f2957b9b896c34d05abe75263c3f60'/>
<id>urn:sha1:f3c6b02fb2f2957b9b896c34d05abe75263c3f60</id>
<content type='text'>
It is not safe to store a node index for macros since the list of nodes
that is passed down during assembly might change depending on whether an
inner block is being evaluated. Hence, the previous implementation would
break on a simple macro call inside of a .proc.

This also raised some concerns on the design around the API, since the
lifetime of references for internal assembler data needed an explicit
lifetime now, and as a side-effect functions like `assemble` had to be
moved out of the inner impl Assembler. This is in retrospect also a
better design choice.

Fixes: ec8b709fa24c ("Implement block bodies inside of the assembler").

Signed-off-by: Miquel Sabaté Solà &lt;mikisabate@gmail.com&gt;
</content>
</entry>
</feed>
