1# Revision History
2
3## 7.0
4
5### 7.0.0 (2015-08-24)
6
7* Compatibility with PHP 7. Well timed, eh?
8
9#### Deprecations
10
11* The `Sabberworm\CSS\Value\String` class has been renamed to `Sabberworm\CSS\Value\CSSString`.
12
13### 7.0.1 (2015-12-25)
14
15* No more suppressed `E_NOTICE`
16* *No backwards-incompatible changes*
17* *No deprecations*
18
19### 7.0.2 (2016-02-11)
20
21* 150 time performance boost thanks to @[ossinkine](https://github.com/ossinkine)
22* *No backwards-incompatible changes*
23* *No deprecations*
24
25### 7.0.3 (2016-04-27)
26
27* Fixed parsing empty CSS when multibyte is off
28* *No backwards-incompatible changes*
29* *No deprecations*
30
31## 6.0
32
33### 6.0.0 (2014-07-03)
34
35* Format output using Sabberworm\CSS\OutputFormat
36* *No backwards-incompatible changes*
37
38#### Deprecations
39
40* The parse() method replaces __toString with an optional argument (instance of the OutputFormat class)
41
42### 6.0.1 (2015-08-24)
43
44* Remove some declarations in interfaces incompatible with PHP 5.3 (< 5.3.9)
45* *No deprecations*
46
47## 5.0
48
49### 5.0.0 (2013-03-20)
50
51* Correctly parse all known CSS 3 units (including Hz and kHz).
52* Output RGB colors in short (#aaa or #ababab) notation
53* Be case-insensitive when parsing identifiers.
54* *No deprecations*
55
56#### Backwards-incompatible changes
57
58* `Sabberworm\CSS\Value\Color`’s `__toString` method overrides `CSSList`’s to maybe return something other than `type(value, …)` (see above).
59
60### 5.0.1 (2013-03-20)
61
62* Internal cleanup
63* *No backwards-incompatible changes*
64* *No deprecations*
65
66### 5.0.2 (2013-03-21)
67
68* CHANGELOG.md file added to distribution
69* *No backwards-incompatible changes*
70* *No deprecations*
71
72### 5.0.3 (2013-03-21)
73
74* More size units recognized
75* *No backwards-incompatible changes*
76* *No deprecations*
77
78### 5.0.4 (2013-03-21)
79
80* Don’t output floats with locale-aware separator chars
81* *No backwards-incompatible changes*
82* *No deprecations*
83
84### 5.0.5 (2013-04-17)
85
86* Initial support for lenient parsing (setting this parser option will catch some exceptions internally and recover the parser’s state as neatly as possible).
87* *No backwards-incompatible changes*
88* *No deprecations*
89
90### 5.0.6 (2013-05-31)
91
92* Fix broken unit test
93* *No backwards-incompatible changes*
94* *No deprecations*
95
96### 5.0.7 (2013-08-04)
97
98* Fix broken decimal point output optimization
99* *No backwards-incompatible changes*
100* *No deprecations*
101
102### 5.0.8 (2013-08-15)
103
104* Make default settings’ multibyte parsing option dependent on whether or not the mbstring extension is actually installed.
105* *No backwards-incompatible changes*
106* *No deprecations*
107
108### 5.1.0 (2013-10-24)
109
110* Performance enhancements by Michael M Slusarz
111* More rescue entry points for lenient parsing (unexpected tokens between declaration blocks and unclosed comments)
112* *No backwards-incompatible changes*
113* *No deprecations*
114
115### 5.1.1 (2013-10-28)
116
117* Updated CHANGELOG.md to reflect changes since 5.0.4
118* *No backwards-incompatible changes*
119* *No deprecations*
120
121### 5.1.2 (2013-10-30)
122
123* Remove the use of consumeUntil in comment parsing. This makes it possible to parse comments such as `/** Perfectly valid **/`
124* Add fr relative size unit
125* Fix some issues with HHVM
126* *No backwards-incompatible changes*
127* *No deprecations*
128
129### 5.2.0 (2014-06-30)
130
131* Support removing a selector from a declaration block using `$oBlock->removeSelector($mSelector)`
132* Introduce a specialized exception (Sabberworm\CSS\Parsing\OuputException) for exceptions during output rendering
133
134* *No deprecations*
135
136#### Backwards-incompatible changes
137
138* Outputting a declaration block that has no selectors throws an OuputException instead of outputting an invalid ` {…}` into the CSS document.
139
140## 4.0
141
142### 4.0.0 (2013-03-19)
143
144* Support for more @-rules
145* Generic interface `Sabberworm\CSS\Property\AtRule`, implemented by all @-rule classes
146* *No deprecations*
147
148#### Backwards-incompatible changes
149
150* `Sabberworm\CSS\RuleSet\AtRule` renamed to `Sabberworm\CSS\RuleSet\AtRuleSet`
151* `Sabberworm\CSS\CSSList\MediaQuery` renamed to `Sabberworm\CSS\RuleSet\CSSList\AtRuleBlockList` with differing semantics and API (which also works for other block-list-based @-rules like `@supports`).
152
153## 3.0
154
155### 3.0.0 (2013-03-06)
156
157* Support for lenient parsing (on by default)
158* *No deprecations*
159
160#### Backwards-incompatible changes
161
162* All properties (like whether or not to use `mb_`-functions, which default charset to use and – new – whether or not to be forgiving when parsing) are now encapsulated in an instance of `Sabberworm\CSS\Settings` which can be passed as the second argument to `Sabberworm\CSS\Parser->__construct()`.
163* Specifying a charset as the second argument to `Sabberworm\CSS\Parser->__construct()` is no longer supported. Use `Sabberworm\CSS\Settings::create()->withDefaultCharset('some-charset')` instead.
164* Setting `Sabberworm\CSS\Parser->bUseMbFunctions` has no effect. Use `Sabberworm\CSS\Settings::create()->withMultibyteSupport(true/false)` instead.
165* `Sabberworm\CSS\Parser->parse()` may throw a `Sabberworm\CSS\Parsing\UnexpectedTokenException` when in strict parsing mode.
166
167## 2.0
168
169### 2.0.0 (2013-01-29)
170
171* Allow multiple rules of the same type per rule set
172
173#### Backwards-incompatible changes
174
175* `Sabberworm\CSS\RuleSet->getRules()` returns an index-based array instead of an associative array. Use `Sabberworm\CSS\RuleSet->getRulesAssoc()` (which eliminates duplicate rules and lets the later rule of the same name win).
176* `Sabberworm\CSS\RuleSet->removeRule()` works as it did before except when passed an instance of `Sabberworm\CSS\Rule\Rule`, in which case it would only remove the exact rule given instead of all the rules of the same type. To get the old behaviour, use `Sabberworm\CSS\RuleSet->removeRule($oRule->getRule()`;
177
178## 1.0
179
180Initial release of a stable public API.
181
182## 0.9
183
184Last version not to use PSR-0 project organization semantics.
185