Changelog
2.1.0 – November 21, 2025
Added
- Fix deprecations on PHP 8.5 (@cedric-anne, @stof)
- Implement the
if function for usage with get-function and `call (@stof)
- Add support for converting PHP arrays to Sass values in
ValueConverter::fromPhp (@stof)
- Add support for Symfony 8 components (@stof)
Fixed
- Fix crash when writing
@extend without selector (@stof)
- Fix the serialization of values when using them outside the compiler (@stof)
- Fix compatibility with
league/uri 7.6 (@stof)
Changed
- No longer fully trim redundant selectors in
@extend as this caused performance issues (@stof)
- Update error messages to be consistent with dart-sass (@stof)
- Add missing
@interna tags for internal APIs (@stof)
- Declare a requirement on
ext-mbstring instead of requiring symfony/polyfill-mbstring.
Projects can still decide to install that polyfill package to satisfy the requirement if
they want to support PHP setups that don’t have the extension, but the polyfill package
will not be installed by default anymore. (@stof)
2.0.1 – January 31, 2025
Fixed
2.0.0 – December 23, 2024
This release is a full rewrite of the compiler. The new implementation is a port of dart-sass,
making it spec-compliant and easier to update to support new Sass features. However this release
does not implement Sass modules yet.
BC breaks
- The
Compiler class is now final
- The
LoggerInterface now expects more argument in its method signatures
-
\ScssPhp\ScssPhp\OutputStyle is now an enum instead of a class with string constants.
-
Compiler::setOutputStyle now expects an instance of the OutputStyle enum instead of a string.
- Deprecated methods of the compiler have been removed.
Deprecated
- Deprecate passing a path as string as the
Compiler::compileString second argument. Either pass
a URL or use Compiler::compileFile instead. (@stof)
Removed
- Remove support for color math in Sass expressions (@stof)
- Remove the CLI shipped in the package (@stof)
- Remove the
scss.inc.php file. Use the autoloader generated by Composer instead. (@stof)
- Remove the cache system integrated in the compiler (@stof)
- Remove support for PHP < 8.1 (@stof)
Added
- Add support for PHP 8.4 (@stof)
- Add support for the Sass indented syntax (@stof)
- Add a representation of Sass values using PHP value objects (@stof)
- Add the
Importer extension point for custom importers (@stof)
- Add support for configuring the reporting of deprecation with
Compiler::setSilencedDeprecations,
Compiler::setFutureDeprecations and Compiler::setActiveDeprecations (@stof)
- Add support for silencing deprecations from dependencies with
Compiler::setQuietDeps (@stof)
- Add support for configuring verbosity of deprecation warnings with
Compiler::setVerbose (@stof)
Fixed
- Thanks to the rewrite, scssphp is now spec-compliant, fixing many issues (@stof)
Changed
- The message received by loggers no longer contains the location and stack trace. Loggers
need to include them based on the provided argument depending on their formatting needs. (@stof)
- Custom functions can now be defined using the new representation of Sass values by using
\ScssPhp\ScssPhp\Value\Value as return type. Untyped functions will still receive legacy
values. (@stof)
1.13.0 – August 17, 2024
Deprecated
- Deprecate registering a custom function with a callable expecting 2 arguments (@stof)
1.12.1 – January 13, 2024
Fixed
- Fix the handling of leading spaces in interpolated media queries (@stof)
- Fix the compilation cache key when using numbers in variables (@stof)
1.12.0 – November 14, 2023
Deprecated
- Deprecate passing string with extra content after the expression in
ValueConverter::parseValue (@stof)
Added
- Add the
Compiler::compileFile method (@stof)
- Add the
OutputStyle::fromString and OutputStyle::toString methods to allow writing code supporting both Scssphp 1.12+ and 2.0 (@stof)
Fixed
- Fix the parsing of values in
ValueConverter::parseValue when using comments inside the value source (@stof)
1.11.1 – September 24, 2023
Added
- Add dedicated error handling when passing invalid UTF-8 (@stof)
Fixed
- Fix extending a selector using
:is() (@ssltg)
1.11.0 – September 2, 2022
Deprecated
- Deprecate passing a limit with unit to
random() (@stof)
Added
- Add support for empty fallback in
var() (@stof)
Fixed
- Fix the handling of mixed case operators in media queries (@stof)
Changed
- Improve error messages for incorrect units in color functions (@stof)
1.10.5 – July 27, 2022
Fixed
- Fix the handling of non-integer numbers in
nth and set-nth (@max-m)
1.10.4 – July 26,2022
Fixed
- Remove false positive deprecation warnings when compiling Bootstrap 5.2.0 (@stof)
Changed
- Remove usage of interpolation syntax deprecated in PHP 8.2 (@shyim)
1.10.3 – May 16, 2022
Fixed
- Fix the handling of nested at-root in mixins (@stof)
Changed
- Mark the logger implementations as
@final to prepare for 2.0 (@stof)
1.10.2 – March 2, 2022
Fixed
- Fix the tracking of the location of comments when using sourcemaps (@stof)
- Fix the leaking of an output buffer in case of error during the formatting of the output (@stof)
1.10.1 – February 28, 2022
Fixed
- Fix the handling of
rgb, rgba, hsl and hsla called with a trailing comma in arguments (@stof)
- Fix the handling of negative index in
str-insert (@stof)
1.10.0 – January 6, 2022
Fixed
- Fix the generation of source maps without an input path (@stof)
- Fix the handling of list separators in list functions (@stof)
- Add explicit return types to avoid warnings from the Symfony DebugClassLoader (@shyim)
Changed
- Use double quotes to render strings in the generated CSS by default, to match dart-sass (@stof)
- Remove usage of dynamic properties to avoid deprecation warnings in PHP 8.2-dev (@stof)
- Change the order of selectors in the output of
selector-append to match dart-sass (@stof)
- Mark AST-only types as internal in
\ScssPhp\ScssPhp\Type (@stof)
- Preserve the
! for preserved comments in the compressed output, to match dart-sass (@stof)
1.9.0 – December 13, 2021
Added
- Add support for deep map manipulation in
map-get, map-has-key and map-merge (@stof)
Fixed
- Preserve the type of keys when iterating over maps (@stof)
1.8.1 – September 18, 2021
Added
1.8.0 – September 18, 2021
Deprecated
- Deprecate calling core functions with non-standard names. Due to the internal implementation of core functions, they were calling with different cases or different positions of
- or _ in the names (@stof)
Fixed
- Fix the computation of the hue of colors for some cases (@stof)
1.7.0 – September 15, 2021
Added
- Add support for a
charset option to omit the charset declaration from the generated CSS (@stof)
Changed
- Add spec-compliant validation of arguments in several color functions (@stof)
Fixed
- Fix the handling of CSS variables in
rgba() (@stof)
- Fix the handling of unitless weights in
mix() and invert() (@stof)
- Fix the handling of amounts in
saturate(), desaturate(), fade-in() and fade-out() (@stof)
- Fix the handling of
@charset in the Sass source (@stof)
- Fix wrong deprecation warning about unterminated interpolation in discarded comments (@stof)
- Fix file paths in error messages on Windows (@stof)
1.6.0 – June 30, 2021
Deprecated:
- Deprecate extending compound selectors, as that’s unsupported by dart-sass (@stof)
Fixed:
- Fixed the parsing of expressions with alterning operator precedence, which fixes support for compiling Bootstrap 5.0.2 (@stof)
1.5.2 – May 18, 2021
Fixed:
- Fix the implementation of the
Compiler::getStringText helper (@stof)
- Fix the handling of compiling without an input path, to avoid deprecations on PHP 8.1 (@stof)
- Revert the 1.5.0 fix for list indexes in
nth and setNth as other spec compliance issues for list are making it break the compilation of Bootstrap 4.6 (@stof)
1.5.1 – May 17, 2021
Fixed:
- Fix computation on colors to always return integer values for RGB channels (@stof)
1.5.0 – May 14, 2021
Deprecated:
- Deprecate the
compile method relying on stateful getters for included files (@stof)
- Deprecate extending the Compiler class to register custom functions. Use
registerFunction instead (@stof)
- Deprecate overriding core functions through
registerFunction (@stof)
- Deprecate returning a file path in custom importers for CSS imports (@stof)
- Deprecate
Compiler::setEncoding as it was not implemented in a compliant way. Only UTF-8 is supported now (@stof)
- Deprecate the
--dump-tree option of the pscss CLI (@stof)
- Deprecate the
scssphp-glob function (@stof)
- Deprecate the
Compiler::setVariables method (@stof)
- Deprecate passing non-converted values when registering variables (@stof)
- Deprecate returning a PHP value rather than a Sass value from custom functions (@stof)
- Deprecate registering custom functions without an argument declaration (@stof)
- Deprecate the
@scssphp-import-once directive (@stof)
- Deprecate non-standard support for broken interpolation in loud comments (@stof)
- Deprecate
\ScssPhp\ScssPhp\Exception\ServerException (@stof)
Added:
- Add support for writing the output to a file in pscss (@stof)
- Add support for writing sourcemaps to a file in pscss (@stof)
- Add support for embedding sources in the sourcemap in pscss (@stof)
- Add support for
$blackness and $whiteness in adjust-color, change-color and scale-color (@Cerdic)
- Add a new
compileString method returning a CompilationResult (@Cerdic, @stof)
- Add a new
checkImportResolutions cache option to invalidate the compilation cache if imports would resolve differently (@Cerdic)
- Add a
LoggerInterface to customize the handling of warning and debug messages (@stof)
- Add the
\ScssPhp\ScssPhp\Warn API to report warnings in custom functions (@stof)
- Add
Compiler::replaceVariables and Compiler::addVariables to manage custom variables (@stof)
- Add the
\ScssPhp\ScssPhp\ValueConverter to produce values in the Sass value representation (@stof)
- Add
Compiler::getStringText to get the text of a Sass string (@stof)
- Add
Compiler::getArgumentListKeywords to get the keyword arguments of a Sass argument list (@stof)
- Add
Compiler::isCssImport to allow custom importers to skip CSS imports (@stof)
- Add documentation about extending the library (@stof)
Changed:
- Add type checks for arguments of core functions (@Cerdic, @stof)
- Refactor the processing of function arguments to be more spec compliant (@stof)
- Forbid unsupported selectors in the
@extend directive instead of producing a non-standard behavior (@stof)
- Take into account
.sass files during import resolution to avoid selecting a different file than dart-sass (@stof)
- Change the internal representation of arguments lists to make them compliant lists (@stof)
- Tagged all internal APIs with
@internal to exclude them from the backward compatibility surface (@stof)
- Change the error reporting for
Compiler::assert* helpers to be consistent (@stof)
- Change
scss.inc.php to register an autoloader rather than loading all classes eagerly (@stof)
- Improve the phpdoc of the library, with advanced type declarations for phpstan (@stof)
Removed:
- Remove support for running (in a non-compliant way) without mbstring and iconv. Either mbstring or iconv is now required (@stof)
- Remove non-standard support for ignoring HTML comment delimiters (but not the content of the comment) during parsing (@stof)
Fixed:
- Fix the handling of units and bounds in for loop (@stof)
- Fix the handling of interpolation in expressions (@stof)
- Fix the implementation of
str-slice for non-ASCII chars (@stof)
- Fix the handling of
min and max without arguments (@stof)
- Fix the implementation of
keywords() for functions called with positional arguments (@stof)
- Fix the handling of list indexes in
nth and set-nth (@stof)
- Fix usage of
preg_match flags avoid passing null (@stof)
1.4.1 – Jan 4, 2021
- Fix support for absolute paths in imports (stof)
- Fix support for custom properties in plain CSS imports (willpower232)
- Fix the BC layer for cwd-based import resolution to support code disabling it in the old API (stof)
- Fix sourcemaps for the compressed output (stof)
- Fix the escaping in selectors (Cerdic)
- Add the library version as a cache busting criteria (Cerdic)
- Fix the parser to apply
realpath to the path used for error reporting as well (Cerdic)
- Fix the phpdoc in the Compiler (stof)
1.4 – Nov 7, 2020
- fix the injection of the
@charset rule without mbstring (stof)
- Add a CI job running tests without mbstring (stof)
- Stop changing current directory in pscss (stof)
- Refactor the resolution of imports to be spec compliant (stof)
- Add a factory method for SassScriptException with an argument name (stof)
- Expose
SassScriptException as a non internal class (stof)
- Fix regression with whitespaces or comments at the beginning of interpolated selectors (Cerdic)
- Fix the implementation of
to-uppercase and to-lowercase to avoid being locale dependant (Cerdic)
- Add a better error rendering of sass errors in
pscss (stof)
- Deprecate
setFormatter in favor of setOutputStyle (stof)
- Deprecate all formatters except
Expanded and Compressed(stof)
- Change the default formatter to be
Expanded (stof)
- Migrate CI to github actions (stof, robocoder)
- Fix the generation of sourcemaps (stof)
- Adjust the source map to account for the charset prefix (stof)
- Improve the phpdoc (stof)
- Fix the behavior of
str-index (stof)
- Deprecate color arithmetic (stof)
- Fix spec compliance for the
call function (stof)
- Fix the matching of the space ending an escape sequence (stof)
- Fix the behavior of
to-uppercase and to-lowercase (stof)
- Fix the implementation of
== and != between number and colors (stof)
- Fix the implementation of modulo (stof)
- Mark the
units-level-3 feature as implemented (stof)
1.3 – Oct 29, 2020
- Better
quote() compliance (Cerdic)
- Improve string compliance with sass-spec (Cerdic)
- Fix issue with argument values being swapped (jljr222, Cerdic)
- Fix parsing of comment in selector list (Daijobou, Cerdic)
- Fix for double dash in class names (janstieler, Cerdic)
- Drop support for
/foo/ selector (Cerdic)
- Fix compatibility issues with PHP 5.6 and 7.2 (stof)
- Migrate from throwParseError to parseError factory (stof)
- Refactor Number (to be continued) (stof)
- Remove dead code, support for numbered output, and ruby-sass tests (stof)
- Remove experimental spaceship operator and
@break and @continue (stof)
- Deprecate
Compiler::addFeature() (stof)
- Move
gh-pages to /docs folder on main branch (stof, robocoder)
- Add php 8 support for phpunit (adlenton)
1.2.1 – Sep 7, 2020
- Fix
@import url() parsing (leonardfischer, Cerdic)
- Fix various directive parsing issues (zoglo, CatoTH, Cerdic)
- Fix
min(), max() (Cerdic)
- Fix
str-length(), str-index(), and str-insert() (Cerdic)
- Fix
is-superselector() and other select issues (Cerdic)
- Fix
call() argument name (Cerdic)
- Fix
random() (Cerdic)
- Fix
list-separator() on empty or one element list (Cerdic)
1.2 – Aug 26, 2020
- Many, many sass-spec test improvements (stof, Cerdic)
- Partial fix of special cases in hsl/hsla functions (Cerdic)
- In certain interpolations, the spec seems to prefer to force a double quote for output strings (Cerdic)
- Fix list separated values with no delimiter with a keyword between two strings (Cerdic)
- Fix spaces escaping in
@import path strings (Cerdic)
- Fix single/double quote escaping in single/double scope strings (stof)
- Add polyfill for
mb_chr (stof)
- Refactor handling of stirngs and escape sequences (stof)
- Fix the enclosedList parsing in a more generic way (Cerdic)
- Parser: explicitly flatten where expected (Cerdic)
- Color function can be called with a var(..) argument (Cerdic)
- Throw an error when passing too many arguments (stof, Cerdic)
- Don’t coerce anything into a map but throw an error if it’s not at all matching a map (Cerdic)
- In the
@atroot (#{with: media}) the interpolation has to be reparsed in the compiler before trying to manipulate as a map (Cerdic)
- Throw an error if positional and named passed, even on a splat… argument, except if this is the only one (Cerdic)
- Fix map-remove() : second argument key can be a list of arguments (Cerdic)
- Fix parsing value list in function call made of value list of 1 element (Cerdic)
- Fix name of arguments on functions
mix(color1,color2), map-merge(), comparable(), selector-extend(), selector-replace(), selector-parse() (Cerdic)
- Fix
saturate(50%) (Cerdic)
- Throw an error if a value that should be in a range is not a numeric value (Cerdic)
- Add error handling for invalid type in some color functions (Cerdic)
- Compiler: deprecated
throwError() (stof)
- Remove ignoreErrors mode (stof)
-
--& is a valid custom property (where & should be interpreted as self selector) (Cerdic)
- Replace self selector in target part before the pushExtends() (Cerdic)
- Add SassException interface (stof)
- Add a proper error when trying to take a modulo by 0 (stof)
- Properly detect the wrong operands for
for loops (stof)
- Fix the parsing of while(false) loop (stof)
- Drop support for configuring precision (stof)
-
bin/pscss deprecated --continue-on-error and –precision (stof)
- Deprecation warning when call() is used with a string (Cerdic)
- Introducing scss get-function() and T_FUNCTION_REFERENCE type (Cerdic)
- Reorder color names (stof)
- Change output order for nested selectors (stof)
- Simplify the handling of comments to be more spec-compliant (stof)
- Refactor the format of the output for debug and warn directives (stof)
- Discard comments in include arguments (stof)
- Fix parsing of id tokens in values (stof)
- Respect precision when computing alpha channel (stof)
- Compiler: fix undefined offset 2 (chrisblakley)
- Fix keyframe parsing in css files (dwachss, Cerdic)
- In plain CSS, a property can only occur in a selector (ryssbowh, Cerdic)
- Compiler: add
getSourcePosition() (ryssbowh, robocoder)
- ParserException: add sourcePosition getter/setter (cbl, robocoder)
- Cache: cache directory must exist and be writeable (robocoder)
- Update sass-spec tests (2020.08.20)
- Update to PSR-12 (robocoder)
- Add php 8 nightly to Travis CI (robocoder)
1.1.1 – Jun 4, 2020
- Fix extend and class concatenation (develth, Cerdic)
- Fix arguments selector issue (stempora, Cerdic)
- Fix regression when members units are not normalizable (jszczypk, Cerdic)
- Remove box.json.dist from .gitattributes (reedy)
- 32-bit fixes for Base64VLQ
encode() and unique-id() (remicollet, robocoder)
- Fix index of map within list of maps (stempora, robocoder)
1.1.0 – Apr 21, 2020
- Fix the handling of call traces for exceptions of native functions (stof)
- Add named call stack entries for imports (stof)
- Fix leaks in the call stack (stof)
- Qualify function calls when the compiler can optimize them (stof)
- Remove deprecated Parser::to() and Parser::show() methods (robocoder)
1.0.9 – Apr 1, 2020
- Fix parsing issues around
#, +, -, -- (Cerdic)
- Fix
@import compatibility (Cerdic)
- Add vendor-prefixed
scssphp-glob() function (havutcuoglu, robocoder)
- Remove PHP version and mbstring.func_overload checks (KryukovDS, robocoder)
- Fix multiple issues with Bootstrap 4.4.1 and master (fuzegit, Cerdic)
- Fix variables interpolation bug (Seonic, Cerdic)
1.0.8 – Feb 20, 2020
- Import of valid scss files fails silently (oyejorge, Cerdic)
- Undefined $libName (enricobono, robocoder)
- Fix division and modulo per sass-spec (Cerdic)
- Fix expressions in at directives (Cerdic)
- Introduce support for custom properties (Cerdic)
- Function compatibility issues with functions (abs, ceil, floor, max, min, percentage, random, round), units, and conversions. (Cerdic)
1.0.7 – Jan 31, 2020
- Fix problem with Bootstrap 4.4 / Responsive containers (nvindice, Cerdic)
- Fix issue with pseudoelement selectors order in
@extend‘ed elements (CrazyManLabs, Cerdic)
-
example/Server.php moved to https://github.com/scssphp/server
1.0.6 – Dec 12, 2019
- Many sass-spec compatibility fixes (Cerdic)
- Discriminate shorthands vs real divisions in border-radius property (joakipe, Cerdic)
- Base64VLQ - 32-bit overflow fixes from Closure implementation (remicollet, robocoder)
- Formatter for nested properties removes semicolon (Mythos07, Cerdic)
- Variables scope issues (jducro, Cerdic)
- Using
@extend creates invalid output with nested classnames (bmbrands, Cerdic)
- Fixed sourceMapGenerator bug if semicolons are stripped. (ugogon)
1.0.5 – Oct 3, 2019
- interpolation fixes (Cerdic)
- phpunit test updates (stof)
- undefined sourceIndex (connerbw, robocoder)
- using is_null(), is_dir(), is_file() for consistency (robocoder)
1.0.4 – Sep 6, 2019
-
border-radius shorthand support (alex-shul, Cerdic)
- allow
zip() function to use all types as arguments (devdot, Cerdic)
-
@each forcing unwanted type conversion (devdot)
-
rgb() and colour compatibility improvements (Cerdic)
-
str-splice broken in php 7.4
- composer and travis configuration updates
- remove obsolete
Base64VLQEncoder class
1.0.3 – Aug 7, 2019
-
@at-root, @import, and url(//host/image.png) fixes (Cerdic)
- join operator with interpolated values vs vars or static values (julienmru, Cerdic)
- Implemented passing Arguments to Content Blocks (jensniedling, Cerdic)
- Support whitespaces inside :not() (schliesser)
- Compile non-roots comments also (fabsn182, Cerdic)
1.0.2 – July 6, 2019
- Version: actually bump the version number
1.0.1 – July 6, 2019
- Fix iteration on map (alexsaalberg049 , Cerdic)
- More compatibility with reference implementation (Cerdic)
- Cache: bump
CACHE_VERSION (Cerdic)
-
bin/pscss requires php 5.6+ (robocder)
- travis updates and improved tests (Cerdic)
- Nested formatted improvements (Cerdic)
1.0.0 – June 4, 2019
- Moving development to ScssPhp organization, https://github.com/scssphp/
- Online documentation can be found at https://scssphp.github.io/scssphp/
- Renamed namespace from Leafo to ScssPhp
0.8.4 – June 18, 2019
- This is the final tag on the leafo/scssphp repo; PHP requirements downgraded to 5.4+ for this repo/package only.
- Support parent selector and selector functions (Cerdic)
- Improve
and/or compatibility (robocoder)
- Backslash newline fix (Netmosfera, Cerdic)
- Variable nesting/scoping issue (dleffler, Cerdic)
- Interpolation in block comments (vicary, Cerdic)
- Parser should match some utf8 symbols (ostrolucky, Cerdic)
- Incorrectly evaluating expressions within Unicode range (timknight, Cerdic)
- Problem with first comment on ampersand-nested class (blackgearit, Cerdic)
- Parsing missing http(s) protocol from
url() (sebastianwebb, robocoder)
- Add source column to thrown error message (slprime, robocoder)
- Detect invalid CSS outside of selector (JMitnik, robocoder)
0.8.3 – May 31, 2019
- grid-template-columns (gKreator, Cerdic)
-
self in selector and parse improvements (designerno1, Cerdic)
- invalid css output when using interpolation with mixins (Jasonkoolman, Cerdic)
- parser error for
@each $selector in & {...} (wesleyvicthor, Cerdic)
-
@extend in extended class or placeholder, doesn’t produce extended selector (dimitrov-adrian, Cerdic)
- weird
@extend behavior (Kenneth-KT, Cerdic)
- nested selector issue (ruby vs libsass difference) (designerno1, Cerdic)
-
pscss exhausts memory (gsmith-daed, Cerdic)
- infinite loop compiling mixin with nested
@content (exigon, Cerdic)
- nested media queries error (arnoschaefer, Cerdic)
- set upper bound for php version requirement (staabm)
- “crunched” formatter features (Daijobou, Cerdic)
- line comments for
@media statements (gajcapuder, Cerdic)
- failed interpolation in placeholder (GuidoJansen, Cerdic)
- parentheses in selector causes loss of whitespace (Netmosfera, Cerdic)
0.8.2 – May 9, 2019
0.8.1 – May 9, 2019
- grid-row & grid-column shorthand (claytron5000, Cerdic)
-
@mixin @supports @include compilation error (geoidesic, Cerdic)
-
@media expression slicing (tdutrion, Cerdic)
-
@font-face fix (bloep, Cerdic)
- mixin crash fix (LucasSbBrands, Cerdic)
- bracketed lists don’t compile (pkerling, Cerdic)
- wrap successive inline assign into one block (Cerdic)
- :not(), :nth-child() and other selectors before
@extend (STV11C, Cerdic)
- commentsSeen and phpdoc update (nextend)
0.8.0 – May 2, 2019
- Variables from inner override variables in parents (Daijobou, Cerdic)
- Bootstrap issues with
@at-root, self (l2a, Cerdic)
-
@supports inside rule (Marat-Tanalin, Cerdic)
- SourceMapGenerator Former: invalid offset (fabsn182)
- Number parsing (ange007, robocoder)
- Travis test updates (Cerdic)
- Add Bootstrap and Foundation framework tests (Cerdic)
0.7.8 – April 24, 2019
- Partial support for #rrggbbaa CSS Level 4 colors with alpha (charlymz)
- Avoid infinitely duplicating parts when extending selector (cyberalien)
- Fix rooted SCSS URIs normalized incorrectly with double slashes (evanceit)
- Coding style updates (BrainFooLong)
- Interpolation support selector (jakejohns, Cerdic)
- Improve error messages (gabor-udvari, Cerdic)
- Fix font shorthand syntax (JanST123, Cerdic)
- Peephole optimizations (oyejorge, Cerdic)
- Compiler: change some private properties/methods to protected (cyberalien)
- Fix for “continue” causing PHP 7.3 warning (darkain)
- Fix error thrown from strpos if needle (basePath) is empty (evanceit)
- Fix doc for addImportPath, should also accept callable as input (nguyenk)
- Change Base64 VLQ encoder/decoder implementation
- Generate inline sourcemap in command-line (dexxa)
- Fix backslash escape (bastianjoel)
0.7.7 – July 21, 2018
- Actually merge maps instead of concatenating (s7eph4n)
- Treat 0 as special unitless number (of2607)
- Partial fix for call() with ellipsis (gabor-udvari)
- Misc peephole optimization
0.7.6 – May 23, 2018
-
mix() alpha fix (Uriziel01)
-
transparentize() alpha sensitive to locale (leonardfischer, timelsass)
- notices when compiling UIKit (azjezz)
- faster parsing for base64 data: url()s (wout)
0.7.5 – February 8, 2018
- Fix
for loop with units (of2607)
- Fix side-effects in abs(), ceil(), floor(), and round() (jugyhead)
- Add option for custom SourceMapGenerator (dleffler)
0.7.4 – December 21, 2017
* Fat fingered cleanup; broke source maps (dleffler)
0.7.3 – December 19, 2017
- Add inline sourcemaps (oyejorge, NicolaF)
- Add file-based sourcemaps (dleffler)
0.7.2 – December 14, 2017
- Change default precision to 10 to match scss 3.5.0
- Use number_format instead of locale (Arlisaha)
0.7.1 – October 13, 2017
- Server moved to exoample/ folder
- Server::serveFrom() helper removed
- Removed .phar build
- Workaround
each() deprecated in PHP 7.2RC (marinaglancy)
0.6.7 – February 23, 2017
- fix list interpolation
- pscss: enable –line-numbers and –debug-info for stdin
- checkRange() throws RangeException
0.6.6 – September 10, 2016
- Do not extend decorated tags with another tag (FMCorz)
- Merge shared direct relationship when extending (FMCorz)
- Extend resolution was generating invalid selectors (FMCorz)
- Resolve function arguments using mixin content scope (FMCorz)
- Let
@content work when a block isn’t passed in. (diemer)
0.6.5 – June 20, 2016
- ignore BOM (nwiborg)
- fix another mixin and variable scope issue (mahagr)
- Compiler: coerceValue support for #rgb values (thesjg)
- preserve un-normalized variable name for error message (kissifrot)
0.6.4 – June 15, 2016
- parsing multiple assignment flags (Limych)
-
@warn should not write to stdout (atomicalnet)
- evaluating null and/or ‘foo’ (micranet)
- case insensitive directives regression (Limych)
- Compiler: scope change to some properties and methods to facilitate subclassing (jo)
0.6.3 – January 14, 2016
- extend + parent + placeholder fix (atna)
- nested content infinite loop (Lusito)
- only divide by 100 if percent (jkrehm)
- Parser: refactoring and performance optimizations (oyejorge)
0.6.2 – December 16, 2015
- bin/pscss –iso8859-1
- add rebeccapurple (from css color draft)
- improve utf-8 support
0.6.1 – December 13, 2015
- bin/pscss –continue-on-error
- fix BEM and
@extend infinite loop
- Compiler: setIgnoreErrors(boolean)
- exception refactoring
- implement
@extend !optional and keywords($args) built-in
0.6.0 – December 5, 2015
- handle escaped quotes inside quoted strings (with and without interpolation present)
- Compiler: undefined sourceParser when re-using a single Compiler instance
- Parser:
getLineNo() removed
0.5.1 – November 11, 2015
-
@scssphp-import-once
- avoid notices with custom error handlers that don’t check if
error_reporting() returns 0
0.5.0 – November 11, 2015
- Raise minimum supported version to PHP 5.4
- Drop HHVM support/hacks
- Remove deprecated classmap.php
- Node\Number units reimplemented as array
- Compiler: treat
! null === true
- Compiler:
str-splice() fixes
- Node\Number: fixes incompatible units
0.4.0 – November 8, 2015
- Parser: remove deprecated
show() and to() methods
- Parser, Compiler: convert stdClass to Block, Node, and OutputBlock abstractions
- New control directives:
@break, @continue, and naked @return
- New operator:
<=> (spaceship) operator
- Compiler:
index() - coerce first argument to list
- Compiler/Parser: fix
@media nested in mixin
- Compiler: output literal string instead of division-by-zero exception
- Compiler:
str-slice() - handle negative index
- Compiler: pass kwargs to built-ins and user registered functions as 2nd argument (instead of Compiler instance)
0.3.3 – October 23, 2015
- Compiler: add
getVariables() and addFeature() API methods
- Compiler: can pass negative indices to
nth() and set-nth()
- Compiler: can pass map as args to mixin expecting varargs
- Compiler: add coerceList(map)
- Compiler: improve
@at-root support
- Nested formatter: suppress empty blocks
0.3.2 – October 4, 2015
- Fix
@extend behavior when interpolating a variable that contains a selector list
- Hoist
@keyframes so children selectors are not prefixed by parent selector
- Don’t wrap
@import inside @media query
- Partial
@at-root support; with: and without: not yet supported
- Partial
call() support; kwargs not yet supported
- String-based keys mismatch in map functions
- Short-circuit evaluation for
and, or, and if()
- Compiler: getParsedFiles() now includes the main file
0.3.1 – September 11, 2015
- Fix bootstrap v4-dev regression from 0.3.0
0.3.0 – September 6, 2015
- Compiler getParsedFiles() now returns a map of imported files and their corresponding timestamps
- Fix multiple variable scope bugs, including
@each
- Fix regression from 0.2.1
0.2.1 – September 5, 2015
- Fix map-get(null)
- Fix nested function definition (variable scoping)
- Fix extend bug with BEM syntax
- Fix selector regression from 0.1.9
0.2.0 – August 25, 2015
- Smaller git archives
- Detect
@import loops
- Doc blocks everywhere!
0.1.10 – August 23, 2015
- Fix 3 year old
@extend bug
- Fix autoloader. (ext)
0.1.9 – August 1, 2015
- Adoption of the Sass Community Guidelines
- Nested selector fixes with lists, interpolated string, and parent selector
- Implement list-separator() and set-nth() built-ins
- Implement
@warn and @error
- Removed spaceship operator pending discussion with reference implementators
0.1.8 – July 18, 2015
- Online documentation moved to http://leafo.github.com/scssphp/
- Fix index() - map support; now returns null (instead of false) when value not found
- Fix lighten(), darken() - percentages don’t require % unit
- Fix str-slice() - edge cases when starts-at or ends-at is 0
- Fix type-of() - returns arglist for variable arguments
- Fix !=
- Fix
@return inside @each
- Add box support to generate .phar
0.1.7 – July 1, 2015
- bin/pscss: added –line-numbers and –debug-info options
- Compiler: added setLineNumberStyle() and ‘q’ unit
- Parser: deprecated show() and to() methods
- simplified licensing (MIT)
- refactoring internals and misc bug fixes (maps, empty list, function-exists())
0.1.6 – June 22, 2015
- !global
- more built-in functions
- Server: checkedCachedCompile() (zimzat)
- Server: showErrorsAsCSS() to display errors in a pseudo-element (khamer)
- misc bug fixes
0.1.5 – June 2, 2015
0.1.4 – June 2, 2015
- add new string functions (okj579)
- add compileFile() and checkCompile() (NoxNebula, saas786, panique)
- fix regular expression in findImport() (lucvn)
- needsCompile() shouldn’t compare meta-etag with browser etag (edwinveldhuizen)
0.1.3 – May 31, 2015
- map support (okj579)
- misc bug fixes (etu, bgarret, aaukt)
0.1.1 – Aug 12, 2014
- add stub classes – a backward compatibility layer (vladimmi)
0.1.0 – Aug 9, 2014
- raise PHP requirement (5.3+)
- reformat/reorganize source files to be PSR-2 compliant
0.0.15 – Aug 6, 2014
- fix regression with default values in functions (torkiljohnsen)
0.0.14 – Aug 5, 2014
-
@keyframes $name - didn’t work inside mixin (sergeylukin)
- Bourbon transform(translateX()) didn’t work (dovy and greynor)
0.0.13 – Aug 4, 2014
- handle If-None-Match in client request, and send ETag in response (NSmithUK)
- normalize quotation marks (NoxNebula)
- improve handling of escape sequence in selectors (matt3224)
- add “scss_formatter_crunched” which strips comments
- internal: generate more accurate parse tree
0.0.12 – July 6, 2014
- revert erroneous import-partials-fix (smuuf)
- handle If-Modified-Since in client request, and send Last-Modified in response (braver)
- add hhvm to travis-ci testing
0.0.11 – July 5, 2014
- support multi-line continuation character (backslash) per CSS2.1 and CSS3 spec (caiosm1005)
- imported partials should not be compiled (squarestar)
- add setVariables() and unsetVariable() to interface (leafo/lessphp)
- micro-optimizing is_null() (Yahasana)
0.0.10 – April 14, 2014
- fix media query merging (timonbaetz)
- inline if should treat null as false (wonderslug)
- optimizing toHSL() (jfsullivan)
0.0.9 – December 23, 2013
- fix
@for/@while inside @content block (sergeylukin)
- fix functions in mixin_content (timonbaetz)
- fix infinite loop when target extends itself (oscherler)
- fix function arguments are lost inside of
@content block
- allow setting number precision (kasperisager)
- add public function helpers (toBool, get, findImport, assertList, assertColor, assertNumber, throwError) (Burgov, atdt)
- add optional cache buster prefix to serve() method (iMoses)
0.0.8 – September 16, 2013
- Avoid IE7 content: counter bug
- Support transparent as color name
- Recursively create cache dir (turksheadsw)
- Fix for INPUT NOT FOUND (morgen32)
0.0.7 – May 24, 2013
- Port various fixes from leafo/lessphp.
- Improve filter precision.
- Parsing large image data-urls does not work.
- Add == and != ops for colors.
-
@if and @while directives should treat null like false.
- Add pscss as bin in composer.json (Christian Lück).
- Fix !default bug (James Shannon, Alberto Aldegheri).
- Fix mixin content includes (James Shannon, Christian Brandt).
- Fix passing of varargs to another mixin.
- Fix interpolation bug in expToString() (Matti Jarvinen).
0.0.5 – March 11, 2013
- Better compile time errors
- Fix top level properties inside of a nested
@media (Anthon Pang)
- Fix some issues with
@extends (Anthon Pang)
- Enhanced handling of
null (Anthon Pang)
- Helper functions shouldn’t mix with css builtins (Anthon Pang)
- Enhance selector parsing (Guilherme Blanco, Anthon Pang)
- Add Placeholder selector support (Martin Hasoň)
- Add variable argument support (Martin Hasoň)
- Add zip, index, comparable functions (Martin Hasoň)
- A bunch of parser and bug fixes
0.0.4 – Nov 3nd, 2012
-
Import path can be a function (Christian Lück).
- Correctly parse media queries with more than one item (Christian Lück).
- Add
ie_hex_str, abs, min, max functions (Martin Hasoň)
- Ignore expressions inside of
calc() (Martin Hasoň)
- Improve operator evaluation (Martin Hasoň)
- Add
@content support.
- Misc bug fixes.
0.0.3 – August 2nd, 2012
- Add missing and/or/not operators.
- Expression evaluation happens correctly.
- Import file caching and _partial filename support.
- Misc bug fixes.
0.0.2 – July 30th, 2012
- SCSS server is aware of imports
- added custom function interface
- compressed formatter
- wrote documentation
0.0.1 – July 29th, 2012 – Initial Release