summaryrefslogtreecommitdiff
path: root/libraries/binary
Commit message (Collapse)AuthorAgeFilesLines
* Encode shape information in `PmOracle`Sebastian Graf2019-09-161-0/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously, we had an elaborate mechanism for selecting the warnings to generate in the presence of different `COMPLETE` matching groups that, albeit finely-tuned, produced wrong results from an end user's perspective in some cases (#13363). The underlying issue is that at the point where the `ConVar` case has to commit to a particular `COMPLETE` group, there's not enough information to do so and the status quo was to just enumerate all possible complete sets nondeterministically. The `getResult` function would then pick the outcome according to metrics defined in accordance to the user's guide. But crucially, it lacked knowledge about the order in which affected clauses appear, leading to the surprising behavior in #13363. In !1010 we taught the term oracle to reason about literal values a variable can certainly not take on. This MR extends that idea to `ConLike`s and thereby fixes #13363: Instead of committing to a particular `COMPLETE` group in the `ConVar` case, we now split off the matching constructor incrementally and record the newly covered case as a refutable shape in the oracle. Whenever the set of refutable shapes covers any `COMPLETE` set, the oracle recognises vacuosity of the uncovered set. This patch goes a step further: Since at this point the information in value abstractions is merely a cut down representation of what the oracle knows, value abstractions degenerate to a single `Id`, the semantics of which is determined by the oracle state `Delta`. Value vectors become lists of `[Id]` given meaning to by a single `Delta`, value set abstractions (of which the uncovered set is an instance) correspond to a union of `Delta`s which instantiate the same `[Id]` (akin to models of formula). Fixes #11528 #13021, #13363, #13965, #14059, #14253, #14851, #15753, #17096, #17149 ------------------------- Metric Decrease: ManyAlternatives T11195 -------------------------
* Create {Int,Word}32RepJohn Ericson2019-07-171-0/+0
| | | | | | | This prepares the way for making Int32# and Word32# the actual size they claim to be. Updates binary submodule for (de)serializing the new runtime reps.
* Bump binary to 0.8.7.0Ben Gamari2019-06-121-0/+0
| | | | (cherry picked from commit 983ada70a013c7642a751f6e41587ff95b57d0f8)
* Update binary submodule to latest master branch tipHerbert Valerio Riedel2019-01-271-0/+0
|
* Introduce Int16# and Word16#Abhiroop Sarkar2018-11-171-0/+0
| | | | | | | | | | | | This builds off of D4475. Bumps binary submodule. Reviewers: carter, AndreasK, hvr, goldfire, bgamari, simonmar Subscribers: rwbarton, thomie Differential Revision: https://phabricator.haskell.org/D5006
* Add Int8# and Word8#Michal Terepeta2018-11-021-0/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is the first step of implementing: https://github.com/ghc-proposals/ghc-proposals/pull/74 The main highlights/changes: primops.txt.pp gets two new sections for two new primitive types for signed and unsigned 8-bit integers (Int8# and Word8 respectively) along with basic arithmetic and comparison operations. PrimRep/RuntimeRep get two new constructors for them. All of the primops translate into the existing MachOPs. For CmmCalls the codegen will now zero-extend the values at call site (so that they can be moved to the right register) and then truncate them back their original width. x86 native codegen needed some updates, since it wasn't able to deal with the new widths, but all the changes are quite localized. LLVM backend seems to just work. This is the second attempt at merging this, after the first attempt in D4475 had to be backed out due to regressions on i386. Bumps binary submodule. Signed-off-by: Michal Terepeta <michal.terepeta@gmail.com> Test Plan: ./validate (on both x86-{32,64}) Reviewers: bgamari, hvr, goldfire, simonmar Subscribers: rwbarton, carter Differential Revision: https://phabricator.haskell.org/D5258
* Revert "Add Int8# and Word8#"Ben Gamari2018-10-091-0/+0
| | | | | | | | | This unfortunately broke i386 support since it introduced references to byte-sized registers that don't exist on that architecture. Reverts binary submodule This reverts commit 5d5307f943d7581d7013ffe20af22233273fba06.
* Add Int8# and Word8#Michal Terepeta2018-10-071-0/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is the first step of implementing: https://github.com/ghc-proposals/ghc-proposals/pull/74 The main highlights/changes: - `primops.txt.pp` gets two new sections for two new primitive types for signed and unsigned 8-bit integers (`Int8#` and `Word8` respectively) along with basic arithmetic and comparison operations. `PrimRep`/`RuntimeRep` get two new constructors for them. All of the primops translate into the existing `MachOP`s. - For `CmmCall`s the codegen will now zero-extend the values at call site (so that they can be moved to the right register) and then truncate them back their original width. - x86 native codegen needed some updates, since it wasn't able to deal with the new widths, but all the changes are quite localized. LLVM backend seems to just work. Bumps binary submodule. Signed-off-by: Michal Terepeta <michal.terepeta@gmail.com> Test Plan: ./validate with new tests Reviewers: hvr, goldfire, bgamari, simonmar Subscribers: Abhiroop, dfeuer, rwbarton, thomie, carter Differential Revision: https://phabricator.haskell.org/D4475
* Bump binary submodule to 0.8.6.0Ben Gamari2018-08-071-0/+0
| | | | | This is actually a decrease in the version number since a bump to 0.10 wasn't actually necessary.
* Bump binary submoduleBen Gamari2018-08-031-0/+0
|
* Fix binary and haddock submodule commitsBen Gamari2018-06-141-0/+0
|
* Bump a bunch of submodulesBen Gamari2017-07-231-0/+0
|
* Read COMPLETE sets from external packagesBen Gamari2017-03-061-0/+0
| | | | | | | | | | | | | | | | | | | | | | Currently, `COMPLETE` pragmas are not read from external packages at all, which quite limits their usefulness. This extends `ExternalPackageState` to include `COMPLETE` sets from other packages, and plumbs around the appropriate values to make it work the way you'd expect it to. Requires a `binary` submodule update. Fixes #13350. Test Plan: make test TEST=T13350 Reviewers: rwbarton, mpickering, austin, simonpj, bgamari Reviewed By: simonpj Subscribers: simonpj, thomie Differential Revision: https://phabricator.haskell.org/D3257
* Move Typeable Binary instances to binary packageBen Gamari2017-02-261-0/+0
| | | | Bumps binary submodule.
* Update binary submodule to 0.8.4.1Ben Gamari2017-02-041-0/+0
|
* Update binary submodule to 0.8.3.0 releaseHerbert Valerio Riedel2016-04-191-0/+0
|
* Bump binary submoduleBen Gamari2016-04-041-0/+0
|
* Update binary submodule to 0.8.2.0 releaseHerbert Valerio Riedel2016-02-021-0/+0
|
* Update binary submodule to final 0.8.0.0 releaseHerbert Valerio Riedel2015-12-201-0/+0
| | | | | | | Also, `binary` now is almost warning free (except for inlinePerformIO deprecation warnings) /cc @kolmodin
* Update binary submodule to binary-0.8 snapshotHerbert Valerio Riedel2015-12-161-0/+0
| | | | | | | | | | | | This requires tweaking version constraints to allow this new major version of `binary`. Starting with binary-0.8, `Binary Version` is de-orphaned into `binary`. This requires some minor adaptations to remove/hide orphan instances. /cc @kolmodin Differential Revision: https://phabricator.haskell.org/D1635
* Update binary submodule to 0.7.5.0 releaseHerbert Valerio Riedel2015-06-011-0/+0
| | | | | | | | | | | | | | | | | | | | | | Quoting the changelog, this pulls in the following fixes: binary-0.7.5.0 -------------- - Fix performance bug that was noticable when you get a big strict ByteString and the input to the decoder consists of many small chunks. - https://github.com/kolmodin/binary/issues/73 - https://github.com/kolmodin/binary/pull/76 - Fix memory leak when decoding Double and Float. - Commit 497a181c083fa9faf7fa3aa64d1d8deb9ac76ecb - We now require QuickCheck >= 2.8. Remove our version of arbitrarySizedNatural. binary-0.7.4.0 -------------- - Some invalid UTF-8 strings caused an exception when decoded. Those errors will now now fail in the Get monad instead. See issue 70. Patch contributed by @ttuegel.
* Update binary submodule to 0.7.3.0 releaseHerbert Valerio Riedel2015-01-221-0/+0
| | | | One highlight of 0.7.3.0 is the new instance for `Natural`
* Update `binary` submodule to final 0.7.2.3 releaseHerbert Valerio Riedel2014-12-141-0/+0
| | | | | | This also introduces a "bootstrap" `cabal_macros.h` header to provide the `MIN_VERSION_base()` macro during Cabal bootstrapping which as it is now used by `binary`.
* Update `binary` submodule in an attempt to address #9630Herbert Valerio Riedel2014-09-251-0/+0
| | | | | | | | This removes a couple of `INLINE` pragmas from the generics helper classes. With this change the compile times and memory usage should go back to the previous GHC 7.8.3 situation. This has been submitted upstream as https://github.com/kolmodin/binary/pull/62
* Move Applicative/MonadPlus into GHC.BaseHerbert Valerio Riedel2014-09-181-0/+0
| | | | | | | | | | | This is necessary in order to invert the import-dependency between Data.Foldable and Control.Monad (for addressing #9586) This also updates the `binary` submodule to qualify a GHC.Base import Reviewed By: austin Differential Revision: https://phabricator.haskell.org/D223
* Validate inferred theta. Fixes #8883Jan Stolarek2014-04-191-0/+0
| | | | | | | This checks that all the required extensions are enabled for the inferred type signature. Updates binary and vector submodules.
* Update binary to 0.7.1.0 releaseHerbert Valerio Riedel2013-08-301-0/+0
|
* Update to binary 0.7.0.0Ian Lynagh2013-03-011-0/+0
|
* Update submodulesGabor Greif2013-02-201-0/+0
|
* Update submodule versionsIan Lynagh2013-02-161-0/+0
|
* Use submodules for repositories with upstreamsIan Lynagh2012-11-251-0/+0