• This repository has been archived on 28/Mar/2023
  • Stars
    star
    130
  • Rank 277,508 (Top 6 %)
  • Language
    JavaScript
  • License
    MIT License
  • Created almost 11 years ago
  • Updated almost 8 years ago

Reviews

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

Repository Details

[status: superseded by Purr] Sirën is an experimental context-based programming language with ad hoc multiple hierarchies, and multimethods.

Siren

Siren is an experimental prototype-based object-oriented language. It differs from existing languages in that it uses a single delegation slot for sharing (and cheap instantiation), but allows controlled lexical extensibility.

Getting started

Siren's support for arbitrary-precision arithmetic uses the bignum library, so you'll need to have a C++ compiler and the headers for the OpenSSL library.

Install the Node.js 4.0.0+ (you'll need WeakMaps and Symbols), Make, and Git. After that clone this repository, and run make compile. This will generate a bin/siren compiler/interpreter, and a REPL bin/isiren.

$ git clone https://github.com/robotlolita/siren.git
$ cd siren
$ npm install
$ make all
$ bin/siren

You can use the REPL to try out pieces of code interactively:

$ bin/isiren
Type :quit to exit (or ^D).

> 1 + 1
=> <Integer: 2>

You can run individual files with the same binary. There are examples in the examples/ folder:

$ bin/siren examples/trivial/hello-world.siren

You can compile things to plain JavaScript using the --compile flag, but you'll need to pass the proper runtime to the module in order to run it:

$ bin/siren --compile examples/trivial/hello-world.siren > hw.js
$ node -e "require('./hw.js')(require('./runtime))"
Hello, world

More

  • Feel free to ask @robotlolita anything related to this project on Twitter.

  • Things will eventually be added to the Wiki, but also blogged about on http://robotlolita.me/

More Repositories

1

raven

(hiatus) Raven is a minimal, distraction-free text editor with good typography.
JavaScript
428
star
2

compsci-answers

A collection of answers I gave on Quora, categorised and easier to find
99
star
3

metamagical

(unmaintained) Meta:Magical allows you to annotate objects in JavaScript, and inspect them in an interactive environment (REPL).
JavaScript
58
star
4

robotlolita.github.io

Personal website
HTML
32
star
5

tamago

(superseded by: https://github.com/qteatime/crochet) A safe, extensible, layered programming language that runs on top of JavaScript
JavaScript
32
star
6

furipota

(unmaintained) A discrete FRP DSL for describing better build pipelines.
JavaScript
22
star
7

funky

(toy) A tiny little language written to answer a Quora question because :'>
JavaScript
19
star
8

emoj

Emoj is a modern, concatenative language for the browser. (april's fool project)
JavaScript
19
star
9

effects

(experiment) Composable effects with one-shot continuations for JavaScript!
JavaScript
18
star
10

javascript-course

Materials for a JS course I taught a few years ago
JavaScript
14
star
11

cursed-aoc

Advent of Code 2021, but I can only use TypeScript's type system to solve the puzzles
TypeScript
13
star
12

promises-benchmark

Benchmark for real-world scenarios for Promises/A+ & alternatives
JavaScript
9
star
13

pocket-lisp

A small, pure, embeddable Lisp dialect
Clojure
8
star
14

lingua

A PEG DSL with typed semantics and left recursion
F#
7
star
15

liz

(toy) A minimal dialect of Lisp/Kernel with first-class macros
JavaScript
6
star
16

plis

(experiment) Minimal call-by-value lambda calculus with native-image
Clojure
6
star
17

tinykaren

(toy) Tiny Karen is an implementation of µKanren in Reason.
OCaml
5
star
18

boon-scrolling

A small simulation about doom-scrolling—except all content is cute and positive.
5
star
19

generique

(toy) A library for generic programming in Erlang
Erlang
5
star
20

contextual-multimethods

(experiment) A repository to experiment with the new concept of contextual multimethods in Siren
JavaScript
4
star
21

fohm

[unmaintained] Fohm is a PEG parser generator for F# (currently targeting only Fable)
JavaScript
4
star
22

erlang-comma-first-formatter

A comma-first formatter for rebar3_formatter
4
star
23

mei

[unmaintained] A type-safe and practical command line interface parsing library for Fable and .NET core
F#
3
star
24

query

(toy) A simple unification/search algorithm
JavaScript
3
star
25

crochet-exercises

A bunch of programming exercises, but done in Crochet
JavaScript
3
star
26

robotlolita

1
star
27

belle

A small programming language based on the concept of Belles Lettres.
CSS
1
star