2 pontos por dopeflamingo 3 시간 전 | Ainda não há comentários. | Compartilhar no WhatsApp

O paradigma tradicional de desenvolvimento com TypeScript sempre partiu do pressuposto de transpilar código TS, uma abstração de alto nível, para JavaScript e depois executá-lo sobre engines JIT pesadas como V8 ou JavaScriptCore, usadas por Node.js, Bun e Deno.

Surgido recentemente no cenário open source, o Perry é um compilador Native-First baseado em Rust que busca eliminar completamente esse modelo tradicional de runtime e compilar código TypeScript diretamente em binários nativos standalone.


💡 Arquitetura principal e características

  • No Runtime (runtime zero): sem camadas intermediárias pesadas como V8, Electron ou JVM, ele faz o parsing do código TS com SWC e gera diretamente código de máquina da plataforma-alvo por meio da infraestrutura LLVM.

  • Build multiplataforma a partir de uma única base de código: gera binários para macOS, iOS, Android, Linux e Windows a partir de um único código TypeScript.

    Publicidade
  • Suporte real a TypeScript: em vez de uma "linguagem separada parecida com TS", como o AssemblyScript, a proposta é dar suporte ao ecossistema completo de TypeScript com base no Strict Mode.

  • Compatibilidade com frameworks de UI ultraleves: oferece binários de apenas alguns MB e cold start em menos de um segundo, próximo de 0 ms. Além de integrar GUIs nativas de plataforma como SwiftUI, GTK4 e WinUI, também permite escrever JSX por meio de seu próprio renderizador React.


🛠️ Estado atual do desenvolvimento e limitações (com feedback do Hacker News)
Como é um projeto que vem chamando bastante atenção no HN e em outros lugares, os desafios para chegar ao nível de produção também estão sendo discutidos com clareza.

  • Limitações das características dinâmicas de JS: estilos de JavaScript dinâmico, como injetar campos/métodos arbitrários em objetos em tempo de execução ou alterar protótipos, não são suportados devido à natureza da compilação estática; o funcionamento se baseia em um subconjunto estrito e determinístico de TS.

    Publicidade
  • Emulação de módulos nativos do Node.js: atualmente, a biblioteca padrão HTTP do Node.js está sendo emulada com base no ecossistema Rust, usando hyper, rustls e tokio. Já conseguiu compilar alguns módulos, como Fastify, e está evoluindo rapidamente, mas a compatibilidade de 100% com bibliotecas mais complexas do ecossistema, como o Express, que envolvem imports dinâmicos, ainda é um desafio em estágio alfa.


# O uso é extremamente simples  
$ perry compile src/main.ts -o myapp  
$ ./myapp  # executa um binário nativo puro, sem dependências  

Como uma tentativa de expandir o TypeScript, antes restrito ao ecossistema web, para programação de sistemas e aplicativos nativos ultraleves, é um projeto que deve interessar bastante a quem acompanha arquiteturas de alto desempenho e pipelines de compilação com LLVM.

GitHub: https://github.com/PerryTS/perry

Ainda não há comentários.

Ainda não há comentários.