Skip to content

Latest commit

 

History

History
368 lines (255 loc) · 6.51 KB

File metadata and controls

368 lines (255 loc) · 6.51 KB

HexaCore

Um runtime nativo estilo web (substituto do Electron)


1. Visao Geral

HexaCore Runtime e um runtime desktop multiplataforma desenhado para substituir o Electron em aplicacoes de larga escala. Ele preserva o paradigma web (arvore declarativa + estilos tipo CSS), mas remove Chromium, WebView e DOM de navegador.

Objetivos:

  • performance nativa consistente,
  • footprint menor que Electron,
  • integracao profunda com o sistema operacional,
  • e migracao incremental a partir de apps Electron.

2. Objetivos do Projeto

2.1 Objetivos principais

  • Substituir Electron sem exigir reescrita completa do app.
  • Manter styles e layout semelhantes a CSS.
  • Executar UI e logica em runtime proprio (sem browser).
  • Garantir seguranca por sandbox e permissoes explicitas.
  • Escalar para apps do porte de Discord, Slack, Teams.

2.2 Nao-objetivos (fora de escopo)

  • Implementar HTML/CSS/JS completos conforme W3C.
  • Ser um navegador embutido.
  • Executar codigo web arbitrario sem sandbox.

3. Publico-alvo

  • Empresas com apps Electron grandes e maduros.
  • Produtos que exigem UI rica + midia em tempo real.
  • Times que valorizam produtividade do modelo web, mas precisam de performance e controle nativo.

4. Conceitos Fundamentais

4.1 Modelo de UI

  • UI baseada em arvore declarativa propria, inspirada em DOM/React.
  • Componentes primitivos controlados pelo runtime.
  • Renderizacao direta via GPU (sem layout HTML).

4.2 Estilos

  • Subset CSS-like, com:

    • cascade,
    • especificidade,
    • variaveis,
    • temas.
  • Styles aplicados sobre componentes primitivos, nao sobre tags HTML arbitrarias.

4.3 Execucao

  • Logica do app roda em sandbox (WASM ou JS isolado).
  • Comunicacao com o host via Native Bridge com permissoes.

5. Arquitetura Geral

flowchart TD
  A["Dev escreve App (DSL ou TS/JSX)"] --> B["Compiler: Parser -> AST -> IR"]
  B --> C["Bundle do App"]

  C --> D["Host Desktop"]

  subgraph R["HexaCore Runtime"]
    E["App Runtime (WASM ou JS sandbox)"]
    F["UI Runtime (tree + diff)"]
    G["Style Engine (CSS subset)"]
    H["Layout Engine (flexbox)"]
    I["Text Engine (shaping, selection)"]
    J["GPU Renderer"]
    K["Input & A11y"]
    L["Native Bridge"]
  end

  D --> R
  E --> F
  F --> G --> H --> I --> J
  K --> F
  E --> L --> D
Loading

6. Componentes do Runtime

6.1 App Runtime

Responsavel por:

  • executar a logica do app,
  • gerenciar estado,
  • disparar eventos para a UI.

Caracteristicas

  • sandbox por padrao,
  • comunicacao assincrona com UI,
  • hot reload em modo desenvolvimento.

6.2 UI Runtime

  • mantem a arvore real de UI,
  • aplica diffs (reconciliacao),
  • controla lifecycle de componentes.

6.3 Style Engine (CSS Subset)

Suporte inicial

  • seletores: .class, #id, tipo, descendente simples.
  • box model: margin, padding, border.
  • flexbox completo.
  • cores, backgrounds, imagens.
  • opacity, transform.
  • variaveis (--var).

Fora do escopo inicial

  • CSS Grid avancado.
  • pseudo-elementos complexos.
  • layout baseado em tabelas.

6.4 Layout Engine

  • baseado em flexbox.
  • calculo incremental e cacheado.
  • suporte a scroll e virtualizacao.

6.5 Text Engine

  • font fallback.
  • Unicode completo.
  • emoji.
  • selecao, cursor, copy/paste.
  • suporte a IME (Japones, Chines, etc.).

Nota: Este e um componente critico para "nivel Discord".


6.6 Renderer GPU

  • renderizacao via API grafica moderna (Vulkan/Metal/D3D).
  • display lists.
  • composicao por camadas.
  • cache agressivo de glyphs e imagens.

6.7 Input e Acessibilidade

  • mouse, teclado, touch.
  • navegacao por teclado.
  • foco e tab order.
  • arvore semantica para screen readers.

6.8 Native Bridge

APIs expostas ao app:

  • filesystem (sandboxed),
  • notificacoes,
  • tray,
  • janelas,
  • audio/video,
  • auto-update.

Todas controladas por permissoes declarativas.


7. Modelo de Permissoes

flowchart LR
  A["App Manifest"] --> B["Permission Resolver"]
  B --> C["Allowed APIs"]
  B --> D["Denied APIs"]
Loading

Exemplo:

permissions:
  filesystem: read-only
  notifications: true
  audio: true
  camera: false

8. Estrutura de um App

my-app/
 ├─ manifest.yaml
 ├─ ui/
 │   ├─ app.tsx
 │   └─ styles.css
 ├─ logic/
 │   └─ main.ts
 └─ assets/
     ├─ icons/
     └─ fonts/

9. Manifesto do App

name: ChatApp
version: 1.0.0
entry: ui/app.tsx

permissions:
  filesystem: sandbox
  notifications: true
  audio: true

window:
  width: 1280
  height: 720
  resizable: true

10. Pipeline de Build

flowchart TD
  A["Source App"] --> B["Compiler"]
  B --> C["IR + Assets"]
  C --> D["Runtime Bundle"]
  D --> E["Packager"]
  E --> F["Windows"]
  E --> G["Linux"]
  E --> H["macOS"]
Loading

11. Distribuicao

11.1 Targets

  • Windows: .exe / .msi
  • Linux: Flatpak, AppImage
  • macOS: .app / .dmg

11.2 Auto-update

  • assinatura de binario,
  • delta updates,
  • rollback seguro.

12. Modo Hibrido (Migracao Electron)

flowchart TD
  A["HexaCore Window"] --> B["Native Screens"]
  A --> C["Isolated WebView (Legacy)"]
Loading
  • Telas novas usam HexaCore UI.
  • Telas antigas rodam em WebView isolado.
  • Migracao progressiva ate zero WebView.

13. MVP Tecnico (Obrigatorio)

MVP-1: Chat View

  • lista virtualizada (50k mensagens).
  • Markdown basico.
  • emojis.
  • selecao e copia.
  • 60 FPS estavel.

MVP-2: Input avancado

  • multiline.
  • IME.
  • undo/redo.
  • atalhos de teclado.

14. Roadmap

v0.1 – Core

  • UI tree
  • styles basicos
  • render GPU
  • input simples

v0.2 – Produto real

  • texto completo
  • virtualizacao
  • permissoes
  • empacotamento

v0.3 – Migracao

  • WebView isolado
  • APIs hibridas
  • ferramentas de dev

v1.0 – Electron replacement

  • acessibilidade completa
  • voice/media APIs
  • telemetria e crash reporting
  • tooling maduro

15. Diferencial Competitivo

Aspecto Electron HexaCore
Chromium Sim Nao
Footprint Alto Baixo
Startup Lento Rapido
UI Engine DOM/CSS GPU nativa
Permissoes Fracas Fortes
Migracao Dificil Incremental

16. Conclusao

HexaCore Runtime nao e "mais um framework". E uma infraestrutura de UI nativa com paradigma web, desenhada para substituir Electron em aplicacoes grandes, sem exigir reescrita total e sem os custos de um navegador embutido.