Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New implementation of reactive tables. #113

Merged
merged 3 commits into from
Nov 12, 2019
Merged

New implementation of reactive tables. #113

merged 3 commits into from
Nov 12, 2019

Conversation

pikatchu
Copy link
Collaborator

@pikatchu pikatchu commented Oct 28, 2019

Up until now, the values used in a reactive table had to implement
a bunch of traits (such as Equality, Orderable etc ...).
The reason was that the implementation was relying on a sort of
those values to function properly (compute the diffs etc ...).
The other weird thing is that the implementation was returning
a sorted array of the values inserted and was perform a "unique"
operation on them for no good reason other than it was convenient
for the old implementation.

This new implementation fixes that, the values don't have any constraint
other than being frozen (the interned pointer is used to do the operations).
The values returned by "get" preserve repetitions.

PS: Turns out the new implementation fixed a long standing bug in the
incremental type-checker when a module was changing name.

PS2: I used the opportunity to also fix issue #72.

Up until now, the values used in a reactive table had to implement
a bunch of traits (such as Equality, Orderable etc ...).
The reason was that the implementation was relying on a sort of
those values to function properly (compute the diffs etc ...).
The other weird thing is that the implementation was returning
a sorted array of the values inserted and was perform a "unique"
operation on them for no good reason other than it was convenient
for the old implementation.

This new implementation fixes that, the values don't have any constraint
other than being frozen (the interned pointer is used to do the operations).
The values returned by "get" preserve repetitions.

PS: Turns out the new implementation fixed a long standing bug in the
incremental type-checker when a module was changing name.

PS2: I used the opportunity to also fix issue #72.
@facebook-github-bot facebook-github-bot added the CLA Signed Do not delete this pull request or issue due to inactivity. label Oct 28, 2019
@pikatchu pikatchu merged commit ed6a290 into master Nov 12, 2019
pikatchu added a commit that referenced this pull request Nov 22, 2019
* New implementation of reactive tables.

Up until now, the values used in a reactive table had to implement
a bunch of traits (such as Equality, Orderable etc ...).
The reason was that the implementation was relying on a sort of
those values to function properly (compute the diffs etc ...).
The other weird thing is that the implementation was returning
a sorted array of the values inserted and was perform a "unique"
operation on them for no good reason other than it was convenient
for the old implementation.

This new implementation fixes that, the values don't have any constraint
other than being frozen (the interned pointer is used to do the operations).
The values returned by "get" preserve repetitions.

PS: Turns out the new implementation fixed a long standing bug in the
incremental type-checker when a module was changing name.

PS2: I used the opportunity to also fix issue #72.

* removed constraints on Reactive table type parameter

* revert changes in skip_to_native
@pikatchu pikatchu deleted the fixReactive branch December 27, 2019 14:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
CLA Signed Do not delete this pull request or issue due to inactivity.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants