Keyboard shortcuts

Press ? to show this help

Press Esc to hide this help

Introduction

Hull is a Nix-based framework for competitive programming problem authoring, analysis, and packaging.

What is Hull?

Hull defines problems and contests in Nix. It compiles programs to WASI Preview 1 source WASM. It runs them through a deterministic Wasmtime-backed runner. It packages analyzed results for judge systems or local inspection.

  • Nix defines build inputs and package structure.
  • WASI Preview 1 source WASM provides the authoritative execution input.
  • Hull CLI performs runtime analysis and packaging.

Why Hull?

Hull treats a problem as one reproducible pipeline rather than a collection of scripts.

  • Reproducible problem pipelines: Nix definitions connect programs, generated data, validation, official outputs, solution predictions, documents, and packages in one buildable problem model. A build checks the relationships between them. It does not merely compile files.
  • Deterministic WASIp1 execution: Hull runs authoritative source WASM with explicit tick, memory, filesystem, standard-stream, and per-resource file-size contracts, including deterministic multi-program interaction.
  • Data-driven Typst documents: Generate multilingual statements, technical overviews, and contest booklets from analyzed problem data. Templates can inject samples and subtasks. They can render validator-backed visualizations. See Document Generation with Typst.
  • Programmable judging: Start with batch, standard-input/standard-output interaction, or answer-only judging. Define a custom judger when a problem needs multiple evaluation stages, a specialized protocol, or custom scoring. See Custom Judgers.
  • Targets are an extension point: Package a problem or contest for supported judge systems and participant environments. Define a target for a project-specific directory, archive, or deployment format when needed. See Problem and Contest Targets.
  • End-to-end parallel execution: Hull uses available CPU parallelism by default across problem builds, contest builds, judging, and stress testing. Artifact builds and final packaging retain Nix’s own parallel scheduling. This lets high-core-count servers process large solution and testcase sets with high throughput.
  • Designed for AI agents: Hull publishes Agent Skills, llms.txt, Typst source mirrors, and generated Nix option references. An agent can use these machine-readable entry points to discover exact configuration. It can also follow a complete problem-authoring workflow. See Creating a New Problem.