Releases: ReeceGilbert/Nearoh-Coding-Language
Nearoh v0.3.0 - Imports, Diagnostics, and Regression Testing
GitHub shows v0.2.0 focused on dictionaries/maps, so v0.3.0 should focus on the infrastructure jump we just made. ([GitHub][1])
Use this as the release body:
Nearoh v0.3.0 - Imports, Diagnostics, and Regression Testing
Nearoh v0.3.0 is a major stabilization release focused on turning multi-file execution, imports, diagnostics, and testing into real language infrastructure.
This release moves Nearoh beyond simple import execution and adds a tracked import system with duplicate-import skipping, circular import detection, path normalization, file-relative imports, source-aware runtime diagnostics, and a regression test runner.
Major Changes
Tracked Import System
Nearoh now tracks imported files at runtime.
Implemented behavior:
- Imported files are tracked by normalized path
- Duplicate imports are skipped
- Circular imports are detected cleanly
- Imported source, tokens, diagnostics, and AST data are owned by the runtime while needed
- Imports now behave more like real language infrastructure instead of simple file execution
Example:
import "examples/import_once_helper.nr"
import "./examples/import_once_helper.nr"
import "examples\\import_once_helper.nr"
print(get_helper_value())
Expected output:
helper loaded
123
The helper file only executes once.
File-Relative Imports
Imports can now resolve relative to the file doing the importing.
Example:
examples/modules/main.nr
examples/modules/utils.nr
# examples/modules/main.nr
import "utils.nr"
print(module_value())
Expected output:
module utils loaded
456
This makes Nearoh modules more portable and prepares the language for larger multi-file projects.
Circular Import Detection
Circular imports now fail cleanly instead of recursing or behaving unpredictably.
Example:
# import_cycle_a.nr
import "import_cycle_b.nr"
# import_cycle_b.nr
import "import_cycle_a.nr"
Expected error:
Runtime error at examples/import_cycle_a.nr line 1 col 1: Circular import detected.
Source-Aware Runtime Diagnostics
Runtime errors now know which file they came from.
This is especially important for imported files.
Example:
# examples/modules/bad_main.nr
import "bad_utils.nr"
# examples/modules/bad_utils.nr
print(missing_value)
Expected error:
Runtime error at examples/modules/bad_utils.nr line 1 col 7: Undefined variable.
This is a major step toward a future Nearoh IDE/editor because errors can now point to the correct file, line, and column.
Better Import Read Errors
Missing import errors now show the attempted path.
Example:
import "missing_utils.nr"
Expected error:
Runtime error at examples/modules/missing_main.nr line 1 col 1: Could not read imported file: examples/modules/missing_utils.nr
Regression Test Runner
Nearoh now includes a PowerShell regression test runner:
.\run_tests.ps1The test runner supports:
- Normal pass tests
- Expected-failure tests
- Circular import failure checks
- Imported-file diagnostic checks
- Missing import path error checks
This gives the project a stronger safety net before larger features are added.
New / Updated Example Coverage
This release adds and validates examples for:
- Duplicate import skipping
- Path normalization
- File-relative imports
- Nested imports
- Circular import detection
- Imported-file runtime errors
- Missing import errors
Why This Release Matters
Nearoh v0.3.0 is not just a feature release. It is a foundation release.
Imports, diagnostics, and tests are the systems needed before building larger language features, standard libraries, and the future Nearoh IDE.
This release makes Nearoh more stable, more debuggable, and more ready for real multi-file projects.
Current Status
Nearoh currently includes:
- Lexer
- Parser
- AST system
- Runtime evaluator
- Variables
- Functions
- Classes and objects
- Methods and constructors
- Lists
- Dictionaries / maps
- Indexing and index assignment
- Control flow
- Built-in functions
- File I/O builtins
- Multi-file imports
- Import tracking
- Runtime diagnostics with file/line/column
- Regression testing
Still Future Work
Planned future improvements include:
- Namespaced modules
- Cleaner module ownership and exports
- More runtime safety
- Expanded standard library utilities
- Better parser/runtime diagnostics
- Dedicated Nearoh editor / IDE
- Native bridge work for graphics, input, timing, files, and lower-level system
Nearoh v0.2.0 - Dictionaries and Core Data Structure Expansion
Nearoh now supports dictionaries / maps as a first-class runtime data structure.
This release adds dictionary literals, dictionary indexing, dictionary index assignment, and len() support for dictionaries.
Example:
person = {
"name": "Reece",
"age": 21
}
print(person["name"])
print(person["age"])
person["age"] = 22
print(person["age"])
print(len(person))
Expected output:
Reece
21
22
2Nearoh v0.1.0 - Objects, Lists, and Iteration
First milestone release.
Implemented:
- Classes
- init
- Object fields
- Lists
- for-in loops
- Functions
- Runtime execution