Surrealism – Extensões WASM para SurrealDB

Desenvolva funções Rust personalizadas, compile-as para WebAssembly (WASM) e implante-as como módulos nativos do banco de dados SurrealDB, chamáveis a partir do SurrealQL.

O que é Surrealism – Extensões WASM para SurrealDB?

Surrealism é uma coleção de habilidades que permite estender o SurrealDB (v3+) escrevendo funções em Rust, compilando-as para WebAssembly (WASM) e registrando-as como módulos nativos do banco de dados. O fluxo de desenvolvimento é semelhante ao de plugins: você anota funções Rust com o atributo `#[surrealism]`, define um manifesto `surrealism.toml`, compila com `surreal module compile` e, em seguida, registra o bucket e o módulo no SurrealQL com `DEFINE BUCKET` e `DEFINE MODULE`. A habilidade suporta SurrealDB CLI v3.1.4+ e a ferramenta padrão do Rust com o destino `wasm32-unknown-unknown`. É ideal para casos de uso como funções escalares personalizadas, geração de dados falsos, lógica de domínio específico, acesso a crates Rust de nicho e analisadores personalizados para busca em texto completo. O projeto ainda está em desenvolvimento ativo e sua API pode mudar, mas a documentação completa e exemplos práticos estão disponíveis no repositório oficial e nos arquivos de regras da habilidade.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/24601/surreal-skills/tree/main/skills/surrealism

Installed? Explore more Programação e Desenvolvimento skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

O que Surrealism – Extensões WASM para SurrealDB faz?

Novidade no SurrealDB 3. Escreva funções personalizadas em Rust, compile-as para WebAssembly (WASM) e implante-as como módulos nativos do banco de dados, chamáveis a partir do SurrealQL.

Pré-requisitos

  • Ferramenta Rust (estável) com o destino wasm32-unknown-unknown
  • SurrealDB CLI v3.1.4+ (binário surreal com subcomando surreal module)
  • Familiaridade com DEFINE MODULE e DEFINE BUCKET do SurrealQL

Fluxo de Desenvolvimento

1. Anotar    -- surrealism.toml + #[surrealism] em funções Rust
2. Compilar  -- surreal module compile  (produz binário .wasm)
3. Registrar -- DEFINE BUCKET + DEFINE MODULE no SurrealQL

Início Rápido

# Crie um novo projeto Surrealism
cargo new --lib minha_extensao
cd minha_extensao

# Adicione o destino WASM
rustup target add wasm32-unknown-unknown

# Crie surrealism.toml (manifesto obrigatório)
cat > surrealism.toml << 'TOML'
[package]
name = "minha_extensao"
version = "0.1.0"
TOML

# Escreva sua extensão (anote com #[surrealism])
cat > src/lib.rs << 'RUST'
use surrealism::surrealism;

#[surrealism]
fn saudacao(nome: String) -> String {
    format!("Olá, {}!", nome)
}
RUST

# Compile para WASM usando a CLI do SurrealDB
surreal module compile

# Registre no SurrealDB
surreal sql --endpoint http://localhost:8000 --user root --pass root --ns test --db test
-- Conceda acesso ao arquivo WASM
DEFINE BUCKET meu_bucket;

-- Registre as funções do módulo
DEFINE MODULE minha_extensao FROM 'meu_bucket:minha_extensao.wasm';

-- Use a função em consultas
SELECT minha_extensao::saudacao('Mundo');

Casos de Uso

  • Funções escalares personalizadas chamáveis a partir do SurrealQL
  • Geração de dados falsos/mock para testes
  • Lógica específica de domínio (processamento de linguagem, finanças quantitativas, codificação personalizada)
  • Acesso a funcionalidades de crates Rust de nicho muito específicas para o núcleo do SurrealDB
  • Analisadores personalizados para busca em texto completo

Status

O Surrealism está ativamente em desenvolvimento e ainda não está estável. A API pode mudar entre as versões do SurrealDB 3.x. Envie feedback por meio de issues/PRs no GitHub no repositório surrealdb/surrealdb.

Documentação Completa

Consulte o arquivo de regras principal da habilidade para orientação completa:

Individual skills in this repo

This repo contains 5 individual skills — each has its own dedicated page.

Habilidades Relacionadas