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
surrealcom subcomandosurreal module) - Familiaridade com
DEFINE MODULEeDEFINE BUCKETdo 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:
- rules/surrealism.md -- configuração do projeto, assinaturas de funções Rust, compilação WASM, sintaxe DEFINE MODULE/BUCKET, implantação, testes e melhores práticas
- Docs de Extensões SurrealDB -- documentação oficial
- Comando CLI module -- referência do
surreal module