MonkeyScript Roadmap
January 19, 2026 ยท View on GitHub
This document outlines the planned features and improvements for MonkeyScript. Items are organized by priority and expected timeline.
Version 0.1.0 (Current - MVP)
Status: Complete
Core interpreter functionality:
- Lexical analysis with token generation
- Recursive descent parser
- AST construction
- Tree-walking evaluator
- Variable declarations with
def - Arithmetic expressions (
+,-,*,/) - Comparison operators (
<,>,==,!=) - Boolean literals (
true,false) - If/else conditionals
- While loops
- First-class functions with
fn - Function calls with arguments
- Lexical scoping with environments
- Closures
Version 0.2.0
Focus: Core language completeness and stability
Data Types
- String literals with escape sequences
def message = "Hello, World!\n"; - String concatenation with
+operator - Null/nil type
def empty = null;
Operators
- Modulo operator
% - Logical AND
&&and OR|| - Compound assignment operators (
+=,-=,*=,/=) - Increment/decrement (
++,--)
Control Flow
-
breakstatement for loops -
continuestatement for loops -
returnstatement for early function exit - For loops
for i = 0; i < 10; i = i + 1: # body end;
Error Handling
- Better error messages with line numbers
- Column numbers in error reporting
- Stack traces for runtime errors
- Try/catch exception handling (tentative)
Testing
- Complete test suite for all features
- Syntax tests
- Runtime behavior tests
- Error condition tests
- CI/CD integration
Version 0.3.0
Focus: Data structures and standard library
Collections
- Arrays/Lists
def numbers = [1, 2, 3, 4, 5]; def first = numbers[0]; - Array methods:
push,pop,length,map,filter - Hash maps/Dictionaries
def person = {"name": "Alice", "age": 30}; def name = person["name"];
Built-in Functions
-
print()- Output to console -
input()- Read from console -
len()- Get length of collections -
type()- Get type of value -
str(),int(),bool()- Type conversions
Standard Library
- Math module (sqrt, pow, abs, etc.)
- String utilities (split, join, trim, etc.)
- File I/O operations
- Date/time utilities
Version 0.4.0
Focus: Advanced features and optimization
Language Features
-
Object-oriented programming
- Classes and inheritance
- Methods and properties
- Constructors
class Person: def init(name, age): self.name = name; self.age = age; end; def greet(): print("Hello, I'm " + self.name); end; end; -
Modules and imports
import math; def result = math.sqrt(16); -
Lambda expressions (shorthand syntax)
def double = x => x * 2; -
Destructuring assignment
def [a, b, c] = [1, 2, 3];
Performance
- Bytecode compilation
- Virtual machine interpreter
- Constant folding optimization
- Dead code elimination
- Basic JIT compilation (exploratory)
Developer Experience
- REPL (Read-Eval-Print Loop)
monkeyscript --repl >>> def x = 5; >>> x + 3; 8 - Syntax highlighting definitions
- VS Code extension
- TextMate grammar
- Debugger support
- Breakpoints
- Step through execution
- Variable inspection
Version 1.0.0
Focus: Production readiness
Stability
- Comprehensive test coverage (>90%)
- Fuzzing tests for parser
- Memory leak detection
- Performance benchmarks
Documentation
- Complete language reference
- Tutorial series
- API documentation
- Example programs library
- Best practices guide
Tooling
- Package manager
- Build tool
- Linter
- Formatter
- Documentation generator
Interoperability
- C# interop for calling .NET libraries
- Foreign Function Interface (FFI)
- JSON parsing and serialization
- HTTP client capabilities
Research & Exploration
Ideas under consideration for post-1.0:
Advanced Type System
- Optional static typing
- Type inference
- Generics
- Union types
Concurrency
- Async/await
- Coroutines
- Actor model
- Parallel collections
Metaprogramming
- Macros
- Reflection
- Code generation
- AST manipulation
Compilation Targets
- Transpile to JavaScript
- Transpile to C#
- Compile to WebAssembly
- Native code generation
Community Requests
Features requested by the community (vote on GitHub issues):
- Pattern matching
- Tail call optimization
- Unicode support
- Regular expressions
- Operator overloading
- Multiple return values
- Named parameters
- Default parameter values
Contributing to the Roadmap
We welcome input on the roadmap! Here's how you can contribute:
- Vote on features: React to GitHub issues with ๐
- Propose features: Open an issue with the
feature-requestlabel - Discuss priorities: Join discussions in existing issues
- Help implement: Check out "good first issue" tags
Versioning Strategy
MonkeyScript follows Semantic Versioning:
- Major version (1.0.0): Breaking changes to language syntax or APIs
- Minor version (0.1.0): New features, backward compatible
- Patch version (0.1.1): Bug fixes, backward compatible
Timeline Disclaimer
The timelines provided are estimates and may change based on:
- Community contributions
- Complexity of implementation
- Feedback and testing results
- Resource availability
We prioritize quality and stability over strict adherence to dates.
Questions?
For roadmap-related questions or suggestions:
- Open an issue on GitHub
- Tag it with
roadmaplabel
Last updated: January 2026