Difference between revisions of "DDC/ReleaseNotes-Alpha1"

From HaskellWiki
< DDC
Jump to navigation Jump to search
Line 1: Line 1:
 
= Missing Features =
 
= Missing Features =
Being an ''alpha'' release, there is enough implemented to write some programs, but there are a few missing features and some other things to look out for:
+
Being an ''alpha'' release there is enough implemented to write some programs, but there are a few missing features and some other things to look out for:
 
 
 
* Only 32bit machines are supported.
 
* Only 32bit machines are supported.

Revision as of 12:54, 16 March 2008

Missing Features

Being an alpha release there is enough implemented to write some programs, but there are a few missing features and some other things to look out for:

  • Only 32bit machines are supported.
The GC used to work on 64 bit machines also, but it hasn't been tested for a long time. (ticket)
  • Dictionary passing for type-classes is not finished.
Variable types may not have type-class contexts, nor can class and instance definitions. (ticket)
eg: this is ok
   instance Show (List Int) where
   ...
but this is not:
   instance Show a => Show (List a) where
   ...
  • Type class instances are not checked against the class definition.
If an instance has more effects than the definition, then the compiler will panic when type checking the core. (ticket)
  • Invalid uses of unboxed data are not checked.
The runtime system does not support functions being partially applied to unboxed arguments. Nor does it support unboxed data being free in the closure of a function, or being used as the argument to a polymorphic data type. None of these are checked, and all will result in a runtime crash. All other uses should be fine. (ticket)
  • Various intra-module problems aren't checked.
eg, exporting mutable data containing monomorphic type vars is unsound because client modules could update it at different types.
  • Other malformed source programs may result in a compiler panic, but should not cause problems at runtime.
  • It's a bit slooow..
Not for any fundamental algorithmic reason, but because all the work has been put into fixing bugs and getting it off the ground - and not so much fixing space leaks and optimising the compiler itself. For example: When importing the Prelude, the entire set of module interface files needs to be parsed and added to the type graph. We'd likely get a big improvement by only loading what's needed for each particular program.