risor

package module
v0.5.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 22, 2023 License: Apache-2.0 Imports: 24 Imported by: 5

README

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.

Directories

Path Synopsis
Package ast defines abstract syntax tree types that represent Risor code.
Package ast defines abstract syntax tree types that represent Risor code.
Package builtins defines the default set of builtin functions for Risor.
Package builtins defines the default set of builtin functions for Risor.
cmd
risor-lsp
This package implements a Risor language server.
This package implements a Risor language server.
risor-docs Module
risor-modgen Module
Package compiler is used to compile an Abstract Syntax Tree (AST) into its corresponding bytecode.
Package compiler is used to compile an Abstract Syntax Tree (AST) into its corresponding bytecode.
examples
go/struct Module
internal
arg
cfg
tmpl
Package tmpl is used to parse Risor string templates.
Package tmpl is used to parse Risor string templates.
Package lexer contains the code to lex input programs into a stream of tokens.
Package lexer contains the code to lex input programs into a stream of tokens.
modules
all
aws
fmt
os
pgx
bcrypt Module
carbon Module
cli Module
gha Module
jmespath Module
kubernetes Module
sql Module
template Module
vault Module
Package object defines the standard set of object types in Risor.
Package object defines the standard set of object types in Risor.
Package op defines the opcodes that are used in the Risor virtual machine.
Package op defines the opcodes that are used in the Risor virtual machine.
os
Package parser is used to parse an input program from its tokens and produce an abstract syntax tree (AST) as output.
Package parser is used to parse an input program from its tokens and produce an abstract syntax tree (AST) as output.
Package repl implements a read-eval-print-loop for Risor.
Package repl implements a read-eval-print-loop for Risor.
tests
Package token defines the tokens that are produced when lexing Risor code.
Package token defines the tokens that are produced when lexing Risor code.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL