Hi everyone, here are the minutes of the meeting:
---
# Cabal meeting (17/08/2023)

Previously: https://hackmd.io/2EPSwwg8QqqZ96cFdW2wTQ

## Next Release

- Help needed with [#9088](https://github.com/haskell/cabal/pull/9088).
  - Hécate: If we can't get it through, we'll skip it for this backport.

## Cabal exact-printing in HLS

* HLS has a cabal plugin:
https://discourse.haskell.org/t/hsoc-hls-cabal-file-support/7331/2
    * Establishing a context for completions (Value Context, Keyword
Context, ...) is not easily possible
    * Custom parsing that works 95% of the time is used.
    * Fitting .cabal intermediate structures would improve the code and
reduce maintenance burden for HLS team.
* Often requested feature in HLS:
https://github.com/haskell/haskell-language-server/issues/3595
    * Requires parsing and modifying .cabal files without modifying the
rest of the cabal file
    * GenericPackageDescription insufficient due to loss of Source Positions
    * Intermediate representations of .cabal files are unknown / hard to
discover
    * Custom megaparsec parser used for POC of Code Action "Add module to
exposed-modules" field.
        * FYI, this code action is working for a lot of use-cases already
    * Explicit goal of being an exactprinter
* See [megaissue](
https://github.com/haskell/cabal/issues/7544#issuecomment-934009792) (and
there is a whole github project, linked to in the issue).
* While the HLS's custom parser serves a different purpose, it'd be much
nicer  if we could re-use Cabal directly
* In a dicussion, @fendor and @andreabedini talked about a way forward:
    * Let's make `[Field ann]` roundtripping by modifying the lexer
        * Trailing whitespace needs to be handled
        * Comments need to be handled
        * Are braces currently handled in the lexer or are they a part of
`ann`?
        * POC branch by @andreabedini available
    * `Field ann` gives us enough information to implement the Code Action
for HLS
    * Ideally, we also make `Fields ann` (note: different intermediate
representation) roundtrip with `[Field ann]`

Pros:
* We are relatively close to achieving roundtrips of `[Field ann] <->
.cabal`
* Immense help for tooling already

Cons:
* No field analysis, further parsing required.

Proposed roadmap:
1. HLS releases with the Code Action using a custom parser
2. The custom parser is replaced by `[Field ann]` internally, but still
permitting an interface HLS can use
3. Improve the lexer and enable roundtripping of `[Field ann] <-> .cabal
file`
4. Evaluate what Code Actions and IDE features can be implemented on top of
that

## Cabal nix integration

- [Users’ survey](
https://discourse.haskell.org/t/community-survey-removing-cabals-nix-integration/7201/12
).
- tl;dr: most people do not use it, with some exceptions (see message by
neil.mayhew).
- Some use *stack* nix integration, but I am not sure it is actually the
same thing as `cabal`.
  (I am told it is by various `stack` users. *++bsa*)
  *Action Item: We kill it.*

## Other topics

- GHC 9.8

Hécate: 3.10.2.0 release will also be shipped with GHC 9.8. It needs to be
patched in order to recognise it as a legal version.

On Sat, 12 Aug 2023 at 15:53, Theophile Hécate Choutri
<hecate@haskell.foundation> wrote:

> Hi everyone,
> You'll find below the link to the agenda and minutes:
>
> https://hackmd.io/78RP9BOAQFiq_GM1qNRpYQ?both
>
> Please do take the time to add the topics you want to raise. We already
> have a discussion about the exact-print parser that is being developed for
> HLS, and this would be an appropriate moment to determine our current
> legacy in terms of parsers within the code base.
>
> See you next week,
> Hécate
>
_______________________________________________
cabal-devel mailing list
cabal-devel@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/cabal-devel

Reply via email to