blog

WebAssemblyの初見

SSVMの紹介 SSVMは、クラウド、AI、ブロックチェーンアプリケーション向けの高性能なエンタープライズグレードの仮想マシンです。ONNXAIモデルをターゲットとするNode.jsアプリケーションに...

Jun 2, 2020 · 2 min. read
シェア

SSVM

SSVMは、クラウド、AI、ブロックチェーンアプリケーション向けの高性能なエンタープライズグレードのWebAssembly仮想マシンです。以下のユースケースが含まれます:

  • Node.jsアプリケーションにおけるRust関数の高性能かつセキュアなランタイム
  • ONNX AIモデルのハードウェア最適化ランタイム
  • 主要ブロックチェーンプラットフォーム向けスマートコントラクトランタイムエンジン

シンプルなウェブアプリ

機能: base64エンコードとデコード

まず、エンコードとデコードに使用する実際のコードを rust lib ファイルに記述します:

use base64::{decode, encode};
use wasm_bindgen::prelude::*;
#[wasm_bindgen]
pub fn base64Encode(s: &str) -> String {
 encode(s)
}
#[wasm_bindgen]
pub fn base64Decode(s: &str) -> String {
 String::from_utf8(decode(s).unwrap()).unwrap()
}

その後、nodeでRubstコードを呼び出します:

const { base64Encode, base64Decode, } = require('../pkg/ssvm_nodejs_starter_lib.js') const http = require('http') const url = require('url') const hostname = '0.0.0.0' const port = 3000 const server = http.createServer((req, res) => { const queryObject = url.parse(req.url, true).query if (queryObject['encodeStr']) { res.end(base64Encode(queryObject['encodeStr']) + ' ') } else if (queryObject['decodeStr']) { console.log(queryObject['decodeStr']) res.end(base64Decode(queryObject['decodeStr']) + ' ') } else { res.end( `Please use command curl http://${hostname}:${port}/?encodeStr=string or http://${hostname}:${port}/?decodeStr=string ` ) } }) server.listen(port, hostname, () => { console.log(`Server running at http://${hostname}:${port}/`) })

実際の実行時の効果

コード

Read next