# Changelog All notable changes to the Nand2Tetris Zed Extension will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [2.0.0] - 2025-01-26 ### Added - **Complete Hack Assembly Language Support** (.asm files) - Full tree-sitter grammar with syntax highlighting - Support for A-instructions (`@value`, `@symbol`) - Support for C-instructions (`dest=comp;jump`) - Label declarations (`(LABEL)`) - All predefined symbols (`R0-R15`, `SP`, `LCL`, `ARG`, `THIS`, `THAT`, `SCREEN`, `KBD`) - User-defined symbols and variables - Comment highlighting and toggling - Code outline showing labels and sections - **VM Language Support** (.vm files) - Complete tree-sitter grammar for VM commands - Stack arithmetic operations (`add`, `sub`, `neg`, `eq`, `gt`, `lt`, `and`, `or`, `not`) - Memory access commands (`push`, `pop`) with all memory segments - Program flow commands (`label`, `goto`, `if-goto`) - Function commands (`function`, `call`, `return`) - Memory segment highlighting (`argument`, `local`, `static`, `constant`, `this`, `that`, `pointer`, `temp`) - Function and label outline navigation - **Test Script Language Support** (.tst files) - Tree-sitter grammar for nand2tetris test scripts - Test commands (`load`, `output-file`, `compare-to`, `set`, `eval`, `output`) - Simulation control (`tick`, `tock`, `ticktock`) - Control flow structures (`repeat`, `while`) - Variable references (`RAM[n]`, register names, pin names) - Binary value highlighting (`%B1010101`) - Format specification highlighting - Bracket matching for control blocks - **Compare/Output File Support** (.cmp, .out files) - Tree-sitter grammar for tabular test result files - Header row highlighting with column names - Binary and decimal value highlighting - Register and pin reference recognition - Table structure visualization - **Custom Tree-sitter Grammars** - Built from scratch for Assembly, VM, Test Script, and Compare/Output languages - Full Rust bindings for all custom grammars - Comprehensive test suites for each grammar - Complete Node.js package configurations - **Enhanced Documentation** - Comprehensive README with examples for all languages - Development guide for contributors - Troubleshooting section with common issues - Grammar development guidelines ### Enhanced - **Extended Language Coverage** - Now supports all major nand2tetris file types - Complete course workflow coverage from hardware to software - Consistent syntax highlighting across all languages - **Improved Editor Integration** - Code outline support for all languages - Bracket matching where applicable - Smart indentation rules - Comment toggling support (`Cmd+/` or `Ctrl+/`) - **Better Error Handling** - Robust grammar parsing with error recovery - Clear error messages for common issues - Comprehensive troubleshooting documentation ### Technical - **Grammar Architecture** - Four new custom Tree-sitter grammars - Proper semantic token classification - Efficient parsing with minimal conflicts - Full compatibility with Zed's Tree-sitter integration - **Build System** - Complete Rust build configuration for all grammars - Node.js bindings for development tools - Automated testing and validation - Cross-platform compatibility ## [1.1.0] - Previous Release ### Added - HDL (Hardware Description Language) support - Jack programming language support - Basic syntax highlighting and bracket matching - Code outline for HDL chips and Jack classes ### Technical - Integration with external tree-sitter grammars - Basic Zed extension configuration ## [1.0.0] - Initial Release ### Added - Initial extension structure - Basic HDL support - Extension manifest and configuration --- ## Development Notes ### Version 2.0.0 Represents a Major Milestone This release transforms the extension from basic HDL/Jack support to comprehensive coverage of the entire nand2tetris ecosystem. The addition of four custom Tree-sitter grammars makes this the most complete nand2tetris editor integration available. ### Custom Grammar Development The custom grammars were developed specifically for this extension to ensure: - Accurate parsing of nand2tetris language specifications - Optimal performance in the Zed editor - Comprehensive syntax highlighting - Proper semantic token classification - Future extensibility and maintenance ### Breaking Changes - Extension ID and configuration may have changed - New file type associations require extension reinstallation - Grammar compilation requires Rust toolchain ### Compatibility - Requires Zed editor with Tree-sitter support - Requires Rust installed via rustup for grammar compilation - Compatible with all nand2tetris course materials - Supports both individual files and complete project structures ### Performance - All grammars optimized for fast parsing - Minimal memory footprint - Efficient syntax highlighting queries - Responsive editor integration ## Future Roadmap ### Potential Future Enhancements - Language server integration for advanced IDE features - Code formatting support - Integration with nand2tetris simulation tools - Snippet support for common patterns - Debugging integration - Project template support ### Community Contributions We welcome contributions for: - Grammar improvements and bug fixes - Additional language features - Documentation enhancements - Test case additions - Performance optimizations --- For detailed technical information, see [DEVELOPMENT.md](DEVELOPMENT.md). For usage instructions, see [README.md](README.md).