Executando verificação de segurança...
3

Pitch: # Slynx 0.0.1 — Uma linguagem de UI compilável pra todo canto (ainda engatinhando, mas o passo foi dado)

Hoje marco oficialmente o primeiro release do Slynx: a versão 0.0.1.

Não vou mentir: ainda tem muito mais coisa quebrada do que funcionando. Mas achei importante marcar esse ponto, botar a ideia no mundo, e ver o que a galera acha.


O que é o Slynx?

Slynx é uma linguagem de programação experimental voltada pra construção de interfaces de usuário. A premissa central é simples de enunciar e difícil de executar: escrever UI uma vez e compilar pra qualquer plataforma.

Web, mobile, desktop — a ideia é que o código Slynx sirva como fonte única de verdade, e que backends de compilação diferentes se encarreguem de gerar o output adequado pra cada alvo.

Hoje o único backend que existe compila pra JavaScript. E ele não tá nem perto de usável. Mas ele existe, e é por isso que tô lançando a 0.0.1.


A filosofia por trás: DOD (Data-Oriented Design)

A linguagem foi concebida com Data-Oriented Design como diretriz central. Isso significa que a estrutura do código é pensada em torno dos dados que fluem pela aplicação, não em torno de abstrações orientadas a objeto puras.

Na prática, a ideia é que o compilador tenha informação suficiente sobre a forma dos seus dados pra conseguir otimizar agressivamente a saída — seja lá pra qual plataforma for. Ainda é cedo demais pra dizer que isso tá totalmente realizado no código, mas é a bússola que orienta as decisões de design.


Como a linguagem parece hoje

A sintaxe usa component como primitiva central de UI, func pra lógica, e object pra estruturas de dados. Dá pra ter uma ideia com esse exemplo:

component Header {
    Div {
        Text { text: "Cabeçalho" }
    }
}

component Footer {
    Div {
        Text { text: "Rodapé" }
    }
}

component Website {
    Div {
        Header {}
        Footer {}
    }
}

func main(): Component {
    Website {}
}

O compilador atual já consegue fazer lexing, parsing, gerar uma HIR (High-level Intermediate Representation), fazer type checking básico, e baixar tudo isso pra uma IR própria chamada SlynxIR. Funções com if, while, operadores aritméticos e de comparação, objetos com campos mutáveis, aliases de tipo e tuplas já estão no parser.

O que não existe ainda: um runtime, um CLI oficial, nada aparecendo na tela de verdade, e um backend estável. O output de JS existe mas não é utilizável como aplicação de UI ainda. Tô sendo honesto porque prefiro isso do que prometer o que não entrego.


Estrutura do projeto

O repositório é um workspace Rust dividido em:

  • lexer/ — lexer, parser, geração de HIR e type checking
  • parser/ — O parser da linguagem, que contém estruturas sintáticas
  • hir/ — O High Level Intermediate Representation, que faz checks semânticos
  • checker — O type checker.
  • monomorphizer — O monomorfizador
  • slynx_ir — A geração de da SlynxIR a partir daHIR
  • common/ — tipos de AST compartilhados entre os crates
  • src/ — cola da lib, o SlynxContext, helpers de compilação

Tudo escrito em Rust. A ideia é que o SlynxIR sirva como IR reutilizável que qualquer backend downstream possa consumir.


Por que lançar agora?

Porque 0.0.1 não precisa ser perfeito. Precisa existir.

O projeto já tem estrutura, tem sintaxe definida, tem pipeline de compilação parcialmente funcionando, tem CI, tem documentação de contribuição, e tem uma visão clara de onde quer chegar. Isso é suficiente pra ser uma 0.0.1 honesta.

O roadmap implícito inclui: um runtime real, o backend JS usável de verdade, mais backends (WASM tá na mira), e progressivamente mais features alinhadas com a abordagem DOD.


Onde encontrar

Contribuições são bem-vindas, especialmente em parser, type checker, IR design, e testes. Se você curte linguagens, compiladores, ou simplesmente quer ver uma lang de UI diferente do que já existe por aí — bora junto.


Esse é o começo. Feedbacks honestos são muito bem-vindos.

Carregando publicação patrocinada...