Freestanding programming language
Go to file
2023-10-29 14:28:51 -04:00
analyzer Analyze return statement 2023-10-29 14:28:51 -04:00
design Revise spec a bit 2023-10-28 03:24:08 -04:00
entity Analyze return statement 2023-10-29 14:28:51 -04:00
integer Add package for determining integer sizes 2023-10-27 16:10:05 -04:00
lexer
parser New syntax for method calls 2023-10-19 17:19:23 -04:00
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 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!