272 Commits

Author SHA1 Message Date
Connor Skees
b46b0a9e6e
Merge pull request #11 from connorskees/optim-number-parse
use ad hoc parser for small integers
2020-05-30 19:06:55 -04:00
ConnorSkees
b658369e8a use fold instead of for loop 2020-05-27 13:53:47 -04:00
ConnorSkees
e9ffaa579e use ad hoc parser for small integers
this results in about a 3% speed up for small integer and float parsing
2020-05-26 23:38:24 -04:00
Vincent Prouillet
9ae3ce52be Fix fmt + sass 2020-05-26 16:29:39 +02:00
ConnorSkees
6820416c8d resolve merge conflicts 2020-05-25 16:15:42 -04:00
ConnorSkees
6e7938f969 increase code coverage for bit integers 2020-05-25 14:44:46 -04:00
ConnorSkees
bb53aaab8a replace std::borrow::Cow with beef::Cow 2020-05-25 13:09:20 -04:00
ConnorSkees
6d76e1518a refactor away many unwraps 2020-05-25 00:57:59 -04:00
ConnorSkees
ec83a9dff7 clippy 2020-05-24 17:41:24 -04:00
ConnorSkees
d90d998ccd remove unwrap in Value::is_null 2020-05-24 16:41:09 -04:00
ConnorSkees
3c129780d0 span_before in quoted string 2020-05-24 16:27:07 -04:00
ConnorSkees
e5cceb60ec track span_before when parsing values
this allows us to remove many panics on invalid input
2020-05-24 15:30:06 -04:00
ConnorSkees
812e9fec9c rustfmt 2020-05-24 13:50:45 -04:00
ConnorSkees
b5c1fb2013 ignore non-ascii numeric characters in numbers 2020-05-24 13:08:31 -04:00
ConnorSkees
f52d784756 remove panic from unclosed call args 2020-05-24 10:18:15 -04:00
ConnorSkees
737a6ba90d emit proper error on unclosed quote 2020-05-24 10:04:30 -04:00
ConnorSkees
042dbfa914 remove panics from missing identifiers 2020-05-24 08:56:53 -04:00
ConnorSkees
2aaaf59e4f make division with number as lhs more robust 2020-05-24 08:17:08 -04:00
ConnorSkees
cbec20f753 make value parsing more robust 2020-05-24 07:51:28 -04:00
ConnorSkees
5137353cb4 rustfmt 2020-05-23 14:08:40 -04:00
ConnorSkees
ff2962b124 remove more unwraps 2020-05-23 14:07:57 -04:00
ConnorSkees
34f9436163 remove unwrap in favor of if let 2020-05-23 14:03:47 -04:00
ConnorSkees
da768badea remove unwrap in favor of if let 2020-05-23 13:59:03 -04:00
ConnorSkees
076ee7ca4e remove redundant clone of identifier 2020-05-23 13:53:24 -04:00
ConnorSkees
a3548b0044 remove panic for missing equal 2020-05-23 11:50:25 -04:00
ConnorSkees
2a79fa2a40 implement some of the more esoteric binary ops
addition, subtraction, and multiplication of functions and maps, along
with correct error messages and tests
2020-05-22 23:30:48 -04:00
ConnorSkees
7261f57e01 emit proper error for map as rhs of addition 2020-05-22 20:47:53 -04:00
ConnorSkees
80e32b4290 emit proper error for map as lhs of addition 2020-05-22 20:34:41 -04:00
ConnorSkees
b4b2edc9a4 use Identifier for SassFunction names 2020-05-22 20:13:39 -04:00
ConnorSkees
283a2097ff rename Value::Ident to Value::String 2020-05-22 14:35:41 -04:00
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
5bed62c404 keywords are thread_local 2020-05-22 13:47:48 -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
ff8447fd7e handle operators as part of binops 2020-05-21 14:07:46 -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
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
d300d4e1fc test for ] in value 2020-05-21 00:09:52 -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
3fcd0b8be4 replace todo with unreachable to make clearer that methods should not be used 2020-05-20 21:05:55 -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
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
4ee82e66be refactor comparison ops to src/value/ops.rs 2020-05-16 22:45:32 -04:00