Fan is a dynamically-typed programming language. It is based on Wren, but features significant customizations to its runtime. Fan's aim is to be statically compilable, portable, and come with batteries-included.
Right now, you still have to clone the repository, but then just run the following Docker command to build a release version of Fan. Once I figure out the registry, this will be simpler still.
docker build -t fan .
git clone --recurse-submodules https://github.com/tristanisham/fan.git
Fan currently supports, GCC, Clang, and targets *nix systems. Windows support is a work in progress. MSVC is God's punishment for man's arrogance.
Fan requires some external dependencies. They're all pretty easy to install and
go in ./vendor
.
- Go to Boost's version history and download and extract version 1.83.0
# Download Boost in ./vendor
$ tar --bzip2 -xf boost_1_83_0.tar.bz2
$ rm boost_1_83_0.tar.bz2
The master CMakeLists.txt
should already be targeting this path.
include_directories(vendor/boost_1_83_0)
If you're on Windows or MacOS, CURL should be installed with your system. If you're on Linux, run the appropriate command to install CURL for your distrobution.
To run this project, you will need to add the following environment variables to your environment.
FAN_LIB
points to the Fan standard library. If you've installed Fan with a
provided installer, this variable should be set for you. If this variable is not
set, Fan will still look for modules in the current working directory.
Contributions are always welcome!
See contributing.md
for ways to get started.
Please adhere to this project's code of conduct
.
include
: All project header fileslib
: Fan's standard library written in .fansrc
: CPP/C filestests
: Standard Library testsvendor
: third-party dependencies larger than a single header file. Namely, Boost../fan.sh
: A little helper script to load dev environemnt variables for you. Use it like./fan.exe
.