Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

C-INTERCAL 0.-2.0.29 (beta) released!

25 views
Skip to first unread message

ais523

unread,
Apr 1, 2009, 4:34:19 PM4/1/09
to
Throughout all the years of C-INTERCAL, we've had 28 major versions;
29 versions; several bugfix patches; forks and ports to other OSes,
and a whole load of example programs.

But today, I release something C-INTERCAL has never had before: a
beta.

First things first: the latest C-INTERCAL beta is available at
http://lepton.kuonet-ng.org/ick-0.-2.0.29.pax.gz (ipv6 only; ipv4
users can access it via http://lepton.kuonet-ng.org.ipv4.sixxs.org/ick-0.-2.0.29.pax.gz).
The pax format is the new POSIX recommendation, which deprecates tar;
it can however be read by standard tar readers.

This is one of the more major updates to C-INTERCAL; it incorporates
patches, bug reports, and suggestions from six different people, and
reflects a year of cutting-edge INTERCAL development. Here are just
some of the new features:

* A new build system
Yep, C-INTERCAL's build system has changed yet again. The new build
system should allow building C-INTERCAL on more or less anything that
you can get a copy of standard UNIX command-line tools on, or work-
alikes for them, and a C compiler. There is support for out-of-tree
build, cross-compilation (ever wanted an ARM or LLVM version of C-
INTERCAL?), automatic dependencies, systems missing lex or yacc, and a
whole lot of other improvements. The code is also more portable, with
fixes to work on Mac OS X, on the various BSDs, with compilers other
than gcc (although not all features are available like this yet), and
on 64-bit systems; there is also partial (but unfinished) work on
porting to systems using pre-C89 compilers, via unprotoize.

* New language features
C-INTERCAL now includes support for computed CREATE, and CREATEd
expressions; no doubt these features will do a lot to improve the
expressiveness and maybe even readability of INTERCAL code.

* A better external calls system
C-INTERCAL recently added support for linking with external code
written in C. Support for linking with code written in c99 has now
been added, a small improvement; more notably, though, it also allows
linking programs written in INTERCAL and Befunge-98, through an
optional integration with the Befunge interpreter cfunge (obtainable
from http://sourceforge.net/projects/cfunge/). This is, as far as I
know, the first integration between an interpreted and compiled
esoteric programming language.

* Balancing the Holy War
C-INTERCAL has long shipped with code to make it run better on Emacs;
clearly this is biased. This latest beta, therefore, includes support
for syntax-highlighting for vi, in the hope of redressing the balance.

* More efficient generated code
The C-INTERCAL optimizer is constantly being improved; the addition of
a whole load of new optimizer idioms (thanks Joris!) has lead to
better and faster code being generated. The yuk INTERCAL profiler is
not new, but now actually works, so you can see the improvements in
the code speed for yourself. Note that faster code = more debuggable
code; as usual, INTERCAL code is easier to debug the higher the
optimisation level (because the compiler's explanations of what the
code is actually doing get better).

* A cleaner codebase
Thanks to the work by Arvid, C-INTERCAL is now better internally
organised, and bugs should be more evident, with some substantial
refactoring of parts. This will hopefully aid future improvements, and
help prevent future bugs.

* Numerous bugfixes
The majority of the changes are fixing bugs. See the changelog for
details on some of the bugs fixed; you can, of course, help by testing
out C-INTERCAL and reporting any more bugs you find. (This also
includes fixes for some security bugs, such as buffer overflows; I'm
not entirely sure what it would mean for them to be exploitable,
though, given that C-INTERCAL's designed to run arbitrary code, via
expansion libraries even when working normally.)

Why a beta, by the way? First, I'd like your help to test C-INTERCAL
on as many types of systems as we can manage between us. I see no
reason why INTERCAL can't be the most portable language environment
around. After all, what C compilers accept input iin 19th-century
telegraph code (even via a converter)? (Note that even on systems I do
have access to, not all tests have been completed yet; for instance,
it's probably completely broken on DOS at the moment, because I
haven't tested there.) Second, many of the changes have not been fully
tested yet (I've been busy with other things); this is nothing new,
but I thought I'd admit to it this year. Also, I suspect the
documentation isn't fully up to date (although it has been improved).

Special thanks go to Joris Huizer, Elliot Hird, Arvid Norlander,
Stefan O'Rear, and Joey Hess for reporting bugs and suggesting
improvements, and thanks to everyone else who tried out the last
version.

Please submit any patches against the new version that you'd like to
be considered for inclusion to me, via email; bug reports and feature
requests can be submitted either to me or discussed in this newsgroup,
and for help with INTERCAL in general or C-INTERCAL in particular,
this newsgroup is a good place for your questions.

Happy icking!

--
ais523
C-INTERCAL maintainer

0 new messages