on master help sign in
add draft of upgrade instructions for 0.19.1
commit908f0ea7b1d1e332b2f988b0923b68a084eaebe0 authorEvan Czaplicki <evancz@users.noreply.github.com> dateSun 13 Oct 2019, 15:00 (7 years ago) parentb21f5de
1 file changed+56
docs/upgrade-instructions/0.19.1.md+56
docs/upgrade-instructions/0.19.1.mdnew file+56
@@ -0,0 +1,56 @@
1+# Upgrading to 0.19.1
2+
3+**There are no language changes**, so once you swap the `"elm-version"` in your `elm.json`, most users should be able to proceed without any further code changes. **You may run into a handful of bugfixes though!** These cases are outlined below!
4+
5+
6+## Improvements
7+
8+- Parse error message quality (like [this](https://github.com/elm/error-message-catalog/issues/255) and [this](https://github.com/elm/error-message-catalog/issues/225))
9+- Faster compilation, especially for incremental compiles
10+- Uses filelocks so that cached files are not corrupted when plugins run `elm make` multiple times on the same project at the same time. (Still worth avoiding that though!)
11+- More intuitive multiline declarations in REPL
12+- Various bug fixes (e.g. `--debug`, `x /= 0`, `type Height = Height Float` in `--optimize`)
13+
14+
15+## Detectable Bug Fixes
16+
17+There are three known cases where code that compiled with 0.19.0 will not compile with 0.19.1 due to bug fixes:
18+
19+
20+### 1. Ambiguous Imports
21+
22+Say you have an import like this:
23+
24+```elm
25+import Html exposing (min)
26+import Regex exposing (never)
27+
28+x = min
29+y = never
30+```
31+
32+These should be reported as ambiguous usages since the names are also exposed by `Basics`, but there was a regression in 0.19.0 described [here](https://github.com/elm/compiler/issues/1945) such that they weren't caught in specific circumstances.
33+
34+The fix is to use a qualified name like `Html.min` or `Regex.never` to make it unambiguous.
35+
36+We found a couple instances of this in packages and have submitted PRs to the relevant authors in August 2019. You may run into this in your own code as well.
37+
38+For more details on why this is considered a regression, check out the details [here](https://github.com/elm/compiler/issues/1945#issuecomment-507871919) or try it in 0.18.0 to see how it worked before.
39+
40+
41+### 2. Tabs in Comments
42+
43+The 0.19.0 binaries did not catch tab characters in comments. The new parser is better at checking for tabs, so it will object when it finds these.
44+
45+Again, we found this in some packages and reached out to the relevant authors with PRs so patches would be published before the 0.19.1 release.
46+
47+
48+### 3. Port Module with no Ports
49+
50+If you have any files that start with:
51+
52+```elm
53+port module Main exposing (..)
54+```
55+
56+But they do not actually have any `port` declarations, the 0.19.1 binary will ask you to switch to a normal module declaration like `module Main exposing (..)`