[ANN] coq-lsp 0.1.7

Hi folks,

it’s been a while, but we are happy to announce a new release of coq-lsp.

Install for Coq 8.17 and Visual Studio Code is as easy as:

$ opam install coq-lsp && code --install-extension ejgallego.coq-lsp

The 0.1.7 release has been focused on refinement and bugfixes; we’d like to thank all the users and contributors for their feedback and work, and in particular Alex Sanchez-Stern who did a large amount of beta testing and tweaks.

Following a suggestion by Hugo Herbelin, we now follow a naming scheme reminiscent of Isabelle’s:

  • coq-lsp refers to the Coq LSP server
  • coq-lsp/Editor refers to a particular client for Editor, such as
    coq-lsp/Emacs, coq-lsp/VSCode, or coq-lsp/NeoVIM.

This release also ships with some new features:

  • fcc, the “Flèche Coq Compiler”, an extensible, machine-friendly command line compiler that provides direct access to coq-lsp internal checking engine (Flèche). A very preliminary plugin API for Flèche is also available. fcc does understand Coq markdown files (.mv), and can use the programmable error recovery mode from Flèche, etc…

  • Coq Markdown files (.mv) are now regular Markdown files in coq-lsp/VSCode, thus one can do live proofs and use standard Markdown mode commands like preview at the same time (contributed by @4ever2)

  • The UI for error display was improved by Tomás Díaz.

  • The goal panel now display information about open and solved obligations.

  • coq-lsp/VSCode is now a web extension, and thus it will activate on github.dev and vscode.dev. The server has been refactored so it can run on the Browser context, full support is expected in the next release.

  • A new notification for performance data has been added to server, and a prototype panel displaying this data is now available for coq-lsp/VSCode.

coq-lsp release notes are archived at https://github.com/ejgallego/coq-lsp/tree/main/etc/release_notes

We’d like to highlight some interesting third party contributions we are aware of, and that could be of your interest:

Please find below the full list of changes:

coq-lsp 0.1.7: Just-in-time

  • New command line compiler fcc. fcc allows to access most
    features of coq-lsp without the need for a command line client,
    and it has been designed to be extensible and machine-friendly
    (@ejgallego, #507, fixes #472)
  • Enable web extension support. For now this will not try to start
    the coq-lsp worker as it is not yet built. (@ejgallego, #430, fixes
  • Improvements and clenaups on hover display, in particular we don’t
    print repeated Notation strings (@ejgallego, #422)
  • Don’t fail on missing serlib plugins, they are indeed an
    optimization; this mostly impacts 8.16 by lowering the SerAPI
    requirements (@ejgallego, #421)
  • Fix bug that prevented “Goal after tactic” from working properly
    (@ejgallego, #438, reported by David Ilcinkas)
  • Fix “Error message browser becomes non-visible when there are many
    goals” by using a fixed-position separated error display (@TDiazT,
    #445, fixes #441)
  • Message about workspace detection was printing the wrong file,
    (@ejgallego, #444, reported by Alex Sanchez-Stern)
  • Display the list of pending obligations in info panel (@ejgallego,
  • Preliminary support to display document performance data in panel
    (@ejgallego, #181)
  • Fix cases when workspace / root URIs are null, as per LSP spec,
    (#453 , reported by orilahav, fixes #283)
  • Pass implicit argument information to hover printer (@ejgallego, #453,
    fixes #448)
  • Fix keybinding for the “Show Goals at Point” command (@4ever2, #460)
  • Alert when rootPath is relative (#465, @ejgallego, report by Alex
  • Hook coq-lsp to ViZX extension (@bhaktishh, #469)
  • proof/goals request now takes an optional formatting parameter
    so clients can specify it per-request (@ejgallego, @bhaktishh, #470)
  • New command line argument --idle-delay=$secs that controls how
    much an idle server will sleep before going back to request
    processing. Default setting is 0.1, using more aggressive
    settings like 0.01 can decrease latency of requests by ~4x
    (@ejgallego, @hazardouspeach, #467, #471)
  • Warnings from _CoqProject files are now applied (@ejgallego,
    reported by @arthuraa, #500)
  • Be more resilient when serializing unknowns Asts (@ejgallego, #503,
    reported by Gijs Pennings)
  • Coq’s STM is not linked anymore to coq-lsp (@ejgallego, #511)
  • More granular options send_perf_data send_diags, verbosity
    will set them now (@ejgallego, #517)
  • Preliminary plugin API for completion events (@ejgallego, #518,
    fixes #506)
  • Limit the number of messages displayed in the goal window to 101,
    as to workaround slow render of Coq’s pretty printing format. This
    is an issue for example in Search where we can get thousand of
    results. We also speed up the rendering a bit by not hashing twice,
    and fix a parameter-passing bug. (@ejgallego, #523, reported by
    Anton Podkopaev)

Kind regards,
The coq-lsp team