Foolang
This is a toy language implemented by a single person—use for quiet enjoyment only.
See https://foolang.org for syntax, design notes, etc. This README is a smaller version of the main page there.
See CONTRIBUTING.md for information on how to contribute. You'll be the first. :)
About
Foolang is a Smalltalk-inspired language that, like all new languages, has somewhat optimistic aspirations:
-
Elegance and power of Smalltalk and Self: Smalltalk/Objective-C -like syntax, deep object orientation, late binding, interactive development.
-
Performance of C++: AOT compilation to native code, support for early binding so that the compiler can do its thing, low-level datatypes and operations when you need them for performance.
-
Fault tolerance of Erlang: Actor-model, isolated heaps, and supervisors. No undefined behaviour. No deadlocks, or memory errors or races.
-
Multiplatform Citizen of the Web: WASM is a supported target in addition to Windows, MacOS, Linux, and BSDs.
"Are we there yet?"
Syntax is still going to change, WASM isn't supported, BSDs might work but aren't tested, early binding support isn't quite there, compiler is a work-in-progress trivial transpiler, actors and continuations haven't even been started, there is no interactive development environment to speak of, etc.
Hello World
class Main {}
direct method run: command in: system
system output println: "Hello world"!
end
Repository Organization
In rough order of interest:
foo/ Foolang code, including prelude, self hosting, tests, and examples
src/ Rust code for the bootstrap interpreter
docs/ Markdown files for the https://foolang.org website
elisp/ Emacs mode for Foolang
c/ Scaffolding for transpiled-to-C code
tests/ Rust code for integration tests
ext/ External C code included in the runtime, like dtoa.c.