{"action":"created","issue":{"url":"https://api.github.com/repos/sass/sass/issues/1608","labels_url":"https://api.github.com/repos/sass/sass/issues/1608/labels{/name}","comments_url":"https://api.github.com/repos/sass/sass/issues/1608/comments","events_url":"https://api.github.com/repos/sass/sass/issues/1608/events","html_url":"https://github.com/sass/sass/issues/1608","id":54915730,"number":1608,"title":"Standard Extension Language","user":{"login":"chriseppstein","id":1839,"avatar_url":"https://avatars.githubusercontent.com/u/1839?v=3","gravatar_id":"","url":"https://api.github.com/users/chriseppstein","html_url":"https://github.com/chriseppstein","followers_url":"https://api.github.com/users/chriseppstein/followers","following_url":"https://api.github.com/users/chriseppstein/following{/other_user}","gists_url":"https://api.github.com/users/chriseppstein/gists{/gist_id}","starred_url":"https://api.github.com/users/chriseppstein/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/chriseppstein/subscriptions","organizations_url":"https://api.github.com/users/chriseppstein/orgs","repos_url":"https://api.github.com/users/chriseppstein/repos","events_url":"https://api.github.com/users/chriseppstein/events{/privacy}","received_events_url":"https://api.github.com/users/chriseppstein/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":8,"created_at":"2015-01-20T17:49:37Z","updated_at":"2015-01-30T23:31:01Z","closed_at":null,"body":"Sass extensions are currently ruby based. This was all well and good while we only had one implementation but with libsass in the mix, there is no way to introduce sass extensions that can work everywhere. The ruby extensions syntax is highly dependent on the specifics of the ruby implementation. I see a couple options:\r\n\r\n1. Define a way to create extensions that support implementation specific code. For libsass this would be a shared object file and some way to initialize it. For ruby this would be much like what we have right now.\r\n\r\n2. Choose a highly interoperable language for writing sass extensions and a common API in that language that all implementations would need to support. The most likely candidate for this is probably Lua. It is lightweight, fast, and fairly easy to write code in.\r\n\r\nIn addition to the extension support, I think it would be good for code that depends on extensions to make that dependency explicit using some special directive in the sass file itself. This could be as simple as letting `@import` (or some sass 4.0 equivalent) refer to sass \"extensions\" (since conceptually they define functions not unlike a sass file could). Or we could introduce some new directive for this.\r\n\r\n/cc @akhleung @hcatlin @xzyfer\r\n\r\nThis is a major hurdle for making compass cross-implementation compatible."},"comment":{"url":"https://api.github.com/repos/sass/sass/issues/comments/72289071","html_url":"https://github.com/sass/sass/issues/1608#issuecomment-72289071","issue_url":"https://api.github.com/repos/sass/sass/issues/1608","id":72289071,"user":{"login":"chriseppstein","id":1839,"avatar_url":"https://avatars.githubusercontent.com/u/1839?v=3","gravatar_id":"","url":"https://api.github.com/users/chriseppstein","html_url":"https://github.com/chriseppstein","followers_url":"https://api.github.com/users/chriseppstein/followers","following_url":"https://api.github.com/users/chriseppstein/following{/other_user}","gists_url":"https://api.github.com/users/chriseppstein/gists{/gist_id}","starred_url":"https://api.github.com/users/chriseppstein/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/chriseppstein/subscriptions","organizations_url":"https://api.github.com/users/chriseppstein/orgs","repos_url":"https://api.github.com/users/chriseppstein/repos","events_url":"https://api.github.com/users/chriseppstein/events{/privacy}","received_events_url":"https://api.github.com/users/chriseppstein/received_events","type":"User","site_admin":false},"created_at":"2015-01-30T23:31:01Z","updated_at":"2015-01-30T23:31:01Z","body":"@nex3 Sass extensions are currently a major impediment to making Sass projects portable across implementations. We *need* to provide a way for people to have a sass file that can run reliably across several implementations even if that sass file using host-language extensions. Without mitigation, we still have the schism we're trying to avoid in the community. You only addressed option #2 here and I agree that Lua or something else is probably premature. Instead, my preference right now is to have a standard way of making several host implementations of a sass extension work together. "}}