File size: 4,356 Bytes
119e586 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 | #!/bin/bash
# SKC-LISP: Build Rust β WASM (Phase 3D-3)
# Compiles crypto-wasm.rs to browser-ready WASM module
set -e
echo "=== SoulVM JIT: WASM Build Pipeline ==="
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
cd "$SCRIPT_DIR"
# ============================================================================
# Step 1: Install wasm-pack (if needed)
# ============================================================================
echo "[1/6] Checking wasm-pack..."
if ! command -v wasm-pack &> /dev/null; then
echo "Installing wasm-pack..."
curl https://rustwasm.org/wasm-pack/installer/init.sh -sSf | sh
fi
WASM_PACK_VERSION=$(wasm-pack --version)
echo "β wasm-pack installed: $WASM_PACK_VERSION"
# ============================================================================
# Step 2: Install Rust wasm32 target
# ============================================================================
echo "[2/6] Installing wasm32-unknown-unknown target..."
rustup target add wasm32-unknown-unknown
echo "β Target installed"
# ============================================================================
# Step 3: Run Rust tests (native)
# ============================================================================
echo "[3/6] Running Rust unit tests (native)..."
cargo test --lib 2>&1 | grep -E "test|passed|failed" || true
echo "β Tests complete"
# ============================================================================
# Step 4: Compile to WASM
# ============================================================================
echo "[4/6] Compiling Rust β WASM (wasm-pack)..."
wasm-pack build \
--target web \
--release \
--out-dir pkg \
--no-typescript
echo "β WASM compilation complete"
# ============================================================================
# Step 5: Verify artifacts
# ============================================================================
echo "[5/6] Verifying artifacts..."
if [ -f "pkg/skclisp_crypto_wasm.wasm" ]; then
WASM_SIZE=$(stat -f%z "pkg/skclisp_crypto_wasm.wasm" 2>/dev/null || stat -c%s "pkg/skclisp_crypto_wasm.wasm")
echo "β WASM module: pkg/skclisp_crypto_wasm.wasm ($WASM_SIZE bytes)"
else
echo "ERROR: WASM module not found"
exit 1
fi
if [ -f "pkg/skclisp_crypto_wasm.js" ]; then
JS_SIZE=$(stat -f%z "pkg/skclisp_crypto_wasm.js" 2>/dev/null || stat -c%s "pkg/skclisp_crypto_wasm.js")
echo "β JavaScript glue: pkg/skclisp_crypto_wasm.js ($JS_SIZE bytes)"
else
echo "ERROR: JavaScript glue not found"
exit 1
fi
# ============================================================================
# Step 6: Copy to docs/ for GitHub Pages
# ============================================================================
echo "[6/6] Deploying to GitHub Pages..."
mkdir -p ../docs/assets/
cp pkg/skclisp_crypto_wasm.wasm ../docs/assets/
cp pkg/skclisp_crypto_wasm.js ../docs/assets/
cp pkg/skclisp_crypto_wasm.d.ts ../docs/assets/ 2>/dev/null || true
cp pkg/package.json ../docs/assets/ 2>/dev/null || true
echo "β Deployed to docs/assets/"
# ============================================================================
# Final Report
# ============================================================================
echo ""
echo "=== Build Complete ==="
echo "Artifacts:"
echo " - native/pkg/skclisp_crypto_wasm.wasm (WASM module)"
echo " - native/pkg/skclisp_crypto_wasm.js (JavaScript bindings)"
echo " - docs/assets/skclisp_crypto_wasm.wasm (GitHub Pages)"
echo " - docs/assets/skclisp_crypto_wasm.js (GitHub Pages)"
echo ""
echo "Functions exported:"
echo " - blake3_hash(input: &[u8]) β Vec<u8>"
echo " - blake3_verify_wasm(payload, expected_digest) β Blake3VerificationResult"
echo " - ed25519_verify_wasm(message, signature, public_key) β Ed25519VerificationResult"
echo " - validate_mutation_wasm(...) β MutationValidationResult"
echo " - validate_proof_certificate_wasm(cert_bytes) β ProofCertificateValidationResult"
echo ""
echo "β Ready for browser integration"
echo ""
echo "Usage:"
echo " import init, * as wasmModule from './assets/skclisp_crypto_wasm.js';"
echo " await init();"
echo " const result = wasmModule.blake3_verify_wasm(payload, digest);"
|