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 checkingparser/— O parser da linguagem, que contém estruturas sintáticashir/— O High Level Intermediate Representation, que faz checks semânticoschecker— O type checker.monomorphizer— O monomorfizadorslynx_ir— A geração de daSlynxIRa partir daHIRcommon/— tipos de AST compartilhados entre os cratessrc/— cola da lib, oSlynxContext, 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
- GitHub: github.com/Slynx-Language/slynx
- Discord: tem um servidor linkado no repo se quiser acompanhar ou contribuir
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.