An open API service indexing awesome lists of open source software.

https://github.com/lunandd/firework_lang

A pure functional programming language
https://github.com/lunandd/firework_lang

llvm llvm-ir rust rust-crate

Last synced: 6 months ago
JSON representation

A pure functional programming language

Awesome Lists containing this project

README

          

# BEWARE! This project has failed, is archived and will probably will be rebuilt in Haskell!
## Firework programming language

[![Test Status](https://github.com/Pavlos-Efstathiou/firework_lang/workflows/Rust/badge.svg?event=push)](https://github.com/Pavlos-Efstathiou/firework_lang/actions)
![Lines of Code](https://tokei.rs/b1/github/Pavlos-Efstathiou/firework_lang)
[![Crates.io Version](https://img.shields.io/crates/v/firework_lang)](https://crates.io/crates/firework_lang)
[![Crates.io Downloads](https://img.shields.io/crates/d/firework_lang)](https://crates.io/crates/firework_lang)
[![Crates.io License](https://img.shields.io/crates/l/firework_lang)](https://crates.io/crates/firework_lang)
[![Minimum rustc version](https://img.shields.io/badge/rustc-1.46.0+-blue.svg)](https://blog.rust-lang.org/2020/08/27/Rust-1.46.0.html)

Functional programming language that compiles to [LLVM IR](https://llvm.org/docs/LangRef.html) (Very incomplete, be warned)

## Build Guide

### 1. Installing Rust

- *nix:
```sh
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
```

- Windows:
Install [rustup-init](https://static.rust-lang.org/rustup/dist/i686-pc-windows-gnu/rustup-init.exe) and run it

### 2a. Installing Firework
```sh
cargo install firework_lang
```
### 2b. Updating Firework
```sh
cargo install firework_lang --force
```

### 2b. Building from Source
```sh
git clone https://github.com/Pavlos-Efstathiou/firework_lang
cd firework_lang
cargo build --release
```

### 3. Installing LLVM 12.x

- [*nix](https://llvm.org/docs/CMake.html)
- [Windows Binaries](https://github.com/PLC-lang/llvm-package-windows/releases/tag/v12.0.1)

## Quickstart

```sh
firework_lang new hello_world
cd hello_world
firework_lang run
```

### 4. Running the example

```sh
git clone https://github.com/Pavlos-Efstathiou/firework_lang
cd firework_lang/example
firework_lang run
```

## Upcoming features

- [ ] Algebraic Data Types
- [ ] Custom Data Types
- [ ] Dependency management
- [ ] REPL