From 99418bdf6a1028918a1c754dca13aabd1b5e46e9 Mon Sep 17 00:00:00 2001 From: lisyarus Date: Sat, 20 Dec 2025 12:42:08 +0300 Subject: [PATCH] Update plans --- backlog.txt | 2 -- plans.txt | 20 ++++++++++++++++++++ 2 files changed, 20 insertions(+), 2 deletions(-) delete mode 100644 backlog.txt create mode 100644 plans.txt diff --git a/backlog.txt b/backlog.txt deleted file mode 100644 index 804a288..0000000 --- a/backlog.txt +++ /dev/null @@ -1,2 +0,0 @@ -* Mutually recursive functions -* Figure out indentation: keep tabs - what to do with printing errors? Enforce e.g. 4 spaces? diff --git a/plans.txt b/plans.txt new file mode 100644 index 0000000..b61a6d8 --- /dev/null +++ b/plans.txt @@ -0,0 +1,20 @@ +Future plans: +* Rewrite identifier resolution using visitors +* Default-constructing (no arguments, zero-initialization) primitive types & struct types +* Introduce type checking & inference as a separate pre-execution/compilation AST pass + add type information into expression nodes +* Pointers: pointer types, address-of operator (&), dereferencing, scope-based lifetime tracking in interpreter +* Function overloading: separate functions from values (again) in interpreter, allow casting to specific function type to take function value +* Const propagation: annotate expression AST nodes that are computable in compile-time +* Generic parameters: can be either values or `t : type`, but always compile-time +* Generic structs: `struct array:`, require explicitly specifying parameters when instantiated (used as a type or creating a value) +* Generic functions: `func max(a : t[n]):`, require explicitly specifying parameters when called or converted to function pointer +* Generic parameter inference for functions & structs +* Extension functions: operator overloading, destructors, iterators & for loop, move assignment (replaces built-in copy) +* Metaprogramming: assigning types to variables (of type `type`), functions can take `type` as regular arguments and return `type`, all type computations are compile-time only + +Backlog: +* Mutually recursive functions +* Figure out indentation: keep tabs - what to do with printing errors? Enforce e.g. 4 spaces? +* Default-constructing primitive types +* Empty array expression +* Calling functions as methods