All Projects → felix-lang → Felix

felix-lang / Felix

Licence: other
The Felix Programming Language

Programming Languages

c
50402 projects - #5 most used programming language
ocaml
1615 projects

Projects that are alternatives of or similar to Felix

Arrow
Λrrow - Functional companion to Kotlin's Standard Library
Stars: ✭ 4,771 (+683.42%)
Mutual labels:  polymorphism, functional-programming, coroutines
snap
Snap Programming Language
Stars: ✭ 20 (-96.72%)
Mutual labels:  static-analysis, coroutines
Reading
A list of computer-science readings I recommend
Stars: ✭ 1,919 (+215.11%)
Mutual labels:  static-analysis, compiler
Programming
Code a program in a language of your choice.
Stars: ✭ 269 (-55.83%)
Mutual labels:  programming, functional-programming
Silt
An in-progress fast, dependently typed, functional programming language implemented in Swift.
Stars: ✭ 217 (-64.37%)
Mutual labels:  compiler, functional-programming
Fsharp
The F# compiler, F# core library, F# language service, and F# tooling integration for Visual Studio
Stars: ✭ 2,966 (+387.03%)
Mutual labels:  compiler, functional-programming
Pyverilog
Python-based Hardware Design Processing Toolkit for Verilog HDL
Stars: ✭ 267 (-56.16%)
Mutual labels:  compiler, code-generator
Typelang
🌳 A tiny language interpreter implemented purely in TypeScript's type-system
Stars: ✭ 149 (-75.53%)
Mutual labels:  compiler, functional-programming
Rascal
The implementation of the Rascal meta-programming language (including interpreter, type checker, parser generator, compiler and JVM based run-time system)
Stars: ✭ 284 (-53.37%)
Mutual labels:  static-analysis, compiler
Umka Lang
Umka: a statically typed embeddable scripting language
Stars: ✭ 308 (-49.43%)
Mutual labels:  compiler, coroutines
Scriptum
A fool's scriptum on functional programming
Stars: ✭ 346 (-43.19%)
Mutual labels:  polymorphism, functional-programming
Mlkit
Standard ML Compiler and Toolkit
Stars: ✭ 183 (-69.95%)
Mutual labels:  compiler, functional-programming
Potigol
Linguagem Potigol - Linguagem de programação funcional moderna para iniciantes - A Functional Programming Language for Beginners
Stars: ✭ 179 (-70.61%)
Mutual labels:  compiler, functional-programming
Never
Never: statically typed, embeddable functional programming language.
Stars: ✭ 248 (-59.28%)
Mutual labels:  compiler, functional-programming
Bytecode Viewer
A Java 8+ Jar & Android APK Reverse Engineering Suite (Decompiler, Editor, Debugger & More)
Stars: ✭ 12,606 (+1969.95%)
Mutual labels:  compiler, static-analysis
Kotlinjetpackinaction
🔥🔥 Kotlin Jetpack zero to hero. 新手到高手
Stars: ✭ 264 (-56.65%)
Mutual labels:  coroutines, functional-programming
Grain
The Grain compiler toolchain and CLI. Home of the modern web staple. 🌾
Stars: ✭ 2,199 (+261.08%)
Mutual labels:  compiler, functional-programming
Solang
First fully featured programming language for Stack Overflow Driven Development
Stars: ✭ 133 (-78.16%)
Mutual labels:  compiler, programming
Write You A Haskell
Building a modern functional compiler from first principles. (http://dev.stephendiehl.com/fun/)
Stars: ✭ 3,064 (+403.12%)
Mutual labels:  compiler, functional-programming
Nuitka
Nuitka is a Python compiler written in Python. It's fully compatible with Python 2.6, 2.7, 3.3, 3.4, 3.5, 3.6, 3.7, 3.8, and 3.9. You feed it your Python app, it does a lot of clever things, and spits out an executable or extension module.
Stars: ✭ 6,173 (+913.63%)
Mutual labels:  compiler, programming

Felix

An advanced, statically typed, high performance scripting language with native C++ embedding.

Features

Autobuilder

This file:

// hello.flx
println$ "Hello World";

can be run directly:

flx hello.flx

It just works. No makefiles. No compiler switches. Automatic caching and dependency checking for Felix and C++. Uses a flx_pkgconfig database consisting of a directory of *.fpc files to specify and find libraries and header files based on in language abstract keys.

Hyperlight Performance

The aim is to run faster than C.

Underneath Felix generates highly optimised machine binaries which outperform most interpreters, bytecode compilers, virtual machines, and sometimes compiled languages including C and C++.

Felix is an aggressive inliner which performs whole program analysis and high level optimisations such as parallel assignment, self-tail call elimination.

Felix generates optimised C++ which is then compiled and optimised again by your system C++ compiler.

Compiler Ack Takfp
Felix/clang 3.71 6.23
Clang/C++ 3.95 6.29
Felix/gcc 2.34 6.60
Gcc/C++ 2.25 6.25
Ocaml 2.93 8.41

C and C++ embedding

Felix is a C++ code generator specifically designed so that all your favourite C and C++ libraries can be embedded with little or no glue logic:

// required header 
header vector_h = '#include <vector>';

// C++11 for smart pointers
header memory_h = '#include <memory>' 
  requires package "cplusplus_11"
;
 
// types
type vector[T] = "::std::shared_ptr<::std::vector<?1>>" 
  requires vector_h, memory_h
;

type viterator[T] = "::std::vector<?1>::iterator"
  requires vector_h
;

// constructor
ctor[T] vector[T] : unit = "::std::make_shared<::std::vector<?1>>()";

// operations
proc push_back[T] : vector[T] * T =  "$1->push_back($2);";
proc push_back[T] (v: vector[T]) (elt:T) => push_back(v,elt);

fun stl_begin[T] : vector[T] -> viterator[T] = "$1->begin()";
fun deref[T] : viterator[T] -> T = "*$1";

// example use
var v = vector[int]();
v.push_back 42;
println$ *v.stl_begin;

Getting Started

Prerequisites

  • Python 3
  • Ocaml 4.06.1 (only for source build)
  • C++ compiler: g++, clang++, or msvc

Extras (can be installed later)

  • SDL2 for graphics
  • GNU GMP, GNU GSL

Build from Source

Linux

git clone https://github.com/felix-lang/felix.git
cd felix
. buildscript/linuxsetup.sh
make  
sudo make install # optional!

OSX

git clone https://github.com/felix-lang/felix.git
cd felix
. buildscript/macosxsetup.sh
make  
sudo make install # optional!

Building with Nix

On platforms supporting Nix, you can set up a build and runtime environment by running:

git clone https://github.com/felix-lang/felix.git
cd felix
nix-shell shell.nix
. buildscript/linuxsetup.sh
make  

This will do an in place "install" of the Felix binaries. Note that this should work on OS X with Nix, but needs to be tested.

Windows

Make sure git, Python3 and Ocaml are on your PATH. You can download a pre-built Ocaml 4.06.1 for Windows.

Open a cmd.exe console with Visual Studio 2015 or above environment established or run vcvarsall x86. See vcvarsall.

git clone https://github.com/felix-lang/felix.git
cd felix
. buildscript/winsetup.sh
nmake  
nmake install # optional!

Packages

Arch Linux

Use provided PKGBUILD to make an installable package. It is also available in the AUR repository

cd src/misc
makepkg
sudo pacman -U felix-VERSION.pkg.tar.xz

Tarballs

http://github.com/felix-lang/felix/releases

Build Status

Appveyor, Windows build: Build Status Travis, Linux build: Build Status

Links

Title URL
Documentation Master http://felix-documentation-master.readthedocs.io/en/latest/
Felix Tutorial http://felix-tutorial.readthedocs.io/en/latest/
Installation and Tools Guide http://felix-tools.readthedocs.io/en/latest/
Felix Language Reference Manual http://felix.readthedocs.io/en/latest/
Felix Library Packages http://felix-library-packages.readthedocs.io/en/latest/
Articles on Modern Computing http://modern-computing.readthedocs.io/en/latest/
Felix Home Page http://felix-lang.github.io/felix
Felix Wiki https://github.com/felix-lang/felix/wiki
Git Repository https://github.com/felix-lang/felix
Binary Download http://github.com/felix-lang/felix/releases

Mailing List

mailto:[email protected]

Licence

Felix is Free For Any Use (FFAU)/Public Domain.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].