... | @@ -6,7 +6,7 @@ Error: HttpError (HttpExceptionRequest Request { |
... | @@ -6,7 +6,7 @@ Error: HttpError (HttpExceptionRequest Request { |
|
secure = True
|
|
secure = True
|
|
requestHeaders = []
|
|
requestHeaders = []
|
|
path = "/trac/ghc/wiki/Status/April07"
|
|
path = "/trac/ghc/wiki/Status/April07"
|
|
queryString = "?version=21"
|
|
queryString = "?version=32"
|
|
method = "GET"
|
|
method = "GET"
|
|
proxy = Nothing
|
|
proxy = Nothing
|
|
rawBody = False
|
|
rawBody = False
|
... | @@ -14,7 +14,7 @@ Error: HttpError (HttpExceptionRequest Request { |
... | @@ -14,7 +14,7 @@ Error: HttpError (HttpExceptionRequest Request { |
|
responseTimeout = ResponseTimeoutDefault
|
|
responseTimeout = ResponseTimeoutDefault
|
|
requestVersion = HTTP/1.1
|
|
requestVersion = HTTP/1.1
|
|
}
|
|
}
|
|
(StatusCodeException (Response {responseStatus = Status {statusCode = 403, statusMessage = "Forbidden"}, responseVersion = HTTP/1.1, responseHeaders = [("Date","Sun, 10 Mar 2019 07:03:24 GMT"),("Server","Apache/2.2.22 (Debian)"),("Strict-Transport-Security","max-age=63072000; includeSubDomains"),("Vary","Accept-Encoding"),("Content-Encoding","gzip"),("Content-Length","255"),("Content-Type","text/html; charset=iso-8859-1")], responseBody = (), responseCookieJar = CJ {expose = []}, responseClose' = ResponseClose}) "<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML 2.0//EN\">\n<html><head>\n<title>403 Forbidden</title>\n</head><body>\n<h1>Forbidden</h1>\n<p>You don't have permission to access /trac/ghc/wiki/Status/April07\non this server.</p>\n<hr>\n<address>Apache/2.2.22 (Debian) Server at ghc.haskell.org Port 443</address>\n</body></html>\n"))
|
|
(StatusCodeException (Response {responseStatus = Status {statusCode = 403, statusMessage = "Forbidden"}, responseVersion = HTTP/1.1, responseHeaders = [("Date","Sun, 10 Mar 2019 07:03:37 GMT"),("Server","Apache/2.2.22 (Debian)"),("Strict-Transport-Security","max-age=63072000; includeSubDomains"),("Vary","Accept-Encoding"),("Content-Encoding","gzip"),("Content-Length","255"),("Content-Type","text/html; charset=iso-8859-1")], responseBody = (), responseCookieJar = CJ {expose = []}, responseClose' = ResponseClose}) "<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML 2.0//EN\">\n<html><head>\n<title>403 Forbidden</title>\n</head><body>\n<h1>Forbidden</h1>\n<p>You don't have permission to access /trac/ghc/wiki/Status/April07\non this server.</p>\n<hr>\n<address>Apache/2.2.22 (Debian) Server at ghc.haskell.org Port 443</address>\n</body></html>\n"))
|
|
|
|
|
|
Original source:
|
|
Original source:
|
|
|
|
|
... | @@ -43,7 +43,7 @@ David Himmelstrup, David Waern, Judah Jacobson, Isaac Jones, |
... | @@ -43,7 +43,7 @@ David Himmelstrup, David Waern, Judah Jacobson, Isaac Jones, |
|
Lennart Augustsson, Lennart Kolmodin, Manuel M T Chakravarty,
|
|
Lennart Augustsson, Lennart Kolmodin, Manuel M T Chakravarty,
|
|
Pepe Iborra, Ravi Nanavati, Samuel Bronson, Sigbjorn Finne,
|
|
Pepe Iborra, Ravi Nanavati, Samuel Bronson, Sigbjorn Finne,
|
|
Spencer Janssen, Sven Panne, Tim Chevalier, Tim Harris,
|
|
Spencer Janssen, Sven Panne, Tim Chevalier, Tim Harris,
|
|
Tyson Whitehead, Wolfgang Thaller and anyone else who has contributed
|
|
Tyson Whitehead, Wolfgang Thaller, and anyone else who has contributed
|
|
but we have accidentally omitted.
|
|
but we have accidentally omitted.
|
|
|
|
|
|
As a result of this heavy usage, it has taken us nearly six months to
|
|
As a result of this heavy usage, it has taken us nearly six months to
|
... | @@ -71,22 +71,22 @@ Simon Peyton Jones, Simon Marlow, Ian Lynagh |
... | @@ -71,22 +71,22 @@ Simon Peyton Jones, Simon Marlow, Ian Lynagh |
|
* We have completely replaced GHC's intermediate language with
|
|
* We have completely replaced GHC's intermediate language with
|
|
System FC(X), an extension of System F with explicit equality
|
|
System FC(X), an extension of System F with explicit equality
|
|
witnesses. This enables GHC to support GADTs and associated types,
|
|
witnesses. This enables GHC to support GADTs and associated types,
|
|
with two new simple but powerful mechanisms. The paper is at
|
|
with two new simple but powerful mechanisms. The paper is
|
|
http://research.microsoft.com/~simonpj/papers/ext-f/.
|
|
[http://research.microsoft.com/~simonpj/papers/ext-f/ System F with Type Equality Coercions].
|
|
Much of the conversion work was done by Kevin Donnelly, while he
|
|
Much of the conversion work was done by Kevin Donnelly, while he
|
|
was on an internship at Microsoft.
|
|
was on an internship at Microsoft.
|
|
|
|
|
|
* Manuel Chakravarty has implemented ''type-indexed data types'',
|
|
* Manuel Chakravarty has implemented ''data-type families'' (aka indexed data types),
|
|
a modest generalisation of the ''associated data types''
|
|
a modest generalisation of the ''associated data types''
|
|
of our POPL'05 paper
|
|
of our POPL'05 paper
|
|
http://research.microsoft.com/~simonpj/papers/assoc-types/.
|
|
[http://research.microsoft.com/~simonpj/papers/assoc-types/ Associated types with class].
|
|
[[BR]][[BR]]
|
|
[[BR]][[BR]]
|
|
This part is done. Now we are working on indexed ''type synonyms''
|
|
This part is done. Now we are working on ''type-synonym families''
|
|
(aka type functions), which are considerably trickier that
|
|
(aka type functions or [http://research.microsoft.com/~simonpj/papers/assoc-types associated type synonyms (ICFP'05)]), which are considerably trickier that
|
|
indexed data types, at least so far as type inference is concerned.
|
|
data type families, at least so far as type inference is concerned.
|
|
Tom Schrijvers is in Cambridge for three months to help us use ides
|
|
Tom Schrijvers is in Cambridge for three months to help us use ides
|
|
from Constraint Handling Rules to solve the inference problem.
|
|
from Constraint Handling Rules to solve the inference problem.
|
|
Indexed type synonyms will almost completely fill the spot occupied
|
|
Type synonym families will almost completely fill the spot occupied
|
|
by the always-troublesome functional dependencies, so we are quite
|
|
by the always-troublesome functional dependencies, so we are quite
|
|
excited about this.
|
|
excited about this.
|
|
[[BR]][[BR]]
|
|
[[BR]][[BR]]
|
... | @@ -96,22 +96,22 @@ Simon Peyton Jones, Simon Marlow, Ian Lynagh |
... | @@ -96,22 +96,22 @@ Simon Peyton Jones, Simon Marlow, Ian Lynagh |
|
the key to fixing the interaction between
|
|
the key to fixing the interaction between
|
|
GADTs and type classes. GHC's users have been very polite about
|
|
GADTs and type classes. GHC's users have been very polite about
|
|
this collection of bugs, but they are now finally fixed.
|
|
this collection of bugs, but they are now finally fixed.
|
|
Implication constraints are described by Martin Sulzmann:
|
|
Implication constraints are described by Martin Sulzmann in
|
|
http://www.comp.nus.edu.sg/~sulzmann/publications/tr-eadt.ps.gz.
|
|
[http://www.comp.nus.edu.sg/~sulzmann/publications/tr-eadt.ps.gz A framework for Extended Algebraic Data Types].
|
|
|
|
|
|
* Björn Bringert (a GHC Hackathon graduate) implemented
|
|
* Björn Bringert (a GHC Hackathon graduate) implemented
|
|
''standalone deriving'', which allows you to write a `deriving`
|
|
''standalone deriving'', which allows you to write a `deriving`
|
|
declaration anywhere, rather than only where the data type is
|
|
declaration anywhere, rather than only where the data type is
|
|
declared. Details of the syntax have not yet quite settled. See
|
|
declared. Details of the syntax have not yet quite settled. See
|
|
also http://www.haskell.org/pipermail/haskell-prime/2006-October/001725.html.
|
|
also http://haskell.org/haskellwiki/GHC/StandAloneDeriving.
|
|
|
|
|
|
* Lennart Augustsson implemented overloaded string literals. So now
|
|
* Lennart Augustsson implemented overloaded string literals. So now
|
|
just as a numeric literal has type `∀ a. Num a ⇒ a`,
|
|
just as a numeric literal has type `∀a. Num a ⇒ a`,
|
|
so a string literal has type `∀ a. IsString a ⇒ a`,
|
|
so a string literal has type `∀a. IsString a ⇒ a`,
|
|
The documentation is here: http://www.haskell.org/ghc/dist/current/docs/users_guide/other-type-extensions.html#overloaded-strings.
|
|
The documentation is here: http://www.haskell.org/ghc/dist/current/docs/users_guide/other-type-extensions.html#overloaded-strings.
|
|
|
|
|
|
A less successful feature of the last year has been the
|
|
A less successful feature of the last year has been the
|
|
story on impredicative instantiation (see the paper "Boxy types").
|
|
story on impredicative instantiation (see the paper [http://research.microsoft.com/~simonpj/papers/boxy Boxy types: type inference for higher-rank types and impredicativity]).
|
|
The feature is implemented, but the implementation is significantly
|
|
The feature is implemented, but the implementation is significantly
|
|
more complicated than we expected; and it delivers fewer benefits than
|
|
more complicated than we expected; and it delivers fewer benefits than
|
|
we hoped. For example, the system described in the paper does not
|
|
we hoped. For example, the system described in the paper does not
|
... | @@ -130,16 +130,15 @@ impredicative instantiation as it now stands; it might change! |
... | @@ -130,16 +130,15 @@ impredicative instantiation as it now stands; it might change! |
|
on the order of 12%.
|
|
on the order of 12%.
|
|
|
|
|
|
* Roman Leshchinskiy, Don Stewart, and Duncan Coutts did some beautiful
|
|
* Roman Leshchinskiy, Don Stewart, and Duncan Coutts did some beautiful
|
|
work on ''fusion''; see their paper http://www.cse.unsw.edu.au/~dons/papers/CSL06.html.
|
|
work on ''fusion''; see their paper [http://www.cse.unsw.edu.au/~dons/papers/CSL06.html Rewriting Haskell strings].
|
|
This fusion work is already being heavily used in the parallel array library
|
|
This fusion work is already being heavily used in the parallel array library
|
|
(see below), and they are also working on replacing foldr/build fusion with
|
|
(see below), and they are also working on replacing foldr/build fusion with
|
|
stream fusion in the main base library (see their new paper
|
|
stream fusion in the main base library (see their new paper
|
|
http://www.cse.unsw.edu.au/~dons/papers/CLS07.html).
|
|
[http://www.cse.unsw.edu.au/~dons/papers/CLS07.html Stream Fusion: From Lists to Streams to Nothing at All]).
|
|
[[BR]][[BR]]
|
|
[[BR]][[BR]]
|
|
Their work highlighted the importance of the SpecConstr transformation, which Simon PJ
|
|
Their work highlighted the importance of the SpecConstr transformation, which Simon PJ
|
|
implemented several years ago. Of course, they suggested many enhancements, many of
|
|
implemented several years ago. Of course, they suggested many enhancements, many of
|
|
which Simon PJ duly implemented; see the new paper "Constructor specialisation for Haskell
|
|
which Simon PJ duly implemented; see the new paper [http://research.microsoft.com/~simonpj/papers/spec-constr/ Constructor specialisation for Haskell programs].
|
|
programs" http://research.microsoft.com/~simonpj/papers/spec-constr/.
|
|
|
|
|
|
|
|
* Alexey Rodriguez visited us for three months from Utrecht, and implemented
|
|
* Alexey Rodriguez visited us for three months from Utrecht, and implemented
|
|
a new back-end optimisation called ''dynamic pointer tagging''. We have wanted
|
|
a new back-end optimisation called ''dynamic pointer tagging''. We have wanted
|
... | @@ -152,30 +151,29 @@ impredicative instantiation as it now stands; it might change! |
... | @@ -152,30 +151,29 @@ impredicative instantiation as it now stands; it might change! |
|
* Gabriele Keller, Manuel Chakravarty, and Roman Leshchinskiy, at the
|
|
* Gabriele Keller, Manuel Chakravarty, and Roman Leshchinskiy, at the
|
|
University of New South Wales, are collaborating with us on support
|
|
University of New South Wales, are collaborating with us on support
|
|
for ''nested data-parallel computation'' in GHC.
|
|
for ''nested data-parallel computation'' in GHC.
|
|
We presented a paper at the Declarative Aspects of Multicore Programing
|
|
We presented a paper [http://research.microsoft.com/~simonpj/papers/assoc-types Data parallel Haskell: a status report] at the Declarative Aspects of Multicore Programing
|
|
workshop in January 2007: http://www.cse.unsw.edu.au/~chak/papers/CLPKM07.html,
|
|
workshop in January 2007,
|
|
and made a first release of the
|
|
and made a first release of the
|
|
library in March http://www.cse.unsw.edu.au/~dons/polymer.html.
|
|
library in March.
|
|
It's a pretty ambitious project, and we have quite a way to go.
|
|
It's a pretty ambitious project, and we have quite a way to go.
|
|
You can peek at the current status on the project home page:
|
|
You can peek at the current status on the project home page:
|
|
http://haskell.org/haskellwiki/GHC/Data_Parallel_Haskell.
|
|
http://haskell.org/haskellwiki/GHC/Data_Parallel_Haskell.
|
|
|
|
|
|
* Tim Harris added support for ''invariants'' to GHC's Software
|
|
* Tim Harris added support for ''invariants'' to GHC's Software
|
|
Transactional Memory (STM) implementation. Paper here:
|
|
Transactional Memory (STM) implementation. Paper is [http://research.microsoft.com/~simonpj/papers/stm/ Transactional memory with data invariants].
|
|
http://research.microsoft.com/~simonpj/papers/stm/.
|
|
|
|
|
|
|
|
* At the moment GHC's ''garbage collector'' is single-threaded,
|
|
* At the moment GHC's ''garbage collector'' is single-threaded,
|
|
even when GHC is running on a multiprocessor. Roshan James spent
|
|
even when GHC is running on a multiprocessor. Roshan James spent
|
|
the summer at Microsoft on an internship, implementing a multi-threaded
|
|
the summer at Microsoft on an internship, implementing a multi-threaded
|
|
GC (http://hackage.haskell.org/trac/ghc/wiki/MotivationForParallelization).
|
|
GC (http://hackage.haskell.org/trac/ghc/wiki/MotivationForParallelization).
|
|
It works! But alas, doing GC with two processors runs no faster than
|
|
It works! But alas, doing GC with two processors runs no faster than
|
|
with one! (we do plan to investigate this further and find the source of
|
|
with one! (We do plan to investigate this further and find the source of
|
|
the bottleneck).
|
|
the bottleneck.)
|
|
|
|
|
|
Peng Li, from the University of Pennsylvania, spent an exciting
|
|
Peng Li, from the University of Pennsylvania, spent an exciting
|
|
three months at Cambridge, working on a whole new architecture for
|
|
three months at Cambridge, working on a whole new architecture for
|
|
concurrency in GHC. (If you don't know Peng you should read his
|
|
concurrency in GHC. (If you don't know Peng you should read his
|
|
wonderful paper http://www.seas.upenn.edu/~lipeng/homepage/papers/lz07pldi.pdf
|
|
wonderful paper [http://www.seas.upenn.edu/~lipeng/homepage/papers/lz07pldi.pdf Combining Events And Threads For Scalable Network Services]
|
|
on implementing a network protocol stack in
|
|
on implementing a network protocol stack in
|
|
Haskell.) At the moment GHC's has threads, scheduling, `forkIO`,
|
|
Haskell.) At the moment GHC's has threads, scheduling, `forkIO`,
|
|
`MVars`, transactional memory, and more besides, all "baked
|
|
`MVars`, transactional memory, and more besides, all "baked
|
... | @@ -213,15 +211,15 @@ environment: |
... | @@ -213,15 +211,15 @@ environment: |
|
"just works".
|
|
"just works".
|
|
|
|
|
|
* Aaron Tomb and Tim Chevalier are working on resurrecting External
|
|
* Aaron Tomb and Tim Chevalier are working on resurrecting External
|
|
Core '''\url{...}''', whose implementation was not only bit-rotted, but also poorly
|
|
Core, whose implementation was not only bit-rotted, but also poorly
|
|
designed (by Simon). By GHC 6.8 we hope to be able to spit out External
|
|
designed (by Simon PJ). By GHC 6.8 we hope to be able to spit out External
|
|
Core for any program, perhaps transform it in some external program,
|
|
Core for any program, perhaps transform it in some external program,
|
|
and read it in again, surviving the round trip unscathed.
|
|
and read it in again, surviving the round trip unscathed.
|
|
|
|
|
|
* It is now possible to compile to object code instead of bytecode inside GHCi, simply by setting a flag
|
|
* It is now possible to compile to object code instead of bytecode inside GHCi, simply by setting a flag
|
|
(`-fobject-code`).
|
|
(`-fobject-code`).
|
|
|
|
|
|
* The GHC API has seen some cleanup, and it should now be both more complete and slightly easier to use.
|
|
* The GHC API has seen some cleanup, and it should now be both more complete and slightly easier to use. There is still plenty of work to do here, though.
|
|
|
|
|
|
* David Wearn has been working on integrating Haddock and GHC during his Google Summer of Code project
|
|
* David Wearn has been working on integrating Haddock and GHC during his Google Summer of Code project
|
|
last year. The parts of this project that involved modifying GHC are done and integrated into the
|
|
last year. The parts of this project that involved modifying GHC are done and integrated into the
|
... | | ... | |