			NEW IN THIS RELEASE

  Release 1.26 (by Alex Smith) [a bugfix of 0.26]

1.  Fixed an optimizer bug (thanks to Joris Huizer for pointing it out),
    relating to active-bits deduction in some expressions involving select.

2.  Fixed a bug in the flow optimizer that caused it to occasionally confuse
    ABSTAIN with REINSTATE when gerunds were used.

3.  Simplified the compilation of INTERCAL files to .exe under DJGPP, to avoid
    some temporary files (hopefully solving some problems users may be having
    with finding which directory the temporary files are in under DJGPP);
    when under DJGPP a temporary file other than .c or .exe is needed, the
    compiler now looks for a directory reserved for temporary files to place it
    in rather than just using the current directory.

4.  The original INTERCAL manual specifies that GIVE UP cannot be REINSTATED
    or ABSTAINED FROM; this is now implemented, by taking only the original
    DO/DO NOT status into account when executing a GIVE UP statement.

5.  Dealt with problems with what happens with the 'original' stdin (this
    information was previously lost, making it hard for the debugger to accept
    input because it had no obvious place to accept it from), and removed the
    previous hacky workarounds for this problem (which were my fault).

6.  Made several improvements to the documentation, especially with respect to
    installing and running under DJGPP.

7.  Modified the version number scheme, so that minor revisions and bugfixes
    now increment the major version number rather than the minor version number
    (it was getting a little bored stuck at 0). The next major release will be
    version 0.27.

  Release 0.26 (by Alex Smith)

1.  Fixed a few bugs in the previous release (some bugfixed by Joris Huizer).

2.  Ported to DJGPP. The compiler now works on both POSIX and DJGPP systems.

3.  Reorganized the directory structure.

4.  Added support for cross-compiling to the PIC microcontroller.

5.  Added a simple test program for PIC cross-compilation.

6.  Improved further searching for skeletons and executables.

7.  Delinted some of the code, and turned up the default gcc warning level.

8.  Reformatted some of the documentation.

9.  Renamed and split files; all files used in the build now have 8.3
    filenames, to prevent any problems using DJGPP on 8.3 systems. The
    optimizer was split from the code degeneration into dekludge.c (optimizer)
    and feh2.c (degeneration), because feh.c was getting too large.

10. The text documentation (README, COPYING, NEWS, and BUGS) was renamed to
    end .txt (again for DJGPP compatibility); formatting changes were made to
    README in addition to the addition of extra readme information.

11. Included precompiled-to-C versions of the parser and the lexer so that
    DJGPP (or I suppose, POSIX if you hacked the makefile) implementations
    without bison or flex could still compile the rest of C-INTERCAL and give
    a running program.

12. Fixed a bug involving optimization of Tri-INTERCAL programs.

13. Added to the lexer, so that it supports CLC-INTERCAL syntax for operators
    that were already present in C-INTERCAL, as long as they don't conflict
    with C-INTERCAL syntax. (Using the -X switch will support CLC-INTERCAL
    syntax for operators that were already present in C-INTERCAL even if they
    conflict with C-INTERCAL syntax.) For the symbols present in the
    CLC-INTERCAL character set but not in ASCII, ISO-8859-1 is supported as an
    encoding as well as UTF-8 (to increase the chance that CLC-INTERCAL
    programs will run without modification); it was meant to be supported to
    some extent before, but seemed not to be working.

14. Added the COMMENT gerund, with the same semantics as in CLC-INTERCAL.

15. Added COME FROM gerund. This suffers from the same restrictions as
    computed COME FROM, in that it can't be used in PIC programs and causes
    the program to end up substantially less efficient.

16. Added support for prefix as well as infix unary operators. The rule is
    that any number of prefix unary operators, but only one infix unary
    operator, is allowed on each group, variable, and/or mesh. (Previously,
    only infix operators were supported, and then only one per mesh.)

17. Added positional precedences to the parser. INTERCAL still doesn't have
    operator precedences (that would be completely contrary to the spirit of
    INTERCAL) but it now has rules for deciding on the meaning of previously
    ambiguous expressions. Chains of select and mingle operations right-
    associate, and when a unary operator could legitimately be in either a
    prefix or infix position, the infix position is assumed (although remember
    that only one infix operator is allowed for each group, variable, and/or
    mesh).

18. Added the not character as a synonym for NOT.

19. Added operand overloading, for onespot and twospot variables. This uses
    the slat operator in almost, but not quite, the same way as
    CLC-INTERCAL. Note that the width of unary operations will mostly depend
    on the type a variable appears to have in an expression, rather than on
    its actual bitwidth (if a onespot is overloaded to a twospot or vice
    versa). Note that meshes won't change as the result of operand overloading
    unless the -v option is used (an error will be generated instead).

20. Added an option for generalised assignments. With the -v option,
    expressions (rather than just variables) can appear on the left of an
    assignment. Any meshes on the left of an assignment (even if in apparently
    inoccuous positions) may change value as a result. (Note that such
    assignments aren't always possible.) If the left-hand-side of an
    expression is anything other than simply a variable or a constant, the
    compiler will try to change the values of meshes and non-ignored variables
    in the expression to make it fit. (In bases other than 2, it will nearly
    always fail.) Unlike CLC-INTERCAL, assigning to a mesh only changes that
    mesh, not line labels or other uses of the number.

21. Restricted the compiler to just one input file at a time (it used to break
    if this wasn't done anyway).

22. Fixed a nonportability involving stdin and stdout in cesspool.c.

23. Added support for the NEXT FROM command, with the same semantics as COME
    FROM (including computed NEXT FROM and NEXT FROM gerund), except that it
    saves the line that was NEXTed FROM on the choicepoint stack.

24. Fixed a bug where the yuk debugger accessed unallocated memory.

  Release 0.25 (by Alex Smith)

1. Added support for computed ABSTAIN and TRY AGAIN.

2. Added support for computed COME FROM.

3. Added support for multithread programs. This includes ONCE and AGAIN,
which also work in singlethread programs.

4. Expanded intercal.el to support Font Lock and some utilities for generating
INTERCAL-style constants. It also works with the compilation routines of Emacs
to compile INTERCAL programs without the need for make. Degenerated C code now
has a mode line to help with Emacs compatibility.

5. Added a rudimentary debugger and profiler for singlethread programs. The
debugger's features include useful things like 'write out INTERCAL expression
in simpler terms' (which is only possible if -O is on). The profiler works
much like gcov, counting the length of time spent in and number of executions
of each command in the code.

6. Changed searching for includes, libraries, syslib, skeleton. This is so that
non-root users, or people who want to evaluate ick, can do so more simply. The
compiler will search for the above files in the directory they should have been
installed in, the current directory, and the directory in which ick's
executable resides (in that order). Skeleton problems, in particular, seem to
have been a major problem for unfamiliar users trying out ick.

7. Added several new test programs to the Pit.

8. Greatly expanded the original optimizer (which optimizes expressions). It
can now recognize most of the idioms in syslib, and many idioms in other Pit
programs. Also added a new optimizer, to try to optimize program flow, which is
important because otherwise INTERCAL wouldn't have any rudimentary optimizers.
There is also the -F optimizer, which I hope will become infamous. It creates
object code which is close to maximally fast in some specialized situations, at
the expense of compile time (compilation can take a very long time when -F is
active) and object file size. I suggest checking its effect on primes.i.

9. Fixed the grammar (again) in a spark/ears situation involving array
subscripts, after proving that the previous fixes weren't adequate.

10. Added support for backtracking (MAYBE, GO AHEAD, GO BACK). Note that it is
possible for multithreading, backtracking, computed ABSTAIN, and computed COME
FROM to all be used simultaneously in the same program, to help maximize
obfuscation.

11. Added an option (-l) for generating warnings. To prevent this actually
being useful, it is designed to generate far too many warnings, which all have
to be trawled through to find the important ones, and has no way to turn the
unimportant ones off.

12. Added the +printflow and +mystery options for executing INTERCAL programs.
Note that it is not entirely obvious what either of them do (+printflow is a
debugging aid, but the output is somewhat obfuscated, and I am not going to
explain what +mystery does in this document).

	Release 0.24  (by Eric S. Raymond) 31 Dec 2003

1. RPMs can now be built by non-root users.

	Release 0.23  (by Eric S. Raymond) 9 Mar 2003

1. More fixes by Don Knuth.  He found a bug in the type-propagation logic.

	Release 0.22  (by Eric S. Raymond) 4 Mar 2003

1. Incorporated a minor fix patch from Donald Knuth.  Yes, *the*
Donald Knuth.  Seems he found a weakness in the code for handling
comments, and fixed it to do multiline comments properly.  He also made
some improvements to intercal.el, and contributed a test program.

2. Updated build machinery.  This package now uses GNU autoconf.

	Release 0.21 (by Eric S. Raymond) 30 July 2002

1. Jonathan Nieder sent a grammar fix for BLR's old bug #5 (a bad spark-ears
interaction.)

2. Latin-1 support and makefile fixes from Magnus Bodin.

	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 1990
when ESR released 0.3 on an unsuspecting USENET.

