Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ninjascl/wren-odin
ð“…¨ Wren in Odin. Bindings for using Wren inside Odin.
https://github.com/ninjascl/wren-odin
bindings c99 odin-lang wren-language
Last synced: 16 days ago
JSON representation
ð“…¨ Wren in Odin. Bindings for using Wren inside Odin.
- Host: GitHub
- URL: https://github.com/ninjascl/wren-odin
- Owner: NinjasCL
- License: bsd-3-clause
- Created: 2024-11-01T21:29:56.000Z (18 days ago)
- Default Branch: main
- Last Pushed: 2024-11-03T02:35:44.000Z (17 days ago)
- Last Synced: 2024-11-03T03:20:13.695Z (17 days ago)
- Topics: bindings, c99, odin-lang, wren-language
- Language: C
- Homepage: https://ninjascl.github.io/wren-odin/0.4
- Size: 1.53 MB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.md
- Authors: AUTHORS.md
Awesome Lists containing this project
README
# Wren in Odin
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.```js
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.## Links
- Syntax: http://wren.io/syntax.html
- Github: https://github.com/wren-lang/wren/tree/main/src
- Getting Started: http://wren.io/getting-started.html## Usage
See more complete examples at `example.odin` and `tests/wren_tests.odin`
```odin
package mainimport "core:fmt"
import wren "../vendor/wren/0.4"
main :: proc() {
config := wren.Configuration{}
wren.InitConfiguration(&config)vm := wren.NewVM(&config)
module : cstring = "main"
script : cstring = `System.print("Hello Wren from Odin!")`
result := wren.Interpret(vm, module, script)switch result {
case .WREN_RESULT_COMPILE_ERROR:
fmt.println("Compile error")
case .WREN_RESULT_RUNTIME_ERROR:
fmt.println("Runtime error")
case .WREN_RESULT_SUCCESS:
fmt.println("Success!")
}
}
```## License
- BSD-3
## Credits
Made with ♥ by
Ninjas.cl
.