* start updating tests
* start implementing bitmask-based change tracking (#1943)
* oops
* fix some await block stuff
* slots
* reactive declarations
* component bindings etc
* start fixing slots
* fix store value invalidations
* slot stuff
* fixes
* fix
* fixes
* fix some slot stuff
* fix some invalidations
* fix if blocks
* fix a test
* destructuring in lets
* fix shadowing
* fix if block case
* all runtime tests passinfg
* almost all tests passing
* update tests
* never hoist writable vars in dev mode, fix debug statements
* beef up shadowing test
* always use renderer.reference
* fix sourcemaps
* ugh so close
* all tests passing. phase one complete, i guess
* add test for component with more than 31 dynamic values
* stable sort
* stable sort that preserves order
* linting
* failing test for bitmask overflow
* ok i think this is it
* lint
* rename changed to dirty, for more internal consistency
* update tests
* use bitwise comparison
* add comments... sort of
* update tests
* moar comments
* I don't know what happened to these tests
Adds optional performance support for apps using an immutable data structure such as redux. Adds the `immutable` boolean option for compile and an `immutable` option to store as well. When these options are used, computed will not recompute if the object has not changed. If your data structure is not immutable you should not use this as svelte cannot know if a mutation was made on objects.
This PR also adds support for Dates and NaN values so computed properties will not recompute if a date has not changed or a value did not change from NaN.
This closes out these issues:
* https://github.com/sveltejs/svelte/issues/1146
* https://github.com/sveltejs/svelte/issues/1161
This is my first PR for Svelte. Any feedback would be appreciated!