libRUIN NEWS -- history of user-visible changes
Copyright (C) 2007 Julian Graham
See the end of copying conditions.

Send comments, questions, and bug reports to libruin-devel@nongnu.org

Each release reports the NEWS in the following sections:

* Changes to the distribution
* Changes to the C interface
* Changes to layout and rendering
* Changes to the Scheme interface


Changes since 0.1.3 development release:

* Changes to the distribution

** Tests

A few new tests from the new revision of the W3C's CSS2.1 test suite have been
added, with a focus on stylesheet parsing, to the distribution under 
examples/xhtml/.

** ruinview behavior

The example application, 'ruinview', has been modified so that it can load and
render more than one document during a single execution. Specify the
documents on the command line and use the 'n' key to progress through the list
of documents during rendering.

** Upgrades to Scheme core modules

The latest versions of SCSS (0.2.3) and SDOM (0.4.1) are included in this
release, along with the contingent benefits of improved speed and correcteness
these newer versions provide.

* Changes to the C interface

** Automatic XML dialect detection

The new version of SDOM provides support for XML documents containing Document 
Type Definitions, allowing libRUIN to determine the type of a document
automatically. As such, the "ruin_xml_dialect" enumeration has been removed
from the API. (If document type cannot be determined, libRUIN will attempt to
render the document as XHTML.)

* Changes to layout and rendering

** Table layout

New in this release is the addition of working support for the automatic table
layout algorithm. The table width allocation algorithm is based on the one used
by KHTML. It's not perfect yet, but even some fairly complicated stuff like
nested tables and column-spanning cells works.

** Proper cascade inheritance

CSS cascade lookups now proceed using the inheritance stack, not the structure
of the document itself, to better facilitate context-based lookups, such as
ones involving table-columns.

** Fixed rendering corruption issues

The CSS lookup caching system was refactor to resolve a race against Guile's
garbage collector leading to non-deterministic value lookup behavior for 
certain properties.

** Respect for terminal window edges

libRUIN now makes a few half-hearted attempts not to draw off the bottom of the
terminal window, preventing occasionally garbled output.

** Prevention of zero-width borders

While it's okay for things like padding and margins that start out with non-
zero computed width to wind up with used width set to zero, but that's not true
of borders. libRUIN now forces borders to a width of 1em in cases like these.

* Changes to the Scheme interface


Changes since 0.1.2 development release:

* Changes to the distribution

** Tests

XHTML examples from the W3C's CSS2.1 conformance test suite (distributed with
permission) are now included properly -- they were accidentally left out of
the last release.  They can be found under examples/xhtml. The subset of the
test suite included is dependent upon CSS features which are supported by
libRUIN and will grow as functionality improves.

** OS X support

Some minor fixes have been made to allow libRUIN to build on OS X (10.4).

** Guile 1.6 / 1.8 support

Some refactoring has been done to allow libRUIN to build against either the 1.6
or 1.8 releases of GNU Guile.

* Changes to the C interface

* Changes to layout and rendering

** CSS inheritance correctness

This release includes the latest version of SCSS, which features a number of
significant improvements to the correctness of style lookups. libRUIN itself
also features the following improvements: Automatic inheritance of relevant
style by anonymous inline boxes; correct inheritance of explicit style
(specified in "style" attributes).

** Handling for window resize events

libRUIN now automatically installs a handler for SIGWINCH and will redraw the
window when the terminal is resized.

** Pseudo-class support

There is now (preliminary) support for CSS pseudo-classes, e.g., :focus, :link.
Since these depend to some degree on integration with a user agent, which
libRUIN isn't, really, so this support is provisional and may change.

** Focus handling

Focus is no longer automatically sent to the first focusable element when
rendering is complete. The old focus toggle handlers (which inverted the color
of the focused element) have been removed.

** Rendering of inline elements

A couple of slight improvements: Left and right margins for inline elements are
now supported. Wrapping of lines, particularly those containing words that are
wider than the terminal, should look a bit better.

* Changes to the Scheme interface


Changes since 0.1.1 development release:

* Changes to the distribution

** libRUIN no longer includes guile-lib modules

configure now checks for the presence of the required modules; libRUIN still
includes the SDOM and SCSS Scheme modules, since it is currently unlikely that
users will have these installed.

* Changes to the C interface

* Changes to the Scheme interface

** New Scheme functions ruin:get-style and ruin:set-style!

These functions can be used, respectively, to set explicit style properties on
elements in the document tree. Both functions manipulate the style values that
are actually used during rendering -- i.e., the style information with the
highest precedence. 

ruin:set-style! does not change the element itself; properties set using this
function are stored in internal libRUIN data structures.


Changes since recent CVS:

* Changes to the distribution

** libRUIN includes source selections from guile-lib 

libRUIN incudes the 'assert' and 'time' modules from the 'debugging' tree, and
the 'documentation' and 'session' modules from the 'scheme' tree. This is
mostly to support the source distribution of SXML that is included.

* Changes to the C interface

** ruin_get_width and ruin_get_height have been removed

libruin.h no longer exposes ruin_get_width or ruin_get_height, and both
functions have been removed from the source. There's really no reason either
should have been made available to the user; they're not even really useful
for debugging purposes.

* Changes to the Scheme interface


Copyright information:

Copyright (C) 2007 Julian Graham

   Permission is granted to anyone to make or distribute verbatim copies
   of this document as received, in any medium, provided that the
   copyright notice and this permission notice are preserved,
   thus giving the recipient permission to redistribute in turn.

   Permission is granted to distribute modified versions
   of this document, or of portions of it,
   under the above conditions, provided also that they
   carry prominent notices stating who last changed them.


Local variables:
mode: outline
paragraph-separate: "[ 	]*$"
end:
