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. -----------------------------------------------------------------------------