Project

Contributing

sass2mlir is looking for contributors. The project is at 0.10.0: the core loop — byte-exact lift/lower, the analyses, the register allocator, the apply engine, intercept — is built and regression-gated, but the interesting work is exactly the kind a community can parallelize: more architectures, more passes, more corpus. If you know GPU assembly, compilers, or just like breaking tools on weird cubins, there’s a place for you here.

The project is AGPL-3.0+. Contributions land as pull requests against the main repository; every source file carries the SPDX header (SPDX-License: AGPL-3.0+, Copyright (c) SASS2MLIR Contributors), which is also how authorship is tracked — contributors hold their own copyright.

Where help is needed

Good places to start

Roughly in order of how much existing infrastructure you can lean on:

AreaWhat you'd doNeeds
Corpus & validationDonate cubins from unusual toolkits/archs; extend the corpus regression; file decode/encode mismatches with minimal reproducersa GPU, curiosity
Pass pluginsNew SASS→SASS transforms in passes/ — scheduling, dequant strength reduction, epilogue fusion; the ABI is small and the shipped passes are the examplesC++, GPU arch intuition
Opcode tablesExtend or refine the probe-derived opcodes/SM* tables; new-architecture bring-up is a data problem, not a rewritepatience, access to the GPU
Tooling & docsProbing tools, harvest/intercept workflows, these docs, example walkthroughswriting, Python

Not sure where you fit? The examples are the fastest way to find out which layer of the stack you enjoy — every one of them is a real workflow you can run and break.

The workflow

How a patch lands

  1. Build and gate green first. Install from source, run ninja -C build check-sass, and have the corpus regression passing before your change — that’s your baseline.
  2. Make the change. Follow the code style — it is enforced by review, not by a formatter, so matching it from the start saves everyone a round trip.
  3. Prove it the project’s way. The correctness culture is byte-exactness and oracles, not vibes:
    • lift/lower changes → roundtrip stays at zero mismatches, corpus-wide;
    • encoder changes → crosscheck on the affected corpus;
    • a pass → report-mode output reviewed first, then mode = "apply" with a byte-diff showing only the intended instructions changed, plus a correctness gate on real hardware where the pass changes semantics;
  4. Changelog it. User-visible changes get an entry under Unreleased in the changelog as part of the PR.
  5. PR with the evidence in the description — gate output, not adjectives.
Conduct & communication

The social contract, briefly

  • Technical disagreement is normal and welcome; bring measurements. This project’s own history is full of confident theories killed by a two-minute probe — see how the megakernel campaigns’ lessons were all “measured, not theorized”.
  • Be direct, be kind, assume competence. No harassment, no dignity games — maintainers’ call, enforced.
  • Security issues (a kernel-level attack primitive, a sandbox-relevant bug) go to the maintainers privately first, not the public tracker — the blacklisting work is exactly the kind of thing coordination helps.