Skip to content

Latest commit

 

History

History
313 lines (239 loc) · 13 KB

CHANGELOG.md

File metadata and controls

313 lines (239 loc) · 13 KB

0.13.3

  • implement builtin string-module function string.split(..) (#96) by @xpe
  • implement functionality for intercepting logs (#93) by cryocz

0.13.2

  • update rustix dependency to silence security warning
  • fix @forward statement altering the scope of the forwarded module (#85) by @kketch
  • bump MSRV to 1.70.0

0.13.1

  • update clap dependency to 4.x.x to silence atty security warning
  • bump MSRV to 1.64.0 for new clap version
  • fix bug in which --no-charset flag wasn't respected

0.13.0

  • fix various module system bugs when combined with @import. this is potentially breaking in rare cases where users were relying on the incorrect behavior
  • expose more AST internals in grass_compiler
  • allow building docs with stable/beta rust compiler
  • support ...$keys argument to map-get(..)/map.get(..) (#83)

0.12.4

  • implement builtin map-module functions map.deep-merge(..) and map.deep-remove(..)

0.12.3

No visible changes for users of the grass crate

Exposes more internals of the grass_compiler crate, allowing for custom functions implemented in rust to be accessed from Sass.

0.12.2

  • implement an import cache, significantly improving the performance of certain pathological cases
  • slash lists can be compared using ==
  • resolve rounding errors for extremely large numbers
  • potentially breaking bug fixes in certain color functions
    • color.hwb(..) no longer allows whiteness or blackness values outside the bounds 0% to 100%
    • scale-color(..) no longer allows the $hue argument. previously it was ignored
    • scale-color(..), change-color(..), and adjust-color(..) no longer allow invalid combinations of arguments or unknown named arguments
    • many functions that accept hues now convert other angle units (rad, grad, turn) to deg. previously the unit was ignored
  • improve compressed output of selectors containing newlines and rgba(..) colors
  • improve resolution of imports containing explicit file extensions, e.g. @import "foo.scss"
  • fix bug in which whitespace was not emitted between + or - inside calc for compressed output (#71 by @ModProg)

0.12.1

  • add grass::include! macro to make it easier to include CSS at compile time
  • various optimizations improving the bootstrap benchmark by ~30% and the bulma benchmark by ~15%
  • improve error message for complex units in calculations
  • more accurate formatting of named arguments in arglists when passed to inspect(..)
  • more accurate formatting of nested lists with different separators when passed to inspect(..)
  • support $whiteness and $blackness as arguments to scale-color(..)
  • more accurate list separator from join(..)
  • resolve unicode edge cases in str-index(..)
  • more robust support for @forward prefixes
  • allow strings as the first argument to call(..)
  • bug fix: add back support for the $css argument to get-function(..). regressed in 0.12.0

0.12.0

  • complete rewrite of parsing, evaluation, and serialization steps
  • implement the indented syntax
  • implement plain CSS imports
  • support for custom properties
  • represent all numbers as f64, rather than using arbitrary precision
  • implement media query merging
  • implement builtin function keywords
  • implement Infinity and -Infinity
  • implement the @forward rule
  • feature complete parsing of @supports conditions
  • support media queries level 4
  • implement calculation simplification and the calculation value type
  • implement builtin fns calc-args, calc-name
  • add builtin math module variables $epsilon, $max-safe-integer, $min-safe-integer, $max-number, $min-number
  • allow angle units turn and grad in builtin trigonometry functions
  • implement @at-root conditions
  • implement @import conditions
  • remove dependency on num-rational and beef
  • support control flow inside declaration blocks For example:
a {
  -webkit-: {
    @if 1 == 1 {
      scrollbar: red;
    }
  }
}

will now emit

a {
  -webkit-scrollbar: red;
}
  • always emit rgb/rgba/hsl/hsla for colors declared as such in expanded mode
  • more efficiently compress colors in compressed mode
  • treat :where the same as :is in extension
  • support "import-only" files
  • treat @elseif the same as @else if
  • implement division of non-comparable units and feature complete support for complex units
  • support 1 arg color.hwb()

0.11.2

  • make grass::Error a Send type
  • expose more internals of grass::Error, allowing for custom formatting
  • fix WASM builds

0.11.1

  • fix load path bug in which paths were searched for relative to the SCSS file, not the executable (#57)

0.11.0

  • fs option added to allow interception and reimplementation of all file system operations (such as imports)
  • wasm feature renamed to/replaced with wasm-exports, which no longer materially alters the API: from_path is reinstated, and from_string once again returns the full error type; but the WASM export from_string (which returns a string error) is now a new function from_string_js. (It was renamed from wasm to wasm-exports because the name was misleading; Rust code that uses grass doesn’t need this feature, it’s solely to get this from_string WASM export.)

0.10.8

  • bugfix: properly emit the number 0 in compressed mode (#53)

0.10.7

  • special case plain CSS fn clamp
  • support more uses of plain CSS fns inside rgb/rgba/hsl/hsla
  • better support for @at-root at the toplevel and inside media queries
  • bugfixes for the module system
  • more robust handling of load paths that are directories

0.10.6

  • feature complete, byte-for-byte support for bootstrap
    • add bootstrap v5.0.2 to ci
    • run script to verify output against the last 2,500 commits to bootstrap
  • feature complete min/max support -- special functions and min/max are now allowed as arguments
  • removed dependency on peekmore, which sped up parsing and simplified lookahead
  • emit comments inside the @if rule body
  • fix bug in hue(...) function in which the value would be incorrect when the red channel was the highest and the green channel was lower than the blue channel
  • no longer round output from saturation(...) function
  • improve handling of newlines for @media, @supports, @at-root, placeholder selectors, unrelated style rules, and unknown @-rules
  • arglists can be equal to comma separated lists
  • throw error for invalid uses of @charset
  • more robustly parse @else if, allowing escaped and uppercase characters
  • resolve two @extend bugs -- one in which we would incorrectly emit a b, a > b as a selector, even though a b is a superselector of a > b, and a feature called "three-level extend loop", in which a stylesheet where a extends b, b extends c, and c extends a would fail to include all 3 selectors in certain places
  • support compressed values for comma separated lists and numbers
  • more robustly parse unknown @-rules

0.10.5

  • support compressed output
  • support new builtin functions math.div, map.set
  • support the HWB colorspace and builtin functions color.hwb, color.blackness, color.whiteness
  • :is pseudo selector is now considered an alias of :matches in @extend
  • support $keys... argument in map.merge
  • % now implements the modulo operation, rather than finding the remainder. this largely affects negative numbers
  • fix parsing bug in which /***/ in a selector would miss the closing /

0.10.4

  • plain css invert(..) accepts numbers with any unit
  • plain css imports (e.g. @import url(foo) or @import "foo.css") are now emitted at the top of documents

0.10.3

  • hyphen followed by interpolation is not treated as subtraction, e.g. 10-#{10} => 10 -10 rather than 0
  • function arguments do not affect variables in outer scopes (fixes #37)
  • improve error messages for NaN with units passed to builtin functions

0.10.2

0.10.1

  • implement @use and the module system
  • support the filter syntax for function arguments, e.g. alpha(opacity=1)
  • disallow certain at-rules in functions, resolving several panics
  • allow vendor-prefixed special CSS functions, e.g. -webkit-calc(...)
  • allow decimal percent selectors inside @keyframes
  • allow vendor-prefixed @keyframes
  • resolve parsing bug for maps involving silent comments
  • allow escaped ! in selectors
  • allow multiline comments in functions
  • resolve several panics on malformed input when parsing bracketed lists
  • support NaN in all contexts
  • add support for unicode ranges
  • recognize plain CSS imports beginning with //, e.g. @import "//fonts.googleapis.com/css?family=Droid+Sans";
  • resolve integer overflows in @for when bounds were equal to i32::MIN and i32::MAX
  • allow quoted strings in default function arguments

0.10.0

  • bugfixes for @media query regressions
  • bugfixes for maps, arglists, and @each
  • implement string interning for identifiers and style properties
  • implement spec-compliant variable scoping
  • emit @import when importing url(...) or *.css
  • resolve all panics for malformed @import
  • various optimizations that now allow us to compile bootstrap 10% faster than libsass
  • errors inside builtin functions use inspect to print values
  • bugfixes for color and map equality (e.g. red == #ff0000)
  • hide unimplemented command line flags
  • implement CLI options for --quiet, --load-path (#22 by @JosephLing), --no-charset, --stdin, and --no-unicode
  • use unicode characters in error messages by default
  • allow comma separated @import statements (#23 by @JosephLing)
  • implement and correctly parse !optional in @extend
  • lazily evaluate !default variable values
  • disallow interpolation in mixin and function names
  • improve parsing for @supports and unknown at-rules

Breaking

  • functions now take an Options struct

0.9.5

A small release fixing potential build issues and improving documentation.

This release is not published to NPM due to a bug in wasm-pack.

0.9.4

  • implement @keyframes
  • don't strip newlines following comments in selectors

0.9.3

  • fix parsing bugs for empty bracketed lists
  • partially implement inverse units
  • remove all remaining todo!()s from binary and unary ops
  • parse keywords case sensitively
  • various optimizations that make bulma about 6x faster to compile

0.9.2

  • implement builtin functions min and max
  • bugfixes for @extend and selector-unify
  • allow @content to take arguments
  • bugfixes for @content, for example it will no longer infinitely recurse for chained mixins
  • better support queries in @media
  • bugfixes for @media
  • add support for splats, e.g. rgba([1, 2, 3, 4]...)
  • resolve a number of parsing bugs for @for, variable declarations, selectors, and maps
  • completely rewrite how styles are evaluated, allowing short circuiting of values like false and unit(foo) and if(true, foo, unit(foo)

0.9.1

This release is largely focused on @extend, but it also resolves some regressions resulting from the new parser.

  • implement @extend
  • properly document new API
  • MVP implementation of @supports
  • fix regression in which @at-root would panic when placed after a ruleset
  • fix regression related to @mixin and @function scoping when combined with outer, local variables
  • remove most remaining unwraps that could result in a panic

0.9.0

This release is focused on setting up the groundwork for implementing @extend as well as being able to compile Bootstrap.

  • implement all builtin selector functions
    • selector-append
    • selector-extend
    • selector-nest
    • selector-parse
    • selector-replace
    • selector-unify
    • simple-selectors
    • is-superselector
  • implement builtin function content-exists
  • allow @import, @warn, and @debug in all contexts, such as inside @mixin
  • refactor control flow evaluation, resolving some issues blocking Bootstrap

Breaking Changes

  • remove the StyleSheet struct in favor of freestanding functions, from_string and from_path

0.8.3

This release is largely focused on performance and robustness

  • implement smallint optimization for numbers, making some benchmarks 50% faster
  • remove bimap as a dependency for storing named colors in favor of an ad hoc, more specialized data structure
  • remove dozens of panics on malformed input
  • use beef::Cow instead of std::borrow::Cow
  • increase code coverage to 80%

0.8.2

This release contains significant (>10x) improvements for WASM speed. Performance is now comparable to libsass bindings with node-sass as well as dart-sass with dart2js. It is, however, roughly 4x slower than native grass.