Download VIVA!

VIVA 2.1

VIVA 2.0

VIVA Initial Release


28 November 2017: v2.1 released.

  • Refactored VIVA to be dramatically faster. Inputs which were taking hours to verify in 2.0 now take seconds in 2.1.
  • Fixed a bug in which VIVA was not advancing to the next line after matching the sentinel value of a multiline repeating pattern. For example, consider this pattern: {[= n (n=0)] n; } k; VIVA would not read the k correctly because it would not advance to the next line after matching n=0
  • Made number formats more restrictive. VIVA was using Java parsing, which allows leading ‘+’ and leading 0s on ints, longs, doubles and floats, and also allows scientific notation (e.g. 19E+10) on doubles and floats. VIVA now does not allow these, unless….
  • Added new parameters javaint, javalong, javadouble and javafloat. They are boolean. When true, they defeat VIVA’s extra checking and simply use Java’s parsing. They all default to “false”.
  • Parameters can now be set on the command line. See the User’s Guide for examples. Parameters set in the pattern supersede those set on the command line.
  • The VIVAGUI now has a File menu, with two options: Parameters and Quit
    • Parameters invokes an editor where you can change parameter values. Parameters set in a pattern supersede those set on the GUI.
    • Quit invokes a modal OK/Cancel dialog for exiting the GUI
  • The VIVAGUI will now display results as they come in rather than all at once at the end.
  • The VIVAGUI’s input file dialog now defaults to “.in” as a suffix for input files.

26 April 2015: v2.0 released.

  • Added vector functions increasing(), decreasing(), nonincreasing() and nondecreasing(), which behave as expected.
  • Removed scalar functions feps() and deps(). Because these functions have global effects, they can have bizarre consequences. Input files could be validated differently based on the order that they are handled. The epsilons can still be set with parameters.
  • Removed epsilon from strict inequalities < and > on floats and doubles. Using epsilon causes the strange side effect that a<a is always true. This is the way the documentation reads, so the code is now in line with the documentation.
  • Added parameters eolnstyle and eofstyle. For eolnstyle:
    • “windows” makes VIVA use Windows-style newlines (CR-LF)
    • “linux” makes VIVA use Linux-style newlines (LF)
    • “mac” makes VIVA use Mac-style newlines (CR)
    • “system” makes VIVA use the newline convention for the current OS (default)
  • For eofstyle:
    • “windows” makes VIVA complain if there is a newline after the last input line
    • “linux” makes VIVA complain if there ISN’T a newline after the last input line
    • “both” makes VIVA accept either convention, and not complain in either case
    • “system” makes VIVA use the convention for the current OS (default)
  • When run on the command line or in a script, VIVA now returns an error code. The code is -2 if VIVA has been given no arguments, and -1 if the pattern file doesn’t parse correctly. Otherwise, VIVA returns the number of input files which failed validation (0 if all files passed).
  • Updated documentation to reflect these changes.

24 August 2014: Initial release.

  • Renamed test() to testall(), added concatall(), test() and count()

Leave a Reply