Second release of Inform 6
                        ==========================
A "beta release" of Inform 6 was made only last week, but here is another one.
This is still very much a test release, and I intend to make such updates
frequently if necessary to minimise the extent to which the porters duplicate
each other's work.  The source code of v6.02 is slightly cleaner than that of
v6.01 (now that many strict C compilers have attempted to compile it and
have reported their objections), and several bugs in v6.01 itself have been
removed, at least one quite serious.  In addition, error reporting is
better, responding to the most frequent complaint so far.
                            
The full list of changes is given below.
The files which make up this release are all now at the
incoming/if-archive
directory at ftp.gmd.de, pending proper archiving.  The library 6/1 is not
being updated, only the source code to Inform and its technical manual
(and that only slightly).  Specifically, there is a tar archive:
    
        inform602_source.tar
containing the 21 files
    arrays       asm          bpatch       directs      errors       expressc  
    expressp     files        inform       lexer        linker       memory  
    objects      states       symbols      syntax       tables       text  
    veneer       verbs        header
plus a file called "README" containing the text of this post.
    Of these, "header" is an include file and should probably be unpacked as
    a file called "header.h"; the rest should probably be unpacked as
    "whatever.c".
and a slightly modified (mostly to contain the modification history below)
Technical Manual file
    inform602_technical_manual.txt  [in plain ASCII text; including
                                     instructions on how to port the code]
In addition, in my other capacity as the Acorn RISC OS porter of Inform, I've
made fresh versions of:
    inform602_riscos_port.spk       [the Acorn RISC OS port of Inform 6, set
                                     up and ready for use, including the
                                     library; this needs only an interpreter
                                     to be provided.
                                     The file is a SparkFS archive, readable
                                     with the public-domain utility SparkPlug.]
    inform602_riscos_source.spk     [an Acorn SparkFS archive of the source]
Better luck this time!
    Graham Nelson
    May 5th 1996
-----------------------------------------------------------------------------
List of changes since v6.01
Features added:
"Declared but not used" and "no such constant" errors now reported on the
    line of occurrence, not at end of source.
Error message added for local variable being defined twice for the same
    routine
Bugs fixed:
"Segmentation fault" (i.e., writing memory out of range) fixed to do with
    symbol flags being set wrongly
Constant binary numbers not lexed correctly
"for (p = 0::)" misinterpreted due to "::" being recognised as an operator
Backpatch error under RISC OS (and possibly elsewhere) when linker used
Grammar token routines reported as "declared but not used"
Grammar token routines not working at run time
"ofclass" failing to recognised inherited class membership
Inheritance of negated attributes not working
"children" function giving the wrong answer (specifically, always giving the
    object number of the first child); this had the knock-on effect of
    making the "tree" debugging verb produce incorrect output
Source code cleaning:
Header file rearranged to typedef int32 in the right place, and tidied
    up a little; ICL_Directory defined rather than left to cause an error
    when Inform is compiled; INFORM_FILE replaced with MAIN_INFORM_FILE
    in some of the OS definition blocks; SEEK_SET defined rather than left
    to the vagaries of ANSI
Type clashes between int and int32 reconciled for:
    assemble_label_no, routine_starts_line, read_byte_from_memory_block,
    write_byte_to_memory_block, parse_label, symbol_index
Return value for hash_code_from_string cast explicitly to int (rather than
    implicitly from unsigned int)
prec_table given type int
Many "dead assignments" (redundant settings of variables) removed
"=-" replaced by "= -" to prevent pre-ANSI compilers from misunderstanding
    "x=-1" as "x=x-1"
The veneer string for the source of "CA__Pr" has been contracted to make
    it smaller than 2048 chars long, since Microsoft Visual C/C++ won't
    compile strings longer than that
symbs[] explicitly cast to char * in a few points in "linker", "objects" and
    "symbols"
Format string for process IDs corrected from "_proc%08x" to "_proc%08lx"
Format string for serial number copying removed, and a use of strcpy put
    in its place
Many thanks to the following informers:
    Torbj|rn Andersson, Evan Day, Stephen van Egmond, Roy Fellows,
    David Fletcher, Sam Hulick, Brad Jones, Matt Kimball, Kirk Klobe,
    Bonni Mierzejewska, Bob Newell, Miron Schmidt.
-----------------------------------------------------------------------------
Robert
Second verse, same as the first ...
I've done the same with Inform 6.03.  Good luck and happty beta
testing.