-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Closed
Description
This issue will track the top level tasks that are required for Compass to be ported to libSass. When this issue is closed, we will release Compass 2.0.
Vision
Compass 2.0 will not use ruby and will run libSass for compilation by default. However, It will allow you to opt-in to using ruby sass.
TODO
-
libcompass
- a C++ library that can be used to compile a Sass file in a Compass-compatible Sass environment. -
compass
compiled binaries for mac, linux, and windows that implements a large subset of the commands supported by the ruby compass command including a watcher and sprite generator. - ruby ecosystem - Most compass extensions do not need to use ruby for much more than to self-register themselves. However, some do use ruby to define Sass functions. Obviously, this won't work going forward as it is implementation specific and it is not feasible to embed a ruby interpreter into libsass as most extensions expect not just a ruby language, but the ruby sass implementation specifics to be present. I think Lua may be a better language to allow Sass extensions in. It is trivial to embed a lua interpreter in both ruby and c++ and to creating bidirectional bindings of the public API that we want to expose to that environment.
- New config format. Either Sass introduces an extensible config format or compass creates one that is portable between both ruby and libsass. (probably start with compass and then if we like what we make, migrate that to sass as a standard. See: Project configuration for Sass sass/sass#1155)
- Decide if compass 2.0 should be written in Rust instead of C++ and simply use rust/c bindings to call out to libSass.
- Ensure that libSass is feature compatible with the features compass uses or dumb compass down to make it so. Especially around the importer architecture which in libsass seems to assume sass files on disk.
- Installer & upgrader - get updates to the binaries as well as the sass files and caniuse data.
Metadata
Metadata
Assignees
Labels
No labels