Version 2.0.0
-
Alectryon is now compatible with Rocq 9, Docutils 22, Sphinx 9.1, Pygments 2.19, and Python 3.9+.
-
Alectryon now supports the two main Rocq LSP servers: VsRocq and coq-lsp. VsRocq is the default for Rocq files, replacing SerAPI; it is reasonably well supported. Coq-lsp is experimental. SerAPI is still supported for Coq versions < 9. Known limitations are documented in VsRocq issues #1198, #1199, #1201, #1203, #1204, #1205, #1206, #1209, and #1210; help is welcome to fix these issues and improve VsRocq support (for now, Alectryon bundles mitigation for most of them). [ffffc91, 9ff1e75, c28fb38, 81dcd0a, 830f41e, 8c4f256]
-
Settings from
_RocqProjectfiles are now recognized and applied. This makes it easy to configure dependencies (-Q …), warnings (-arg -w -arg -notation-for-abbreviation), printing parameters (-arg -set -arg "'Printing Depth=30'",-arg -set -arg "'Printing Width=55'"), etc. -
Alectryon now has experimental support for Dafny, including a literate-programming mode (conversions between Dafny files with
///comments and reST/Markdown documents) and semantic highlighting via the Dafny LSP server. [1f8370e, ca1b078, 6bdcd55] -
Alectryon now supports literate programming in Markdown in addition to reStructuredText. Markdown files (
.md,.myst) containing{coq}code blocks can be rendered to LaTeX or HTML through Docutils, or converted to Rocq files (.v) with(*| … |*)comments using thecoqbackend, and vice versa using thecoq+mdfrontend. [e17fe93, 46f037b, c5253aa, 8563218, 901247d] -
HTML and LaTeX files containing Rocq snippets can now be ingested by Alectryon and rewritten to insert recorded goals and prover outputs, using the new
htmlandlatexfrontends. This makes it possible to process code blocks embedded in HTML or LaTeX documents without going through Docutils. [cc16941, 49f7ec1] -
alectryon-modenow supports Dafny, Lean 4, and markdown-mode buffers. [cf948f9, b7313ae, 32f0e1e, bec2575] -
Exporting to LaTeX now displays hypotheses bodies in addition to hypothesis types. [3456a60, d1f827c]
-
A
noopdriver is now available for all languages, skipping prover execution entirely. [929066a]
Bug fixes
-
(HTML) Do not add an HTML4 xmlns attribute to HTML5 outputs. [fab5384]
-
(LaTeX) Fix an incompatibility with the hyperref package by namespacing alectryon macros (
\al{xyz}expands toalectryon@xyz). [716454d] -
(LaTeX export) Prevent narrow spaces in
\alectryonInline{}macros from propagating to\begin{alectryon}environments. [76fc9e0] -
(LaTeX) Fix a compatibility issue with the
longtablepackage. [b5c3bfb]
Breaking changes
-
(CLI) Error messages from Rocq now include column information. [1fdcd00]
-
(Rocq) The default Coq driver is now
vsrocq(wassertop). SerAPI is still available using--coq-driver sertop. [81dcd0a] -
(Rocq) The
coqdocfrontend now invokesrocq docinstead ofcoqdoc. [829fde4] -
(Rocq) The default printing width and depth are now determined by Rocq, not Alectryon. To recover the previous behavior, create a
_RocqProjectfile with-arg -set -arg "'Printing Depth=30'"and-arg -set -arg "'Printing Width=55'". -
(Lean) The literate-programming comment delimiters for Lean files have changed from
/-! … !-/to/-| … |-/. [278fb59] -
(LaTeX) The
alectryonandalectryon@inlineenvironments have been simplified to make it easier to redefine them. [2be8328] -
(LaTeX) All Alectryon macros are now wrapped in
\al/\Alcommands (e.g.,\al{xyz}expands toalectryon@xyz). [424709a] -
(HTML) The HTML class
alectryon-wsphas been renamed toalectryon-txt. [872e83d]