Skip to content

Releases: sass/libsass

Toronto

22 Dec 01:11
7037f03
Compare
Choose a tag to compare

Maintenance release to fix most urgent issues in LibSass, as reported in 2023.
I wish everyone "schöne Weihnachten" and a good new year for 2024!

Bern

21 May 00:57
f6afdbb
Compare
Choose a tag to compare

Maintenance release

Probably the last 3.6.x release until LibSass 4.0 gets out. Estimates to when that version will come out and when it will reach your favorite implementation is still unknown, but will certainly happen at some point in the future. This release improves once more the previously crippled complex selector extend functionality, and I hope this addresses all remaining issues without breaking any compatibility to latest Sass specs. Additionally it fixes an issue with the initialization of our random number generator on newer AMD CPUs and some improvements with source-maps and unicode characters, plus a few other bug-fixes here and there.

Changelog

  • Fix extend edge case going endlessly (@mgreter #3081)
  • Fix source-maps and how we count unicode characters (@mgreter #3096)
  • Fix seed generator if std::random_device fails (@benbucksch #3151)
  • Fix url() containing exclamation mark causing an error (#2880)
  • Fix Offset initialization when end was not given (@ihsinme #3131)
  • Fix obvious backporting error in pseudo extend (@mgreter #3136)
  • Fix obvious identical subexpressions in op_color_number (@ariccio #3148)
  • Fix edge case regarding unit-less number equality as object keys (@mgreter #3095)
  • Revert compound re-ordering for non extended selectors (@mgreter #3100)
  • Prevent compiler warning about unnecessary copy (@acocuzzo #3129)
  • Replace Travis CI with GitHub Actions (@mgreter #3150)

Berlin

01 May 11:24
8d312a1
Compare
Choose a tag to compare

Maintenance release

This release fixes regressions introduced due to dart-sass code back-ports. Additionally a lot
of edge-case crashes have been addressed and we now ensure that compound selectors are
always printed in the correct order to form valid css selectors. Some improvements from the
ongoing LibSass refactoring have been back-ported and new optimized memory allocator
has been added, although for the time being it is disabled by default (compile time option).
Finally loaded sources are now handled by reference counted objects, so we can more easily
guarantee the lifetime of this information for error reporting purposes without making copies.

Moving toward dart-sass

First I hope this version finally fixes all regressions I introduced previously and I apologize for the
disturbance it may have brought to anybody. The compound selector extend changes may still
make your build very slow. The emitted warning should be correct now and if you get one,
chances are high that LibSass will output "unnecessary" big selectors. I will look into a solution for
next maintenance release to at least be able to detect this situation to avoid "endless" compilations.

New deprecation warning

This version will emit a warning if you declare a global variable for the first time inside a nested
scope via the !global option, e.g. the variable doesn't yet exist on the global scope. Sass will
enforce you to declare your global variables explicitly on the global scope first in the future.

C-API change

We added back the definition and implementation related to getting information about the
plugin_paths, since we already had those mentioned and documented in the wiki.

Changelog

Outlook for LibSass 4.0

I'm already working on a refactoring since close to one year. Certain parts are already in this version
and have been the reason for certain regressions (the extend and parenthesizing part). The work in
progress already has back-ported the parser bits from dart-sass, meaning we can get rid of sass2scss
and have full support for css parsing as dart-sass has. Cssize step was also incorporated fully into the
evaluation phase. AST tree is improved to differentiate between nodes before and after evaluation
(sass nodes evaluate to css nodes). Overall the code uses a lot more C++11 features, but I haven't yet
decided what the minimum requirements will be. I already optimized most cases for move semantics
whenever possible. Overall it seems one can expect at least a 10 fold performance improvement.
The C-API will also change quite substantially, although the basic approach to have functions for
everything will stay the same. But instead of marshaling different structs internally it will use the
C++ object directly. I hope to have this ready for a beta released by end of this year, but it will
not yet contain the new @use import feature from sass though. Maybe somebody wants to
sponsor this feature to be added to LibSass sooner than later? 😃

Manchester

04 Nov 00:19
e1c16e0
Compare
Choose a tag to compare

Maintenance release

This release fixes issues introduced with 3.6.2 and the extend backport.
Also fixes an issue with memory lifespan of error_src on the C-API.
Additionally some edge case crashes have also been addressed.

Changelog

London

06 Oct 01:06
4da7c4b
Compare
Choose a tag to compare

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.

Monaco

16 Jun 15:54
4d229af
Compare
Choose a tag to compare

Minor internal fixes, and build and portability improvements.

Changelog

[0d08be9] travis: add gcc-8 to CI (#2889) (@ahorek)
[21d2d16] [build] enable concurrent compilation (#2888) (@ahorek)
[04f59a5] Remove the link to ast_factory.hpp from Visual C++ project files (@Taritsyn)
[5ebc5d5] [build] add support of Visual Studio 2017 and 2019 to the Visual C++ project file (#2891) (@Taritsyn)
[1edc51c] Makefile: Fix STATIC_LIBSTDCPP support (@glebm)
[a46a281] Remove abspath from native Makefile (@mgreter)
[0328de2] Read files using for better portability (@glebm)
[dfe23ac] Add comparison operators for SharedImpl, fix bugs (@glebm)
[0bab610] VS2013 noexcept workaround (@glebm)

Luxembourg

18 May 03:48
8d220b7
Compare
Choose a tag to compare

A new minor version bump, a release new naming scheme, and new core contributor. Welcome @glebm and thank you for all your invaluable contributions to this huge release!

Changelog

[0dad856] Add functions utility compile unit (@mgreter)
[d828027] Move macros and helpers to fn_utils (@mgreter)
[c07f4a3] Protect some header defines from redefining (@mgreter)
[8b74ede] Move number functions to own compile unit (@mgreter)
[83f641c] Move selector functions to own compile unit (@mgreter)
[37cfb4c] Move color functions to own compile unit (@mgreter)
[ac4e48b] Move string functions to own compile unit (@mgreter)
[4d1e036] Move list functions to own compile unit (@mgreter)
[47354ad] Move map functions to own compile unit (@mgreter)
[c1b3676] Move misc functions to own compile unit (@mgreter)
[7cb696a] Rename stacks to use shorter typedefs (@mgreter)
[aa7386f] Cleanup CRTP implementation (@mgreter)
[efc0331] Rename ast2c and move c2ast to own compile unit (@mgreter)
[064d6de] Move AST memory macros to macro header (@mgreter)
[10c25da] Make Value inherit from PreValue (@mgreter)
[0599b2e] Remove obsolete parameters (@mgreter)
[205dc65] Remove Function_Call_Schema class (@mgreter)
[4c34d16] Remove obsolete in_selector flag (@mgreter)
[bbfcf49] Add distinct Parent_Reference class for values (@mgreter)
[72e9a04] Fix parsing of colors (remove dynamic cast on eval) (@mgreter)
[025dc4e] Pass traces instead of full context to bind (@mgreter)
[0c5e27c] Clean up get_arg_m in fn_utils (@mgreter)
[37e15bb] Change String_Schema to only hold PreValue objects (@mgreter)
[d0b6338] Clean up function macros and force to return PreValues (@mgreter)
[e0321a0] Enhance stacktrace to report column numbers (@mgreter)
[6e79ff7] Add display name for color to debugger (@mgreter)
[090bab3] Add get method for environment class (@mgreter)
[8f0bdc7] Remove obsolete function constructor arguments (@mgreter)
[09b36b0] Add EnvStack typedef (@mgreter)
[5564ab3] Replace direct references with methods (@mgreter)
[91dd504] Adjust output/error for modulo zero operation (@mgreter)
[e5421e6] Adjust output/error for modulo zero operation (@mgreter)
[f67b9c3] Fix automake build if sassc is missing (@mgreter)
[0dee7ad] Upgrade sass2scss to version 1.1.2 (@mgreter)
[1198007] Allow colors in @at directives (@mgreter)
[5120bdb] Fix edge case converting achromatic colors to HSL (@mgreter)
[5f94d71] Delay interpolated expression as in regular CSS (@mgreter)
[69a0dfa] Fix automake build if sassc is missing (@mgreter)
[ca89d73] Upgrade sass2scss to version 1.1.2 (@mgreter)
[b0077d6] Allow colors in @at directives (@mgreter)
[2807587] Fix edge case converting achromatic colors to HSL (@mgreter)
[046b32a] Delay interpolated expression as in regular CSS (@mgreter)
[07222d6] Fix parsing of colors (remove dynamic cast on eval) (@mgreter)
[c0a5a21] Allow "!" in custom property values (@xzyfer)
[77f1323] Allow "!" in custom property values (@xzyfer)
[facbab8] Include Haskell bindings in implementations list (@jakubfijalkowski)
[03c99f5] Fix ordering in implementations list (@jakubfijalkowski)
[b866ad5] Fix link to node-sass implementation (@xzyfer)
[b9662fc] Separate out deprecated import file extensions (@xzyfer)
[fd989f6] Add a deprecation warning for @import's that resolved .css files (@xzyfer)
[3af837c] Add support for index imports (@xzyfer)
[e690924] Add configuration for supporting additional extensions as .scss (@xzyfer)
[1da6264] Remove raw css imports (@xzyfer)
[f315c93] Inline out_of_memory macro (@thatguystone)
[5539920] Inline out_of_memory macro (@thatguystone)
[17a83f6] Emit transparent colors as rgba(0, 0, 0, 0) (@xzyfer)
[e28ebaf] Fix merging of nested media queries with not (@xzyfer)
[0e6d8a6] Fix merging of nested media queries with not (@xzyfer)
[62effe1] Fix regression in parsing selector with trailing escaped colon (@xzyfer)
[5ff5859] Fix regression in parsing selector with trailing escaped colon (@xzyfer)
[c287f31] Emit transparent colors as rgba(0, 0, 0, 0) (@xzyfer)
[6fe62e9] Add configuration for supporting additional extensions as .scss (@xzyfer)
[27d5026] Remove raw css imports (@xzyfer)
[137a4dd] Mentioned SharpScss and LibSassHost in implementations.md (@tompazourek)
[9266d26] Update compatibility section of the read me (@xzyfer)
[0bc35e3] Fix segfault on empty custom properties (@xzyfer)
[e351212] Fix segfault on empty custom properties (@xzyfer)
[d91b4bf] Include Haskell bindings in implementations list (@jakubfijalkowski)
[f5b854f] Fix ordering in implementations list (@jakubfijalkowski)
[6036d5d] Fix link to node-sass implementation (@xzyfer)
[8a6ba8f] Mentioned SharpScss and LibSassHost in implementations.md (@tompazourek)
[1e52b74] Revert "Upgrade sass2scss to version 1.1.2" (@xzyfer)
[95011cd] Add deprecation messages for color arithmetic (@xzyfer)
[d18fd47] Add deprecation messages for color arithmetic (@xzyfer)
[4254054] Fix explosion of parent selectors in selector-nest (@mgreter)
[3a81850] Include in operation.hpp (@yboulkaid)
[5ca21ca] Adds another Nim implementation (@dom96)
[45f5087] Update Readme.md (@mhussa)
[df8152d] Remove legacy workaround for parsing modulo operator (@xzyfer)
[b3374e3] Fix handling of unclosed interpolant in url (@xzyfer)
[15bdef9] Create CODE_OF_CONDUCT.md (@nschonni)
[33718b0] Revert "Remove raw css imports" (@xzyfer)
[55abf76] Revert "Add configuration for supporting additional extensions as .scss" (@xzyfer)
[9a211eb] Revert "Add a deprecation warning for @import's that resolved .css files" (@xzyfer)
[19fd2bf] Revert "Separate out deprecated import file extensions" (@xzyfer)
[79c16c9] Revert "Remove raw css imports" (@xzyfer)
[ea0e397] Revert "Add configuration for supporting additional extensions as .scss" (@xzyfer)
[210fdff] Remove legacy workaround for parsing modulo operator (@xzyfer)
[c0a6cf3] Fix handling of unclosed interpolant in url (@xzyfer)
[38f4c36] Fix possible bug with handling empty reference combinators (@xzyfer)
[0fa69a5] Fix -Wmissing-declarations for gcc < 7 (@xzyfer)
[fbdcc37] Support hex colors with alpha channels (@xzyfer)
[edd29a2] Make plugin tests run with a precision of 5 (@xzyfer)
[ad30194] Update make CC and CXX defaults for wider compat (@glebm)
[0331b61] Update link to perl-libsass implementation (@mgreter)
[924cb48] Fix -Wmissing-declarations for gcc < 7 (@xzyfer)
[7459d19] Support hex colors with alpha channels (@xzyfer)
[9ce7a7f] Fix possible bug with handling empty reference combinators (@xzyfer)
[39e3087] Update plugin test script to use precision 5 (@xzyfer)
[3066614] Makefile: Use order-only deps for directories (#2728) (@glebm)
[5d46c6f] Use precision 10 by default (#2730) (@glebm)
[e04f200] Set default precision to 10 in Sass_Output_Options (@glebm)
[5baf0fa] Docs: Profiling (@glebm)
[2ebf465] SharedPtr: Remove explicit detached bool (@glebm)
[a8273fc] Remove -undefined error, --no-undefined LDFLAGS (@alyssais)
[392ffe1] SharedPtr: More cleanup (@glebm)
[f477cd6] Makefile cleanup (@glebm)
[ab03dc0] Disable failing coverage check (@xzyfer)
[d225a09] Fix ignored :not(multiple, selectors) (@glebm)
[d09d09d] Actually fix coveralls failures (@xzyfer)
[c87a63e] Use -std=c++11 (@glebm)
[ec249e4] AST: Add final specifier to final classes (@glebm)
[3364372] Fix selector unification ordering (@glebm)
[3e60b12] Add and use a unification_order method (@glebm)
[f442421] Fix memory leak introduced in March (@glebm)
[430315a] Fix memory leak in resolve_parent_refs (@glebm)
[fdff442] Revert "SharedPtr: More cleanup" (@glebm)
[fa93c5a] Revert "SharedPtr: Remove explicit detached bool" (@glebm)
[5e58c35] AST: Fix clang warnings, add const, remove virtual (@glebm)
[6c8285b] .travis.yml: sudo: required for ptrace support (@glebm)
[514c9c7] Fix 2 more memory leaks (@glebm)
[546f8e9] Selector unification: use == for comparison (@glebm)
[9df83e1] Do not use 0 for initializing SharedImpl (@glebm)
[0df09e6] Add /plugins/ to .gitignore (@glebm)
[4589d07] Fix a memory leak in rgba_2 (@glebm)
[754b338] Travis ASan: Use default Travis clang (v5.0) (@glebm)
[122d9f3] Clean up Selector_List::operator== (@glebm)
[930857c] Fix heap-use-after-free in Parser error handling (@glebm)
[8f40dc0] Optimize line_begin/end search in handle_error (@glebm)
[534065c] MSVC warning and fix #2627 (@glebm)
[84eaca2] Add a copy constructor to InvalidSass exception (@glebm)
[2494f0e] Minor fix: Reserve lists with correct sizes (@glebm)
[a8bc4d6] SharedPtr improvements (@glebm)
[5c2501e] Run C++ unit tests on CI (Makefile-only) (@glebm)
[c93f058] Disallow parent selectors in selector-append (#2760) (@glebm)
[eb15533] Fix memory leak in parse_ie_keyword_arg (@glebm)
[c04f5d7] Implement passing arguments to @content (@xzyfer)
[2a4935c] Clean up Compound_Selector::operator== (@glebm)
[280ffd8] Fix crash in selector-append('.x~~', 'a') (@glebm)
[b09e813] Refactor: Add starts/ends_with functions (@glebm)
[2cabd11] Update utfcpp to v2.3.6 (@glebm)
[7634b1c] Remove debugger from fn_miscs (@mgreter)
[bfece18] Move AST selectors into own compile units (@mgreter)
[c1990ed] Move AST values into own compile units (@mgreter)
[bfb02ef] Fix clang warnings (@mgreter)
[7a29ca8] Cleanup and fix selector compare operators (@mgreter)
[80fd573] Rename element to type selector and type enums (@mgreter)
[41e0775] Replace to_string compare with == object compare (@mgreter)
[058e763] Split AST declarations and definitions (@mgreter)
[98aede5] Move AST supports into own compile units (@mgreter)
[93c62e8] Split AST declarations and definitions (@mgreter)
[5d50c96] Cleanup AST values compare operators (@mgreter)
[be88fdc] Fix clang warnings (@mgreter)
[49d2e92] Refactor loops i...

Read more

Vroom vroom

11 Nov 04:47
Compare
Choose a tag to compare

Breaking

Revert changes to raw CSS @imports

Due to unintended disruption this change has been reverted in favour of a language level revision to CSS imports to be implemented at a future date.

Note to implementors: this removes the sass_option_push_import_extension API added in 3.5.4. Apologies for the disruption.

Deprecations

  • Add deprecation messages for colour arithmetic (@xzyfer, #2414)

Features

  • Support hex colors with alpha channels (@xzyfer, #2674)
  • Add a sass_option_push_import_extension C-API (@xzyfer, #1964)

Fixes

  • Fix segfault in handling modulo operator (@xzyfer, #2659)
  • Fix handling of unclosed interpolant in url (@xzyfer, #2661)
  • Fix possible bug with handling empty reference combinators (@xzyfer, #2665)
  • Fix -Wmissing-declarations for gcc < 7 (@xzyfer, #2690)

Maloo

25 Apr 05:51
Compare
Choose a tag to compare

Fixes

Ace

23 Apr 12:43
Compare
Choose a tag to compare
Ace

Breaking

This breaking change was unintentionally released early. However since this is the desired behaviour moving forward we're going to roll-forward with it.

Raw CSS @imports

This is a non-standard, and confusion feature. Implementors can now
opt into supporting @importing additional file extensions with
sass_option_push_import_extension.

An @import that resolves to a .css file will produce a deprecation
warning. This deprecation messaage will be removed in the upcoming 3.6
release.

DEPRECATION WARNING on line 1, column 8 of /libsass/test.scss:
Including .css files with @import is non-standard behaviour which will be removed in future versions of LibSass.
Use a custom importer to maintain this behaviour. Check your implementations documentation on how to create a custom importer.

(@xzyfer, #2613, #2615)

Community

Features

Fixes