| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
[skip ci] -- testsuite wibbles are in next commit
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
When splicing in a fixity declaration, look for both term-level things
and type-level things. This requires some changes elsewhere in the
code to allow for more flexibility when looking up Exact names, which
can be assigned the wrong namespace during fixity declaration
conversion.
See the ticket for more info.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
This reverts commit f0fcc41d755876a1b02d1c7c79f57515059f6417.
New changes: now works on 32-bit platforms too. I added some basic
support for 64-bit subtraction and comparison operations to the x86
NCG.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is done as a separate `integer-gmp2` backend library because it
turned out to become a complete rewrite from scratch.
Due to the different (over)allocation scheme and potentially different
accounting (via the new `{shrink,resize}MutableByteArray#` primitives),
some of the nofib benchmarks actually results in increased allocation
numbers (but not necessarily an increase in runtime!). I believe the
allocation numbers could improve if `{resize,shrink}MutableByteArray#`
could be optimised to reallocate in-place more efficiently.
Here are the more apparent changes in the latest nofib comparision
between `integer-gmp` and `integer-gmp2`:
------------------------------------------------------------------
Program Size Allocs Runtime Elapsed TotalMem
------------------------------------------------------------------
...
bernouilli +1.6% +15.3% 0.132 0.132 0.0%
...
cryptarithm1 -2.2% 0.0% -9.7% -9.7% 0.0%
...
fasta -0.7% -0.0% +10.9% +10.9% 0.0%
...
kahan +0.6% +38.9% 0.169 0.169 0.0%
...
lcss -0.7% -0.0% -6.4% -6.4% 0.0%
...
mandel +1.6% +33.6% 0.049 0.049 0.0%
...
pidigits +0.8% +8.5% +3.9% +3.9% 0.0%
power +1.4% -23.8% -18.6% -18.6% -16.7%
...
primetest +1.3% +50.1% 0.085 0.085 0.0%
...
rsa +1.6% +53.4% 0.026 0.026 0.0%
...
scs +1.2% +6.6% +6.5% +6.6% +14.3%
...
symalg +1.0% +9.5% 0.010 0.010 0.0%
...
transform -0.6% -0.0% -5.9% -5.9% 0.0%
...
------------------------------------------------------------------
Min -2.3% -23.8% -18.6% -18.6% -16.7%
Max +1.6% +53.4% +10.9% +10.9% +14.3%
Geometric Mean -0.3% +1.9% -0.8% -0.8% +0.0%
(see P35 / https://phabricator.haskell.org/P35 for full report)
By default, `INTEGER_LIBRARY=integer-gmp2` is active now, which results
in the package `integer-gmp-1.0.0.0` being registered in the package db.
The previous `integer-gmp-0.5.1.0` can be restored by setting
`INTEGER_LIBRARY=integer-gmp` (but will probably be removed altogether
for GHC 7.12). In-tree GMP support has been stolen from the old
`integer-gmp` (while unpatching the custom memory-allocators, as well as
forcing `-fPIC`)
A minor hack to `ghc-cabal` was necessary in order to support two different
`integer-gmp` packages (in different folders) with the same package key.
There will be a couple of follow-up commits re-implementing some features
that were dropped to keep D82 minimal, as well as further
clean-ups/improvements.
More information can be found via #9281 and
https://ghc.haskell.org/trac/ghc/wiki/Design/IntegerGmp2
Reviewed By: austin, rwbarton, simonmar
Differential Revision: https://phabricator.haskell.org/D82
|
|
|
|
|
|
| |
This test seems too close to a tipping point (and thus too sensitive to the
build-env used) and T4801's `max_bytes_used` was disabled as well some time
ago for a similiar reason.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Use fewer left/right-biased folds for defaults and
functions in `Data.Foldable`, to better support things
that don't look like cons lists.
This also extends the Haddock docstrings in `Data.Foldable`.
Reviewed By: hvr, ekmett
Differential Revision: https://phabricator.haskell.org/D441
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Define list monad operations using list comprehensions. Code using monad
operations with lists did not fuse fully. Writing list code with `do`
notation or `(>>=)` and `(>>)` operations could allocate more than
equivalent code using list comprehensions.
Define `mapM` directly, instead of using `sequence` and `map`. This
leads to substantially less allocation in `cryptarithm2`.
Addresses #9781
Reviewed By: ekmett, nomeata
Differential Revision: https://phabricator.haskell.org/D455
|
|
|
|
|
|
| |
Also, reword :print description.
Signed-off-by: Austin Seipp <austin@well-typed.com>
|
|
|
|
|
|
|
|
|
|
|
| |
This also updates the `transformers` submodule to the just
released `transformers-0.4.2.0` package version.
See #9664 for more details
Reviewed By: austin, ekmett
Differential Revision: https://phabricator.haskell.org/D313
|
|
|
|
|
|
|
|
|
| |
Control.Applicative previously imported `(.)` and `id` from `Control.Arrow`,
but then only applied them to functions.
Reviewed By: ekmett, hvr
Differential Revision: https://phabricator.haskell.org/D462
|
|
|
|
| |
This is a follow-up commit to df3b1d43cc862fe03f0724a9c0ac9e7cecdf4605
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This requires ensuring the continuations have arguments by adding a dummy
Void# argument when needed. This is so that matching on a pattern synonym
is lazy even when the result is unboxed, e.g.
pattern P = ()
f P = 0#
In this case, without dummy arguments, the generated matcher's type would be
$mP :: forall (r :: ?). () -> r -> r -> r
which is called in `f` at type `() -> Int# -> Int# -> Int#`,
so it would be strict, in particular, in the failure continuation
of `patError`.
We work around this by making sure both continuations have arguments:
$mP :: forall (r :: ?). () -> (Void# -> r) -> (Void# -> r) -> r
Of course, if `P` (and thus, the success continuation) has any arguments,
we are only adding the extra dummy argument to the failure continuation.
|
|
|
|
| |
Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>
|
|
|
|
| |
Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>
|
|
|
|
| |
Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This makes nub and nubBy behave as specified in the Haskell 98 Report.
This reverts 0ad9def53842e86fb292eccb810190711c42d7c5, and
fixes #3280, #7913 and #2528 (properly).
Before this change, the output of `T2528` was (4x wrong):
```
[A,B]
[1,2]
False
False
```
Reviewed By: dfeuer, ekmett, austin, hvr
Differential Revision: https://phabricator.haskell.org/D238
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This commit mostly converts literate comments into ordinary
Haskell comments or sometimes even Haddock comments, while also
removing literate comments in a few cases where they don't make
much sense anymore.
Moreover, in a few cases trailing whitespaces were removed as well.
Reviewed By: austin
Differential Revision: https://phabricator.haskell.org/D456
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This should have gone in with the update in testlib.py to split
off stat test failures into a separate category in the summary.
Reviewers: austin
Reviewed By: austin
Subscribers: thomie, carter
Differential Revision: https://phabricator.haskell.org/D451
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary: There was a comment about that. Seems like a better behaviour.
Reviewers: austin
Reviewed By: austin
Subscribers: thomie, carter, simonmar
Differential Revision: https://phabricator.haskell.org/D419
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary: Some of the links in user's guide were broken, I've found the files they used to link and updated urls.
Reviewers: austin
Reviewed By: austin
Subscribers: thomie, carter, simonmar
Differential Revision: https://phabricator.haskell.org/D418
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
The last three '#define ...' macros were removed from Parser.y.pp and this file was renamed to Parser.y.
This basically got rid of a CPP step in the build.
Also converted two modules in compiler/parser/ from .lhs to .hs.
Test Plan: Does it build? Yes, I performed a full build here and things are looking good.
Reviewers: austin
Reviewed By: austin
Subscribers: adamse, thomie, carter, simonmar
Differential Revision: https://phabricator.haskell.org/D411
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
My previous attempt to fix the new coercion bug introduced by my fix actually
just reverted back to the *old* bug. This time it should properly handle all
three size scenarios.
Signed-off-by: Merijn Verstraaten <merijn@inconsistent.nl>
Test Plan: validate
Reviewers: dfeuer, austin, hvr
Reviewed By: austin, hvr
Subscribers: thomie, carter, simonmar
Differential Revision: https://phabricator.haskell.org/D407
GHC Trac Issues: #8089
|
|
|
|
| |
Signed-off-by: Austin Seipp <austin@well-typed.com>
|
|
|
|
|
|
|
|
|
| |
It's prettier that way, and there's less risk of anything
going sideways.
Reviewed By: hvr, simonpj
Differential Revision: https://phabricator.haskell.org/D450
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Generally clean up things relating to Applicative and Monad in `GHC.Base`
and `Control.Applicative` to make `Applicative` feel like a bit more of a
first-class citizen rather than just playing second fiddle to `Monad`. Use
`coerce` and GND to improve performance and clarity.
Change the default definition of `(*>)` to use `(<$)`, in case the
`Functor` instance optimizes that.
Moreover, some manually written instances are made into compiler-derived
instances.
Finally, this also adds a few AMP-related laws to the `Applicative` docstring.
NOTE: These changes result in a 13% decrease in allocation for T9020
Reviewed By: ekmett, hvr
Differential Revision: https://phabricator.haskell.org/D432
|
|
|
|
| |
-XIncoherentInstances turned on.
|
| |
|
|
|
|
| |
Haskell.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The main description is in Note [Preventing recursive dictionaries]
in TcRnTypes, which applies only to Coercible dictionaries.
But it was a bit of a mess:
- It wasn't applied consistently
- It was being applied to non-Coercible dictionaries in some places
This patch tidies it up.
This hack will largely go away when Richard starts treating Coercible
constraints more like equalities than like dictionaries.
|
| |
|