| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Contains contributions from Alexander Vershilov and Mathieu Boespflug.
As proposed in [1], this extension introduces a new syntactic form
`static e`, where `e :: a` can be any closed expression. The static form
produces a value of type `StaticPtr a`, which works as a reference that
programs can "dereference" to get the value of `e` back. References are
like `Ptr`s, except that they are stable across invocations of a
program.
In essence the extension collects the arguments of the static form into
a global static pointer table. The expressions can be looked up by a
fingerprint computed from the package, the module and a fresh name
given to the expression. For more details we refer to the users guide
section contained in the patch.
The extension is a contribution to the Cloud Haskell ecosystem
(distributed-process and related), and thus has the potential to foster
Haskell as a programming language for distributed systems.
The immediate improvement brought by the extension is the elimination of
remote tables from Cloud Haskell applications. Such applications contain
table fragments spread throughout multiple modules and packages.
Eliminating these fragments saves the programmer the burden required to
construct and assemble the global remote table, a verbose and
error-prone process, even with the help of Template Haskell, that
moreover pollutes the export lists of all modules.
[1] Jeff Epstein, Andrew P. Black, and Simon Peyton-Jones. Towards
Haskell in the cloud. SIGPLAN Not., 46(12):118–129, September 2011. ISSN
0362-1340.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This pulls in the new `Generic`-based `-XDefaultSignature`-based default
implementation for `rnf`[1], and will be interesting to use in combination
with the soon to be merged `-XDeriveAnyClass` extension.
This requires updating several other submodules as well in order
to relax the upper bound on `deepseq` and/or in a few cases to
avoid relying on the default method implementation of `rnf`:
- `Cabal`
- `bytestring`
- `containers`
- `parallel`
- `process`
- `time`
[1]: http://permalink.gmane.org/gmane.comp.lang.haskell.libraries/23031
|
|
|
|
|
| |
This is only a temporary kludge until the issue workarounded by 452d6aa95b7
gets properly fixed
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
Instead of recording exposed-modules and reexported-modules as seperate
fields in the installed package database, this commit merges them into
a single field (exposed-modules). The motivation for this change is
in preparation for the inclusion of *signatures* into the installed
package database, which may also be reexported. Merging the representation
means that we can treat reexports uniformly, no matter if they're a normal
module or a signature.
This commit adds a stub for signatures, but that code isn't wired up to
anything yet.
Contains Cabal submodule update to accommodate these changes.
Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>
Test Plan: validate
Reviewers: simonpj, duncan, austin
Subscribers: thomie, carter, simonmar
Differential Revision: https://phabricator.haskell.org/D421
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Implement an `amap`/`coerce` rule in `GHC.Arr` to match the
`map`/`coerce` rule in GHC.Base.
In order to do so, delay inlining `amap` until phase 1.
To prevent the inlining delay from causing major inefficiencies due to
missed list fusion, rewrite `amap` to avoid relying on list fusion. This
has the extra benefit of reducing the size of the compiled amap code by
skipping the impossible case of an array with a negative size.
Reviewed By: nomeata
Differential Revision: https://phabricator.haskell.org/D471
|
|
|
|
|
| |
generate a worker function of type Void# -> T#, and redirect the wrapper
(via a compulsory unfolding) to the worker. Fixes #9732.
|
| |
|
|
|
|
|
| |
Update submodule haskell2010, haskell98, hoop, hpc and stm to fix new
warnings.
|
|
|
|
|
| |
This warns when a module marked as `-XTrustworthy` could have been
inferred as safe instead.
|
|
|
|
|
|
| |
See the ticket for more info about the new algorithm. This is a small
simplification, unifying the treatment of type checking in a few
similar situations.
|
|
|
|
| |
[skip ci]
|
| |
|
|
|
|
|
| |
No test case added, as the original mistake is just one level
up from a typo.
|
| |
|
|
|
|
| |
[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.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
|
|
|
| |
See Note [Lazy flattening] in TcFlatten.
Lazy flattening was an apparently good idea which actually made
the type inference engine go a LOTS slower in T3064. So I switched
it off again.
|
| |
|
|
|
|
|
| |
This improves error messages when there is a type error,
fixing Trac #9774
|
| |
|
| |
|
|
|
|
|
| |
This is introduced in aa4799534225e3fc6bbde0d5e5eeab8868cc3111
and would cause indeterministic testsuite failures in `sigof02dmt`
|
|
|
|
|
|
|
|
|
|
|
| |
New `Foldable` methods accidentally had `Foldable` contexts, which led
to type roles being assigned incorrectly and preventing GND from
deriving `Foldable` instances. Removing those fixes #9761.
Moreover, this patch takes advantage of this fix by deriving
`Foldable` (and `Eq`) for `UniqFM`.
Differential Revision: https://phabricator.haskell.org/D425
|
|
|
|
|
| |
This disables T3064 temporarily as it puts a strain on buildbots
during validation exhausting all available memory.
|
| |
|
| |
|
| |
|
| |
|