#9963: GHCi panic with --print-libdir flag
-------------------------------------+-------------------------------------
Reporter: jstolarek | Owner:
Type: bug | Status: new
Priority: high | Milestone: 7.10.1
Component: Driver | Version: 7.9
Keywords: | Operating System: Unknown/Multiple
Architecture: | Type of failure: GHCi crash
Unknown/Multiple | Blocked By:
Test Case: | Related Tickets:
Blocking: |
Differential Revisions: |
-------------------------------------+-------------------------------------
Reported on GHC devs:
{{{
$ ghc-stage2 --print-libdir
/dane/projekty/ghc/build/inplace/lib
$ ghc-stage2 --interactive --print-libdir
ghc-stage2: panic! (the 'impossible' happened)
(GHC version 7.9.20141222 for x86_64-unknown-linux):
ghc-stage2: panic! (the 'impossible' happened)
(GHC version 7.9.20141222 for x86_64-unknown-linux):
v_unsafeGlobalDynFlags: not initialised
Please report this as a GHC bug: http://www.haskell.org/ghc/reportabug
Please report this as a GHC bug: http://www.haskell.org/ghc/reportabug
}}}
Does not happen with GHC 7.8.x.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/9963>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
#10099: cabal install broken with ghc 7.10.1-rc2
-------------------------------------+-------------------------------------
Reporter: trommler | Owner:
Type: bug | Status: new
Priority: highest | Milestone: 7.10.1
Component: Package | Version: 7.10.1-rc2
system | Operating System: Unknown/Multiple
Keywords: | Type of failure: Runtime crash
Architecture: | Blocked By:
Unknown/Multiple | Related Tickets:
Test Case: |
Blocking: |
Differential Revisions: |
-------------------------------------+-------------------------------------
Trying to install a package with cabal-install and Cabal from ghc 7.10-rc2
consistently gives this error message (`primitive` is just an example):
{{{
peter@montebre:~> cabal install primitive
Resolving dependencies...
Configuring primitive-0.5.4.0...
cabal: Distribution/Client/Config.hs:(246,37)-(299,9): Missing field in
record construction configProf
}}}
This is my package database:
{{{
peter@montebre:~> ghc-pkg list
/usr/lib64/ghc-7.10.0.20150123/package.conf.d
Cabal-1.22.1.0
HTTP-4000.2.19
array-0.5.0.1
base-4.8.0.0
bin-package-db-0.0.0.0
binary-0.7.3.0
bytestring-0.10.6.0
containers-0.5.6.2
deepseq-1.4.0.0
directory-1.2.2.0
filepath-1.3.1.0
ghc-7.10.0.20150123
ghc-prim-0.3.1.0
haskeline-0.7.2.0
hoopl-3.10.0.2
hpc-0.6.0.2
integer-gmp-1.0.0.0
mtl-2.2.1
network-2.4.2.3
old-locale-1.0.0.7
old-time-1.1.0.3
parsec-3.1.8
pretty-1.1.2.0
process-1.2.2.0
random-1.0.1.1
rts-1.0
stm-2.4.2
syb-0.4.4
template-haskell-2.10.0.0
terminfo-0.4.0.1
text-1.2.0.4
th-desugar-1.5
th-lift-0.7
time-1.5.0.1
transformers-0.4.2.0
unix-2.7.1.0
xhtml-3000.2.1
zlib-0.5.4.2
}}}
I updated only those packages (from their versions in Haskell Platform)
that would not compile with 7.101-rc2.
I am setting this to highest as this issue would be very annoying for
everyone.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/10099>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
#7543: Constraint synonym instances
-------------------------------------+-------------------------------------
Reporter: monoidal | Owner:
Type: bug | Status: new
Priority: normal | Milestone: 7.12.1
Component: Compiler | Version: 7.6.1
Resolution: | Keywords:
Operating System: Unknown/Multiple | Architecture:
Type of failure: None/Unknown | Unknown/Multiple
Blocked By: | Test Case:
Related Tickets: | Blocking:
| Differential Revisions:
-------------------------------------+-------------------------------------
Comment (by bheklilr):
I don't have a particular attachment to being able to do this, my biggest
concern is that it's somewhat inconsistent behavior. If a constraint
isn't a class, then it shouldn't be possible to make an instance of it.
Or we should allow all constraints to be instantiated as classes. This
could lead to some interesting problems to have to solve, such as when two
constraints are used that could have overlapping names
{{{
module C1 where
class C1 a where
c :: a -> a
}}}
----
{{{
module C2 where
class C2 a where
c :: a -> a
}}}
----
{{{
module C where
import C1
import C2
type Cs a = (C1 a, C2 a)
instance Cs Int where
C1.c = pred
C2.c = succ
}}}
This won't work currently because you can't use qualified names in a
binding position, but without the qualification you can't distinguish
between the different `c` methods on the classes. I also can't say I'm a
fan of having multiple instances defined in the same block. For example,
the following would bother me
{{{
newtype MyInt = MyInt Int
type OrdNum a = (Num a, Ord a)
instance OrdNum MyInt where
compare (MyInt x) (MyInt y) = compare x y
fromInteger = MyInt
...
-- Results in
-- instance Num MyInt
-- instance Ord MyInt
}}}
Considering that the argument for being able use constraints like this is
that it would slightly improve the usability of a handful of libraries,
I'm personally leaning towards a fix that would simply disallow instancing
anything that is not a class.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/7543#comment:11>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
#7543: Constraint synonym instances
-------------------------------------+-------------------------------------
Reporter: monoidal | Owner:
Type: bug | Status: new
Priority: normal | Milestone: 7.12.1
Component: Compiler | Version: 7.6.1
Resolution: | Keywords:
Operating System: Unknown/Multiple | Architecture:
Type of failure: None/Unknown | Unknown/Multiple
Blocked By: | Test Case:
Related Tickets: | Blocking:
| Differential Revisions:
-------------------------------------+-------------------------------------
Comment (by simonpj):
> This would be easier to explain, at least, and wouldn't require much
upheaval either. Actually, this is probably simpler than my idea in
comment:7.
I don't think so.
{{{
type C a = X a Num
type X a b = b a
}}}
I really don't want to put enough cleverness in the renamer to expand type
synonyms on the fly.
Let's see how keen our users are.
Simon
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/7543#comment:10>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
#7543: Constraint synonym instances
-------------------------------------+-------------------------------------
Reporter: monoidal | Owner:
Type: bug | Status: new
Priority: normal | Milestone: 7.12.1
Component: Compiler | Version: 7.6.1
Resolution: | Keywords:
Operating System: Unknown/Multiple | Architecture:
Type of failure: None/Unknown | Unknown/Multiple
Blocked By: | Test Case:
Related Tickets: | Blocking:
| Differential Revisions:
-------------------------------------+-------------------------------------
Comment (by goldfire):
The other thing we could do is support this feature at synonym-definition
time. When defining a type synonym such that the head of the RHS is a
class, record this fact in the `TyCon` and corresponding iface info. If
such a synonym appears as the head of an instance declaration, we use this
tidbit to do the name lookup.
This would be easier to explain, at least, and wouldn't require much
upheaval either. Actually, this is probably simpler than my idea in
comment:7.
About looking up instances: we really need to move beyond `grep` for this
sort of thing! Of course, I exclusively use `grep` for this sort of
thing... because I don't have a better option to hand. But that's a story
for another day. In the meantime, worrying about obfuscation via synonyms
is valid, but also not something that (I believe) should hold this up.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/7543#comment:9>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
#7543: Constraint synonym instances
-------------------------------------+-------------------------------------
Reporter: monoidal | Owner:
Type: bug | Status: new
Priority: normal | Milestone: 7.12.1
Component: Compiler | Version: 7.6.1
Resolution: | Keywords:
Operating System: Unknown/Multiple | Architecture:
Type of failure: None/Unknown | Unknown/Multiple
Blocked By: | Test Case:
Related Tickets: | Blocking:
| Differential Revisions:
-------------------------------------+-------------------------------------
Comment (by simonpj):
Yes we could do as Richard suggests. It'd be one more thing to explain in
the user manual. And I'm a little suspicious, because now if I'm hunting
for instances of some class I need to take synonyms into account.
I grant that we already allow ''type'' synonyms in the instance head, and
that too makes hunting for instances harder in a similar way.
Are these disadvantages outweighed by the advantages? Do more than two
people want this?
Simon
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/7543#comment:8>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
#10156: Unable to coerce with flipped Coercible context
-------------------------------------+-------------------------------------
Reporter: ekmett | Owner:
Type: feature | Status: new
request | Milestone:
Priority: normal | Version: 7.10.1-rc2
Component: Compiler | Operating System: Unknown/Multiple
(Type checker) | Type of failure: None/Unknown
Keywords: | Blocked By:
Architecture: | Related Tickets:
Unknown/Multiple |
Test Case: |
Blocking: |
Differential Revisions: |
-------------------------------------+-------------------------------------
{{{#!hs
coerce' :: Coercible a b => b -> a
coerce' = coerce
}}}
doesn't compile, forcing workarounds like:
{{{#!hs
coerce' :: forall a b. Coercible a b => b -> a
coerce' = coerce (id :: a -> a)
}}}
This arises in practice in several places in the `profunctors` package and
`lens`.
https://github.com/ekmett/profunctors/blob/1c3508e5274a0ed03765c569596a8fda…http://hackage.haskell.org/package/lens-4.8/docs/src/Control-Lens-
Internal-Coerce.html#coerce%27
Ideally we'd be able to retire `coerce'` entirely and just use `coerce` in
those contexts.
The tricky part is of course avoiding infinite loops once you add
symmetry.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/10156>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler