summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Implement -XStaticValues.wip/static-pointersFacundo Domínguez2014-12-0270-30/+1128
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* Update validate settings now that containers and process have beenDavid Terei2014-11-161-2/+0
| | | | updated to handle `-fwarn-trustworthy-safe`.
* Fix compilation of `integer-gmp2` with `-O0`Herbert Valerio Riedel2014-11-151-2/+2
| | | | | | | | | | | | At optimization level `-O0` `wordToInteger` wasn't inlined, and this caused a `__integer` literal to turn up in final Core, which would trigger the GHC panic ghc-stage1: panic! (the 'impossible' happened) (GHC version 7.9.20141114 for x86_64-unknown-linux): Can't use Integer in integer-* By forcing inlining via `inline` this is avoided. This should hopefully address #9800.
* Update to (unreleased) `deepseq-1.4.0.0`Herbert Valerio Riedel2014-11-1514-7/+10
| | | | | | | | | | | | | | | | | | | 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
* Workaround 452d6aa95b7 breaking TrustworthySafe03Herbert Valerio Riedel2014-11-151-0/+1
| | | | | This is only a temporary kludge until the issue workarounded by 452d6aa95b7 gets properly fixed
* Generalize exposed-modules field in installed package databaseEdward Z. Yang2014-11-159-106/+190
| | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Partially revert 475dd93efaAustin Seipp2014-11-141-2/+1
| | | | | | | This introduces ./validate failures for Windows right now, so in the mean time let's just back this flag out as a default -Wall flag. Signed-off-by: Austin Seipp <austin@well-typed.com>
* Update .mailmapThomas Miedema2014-11-141-9/+77
| | | | [skip ci]
* Implement amap/coerce for Array (re #9796)David Feuer2014-11-134-3/+66
| | | | | | | | | | | | | | | | 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
* When calling the success continuation of a matcher, pass existential tyvarsDr. ERDI Gergo2014-11-131-3/+3
| | | | as type arguments, not value arguments
* nlHsTyApps: for applying a function both on type- and term-level argumentsDr. ERDI Gergo2014-11-131-1/+4
|
* Apply compulsory unfoldings during desugaring, except for `seq` which is ↵Dr. ERDI Gergo2014-11-131-1/+21
| | | | | | special. See Note [Unfolding while desugaring] for the rationale.
* If pattern synonym is bidirectional and its type is some unboxed type T#,Dr. ERDI Gergo2014-11-1320-87/+228
| | | | | generate a worker function of type Void# -> T#, and redirect the wrapper (via a compulsory unfolding) to the worker. Fixes #9732.
* Binding things matched by an unboxed pattern synonym should require a bangDr. ERDI Gergo2014-11-135-1/+28
|
* Fix typo in panic messageDr. ERDI Gergo2014-11-131-1/+1
|
* Fix `integer-gmp2` compilation with GMP 4.x (#9281)Herbert Valerio Riedel2014-11-131-0/+9
| | | | | GMP 4.x didn't provide the `mp_bitcnt_t` typedef yet, so we locally define one if GMP 4.x is detected.
* Improve `Foldable` instance for `Array`David Feuer2014-11-135-6/+214
| | | | | | | | | | | | | | | | | | | | Previously, `Array`s were simply converted to lists, and the list methods used. That works acceptably well for `foldr` and `foldr1`, but not so sensibly for most other things. Left folds ended up "twisted" the way they are for lists, leading to surprising performance characteristics. Moreover, this implements `length` and `null` so they check the array size directly. Finally, a test is added to the testsuite ensuring the overridden `Foldable` methods agree with their expected default semantics. Addresses #9763 Reviewed By: hvr, austin Differential Revision: https://phabricator.haskell.org/D459
* base: define `sequence = mapM id`David Feuer2014-11-131-3/+19
| | | | | | | | | | | | | | | | This avoids duplication in `GHC.Base`; originally, we had mapM f = sequence . map f This led to excessive allocation in `cryptarithm2`. Defining sequence = mapM id does not appear to cause any `nofib` problems. Reviewed By: hvr Differential Revision: https://phabricator.haskell.org/D470
* Make unwords and words fuse somewhatDavid Feuer2014-11-131-4/+43
| | | | | | | | | | | | | Make `words` a good producer and `unwords` a good consumer for list fusion. Thus `unwords . words` will avoid producing an intermediate list of words, although it will produce each individual word. Make `unwords` slightly lazier, so that `unwords (s : undefined) = s ++ undefined` instead of `= undefined`. Reviewed By: austin Differential Revision: https://phabricator.haskell.org/D375
* base: Fix map/coerce commentDavid Feuer2014-11-131-3/+2
| | | | | | | | | Make the comment on the map/coerce rule refer to the right section in the paper; give the full name of the papers, and name its authors. [skip ci] Differential Revision: https://phabricator.haskell.org/D472
* Update userguide for new `-fwarn-trustworthy-safe` flag.David Terei2014-11-123-3/+59
|
* Add `--fwarn-trustworthy-safe` to `-Wall`David Terei2014-11-1210-1/+23
| | | | | Update submodule haskell2010, haskell98, hoop, hpc and stm to fix new warnings.
* Add in `-fwarn-trustworthy-safe` flag.David Terei2014-11-1238-62/+397
| | | | | This warns when a module marked as `-XTrustworthy` could have been inferred as safe instead.
* Remove a stray Trustworthy flag in ghc.David Terei2014-11-121-1/+0
|
* includes/Stg.h: define _DEFAULT_SOURCE for glibc-2.20Sergei Trofimovich2014-11-121-0/+4
| | | | | | | | | | | | | | | | | | | | | | _BSD_SOURCE we are using for 'gamma()' and friends was deprecated in glibc-2.20 in favour of '_DEFAULT_SOURCE'. gcc says: In file included from /usr/include/math.h:26:0: 0, from includes/Stg.h:69, from /tmp/ghc19488_0/ghc19488_2.hc:3: /usr/include/features.h:148:3: warning: #warning "_BSD_SOURCE and _SVID_SOURCE are deprecated, use _DEFAULT_SOURCE" [-Wcpp] # warning "_BSD_SOURCE and _SVID_SOURCE are deprecated, use _DEFAULT_SOURCE" ^ Patch fixes testsuite failures on UNREG (stderr are not cluttered by warnings anymore). Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
* Fix #9404 by removing tcInfExpr.Richard Eisenberg2014-11-129-61/+79
| | | | | | 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.
* Testsuite wibble due to #9404Richard Eisenberg2014-11-125-10/+12
| | | | [skip ci]
* Test #9404 (typecheck/should_compile/T9404 and T9404b)Richard Eisenberg2014-11-123-0/+23
|
* Fix #9788 by giving `coerce` the right type.Richard Eisenberg2014-11-122-14/+9
| | | | | No test case added, as the original mistake is just one level up from a typo.
* Testsuite wibbles due to #9204Richard Eisenberg2014-11-125-4/+21
|
* Fix #9204 by outputting extra info on boot file mismatch.Richard Eisenberg2014-11-122-49/+135
| | | | [skip ci] -- testsuite wibbles are in next commit
* Test #9204 in roles/should_fail/T9204Richard Eisenberg2014-11-125-1/+25
|
* Fix #9064 by adding support for generic default signatures to TH.Richard Eisenberg2014-11-128-17/+39
|
* Test #9064 in th/T9064Richard Eisenberg2014-11-123-0/+31
|
* Fix #8100, by adding StandaloneDerivD to TH's Dec type.Richard Eisenberg2014-11-127-22/+56
|
* Test #8100 in th/T8100Richard Eisenberg2014-11-122-0/+21
|
* Derive Generic for TH types (#9527)Richard Eisenberg2014-11-121-41/+42
|
* Remove unboxed Int# fields from NameFlavour (#9527)Richard Eisenberg2014-11-123-102/+21
|
* Untabify template-haskell.Richard Eisenberg2014-11-125-51/+51
|
* Fix #9066.Richard Eisenberg2014-11-124-30/+58
| | | | | | | | | | 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.
* Test #9066 in th/T9066Richard Eisenberg2014-11-122-0/+12
|
* fix allocLimit3 on WindowsSimon Marlow2014-11-121-1/+6
|
* Fix build errors on Windows (these tests still don't work though)Simon Marlow2014-11-122-0/+6
|
* Per-thread allocation counters and limitsSimon Marlow2014-11-1237-168/+675
| | | | | | | | 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.
* Implement new integer-gmp2 from scratch (re #9281)Herbert Valerio Riedel2014-11-1240-18/+6103
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Disable T4801/peak_megabytes_allocatedHerbert Valerio Riedel2014-11-121-17/+19
| | | | | | 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.
* Add stderr for T9662Simon Peyton Jones2014-11-111-0/+84
|
* Test Trac #7862Simon Peyton Jones2014-11-113-1/+37
|
* Test Trac #9077Simon Peyton Jones2014-11-113-0/+7
|
* Improve documentation of -ticky a littleSimon Peyton Jones2014-11-113-3/+9
|