1083 Commits

Author SHA1 Message Date
ConnorSkees
969726eb30 Revert string interning
There existed issues related to multithreaded tests that are difficult
to resolve. In the future interning may be reimplemented but in a more
limited capacity.

The motivation behind interning *values* was that it appeared checking
for named colors was responsible for much of the time lost when parsing
unquoted strings. If interning were to be reimplemented, it may make
sense to limit it solely to identifiers and style properties.
2020-05-22 14:20:31 -04:00
ConnorSkees
3e5abf0587 remove keywords 2020-05-22 14:09:28 -04:00
ConnorSkees
b15740976c remove superfluous allocations when resolving idents 2020-05-22 13:49:19 -04:00
ConnorSkees
0d52a1926e Merge branch 'master' of https://github.com/connorskees/grass 2020-05-22 13:48:00 -04:00
ConnorSkees
5bed62c404 keywords are thread_local 2020-05-22 13:47:48 -04:00
ConnorSkees
face457867 remove allocation when formatting interned strings 2020-05-22 13:07:24 -04:00
ConnorSkees
9a6c8ce019 add string interning
this seems to improve performance by ~20% as well as significantly
decrease memory usage
2020-05-21 22:46:40 -04:00
ConnorSkees
3e2689a4cb improve number parsing code coverage 2020-05-21 18:25:42 -04:00
ConnorSkees
117dc453e2 test for toplevel @ and & 2020-05-21 14:21:40 -04:00
ConnorSkees
ff8447fd7e handle operators as part of binops 2020-05-21 14:07:46 -04:00
ConnorSkees
2bd8232a00 emit proper error for toplevel " 2020-05-21 13:39:37 -04:00
ConnorSkees
4cba3dfd4e handle ~ in values 2020-05-21 13:36:55 -04:00
ConnorSkees
c714d52775 handle | in values 2020-05-21 13:31:03 -04:00
ConnorSkees
c68576bb23 refactor parsing of toplevel variables 2020-05-21 13:25:37 -04:00
ConnorSkees
6b9f68922f allow non-ascii alphanumeric characters in selectors 2020-05-21 13:09:20 -04:00
ConnorSkees
b94a2403d0 fix panics related to toplevel hash and quotes 2020-05-21 12:21:52 -04:00
ConnorSkees
67091115db better handle - at the start of idents 2020-05-21 12:06:42 -04:00
ConnorSkees
709b95d035 improve span information in values 2020-05-21 11:48:38 -04:00
ConnorSkees
0c144e22ba handle ` in values 2020-05-21 01:07:34 -04:00
ConnorSkees
a63e139cd8 handle ` at toplevel 2020-05-21 01:04:11 -04:00
ConnorSkees
28d5fdf636 handle ! at toplevel 2020-05-21 01:01:02 -04:00
ConnorSkees
c1ed4b3121 handle , at toplevel 2020-05-21 00:46:06 -04:00
ConnorSkees
2faf9fcb60 improve error handling of variables in styles 2020-05-21 00:41:04 -04:00
ConnorSkees
d300d4e1fc test for ] in value 2020-05-21 00:09:52 -04:00
ConnorSkees
dc5df157b0 replace macro with fn 2020-05-20 23:56:17 -04:00
ConnorSkees
fe37bab6f2 add color benchmarks 2020-05-20 22:51:56 -04:00
ConnorSkees
3decf3739c refactor Integer to separate file 2020-05-20 22:46:26 -04:00
ConnorSkees
45a29c9697 refactor Number::to_integer 2020-05-20 22:40:21 -04:00
ConnorSkees
38ffb5fe31 don't eat first char of loud comment 2020-05-20 22:39:31 -04:00
ConnorSkees
3fcd0b8be4 replace todo with unreachable to make clearer that methods should not be used 2020-05-20 21:05:55 -04:00
ConnorSkees
de2173cc31 refactor parsing of toplevel comments 2020-05-20 21:01:07 -04:00
ConnorSkees
10a30b4c65 test for comma separated list as map key 2020-05-20 20:35:59 -04:00
ConnorSkees
d39a45090a separate media and unknown at rules 2020-05-20 20:13:53 -04:00
ConnorSkees
d61f8abd41 add benches 2020-05-20 00:20:59 -04:00
ConnorSkees
bea90060a8 minor cleanup 2020-05-20 00:14:55 -04:00
ConnorSkees
8520048b26 implement small int optimizations
This allows for numbers within 18 digits of precision (the vast
majority of numbers) to be represented by just 2 i64s rather than 2 heap
allocated BigInts. In the future these optimizations may become more
aggressive and granular, but for now `grass` is already more than an order of
magnitude faster than `dart-sass`.
2020-05-19 23:23:04 -04:00
ConnorSkees
cf987abb53 remove bimap in favor of ad hoc structure 2020-05-19 19:13:49 -04:00
ConnorSkees
eb7fe52074 minor cleanup 2020-05-19 18:28:18 -04:00
ConnorSkees
017bc971b4 remove first line in readme 2020-05-19 15:48:53 -04:00
ConnorSkees
9a3035049a error tests for to-{upper,lower}-case 2020-05-19 00:21:43 -04:00
ConnorSkees
dae7a5028d add map fn tests for empty lists 2020-05-18 17:56:25 -04:00
ConnorSkees
d88ac86bd1 consolidate builtin imports 2020-05-18 17:50:52 -04:00
ConnorSkees
f8b8025d7c fix panic when missing colon in style 2020-05-17 11:09:21 -04:00
ConnorSkees
b58ed29fd0 add more span information
this resolves a lot of panics that occurred when there was no more input
2020-05-17 00:35:07 -04:00
ConnorSkees
6e7f1cc319 remove some panicking 2020-05-17 00:08:50 -04:00
ConnorSkees
eb2f3ebe5a remove ;; in tests 2020-05-16 22:46:13 -04:00
ConnorSkees
4ee82e66be refactor comparison ops to src/value/ops.rs 2020-05-16 22:45:32 -04:00
ConnorSkees
c07bb7ecce refactor == and != order of operations 2020-05-16 22:43:13 -04:00
ConnorSkees
697ff3d12f error messages for values beginnning with #
prior to this commit, error messages that occurred within idents
beginning with interpolation would be swallowed by error messages for
hex (largely, "Expected identifier.")
2020-05-16 19:25:11 -04:00
ConnorSkees
f3e7abdaba allow units to begin with escape sequences 2020-05-16 18:54:42 -04:00