-
Notifications
You must be signed in to change notification settings - Fork 2
Description
The lack of real-world program being written in the source language makes it hard to gather meaningful insights into compiler performance, ergonomics of source language features, and performance of the compiled code.
A good candidate for a real-world program is the compiler itself, which would allow for comparisons between the source language and NimSkull (code size, lines-of-code, performance, etc.). Some discipline will be required in order to ensure that the source language doesn't become overly tailored to compiler development.
Source Language Prerequisites:
- The Road To Version 0.75 #158
- lang: add inductive data types #143
- generic inductive types
- heap-allocated single-owner type (to be able to have recursive types)
- mutable reference parameters
- arity-based procedure overloading
- lambda expressions (i.e., anonymous inner procedures)
- (maybe) multi-module support
Note: the above only represent the projected minimum set of features necessary for implementing the compiler without an excessive amount of boilerplate / extra work
Tooling/Additional Prerequisites:
- a concrete syntax for the interim (could just be S-expressions)
- IDE integration (code completion and in-line errors; not strictly necessary, but would help a lot)