The view area in the GUI was completely rewritten to allow zooming in/out and scrolling. Buffering is used to improve performance. Compilation failures are signaled by shading the view. The view area can be rotated, and the orientation will be remembered. The bounding box is visible and adjustable using two point markers. Marker size can be adjusted. Most of the compiler core code was rewritten. Autogeneration of procedures works. VM builds a traceback similar to Python's. The "line" VM instruction was removed. Error positions are computed using lookup tables. Strings are stored in Str objects.
This release mainly features work on the GUI. Updates to the file format: reference points are now Points objects. You can now write "gui1.x" rather than "Point[gui1].x". A reference point manager has been added to select hide and name reference points. The configuration of Boxer can now be read and saved to a file. You can manually stop the execution of Box. For example, if an infinite loop is accidentally inserted, the user can stop Box from Boxer. A proper command line parser has been added. There are various bugfixes and improvements. The Windows port has been improved.
Copying of objects is now implemented, though it does not work for "complex" objects, such as Str. 'include "file"' searches for files inside the directory containing the script. The #provide directive was introduced for multiple inclusions of the same header. Comments can start with #! (for Box scripts on Unix). Some information was added to the -q query option. Systematic versioning conventions and scripts are now used to help maintainers deal automatically with the issue. Bugfixes and cleanup were done. The libboxcore library was created.
Boxer, a graphical user interface for Box, was released to edit Box sources while immediately seeing their graphical output. The user can change the position and shape of objects interactively by using the mouse to add and move reference points, which are used as parameters for the Box source. The GUI makes Box a powerful tool which can be used effectively to create complex figures for reports, papers, and presentations. Real@Window.Line is now the width of the line, not the half width. Work was done on propagation of creators/destructors from members to the parent structure.
Variables defined in the upper scope unit are
globally defined and are accessible from
procedures. $, $$, ... without depth specification
refer now to the current definition Box. If A = B,
then A inherits the procedures of B. The Str
object was added. This object allows you to
concatenate strings and print other types to
string. It can be safely used as Str@MyType, since
"ordinary strings" (arrays of char) are
automatically converted to Str (Str = (()Char ->
STR)). Window.Hot now returns the last point it
received as argument. Exit status should now be
treated more carefully.