summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
...
* users-guide: Run sphinx in nit-picky modeBen Gamari2019-10-085-2/+41
| | | | This ensure that it blurts an error on missing references.
* users-guide: Rework pragma key generationBen Gamari2019-10-081-6/+8
| | | | | | Previously we had a hack to handle the case of multi-token SPECIALISE pragmas. Now we use a slightly more general rule of using a prefix of tokens containing only alphabetical characters.
* users-guide: Document -fworker-wrapperBen Gamari2019-10-081-0/+11
|
* users-guide: Document NondecreasingIndentationBen Gamari2019-10-081-1/+8
|
* users-guide: Fix various warningsBen Gamari2019-10-0811-82/+109
|
* users-guide: Document -XHaskell98 and -XHaskell2010Ben Gamari2019-10-082-0/+42
|
* users-guide: Make reverse flags addressable via :ghc-flag:Ben Gamari2019-10-081-2/+15
| | | | | Previously one could not easily link to the :reverse: flag of a ghc-flag.
* users-guide: Refer to language extension flags via :extension:Ben Gamari2019-10-086-29/+29
| | | | Previously several were referred to via :ghc-flag:`-X...`.
* PmCheck: Identify some semantically equivalent expressionsSebastian Graf2019-10-083-28/+85
| | | | | | | | | | By introducing a `CoreMap Id` to the term oracle, we can represent syntactically equivalent expressions by the same `Id`. Combine that with `CoreOpt.simpleCoreExpr` and it might even catch non-trivial semantic equalities. Unfortunately due to scoping issues, this will not solve #17208 for view patterns yet.
* base: Document the fact that Typeable is automatically "derived"Ben Gamari2019-10-082-1/+5
| | | | This fixes #17060.
* gitlab-ci: Use validate flavour in hadrian buildsBen Gamari2019-10-081-6/+10
|
* validate: Use Hadrian's validate flavourBen Gamari2019-10-081-3/+9
|
* hadrian: Add `validate` and `slow validate` flavoursBen Gamari2019-10-084-1/+71
|
* gitlab-ci: Add missing TEST_ENV variablesBen Gamari2019-10-081-1/+9
| | | | This should fix #16985.
* Remove GhcLibsWithUnixJohn Ericson2019-10-071-8/+0
| | | | | d679ca43e7477284d733b94ff542be5363be3353 meant to remove it but did not finish the job.
* Get rid of GHC_PACKAGE_DB_FLAGJohn Ericson2019-10-074-9/+4
| | | | | We no longer support booting from older GHC since 527bcc41630918977c73584d99125ff164400695.
* Keep OSTYPE local to configure.acJohn Ericson2019-10-071-4/+0
| | | | Unused outside it since b6be81b841e34ca45b3549c4c79e886a8761e59a.
* Remove CONFIGURE_ARGS from configure.acJohn Ericson2019-10-072-10/+0
| | | | | It looks like it's been unused since at least 34cc75e1a62638f2833815746ebce0a9114dc26b.
* Refactor some cruft in TcGenGenericsRyan Scott2019-10-071-28/+18
| | | | | | * `foldBal` contains needless partiality that can easily be avoided. * `mkProd_E` and `mkProd_P` both contain unique supply arguments that are completely unused, which can be removed.
* Get rid of wildcard patterns in prim Cmm emitting codeJohn Ericson2019-10-072-877/+1206
| | | | This way, we can be sure we don't miss a case.
* Switch to cabal-version=3.0 in base.cabal and rts.cabalAndrey Mokhov2019-10-072-2/+2
|
* Switch to cabal-version=3.0 in ghc-heap.cabalAndrey Mokhov2019-10-071-1/+1
|
* Hadrian: Stop using in-tree CabalAndrey Mokhov2019-10-074-6/+3
|
* configure: Determine library versions of template-haskell, et al.Ben Gamari2019-10-072-0/+9
| | | | These are needed by the user guide documentation. Fixes #17260.
* Refactor, document, and optimize LLVM configuration loadingBen Gamari2019-10-078-31/+59
| | | | | | | | | | | | As described in the new Note [LLVM Configuration] in SysTools, we now load llvm-targets and llvm-passes lazily to avoid the overhead of doing so when -fllvm isn't used (also known as "the common case"). Noticed in #17003. Metric Decrease: T12234 T12150
* Only flatten up to type family arity in coreFlattenTyFamApp (#16995)Ryan Scott2019-10-073-126/+215
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Among other uses, `coreFlattenTyFamApp` is used by Core Lint as a part of its check to ensure that each type family axiom reduces according to the way it is defined in the source code. Unfortunately, the logic that `coreFlattenTyFamApp` uses to flatten type family applications disagreed with the logic in `TcFlatten`, which caused it to spuriously complain this program: ```hs type family Param :: Type -> Type type family LookupParam (a :: Type) :: Type where LookupParam (f Char) = Bool LookupParam x = Int foo :: LookupParam (Param ()) foo = 42 ``` This is because `coreFlattenTyFamApp` tries to flatten the `Param ()` in `LookupParam (Param ())` to `alpha` (where `alpha` is a flattening skolem), and GHC is unable to conclude that `alpha` is apart from `f Char`. This patch spruces up `coreFlattenTyFamApp` so that it instead flattens `Param ()` to `alpha ()`, which GHC _can_ know for sure is apart from `f Char`. See `Note [Flatten], wrinkle 3` in `FamInstEnv`.
* rts: Fix CNF dirtying logicBen Gamari2019-10-051-3/+3
| | | | | | | | Previously due to a silly implementation bug CNFs would never have their dirty flag set, resulting in their being added again and again to the `mut_list`. Fix this. Fixes #17297.
* Clean up `#include`s in the compilerJohn Ericson2019-10-0516-26/+11
| | | | | | | | - Remove unneeded ones - Use <..> for inter-package. Besides general clean up, helps distinguish between the RTS we link against vs the RTS we compile for.
* Add musl systems to llvm-targetsMatthew Bauer2019-10-043-1/+27
| | | | | | This was done in Nixpkgs, but never upstreamed. Musl is pretty much the same as gnu, but with a different libc. I’ve used the same values for everything.
* New fix for #11647. Avoid side effects like #17171Roland Senn2019-10-048-6/+35
| | | | | If a main module doesn't contain a header, we omit the check whether the main module is exported. With this patch GHC, GHCi and runghc use the same code.
* [linker, macho] Don't map/allocate zero size sections and segmentsArtem Pyanykh2019-10-041-5/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Zero size sections are common even during regular build on MacOS. For instance: ``` $ ar -xv libHSghc-prim-0.6.1.a longlong.o $ otool -l longlong.o longlong.o: Mach header magic cputype cpusubtype caps filetype ncmds sizeofcmds flags 0xfeedfacf 16777223 3 0x00 1 2 176 0x00002000 Load command 0 cmd LC_SEGMENT_64 cmdsize 152 segname vmaddr 0x0000000000000000 vmsize 0x0000000000000000 <-- segment size = 0 fileoff 208 filesize 0 maxprot 0x00000007 initprot 0x00000007 nsects 1 flags 0x0 Section sectname __text segname __TEXT addr 0x0000000000000000 size 0x0000000000000000 <-- section size = 0 offset 208 align 2^0 (1) reloff 0 nreloc 0 flags 0x80000000 reserved1 0 reserved2 0 cmd LC_BUILD_VERSION cmdsize 24 platform macos sdk 10.14 minos 10.14 ntools 0 ``` The issue of `mmap`ing 0 bytes was resolved in !1050, but the problem remained. These 0 size segments and sections were still allocated in object code, which lead to failed `ASSERT(size > 0)` in `addProddableBlock` further down the road. With this change zero size segments **and** sections are not mapped/allocated at all. Test plan: 1. Build statically linked GHC. 2. Run `ghc --interactive`. Observe that REPL loads successfully (which was not the case before). 3. Load several more compiled hs files into repl. No failures.
* Always enable the external interpreterJohn Ericson2019-10-0413-126/+46
| | | | | | You can always just not use or even build `iserv`. I don't think the maintenance cost of the CPP is worth...I can't even tell what the benefit is.
* Add tryFindTopDir to look for the top dir without blowing up if it isJohn Ericson2019-10-041-11/+17
| | | | not found.
* Pull out the settings file parsing code into it's own module.John Ericson2019-10-043-214/+262
| | | | | | | | | | | This has two benefits: 1. One less hunk of code dependent on DynFlags 2. Add a little bit of error granularity to distrinugish between missing data and bad data. This could someday be shared with ghc-pkg which aims to work even with a missing file. I also am about to to make --supported-extensions use this too.
* Factor out a smaller part of Platform for host fallbackJohn Ericson2019-10-0413-39/+115
|
* Deprecate -fwarn-hi-shadowing, because it was never implemented and isDaroc Alden2019-10-043-14/+6
| | | | | | not used. This fixes #10913.
* Remove {Build,Host}Platform_NAME from headerJohn Ericson2019-10-043-51/+57
| | | | They are only used in a file we construct directly, so just skip CPP.
* Per stage headers, ghc_boot_platform.h -> stage 0 ghcplatform.hJohn Ericson2019-10-0430-388/+383
| | | | | | | | | | | | | | | | | | The generated headers are now generated per stage, which means we can skip hacks like `ghc_boot_platform.h` and just have that be the stage 0 header as proper. In general, stages are to be embraced: freely generate everything in each stage but then just build what you depend on, and everything is symmetrical and efficient. Trying to avoid stages because bootstrapping is a mind bender just creates tons of bespoke mini-mind-benders that add up to something far crazier. Hadrian was pretty close to this "stage-major" approach already, and so was fairly easy to fix. Make needed more work, however: it did know about stages so at least there was a scaffold, but few packages except for the compiler cared, and the compiler used its own counting system. That said, make and Hadrian now work more similarly, which is good for the transition to Hadrian. The merits of embracing stage aside, the change may be worthy for easing that transition alone.
* Add Monad instances to `(,,) a b` and `(,,,) a b c`Fumiaki Kinoshita2019-10-047-3/+36
|
* rules/haddock: Ensure that RTS stats directory existsBen Gamari2019-10-031-0/+2
| | | | | It may not exist if the source tarball was extracted yet not the testsuite tarball.
* Extend argument of createIOThread to word sizeStefan Schulze Frielinghaus2019-10-031-2/+2
| | | | | | | Function createIOThread expects its second argument to be of size word. The natural size of the second parameter is 32bits. Thus for some 64bit architectures, where a write of the lower half of a register does not clear the upper half, the value must be zero extended.
* Add new debug flag -DZTobias Guggenmos2019-10-0311-7/+24
| | | | Zeros heap memory after gc freed it.
* Improve documentation for runtime debugging flagsTobias Guggenmos2019-10-031-0/+22
|
* DynFlags: Only warn when split-sections is ignoredBen Gamari2019-10-031-2/+2
| | | | | Previously we would throw an error which seems a bit harsh. As reported in #17283.
* Exclude rts.cabal from source distributionsBen Gamari2019-10-032-0/+2
| | | | | | | This modifies both the Hadrian and make build systems to avoid included the rts.cabal generated by autoconf in the source distribution. Fixes #17265.
* testsuite: Mark print037 as fragile, not brokenBen Gamari2019-10-031-2/+2
| | | | See #16205.
* Make Haddock submodule remote point to gitlab mirrorJohn Ericson2019-10-031-1/+1
| | | | This makes it match the others
* Improve documentation around empty tuples/listsRichard Eisenberg2019-10-038-56/+132
| | | | | | | | | | | | | | This patch also changes the way we handle empty lists, simplifying them somewhat. See Note [Empty lists]. Previously, we had to special-case empty lists in the type-checker. Now no more! Finally, this patch improves some documentation around the ir_inst field used in the type-checker. This breaks a test case, but I really think the problem is #17251, not really related to this patch. Test case: typecheck/should_compile/T13680
* Add `module {-# SOURCE #-} Foo` syntax for hs-boot in bkpJohn Ericson2019-10-036-22/+63
| | | | This is a good convenience for testing.
* docs String, hyperlink to Data.ListJames Brock2019-10-031-0/+1
| | | | | | | | | | | Add a reference to the documentation for Data.List in the description for String. On the generated Haddock for Data.String, http://hackage.haskell.org/package/base-4.12.0.0/docs/Data-String.html there is curently no hyperlink to Data.List, which is where a reader will find most of the useful functions which can operate on Strings. I imagine this has confused beginners who came to this page looking for String operations.