Skip to content
forked from risor-io/risor

A fast and flexible embedded scripting language for Go projects.

License

Notifications You must be signed in to change notification settings

KnockOutEZ/risor-io

 
 

Repository files navigation

Risor

CircleCI MIT license Go.Dev reference Go Report Card Releases

A fast and flexible embedded scripting language for Go projects. Risor compiles scripts to bytecode internally which it then runs on a lightweight Virtual Machine (VM). Risor is written in pure Go.

Risor modules integrate the Go standard library, making it easy to write scripts using functions that you're already familiar with as a Go developer.

Notice: Project Renamed

Risor is a young project and until June 28, 2023 was known as Tamarin. For various reasons, the project needed a new name that would take the project into the future. Risor is a fun name, a bit shorter, and I can get a domain name for the project. Thanks for bearing with me during this update!

Documentation

Documentation is available at risor-io.github.io/risor.

Getting Started

The Quick Start in the documentation is where you should head to get started.

If you use Homebrew, you can install the Risor CLI as follows:

brew tap risor-io/risor
brew install risor

Having done that, just run risor to start the CLI or risor -h to see usage information.

Using Risor

Risor is designed to be versatile and accommodate a variety of usage patterns. You can leverage Risor in the following ways:

  • REPL: Risor offers a Read-Evaluate-Print-Loop (REPL) that you can use to interactively write and test scripts. This is perfect for experimentation and debugging.

  • Library: Risor can be imported as a library into existing Go projects. It provides a simple API for running scripts and interacting with the results, in isolated environments for sandboxing.

  • Executable script runner: Risor scripts can also be marked as executable, providing a simple way to leverage Risor in your build scripts, automation, and other tasks.

  • API: (Coming soon) A service and API will be provided for remotely executing and managing Risor scripts. This will allow integration into various web applications, potentially with self-hosted and a managed cloud version.

Quick Example

Here's a short example of how Risor feels like a hybrid of Go and Python, with new features like pipe expressions for transformations, and with access to portions of the Go standard library (like the strings package):

array := ["gophers", "are", "burrowing", "rodents"]

sentence := array | strings.join(" ") | strings.to_upper

print(sentence)

Output:

GOPHERS ARE BURROWING RODENTS

Syntax Highlighting

A Risor VSCode extension is already available which currently only offers syntax highlighting.

You can also make use of the Risor TextMate grammar.

Contributing

Risor is intended to be a community project. You can lend a hand in various ways:

  • Please ask questions and share ideas in GitHub discussions
  • Share Risor on any social channels that may appreciate it
  • Open GitHub issue or a pull request for any bugs you find
  • Star the project on GitHub

Discuss the Project

Please visit the GitHub discussions page to share thoughts and questions.

Credits

Check CREDITS.md.

License

Released under the Apache License, Version 2.0.

Copyright Curtis Myzie / github.com/myzie.

About

A fast and flexible embedded scripting language for Go projects.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Go 98.7%
  • Tcl 0.6%
  • TypeScript 0.3%
  • Makefile 0.2%
  • JavaScript 0.1%
  • Python 0.1%