JULI Version History

( Home )


    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
  

( Home )