-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathversion.txt
202 lines (165 loc) · 8.63 KB
/
version.txt
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
199
200
201
202
Version notes for CPP (these are more notes to myself than anything that
should be taken as gospel, btw -sb):
5/31/93 Version 1.0.0 released.
6/2/93 First bug (sigh...): wasn't recognizing '?' as a valid token.
6/3/93 Version 1.0.1 released.
6/13/93 Small bug in handling of -W and -f options (strange, I know
they were working before...)
6/14/93 Version 1.0.2 released.
9/7/93 - do_undef() was incorrectly calling token() rather than
_one_token(), and thus chewing into the next line of input.
Thanks to Thorsten Roskowetz for pointing this out.
- added some basic copyright information -- basically, you can
do anything you want with this program except sell it or
claim it as your own work, and if it blows up your house and
eats your dog, it's not my fault. ;)
9/8/93 Version 1.0.3 released.
9/14/93 - [c/o Andreas Schwab] In include.c: if find_include_file()
couldn't find the include file, it incorrectly returned the
path of the last place it checked instead of NULL.
- [c/o Andreas Schwab] In token.c: when xlate_token() read
either of the tokens '!=' or '==', it left the last '=' in
the input to be re-read.
- [c/o Thorsten Roskowetz] In if_expr.c: the handling of
'\xhh' sequences in char_const() was wildly wrong. Not only
were the hex digits A-F being returned as values 0-5, but
the next character after the sequence (which might have been
the closing '!) was being skipped.
- [c/o Andreas Schwab] Fixed up several function calls that
were passing the wrong number of parameters (if only HSC
did prototypes!), and deleted a few functions that were no
longer being used.
- Fixed a few comments that were out of sync with the code they
were commenting.
9/15/93 Version 1.0.4 released.
11/27/93 - In macro.c: Fixed the expansion of built-in macros like
__DATE__ and __TIME__; they were expanding to "__DATE__"
and "__TIME__".
- In define.c: Finally finished the macro_eq() function for
testing equality of macro bodies. For the moment, it is
only experimental.
[many speedup suggestions due to Thorsten Roskowetz:]
- In hash.c, token.c: Forgo explicitly free()'ing memory during
at-exit cleanup of the macro table; we trust the operating
system to do the right thing.
- In hash.c: In hash_id(), pull the modulus operation out of
the loop.
- In pound.c: Identify preprocessor directives by their hash
values, rather than by string comparison.
- In *.c: Liberal application of the "register" keyword;
apparently I was putting too much faith in the optimizer to
do this for me.
12/17/93 - Version 1.0.5 released.
1/4/94 Another year, another pack of bugs... :-(
- [c/o Thorsten Roskowetz] In macro.c: expand() would
sometimes push the token it was passed directly back onto the
token stream; the caller then free_token()'ed that token,
causing havoc. This happened primarily when expanding macro
arguments. Now we push a copy of the token when necessary.
- In token.c: After calling expand(), exp_token() should
free_token() the token it just expanded.
- [c/o Andreas Schwab] In define.c: I knew I couldn't get
macro_eq() right the first time. :-/ Do string comparison
on the |txt| member, not the |type| member.
- [c/o Thorsten Roskowetz] In *.c, global.h: Assorted micro-
optimizations and manual coalescing of string constants.
- In macro.c: Sigh. The leading whitespace that expand() adds
to its resulting token list was being aliased directly out of
the token being expanded, which was later destroyed. Now we
copy the whitespace properly.
1/5/94 - In define.c: get_parms() was losing all but the first and last
macro parameters.
- Version 1.0.6 released.
1/6/94 - In macro.c: Corner-case bug: given:
#define a(m) m(5)
#define b(x) #x
a(b) should expand to "5"; but expand_tlist() was painting the
'b' blue prematurely. Now, if a token representing a macro that
takes arguments is followed immediately by a STOP token, we mark
it to be unpainted upon return to expand_tlist().
2/19/94 - In main.c, process.c: Added support for a config file to set
preprocessor constants.
- In pound.c: Added pragmas CPP_cmdline_arg and CPP_delayed,
active only while processing config file.
2/27/94 - Version 1.1.0 released.
3/16/94 - In define.c: The token immediately after a ## operator
wasn't being checked to see if it was a macro arg.
- In macro.c: The leading whitespace on a macro arg was being
lost when it was expanded, so that, for instance, given:
#define X(x) run x
X(on) was expanding to `runon' instead of `run on'.
4/11/94 Bugs reported by Thorsten Roskowetz:
- In pound.c: The filename in a #line directive wasn't being
copied properly.
- In main.c: In do_config_file(), incorrect handling of
multiple filenames specified in $LIB.
5/4/94 - Version 1.1.1 released.
5/29/94 - Fluff mode implemented. Invoked by the `-Xfluff' switch,
it enables the preprocessor macro __FLUFF__ and a special
set of #pragma's.
- In pound.c: fluff-mode pragma `#pragma fluff varargs' added ---
simply outputs the token `__FLUFF_varargs', for digestion by
fluff.
6/4/94 - Added option -Wno-bad-concat-tokens to disable warnings when
the ## operator produces something weird.
6/12/94 - In comment.c: nest_check() was accidentally flagging the
start of a comment as a nested comment.
7/1/94 - In process.c: put off output line synchronization as long
as possible, to allow coalescing of multiple blank lines.
This shortens the output file dramatically.
7/7/94 - In *.c: Plug an embarrassingly large number of memory leaks
that were dropping tokens.
- In token.c: Keep short text strings in the token structure
itself, rather than malloc()'ing them. We can inline token
text up to seven characters long, and leading whitespace up
to three characters long.
- New files alloc.cg, alloc.hg: A generic memory management
system. We allocate small structs several at a time and
maintain our own free lists, thus saving on malloc() overhead.
- New file generic.c: A small utility program to provide
pseudo-template facilities. Used to process alloc.cg and
alloc.hg.
7/8/94 - Version 1.1.2 released.
8/1/94 - In token.c: correct definition of functions set_txt(),
set_ws() and set_txt_n() to take (const char *) parms.
- [c/o Frank Baumgart] In global.h, token.c, hash.c, main.c:
Minor changes to allow cpp to compile under the Linux C
compiler.
8/27/94 - In main.c: Fix handling of $INCLUDE so that both
POSIX-style and TOS-style path lists are recognized.
9/7/94 - In *.c, *.h: Update the copyright information in the headers
so that I own the code this year as well as last year. ;)
10/5/94 - In pound.c, main.c: Add option -Wunknown-pragma to warn
about unrecognized #pragma directives.
10/14/94 - In process.c: Given:
#define NOTHING
NOTHING
#include <stdio.h>
the newline after NOTHING was failing to trigger the beginning-
of-line condition necessary to recognize the directive. Now,
after pushing a token back to be expanded, we go back to the top
of the loop and repeat all tests on the new token.
10/18/94 - In comment.c: suck_ws() was allocating and freeing a new
whitespace buffer at every call. Oops... :-} We now use a
single file-scope malloc()'ed buffer.
12/3/94 - Added -pedantic flag. Currently the only thing it checks for
is the obscure `0x123e+1' gotcha from ANSI/ISO 6.1.8.
12/12/94 - In macro.c: expand() now properly expands a parametrized
macro when there are newlines between the identifier and the
left paren.
1/6/95 - In input.c: Fixed getline() to recognize '\r\n' as a line
terminator. Previously I trusted fgets() to translate
`\r\n' to '\n' for me, but it doesn't if the 'b' option is
set in $UNIXMODE.
- Updated the copyright statements again so that I still own
all my code. ;)
1/7/95 - In macro.c: Removed the predefined token __INCLUDE_LEVEL__,
since it turned out to be nonstandard.
- Version 1.1.3 released.
1/30/95 - Added new option -fimplicit-newlines to accommodate
GCC-style embedded newlines in string literals (blech).
- Minor changes to allow building cpp on a Unix host as part
of a cross-compiler, including new file Makefile.cross.
- In token.c: attempt to avoid tokenizing the entire line when
inside a false #if conditional.
3/13/95 - Version 1.1.4 released.