1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 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 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198
|
Version 1.18
------------
* better lexing of Template Haskell single quotes (thanks to Stephan Wehr)
* (1.18.1): fix incomplete pattern match
* (1.18.2): bugfix for erroneous boolean intepretation of some macro
expansions in #if clauses
* (1.18.3): further rewrites of the #if expression parser
* (1.18.4): fix the accidental flipping of comment-stripping behaviour
with --cpp -traditional flags
* (1.18.5): fix a bug with windows filepath directory separators in a
#include
Version 1.17
------------
* recursively evaluate #if expressions after macro expansion (fix)
* (1.17.1): report the right version with cpphs --version
Version 1.16
------------
* fix interaction of runCpphsReturningSymTab with --nomacro
Version 1.15
------------
* Fix the interaction of --nomacro with --strip.
* Fix the error message received when # appears without a command.
Version 1.14
------------
* New API to return symbol table after processing.
Version 1.13
------------
* Accept -U cmdline option for compatibility with cpp.
Version 1.12
------------
* Allow it to build with ghc-7.2.
Version 1.11
------------
* API change: runCpphs, cppIfdef, and macroPass are now in the IO monad.
Version 1.10
-----------
* New command-line option: "--linepragma"
It converts #line droppings into {-# LINE #-}.
Version 1.9
-----------
* Bugfix for #undef.
Version 1.8
-----------
* Bugfix for off-by-one error in line numbers with --include=file.
Version 1.7
-----------
* Bugfix in interaction of --unlit with \end{code}
Version 1.6
-----------
* New command-line option: "--include=filename".
* New command-line option: "--strip-eol" for comment-stripping.
* Line pragmas can have filenames containing spaces.
Version 1.5
-----------
* Parametrised macro-calls now permitted in #ifdef's.
* Recursive textual expansion now permitted in #ifdef's.
* Better options-handling when used as a library.
* Various small bugfixes
Version 1.4
-----------
* Added a "--pragma" option to retain #pragma in the output.
* Fixed a number of obscure corner cases involving the interaction of
multiple features e.g. foo##__LINE__.
* Added the "--nowarn" option.
Version 1.3
-----------
* Added a "--cpp" option for drop-in compatibility with standard cpp.
It causes cpphs to accept standard cpp flags and translate
them to cpphs equivalents. Compatibility options include: -o, -ansi,
-traditional, -stdc, -x, -include, -P, -C, -CC, -A. The file
behaviour is different too - if two filenames are given on the
commandline, then the second is treated as the output location.
* Fixed a corner-case bug in evaluating chained and overlapping #ifdefs.
Version 1.2
-----------
* Re-arranged the source files into hierarchical libraries.
* Exposed the library interface as an installable Cabal package, with
Haddock documentation.
* Added the --unlit option, for removing literate-style comments.
Version 1.1
-----------
* Fix the .cabal way of building cpphs.
* Update the --version reported (forgotten in 1.0, which still reports 0.9)
* No longer throws an error when given an empty file as input.
Version 1.0
-----------
* Add a compatibility script cpphs.compat, allowing cpphs to act as
a drop-in replacement for cpp, e.g.
ghc -cpp -pgmP cpphs.compat
* Place quotes around replacements for special macros __FILE__, __DATE__,
and __TIME__.
* If no files are specified, read from stdin.
* Ignore #! lines (e.g. in scripts)
* Parse -D commandline options once only, and consistently with cpp,
i.e. -Dfoo means foo=1
* Fix compatibility with preprocessors like hsc2hs, which use
non-cpp directives like #def. They are now passed through to the
output with a warning to stderr.
Version 0.9
-----------
* Bugfix for ghc-6.4 -O: flush the output buffer.
Version 0.8
-----------
* Added the --text option, to signify the input should not
be lexed as Haskell. This causes macros to be defined or expanded
regardless of their location within comments, string delimiters, etc.
* Shuffle a few files around to make it easier to say 'hmake cpphs'.
There is also now a runhugs script to invoke cpphs nicely.
Version 0.7
-----------
* Enable the __FILE__, __LINE__, __DATE__, and __TIME__ specials, which
can be useful for creating DIY error messages.
Version 0.6
-----------
* Recognise and ignore the #pragma cpp directive.
* Fix beginning-of-file bug, where in --noline mode, a # cpp directive
at the top of the file appeared in the output.
* Fix chained parenthesised boolean exprs in #if, e.g.
#if ( foo ) && ( bar )
* Fix precedence in chained unparenthesised boolean exprs in #if, e.g.
#if foo && bar || baz && frob
* For better compatibility with cpp, and because otherwise
there are certain constructs that cannot be expressed, we no
longer permit whitespace in a <tt>#define</tt> between the
symbolname and an opening parenthesis, e.g.
#define f (f' id)
Previously, this was interpreted as a parametrised macro,
with arguments in the parens, and no expansion. Now, the space
indicates that this is a textual replacement, and the parenthesised
expression is in fact the replacement.
Version 0.5
-----------
* Added a --version flag to report the version number.
* Renamed --stringise to --hashes, and use it to turn on ## catenation
as well.
* Bugfix for #if 1, previously taken as false.
* Bugfix for --nolines: it no longer adds extra spurious newlines.
* File inclusion now looks in the directory of the calling file.
* Failure to find an include file is now merely a warning to stderr
rather than an error.
* Added a --layout flag. Previously, line continuations in a macro
definition were always preserved in the output, permitting use
of the Haskell layout rule even inside a macro. The default is now
to remove line continuations for conformance with cpp, but the option
of using --layout is still possible.
Version 0.4
-----------
* New flag -Ofile to redirect output
* Bugfix for precedence in #if !False && False
* Bugfix for whitespace between # and if
* Bugfix for #define F "blah"; #include F
Version 0.3
-----------
* Bugfix for recursive macro expansion.
* New flag --strip to remove C comments even outside cpp directives.
* New flag --stringise to recognise the # stringise operator in macros.
Version 0.2
-----------
* New flag --noline to eliminate #line directives from output.
* Add symbol-replacement and macro-expansion.
* New flag --nomacro to turn off symbol/macro-expansion.
2004-Apr-21
-----------
* Now accept multi-line # commands via the \ line continuation operator.
The original file line numbering is preserved in the output by
some tricky acrobatics.
Version 0.1
-----------
* Initial release.
|