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

  • break statement for loops
  • continue statement for loops
  • return statement 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:

  1. Vote on features: React to GitHub issues with ๐Ÿ‘
  2. Propose features: Open an issue with the feature-request label
  3. Discuss priorities: Join discussions in existing issues
  4. 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 roadmap label

Last updated: January 2026