bench | locli: Add typst report generation; remove dependency on em Emacs bundle
#6418
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
This PR introduces a new pipeline for generating benchmarking report PDFs via
typst.The existing one utilizes a custom-modded Emacs bundle
emand relies on Org mode to pull in source data, and Org mode formulae to calculate deltas - meaning that actual application logic is implemented in a spreadsheet document. These calculations have now moved tolocliproper.Currently, the only report type supported by
typstis the comparison report - which is also the only hard dependency forem. In the future, other report types like single-run PDFs or variance analyses can also be built using the new pipeline.typstcomparison source documents will be automatically generated alongside Org mode reports for now; in the future, the latter will be removed entirely.Furthermore:
typstreports are added tolocli.typst) by flipping x- and y-axes.typst).wb a pdfcommand now uses thetypstpipeline by default.Last but not least, the flake input (and output) for
emis removed. This should improve workbench builds both for CI and locally, and de-risk futurenixpkgsbumps, where some legacy items pulled in byemmight present as blockers.While this PR leaves the Org mode pipeline fully functional, it will require a manual install of https://github.com/mgmeier/em/ from now on.
Why
typst:typstCLI is a modern typesetting document compiler; for our case it eliminates the need for much larger dependencies like LaTeX and the universe that comes with it.typstsource documents have a syntax as clear and concise as Markdown, while being fully scriptable and styleable. This allows e.g. for plotting to be done inline, by the compiler.nixpkgs, with a much lower dependency footprint thatem+ LaTeX.nixpkgsvs. individual flakeTo successfully remove the
emflake input without waiting for a global lockfile update (our current lock is stuck ontypst0.13), I temporarily sourcedtypst0.14.2 from a pinnednixos-25.11revision.Checklist
See Runnings tests for more details
CHANGELOG.mdfor affected package.cabalfiles are updatedhlint. See.github/workflows/check-hlint.ymlto get thehlintversionstylish-haskell. See.github/workflows/stylish-haskell.ymlto get thestylish-haskellversionghc-9.6andghc-9.12