This document tracks planned improvements and features for the yooxn project.
- Complete Type Hinting: Audit
src/yooxn/yooxnas.pyand ensure 100% type hint coverage.- Currently, some internal methods and IR nodes have partial hinting.
- Linting & Formatting: Integrate
ruffinto the project andMakefileto enforce consistent style. - Docstring Audit: Standardize docstrings across all classes and methods (preferring Google style).
- Parser Pass 1 Unit Tests: Create
tests/test_parser_pass1.py.- Test label definition and scoping without requiring a full Pass 2 run.
- Test symbol table population.
- Parser Pass 2 Unit Tests: Create
tests/test_parser_pass2.py.- Test resolution of absolute vs. relative addresses using pre-constructed IR streams and symbol tables.
- Macro Unit Tests: Dedicated tests for macro expansion, including:
- Nested macros.
- Recursion detection.
- Redefinition errors.
- Error Handling Tests: Verify that
SyntaxErrorandParsingErrorare raised with correct line numbers and messages for invalid Tal code.
- Column Tracking: Update the
Lexerto track column numbers in addition to line numbers. This will allow for more precise "caret" style error reporting (e.g.,file.tal:10:15). - Symbol File Export: Implement an option to write a
.symfile (label mapping) alongside the ROM, matching the behavior of the officialuxnasm. - Redundant Code Removal: Clean up the
Parserclass to remove unused attributes or methods inherited from earlier drafts. - Performance Profiling: Audit the multi-pass process for bottlenecks, especially during large file assembly (e.g.,
mandelbrot.tal). - Add Include Flag: Add a command line flag to pass an include path where files will be looked for when they're included (in addition to the current behavior of looking relative to the tal file being built).
- CI Integration: Add a GitHub Action to run
make teston every push and pull request. - PyPI Readiness: Prepare the package for potential distribution (ensure
descriptionandkeywordsinpyproject.tomlare complete). - Nix Flake: Add a
flake.nixthat can build and run theyooxnasassembler.- Provide
nix build(package output) andnix run(CLI entrypoint) support. - Include a
devShellwith the project’s Python toolchain somake test/pytestcan be run insidenix develop.
- Provide