Commit graph

791 commits

Author SHA1 Message Date
Alex Good
7f4460f200
Make the OpSet iterator faster
The opset iterator was using `OpTreeInternal::get(index)` to fetch each
successive element of the OpSet. This is pretty slow. We make this much
faster by implementing an iterator which is aware of the internal
structure of the OpTree.

This speeds up the save benchmark by about 10%.

Signed-off-by: Alex Good <alex@memoryandthought.me>
2022-05-01 00:07:39 +01:00
Orion Henry
9e6044c128 fixed panic in doc.values() - fixed concurrency bugs in range 2022-04-29 15:11:07 -04:00
Andrew Jeffery
6bf03e006c Add ability to skip in tree searches 2022-04-28 14:14:03 +01:00
Andrew Jeffery
8baacb281b Add save and load map benchmarks 2022-04-28 14:14:03 +01:00
Andrew Jeffery
7de0cff2c9 Rework benchmarks to be in a group 2022-04-28 14:14:03 +01:00
Andrew Jeffery
c38b49609f Remove clone from update
The cloning of the op was eating up a significant part of the increment
operation's time. This makes it zero-clone and just extracts the fields
needed.
2022-04-28 14:14:03 +01:00
Andrew Jeffery
db280c3d1d prop: Skip over nodes 2022-04-28 14:14:03 +01:00
Andrew Jeffery
7dfe311aae Store keys as well as elemids in visible index 2022-04-28 14:14:03 +01:00
Andrew Jeffery
bb4727ac34 Skip empty nodes in prop query 2022-04-28 14:14:03 +01:00
Andrew Jeffery
bdacaa1703 Use treequery rather than repeated gets 2022-04-28 14:14:03 +01:00
Andrew Jeffery
a388ffbf19 Add some benches 2022-04-28 14:14:03 +01:00
Andrew Jeffery
ca8a2a0762 Add cmake deps to nix flake 2022-04-28 14:13:36 +01:00
Orion Henry
be33f91346 Merge branch 'experiment' 2022-04-27 11:58:53 -04:00
Orion Henry
1f86a92ca1 typo 2022-04-25 12:47:13 -04:00
Andrew Jeffery
8e6306b546 Re-add caching and just clean docs dir from cache 2022-04-23 11:44:12 +01:00
Andrew Jeffery
37e29e4473 Remove docs cache
The docs aren't built with deps so it should be relatively quick to do
without a cache. The cache is also messing with keeping things from
previous versions (e.g. edit-trace).
2022-04-23 11:41:39 +01:00
Andrew Jeffery
adf8a5db12 Don't document edit-trace bin 2022-04-23 11:32:01 +01:00
Andrew Jeffery
ec446f4839 Add favicon 2022-04-23 11:31:58 +01:00
Andrew Jeffery
1e504de6ea
Merge pull request #351 from jeffa5/lints
Add generally useful lints and fixes
2022-04-23 11:21:32 +01:00
Andrew Jeffery
67da930a40 Add missing lints 2022-04-23 11:15:15 +01:00
Andrew Jeffery
9788cd881d Add debug impls 2022-04-23 11:14:07 +01:00
Andrew Jeffery
af951f324a Run cargo fix 2022-04-23 11:06:39 +01:00
Andrew Jeffery
48e397e82f Add lints 2022-04-23 11:05:43 +01:00
Andrew Jeffery
e7a8718434 Update badges 2022-04-23 10:47:21 +01:00
Andrew Jeffery
5b0ce54229 Add logo to docs 2022-04-23 10:46:03 +01:00
Andrew Jeffery
64c575fa85 Add image assets and sign to readme 2022-04-23 10:44:16 +01:00
Andrew Jeffery
a033ffa02b Update docs badge 2022-04-23 09:32:24 +01:00
Andrew Jeffery
afb1957d19 Add homepage badge 2022-04-23 09:31:28 +01:00
Andrew Jeffery
78ef6e3a2d Fix formatting 2022-04-23 09:27:01 +01:00
Andrew Jeffery
e3864e8fbd Add ci badge 2022-04-23 09:26:13 +01:00
Andrew Jeffery
23786bc746 Rename workflows 2022-04-23 09:26:05 +01:00
Andrew Jeffery
64363d7da2 Add docs badge 2022-04-23 09:22:25 +01:00
Andrew Jeffery
070608ddf2 Update CI to run on main branch 2022-04-22 17:51:01 +01:00
Andrew Jeffery
4f187859e7 Make web-sys optional and behind the wasm feature 2022-04-22 14:51:54 +01:00
Orion Henry
e41c5ae021 typescript bugfix 2022-04-20 22:05:05 -04:00
Orion Henry
e36f3c27c9
Merge pull request #347 from jeffa5/observer-counters
Add increment observation for observer
2022-04-20 20:35:18 -04:00
Orion Henry
1bee30c784
Merge branch 'main' into observer-counters 2022-04-20 20:35:07 -04:00
Orion Henry
9152c8366b
Merge pull request #343 from jkankiewicz/add_c_api
Add a C API to the "experiment" branch
2022-04-20 13:08:52 -04:00
Jason Kankiewicz
d099d553cc Apply patch from @orionz for the
"needless_lifetimes" clippy violation.
2022-04-20 10:21:56 -06:00
Orion Henry
1fc5e551bd
Merge pull request #346 from jeffa5/non-counter-increment
Prevent increment on non-counter
2022-04-20 11:48:52 -04:00
Andrew Jeffery
d667552a98 Add increment observation for observer 2022-04-20 14:44:04 +01:00
Andrew Jeffery
bfe7378968 Prevent increment on non-counter 2022-04-20 11:37:03 +01:00
Jason Kankiewicz
bc01267425 Fixed the clippy errors whose resolutions don't
cause compilation errors.
2022-04-20 01:54:57 -06:00
Jason Kankiewicz
dad2fd4928 Fixed a formatting violation. 2022-04-20 01:04:35 -06:00
Jason Kankiewicz
5128d1926d Replaced the verb "set" with the verb "put" within
the names of the source files for unit test suites.
2022-04-20 01:00:49 -06:00
Jason Kankiewicz
aaa2f7489b Fixed the compilation errors caused by merging PR
#310 into the "experiment" branch.
2022-04-20 00:57:52 -06:00
Jason Kankiewicz
8005f31a95 Squashed commit of the following:
commit 97a36e728e
Author: Jason Kankiewicz <jason.kankiewicz@gmail.com>
Date:   Fri Apr 8 03:24:46 2022 -0600

    Updated the unit test suites.

commit 56e2beb946
Author: Jason Kankiewicz <jason.kankiewicz@gmail.com>
Date:   Fri Apr 8 03:22:30 2022 -0600

    Tied the lifetime of an `AMobjId` struct to its
    owning `AMdoc` struct.

commit e16c980b2e
Author: Jason Kankiewicz <jason.kankiewicz@gmail.com>
Date:   Fri Apr 8 03:21:26 2022 -0600

    Reverted the `AMobjId` struct to being an opaque
    type.
    Added `AMobjId::new()`to fix a compilation error.
    Tied the lifetime of an `AMobjId` struct to its owning `AMdoc` struct.
    Added the `AMvalue::ChangeHash` variant.

commit 7c769b2cfe
Author: Jason Kankiewicz <jason.kankiewicz@gmail.com>
Date:   Fri Apr 8 03:12:15 2022 -0600

    Renamed the `AMobj` struct to `AMobjId` for
    clarity.
    Reverted the `AMobjId` struct to being an opaque type.
    Tied the lifetime of an `AMobjId` struct to its owning `AMdoc` struct.
    Renamed `AMcreate()` to `AMallocDoc()` for consistency with C's standard
    library functions.
    Renamed `AMdestroy()` to `AMfreeDoc()` for consistency with C's standard
    library functions.
    Renamed the `obj` function arguments to `obj_id` for clarity.
    Replaced the "set" verb in function names with the "put" verb for
    consistency iwth recent API changes.
    Renamed `AMclear()` to `AMfreeResult()` for consistency with C's
    standard library functions.
    Added `AMfreeObjId()` to enable dropping a persisted `AMojbId` struct.

commit 8d1b3bfcf2
Author: Jason Kankiewicz <jason.kankiewicz@gmail.com>
Date:   Fri Apr 8 02:52:52 2022 -0600

    Added a field for persisting `AMobjId` structs to the
    `AMdoc` struct.
    Renamed `AMdoc::create()` to `AMdoc::new()` to be more idiomatic.
    Added `AMdoc::insert_object()` and `AMdoc::set_object()` for persisting
    `AMobjId` structs.
    Added `AMdoc::drop_obj_id()` to enable dropping a persisted `AMobjId`
    struct.

commit b9b0f96357
Author: Jason Kankiewicz <jason.kankiewicz@gmail.com>
Date:   Thu Mar 17 15:17:08 2022 -0700

    Ensure CMake targets can be built after a clean.

commit d565db1ea8
Author: Jason Kankiewicz <jason.kankiewicz@gmail.com>
Date:   Thu Mar 17 15:10:09 2022 -0700

    Prevent unnecessary updating of the generated
    header file.

commit d3647e75d3
Author: Jason Kankiewicz <jason.kankiewicz@gmail.com>
Date:   Wed Mar 16 02:50:59 2022 -0700

    Documented the `AMObj.ID` struct member.

commit cc58cbf4bb
Author: Jason Kankiewicz <jason.kankiewicz@gmail.com>
Date:   Wed Mar 16 02:03:37 2022 -0700

    Normalize the formatting of the `AMobjType_tag()`
    function.

commit c2954dd2c7
Author: Jason Kankiewicz <jason.kankiewicz@gmail.com>
Date:   Wed Mar 16 02:02:03 2022 -0700

    Remove superfluous backslashes.

commit bcb6e759a4
Author: Jason Kankiewicz <jason.kankiewicz@gmail.com>
Date:   Wed Mar 16 02:01:33 2022 -0700

    Removed the `AMconfig()` function.
    Implemented the `AMgetActor()` function.
    Added the `AMgetActorHex()` function.
    Added the `AMsetActor()` function.
    Added the `AMsetActorHex()` function.

commit 9b2c566b9e
Author: Jason Kankiewicz <jason.kankiewicz@gmail.com>
Date:   Wed Mar 16 01:50:31 2022 -0700

    Added the "hex" and "smol_str" crate dependencies
    to the C API.

commit 99e06e1f73
Author: Jason Kankiewicz <jason.kankiewicz@gmail.com>
Date:   Wed Mar 16 01:06:15 2022 -0700

    Corrected a spelling error.

commit 629b19c71d
Author: Jason Kankiewicz <jason.kankiewicz@gmail.com>
Date:   Sun Mar 13 20:30:54 2022 -0700

    Align backslashes.

commit 09d25a32b7
Author: Jason Kankiewicz <jason.kankiewicz@gmail.com>
Date:   Sun Mar 13 20:30:23 2022 -0700

    Add EOF linefeed.

commit 4ed14ee748
Author: Jason Kankiewicz <jason.kankiewicz@gmail.com>
Date:   Sun Mar 13 20:05:30 2022 -0700

    Fix "fmt" CI job violations.

commit f53b40625d
Merge: 7d5538d8 e1f8d769
Author: Jason Kankiewicz <jason.kankiewicz@gmail.com>
Date:   Sun Mar 13 16:34:11 2022 -0700

    Merge branch 'c_api_exp' of https://github.com/automerge/automerge-rs into c_api_exp

commit 7d5538d8a4
Author: Jason Kankiewicz <jason.kankiewicz@gmail.com>
Date:   Sun Mar 13 16:31:22 2022 -0700

    Updated the C API's unit test suite.

commit 335cd1c85f
Author: Jason Kankiewicz <jason.kankiewicz@gmail.com>
Date:   Sun Mar 13 16:27:39 2022 -0700

    Removed superfluous `AMobj` traits.

commit 420f8cab64
Author: Jason Kankiewicz <jason.kankiewicz@gmail.com>
Date:   Sun Mar 13 16:25:48 2022 -0700

    Moved the `AMobj` struct into the `result` module.
    Changed the `AMobj` struct into an enum.
    Added the `AMbyteSpan` struct.
    Added the `AMvalue` enum.
    Added the `AMresult::Nothing` variant.

commit 4eca88ff01
Author: Jason Kankiewicz <jason.kankiewicz@gmail.com>
Date:   Sun Mar 13 15:56:06 2022 -0700

    Normalized all type name prefixes to "AM".
    Reduced the `AMstatus` enum's `<type>Ok` tags to a single `Ok` tag.
    Removed the `to_obj` macro.
    Added the `to_obj_id` macro.
    Moved the `AMobj` struct into the `result` module.
    Added the `AMresult::Nothing` variant.
    Added the `AMresultSize` function.
    Added the `AMresultValue` function.
    Added the `AMlistGet` function.
    Added the `AMmapGet` function.
    Removed the `AMgetObj` function.
    Added the `AMobjSize` function.

commit 2f94c6fd90
Author: Jason Kankiewicz <jason.kankiewicz@gmail.com>
Date:   Sun Mar 13 15:29:02 2022 -0700

    Compensate for unconfigurable cbindgen behavior.
    Prevent Doxygen documentation regeneration.

commit 5de00b7998
Author: Jason Kankiewicz <jason.kankiewicz@gmail.com>
Date:   Sun Mar 13 15:24:45 2022 -0700

    Alphabetized the cbindgen settings.

commit e1f8d769f4
Author: Orion Henry <orion.henry@gmail.com>
Date:   Thu Mar 10 08:53:07 2022 -0500

    update authors

commit 3e5525f1a6
Merge: f4ba1770 1c21abc5
Author: Orion Henry <orionz@users.noreply.github.com>
Date:   Wed Mar 9 14:36:29 2022 -0500

    Merge pull request #304 from jkankiewicz/c_api_exp

    Fix "fmt" workflow step violations

commit 1c21abc5a3
Author: Jason Kankiewicz <jason.kankiewicz@gmail.com>
Date:   Wed Mar 9 11:13:01 2022 -0800

    Fix CMake and Rust code formatting issues.

commit f4ba1770a9
Merge: bf1ae609 f41b30d1
Author: Orion Henry <orionz@users.noreply.github.com>
Date:   Wed Mar 9 12:05:58 2022 -0500

    Merge pull request #300 from jkankiewicz/c_api_exp

    Add unit test suites for the `AMlistSet*` and `AMmapSet*` functions

commit f41b30d118
Author: Jason Kankiewicz <jason.kankiewicz@gmail.com>
Date:   Tue Mar 8 22:08:36 2022 -0800

    Added a brief description of the `AmObjType` enum.
    Added the `AmStatus` enum to the enum docs page.

commit af7386a482
Author: Jason Kankiewicz <jason.kankiewicz@gmail.com>
Date:   Tue Mar 8 21:50:52 2022 -0800

    Added a unit test suite for the  `AMlistSet*`
    functions.

commit 1eb70c6eee
Author: Jason Kankiewicz <jason.kankiewicz@gmail.com>
Date:   Tue Mar 8 21:42:42 2022 -0800

    Added the rest of the `AMlistSet*` functions.
    Started the enum tags at `1` so they won't be
    inherently false.
    Alphabetized enum tags for the docs.
    Improved the docs.

commit 6489cba13b
Author: Jason Kankiewicz <jason.kankiewicz@gmail.com>
Date:   Tue Mar 8 18:01:46 2022 -0800

    Alphabetize functions in the docs.

commit 74c245b82d
Author: Jason Kankiewicz <jason.kankiewicz@gmail.com>
Date:   Tue Mar 8 07:54:25 2022 -0800

    Fix a typo in `AMmapSetObject()`'s documentation.

commit b2a879ba4e
Author: Jason Kankiewicz <jason.kankiewicz@gmail.com>
Date:   Tue Mar 8 06:24:22 2022 -0800

    Append missing EOF linefeed.

commit fbf0f29b66
Merge: c56d54b5 bf1ae609
Author: Jason Kankiewicz <jason.kankiewicz@gmail.com>
Date:   Tue Mar 8 01:08:12 2022 -0800

    Merge branch 'c_api_exp' of https://github.com/automerge/automerge-rs into c_api_exp

commit c56d54b565
Author: Jason Kankiewicz <jason.kankiewicz@gmail.com>
Date:   Tue Mar 8 01:07:11 2022 -0800

    Added unit test cases for the new `AMmapSet*`
    functions by @orionz.
    Moved the unit test cases for the `AMmapSet*` functions into their own
    unit test suite.

commit 7e59b55760
Author: Jason Kankiewicz <jason.kankiewicz@gmail.com>
Date:   Tue Mar 8 01:01:47 2022 -0800

    Edited the Doxygen documentation.

commit bf1ae60913
Author: Orion Henry <orion.henry@gmail.com>
Date:   Mon Mar 7 11:59:22 2022 -0500

    fmt

commit e82a7cc78e
Merge: a44e69d2 965c2d56
Author: Orion Henry <orionz@users.noreply.github.com>
Date:   Mon Mar 7 11:55:32 2022 -0500

    Merge pull request #299 from jkankiewicz/c_api_exp

    Enable unit testing of the C API

commit 965c2d56c3
Author: Jason Kankiewicz <jason.kankiewicz@gmail.com>
Date:   Mon Mar 7 06:37:36 2022 -0800

    Enable unit testing of the C API.

commit a44e69d2c7
Author: Orion Henry <orion.henry@gmail.com>
Date:   Sun Mar 6 14:00:46 2022 -0500

    remove datatype mapset

commit 88153c44e7
Merge: 41512e9c c6194e97
Author: Orion Henry <orionz@users.noreply.github.com>
Date:   Sun Mar 6 10:32:39 2022 -0500

    Merge pull request #298 from jkankiewicz/rebase_c_api_exp

    Rebase the "c_api_exp" branch on the "experiment" branch

commit c6194e9732
Merge: a2d745c8 41512e9c
Author: Jason Kankiewicz <jason.kankiewicz@gmail.com>
Date:   Sun Mar 6 01:09:56 2022 -0800

    Merge branch 'c_api_exp' into rebase_c_api_exp

commit a2d745c8d9
Author: Jason Kankiewicz <jason.kankiewicz@gmail.com>
Date:   Sun Mar 6 00:44:37 2022 -0800

    Replace the `utils::import_value` function with
    the `utils::import_scalar` function.
    Exclude `# Safety` comments from the documentation.

commit 0681e28b40
Author: Orion Henry <orion.henry@gmail.com>
Date:   Thu Mar 3 16:04:17 2022 -0500

    support new as_ref api

commit 916e23fcc2
Author: Orion Henry <orion.henry@gmail.com>
Date:   Thu Mar 3 15:56:27 2022 -0500

    fmt

commit 71cd6a1f18
Author: Orion Henry <orion.henry@gmail.com>
Date:   Thu Mar 3 15:54:38 2022 -0500

    lock data at 64 bit - no c_long

commit e00bd4c201
Author: Orion Henry <orion.henry@gmail.com>
Date:   Thu Mar 3 15:27:55 2022 -0500

    verbose

commit 39d157c554
Author: Orion Henry <orion.henry@gmail.com>
Date:   Thu Mar 3 14:56:23 2022 -0500

    clippy cleanup

commit 7f650fb8e0
Author: Jason Kankiewicz <jason.kankiewicz@gmail.com>
Date:   Wed Feb 23 02:14:06 2022 -0800

    Added Doxygen documentation generation.
    Renamed `AMDatatype` to `AmDataType`.
    Reorganized the `AmDataType` tags.
    Renamed `AMfree()` to `AMdestroy()`.
    Renamed `AMclone()` to `AMdup()`.

commit b0b803eef8
Author: Orion Henry <orion.henry@gmail.com>
Date:   Tue Feb 22 11:30:42 2022 -0500

    get simple test passing

commit cab9017ffa
Author: Orion Henry <orion.henry@gmail.com>
Date:   Wed Feb 9 15:50:44 2022 -0500

    rework to return a queriable result

commit a557e848f3
Author: Jason Kankiewicz <you@example.com>
Date:   Mon Feb 14 14:38:00 2022 -0800

    Add a CI step to run the CMake build of the C bindings for @alexjg.

commit c8c0c72f3b
Author: Jason Kankiewicz <you@example.com>
Date:   Mon Feb 14 14:09:58 2022 -0800

    Add CMake instructions for @orionz.

commit fb62c4b02a
Author: Jason Kankiewicz <you@example.com>
Date:   Thu Feb 10 23:28:54 2022 -0800

    Add CMake support.

commit 7bc3bb6850
Author: Jason Kankiewicz <you@example.com>
Date:   Thu Feb 10 22:49:53 2022 -0800

    Replace *intptr_t in C function signatures.

commit 60395a2db0
Author: Orion Henry <orion.henry@gmail.com>
Date:   Sun Feb 6 18:59:19 2022 -0500

    am_pop and am_pop_value

commit b1e88047d2
Author: Orion Henry <orion.henry@gmail.com>
Date:   Thu Feb 3 19:43:36 2022 -0500

    break the ground

commit 41512e9c78
Author: Orion Henry <orion.henry@gmail.com>
Date:   Thu Mar 3 16:04:17 2022 -0500

    support new as_ref api

commit bcee6a9623
Merge: cf98f78d 9a89db3f
Author: Orion Henry <orion.henry@gmail.com>
Date:   Thu Mar 3 15:58:19 2022 -0500

    Merge remote-tracking branch 'origin/experiment' into c_api_exp

commit cf98f78dd1
Author: Orion Henry <orion.henry@gmail.com>
Date:   Thu Mar 3 15:56:27 2022 -0500

    fmt

commit 3c1f449c5c
Author: Orion Henry <orion.henry@gmail.com>
Date:   Thu Mar 3 15:54:38 2022 -0500

    lock data at 64 bit - no c_long

commit 2c2ec0b0c5
Author: Orion Henry <orion.henry@gmail.com>
Date:   Thu Mar 3 15:27:55 2022 -0500

    verbose

commit b72b9c989a
Author: Orion Henry <orion.henry@gmail.com>
Date:   Thu Mar 3 14:56:23 2022 -0500

    clippy cleanup

commit 3ba28f91cc
Author: Jason Kankiewicz <jason.kankiewicz@gmail.com>
Date:   Wed Feb 23 02:14:06 2022 -0800

    Added Doxygen documentation generation.
    Renamed `AMDatatype` to `AmDataType`.
    Reorganized the `AmDataType` tags.
    Renamed `AMfree()` to `AMdestroy()`.
    Renamed `AMclone()` to `AMdup()`.

commit 8564e5b753
Author: Orion Henry <orion.henry@gmail.com>
Date:   Tue Feb 22 11:30:42 2022 -0500

    get simple test passing

commit 60835e6ae7
Author: Orion Henry <orion.henry@gmail.com>
Date:   Wed Feb 9 15:50:44 2022 -0500

    rework to return a queriable result

commit 89466d9e8c
Author: Jason Kankiewicz <you@example.com>
Date:   Mon Feb 14 14:38:00 2022 -0800

    Add a CI step to run the CMake build of the C bindings for @alexjg.

commit e2485bd5fd
Author: Jason Kankiewicz <you@example.com>
Date:   Mon Feb 14 14:09:58 2022 -0800

    Add CMake instructions for @orionz.

commit b5cc7dd63d
Author: Jason Kankiewicz <you@example.com>
Date:   Thu Feb 10 23:28:54 2022 -0800

    Add CMake support.

commit 685536f0cf
Author: Jason Kankiewicz <you@example.com>
Date:   Thu Feb 10 22:49:53 2022 -0800

    Replace *intptr_t in C function signatures.

commit c1c6e7bb66
Author: Orion Henry <orion.henry@gmail.com>
Date:   Sun Feb 6 18:59:19 2022 -0500

    am_pop and am_pop_value

commit e68c8d347e
Author: Orion Henry <orion.henry@gmail.com>
Date:   Thu Feb 3 19:43:36 2022 -0500

    break the ground
2022-04-20 00:48:59 -06:00
Orion Henry
439b9104d6 touch up readme and package files 2022-04-19 14:48:33 -04:00
Andrew Jeffery
e65200b150 Add docs workflow 2022-04-19 19:08:28 +01:00
Orion Henry
77eb094aea
Merge pull request #332 from jeffa5/experiment-observer
Add OpObserver to the document
2022-04-19 13:36:43 -04:00