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 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 296 297 298 299
|
NEW IN THIS RELEASE
Release 0.20 (by Eric S. Raymond) 16 September 1999
(The following changes are due to John Cowan <cowan@ccil.org>)
1. In addition to Latin-1, UTF-8 is now acceptable in source code as well.
All the numerous currency symbols of Unicode (ISO 10646) can be used as
big-money alternatives in their UTF-8 format. Indeed, a random mixture of
Latin-1 and UTF-8 also works fine; this seems very much in the spirit of
Intercal.
2. Intercal has now been localized for the Ancient Roman as well as the
Posix/C locale. You may input numbers in Latin and write Intercal programs
using Latin keywords. See lexer.l for a list of equivalences.
3. The Makefile in the pit directory now works like a real Makefile, and
won't compile anything that's already been compiled.
Release 0.19 (by Eric S. Raymond) 16 August 1998
1. Fixed a code-generation error in assignments from tail and hybrid
variables. (Error pointed out by Malcom Ryan.)
Release 0.18 (by Eric S. Raymond) 29 April 1998
(The following changes are due to John Cowan <cowan@ccil.org>)
1. The source code is now POSIXly correct. By making the POSIX
variable in the Makefile undefined, you can restore the use of
<varargs.h>, but otherwise <stdarg.h> is now used.
2. Latin-1 (ISO 8859-1) is now the standard input charset of C-INTERCAL.
This means that the change operator (0xA2) has returned as an alternative to
big money ($). Furthermore, the quid (0xA3) and zlotnik (0xA4) are also
acceptable. For those using Latin-9 (ISO 8859-15), the euro (0xA4) will also
work. ("Euro", like "ampersand", cannot be sillified further.)
New names have been added to intercal.mm.
3. A fortiori, input of Volap\"uk digits may now be in Latin-1 or TeX format.
4. Yacc is now deprecated in favor of bison; some old yaccs don't do proper
error recovery, and lines like "DO ~ ERROR" failed at compile time.
5. Some minor portability bugs on systems where ptr_diff is not the same
as int were removed by casting expressions of the form (ptr - ptr) to int.
Release 0.17 (by Eric S. Raymond) 27 Feb 1998
Incorporates a minor bug fix by Jeff Uphoff <juphoff@tarsier.cv.nrao.edu>.
Release 0.16 (by Brian Raiter and Eric S. Raymond) 26 May 1997
This is the 25th-anniversary release of INTERCAL. This language, conceived
in irony a quarter century ago today, has outlasted many more serious and
high-minded essays in computer language design. This fact should give us
pause to reflect, or possibly frighten the crap out of us. Or both.
1. Corrected manual bugs.
2. Fixed over-enthusiastic install production in the Makefile.
3. DO PLEASE is no longer accepted (Brian Raiter pointed out that the
manual does not sanction it).
4. Fixed various bugs in the optimizer.
5. Incorporated fixes made by William Walter Patterson for bugs that
appeared when multiple files are given on the command line.
(The following changes are due to Brian Raiter)
6. The system library is now available for TriINTERCAL (all bases, 3 to 7).
The compiler has been updated to use the right library automagically.
7. The error 774 feature has been brought into conformance with the
Princeton compiler. The odds are now a flat 10% (but still 0% with -b).
8. The compiler has been modified to allocate memory dynamically, and
the hard-coded limits on program size and number of variables has
been removed. Programs are now only limited by the amount of
available memory.
9. Array output now fflushes after outputting newlines.
10. Two minor bug fixes: one in wimpmode input, which was clamping
input to the signed integer range, and one in politesse checking.
The latter was causing programs to be recognized as impolite only
if their ratio was less that one-sixth, not one-fifth. (Fixing this
also necessitated adding a few PLEASEs to pit/rot13.i.)
11. Several new programs have been tossed into the pit.
Release 0.15 (by Eric S. Raymond) 20 Jun 1996
1. Switched the INTERCAL manual master to mgm in order to be able to handle
section crossreferences properly. The manual has now been carefully
proofread against the paper version by ESR and seems to match. It's
also been independently proofread for typos by Brian Raiter.
2. The optimizer now does complete analysis and evaluation of constant
expressions at compile time.
3. Added optimization templates for ~, |, &, ^ expressions. Also added
|, &, ^ idioms to the system library, and documented them.
(The following changes are due to Brian Raiter)
4. Every one of the INTERCAL-72 messages is now emitted when appropriate.
including the previously un-emitted E000, E197, and E200 (and see below).
5. A close reading (while proofing) of the sections of the manual on
error messages seems to indicate that splatted lines were only
splatted in the default listing printed after a successful
compile. (This seems to be a standard feature of IBM compilers; I
remember that RPG did this as well.) My understanding of the manual is
when the syntactically offensive line is encountered at runtime, it is
printed as error E000. I have modified the code to do this.
6. I have fixed INTERCAL in order to add another bug. Namely, I have
implemented the BUG/NOBUG option in the Princeton compiler. By
default, there is a chance that INTERCAL will randomly insert error
E774 into your executable. (The odds are 1/128 per statement, not
counting COME FROMs. Is there any way to find out what the
Princeton compiler's odds were?) The new option -b turns this
feature off.
7. The new file pit/lib/numio.i contains routines for wimpmode I/O.
These routines are documented in the file pit/lib/numio.doc.
It is my earnest hope that C-INTERCAL programmers everywhere will
flock to these handy routines, and C-INTERCAL users will thus no
longer need to fear that they might succumb to the foul and awful
temptation to use the dastardly +wimpmode option.
Release 0.14 (by Eric S. Raymond) 9 Jun 1996
1. The documentation has been reorganized and cleaned up (you can now
format either a C-INTERCAL or INTERCAL-72 manual from the same master).
The diagrams in the paper original have been transcribed as pic figures.
See doc/READ.ME for details.
2. Yet more code. The pit now includes a second random-number generator,
a ROT13 filter, and even two programs in TriINTERCAL!
3. Louis Howell's corrected system library is now included.
4. The distribution is now formally GPLed.
Release 0.13 (by Eric S. Raymond) 5 Jun 1996
1. I folded in patches by Brian Raiter <breadbox@muppetlabs.com> that port
this code to Linux, ANSIfies it, and enables it to use flex. Note: This
version has been tested on Linux and SunOS but not yet elsewhere.
2. Another piece of nontrivial INTERCAL code has been found! (Doubtless
hell is freezing over even as I write.) We've added to the pit the
`beer' program by Matt DiMeo <mdimeo@brooktree.com>, courtesy of the
infamous Beer List (URL:http://www.ionet.net/~timtroyr/funhouse/beer.html).
Release 0.12 (by Eric S. Raymond) 22 Mar 1995
1. The code now compiles and runs under Linux, using bison and lex. It does
*not* yet work with flex; C.P. Osborne's patches for 0.11 turned out not
to be sufficient (at least for flex 2.4.6 under Linux using the -l option).
See the BUGS list.
2. Note 3 under 0.11 was incorrect. We're in conformance after all.
3. The politesse check is a little smarter about programs too small to
conform to the 1/5-to-1/3 criterion. All the pit programs have been
checked for conformance. Also, the politesse error message now tells
you the offending program's line count.
Release 0.11 (by Eric S. Raymond) 24 Sep 1994
1. Incorporated changes by Jan-Pieter Cornet <cornet@OTech.fgg.EUR.nl> for
magical inclusion of the system library. These address an outstanding bug
2. (SS) The `system library' should be precompiled and `linked' to user
written code, at least optionally. Doing this with the current compiler
presents a few problems.
which has accordingly been removed from the BUGS file. They also fix a
previously unknown bug; due to a minor oversight in the lexer, it was not
possible to ABSTAIN FROM WRITING IN or READING OUT. Jan also contributed
a test program that demonstrates gerund abstention.
2. Despite the obvious appeal of the idea, and much discussion on
alt.lang.intercal, I decided *not* to add Klingon; maintaining two parallel
grammars just so the compiler could support SVO and OSV languages would be
too painful. There was also a minor mess near case-sensitivity in the
digits. The workaround kluges I was offered instead failed to satisfy.
3. We fess up to a violation of the INTERCAL-72 standard. That implementation,
instead of accepting an entire multiple-digit number per line of input,
expected one digit per *card image* (input line). It is unclear how
INTERCAL-72 programs ever managed to input more than one number.
4. Added patches by C.P.Osborne <boris@ibmpcug.co.uk> to make the lexer work
using flex, for Linux and BSD/386 support. I didn't use his error-reporting
patch, though; instead, I changed the parser to catch errors at logical-line
level. I also kept the N in `RESUBNIT'; this is a carefully preserved
feature of INTERCAL-72.
5. Volapuk digits are now recognized on input. TO DO: Recognize Volapuk
keywords, including gerunds.
Release 0.10 (by Eric S. Raymond) 9 Sep 1994
1. It is now possible to undo a line-number abstention with a gerund
reinstatement, or undo a gerund abstention with a line-number
reinstatement. In previous versions, gerund abstention/reinstatements and
line-number abstention/reinstatements were independent of each other.
2. After release 0.5, I wrote in the TO DO list as follows:
2. (ESR) Input format internationalization -- allow WRITE IN input digits in
major languages such as Nahuatl, Tagalog, Sanskrit, and Basque.
The twisted loons in the alt.folklore.computers crowd loved this idea,
and I actually got sent digit lists for Nahuatl, Tagalog, Sanskrit, and
Basque -- also, Kwakiutl, Georgian, Ojibwe, and Albanian. I've left
out Albanian (didn't want to keep track of the dipthong diacritical)
and Ojibwe (no zero digit). So: Nahuatl, Tagalog, Sanskrit, Basque,
Georgian, and Kwakiutl are now supported in addition to English.
3. The THEORY document has been significantly revised.
Release 0.9 (by Eric S. Raymond) 5 Mar 1993
1. An embarrassing port bug in the INTERCAL skeleton has been fixed
2. Jamie Zawinski's suggestion for an improved E333 error message has
been accepted.
3. Added and improved documentation for pit programs.
4. The install production in the Makefile now puts lose.h in place
as well as cesspool.h.
5. You can now set the C compiler to be used as a back end by INTERCAL
by setting the environment variable CC. The default is cc.
Release 0.8 (many hacks on 0.7 by Eric Raymond) 21 Jan 1992
1. A previously undocumented `feature' of the Princeton compiler,
revealed by Don Woods, is now emulated. If fewer than 1/5 or more
than 1/3 of a program's statements contain the qualifier `PLEASE', the
program is rejected with an entertaining error message. Programs in pit
have been hacked to pass the politesse test.
2. The `sample' program now works correctly, thanks to Louis Howell. Also,
he has contributed new programs to calculate pi and to search for prime
numbers.
3. An intercal mode for GNU Emacs is included. It helps programmers deal with
the new politesse check by randomly expanding the abbrev "do" to DO PLEASE
or PLEASE DO about 1/4 of the time.
4. Improvements in code generation for NEXT/RESUME.
5. Fixes to the optimizer; it handles the results of optimized MINGLEs
correctly now. Also, added a rewrite rule that checks for the
equality-test idiom using XOR.
6. The original error messages from the Princeton compiler have been restored.
The documentation has been updated to reflect these changes.
Release 0.7 (by Louis Howell) 21 Dec 1991
In addition to bug fixes, new features in this version include arrays,
character I/O, modified (hopefully improved!) semantics for the COME
FROM statement, extensions to bases other than 2, new INTERCAL programs,
and new documentation.
Release 0.6 (by Steve Swales) 5 Jan 1991
1. Restored Princeton documentation (courtesy of Michael Ernst).
2. Added -@ usage option to ick.
3. Added [+/-]help, [+/-]traditional, and [+/-]wimpmode options for
generated programs; [+/-]traditional is a no-op at this point.
4. Various bug fixes, esp. in lexical analysis.
Release 0.5 (ESR's original pre-release) 5 Jun 1990
1. As a convenience to all you junior birdmen out there, `NINER' is accepted as
a synonym for `NINE' in INTERCAL input.
2. The COME FROM statement is now compiled.
-------------
The resurrection of INTERCAL from its grave took place on 12 May 90
when ESR released 0.3 on an unsuspecting USENET.
|