• Stars
    star
    193
  • Rank 200,468 (Top 4 %)
  • Language
    Perl
  • License
    Other
  • Created over 11 years ago
  • Updated almost 5 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A programming language I can like. Unholy and full of magic.

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.

More Repositories

1

crawler

I needed a serious web crawler for search engine applications. This is it.
C++
75
star
2

Utilator

Utilitarian "Todo" Management
Java
8
star
3

sfhttpd

sfhttpd
C
7
star
4

vim-multiuser

Developing a production-grade multi-user feature for VIm
C
5
star
5

Igor

A proof assistant for metamath, specialized for set.mm
Objective-C++
4
star
6

DataOverAudio

A simple/simplistic software modem for reliable data transmission over arbitrary channels.
C++
3
star
7

colorblind

An android app to help people discern colors if their eyes don't support it.
Java
3
star
8

compile-time-adventures

Using C++ compilers as slightly inconvenient Mealy-machine interpreters since 2018.
C++
3
star
9

fullcover

A more powerful `go tool cover`
Go
2
star
10

jura-parse

Automated parsing and doing stuff with laws and regulations.
Perl
1
star
11

Intercom

Very simple^Histic intercom implementation for home
C
1
star
12

Elymas-1st-design

A programming language I can like: It's unholy and full of magic.
C
1
star
13

talks-C---Anonymous-Classes

"Slides" of a short talk given at Stratum0
C++
1
star
14

talks-C---Placement-New

1
star
15

TypeProfile

A program to recognise people according to their typing profile.
C++
1
star
16

etherVIm

VIm<->Etherpad Lite
C
1
star
17

redmine-transparency

An external application to create customized reports of redmine contents.
Perl
1
star
18

political-feeds

Aggregation and semi-automatic analysis of various political RSS feeds
Perl
1
star
19

NetGraph

An animated graphical display of the current network traffic
C++
1
star
20

Reningsverk

Deal with liquid feedback. Like a professional.
C++
1
star
21

bin

Various mini-tools from ~/bin
Shell
1
star