fble-0.5 (2025-07-13,fble-0.4-212-ga8f8ad0f)
Fable is a programming language project. It includes a specification, reference implementation, library, and sample applications for the fble programming language.
Start with the simplicity of C. Redesign the foundations from the ground up based on a strong type system and functional programming. Use automatic memory management and make sure there is a clear way to reason about performance. Include support for generics and modularity. Remove as many hard edges, corner cases and redundancies in the language as possible.
The result is a simple, general purpose, statically typed, strict, pure functional programming language with automatic memory management, support for polymorphism and modularity, user-defined primitive data types, and a hint of C-like syntax.
The source code for fble is available from github at https://github.com/ruhler/fable.
spec/fble.fbld
spec/style.fbld
fbld/fbld.fbld
tutorials/Tutorials.fbld
Release.fbld
The latest generated documentation is also available online at https://ruhler.github.io/fable.
To build and run the tests for all of fble, the following software is required. The version numbers provided are versions that are known to work:
To install required dependencies on a debian based system:
apt install \ expect binutils bison coreutils \ gcc gdb diffutils grep groff-base \ ninja-build libgl-dev libsdl2-dev tcl8.6
To install required dependencies on an MSYS2 UCRT64 based system:
pacman -S tcl ninja gcc bison groff diffutils \ mingw-w64-ucrt-x86_64-toolchain \ mingw-w64-ucrt-x86_64-SDL2 \ mingw-w64-ucrt-x86_64-mesa export MSYS2_ARG_CONV_EXCL='*'
To build and install:
./configure --prefix=/usr/local && ninja && ninja install
Additional ninja targets:
Vim ftplugin, syntax, and indent files for the fble language are available in the `vim/` directory. You can run the following commands to install these files:
mkdir -p ~/.vim/ftdetect ~/.vim/ftplugin ~/.vim/indent ~/.vim/syntax cp vim/ftdetect/* ~/.vim/ftdetect cp vim/ftplugin/* ~/.vim/ftplugin cp vim/indent/* ~/.vim/indent cp vim/syntax/* ~/.vim/syntax