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. :)
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.
class Main {}
    direct method run: command in: system
        system output println: "Hello world"!
end
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.