New haskell-language-server release: 1.1.0

Haskell Language Server 1.1.0 has finally come! As always, there are many internal bug fixes and performance improvements in ghcide.
Apart from that,

  • Wingman gets many enhancements, thanks to @isovector for this epic work!
    • Wingman can now deal with GADTs, rank-n types and pattern synonyms
    • Significantly more-natural synthesized code when dealing with newtypes, infix operators, records and strings
    • Improved user experience — less waiting, and friendly errors for when things go wrong
  • hlint plugin not working in some cases gets fixed
  • eval plugin now supports it variable, like GHCi
  • verbose message “No cradle found for … Proceeding with implicit cradle” is GONE
  • type lenses, completion and wingman plugin now have custom config options to control their behaviour
17 Likes

All credits of the hard work of doing the relase itself (and many of the prs merged!) should go to https://github.com/berberman.
I hope the project continue having so many amazing active maintainers.

1 Like

Thanks for your continued great work!

I see that configuration options changed in this releases. Is there a reference json file showing what configuration keys are possible?

We have to add it to docs yet: https://github.com/haskell/haskell-language-server/issues/1433
But thanks to berberman we can generate a complete configuration with default values automatically with:

  • haskell-language-server --generate-default-config

Would it be possible to get a profiled build? I am very keen to diagnose memory leaks, etc. in HLS in my large project, but so far I’ve been unsuccessful in getting a profiled build to work correctly (I get weird runtime errors about missing symbols on MacOS).

Where would the best place be to have a discussion about it? I love HLS and want to use it, but it generally fails to work on my project (consumes up to max memory allowed and then goes into a GC loop AFAICT).

1 Like

Memory consumption is a known issue from the very beginning and all help trying to improve it will be very very welcomed. :slightly_smiling_face:

We have a tag in the repo about performance with several issues about memory: https://github.com/haskell/haskell-language-server/issues?q=is%3Aissue+label%3A"type%3A+performance"+memory+

Specially interesting is this one about tracing memory usage.

As you can observe in issues, @pepeiborra, @mpickering @wz1000 and others has been working about that and many space leaks in hls itself has been already fixed. But there are space leaks in ghc itself too and hls spawn several ghc sessions so iirc the ultimate memory growth comes from it (see https://github.com/haskell/haskell-language-server/issues/736).

1 Like

I am in a similar situation as https://github.com/haskell/haskell-language-server/issues/772 - HLS isn’t usable on my codebase, but I can’t share it (and am doubtful I can find a similarly sized on hackage).

Getting https://github.com/haskell/haskell-language-server/issues/1493 merged would help, but only to prove that yes, there are memory leaks. It doesn’t help diagnose where they are coming from.

Hopefully I can get a profiled build going with 1.1.0!

2 Likes

I couldn’t find a way to be notified about the hackage release, could you announce it here too please ? I ask because we usually dont get the new hls in nixpkgs until the release hits hackage :slight_smile:

1 Like

Sure will do :slightly_smiling_face:

I couldn’t find a way to be notified about the hackage release

I think a bot in the hackage channel on freenode used to announce package releases so there should be a way (a rss feed?) but i dont find anything rigth now

Hackage has an RSS feed of recently released packages: https://hackage.haskell.org/packages/recent.rss

1 Like

haskell-language-server-1.1.0.0 is in hackage!

happy hacking and thanks to @Ailrun and https://hackage.haskell.org/user/berberman

2 Likes