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: