summaryrefslogtreecommitdiff
path: root/libraries/base
Commit message (Collapse)AuthorAgeFilesLines
* Fix misspellings of the word "instance" in commentsRyan Scott2016-07-181-1/+1
| | | | [ci skip]
* Bugfix for bug 11632: `readLitChar` should consume null charactersBen Gamari2016-07-174-3/+25
| | | | | | | | | | | | | | | Test Plan: The tests have been included. This change deals with a relatively minor edge case and should not break unrelated functionality. Reviewers: thomie, #core_libraries_committee, ekmett, bgamari Reviewed By: #core_libraries_committee, ekmett, bgamari Subscribers: bgamari, ekmett Differential Revision: https://phabricator.haskell.org/D2391 GHC Trac Issues: #11632
* Added type family dependency to Data.Type.Bool.NotBaldur Blöndal2016-07-142-5/+8
| | | | | | | | | | | | | | | | Summary: Signed-off-by: Baldur Blöndal <baldurpet@gmail.com> Reviewers: goldfire, RyanGlScott, austin, bgamari, hvr Reviewed By: RyanGlScott, austin Subscribers: RyanGlScott, thomie Differential Revision: https://phabricator.haskell.org/D2268 GHC Trac Issues: #12057
* GHC.Stack.CCS: Fix typo in HaddocksBen Gamari2016-07-081-1/+1
|
* --without-libcharset disables the use of libcharsetSimon Marlow2016-07-071-3/+13
|
* Enum: Ensure that operations on Word fuseBen Gamari2016-07-041-14/+138
| | | | | | | | | | | | Test Plan: Validate, verify fusion Reviewers: austin, hvr Subscribers: thomie Differential Revision: https://phabricator.haskell.org/D2376 GHC Trac Issues: #12354
* base: Add release date to changelogBen Gamari2016-07-041-1/+1
|
* Testsuite: be less strict about topHandler03's stderrThomas Miedema2016-07-011-1/+4
| | | | Fixes #12343.
* Testsuite: use ignore_stderr/stdout instead of ignore_outputThomas Miedema2016-06-292-8/+1
| | | | | | | | | | | | | | | | | The problem with ignore_output is that it hides errors for WAY=ghci. GHCi always returns with exit code 0 (unless it is broken itself). For example: ghci015 must have been failing with compile errors for years, but we didn't notice because all output was ignored. Therefore, replace all uses of ignore_output with either ignore_stderr or ignore_stdout. In some cases I opted for adding the expected output. Update submodule hpc and stm. Reviewed by: simonmar Differential Revision: https://phabricator.haskell.org/D2367
* Double the file descriptor limit for openFile008Bartosz Nitka2016-06-291-1/+1
| | | | | | | | | | | | | | | | | | | | | | | I have get test failures on `openFile008` with `openFile: resource exhausted (Too many open files)` when running inside `./validate`, but not when I run the test individually. I suspect that's because with `./validate` parallelism of 33 threads I go just above the `1024` file descriptor limit. This is probably related to the recent change: `58f0086b70f2: Testsuite: open/close stdin/stdout/stderr explicitly` but I haven't looked deep enough to understand exactly how. I think bumping this is harmless, but I don't really know why it's necessary at all. Test Plan: ./validate Reviewers: austin, thomie, hvr, bgamari, simonmar Reviewed By: simonmar Subscribers: simonmar Differential Revision: https://phabricator.haskell.org/D2368
* Testsuite: mark tests expect_brokenThomas Miedema2016-06-281-6/+5
| | | | | | * T7837 is still broken for prof_ways (#9406) * T11627b is broken on Windows for WAY=prof_hc_hb (#12236) * T8089 is also broken for WAY=profasm on Windows
* Testsuite: open/close stdin/stdout/stderr explicitlyThomas Miedema2016-06-281-4/+3
| | | | | | | | | | | | | | | | | | This allows run_command's to contain `|`, and `no_stdin` isn't necessary anymore. Unfortunately it doesn't fix T7037 on Windows which I had hoped it would (testsuite driver tries to read a file that it just created itself, but the OS says it doesn't exist). The only drawback of this commit is that the command that the testsuite prints to the terminal (for debugging purposes) doesn't mention the files that stdout and stderr are redirected to anymore. This is probably ok. Update submodule unix. Differential Revision: https://phabricator.haskell.org/D1234
* Fix typo in Data.Bitraverse HaddocksRyan Scott2016-06-241-1/+1
|
* Testsuite: delete dead code + cleanupThomas Miedema2016-06-201-1/+1
| | | | | | * Set config settings directly in mk/test.mk, instead of indirectly in config/ghc * passing --hpcdir for WAY=hpc is unnecessary
* Testsuite: tabs -> spaces [skip ci]Thomas Miedema2016-06-2027-189/+189
|
* Testsuite: tabs -> spaces [skip ci]Thomas Miedema2016-06-202-84/+84
|
* Remove use of KProxy in GHC.GenericsRyan Scott2016-06-201-23/+22
| | | | | | | | | | | | | | | | Summary: With `-XTypeInType`, the singletons machinery that `GHC.Generics` uses no longer needs `KProxy` to hack around the use of `k` as both a type and a kind. This is simply changing the code to match what's currently in the upstream `singletons` repo. Reviewers: austin, hvr, bgamari Reviewed By: bgamari Subscribers: thomie, goldfire Differential Revision: https://phabricator.haskell.org/D2347
* Add Bifoldable and Bitraversable to baseRyan Scott2016-06-1912-152/+839
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This adds `Data.Bifoldable` and `Data.Bitraversable` from the `bifunctors` package to `base`, completing the migration started in D336. This is fairly straightforward, although there were a suprising amount of reinternal organization in `base` that was needed for this to happen: * `Data.Foldable`, `Data.Traversable`, `Data.Bifoldable`, and `Data.Bitraversable` share some nonexported datatypes (e.g., `StateL`, `StateR`, `Min`, `Max`, etc.) to implement some instances. To avoid code duplication, I migrated this internal code to a new hidden module, `Data.Functor.Utils` (better naming suggestions welcome). * `Data.Traversable` and `Data.Bitraversable` also make use of an identity newtype, so I modified them to use `Data.Functor.Identity.Identity`. This has a ripple effect on several other modules, since I had to move instances around in order to avoid dependency cycles. Fixes #10448. Reviewers: ekmett, hvr, austin, bgamari Reviewed By: bgamari Subscribers: thomie Differential Revision: https://phabricator.haskell.org/D2284 GHC Trac Issues: #9682, #10448
* Testsuite: write "\n" instead of "\r\n" when using mingw PythonThomas Miedema2016-06-181-0/+1
| | | | | | | | | | | | | | | Mingw style Python uses '\r\n' by default for newlines. This is annoying, because it means that when a GHC developer on Windows uses mingw Python to `make accept` a test, every single line of the .stderr file is touched. This makes it difficult to spot the real changes, and it leads to unnecessary git history bloat. Prevent this from happening by using io.open instead of open. See `Note [Universal newlines]` Reviewed by: Phyx Differential Revision: https://phabricator.haskell.org/D2342
* NUMA cleanupsSimon Marlow2016-06-171-2/+2
| | | | | - Move the numaMap and nNumaNodes out of RtsFlags to Capability.c - Add a test to tests/rts
* Rts flags cleanupSimon Marlow2016-06-103-99/+66
| | | | | | | | * Remove unused/old flags from the structs * Update old comments * Add missing flags to GHC.RTS * Simplify GHC.RTS, remove C code and use hsc2hs instead * Make ParFlags unconditional, and add support to GHC.RTS
* Add @since annotations to base instancesSeraphime Kirkovski2016-06-0687-4/+1029
| | | | | | | | | | | | | | | | | | Add @since annotations to instances in `base`. Test Plan: * ./validate # some commets shouldn't break the build * review the annotations for absurdities. Reviewers: ekmett, goldfire, RyanGlScott, austin, hvr, bgamari Reviewed By: RyanGlScott, hvr, bgamari Subscribers: thomie Differential Revision: https://phabricator.haskell.org/D2277 GHC Trac Issues: #11767
* Replace hand-written Bounded instances with derived onesRyan Scott2016-06-045-136/+58
| | | | | | | | | | | | | | | | | Summary: The spiritual successor to D2291, since deriving `Bounded` instances in `GHC.Enum` wasn't possible prior to changes made in that Diff. This Diff finds every manually implemented `Bounded` instance in `base` that is completely equivalent to the derived instances, and replaces it. Reviewers: bgamari, goldfire, austin, hvr Reviewed By: austin, hvr Subscribers: thomie, rwbarton Differential Revision: https://phabricator.haskell.org/D2301
* Derive instances in Data.DataRyan Scott2016-06-031-697/+58
| | | | | | | | | | | | | | | | | | | | | | | | | Summary: Currently, none of the `Data` instances in `Data.Data` are derived, which has resulted in hundreds of lines of laboriously hand-written `Data` instances. This cleans it up by using `DeriveDataTypeable` to derive all of the boring instances. Note that previously, `tcTopSrcDecls` in `TcRnDriver` was typechecking the variables generated in `deriving` statements before other top-level variables, which causes an error when `DeriveDataTypeable` is used in `Data.Data`, since the `deriving`-generated variable definitions refer to top-level definitions in `Data.Data` itself. To fix this, the order in which these two groups are typechecked was reversed. Test Plan: ./validate Reviewers: rwbarton, bgamari, hvr, austin Reviewed By: austin Subscribers: rwbarton, thomie Differential Revision: https://phabricator.haskell.org/D2291
* Testsuite: fix enum01/02/03 on Windows (#9399)Thomas Miedema2016-05-256-6/+15
|
* Always use native-Haskell de/encoders for ASCII and latin1Thomas Miedema2016-05-244-26/+29
| | | | | | | | This fixes test encoding005 on Windows (#10623). Reviewed by: austin, bgamari Differential Revision: https://phabricator.haskell.org/D2262
* Remove 'deriving Typeable' statementsRyan Scott2016-05-242-11/+9
| | | | | | | | | | | | | | | | | Summary: Deriving `Typeable` has been a no-op since GHC 7.10, and now that we require 7.10+ to build GHC, we can remove all the redundant `deriving Typeable` statements in GHC. Test Plan: ./validate Reviewers: goldfire, austin, hvr, bgamari Reviewed By: austin, hvr, bgamari Subscribers: thomie Differential Revision: https://phabricator.haskell.org/D2260
* Testsuite: fix T12010 for realThomas Miedema2016-05-223-11/+7
| | | | | | | | | | | | | | | | | * Use `extra_files` instead of (the deprecated) `extra_clean` (#11980). * Don't depend on generated files from build tree (libraries/base/include/HsBaseConfig.h). Running 'make test TEST=T12010' should work, even without building GHC first (it will use the system installed ghc). Test Plan: 'make test TEST=T12010' on Linux and Windows. Reviewed by: Phyx Differential Revision: https://phabricator.haskell.org/D2256 GHC Trac Issues: #12010
* Fix failing T12010Tamar Christina2016-05-213-5/+6
| | | | | | | | | | | | | | | | Summary: T12010 seems to be failing because it can't find the correct paths. This gives the test some more qualified paths. Test Plan: make TEST=12010 Reviewers: hvr, bgamari, austin, thomie Reviewed By: austin Differential Revision: https://phabricator.haskell.org/D2252 GHC Trac Issues: #12010
* Use the correct return type for Windows' send()/recv() (Fix #12010)Tamar Christina2016-05-197-29/+131
| | | | | | | | | | | | | | | | | | | | | | | | | | Summary: They return signed 32 bit ints on Windows, even on a 64 bit OS, rather than Linux's 64 bit ssize_t. This means when recv() returned -1 to signal an error we thought it was 4294967295. It was converted to an int, -1 and the buffer was memcpy'd which caused a segfault. Other bad stuff happened with send()s. See also note CSsize in System.Posix.Internals. Add a test for #12010 Test Plan: - GHC testsuite (T12010) - http-conduit test (https://github.com/snoyberg/http-client/issues/191) Reviewers: austin, hvr, bgamari, Phyx Reviewed By: Phyx Subscribers: thomie Differential Revision: https://phabricator.haskell.org/D2170 GHC Trac Issues: #12010
* Testsuite: don't skip concio001 and concio001_thrThomas Miedema2016-05-172-4/+4
| | | | | I think they were skipped before because they write to the same output file (concio001). This is no longer a problem.
* Make Generic1 poly-kindedRyanGlScott2016-05-123-48/+73
| | | | | | | | | | | | | | | | | | | | | | | This generalizes the `Generic1` typeclass to be of kind `k -> *`, and this also makes the relevant datatypes and typeclasses in `GHC.Generics` poly-kinded. If `PolyKinds` is enabled, `DeriveGeneric` derives `Generic1` instances such that they use the most general kind possible. Otherwise, deriving `Generic1` defaults to make an instance where the argument is of kind `* -> *` (the current behavior). Fixes #10604. Depends on D2117. Test Plan: ./validate Reviewers: kosmikus, dreixel, goldfire, austin, hvr, simonpj, bgamari Reviewed By: simonpj, bgamari Subscribers: thomie, ekmett Differential Revision: https://phabricator.haskell.org/D2168 GHC Trac Issues: #10604
* base: Export runRW# from GHC.ExtsBen Gamari2016-05-041-0/+3
| | | | | | | | | | | | | | | Seems like this should be available in GHC.Exts. Thanks for @carter for pointing this out. Test Plan: Validate Reviewers: rwbarton, hvr, austin Reviewed By: austin Subscribers: thomie, carter Differential Revision: https://phabricator.haskell.org/D2171
* Export oneShot from GHC.ExtsJoachim Breitner2016-05-041-1/+1
| | | | as suggested by carter in #12011.
* StaticPointers: Allow closed vars in the static form.Facundo Domínguez2016-05-022-9/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: With this patch closed variables are allowed regardless of whether they are bound at the top level or not. The FloatOut pass is always performed. When optimizations are disabled, only expressions that go to the top level are floated. Thus, the applications of the StaticPtr data constructor are always floated. The CoreTidy pass makes sure the floated applications appear in the symbol table of object files. It also collects the floated bindings and inserts them in the static pointer table. The renamer does not check anymore if free variables appearing in the static form are top-level. Instead, the typechecker looks at the tct_closed flag to decide if the free variables are closed. The linter checks that applications of StaticPtr only occur at the top of top-level bindings after the FloatOut pass. The field spInfoName of StaticPtrInfo has been removed. It used to contain the name of the top-level binding that contains the StaticPtr application. However, this information is no longer available when the StaticPtr is constructed, as the binding name is determined now by the FloatOut pass. Test Plan: ./validate Reviewers: goldfire, simonpj, austin, hvr, bgamari Reviewed By: simonpj Subscribers: thomie, mpickering, mboes Differential Revision: https://phabricator.haskell.org/D2104 GHC Trac Issues: #11656
* Export constructors for IntPtr and WordPtrRyanGlScott2016-05-024-5/+40
| | | | | | | | | | | | | | | | | | | | This finishes what #5529 started by exporting the constructors for `IntPtr` and `WordPtr` from `Foreign.Ptr`, allowing them to be used in `foreign` declarations. Fixes #11983. Test Plan: `make TEST=T11983` Reviewers: simonpj, hvr, bgamari, austin Reviewed By: simonpj Subscribers: simonpj, thomie Differential Revision: https://phabricator.haskell.org/D2142 GHC Trac Issues: #11983
* Testsuite: fixup lots of testsThomas Miedema2016-04-264-11/+11
| | | | | | | | | These aren't run very often, because they require external libraries. https://ghc.haskell.org/trac/ghc/wiki/Building/RunningTests/Running#AdditionalPackages maessen-hashtab still doesn't compile, QuickCheck api changed. Update submodule hpc.
* Testsuite: Delete test for deprecated "packedstring"Thomas Miedema2016-04-263-15/+1
|
* Mark GHC.Stack.Types TrustworthyHerbert Valerio Riedel2016-04-191-1/+2
| | | | | | | GHC can't infer this module safe due to the `GHC.Types (Char, Int)` and the (dummy) `GHC.Integer ()` import. If only `GHC.Types` was marked Trustworthy or Safe...
* Use `@since` annotation in GHC.ExecutionStackHerbert Valerio Riedel2016-04-112-2/+2
| | | | | While ad532ded871a9a5180388a2b7cdbdc26e053284c fixed the version number, this fixes the markup...
* Deriving Functor-like classes should unify kind variablesRyanGlScott2016-04-111-6/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | While the deriving machinery always unifies the kind of the typeclass argument with the kind of the datatype, this proves not to be sufficient to produce well kinded instances for some poly-kinded datatypes. For example: ``` newtype Compose (f :: k2 -> *) (g :: k1 -> k2) (a :: k1) = Compose (f (g a)) deriving Functor ``` would fail because only `k1` would get unified with `*`, causing the following ill kinded instance to be generated: ``` instance (Functor (f :: k2 -> *), Functor (g :: * -> k2)) => Functor (Compose f g) where ... ``` To prevent this, we need to take the subtypes and unify their kinds with `* -> *`. Fixes #10524 for good. Test Plan: ./validate Reviewers: simonpj, hvr, austin, bgamari Subscribers: thomie Differential Revision: https://phabricator.haskell.org/D2097 GHC Trac Issues: #10524, #10561
* Added (more) missing instances for Identity and ConstShane O'Brien2016-04-114-8/+19
| | | | | | | | | | | | | | | | | | | * `Identity` and `Const` now have `Num`, `Real`, `Integral`, `Fractional`, `Floating`, `RealFrac` and `RealFloat` instances * `Identity` and `Const` now have `Bits` and `FiniteBits` instances * `Identity` and `Const` now have `IsString` instances Reviewers: RyanGlScott, austin, hvr, bgamari, ekmett Reviewed By: ekmett Subscribers: nomeata, ekmett, RyanGlScott, thomie Differential Revision: https://phabricator.haskell.org/D2079 GHC Trac Issues: #11790
* Change runtime linker to perform lazy loading of symbols/sectionsTamar Christina2016-04-113-34/+109
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The Runtime Linker is currently eagerly loading all object files on all platforms which do not use the system linker for `GHCi`. The problem with this approach is that it requires all symbols to be found. Even those of functions never used/called. This makes the number of libraries required to link things like `mingwex` quite high. To work around this the `rts` was relying on a trick. It itself was compiled with `MingW64-w`'s `GCC`. So it was already linked against `mingwex`. As such, it re-exported the symbols from itself. While this worked it made it impossible to link against `mingwex` in user libraries. And with this means no `C99` code could ever run in `GHCi` on Windows without having the required symbols re-exported from the rts. Consequently this rules out a large number of packages on Windows. SDL2, HMatrix etc. After talking with @rwbarton I have taken the approach of loading entire object files when a symbol is needed instead of doing the dependency tracking on a per symbol basis. This is a lot less fragile and a lot less complicated to implement. The changes come down to the following steps: 1) modify the linker to and introduce a new state for ObjectCode: `Needed`. A Needed object is one that is required for the linking to succeed. The initial set consists of all Object files passed as arguments to the link. 2) Change `ObjectCode`'s to be indexed but not initialized or resolved. This means we know where we would load the symbols, but haven't actually done so. 3) Mark any `ObjectCode` belonging to `.o` passed as argument as required: ObjectState `NEEDED`. 4) During `Resolve` object calls, mark all `ObjectCode` containing the required symbols as `NEEDED` 5) During `lookupSymbol` lookups, (which is called from `linkExpr` and `linkDecl` in `GHCI.hs`) is the symbol is in a not-yet-loaded `ObjectCode` then load the `ObjectCode` on demand and return the address of the symbol. Otherwise produce an unresolved symbols error as expected. 6) On `unloadObj` we then change the state of the object and remove it's symbols from the `reqSymHash` table so it can be reloaded. This change affects all platforms and OSes which use the runtime linker. It seems there are no real perf tests for `GHCi`, but performance shouldn't be impacted much. We gain a lot of time not loading all `obj` files, and we lose some time in `lookupSymbol` when we're finding sections that have to be loaded. The actual finding itself is O(1) (Assuming the hashtnl is perfect) It also consumes slighly more memory as instead of storing just the address of a symbol I also store some other information, like if the symbol is weak or not. This change will break any packages relying on renamed POSIX functions that were re-named and re-exported by the rts. Any packages following the proper naming for functions as found on MSDN will work fine. Test Plan: ./validate on all platforms which use the Runtime linker. Reviewers: thomie, rwbarton, simonmar, erikd, bgamari, austin, hvr Reviewed By: erikd Subscribers: kgardas, gridaphobe, RyanGlScott, simonmar, rwbarton, #ghc_windows_task_force Differential Revision: https://phabricator.haskell.org/D1805 GHC Trac Issues: #11223
* Typos in NoteJoachim Breitner2016-04-101-8/+5
|
* base: Fix "since" annotation on GHC.ExecutionStackBen Gamari2016-04-102-2/+2
| | | | I have no idea where "4.11" came from.
* Add doc to (<=<) comparing its type to (.)Chris Martin2016-04-101-1/+6
| | | | | | | | | | | | | | This is another documentation addition similar to D1989, this time comparing the type of the Kleisli composition operator (<=<) to that of plain function composition (.). Reviewers: hvr, austin, bgamari Reviewed By: bgamari Subscribers: thomie Differential Revision: https://phabricator.haskell.org/D2100
* Provide an optimized replicateM_ implementation #11795Michael Snoyman2016-04-101-5/+38
| | | | | | | | | | | | | | | | | | In my testing, the worker/wrapper transformation applied here significantly decreases the number of allocations performed when using replicateM_. Additionally, this version of the function behaves correctly for negative numbers (namely, it will behave the same as replicateM_ 0, which is what previous versions of base have done). Reviewers: bgamari, simonpj, hvr, austin Reviewed By: bgamari, simonpj, austin Subscribers: nomeata, simonpj, mpickering, thomie Differential Revision: https://phabricator.haskell.org/D2086 GHC Trac Issues: #11795
* Remove obsolete comment about the implementation of foldlJoachim Breitner2016-04-081-4/+0
|
* GHC.Base: Use thenIO in instance Applicative IOJoachim Breitner2016-04-081-3/+3
| | | | | | | | Since recent changes to CSE, the previous definition were no longer CSEd with thenIO, which resulted in extra steps in the simplifier and hence slightly larger compile times. See ticket:11781#comment:7. Differential Revision: https://phabricator.haskell.org/D2092
* Don't infer CallStacksEric Seidel2016-04-042-11/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We originally wanted CallStacks to be opt-in, but dealing with let binders complicated things, forcing us to infer CallStacks. It turns out that the inference is actually unnecessary though, we can let the wanted CallStacks bubble up to the outer context by refusing to quantify over them. Eventually they'll be solved from a given CallStack or defaulted to the empty CallStack if they reach the top. So this patch prevents GHC from quantifying over CallStacks, getting us back to the original plan. There's a small ugliness to do with PartialTypeSignatures, if the partial theta contains a CallStack constraint, we *do* want to quantify over the CallStack; the user asked us to! Note that this means that foo :: _ => CallStack foo = getCallStack callStack will be an *empty* CallStack, since we won't infer a CallStack for the hole in the theta. I think this is the right move though, since we want CallStacks to be opt-in. One can always write foo :: (HasCallStack, _) => CallStack foo = getCallStack callStack to get the CallStack and still have GHC infer the rest of the theta. Test Plan: ./validate Reviewers: goldfire, simonpj, austin, hvr, bgamari Reviewed By: simonpj, bgamari Subscribers: bitemyapp, thomie Projects: #ghc Differential Revision: https://phabricator.haskell.org/D1912 GHC Trac Issues: #11573