JULI Version History
1.02x???? (??? Feb 2004):
BUGFIXES
- non-terminated strings were not correctly detected.
1.01.0316 (9 Feb 2004):
BUGFIXES
- fixed memory leak in "k_string.h" module
- the identifier was not error-checked in the parsing of
the "def" and "const" statements
- the parsing function for "_prim_cout" previously generated
no code if the expression was omitted
- the parsing function for "_prim_cin" allowed assignment to
a variable defined as a constant.
INTERNAL CHANGES
- improved memory leak reporting
1.00.0310 (4 Feb 2004):
DOCUMENTATION
- conforms to Juliet 1.00 and Romeo 1.00
NEW FEATURES
- useful routines are now available in the "lib.jul" library
- added the following routines to the library:
"print", "printn", "pi", "reads", "readi", "readr", "exit", "random"
- added the following file input/output routines to the library:
"fopeni", "fopeno", "fclose", "fread", "fwrite"
REMOVED FEATURES
- removed "print", "printn", and "exit" statements
- removed the special "cinput" variable
- removed "push" and "pop" statements
IMPROVEMENTS
- parentheses can now be omitted in a routine call if the
routine does not return a value
- increased maximum number of statements
BUGFIXES
- the "mod" operator failed for large numbers
- files included when the executing file was in a directory
other than the directory where JULI was located caused an
error
- the internal k_float function did not always return a string
on the heap
- empty strings printed as "(null)" in Romeo output
- complex expressions passed to recursive routines were incorrectly parsed
- recursion caused buffer overflows when more than 16000 calls
were made
- constants could be defined outside a routine
- temporary values were not always restored after calling a
function
INTERNAL CHANGES
- added "_prim_cin", "_prim_cout", "_prim_rand", and "_prim_exit"
statements
- added "_prim_fio" statement
- added "_prim_asc" statement
- added "_prim_rand" statement
- removed "push" and "pop" insructions from Romeo
- added "pushl", "popl", "pushr", and "popr" instructions to Romeo
- added "fio" instruction to Romeo
- added "asc" instruction to Romeo
- added "rand" instruction to Romeo
- improved parser output so that temporaries would not be
unnecessarily pushed and popped during routine invocation
0.21.0240 (21 Jan 2003):
LANGUAGE SPEC
- conforms to Juliet 0.21 and Romeo 0.13
- added implementation notes for JULI developers: "notes.txt"
NEW FEATURES
- routine calls can now take arguments
- routine definitions now accept parameters
- routines are now recursive
IMPROVEMENTS
- "cinput" will continue prompting the user for input
until a non-blank line is encountered
BUGFIXES
- executable statements outside of routines did not cause errors
- discovered and removed 106 memory leaks
INTERNAL CHANGES
- added a new mechanism for catching memory leaks in JULI
0.20.0206 (15 Jan 2003):
LANGUAGE SPEC
- conforms to Juliet 0.20 and Romeo 0.12
NEW FEATURES
- for non-recursive routines: added "rout" and "return" statements
- added "exit" statement
- added "-f" and "--fast" command line arguments
IMPROVEMENTS
- rats can now hold six digits to the right of the decimal point
BUGFIXES
- "-r" command line argument was not displayed on the default
splash screen.
INTERNAL CHANGES
- added "call" and "ret" instructions to Romeo
- deactivated "unique.h" module; was no longer used
0.06.0187 (22 Dec 2002):
LANGUAGE SPEC
- conforms to Juliet 0.06 and Romeo 0.11
NEW FEATURES
- added constants via the "const" statement.
- added the modulo operator: "mod".
IMPROVEMENTS
- can now omit the extension of a Juliet file
- arguments to "print" and "printn" can now be left blank.
- variable names can now be redefined in a deeper scope.
BUGFIXES
- empty string would cause crash.
- when scope decreased by more than one level at a time, the
scope would only be decremented once.
- the clarification section of error reporting reported nothing
INTERNAL CHANGES
- added "mod" instruction to Romeo.
0.05.0168 (5 Dec 2002):
- conforms to Juliet 0.05 and Romeo 0.10
- NEW FEATURE: added the exponentiation operator: ^
- NEW FEATURE: added "push" and "pop" statements to Juliet.
- NEW FEATURE: added the ability to use underscores in variable names
- BUGFIX: no error given when there was a typo in type in "def" statements
- BUGFIX: errors showed the wrong line number after multiline comments
- INTERNAL: added "push" and "pop" instructions to Romeo.
- INTERNAL: added "sym_copy()" to "table.h".
- INTERNAL: added "pow" instruction to Romeo.
0.04.0155 (25 Nov 2002):
- conforms to Juliet 0.04 and Romeo 0.09
- NEW FEATURE: can now define multiple variables in one 'def'
statement, seperated by a comma.
- NEW FEATURE: added 'loop' block
- OTHER: changed the '-i' command line argument to '-r'
- OTHER: added error message F16m
- BUGFIX: the first statement after the 'cond' line would always
be executed, even if it was not in the block
- BUGFIX: assignment type checking did not work right
- BUGFIX: divide by zero did not cause an error
- BUGFIX: operators incorrectly type checked
- BUGFIX: comments caused errors when before a statement
- INTERNAL: fixed bug in Romeo 'set' statement
- INTERNAL: generalized the execution of blocks
0.03.0141 (22 Nov 2002):
- conforms to Juliet 0.03 and Romeo 0.09
- added scoping with indent levels
- added the 'print' and 'printn' statements for console output
- removed the 'conout' and 'conoutnl' statements
- added the 'cond' statement for flow-of-control
- fixed bugs in the Romeo output module
- INTERNAL: added the 'seq' and 'sneq' statements to Romeo
- added string equality
0.02.0118 (14 Nov 2002):
- First working version
- conforms to Juliet 0.02 and Romeo 0.08