@@ -30,7 +30,7 @@ echo "Building release binary..."
3030cargo build --release --manifest-path " $SCRIPT_DIR /Cargo.toml" -q
3131
3232echo " "
33- echo " Validating the VM version can run '$FILE ' without crashing..."
33+ echo " Validating versions can run '$FILE ' without crashing..."
3434
3535validate () {
3636 local label=" $1 "
@@ -42,14 +42,52 @@ validate() {
4242 echo " OK: $label "
4343}
4444
45- validate " ndc (PATH)" ndc run " $FILE "
45+ validate " ndc (PATH)" ndc run " $FILE "
4646validate " local release (VM)" " $LOCAL " run " $FILE "
4747
48+ # ndc2 and ndc1 are optional: older versions may not support all language features
49+ # ndc1 also has a different CLI (no 'run' subcommand)
50+ USE_NDC2=false
51+ if command -v ndc2 & > /dev/null; then
52+ if ndc2 run " $FILE " & > /dev/null; then
53+ echo " OK: ndc2 (v0.2.1)"
54+ USE_NDC2=true
55+ else
56+ echo " SKIP: ndc2 (v0.2.1) failed to run '$FILE ', skipping"
57+ fi
58+ else
59+ echo " SKIP: ndc2 not found, skipping"
60+ fi
61+
62+ USE_NDC1=false
63+ if command -v ndc1 & > /dev/null; then
64+ if ndc1 " $FILE " & > /dev/null; then
65+ echo " OK: ndc1 (v0.1.0)"
66+ USE_NDC1=true
67+ else
68+ echo " SKIP: ndc1 (v0.1.0) failed to run '$FILE ', skipping"
69+ fi
70+ else
71+ echo " SKIP: ndc1 not found, skipping"
72+ fi
73+
4874echo " "
4975echo " Running benchmark..."
5076echo " "
5177
78+ NDC2_ARGS=()
79+ if [[ " $USE_NDC2 " == true ]]; then
80+ NDC2_ARGS=(--command-name " ndc2 (v0.2.1)" " ndc2 run '$FILE '" )
81+ fi
82+
83+ NDC1_ARGS=()
84+ if [[ " $USE_NDC1 " == true ]]; then
85+ NDC1_ARGS=(--command-name " ndc1 (v0.1.0)" " ndc1 '$FILE '" )
86+ fi
87+
5288hyperfine \
5389 --warmup 3 \
5490 --command-name " ndc (installed)" " ndc run '$FILE '" \
55- --command-name " local release (VM)" " '$LOCAL ' run '$FILE '"
91+ --command-name " local release (VM)" " '$LOCAL ' run '$FILE '" \
92+ " ${NDC2_ARGS[@]} " \
93+ " ${NDC1_ARGS[@]} "
0 commit comments