tristanisham / fan

A batteries-included programming language for more productive developers.

Home Page:https://www.coding.fan/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Project logo

Fan

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.

Docker

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.

Manually

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.

Setup & Dependencies

Fan requires some external dependencies. They're all pretty easy to install and go in ./vendor.

1. Boost's Header-only libraries

# 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)

2. Curl

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.

Environment Variables

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.

Contributing

Contributions are always welcome!

See contributing.md for ways to get started.

Please adhere to this project's code of conduct.

Project Structure

  • include: All project header files
  • lib: Fan's standard library written in .fan
  • src: CPP/C files
  • tests: Standard Library tests
  • vendor: 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.

About

A batteries-included programming language for more productive developers.

https://www.coding.fan/

License:MIT License


Languages

Language:C++ 76.2%Language:C 22.6%Language:Fantom 1.0%Language:CMake 0.1%Language:Shell 0.0%Language:Dockerfile 0.0%Language:Makefile 0.0%