created_at2024-03-07 22:50:40.553022
updated_at2024-03-25 18:09:05.970887
descriptiongoboscript is the Scratch compiler.
aspizu (aspizu)






Installation and documentation

goboscript is a text-based programming language which compiles to Scratch. It allows you to write Scratch projects in text, and compile it into a .sb3 file - which can be opened in the Scratch editor, TurboWarp or be uploaded to the Scratch website.

goboscript allows you to create advanced Scratch projects with ease, you can use any text editor, use a version control system such as git. You can refactor your code using search and replace. Text code can be copy pasted, which allows you to easily reuse code or share it with others. goboscript syntax is concise and easy to read.

goboscript allows you to integrate external tooling and workflows, such as using a script to generate costumes for a text rendering engine. Or loading in images into lists.

goboscript has a powerful macro system - similar to Rust's macro system. This allows you to write macros to generate code.

goboscript is more than just an 1:1 mapping of Scratch blocks to text, it also has additional features like local variables for procedures (custom blocks).

goboscript also performs optimizations, detects problems and unused code.

goboscript Scratch


goboscript welcomes contributions in the form of Pull Requests.

goboscript is written in Rust. You'll need to install the Rust toolchain for development.

[!NOTE] To install goboscript, follow instructions at aspizu.github.io/goboscript. These instructions are for people who want to develop goboscript itself.

git clone https://github.com/aspizu/goboscript
cd goboscript


After cloning the repository, run goboscript locally from the repository root with:

cargo run -- build -i your_project/

But, to make development easier, and to validate the generated Scratch project - use the tools/run script:

tools/run compile

This assumes that you have set-up a testing project at playground/. It will compile the project, validate it using the schemas from scratch-parser. If the validation fails, Scratch will refuse to load the project. To further debug the project, the generated project.json file is extracted from the .sb3 file in the playground/ directory.

Lets say that you modified the generated project in the Scratch editor or Turbowarp, and you want to look at the project.json. You can extract it with:

tools/run uncompile

Lets say that goboscript produced a broken project, and you are able to fix it by hand - by modifying the project.json. You can add back the project.json to the .sb3 file with:

tools/run patch

If you want to validate some .sb3 file, use:

tools/run check path/to/project.sb3
Commit count: 212

cargo fmt