Aprimorando o preenchimento de guias do Bash e Zsh: mostrando descrições para palavras completas

2025-08-10

Este artigo descreve uma melhoria no preenchimento de guias do Bash e Zsh, permitindo que ele exiba descrições mesmo para palavras já completas. Anteriormente, o preenchimento de guias só mostrava descrições quando várias opções coincidiam, tornando inconveniente para os usuários verem descrições de comandos únicos. O autor resolve isso de forma inteligente adicionando opções de preenchimento 'dummy', permitindo que os usuários vejam descrições com apenas uma tecla Tab. Isso melhora significativamente a experiência do usuário, apesar de uma pequena imperfeição na IU de duplicação de palavras.

Leia mais
Desenvolvimento Preenchimento de Guias

Mill: Uma Revolução nas Ferramentas de Construção Inspirada no React

2025-05-13

Mill é uma ferramenta de construção única que adota decisões de design centrais do React.js: construções de estilo direto e uma única linguagem de uso geral. Ao contrário das ferramentas de construção tradicionais que dependem de callbacks e várias linguagens, o Mill permite que os desenvolvedores escrevam funções que retornam diretamente os artefatos de construção finais, com o Mill lidando automaticamente com o armazenamento em cache, paralelização e otimização. Essa abordagem simplifica o processo de construção, melhora a legibilidade e a manutenibilidade e aprimora a integração do IDE.

Leia mais
Desenvolvimento ferramenta de construção

Por que o Mill usa Scala para configuração de builds?

2025-02-13

A escolha de Scala como linguagem de configuração para o sistema de build Mill, em vez de alternativas como YAML ou XML, gerou perguntas. Este artigo aborda isso explorando três razões principais: os benefícios de usar uma linguagem de programação de propósito geral, as vantagens específicas do Scala e o raciocínio por trás do uso da Máquina Virtual Java. Embora Scala seja uma linguagem de nicho, suas propriedades únicas a tornam particularmente adequada para configurar sistemas de build, independentemente do tamanho do projeto.

Leia mais
Desenvolvimento sistema de build

Binários nativos multiplataforma do Mill via Github Actions

2025-02-02

O projeto Mill utiliza o Github Actions para construir binários nativos em várias plataformas (Mac, Windows, Linux) e carregá-los para o Maven Central. Uma configuração inteligente separa a publicação de artefatos compatíveis com JVM de binários nativos específicos da plataforma, garantindo compatibilidade multiplataforma. As tarefas `artifactName` e `jar` personalizadas geram arquivos versionados com sufixos de SO e arquitetura de CPU, permitindo que os usuários selecionem o executável apropriado para seu ambiente.

Leia mais

Ferramenta de Compilação Mill JVM: JARs de Assembly Executáveis Diretamente

2025-01-02

A ferramenta de compilação Mill JVM cria JARs de assembly que são diretamente executáveis, eliminando a necessidade do comando `java -jar`. Isso é conseguido adicionando um script shell ao início do arquivo JAR, que, em seguida, invoca o tempo de execução Java. Esse script é habilmente projetado para ser compatível com sistemas Unix e Windows, permitindo a executabilidade multiplataforma. O artigo detalha como isso funciona, aproveitando a natureza dos arquivos ZIP para concatenar um script de inicialização com o conteúdo do JAR para uma execução perfeita. Isso melhora significativamente a integração de programas Java em fluxos de trabalho de linha de comando.

Leia mais
Desenvolvimento ferramenta de compilação

CI mais rápido com Mill: Estratégias de testes seletivos

2024-12-30

Executar todos os testes em grandes bases de código é ineficiente. Este artigo explora três abordagens de testes seletivos: baseada em pastas, baseada em dependências e baseada em heurística. A baseada em pastas é simples, mas pode perder erros; a baseada em dependências é mais completa, mas pode testar demais; a baseada em heurística otimiza a seleção de testes com regras personalizadas, equilibrando velocidade e exaustividade. A ferramenta de construção Mill suporta nativamente testes seletivos baseados em dependências, melhorando significativamente a eficiência do CI. No entanto, combiná-la com métodos heurísticos otimiza ainda mais o equilíbrio entre velocidade e cobertura de testes.

Leia mais

Ferramentas de compilação Monorepo: Escalando sua base de código

2024-12-20

Ferramentas de compilação tradicionais têm dificuldades com grandes bases de código (100-10.000 desenvolvedores ativos). Ferramentas de compilação Monorepo como Bazel e Mill oferecem soluções, suportando múltiplas linguagens, tarefas de compilação personalizadas, cache e paralelização automáticos, cache e execução remota, melhorando drasticamente a velocidade e eficiência da compilação. Elas também incluem seleção de testes baseada em dependências e sandbox de tarefas de compilação, reduzindo o tempo de teste e o não-determinismo. Embora esses recursos possam parecer desnecessários para projetos pequenos, eles são cruciais para colaboração em larga escala e integração contínua em projetos maiores, evitando que os tempos de compilação se tornem um gargalo.

Leia mais