Skip to content

RockstarLang/rockstar

Repository files navigation

Do you wanna get rocked?

This is Rockstar, an esoteric programming language whose syntax is inspired by the lyrics to 80s hard rock and heavy metal songs.

Rockstar Logotype

What's Here

Rockstar has three main components:

  • /Starship contains the Starship interpreter for Rockstar, built in C# and .NET
  • /cm-lang-rockstar contains the CodeMirror editor used on the Rockstar website
  • /codewithrockstar.com contains the Rockstar website, docs and examples

Building Rockstar

To build the Starship engine, you'll need the .NET 9 SDK

dotnet build ./Starship/Starship.sln
dotnet test ./Starship/

The codewithrockstar.com website is built with Jekyll and hosted on GitHub Pages.

The embedded Rockstar interpreter is the Starship engine compiled to run on web assembly:

dotnet build ./Starship/Starship.sln
dotnet publish ./Starship/Rockstar.Wasm -o codewithrockstar.com/wasm/ -c Debug

Building with GitHub Actions

Building codewithrockstar.com works like this:

build-rockstar-2.0

  • runs on Linux
  • Builds the parser and interpreter
  • Runs the test suite
  • Uploads artifacts for:
    • Linux native binary
    • WASM interpreter for the website

build-windows-binary

  • builds the Rockstar windows binary

build-macos-binary

  • builds the macOS binary

release-rockstar-engine

  • creates the GitHub release from the latest binaries

build-and-deploy-website

  • Downloads the Rockstar WASM binary
  • builds the CodeMirror editor
  • Builds the Jekyll site
  • Deploys the site to GitHub Pages

Debug/Dev Mode Setup

In dev mode, I use symbolic directory links between the various parts of the project. Rebuilding the .NET solution will rebuild the WASM interpreter, which Jekyll can see as /wasm/**, and trigger a site rebuild, and all the Rockstar code examples are part of both the Rockstar.Test .NET test suite project and the codewithrockstar.com site:

> cd codewithrockstar.com
> mklink /d wasm ..\Starship\Rockstar.Wasm\bin\Debug\net8.0-browser
> mklink /d examples ..\Starship\Rockstar.Test\programs\examples
codewithrockstar.com
  /wasm --> [ /Starship/Rockstar.Wasm/bin/Debug/net8.0-browser ]
  /examples --> [ /Starship/Rockstar.Test/programs/examples ]
  /index.html
  /example.md
  /js
 	/rockstar-editor.js (from codemirror)