{-# title: Bunny 0.9.0 release note -} # Bunny Release 0.9.0 Date: 2020-12-15 Version 0.9.0 is the first pre-release of [Bunny](Bunny). Bunny aims to meet the Haskell 2010 specification, however, there are still many unimplemented features and bugs. We plan to fix them all by version 1.0.0. ## Items that do not meet the Haskell 2010 specification The following are major points where the current version does not yet meet the Haskell 2010 specification. Unfortunately, we have not been able to do an exhaustive inspection, so the list does not cover enough. In addition, the Standard Prelude, which is implicitly imported, does not meet the Haskell 2010 specification. It will be shown in the next section. - Import declarations not implemented - Unicode characters cannot be used for identifiers (but can be used for string literals and character literals) - Incomplete support for Derived Instance - Data types with field labels are not supported. - Tuples with four or more elements not implemented - Defaulting is not supported (only Num to Integer are supported). - newtype is not supported. - monomorphism restrictsion not implemented - Irrefutable pattern (~ apat) is not supported. - Class declarations cannot be forward referenced (e.g., the definition of the Show class cannot be written after the definition of the Num class). ## Standard Prelude The Standard Prelude, which is implicitly imported, does not meet the Haskell 2010 specification in the following ways - There are classes, instances, functions, etc. that have not been defined yet. - All identifiers are exported, so there are some local functions exposed - Built-in functions pollute the namespace. Source: [lib/Prelude.hs](https://github.com/unnohideyuki/bunny/blob/f6655abfb9efdf88b62d84ac72707752072c177f/compiler/lib/Prelude.hs). ### Undefined class - RealFloat. ### Undefined instance. - Read [a]. - Read Float - Read Double - Read (a, b), Read (a, b, c) ... ### Undefined functions, etc. - type FilePath - data IOError - ioError - userError - catch - putChar - putStr - getContents - interact - readFile - writeFile - appendFile - readIO - readLn ### Functions that should not be exported The following functions should be used only inside Prelude.hs, but are exposed because export control is not implemented yet. showLitChar signum'', signum'' nonnull, digitToInt, readInt, readDec, readSigned numericEnumFrom, numericEnumFromThen, numericEnumFromTo, numericEnumFromThenTo isSpace, isDigit, isOctDigit, isHexDigit, isUpper, isAlpha, isAlphaNum, lexLitChar, lexDigits Ratio, (:%), (%), ratPrec, reduce, numerator, denominator ### Built-in functions are polluting the namespace In the current implementation, the module name of the built-in primitive function is Prim, which pollutes the namespace that the user should be free to use. At the moment, this is not harmful because the import declaration is not implemented yet. This will be fixed by version 1.