67 lines
1.7 KiB
Markdown
67 lines
1.7 KiB
Markdown
# 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 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!
|