Home

Awesome

Rhovas

Welcome! Rhovas is a programming language intended for API design and enforcement. Using Rhovas, developers can better express the contracts and intention of their code to help create maintainable, correct, and performant software.

This repository is the implementation of Rhovas itself. For more information on Rhovas, see the following links:

Running Locally (Latest Changes)

The Online Editor runs the latest release of Rhovas. To run the latest changes off of the current master branch (e.g. for testing unreleased features) you will need to build and run Rhovas locally.

This process is made relatively straightforward using Gradle. You will need to have a JDK/JRE installation for Java (recommended latest LTS+), such as releases from Adoptium.

#from the desired directory, e.g C:\dev\Rhovas:
git clone https://github.com/Rhovas/Interpreter
cd Interpreter
./gradlew build #eta: ~3-4m

java -jar build/libs/Interpreter-${version}.jar #starts a REPL session
java -jar build/libs/Interpreter-${version}.jar file.rho #executes a file

Note that while the REPL is convenient for quick testing, using a file is often safer as the REPL is lacking many common quality-of-life features for longer sessions (e.g. editing the last prompt to fix errors).

Project Structure & Setup

This information is for other developers to understand and contribute to the Rhovas interpreter. To try out the language itself, see the Online Editor.

Rhovas is setup as a Kotlin Multiplatform project using Gradle. Kotlin is very similar to Rhovas, and multiplatform support allows both the online editor (js) and the command-line executable (jvm). IntelliJ is recommended for it's Gradle support (plus Kotlin); for details on how to open Gradle projects and run tasks see the IntelliJ Gradle docs.

The project is structured as follows:

A few notable Gradle tasks are documented below. Gradle (and IntelliJ) will likely take some time to configure and index, as well as on the first build (which has to compile everything and setup nodejs for jsTest).

For manual testing, it is often more convenient to create a run configuration which uses the JVM Main.kt directly rather than going through Gradle build.

Sponsor Me!

If you appreciate the work I do, please consider sponsoring me! Sponsors receive a Sponsor role on the Discord Server and will also be listed on the Rhovas website.