Changelog
All notable changes to VDX, by version.
v0.0.12
2026-06-15- —Added dictionary/map type:
let user = {"name": "Alice", "age": 30}; - —Dictionary access:
user["name"]returns the value for a key - —Dictionary assignment:
user["city"] = "Paris";adds or updates keys - —Dictionary length:
len(user)returns number of key-value pairs - —Added
fsmodule with file I/O:fs.readFile(path)andfs.writeFile(path, content) - —Added array type annotations:
let nums: int[] = [1, 2, 3]; - —Added
dicttype annotation:let user: dict = {"name": "Bob"};
v0.0.11
2026-06-15- —Added
importstatement: import other VDX files withimport "filename.vdx"; - —Imported files provide access to their classes and functions
- —Circular import protection prevents infinite loops
- —Added
type(value)built-in: returns type name as string ("int", "float", "string", "bool", "array", "object", "void") - —Added
input()built-in: read user input from stdin - —Added
input(prompt)variant: print prompt then read input - —Added
pop(arr)built-in: remove and return last element from array - —Extended
len(obj): now works with objects, returning number of fields - —
len()now supports arrays, strings, and objects
v0.0.10
2026-06-08v0.0.9
2026-06-08- —Added break statement for exiting loops early
- —Added continue statement for skipping to next loop iteration
- —Added const keyword for declaring immutable constants
- —Constants support type annotations:
const PI: float = 3.14; - —Added math module with 12+ functions:
sqrt,pow,abs,sin,cos,tan,floor,ceil,round,min,max,random,pi - —Interpreter tracks const variables to prevent reassignment
- —Loop control statements work with while, for, and
for-inloops - —Break/continue exceptions properly propagate through function calls
v0.0.8
2026-03-23- —Added float type: float literals with decimal point (e.g.,
3.14,5.0) - —Added true / false boolean literals
- —Added optional type annotations on let:
let x: int = 5;,let pi: float = 3.14; - —Runtime type checking: annotated variables are validated at assignment
- —Mixed int/float arithmetic: operations auto-promote to float when either operand is float
- —Added new keyword for object instantiation:
let obj = new ClassName(); - —Dot field access:
obj.fieldreads a field from an object - —Dot field assignment:
obj.field = value;sets a field on an object - —Dot method calls:
obj.method(args)calls a method with access to object fields - —Objects print as
- —Added C-style for loop:
for (let i = 0; i < n; i = i + 1) { ... } - —Added
for-inloop over arrays:for (item in arr) { ... } - —@unsafe now also works with for loops
- —Float truthiness:
0.0is falsy, non-zero is truthy - —Object truthiness: objects are truthy
v0.0.7
2026-03-22- —Added arrays / lists:
let arr = [1, 2, 3]; - —Array index access:
arr[0] - —Array index assignment:
arr[0] = 5; - —String index access:
str[0]returns single character - —Built-in
len(): returns length of arrays and strings - —Built-in
push(arr, value): appends a value to an array - —Array printing:
print(arr)outputs[1, 2, 3] - —Array truthiness: non-empty arrays are truthy, empty arrays are falsy
- —Improved error reporting: errors now display file name, line number, and surrounding source lines
v0.0.6
2026-03-22- —Added loop safety protection: while loops that iterate faster than 2 seconds are blocked
- —Added @unsafe annotation: place before while to bypass loop speed protection
- —Added SVG icon (
assets/icon.svg) - —Added Windows MSI installer support via CMake CPack + WiX
- —Installer adds
vdxto system PATH - —Added
.vdxfile association in installer - —Added LICENSE.txt (MIT)
- —Website v0.1.0: main page, download page, documentation pages
v0.0.5
2026-03-22- —Added while loop:
while (condition) { body } - —Added block scoping: variables declared inside
{ }blocks are local - —Added
wait(ms)statement to pause execution - —Added variable reassignment:
name = expr;
v0.0.4
2026-03-22v0.0.3
2026-03-22- —Added fn keyword for function declarations with parameters
- —Added return statement for function return values
- —Function calls as expressions
- —Operators:
+,-,*,/,==,!=,<,>,<=,>= - —String concatenation with
+ - —Operator precedence and parenthesized expressions
- —Division by zero runtime error
- —Two-pass class execution (register functions first, then run statements)
v0.0.2
2026-03-22- —Added let keyword for variable declarations
- —Variables support string and integer values
- —Variables can be used in
print()arguments - —Added expression system (string literals, integer literals, identifiers)
v0.0.1
2026-03-22- —Initial release
- —Lexer with support for strings, integers, identifiers, keywords, symbols
- —Parser for
classdeclarations andprint()statements - —Tree-walking interpreter
- —
classkeyword: declare named classes with a body - —
print(): output string literals to stdout - —Line comments (
//)