360 Secure SkillHub
360 安全技能中心

surrealism

核心功能是为SurrealDB 3开发WASM扩展:用Rust编写带#[surrealism]注解的自定义函数,通过SurrealDB CLI编译为WASM二进制,再通过SurrealQL注册为数据库模块,即可在查询中直接调用。典型场景包括自定义标量函数、测试用模拟数据生成、领域专属逻辑实现、调用Rust小众库功能、自定义全文搜索分析器。需依赖Rust工具链及SurrealDB CLI v3.0.0+。

24601
24601
热度 69.31
最近更新 2026-05-11 17:26:52
分类:开发依赖:纯提示词应用场景:代码生成 / DevOps / 工作流

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add surrealism
Metadata
name
surrealism
description
SurrealDB Surrealism WASM extension development. Write Rust functions, compile to WASM, deploy as database modules. Part of the surreal-skills collection.
license
MIT
metadata
{"version":"1.0.4","author":"24601","parent_skill":"surrealdb","snapshot_date":"2026-02-19","upstream":{"repo":"surrealdb/surrealdb","release":"v3.0.0","sha":"2e0a61fd4daf","docs":"https://surrealdb.com/docs/surrealdb/extensions"}}

Surrealism -- WASM Extensions for SurrealDB

New in SurrealDB 3. Write custom functions in Rust, compile them to WebAssembly (WASM), and deploy them as native database modules callable from SurrealQL.

Prerequisites

  • Rust toolchain (stable) with wasm32-unknown-unknown target
  • SurrealDB CLI v3.0.0+ (surreal binary with surreal module subcommand)
  • Familiarity with SurrealQL DEFINE MODULE and DEFINE BUCKET

Development Workflow

1. Annotate   -- surrealism.toml + #[surrealism] on Rust functions
2. Compile    -- surreal module compile  (produces .wasm binary)
3. Register   -- DEFINE BUCKET + DEFINE MODULE in SurrealQL

Quick Start

# Create a new Surrealism project
cargo new --lib my_extension
cd my_extension

# Add the WASM target
rustup target add wasm32-unknown-unknown

# Create surrealism.toml (required manifest)
cat > surrealism.toml << 'TOML'
[package]
name = "my_extension"
version = "0.1.0"
TOML

# Write your extension (annotate with #[surrealism])
cat > src/lib.rs << 'RUST'
use surrealism::surrealism;

#[surrealism]
fn greet(name: String) -> String {
    format!("Hello, {}!", name)
}
RUST

# Compile to WASM using SurrealDB CLI
surreal module compile

# Register in SurrealDB
surreal sql --endpoint http://localhost:8000 --user root --pass root --ns test --db test
-- Grant access to the WASM file
DEFINE BUCKET my_bucket;

-- Register the module functions
DEFINE MODULE my_extension FROM 'my_bucket:my_extension.wasm';

-- Use the function in queries
SELECT my_extension::greet('World');

Use Cases

  • Custom scalar functions callable from SurrealQL
  • Fake/mock data generation for testing
  • Domain-specific logic (language processing, quantitative finance, custom encoding)
  • Access to niche Rust crate functionality too specific for core SurrealDB
  • Custom analyzers for full-text search

Status

Surrealism is actively in development and not yet stable. The API may change between SurrealDB 3.x releases. File feedback via GitHub issues/PRs on the surrealdb/surrealdb repository.

Full Documentation

See the main skill's rule file for complete guidance: