What's new in Yazoo 1.5.1
Aug 2, 2013
- Bugs fixed:
- conflicts with variables defined in user.zoo (in sort.sortpart(), copy.copy_one() and run.run_template())
- 1 mod 0 caused a crash -- fixed
- Improvements:
- input() now returns the string to the enclosing expression
New in Yazoo 1.5 (Nov 7, 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
New in Yazoo 1.4 (Jul 18, 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 Yazoo 1.3.1 (Nov 29, 2010)
- Bugs fixed:
- an occasional crash upon defining members
- start.zoo would try to print unprintable characters in compiler-generated errors
- Improvements:
- wired up the calculator to sprint()
- added an ans (answer) variable
New in Yazoo 1.3.0.1 (Oct 2, 2010)
- Fixed a bug in run() from Yazoo 1.3
New in Yazoo 1.3 (Sep 29, 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 Yazoo 1.2 (Jan 22, 2010)
- Bugs fixed:
- immediate crash on systems having 64-bit addressing
- some annoying g++ compile-time warnings
- problems with compiling multiple consecutive '&'s on otherwise blank lines
- an oddity with compiling double-comment markers '||'
- Improvements:
- replaced R_ulong with R_slong; ** backwards-compatibility issues **
- commented the code
- improved the formatting (replaced tabs with spaces)
New in Yazoo 1.1 (Dec 14, 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()
New in Yazoo 1.0.2 (Jan 15, 2009)
- more memory leaks, including a big one (removed string variables didn't deallocate the strings)
New in Yazoo 1.0.1 (Dec 18, 2008)
- Bugs fixed:
- a problem with passing single indices of arrays to functions
- problems running code in the initialization of size-0 arrays
- a superfluous error message with nested run() calls
- a problem with sort() when handed size-0 lists
- checking C memory routines against NULL pointer rather than 0
- plugged some memory leaks (incl. one big one)
- Improvements:
- more memory-error checking
- allow more ways of deleting array indices
- small help file improvements
New in Yazoo 1.0 (Nov 10, 2008)
- Bugs fixed:
- crashes upon defining variables within a function return variable or register
- 'return' didn't prevent subsequent codes from executing
- order of operations inconsistencies
- crash when applying