[GHC] #11425: The GHC API doesn't provide a good hscTarget option for tooling
GHC
ghc-devs at haskell.org
Mon Jul 25 08:51:24 UTC 2016
#11425: The GHC API doesn't provide a good hscTarget option for tooling
-------------------------------------+-------------------------------------
Reporter: bgamari | Owner:
Type: feature request | Status: new
Priority: high | Milestone: 8.2.1
Component: GHC API | Version: 7.10.3
Resolution: | Keywords:
Operating System: Unknown/Multiple | Architecture:
| Unknown/Multiple
Type of failure: Other | Test Case:
Blocked By: | Blocking:
Related Tickets: | Differential Rev(s):
Wiki Page: |
-------------------------------------+-------------------------------------
Description changed by osa1:
@@ -16,1 +16,1 @@
- * [https://github.com/DanielG/ghc-mod/pull/145|Fails} to issue pattern
+ * [https://github.com/DanielG/ghc-mod/pull/145 Fails] to issue pattern
New description:
Tools like ghc-mod typically just want `TypecheckedModule`s. Sadly, the
GHC API currently doesn't provide a good way to get at these in all cases
(see this [https://github.com/DanielG/ghc-mod/issues/205|ghc-mod ticket]).
Each of the options we offer are cursed with their own limitations
(largely quoting from the ghc-mod ticket),
== HscNothing ==
At first glance this looks like what you would want. But...
* Pros
* Doesn't generate code of any sort and is therefore rather lightweight
* Cons
* It lacks support for Template Haskell
* Has trouble with `foreign export`s
* [https://github.com/DanielG/ghc-mod/pull/145 Fails] to issue pattern
match checker warnings
== HscInterpreted ==
Okay, so `HscNothing` doesn't work. Maybe `HscInterpreted` is better?
* Pros
* Supports Template Haskell
* Cons
* Can't deal with unboxed tuples (#1257)
* Slower as we need to produce unnecessary bytecode
* Large memory footprint
* Also can't deal with `foreign export`s
== HscAsm ==
* Pros
* Supports all compilable code
* Cons
* Slow
* Produces `.o` files
This is quite unfortunate. It seems like we need something in between
`HscNothing` and `HscInterpreted` which is willing to use the interpreter
to evaluate Template Haskell splices when necessary, but doesn't produce
bytecode. Unfortunately it's unclear what to do about `foreign export`
(but arguably most tools would be fine with some approximate
representation).
--
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/11425#comment:3>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list