Skip to content

Commit

Permalink
Prepare 1.4.0 (haskell#2182)
Browse files Browse the repository at this point in the history
* [Call hierarchy] Update change log for 1.0.1.0

* Add hackage release instructions

* Add missing new line

* Add initial list of merged prs

* Update list of prs

* Add a initial release description

* Add rename plugin

* Add rename demo and last pr

* Restore significant whitespaces

* Correct grammar

* Add some newlines

* Bump up versions

* Complete Changelog

* Ignoring time resolution test

* Remove reference to rename plugin

Co-authored-by: Lei Zhu <[email protected]>
  • Loading branch information
2 people authored and cdsmith committed Sep 21, 2021
1 parent 0184d63 commit c4db72b
Show file tree
Hide file tree
Showing 15 changed files with 220 additions and 26 deletions.
167 changes: 161 additions & 6 deletions ChangeLog.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,160 @@
# Changelog for haskell-language-server

## 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](https://github.com/haskell/haskell-language-server/issues/2168) for more details

### Pull requests merged for 1.4.0

- Update flake to fix nix builds
([#2188](https://github.com/haskell/haskell-language-server/pull/2188)) by @jneira
- Completions for project identifiers
([#2187](https://github.com/haskell/haskell-language-server/pull/2187)) by @pepeiborra
- Wingman: Don't clobber where clauses
([#2184](https://github.com/haskell/haskell-language-server/pull/2184)) by @isovector
- Add rerun workflow
([#2181](https://github.com/haskell/haskell-language-server/pull/2181)) by @jneira
- Bump up shake-bench version
([#2178](https://github.com/haskell/haskell-language-server/pull/2178)) by @jneira
- Fix hackage release
([#2177](https://github.com/haskell/haskell-language-server/pull/2177)) by @jneira
- Use maxBound of uinteger not Int.
([#2169](https://github.com/haskell/haskell-language-server/pull/2169)) by @pranaysashank
- enable the PR gitpod badge and drop the label
([#2167](https://github.com/haskell/haskell-language-server/pull/2167)) by @pepeiborra
- Plugin in config files
([#2166](https://github.com/haskell/haskell-language-server/pull/2166)) by @jneira
- Complete contributing guide
([#2165](https://github.com/haskell/haskell-language-server/pull/2165)) by @jneira
- Wingman: Add "New Unification Variable" helper
([#2164](https://github.com/haskell/haskell-language-server/pull/2164)) by @isovector
- Semiautomatic hackage releases
([#2163](https://github.com/haskell/haskell-language-server/pull/2163)) by @jneira
- Improve incoming call for typeclass and type family instance
([#2162](https://github.com/haskell/haskell-language-server/pull/2162)) by @July541
- Add a Gitpod descriptor
([#2161](https://github.com/haskell/haskell-language-server/pull/2161)) by @pepeiborra
- Wingman: Let-bindings in metatactics
([#2160](https://github.com/haskell/haskell-language-server/pull/2160)) by @isovector
- Update nix flake
([#2159](https://github.com/haskell/haskell-language-server/pull/2159)) by @lf-
- Add ghc-8.10.7 to release build
([#2158](https://github.com/haskell/haskell-language-server/pull/2158)) by @jneira
- Reduce duplication in pragma tests
([#2157](https://github.com/haskell/haskell-language-server/pull/2157)) by @nini-faroux
- Remove ghc-api source snapshot
([#2156](https://github.com/haskell/haskell-language-server/pull/2156)) by @pepeiborra
- Create a citation
([#2155](https://github.com/haskell/haskell-language-server/pull/2155)) by @ndmitchell
- Disable window job for ghc-8.10.2
([#2154](https://github.com/haskell/haskell-language-server/pull/2154)) by @jneira
- Auto complete definitions within imports
([#2152](https://github.com/haskell/haskell-language-server/pull/2152)) by @alexnaspo
- Filter code actions based on prefix, not equality
([#2146](https://github.com/haskell/haskell-language-server/pull/2146)) by @michaelpj
- perform a GC before find resolution
([#2144](https://github.com/haskell/haskell-language-server/pull/2144)) by @pepeiborra
- case sensitive language pragmas fix
([#2142](https://github.com/haskell/haskell-language-server/pull/2142)) by @alexnaspo
- Add ghc-8.10.7 support
([#2141](https://github.com/haskell/haskell-language-server/pull/2141)) by @jneira
- List all available plugins
([#2139](https://github.com/haskell/haskell-language-server/pull/2139)) by @July541
- update LTS for GHC 8.10.6
([#2138](https://github.com/haskell/haskell-language-server/pull/2138)) by @peterbecich
- fix GitHub Actions badges
([#2135](https://github.com/haskell/haskell-language-server/pull/2135)) by @peterbecich
- Move pragmas completion to pragmas plugin
([#2134](https://github.com/haskell/haskell-language-server/pull/2134)) by @alexnaspo
- Update ghc-9.0.1 support
([#2131](https://github.com/haskell/haskell-language-server/pull/2131)) by @jneira
- Support call hierarchy on pattern matching
([#2129](https://github.com/haskell/haskell-language-server/pull/2129)) by @July541
- GHCIDE_BUILD_PROFILING env var
([#2125](https://github.com/haskell/haskell-language-server/pull/2125)) by @pepeiborra
- [ghcide] support -d cli switch
([#2124](https://github.com/haskell/haskell-language-server/pull/2124)) by @pepeiborra
- don't crash when an unused operator import ends in `.`
([#2123](https://github.com/haskell/haskell-language-server/pull/2123)) by @tscholak
- [benchmarks] Fix edit and "after edit" experiments
([#2122](https://github.com/haskell/haskell-language-server/pull/2122)) by @pepeiborra
- Add fix for correct placement of import (#2100)
([#2116](https://github.com/haskell/haskell-language-server/pull/2116)) by @nini-faroux
- Support for ghc-8.10.6
([#2109](https://github.com/haskell/haskell-language-server/pull/2109)) by @jneira
- New rename plugin implementation
([#2108](https://github.com/haskell/haskell-language-server/pull/2108)) by @OliverMadine
- [ghcide-bench] Support extra args in examples
([#2107](https://github.com/haskell/haskell-language-server/pull/2107)) by @pepeiborra
- Fix filepath identity in cradle dependencies when using reactive change tracking
([#2106](https://github.com/haskell/haskell-language-server/pull/2106)) by @pepeiborra
- [ghcide-bench] preserve threading details in eventlogs
([#2105](https://github.com/haskell/haskell-language-server/pull/2105)) by @pepeiborra
- [ghcide-bench] fix edit experiment
([#2104](https://github.com/haskell/haskell-language-server/pull/2104)) by @pepeiborra
([#2102](https://github.com/haskell/haskell-language-server/pull/2102)) by @isovector
- reduce allow-newer entries for shake-bench
([#2101](https://github.com/haskell/haskell-language-server/pull/2101)) by @pepeiborra
- Wingman: Don't count it as using a term if you only destruct it
([#2099](https://github.com/haskell/haskell-language-server/pull/2099)) by @isovector
- Clean cabal project
([#2097](https://github.com/haskell/haskell-language-server/pull/2097)) by @jneira
- Wingman: New AbstractLSP interface
([#2094](https://github.com/haskell/haskell-language-server/pull/2094)) by @isovector
- Add badge with github release
([#2093](https://github.com/haskell/haskell-language-server/pull/2093)) by @jneira
- Add a bit more prose and some links to the README
([#2090](https://github.com/haskell/haskell-language-server/pull/2090)) by @michaelpj
- Enable tests for ormolu plugin
([#2086](https://github.com/haskell/haskell-language-server/pull/2086)) by @felixonmars
- Allow ormolu 0.2 and fix compatibility with GHC 9
([#2084](https://github.com/haskell/haskell-language-server/pull/2084)) by @felixonmars
- Add initial sphinx doc site for RTD
([#2083](https://github.com/haskell/haskell-language-server/pull/2083)) by @michaelpj
- Amend fix for correct placement of file header pragmas (#1958)
([#2078](https://github.com/haskell/haskell-language-server/pull/2078)) by @nini-faroux
- Wingman: "Intro and destruct" code action
([#2077](https://github.com/haskell/haskell-language-server/pull/2077)) by @isovector
- Support call hierarchy on type signature & add plugin to generic config & docs
([#2072](https://github.com/haskell/haskell-language-server/pull/2072)) by @July541
- Update nix flake
([#2065](https://github.com/haskell/haskell-language-server/pull/2065)) by @berberman
- Include sponsorship section
([#2063](https://github.com/haskell/haskell-language-server/pull/2063)) by @jneira
- Add more communication channels
([#2062](https://github.com/haskell/haskell-language-server/pull/2062)) by @jneira
- Don't suggest disabling type errors
([#2061](https://github.com/haskell/haskell-language-server/pull/2061)) by @anka-213
- Build with lsp 1.2.0.1
([#2059](https://github.com/haskell/haskell-language-server/pull/2059)) by @pepeiborra
- Remove HIE_CACHE from circleci cache key
([#2050](https://github.com/haskell/haskell-language-server/pull/2050)) by @jneira
- [#1958] Fix placement of language pragmas
([#2043](https://github.com/haskell/haskell-language-server/pull/2043)) by @nini-faroux
- [#2005] Fix Formatting When Brittany Returns Warnings
([#2036](https://github.com/haskell/haskell-language-server/pull/2036)) by @prikhi

## 1.3.0

2021 July release of HLS arrives! This release includes binaries for GHC 9.0.1
Expand All @@ -23,7 +178,7 @@ and some new interesting features. Here is the brief summary of changes:
- 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.
- 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](https://user-images.githubusercontent.com/12473268/127550516-acc1f1b4-bad7-44fd-99a0-a174ce9ac909.gif)

Expand Down Expand Up @@ -160,15 +315,15 @@ 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 are the summary of changes:

- Basic support for GHC 9.0.1 is added.
- 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](https://github.com/haskell/haskell-language-server/issues/297#issuecomment-855522891).
- Support for GHC 8.10.5 is added.
- 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](https://gitlab.haskell.org/ghc/ghc/-/issues/19968).
- HLS wrapper and GHCIDE session loader uses the same logic with implicit-hie.
- HLS wrapper and GHCIDE session loader uses the same logic with implicit-hie.
This fixes [a build issue](https://github.com/haskell/haskell-language-server/issues/1782) 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).
- 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).
![https://github.com/haskell/haskell-language-server/blob/master/plugins/hls-tactics-plugin/COMMANDS.md#wingman-metaprogram-command-reference](https://user-images.githubusercontent.com/307223/118190278-bdf24f80-b3f7-11eb-8838-b08a2582d7f1.gif)
- "Refine hole" and "Split all function arguments" code actions are publicly opened.
- "Empty case split" code lens is added.
Expand Down
37 changes: 33 additions & 4 deletions docs/contributing/releases.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,16 @@ extension](https://github.com/alanz/vscode-hie-server) to provide automatic
installation for users on VS Code, but they can also be installed manually
when added to the path.

Starting with 0.8.0.0 haskell-language-server and all its related packages
(core libraries like ghcide, plugins and hls itself) is being released in
[hackage](https://hackage.haskell.org/package/haskell-language-server) as well.
This allow cabal users to install it with `cabal install haskell-language-server`
and it is being used in nix environments.

## Minimal checklist

### github release

* [ ] generate the list of pull requests finished since the last release using the [haskell script](https://github.com/haskell/haskell-language-server/blob/master/GenChangelogs.hs) in the project root.
Nix users should run command `gen-hls-changelogs` (a wrapper of the script) in nix-shell instead.
* [ ] add that list to the actual [Changelog](https://github.com/haskell/haskell-language-server/blob/master/ChangeLog.md) with a description of the release.
Expand All @@ -19,7 +27,14 @@ when added to the path.
* [ ] check uploaded binaries (see windows note below) and the release description (usually the changelog entry) and uncheck the prerelease box
* [ ] make public the release in the usual social channels: irc, twitter, reddit, discord, discourse, mailing lists, etc (not required but useful to spread the word :slightly_smiling_face:)

## Making a new release of haskell-language-server
### hackage release

* [ ] bump up package versions following the [pvp specification](https://pvp.haskell.org/) if they are not already updated
* [ ] create ${version}-hackage branch to trigger the hackage github workflow which will upload all changed packages to hackage as candidates
* [ ] check manually candidates in hackage
* [ ] publish them definitely

## Making a new release of haskell-language-server in github

Go to the [GitHub releases
page](https://github.com/haskell/haskell-language-server/releases) for
Expand All @@ -43,7 +58,7 @@ most recent GHC version.

### ghcup
It also creates a `haskell-language-server-${os}-${hlsVersion}.tar.gz` tarball with
the binaries for *all* supported ghc versions, to help downstream publishers in
the binaries for *all* supported ghc versions, to help downstream publishers in
the distribution of the release. The most prominent publisher using them is `ghcup`.
The `tar` job in the workflow file automates the creation of this.

Expand Down Expand Up @@ -100,15 +115,15 @@ and add it to the existing release.

### Updating release artifacts

*IMPORTANT: release artifacts must not be modified, cause it would break
*IMPORTANT: release artifacts must not be modified, cause it would break
its secure distribution using their hashes. We should only add new ones.*

To manually upload a new binary we should:

- Add the new tar/zip following the name conventions of existing ones
- `haskell-language-server-${os}-${ghcVersion}.gz` for `Linux` and `macOS` and `haskell-language-server-Windows-${ghcVersion}.exe.zip` for `Windows`
- the binary inside the gz file is named `haskell-language-server-${ghcVersion}` (with the `.exe` extension for `Windows`). Note that the binary name does not contain the `${os}` part.
- Add the executable to the existing tar `haskell-language-server-${os}-${ghcVersion}.tar.gz` *locally* and upload it under a new name `haskell-language-server-${os}-${ghcVersion}-rev${n}.tar.gz` following the same schema for the binary as the previous one.
- Add the executable to the existing tar `haskell-language-server-${os}-${ghcVersion}.tar.gz` *locally* and upload it under a new name `haskell-language-server-${os}-${ghcVersion}-rev${n}.tar.gz` following the same schema for the binary as the previous one.
- `-rev${n}` is the next revision number of the tarball, starting at 1.
- we should contact users of the tarball (particularly ghcup) to notify the change

Expand All @@ -118,3 +133,17 @@ is not included by default in the GitHub Actions build matrix. Instead
they need to be built and uploaded manually. See [this
PR](https://github.com/haskell/haskell-language-server/issues/276) for
more details

## Hackage release workflow

We aim to do hackage releases following the github ones described above.
To help in that job we have added a [github workflow](https://github.com/haskell/haskell-language-server/blob/master/.github/workflows/hackage.yml)

That script checks, generates the tar.gz files, unpacks and builds them in isolation against hackage head
if the package version in the branch is different from hackage.
If the package in the branch has the same version as the released one,
it will check the relevant files have not changed and will throw an error
otherwise.

The script will upload the tarballs as candidates, maintainers will have
to check and publish them definitely.
2 changes: 1 addition & 1 deletion ghcide/ghcide.cabal
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ cabal-version: 2.4
build-type: Simple
category: Development
name: ghcide
version: 1.4.1.0
version: 1.4.2.0
license: Apache-2.0
license-file: LICENSE
author: Digital Asset and Ghcide contributors
Expand Down
9 changes: 5 additions & 4 deletions ghcide/test/exe/Main.hs
Original file line number Diff line number Diff line change
Expand Up @@ -5784,10 +5784,11 @@ unitTests = do
actualOrder <- liftIO $ readIORef orderRef

liftIO $ actualOrder @?= reverse [(1::Int)..20]
, testCase "timestamps have millisecond resolution" $ do
resolution_us <- findResolution_us 1
let msg = printf "Timestamps do not have millisecond resolution: %dus" resolution_us
assertBool msg (resolution_us <= 1000)
, ignoreTestBecause "The test fails sometimes showing 10000us" $
testCase "timestamps have millisecond resolution" $ do
resolution_us <- findResolution_us 1
let msg = printf "Timestamps do not have millisecond resolution: %dus" resolution_us
assertBool msg (resolution_us <= 1000)
, Progress.tests
]

Expand Down
4 changes: 2 additions & 2 deletions haskell-language-server.cabal
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
cabal-version: 2.4
category: Development
name: haskell-language-server
version: 1.3.0.0
version: 1.4.0.0
synopsis: LSP server for GHC
description:
Please see the README on GitHub at <https://github.com/haskell/haskell-language-server#readme>
Expand Down Expand Up @@ -240,7 +240,7 @@ common retrie

common tactic
if flag(tactic) || flag(all-plugins)
build-depends: hls-tactics-plugin >=1.2.0.0 && <1.4
build-depends: hls-tactics-plugin >=1.2.0.0 && <1.5
cpp-options: -Dtactic

common hlint
Expand Down
2 changes: 1 addition & 1 deletion plugins/hls-brittany-plugin/hls-brittany-plugin.cabal
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
cabal-version: 2.4
name: hls-brittany-plugin
version: 1.0.0.2
version: 1.0.1.0
synopsis: Integration with the Brittany code formatter
description:
Please see the README on GitHub at <https://github.com/haskell/haskell-language-server#readme>
Expand Down
9 changes: 9 additions & 0 deletions plugins/hls-call-hierarchy-plugin/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,17 @@ Enabled by default. You can disable it in your editor settings whenever you like
```

## Change log
### 1.0.1.0
- Support call from a type signature.
- Support call from a function pattern.
- Incoming call now will go to typeclass instance instand of its definition.
### 1.0.0.1
- Support call hierarchy on type signatures.
### 1.0.0.0
- Released!

## Known issues:
- Outgoing call have difficulty with going to typeclass instance due to `HieDb` lack of adequate info.

## Acknowledgments
Supported by
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
cabal-version: 2.4
name: hls-call-hierarchy-plugin
version: 1.0.0.2
version: 1.0.1.0
synopsis: Call hierarchy plugin for Haskell Language Server
description:
Please see the README on GitHub at <https://github.com/haskell/haskell-language-server/tree/master/plugins/hls-call-hierarchy-plugin#readme>
Expand Down
2 changes: 1 addition & 1 deletion plugins/hls-class-plugin/hls-class-plugin.cabal
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
cabal-version: 2.4
name: hls-class-plugin
version: 1.0.0.3
version: 1.0.1.0
synopsis:
Class/instance management plugin for Haskell Language Server

Expand Down
Loading

0 comments on commit c4db72b

Please sign in to comment.