A massive quality release. The language gains async/await, a real REPL, and dramatically better error messages with source context. Strings now support full expression interpolation. Simply Code is completely redesigned with a modern minimal aesthetic and ships with command palette, go-to-definition, hover docs, and find-in-files. The installer is fully redesigned too.
Language: async / await
- New
await keyword resolves Promise-returning npm calls synchronously: await myPkg.fetchData(url)
- Implementation uses a subprocess wrapper that
awaits internally and returns the resolved value as JSON
- Synchronous npm calls work exactly as before with no
await
Language: full expression interpolation
- Strings can now embed full expressions, not just variable names
"Hello, {user.name}! Age in 5 years: {user.age + 5}"
- Method calls work too:
"Items: {items.join(\", \")}"
- Escape with
{{ and }}
Language: REPL
- Run
simply with no arguments to drop into an interactive prompt
- Multi-line input — incomplete blocks (open brace, etc.) keep accumulating input until closed
:help, :clear, :exit meta-commands
- Same REPL works on Windows, macOS, and Linux
Language: dramatically better errors
- Errors now show the source line with a red caret under the exact column
- Undefined variable errors include a "Did you mean...?" suggestion using Levenshtein distance
- ANSI color output makes errors stand out in any terminal
- Consistent error format across all error types — parse errors, runtime errors, package errors
Simply Code IDE: modern minimal redesign
- Completely new dark theme inspired by Linear / Vercel / Raycast — deep near-black backgrounds, refined accents, softer syntax colors
- New light theme that matches the visual quality of premium tools
- Better typography — uses Inter if installed, falls back to Segoe UI Variable, then Segoe UI
- Monospace font picks JetBrains Mono / Cascadia Code / Fira Code / Consolas in that order
- More generous spacing throughout, refined hover states, subtle dividers
Simply Code IDE: command palette
Ctrl+Shift+P opens a Raycast-style centered modal
- Fuzzy-search across every action — file ops, run, edit, navigation, theme, settings, help
- Arrow keys + Enter to run a command; Escape to dismiss
- Categories and shortcuts shown for every command
Simply Code IDE: go-to-definition + hover info
- F12 or Ctrl+click jumps to the
define or fn of the symbol under the cursor
- Searches the current file first, then every
.simply file in the open folder
- Hovering over any built-in (
fetch, readFile, json, etc.) shows its signature and a short description
- Same hover system covers keywords (
define, fn, for, try, etc.)
Simply Code IDE: find in files
Ctrl+Shift+F opens a search panel scoped to the open folder
- Recursive search across all
.simply files
- Results show file path, line number, and matched text
- Double-click any result to open that file
Installer: modern minimal redesign
- Full visual refresh matching the new Simply Code aesthetic — same dark palette, same typography, same accent
- Cleaner layout with more breathing room, refined hover states on buttons
- Subtle 1px divider, no heavy bars or strong color blocks
- Proper Windows assembly metadata block: title, description, company, product, copyright, trademark, file version, informational version — looks like a real product, not a one-off exe
- Auto-updates itself when a newer bootstrapper version is available
Cross-platform parity
- Every language feature works identically on Windows (C# interpreter) and on macOS/Linux (Node.js interpreter)
- Same byte-for-byte output verified across both implementations
- Mac/Linux installer (
install.sh) updated to v3
Bug fixes
- Member assignment:
obj.prop = value and arr[i] = value now actually take effect (previously eaten as equality by the comparison parser)
- Undo/redo: now uses a custom snapshot stack instead of RichTextBox's built-in (which was polluted by syntax highlighting)
- Console pause: only pauses when actually double-clicked (was crashing when stdin was redirected from Simply Code)
A massive release. Simply Code — a dedicated VS Code-style IDE — is here, the language has objects, full file I/O, HTTP fetch, JSON, and dozens of new built-ins. .simply files now open a chooser modal so you can run or edit.
🎉 Simply Code IDE
- Simply Code — a full dark-themed IDE shipped alongside Simply. Looks and feels like VS Code, built specifically for the Simply language
- File explorer with folder tree, open folder as workspace
- Multiple file tabs with unsaved indicator, close buttons, middle-click to close
- Syntax highlighting built into the editor — keywords, types, strings, numbers, comments, built-ins all colored
- IntelliSense / Autocomplete — type any keyword, built-in, or type name and a popup suggests matches
- Embedded interactive terminal — run files with F5, see output inline, type input that flows back to your running program
- Find & Replace (Ctrl+H)
- Line numbers, current-line highlight, auto-indent on Enter, Tab inserts spaces
- Toggle comment (Ctrl+/) on selection
- Font zoom (Ctrl+= / Ctrl+- / Ctrl+0)
- Desktop & Documents shortcuts auto-created during install
📦 File Chooser Modal
- Double-clicking a
.simply file now opens a clean modal: ▶ Run Script or 📝 Open in Simply Code
- Right-click any
.simply file → Run with Simply or Edit with Simply Code
🔤 Language — Objects
define x = { name: "Ali", age: 30 } — full object literal support
- Property access:
x.name, x.age
- Property assignment:
x.name = "Firas", x.age += 1
- Object utilities:
keys(), values(), hasKey(), merge(), entries(), fromEntries()
🔁 Language — Control Flow
else if — chain conditionals without nesting
break and continue in for, while, loop
- Compound operators:
+=, -=, *=, /=
- Increment / decrement:
x++, x--
- Power operator:
2 ** 10
- Default function parameters:
fn greet(name, msg = "Hello") { } end
- String interpolation:
"Hello {name}!" (scope variables)
import "utils.simply" — include other Simply files
📁 File I/O Built-ins
readFile(path), writeFile(path, text), appendFile(path, text)
fileExists(path), deleteFile(path), listDir(path), makeDir(path), dirExists(path)
cwd(), getDir(), getFilename(), joinPath()
🌐 HTTP & JSON
fetch(url, { method, body, headers }) — full HTTP client returning { status, ok, text }
json.parse(str) and json.stringify(obj, indent)
🧰 Array Higher-Order Methods
.map(), .filter(), .reduce(), .find(), .every(), .some()
.sort(), .unique(), .flat(), .concat(), .slice(), .splice()
🧪 More Built-ins
exec(cmd) — run shell commands and capture output
sleep(ms), now(), date(), env(key), args
- Type checks:
isNull, isString, isNumber, isArray, isObject, isBool, isFunction
- Math:
Math.PI, Math.E, clamp(), log(), pow()
- Regex:
regexTest(), regexMatch(), regexReplace()
- String methods:
.padStart(), .padEnd(), .repeat(), .trimStart(), .trimEnd()
🐛 Fixes
- Parser now treats newlines as whitespace — write code on one line, many lines, or any mix
if (x = 5) works correctly (comparison vs assignment context-resolved)
- Updates fully reinstall files instead of failing on conflicts
- Bootstrapper auto-updates itself when a newer version is available
- VSCode extension now installed via
code --install-extension — reliable on all installs
- Console stays open when running
.simply files from double-click
The very first release of Simply. Core interpreter, syntax, basic types, and the package bridging system to npm and Python.
🚀 Initial Release
- Simply interpreter (
simply.exe) written in C# and compiled to native Windows binary
- Simply Bootstrapper — small GUI to install, update, uninstall, version-switch
- Adds Simply to PATH and registers
.simply file association
- Optional VSCode syntax highlighting extension
📝 Core Language
- Variables:
define x = value with optional type annotation define:String name = "Ali"
- Functions:
fn name(args) { } end, first-class, anonymous, closures
- Conditionals:
if (cond) { } end with optional else
- Loops:
loop(n), while(cond), for(x in arr)
- Error handling:
try { } catch (e) { } end
- Arrays:
[1, 2, 3], indexing, methods
- Return values via
return(value)
🔌 Package Bridging
use npm:packageName — call any installed npm package
use python:packageName — call any installed Python package
- Synchronous, JSON-serializable bridge via subprocess
🧮 Built-ins
output, input, str, num, type, len, range
- Math:
floor, ceil, round, abs, sqrt, max, min, random
- String methods:
.upper(), .lower(), .trim(), .split(), .replace(), etc.
- Array methods:
.push(), .pop(), .join(), .contains(), .indexOf(), etc.