Category: Desenvolvimento

arXivLabs: Projetos Experimentais com Colaboradores da Comunidade

2025-05-17
arXivLabs: Projetos Experimentais com Colaboradores da Comunidade

arXivLabs é uma estrutura que permite a colaboradores desenvolverem e compartilharem novos recursos do arXiv diretamente em nosso site. Indivíduos e organizações que trabalham com o arXivLabs adotaram e aceitaram nossos valores de abertura, comunidade, excelência e privacidade dos dados do usuário. O arXiv está comprometido com esses valores e trabalha apenas com parceiros que os respeitam. Tem uma ideia para um projeto que agregará valor à comunidade do arXiv? Saiba mais sobre o arXivLabs.

Desenvolvimento

Racket v8.17 Lançado: Melhorias de Desempenho e Novos Recursos

2025-05-17

A versão 8.17 da linguagem de programação Racket já está disponível! Esta versão apresenta inúmeras melhorias, incluindo um pacote principal DrRacket mais enxuto, suporte a listas em árvore no Typed Racket, um gerenciador de pacotes aprimorado, maior precisão para funções numéricas e suporte a eventos de mouse em terminais Windows. Além disso, o cliente HTTP, o tratamento de JSON e a biblioteca Redex foram otimizados. Esta atualização é um testemunho da vibrante comunidade Racket, com contribuições de muitos desenvolvedores.

Desenvolvimento

Produtividade no Bolso: Executando uma Área de Trabalho Linux Completa em Seu Telefone

2025-05-17
Produtividade no Bolso: Executando uma Área de Trabalho Linux Completa em Seu Telefone

Para uma viagem recente de duas semanas, o autor construiu um ambiente de desktop Linux completo usando um Pixel 8 Pro, óculos AR Xreal Air 2 Pro e um teclado dobrável. Executando binários arm64 em um chroot no Android, ele conseguiu usar ferramentas de desenvolvimento como Neovim e Flutter, trabalhando em cafeterias, parques e até mesmo em aviões. Embora a configuração tenha envolvido algumas complexidades — fazer root no telefone e escolher a distribuição Linux certa (Void Linux foi a vencedora) —, esta estação de trabalho ultraportátil oferece liberdade e flexibilidade incomparáveis, libertando os desenvolvedores de suas mesas.

Desenvolvimento desenvolvimento móvel

Mystical: Uma Visualização de Círculo Mágico do PostScript

2025-05-17

Mystical é uma linguagem de programação nova que visualiza código PostScript como estruturas de anel semelhantes a círculos mágicos. Os programas são organizados em anéis, incluindo matrizes executáveis, matrizes não executáveis e dicionários, cada um com uma representação visual única. Operadores, variáveis e palavras-chave são representados por sigilos (símbolos) combinados com texto dentro dos anéis. A Mystical atualmente não possui um interpretador dedicado; a visualização requer tradução manual para PostScript para execução.

Desenvolvimento círculos mágicos

Vulnerabilidade no GitHub Diff: Substituição de Caracteres Unicode

2025-05-17
Vulnerabilidade no GitHub Diff: Substituição de Caracteres Unicode

Um contribuidor do projeto curl, James Fuller, descobriu uma vulnerabilidade no visualizador de diferenças do GitHub. Atores maliciosos poderiam substituir caracteres ASCII por caracteres Unicode visualmente idênticos, alterando o código sem mudanças aparentes. Isso poderia levar à manipulação de URLs e outras consequências graves. Embora o visualizador de diferenças do GitHub não tenha um aviso, outras plataformas como o Gitea sinalizam tais mudanças. O projeto curl respondeu implementando verificações de CI para detectar Unicode malicioso e limpou sequências UTF-8. Isso destaca a necessidade de medidas proativas de segurança de código para prevenir potenciais ataques.

Bug de Tela Preta do Basilisk II: Uma Odisseia de Depuração de Doze Anos

2025-05-17

Doze anos atrás, um bug de tela preta no emulador Basilisk II atormentava usuários em versões mais recentes do Windows. O autor, por meio de depuração meticulosa, rastreou o problema a um detalhe sutil de alocação de memória: a ordem de duas alocações de memória no Windows causou a falha no carregamento da ROM do emulador. A solução envolveu modificar o código de alocação de memória, resolvendo esse problema de longa data e mostrando habilidades de depuração e profundo entendimento do SO.

Desenvolvimento

CSS contrast-color(): Automatizando o Contraste de Cores para Acessibilidade

2025-05-17
CSS contrast-color(): Automatizando o Contraste de Cores para Acessibilidade

A nova função `contrast-color()` do CSS simplifica as escolhas de cores, selecionando automaticamente texto preto ou branco para contrastar com uma determinada cor de fundo. Este artigo examina seu uso, compara os algoritmos WCAG 2.1 e APCA para cálculo de contraste e explora como usar consultas de mídia `prefers-contrast` para melhor acessibilidade. Embora atualmente seja limitada ao preto e branco, iterações futuras podem oferecer opções mais personalizáveis. A função simplifica o desenvolvimento e melhora a acessibilidade, especialmente ao gerenciar vários estados de cor.

Desenvolvimento Contraste de Cores

Rust 10 anos: Uma história de comunidade e infraestrutura

2025-05-17
Rust 10 anos: Uma história de comunidade e infraestrutura

No décimo aniversário da linguagem de programação Rust, o autor original, Graydon Hoare, reflete sobre sua jornada. Não é apenas uma história de linguagem de programação, mas uma narrativa de uma vasta comunidade construindo e mantendo infraestrutura técnica compartilhada. O sucesso do Rust decorre da necessidade de infraestrutura robusta e do investimento de longo prazo de organizações como a Mozilla, juntamente com milhares de voluntários. O Rust evoluiu de um protótipo simples para uma linguagem poderosa com um enorme ecossistema e amplas aplicações. O futuro requer a atração contínua de talentos, manutenção de estabilidade e compatibilidade e aprimoramento adicional da qualidade.

Desenvolvimento

arXivLabs: Projetos experimentais com colaboradores da comunidade

2025-05-17
arXivLabs: Projetos experimentais com colaboradores da comunidade

arXivLabs é uma estrutura que permite que colaboradores desenvolvam e compartilhem novos recursos do arXiv diretamente em nosso site. Indivíduos e organizações que trabalham com o arXivLabs adotaram e aceitaram nossos valores de abertura, comunidade, excelência e privacidade dos dados do usuário. O arXiv está comprometido com esses valores e trabalha apenas com parceiros que os respeitam. Tem uma ideia para um projeto que agregará valor à comunidade do arXiv? Saiba mais sobre o arXivLabs.

Desenvolvimento

OBNC: Um Compilador Oberon

2025-05-17

OBNC é um compilador para a linguagem de programação Oberon de Niklaus Wirth, implementando a versão final de 2016. Ele traduz o código-fonte Oberon para a linguagem de programação C de baixo nível. O código traduzido é então compilado e vinculado usando o compilador e o vinculador C do sistema operacional host. O comando de construção `obnc` executa todas essas tarefas e acompanha quais arquivos precisam ser compilados ou recompilados. O compilador é lançado sob a Licença Pública Geral GNU, enquanto as bibliotecas são lançadas sob a Licença Pública Mozilla. Com a licença Mozilla, um projeto Oberon compilado com OBNC pode ser lançado sob qualquer licença. O pacote inclui o compilador, uma ferramenta de construção, um gerador de documentação e uma pequena biblioteca básica de sete módulos definidos nas Diretrizes Oakwood para Desenvolvedores de Compiladores Oberon-2. Ele também contém uma biblioteca (não padrão) chamada `ext` que estende a biblioteca básica com módulos para acessar argumentos de linha de comando e variáveis de ambiente, imprimir no fluxo de erro padrão, converter números em strings e vice-versa e para personalizar o manipulador de armadilhas. A biblioteca `ext` foi anteriormente distribuída como um pacote separado, mas agora foi incluída no pacote principal por conveniência. OBNC é implementado em C e deve compilar em qualquer sistema operacional compatível com POSIX. Para construir o OBNC, você também precisa do coletor de lixo Boehm-Demers-Weiser GC. Mais instruções estão incluídas no arquivo README no diretório raiz do pacote. Para usuários do MS Windows, também há uma versão pré-compilada do OBNC com todas as dependências incluídas (GC, SDL, Gawk e TCC). Observe: os arquivos de saída gerados pela versão 0.15 ou anterior do OBNC não são compatíveis com o OBNC 0.17. Se você usou uma versão anterior, seus módulos precisam ser recompilados; simplesmente exclua o diretório .obnc gerado em seus diretórios de módulo antes de usar a nova versão.

Desenvolvimento

Iluminação e mapeamento normal em tempo real no N64: Uma façanha impressionante de engenharia reversa

2025-05-17

Este artigo detalha uma técnica impressionante para alcançar iluminação em tempo real e mapeamento normal no Nintendo 64. Ao aproveitar inteligentemente texturas de paleta e sombreamento do lado da CPU, o autor contorna as limitações de hardware do N64 para alcançar visuais surpreendentemente impressionantes. A técnica envolve compactar informações de difusão e normais em uma paleta compartilhada e atualizar a paleta em tempo de execução via CPU para simular efeitos de iluminação. Embora o método tenha algumas limitações, como a falta de suporte para luzes pontuais e sombras, sua natureza inovadora é notável, abrindo novas possibilidades para renderização gráfica na plataforma N64.

Desenvolvimento

Meta lança Pyrefly: verificador de tipos Python em Rust

2025-05-17
Meta lança Pyrefly: verificador de tipos Python em Rust

O Meta lançou uma versão alfa do Pyrefly, um verificador de tipos Python de código aberto e extensão IDE construída em Rust. O Pyrefly visa melhorar a consistência de tipos no código Python, ajudando a detectar erros antes da execução. Ele suporta integração IDE e uso de linha de comando, priorizando desempenho e inferência de tipos, funcionando efetivamente mesmo em código não anotado. Evoluindo do Pyre do Meta, o Pyrefly busca ser um verificador de tipos mais poderoso e extensível, colaborando com a comunidade Python para melhorar o sistema de tipos Python.

Desenvolvimento

NixOS: A distribuição Linux perfeita? Minhas experiências e lições aprendidas

2025-05-17
NixOS: A distribuição Linux perfeita? Minhas experiências e lições aprendidas

Fui seduzido pela promessa do NixOS de perfeita reprodutibilidade do sistema por meio de uma única configuração de código. Após um ano, desisti. A curva de aprendizado é íngreme, a documentação é deficiente, as mensagens de erro são obscuras e há inúmeras maneiras de fazer a mesma coisa. Embora crie um sistema estável, passei horas lutando com problemas como compatibilidade com o dock Thunderbolt e configuração de ambientes de desenvolvimento em várias pilhas de tecnologia. Mudei para Bazzite e Bluefin (baseados no Fedora Silverblue), que oferecem uma experiência mais amigável por meio do Flatpak, Homebrew e Distrobox, mantendo os benefícios da imutabilidade. O NixOS se destaca em ambientes de servidor onde a reprodutibilidade é fundamental, mas para o usuário de desktop comum, o alto custo de aprendizado e a complexidade não valem a pena. A principal conclusão: às vezes, 'eu não quero me importar' é uma abordagem perfeitamente válida para administração de sistemas.

Duas Regras Práticas para Código Eficiente

2025-05-17

Este artigo apresenta duas dicas práticas para melhorar a eficiência do código: mover as condições `if` para cima e os loops `for` para baixo. Mover as condições `if` para a função de chamada reduz a ramificação, simplifica o fluxo de controle e melhora a legibilidade. Mover os loops `for` para onde os dados em lote são processados aproveita as vantagens do processamento em lote, melhora o desempenho e potencialmente desbloqueia a vetorização. Essas duas dicas se complementam, melhorando efetivamente a eficiência do código, especialmente ao lidar com grandes quantidades de dados.

Desenvolvimento

Mais de 75 Problemas Abertos em Geometria Computacional

2025-05-17

O Projeto de Problemas Abertos é um site que reúne mais de 75 problemas não resolvidos em geometria computacional e áreas relacionadas. Iniciado em 2001 com 30 problemas iniciais, agora é um recurso abrangente categorizado por tópicos como cascos convexos, teoria de grafos e diagramas de Voronoi. Embora não aceite mais novas submissões, o site incentiva atualizações em problemas existentes, especialmente aqueles resolvidos (total ou parcialmente), fomentando a colaboração e o avanço no campo.

Desenvolvimento problemas abertos

Construindo um Hipervisor RISC-V no Sistema Operacional Starina: De Hello World ao Boot do Linux

2025-05-17
Construindo um Hipervisor RISC-V no Sistema Operacional Starina: De Hello World ao Boot do Linux

Este post documenta a jornada do autor na construção de um hipervisor leve baseado na extensão RISC-V H dentro do sistema operacional Starina. Usando a emulação RISC-V H-extension do QEMU, o autor implementou incrementalmente a entrada no modo convidado, o tratamento de chamadas de sistema, um programa simples Hello World e, finalmente, a inicialização do kernel do Linux. Desafios incluindo gerenciamento de tabelas de páginas, configuração da árvore de dispositivos, suporte de temporizador e MMIO foram superados, com passos e soluções detalhadas fornecidas. O post conclui com uma inicialização bem-sucedida do Linux no hipervisor Starina.

Desenvolvimento

Publisher: Servidor de Modelo Semântico de Código Aberto para Malloy

2025-05-17
Publisher: Servidor de Modelo Semântico de Código Aberto para Malloy

Publisher é um servidor de modelo semântico de código aberto construído na linguagem de dados Malloy. Ele permite que você crie modelos de dados semânticos ricos — definindo o significado, os relacionamentos e o contexto por trás dos seus dados — e os expõe por meio de uma interface de servidor. Aplicações, agentes de IA e usuários podem consultar dados de forma consistente e confiável, aproveitando o entendimento compartilhado definido no modelo Malloy. O Publisher resolve o problema de respostas não confiáveis quando o significado dos dados não está claro. Ele usa consultas Malloy, compilando-as em SQL nos bastidores para fornecer respostas confiáveis sem redefinir o significado dos dados em cada ferramenta. Ele consiste em três componentes principais: um servidor, um SDK e um aplicativo de referência, suportando vários bancos de dados e aplicativos de IA.

Desenvolvimento modelo semântico

Popcorn: Executando Elixir no Navegador

2025-05-17

Popcorn é uma biblioteca inovadora que permite a execução de código Elixir em navegadores web. Utilizando o tempo de execução AtomVM, ele executa código Elixir compilado do lado do cliente, oferecendo APIs para interação Elixir-JavaScript, serialização e comunicação, garantindo a responsividade do navegador. Ainda em desenvolvimento, com uma API instável, apresenta três exemplos ao vivo: um REPL Elixir simples, tutoriais interativos e uma implementação do Jogo da Vida. Desenvolvedores podem começar a usar o Popcorn adicionando-o como dependência em seu `mix.exs` e configurando os pontos de entrada JS e Elixir WASM. Ele conecta JS e Elixir por meio de passagem de mensagens e permite a execução direta de JS a partir do Elixir. O lado Elixir usa o módulo `Popcorn.Wasm`, enquanto o lado JS usa a classe `Popcorn`.

Desenvolvimento

MCP: Adoção rápida, dores de crescimento e um chamado à ação

2025-05-17
MCP: Adoção rápida, dores de crescimento e um chamado à ação

Este artigo é uma resposta a uma crítica ao protocolo MCP, um padrão para chamar ferramentas de LLMs. O autor argumenta que a crítica se concentra muito em mecanismos de transporte (por exemplo, WebSockets) enquanto ignora o valor central do MCP: autenticação OAuth 2.0 e a capacidade de LLMs interagirem com o mundo real. Embora reconheça problemas como segurança de ferramentas e compatibilidade de servidores multilocatários, o autor enfatiza a rápida adoção do MCP e os esforços da comunidade para resolver esses desafios. O autor conclui com um chamado à ação para que os desenvolvedores participem na moldagem do futuro seguro e confiável do MCP.

Desenvolvimento protocolo MCP

Catálogo de Novos Sistemas Operacionais: Reinventando o Futuro da Computação

2025-05-17
Catálogo de Novos Sistemas Operacionais: Reinventando o Futuro da Computação

Após o frenesi dos LLMs, surgiu uma onda de criação de novos sistemas operacionais. Este artigo cataloga vários desses projetos, incluindo a pilha de computação pessoal UXN/Varvara, o sistema operacional Nette.io orientado para pesquisa na web e sistemas baseados em Lisp como Interim e ChrysaLisp. Esses projetos demonstram abordagens inovadoras para o design de SO, como a reinvenção da interface de desktop do DesktopNeo e o design de SO baseado em intenções do MercuryOS. Esses esforços representam explorações ousadas do futuro da computação, reacendendo a paixão pela inovação em SO.

Desenvolvimento

Fahmatrix: Uma alternativa leve ao Pandas para Java

2025-05-17
Fahmatrix: Uma alternativa leve ao Pandas para Java

Fahmatrix é uma biblioteca Java moderna e leve para trabalhar com dados tabulares, inspirada no Pandas do Python e projetada para simplificar a compreensão de dados na JVM. Ela oferece uma API intuitiva para leitura e visualização de CSV, filtragem de linhas e seleção de colunas, e recursos futuros como agregações, agrupamento e classificação. Fahmatrix atualmente não possui dependências externas e pode ser baixada como um arquivo JAR do GitHub ou usada via Maven/Gradle (a ser adicionado em versões futuras). Recursos principais incluem carregar arquivos CSV em DataFrames, impressão de dados, funções head()/tail(), várias funções de agregação, filtragem de linhas e seleção de colunas, groupBy e tabelas dinâmicas, exportação de dados e inferência e conversão de tipos. Fahmatrix capacita os desenvolvedores Java a trabalharem com dados tabulares de forma eficiente sem sair da JVM.

Desenvolvimento

Home Assistant: A Jornada de Automação Doméstica de um Desenvolvedor de Kernel

2025-05-17

Um desenvolvedor de kernel compartilha sua experiência de um ano usando o Home Assistant, um sistema de automação doméstica de código aberto. O artigo analisa a saúde do projeto Home Assistant, equilibrando seu modelo de negócios com sua comunidade de código aberto, destacando sua base de desenvolvedores ativos e a transição para a Open Home Foundation. A instalação, embora oficialmente recomendada com um sistema operacional dedicado, é relativamente simples em sistemas Linux padrão, embora exija algum conhecimento técnico. O Home Assistant conecta vários dispositivos domésticos por meio de integrações, com qualidade variável, mas oferecendo funcionalidade poderosa no geral. Questões de segurança são abordadas, reconhecendo os riscos potenciais, mas observando a política de segurança do projeto e os mecanismos de auditoria que mitigam algumas vulnerabilidades. Em última análise, o Home Assistant capacita os usuários com controle sobre sua rede doméstica e dispositivos, apresentando uma alternativa convincente aos serviços em nuvem.

Desenvolvimento Automação Doméstica

rapidhash: Função hash ultrarrápida, de alta qualidade e independente de plataforma

2025-05-17
rapidhash: Função hash ultrarrápida, de alta qualidade e independente de plataforma

rapidhash, o sucessor oficial do wyhash, é uma função hash extremamente rápida, de alta qualidade e independente de plataforma. Ele ultrapassa 70 GB/s em CPUs Apple M4 e passa em todos os testes do SMHasher e SMHasher3. Otimizado para AMD64 e AArch64, é compatível com gcc, clang, icx e MSVC, sem depender de conjuntos de instruções específicos da máquina. A probabilidade de colisão é excepcionalmente baixa, aproximando-se do ideal teórico. Isso torna o rapidhash uma escolha superior para aplicações críticas de desempenho.

Desenvolvimento

xtool: Substituto multiplataforma do Xcode

2025-05-17
xtool: Substituto multiplataforma do Xcode

xtool é uma ferramenta multiplataforma (Linux/WSL/macOS) que replica a funcionalidade principal do Xcode usando padrões abertos. Crie e implante aplicativos iOS com SwiftPM sem precisar do Xcode. Recursos principais incluem a construção de pacotes SwiftPM em aplicativos iOS, assinatura e instalação de aplicativos e interação programática com os Serviços de Desenvolvedor Apple. Também oferece uma biblioteca XKit para interação com os serviços da Apple e dispositivos iOS em seus próprios aplicativos.

Desenvolvimento

Novo Painel de Comando da Microsoft: Uma versão aprimorada do PowerToys Run

2025-05-17
Novo Painel de Comando da Microsoft: Uma versão aprimorada do PowerToys Run

A Microsoft lançou silenciosamente o Command Palette, um aplicativo de inicialização reformulado para Windows, que sucede o seu PowerToys Run. Essa ferramenta atualizada oferece acesso rápido a comandos, aplicativos e ferramentas de desenvolvimento, incluindo funcionalidade de pesquisa para aplicativos, arquivos e pastas; cálculos; comandos do sistema; e recursos de pesquisa na web e em sites. Importantemente, o Command Palette possui extensibilidade, permitindo que os usuários adicionem comandos e recursos personalizados, tornando-o um recurso poderoso para desenvolvedores e usuários avançados. A funcionalidade do Window Walker também está integrada para facilitar a troca de janelas.

Desenvolvimento

Home Assistant: A Jornada de um Desenvolvedor de Kernel para a Liberdade da Casa Inteligente

2025-05-17

Um desenvolvedor de kernel relata sua experiência usando o Home Assistant, um sistema de automação residencial de código aberto, para gerenciar sua casa inteligente. O artigo detalha como o Home Assistant resolveu problemas do mundo real: substituindo um sistema de monitoramento de painéis solares defeituoso após a falência da SunPower, criando sensores virtuais para calcular o consumo de energia doméstica usando 'Helpers', controlando localmente bombas de calor Mitsubishi sem dependência de nuvem e usando um monitor de energia Refoss para rastrear precisamente o uso de energia dos eletrodomésticos e diagnosticar problemas. O Home Assistant oferece controle completo, mas requer uma curva de aprendizado técnica.

Desenvolvimento

Rustls: Melhorias significativas de desempenho em implementação TLS com segurança de memória

2025-05-16
Rustls: Melhorias significativas de desempenho em implementação TLS com segurança de memória

O Rustls, uma implementação TLS com segurança de memória que prioriza o desempenho, lançou melhorias significativas de desempenho. Ao otimizar os mecanismos de retomada de sessão — especificamente, substituindo mutexes para reduzir a contenção em handshakes de conexão de servidor concorrentes e diminuindo o número de tickets de retomada sem estado enviados por padrão — o Rustls 0.23.17 demonstra desempenho significativamente melhorado em servidores multinúcleo, alcançando escalabilidade quase linear. A latência do servidor para o tratamento principal do handshake TLS é aproximadamente 2 vezes menor que o OpenSSL em benchmarks. Isso torna o Rustls uma solução TLS altamente competitiva, trazendo conexões mais seguras e eficientes para a internet.

Desenvolvimento

Construindo um agente de edição de código em 94 linhas de Ruby

2025-05-16

Este artigo desafia a dificuldade percebida de construir um agente de edição de código, mostrando um totalmente funcional construído em apenas 94 linhas de Ruby usando a gem RubyLLM. O agente utiliza um Modelo de Linguagem Grande (LLM) e três ferramentas - ler arquivo, listar arquivos e editar arquivo - para executar tarefas de edição de código. O autor detalha a implementação de cada ferramenta e demonstra as capacidades do agente construindo um jogo de Campo Minado ASCII. Uma ferramenta de execução de comandos shell é adicionada para melhorar a funcionalidade, resultando em um agente de edição de código que se autotesta.

Desenvolvimento

Solidis: Um cliente RESP Redis de alto desempenho, projetado com princípios SOLID

2025-05-16
Solidis: Um cliente RESP Redis de alto desempenho, projetado com princípios SOLID

Solidis é um cliente RESP moderno construído com princípios SOLID, zero dependências e desempenho de nível empresarial. Ele suporta os protocolos RESP2 e RESP3 e é otimizado para aplicativos JavaScript/TypeScript modernos. Solidis oferece duas implementações de cliente: um cliente básico para tamanho mínimo de pacote e um cliente com recursos com comandos pré-carregados. Ele também suporta recursos avançados como transações, pipelines, pub/sub, reconexão automática, segurança de tipo robusta e extensibilidade.

Desenvolvimento

Google Closure Library Ressuscitado: Salvando a Estabilidade do ClojureScript

2025-05-16

A estabilidade do Google Closure Library (GCL) começou a declinar por volta de 2019, com o Google finalmente encerrando a manutenção em agosto passado. Uma equipe fez um fork do GCL para manter o ecossistema do ClojureScript, revertendo várias mudanças quebras e alinhando-o com a versão mais recente do Google Closure Compiler. Isso restaura a funcionalidade de muitas bibliotecas antigas do ClojureScript e fornece uma base sólida para o ClojureScript em vários contextos JavaScript além apenas dos navegadores. Ele oferece uma solução poderosa e independente de framework para tarefas como manipulação de DOM, internacionalização e animação, sem inflar o artefato JavaScript final.

Desenvolvimento
1 2 85 86 87 89 91 92 93 214 215