<feed xmlns='http://www.w3.org/2005/Atom'>
<title>assembler, branch v2.1.0</title>
<subtitle>Rust library for parsing assembly languages</subtitle>
<id>https://code.benbridle.com/assembler/atom?h=v2.1.0</id>
<link rel='self' href='https://code.benbridle.com/assembler/atom?h=v2.1.0'/>
<link rel='alternate' type='text/html' href='https://code.benbridle.com/assembler/'/>
<updated>2025-03-11T03:18:33Z</updated>
<entry>
<title>Update version to 2.1.0</title>
<updated>2025-03-11T03:18:33Z</updated>
<author>
<name>Ben Bridle</name>
<email>ben@derelict.engineering</email>
</author>
<published>2025-03-11T03:18:33Z</published>
<link rel='alternate' type='text/html' href='https://code.benbridle.com/assembler/commit/?id=c5f60b7ff45ced7c8b8519bc8fcf681486ad09fa'/>
<id>urn:sha1:c5f60b7ff45ced7c8b8519bc8fcf681486ad09fa</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Implement source chains</title>
<updated>2025-03-11T03:18:01Z</updated>
<author>
<name>Ben Bridle</name>
<email>ben@derelict.engineering</email>
</author>
<published>2025-03-11T03:18:01Z</published>
<link rel='alternate' type='text/html' href='https://code.benbridle.com/assembler/commit/?id=a9e9dd452e23fa2e816df926a56c1f743eb32488'/>
<id>urn:sha1:a9e9dd452e23fa2e816df926a56c1f743eb32488</id>
<content type='text'>
A SourceSpan can now contain a child SourceSpan, ad infinitum, in order
to represent a chain of locations. The report_source_issue function
has been changed to print the entire chain, instead of just one
SourceSpan.

The report_source_issue function has also been changed to correctly
print SourceSpans that extend across multiple source lines.
</content>
</entry>
<entry>
<title>Prevent duplicate parent and child entries for source units</title>
<updated>2025-03-11T03:13:23Z</updated>
<author>
<name>Ben Bridle</name>
<email>ben@derelict.engineering</email>
</author>
<published>2025-03-11T03:13:23Z</published>
<link rel='alternate' type='text/html' href='https://code.benbridle.com/assembler/commit/?id=bd7955cbc1c1746f37dcb0742603994fd2e04c90'/>
<id>urn:sha1:bd7955cbc1c1746f37dcb0742603994fd2e04c90</id>
<content type='text'>
The parent and child collections for hierarchical source units were
previously vecs, and would receive one entry for every symbol matched.
This was easily leading to many dozens of duplicate entries per unit,
which, while not impacting performance, seemed wasteful. The collection
types were changed to HashSets to prevent the collection of duplicate
entries.
</content>
</entry>
<entry>
<title>Make output of report_source_issue more concise</title>
<updated>2025-03-10T03:31:06Z</updated>
<author>
<name>Ben Bridle</name>
<email>ben@derelict.engineering</email>
</author>
<published>2025-03-10T03:31:06Z</published>
<link rel='alternate' type='text/html' href='https://code.benbridle.com/assembler/commit/?id=6fb6f2836232fe78dce507fa899629bbefb7b449'/>
<id>urn:sha1:6fb6f2836232fe78dce507fa899629bbefb7b449</id>
<content type='text'>
Instead of displaying two locations for the same error, only show the
in_merged source location if there is no in_source location.
</content>
</entry>
<entry>
<title>Implement Borrow and BorrowMut for Tracked</title>
<updated>2025-03-09T05:20:06Z</updated>
<author>
<name>Ben Bridle</name>
<email>ben@derelict.engineering</email>
</author>
<published>2025-03-09T05:20:06Z</published>
<link rel='alternate' type='text/html' href='https://code.benbridle.com/assembler/commit/?id=5e332adb606074da1976c8ce6e32b94ba222bc82'/>
<id>urn:sha1:5e332adb606074da1976c8ce6e32b94ba222bc82</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Make Tokeniser::eat_until even more general</title>
<updated>2025-03-08T03:48:33Z</updated>
<author>
<name>Ben Bridle</name>
<email>ben@derelict.engineering</email>
</author>
<published>2025-03-08T03:48:33Z</published>
<link rel='alternate' type='text/html' href='https://code.benbridle.com/assembler/commit/?id=53dffaf3fe18f70151b23418ff80ae8904fae779'/>
<id>urn:sha1:53dffaf3fe18f70151b23418ff80ae8904fae779</id>
<content type='text'>
The eat_until method of Tokeniser has been renamed to track_until, and
it no longer consumes characters by itself. The predicate closure is no
longer limited to checking one character at a time, it can look ahead
for multi-character sequences when used with the new eat_if method.
</content>
</entry>
<entry>
<title>Add Tokeniser::eat_if method</title>
<updated>2025-03-08T03:46:18Z</updated>
<author>
<name>Ben Bridle</name>
<email>ben@derelict.engineering</email>
</author>
<published>2025-03-08T03:46:18Z</published>
<link rel='alternate' type='text/html' href='https://code.benbridle.com/assembler/commit/?id=e1dea1faf3e29655c008bf139d2a9acf3229df53'/>
<id>urn:sha1:e1dea1faf3e29655c008bf139d2a9acf3229df53</id>
<content type='text'>
This method is used for consuming a multi-character sequence only if
that sequence matches a passed string.
</content>
</entry>
<entry>
<title>Implement Hash for Tracked</title>
<updated>2025-03-08T03:44:41Z</updated>
<author>
<name>Ben Bridle</name>
<email>ben@derelict.engineering</email>
</author>
<published>2025-03-08T03:44:41Z</published>
<link rel='alternate' type='text/html' href='https://code.benbridle.com/assembler/commit/?id=a319d78739b2efccd9f0688c6c0f070ed085f8a1'/>
<id>urn:sha1:a319d78739b2efccd9f0688c6c0f070ed085f8a1</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Ignore source units that have already been included</title>
<updated>2025-03-08T01:22:53Z</updated>
<author>
<name>Ben Bridle</name>
<email>ben@derelict.engineering</email>
</author>
<published>2025-03-08T00:52:45Z</published>
<link rel='alternate' type='text/html' href='https://code.benbridle.com/assembler/commit/?id=2daf600d4713f6feacef795fac923f5826925efb'/>
<id>urn:sha1:2daf600d4713f6feacef795fac923f5826925efb</id>
<content type='text'>
There is the possibility that the same source file could be discovered
twice, if the same folder is included multiple times as a library folder
or if symbolic links are used that link to already-included files. These
duplicate source files are now ignored, to prevent erroneous 'duplicate
definition' errors from being generated.
</content>
</entry>
<entry>
<title>Show an error when a source file fails to parse</title>
<updated>2025-03-08T01:22:53Z</updated>
<author>
<name>Ben Bridle</name>
<email>ben@derelict.engineering</email>
</author>
<published>2025-03-08T01:22:38Z</published>
<link rel='alternate' type='text/html' href='https://code.benbridle.com/assembler/commit/?id=869d9b4b9c6f5d095084c851af33d8590bd3edee'/>
<id>urn:sha1:869d9b4b9c6f5d095084c851af33d8590bd3edee</id>
<content type='text'>
Previously, if a source file failed to parse, no symbols would be
returned and symbol resolution would continue as normal. This would
obscure the source of any errors, as well as the fact that any error
had occurred at all.

We don't want all errors in all source files to be printed at symbol
resolution time, because this could bury any errors in the actual
program being assembled with potentially irrelevant library errors,
and errors in the program being assembled will be printed all over
again once a merged source file has been produced.

Instead, we allow the parser function to return a None value if the
file could not be parsed, and a single line is printed as a warning
for every library file that failed to parse.
</content>
</entry>
</feed>
