Skip to content
CEA-LISTPublic

About

A local-first, collaborative JSON runtime built using Conflict-free Replicated Data Types (CRDTs).

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

JSON

This Rust scaffold project has been automatically generated by Arachne, a code generator from Ecore metamodels to a composition of replicated data types.

It is the metamodel of the JSON data format.

JSON Ecore metamodel

Generated Artifacts

Arachne generated the classifiers.rs, references.rs, package.rs, and lib.rs files.

  • classifiers.rs: contains the replicated object hierarchy, i.e., the CRDTs reproducing the (concrete and abstract) classes, interfaces, enums, and owned features (attributes and containment references).
  • references.rs: contains the Typed Graph CRDT implementation. Manages the non-containment references between replicated objects.
  • package.rs: the root replicated object that contains both the object hierarchy and the typed graph. This is the object with which end-users interact.

Organization

.
├── bench-results/ # Fuzzer execution results
├── src/
│   ├── utils/ # Fuzzer implementation, helper functions...
│   ├── classifiers.rs # Automatically generated, contains the replicated object hierarchy
│   ├── lib.rs # Automatically generated
│   ├── package.rs # Automatically generated, contains the root replicated object
│   ├── read_as_ecore.rs # Automatically generated, contains the Ecore XMI serializer query
│   └── references.rs # Automatically generated, contains the Typed Graph CRDT implementation
├── tests/
│   ├── fuzzer.rs # Fuzzer test
│   └── scenarios.rs # Test scenarios illustrating how conflicts are solved
├── json.ecore # Ecore metamodel
└── json.png # Ecore metamodel diagram

Running the project

Rust must be installed on your machine: https://rust-lang.org/tools/install. The commands assume a POSIX shell.

Running all the tests:

RUST_LOG=debug cargo test --release

Running the fuzzer:

RUST_LOG=debug cargo test --release -- --ignored --no-capture fuzz

About

A local-first, collaborative JSON runtime built using Conflict-free Replicated Data Types (CRDTs).

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages