Skip to content

[DRAFT] Rewrite DragonRunner in Rust?#21

Open
JustinMeimar wants to merge 45 commits intomainfrom
justin/rust-rewrite
Open

[DRAFT] Rewrite DragonRunner in Rust?#21
JustinMeimar wants to merge 45 commits intomainfrom
justin/rust-rewrite

Conversation

@JustinMeimar
Copy link
Collaborator

@JustinMeimar JustinMeimar commented Mar 2, 2026

Motivations:

  1. Deploying dragon-runner on the lab machines had some issues.
    • Ancient python version (3.8) we had to conform to.
    • Error pronechmod in the CMPUT415 users' local python packages to get
      the binary to unlock (now we have a single statically linked executable.)
  2. Fuses gazbolt into this project.
  3. Opus 4.6 let me drive this in a few hours.

Refactors:

  • Full rewrite of dragon-runner from python to rust driven by Claude Opus 4.6
  • Simplified toolchain config json (exe/args instead of stepName/executablePath/arguments/output).
    The lingering config files on the lab machines will need to be updated (along with the executable.)
  • proc-macro logging system replacing scattered print statements
  • Toolchain runner rewritten as try_fold pipeline rather than imperative hair ball.
  • Updated README to reflect changes.

Fixes:

  • memcheck mode is now decoupled from valgrind-specific configs. This was a hazard last year,
    running memcheck w/o the specific config gave false positives.
  • All grading scripts now driven from a single key system. We can fill out once with each students
    information at the beginning of a semester, then automatically drive cloning, building, testfile
    pruning, config synthesis, etc, which require some alignment with student info.

Features:

  • Parallel test execution within subpackages.
  • Serve mode for producing a compiler explorer for any config, using a light-weigt HTML and JS single
    files in lieu of "Gazbolt" (not sure if we want to bring a svelte dependecy into this project.)
  • SKIP directive for skipping individual test files. (closes [FEAT] Explicit Skip Rule #18)
  • --full-path flag to log absolute test paths on failure. (closes [FEAT] Print full failing test paths #19)

Todo:

  • Sleep on it... I'm probably forgetting something.

also attach missing run_tests.sh script from many changes ago
@JustinMeimar JustinMeimar requested a review from Sir-NoChill March 2, 2026 06:40
Previously the `solutionExecutable` field was an implicitly required
to use a config in tournament mode. Failing to provide it caused silent
errors. Now it is a CLI argument, reducing coupling on the config.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[FEAT] Print full failing test paths [FEAT] Explicit Skip Rule

1 participant