All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Replaced the css
Selector
implementation. The new "logical" selector types that was used in selector function in rsass 0.28 is now the only css selector implementation. Most of the api to those types are private. Some will probably be made public after some stabilization period. - The
Debug
trait forError
is now the standard derived impl, to get the pretty output, use theDisplay
trait. - All numbers are now represented as f64 (#203).
This removes integration with
num-rational
,num-bigint
,num-integer
andnum-traits
.
- Lots of color handling.
- Spec changes for traditional css colors (PR #198).
- Made all color channels f64 instead of Rational (PR #199).
- Fixed a bug where
clamp(..)
was sometimes evaluated to a value even though units wasn't comparable. - Improved parse error handling (Issue #141, PR #201, PR #205). Many parse errors now match the dart sass error message. Also allow "loud" comments in more places.
- Pure css
round()
may take an expression argument. - Updated sass-spec test suite to 2024-11-15.
Released 2024-05-19. Progress: 5803 of 7673 tests passed.
- Improved support for the
selector.nest
function (PR #189). - Moved
selector.append
to new selector implementation (PR #190). - Implemented the
selector.simple-selectors
function (PR #191). - Implemented the
selector.extend
function, except some of the more complicated corner cases (PR #194). - Parse next-generation css selectors directly (rather than parsing as
the old type and converting to the new). Fixes the
selector.parse
function and improves support for other selector functions (PR #192). - Some internal cleanup and improvements in the next-generation css selector implementation (which is currently internal and used only for selector functions, but should replace the old css selector implementation in release 0.29).
- Improvements in css-compatible functions that is evaluated if possible, but kept as css if the arguments may make sense in a browser (PR #193).
- Improved no-args
math.random
, it now returns a f64 number. - Some other minor code cleanup.
- MSRV is now 1.74 for rsass-cli (and still 1.61 for the lib and macros).
- Updated sass-spec test suite to 2024-05-16.
Released 2024-01-01. Progress: 5565 of 7637 tests passed.
- Added support for the
selector.unify
function (PR #187). - Added support for the
selector.replace
function (PR #188). - Improved parsing of binary / unary operations and other uses of
-
. - Fixed som special cases in the sass
%
operator. - Some internal cleanup (including setting workspace resolver to 2).
- Msrv is 1.70 for rsass-cli, and 1.61 for the lib and macros (and 1.63 for running the tests of rsass, because some extra logging).
- Updated sass-spec test suite to 2023-12-14.
Released 2023-11-12. Progress: 5332 of 7637 tests passed.
- The 0.28.4 release accidentally included partial support for the
is_superselector
sass function, so clean that up a bit.
See 0.28.4 for further changes.
Released 2023-11-11. Progress: 5208 of 7637 tests passed.
- Filter out placeholder selectors when writing the resulting css
(they are still parsed of the internal data representation, so they
can be used when implementing
@extend
) (PR #180). - Filter out some other illegal / never-matching selectors (PR #181).
- Some improvements in plain css value parsing:
- trailing comma and space separated lists in function arguments.
- unqoted urls (contining slash and dot) in function arguments.
- Negative numbers and numbers starting with a decimal dot.
- unicode-ranges.
- Allow at-rules in at-rules when parsing plain css.
- Refactored function name/plain string handling in scss values to not parse the same unquoted string twice.
- Remove separate backref member from
css::Selectors
for cleanup before implementing more selector functions. Instead, add it to an internal structSelectorCtx
(PR #179). - Implemented a bunch of css math functions. They differ from the
functions in the math module in that they fallback to themself if
the answer cant be calculated but isn't obviously wrong
(e.g.
min(var(--gap), 2em)
is preserved whilemin(1em, 2em)
is evaluated to1em
andmin(1s, 1em)
yields an error). This also includes some improvements in handling numeric zeroes and infinities. (PR #184). - Implemented css relative color functions (PR #185).
- Simplify units early in numeric division and multiplication. I think this is a bit uglier, but it is more consistent with dart sass.
- Refactored some parsers for less backtracking, making it easier to point parse errors at the right place in the code and maybe making parsing slightly more efficient.
- Improve selector / name parsing by beeing more restrictive (PR #183).
- Updated sass-spec test suite to 2023-10-31.
Released 2023-08-03. This is a minor release of only rsass itself. Progress: 4725 of 7033 tests passed
- Quoted strings can now be part of custom values (earlier, a custom value could be either a quoted string or something else). Thanks @kartikynwa for reporting (issue #175, PR #176).
- Improved handling of
calc(...)
expressions in plain css. - Improved handling of non-interpolated
calc(...)
expressions in scss, they are now properly evaluated (PR #177). - Some more (minor, mostly clippy-pedantic-suggested) internal cleanup.
- Updated sass-spec test suite to 2023-08-01.
Released 2023-07-09. See also https://rasmus.krats.se/2023/rsass028.en Progress: 4697 of 7032 tests passed.
@media
rules are now handled specifically as@media
rules, rather than as unknown@
-rules (PR #172).@extend
is now explicitly unsupported (gives an error message, rather than behaving as an unknown@
rule) (PR #173).- Improved handling of
@keyframes
and@font-face
. - Changed output format of non-finite numbers to match sass spec.
They are now wrapped in
calc
, likecalc(infinite)
orcalc(NaN * 1deg)
. - Fixed some difference between module and builtin color functions
grayscale
andinvert
. - The
deg
unit is no longer spelled out inhsl
/hsla
colors. - Improved handling of custom properties in raw css input.
- MSRV of rsass (the lib crate) is now 1.60.0 (required by trancient dev dependency log).
- Improved parsing of quoted strings (some syntax errors was accepted).
- Removed the
Error::error(_)
shortcut for creating text-only errors (some text only errors remains, created directly as theError::S(String)
variant, that should probably be removed too in the future). - Fixed a typo in help text, thanks @greyhillman (PR #170).
- Added an input check in selectors.append function.
- Changed
Number
internals to make values smaller in memory. - Minor internal cleanup.
- Updated syn in rsass-macros to 2.0.2.
- Updated sass-spec test suite to 2023-06-30.
Released 2023-01-17. See also https://rasmus.krats.se/2023/rsass027.en Progress: 4604 of 6925 tests passed.
- Changed repo structure to a monorepo (PR #164).
- The commandline interface now lives in the separate crate rsass-cli.
- The test updater also have a separate crate, but not intended for publication.
- Tests are restructured to fail faster for simple things, while macos and windows testing is added to the github action (appveyor is removed).
- Added macros (PR #163, #165).
- The workspace now includes a
rsass-macros
crate that can be used to compile sass to css strings at compile time in rust crates.
- The workspace now includes a
- Changed numeric handing (mainly conversions to/from
f64
) to match improvements in how dart-sass handles numerics. This is mainly done by removing some special cases as dart-sass and rust now agrees on more of those. - Added new variables
$epsilon
,$max-safe-integer
,$min-safe-integer
,$max-number
, and$min-number
insass:math
, matching recent dart-sass additions. - Added new
split()
function insass:string
module. - Changed the span type used in parsing to a local type that borrows a
SourceFile
instead ofnom_locate
dependency (PR #158). - Changed the type
SourceFile
to be reference counted, so clonedSourceFile
objects share the same actual data (PR #158). - Moved the
SourcePos
type into theinput
module and converted it from keeping a copy of the relevant line to keeping a range with a (reference counted)SourceFile
(PR #158). - Changed css creation from just writing to a text buffer to building a tree representation of the css (and serialize it to text as a final step) (PR #159).
- Changed
BinOp
value in both sass and css from a tuple variant with boxed values to a single boxed struct variant. - Improved value checking; Report an error if trying to output invalid css values in some cases. Also, arithmetic involving colors that used to be calculated is now correctly invalid (PR #161).
- Changed
css::Item::AtRule
to wrap the new typecss::AtRule
. - More varaints of
Invalid
, slightly fewer stringy errors. - Changed handling of
hue
arguments to color functions, to allow different angle units, matching updates in sass-spec. - Minor correctness improvent in the
calc
function handling. - Clippy now takes MSRV from Cargo.toml. Slightly more recent lints allowed.
- Updated clap to 4.0 for the command-line interface.
- Updated sass-spec test suite to 2023-01-06.
Thanks to @Wicpar for the initial macros implementation.
Released 2022-09-18. See also https://rasmus.krats.se/2022/rsass026.en Progress: 4500 of 6843 tests passed (or 4673 if ignoring some deprecation messages).
- A
BuiltinFn
now takes a&ResolvedArgs
rather than a&ScopeRef
as argument (PR #157). @extend
is still unsupported, but now some uses of it (e.g. in control structures) will result in an error instead of wrong output.- Some
sass::Item
alternatives now contain aCallable
, combiningFormalArgs
with a body (aVec<Item>
). Andsass::Item::Content
now has aCallArgs
. Also,MixinDeclImpl
is replaced withsass::Closure
. (PR #146). sass::CallArgs::new()
has an additionaltrailing_comma
boolean argument (PR #147).- Remove deprecated methods
css::Value::integer_value()
andNumber::is_integer()
. - Changed the error type of
Scope::get_function()
. - Setting a variable,
Scope::define
now takes theValue
by value rather than by reference. Also,Scope::define_multi
is no longer exposed in the api. - Renamed one variant of
ScopeError
and added two others. - The sass
Value::Variable
andItem::VariableDeclaration
variants now holds aName
rather than just aString
for the variable name. Also, both now holds aSourcePos
. - Changes in
Error
representation. Many errors are now constructed likeInvalid::SomeVariant.at(pos)
(PR #145). Error::error
now takes anInto<String>
argument (PR #151).- The module
input
contains types types withContext<L>
,Loader
,FsLoader
, andFsContext
, replacing the oldFileContext
andFsFileContext
. Also, the typesSourceKind
,SourceName
andParsed
are moved from top-level into theinput
module (PR #150). - The
parse_scss_data
function is removed. Please create aSourceFile
and use theparse
method on that instead (PR #150). - The
Format::write_root
method are removed,Context::transform
should be used instad (PR #152).
input::Context
is the new main interface to rsass. Create a context suitable for how files should be loaded, configure it with an output format and optionally extend the global scope before callingContext::transform
with an input file (PR #151, PR #152).- Also provide
CargoContext
/CargoLoader
for convenient use in build scripts (PR #154). - The way to get argument values from the implementation of a builtin
function is refactored to handle both any type that implements
TryFrom<Value>
and explicit validation/conversion methods nicer, and is now availiable for implementing builtin functions (extensions) outside of rsass itself (PR #157). - The
@content
can have arguments when declaring and calling a mixin (PR #146). - Variable declartions can be scoped (like
module.$var: value
). Some error reporting improvements (PR #148). - Allow interpolation in css min and max function arguments.
- The url for
@use
and@forward
must be quoted. - Improve detection of import loops (PR #150).
- When loading files, Don't apply suffix / index-adding rules if the file name already has a suffix (PR #150).
- Some
@
rules are now forbidden in some places as they should (PR #145). - The css
var(...)
function is now parsed as a proper function, and not as a special string (PR #147). - The null value can be quoted as an empty string (PR #147).
- Make
Debug
formatting ofrsass::Error
look like theDisplay
output, but without the "Error: " prefix. This makes the error display correctly if returned from a main function. This also removed the "Error: " prefix from a lot of message strings (PR #151). - In error message, don't show ellipses for consecutive lines (PR #147).
- Somtimes a trailing comma in argument lists is preserved (PR #147).
- Simplified
main
of the command-line by returning aResult
(PR #151). - Update sass-spec test suite to 2022-09-15.
- Handle tests referencing
input.scss
in spectest (include it among the mock files, if mentioned in itself or any existing mock file) (PR #150). - Use
lazy-regex
in spectest (PR #150). - Rsass now uses rust edition 2021, so MSRV is 1.56.0 (PR #153).
- Some cleanups.
- The main branch is now named
main
rather thanmaster
.
Thanks to @fasterthanlime (again) for reporting the problem with interpolation in min and max.
Released 2022-05-27. Progress: 4350 of 6552 tests passed in dart-sass compatibility mode.
- Use platform-dependent
path.join
for putting the local part after a base path, seems to make slash-separated strings ok as the joined part. (PR #144, issue #133) - Update sass-spec test suite to 2022-05-20.
Thanks to @fasterthanlime for reporting and testing.
Released 2022-05-17 (On the Norwegian Constitution day 🇳🇴). Progress: 4331 of 6523 tests passed in dart-sass compatibility mode.
- Update minimum supported rust version to 1.49.0 (from 1.45.2).
SourceFile.parse()
now returns aResult<Parsed>
rahter than aResult<Vec<sass::Item>>
, andFormat::write_root
now takes aParsed
(PR #140).FsFileContext::file
is replaced byFsFileContext::for_path
, which initializes a file context and loads a file from it (PR 137).
- Hopefully improved relative file finding on windows (PR #137).
- Plain css
@import
rules is only allowed on a few condtions, in other cases an error is reported (Issue #139, PR #137). - Rsass can now parse (some) plain css as well as scss. Css files can
be referenced in
@use
and@import
directives, as well as in themeta.load-css
mixin (PR #140). - Make the
calc(...)
function signal an error when args are known to be invalid css (PR #138). - Change
map.deep-merge
to match recent change in dart sass. - Minor fix in whitespace around at-rules.
- Instrumented attempted file loading with
tracing
(PR #137). - Fix a typo in LICENSE (Issue #136).
- Update sass-spec test suite to 2022-05-10.
- Make rust version of sass-spec more directory-aware (which fixes one of 5825 tests).
- Use a crates badge that actually works.
Thanks to @jonassmedegaard for #136, and to @fasterthanlime for reporting the problem that #137 attempts to fix.
Released 2022-03-23. Progress: 4013 of 6478 tests passed in dart-sass compatibility mode.
- The functions
parse_scss_file
andparse_scss_path
is removed. UseSourceFile
(maybe from aFileContext
) instead (PR #132). - Some API changes (mayinly using
SourceFile
as return type) inFileContext
andFsF ileContext
(PR #132). Scope::get
now takes an&Name
rather than an&str
for the variable name.sass::Value::Variable
now has a source position.sass::Item
andcss::BodyItem
got new alternatives for custom properties (PR #134).- Some changes in the
Error
type to facilitate positions.
- Basic support for
meta.load-css
mixin (PR #131). - Improved
calc
andclamp
handling (PR #133). - Support custom properties (PR #134).
- Refactor source file handling. Instead of creating new FileContexts wrapping the original for each file for searching for local paths in that file, use the SourceName of the containing file to find local paths (PR #132).
- Detect
@import
loops. - Report undefined variable / module errors better.
- Update color formatting. Sass-spec changed how it decides what format to show a color in (PR #135).
- Enable clippy in CI and fix some things it complained about (PR #128).
- Update sass-spec test suite to 2022-03-17.
Released 2022-02-06. Progress: 3872 of 6477 tests passed in dart-sass compatibility mode.
- Different kinds of length units are now considered compatible for
the
max
andmin
css unctions.
Released 2022-02-04. Progress: 3872 of 6477 tests passed in dart-sass compatibility mode.
- Fix remaining cases of "special arguments" handling in rgb function.
- The commandline now uses clap 3.0 rather than structopt.
- Update update-tests dependency hrx-get to 0.2.0.
- Update sass-spec test suite to 2022-02-01.
Released 2021-12-10. Progress: 3849 of 6444 tests passed in dart-sass compatibility mode (this may seem like a regression, but that is caused by changes in the test suite).
Error
has a new alternative,AtError
.- In
sass::Item
, theError
,MixinCall
andMixinDeclaration
variants is changed to include aSourcePos
. Also, asass::Mixin
contains aSourcePos
for where it is declared. - The fields of
SourcePos
is now private. - The
name
of asass::Item::AtRule
is now a SassString. - A
css::Value::Literal
now contains aCssString
rather than aString
and aQuotes
. Evaluating aSassString
also returns aCssString
(PR #118). - The selector types are split from one
selector
module to thecss
andsass
modules. Anything that usedselector
types should now use eithercss
orsass
types (PR #123).
- A css call is just a special kind of string.
- Include position of directive or function call when reporting
@error
errors. - Improve error reporting from inside mixins and functions.
- Support interpolation in
@
-rule names. - Fixed #116: The
sass:map.merge
function was buggy. - Fixed #119:
saturate(200%)
is allowed (the argument is not limited to 0..100%). sass:selector
functionsappend
,nest
, andparse
are closer to correct (PR #123).sass:meta
functionscalc-args
andcalc-name
implemented (PR #126).- Css strings and selectors can now be parsed directly (PR #123).
- Fixed reformatting of to-much-indented comments.
- Fixed panics in some color arithmetic (Issue #120, #121, #122, PR #125).
- Replace rand with fastrand, hopefully compile faster (PR #105).
- Unicode Private-use characters are escaped when printed.
- Updated
nom
to 7.0 andnom-locate
to 4.0. - Update sass-spec test suite to 2021-11-30.
Thanks to @paolobarbolini, @connorskees and @charlesxsh for reporting issues.
Released 2021-07-03. Progress: 4002 of 6180 tests passed in dart-sass compatibility mode.
- Changed the
red(..)
,green(..)
, andblue(..)
functions to always return integers. Issue #114, thanks @Keats. - Changed the
blackness(..)
andwhiteness(..)
functions to return blackness/whiteness of the integer rgb approximations of the color rather than the exact color.
Progress: 3992 of 6180 tests passed in dart-sass compatibility mode.
- The
sass::Item::MixinCall
enum alternative was modified. - Signature changes in
css::CallArgs
andsass:CallArgs
, and new alternatives insass::ArgsError
. css::Value
has a new variantArgList
.- The
OrderMap::keys()
andvalues()
functions now returns iterators,OrderMap::remove(key)
now returns the removed value.
- Better handling of mixin call bodies, the
@content
item, and thecontent_exists
function. Fixes #112. @import
exposes things@forward
ed in the imported module.- Many improvements in parameter passing to functions and mixins. PR #113.
- Some more fixes regarding function calls and modules.
- Support the
keywords
function insass:meta
. - Removed some debug printouts that was accidentally left in 0.21.0.
- Update sass-spec test suite to 2021-06-14.
Thanks to @Keats for reporting #112 and #108.
Progress: 3727 of 6171 tests passed in dart-sass compatibility mode.
value::Unit
andvalue::ListSeparator
has new alternatives.- The
List
alternative insass::Value
andcss::Value
is modified. - The
Use
alternative insass::Item
is modified, andForward
added.
- Most of
@forward
and some more of@use
is now supported. PR #109 and #110. - Handle unknown units. PR #101.
- List can be undecided between beeing comma-separated and beeing space-separated. PR #102.
- Improved parameter handling and returned values of the supported selector functions. PR #103.
- Implement
meta.module_variables
andmeta.module_functions
. - Implement
math.div
function. - Improved parameter checking for
hwb
,alpha
, andinvert
functions insass:color
module. - Support slash-separated lists. PR #111.
- The
if
function evaluates its arguments lazily. Issue #107. - The
--include-path
cli argument is now named--load-path
. - At least some documentation on all public items.
- Update sass-spec test suite to 2021-05-24. Also include "other"
files (for
@use
and@import
) in rust code for the suite.
Tested with rustc 1.52.1, 1.50.0, 1.48.0, 1.45.2, 1.53.0-beta.3 (82b862164 2021-05-22), and 1.54.0-nightly (657bc0188 2021-05-31).
Progress: 3456 of 5962 tests passed in dart-sass compatibility mode.
- The name of a module is no longer a
sass::Name
, but instead aString
.
- A space-separated list can be a key in a map.
- The builtin modules does not inherit the global functions.
- Scope names is not
sass::Name
($a_b
and$a-b
is the same variable, buta_b
anda-b
are different scopes). - Improve
sass:map
functionsget
andmerge
and adddeep-merge
anddeep-remove
.
Tested with rustc 1.51.0 (2fd73fabe 2021-03-23), 1.48.0 (7eac88abb 2020-11-16), 1.46.0 (04488afe3 2020-08-24), 1.44.1 (c7087fe00 2020-06-17), 1.51.0-beta.8 (73f48e5f6 2021-03-18), 1.53.0-nightly (07e0e2ec2 2021-03-24).
Version 0.20.0 was originally released as 0.19.2, but yanked as there was a breaking change.
Progress: 3371 of 5945 tests passed in dart-sass compatibility mode.
- The unit of a
Numeric
is now aUnitSet
rather than aUnit
. Error
has new variants and a new field inBadArguments
.- A sass::Value::Call now has a source position.
- A
Rational
is now aRatio<i64>
rather than aRatio<isize>
.
- Added a Contributing section to readme.
- Handle values with multiple units. PR #97.
- Show call position for errors in function calls, and test for type errors in many standard functions. Many error messages are made identical to dart-sass, improving test-suit progress with more than 400 tests. PR #99.
- Fix issue #98: overflow in rational number arithmetic.
- Allow
@at-root
at document root. - Boolean operators is truly lazy, e.g.
false and f($x)
does not callf
. - Refactored number parsing to use overflowing rationals. PR #100.
- Test suite sass-spec updated to 2021-03-02.
- Updated num-rational and num-bigint to 0.4.0.
Thanks to @alvra for reporting #98.
Tested with rustc 1.50.0 (cb75ad5db 2021-02-10), rustc 1.48.0 (7eac88abb 2020-11-16), rustc 1.46.0 (04488afe3 2020-08-24), rustc 1.44.1 (c7087fe00 2020-06-17), rustc 1.51.0-beta.6 (6a1835ad7 2021-03-12), and rustc 1.52.0-nightly (acca81892 2021-03-13).
Progress: 2892 of 5945 tests passed in dart-sass compatibility mode.
Lots of things have been moved around. See Scope
, Numeric
, and
Function
in particular.
- Support
@use
of user-defined modules. PR #96. - Improve trigonometric precision by using f64 π rather than rational.
- Handle more peculiarities with atan2, pow, infinities and negative zero.
- Improve name lookups in scopes and modules, PR #87.
- new
struct Scope
replaces trait and three structs. PR #95. - A color can be Hsla or Hwba as well as Rgba. PR #88, #89.
- Handle units in
@for
loops inside sass functions. - Some types moved into
value
mod, imporoved docs. PR #90. - Add support for
$=
,~=
and^=
in css attribute selectors. Issue #91, PR #92. - A
Numeric
is a Number with a Unit. Also hide NumValue enum. PR #93. - The
SassFunction
type is now namedsass::Function
. - Test suite sass-spec updated to 2021-02-18.
- Some cleanups.
Thanks to @mfeckie for #91/#92.
Tested with rustc 1.50.0 (cb75ad5db 2021-02-10), rustc 1.48.0 (7eac88abb 2020-11-16), rustc 1.46.0 (04488afe3 2020-08-24), rustc 1.44.1 (c7087fe00 2020-06-17), rustc 1.51.0-beta.3 (b631c914c 2021-02-24), and rustc 1.52.0-nightly (a8486b64b 2021-02-24).
Progress: 2784 of 5936 tests passed in dart-sass compatibility mode.
- Update nom to 6.0 raises the minimally supported compiler version to 1.44.0. Also, the dependency is technically exposed.
sass::Item::Use
was modified by #84.compile_scss_file
is renamed tocompile_scss_path
, andFileContext
is now a trait, the default implementation is renamed toFsFileContext
by #85.
- Allow customizing file loading by providing a custom impl of a
FileContext
, PR #85. - Support the
@use name as *
syntax, PR #84. - Make
Error::BadValue
a little closer to whats expected. - Handle units in
@for
loops. - Update
nom
to 6.0, PR #83. - Update
rand
to 0.8, PR #86. - Testing is now done with github actions rather than travis (Appveyor remains for window builds).
- sass-spec test suite updated to 2021-01-20.
Thanks to @paolobarbolini and @alvra for code contributions.
Tested with rustc 1.49.0 (e1884a8e3 2020-12-29), 1.44.1 (c7087fe00 2020-06-17), 1.46.0 (04488afe3 2020-08-24), 1.48.0 (7eac88abb 2020-11-16), 1.50.0-beta.8 (1cd030396 2021-01-20), and 1.51.0-nightly (c0b64d97b 2021-01-28).
Progress: 2718 of 5840 tests passed in dart-sass compatibility mode.
SourceName
andsass::Item::Import
was changed by #62.Use
was added to thesass::Item
enum by #80.- Changes to
sass::Value
andcss::Vaue
by #81.
- PR #80: Implement
@use
for standard sass modules. All standard modules are at least partially supported, onlysass:string
is fully supported. See issue #60 for for module support status. - PR 82: Implement hwb support in
sass:color
. Also, provideFrom<Rgba>
forcss::Value
and deprecate color value constructors. - Provide
From<bool>
forcss::Value
(and deprecateValue::bool(v)
). - PR #62: Improve
ParseError
,SourcePos
, andSourceName
by using located spans by nom_locate in the parser. Asass::Item::Import
now handles where each file is imported from, to improve error reporting. - PR #81: Improved number handling. Now
Value::Number
handles both machine-sized rationals, bignum rationals and floats internally andValue::NumberBig
is removed. Also,Value
no longer implementsOrd
but onlyPartialOrd
, to handle f64 NaN an infinite values correctly. - Improve parsing of
@else
clauses. - Update spec to 2020-10-29.
Tested with rustc 1.47.0 (18bf6b4f0 2020-10-07), 1.44.1 (c7087fe00 2020-06-17), 1.42.0 (b8cedc004 2020-03-09), 1.40.0 (73528e339 2019-12-16), 1.38.0 (625451e37 2019-09-23), 1.48.0-beta.8 (121901459 2020-11-08), and 1.49.0-nightly (25f6938da 2020-11-09),
Progress: 2320 of 5577 tests passed in dart-sass compatibility mode.
- The
Item::Comment
enum value now contains aSassString
rather than aString
. - The
Error::ParseError
enum value changed, andErrPos
is replaced withSourcePos
andSourceName
. - The error type of
parse_scss_data
changed toParseError
. Unit::dimension()
now returns aDimension
rather than a&str
.
- PR #79: Refactor some error handling. Relates to #46.
- Improve map parsing (a map is parsed as a plain vec of key/value pairs, filtering duplicates happens only when it is evaluated).
- Allow multiple
&
items in the same selector. &
evaluates to null when used as a value without enclosing selector.- Implement the
@debug
directive. - Fix
a % b
evaluation for negative values. - Allow / ignore comments in properties and values.
- Allow
!default
and!global
in any order on variable declarations. - Improve
inspect(...)
formatting of list values. - Refactor and improve arithmetic on different units.
ListSeparator
is nowCopy
.- Allow interpolation in comments.
- Some refactoring
Tested with rustc 1.47.0 (18bf6b4f0 2020-10-07), 1.44.1 (c7087fe00 2020-06-17), 1.42.0 (b8cedc004 2020-03-09), 1.40.0 (73528e339 2019-12-16), 1.38.0 (625451e37 2019-09-23), 1.48.0-beta.5 (4c78178b1 2020-10-21), and 1.49.0-nightly (ffa2e7ae8 2020-10-24).
Progress: 2294 of 5577 tests passed in dart-sass compatibility mode.
- Some improvements in list handling, formatting and introspection.
- Change default precision to 10, matching dart-sass.
- Semicolon is optional after variable, if last in block or file.
- Fix addition (and subtraction) of values with comparable units.
- Fix css value equality for map keys and other "special" places.
- Recognize known
@
-rules with escaped characters. - Don't copy extra
@charset
rules to output (one is included if needed). - Some internal refactor and cleanup.
- Update spec to 2020-10-07.
Tested with rustc 1.47.0 (18bf6b4f0 2020-10-07), 1.44.1 (c7087fe00 2020-06-17), 1.42.0 (b8cedc004 2020-03-09), 1.40.0 (73528e339 2019-12-16), 1.38.0 (625451e37 2019-09-23), 1.48.0-beta.2 (212e76c31 2020-10-08), and 1.49.0-nightly (8dae8cdcc 2020-10-12)
Progress: 2234 of 5510 tests passed in dart-sass compatibility mode.
- PR #76 and #78: Target dart-sass rather than libsass compatibility. This sets the target when testing and changes some different behavior, including how strings are parsed and handled.
- PR #75 from @divergentdave: Parse and add
Value
variants for BigInt numbers - PR #77: Support
rgba(r g b / a)
andhsla(h s l / a)
functions, i.e. thechannels
parameter with div-separated alpha channel. - Fix
@import
indention. - Improve function default argument parsing and don't panic in
parse_value_data
. - Handle dictionary-ellipsis style call-by-varargs for functions.
- PR #73 from @divergentdave: Remove three unwraps from escaped_char
- PR #71 from @connorskees: Further optimize number printing
- Update travis url in README.
- PR #70 from @svenstaro: Mention grass rather than sassers, as sassers appears to be dead while grass is in rather active development.
- Add a CHANGELOG.md
- Update spec to 2020-09-17.
- Update num-rational to 0.3.0.
Tested with rustc 1.46.0 (04488afe3 2020-08-24), 1.44.1 (c7087fe00 2020-06-17), 1.42.0 (b8cedc004 2020-03-09), 1.40.0 (73528e339 2019-12-16), 1.38.0 (625451e37 2019-09-23), 1.47.0-beta.7 (e28d2bd09 2020-10-01), and 1.48.0-nightly (8876ffc92 2020-10-02)
Progress: 1634 of 3502 tests passed in libsass compatibility mode.
- output::Format wraps an output::Style and a precision. The global precision setting is removed.
- Value and other structs no longer implents Display, instead the
provid a
format
method, that takes an output format and provides a Display implementation. - The
compile_value
rust function now takes a format argument. - Issue #42 (partial): The
min(..)
andmax(...)
functions are handled as plain css functions when valid, while still handling them as sass functions when nessecary. - PR #69, fixing #68: Avoid exponential complexity on parenthesis.
- Allow comments in
@function
bodies. - PR #67 from @connorskees: Refactor and fix printing of numbers
- When defining multiple variables, having more names than values is allowed. The extra names get null values.
- Convert som panics / unwraps to properly handled errors.
- There was massive restructuring in the test suite, so almost all tests moved around. I moved remaining tests to build a single test program for the suite rather than several for different directories in the suite (this also means more tests are included in the conversion).
- Fix check_spec stats calculation.
Thanks to @connorskees for code contributions and bug reports.
Tested with rustc 1.42.0 (b8cedc004 2020-03-09), 1.40.0 (73528e339 2019-12-16), 1.38.0 (625451e37 2019-09-23), 1.36.0 (a53f9df32 2019-07-03), 1.43.0-beta.6 (062dea094 2020-04-18), and 1.44.0-nightly (52fa23add 2020-04-18).
- Fix #63 and #64: Handle DOS-style newlines
- Use structopt rather than raw clap for the CLI.
- Sass function
str_slice
require integer indexes. - Some cleanup, some of it suggested by clippy.
- Removed link to no-longer working graphical progress bar in docs.
Thanks to @connorskees for bug reports.
Tested with rustc 1.41.0 (5e1a79984 2020-01-27), 1.40.0 (73528e339 2019-12-16), 1.38.0 (625451e37 2019-09-23), 1.36.0 (a53f9df32 2019-07-03), 1.42.0-beta.3 (86f329b41 2020-02-07), and 1.43.0-nightly (436494b8f 2020-02-22).
- Issue #54: Add a LICENSE file.
- PR #57: Allow channel string in rgba()
- Issue #58: Let ructe::Error implement std::error::Error.
- Issue #59: Improve
@import
and media rules. - Implement
@error
and@warn
directives. - Improve string unquoting, including multi-position numerical escapes.
- Improve at-rule parsing.
- Fix strange operator handling.
- Implement modulo operator.
- Fix line breaks in comments.
- Handle bad argument to
random()
function. - Update test suite to e9e219bdf (2019-12-19).
- Some refactorig and clean-up.
Thanks to @emielbeinema, @maxbrunsfeld, and @Boiethios for contributed code and suggestios.
Tested with rustc 1.40.0 (73528e339 2019-12-16), 1.38.0 (625451e37 2019-09-23), 1.36.0 (a53f9df32 2019-07-03), 1.34.2 (6c2484dc3 2019-05-13), 1.41.0-beta.1 (eb3f7c2d3 2019-12-17), and 1.42.0-nightly (a9c1c04e9 2019-12-24).
- PR #56: The url function is special.
Handle
url(foo)
as simply a string if possible. Sometimes, such asurl("foo" + $bar)
, it must be a function returning a string instead. Partially adresses #42. Fixes #41. - PR #55: Implement raw css functions.
Handles the
calc
,element
,env
,expression
,var
, andprogid:...
special functions. Partially adresses #42. Fixes #53. - Issue #50: Make tests more readable.
- Improve error handling in selector fns. Avoid a panic in some error conditions.
- Update test suite (to fcd6bd6c0, 2019-09-24).
- Update bytecount to 0.6.0.
- Some internal refactoring.
Thanks to @glebm and @nic-harley for reports and suggestions.
Sass-spec reports 1507 of 2865 tests passed in libsass compatibility mode.
- Update
nom
to version 5.0. - A string can start with a
#
without being a color. - Correct parameter name for
unit
,unitless
,quote
, andunquote
functions. - The
random
function ignores units. - An empty unquoted string behaves like null.
- Fix some issues with string offsets in
str_slice
andstr_insert
. - The
quote
function can use single quotes when needed. - Return an error rather than panicing on some invalid scss.
- Some test updates and fixes in spectest.
Tested with rustc 1.36.0 (a53f9df32 2019-07-03), 1.34.2 (6c2484dc3 2019-05-13), 1.32.0 (9fda7c223 2019-01-16), 1.37.0-beta.3 (2ba6de7e2 2019-07-12), and 1.38.0-nightly (4b65a86eb 2019-07-15).
Sass-spec reports 1472 of 2802 tests passed in libsass compatibility mode.
- Update progress number in readme and documentation, since I forgot in 0.10.0.
- PR #51: Impove string parsing/escaping.
- Issue #46, PR #47: Report file position of parse errors, and improve the parser to have errors reported in a more specific position.
- Improve error handling in functions, calling a function can yield
an error. Partially solves #41: The unsupported call will now yield
an error rather than hang
rsass
. - Commandline changes:
- Support
-I
commandline argument for include path. - Use lowercase
-v
for version (expected by the test runner).
- Support
- Some color function improvements:
- Handle alpha percentatges in rgba.
- The rgb function can be used as rgba with four args.
- Use alpha propely when mixing colors.
- Handle both alpha and opacity css function fallback.
- Implement the grayscale function.
- Support three arguments to
rgba
function.
- Some list function improvements:
inspect
shows parens for empty list, and spells out"null"
for a null value.- Join gets better at selecting wether result should be comma or space separated.
- The length function treats a null as an empty list.
- Handle singleton in
index
andnth
functions.
- More function improvements:
- Implement the
unique_id
function. - Check that indexes are sane in
str_slice
function. - Skip null args even if not last when evaluating a function to a function call.
- Implement equality check for builtin functions.
- Implement the
- Error, not panic, on unknown mixin.
- Allow modifiers on attribute selectors.
- Color names are caseless.
- Improve handling of url imports.
- Update
deunicode
to 1.0 andrand
to 0.7.0. - Allow interpolation in namespacerule.
- Allow ";" after body block.
- Lots of test suite updates, including support for .hrx tests in spectest. Target libsass compatibility in testing.
I don't really know if I should target libsass or dart-sass compatibility, but libsass seems to be closer to my current implementation, so target that at least for now.
Thanks to @maxbrunsfeld and @glebm for code and suggestions.
Tested with rustc 1.36.0 (a53f9df32 2019-07-03), 1.34.2 (6c2484dc3 2019-05-13), 1.32.0 (9fda7c223 2019-01-16), 1.37.0-beta.1 (178aa6611 2019-07-04), and 1.38.0-nightly (481068a70 2019-07-05).
Sass-spec reports 1645 of 3440 tests for sass 3.6 passed.
- Improve support for
transparent
. - PR #45 from @glebm: Automatically update passing / failing tests Hardkoded skiplists in spectest.rs is cleared apart for tests where rsass panics.
- Issue 43: Normalize newlines in tests.
- PR #44 from @glebm: Update to Rust 2018 Edition, Rust v1.31.0+
- Issue #39, PR #40 from @glebm: Parser CallArgs: Allow trailing spacelike sans ","
- Issue #32: Make the selectors module pub.
- Issue #34, PR #35 from @glebm: Accessing an undefined variable is an error.
- Allow input starting with UTF-8 U+FEFF BOM.
- Target sass spec version 3.6.
Thanks to contributors @glebm, @maxbrunsfeld and @sunjay for code and suggestions.
Tested with rustc 1.32.0 (9fda7c223 2019-01-16), 1.31.0 (abe02cefd 2018-12-04), 1.33.0-beta.6 (b203178b6 2019-02-05), and 1.34.0-nightly (3315728c0 2019-02-09).
A default run of sass-spec found 1680 of 3635 tests passing.
- Issues #26, #30, PR #29 from @tw1t611; Add
fr
unit. - Refactor and document the Number type used inside value types.
- Allow trailing comma in sass function definitions.
- The sass
length
function now correctly returns one for single (non-list) values. - Fix a bug in color function parameter handling.
- Add libsass and parser to auto-testing setup.
- Update rand to 0.6.1.
Tested with 1.31.1 (b6c32da9b 2018-12-18), 1.30.1 (1433507eb 2018-11-07), 1.29.0 (aa3ca1994 2018-09-11), 1.28.0 (9634041f0 2018-07-30), 1.27.2 (58cc626de 2018-07-18), 1.26.2 (594fb253c 2018-06-01), 1.32.0-beta.12 (2bde39b8e 2019-01-05), and 1.33.0-nightly (d22fa2d87 2019-01-08)
A default run of sass-spec found 1672 of 3483 tests passing.
- Allow unicode variable names.
- Implement the precision argument.
- Implement hex colors with alpha.
- More flexible call_args; allow whitespace before separating commas, and allow a comma trailing the last argument.
- Test infrastructure: a program spectest now converts selected tests from sass-spec to integration tests, to facilitate keeping tests up-to-date.
Tested with rust 1.29.0 (aa3ca1994 2018-09-11), 1.28.0 (9634041f0 2018-07-30), 1.27.2 (58cc626de 2018-07-18), 1.26.2 (594fb253c 2018-06-01), 1.25.0 (84203cac6 2018-03-25), 1.30.0-beta.7 (0ebb25088 2018-09-22), and 1.30.0-nightly (4591a245c 2018-09-22).
- Fix #25; Avoid crashing on some non-utf8 input.
Thanks again to @killercup and rust-fuzz/targets#119 for identifying more parser crashes on non-utf8 input.
Tested with rustc 1.28.0 (9634041f0 2018-07-30), 1.27.2 (58cc626de 2018-07-18), 1.26.2 (594fb253c 2018-06-01), 1.25.0 (84203cac6 2018-03-25), 1.24.1 (d3ae9a9e0 2018-02-27), 1.29.0-beta.9 (b4ec8d46e 2018-09-01), and 1.30.0-nightly (28bcffead 2018-09-01).
A default run of sass-spec found 1661 of 3482 tests passing.
Changes since version 0.8.0 includes:
- PR #24: Implement a Rgba type and use in css::Value and sass::Value.
- PR #22: Partial support for
@at-root
. Supports&
back-refs but notwith
andwithout
. - Add "foo/index.scss" and "foo/_index.scss" when attempting to find "foo" for import.
- The parser should fail rather than crash on some non-utf8 input.
- PR #21: Introduce a Number type, mainly for sharing some abstraction between css and sass values.
- Make the
rgba
function handle non-numeric inputs (e.g. calc(...)). - Implement the
feature-exists
function. - Make
!important
part of value rather than property, so it can be used in function / mixin arguments etc. - A css3 pseudo-element selector may have arguments.
- Add support for unicode ranges.
- The
@each
construct can bind multipe values. - PR #20: Division is now a BinOp rather than a special case.
- Minor improvement in parsing and formatting at-rules.
- Fix some clippy complaints.
- Minor documentation updates.
- Some updates to travis build script and test structure.
- Add appveyor (windows) continous integration testing.
- Depedency updates: num-rational 0.2.1, nom 4.0 (PR #23) and rand 0.5.
Thanks to @killercup and rust-fuzz/targets#119 for identifying some parser crashes on non-utf8 input.
Tested with rustc 1.28.0 (9634041f0 2018-07-30), 1.27.2 (58cc626de 2018-07-18), 1.26.2 (594fb253c 2018-06-01), 1.25.0 (84203cac6 2018-03-25), 1.24.1 (d3ae9a9e0 2018-02-27), 1.29.0-beta.6 (5c5be098e 2018-08-25), and 1.30.0-nightly (39e6ba821 2018-08-25).
A default run of sass-spec found 1583 of 3364 tests passing.
Changes since version 0.7.0 includes:
- PR #17, #18, and #19 from @ErichDonGubler: Improvements to
check_spec
. - Allow trailing comma in dictionary definition.
- Implement the
get-function
function, making a (named) function a css::Value, and modify the call function to take such a Value. The warning when the Value is a Literal is more motivated now. - Add weight arg for invert function.
- If a function call fails, output it as-is.
- Allow
@include
w/o ";" to be last input. - Use correct names for output styles. The supported styles are
expanded
andcompressed
. - Add maintenence status to manifest.
- Impement the
&
value, expanding to the selector containing the value. - Implement the
selector-parse
,selector-append
, andselector-nest
functions. - Fix AsciiExt warning on rust 1.23 and up.
- Fix #16, Do not build a no-op command line, by specifying commandline as required-features of the bin target. Thanks to @biluohc for the suggestion!
- Miscellaneous code cleanup, dependency updates and reformatting.
Tested with rustc 1.23.0 (766bd11c8 2018-01-01), 1.24.1 (d3ae9a9e0 2018-02-27), 1.25.0 (84203cac6 2018-03-25), 1.26.0-beta.2 (0e350672e 2018-04-05), and 1.27.0-nightly (eeea94c11 2018-04-06).
A default run of sass-spec found 1466 of 3339 tests passing (or 1520 of 6094 when claiming to be libsass). Changes since version 0.6.0 includes:
- Fix #15 by making building the commandline utility optional.
- Fix some issues with string quoting and list whitespace.
- Improve support for
@
-rules. - Use num-rational without default features, for faster compilation.
Tested with rustc 1.19.0 (0ade33941 2017-07-17), 1.20.0 (f3d6973f4 2017-08-27), 1.21.0 (3b72af97e 2017-10-09), 1.22.1 (05e2e1c41 2017-11-22), 1.23.0-beta.2 (c9107ee93 2017-12-08), and 1.24.0-nightly (1abeb436d 2017-12-27).
A default run of sass-spec found 1466 of 3339 tests passing (or 1520 of 6094 when claiming to be libsass). Changes since version 0.5.0 includes:
- Handle quoting and escaping in strings closer to correct.
- Updated lazy_static to version 1.0
- Some internal cleanup.
Tested with rustc 1.19.0 (0ade33941 2017-07-17), 1.20.0 (f3d6973f4 2017-08-27), 1.21.0 (3b72af97e 2017-10-09), 1.22.1 (05e2e1c41 2017-11-22), 1.23.0-beta.1 (082b0ff02 2017-11-21), and 1.24.0-nightly (cfba0d446 2017-12-05).
A default run of sass-spec found 1359 of 3331 tests passing (or 1416 of 6086 when claiming to be libsass). Changes since version 0.4.0 includes:
- Improve handling of quoted / unquoted strings and interpolation. Still not correct, but exhibits correct behavior in more tests than earlier.
- Support interpolation in selectors.
- Support interpolation in property names.
- PR #14: Implement map syntax and map functions.
- Make error handling not break if nom is compiled with verbose-errors.
- Miscellaneous internal cleanups, some suggested by clippy.
Tested with rustc 1.18.0 (03fc9d622 2017-06-06), 1.19.0 (0ade33941 2017-07-17), 1.20.0 (f3d6973f4 2017-08-27), 1.21.0 (3b72af97e 2017-10-09), 1.22.0-beta.2 (a0a837c45 2017-10-20), and 1.23.0-nightly (d762b1d6c 2017-11-04).
A default run of sass-spec found 1163 of 3331 tests passing (or 1227 of 6086 when claiming to be libsass). Changes since version 0.3.4 includes:
- Implemented bracketed lists.
- Support CSS3 pseudo elements
- Added functions:
unitless
,content-exists
,zip
,is-bracketed
,join
. - Update the nom parser library to 3.2.
- PR #13 Split of css values from sass values.
- PR #10 Preparatory work for splitting Value
- PR #7 Extract parser into separate module
- PR #8 Extract som modules from lib.rs
- Pin rustfmt to 0.8.4, to avoid surprising formatting changes.
- PR #6 Don't require a git plugin for the check-spec.
Thank You to Jonas Nicklas for many contributions.
Tested with rustc 1.18.0 (03fc9d622 2017-06-06), 1.19.0 (0ade33941 2017-07-17), 1.20.0 (f3d6973f4 2017-08-27), rustc 1.21.0 (3b72af97e 2017-10-09), 1.22.0-beta.1 (e694dd37b 2017-10-12), and 1.22.0-nightly (7778906be 2017-10-14).
A default run of sass-spec found 1146 of 3310 tests passing (or 1215 of 6065 when claiming to be libsass). Changes since version 0.3.2 includes:
- Improve handling of at-rules.
- Allow block comments in selectors.
- Make FileContext::file(..) public.
- Test and fix type-of for booleans.
- Test and fix parsing of some strange lists.
- Test and fix unary operations.
- Test and fix some strange string values.
- Some internal cleanup and code restructuring.
Tested in rust 1.15.1 (021bd294c 2017-02-08), 1.16.0 (30cf806ef 2017-03-10), 1.17.0 (56124baa9 2017-04-24), 1.18.0-beta.4 (0308c9865 2017-05-27), and 1.19.0-nightly (0418fa9d3 2017-06-04).
A default run of sass-spec found 1053 of 3299 tests passing (or 1111 of 6054 when claiming to be libsass). Changes since version 0.3.0 includes:
- Clean up nom error creation, to be compatible with both default and verbose-errors nom.
- Implement some more quote strangenes.
- Minor internal cleanup
Tested in rust 1.15.1, 1.16.0, 1.17.0 (stable), 1.18.0-beta.1 (4dce67253 2017-04-25), and 1.19.0-nightly (f4209651e 2017-05-05).
A default run of sass-spec found 1039 of 3299 tests passing (or 1097 of 6054 when claiming to be libsass). Changes since version 0.2.0 includes:
- PR #4: Support application-defined functions in rust.
- Equal strings are equal even if the quoting differs (e.g. foo == "foo").
- Improved value parsing in many ways.
- Implemened numeric rounding rules to match libsass default.
- Improved handling of null values.
- Fix some minor output formatting issues.
- Handle arguments to pseudo-selectors (which are themselfs selectors) properly.
- Support for rust 1.14 is dropped.
Tested in rust 1.15.1, 1.16.0, 1.17.0 (stable), 1.18.0-beta.1 (4dce67253 2017-04-25), and 1.19.0-nightly (f4209651e 2017-05-05).
A default run of sass-spec found 841 of 3294 tests passing (or 899 of 6049 when claiming to be libsass). Changes since version 0.1.10 includes:
- Err results from public functions is now
Error
, notString
. This is a breaking change in public api. - PR #2: value interpolation (as separate values and in strings).
- Implement basic
@content
for mixins (some scoping issues remains). - Support namespace properties.
- Improve parsing of unquoted strings.
- Implement the
call()
function. - Implement the
ie-hex-str()
function. - Allow alternative parameter names to
rgba()
function. - Improve defered operators handling.
- Improve scopeing and value evaluating (but not enough).
- Allow function declarations in blocks.
- Implement
for
,while
, andeach
in user-defined functions. - Fix scoping error for while loops.
- Support css unary + and -.
- Misc internal or smaller improvements (some suggested by clippy).
Tested in rust 1.14.0, 1.15.1, 1.16.0, 1.17.0 (stable), 1.18.0-beta.1 (4dce67253 2017-04-25) and 1.18.0-nightly (94e884b63 2017-04-27).
- Improve string concatenation with plus operator.
- Support
*
in selectors - Support
\
in selectors - Support varargs functions.
- Allow trailing commas in lists.
- Implement list functions
append
,length
, andindex
. - Implement numeric functions
min
andmax
. - Improve
@for
and@each
loop handling. - Internal cleanup and refactorisation.
Tested in rust 1.14.0, 1.15.1, 1.16.0 (stable), 1.17.0-beta.3 (beta), and 1.18.0-nightly (28a742997 2017-04-13).
A default run of sass-spec found 576 of 3294 tests passing (or 619 of 6049 when claiming to be libsass). Changes since version 0.1.6 includes:
- Support user-defined functions.
- Support functions
global_variable_exists
,function_exists
,mixin_exists
. - Support
@each
,@for
and@while
loops. - Make dash and underscore equivalent in names.
- Fix all tests from
spec/scope
. - Improve documentation.
- Miscellaneous refactorisations and cleanups.
Tested in rust 1.14.0, 1.15.1, 1.16.0 (stable), 1.17.0-beta.3 (beta), and 1.18.0-nightly (53f4bc311 2017-04-07).
A default run of sass-spec found 502 of 3289 tests passing (or 532 of 6044 when claiming to be libsass). Changes since version 0.1.4 includes:
- Many more functions implemented.
- Better support för
at
directieves. - Support the
!default
tag on variable declaration. - Support all known css units.
- Support
!important
tag on properties. - Allow the
*
character inside comments.
Tested in rust 1.14.0, 1.15.1, 1.16.0-beta.3 (stable), and 1.17.0-nightly (b1e31766d 2017-03-03).
A default run of sass-spec found 420 of 3286 tests running (or 449 of 6041 when claiming to be libsass).
- Very basic support for media queries.
- Implement more color functions (the internal representation of a color now uses Rational for the channels, to avoid rounding errors when using the result of one color function as input to another).
- More complete parsing of simple numbers.
- Support ambiguous imports, as examplified by basic test 33.
- Use the
?
operator rather than thetry!
macro. - Proper handling of escaped quotes in quoted strings (basic test 53).
- Miscellaneous internal cleanups and refactorings
Tested in rust 1.14, 1.15, and stable and nightly as of 2017-02-08.
Second release. Passes 380 tests of 6026 from sass-spec. Changes since 0.1.0 include:
- Basic pseudo-classes.
- Functions return a Result (so they can fail without panic). Note that all other error handling is still simply panics.
- Implemented functions
str-slice
,str-insert
,str-length
. - Documentation
First release to crates.io. Passes 346 tests of the sass-spec suite.
The first three tests (of several thousand) works. :-)