1Change log (recent comes first)
2
307 Sep 2013: Released v 0.4.0: new typesystem and object management.
4  * Rewrote the typesystem to support boxing/unboxing objects. Types are
5    objects themselves. Also rewrote the object management system.
6  * Rewrote parts of the VM. The bytecode is now more compact.
7  * Added a new type, Any, which allows boxing/unboxing an object and greatly
8    extends the capabilities of the language: Any makes the language dynamic
9    when needed and provides some reflection capabilities.
10  * Added heterogeneous arrays of objects through the ``Array`` type.
11  * Added new objects: Curve, Tri, Fill to draw cubic bezier splines and fill
12    a path.
13
1424 Jun 2012: Released v 0.3.4: bugfixes and small improvements.
15  * Improvements to support the new version of the GUI and previews.
16  * Improvements to the VM to support converting a Box program to a C file
17    (not finished, yet) and to support serialization and deserialization of
18    Box programs.
19  * Bugfix: newlines were printed to stdout when parsing macros.
20
2124 Apr 2012: Released v 0.3.3: bugfixes and improvements.
22  * Improvement: alias types do now inherit subtypes. For example, if ``X = Y``
23    than ``X`` inherits the subtypes of ``Y``.
24  * Regression tests: added new tool to perform automatically a large number
25    of regression tests.
26  * Added objects Save, Resolution and Ppi to ease the way figures are saved
27    to file.
28
2918 Mar 2012: Released v 0.3.2: bugfixes and improvements.
30  * Introduced ``Image'' object to include external PNG files and
31    use them as patterns for filling areas (instead of colors or
32    gradients).
33  * Introduced a Figure object, so that ``Figure[...]'' can be used instead
34    of the (somewhat awkward) ``Window[][...]''.
35  * Introduced multi-line, recursive comments a la OCaml: (* ... *)
36  * Introduced macros in comments (** ... *) as a mean of injecting meta
37    information into the box sources.
38  * Species are now fully implemented.
39  * Pattern was renamed to PATTERN and Pattern is defined as the species
40    ``(Color=>Gradient=>PATTERN)'', which allows using Color, Gradient,
41    as alternatives to Pattern.
42  * Introduced ``ThickLine'' (which partially replaces the obsolete
43    ``Window.Line''). Introduced ``Dark'' and ``Axes''.
44  * Fixed rendering of non-concentric spherical gradients.
45
4627 Nov 2011: Released v 0.3.1: bugfixes and small improvements.
47  * BBox now sets (rather than extending) the bounding box.
48  * Bugfix: bounding box for Clip is now only determined by the clipping path.
49  * Bugfixes in the memory management of Box.
50  * Bugfix: FillStyle was ignored.
51
5218 Oct 2011: Released v 0.3.0: rewrote and improved G library in Box.
53  * The Box graphics library was rewritten in Box itself. The library was
54    re-engineered and is now much more clean and powerful. The old interface
55    is still supported, but is now obsolete. Note that the new interface
56    reproduces and offers to the user the features of the old interface,
57    deriving high level functionality from lower level functionality.
58    Example: Poly is expressed in terms of paths (Path) and command streams
59    (CmdStream), similar to Metapost.
60  * Added Dox, a documentation system for Box (which is now part of Boxer).
61    The core library and the Box graphics library have been documented with
62    this. Boxer has now a documentation browser to browse Dox documentation.
63  * Fixing bugs: the most important is the copy of complex objects.
64  * Search in the current source directory when including another source.
65
6602 Jul 2011: Released v 0.2.3: bugfixes and internal improvements
67  This release fixes bugs in the compiler and the graphics library.
68  * Fixed a bug in the compiler (bug 7, ownership of register in subtypes)
69  * Encapsulating objects into Obj is now possible.
70  * Raw access to the Cairo library can be obtained by sending commands
71    encapsulated into Obj objects. A considerable part of Box which is now
72    written in C can then be rewritten in Box itself (this has been started
73    but not completed).
74  * Written a prototype for a Box documentation system, Dox. Documented some
75    parts of Box using Dox.
76
7703 Apr 2011: Released v 0.2.2: bugfixes in graphics library
78  This release fixes some bugs in the graphics library, making the new version
79  of Boxer (0.3.0) more usable. The library libboxcore was also fixed in some
80  of its references (this was noted when trying to run under Mac OS).
81
8206 Feb 2011: Released v 0.2.1: bugfixes and reworked memory management.
83  This release fixes some bugs. It does not bring new features. However, the
84  memory management system has been largely rewritten. The memory management
85  system is now aware of the "complex" types and knows how to create, destroy,
86  copy and relocate them.  The release prepares the ground for future features
87  (boxing/unboxing through the Obj type, which will allow several fundamental
88  improvements to both Box and Boxer).
89
9010 Oct 2010: Released v 0.2.0: major compiler restructuring and improvements.
91  Rewrote most of the compiler core code from scratch. In particular,
92  * Rewrote the parser (fixing some small grammar issues);
93  * Introduced proper abstract syntax tree layer, from which the VM code
94    is then generated;
95  * Created an intermediate layer for VM code generation. The layer is now
96    aware of the instructions and what registers they modify. This could allow
97    to introduce a VM code optimizer later on (even if translation to C code
98    may have the priority on this);
99  * Introduced a new object for procedure handling (CmpProc) which reduces
100    drastically the complexity of generating VM code, making the compiler code
101    much simpler;
102  * Introduced a namespace module, which should allow future introduction of
103    namespaces;
104  * Autogeneration of procedures now correctly works, allowing to embed
105    any objects inside new ones (creators and destructors are automatically
106    included in the user-defined creators/destructors);
107  * Introduced exceptions. The VM builds a traceback similar to what happens
108    for Python. The user can raise an exception using Fail["message"] (only
109    one exception flavour is supported at the moment);
110  * Removed the `line' VM instruction. Error positions are now computed using
111    position in code and lookup tables. Also column-inside-line is available
112    in error messages;
113  * Second-procedures have been removed (but @@ and @& are still accepted
114    for compatibility reasons);
115  * Strings are now stored inside Str objects rather than ()Char;
116  * Changing version control system (from SVN) to Mercurial.
117
11802 Dec 2009: The graphic library g does now accept strings as Str objects
119  * '()Char' changed to 'Str' in the Box g library. This gives more
120    flexibility (we now can, for example, save the frames of an animation
121    into different files).
122
12321 May 2009: bugfix (compilation failed with newer version of glibc/gcc)
124  * Compilation of Box failed with newer version of glibc/gcc. See:
125
126    https://sourceforge.net/tracker/?func=detail&aid=2791855&group_id=218051&atid=1041983
127
128    Many thanks to Gerardo Exequiel Pozzi for reporting this and for
129    maintaining the Arch Linux package for Box.
130
13113 May 2009: change to improve compatibility with the Box GUI (Boxer)
132  * Examples provided by Boxer were not working, since g.bxh included
133    a file with ``include "poly"'' causing the example poly.box to be
134    loaded instead of the right file, poly.bxh, which is provided by the g
135    library. The bug has been fixed by renaming the files which are not
136    meant to be included explicitly following the scheme name --> _name
137
13821 February 2009: can copy "simple" objects + better versioning
139  * When using `include "file"' we now search files also inside the directory
140    containing the currently executed script. If -st is specified,
141    then we search inside the current working directory.
142  * Automatic copy of objects is now implemented. However one should be very
143    careful when using this feature with "complex" objects, such as Str, etc.
144  * Introduced the temporary #provide directive, to deal properly with
145    multiple inclusions of the same header.
146  * Accept now line-comments starting with #! to allow Box scripts to be
147    launched directly from the OS (Unix)
148  * Added some info to the -q query option (compilation date, time and version
149    string, path and name of boxcore library, etc.)
150  * Adjusted versioning conventions and automated the change of version
151    numbers in configure.ac and in the Makefile.am-s.
152  * Bugfixes and cleanup of the code. Created a libboxcore library, containing
153    the base infrastructure over which Box is built).
154
15519 November 2008: created Boxer, a GUI for Box
156  * created Boxer, a GUI for Box, using PyGTK (Python bindings for GTK+).
157    The GUI can be run on Linux, Mac OS and Windows. The GUI has a text view
158    containing the edited source and an image view, to show the output.
159    The user can click on the image and add reference points, which can then
160    be used in the Box source. These points can then be dragged, giving
161    the possibility to change the position and shape of objects interactively.
162    In this way using Box becomes much easier, still retaining the advantages
163    of a vectorial language over the traditional mouse driven graphic editors.
164    The GUI makes Box a powerful tool which can be used effectively to create
165    complex figures for reports/papers/presentations.
166  * Real@Window.Line denotes now the width of the line, not the half width
167    (this is consistent with Real@Style.Border)
168  * work on propagation of special procedures, such as creators, destructors
169    etc. Now members are created/destroyed when their container is created/
170    destroyed.
171  * updated to the latest versions of autotool/hell.
172  * Char, Int and Real are now species, while the raw types are named
173    CHAR, INT and REAL (needed a bugfix).
174  * Bugfix and improvements (also to the code style).
175  * Added the hidden option -q to query for Box configuration (may be used
176    in the future to assist installation of externally provided libraries).
177
17810 august 2008: Improved support of user defined procedures
179  * exit status should now be treated more carefully:
180    0, if all OK, 1 otherwise;
181  * variables defined in the upper scope unit are globally defined and are
182    accessible from procedures: for example, using the color structure
183    inside a procedure is now possible;
184  * $, $$, ... without depth specifications refer now to the current
185    definition Box;
186  * if NewType = OldType then NewType inherits the procedures of OldType
187    (but OldType does not inherits the procedures of NewType). NewType
188    inherits also the procedures of OldType which are defined after
189    the occurrence of 'NewType = OldType';
190  * Window.Hot now returns the last point it received as argument.
191  * Str object has been introduced. This object allows to concatenate
192    strings, print integers, reals, ... to string. It can be safely
193    used in procedure definitions, since ()Char is automatically converted
194    (Str = (()Char -> STR))
195
19609 august 2008: Improved text formatting
197  * Removed a small horrible bug in the selection of fonts:
198    this was leading to crashes whenever a known postscript font
199    was selected on Cairo terminals;
200  * Introduced Window.Text.From to decide what corner of the text
201    should go in the provided point: useful for centering text;
202  * Can now handle quite complex text formatting: subscripts,
203    superscripts and newlines are rendered correctly both in native
204    EPS and Cairo terminals.
205  * Bugfix: native EPS can now show text containing parenthesis.
206
20727 july 2008: Improved Save method. Compile under Windows
208  * Can define "incomplete windows": windows which throw an error
209    whenever they are used. Creation of such windows, however,
210    does not produce any errors: this concept is useful for the
211    new syntax of the Window.Save method;
212  * Extended the syntax of the Window.Save method: it can now take
213    a window and (1) complete it (if it is uncomplete) or (2) put
214    the figure into it (if it is complete). In both cases the figure
215    fits the destination window;
216  * Created man page and Ubuntu package;
217  * Ported the source to Windows: we now compile on XP and can
218    distribute the first version of Box for Windows;
219
2205 July 2008: Bugfixes in the transformation of draw styles and font
221
22228 June 2008: Filling with linear/radial color gradients (Gradient[])
223  * Can now express color in HSV (besides RGB) and convert RGB<-->HSV.
224  * Can now fill objects using linear or radial color gradients
225    (Gradient[] can be used for the purpose).
226  * Color[] defines .r=.g=.b=0 and .a=1 by default. Opaque red can be
227    defined with Color[.r=1]. Similar behaviour for HSV[].
228    They also both accept a triple (for opaque colors) or quadruple
229    of reals (for translucent colors).
230
23121 June 2008: Style object now allow tracing borders
232  * We can now draw polygons with border, controlling the join style
233    (including the miter limit), the cap style, the dashes, the color.
234  * Style can be instructed to draw empty polygons. In that case
235    the border is not closed in Poly, unless Poly.Close[] is used.
236
23729 May 2008: Work on the documentation and on the internal allocation system.
238  * Started to write documentation on the graphic capabilities of Box.
239  * Destructors are now called automatically by the VM before deallocation
240    of objects: Window, PointList and Style are now fully deallocated.
241  * Used Valgrind to track allocation errors: found one major problem
242    and corrected other two minor ones. Need to work more on this.
243
24417 May 2008: Integration of Cairo in the graphic library.
245  * The graphic terminal has been adjusted, removing the lowfn midfn
246    function list, which are now replaced by full declared methods.
247  * A new function to open any type of windows has been introduced.
248    This function takes a GrpWindowPlan which can contain the window
249    size, file_name, resolution, etc.
250  * Cairo is now detected in configuration scripts and new terminals
251    are avaiblable when Box is compiled with support for it.
252    We now can use Cairo image, PDF, SVG, PS terminals.
253  * Extended the method Window.Save, which now looks at the extension
254    and can accordingly save EPS, PNG, PDF, SVG, BMP files.
255  * Colors have now an alpha channel: translucency is possible with
256    Cairo windows!
257  * We can now set the drawing Style: we can decide what rule to use
258    for filling and we now can also clip along the path generated
259    by all the graphic commands (Line, Circle, Poly and Text).
260
26126 April 2008: Improvements and bugfixes.
262  * Subtypes are resolved into their children if the method in Subtype.Method
263    is not found.
264  * Bugfix in the resolution of subtype-->parent.
265
26620 April 2008: Adjustments and bugfixes.
267  * Bugfix on the strnlen implementation. Should affect only a limited
268    number of architectures.
269  * Introducing reference counting for objects allocated by the VM:
270    still not used to the full extent.
271  * Several improvements to Window.Line: it should now be more robust,
272    and supports lines having multiple join styles.
273  * Poly accepts now (;)
274  * Error messages are now displayed when undefined items appear
275    inside structures.
276
27730 March 2008: bugfixes and improvements.
278  * fixed the VM bug for jump instruction on 64 bit machines.
279  * improved the handling of open procedures
280
28122 March 2008: minor improvements, added examples.
282  * added builtin functions Max, Min, Abs, Vec.
283  * added more examples in the examples directory.
284  * Color@Window sets now the current fg color.
285
28620 March 2008: first release of the tarball. Still very unstable.
287  First tarball is released, just for letting people try the package.
288
289