Commit graph

397 commits

Author SHA1 Message Date
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
d61f1e1c6e Remove our_need and fix default SyncState 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
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
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
Andrew Jeffery
e1bdf34471 More borrowing 2021-04-24 14:25:31 -07:00
Andrew Jeffery
00dcd531c1 Use more references 2021-04-24 14:25:31 -07:00
Andrew Jeffery
3fd548cbe1 Use nicer syntax for repeat 2021-04-24 14:25:31 -07:00
Andrew Jeffery
7573c58521 Implement encodable for slice of change hashes 2021-04-24 14:25:31 -07:00
Andrew Jeffery
69bbd8c64d Remove clone 2021-04-24 14:25:31 -07:00
Andrew Jeffery
469b40e371 Remove unnecessary brackets 2021-04-24 14:25:31 -07:00
Andrew Jeffery
34ede85699 Inline probe as usize 2021-04-24 14:25:31 -07:00
Andrew Jeffery
4dd2d42629 Use builtin function to build u32 from bytes 2021-04-24 14:25:31 -07:00
Andrew Jeffery
9cd146a464 Advance heads only needs slice 2021-04-24 14:25:31 -07:00
Andrew Jeffery
8b4632ae07 Use SyncHave::default 2021-04-24 14:25:31 -07:00
Andrew Jeffery
c5d3572670 Remove unwraps in sync 2021-04-24 14:25:31 -07:00
Andrew Jeffery
4b7bbe6710 Rename peer to sync 2021-04-24 14:25:31 -07:00
Andrew Jeffery
cd56799e1c Move all to sync 2021-04-24 14:25:31 -07:00
Andrew Jeffery
766b5621d4 Add more sync work 2021-04-24 14:25:31 -07:00
Andrew Jeffery
3eeb825138 Initial sync work 2021-04-24 14:25:31 -07:00
Andrew Jeffery
137e6d2808 Fix clippy lints 2021-04-07 08:07:53 -07:00
Andrew Jeffery
342504714a Format 2021-04-07 08:07:53 -07:00
Martin Kleppmann
38214ca21e
Merge pull request #65 from automerge/implement-compression
Implement compression
2021-04-02 17:47:39 +01:00
Martin Kleppmann
f63fbe6156 Fix release build 2021-04-02 17:40:52 +01:00
Gregory
f6b3964733 backend: remove unecessary draining of changes to apply. 2021-04-01 09:19:32 -07:00
Andrew Jeffery
d17554dfc4 Remove rc on backend 2021-03-31 08:59:38 -07:00
Andrew Jeffery
02e1a6b6cc Simplify if statement to remove unreachable case
If `op_by_id` contains `succ` then we can get the index straight away,
else we can do the original work. This means we don't need an `else`
case for a third situation as in reality there isn't one.
2021-03-30 09:01:03 -07:00
Andrew Jeffery
3f5a781c71
Simplify while stack not empty (#68) 2021-03-28 21:28:37 +01:00
Alex Good
82cf04ae49 Implement compression 2021-03-27 16:52:43 +00:00
Andrew Jeffery
1e36b62272
Check the checksum in the document on decoding (#62) 2021-03-26 13:59:03 +00:00
Andrew Jeffery
921e9859b2
Fix issue in RleDecoder with null runs (#63)
* Add test to check save and load works on failing input

We loop 100 times due to it being a flaky test, likely due to an
iteration order issue in hashmaps.

* Update printing diff of changes

* Add new case for save then load

* Add another failing test case for save_load

* Update test case

* Update test case to not use empty strings in keys

* Specify to decode into usize in rle decoder

The `decoder.read` call was previously inferring to use isize since the
`self.count` variable is that type. This meant that for a list of null
values >= 64 in length it would read it as negative and so enter an
infinite loop of reading nulls, even if there were other values to read.

This changes the read to use usize but introduces the issue of usize
potentially being bigger than isize. This should be very unlikely for
what it is currently used for though so I'll defer this to later work.

* Add a test case to check the repeated nulls issue in rle

* Update tests

* Specify reading rle len as i64 instead of isize
2021-03-26 13:57:08 +00:00
Alex Good
c103b0638e Ritual abasement at the altar of clippy 2021-03-02 19:35:00 +00:00
Alex Good
4f4674a4a1 Implement cursors in frontend 2021-03-02 16:07:52 +00:00
Alex Good
93d45c381d Run rustfmt 2021-02-15 15:04:05 +00:00
Alex Good
33328796cd Remove mutable reference to actors in OpSet::finalize_diffs 2021-02-12 12:03:10 -05:00
Alex Good
08f324f7e6 Merge ref encoding/decoding and value encoding/decoding 2021-02-12 12:03:10 -05:00
Alex Good
26dfc7ea40 Implement cursor logic in backend 2021-02-12 12:03:10 -05:00
Alex Good
2d31952d77 Implement encoding and decoding of cursor operations 2021-02-12 12:03:10 -05:00
Orion Henry
ef38e6d7da getting some WASM errors trying to access crypto in the browser - switching to SmallRng with a 0 seed for now - deterministic distribution of nodes in the skip list should be fine 2021-02-12 11:49:06 -05:00
Matt Ho
0c44edd919
fixed typos (#43) 2021-02-01 10:57:11 +00:00