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

Finn Teegen's avatar
Finn Teegen committed
4
5
6
Under development (1.0.1)
=============

7
8
  * Fixed bug with wrong order of super classes in selector functions
    generated by the dictionary transformation.
9
10
  * Changed desugaring of numeric literals. It now generates calls to the
    functions `Prelude.fromInt` and `Prelude.fromFloat`.
Finn Teegen's avatar
Finn Teegen committed
11
12
13
  * Fixed bug with wrong original names of imported record labels
  * Fixed bug when compiling type constructor classes with super classes

Finn Teegen's avatar
Finn Teegen committed
14
15
Version 1.0.0
=============
Finn Teegen's avatar
Finn Teegen committed
16

Finn Teegen's avatar
Finn Teegen committed
17
  * Added support for typeclasses as known from Haskell
Finn Teegen's avatar
Finn Teegen committed
18

19
20
Version 0.4.2
=============
Björn Peemöller 's avatar
Björn Peemöller committed
21

Jan Rasmus Tikovsky 's avatar
Jan Rasmus Tikovsky committed
22
23
24
25
  * Improved readability of environment information in dumps
    (option dump-simple)
  * Added option to dump all bindings instead of just local ones
    (dump-all-bindings)
Finn Teegen's avatar
Finn Teegen committed
26
27
  * Introduced annotated FlatCurry as a new output format
    (annotated-flat)
Jan Rasmus Tikovsky 's avatar
Jan Rasmus Tikovsky committed
28
29
30
31

Version 0.4.1
=============

32
33
34
  * Added a simple cabal test suite
  * Split import of interfaces/modules and expansion and checking of
    import specifications into two modules.
Björn Peemöller 's avatar
Björn Peemöller committed
35
36
37
  * Improved error messages generated by export check (fixes #1253)
  * Split checking and expansion of export specification into two
    subsequent steps (by Yannik Potdevin, fixes #1335)
38
  * Consider parenthesized type expressions in the Curry AST (by Katharina Rahf)
39
40
  * Added syntax extension `ExistentialQuantification` that allows the use
    of existentially quantified types in data and newtype constructors
41
  * Fixed bug that type declarations weren't syntax checked
42

43
44
45
46
47
48
49
50
51
52
53
54
55
Version 0.4.0
=============

  * Refactored AbstractCurry generation

  * Complete refactoring of FlatCurry generation

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

  * During desugaring record updates are translated to fcase-expressions instead
    of introducing explicit update functions

56
57
58
59
60
61
  * HTML generation now places HTML files for hierarchical modules into
    files named `<Module>_curry.html`, i.e., no sub-folders reflecting
    the the module name hierarchy are generated. In addition, if the option
    `--html-dir` is not given, the current directory is used as the output
    directory.

Jan Rasmus Tikovsky 's avatar
Jan Rasmus Tikovsky committed
62
63
64
65
66
67
  * Removed record type extensions

  * Enabled declaration of (mutually) recursive record types

  * Removed expansion of record types in type error messages

Björn Peemöller 's avatar
Björn Peemöller committed
68
69
  * Replaced `MessageM` monad with `CYT` monads and moved `CYT` monads
    to package `curry-base`
70

71
72
  * Implemented warnings for overlapping module aliases - fixes #14

73
74
75
76
77
78
  * The check for overlapping rules has been completely refactored and
    improved to now also handle rigid case expressions.

  * The check for missing pattern matching alternatives now correctly handles
    String literals - fixes #1048.

79
80
81
82
83
  * Added warnings for top-level functions without type signatures - fixes #769

  * Moved pretty-printing of types from Checks.TypeCheck to Base.CurryTypes

  * Type synonyms in typed expressions are now desugared - fixes #921
84

85
86
87
  * Declaration of operator precedence is now optional in infix operator
    declarations

88
89
90
  * Moved module `InterfaceEquivalence` to curry-base
    (`Curry.Syntax.InterfaceEquivalence`)

Jan Rasmus Tikovsky 's avatar
Jan Rasmus Tikovsky committed
91
92
  * Converted literate Haskell files into simple Haskell files

Björn Peemöller 's avatar
Björn Peemöller committed
93
94
  * Removed support for FlatCurry XML files.

95
96
97
98
  * Added syntax extension `NegativeLiterals` to translate negated literals
    into negative literals instead of a call to `Prelude.negate` and
    `Prelude.negateFloat`, respectively.

99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
  * The frontend now considers options pragmas of the following form:

    ~~~ {.curry}
    {-# OPTIONS_CYMAKE opt1 ... optn #-}
    ~~~

    The string following `OPTIONS_CYMAKE` will be split at white spaces
    and treated like an ordinary command line argument string.

    If one wishes to provide options containing spaces, e.g., directory
    paths or alike, this can be achieved by quoting the respective argument
    using either `'single quotes'` or `'double quotes'` (may bot be mixed).

    Note that *following options are excluded*:

      * A change of the current mode
        (e.g., change from compilation to HTML generation)
      * A change of the import  paths
      * A change of the library paths
      * A change of the compilation targets
        (e.g., change from FlatCurry to AbstractCurry)

    These options can only be set via the command line.

Björn Peemöller 's avatar
Björn Peemöller committed
123
124
125
126
127
128
  * Refactored the source code HTML generation.
    The generation now supports full Curry with all supported extensions,
    i.e., it supports pragmas, record types and functional patterns.
    Furthermore, the created HTML has been simplified, and updated towards
    HTML 5.

129
130
131
  * The HTML generation now accepts an option `--htmldir=dir` to specify
    the output directory of the generated HTML files.

Björn Peemöller 's avatar
Björn Peemöller committed
132
133
134
Version 0.3.10
==============

Björn Peemöller 's avatar
Björn Peemöller committed
135
136
137
138
139
  * Various improvements of the internal structure.

  * Improved status messages. The compilation status message are now of the form

        [m of n] Compiling/Skipping <Module> (<source file>, <target file>)
Björn Peemöller 's avatar
Björn Peemöller committed
140

141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
  * Implemented support for custom preprocessors. It is now possible to run
    a custom preprocessor command via the following options:

    * `-F` enables support for a preprocessor
    * `-pgmF <cmd>` set the preprocessor command to `<cmd>`
    * `-optF <arg>` adds an additional argument to the preprocessor command
      (can be repeated to add multiple arguments)

    The preprocessor is applied to all source files which are (re)compiled
    after unliterating *and after determining the import list*.
    Consequently, adding modules via the preprocessor will results in
    compilation errors due to missing imports.
    On the other hand, the frontend will automatically determine changed
    files which are then handed to the preprocessor.

    The command is called with at least three arguments:

     #. The (normalised) file name of the source file currently processed.
        **This name is intended only for reference.**
     #. The name of the file containing the (potentially unliterated)
        contents of the original file.
        **This is the file the preprocessor should read from.**
     #. The name of the file where the preprocessed source code should go to.
        **This is the file the preprocessor should write to.**
     #. Optionally, any additional arguments specified using `-optF`.

Björn Peemöller 's avatar
Björn Peemöller committed
167
168
Version 0.3.9
=============
Björn Peemöller 's avatar
Björn Peemöller committed
169

170
171
172
  * Simplified verbosity options by merging options "-v1" and "-v2".
    Now only "-v0" and "-v1" are supported.

173
174
175
  * Fixed bug in non-exhaustive pattern matching check which occured
    when retrieving the siblings of a constructor imported using an alias.

176
177
178
179
180
  * Fixed bug when using functional patterns in `case`-expressions.
    Functional patterns are only allowed in the patterns of a function
    definition and forbidden elsewhere, i.e., in `case`-expressions,
    `do`-sequences, list comprehensions or lambda expressions.

Björn Peemöller 's avatar
Björn Peemöller committed
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
  * 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`.

    While the distinct language pragmas enable the respective language
    extensions, the OPTIONS pragma is ignored.

    All other texts given in the pragma braces is ignored and treated as
    a nested comment.

  * Error message for different arities of function equations now also
    report the corresponding source code positions.

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

  * Implemented warnings for non-exhaustive pattern matchings
    both in function declarations and `case`-expressions - fixes #349.

  * Extended options to enable/disable certain types of warnings.

  * Fixed problem when defining an operator directly after an import statement
    without import restrictions - fixes #494.

  * Fixed bug w.r.t. polymorphically typed local variables - fixes #480.

  * Fixed missing polymorphism in record labels - fixes #445.

  * Dumping of intermediate structures improved.

  * Fixed bug in type checking w.r.t. recursive type synonyms - fixes 489.

  * 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.

  * Implemented missing semantics of functional patterns in combination
    with non-linear left-hand-sides and as-patterns.

  * Various 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
=============

  * Error messages are now sorted according to their source code position.

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

  * Improved reporting of mutiple type signatures.

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

  * Bug in renaming phase fixed.

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

  * Corrected translation of `fcase`-expressions.

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

  * Non-linear left-hand-sides now work with guarded expressions - fixes #328.

  * Implemented precedence check - fixes #327.

  * Case completion refactored and corrected - fixes #323.

  * Various improvements and refactorings.

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

  * Corrected renaming of anonymous free variables - fixes #288.

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

  * Massive refactoring of the previous version.

  * All compiler warnings removed.

  * Fixed various implementation bugs (#9, #16, #19, #29, #289).