ic-mops 2.2.0 → 2.2.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.
Files changed (84) hide show
  1. package/.DS_Store +0 -0
  2. package/CHANGELOG.md +3 -0
  3. package/bundle/bench/bench-canister.mo +130 -0
  4. package/bundle/bench/user-bench.mo +10 -0
  5. package/bundle/bin/moc-wrapper.sh +40 -0
  6. package/bundle/bin/mops.js +3 -0
  7. package/bundle/cli.js +1569 -0
  8. package/bundle/cli.tgz +0 -0
  9. package/bundle/declarations/bench/bench.did +30 -0
  10. package/bundle/declarations/bench/bench.did.d.ts +33 -0
  11. package/bundle/declarations/bench/bench.did.js +30 -0
  12. package/bundle/declarations/bench/index.d.ts +50 -0
  13. package/bundle/declarations/bench/index.js +40 -0
  14. package/bundle/declarations/main/index.d.ts +50 -0
  15. package/bundle/declarations/main/index.js +40 -0
  16. package/bundle/declarations/main/main.did +428 -0
  17. package/bundle/declarations/main/main.did.d.ts +348 -0
  18. package/bundle/declarations/main/main.did.js +406 -0
  19. package/bundle/declarations/storage/index.d.ts +50 -0
  20. package/bundle/declarations/storage/index.js +30 -0
  21. package/bundle/declarations/storage/storage.did +46 -0
  22. package/bundle/declarations/storage/storage.did.d.ts +40 -0
  23. package/bundle/declarations/storage/storage.did.js +38 -0
  24. package/bundle/default-stylesheet.css +415 -0
  25. package/bundle/package.json +36 -0
  26. package/bundle/templates/README.md +13 -0
  27. package/bundle/templates/licenses/Apache-2.0 +202 -0
  28. package/bundle/templates/licenses/Apache-2.0-NOTICE +13 -0
  29. package/bundle/templates/licenses/MIT +21 -0
  30. package/bundle/templates/mops-publish.yml +17 -0
  31. package/bundle/templates/mops-test.yml +24 -0
  32. package/bundle/templates/src/lib.mo +15 -0
  33. package/bundle/templates/test/lib.test.mo +4 -0
  34. package/bundle/wasm_bg.wasm +0 -0
  35. package/bundle/xhr-sync-worker.js +51 -0
  36. package/commands/toolchain/index.ts +4 -0
  37. package/dist/commands/toolchain/index.js +3 -0
  38. package/dist/mops.js +0 -4
  39. package/dist/package.json +6 -7
  40. package/dist/tests/toolchain.test.js +11 -0
  41. package/dist/wasm/pkg/bundler/package.json +20 -0
  42. package/dist/wasm/pkg/bundler/wasm.d.ts +3 -0
  43. package/dist/wasm/pkg/bundler/wasm.js +5 -0
  44. package/dist/wasm/pkg/bundler/wasm_bg.js +93 -0
  45. package/dist/wasm/pkg/bundler/wasm_bg.wasm +0 -0
  46. package/dist/wasm/pkg/bundler/wasm_bg.wasm.d.ts +8 -0
  47. package/dist/wasm/pkg/nodejs/wasm_bg.wasm +0 -0
  48. package/dist/wasm/pkg/web/wasm_bg.wasm +0 -0
  49. package/mops.ts +0 -6
  50. package/package.json +8 -9
  51. package/tests/build/success/.dfx/local/canister_ids.json +17 -0
  52. package/tests/build/success/.dfx/local/canisters/bar/bar.did +3 -0
  53. package/tests/build/success/.dfx/local/canisters/bar/bar.most +4 -0
  54. package/tests/build/success/.dfx/local/canisters/bar/bar.wasm +0 -0
  55. package/tests/build/success/.dfx/local/canisters/bar/constructor.did +3 -0
  56. package/tests/build/success/.dfx/local/canisters/bar/index.js +42 -0
  57. package/tests/build/success/.dfx/local/canisters/bar/init_args.txt +1 -0
  58. package/tests/build/success/.dfx/local/canisters/bar/service.did +3 -0
  59. package/tests/build/success/.dfx/local/canisters/bar/service.did.d.ts +7 -0
  60. package/tests/build/success/.dfx/local/canisters/bar/service.did.js +4 -0
  61. package/tests/build/success/.dfx/local/canisters/foo/constructor.did +3 -0
  62. package/tests/build/success/.dfx/local/canisters/foo/foo.did +3 -0
  63. package/tests/build/success/.dfx/local/canisters/foo/foo.most +4 -0
  64. package/tests/build/success/.dfx/local/canisters/foo/foo.wasm +0 -0
  65. package/tests/build/success/.dfx/local/canisters/foo/index.js +42 -0
  66. package/tests/build/success/.dfx/local/canisters/foo/init_args.txt +1 -0
  67. package/tests/build/success/.dfx/local/canisters/foo/service.did +3 -0
  68. package/tests/build/success/.dfx/local/canisters/foo/service.did.d.ts +7 -0
  69. package/tests/build/success/.dfx/local/canisters/foo/service.did.js +4 -0
  70. package/tests/build/success/.dfx/local/lsp/ucwa4-rx777-77774-qaada-cai.did +3 -0
  71. package/tests/build/success/.dfx/local/lsp/ulvla-h7777-77774-qaacq-cai.did +3 -0
  72. package/tests/build/success/.dfx/local/network-id +4 -0
  73. package/tests/toolchain-local-subpath/bin/moc +2 -0
  74. package/tests/toolchain-local-subpath/mops.toml +2 -0
  75. package/tests/toolchain.test.ts +13 -0
  76. package/wasm/Cargo.lock +54 -101
  77. package/wasm/pkg/bundler/package.json +20 -0
  78. package/wasm/pkg/bundler/wasm.d.ts +3 -0
  79. package/wasm/pkg/bundler/wasm.js +5 -0
  80. package/wasm/pkg/bundler/wasm_bg.js +93 -0
  81. package/wasm/pkg/bundler/wasm_bg.wasm +0 -0
  82. package/wasm/pkg/bundler/wasm_bg.wasm.d.ts +8 -0
  83. package/wasm/pkg/nodejs/wasm_bg.wasm +0 -0
  84. package/wasm/pkg/web/wasm_bg.wasm +0 -0
package/.DS_Store ADDED
Binary file
package/CHANGELOG.md CHANGED
@@ -2,6 +2,9 @@
2
2
 
3
3
  ## Next
4
4
 
5
+ ## 2.2.1
6
+ - Fix `mops toolchain` when toolchain version is a local file path with subdirectories.
7
+
5
8
  ## 2.2.0
6
9
  - Add `[moc]` config section for global `moc` compiler flags (applied to `check`, `build`, `test`, `bench`, `watch`)
7
10
  - Add `mops moc-args` command to print global `moc` flags from `[moc]` config section
@@ -0,0 +1,130 @@
1
+ import Nat64 "mo:core/Nat64";
2
+ import Nat "mo:core/Nat";
3
+ import Runtime "mo:core/Runtime";
4
+ import InternetComputer "mo:core/InternetComputer";
5
+ import Region "mo:core/Region";
6
+ import Prim "mo:prim";
7
+
8
+ import UserBench "./user-bench"; // file path will be replaced with the *.bench.mo file path
9
+
10
+ persistent actor class () {
11
+ type BenchSchema = {
12
+ name : Text;
13
+ description : Text;
14
+ rows : [Text];
15
+ cols : [Text];
16
+ };
17
+
18
+ type Bench = {
19
+ getVersion : () -> Nat;
20
+ getSchema : () -> BenchSchema;
21
+ runCell : (Nat, Nat) -> ();
22
+ };
23
+
24
+ type BenchResult = {
25
+ instructions : Int;
26
+ rts_mutator_instructions : Int;
27
+ stable_memory_size : Int;
28
+ rts_stable_memory_size : Int;
29
+ rts_logical_stable_memory_size : Int;
30
+ rts_collector_instructions : Int;
31
+ rts_heap_size : Int;
32
+ rts_memory_size : Int;
33
+ rts_total_allocation : Int;
34
+ rts_reclaimed : Int;
35
+ };
36
+
37
+ transient var benchOpt : ?Bench = null;
38
+
39
+ public func init() : async BenchSchema {
40
+ let bench = UserBench.init();
41
+ benchOpt := ?bench;
42
+ ignore Region.grow(Region.new(), 1);
43
+ bench.getSchema();
44
+ };
45
+
46
+ public query func getSchema() : async BenchSchema {
47
+ let ?bench = benchOpt else Runtime.trap("bench not initialized");
48
+ bench.getSchema();
49
+ };
50
+
51
+ func _getStats() : BenchResult {
52
+ {
53
+ instructions = 0;
54
+ rts_heap_size = Prim.rts_heap_size();
55
+ stable_memory_size = Prim.rts_stable_memory_size() * 65536;
56
+ rts_stable_memory_size = Prim.rts_stable_memory_size();
57
+ rts_logical_stable_memory_size = Prim.rts_logical_stable_memory_size();
58
+ rts_memory_size = Prim.rts_memory_size();
59
+ rts_total_allocation = Prim.rts_total_allocation();
60
+ rts_reclaimed = Prim.rts_reclaimed();
61
+ rts_mutator_instructions = Prim.rts_mutator_instructions();
62
+ rts_collector_instructions = Prim.rts_collector_instructions();
63
+ };
64
+ };
65
+
66
+ func _diffStats(before : BenchResult, after : BenchResult) : BenchResult {
67
+ {
68
+ instructions = after.instructions - before.instructions;
69
+ rts_heap_size = after.rts_heap_size - before.rts_heap_size;
70
+ stable_memory_size = after.stable_memory_size - before.stable_memory_size;
71
+ rts_stable_memory_size = after.rts_stable_memory_size - before.rts_stable_memory_size;
72
+ rts_logical_stable_memory_size = after.rts_logical_stable_memory_size - before.rts_logical_stable_memory_size;
73
+ rts_memory_size = after.rts_memory_size - before.rts_memory_size;
74
+ rts_total_allocation = after.rts_total_allocation - before.rts_total_allocation;
75
+ rts_reclaimed = after.rts_reclaimed - before.rts_reclaimed;
76
+ rts_mutator_instructions = after.rts_mutator_instructions - before.rts_mutator_instructions;
77
+ rts_collector_instructions = after.rts_collector_instructions - before.rts_collector_instructions;
78
+ };
79
+ };
80
+
81
+ func _runCell(rowIndex : Nat, colIndex : Nat) : BenchResult {
82
+ let ?bench = benchOpt else Runtime.trap("bench not initialized");
83
+ let statsBefore = _getStats();
84
+
85
+ let instructions = Nat64.toNat(
86
+ InternetComputer.countInstructions(
87
+ func() {
88
+ bench.runCell(rowIndex, colIndex);
89
+ }
90
+ )
91
+ );
92
+
93
+ let statsAfter = _getStats();
94
+ _diffStats(statsBefore, { statsAfter with instructions });
95
+ };
96
+
97
+ func _runCellAwait(rowIndex : Nat, colIndex : Nat) : async BenchResult {
98
+ let ?bench = benchOpt else Runtime.trap("bench not initialized");
99
+ let statsBefore = _getStats();
100
+
101
+ let instructions = Nat64.toNat(
102
+ InternetComputer.countInstructions(
103
+ func() {
104
+ bench.runCell(rowIndex, colIndex);
105
+ }
106
+ )
107
+ );
108
+
109
+ await (func() : async () {})();
110
+
111
+ let statsAfter = _getStats();
112
+ _diffStats(statsBefore, { statsAfter with instructions });
113
+ };
114
+
115
+ public query func getStats() : async BenchResult {
116
+ _getStats();
117
+ };
118
+
119
+ public query func runCellQuery(rowIndex : Nat, colIndex : Nat) : async BenchResult {
120
+ _runCell(rowIndex, colIndex);
121
+ };
122
+
123
+ public func runCellUpdate(rowIndex : Nat, colIndex : Nat) : async BenchResult {
124
+ _runCell(rowIndex, colIndex);
125
+ };
126
+
127
+ public func runCellUpdateAwait(rowIndex : Nat, colIndex : Nat) : async BenchResult {
128
+ await _runCellAwait(rowIndex, colIndex);
129
+ };
130
+ };
@@ -0,0 +1,10 @@
1
+ import Bench "mo:bench";
2
+
3
+ // placeholder file that will be replaced with the *.bench.mo file
4
+ module {
5
+ public func init() : Bench.Bench {
6
+ let bench = Bench.Bench();
7
+ // benchmark code goes here...
8
+ bench;
9
+ };
10
+ };
@@ -0,0 +1,40 @@
1
+ #!/bin/bash
2
+
3
+ # set -e
4
+
5
+ findRootDir() {
6
+ dir="$(pwd)"
7
+ while [[ "$dir" != "" && ! -e "$dir/mops.toml" ]]; do
8
+ dir=${dir%/*}
9
+ done
10
+ echo "$dir"
11
+ }
12
+
13
+ rootDir=$(findRootDir)
14
+ mopsToml="$rootDir/mops.toml"
15
+
16
+ if [[ $rootDir == "" ]] || [[ ! -f $mopsToml ]]; then
17
+ mocPath="$(mops toolchain bin moc --fallback)"
18
+ else
19
+ if command -v openssl >/dev/null 2>&1; then
20
+ mopsTomlHash=$(openssl sha256 $mopsToml | awk -F'= ' '{print $2}')
21
+ else
22
+ mopsTomlHash=$(shasum $mopsToml -a 256 | awk -F' ' '{print $1}')
23
+ fi;
24
+
25
+ cached="$rootDir/.mops/moc-$(uname -n)-$mopsTomlHash"
26
+
27
+ if [ -f $cached ]; then
28
+ mocPath=$(cat $cached)
29
+ if [[ "$mocPath" != *"/moc" ]] ; then
30
+ mocPath="$(mops toolchain bin moc --fallback)"
31
+ echo -n $mocPath > "$cached"
32
+ fi;
33
+ else
34
+ mkdir -p "$(dirname $cached)"
35
+ mocPath="$(mops toolchain bin moc --fallback)"
36
+ echo -n $mocPath > "$cached"
37
+ fi;
38
+ fi;
39
+
40
+ $mocPath "$@"
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+
3
+ import "../cli.js";