rails / sprockets

Rack-based asset packaging system
MIT License
947 stars 788 forks source link

Avoid using `Sprockets::Utils.module_include` in `SasscProcessor` #798

Closed ntkme closed 8 months ago

ntkme commented 9 months ago

Previously in #759 a mutex lock was added to Sprockets::Utils.module_include to make it thread safe. For sass it was the only option, because Sass::Engine does not allow user to configure where functions are loaded from.

However, for SasscProcessor we don't have to suffer from this lock, because SassC::Engine's API allows user to directly specify a user defined Module for functions:

https://github.com/sass/sassc-ruby/blob/4fce2b635ca5d616a8b1381c64846410bc785ea4/lib/sassc/engine.rb#L19

So instead of including @functions into SassC::Script::Functions, we can do the other way around, which is to include SassC::Script::Functions into @functions and then pass @functions into the engine. This way we have thread safety without the mutex lock.

cc @chadlwilson @rafaelfranca

ntkme commented 8 months ago

Aborting this PR as the same feature has been merged into dartsass-sprockets.