Skip to main content

Contributing

Before changing Jazz, read the status, roadmap, and governance to distinguish current behavior from planned work.

Repository map

  • src/ contains the active Haskell compiler and runtime.
  • jazz/ contains the Jazz-authored standard library and hosted compiler.
  • app/ contains the command-line entry point.
  • test/ contains compiler, runtime, CLI, and repository suites.
  • examples/ contains checked teaching programs.
  • programs/ contains production-shaped correctness and benchmark cases.

Before changing Jazz

Semantic language changes are RFC-first. Maintenance and documentation fixes that preserve observable behavior may proceed implementation-first. In either case, keep implementation, focused tests, and affected public documentation in the same change.

Enter the reproducible Nix development shell and use focused tests while working. Before review, run the verification tier appropriate to the change. Long parser-scale, corpus, profiling, and benchmark workloads run weekly, manually, or for release candidates rather than on every pull request.

The canonical contributor guide contains setup, command, repository-ownership, RFC, CI-tier, issue, and pull-request details.

Public examples

A complete runnable program used in public documentation belongs under examples/; inline code is a fragment. If an example contradicts the implementation, correct the claim or propose a language change rather than changing semantics to fit the prose.