Releases: AndyFerns/Determa
Determa v0.3 Spruce
Determa v0.3 - Spruce
-
Major Language Upgrade: Functions, Calls, Locals & Recursion
-
This release represents one of the most significant milestones in the evolution of Determa — transforming the language from a simple expression evaluator into a fully structured, function-oriented programming language.
🌟 What’s New in v0.3
- First-Class Functions
Determa now supports user-defined functions with:
-
Named functions
-
Parameters & arguments
-
Multiple statements in a function body
-
Return values
-
Type-annotated return types
Example:
func add(a, b): int {
return a + b;
}
print add(4, 5); // 9Function Calls + Call Stack Frames
A full call stack architecture has been implemented:
-
Each function call uses its own CallFrame
-
Arguments & locals are isolated per frame
-
Correct handling of nested and chained calls
Example:
func twice(x) { return x * 2; }
func quad(x) { return twice(twice(x)); }
print quad(5); // 20Recursion Support
- Determa now correctly handles recursive functions, including deep recursion.
Example:
func fib(n): int {
if n == 0 return 0;
elif n == 1 return 1;
return fib(n-1) + fib(n-2);
}
print fib(10); // 55Local Variables + Lexical Scoping
Full support for:
-
Local variable declarations inside blocks
-
Proper lifetime & cleanup
-
Shadowing of globals by inner-scope locals
Example:
var x = "global";
{
var x = "local";
print x; // local
}
print x; // globalTypechecker Expansion
The typechecker now validates:
-
Function parameter counts
-
Type consistency in return statements
-
Undefined variables inside functions
-
Mismatched or missing returns
-
This dramatically reduces runtime errors.
VM Improvements
The Determa VM now includes:
-
Correct function call handling
-
Stack frame isolation
-
Stable return value semantics
-
Clean REPL execution resets
-
Better error reports with stack traces
-
Stability improvements eliminate silent crashes & ensure deterministic execution.
New Automated Test Suite
-
A brand-new testing architecture was introduced:
-
VM tests rewritten to support function-based execution
-
Locals & shadowing testcases
-
Recursion tests
-
Function argument tests
-
End-to-end parser → typechecker → compiler → VM pipeline tests
Determa now ships with over 200 automated assertions across multiple subsystems.
Tooling & Developer Experience
-
Improved REPL consistency
-
Cleaner debug/log output
-
Faster compilation pipeline
-
New test_functions module for validating advanced language features
Installation
Download the archive for your platform below — no compiler or external dependencies required:
Windows: determa-windows-x64.zip
Linux: determa-linux-x64.tar.gz
macOS: determa-macos-x64.tar.gzJust extract and run:
./determa file.detFull Changelog
Compare all changes from v0.2.x:
v0.2.1-Cedar → v0.3
Contribute
Determa is a passion project of mine and hence its fully open source - contributions are welcome!
Try the language, report issues, submit ideas, and help shape the next release.
👉 Pull Requests: Always welcome!
Thank you for reading (👻)!
Determa v0.2.1-Cedar Release
Determa v0.2.1 Cedar
Added CLI and TUI Changes
Changelog
- Added new colours for CLI operations
- Added new repl helper options + colours for the repl
- TUI arg changes (-h, -d, and -v)
Releases:
Download the archive for your operating system below. No external dependencies (like GCC) are required to run the language.
-
Windows: determa-windows-x64.zip
-
Linux: determa-linux-x64.tar.gz
-
macOS: determa-macos-x64.tar.gz
Full Changelog: v0.2-Cedar...v0.2.1-Cedar
Determa v0.2-Cedar
Determa v0.2 'Cedar' Release
This is a major milestone release for the Determa programming language. v0.2 'Cedar' introduces a fully functional, Turing-complete execution environment, upgrading the project from a parser prototype to a usable programming language.
✨ Key Features
-
Virtual Machine: Custom high-performance stack-based VM with a specific Bytecode ISA.
-
Garbage Collection: Implemented a Mark-and-Sweep Garbage Collector for automatic memory management and leak-free string manipulation.
-
Type Safety: Semantic analysis pass ensures type consistency and variable scope validity before execution.
-
Control Flow: Full support for logic and branching:
-
if, elif, else blocks.
-
while loops.
-
Boolean logic (true, false, !, ==, <, >).
-
Strings: Dynamic string allocation and concatenation support.
-
Assignment: Variable reassignment and compound operators (+=, -=, *=, /=, %=).
🛠️ Tooling
-
Interactive REPL: A persistent Read-Eval-Print Loop for live coding.
-
File Execution: Run .det scripts directly from the command line.
-
Cross-Platform: Automated builds for Windows, Linux, and macOS.
📦 Installation
-
Download the archive for your operating system below. No external dependencies (like GCC) are required to run the language.
-
Windows: determa-windows-x64.zip
-
Linux: determa-linux-x64.tar.gz
-
macOS: determa-macos-x64.tar.gz