v1 Milestone - Complete single file language#8
Merged
Conversation
…ror, bumped version
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Reaches the v1.0 milestone from
docs/roadmap.md: every must-have andshould-have feature for a "complete single-file language" is implemented and
tested. Only explicitly-optional nice-to-haves remain (short-circuit
&&/||outside boolean context,
&=/|=/^=/<<=/>>=compound assignment).Language features
break/continueforwhileandforloops, with analyzer checksrejecting either outside a loop.
u8 *p = "...";now works insidefunction bodies, not just at global scope.
__mul16,__div16,__sdiv16).__heap_start/__memory_topimplicit compiler globals for bumpallocators and RAM-top queries.
c02-objdumpresolves realfunction names instead of auto-generated labels;
--strip-debugto omit it.Correctness fixes
ERR_SHADOWED_DECLARATION).Root cause: codegen identifies variables by bare name with no scope
qualifier, so a shadowed inner declaration silently aliased its outer
namesake's storage — this caused
breakto fire on the wrong loopiteration. Shadowing an enclosing scope is now rejected at analysis time;
reuse across non-overlapping sibling scopes is unaffected.
__sdiv8),i8division/modulo was routingthrough the unsigned helper and producing wrong results for negative
operands.
derived type/signedness from the left operand only, causing dropped high
bytes (
u8 + u16) and trichotomy violations in comparisons (i8 < u8vsu8 < i8disagreeing). Both operands now normalize to a common type beforethe op.
Safety / robustness
program exceeding 32 KB fails with a diagnostic instead of silently
corrupting the output.
cleanly instead of printing a warning and continuing.