SCSS NEWS --- history of user-visible changes
Copyright (C) 2008 Julian Graham
See the end for copying conditions.



Changes since development release 0.3.0

** Better pseudo-element support

The SCSS selection algorithm has been substantially rewritten to support more
efficient handling of CSS pseudo-elements.  Specifically, the system now
maintains separate tables of selection results, multiplexed on a bitmask of
active pseudo-elements, as determined by calls to the installed pseudo-element
handler.  Because multiple sets of selection results can now co-exist, the
`scss:clear-style-cache' function is no longer necessary as part of normal SCSS 
operation; it has been removed from the API.

** Interpreter compatibilty

In order to facilitate porting to other Scheme 
interpreters, all calls to Guile-specific functions have been replaced with 
calls to R5RS- and SRFI-defined functions.

** Homebrew lexer

As part of an overall cleanup of the codebase, compile-time generation of the
lexical analysis code (via SILex) has been replaced with a hand-written
implementation that is an order of magnitude smaller and marginally more
efficient.


Changes since development release 0.2.3

** New license: GPLv3

SCSS is now licensed under the GPLv3; the COPYING file and the headers of the
relevant source files have been updated to reflect this.

** Parser rewrite

The SCSS parser has been completely rewritten for this release, such that it is
now much closer to the definition in the CSS recommendation, and much better at
recovering from parsing errors. The error handling behavior is also closer to
the behavior described in the CSS recommendation -- the right portions of a
stylesheet are now ignored following an error, for example, and non-terminated
strings and blocks are properly closed.

** Parsing and query enhancement: Support for the @media rule

The parser and query system now recognize the @media rule and, as an extension
to the scss:select-value API, media types can be specified as part of a query
against the cascade.

** Parsing enhancement: Support for rgb-function color syntax

The parser now properly recognizes and formats colors specified in the "rgb()"
pseudo-function notation.

** Major format change

The format of SCSS's S-expr representation of stylesheets has undergone a
complete rewrite. It is now somewhat compatible with the format used by Jim 
Bender's WebIt! toolkit (http://celtic.benderweb.net/webit/), a Scheme library 
that provides useful APIs for working with XML, HTML, and CSS documents. CSS
documents given in the format described in the WebIt! specification can be used
directly by SCSS; documents created by SCSS can be used by WebIt!, provided
that only selectors and syntax covered by the CSS1 recommendation is used.

More information on the new format and its compatibility with WebIt! can be
found in the SCSS documentation.


Changes since development release 0.2.2

** Parsing enhancement: Support for Unicode

SCSS now transforms Unicode escape sequences to the appropriate Unicode
characters. Note that since Guile versions prior to 1.8 don't support Unicode, 
escapes that refer to characters over and above the first 256 characters won't 
be replaced in Guile 1.6 or earlier.

** Assorted minor bugfixes

Character backslash escapes without a special meaning should be replaced by the
character itself; the parser was failing to reject invalid values for certain
generalized properties (background, border, border-*, font, list-style, 
outline, and text-decoration).


Changes since development release 0.2.1

** Major cascade lookup bugfix

If the best selector match contains a rule for a property that is a more
general version than the property requested AND is inherited from an ancestor
node, SCSS will now correctly use this property.

** New API function: scss:clear-style-cache!

For greater efficiency in performing style lookups, SCSS maintains internal
hashes mapping nodes to matching style information. scss:clear-style-cache! can
be used to clear this cache when it is necessary to perform a full lookup from
the cascade. See the SCSS documentation for more information.

** Assorted minor bugfixes

Formatting of imported stylesheets when there are multiple @import directives
has been fixed; requests for "border-color" will now properly generalize to
"color."


Changes since development release 0.2.0

** Vastly improved performance

As part of some fixes to query algorithm correctness, there is a welcome side-
effect: SCSS queries now take an order of magnitude less time to complete,
making SCSS a whole lot more useful as an embedded style-management system.

** Changes to internal stylesheet representation

Pursuant to the optimizations mentioned above, the stylesheet format has
changed; detailed information can be found in the documentation, but developers
relying on direct access to SCSS stylesheets will need to update their code.


Changes since development release 0.1

** Property generalization improvements and bugfixes

If the best selector match contains a rule for a property that is a more
general version than the property requested, such as "border" for a lookup of
"border-left-style," SCSS will now correctly use the more general property to
determine the value of the requested property.

** Assorted bugfixes

Among others, bugs related to the !important modifier, color-to-hexadecimal 
conversion, and stylesheet emitting have been fixed.

** Documentation is complete

The SCSS API should now be fully documented.


Copyright information:

Copyright (C) 2008 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:
