CHANGELOG.md 6.18 KB
Newer Older
Björn Peemöller 's avatar
Björn Peemöller committed
1 2 3
Change log for curry-base
=========================

4 5 6 7
Version (1.2.0) (WIP)
=====================

  * Added support for latex-style in literate curry
Fredrik Wieczerkowski's avatar
Fredrik Wieczerkowski committed
8
  * Removed support for existentially quantified type variables in data type declarations
9

Finn Teegen's avatar
Finn Teegen committed
10
Version (1.1.0)
11
===============
Kai-Oliver Prott's avatar
Kai-Oliver Prott committed
12 13 14

  * Added SpanInfos to AST

Finn Teegen's avatar
Finn Teegen committed
15 16
Version (1.0.0)
===============
Finn Teegen's avatar
Finn Teegen committed
17 18 19

  * Add support for typeclasses as known from Haskell.

20 21 22 23
Version (0.4.2)
===============

  * Licenses made more specific.
Finn Teegen's avatar
Finn Teegen committed
24
  * Introduced a new annotated variant of FlatCurry.
25

Michael Hanus 's avatar
Michael Hanus committed
26 27
Version (0.4.1)
===============
28

29 30
  * Added new operator `@>` to return the left operand with the source code
    position obtained from the right operand.
31 32
  * Parenthesized type expressions are now represented accordingly in the
    abstract syntax tree
33 34
  * Derive `Show` and `Read` instances also for identifiers to facilitate
    debugging and reading/writing from/to files
35 36
  * Emitted FlatCurry files now contain newlines to improve readability
    for humans
37
  * Implemented pretty printer for extended FlatCurry
38 39
  * Added syntax extension `ExistentialQuantification` that allows the use
    of existentially quantified types in data and newtype constructors
Michael Hanus 's avatar
Michael Hanus committed
40
  * Representation for spans (start and end position) added
Björn Peemöller 's avatar
Björn Peemöller committed
41

Jan Rasmus Tikovsky 's avatar
Jan Rasmus Tikovsky committed
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
Version 0.4.0
=============

  * Introduced new representation of AbstractCurry

    - AbstractCurry files now contain version information
    - support for new record syntax
    - support for newtype declarations
    - evaluation annotations removed
    - arity of constructor declarations removed
    - simplified representation of function rules
    - String literals added

  * Removed support for Curry's record syntax and introduced Haskell's record
    syntax instead

58 59 60
  * Lexer is now capable of lexing binary integer literals, for instance
    `0b101010` or `0B101010` can now be lexed and are converted to `42`.

Jan Rasmus Tikovsky 's avatar
Jan Rasmus Tikovsky committed
61 62
  * Removed record type extensions

Björn Peemöller 's avatar
Björn Peemöller committed
63 64
  * Moved `CYT` monads to `curry-base` (`Curry.Base.Monad`)
    and removed `MessageM` monad
65

66 67 68
  * Adapted Curry syntax and parser: Now declaration of operator precendence
    in declarations of infix operators is optional

69 70 71 72 73 74 75 76 77
  * Moved module `InterfaceEquivalence` (curry-frontend) to
    `Curry.Syntax.InterfaceEquivalence` (curry-base)

  * Removed module `Curry.Base.Equiv`

  * Replaced module `Curry.ExtendedFlat.Interface.Equality` by
    `Curry.ExtendedFlat.InterfaceEquivalence` using a type class to
    implement equivalence of FlatCurry interfaces

Björn Peemöller 's avatar
Björn Peemöller committed
78 79
  * Removed file name extensions for FlatCurry XML files.

80 81 82 83
  * Added syntax extension `NegativeLiterals` to translate negated literals
    into negative literals instead of a call to `Prelude.negate` and
    `Prelude.negateFloat`, respectively.

Björn Peemöller 's avatar
Björn Peemöller committed
84 85 86 87 88 89
  * Added `CYMAKE` to the list of recognized tools when parsing an options
    pragma (`{-# OPTIONS_CYMAKE opt1 opt2 ... optN #-}`).

Version 0.3.10
==============

90 91 92
  * Updated internal structure of `Curry.Base.Filenames` and
    `Curry.Base.PathUtils`.

Björn Peemöller 's avatar
Björn Peemöller committed
93 94 95
  * Fixed bug in parser which complained `:-> expected` when it really
    looked for `:>`.

Björn Peemöller 's avatar
Björn Peemöller committed
96
  * Make library compile under GHC 7.8 without warnings.
Björn Peemöller 's avatar
Björn Peemöller committed
97 98 99 100 101 102 103 104 105 106

  * Unliterating and lexing/parsing of source files are now decoupled
    to support custom preprocessors.

  * Split `Curry.AbstractCurry` and `Curry.FlatCurry` into two modules
    `.Type` and `.Files`, where `.Type` now only contains the type definition
    while `.Files` contains read/write functions.
    Both are subsumed by the parent modules `Curry.AbstractCurry`
    and `Curry.FlatCurry` for convenience.

Björn Peemöller 's avatar
Björn Peemöller committed
107 108
Version 0.3.9
=============
Björn Peemöller 's avatar
Björn Peemöller committed
109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129

  * Implementation of module pragmas added. Module pragmas of the following
    types are now parsed and represented in the abstract syntax tree:

    ~~~ {.curry}
    {-# LANGUAGE LANG_EXT+ #-}
    {-# OPTIONS "string" #-}
    {-# OPTIONS_TOOL "string" #-}
    module Main where
    ~~~

    where

      - `LANGEXT+` is a non-empty, comma-separated list of the following
        language extensions: `AnonFreeVars`, `FunctionalPatterns`,
        `NoImplicitPrelude`, `Records`
      - `TOOL` is either `KICS2`, `PAKCS`, or some other tool, represented
        as `Unknown String`.

    Note that, naturally, the curry-base library only recognizes the above
    mentioned pragmas, while the processing is up to the respective tool.
Björn Peemöller 's avatar
Björn Peemöller committed
130

Björn Peemöller 's avatar
Björn Peemöller committed
131 132 133 134 135 136 137 138 139 140 141 142 143
    All other texts given in the pragma braces is ignored and treated as
    a nested comment.

  * Reactivation of Curry interface files.
    During adaption of the MCC frontend to FlatCurry the Curry interface
    files have been deactivated and replaced by FlatCurry's interface
    files. To allow the later addition of type classes to Curry,
    they have now been reactivated.

Version 0.3.8
=============

  * The parser now takes the layout into respect when parsing the import
Björn Peemöller 's avatar
Björn Peemöller committed
144 145 146
    list. This fixes issue #494 where a module with imports without
    restrictions, directly followed by an operator definition,
    could not be parsed.
Björn Peemöller 's avatar
Björn Peemöller committed
147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188

  * Various internal improvements.

Version 0.3.7
=============

  * Support for typed FlatCurry expressions added. Now additional type
    information given by the programmer as in

    ~~~ {.curry}
    null (unknown :: [()])
    ~~~

    is represented in FlatCurry and cann therefore be processed by other
    programs like PAKCS or KICS2.

Version 0.3.6
=============

  * Fixed a bug where character constants not contained in the ASCII alphabet
    were translated incorrectly.

Version 0.3.5
=============

  * Fixed a bug w.r.t. pretty-printing of records.

Version 0.3.4
=============

  * Made compiler messages comparable to allow later sorting of compiler
    errors and warnings to present them in the order of their occurence.

Version 0.3.3
=============

  * Improved pretty printing of Curry modules.

Version 0.3.2
=============

  * Improved pretty-printing of warnings and errors.
Björn Peemöller 's avatar
Björn Peemöller committed
189

Björn Peemöller 's avatar
Björn Peemöller committed
190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210
  * Improved error message for missing precendence after fixity declaration.

  * Changed syntax of records to allow disambiguation of record selection
    and case branches.

  * Various improvements.

Version 0.3.1
=============

  * Improved support for anonymous identifiers (test predicate, parser
    also returns source code position).

Version 0.3.0
=============

  * Massive refactoring of the previous version.

  * All compiler warnings removed.

  * Fixed various implementation bugs.