Skip to content

Releases: sass/libsass

Elbow Patched Suit

01 May 02:05
Compare
Choose a tag to compare

This release is a follow up to 3.2.1 addressing some issues we felt couldn't wait for our next major release.

Features

Fixes

  • remove all traces of compact once and for all (@xzyfer, #1156)
  • add missing C-API function declarations for is_quoted (@mgreter, #1154)

Thanks!

Big thanks to @carsonmcdonald!

Patchwork quilt

30 Apr 04:45
Compare
Choose a tag to compare

This release is a follow up to 3.2.0 addressing some issues we felt couldn't wait for our next major release.

Most notably it fixes a regression in url()s that contain unconventional characters like in the cause of Google web fonts.

Features

  • expose is_quoted on Sass_String nodes in the C API (@mgreter, #1148)

Fixes

  • fix str-slice function to work with utf8 strings (@mgreter, #1047)
  • fix mathematical operations with different units (@mgreter, #1049)
  • fix error registering a custom function named compact (@mgreter, #1055)
  • fix order of @imports and comments at the top of a file (@mgreter, #1080)
  • fix trailing 0s integers being trimmed from integers with precision is 0 (@xzyfer, #1140)
  • fix missing header causing compilations issues in some environments (@xzyfer, #1144)
  • fix regression in url()s (@mgreter, #1145 #1146)

Spring Clean

27 Apr 13:09
Compare
Choose a tag to compare

Today we're marking the completion of the biggest Libsass release to date!

The core developer team kept the pace high fixing a ton of open issues, while also refactoring large amounts of code, implementing a handful of new major features, and even some performance improvements to boot!

The sheer amount of features, fixes and refactors introduced quite a few regressions delaying this release. We want to thank all the people that reported issues, patches or contributed in any other form, that made this release happen 👏

By the numbers

  • 108 closed issues
  • 357+ new sass specs (including new output type)
  • 1.047+ new assertions
  • 8% increase in code coverage

Major new features

Output styles

The way Libsass outputs the final css was refactored to make the code more modular. This allowed us to add the missing compact and expanded output styles. This refactor also allows us to produce more accurate nested and compressed output styles (@mgreter, #910).

We updated our spec suite to support all output styles which added nearly 3,400 runs and 10,000 new assertions.

Strings and interpolation

String and interpolation parsing and evaluating was refactored too, which brings Libsass even closer to Ruby Sass in terms of output styles now (@mgreter, #847).

Sourcemaps

The refactoring work on strings, interpolations and output styles made it a lot easier to guarantee the correctness of the generated sourcemap files (@mgreter, #879)

Directive bubbling

@media, @supports, @keyframes directives (and more!) are correctly bubbled so you always get CSS 2.0 compliant output.

This means @media rules will be "combined" with all bubbled up @media rules to better reflect the Ruby Sass behaviour (@xyfer, #800, #821).

@at-root

Full support for the @at-root directive has been implemented (@xyfer, #799, #859).

& in SassScript

Partial support for & in SassScript (@ekskimn, #966, #548)

& can now be used a css property or passed as an argument to functions and mixins.

Variable scope

Full support for !global variable scoping has been implemented (@mgreter, #986, #990)

New experimental feature

This release contains initial (and experimental) support to load 3rd party plugins in the form of precompiled .dll (win) or .so (nix) files. We really would like to see some people playing around with this new toy. It could help us determine what we actually want to do with this technology! (@mgreter, #919)

Breaking changes

  • Change in sass_make_data_context - libsass now really takes memory ownership (#925)
  • Hard deprecated image-url and compact functions (throw errors until removed) (#834, #835)

Changes in C-API

  • Implement error status for importer entries (#926)
  • Breaking change in sass_make_data_context (#925)
  • Add char* indent and char* linefeed to options (#787)
  • Add string_list* plugin_paths to options (#919)
  • Add char* plugin_path to options (#919)
  • Add char* source_map_root to options (#926)
  • Add char* error_text to options (#915)
  • Add sass_option_push_plugin_path function (#919)
  • Remove char* image_path from options (#834)
  • A few source files have been added and some removed

Improved spec tests

Due to the new support for all output styles, the spec tests have been enhanced to test all four output styles. The tests are now much more white-space sensitive than before, as only multiple line-feeds are normalized. This should ensure that libsass gets and stays closer to the exact output of ruby sass in the future.

Minor features

Fixes

Known issues

  • Still some @extends edge cases - (#1029, #1063, #1091)
  • Interpolating & in selectors with @at-root produces incorrect output - (#1043)
  • Interpolating & in attribute selectors doesn't work - (#1016)

Thanks!

A huge thanks to everyone who reported issues 🔆 !!
Honourable mentions to @am11, @anlutro, @asottile, @candid, @chriseppstein, @ekskimn, @hcatlin, @hugogiraudel, @lunelson, @mgreter, @mmaxim, @npiguet, @rodneyrehm, @saper, @Snugug and @xzyfer for their contributions to Libsass and Sass spec that made this release possible.

What's next?

With this release we've hit 97% feature parity with Ruby Sass according to sass-compatibility.github.io.

There are no signs of slowing down! We already have a bunch of features queued for 3.2.1.

Spring Clean (beta.6)

20 Apr 01:11
Compare
Choose a tag to compare
Spring Clean (beta.6) Pre-release
Pre-release

This is the sixth 3.2.0 beta release and the third release candidate.

The last synced beta round with node-sass (thanks to @am11) brought up a few regressions as expected. It helped us to improve the spec tests by exposing previously untested code parts (notable mention was the lack of any else if spec test). Beside that we also fixed quite a few other bugs on the way.

Bugfixes

Known issues

  • Variable interpolation causes additional string escaping (#1115)
  • Erroneous space inserted when using IE property hack (#1098)

Thanks!

This release would not be possible without the hard work of @candid, @mgreter, @saper and @xzyfer.

We already have a bunch of features queued for 3.2.1 and plan to release 3.2.0 in one or two weeks; if we don't get any blocking issues reported in the meantime! So stay tuned and keep testing 🕐

Spring Clean (beta.5)

05 Apr 07:00
Compare
Choose a tag to compare
Spring Clean (beta.5) Pre-release
Pre-release

This is the fifth 3.2.0 beta release and the second release candidate.

Features

Bugfixes

Spring Clean (beta.4)

30 Mar 00:21
Compare
Choose a tag to compare
Spring Clean (beta.4) Pre-release
Pre-release

This is the fourth 3.2.0 beta release and the first release candidate for 3.2.0.

This beta brings the last and probably biggest chunk of breaking changes to the C-API (only for custom functions and importers). Hopefully the right step to stabilize those APIs. Adds support for multiple importers and a new experimental feature called custom headers, which works very similar to custom importers. It all evolved from a ticket named custom mixins, which can now be achieved by using custom headers. For a complete list of C-API changes and how to update your code, consult PR #1000.

Features

Bugfixes

Credits

We are looking forward to make the 3.2.0 release happen soon 🚀 !
Thanks to all beta testers and specially to the node-sass team 🐝 !

Spring Clean (beta.3)

27 Mar 22:59
Compare
Choose a tag to compare
Spring Clean (beta.3) Pre-release
Pre-release

This is the third 3.2.0 beta release.

It includes two new major features, that have not been available before! @ekskimn tackled & support in SassScript while @mgreter implemented correct variable scoping! Beside these features, we have merged a lot of bugfixes and performance improvements!

Features

Bugfixes

Credits

Special shout-out to @ekskimn for his great work on & support and to @hugogiraudel for the extensive spec-tests on variable scoping! We also want to thank @asottile, @rodneyrehm and @saper for their contributions. Another release brought to you by @mgreter and @xzyfer 🌅

Spring Clean (beta.2)

18 Mar 06:52
Compare
Choose a tag to compare
Spring Clean (beta.2) Pre-release
Pre-release

This the second 3.2.0 beta release.

Features

Fixes

Thanks

This release is brought to you by the hard work of @mgreter and @am11.

Spring Clean (beta.1)

12 Mar 04:09
Compare
Choose a tag to compare
Spring Clean (beta.1) Pre-release
Pre-release

The core developer team kept the pace high over the last weeks and fixed a ton of open issues, while also refactoring an awfull lot of code, plus implementing new and missing features. We want to thank all the people that reported issues, patches or contributed in any other form, that made this release happen 👏

By the numbers

  • 103 closed issues
  • 67+ new sass specs
  • 282+ new assertions
  • 22% less skipped specs
  • 8% increase in code coverage

Major new features

Output styles

The way Libsass outputs the final css was refactored to make the code more modular. This allowed us to add the missing compact and expanded output styles. This refactor also allows us to produce more accurate nested and compressed output styles (@mgreter, #910).

Strings and interpolation

String and interpolation parsing and evaluating was refactored too, which brings Libsass even closer to Ruby Sass in terms of output styles now (@mgreter, #847).

Sourcemaps

The refactoring work on strings, interpolations and output styles made it a lot easier to guarantee the correctness of the generated sourcemap files (@mgreter, #879)

Directive bubbling

@media, @supports, @keyframes directives (and more!) are correctly bubbled so you always get CSS 2.0 compliant output.

This means @media rules will be "combined" with all bubbled up @media rules to better reflect the Ruby Sass behaviour (@xyfer, #800, #821).

@at-root

Full support for the @at-root directive has been implemented (@xyfer, #799, #859).

New experimental feature

This release contains initial (and experimental) support to load 3rd party plugins in the form of precompiled .dll (win) or .so (nix) files. We really would like to see some people playing around with this new toy. It could help us determine what we actually want to do with this technology! (@mgreter, #919)

Breaking changes

  • Change in sass_make_data_context - libsass now really takes memory ownership (#925)
  • Hard deprecated image-url and compact functions (throw errors until removed) (#834, #835)

Changes in C-API

  • Implemented error status for importer entries (#926)
  • Breaking change in sass_make_data_context (#925)
  • Added char* indent and char* linefeed to options (#787)
  • Added string_list* plugin_paths to options (#919)
  • Added char* plugin_path to options (#919)
  • Added char* source_map_root to options (#926)
  • Added char* error_text to options (#915)
  • Removed char* image_path from options (#834)
  • Added sass_option_push_plugin_path function (#919)
  • A few source files have been added and some removed

Improved spec tests

Due to the new support for all output styles, the spec tests have been enhanced to test all four output styles. The tests are now much more white-space sensitive than before, as only multiple line-feeds are normalized. This should ensure that libsass gets and stays closer to the exact output of ruby sass in the future. Beside we further improved the specs with new test:

  • Added 10 color related function spec tests (@mgreter, #911)
  • Added 185 generated tests for interpolation parsing (@mgreter)

Other fixes and features

Thanks!

A huge thanks to everyone who reported issues 🔆 !!
Honourable mentions to @am11, @anlutro, @chriseppstein, @hcatlin, @hugogiraudel, @lunelson, @mgreter, @mmaxim, @npiguet, @Snugug and @xzyfer for their contributions to Libsass and Sass spec that made this release possible.

Bulleit Bottle

02 Jan 02:43
Compare
Choose a tag to compare

Happy new year! What better way to start the year than with a new Libsass release!

Capitalising on the 3.0 momentum @mgreter and @xzyfer, with help from the Libsass community, have been hard work on this massive release!

Libsass 3.1 brings us closer than ever to Sass feature parity! We've even got a back log of completed features ready to go for the next release!

I'd like to give a shoutout to node-sass team for helping us release and test our RC releases!

Features

  • implemented @debug - @mgreter
  • implemented @error - @mgreter
  • implemented inspect() - @mgreter
  • implemented feature-exists() - @xzyfer
  • implemented unique-id() - @xzyfer
  • implemented random() - @xzyfer
  • implemented negative @for loops - @mgreter
  • implemented the not operator - @xzyfer
  • implemented nth() for maps - @xzyfer
  • implemented custom functions and importers - @mgreter
  • implemented C API to fetch compiled version - @mgreter
  • implemented decrementing in for loops - @mgreter
  • improvements to the static value look ahead parser - @xzyfer
  • improvements handling of string quotes - @mgreter
  • added support for colors rebeccapurple and transparent - @mgreter
  • added/improved build scripts for windows - @mgreter
  • added AppVeyor for windows CI builds - @mgreter
  • added support for converting angle units - @mgreter
  • significant speed boost to map-get() - @xzyfer
  • better Windows compilation support - @mgreter @am11
  • emit @charset "UTF-8" when required - @mgreter
  • major updates to the C API - @mgreter

Fixes

  • no longer allow concatenating with null - @xzyfer (#698)
  • improved handling of colors - @mgreter (#558)
  • better support for BEM style selectors - @xzyfer (#738)
  • better support for IE properties - @mgreter (#683)
  • better support of interoplants in selectors - @xzyfer (#641)
  • normalize quotes map keys in keywords() - @xzyfer (#721)
  • normalize quotes in str-slice and str-insert - @xzyfer (#763)
  • normalize decimal output - @mgreter @xzyfer (#550, #623)
  • fixed allowing redefinition of reserved functions - @xzyfer (#713)
  • fixed keywords() crashing when no vararg is present - @xzyfer (#672)
  • fixed default arguments for function arguments - @mgreter (#708)
  • fixed colors and number as map keys - @xzyfer (#652, #534)
  • fixed incorrect content type for embedded sourcemaps - @xdissent (#723)
  • fixed evaluation of negative variables - @xzyfer (#344)
  • fixed @return sometimes not exiting functions - @xzyfer (#736)
  • fixed an edge case with str-slice - @xzyfer (#762)
  • fixed parsing of assignments with !default and !global flags - @xzyfer (#759)
  • fixed !default assignments not overriding null values - @xzyfer (#740)
  • fixed allowing maps to be instantiated with duplicate keys - @xzyfer (#628)
  • fixed empty css blocks sometimes being outputted - @xzyfer (#659)
  • fixed some cases where number comparisons would fail - @xzyfer (#590)
  • fixed crashes when multiple semicolons were encountered - @xzyfer (#502)
  • fixed a bug with maps and @each with only on variable - @xzyfer (#784)
  • fixed a bug with string interpolation in url()s - @mgreter (#644)
  • fixed some bugs with the C API - @mgreter (#776)

Documentation

This release saw a big increase in the amount of available documentation thanks to @mgreter and @drewwells!!

Sass spec

Sass spec got a major update bringing it up to date with Sass 3.4 thanks to @hcatlin and @xzyfer.

Know issues

  • !global is parsed but the scoping rules aren't respected - (#613)
  • nested media queries aren't combined - (#614)
  • operations in brackets like (1/2) are sometimes not treated as numbers - (#442, #590)
  • still some @extends edge cases - (#316, #317, #592)
  • still some sourcemaps issues - (#324)

Huge thanks to everyone that reported bugs, wrote specs and submitted patched. Honourable mentions to @hugogiraudel, @xdissent, @drewwells, @jakob-e, @lunelson, @am11, @hcatlin, @mgreter and @xzyfer for their multiple contributions which made this release possible!