November 7th, 2012Bugs 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()
July 18th, 2011Bugs 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()
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.
October 1st, 2010· Fixed a bug.
September 29th, 2010Bugs 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)"
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.
December 14th, 2009Bugs 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()