Changelog History
Page 1
-
v8.6.5-final Changes
June 03, 2020This is the last version before_ moving to the plugin architecture + GHC 8.10 as described here
-
v8.4.3-final Changes
March 19, 2019Final version built with GHC 8.4.3
-
v8.2.1-final Changes
March 19, 20192017-12-28
-
v0.8.10.1 Changes
August 06, 2020๐ This is the first release of LiquidHaskell as a GHC Plugin, compatible with GHC 8.10.
-
v0.8.6.0 Changes
- Automatically check (transitive) dependencies
- Built with GHC 8.6.4
- 0๏ธโฃ Structural termination checker (on by default)
- ๐ Support for specifying class-laws and that they hold on instances
- ๐ Bug fixes for PLE
- Need to run LH on imported libs (with source) first; can use
--compile-spec
to avoid checking.
-
v0.8.4.0 Changes
- ๐ Support for GHC 8.4.3
- Significant restructuring of
Bare
front-end to shrink dependency on GHC-API
-
v0.8.2.2 Changes
December 28, 2017๐ Support for GHC 8.2.2
๐ Support for GADTs and TypeFamilies, see
tests/{pos,neg}/ExactGADT*.hs
โ Add support for Bags/Multisets, see
tests/pos/bag.hs
tests/neg/bag.hs
tests/pos/ListISort-bag.hs
Add support for inductive predicates see
tests/pos/IndEven.hs
tests/pos/IndPerm.hs
tests/pos/IndStar.hs
-
v0.8.0.1 Changes
July 20, 2017- ๐ Support for GHC 8.0.2
-
v0.7.0.1 Changes
โ DELETED the gsDcons and generally carrying DataConP beyond Bare; this may cause problems with
target
as I removed thedconEnv
field inTargetState
. Is it live? To restore: have to apply the substitution syms/su in Bare.hs ALSO to gsDconsP (after restoring the gsDconsP field to [(DataCon, DataConP)])๐ฅ breaking change Remove the
Bool
vs.Prop
distinction. This means that:- signatures that use(d)
Prop
as a type, e.g.foo :: Int -> Prop
should just befoo :: Int -> Bool
. - refinements that use(d)
Prop v
e.g.isNull :: xs:[a] -> {v:Bool | Prop v <=> len xs > 0}
should just beisNull :: xs:[a] -> {v:Bool | v <=> len xs > 0}
.
- signatures that use(d)
โ Add
--eliminate={none, some, all}
. Herenone
means don't use eliminate at all, use qualifiers everywhere (old-style)some
which is the DEFAULT -- means eliminate all the non-cut variablesall
means eliminate where you can, and solve cut variables toTrue
.
Change
--higherorder
so that it uses only the qualifiers obtained from type aliases (e.g.type Nat = {v:Int | ... }
) and nothing else. This requireseliminate=some
.โ Add a
--json
flag that runs in quiet mode where all output is suppressed and only the list of errors is returned as a JSON object to be consumed by an editor.โ Add
--checks
flag (formerly--binders
), which checks a given binder's definition, assuming specified types for all callees (but inferring types for callees without signatures.)โ Add
--time-binds
which is like the above, but checks all binders in a module and prints out time taken for each.
-
v0.6.0.1
July 20, 2017