Skip to content

Metode Run ​

Setelah menginisialisasi VM dan mengkonfigurasi kapabilitas yang Anda inginkan, Anda dapat memuat bytecode dan memulai proses eksekusi.

Menggunakan TypeScript ​

Untuk TypeScript, Anda dapat meneruskan array bytecode mentah langsung ke loader. Disarankan untuk menggunakan optimizeBytecode terlebih dahulu untuk memastikan VM menjalankan versi instruksi Anda yang paling efisien.

ts
import { Capability, LightVM } from 'lightvm';

const vm = new LightVM({ caps: [Capability.Control] });
const tools = vm.tools();

const raw = [
  ['push', 5],
  ['val', 'x'],
  ['set', 'x'],
  ['get', 'x'],
  ['println'],
];

const optimized = tools.optimizeBytecode(raw);
vm.load(optimized).run();

Menggunakan Rust ​

Dalam Rust, Anda biasanya bekerja dengan string bytecode yang diserialisasi (atau serde_json). Mirip dengan implementasi TypeScript, selalu optimalkan bytecode Anda sebelum memuatnya ke dalam VM untuk mempertahankan kinerja optimal.

rust
use lightvm::LightVM;
use lightvm::types::{capability::Capability, vmconfig::VmConfig};

fn main() {
  let mut vm = LightVM::new(VmConfig {
    caps: vec![Capability::Control],
    ..Default::default()
  });
  let tools = vm.tools();

  let raw = r#"[
    ["push", 5],
    ["val", "x"],
    ["set", "x"],
    ["get", "x"],
    ["println"]
  ]"#;

  let optimized = tools.optimize_bytecode(raw);
  vm.load(optimized.clone())
    .run(None);
}
rust
use lightvm::LightVM;
use lightvm::types::{capability::Capability, vmconfig::VmConfig};

fn main() {
  let mut vm = LightVM::new(VmConfig {
    caps: vec![Capability::Control],
    ..Default::default()
  });
  let tools = vm.tools();

  let raw = serde_json::json!([
    ["push", 5],
    ["val", "x"],
    ["set", "x"],
    ["get", "x"],
    ["println"]
  ]);

  let optimized = tools.optimize_bytecode(raw);
  vm.load(optimized.clone())
    .run(None);
}

INFO

Kapabilitas yang Dibutuhkan: Control

TIP

Metode .run() adalah langkah terakhir dalam alur eksekusi. Pastikan semua capabilities yang diperlukan telah diberikan selama inisialisasi untuk menghindari pengecualian keamanan saat runtime.