Freestanding programming language
analyzer | ||
cmd/fsplc | ||
design | ||
entity | ||
generator | ||
integer | ||
lexer | ||
llvm | ||
parser | ||
go.mod | ||
go.sum | ||
README.md |
FSPL
Freestanding programming language: a high-ish-level language that has absolutely no need for any runtime support, designed to work well in scenarios where dragging along a language runtime is either not possible or simply not wanted.
This language is designed for:
- Operating system development
- Embedded software
- People who think modern languages are bloated and dislike them on principle
This is really another go at the ARF programming language. FSPL is a working title because the ARF acronym did not make any sense but I can't think of a better name. I am now working on this as a senior project so I am obligated to not abandon it and start over again.
Design Principles
- Abstractions must happen at compile time unless absolutely necessary
- Compiler must not generate any functions that the user does not write
- Compiler must avoid generating logic that the user does not write
Roadmap
Late 2023
- Top-level entities
- Type definitions
- Methods
- Defined and external functions
- Type definitions
- Type system
- Strict, static, bottom-up type inference
- Pointers
- Arrays
- Slices
- Structs
- Interfaces
- Expressions and control structures
- Literals adapt to types via bottom-up type inference
- Assignment
- Variable declaration
- Variable access
- Function calls
- Method calls
- Interface behavior calls
- Operations
- Casting
- Blocks
- If/else
- Loops
Early 2024
- Union types (carry type information)
- Match statements
- Modules
- Vararg
- Lightweight, modularized (and of course, totally optional) standard library
- Conditional compilation
- Constants
- For loops
- Range loops
Afterwards
- Generics?
- Ownership system?
- And more!