Mejorando el autocompletado con tabulación en Bash y Zsh: mostrando descripciones para palabras completas

2025-08-10

Este artículo describe una mejora en el autocompletado con tabulación de Bash y Zsh, permitiendo mostrar descripciones incluso para palabras ya completas. Anteriormente, el autocompletado solo mostraba descripciones cuando coincidían varias opciones, lo que dificultaba la visualización de descripciones de comandos únicos. El autor soluciona esto de forma ingeniosa añadiendo opciones de autocompletado 'ficticias', permitiendo a los usuarios ver las descripciones con una sola pulsación de Tab. Esto mejora significativamente la experiencia del usuario, a pesar de una pequeña imperfección en la IU por la duplicación de palabras.

Leer más

Mill: Una revolución en las herramientas de construcción inspirada en React

2025-05-13

Mill es una herramienta de construcción única que adopta decisiones de diseño centrales de React.js: construcciones de estilo directo y un único lenguaje de propósito general. A diferencia de las herramientas de construcción tradicionales que dependen de funciones de devolución de llamada y varios lenguajes, Mill permite a los desarrolladores escribir funciones que devuelven directamente los artefactos de construcción finales, con Mill gestionando automáticamente el almacenamiento en caché, la paralelización y la optimización. Este enfoque simplifica el proceso de construcción, mejora la legibilidad y el mantenimiento y mejora la integración del IDE.

Leer más

¿Por qué Mill usa Scala para la configuración de la compilación?

2025-02-13

La elección de Scala como lenguaje de configuración para el sistema de compilación Mill, en lugar de alternativas como YAML o XML, ha generado preguntas. Este artículo aborda esto explorando tres razones principales: los beneficios de usar un lenguaje de programación de propósito general, las ventajas específicas de Scala y el razonamiento detrás del uso de la Máquina Virtual Java. Si bien Scala es un lenguaje de nicho, sus propiedades únicas lo hacen particularmente adecuado para configurar sistemas de compilación, independientemente del tamaño del proyecto.

Leer más
Desarrollo

Binarios nativos multiplataforma de Mill a través de Github Actions

2025-02-02

El proyecto Mill aprovecha Github Actions para construir binarios nativos en varias plataformas (Mac, Windows, Linux) y subirlos a Maven Central. Una configuración inteligente separa la publicación de artefactos compatibles con JVM de los binarios nativos específicos de la plataforma, garantizando la compatibilidad multiplataforma. Las tareas personalizadas `artifactName` y `jar` generan archivos versionados con sufijos de SO y arquitectura de CPU, permitiendo a los usuarios seleccionar el ejecutable adecuado para su entorno.

Leer más

Herramienta de compilación Mill JVM: JAR de ensamblaje directamente ejecutables

2025-01-02

La herramienta de compilación Mill JVM crea JAR de ensamblaje que son directamente ejecutables, eliminando la necesidad del comando `java -jar`. Esto se logra añadiendo un script shell al principio del archivo JAR, que luego invoca el entorno de ejecución de Java. Este script está ingeniosamente diseñado para ser compatible con sistemas Unix y Windows, permitiendo la ejecutabilidad multiplataforma. El artículo detalla cómo funciona esto, aprovechando la naturaleza de los archivos ZIP para concatenar un script de inicio con el contenido del JAR para una ejecución sin problemas. Esto mejora significativamente la integración de los programas Java en los flujos de trabajo de línea de comandos.

Leer más

CI más rápido con Mill: Estrategias de pruebas selectivas

2024-12-30

Ejecutar todas las pruebas en bases de código grandes es ineficiente. Este artículo explora tres enfoques de pruebas selectivas: basado en carpetas, basado en dependencias y basado en heurística. El basado en carpetas es simple pero puede pasar por alto errores; el basado en dependencias es más exhaustivo pero puede realizar pruebas excesivas; el basado en heurística optimiza la selección de pruebas con reglas personalizadas, equilibrando velocidad y exhaustividad. La herramienta de compilación Mill admite de forma nativa pruebas selectivas basadas en dependencias, mejorando significativamente la eficiencia de CI. Sin embargo, combinarlo con métodos heurísticos optimiza aún más el equilibrio entre velocidad y cobertura de pruebas.

Leer más

Herramientas de compilación Monorepo: Escalando tu base de código

2024-12-20

Las herramientas de compilación tradicionales tienen dificultades con grandes bases de código (100-10.000 desarrolladores activos). Las herramientas de compilación Monorepo como Bazel y Mill ofrecen soluciones, soportando múltiples lenguajes, tareas de compilación personalizadas, caché y paralelización automáticas, caché y ejecución remota, mejorando drásticamente la velocidad y eficiencia de la compilación. También incluyen selección de pruebas basada en dependencias y sandbox de tareas de compilación, reduciendo el tiempo de prueba y el no-determinismo. Si bien estas características pueden parecer innecesarias para proyectos pequeños, son cruciales para la colaboración a gran escala y la integración continua en proyectos más grandes, evitando que los tiempos de compilación se conviertan en un cuello de botella.

Leer más