All Projects → basilTeam → basil

basilTeam / basil

Licence: BSD-3-Clause license
Fast and flexible language exploring partial evaluation, context-sensitive parsing, and metaprogramming. Compiles JIT or AOT to native code.

Programming Languages

C++
36643 projects - #6 most used programming language
python
139335 projects - #7 most used programming language
c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to basil

Fake
嵌入式脚本语言 Lightweight embedded scripting language
Stars: ✭ 172 (+84.95%)
Mutual labels:  jit, jit-compiler
Jit Compiler
JIT compiler in Go
Stars: ✭ 70 (-24.73%)
Mutual labels:  jit, jit-compiler
jitm
JITM is an automated tool to bypass the JIT Hooking protection on a .NET sample.
Stars: ✭ 27 (-70.97%)
Mutual labels:  jit, jit-compiler
Batch-First
A JIT compiled chess engine which traverses the search tree in batches in a best-first manner, allowing for neural network batching, asynchronous GPU use, and vectorized CPU computations.
Stars: ✭ 27 (-70.97%)
Mutual labels:  jit, jit-compiler
libjit
Unofficial libjit mirror.
Stars: ✭ 46 (-50.54%)
Mutual labels:  jit, jit-compiler
Minijit
A basic x86-64 JIT compiler written from scratch in stock Python
Stars: ✭ 185 (+98.92%)
Mutual labels:  jit, jit-compiler
Zetavm
Multi-Language Platform for Dynamic Programming Languages
Stars: ✭ 592 (+536.56%)
Mutual labels:  jit, jit-compiler
Jitboy
A Game Boy emulator with dynamic recompilation (JIT)
Stars: ✭ 190 (+104.3%)
Mutual labels:  jit, jit-compiler
neos
Language agnostic scripting engine with a custom bytecode JIT
Stars: ✭ 36 (-61.29%)
Mutual labels:  jit, jit-compiler
kcs
Scripting in C with JIT(x64)/VM.
Stars: ✭ 25 (-73.12%)
Mutual labels:  jit, jit-compiler
sham
A DSL for runtime code generation in racket
Stars: ✭ 63 (-32.26%)
Mutual labels:  jit
cpython
Alternative StdLib for Nim for Python targets, hijacks Python StdLib for Nim
Stars: ✭ 75 (-19.35%)
Mutual labels:  static-typing
Compiler-written-in-Haskell
A Turing complete language 😉
Stars: ✭ 31 (-66.67%)
Mutual labels:  jit-compiler
AheuiJIT
Aheui JIT compiler for PC and web
Stars: ✭ 27 (-70.97%)
Mutual labels:  jit
qemujs
Qemu.js source code with proof-of-concept machine-code-to-WASM JIT.
Stars: ✭ 101 (+8.6%)
Mutual labels:  jit
dynarmic
An ARM dynamic recompiler.
Stars: ✭ 675 (+625.81%)
Mutual labels:  jit
rpaheui
Industrial-strength implementaiton of Aheui written in RPython with JIT
Stars: ✭ 52 (-44.09%)
Mutual labels:  jit
c4
x86 JIT compiler in 86 lines
Stars: ✭ 869 (+834.41%)
Mutual labels:  jit-compiler
RSqueak
A Squeak/Smalltalk VM written in RPython.
Stars: ✭ 78 (-16.13%)
Mutual labels:  jit
compile-command-annotations
Annotation hints for the Hotspot JVM JIT compiler.
Stars: ✭ 38 (-59.14%)
Mutual labels:  jit-compiler

The Basil Programming Language

println "Welcome to Basil!"

def greetings = ["Hello" "Nice to meet you" "Salutations"]

def greet name? greeting? =
    println greeting + ", " + name + "!"

println "What's your name?"
greet (read String) greetings[1]

For more examples, see the example/ directory located in this project's root!

Basil is a fast and flexible language for expressing complex problems in natural terms without compromising readability, simplicity, or performance.

Featuring...*

  • A novel context-sensitive parser that allows seamless manipulation of language syntax.
  • Homoiconicity, supporting Lisp-style metaprogramming via quotations and eval.
  • A "first-class everything" approach - Basil has no keywords, and almost no rigid syntax, so even primitive types and operations can be extended and manipulated.
  • A static, structural type system that permits expressive type-level programming.
  • Evaluation is compile-time by default, with the compiler capable of evaluating arbitrary Basil code.
  • Partial evaluation allows the compiler to "lower" expensive or effectful code, compiling it to efficient native code instead of evaluating it ahead-of-time.
  • Our home-grown compiler backend compiles Basil code quickly, and applies competitive optimizations.
  • Finally, the whole compiler and runtime fits in under a megabyte and depends only on libc.

*Note: Basil is highly WIP! The language is unstable, and these claims may or may not apply on all platforms or for all applications.


Installation

Currently, we only support building the Basil compiler from source. You'll need a C++17-conformant C++ compiler, a Python 2.7 or Python 3 interpreter, and maybe a bit of resourcefulness...

$ git clone https://github.com/basilTeam/basil
$ ./build.py --help             # lists all build options (compiler to use, additional flags, etc)
$ ./build.py basil-release
$ bin/basil help

Basil's language runtime can be compiled separately, as either a statically or dynamically linked library.

$ ./build.py librt-static       # to build a statically-linked library
$ ./build.py librt-dynamic      # to build a dynamically-linked library

Supported Platforms

Operating Systems:

  • Linux
  • Windows
  • MacOS

Architectures:

  • x86_64
  • AArch64
  • RISC-V
  • LLVM
  • WASM

License

Basil is distributed under the 3-Clause BSD License. See LICENSE for details.

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].