1 Overview
1.1 Quickstart
The main entry point is zordoz.rkt. If you have a bytecode file ready, run
racket zordoz.rkt FILE.zo
and you’re started. Type help at the REPL to see available commands.
zo> help At your service. Available commands: alst Print command aliases back Move up to the previous context dive ARG Step into struct field ARG find ARG Search the current subtree for structs with the name ARG help Print this message info Show information about current context jump Revert to last saved position save Save the current context as jump target quit Exit the interpreter
1.2 Building
The included Makefile runs raco make zordoz.rkt to generate an executable. The Makefile additionally renames this executable to zordoz, so you can run:
./zordoz FILE.zo
If you installed via raco, then the command raco zordoz FILE.zo should work just as well.
1.3 Testing
Each source file contains a module+ test with unit tests. Run them all with:
make test
or individually using:
raco test FILE.rkt
1.4 Manifesto
The goal of this project is to help explore Racket bytecode in any useful way.
Racket offers a de-compilation API, however the structs it produces are still dense reading. This project takes a de-compiled zo struct and offers:
A string representation of the struct, with name and fields clearly labeled.
Step-by-step exploration of the struct’s fields.
A simple search interface for finding structs nested within the current.
We hope to add more features, especially a tool for comparing two bytecode files. Feedback and suggestions appreciated!