Known bugs in nhc13
Bugs by design :-)
- n+k patterns
- are not supported at all by nhc13.
- the monomorphism restriction
- is not implemented.
- the Unicode character set
- is not supported yet - characters are still 8-bit.
- Latin-ISO-8859-1 character set not fully supported
- Example program.
- Overloaded cafs are treated as functions (debatable "problem")
- Example program.
Unintended bugs :-(
- Strictness annotations on named-field labels
- are not implemented - although you can use strictness annotations
elsewhere.
- Precursor to one below
- Example program.
- Type checking: default declarations
- Example program.
- Bizarre error on seq interacting with classes
- Example program.
- Using an imported renaming type to define a second renaming type
- Example module.
Example program.
- Re-defining Prelude entities should strictly speaking cause an error
- Example program.
- Importing qualified Prelude and then using an unqualified Prelude entity
- Example program.
- Contexts required in let-bindings
- Example program.
Fixed bugs :-)
- GreenCard parser
fixed 981103
- did not notify syntax errors - it simply generated bogus
Haskell and C. (This was because the original GreenCard parser was
generated by Happy, which can only be used in conjunction with ghc.
For nhc13, we had been using a cheap and cheerful
parser combinator library without error-detection. We have now
added error-detection to the combinators.)
- Unknown instruction 199
fixed 980827
- A GreenCard-ed program which called C which called back to Haskell
which called out to C again would sometimes fail with this error.
The system simply forgot to stack the outward call contexts and
so returned to the wrong place.
- Prelude.product
fixed 980702
- Incorrectly defined as foldl (*) 0, rather than
foldl (*) 1.
- Garbage collecting BinHandles
fixed 980702
- When the GC collected a Memory BinHandle, it first tried to close
it, which occasionally called the GC again recursively, generating
a segmentation fault.
- multiple-precision integers
fixed 980407
- The functions (>) and (>=) were semantically swapped for
multiple-precision integers (type Integer).
- GreenCard
fixed 980323
- A C function of type () -> IO a was only ever called once
(and the result shared with all other calls), because the unit argument
was stripped, leaving a zero-arity CAF. This is now fixed so that
the unit argument is passed through, forcing re-evaluation with every
call.
- Binary library
fixed 980302
- closeBin operation sometimes caused unexpected effects -
both closeBin and the garbage collector free'd the same
malloc'd memory
- Pattern matching with no fields against constructions with no fields
fixed 980203
- Example program.
- sparc space faults
fixed 971120 - userGC structure allocated wrong amount of space.
- Occasionally GreenCard crashed horribly on the sparc architecture with
a segmentation fault, which went away if you
increased the heapsize. Also, programs compiled with -p on the sparc
crashed when you attempted to gather a runtime profile.
- Importing qualified names
- Example module.
Example program.
- Internal error on incorrect program
- Symptom: "0" where "t Int" should be.
Example program.
- Parsing an integer literal as a Double
- Example program.
- Strictness annotations combining with seq
- Example program.
- Parsing literal characters, e.g. read "'a'"
- Example program.
- Importing/exporting classes without any methods (pedantic)
- Example module.
Example program.
- Printing doubles less than 0.1
- Example program.
- Supplying a function to seq as its second argument
- Example program.
- Translating do-notation for a pattern of the form `[a]'
- Example program.
Reporting bugs
Please notify any bugs you find in any part of the nhc13
system to
nhc-bugs@cs.york.ac.uk.
The latest updates to these pages are available on the WWW from
http://www.cs.york.ac.uk/fp/nhc13/
1998.11.05
York Functional Programming Group
Malcolm.Wallace@cs.york.ac.uk
|