Commit graph

694 commits

Author SHA1 Message Date
Orion Henry
98537d9b80 get changes fast 2021-04-26 11:06:41 -07:00
Andrew Jeffery
d1934f2286 Add formatting config 2021-04-26 09:42:36 -07:00
Andrew Jeffery
63d09d5c7e Change count back to isize 2021-04-26 09:40:27 -07:00
Andrew Jeffery
0305acbd49 Change unwrap_or_default to unwrap
Better to not silently ignore the error
2021-04-26 09:40:27 -07:00
Andrew Jeffery
94e0fd7e49 encoding: add documentation and use i64 for rledecoder count 2021-04-26 09:40:27 -07:00
Orion Henry
5d0e1052cc update get_missing for c api 2021-04-26 11:18:59 -04:00
Andrew Jeffery
18ce93603a encodable: Require encode function implementation 2021-04-25 15:19:33 -07:00
Andrew Jeffery
3a8baf7b0a Filter sent hashes down to only what they haven't seen
This means we no longer need to store an unbounded list of hashes while
syncing. This is possible as we know their heads and all changes we send
should be known to us, thus we can look in our history to see whether
they are safely applied at the other end.
2021-04-25 13:40:06 -07:00
Andrew Jeffery
748d8f9a58 Update nix config 2021-04-24 14:48:48 -07:00
Andrew Jeffery
6cd2a5f6e4 Cleanup wasm lib and make SyncState somewhat opaque to js
This introduces a JsSyncState struct to give js as a handle to a real
syncstate which we want to keep in the wasm memory region to avoid lots
of serde stuff.

Some methods (getters and setters) are needed on this struct as the js
tests look inside but these are not technically specified for end users.

Also, now we can keep it mostly opaque we don't need the custom
serializer, yay!
2021-04-24 14:25:31 -07:00
Andrew Jeffery
de06c92ab7 Bump interop hash and swap sent_hashes set for map in js
In Js we don't have nice hashsets so we use an object, in Rust we can
actually use a hashset so we now need to do a conversion.
2021-04-24 14:25:31 -07:00
Andrew Jeffery
1f3a6d0ffc CI: only run on main branch
Also runs on PRs to main
2021-04-24 14:25:31 -07:00
Andrew Jeffery
7fa62da400 CI: Don't test all targets
This unnecessarily runs the benchmarks to ensure they pass.
2021-04-24 14:25:31 -07:00
Andrew Jeffery
8bb14b73d5 Remove unnecessary conditional
We are deduplicating so it shouldn't matter if either is empty.
2021-04-24 14:25:31 -07:00
Andrew Jeffery
7b7ca898b8 Just keep the sync_with_changes benchmark 2021-04-24 14:25:31 -07:00
Andrew Jeffery
b3a7eff559 Use hashset for sent_hashes in js types 2021-04-24 14:25:31 -07:00
Andrew Jeffery
8d3096b823 Make sent_hashes a set instead of a vec
We don't care about the ordering so we can just store them in a hashset
all of the time, avoiding having to rebuild the hashset each time.
2021-04-24 14:25:31 -07:00
Andrew Jeffery
0e9ee417b9 Bump js_tests commit hash 2021-04-24 14:25:31 -07:00
Andrew Jeffery
e3de7d970a Only store hashes in sync_state rather than the actual changes 2021-04-24 14:25:31 -07:00
Andrew Jeffery
d9427da7ae Add total number of syncs to benchmark 2021-04-24 14:25:31 -07:00
Andrew Jeffery
35e6cacbe0 Improve benchmark names again 2021-04-24 14:25:31 -07:00
Andrew Jeffery
b8395339a5 Fix benchmark names 2021-04-24 14:25:31 -07:00
Andrew Jeffery
e2f0b1f15a Fix interval checking 2021-04-24 14:25:31 -07:00
Andrew Jeffery
701f63c624 Separate benchmark into sync and sync with changes 2021-04-24 14:25:31 -07:00
Andrew Jeffery
3c946bd234 Add sync benchmark 2021-04-24 14:25:31 -07:00
Andrew Jeffery
4c7e0c9167 Mutate the SyncState rather than consuming and returning 2021-04-24 14:25:31 -07:00
Andrew Jeffery
90cbbc7cab Fix ordering of receive_sync_message arguments 2021-04-24 14:25:31 -07:00
Andrew Jeffery
1f338393c3 Move SyncHave to state.rs 2021-04-24 14:25:31 -07:00
Andrew Jeffery
7c2fd94c62 Specify some capacities 2021-04-24 14:25:31 -07:00
Andrew Jeffery
d1df9202c7 js_tests: Update commit hash to use sync-protocol-3 branch 2021-04-24 14:25:31 -07:00
Andrew Jeffery
ffea77f985 Add actual binary types 2021-04-24 14:25:31 -07:00
Andrew Jeffery
e58ba342f8 Move state to separate module 2021-04-24 14:25:31 -07:00
Andrew Jeffery
21d19cc909 Move bloom filter to separate module 2021-04-24 14:25:31 -07:00
Andrew Jeffery
aebfdc6572 Update patches with pending_changes 2021-04-24 14:25:31 -07:00
Andrew Jeffery
ef36eba694 Allow passing heads to automerge c backend's get_missing_deps 2021-04-24 14:25:31 -07:00
Andrew Jeffery
d61f1e1c6e Remove our_need and fix default SyncState 2021-04-24 14:25:31 -07:00
Andrew Jeffery
6c93315d74 Make a new types module and add BinaryChange to get uint8array 2021-04-24 14:25:31 -07:00
Andrew Jeffery
0a377a858b Catch up with js changes 2021-04-24 14:25:31 -07:00
Andrew Jeffery
6b424d6e97 Take ownership of have 2021-04-24 14:25:31 -07:00
Andrew Jeffery
220580506d Performance updates
Where we do lots of contains checks we should use hashsets rather than
linear scan through a Vec.

Also tried to minimise some copying.
2021-04-24 14:25:31 -07:00
Andrew Jeffery
f8df532d25 Don't have an old_sync_state, just a sync_state 2021-04-24 14:25:31 -07:00
Andrew Jeffery
0655f7ade6 Remove unused log macro 2021-04-24 14:25:31 -07:00
Andrew Jeffery
f30a14d8f0 Add custom serializer just to get None to map to null 2021-04-24 14:25:31 -07:00
Andrew Jeffery
7c3f52f2e3 Fix need request when head is a false positive 2021-04-24 14:25:31 -07:00
Andrew Jeffery
62f6c6d288 Fix updating sharedHeads when a subset of changes is sent 2021-04-24 14:25:31 -07:00
Andrew Jeffery
6b6135d108 Require vec rather than slice 2021-04-24 14:25:31 -07:00
Andrew Jeffery
85f53685e2 Move to binary representation of changes in api 2021-04-24 14:25:31 -07:00
Andrew Jeffery
fd9e01fd9e Remove unwraps from wasm backend 2021-04-24 14:25:31 -07:00
Andrew Jeffery
7d13091393 Fix bug in get_missing_deps 2021-04-24 14:25:31 -07:00
Andrew Jeffery
68ddb2504e Improve js interop 2021-04-24 14:25:31 -07:00