Skip to content

ZNixian/wren

This branch is 303 commits behind wren-lang/wren:main.

Folders and files

NameName
Last commit message
Last commit date
Mar 14, 2018
Apr 26, 2018
Jan 13, 2017
Apr 28, 2018
Apr 28, 2018
Mar 14, 2018
Mar 14, 2018
Dec 29, 2016
Jan 18, 2018
May 21, 2016
Apr 23, 2018
Mar 14, 2018
Feb 17, 2018

Repository files navigation

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

About

The Wren Programming Language

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C 61.4%
  • C++ 16.6%
  • Python 12.3%
  • Dart 4.3%
  • Makefile 1.9%
  • Lua 1.9%
  • Ruby 1.6%