Bob Nystrom c5855a6fe9 Squashed commit of the following:
commit f93ec6430f9629b5a28765a3961379d1e8296e50
Author: Bob Nystrom <robert@stuffwithstuff.com>
Date:   Wed Mar 16 08:03:25 2016 -0700

    Tiny tweaks.

commit 332a08fe33cddffec82dbd377ee0c941a0066f64
Merge: a673981 14b7a08
Author: Bob Nystrom <robert@stuffwithstuff.com>
Date:   Wed Mar 16 08:01:00 2016 -0700

    Merge branch 'errorFn' of https://github.com/ppvk/wren into ppvk-errorFn

commit 14b7a086ce
Author: Paul VanKeuren <paul.vankeuren@gmail.com>
Date:   Tue Mar 15 11:33:37 2016 -0500

    missing semicolon, accessing vm through parser in

commit 924eaa1f9d
Author: Paul VanKeuren <paul.vankeuren@gmail.com>
Date:   Tue Mar 15 11:25:32 2016 -0500

    fixed missing errorFn in wren.h

commit 3761df111f
Author: Paul VanKeuren <paul.vankeuren@gmail.com>
Date:   Tue Mar 15 11:23:51 2016 -0500

    Added an errorFn to the CLI

commit d51137b4ab
Author: Paul VanKeuren <paul.vankeuren@gmail.com>
Date:   Tue Mar 15 11:21:16 2016 -0500

    Added a WrenErrorFn typedef, an errorFn slot in WrenConfiguration.  exits early if  is not defined, otherwise it runs the errorFn .
2016-03-16 08:04:03 -07:00
2016-03-07 07:41:00 -08:00
2016-02-14 22:21:50 -08:00
2016-03-16 08:04:03 -07:00
2016-03-16 07:22:18 -07:00
2015-10-18 10:56:11 +01:00
2016-01-17 23:28:25 +05:30
2015-11-21 09:20:50 -08:00

Wren is a small, fast, class-based concurrent scripting language

Think Smalltalk in a Lua-sized package with a dash of Erlang and wrapped up in a familiar, modern syntax.

System.print("Hello, world!")

class Wren {
  flyTo(city) {
    System.print("Flying to %(city)")
  }
}

var adjectives = Fiber.new {
  ["small", "clean", "fast"].each {|word| Fiber.yield(word) }
}

while (!adjectives.isDone) System.print(adjectives.call())
  • Wren is small. The VM implementation is under 4,000 semicolons. You can skim the whole thing in an afternoon. It's small, but not dense. It is readable and lovingly-commented.

  • Wren is fast. A fast single-pass compiler to tight bytecode, and a compact object representation help Wren compete with other dynamic languages.

  • Wren is class-based. There are lots of scripting languages out there, but many have unusual or non-existent object models. Wren places classes front and center.

  • Wren is concurrent. Lightweight fibers are core to the execution model and let you organize your program into an army of communicating coroutines.

  • Wren is a scripting language. Wren is intended for embedding in applications. It has no dependencies, a small standard library, and an easy-to-use C API. It compiles cleanly as C99, C++98 or anything later.

If you like the sound of this, let's get started. You can even try it in your browser! Excited? Well, come on and get involved!

Build Status

Description
The Wren Programming Language. Wren is a small, fast, class-based concurrent scripting language.
Readme MIT 14 MiB
Languages
Wren 84.4%
C 10.7%
Makefile 1.8%
Python 1.6%
Dart 0.6%
Other 0.9%