automerge-rb 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/LICENSE.txt +22 -0
- data/README.md +175 -0
- data/ext/automerge_ext/automerge_ext.c +1805 -0
- data/ext/automerge_ext/extconf.rb +132 -0
- data/lib/automerge/version.rb +6 -0
- data/lib/automerge.rb +110 -0
- data/rust-toolchain.toml +4 -0
- data/vendor/automerge-rust/Cargo.lock +1909 -0
- data/vendor/automerge-rust/Cargo.toml +15 -0
- data/vendor/automerge-rust/automerge/Cargo.toml +78 -0
- data/vendor/automerge-rust/automerge/README.md +5 -0
- data/vendor/automerge-rust/automerge/benches/load_save.rs +102 -0
- data/vendor/automerge-rust/automerge/benches/map.rs +260 -0
- data/vendor/automerge-rust/automerge/benches/range.rs +37 -0
- data/vendor/automerge-rust/automerge/benches/sync.rs +95 -0
- data/vendor/automerge-rust/automerge/examples/README.md +7 -0
- data/vendor/automerge-rust/automerge/examples/quickstart.rs +57 -0
- data/vendor/automerge-rust/automerge/examples/watch.rs +94 -0
- data/vendor/automerge-rust/automerge/fuzz/Cargo.toml +29 -0
- data/vendor/automerge-rust/automerge/fuzz/fuzz_targets/load.rs +37 -0
- data/vendor/automerge-rust/automerge/src/autocommit.rs +1286 -0
- data/vendor/automerge-rust/automerge/src/automerge/current_state.rs +546 -0
- data/vendor/automerge-rust/automerge/src/automerge/tests.rs +2023 -0
- data/vendor/automerge-rust/automerge/src/automerge.rs +2071 -0
- data/vendor/automerge-rust/automerge/src/autoserde.rs +128 -0
- data/vendor/automerge-rust/automerge/src/change.rs +357 -0
- data/vendor/automerge-rust/automerge/src/change_graph.rs +1215 -0
- data/vendor/automerge-rust/automerge/src/change_queue.rs +46 -0
- data/vendor/automerge-rust/automerge/src/clock.rs +206 -0
- data/vendor/automerge-rust/automerge/src/columnar/column_range/boolean.rs +83 -0
- data/vendor/automerge-rust/automerge/src/columnar/column_range/delta.rs +148 -0
- data/vendor/automerge-rust/automerge/src/columnar/column_range/generic/group.rs +138 -0
- data/vendor/automerge-rust/automerge/src/columnar/column_range/generic/simple.rs +76 -0
- data/vendor/automerge-rust/automerge/src/columnar/column_range/generic.rs +93 -0
- data/vendor/automerge-rust/automerge/src/columnar/column_range/key.rs +272 -0
- data/vendor/automerge-rust/automerge/src/columnar/column_range/obj_id.rs +202 -0
- data/vendor/automerge-rust/automerge/src/columnar/column_range/opid_list.rs +329 -0
- data/vendor/automerge-rust/automerge/src/columnar/column_range/raw.rs +38 -0
- data/vendor/automerge-rust/automerge/src/columnar/column_range/rle.rs +216 -0
- data/vendor/automerge-rust/automerge/src/columnar/column_range/value.rs +547 -0
- data/vendor/automerge-rust/automerge/src/columnar/column_range.rs +17 -0
- data/vendor/automerge-rust/automerge/src/columnar/encoding/boolean.rs +197 -0
- data/vendor/automerge-rust/automerge/src/columnar/encoding/col_error.rs +88 -0
- data/vendor/automerge-rust/automerge/src/columnar/encoding/column_decoder.rs +133 -0
- data/vendor/automerge-rust/automerge/src/columnar/encoding/decodable_impls.rs +175 -0
- data/vendor/automerge-rust/automerge/src/columnar/encoding/delta.rs +96 -0
- data/vendor/automerge-rust/automerge/src/columnar/encoding/encodable_impls.rs +200 -0
- data/vendor/automerge-rust/automerge/src/columnar/encoding/leb128.rs +82 -0
- data/vendor/automerge-rust/automerge/src/columnar/encoding/properties.rs +178 -0
- data/vendor/automerge-rust/automerge/src/columnar/encoding/raw.rs +101 -0
- data/vendor/automerge-rust/automerge/src/columnar/encoding/rle.rs +239 -0
- data/vendor/automerge-rust/automerge/src/columnar/encoding.rs +67 -0
- data/vendor/automerge-rust/automerge/src/columnar/splice_error.rs +47 -0
- data/vendor/automerge-rust/automerge/src/columnar.rs +14 -0
- data/vendor/automerge-rust/automerge/src/convert.rs +112 -0
- data/vendor/automerge-rust/automerge/src/cursor.rs +296 -0
- data/vendor/automerge-rust/automerge/src/decoding.rs +475 -0
- data/vendor/automerge-rust/automerge/src/error.rs +159 -0
- data/vendor/automerge-rust/automerge/src/exid.rs +238 -0
- data/vendor/automerge-rust/automerge/src/hydrate/list.rs +140 -0
- data/vendor/automerge-rust/automerge/src/hydrate/map.rs +132 -0
- data/vendor/automerge-rust/automerge/src/hydrate/tests.rs +40 -0
- data/vendor/automerge-rust/automerge/src/hydrate/text.rs +89 -0
- data/vendor/automerge-rust/automerge/src/hydrate.rs +368 -0
- data/vendor/automerge-rust/automerge/src/indexed_cache.rs +113 -0
- data/vendor/automerge-rust/automerge/src/iter/doc.rs +603 -0
- data/vendor/automerge-rust/automerge/src/iter/keys.rs +93 -0
- data/vendor/automerge-rust/automerge/src/iter/list_range.rs +433 -0
- data/vendor/automerge-rust/automerge/src/iter/map_range.rs +316 -0
- data/vendor/automerge-rust/automerge/src/iter/spans.rs +601 -0
- data/vendor/automerge-rust/automerge/src/iter/tools.rs +427 -0
- data/vendor/automerge-rust/automerge/src/iter/values.rs +36 -0
- data/vendor/automerge-rust/automerge/src/iter.rs +25 -0
- data/vendor/automerge-rust/automerge/src/legacy/mod.rs +364 -0
- data/vendor/automerge-rust/automerge/src/legacy/serde_impls/actor_id.rs +25 -0
- data/vendor/automerge-rust/automerge/src/legacy/serde_impls/change_hash.rs +29 -0
- data/vendor/automerge-rust/automerge/src/legacy/serde_impls/element_id.rs +27 -0
- data/vendor/automerge-rust/automerge/src/legacy/serde_impls/mod.rs +31 -0
- data/vendor/automerge-rust/automerge/src/legacy/serde_impls/object_id.rs +36 -0
- data/vendor/automerge-rust/automerge/src/legacy/serde_impls/op.rs +668 -0
- data/vendor/automerge-rust/automerge/src/legacy/serde_impls/op_type.rs +26 -0
- data/vendor/automerge-rust/automerge/src/legacy/serde_impls/opid.rs +25 -0
- data/vendor/automerge-rust/automerge/src/legacy/serde_impls/scalar_value.rs +63 -0
- data/vendor/automerge-rust/automerge/src/legacy/utility_impls/element_id.rs +66 -0
- data/vendor/automerge-rust/automerge/src/legacy/utility_impls/key.rs +49 -0
- data/vendor/automerge-rust/automerge/src/legacy/utility_impls/mod.rs +4 -0
- data/vendor/automerge-rust/automerge/src/legacy/utility_impls/object_id.rs +74 -0
- data/vendor/automerge-rust/automerge/src/legacy/utility_impls/opid.rs +68 -0
- data/vendor/automerge-rust/automerge/src/lib.rs +315 -0
- data/vendor/automerge-rust/automerge/src/marks.rs +478 -0
- data/vendor/automerge-rust/automerge/src/op_set2/change/batch.rs +2002 -0
- data/vendor/automerge-rust/automerge/src/op_set2/change/collector.rs +974 -0
- data/vendor/automerge-rust/automerge/src/op_set2/change.rs +332 -0
- data/vendor/automerge-rust/automerge/src/op_set2/columns.rs +714 -0
- data/vendor/automerge-rust/automerge/src/op_set2/meta.rs +174 -0
- data/vendor/automerge-rust/automerge/src/op_set2/op.rs +1363 -0
- data/vendor/automerge-rust/automerge/src/op_set2/op_set/elems.rs +43 -0
- data/vendor/automerge-rust/automerge/src/op_set2/op_set/found_op.rs +60 -0
- data/vendor/automerge-rust/automerge/src/op_set2/op_set/index.rs +197 -0
- data/vendor/automerge-rust/automerge/src/op_set2/op_set/insert.rs +179 -0
- data/vendor/automerge-rust/automerge/src/op_set2/op_set/mark_index.rs +292 -0
- data/vendor/automerge-rust/automerge/src/op_set2/op_set/marks.rs +86 -0
- data/vendor/automerge-rust/automerge/src/op_set2/op_set/op_iter.rs +1295 -0
- data/vendor/automerge-rust/automerge/src/op_set2/op_set/op_query.rs +82 -0
- data/vendor/automerge-rust/automerge/src/op_set2/op_set/top_op.rs +50 -0
- data/vendor/automerge-rust/automerge/src/op_set2/op_set/visible.rs +290 -0
- data/vendor/automerge-rust/automerge/src/op_set2/op_set.rs +1793 -0
- data/vendor/automerge-rust/automerge/src/op_set2/parents.rs +133 -0
- data/vendor/automerge-rust/automerge/src/op_set2/skip_list.rs +714 -0
- data/vendor/automerge-rust/automerge/src/op_set2/types.rs +769 -0
- data/vendor/automerge-rust/automerge/src/op_set2.rs +18 -0
- data/vendor/automerge-rust/automerge/src/patches/patch.rs +95 -0
- data/vendor/automerge-rust/automerge/src/patches/patch_builder.rs +382 -0
- data/vendor/automerge-rust/automerge/src/patches/patch_log.rs +584 -0
- data/vendor/automerge-rust/automerge/src/patches.rs +7 -0
- data/vendor/automerge-rust/automerge/src/query/list_state.rs +230 -0
- data/vendor/automerge-rust/automerge/src/query/seek_mark.rs +142 -0
- data/vendor/automerge-rust/automerge/src/read.rs +326 -0
- data/vendor/automerge-rust/automerge/src/sequence_tree.rs +662 -0
- data/vendor/automerge-rust/automerge/src/storage/bundle/builder.rs +942 -0
- data/vendor/automerge-rust/automerge/src/storage/bundle/error.rs +42 -0
- data/vendor/automerge-rust/automerge/src/storage/bundle/meta.rs +23 -0
- data/vendor/automerge-rust/automerge/src/storage/bundle/storage.rs +146 -0
- data/vendor/automerge-rust/automerge/src/storage/bundle.rs +210 -0
- data/vendor/automerge-rust/automerge/src/storage/change/change_actors.rs +311 -0
- data/vendor/automerge-rust/automerge/src/storage/change/change_op_columns.rs +621 -0
- data/vendor/automerge-rust/automerge/src/storage/change/compressed.rs +51 -0
- data/vendor/automerge-rust/automerge/src/storage/change/op_with_change_actors.rs +1 -0
- data/vendor/automerge-rust/automerge/src/storage/change.rs +523 -0
- data/vendor/automerge-rust/automerge/src/storage/chunk.rs +312 -0
- data/vendor/automerge-rust/automerge/src/storage/columns/column.rs +42 -0
- data/vendor/automerge-rust/automerge/src/storage/columns/column_builder.rs +199 -0
- data/vendor/automerge-rust/automerge/src/storage/columns/column_specification.rs +340 -0
- data/vendor/automerge-rust/automerge/src/storage/columns/raw_column.rs +286 -0
- data/vendor/automerge-rust/automerge/src/storage/columns.rs +355 -0
- data/vendor/automerge-rust/automerge/src/storage/document/compression.rs +362 -0
- data/vendor/automerge-rust/automerge/src/storage/document.rs +411 -0
- data/vendor/automerge-rust/automerge/src/storage/load/change_collector.rs +15 -0
- data/vendor/automerge-rust/automerge/src/storage/load.rs +136 -0
- data/vendor/automerge-rust/automerge/src/storage/parse/leb128.rs +302 -0
- data/vendor/automerge-rust/automerge/src/storage/parse.rs +619 -0
- data/vendor/automerge-rust/automerge/src/storage/save/document.rs +27 -0
- data/vendor/automerge-rust/automerge/src/storage.rs +26 -0
- data/vendor/automerge-rust/automerge/src/sync/bloom.rs +161 -0
- data/vendor/automerge-rust/automerge/src/sync/message_builder.rs +118 -0
- data/vendor/automerge-rust/automerge/src/sync/state.rs +214 -0
- data/vendor/automerge-rust/automerge/src/sync/v1_compat_test/bloom.rs +162 -0
- data/vendor/automerge-rust/automerge/src/sync/v1_compat_test/mod.rs +625 -0
- data/vendor/automerge-rust/automerge/src/sync/v1_compat_test/state.rs +120 -0
- data/vendor/automerge-rust/automerge/src/sync.rs +2482 -0
- data/vendor/automerge-rust/automerge/src/text_diff/LICENSE +201 -0
- data/vendor/automerge-rust/automerge/src/text_diff/myers.rs +332 -0
- data/vendor/automerge-rust/automerge/src/text_diff/replace.rs +139 -0
- data/vendor/automerge-rust/automerge/src/text_diff/utils.rs +119 -0
- data/vendor/automerge-rust/automerge/src/text_diff.rs +515 -0
- data/vendor/automerge-rust/automerge/src/text_value.rs +276 -0
- data/vendor/automerge-rust/automerge/src/transaction/commit.rs +34 -0
- data/vendor/automerge-rust/automerge/src/transaction/inner.rs +1403 -0
- data/vendor/automerge-rust/automerge/src/transaction/manual_transaction.rs +147 -0
- data/vendor/automerge-rust/automerge/src/transaction/owned_transaction.rs +266 -0
- data/vendor/automerge-rust/automerge/src/transaction/result.rs +21 -0
- data/vendor/automerge-rust/automerge/src/transaction/transactable.rs +203 -0
- data/vendor/automerge-rust/automerge/src/transaction.rs +513 -0
- data/vendor/automerge-rust/automerge/src/types.rs +749 -0
- data/vendor/automerge-rust/automerge/src/validation.rs +29 -0
- data/vendor/automerge-rust/automerge/src/value.rs +763 -0
- data/vendor/automerge-rust/automerge/tests/batch_insert.rs +1034 -0
- data/vendor/automerge-rust/automerge/tests/block_tests.rs +887 -0
- data/vendor/automerge-rust/automerge/tests/convert_string_to_text.rs +72 -0
- data/vendor/automerge-rust/automerge/tests/diff_marks.rs +1508 -0
- data/vendor/automerge-rust/automerge/tests/fixtures/64bit_obj_id_change.automerge +0 -0
- data/vendor/automerge-rust/automerge/tests/fixtures/64bit_obj_id_doc.automerge +0 -0
- data/vendor/automerge-rust/automerge/tests/fixtures/counter_value_has_incorrect_meta.automerge +0 -0
- data/vendor/automerge-rust/automerge/tests/fixtures/counter_value_is_ok.automerge +0 -0
- data/vendor/automerge-rust/automerge/tests/fixtures/counter_value_is_overlong.automerge +0 -0
- data/vendor/automerge-rust/automerge/tests/fixtures/two_change_chunks.automerge +0 -0
- data/vendor/automerge-rust/automerge/tests/fixtures/two_change_chunks_compressed.automerge +0 -0
- data/vendor/automerge-rust/automerge/tests/fixtures/two_change_chunks_out_of_order.automerge +0 -0
- data/vendor/automerge-rust/automerge/tests/fuzz-crashers/action-is-48.automerge +0 -0
- data/vendor/automerge-rust/automerge/tests/fuzz-crashers/crash-da39a3ee5e6b4b0d3255bfef95601890afd80709 +0 -0
- data/vendor/automerge-rust/automerge/tests/fuzz-crashers/incorrect_max_op.automerge +0 -0
- data/vendor/automerge-rust/automerge/tests/fuzz-crashers/invalid_deflate_stream.automerge +0 -0
- data/vendor/automerge-rust/automerge/tests/fuzz-crashers/missing_actor.automerge +0 -0
- data/vendor/automerge-rust/automerge/tests/fuzz-crashers/overflow_in_length.automerge +0 -0
- data/vendor/automerge-rust/automerge/tests/fuzz-crashers/too_many_deps.automerge +0 -0
- data/vendor/automerge-rust/automerge/tests/fuzz-crashers/too_many_ops.automerge +0 -0
- data/vendor/automerge-rust/automerge/tests/test.rs +2668 -0
- data/vendor/automerge-rust/automerge/tests/test_mark_patches.rs +41 -0
- data/vendor/automerge-rust/automerge/tests/test_save_load_orphans.rs +84 -0
- data/vendor/automerge-rust/automerge/tests/text.rs +1098 -0
- data/vendor/automerge-rust/automerge/tests/text_encoding.rs +640 -0
- data/vendor/automerge-rust/automerge-c/CMakeLists.txt +439 -0
- data/vendor/automerge-rust/automerge-c/Cargo.toml +22 -0
- data/vendor/automerge-rust/automerge-c/README.md +233 -0
- data/vendor/automerge-rust/automerge-c/build.rs +21 -0
- data/vendor/automerge-rust/automerge-c/cbindgen.toml +48 -0
- data/vendor/automerge-rust/automerge-c/cmake/Cargo.toml.in +22 -0
- data/vendor/automerge-rust/automerge-c/cmake/automerge-c-config.cmake.in +99 -0
- data/vendor/automerge-rust/automerge-c/cmake/cbindgen.toml.in +48 -0
- data/vendor/automerge-rust/automerge-c/cmake/config.h.in +58 -0
- data/vendor/automerge-rust/automerge-c/cmake/enum-string-functions-gen.cmake +183 -0
- data/vendor/automerge-rust/automerge-c/cmake/file-regex-replace.cmake +33 -0
- data/vendor/automerge-rust/automerge-c/cmake/file-touch.cmake +35 -0
- data/vendor/automerge-rust/automerge-c/docs/CMakeLists.txt +39 -0
- data/vendor/automerge-rust/automerge-c/docs/img/brandmark.png +0 -0
- data/vendor/automerge-rust/automerge-c/examples/CMakeLists.txt +42 -0
- data/vendor/automerge-rust/automerge-c/examples/README.md +9 -0
- data/vendor/automerge-rust/automerge-c/examples/quickstart.c +131 -0
- data/vendor/automerge-rust/automerge-c/include/automerge-c/utils/result.h +30 -0
- data/vendor/automerge-rust/automerge-c/include/automerge-c/utils/stack.h +130 -0
- data/vendor/automerge-rust/automerge-c/include/automerge-c/utils/stack_callback_data.h +53 -0
- data/vendor/automerge-rust/automerge-c/include/automerge-c/utils/string.h +29 -0
- data/vendor/automerge-rust/automerge-c/src/actor_id.rs +193 -0
- data/vendor/automerge-rust/automerge-c/src/byte_span.rs +227 -0
- data/vendor/automerge-rust/automerge-c/src/change.rs +356 -0
- data/vendor/automerge-rust/automerge-c/src/cursor.rs +168 -0
- data/vendor/automerge-rust/automerge-c/src/doc/list.rs +636 -0
- data/vendor/automerge-rust/automerge-c/src/doc/map.rs +556 -0
- data/vendor/automerge-rust/automerge-c/src/doc/mark.rs +296 -0
- data/vendor/automerge-rust/automerge-c/src/doc/utils.rs +46 -0
- data/vendor/automerge-rust/automerge-c/src/doc.rs +1009 -0
- data/vendor/automerge-rust/automerge-c/src/index.rs +84 -0
- data/vendor/automerge-rust/automerge-c/src/item.rs +2177 -0
- data/vendor/automerge-rust/automerge-c/src/items.rs +401 -0
- data/vendor/automerge-rust/automerge-c/src/lib.rs +11 -0
- data/vendor/automerge-rust/automerge-c/src/obj.rs +216 -0
- data/vendor/automerge-rust/automerge-c/src/result.rs +653 -0
- data/vendor/automerge-rust/automerge-c/src/sync/have.rs +42 -0
- data/vendor/automerge-rust/automerge-c/src/sync/message.rs +146 -0
- data/vendor/automerge-rust/automerge-c/src/sync/state.rs +262 -0
- data/vendor/automerge-rust/automerge-c/src/sync.rs +7 -0
- data/vendor/automerge-rust/automerge-c/src/utils/result.c +33 -0
- data/vendor/automerge-rust/automerge-c/src/utils/stack.c +106 -0
- data/vendor/automerge-rust/automerge-c/src/utils/stack_callback_data.c +9 -0
- data/vendor/automerge-rust/automerge-c/src/utils/string.c +46 -0
- data/vendor/automerge-rust/automerge-c/test/CMakeLists.txt +67 -0
- data/vendor/automerge-rust/automerge-c/test/actor_id_tests.c +140 -0
- data/vendor/automerge-rust/automerge-c/test/base_state.c +17 -0
- data/vendor/automerge-rust/automerge-c/test/base_state.h +39 -0
- data/vendor/automerge-rust/automerge-c/test/byte_span_tests.c +119 -0
- data/vendor/automerge-rust/automerge-c/test/cmocka_utils.c +91 -0
- data/vendor/automerge-rust/automerge-c/test/cmocka_utils.h +42 -0
- data/vendor/automerge-rust/automerge-c/test/cursor_tests.c +263 -0
- data/vendor/automerge-rust/automerge-c/test/doc_state.c +27 -0
- data/vendor/automerge-rust/automerge-c/test/doc_state.h +17 -0
- data/vendor/automerge-rust/automerge-c/test/doc_tests.c +335 -0
- data/vendor/automerge-rust/automerge-c/test/enum_string_tests.c +148 -0
- data/vendor/automerge-rust/automerge-c/test/files/brave-ape-49.automerge +0 -0
- data/vendor/automerge-rust/automerge-c/test/item_tests.c +313 -0
- data/vendor/automerge-rust/automerge-c/test/list_tests.c +544 -0
- data/vendor/automerge-rust/automerge-c/test/macro_utils.c +38 -0
- data/vendor/automerge-rust/automerge-c/test/macro_utils.h +23 -0
- data/vendor/automerge-rust/automerge-c/test/main.c +33 -0
- data/vendor/automerge-rust/automerge-c/test/map_tests.c +1610 -0
- data/vendor/automerge-rust/automerge-c/test/mark_tests.c +124 -0
- data/vendor/automerge-rust/automerge-c/test/ported_wasm/basic_tests.c +1642 -0
- data/vendor/automerge-rust/automerge-c/test/ported_wasm/cursor_tests.c +108 -0
- data/vendor/automerge-rust/automerge-c/test/ported_wasm/suite.c +17 -0
- data/vendor/automerge-rust/automerge-c/test/ported_wasm/sync_tests.c +1280 -0
- data/vendor/automerge-rust/automerge-c/test/str_utils.c +15 -0
- data/vendor/automerge-rust/automerge-c/test/str_utils.h +17 -0
- data/vendor/automerge-rust/automerge-test/Cargo.toml +17 -0
- data/vendor/automerge-rust/automerge-test/README.md +3 -0
- data/vendor/automerge-rust/automerge-test/src/lib.rs +487 -0
- data/vendor/automerge-rust/hexane/CHANGELOG.md +34 -0
- data/vendor/automerge-rust/hexane/Cargo.toml +47 -0
- data/vendor/automerge-rust/hexane/README.md +292 -0
- data/vendor/automerge-rust/hexane/RESULTS.txt +20 -0
- data/vendor/automerge-rust/hexane/TODO +18 -0
- data/vendor/automerge-rust/hexane/benches/insert.rs +82 -0
- data/vendor/automerge-rust/hexane/benches/seek.rs +77 -0
- data/vendor/automerge-rust/hexane/benches/splice.rs +82 -0
- data/vendor/automerge-rust/hexane/src/aggregate.rs +288 -0
- data/vendor/automerge-rust/hexane/src/boolean.rs +478 -0
- data/vendor/automerge-rust/hexane/src/columndata.rs +2540 -0
- data/vendor/automerge-rust/hexane/src/cursor.rs +756 -0
- data/vendor/automerge-rust/hexane/src/delta.rs +793 -0
- data/vendor/automerge-rust/hexane/src/encoder.rs +639 -0
- data/vendor/automerge-rust/hexane/src/leb128.rs +82 -0
- data/vendor/automerge-rust/hexane/src/lib.rs +95 -0
- data/vendor/automerge-rust/hexane/src/pack.rs +325 -0
- data/vendor/automerge-rust/hexane/src/raw.rs +314 -0
- data/vendor/automerge-rust/hexane/src/rle.rs +928 -0
- data/vendor/automerge-rust/hexane/src/slab/tree.rs +1373 -0
- data/vendor/automerge-rust/hexane/src/slab/writer.rs +535 -0
- data/vendor/automerge-rust/hexane/src/slab.rs +224 -0
- data/vendor/automerge-rust/hexane/src/test.rs +108 -0
- data/vendor/bundle/ruby/3.3.0/bin/rake +29 -0
- data/vendor/bundle/ruby/3.3.0/bin/rake-compiler +29 -0
- data/vendor/bundle/ruby/3.3.0/bin/rake-compiler-dock +29 -0
- data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/History.rdoc +1732 -0
- data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/Manifest.txt +32 -0
- data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/README.rdoc +845 -0
- data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/Rakefile +97 -0
- data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/design_rationale.rb +54 -0
- data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/hoe/minitest.rb +30 -0
- data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/assertions.rb +850 -0
- data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/autorun.rb +6 -0
- data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/benchmark.rb +452 -0
- data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/compress.rb +94 -0
- data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/error_on_warning.rb +11 -0
- data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/expectations.rb +321 -0
- data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/hell.rb +11 -0
- data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/manual_plugins.rb +16 -0
- data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/mock.rb +327 -0
- data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/parallel.rb +72 -0
- data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/pride.rb +4 -0
- data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/pride_plugin.rb +135 -0
- data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/spec.rb +353 -0
- data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/test.rb +238 -0
- data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/test_task.rb +324 -0
- data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/unit.rb +42 -0
- data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest.rb +1250 -0
- data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/test/minitest/metametameta.rb +150 -0
- data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/test/minitest/test_minitest_assertions.rb +1677 -0
- data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/test/minitest/test_minitest_benchmark.rb +137 -0
- data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/test/minitest/test_minitest_mock.rb +1213 -0
- data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/test/minitest/test_minitest_reporter.rb +437 -0
- data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/test/minitest/test_minitest_spec.rb +1159 -0
- data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/test/minitest/test_minitest_test.rb +1374 -0
- data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/test/minitest/test_minitest_test_task.rb +57 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/History.rdoc +2454 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/MIT-LICENSE +21 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/README.rdoc +155 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/doc/command_line_usage.rdoc +171 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/doc/example/Rakefile1 +38 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/doc/example/Rakefile2 +35 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/doc/example/a.c +6 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/doc/example/b.c +6 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/doc/example/main.c +11 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/doc/glossary.rdoc +42 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/doc/jamis.rb +592 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/doc/proto_rake.rdoc +127 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/doc/rake.1 +156 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/doc/rakefile.rdoc +635 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/doc/rational.rdoc +151 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/exe/rake +27 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/application.rb +847 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/backtrace.rb +25 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/clean.rb +78 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/cloneable.rb +17 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/cpu_counter.rb +122 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/default_loader.rb +15 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/dsl_definition.rb +196 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/early_time.rb +22 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/ext/core.rb +26 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/ext/string.rb +176 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/file_creation_task.rb +25 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/file_list.rb +435 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/file_task.rb +58 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/file_utils.rb +137 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/file_utils_ext.rb +135 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/invocation_chain.rb +57 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/invocation_exception_mixin.rb +17 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/late_time.rb +18 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/linked_list.rb +112 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/loaders/makefile.rb +54 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/multi_task.rb +14 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/name_space.rb +38 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/options.rb +31 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/packagetask.rb +222 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/phony.rb +16 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/private_reader.rb +21 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/promise.rb +100 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/pseudo_status.rb +30 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/rake_module.rb +67 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/rake_test_loader.rb +27 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/rule_recursion_overflow_error.rb +20 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/scope.rb +43 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/task.rb +434 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/task_argument_error.rb +8 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/task_arguments.rb +113 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/task_manager.rb +333 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/tasklib.rb +12 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/testtask.rb +192 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/thread_history_display.rb +49 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/thread_pool.rb +157 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/trace_output.rb +23 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/version.rb +10 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/win32.rb +17 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake.rb +69 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/rake.gemspec +102 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/Gemfile +8 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/History.md +695 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/LICENSE.txt +20 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/README.md +476 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/Rakefile +15 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/appveyor.yml +22 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/bin/rake-compiler +24 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/cucumber.yml +4 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/compile.feature +79 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/cross-compile.feature +23 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/cross-package-multi.feature +15 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/cross-package.feature +14 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/java-compile.feature +22 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/java-no-native-compile.feature +33 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/java-package.feature +24 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/package.feature +40 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/step_definitions/compilation.rb +70 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/step_definitions/cross_compilation.rb +27 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/step_definitions/execution.rb +52 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/step_definitions/folders.rb +32 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/step_definitions/gem.rb +46 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/step_definitions/java_compilation.rb +7 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/support/env.rb +10 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/support/file_template_helpers.rb +137 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/support/generator_helpers.rb +123 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/support/platform_extension_helpers.rb +27 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/lib/rake/baseextensiontask.rb +90 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/lib/rake/compiler_config.rb +38 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/lib/rake/extensioncompiler.rb +51 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/lib/rake/extensiontask.rb +589 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/lib/rake/javaextensiontask.rb +321 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/tasks/bin/cross-ruby.rake +189 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/tasks/bootstrap.rake +11 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/tasks/common.rake +10 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/tasks/cucumber.rake +23 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/tasks/gem.rake +15 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/tasks/rspec.rake +9 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/CHANGELOG.md +446 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/CONTRIBUTING.md +109 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/Dockerfile.jruby +79 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/Dockerfile.mri.erb +282 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/Gemfile +8 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/LICENSE.txt +22 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/README.md +447 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/Rakefile +246 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/bin/rake-compiler-dock +18 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/buildkitd.toml +2 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/gem_helper.rb +54 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/mk_i686.rb +18 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/mk_musl_cross.sh +37 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/mk_osxcross.sh +45 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/mk_pkg_config.sh +24 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/parallel_docker_build.rb +169 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/patches/rake-compiler-1.3.1/0004-Enable-build-of-static-libruby.patch +38 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/patches/rake-compiler-1.3.1/0005-build-miniruby-first.patch +16 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/patches/rake-compiler-1.3.1/0006-ruby-4-rubyspec-capiext.patch +16 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/rcd-env.sh +6 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/runas +7 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/sigfw.c +45 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/strip_wrapper_codesign +17 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/strip_wrapper_vbox +30 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/sudoers +1 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/lib/rake_compiler_dock/colors.rb +43 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/lib/rake_compiler_dock/docker_check.rb +356 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/lib/rake_compiler_dock/predefined_user_group.rb +5 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/lib/rake_compiler_dock/starter.rb +206 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/lib/rake_compiler_dock/version.rb +4 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/lib/rake_compiler_dock.rb +151 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/mingw64-ucrt/Dockerfile +66 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/mingw64-ucrt/README.md +14 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/mingw64-ucrt/binutils-mingw-w64-ignore-check-errors.patch +13 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/mingw64-ucrt/gcc-mingw-w64-only-c-c++.patch +13 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/mingw64-ucrt/mingw-w64-enable-ucrt.patch +22 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/rake-compiler-dock.gemspec +34 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/env/Dockerfile.alpine +17 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/env/Dockerfile.debian +24 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/fixtures/mig_test_rpc.defs +8 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/rcd_test/Gemfile +11 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/rcd_test/Rakefile +97 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/rcd_test/ext/java/RcdTestExtService.java +19 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/rcd_test/ext/java/RubyRcdTest.java +16 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/rcd_test/ext/mri/extconf.rb +111 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/rcd_test/ext/mri/rcd_test_ext.c +65 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/rcd_test/ext/mri/rcd_test_ext.h +11 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/rcd_test/lib/rcd_test.rb +6 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/rcd_test/rcd_test.gemspec +28 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/rcd_test/test/test_basic.rb +49 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/test_environment_variables.rb +108 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/test_mig.rb +18 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/test_parallel_docker_build.rb +95 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/test_rubygems_plugins.rb +12 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/test_starter.rb +158 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/test_versions.rb +82 -0
- data/vendor/bundle/ruby/3.3.0/specifications/minitest-5.27.0.gemspec +32 -0
- data/vendor/bundle/ruby/3.3.0/specifications/rake-13.4.2.gemspec +26 -0
- data/vendor/bundle/ruby/3.3.0/specifications/rake-compiler-1.3.1.gemspec +33 -0
- data/vendor/bundle/ruby/3.3.0/specifications/rake-compiler-dock-1.12.0.gemspec +28 -0
- metadata +584 -0
|
@@ -0,0 +1,439 @@
|
|
|
1
|
+
cmake_minimum_required(VERSION 3.25 FATAL_ERROR)
|
|
2
|
+
|
|
3
|
+
project(automerge-c VERSION 0.3.0
|
|
4
|
+
LANGUAGES C
|
|
5
|
+
DESCRIPTION "C bindings for the Automerge Rust library.")
|
|
6
|
+
|
|
7
|
+
include(CTest)
|
|
8
|
+
|
|
9
|
+
include(CMakePackageConfigHelpers)
|
|
10
|
+
|
|
11
|
+
include(GNUInstallDirs)
|
|
12
|
+
|
|
13
|
+
list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake")
|
|
14
|
+
|
|
15
|
+
set(DEFAULT_LIBRARY_NAME "automerge")
|
|
16
|
+
|
|
17
|
+
if(NOT DEFINED LIBRARY_NAME)
|
|
18
|
+
set(LIBRARY_NAME "${DEFAULT_LIBRARY_NAME}")
|
|
19
|
+
endif()
|
|
20
|
+
|
|
21
|
+
set(DEFAULT_BINDINGS_NAME "${DEFAULT_LIBRARY_NAME}_core")
|
|
22
|
+
|
|
23
|
+
if(NOT DEFINED BINDINGS_NAME)
|
|
24
|
+
set(BINDINGS_NAME "${DEFAULT_BINDINGS_NAME}")
|
|
25
|
+
endif()
|
|
26
|
+
|
|
27
|
+
if(NOT DEFINED STATIC_LIBRARY_PREFIX)
|
|
28
|
+
set(STATIC_LIBRARY_PREFIX "${CMAKE_STATIC_LIBRARY_PREFIX}")
|
|
29
|
+
endif()
|
|
30
|
+
|
|
31
|
+
if(NOT DEFINED STATIC_LIBRARY_SUFFIX)
|
|
32
|
+
set(STATIC_LIBRARY_SUFFIX "${CMAKE_STATIC_LIBRARY_SUFFIX}")
|
|
33
|
+
endif()
|
|
34
|
+
|
|
35
|
+
IF(NOT DEFINED SHARED_LIBRARY_PREFIX)
|
|
36
|
+
set(SHARED_LIBRARY_PREFIX "${CMAKE_SHARED_LIBRARY_PREFIX}")
|
|
37
|
+
endif()
|
|
38
|
+
|
|
39
|
+
if(NOT DEFINED SHARED_LIBRARY_SUFFIX)
|
|
40
|
+
set(SHARED_LIBRARY_SUFFIX "${CMAKE_SHARED_LIBRARY_SUFFIX}")
|
|
41
|
+
endif()
|
|
42
|
+
|
|
43
|
+
option(BUILD_SHARED_LIBS "Enable the choice of a shared or static library.")
|
|
44
|
+
|
|
45
|
+
option(UTF32_INDEXING "Enable UTF-32 indexing.")
|
|
46
|
+
|
|
47
|
+
string(MAKE_C_IDENTIFIER ${PROJECT_NAME} SYMBOL_PREFIX)
|
|
48
|
+
|
|
49
|
+
string(TOUPPER ${SYMBOL_PREFIX} SYMBOL_PREFIX)
|
|
50
|
+
|
|
51
|
+
set(CARGO_TARGET_DIR "${PROJECT_BINARY_DIR}/Cargo/target")
|
|
52
|
+
|
|
53
|
+
set(CBINDGEN_INCLUDEDIR "${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_INCLUDEDIR}")
|
|
54
|
+
|
|
55
|
+
set(CBINDGEN_TARGET_DIR "${CBINDGEN_INCLUDEDIR}/${PROJECT_NAME}")
|
|
56
|
+
|
|
57
|
+
find_program (CARGO_CMD
|
|
58
|
+
"cargo"
|
|
59
|
+
PATHS "$ENV{CARGO_HOME}/bin"
|
|
60
|
+
DOC "The Rust package manager"
|
|
61
|
+
)
|
|
62
|
+
|
|
63
|
+
if(NOT CARGO_CMD)
|
|
64
|
+
message(FATAL_ERROR "Cargo (Rust package manager) not found! "
|
|
65
|
+
"Please install it and/or set the CARGO_HOME "
|
|
66
|
+
"environment variable to its path.")
|
|
67
|
+
endif()
|
|
68
|
+
|
|
69
|
+
find_program(RUSTC_CMD
|
|
70
|
+
"rustc"
|
|
71
|
+
PATHS "$ENV{CARGO_HOME}/bin"
|
|
72
|
+
DOC "The Rust compiler"
|
|
73
|
+
)
|
|
74
|
+
|
|
75
|
+
if(NOT RUSTC_CMD)
|
|
76
|
+
message(FATAL_ERROR "Rustc (Rust compiler) not found! "
|
|
77
|
+
"Please install it and/or set the CARGO_HOME "
|
|
78
|
+
"environment variable to its path.")
|
|
79
|
+
endif()
|
|
80
|
+
|
|
81
|
+
# In order to build with -Z build-std, we need to pass target explicitly.
|
|
82
|
+
# https://doc.rust-lang.org/cargo/reference/unstable.html#build-std
|
|
83
|
+
execute_process (
|
|
84
|
+
COMMAND ${RUSTC_CMD} -vV
|
|
85
|
+
OUTPUT_VARIABLE RUSTC_VERSION
|
|
86
|
+
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
87
|
+
)
|
|
88
|
+
string(REGEX REPLACE ".*host: ([^ \n]*).*" "\\1"
|
|
89
|
+
CARGO_TARGET
|
|
90
|
+
${RUSTC_VERSION}
|
|
91
|
+
)
|
|
92
|
+
|
|
93
|
+
set(CARGO_FLAGS --target=${CARGO_TARGET})
|
|
94
|
+
|
|
95
|
+
set(RUSTFLAGS "")
|
|
96
|
+
|
|
97
|
+
if(CMAKE_BUILD_TYPE MATCHES Debug)
|
|
98
|
+
set(CARGO_BUILD_TYPE "debug")
|
|
99
|
+
else()
|
|
100
|
+
set(CARGO_BUILD_TYPE "release")
|
|
101
|
+
|
|
102
|
+
if (NOT RUSTC_VERSION MATCHES "nightly")
|
|
103
|
+
set(RUSTUP_TOOLCHAIN nightly)
|
|
104
|
+
endif()
|
|
105
|
+
|
|
106
|
+
set(RUSTFLAGS "${RUSTFLAGS} -C panic=abort")
|
|
107
|
+
|
|
108
|
+
set(CARGO_FLAGS -Z build-std=std,panic_abort --release ${CARGO_FLAGS})
|
|
109
|
+
endif()
|
|
110
|
+
|
|
111
|
+
if(UTF32_INDEXING)
|
|
112
|
+
set(CARGO_FEATURES "")
|
|
113
|
+
set(TEXT_INDEXING_ENCODING "UTF32")
|
|
114
|
+
else()
|
|
115
|
+
set(CARGO_FEATURES "-F automerge/utf8-indexing")
|
|
116
|
+
set(TEXT_INDEXING_ENCODING "UTF8")
|
|
117
|
+
endif()
|
|
118
|
+
|
|
119
|
+
set(CARGO_BINARY_DIR "${CARGO_TARGET_DIR}/${CARGO_TARGET}/${CARGO_BUILD_TYPE}")
|
|
120
|
+
|
|
121
|
+
configure_file(
|
|
122
|
+
${PROJECT_SOURCE_DIR}/cmake/Cargo.toml.in
|
|
123
|
+
${PROJECT_SOURCE_DIR}/Cargo.toml
|
|
124
|
+
NEWLINE_STYLE LF
|
|
125
|
+
)
|
|
126
|
+
|
|
127
|
+
set(INCLUDE_GUARD_PREFIX "${SYMBOL_PREFIX}")
|
|
128
|
+
|
|
129
|
+
configure_file(
|
|
130
|
+
${PROJECT_SOURCE_DIR}/cmake/cbindgen.toml.in
|
|
131
|
+
${PROJECT_SOURCE_DIR}/cbindgen.toml
|
|
132
|
+
@ONLY
|
|
133
|
+
NEWLINE_STYLE LF
|
|
134
|
+
)
|
|
135
|
+
|
|
136
|
+
set(CARGO_OUTPUT
|
|
137
|
+
${CBINDGEN_TARGET_DIR}/${LIBRARY_NAME}.h
|
|
138
|
+
${CARGO_BINARY_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}${BINDINGS_NAME}${CMAKE_STATIC_LIBRARY_SUFFIX}
|
|
139
|
+
)
|
|
140
|
+
|
|
141
|
+
# \note cbindgen's naming behavior isn't fully configurable and it ignores
|
|
142
|
+
# `const fn` calls (https://github.com/eqrion/cbindgen/issues/252).
|
|
143
|
+
add_custom_command(
|
|
144
|
+
OUTPUT
|
|
145
|
+
${CARGO_OUTPUT}
|
|
146
|
+
COMMAND
|
|
147
|
+
# Force cbindgen to regenerate the header file by updating its configuration file; removing the header won't.
|
|
148
|
+
${CMAKE_COMMAND} -DCONDITION=NOT_EXISTS -P ${PROJECT_SOURCE_DIR}/cmake/file-touch.cmake -- ${CBINDGEN_TARGET_DIR}/${LIBRARY_NAME}.h ${PROJECT_SOURCE_DIR}/cbindgen.toml
|
|
149
|
+
COMMAND
|
|
150
|
+
${CMAKE_COMMAND} -E env CARGO_TARGET_DIR=${CARGO_TARGET_DIR} CBINDGEN_TARGET_DIR=${CBINDGEN_TARGET_DIR} RUSTUP_TOOLCHAIN=${RUSTUP_TOOLCHAIN} RUSTFLAGS=${RUSTFLAGS} ${CARGO_CMD} build ${CARGO_FLAGS} ${CARGO_FEATURES}
|
|
151
|
+
COMMAND
|
|
152
|
+
# Compensate for cbindgen's translation of consecutive uppercase letters to "ScreamingSnakeCase".
|
|
153
|
+
${CMAKE_COMMAND} -DMATCH_REGEX=A_M\([^_]+\)_ -DREPLACE_EXPR=AM_\\1_ -P ${PROJECT_SOURCE_DIR}/cmake/file-regex-replace.cmake -- ${CBINDGEN_TARGET_DIR}/${LIBRARY_NAME}.h
|
|
154
|
+
COMMAND
|
|
155
|
+
# Compensate for cbindgen ignoring `std::mem::size_of<usize>()` calls.
|
|
156
|
+
${CMAKE_COMMAND} -DMATCH_REGEX=USIZE_ -DREPLACE_EXPR=\+${CMAKE_SIZEOF_VOID_P} -P ${PROJECT_SOURCE_DIR}/cmake/file-regex-replace.cmake -- ${CBINDGEN_TARGET_DIR}/${LIBRARY_NAME}.h
|
|
157
|
+
MAIN_DEPENDENCY
|
|
158
|
+
src/lib.rs
|
|
159
|
+
DEPENDS
|
|
160
|
+
src/actor_id.rs
|
|
161
|
+
src/byte_span.rs
|
|
162
|
+
src/change.rs
|
|
163
|
+
src/cursor.rs
|
|
164
|
+
src/doc.rs
|
|
165
|
+
src/doc/list.rs
|
|
166
|
+
src/doc/map.rs
|
|
167
|
+
src/doc/mark.rs
|
|
168
|
+
src/doc/utils.rs
|
|
169
|
+
src/index.rs
|
|
170
|
+
src/item.rs
|
|
171
|
+
src/items.rs
|
|
172
|
+
src/obj.rs
|
|
173
|
+
src/result.rs
|
|
174
|
+
src/sync.rs
|
|
175
|
+
src/sync/have.rs
|
|
176
|
+
src/sync/message.rs
|
|
177
|
+
src/sync/state.rs
|
|
178
|
+
${PROJECT_SOURCE_DIR}/build.rs
|
|
179
|
+
${PROJECT_SOURCE_DIR}/cmake/Cargo.toml.in
|
|
180
|
+
${PROJECT_SOURCE_DIR}/cmake/cbindgen.toml.in
|
|
181
|
+
WORKING_DIRECTORY
|
|
182
|
+
${PROJECT_SOURCE_DIR}
|
|
183
|
+
COMMENT
|
|
184
|
+
"Producing the bindings' artifacts with Cargo..."
|
|
185
|
+
VERBATIM
|
|
186
|
+
)
|
|
187
|
+
|
|
188
|
+
add_custom_target(${BINDINGS_NAME}_artifacts ALL
|
|
189
|
+
DEPENDS ${CARGO_OUTPUT}
|
|
190
|
+
)
|
|
191
|
+
|
|
192
|
+
add_library(${BINDINGS_NAME} STATIC IMPORTED GLOBAL)
|
|
193
|
+
|
|
194
|
+
target_include_directories(${BINDINGS_NAME} INTERFACE "${CBINDGEN_INCLUDEDIR}")
|
|
195
|
+
|
|
196
|
+
set_target_properties(
|
|
197
|
+
${BINDINGS_NAME}
|
|
198
|
+
PROPERTIES
|
|
199
|
+
# \note Cargo writes a debug build into a nested directory instead of
|
|
200
|
+
# decorating its name.
|
|
201
|
+
DEBUG_POSTFIX ""
|
|
202
|
+
DEFINE_SYMBOL ""
|
|
203
|
+
IMPORTED_IMPLIB ""
|
|
204
|
+
IMPORTED_LOCATION "${CARGO_BINARY_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}${BINDINGS_NAME}${CMAKE_STATIC_LIBRARY_SUFFIX}"
|
|
205
|
+
IMPORTED_NO_SONAME "TRUE"
|
|
206
|
+
IMPORTED_SONAME ""
|
|
207
|
+
LINKER_LANGUAGE C
|
|
208
|
+
PUBLIC_HEADER "${CBINDGEN_TARGET_DIR}/${LIBRARY_NAME}.h"
|
|
209
|
+
SOVERSION "${PROJECT_VERSION_MAJOR}"
|
|
210
|
+
VERSION "${PROJECT_VERSION}"
|
|
211
|
+
# \note Cargo exports all of the symbols automatically.
|
|
212
|
+
WINDOWS_EXPORT_ALL_SYMBOLS "TRUE"
|
|
213
|
+
)
|
|
214
|
+
|
|
215
|
+
target_compile_definitions(${BINDINGS_NAME} INTERFACE $<TARGET_PROPERTY:${BINDINGS_NAME},DEFINE_SYMBOL>)
|
|
216
|
+
|
|
217
|
+
set(UTILS_SUBDIR "utils")
|
|
218
|
+
|
|
219
|
+
add_custom_command(
|
|
220
|
+
OUTPUT
|
|
221
|
+
${CBINDGEN_TARGET_DIR}/${UTILS_SUBDIR}/enum_string.h
|
|
222
|
+
${PROJECT_BINARY_DIR}/src/${UTILS_SUBDIR}/enum_string.c
|
|
223
|
+
COMMAND
|
|
224
|
+
${CMAKE_COMMAND} -DPROJECT_NAME=${PROJECT_NAME} -DLIBRARY_NAME=${LIBRARY_NAME} -DSUBDIR=${UTILS_SUBDIR} -P ${PROJECT_SOURCE_DIR}/cmake/enum-string-functions-gen.cmake -- ${CBINDGEN_TARGET_DIR}/${LIBRARY_NAME}.h ${CBINDGEN_TARGET_DIR}/${UTILS_SUBDIR}/enum_string.h ${PROJECT_BINARY_DIR}/src/${UTILS_SUBDIR}/enum_string.c
|
|
225
|
+
MAIN_DEPENDENCY
|
|
226
|
+
${CBINDGEN_TARGET_DIR}/${LIBRARY_NAME}.h
|
|
227
|
+
DEPENDS
|
|
228
|
+
${PROJECT_SOURCE_DIR}/cmake/enum-string-functions-gen.cmake
|
|
229
|
+
WORKING_DIRECTORY
|
|
230
|
+
${PROJECT_SOURCE_DIR}
|
|
231
|
+
COMMENT
|
|
232
|
+
"Generating the enum string functions with CMake..."
|
|
233
|
+
VERBATIM
|
|
234
|
+
)
|
|
235
|
+
|
|
236
|
+
add_custom_target(${LIBRARY_NAME}_utilities
|
|
237
|
+
DEPENDS ${CBINDGEN_TARGET_DIR}/${UTILS_SUBDIR}/enum_string.h
|
|
238
|
+
${PROJECT_BINARY_DIR}/src/${UTILS_SUBDIR}/enum_string.c
|
|
239
|
+
)
|
|
240
|
+
|
|
241
|
+
add_library(${LIBRARY_NAME})
|
|
242
|
+
|
|
243
|
+
target_compile_features(${LIBRARY_NAME} PRIVATE c_std_99)
|
|
244
|
+
|
|
245
|
+
set(CMAKE_THREAD_PREFER_PTHREAD TRUE)
|
|
246
|
+
|
|
247
|
+
set(THREADS_PREFER_PTHREAD_FLAG TRUE)
|
|
248
|
+
|
|
249
|
+
find_package(Threads REQUIRED)
|
|
250
|
+
|
|
251
|
+
set(LIBRARY_DEPENDENCIES Threads::Threads ${CMAKE_DL_LIBS})
|
|
252
|
+
|
|
253
|
+
if(WIN32)
|
|
254
|
+
list(APPEND LIBRARY_DEPENDENCIES Bcrypt ntdll userenv ws2_32)
|
|
255
|
+
else()
|
|
256
|
+
list(APPEND LIBRARY_DEPENDENCIES m)
|
|
257
|
+
endif()
|
|
258
|
+
|
|
259
|
+
set_target_properties(${LIBRARY_NAME} PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS "TRUE")
|
|
260
|
+
|
|
261
|
+
# \note An imported library's INTERFACE_INCLUDE_DIRECTORIES property can't
|
|
262
|
+
# contain a non-existent path so its build-time include directory
|
|
263
|
+
# must be specified for all of its dependent targets instead.
|
|
264
|
+
target_include_directories(${LIBRARY_NAME}
|
|
265
|
+
PUBLIC "$<BUILD_INTERFACE:${CBINDGEN_INCLUDEDIR};${PROJECT_SOURCE_DIR}/${CMAKE_INSTALL_INCLUDEDIR}>"
|
|
266
|
+
"$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>"
|
|
267
|
+
)
|
|
268
|
+
|
|
269
|
+
add_dependencies(${LIBRARY_NAME} ${BINDINGS_NAME}_artifacts)
|
|
270
|
+
|
|
271
|
+
if(BUILD_SHARED_LIBS)
|
|
272
|
+
target_link_libraries(${LIBRARY_NAME} PUBLIC "$<LINK_LIBRARY:WHOLE_ARCHIVE,${BINDINGS_NAME}>" ${LIBRARY_DEPENDENCIES})
|
|
273
|
+
|
|
274
|
+
# Enable an external build tool to find the shared library in the root of the
|
|
275
|
+
# out-of-source build directory when it has overridden an aspect of its name.
|
|
276
|
+
if(NOT (("${SHARED_LIBRARY_PREFIX}" STREQUAL "${CMAKE_SHARED_LIBRARY_PREFIX}") AND
|
|
277
|
+
("${LIBRARY_NAME}" STREQUAL "${DEFAULT_LIBRARY_NAME}") AND
|
|
278
|
+
("${SHARED_LIBRARY_SUFFIX}" STREQUAL "${CMAKE_SHARED_LIBRARY_SUFFIX}")))
|
|
279
|
+
add_custom_command(
|
|
280
|
+
TARGET ${LIBRARY_NAME}
|
|
281
|
+
POST_BUILD
|
|
282
|
+
COMMAND
|
|
283
|
+
${CMAKE_COMMAND} -E echo "Copying \"${CMAKE_SHARED_LIBRARY_PREFIX}${LIBRARY_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX}\" to \"${PROJECT_BINARY_DIR}/${SHARED_LIBRARY_PREFIX}${LIBRARY_NAME}${SHARED_LIBRARY_SUFFIX}\"..."
|
|
284
|
+
COMMAND
|
|
285
|
+
${CMAKE_COMMAND} -E copy ${PROJECT_BINARY_DIR}/${CMAKE_SHARED_LIBRARY_PREFIX}${LIBRARY_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX} ${PROJECT_BINARY_DIR}/${SHARED_LIBRARY_PREFIX}${LIBRARY_NAME}${SHARED_LIBRARY_SUFFIX}
|
|
286
|
+
WORKING_DIRECTORY
|
|
287
|
+
${PROJECT_SOURCE_DIR}
|
|
288
|
+
COMMENT
|
|
289
|
+
"Aliasing the library for the external build tool..."
|
|
290
|
+
VERBATIM
|
|
291
|
+
)
|
|
292
|
+
endif()
|
|
293
|
+
else()
|
|
294
|
+
target_link_libraries(${LIBRARY_NAME} PUBLIC ${BINDINGS_NAME} ${LIBRARY_DEPENDENCIES})
|
|
295
|
+
|
|
296
|
+
if(WIN32)
|
|
297
|
+
find_program(LIB_TOOL "lib" REQUIRED)
|
|
298
|
+
|
|
299
|
+
add_custom_command(
|
|
300
|
+
TARGET ${LIBRARY_NAME}
|
|
301
|
+
POST_BUILD
|
|
302
|
+
COMMAND
|
|
303
|
+
${CMAKE_COMMAND} -E echo "Merging its dependent libraries into \"$<TARGET_FILE:${LIBRARY_NAME}>\"..."
|
|
304
|
+
COMMAND
|
|
305
|
+
${LIB_TOOL} /OUT:$<TARGET_FILE_NAME:${LIBRARY_NAME}> $<TARGET_FILE_NAME:${LIBRARY_NAME}> $<TARGET_FILE:${BINDINGS_NAME}>
|
|
306
|
+
WORKING_DIRECTORY
|
|
307
|
+
${PROJECT_BINARY_DIR}
|
|
308
|
+
COMMENT
|
|
309
|
+
"Merging the libraries..."
|
|
310
|
+
VERBATIM
|
|
311
|
+
)
|
|
312
|
+
else()
|
|
313
|
+
set(OBJECTS_DIR objects)
|
|
314
|
+
|
|
315
|
+
set(BINDINGS_OBJECTS_DIR ${OBJECTS_DIR}/$<TARGET_NAME:${BINDINGS_NAME}>)
|
|
316
|
+
|
|
317
|
+
add_custom_command(
|
|
318
|
+
TARGET "${LIBRARY_NAME}"
|
|
319
|
+
POST_BUILD
|
|
320
|
+
COMMAND
|
|
321
|
+
${CMAKE_COMMAND} -E echo "Merging its dependent libraries into \"$<TARGET_FILE:${LIBRARY_NAME}>\"..."
|
|
322
|
+
COMMAND
|
|
323
|
+
${CMAKE_COMMAND} -E rm -rf ${OBJECTS_DIR}
|
|
324
|
+
COMMAND
|
|
325
|
+
${CMAKE_COMMAND} -E make_directory ${BINDINGS_OBJECTS_DIR}
|
|
326
|
+
COMMAND
|
|
327
|
+
${CMAKE_COMMAND} -E echo "${CMAKE_AR} -x $<TARGET_FILE:${BINDINGS_NAME}>"
|
|
328
|
+
COMMAND
|
|
329
|
+
${CMAKE_COMMAND} -E chdir ${BINDINGS_OBJECTS_DIR} ${CMAKE_AR} -x $<TARGET_FILE:${BINDINGS_NAME}>
|
|
330
|
+
COMMAND
|
|
331
|
+
${CMAKE_COMMAND} -E echo "${CMAKE_AR} -rs $<TARGET_FILE_NAME:${LIBRARY_NAME}> ${BINDINGS_OBJECTS_DIR}/*.o"
|
|
332
|
+
COMMAND
|
|
333
|
+
${CMAKE_AR} -rs $<TARGET_FILE_NAME:${LIBRARY_NAME}> ${BINDINGS_OBJECTS_DIR}/*.o
|
|
334
|
+
WORKING_DIRECTORY
|
|
335
|
+
${PROJECT_BINARY_DIR}
|
|
336
|
+
COMMENT
|
|
337
|
+
"Merging the libraries' constituent object files..."
|
|
338
|
+
)
|
|
339
|
+
endif()
|
|
340
|
+
endif()
|
|
341
|
+
|
|
342
|
+
if(NOT BUILD_SHARED_LIBS OR WIN32)
|
|
343
|
+
# Enable an external build tool to find the static/import library in the
|
|
344
|
+
# root of the out-of-source build directory when it has overridden an aspect
|
|
345
|
+
# of its name.
|
|
346
|
+
if(NOT (("${STATIC_LIBRARY_PREFIX}" STREQUAL "${CMAKE_STATIC_LIBRARY_PREFIX}") AND
|
|
347
|
+
("${LIBRARY_NAME}" STREQUAL "${DEFAULT_LIBRARY_NAME}") AND
|
|
348
|
+
("${STATIC_LIBRARY_SUFFIX}" STREQUAL "${CMAKE_STATIC_LIBRARY_SUFFIX}")))
|
|
349
|
+
add_custom_command(
|
|
350
|
+
TARGET ${LIBRARY_NAME}
|
|
351
|
+
POST_BUILD
|
|
352
|
+
COMMAND
|
|
353
|
+
${CMAKE_COMMAND} -E echo "(STATIC_LIBRARY_PREFIX, LIBRARY_NAME, STATIC_LIBRARY_SUFFIX) == (${STATIC_LIBRARY_PREFIX}, ${LIBRARY_NAME}, ${STATIC_LIBRARY_SUFFIX})"
|
|
354
|
+
COMMAND
|
|
355
|
+
${CMAKE_COMMAND} -E echo "Copying \"${PROJECT_BINARY_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}${LIBRARY_NAME}${CMAKE_STATIC_LIBRARY_SUFFIX}\" to \"${PROJECT_BINARY_DIR}/${STATIC_LIBRARY_PREFIX}${LIBRARY_NAME}${STATIC_LIBRARY_SUFFIX}\"..."
|
|
356
|
+
COMMAND
|
|
357
|
+
${CMAKE_COMMAND} -E copy ${PROJECT_BINARY_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}${LIBRARY_NAME}${CMAKE_STATIC_LIBRARY_SUFFIX} ${PROJECT_BINARY_DIR}/${STATIC_LIBRARY_PREFIX}${LIBRARY_NAME}${STATIC_LIBRARY_SUFFIX}
|
|
358
|
+
WORKING_DIRECTORY
|
|
359
|
+
${PROJECT_SOURCE_DIR}
|
|
360
|
+
COMMENT
|
|
361
|
+
"Aliasing the static/import library for the external build tool..."
|
|
362
|
+
VERBATIM
|
|
363
|
+
)
|
|
364
|
+
endif()
|
|
365
|
+
endif()
|
|
366
|
+
|
|
367
|
+
# Generate the configuration header.
|
|
368
|
+
math(EXPR INTEGER_PROJECT_VERSION_MAJOR "${PROJECT_VERSION_MAJOR} * 100000")
|
|
369
|
+
|
|
370
|
+
math(EXPR INTEGER_PROJECT_VERSION_MINOR "${PROJECT_VERSION_MINOR} * 100")
|
|
371
|
+
|
|
372
|
+
math(EXPR INTEGER_PROJECT_VERSION_PATCH "${PROJECT_VERSION_PATCH}")
|
|
373
|
+
|
|
374
|
+
math(EXPR INTEGER_PROJECT_VERSION "${INTEGER_PROJECT_VERSION_MAJOR} + \
|
|
375
|
+
${INTEGER_PROJECT_VERSION_MINOR} + \
|
|
376
|
+
${INTEGER_PROJECT_VERSION_PATCH}")
|
|
377
|
+
|
|
378
|
+
configure_file(
|
|
379
|
+
${PROJECT_SOURCE_DIR}/cmake/config.h.in
|
|
380
|
+
${CBINDGEN_TARGET_DIR}/config.h
|
|
381
|
+
@ONLY
|
|
382
|
+
NEWLINE_STYLE LF
|
|
383
|
+
)
|
|
384
|
+
|
|
385
|
+
target_sources(${LIBRARY_NAME}
|
|
386
|
+
PRIVATE
|
|
387
|
+
src/${UTILS_SUBDIR}/result.c
|
|
388
|
+
src/${UTILS_SUBDIR}/stack_callback_data.c
|
|
389
|
+
src/${UTILS_SUBDIR}/stack.c
|
|
390
|
+
src/${UTILS_SUBDIR}/string.c
|
|
391
|
+
${PROJECT_BINARY_DIR}/src/${UTILS_SUBDIR}/enum_string.c
|
|
392
|
+
PUBLIC
|
|
393
|
+
FILE_SET api TYPE HEADERS
|
|
394
|
+
BASE_DIRS
|
|
395
|
+
${CBINDGEN_INCLUDEDIR}
|
|
396
|
+
${CMAKE_INSTALL_INCLUDEDIR}
|
|
397
|
+
FILES
|
|
398
|
+
${CBINDGEN_TARGET_DIR}/${LIBRARY_NAME}.h
|
|
399
|
+
${CBINDGEN_TARGET_DIR}/${UTILS_SUBDIR}/enum_string.h
|
|
400
|
+
${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME}/${UTILS_SUBDIR}/result.h
|
|
401
|
+
${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME}/${UTILS_SUBDIR}/stack_callback_data.h
|
|
402
|
+
${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME}/${UTILS_SUBDIR}/stack.h
|
|
403
|
+
${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME}/${UTILS_SUBDIR}/string.h
|
|
404
|
+
INTERFACE
|
|
405
|
+
FILE_SET config TYPE HEADERS
|
|
406
|
+
BASE_DIRS
|
|
407
|
+
${CBINDGEN_INCLUDEDIR}
|
|
408
|
+
FILES
|
|
409
|
+
${CBINDGEN_TARGET_DIR}/config.h
|
|
410
|
+
)
|
|
411
|
+
|
|
412
|
+
install(
|
|
413
|
+
TARGETS ${LIBRARY_NAME}
|
|
414
|
+
EXPORT ${PROJECT_NAME}-config
|
|
415
|
+
FILE_SET api
|
|
416
|
+
FILE_SET config
|
|
417
|
+
)
|
|
418
|
+
|
|
419
|
+
# \note Install the Cargo-built core bindings to enable direct linkage.
|
|
420
|
+
install(
|
|
421
|
+
FILES $<TARGET_PROPERTY:${BINDINGS_NAME},IMPORTED_LOCATION>
|
|
422
|
+
DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
|
423
|
+
)
|
|
424
|
+
|
|
425
|
+
install(EXPORT ${PROJECT_NAME}-config
|
|
426
|
+
FILE ${PROJECT_NAME}-config.cmake
|
|
427
|
+
NAMESPACE "${PROJECT_NAME}::"
|
|
428
|
+
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${LIB}
|
|
429
|
+
)
|
|
430
|
+
|
|
431
|
+
if(BUILD_TESTING)
|
|
432
|
+
add_subdirectory(test EXCLUDE_FROM_ALL)
|
|
433
|
+
|
|
434
|
+
enable_testing()
|
|
435
|
+
endif()
|
|
436
|
+
|
|
437
|
+
add_subdirectory(docs)
|
|
438
|
+
|
|
439
|
+
add_subdirectory(examples EXCLUDE_FROM_ALL)
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
[package]
|
|
2
|
+
name = "automerge-c"
|
|
3
|
+
version = "0.2.2"
|
|
4
|
+
authors = ["Orion Henry <orion.henry@gmail.com>", "Jason Kankiewicz <jason.kankiewicz@gmail.com>"]
|
|
5
|
+
edition = "2021"
|
|
6
|
+
license = "MIT"
|
|
7
|
+
rust-version = "1.80.0"
|
|
8
|
+
|
|
9
|
+
[lib]
|
|
10
|
+
name = "automerge_core"
|
|
11
|
+
crate-type = ["staticlib"]
|
|
12
|
+
bench = false
|
|
13
|
+
doc = false
|
|
14
|
+
|
|
15
|
+
[dependencies]
|
|
16
|
+
automerge = { path = "../automerge" }
|
|
17
|
+
hex = "^0.4.3"
|
|
18
|
+
libc = "^0.2"
|
|
19
|
+
smol_str = "0.3"
|
|
20
|
+
|
|
21
|
+
[build-dependencies]
|
|
22
|
+
cbindgen = "^0.29"
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
# Overview
|
|
2
|
+
|
|
3
|
+
automerge-c exposes a C API that can either be used directly or as the basis
|
|
4
|
+
for other language bindings that have good support for calling C functions.
|
|
5
|
+
|
|
6
|
+
# Installing
|
|
7
|
+
|
|
8
|
+
## Prerequisites
|
|
9
|
+
|
|
10
|
+
* Cargo >= 1.71.0
|
|
11
|
+
* CMake >= 3.25
|
|
12
|
+
* CMocka >= 1.1.5
|
|
13
|
+
* Doxygen >= 1.9.1
|
|
14
|
+
* Ninja >= 1.10.1
|
|
15
|
+
|
|
16
|
+
See the main README for instructions on getting your environment set up and then
|
|
17
|
+
you can build the automerge-c library and install its constituent files within
|
|
18
|
+
a root directory of your choosing (e.g. "/usr/local") like so:
|
|
19
|
+
|
|
20
|
+
```shell
|
|
21
|
+
cmake -E make_directory automerge-c/build
|
|
22
|
+
cmake -S automerge-c -B automerge-c/build
|
|
23
|
+
cmake --build automerge-c/build
|
|
24
|
+
cmake --install automerge-c/build --prefix "/usr/local"
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Installation is important because the name, location and structure of CMake's
|
|
28
|
+
out-of-source build subdirectory is subject to change based on the platform and
|
|
29
|
+
the release version; generated headers like `automerge-c/config.h` and
|
|
30
|
+
`automerge-c/utils/enum_string.h` are only sure to be found within their
|
|
31
|
+
installed locations.
|
|
32
|
+
|
|
33
|
+
It's not obvious because they are versioned but the `Cargo.toml` and
|
|
34
|
+
`cbindgen.toml` configuration files are also generated in order to ensure that
|
|
35
|
+
the project name, project version and library name that they contain match those
|
|
36
|
+
specified within the top-level `CMakeLists.txt` file.
|
|
37
|
+
|
|
38
|
+
If you'd like to cross compile the library for different platforms you can do so
|
|
39
|
+
using [cross](https://github.com/cross-rs/cross). For example:
|
|
40
|
+
|
|
41
|
+
- `cross build --manifest-path rust/automerge-c/Cargo.toml -r --target aarch64-unknown-linux-gnu`
|
|
42
|
+
|
|
43
|
+
This will output a shared library in the directory `rust/target/aarch64-unknown-linux-gnu/release/`.
|
|
44
|
+
|
|
45
|
+
You can replace `aarch64-unknown-linux-gnu` with any
|
|
46
|
+
[cross supported targets](https://github.com/cross-rs/cross#supported-targets).
|
|
47
|
+
The targets below are known to work, though other targets are expected to work
|
|
48
|
+
too:
|
|
49
|
+
|
|
50
|
+
- `x86_64-apple-darwin`
|
|
51
|
+
- `aarch64-apple-darwin`
|
|
52
|
+
- `x86_64-unknown-linux-gnu`
|
|
53
|
+
- `aarch64-unknown-linux-gnu`
|
|
54
|
+
|
|
55
|
+
As a caveat, CMake generates the `automerge.h` header file in terms of the
|
|
56
|
+
processor architecture of the computer on which it was built so, for example,
|
|
57
|
+
don't use a header generated for a 64-bit processor if your target is a 32-bit
|
|
58
|
+
processor.
|
|
59
|
+
|
|
60
|
+
# Unicode indexing
|
|
61
|
+
|
|
62
|
+
By default automerge-c expects string indices to be given in terms of UTF-8 byte
|
|
63
|
+
offsets so, for example, the length of "😀" (U+1F600) is 4.
|
|
64
|
+
|
|
65
|
+
If instead you need string indices to be given in terms of Unicode code point
|
|
66
|
+
offsets such that the length of "😀" (U+1F600) will be 1, build it like so:
|
|
67
|
+
|
|
68
|
+
`cmake -S automerge-c -B automerge-c/build -DUTF32_INDEXING=true`
|
|
69
|
+
|
|
70
|
+
Regardless of the specified encoding for character indices, automerge-c always
|
|
71
|
+
requires a string to be provided as an `AMbyteSpan` struct that references an
|
|
72
|
+
array of valid UTF-8 code points.
|
|
73
|
+
|
|
74
|
+
# Usage
|
|
75
|
+
|
|
76
|
+
You can build and view the C API's HTML reference documentation like so:
|
|
77
|
+
|
|
78
|
+
```shell
|
|
79
|
+
cmake -E make_directory automerge-c/build
|
|
80
|
+
cmake -S automerge-c -B automerge-c/build
|
|
81
|
+
cmake --build automerge-c/build --target automerge_docs
|
|
82
|
+
firefox automerge-c/build/docs/html/index.html
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
To get started quickly, look at the
|
|
86
|
+
[examples](https://github.com/automerge/automerge/tree/main/rust/automerge-c/examples).
|
|
87
|
+
|
|
88
|
+
Almost all operations in automerge-c act on an Automerge document
|
|
89
|
+
(`AMdoc` struct) which is structurally similar to a JSON document.
|
|
90
|
+
|
|
91
|
+
You can get a document by calling either `AMcreate()` or `AMload()`. Operations
|
|
92
|
+
on a given document are not thread-safe so you must use a mutex or similar to
|
|
93
|
+
avoid calling more than one function on the same one concurrently.
|
|
94
|
+
|
|
95
|
+
A C API function that could succeed or fail returns a result (`AMresult` struct)
|
|
96
|
+
containing a status code (`AMstatus` enum) and either a sequence of at least one
|
|
97
|
+
item (`AMitem` struct) or a read-only view onto a UTF-8 error message string
|
|
98
|
+
(`AMbyteSpan` struct).
|
|
99
|
+
An item contains up to three components: an index within its parent object
|
|
100
|
+
(`AMbyteSpan` struct or `size_t`), a unique identifier (`AMobjId` struct) and a
|
|
101
|
+
value.
|
|
102
|
+
The result of a successful function call that doesn't produce any values will
|
|
103
|
+
contain a single item that is void (`AM_VAL_TYPE_VOID`).
|
|
104
|
+
A returned result **must** be passed to `AMresultFree()` once the item(s) or
|
|
105
|
+
error message it contains is no longer needed in order to avoid a memory leak.
|
|
106
|
+
|
|
107
|
+
```
|
|
108
|
+
#include <stdio.h>
|
|
109
|
+
#include <stdlib.h>
|
|
110
|
+
#include <automerge-c/automerge.h>
|
|
111
|
+
#include <automerge-c/utils/string.h>
|
|
112
|
+
|
|
113
|
+
int main(int argc, char** argv) {
|
|
114
|
+
AMresult *docResult = AMcreate(NULL);
|
|
115
|
+
|
|
116
|
+
if (AMresultStatus(docResult) != AM_STATUS_OK) {
|
|
117
|
+
char* const err_msg = AMstrdup(AMresultError(docResult), NULL);
|
|
118
|
+
printf("failed to create doc: %s", err_msg);
|
|
119
|
+
free(err_msg);
|
|
120
|
+
goto cleanup;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
AMdoc *doc;
|
|
124
|
+
AMitemToDoc(AMresultItem(docResult), &doc);
|
|
125
|
+
|
|
126
|
+
// useful code goes here!
|
|
127
|
+
|
|
128
|
+
cleanup:
|
|
129
|
+
AMresultFree(docResult);
|
|
130
|
+
}
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
If you are writing an application in C, the `AMstackItem()`, `AMstackItems()`
|
|
134
|
+
and `AMstackResult()` functions enable the lifetimes of anonymous results to be
|
|
135
|
+
centrally managed and allow the same validation logic to be reused without
|
|
136
|
+
relying upon the `goto` statement (see examples/quickstart.c).
|
|
137
|
+
|
|
138
|
+
If you are wrapping automerge-c in another language, particularly one that has a
|
|
139
|
+
garbage collector, you can call the `AMresultFree()` function within a finalizer
|
|
140
|
+
to ensure that memory is reclaimed when it is no longer needed.
|
|
141
|
+
|
|
142
|
+
An Automerge document consists of a mutable root which is always a map from
|
|
143
|
+
string keys to values. A value can be one of the following types:
|
|
144
|
+
|
|
145
|
+
- A number of type double / int64_t / uint64_t
|
|
146
|
+
- An explicit true / false / null
|
|
147
|
+
- An immutable UTF-8 string (`AMbyteSpan` struct).
|
|
148
|
+
- An immutable array of arbitrary bytes (`AMbyteSpan` struct).
|
|
149
|
+
- A mutable map from string keys to values.
|
|
150
|
+
- A mutable list of values.
|
|
151
|
+
- A mutable UTF-8 string.
|
|
152
|
+
|
|
153
|
+
If you read from a location in the document with no value, an item with type
|
|
154
|
+
`AM_VAL_TYPE_VOID` will be returned, but you cannot write such a value
|
|
155
|
+
explicitly.
|
|
156
|
+
|
|
157
|
+
Under the hood, automerge references a mutable object by its object identifier
|
|
158
|
+
where `AM_ROOT` signifies a document's root map object.
|
|
159
|
+
|
|
160
|
+
There are functions to put each type of value into either a map or a list, and
|
|
161
|
+
functions to read the current or a historical value from a map or a list. As
|
|
162
|
+
(in general) collaborators may edit the document at any time, you cannot
|
|
163
|
+
guarantee that the type of the value at a given part of the document will stay
|
|
164
|
+
the same. As a result, reading from the document will return an `AMitem` struct
|
|
165
|
+
that you can inspect to determine the type of value that it contains.
|
|
166
|
+
|
|
167
|
+
Strings in automerge-c are represented using an `AMbyteSpan` struct which
|
|
168
|
+
contains a pointer and a length. Strings must be valid UTF-8 and may contain
|
|
169
|
+
NUL (`0`) characters.
|
|
170
|
+
For your convenience, you can call `AMstr()` to get an `AMbyteSpan` struct
|
|
171
|
+
referencing a null-terminated byte string or `AMstrdup()` to get the
|
|
172
|
+
representation of an `AMbyteSpan` struct as a null-terminated byte string
|
|
173
|
+
wherein its NUL characters have been removed/replaced as you choose.
|
|
174
|
+
|
|
175
|
+
Putting all of that together, to read and write from the root of the document
|
|
176
|
+
you can do this:
|
|
177
|
+
|
|
178
|
+
```
|
|
179
|
+
#include <stdio.h>
|
|
180
|
+
#include <stdlib.h>
|
|
181
|
+
#include <automerge-c/automerge.h>
|
|
182
|
+
#include <automerge-c/utils/string.h>
|
|
183
|
+
|
|
184
|
+
int main(int argc, char** argv) {
|
|
185
|
+
// ...previous example...
|
|
186
|
+
AMdoc *doc;
|
|
187
|
+
AMitemToDoc(AMresultItem(docResult), &doc);
|
|
188
|
+
|
|
189
|
+
AMresult *putResult = AMmapPutStr(doc, AM_ROOT, AMstr("key"), AMstr("value"));
|
|
190
|
+
if (AMresultStatus(putResult) != AM_STATUS_OK) {
|
|
191
|
+
char* const err_msg = AMstrdup(AMresultError(putResult), NULL);
|
|
192
|
+
printf("failed to put: %s", err_msg);
|
|
193
|
+
free(err_msg);
|
|
194
|
+
goto cleanup;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
AMresult *getResult = AMmapGet(doc, AM_ROOT, AMstr("key"), NULL);
|
|
198
|
+
if (AMresultStatus(getResult) != AM_STATUS_OK) {
|
|
199
|
+
char* const err_msg = AMstrdup(AMresultError(getResult), NULL);
|
|
200
|
+
printf("failed to get: %s", err_msg);
|
|
201
|
+
free(err_msg);
|
|
202
|
+
goto cleanup;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
AMbyteSpan got;
|
|
206
|
+
if (AMitemToStr(AMresultItem(getResult), &got)) {
|
|
207
|
+
char* const c_str = AMstrdup(got, NULL);
|
|
208
|
+
printf("Got %zu-character string \"%s\"", got.count, c_str);
|
|
209
|
+
free(c_str);
|
|
210
|
+
} else {
|
|
211
|
+
printf("expected to read a string!");
|
|
212
|
+
goto cleanup;
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
|
|
216
|
+
cleanup:
|
|
217
|
+
AMresultFree(getResult);
|
|
218
|
+
AMresultFree(putResult);
|
|
219
|
+
AMresultFree(docResult);
|
|
220
|
+
}
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
Functions that do not return an `AMresult` (for example `AMitemKey()`) do
|
|
224
|
+
not allocate memory but rather reference memory that was previously
|
|
225
|
+
allocated. It's therefore important to keep the original `AMresult` alive (in
|
|
226
|
+
this case the one returned by `AMmapRange()`) until after you are finished with
|
|
227
|
+
the items that it contains. However, the memory for an individual `AMitem` can
|
|
228
|
+
be shared with a new `AMresult` by calling `AMitemResult()` on it. In other
|
|
229
|
+
words, a select group of items can be filtered out of a collection and only each
|
|
230
|
+
one's corresponding `AMresult` must be kept alive from that point forward; the
|
|
231
|
+
originating collection's `AMresult` can be safely freed.
|
|
232
|
+
|
|
233
|
+
Beyond that, good luck!
|