Yazoo Changelog

New in version 1.5

November 7th, 2012
  • Bugs fixed:
  • problems defining proxy members while resizing the array; e.g. proxy_array[+1] @:: { }
  • 'return q' now works when 'q' is void
  • a problem where large unsigned integers would print as '0'
  • go() could get stuck inside array elements
  • read_string() (and ReadTable()) couldn't read exponents with plus signs (e.g. 1e+1)
  • problems reading and writing numbers close to the double-precision underflow limit
  • a problem with ReadTable() when trying to resize lists
  • a problem with ReadTable() when a two-dimensional table has only a single element
  • a problem using SaveTable() with null tables
  • a copy() crash when the first argument was primitive and the second argument was composite
  • a problem with go() that crept in when the # operator was introduced
  • occasional crash when start.zoo tried to flag an error
  • a warning message under some compilers (extrnl.c)
  • SaveTable() now makes sure to de-alias tables if it's called improperly
  • an error in SaveTable() when passed a non-composite 'table'
  • an error flagged at the wrong location
  • an awkwardly-flagged error when the calculator tried to print a self-referencing object
  • Improvements:
  • removed the 'this.' prefix when defining variables. This will cause problems in procedures that define variables with the same name as global variables!
  • a = @b now works when b is void. This means that 'trap(x)' is no longer the way to detect void members; use 'if x == @nothing' instead.
  • added an 'underflow' runtime warning code
  • added cat() to user.zoo
  • added Save() which tries all directory paths (it is analogous to Load())
  • SaveTable() now tries all directory paths
  • added ls() which prints out variables in current directory
  • added compile_and_do_in() to user.zoo
  • added round() which works to nearest integer
  • sped up resizing of tables using ReadTable()

New in version 1.4 (July 18th, 2011)

  • Bugs fixed:
  • improved run()'s case-sensitive handling of filenames when run.CleanUp is set
  • to true
  • erroneous error message when exiting or returning from user.zoo
  • bugs in ReadTable() involving resizing of tables
  • problems in error messages from ReadTable()
  • Improvements:
  • added # operator to replace RunCode(), RunConstructor()
  • added ';' as an alternate symbol for 'code'
  • calculator defaults to 'on'
  • add lowercase()/uppercase() functions to user.zoo
  • added error codes to ReadTable()

New in version 1.3.1 (November 29th, 2010)

  • A fix to a long-standing bug that sometimes crashed the program when using go().
  • The new auto-cleanup feature of run(), also introduced in the last posting, has been having unreproducible problems and it is possible that this bug-fix takes care of that too.
  • Two improvements considerably enhance the calculator: 1) its use of sprint() rather than print(), and 2) the introduction of an 'ans' variable such as one often finds in scientific-programming environments.

New in version 1.3.0.1 (October 1st, 2010)

  • Fixed a bug.

New in version 1.3 (September 29th, 2010)

  • Bugs fixed:
  • a potentially fatal problem of neglecting the null character at the end of start.zoo or other starting script
  • load() and save() were carelessly using ASCII mode rather than binary, which caused problems on PCs
  • two more memory leaks & one referencing error (potential 3rd mem. leak)
  • the calculator didn't work in the previous version
  • multiple bugs involving [^..], [+..], +[..], =! or function calls to the left of a define/equate-at/etc. operator
  • problems where the [+..] / +[..] operators would append to hidden members
  • crashes involving size-0 proxy arrays
  • problems w/ the calculator printing registers (masked by earlier calc. problem, but this problem in previous versions as well)
  • a problem that caused slow resizing of large arrays
  • disassemble() printed the wrong variable names on 64-bit machines
  • resize() now allows a void final argument
  • an awkward disassembled error when the user types "return my_array[a, b]" from the command prompt
  • command-prompt crash after returning multiple indices of an array
  • a problem flagging errors on lines beginning with |**|-style comments
  • disassemble() crashed when given null scripts
  • Improvements:
  • configured Yazoo so it can be embedded in/invoked by C code; also run recursively from within Yazoo
  • upon rerunning a script, run() first deletes the members it defined last time: no more trap(remove ..) needed
  • added go()/pwd for changing/viewing the command prompt's workspace variable
  • added reference comparison operators: '== @' and '/= @'
  • added a proxy-define operator: '#::'
  • made load() faster and more memory-efficient
  • strings print '\D\n' as a single end-of-line
  • run() can return the result of a script's return statement
  • added sum(), mean() functions to user.zoo
  • added char(), C_string() functions to user.zoo
  • transform() now allows the user to tailor the search path of transformed code
  • throw() can tailor the location of the thrown error and throw warnings as well
  • run() will allow warnings in the script to appear at the command line (assuming no intervening trap() after the warning)
  • disassemble() can skip over expressions in compiled bytecode
  • replaced RunHobbish() with a more functional do_in() routine in user.zoo
  • added RunCode() in user.zoo; RunConstructor() is now a special case of this routine
  • consistently reading bytecode as slongs
  • now properly using the NULL pointer rather than 0 in the C code
  • improved some error messages
  • Miscellaneous:
  • changed the bytecode words for the array-insertion operators ([+..], +[..]) and delete
  • eliminated CheckType() from user.zoo -"trap(a = @b)" is usually better
  • eliminated exists() from user.zoo -"exists("a")" was largely redundant with "trap(a)"

New in version 1.2 (January 22nd, 2010)

  • The 1.2 version of Yazoo has just been delivered pre-term after a number of fatal errors on 64-bit machines came to light last week. Yazoo is a command-line interpreted scripting language, which the user is intended to customize by embedding his own C or C++ routines into the language. The novelty of Yazoo script is the way that the rules behind its conservative-looking syntax can be extrapolated to produce many rare and useful scripting constructs, which the author has not encountered in other languages.
  • The really critical change in the present version was the removal of those assumptions about integer sizes that caused immediate crashes. This has necessitated another significant adjustment: the register R_ulong has gone from unsigned to signed, and so renamed R_slong. The renaming can in principle cause backwards-compatibility issues, although fortunately the integer register rarely needs to be invoked explicitly. Finally, regarding something uninteresting to most users but time-consuming for the author, the C/C++ source files have undergone stylistic renovation: they've been (finally) commented, and their formatting has been improved.
  • Because this red-faced author scrambled a bit to post the current release, it is possible that 64-bit bugs lurk yet in the code. If this is so, then another, amended version will likely be be forthcoming in a very few days, as the author uses his program avidly.

New in version 1.1 (December 14th, 2009)

  • Bugs fixed:
  • incorrectly-flagged error messages in almost any script with inlined constants
  • the append-code operator ':' didn't work properly in certain contexts, e.g. within a code-substitution operator
  • forced-equate didn't copy array elements in the right order when multiple indices were given explicitly (e.g. a[*] =! ..., ... = b[1, 2])
  • numerical issues when printing numbers at the edge of double-precision resolution
  • incorrectly-flagged error messages following endif, endf or endw
  • wrong member names in member-not-found errors from files run by user.zoo
  • the first number returned by random() wasn't entirely random
  • copy() didn't check for self-references
  • an error in SaveTable() when the second dimension of a table was sized to zero
  • sort() threw an unnecessary error for length-0 lists
  • misreading of the null comment '|***|' with an odd number of '*'s
  • Improvements:
  • search paths of new {} definitions now always go through the script that defined it, NOT necessarily the enclosing script ***
  • added resize() to user.zoo
  • added min(), max() functions to user.zoo
  • sort() now sorts lists as well as tables
  • new() accepts different source variables for type and data
  • copy() returns an error code
  • better argument checking for SaveTable()