All Projects → Drahflow → Elymas

Drahflow / Elymas

Licence: gpl-3.0
A programming language I can like. Unholy and full of magic.

Programming Languages

perl
6916 projects

Labels

Projects that are alternatives of or similar to Elymas

Whale
Hook Framework for Android/IOS/Linux/MacOS
Stars: ✭ 1,128 (+579.52%)
Mutual labels:  jit
Lua Vermelha
A Lua implementation with an Eclipse OMR based JIT compiler
Stars: ✭ 91 (-45.18%)
Mutual labels:  jit
Yolov5 Rt Stack
Yet another yolov5, with its runtime stack for libtorch, onnx, tvm and specialized accelerators. You like torchvision's retinanet? You like yolov5? You love yolort!
Stars: ✭ 107 (-35.54%)
Mutual labels:  jit
Jit Compiler
JIT compiler in Go
Stars: ✭ 70 (-57.83%)
Mutual labels:  jit
Uefi Jitfuck
A JIT compiler for Brainfuck running on x86_64 UEFI
Stars: ✭ 83 (-50%)
Mutual labels:  jit
Diojit
Fully compatible CPython jit compiler. Optimising Dynamic, Interpreted, and Object-oriented(DIO) programs.
Stars: ✭ 95 (-42.77%)
Mutual labels:  jit
Llvm Hs Examples
Examples for Haskell bindings to LLVM
Stars: ✭ 51 (-69.28%)
Mutual labels:  jit
Jphp
JPHP - an implementation of PHP on Java VM
Stars: ✭ 1,665 (+903.01%)
Mutual labels:  jit
Luwa
WIP jit lua to wasm
Stars: ✭ 88 (-46.99%)
Mutual labels:  jit
Avr Vm
VM with JIT-compiler for ATMega32 written in Rust
Stars: ✭ 106 (-36.14%)
Mutual labels:  jit
Cppadcodegen
Source Code Generation for Automatic Differentiation using Operator Overloading
Stars: ✭ 77 (-53.61%)
Mutual labels:  jit
Bfjit
Brainfuck JIT 虚拟机教程
Stars: ✭ 81 (-51.2%)
Mutual labels:  jit
Mono
Mono open source ECMA CLI, C# and .NET implementation.
Stars: ✭ 9,606 (+5686.75%)
Mutual labels:  jit
Nx
Multi-dimensional arrays (tensors) and numerical definitions for Elixir
Stars: ✭ 1,133 (+582.53%)
Mutual labels:  jit
Dotnetbook
.NET Platform Architecture book (English, Chinese, Russian)
Stars: ✭ 1,763 (+962.05%)
Mutual labels:  jit
Wasmjit
Small Embeddable WebAssembly Runtime
Stars: ✭ 1,063 (+540.36%)
Mutual labels:  jit
Evoasm.rb
An AIMGP (Automatic Induction of Machine code by Genetic Programming) engine
Stars: ✭ 91 (-45.18%)
Mutual labels:  jit
Jitfromscratch
Example project from my talks in the LLVM Social Berlin and C++ User Group
Stars: ✭ 158 (-4.82%)
Mutual labels:  jit
Learn Javascript
《前端基础漫游指南》深入的、系统的学习 javascript 基础,喜欢点 Star
Stars: ✭ 128 (-22.89%)
Mutual labels:  jit
Nanojit
NanoJIT is a small, cross-platform C++ library that emits machine code.
Stars: ✭ 101 (-39.16%)
Mutual labels:  jit
Elymas logo

Just because I'm not following the true path, doesn't mean I can't get it to work.

Build Status

Examples

A programming language...

1 dump
# 0000000000000001

... stack based programming language ...

1 2 add dump
# 0000000000000003

... with array support ...

[ 1 2 ] dump
# [
#   0000000000000001
#   0000000000000002
# ]

... did I mention array support ...

2 [ 1 2 ] add dump
[ 0 1 ] [ 1 2 ] add dump
# [
#   0000000000000003
#   0000000000000004
# ]
# [
#   0000000000000001
#   0000000000000003
# ]

... user definable functions ...

{ 2 add } /addTwo deffst
1 addTwo dump
# 0000000000000003

... variables ...

2 ==two
1 two add dump
# 0000000000000003

... function objects ...

{ { 2 add } } /returnAddTwo deffst
returnAddTwo /addTwo deffst
1 addTwo dump
# 0000000000000003

... closures ...

{ 2 ==two { two add } } /returnAddTwo deffst
returnAddTwo /addTwo deffst
1 addTwo dump
# 0000000000000003

... structured data types ...

<
  1 ==one
  2 ==two
> ==struct

struct keys dump
struct .two dump

# [
#   "one"
#   "two"
# ]
# 0000000000000002

... and more.

"Elymas" { "(..)(.*)" regex } |dump loop

# "El"
# "ym"
# "as"

Technical Pecularities

  • no runtime interpreter, executes real assembly
    • same binary both interpretes and compiles
  • freeze arbitrary program states to ELF-binaries
  • self hosted via { "/dev/stdin" include }' "interpreter" sys .freeze
    • yes, this works and generates a stand-alone interpreter/compiler
    • bootstraps from perl
      • no perl left in final binaries
  • macro support
  • names carry information about being constant or constantly having the same type each resolution
    • just-too-late opcode optimization
    • so at least one resolution is guaranteed to have taken place
    • can declare names any time before first usage
  • assembly optimizer realized as a loadable library
    • yes, it does optimize itself while running
  • regex-engine written in the language itself
  • source includes an assembler for 64bit x86

Features

  • non-braindead stack manipulation, e.g. -021 specifies "top element, then third, then second"
  • concatenative language syntax, e.g. data modifyOne modifyTwo modifyThree
  • trivial to build DSLs
  • compact code
    • more readable than APL though
    • unless you don't want it to be
  • acceptable performance (and you can always switch to assembly if necessary)
  • I actually use it for non-trivial projects

Documentation

Please see the tutorial for an introduction and further documentation.

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