Skip to content

Releases: haskell/haskell-language-server

1.5.0

18 Nov 06:28
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

Read more

1.4.0

15 Sep 07:57
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

30 Jul 15:08
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

Read more

1.2.0

13 Jun 15:45
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

Read more

1.1.0

13 Apr 07:59
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

Read more

1.0.0

24 Feb 05:09
4cd1cf9
Compare
Choose a tag to compare

This is the celebratory release of Haskell Language Server 1.0.0!
This release includes a lot of internal changes, bug fixes, leaks plugged, and performance improvements, thanks to all our contributors.
Among others,

  • We added the support for GHC 8.10.4, and removed the support for GHC 8.10.1
    Afterward, we will support upmost 3 patch versions for each minor version of GHC, if no special situation happens.
  • As by hie-bios >= 0.7.3, we use ${XDG_CACHE_HOME}/hie-bios/... (or similar depends on OS) as a build directory for Cabal.
  • Now Eval plugin uses the parsing mechanism of GHC and becomes more stable.
  • We supports a code action to disambiguate the same identifiers from multiple imports.
    gif
  • We supports a code action to hide shadowed identifiers from import.
    gif
  • HIE DB is now integrated. This means we now support find-references, workspace-symbol. find-definition is also improved in a project with multiple components.
  • Brittany and Stylish-haskell plugins now load language extensions from the ghc session.
  • Tactic plugin supports eta-reduction and Agda-like split tactic and can create a function with piecewise definitions.
    gif

Pull requests merged for 1.0.0

Read more

0.9.0

30 Jan 07:50
46d2a3d
Compare
Choose a tag to compare

This release includes lot of refactorings and bug fixes over existing features, hlint and eval plugins among others.
It contains a fix for a bug in ghcide involving stale diagnostics (#1204).

The list of contributors continues to show healthy growth, many thanks to you all!

And remember, we have a new brand logo, courtesy of @Ailrun 🙂

haskell-language-server

Pull requests merged for 0.9.0

Read more

0.8.0

04 Jan 09:38
eb58f13
Compare
Choose a tag to compare
  • This version adds support for ghc-8.10.3
  • hls-plugin-api has been bumped to 0.6.0.0 and ghcide has been bumped from 0.6.0.1 to 0.7.0.0.
  • It has a new brand plugin: hls-class-plugin, which helps to write class instances

gif

  • The eval plugin has been revamped, adding these new features:
    • Tests in both plain comments and Haddock comments
    • For Haddock comments: shows differences between latest and previous result
    • Setup section, executed before every test
    • Execution of a section/group of tests at the time
    • Property testing
    • Setup of GHC extensions
  • A new tactic to generate automatically Arbitrary instances has been added to tactic plugin
  • There had been lot of internal changes:
    • ghcide lives now directly in this repository
    • the test suite has been cleaned and improved (continuing the work done in 0.7.0)

Thanks to all contributors and happy new year!

Pull requests merged for 0.8.0

0.7.1

17 Dec 18:14
e4f677e
Compare
Choose a tag to compare
  • This is a minor bug fix release:
    • It fixes an issue that removed accidentally desugarer warnings (#676).
    • It disables auto extend import lists in completions, see #679.

Pull requests merged

0.7.0

15 Dec 07:21
6a692de
Compare
Choose a tag to compare
  • This version contains mainly refactors and updates of upstream packages
  • It bumps up some formatter versions:
    • ormolu is 0.1.4.1
    • fourmolu is 0.3.0.0
    • brittany is 0.13.1.0
  • It uses last implicit-hie-cradle-0.3.0.2, with some bug fixes
  • It uses last ghcide-0.6.0.1 with improvements and bug fixes:
    • Do not enable every "unnecessary" warning by default
    • Improvements over completions:
      • record fields
      • identifiers not in explicit import lists
      • extend explicit import list automatically

Thanks to all haskell-language-server, ghcide and other upstream packages contributors (the list continue growing healthy) for make this release possible.