From a0f0db985f6b7b0ced80b9cde020e124333ef9ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Zemanovi=C4=8D?= Date: Mon, 21 Nov 2022 16:22:12 +0100 Subject: [PATCH] docs/overview: update deps graph and add a generated one too --- .../dev/src/explore/design/overview.md | 12 + .../explore/design/overview/crates.excalidraw | 907 +++++++++++++----- .../src/explore/design/overview/crates.svg | 4 +- .../overview/root-workspace-cargo-udeps.png | Bin 0 -> 34486 bytes 4 files changed, 696 insertions(+), 227 deletions(-) create mode 100644 documentation/dev/src/explore/design/overview/root-workspace-cargo-udeps.png diff --git a/documentation/dev/src/explore/design/overview.md b/documentation/dev/src/explore/design/overview.md index 9e6d419774..936529521e 100644 --- a/documentation/dev/src/explore/design/overview.md +++ b/documentation/dev/src/explore/design/overview.md @@ -8,3 +8,15 @@ The Rust crates internal dependency graph: ![crates](./overview/crates.svg "crates") [Diagram on Excalidraw](https://excalidraw.com/#room=e32fc914de750ed4f5e4,6CWRFjnmCoiFR4BQ6i9K4g) + +## Graph for root workspace + +![Workspace dependency graph](./overview/root-workspace-cargo-udeps.png "Workspace dependency graph") + +Generated with: + +```shell +# Uses https://crates.io/crates/cargo-depgraph +# From root dir: +cargo depgraph --workspace-only --dedup-transitive-deps --dev-deps | dot -Tpng > documentation/dev/src/explore/design/root-workspace-cargo-udeps.png +``` diff --git a/documentation/dev/src/explore/design/overview/crates.excalidraw b/documentation/dev/src/explore/design/overview/crates.excalidraw index e305dfa088..bfe54c6199 100644 --- a/documentation/dev/src/explore/design/overview/crates.excalidraw +++ b/documentation/dev/src/explore/design/overview/crates.excalidraw @@ -5,8 +5,8 @@ "elements": [ { "type": "arrow", - "version": 940, - "versionNonce": 1634924291, + "version": 1755, + "versionNonce": 948744878, "isDeleted": false, "id": "XW8p0b2UGBcU4qhuM50S5", "fillStyle": "hachure", @@ -15,26 +15,28 @@ "roughness": 0, "opacity": 100, "angle": 0, - "x": 234.4292897735185, - "y": 27.074492275773665, + "x": 371.50540630660794, + "y": -65.3168707300475, "strokeColor": "#000000", "backgroundColor": "transparent", - "width": 46.74897051875004, - "height": 31.84747245633222, + "width": 98.62862494125517, + "height": 133.51589623592426, "seed": 244640995, "groupIds": [], "strokeSharpness": "round", "boundElements": [], - "updated": 1638978981591, + "updated": 1667837597361, + "link": null, + "locked": false, "startBinding": { "elementId": "TPinNTC84gdo4Heiyfrcl", - "gap": 7.842259549321174, - "focus": -0.23457593568181878 + "gap": 4.184665686509593, + "focus": -0.24051015553247612 }, "endBinding": { - "elementId": "Vv4I15UDLDULEN3MM7cWR", - "gap": 6.876060164133929, - "focus": 0.014193953434318363 + "elementId": "sXto6tFtVz5VWUddCdZEa", + "gap": 2.0846931092448173, + "focus": -0.6672657348088921 }, "lastCommittedPoint": null, "startArrowhead": null, @@ -45,15 +47,15 @@ 0 ], [ - -46.74897051875004, - -31.84747245633222 + -98.62862494125517, + -133.51589623592426 ] ] }, { "type": "text", - "version": 562, - "versionNonce": 1411527693, + "version": 598, + "versionNonce": 1489948718, "isDeleted": false, "id": "lZbFKRT7NFNBN-N0PEGt4", "fillStyle": "hachure", @@ -62,8 +64,8 @@ "roughness": 1, "opacity": 100, "angle": 0, - "x": 282.7198361155589, - "y": 168.66666666666663, + "x": 388.15489582721045, + "y": 125.41125755419421, "strokeColor": "#0008", "backgroundColor": "transparent", "width": 225, @@ -89,7 +91,9 @@ "id": "j6R5PVZmpe0pg3dobMg_R" } ], - "updated": 1638978994165, + "updated": 1668096815149, + "link": null, + "locked": false, "fontSize": 16, "fontFamily": 3, "text": "sdk\n(generated by the node) \nnot yet implemented", @@ -97,12 +101,12 @@ "textAlign": "left", "verticalAlign": "top", "containerId": null, - "originalText": "" + "originalText": "sdk\n(generated by the node) \nnot yet implemented" }, { "type": "arrow", - "version": 762, - "versionNonce": 1801214061, + "version": 763, + "versionNonce": 234761454, "isDeleted": false, "id": "N3WOXF2nAY4GBP26E12jj", "fillStyle": "hachure", @@ -121,7 +125,9 @@ "groupIds": [], "strokeSharpness": "round", "boundElements": [], - "updated": 1638978645308, + "updated": 1667837597361, + "link": null, + "locked": false, "startBinding": { "elementId": "XCGaurOdV80qWvLWgvMKA", "focus": -0.3858314613263561, @@ -148,8 +154,8 @@ }, { "type": "rectangle", - "version": 118, - "versionNonce": 1233481955, + "version": 119, + "versionNonce": 2046419186, "isDeleted": false, "id": "XCGaurOdV80qWvLWgvMKA", "fillStyle": "hachure", @@ -173,12 +179,14 @@ "id": "N3WOXF2nAY4GBP26E12jj" } ], - "updated": 1638978645308 + "updated": 1667837597361, + "link": null, + "locked": false }, { "type": "text", - "version": 288, - "versionNonce": 275825357, + "version": 289, + "versionNonce": 600203054, "isDeleted": false, "id": "2Uv1LCKqBFINap90QX39G", "fillStyle": "hachure", @@ -206,7 +214,9 @@ "id": "N3WOXF2nAY4GBP26E12jj" } ], - "updated": 1638978645308, + "updated": 1667837597361, + "link": null, + "locked": false, "fontSize": 16, "fontFamily": 3, "text": "apps \n(node/client/broadcaster)", @@ -214,12 +224,12 @@ "textAlign": "left", "verticalAlign": "top", "containerId": null, - "originalText": "" + "originalText": "apps \n(node/client/broadcaster)" }, { "type": "text", - "version": 430, - "versionNonce": 2114673795, + "version": 467, + "versionNonce": 699724466, "isDeleted": false, "id": "q1u2GL7wVw4Exe4X5PaPJ", "fillStyle": "hachure", @@ -228,12 +238,12 @@ "roughness": 1, "opacity": 100, "angle": 0, - "x": -30, - "y": -61, + "x": -44.449427927178476, + "y": -22.73741825201381, "strokeColor": "#000000", "backgroundColor": "transparent", - "width": 328, - "height": 39, + "width": 58, + "height": 20, "seed": 1199188794, "groupIds": [], "strokeSharpness": "sharp", @@ -243,20 +253,22 @@ "id": "XW8p0b2UGBcU4qhuM50S5" } ], - "updated": 1638978645308, + "updated": 1667837597361, + "link": null, + "locked": false, "fontSize": 16, "fontFamily": 3, - "text": "shared\n(has to be able to compile to wasm)", - "baseline": 35, + "text": "shared", + "baseline": 16, "textAlign": "left", "verticalAlign": "top", "containerId": null, - "originalText": "" + "originalText": "shared" }, { "type": "text", - "version": 380, - "versionNonce": 1078518061, + "version": 382, + "versionNonce": 776882542, "isDeleted": false, "id": "iXim05PslRfMMcHgO5M77", "fillStyle": "hachure", @@ -265,7 +277,7 @@ "roughness": 1, "opacity": 100, "angle": 0, - "x": 262.28822012513956, + "x": 263.5595295334808, "y": 409.9572198364548, "strokeColor": "#000000", "backgroundColor": "transparent", @@ -284,7 +296,9 @@ "id": "vjztA9aT9wXo-Mz6v8PpC" } ], - "updated": 1638978645308, + "updated": 1667837597361, + "link": null, + "locked": false, "fontSize": 16, "fontFamily": 3, "text": "wasm\n(tx/vp/mm/mm_filter)", @@ -292,12 +306,12 @@ "textAlign": "left", "verticalAlign": "top", "containerId": null, - "originalText": "" + "originalText": "wasm\n(tx/vp/mm/mm_filter)" }, { "type": "text", - "version": 392, - "versionNonce": 1880902221, + "version": 472, + "versionNonce": 1537723506, "isDeleted": false, "id": "7hkmbpKqpRG1mw7i72ETt", "fillStyle": "hachure", @@ -306,8 +320,8 @@ "roughness": 1, "opacity": 100, "angle": 0, - "x": 250.93816429817616, - "y": 43.98982838512771, + "x": 347.7305845731653, + "y": -51.493336313717776, "strokeColor": "#000000", "backgroundColor": "transparent", "width": 131, @@ -321,7 +335,9 @@ "id": "qGwRshNFhRxZVbc_9XoOK" } ], - "updated": 1638978958291, + "updated": 1667837597362, + "link": null, + "locked": false, "fontSize": 16, "fontFamily": 3, "text": "vm_env\n(wasm imports)", @@ -329,12 +345,12 @@ "textAlign": "left", "verticalAlign": "top", "containerId": null, - "originalText": "" + "originalText": "vm_env\n(wasm imports)" }, { "type": "arrow", - "version": 1508, - "versionNonce": 1553870509, + "version": 1575, + "versionNonce": 267273010, "isDeleted": false, "id": "qGwRshNFhRxZVbc_9XoOK", "fillStyle": "hachure", @@ -343,17 +359,19 @@ "roughness": 0, "opacity": 100, "angle": 0, - "x": 262.5545524579702, - "y": 396.8364074603423, + "x": 264.4192089775041, + "y": 396.83640746034223, "strokeColor": "#000000", "backgroundColor": "transparent", - "width": 31.03570718753258, - "height": 149.5928584864882, + "width": 110.76901556861083, + "height": 190.05066613958203, "seed": 1454454153, "groupIds": [], "strokeSharpness": "round", "boundElements": [], - "updated": 1638978981591, + "updated": 1668096811050, + "link": null, + "locked": false, "startBinding": { "elementId": "Wzbm5P1iAViA47cEtf8fo", "gap": 2.0964817197048013, @@ -373,15 +391,15 @@ 0 ], [ - 31.03570718753258, - -149.5928584864882 + 110.76901556861083, + -190.05066613958203 ] ] }, { "type": "arrow", - "version": 1768, - "versionNonce": 1721966243, + "version": 2121, + "versionNonce": 1563640178, "isDeleted": false, "id": "vjztA9aT9wXo-Mz6v8PpC", "fillStyle": "hachure", @@ -390,26 +408,28 @@ "roughness": 0, "opacity": 100, "angle": 5.789250827564958, - "x": 321.9782879333155, - "y": 154.088665021562, + "x": 421.4883473764835, + "y": 112.31311341902148, "strokeColor": "#000000", "backgroundColor": "transparent", - "width": 1.9590387446170325, - "height": 60.524866420498, + "width": 41.19080273092942, + "height": 106.34212703358264, "seed": 2120846791, "groupIds": [], "strokeSharpness": "round", "boundElements": [], - "updated": 1638978981592, + "updated": 1668096811050, + "link": null, + "locked": false, "startBinding": { "elementId": "ar_8ezfEs1dcv1WTLbxpz", - "focus": -0.20986675637201763, - "gap": 7.748380459840945 + "focus": -0.3542919748085393, + "gap": 3.7621189181977 }, "endBinding": { "elementId": "TPinNTC84gdo4Heiyfrcl", - "focus": 0.2559196066333591, - "gap": 3.3655914385186065 + "focus": -0.11786163970350894, + "gap": 4.694345285733192 }, "lastCommittedPoint": null, "startArrowhead": null, @@ -420,15 +440,15 @@ 0 ], [ - 1.9590387446170325, - -60.524866420498 + 41.19080273092942, + -106.34212703358264 ] ] }, { "type": "text", - "version": 429, - "versionNonce": 297558701, + "version": 430, + "versionNonce": 1302414830, "isDeleted": false, "id": "5P-9jtz0VpZvFi_qlrfFI", "fillStyle": "hachure", @@ -460,7 +480,9 @@ "id": "N3WOXF2nAY4GBP26E12jj" } ], - "updated": 1638978645308, + "updated": 1667837597362, + "link": null, + "locked": false, "fontSize": 16, "fontFamily": 3, "text": "apps lib", @@ -468,12 +490,12 @@ "textAlign": "left", "verticalAlign": "top", "containerId": null, - "originalText": "" + "originalText": "apps lib" }, { "type": "arrow", - "version": 772, - "versionNonce": 1085418147, + "version": 948, + "versionNonce": 1282463730, "isDeleted": false, "id": "lLOOrmC-Vjj7oIfMlYSb8", "fillStyle": "hachure", @@ -482,26 +504,28 @@ "roughness": 0, "opacity": 100, "angle": 0, - "x": -28.858815305624397, - "y": 93.34045003053473, + "x": -38.54189360985094, + "y": 103.78123845818921, "strokeColor": "#000000", "backgroundColor": "transparent", - "width": 27.182921232842055, - "height": 99.9429435430508, + "width": 7.177806850155868, + "height": 90.8090017075307, "seed": 959014413, "groupIds": [], "strokeSharpness": "round", "boundElements": [], - "updated": 1638978645308, + "updated": 1667837597362, + "link": null, + "locked": false, "startBinding": { "elementId": "EbkJ-mbPprZhdzO3Ukel2", - "gap": 10.542003765397801, - "focus": -0.28644471223848134 + "focus": -0.30160028144413814, + "gap": 1 }, "endBinding": { "elementId": "Vv4I15UDLDULEN3MM7cWR", - "gap": 5.046546832176402, - "focus": 0.7161156739729357 + "focus": 0.7145906691885945, + "gap": 3.8928697489783417 }, "lastCommittedPoint": null, "startArrowhead": null, @@ -512,15 +536,15 @@ 0 ], [ - 27.182921232842055, - -99.9429435430508 + -7.177806850155868, + -90.8090017075307 ] ] }, { "type": "rectangle", - "version": 194, - "versionNonce": 489430499, + "version": 250, + "versionNonce": 295589934, "isDeleted": false, "id": "Vv4I15UDLDULEN3MM7cWR", "fillStyle": "hachure", @@ -529,12 +553,12 @@ "roughness": 0, "opacity": 100, "angle": 0, - "x": -35.64597821935695, - "y": -70.64904034469248, + "x": -60.88566731675917, + "y": -36.43280653554018, "strokeColor": "#000000", "backgroundColor": "transparent", - "width": 346, - "height": 59, + "width": 100.52155837741054, + "height": 45.51217353722035, "seed": 479498130, "groupIds": [], "strokeSharpness": "sharp", @@ -550,14 +574,20 @@ { "type": "arrow", "id": "gjvzsG78lEToLfHSwix2l" + }, + { + "id": "1PrWlfvRp8Ry560A9Glzp", + "type": "arrow" } ], - "updated": 1638978645309 + "updated": 1667837597362, + "link": null, + "locked": false }, { "type": "rectangle", - "version": 97, - "versionNonce": 832005581, + "version": 99, + "versionNonce": 540346802, "isDeleted": false, "id": "EbkJ-mbPprZhdzO3Ukel2", "fillStyle": "hachure", @@ -589,12 +619,14 @@ "id": "Q-Lc8vIaRv7dEQF96Es40" } ], - "updated": 1638978645309 + "updated": 1667837597362, + "link": null, + "locked": false }, { "type": "rectangle", - "version": 186, - "versionNonce": 1802791885, + "version": 290, + "versionNonce": 1891574382, "isDeleted": false, "id": "TPinNTC84gdo4Heiyfrcl", "fillStyle": "hachure", @@ -603,8 +635,8 @@ "roughness": 0, "opacity": 100, "angle": 0, - "x": 237.35402178064305, - "y": 34.35095965530752, + "x": 340.870326487958, + "y": -61.13220504353791, "strokeColor": "#000000", "backgroundColor": "transparent", "width": 160.00000000000003, @@ -630,12 +662,14 @@ "id": "VyqgKewhv649Rl_VgfMCi" } ], - "updated": 1638978965417 + "updated": 1667837597362, + "link": null, + "locked": false }, { "type": "rectangle", - "version": 260, - "versionNonce": 1071718765, + "version": 285, + "versionNonce": 1738723890, "isDeleted": false, "id": "ar_8ezfEs1dcv1WTLbxpz", "fillStyle": "hachure", @@ -644,8 +678,8 @@ "roughness": 0, "opacity": 100, "angle": 0, - "x": 270.4373551139763, - "y": 158.68429298864083, + "x": 379.9276094299221, + "y": 119.48407848046276, "strokeColor": "#0008", "backgroundColor": "transparent", "width": 237, @@ -679,12 +713,14 @@ "id": "i1YmU9V2mNKEn1n-x42MI" } ], - "updated": 1638978965416 + "updated": 1668096819675, + "link": null, + "locked": false }, { "type": "rectangle", - "version": 258, - "versionNonce": 1605517603, + "version": 259, + "versionNonce": 1036821678, "isDeleted": false, "id": "Wzbm5P1iAViA47cEtf8fo", "fillStyle": "hachure", @@ -712,12 +748,14 @@ "id": "qTCZ_7N0fuYegT9jZLwYS" } ], - "updated": 1638978645309 + "updated": 1667837597362, + "link": null, + "locked": false }, { "type": "text", - "version": 560, - "versionNonce": 1068083432, + "version": 750, + "versionNonce": 1312802098, "isDeleted": false, "id": "3K5BlHfHmWQqJECqYjhrw", "fillStyle": "hachure", @@ -726,11 +764,11 @@ "roughness": 1, "opacity": 100, "angle": 0, - "x": 327.6412405007913, - "y": -61.5, + "x": 343.82663225612686, + "y": -242.2368746012472, "strokeColor": "#000000", "backgroundColor": "transparent", - "width": 179, + "width": 180, "height": 39, "seed": 1395949267, "groupIds": [], @@ -739,9 +777,15 @@ { "type": "arrow", "id": "XW8p0b2UGBcU4qhuM50S5" + }, + { + "id": "aFB1JfXdwInJtc3gPYN7J", + "type": "arrow" } ], - "updated": 1640603531311, + "updated": 1667837597362, + "link": null, + "locked": false, "fontSize": 16, "fontFamily": 3, "text": "macros\n(procedural macros)", @@ -753,8 +797,8 @@ }, { "type": "rectangle", - "version": 278, - "versionNonce": 246686915, + "version": 505, + "versionNonce": 175103726, "isDeleted": false, "id": "NsweUiJ4jKgjdA0qcz00O", "fillStyle": "hachure", @@ -763,8 +807,8 @@ "roughness": 0, "opacity": 100, "angle": 0, - "x": 321.99526228143435, - "y": -71.14904034469248, + "x": 339.54946548211154, + "y": -252.67389121843763, "strokeColor": "#000000", "backgroundColor": "transparent", "width": 186.00000000000003, @@ -786,12 +830,14 @@ "id": "aFB1JfXdwInJtc3gPYN7J" } ], - "updated": 1638978645309 + "updated": 1667837597362, + "link": null, + "locked": false }, { "type": "arrow", - "version": 1011, - "versionNonce": 482577251, + "version": 1973, + "versionNonce": 2083802866, "isDeleted": false, "id": "aFB1JfXdwInJtc3gPYN7J", "fillStyle": "hachure", @@ -800,26 +846,28 @@ "roughness": 0, "opacity": 100, "angle": 0, - "x": 349.1354167882846, - "y": 23.491799798579976, + "x": 445.0792502855618, + "y": -63.670865022407355, "strokeColor": "#000000", "backgroundColor": "transparent", - "width": 46.682726805305435, - "height": 28.281680286544898, + "width": 3.2579955879015756, + "height": 129.00302619603028, "seed": 190431859, "groupIds": [], "strokeSharpness": "round", "boundElements": [], - "updated": 1638978958370, + "updated": 1667837597362, + "link": null, + "locked": false, "startBinding": { "elementId": "TPinNTC84gdo4Heiyfrcl", - "focus": -0.2707765433519321, - "gap": 10.859159856727544 + "focus": 0.3098397968260942, + "gap": 2.5386599788694326 }, "endBinding": { "elementId": "NsweUiJ4jKgjdA0qcz00O", - "focus": -0.2940419127098849, - "gap": 7.359159856727558 + "focus": -0.09068754025912654, + "gap": 1 }, "lastCommittedPoint": null, "startArrowhead": null, @@ -830,15 +878,15 @@ 0 ], [ - 46.682726805305435, - -28.281680286544898 + -3.2579955879015756, + -129.00302619603028 ] ] }, { "type": "rectangle", - "version": 127, - "versionNonce": 922260579, + "version": 128, + "versionNonce": 1261556014, "isDeleted": false, "id": "4VBZ0MkHPtewJl2Z2t0Bg", "fillStyle": "hachure", @@ -874,12 +922,14 @@ "id": "_2-3bn8mf08UmbZ6BXIFS" } ], - "updated": 1638978645309 + "updated": 1667837597362, + "link": null, + "locked": false }, { "type": "text", - "version": 142, - "versionNonce": 1104385869, + "version": 144, + "versionNonce": 376545458, "isDeleted": false, "id": "rBCHOnrbLb_daQkqQR3iM", "fillStyle": "hachure", @@ -901,9 +951,15 @@ { "type": "arrow", "id": "_2-3bn8mf08UmbZ6BXIFS" + }, + { + "id": "VyqgKewhv649Rl_VgfMCi", + "type": "arrow" } ], - "updated": 1638978645309, + "updated": 1667837597362, + "link": null, + "locked": false, "fontSize": 16, "fontFamily": 2, "text": "tests\n(integration tests &\nwasm test helpers)", @@ -911,12 +967,12 @@ "textAlign": "left", "verticalAlign": "top", "containerId": null, - "originalText": "" + "originalText": "tests\n(integration tests &\nwasm test helpers)" }, { "type": "arrow", - "version": 309, - "versionNonce": 676204547, + "version": 472, + "versionNonce": 2071690094, "isDeleted": false, "id": "gjvzsG78lEToLfHSwix2l", "fillStyle": "hachure", @@ -925,25 +981,27 @@ "roughness": 0, "opacity": 100, "angle": 0, - "x": 121.80008801370579, - "y": 137.1918687462166, + "x": 94.57792085663155, + "y": 138.77133686820622, "strokeColor": "#2b8a3e", "backgroundColor": "transparent", - "width": 31.75599726538033, - "height": 135.45454545454544, + "width": 99.6640019562013, + "height": 119.36582571651728, "seed": 789434278, "groupIds": [], "strokeSharpness": "round", "boundElements": [], - "updated": 1638978645309, + "updated": 1667837597362, + "link": null, + "locked": false, "startBinding": { "elementId": "4VBZ0MkHPtewJl2Z2t0Bg", - "gap": 6.909090909090908, + "gap": 5.329622787101304, "focus": -0.06885109912899212 }, "endBinding": { "elementId": "Vv4I15UDLDULEN3MM7cWR", - "gap": 13.386363636363635, + "gap": 10.326144150008776, "focus": 0.31883892934573677 }, "lastCommittedPoint": null, @@ -955,15 +1013,15 @@ 0 ], [ - -31.75599726538033, - -135.45454545454544 + -99.6640019562013, + -119.36582571651728 ] ] }, { "type": "arrow", - "version": 359, - "versionNonce": 664938243, + "version": 619, + "versionNonce": 681491058, "isDeleted": false, "id": "VyqgKewhv649Rl_VgfMCi", "fillStyle": "hachure", @@ -972,26 +1030,28 @@ "roughness": 0, "opacity": 100, "angle": 0, - "x": 217.6291874855842, - "y": 152.50812625104635, + "x": 190.98928227815566, + "y": 146.14641420076202, "strokeColor": "#2b8a3e", "backgroundColor": "transparent", - "width": 50.95431878398884, - "height": 57.42989386846611, + "width": 178.9705519462201, + "height": 146.55134651702718, "seed": 1052874982, "groupIds": [], "strokeSharpness": "round", "boundElements": [], - "updated": 1638978958370, + "updated": 1667837597362, + "link": null, + "locked": false, "startBinding": { - "elementId": "4VBZ0MkHPtewJl2Z2t0Bg", - "gap": 3.454545454545454, - "focus": 0.48484848484848486 + "elementId": "rBCHOnrbLb_daQkqQR3iM", + "focus": 0.0748046726595633, + "gap": 11.454545454545496 }, "endBinding": { "elementId": "TPinNTC84gdo4Heiyfrcl", - "gap": 1.727272727272727, - "focus": 0.1983948188896127 + "focus": 0.11010748617593992, + "gap": 1.727272727272748 }, "lastCommittedPoint": null, "startArrowhead": null, @@ -1002,15 +1062,15 @@ 0 ], [ - 50.95431878398884, - -57.42989386846611 + 178.9705519462201, + -146.55134651702718 ] ] }, { "type": "rectangle", - "version": 213, - "versionNonce": 1969612813, + "version": 214, + "versionNonce": 1100340654, "isDeleted": false, "id": "5bb86M_XNHtgqUWdz-kf-", "fillStyle": "hachure", @@ -1038,12 +1098,14 @@ "id": "j6R5PVZmpe0pg3dobMg_R" } ], - "updated": 1638978645309 + "updated": 1667837597362, + "link": null, + "locked": false }, { "type": "text", - "version": 189, - "versionNonce": 1784032067, + "version": 190, + "versionNonce": 830643250, "isDeleted": false, "id": "8rk_Ui9gDtaE7NNb8u2Ir", "fillStyle": "hachure", @@ -1067,7 +1129,9 @@ "id": "_2-3bn8mf08UmbZ6BXIFS" } ], - "updated": 1638978645309, + "updated": 1667837597363, + "link": null, + "locked": false, "fontSize": 16, "fontFamily": 2, "text": "wasm tests", @@ -1075,12 +1139,12 @@ "textAlign": "left", "verticalAlign": "top", "containerId": null, - "originalText": "" + "originalText": "wasm tests" }, { "type": "arrow", - "version": 692, - "versionNonce": 770137709, + "version": 693, + "versionNonce": 313128942, "isDeleted": false, "id": "_2-3bn8mf08UmbZ6BXIFS", "fillStyle": "hachure", @@ -1099,7 +1163,9 @@ "groupIds": [], "strokeSharpness": "round", "boundElements": [], - "updated": 1638978645309, + "updated": 1667837597363, + "link": null, + "locked": false, "startBinding": { "elementId": "8rk_Ui9gDtaE7NNb8u2Ir", "gap": 15, @@ -1126,8 +1192,8 @@ }, { "type": "rectangle", - "version": 491, - "versionNonce": 227920611, + "version": 492, + "versionNonce": 1057244658, "isDeleted": false, "id": "c9FTgvEkL5qGqshm1XkEc", "fillStyle": "hachure", @@ -1171,12 +1237,14 @@ "id": "6kR5qmpuk9pmD6Oi1l544" } ], - "updated": 1638978645309 + "updated": 1667837597363, + "link": null, + "locked": false }, { "type": "text", - "version": 441, - "versionNonce": 397084877, + "version": 442, + "versionNonce": 1455475246, "isDeleted": false, "id": "CTPEGHIc-rJMuCSTtfFbf", "fillStyle": "hachure", @@ -1200,7 +1268,9 @@ "id": "j6R5PVZmpe0pg3dobMg_R" } ], - "updated": 1638978645309, + "updated": 1667837597363, + "link": null, + "locked": false, "fontSize": 16, "fontFamily": 2, "text": "wasm_for_tests\n(pre-build scripts\nused for testing)", @@ -1208,12 +1278,12 @@ "textAlign": "left", "verticalAlign": "top", "containerId": null, - "originalText": "" + "originalText": "wasm_for_tests\n(pre-build scripts\nused for testing)" }, { "type": "arrow", - "version": 1118, - "versionNonce": 530436365, + "version": 1185, + "versionNonce": 1063455986, "isDeleted": false, "id": "j6R5PVZmpe0pg3dobMg_R", "fillStyle": "hachure", @@ -1222,17 +1292,19 @@ "roughness": 0, "opacity": 100, "angle": 0, - "x": 547.2189008950138, + "x": 566.5341925316106, "y": 396.7891966896191, "strokeColor": "#2b8a3e", "backgroundColor": "transparent", - "width": 45.12760305424797, - "height": 156.0355604263109, + "width": 22.78354967823168, + "height": 195.23577493448897, "seed": 1559261453, "groupIds": [], "strokeSharpness": "round", "boundElements": [], - "updated": 1638978981592, + "updated": 1668096811050, + "link": null, + "locked": false, "startBinding": { "elementId": "c9FTgvEkL5qGqshm1XkEc", "gap": 8.020096299021654, @@ -1252,15 +1324,15 @@ 0 ], [ - -45.12760305424797, - -156.0355604263109 + 22.78354967823168, + -195.23577493448897 ] ] }, { "type": "text", - "version": 550, - "versionNonce": 1498721827, + "version": 551, + "versionNonce": 214127726, "isDeleted": false, "id": "dqZ0GfpvY8Ewz9AEmMCWa", "fillStyle": "hachure", @@ -1300,7 +1372,9 @@ "id": "qTCZ_7N0fuYegT9jZLwYS" } ], - "updated": 1638978645309, + "updated": 1667837597363, + "link": null, + "locked": false, "fontSize": 16, "fontFamily": 3, "text": "tx/vp_prelude", @@ -1308,12 +1382,12 @@ "textAlign": "left", "verticalAlign": "top", "containerId": null, - "originalText": "" + "originalText": "tx/vp_prelude" }, { "type": "rectangle", - "version": 281, - "versionNonce": 372177293, + "version": 284, + "versionNonce": 1565813998, "isDeleted": false, "id": "fjybklv3t7WGXd-_o4IGU", "fillStyle": "hachure", @@ -1359,14 +1433,20 @@ { "type": "arrow", "id": "i1YmU9V2mNKEn1n-x42MI" + }, + { + "id": "Mj92y8jQAhAp2FAk2eDPa", + "type": "arrow" } ], - "updated": 1638978645309 + "updated": 1668096821612, + "link": null, + "locked": false }, { "type": "arrow", - "version": 1483, - "versionNonce": 1386463587, + "version": 1484, + "versionNonce": 1853527726, "isDeleted": false, "id": "qTCZ_7N0fuYegT9jZLwYS", "fillStyle": "hachure", @@ -1385,7 +1465,9 @@ "groupIds": [], "strokeSharpness": "round", "boundElements": [], - "updated": 1638978645309, + "updated": 1667837597363, + "link": null, + "locked": false, "startBinding": { "elementId": "Wzbm5P1iAViA47cEtf8fo", "focus": -0.9194768569701585, @@ -1412,8 +1494,8 @@ }, { "type": "arrow", - "version": 1662, - "versionNonce": 1619056269, + "version": 1729, + "versionNonce": 1092132530, "isDeleted": false, "id": "ZIRL-fdZPjVJvZGV2ldOy", "fillStyle": "hachure", @@ -1422,17 +1504,19 @@ "roughness": 0, "opacity": 100, "angle": 0, - "x": 381.5826013057739, - "y": 292.4896723063988, + "x": 404.23462696568436, + "y": 292.48967230639886, "strokeColor": "#000000", "backgroundColor": "transparent", - "width": 27.405787418156137, - "height": 51.49682634384905, + "width": 27.550876861996244, + "height": 90.69704085202719, "seed": 349033581, "groupIds": [], "strokeSharpness": "round", "boundElements": [], - "updated": 1638978962317, + "updated": 1668096811051, + "link": null, + "locked": false, "startBinding": { "elementId": "fjybklv3t7WGXd-_o4IGU", "gap": 4.902954015575294, @@ -1452,15 +1536,15 @@ 0 ], [ - -27.405787418156137, - -51.49682634384905 + 27.550876861996244, + -90.69704085202719 ] ] }, { "type": "arrow", - "version": 1085, - "versionNonce": 1611373827, + "version": 1086, + "versionNonce": 344953070, "isDeleted": false, "id": "6kR5qmpuk9pmD6Oi1l544", "fillStyle": "hachure", @@ -1479,7 +1563,9 @@ "groupIds": [], "strokeSharpness": "round", "boundElements": [], - "updated": 1638978645309, + "updated": 1667837597363, + "link": null, + "locked": false, "startBinding": { "elementId": "c9FTgvEkL5qGqshm1XkEc", "focus": 0.08731195893821785, @@ -1506,8 +1592,8 @@ }, { "type": "arrow", - "version": 1222, - "versionNonce": 77626605, + "version": 1289, + "versionNonce": 565573746, "isDeleted": false, "id": "i1YmU9V2mNKEn1n-x42MI", "fillStyle": "hachure", @@ -1516,17 +1602,19 @@ "roughness": 0, "opacity": 100, "angle": 0, - "x": 436.8729532949412, - "y": 295.6281799726297, + "x": 453.9052924435333, + "y": 295.62817997262965, "strokeColor": "#2b8a3e", "backgroundColor": "transparent", - "width": 32.396136366778364, - "height": 56.23087292631101, + "width": 116.88603369223176, + "height": 95.43108743448903, "seed": 1441329475, "groupIds": [], "strokeSharpness": "round", "boundElements": [], - "updated": 1638978962317, + "updated": 1668096811051, + "link": null, + "locked": false, "startBinding": { "elementId": "fjybklv3t7WGXd-_o4IGU", "gap": 1.7644463493444311, @@ -1546,8 +1634,377 @@ 0 ], [ - 32.396136366778364, - -56.23087292631101 + 116.88603369223176, + -95.43108743448903 + ] + ] + }, + { + "type": "text", + "version": 3, + "versionNonce": 445334318, + "isDeleted": false, + "id": "snE5rQoYffGo1nNrkicz7", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 72.68099857250752, + "y": 104.64262632197415, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 11, + "height": 25, + "seed": 107469989, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElements": [], + "updated": 1667837597363, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "", + "baseline": 18, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "" + }, + { + "type": "text", + "version": 580, + "versionNonce": 421547698, + "isDeleted": false, + "id": "rXDjoawThAsgINC3dYskv", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": -66.20111453872039, + "y": -142.01868555754857, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 133, + "height": 20, + "seed": 1686954135, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElements": [ + { + "type": "arrow", + "id": "XW8p0b2UGBcU4qhuM50S5" + }, + { + "id": "RSaOI_j676g1pzgh68PGT", + "type": "arrow" + }, + { + "id": "1PrWlfvRp8Ry560A9Glzp", + "type": "arrow" + } + ], + "updated": 1667837597363, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 3, + "text": "proof_of_stake", + "baseline": 16, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "proof_of_stake" + }, + { + "type": "rectangle", + "version": 344, + "versionNonce": 1081994798, + "isDeleted": false, + "id": "BTWJfUkextn5AFNkxH0zw", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": -77.14160994875033, + "y": -151.5204673069046, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 151, + "height": 40, + "seed": 530602073, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElements": [ + { + "type": "arrow", + "id": "lLOOrmC-Vjj7oIfMlYSb8" + }, + { + "type": "arrow", + "id": "XW8p0b2UGBcU4qhuM50S5" + }, + { + "type": "arrow", + "id": "gjvzsG78lEToLfHSwix2l" + }, + { + "id": "1PrWlfvRp8Ry560A9Glzp", + "type": "arrow" + }, + { + "id": "RSaOI_j676g1pzgh68PGT", + "type": "arrow" + }, + { + "id": "Mj92y8jQAhAp2FAk2eDPa", + "type": "arrow" + } + ], + "updated": 1668096823718, + "link": null, + "locked": false + }, + { + "type": "arrow", + "version": 1316, + "versionNonce": 2101848178, + "isDeleted": false, + "id": "1PrWlfvRp8Ry560A9Glzp", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": -34.83434658237711, + "y": -37.43280653554018, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 3.545409484342265, + "height": 70.05629000440024, + "seed": 1540235929, + "groupIds": [], + "strokeSharpness": "round", + "boundElements": [], + "updated": 1667837597363, + "link": null, + "locked": false, + "startBinding": { + "elementId": "Vv4I15UDLDULEN3MM7cWR", + "focus": -0.4475029650922005, + "gap": 1 + }, + "endBinding": { + "elementId": "BTWJfUkextn5AFNkxH0zw", + "focus": 0.4960561286307573, + "gap": 4.031370766964187 + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + -3.545409484342265, + -70.05629000440024 + ] + ] + }, + { + "type": "text", + "version": 679, + "versionNonce": 448450478, + "isDeleted": false, + "id": "HCnc-kGdrOmv66h53nUVE", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": -67.30268218444724, + "y": -246.60346391844524, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 349, + "height": 39, + "seed": 1355025177, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElements": [ + { + "type": "arrow", + "id": "XW8p0b2UGBcU4qhuM50S5" + }, + { + "id": "RSaOI_j676g1pzgh68PGT", + "type": "arrow" + } + ], + "updated": 1667837597363, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 3, + "text": "core\n(basic types, storage, tx and VP api)", + "baseline": 35, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "core\n(basic types, storage, tx and VP api)" + }, + { + "type": "rectangle", + "version": 435, + "versionNonce": 517851698, + "isDeleted": false, + "id": "sXto6tFtVz5VWUddCdZEa", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": -79.89486434732021, + "y": -251.87740247708948, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 383.6822949125378, + "height": 50.95994240187291, + "seed": 363368183, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElements": [ + { + "type": "arrow", + "id": "lLOOrmC-Vjj7oIfMlYSb8" + }, + { + "type": "arrow", + "id": "XW8p0b2UGBcU4qhuM50S5" + }, + { + "type": "arrow", + "id": "gjvzsG78lEToLfHSwix2l" + }, + { + "id": "1PrWlfvRp8Ry560A9Glzp", + "type": "arrow" + }, + { + "id": "RSaOI_j676g1pzgh68PGT", + "type": "arrow" + } + ], + "updated": 1667837597363, + "link": null, + "locked": false + }, + { + "type": "arrow", + "version": 1716, + "versionNonce": 2030577454, + "isDeleted": false, + "id": "RSaOI_j676g1pzgh68PGT", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": -36.723031505650525, + "y": -150.96698192339844, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 0.9289040894322254, + "height": 50.09773674715467, + "seed": 540356215, + "groupIds": [], + "strokeSharpness": "round", + "boundElements": [], + "updated": 1667837599964, + "link": null, + "locked": false, + "startBinding": { + "elementId": "rXDjoawThAsgINC3dYskv", + "focus": -0.5604411595305062, + "gap": 8.94829636584987 + }, + "endBinding": { + "elementId": "HCnc-kGdrOmv66h53nUVE", + "focus": 0.8149797719982349, + "gap": 6.5387452478921375 + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 0.9289040894322254, + -50.09773674715467 + ] + ] + }, + { + "type": "arrow", + "version": 1836, + "versionNonce": 908201778, + "isDeleted": false, + "id": "Mj92y8jQAhAp2FAk2eDPa", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 363.10096424865014, + "y": 291.4865667122689, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 329.30624831590114, + "height": 396.18836770886367, + "seed": 1218382706, + "groupIds": [], + "strokeSharpness": "round", + "boundElements": [], + "updated": 1668096824328, + "link": null, + "locked": false, + "startBinding": { + "elementId": "fjybklv3t7WGXd-_o4IGU", + "focus": -0.2598321416788019, + "gap": 5.906059609705238 + }, + "endBinding": { + "elementId": "BTWJfUkextn5AFNkxH0zw", + "focus": -0.14268881162945926, + "gap": 6.818666310309823 + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + -329.30624831590114, + -396.18836770886367 ] ] } diff --git a/documentation/dev/src/explore/design/overview/crates.svg b/documentation/dev/src/explore/design/overview/crates.svg index 49f36fd6bc..c08993547b 100644 --- a/documentation/dev/src/explore/design/overview/crates.svg +++ b/documentation/dev/src/explore/design/overview/crates.svg @@ -1,4 +1,4 @@ - + @@ -13,4 +13,4 @@ } - sdk(generated by the node) not yet implementedapps (node/client/broadcaster)shared(has to be able to compile to wasm)wasm(tx/vp/mm/mm_filter)vm_env(wasm imports)apps libmacros(procedural macros)tests(integration tests &wasm test helpers)wasm testswasm_for_tests(pre-build scriptsused for testing)tx/vp_prelude \ No newline at end of file + sdk(generated by the node) not yet implementedapps (node/client/broadcaster)sharedwasm(tx/vp/mm/mm_filter)vm_env(wasm imports)apps libmacros(procedural macros)tests(integration tests &wasm test helpers)wasm testswasm_for_tests(pre-build scriptsused for testing)tx/vp_preludeproof_of_stakecore(basic types, storage, tx and VP api) \ No newline at end of file diff --git a/documentation/dev/src/explore/design/overview/root-workspace-cargo-udeps.png b/documentation/dev/src/explore/design/overview/root-workspace-cargo-udeps.png new file mode 100644 index 0000000000000000000000000000000000000000..6eef3287eb645fb3893efc6102cae33690fa959f GIT binary patch literal 34486 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%0D#>RrDzJuY2;x)>?rS50WaAN|LE4T1oEA*0m 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 literal 0 HcmV?d00001