{"id":13467507,"url":"https://github.com/felix-lang/felix","last_synced_at":"2025-04-06T18:13:16.175Z","repository":{"id":827124,"uuid":"542504","full_name":"felix-lang/felix","owner":"felix-lang","description":"The Felix Programming Language","archived":false,"fork":false,"pushed_at":"2024-09-23T10:54:31.000Z","size":90634,"stargazers_count":808,"open_issues_count":39,"forks_count":46,"subscribers_count":41,"default_branch":"master","last_synced_at":"2025-03-30T17:08:06.279Z","etag":null,"topics":["c-plus-plus","code-generator","compiled","compiler","coroutine-framework","coroutines","functional-programming","ocaml","parametric-polymorphism","performant","platform-independent","polymorphism","programming","programming-language","scripting-language","static-analysis","type-classes"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/felix-lang.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":null,"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":null}},"created_at":"2010-03-02T07:11:15.000Z","updated_at":"2025-02-28T13:07:47.000Z","dependencies_parsed_at":"2023-01-14T11:00:43.702Z","dependency_job_id":"f9c9ef91-aa4d-4514-9e18-babd053d628e","html_url":"https://github.com/felix-lang/felix","commit_stats":{"total_commits":8124,"total_committers":52,"mean_commits":"156.23076923076923","dds":0.681068439192516,"last_synced_commit":"accf5415b9e6a3e662d0a28a21205317e8373d89"},"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/felix-lang%2Ffelix","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/felix-lang%2Ffelix/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/felix-lang%2Ffelix/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/felix-lang%2Ffelix/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/felix-lang","download_url":"https://codeload.github.com/felix-lang/felix/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247526753,"owners_count":20953143,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["c-plus-plus","code-generator","compiled","compiler","coroutine-framework","coroutines","functional-programming","ocaml","parametric-polymorphism","performant","platform-independent","polymorphism","programming","programming-language","scripting-language","static-analysis","type-classes"],"created_at":"2024-07-31T15:00:57.326Z","updated_at":"2025-04-06T18:13:16.148Z","avatar_url":"https://github.com/felix-lang.png","language":"C","funding_links":[],"categories":["OCaml","Uncategorized","C","c-plus-plus","Other"],"sub_categories":["Uncategorized"],"readme":"\n# Felix\n\nAn advanced, statically typed, high performance scripting language with native C++ embedding.\n\n## Features\n### Autobuilder\nThis file:\n```\n// hello.flx\nprintln$ \"Hello World\";\n```\n\ncan be run directly:\n\n```bash\nflx hello.flx\n```\n\nIt __just works__. No makefiles. No compiler switches.\nAutomatic caching and dependency checking for Felix and C++.\nUses a *flx_pkgconfig* database consisting of a directory\nof `*.fpc` files to specify and find libraries and header\nfiles based on in language abstract keys.\n\n### Hyperlight Performance\n\nThe aim is to run faster than C.\n\nUnderneath Felix generates highly optimised machine\nbinaries which outperform most interpreters, bytecode compilers,\nvirtual machines, and sometimes compiled languages including C and C++.\n\nFelix is an aggressive inliner which performs whole program\nanalysis and high level optimisations such as parallel assignment,\nself-tail call elimination.\n\nFelix generates optimised C++ which is then compiled and optimised\nagain by your system C++ compiler.\n\nCompiler     |  Ack   |  Takfp\n-------------|--------|-----------\nFelix/clang  |  3.71  |  6.23\nClang/C++    |  3.95  |  6.29\nFelix/gcc    |  2.34  |  6.60\nGcc/C++      |  2.25  |  6.25\nOcaml        |  2.93  |  8.41\n\n### C and C++ embedding\n\nFelix is a C++ code generator specifically designed so that \nall your favourite C and C++ libraries can be embedded\nwith little or no glue logic:\n\n```\n// required header \nheader vector_h = '#include \u003cvector\u003e';\n\n// C++11 for smart pointers\nheader memory_h = '#include \u003cmemory\u003e' \n  requires package \"cplusplus_11\"\n;\n \n// types\ntype vector[T] = \"::std::shared_ptr\u003c::std::vector\u003c?1\u003e\u003e\" \n  requires vector_h, memory_h\n;\n\ntype viterator[T] = \"::std::vector\u003c?1\u003e::iterator\"\n  requires vector_h\n;\n\n// constructor\nctor[T] vector[T] : unit = \"::std::make_shared\u003c::std::vector\u003c?1\u003e\u003e()\";\n\n// operations\nproc push_back[T] : vector[T] * T =  \"$1-\u003epush_back($2);\";\nproc push_back[T] (v: vector[T]) (elt:T) =\u003e push_back(v,elt);\n\nfun stl_begin[T] : vector[T] -\u003e viterator[T] = \"$1-\u003ebegin()\";\nfun deref[T] : viterator[T] -\u003e T = \"*$1\";\n\n// example use\nvar v = vector[int]();\nv.push_back 42;\nprintln$ *v.stl_begin;\n```\n\n## Getting Started\n\n### Prerequisites\n\n* Python 3\n* Ocaml 4.06.1 (only for source build)\n* C++ compiler: g++, clang++, or msvc\n\n### Extras (can be installed later)\n\n* SDL2 for graphics\n* GNU GMP, GNU GSL \n\n### Build from Source\n\n#### Linux\n\n```\ngit clone https://github.com/felix-lang/felix.git\ncd felix\n. buildscript/linuxsetup.sh\nmake  \nsudo make install # optional!\n```\n\n#### OSX\n\n\n```\ngit clone https://github.com/felix-lang/felix.git\ncd felix\n. buildscript/macosxsetup.sh\nmake  \nsudo make install # optional!\n```\n\n#### Building with Nix\n\nOn platforms supporting Nix, you can set up a build and runtime environment\nby running:\n\n```\ngit clone https://github.com/felix-lang/felix.git\ncd felix\nnix-shell shell.nix\n. buildscript/linuxsetup.sh\nmake  \n```\n\nThis will do an in place \"install\" of the Felix binaries. Note that\nthis should work on OS X with Nix, but needs to be tested. \n\n\n#### Windows\n\nFollow the instructions on [the Wiki](https://github.com/felix-lang/felix/wiki/Building-Felix-From-Source#windows-10-with-visual-studio-2022).\n\n## Packages\n\n#### Arch Linux\n\nUse provided [PKGBUILD](./src/misc/PKGBUILD) to make an installable package.\nIt is also available in the [AUR repository](https://aur.archlinux.org/packages/felix/)\n\n```\ncd src/misc\nmakepkg\nsudo pacman -U felix-VERSION.pkg.tar.xz\n```\n\n## Tarballs\n\n\u003chttp://github.com/felix-lang/felix/releases\u003e\n\n# Build Status\n\nAppveyor, Windows build: [![Build Status](https://ci.appveyor.com/api/projects/status/q9w45r6b2chnsre1?svg=true)](https://ci.appveyor.com/project/skaller/felix)\nTravis, Linux build: [![Build Status](https://travis-ci.org/felix-lang/felix.svg?branch=master)](https://travis-ci.org/felix-lang/felix)\n\n# Links \n\nTitle                                | URL\n------------------------------------ | ------------------------------------------------------------\nDocumentation Master                 | \u003chttp://felix-documentation-master.readthedocs.io/en/latest/\u003e\nFelix Tutorial                       | \u003chttp://felix-tutorial.readthedocs.io/en/latest/\u003e\nInstallation and Tools Guide         | \u003chttp://felix-tools.readthedocs.io/en/latest/\u003e\nFelix Language Reference Manual      | \u003chttp://felix.readthedocs.io/en/latest/\u003e\nFelix Library Packages               | \u003chttp://felix-library-packages.readthedocs.io/en/latest/\u003e\nArticles on Modern Computing         | \u003chttp://modern-computing.readthedocs.io/en/latest/\u003e\nFelix Home Page                      | \u003chttp://felix-lang.github.io/felix\u003e\nFelix Wiki                           | \u003chttps://github.com/felix-lang/felix/wiki\u003e\nGit Repository                       | \u003chttps://github.com/felix-lang/felix\u003e\nBinary Download                      | \u003chttp://github.com/felix-lang/felix/releases\u003e\n\n# Mailing List\n\nmailto:felixpl@googlegroups.com\n\n\n# Licence\n\nFelix is Free For Any Use (FFAU)/Public Domain.\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffelix-lang%2Ffelix","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffelix-lang%2Ffelix","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffelix-lang%2Ffelix/lists"}