Verbesserung der Tab-Completion in Bash und Zsh: Anzeige von Beschreibungen für vollständige Wörter

2025-08-10

Dieser Artikel beschreibt eine Verbesserung der Tab-Completion in Bash und Zsh, die es ermöglicht, Beschreibungen auch für bereits vollständige Wörter anzuzeigen. Bisher zeigte die Tab-Completion Beschreibungen nur an, wenn mehrere Optionen übereinstimmten, was die Anzeige von Beschreibungen einzelner Befehle erschwerte. Der Autor löst dieses Problem auf clevere Weise, indem er „Dummy“-Completion-Optionen hinzufügt, sodass Benutzer die Beschreibungen mit einem einzigen Tab-Druck sehen können. Dies verbessert die Benutzererfahrung erheblich, trotz einer kleinen UI-Unvollkommenheit durch die Wortverdopplung.

Mehr lesen
Entwicklung Tab-Completion

Mill: Eine von React inspirierte Revolution im Build-Tooling

2025-05-13

Mill ist ein einzigartiges Build-Tool, das zentrale Designentscheidungen von React.js übernimmt: Direct-Style Builds und eine einzige, universelle Programmiersprache. Im Gegensatz zu traditionellen Build-Tools, die auf Callbacks und mehrere Sprachen angewiesen sind, ermöglicht Mill Entwicklern, Funktionen zu schreiben, die direkt die finalen Build-Artefakte zurückgeben, wobei Mill automatisch Caching, Parallelisierung und Optimierung übernimmt. Dieser Ansatz vereinfacht den Build-Prozess, verbessert Lesbarkeit und Wartbarkeit und optimiert die IDE-Integration.

Mehr lesen
Entwicklung

Warum Mill Scala für die Build-Konfiguration verwendet

2025-02-13

Die Wahl von Scala als Konfigurationssprache für das Mill-Build-System anstelle von Alternativen wie YAML oder XML hat Fragen aufgeworfen. Dieser Artikel geht auf drei Hauptgründe ein: die Vorteile der Verwendung einer Allzweck-Programmiersprache, die spezifischen Vorteile von Scala und die Begründung für die Verwendung der Java Virtual Machine. Obwohl Scala eine Nischensprache ist, eignen sich ihre einzigartigen Eigenschaften besonders gut für die Konfiguration von Build-Systemen, unabhängig von der Projektgröße.

Mehr lesen
Entwicklung

Plattformübergreifende native Binärdateien von Mill über Github Actions

2025-02-02

Das Mill-Projekt nutzt Github Actions, um native Binärdateien auf verschiedenen Plattformen (Mac, Windows, Linux) zu erstellen und auf Maven Central hochzuladen. Eine clevere Konfiguration trennt die Veröffentlichung von JVM-kompatiblen Artefakten von plattformspezifischen nativen Binärdateien und gewährleistet so die plattformübergreifende Kompatibilität. Benutzerdefinierte `artifactName`- und `jar`-Tasks erzeugen versionierte Dateien mit OS- und CPU-Architektur-Suffixen, sodass Benutzer die passende ausführbare Datei für ihre Umgebung auswählen können.

Mehr lesen

Mill JVM Build-Tool: Direkt ausführbare Assembly-JARs

2025-01-02

Das Mill JVM Build-Tool erzeugt Assembly-JARs, die direkt ausführbar sind, wodurch der `java -jar`-Befehl überflüssig wird. Dies wird erreicht, indem ein Shell-Skript an den Anfang der JAR-Datei angefügt wird, welches dann die Java-Laufzeitumgebung aufruft. Dieses Skript ist geschickt so konzipiert, dass es sowohl mit Unix- als auch mit Windows-Systemen kompatibel ist und plattformübergreifende Ausführung ermöglicht. Der Artikel beschreibt detailliert die Funktionsweise, wobei die Eigenschaften von ZIP-Dateien genutzt werden, um ein Startskript mit dem Inhalt des JAR zu verketten, um eine nahtlose Ausführung zu gewährleisten. Dies verbessert die Integration von Java-Programmen in Command-Line-Workflows erheblich.

Mehr lesen
Entwicklung Build-Tool

Schnellere CI mit Mill: Strategien für selektives Testen

2024-12-30

Das Ausführen aller Tests in großen Codebasen ist ineffizient. Dieser Artikel untersucht drei Ansätze für selektives Testen: ordnerbasiert, abhängigkeitsbasiert und heuristisch. Der ordnerbasierte Ansatz ist einfach, kann aber Fehler übersehen; der abhängigkeitsbasierte Ansatz ist gründlicher, kann aber zu viele Tests durchführen; der heuristische Ansatz optimiert die Testauswahl mit benutzerdefinierten Regeln und gleicht Geschwindigkeit und Gründlichkeit aus. Das Mill-Build-Tool unterstützt nativ abhängigkeitsbasiertes selektives Testen und verbessert so die CI-Effizienz erheblich. Die Kombination mit heuristischen Methoden optimiert jedoch das Gleichgewicht zwischen Geschwindigkeit und Testabdeckung weiter.

Mehr lesen

Monorepo-Build-Tools: Skalierung Ihrer Codebasis

2024-12-20

Traditionelle Build-Tools haben Schwierigkeiten mit großen Codebasen (100-10.000 aktive Entwickler). Monorepo-Build-Tools wie Bazel und Mill bieten Lösungen, indem sie mehrere Sprachen, benutzerdefinierte Build-Aufgaben, automatische Caching und Parallelisierung, Remote-Caching und -Ausführung unterstützen, wodurch die Build-Geschwindigkeit und -Effizienz drastisch verbessert wird. Sie bieten auch dependenzabhängige Testauswahl und Build-Task-Sandboxing, wodurch die Testzeit und der Nichtdeterminismus reduziert werden. Während diese Funktionen für kleine Projekte unnötig erscheinen mögen, sind sie für große Projekte entscheidend für die Zusammenarbeit im großen Maßstab und die kontinuierliche Integration, um zu verhindern, dass die Build-Zeiten zum Engpass werden.

Mehr lesen