Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
buildscript Blah May 6, 2018
buildsystem New version 2018.08.17-rc2 Aug 17, 2018
doc Pointer slices. Aug 25, 2018
docs Test fdoctosphinx. [ci skip] Nov 1, 2017
extras Get order of arguments right in _interface. Sep 22, 2015
fbuild Try to get ReadTheDocs to build the Felix docs. Oct 27, 2017
installscript Constant injections. Aug 18, 2018
licences Remove more stuff.. and note, sqlite test fails now ;( Dec 7, 2010
lpsrc fix Oct 29, 2015
speed doc [ci skip] Jul 25, 2018
src Pointer slices. Aug 25, 2018
.gitignore Cleaning up root folder (moving pdfs) Oct 19, 2017
.gitmodules Remove fbuild submodule. May 3, 2012
.travis.yml New version 2018.08.17-rc1 Aug 17, 2018
GNUmakefile New version 2018.08.17-rc1 Aug 17, 2018
INSTALL fix Oct 29, 2015
LICENCE Fix makefile bug that commented out flxg target. Dec 4, 2013
Makefile Updating flx_iscr.fdoc and tweaking Windows Makefile (Issue #107) Oct 7, 2017
README.md Doc. Jul 15, 2018
VERSION Constant injections. Aug 18, 2018
appveyor.yml Try to get Appveyor running. May 6, 2018
build.fpc Rework flx. Jan 9, 2015
fbuildroot.py Force -unsafe-string for the moment. Apr 22, 2018
flxsetup.bat fix this up a bit Nov 29, 2015
hello.flx Add some extras to win32 install [ci skip] Oct 27, 2015
makedoc.sh Cleaning up root folder (moving pdfs) Oct 19, 2017
release.sh New version 2016.04.10-rc1 Apr 10, 2016
set_FLX_VERSION.sh fix Oct 29, 2015
setupdebug.bat Add personal debugger setup. Sep 27, 2015
showversion.py fix Oct 29, 2015
startmenusetup.bat Add a setup batch file I can run from Startup Menu. Sep 19, 2015
update-fbuild.sh Add script to update Fbuild May 2, 2016
vcvarsall.bat Add Windows 10 setup for Turkey. Aug 29, 2015
vssetup.bat Add a setup batch file I can run from Startup Menu. Sep 19, 2015
wbuild.fpc Fixes... Oct 5, 2015
win32_make_set_FLX_VERSION.py fix Oct 29, 2015

README.md

Felix

Master Documentation Index

Felix is an advanced high performance statically typed scripting language.

It is as easy to run a program as Python:

flx filename

"just works". But underneath it generates highly optimised machine binaries which outperform all interpreters, bytecode compilers, virtual machines, and most compiled languages including C. Felix is an aggressive inliner which performs whole program analysis.

Features:

  • generates highly optimised ISO C++
  • advanced resource manager organises compilation and linkage
  • often runs faster than C
  • glueless binding to C and C++ libraries
  • lightweight threads with channels
  • asynchronous network I/O
  • thread safe garbage collection
  • strictly statically typed
  • overloading
  • strong functional subsystem
    • first order parametric polymorphism
    • polymorphism with constraints
    • multitype Haskell style type classes
    • type classes with real semantic specification
    • pattern matching
    • first class function, sum, and product types
  • user definabled and inline extensible grammar
  • builds on all platforms
  • runs on all platforms
  • open source FFAU (free for any use) licence

Bindings:

  • Google RE2 based regexp processing built
    • syntax support for regular definitions
  • bindings to Gnu GMP and Gnu GSL included
  • SDL: Simple Direct Media Layer
    • SDL based platform independent GUI

Building

To build from source first ensure you have Python 3.4 or above, Ocaml 3.04 or above native code compilers, and gcc, clang, or MSVC++ installed. Open a terminal window (CMD.EXE on Windows) and set up the requisite environment to run the above language translators. You will of course also need the usual system utilities.

Optionally install SDL2, SDL_image and SDL_ttf if you want SDL based graphics support.

Clone the Felix git repository and type "cd felix".

Set up the environment for bootstrapping by ". buildscript/linuxsetup.sh" on Linux, ". buildscript/osxsetup.sh" on OSX, or "buildscript/windowsetup.bat" on Windows.

Now just type "make".

To install, you can type "sudo make install" on unix like systems, or just "make install" on Windows.

It is recommended, however, you do NOT install Felix but run it directly from inside the repository, since this makes updating easier. To make this work, extend your PATH and LD_LIBRARY_PATH or DYLD_LIBRARY_PATH as indicated in the buildscript you used. Then add the file "$HOME/.felix/config/felix.fpc" on Unix systems or "$USERPROFILE/.felix/felix.fpc" on Windows systems with the following line "FELIX_INSTALL_DIR=repositorydir/build/release" replacing repositorydir with the toplevel directoy of the repository image.

To test, type "flx hello.flx".