Skip to content

Releases: haskell/haskell-language-server

1.8.0.0

Compare
Choose a tag to compare

Binaries for this release are available at https://downloads.haskell.org/~hls/haskell-language-server-1.8.0.0/.

All of these tarballs have associated GPG signatures. The signature should be from Zubin Duggal <zubin@well-typed.com> (key ID 588764FBE22D19C4).

The prebuilt binaries in this release support the following GHC versions:

  • 8.6.5
  • 8.8.4
  • 8.10.7
  • 9.0.2
  • 9.2.3
  • 9.2.4
  • 9.4.1
  • 9.4.2

These binaries can be installed using GHCup or version 2.0.0 and above of the VSCode extension. Older versions of the VSCode extension will not attempt to download this version.

Installation

For non-Windows platforms, there is now a Makefile which will install a dynamically linked version of HLS after verifying that it is compatible with your local GHC installation.

You must download the tarball with the most similar platform suffix to the GHC bindist you installed from https://downloads.haskell.org/~ghc/ - for instance, if you used ghc-8.10.7-x86_64-fedora27-linux.tar.lz to install GHC, you will need haskell-language-server-1.8.0.0-x86_64-linux-fedora33.tar.xz.

If you use GHCup to install, then it will automatically make this decision for you.

If you get your GHC binaries from a source other than https://downloads.haskell.org (or GHCup), then you will need to build HLS from source yourself.

Changelog

  • Binaries for GHC 9.2.3 and GHC 9.2.4
  • Initial support for GHC 9.4 with binaries for GHC 9.4.1 and GHC 9.4.2
  • Startup time and performance improvements on projects using Template Haskell by serializing intermediate core (#2813)
  • Memory usage improvements due to using a packed representation for filepaths (#3067, @kokobd)
  • Improvements for hls-class-plugin (#2920, @July541)
  • The new hls-gadt-plugin (#2899, @July541)
  • Moving code actions from ghcide to the new hls-refactor-plugin (#3091, @wz1000)
  • Many more improvements and bug fixes thanks to our contributors!

Pull requests merged for 1.8.0.0

1.7.0.0

b5a37f7
Compare
Choose a tag to compare

Binaries for this release are available at https://downloads.haskell.org/~hls/haskell-language-server-1.7.0.0/.
Subsequent releases will also be available at https://downloads.haskell.org/~hls.

The prebuilt binaries in this release support the following GHC versions:

  • 8.6.5
  • 8.8.4
  • 8.10.7
  • 9.0.2
  • 9.2.1
  • 9.2.2

These binaries can be installed using GHCup or version 2.0.0 and above of the VSCode extension (currently prerelease). Older versions of the VSCode extension will not attempt to download this version.

If you would like to install these manually, note that we have changed the process by which we distribute binaries. For non-Windows platforms, there is now a Makefile which will install a dynamically linked version of HLS after verifying that it is compatible with your local GHC installation.

You must download the tarball with the same platform suffix as the GHC bindist you installed from https://downloads.haskell.org/~ghc/ - for instance, if you used ghc-8.10.7-x86_64-fedora27-linux.tar.lz to install GHC, you will need haskell-language-server-1.7.0.0-x86_64-linux-fedora27.tar.xz.

If you get your GHC binaries from a source other than https://downloads.haskell.org (or GHCup), then you will need to build HLS from source yourself.

Changelog

  • Distribute dynamically linked binaries for HLS to avoid statically linking against GLIBC
    and system libraries, and to avoid unpredictable failures due to subtle differences
    between the GHC used to compile HLS and the GHC installed on the users machine
    (@hasufell, #2675, #2431)

  • Improved recompilation avoidance in projects that make use of Template Haskell (#2316). See
    the blog post for more details.
    This release includes the avoid-recompile set of commits described in the blog post.

  • A new Change Type Signature Plugin (# #2660, @drsooch)

Change Type Signature Demo

Change Type Signature Demo

  • Support for GHC 9.2.2

  • Removal of HLS installer scripts as mentioned by the deprecation notice last release (#2773)

  • Many more improvements and bug fixed thanks to our contributors!

Pull requests merged for 1.6.1.1

1.6.1.0

f4022c5
Compare
Choose a tag to compare

This is a bug fix release to restore a fully statically linked haskell-language-server-wrapper executable.

  • It has been reported here
    • Thanks all reporters for the fast feedback
  • The bug has been traced here
  • And the fix is in this pr

Pull requests merged for 1.6.0

1.6.0.0

ce41b64
Compare
Choose a tag to compare

1.6.0.0

Time for a new and exciting hls release:

Deprecation notice for 1.6.0

  • As we noted in the previous release we have dropped support for ghc versions 8.10.5 and 8.8.3 in this release
    • We recommend upgrading ghc to the last minor version: 8.8.4 or 8.10.7
    • You can read more about ghc deprecation policy and schedule here
  • After this release:
    • We will remove all project stack.yaml's but two: one for last lts and other for nightly. Temporary we could keep one more stack yaml when nightly upgrades the ghc version, to help in the transition
    • We will remove the install script which lives here
      • If you want to install hls from source we recommend using ghcup. Download it and run ghcup compile hls --help to get more info about.

Pull requests merged for 1.6.0

1.5.1

745ef26
Compare
Choose a tag to compare

1.5.1

This is a bug fix release for two regressions found after releasing 1.5.0:

  • #2365: hs-boot files not handled correctly, discovered in the ghc codebase and fixed with #2377
  • #2379: tried to look at linkable for GetModIfaceWithoutLinkable for NormalizedFilePath... error handling template haskell, fixed with #2380

Both quick fixes thanks to @pepeiborra

Also it fixes some long standing bugs in the hlint plugin due to comments being ignored (see #2366)

Hackage release notice

Now hls can be installed from hackage using ghc-9.0.1. Like github release, it does not include brittany, stylish-haskell, class and wingman plugins.

https://hackage.haskell.org/package/haskell-language-server-1.5.1.0

Pull requests merged for 1.5.1

1.5.0

311107e
Compare
Choose a tag to compare

1.5.0

Time for another hls release:

  • @pepeiborra has done an epic work to improve performance, redefining some of the core pieces of HLS
    • You can take an overall look to improvements in these slides
    • Performance would be noticeable in large projects without too much template haskell usage
  • We have fourmolu support for ghc-9.0.1 thanks to @georgefst
  • We have got improvements over import suggestions thanks to @yoshitsugu and @alexnaspo
  • Completions also has been improved in general thanks to @pepeiborra
  • There have been lot of documentation updates by several contributors, thanks also to all of you
  • In this release we still don't have full support for all plugins and ghc-9.0.1
    • Missing plugins for ghc-9.0.1 are: hls-class-plugin, hls-tactics-plugin (wingman), hls-brittany-plugin and hls-stylish-haskell-plugin

Deprecation notice for 1.5.0

  • As we noted in the previous release we have dropped support for ghc versions 8.6.4, 8.10.2, 8.10.3, 8.10.4 in this release
  • We will drop support for ghc versions 8.10.5 and 8.8.3 after this release
  • The advise is upgrade ghc to the last minor version: 8.6.5, 8.8.4 or 8.10.7
  • You can read more about ghc deprecation policy and schedule here

Pull requests merged for 1.5.0

1.4.0

2535478
Compare
Choose a tag to compare

1.4.0

After a month of vacation a new hls release has arrived:

  • Support for ghc 8.10.6 and 8.10.7
  • The ormolu formatter plugin works with ghc 9.0.1
  • Call hierarchy plugin has been improved thanks to @July541:
    • Add call from type signature
    • Add call from a function pattern
    • Go to typeclass instance directly
  • As usual @isovector has been busy improving wingman plugin:
    • New "intro and destruct" code action
    • Streaming tactic solutions: when Wingman times outs, it can still pick the best solution it found
    • Let-bindings in metattactics: allows you to bind variables in tactic metaprogram
    • Several bug fixes
  • We have new docs thanks to @michaelpj: https://haskell-language-server.readthedocs.io
  • Now you can ask the executable for included plugins with: haskell-language-server --list-plugins
  • There are several bug fixes and features you can found in the merged pull requests list

DEPRECATION NOTICE

  • After this release we will drop support for ghc versions 8.6.4, 8.10.3 and 8.10.4
    • The advise is upgrade ghc to the last minor version: 8.6.5 or 8.10.7
    • Take a look to this issue for more details

Pull requests merged for 1.4.0

1.3.0

1.3.0
e7c5e90
Compare
Choose a tag to compare

2021 July release of HLS arrives! This release includes binaries for GHC 9.0.1
and some new interesting features. Here is the brief summary of changes:

  • Binaries for GHC 9.0.1 are added by @anka-213.
    • It does not support all plugins yet, but core GHCIDE features will work. For the detailed information that which plugins work, please refer this list.
  • Call hierarchy plugin is added, contributed by @July541.
    hierarchy
  • Now completions work with definitions from non-imported modules, thanks to @pepeiborra.
    completion
  • Eval plugin
    • The plugin supports GHC 9.0.1, thanks to @berberman.
    • :info command is added by @akrmn.
    • The plugin uses the same default language as GHCi with @fmehta's patch.
  • Wingman, where most changes owing to @isovector
    • Wingman no longer changes the fixity of function definitions.
    • Wingman now gives unique names to the holes it generates.
    • Wingman's ability to reason about polymorphic and GADT types is significantly improved.
    • Wingman no longer suggests homomorphic destructs when the codomain is larger than the domain.
    • "Complete case constructors" action supports empty lambda cases.
    • Wingman now gives a warning if it ran out of gas during "attempt to fill hole".
    • Metaprogramming for Wingman has been improved with symbolic-name support and the pointwise combinator.
    • An option to enable/disable Wingman's proof state styling is added.
    • Hole fit suggestions are now disabled for performance reasons when using Wingman.
  • Hovering on a name displays the package where the name is defined, contributed by @berberman.
    hover

Pull requests merged for 1.3.0

1.2.0

be2071e
Compare
Choose a tag to compare

1.2.0

We have finally released a new version of Haskell Language Server!
Thanks for all contributors, many bugs has been fixed, and many features has landed.
Here is the summary of changes:

  • Basic support for GHC 9.0.1 is added.
    It does not support all plugins yet, but core GHCIDE features will work. For the detailed information that which plugins work, please refer this list.
  • Support for GHC 8.10.5 is added.
    Note that macOS version is unfortunately not included in this release because of a GHC issue with network package.
    Finally, we can provide executable for GHC 8.10.5 on macOS as well. (Thanks @mouse07410 for finding workaround!)
  • HLS wrapper and GHCIDE session loader uses the same logic with implicit-hie.
    This fixes a build issue of a stack project with implicit hie.yaml .
  • Wingman plugin has added numerous features and fixed many bugs:
    • It now supports tactic metaprogramming!
      For list of commands, see this document.
      https://github.com/haskell/haskell-language-server/blob/master/plugins/hls-tactics-plugin/COMMANDS.md#wingman-metaprogram-command-reference
    • "Refine hole" and "Split all function arguments" code actions are publicly opened.
    • "Empty case split" code lens is added.
    • The name generator is fixed to avoid dangerous summon rituals.
    • Many bugs related to type families and GADTs are fixed.
  • We support nix flake, an upcoming way to manage dependencies in nix.
  • Every plugin (other than example plugins) now lives in its own package.

Pull requests merged for 1.2.0

1.1.0

f1c0969
Compare
Choose a tag to compare

Haskell Language Server 1.1.0 has finally come! Many thanks to all contributors -- since the last release, we have merged over 100 PRs!
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 actions can now be bound to editor hotkeys
    • Experimental support for "jump to next unsolved hole"
    • Improved layout algorithm --- don't reflow instances, or break do-blocks
    • Wingman can now deal with GADTs, rank-n types and pattern synonyms
    • Wingman now respects user-written bindings on the left side of the equals sign
    • 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
  • annoying log message "haskell-lsp:incoming message parse error" gets fixed in lsp-1.2
  • eval plugin now supports it variable, like GHCi
  • verbose message "No cradle found for ... Proceeding with implicit cradle" is GONE
  • type lenses plugin now has its custom config mode (enum) [always] to control its working mode:
    • always: always displays type signature lenses of global bindings
    • exported: similar to always, but only displays for exported global bindings
    • diagnostics: follows diagnostic messages produced by GHC
  • top-level LSP option completionSnippetsOn and maxNumberOfProblems are deprecated
  • completions plugin now has its custom config:
    • autoExtendOn (boolean) [true]: whether to enable auto extending import lists
    • snippetsOn (boolean) [true]: wheter to enable completion snippets, taking the place of completionSnippetsOn
  • Wingman has its custom config:
    • timeout_duration (integer) [2]: the timeout for Wingman actions, in seconds
    • features (string) [""]: feature set used by Wingman (See the README of Wingman)
    • max_use_ctor_actions (integer) [5]: maximum number of Use constructor <x> code actions that can appear
    • hole_severity (enum) [none]: the severity to use when showing hole diagnostics
  • LSP symbols of typeclass and type families are more appropriate
  • test suite of plugins are reorganized, which no longer need to be run with test-server executable
  • two new packages hls-test-utils and hls-stylish-haskell-plugin are extracted

This version uses lsp-1.2.0, hls-plugin-api-1.1.0, and ghcide-1.2.0.2.

Pull requests merged for 1.1.0