Skip to content

@mgreter mgreter released this Oct 6, 2019

Dart-Sass extend backport

Although a minor release, it's a big step forward for the LibSass internals. As it turns out, porting code from dart to c++ is much simpler than porting ruby code to c++. It took me about 200h to backport the complete extend logic from dart-sass to LibSass (around 8k lines of code). This marks a big milestone in the development of LibSass, as we now again have an implementation that is easy to patch as dart-sass gets improved. The old extend code-path in LibSass took a very ugly route where the internal stuctures were converted back and forth in order to match a very old ruby sass implementation. LibSass now also extends selectors during the main evaluation phase as dart-sass does; before it was a specific phase on its own, similar to ruby sass; which gives us around 20% better overall performance, depending on how extend heavy your code base is.

Given the nature of such a big and fundamental change, I do expect some regressions, but I hope that we have covered most (if not all) cases in our spec tests, so it will hopefully be a seamingless experience for all users. Therefore we did not increment the major version as it should behave the same as before (and fix most previously failing cases).

For further reading see #2908

Changelog

Credits

Special shout-out 🎙 goes to @jquense 👏 and @zwass 👏 for their first time contributions 🚀, thanks ! Also to our reoccurring contributors @nschonni and @glebm 👍. I hope you enjoy this release and fingers crossed I didn't mess up anything too serious 🐛 🏥 . Sincerely your maintainers, @mgreter and @xzyfer

Amendments

This version of libsass will emit a warning for future deprecated compound extends. Unfortunately I poorly ported the regarding code back to libsass and therefore the actual warning is not very useful for now. This will be fixed in next version. Sorry for the confusion this might produce.

Assets 2
You can’t perform that action at this time.