Ir para o conteúdo

⚡ B-FAST (Binary Fast Adaptive Serialization Transfer)

CI Documentação Versão PyPI Versões Python Versão npm Licença: MIT Performance CodSpeed

O B-FAST é um protocolo de serialização binária de ultra-alta performance, desenvolvido em Rust para o ecossistema Python e TypeScript. Ele foi projetado para substituir o JSON em rotas críticas onde latência, uso de CPU e largura de banda são gargalos.

"Performance não é apenas sobre velocidade—é sobre eficiência onde mais importa"

O B-FAST nasceu do reconhecimento de que aplicações modernas precisam de mais do que apenas serialização rápida—elas precisam de serialização inteligente que se adapta às restrições do mundo real. Após extensa otimização, o B-FAST encontrou seu nicho perfeito em ambientes com restrição de largura de banda, alcançando 1.7x mais rápido que orjson para objetos simples e 5.7x mais rápido em redes lentas.

Filosofia: Acreditamos que o futuro da transferência de dados não está apenas na velocidade bruta da CPU, mas em protocolos inteligentes que minimizam o overhead de rede mantendo excelente performance. O B-FAST representa nossa contribuição para uma web mais eficiente e consciente da largura de banda.

🚀 Funcionalidades & Arquitetura

  • ⚡ Performance Extrema


    2.01 ms para 10k objetos (4.1x mais rápido que orjson, 6.0x vs JSON). Até 24x mais rápido em serialização de primitivos via fast-paths Rust.

    Ver Benchmarks

  • 🌊 Streaming em Tempo Real & MCP


    Streaming binário contínuo (application/x-bfast-stream), transferência HTTP chunked e suporte ao Model Context Protocol (MCP).

    Guia de FastMCP & Streaming

  • 🐍 APIs Python & Data Science


    Integrações diretas para FastAPI, Django Ninja, Polars e Pandas com serialização nativa de DataFrames.

    Guia de Integrações

  • 💻 TypeScript Moderno & TanStack Query


    Cliente para navegadores e Node.js com suporte a TanStack Query, validação de schemas em runtime (Zod / Standard Schema) e Wasm LZ4.

    Guia Frontend

  • 🤖 Pronto para IAs & LLMs (llms.txt)


    Endpoint padronizado para OpenCode, Cursor, Claude Code e Copilot gerarem código sem alucinações.

    Guia para IAs & LLMs

  • 📚 Referência Completa da API


    Referência técnica completa para todas as classes, métodos, parâmetros e utilitários em Python e TypeScript.

    Referência da API

📊 Performance

🚀 Objetos Simples (10.000)

Formato Tempo (ms) Speedup
JSON 12.0ms 1.0x
orjson 8.19ms 1.5x
B-FAST 2.01ms 🚀 6.0x

B-FAST é 4.1x mais rápido que orjson!

🌊 Protocolo de Streaming (1.000 frames)

Métrica Performance Speedup / Throughput
Streaming Decode (Alinhado) 11.8ms ~85.000 frames/s
Streaming Decode (Fragmentado) 13.6ms ~73.500 frames/s
Latência por Frame Único 139.2µs Parsing instantâneo em tempo real
Throughput Sustentado de Stream 12.500 frames/s Feeds de eventos em alta frequência

🔄 Round-Trip (Encode + Rede + Decode)

📡 100 Mbps (Rede Lenta)

Formato Tempo Total Speedup vs orjson
JSON 114.5ms 0.8x
orjson 91.7ms 1.0x
B-FAST + LZ4 16.1ms 🚀 5.7x

📡 1 Gbps (Rede Rápida)

Formato Tempo Total Speedup vs orjson
JSON 29.4ms 0.5x
orjson 15.3ms 1.0x
B-FAST + LZ4 7.2ms 🚀 2.1x

📡 10 Gbps (Rede Ultra-Rápida)

Formato Tempo Total Speedup vs orjson
JSON 20.9ms 0.4x
orjson 7.7ms 1.0x
B-FAST + LZ4 6.3ms 🚀 1.2x

🎯 Casos de Uso Ideais

  • 📱 Mobile/IoT: 89% economia de dados + 5.7x performance em redes lentas
  • 🌐 APIs com redes lentas: Até 5.7x mais rápido que orjson
  • 📊 Data pipelines: 14-96x speedup para arrays NumPy
  • 🗜️ Storage/Cache: Compressão superior integrada
  • 🚀 Objetos simples: 4.1x mais rápido que orjson
  • 🌊 Streaming em Tempo Real: > 12.500 frames/s com parsing de chunks sem alocações extras

📦 Instalação

Backend (Python)

uv add bfast-py
ou
pip install bfast-py

Frontend (TypeScript)

npm install bfast-client

🛠️ Uso Básico

Python

import b_fast
from pydantic import BaseModel

class User(BaseModel):
    id: int
    name: str
    email: str

# Criar encoder
bf = b_fast.BFast()

# Dados de exemplo
users = [User(id=i, name=f"User {i}", email=f"user{i}@example.com") for i in range(1000)]

# Serializar
data = bf.encode_packed(users, compress=True)
print(f"Tamanho: {len(data)} bytes")

# Deserializar
decoded = bf.decode_packed(data)

TypeScript

import { BFastDecoder } from 'bfast-client';

async function loadData() {
    const response = await fetch('/api/users');
    const buffer = await response.arrayBuffer();

    // Decodifica e descomprime automaticamente
    const users = BFastDecoder.decode(buffer);
    console.log(users);
}

📄 Licença

Distribuído sob a licença MIT. Veja LICENSE para mais informações.