staging.inyokaproject.org

2022 Woche 09

6. März 2022

Kurz angemerkt: beim Update eines GitLab-Servers per APT trat folgende Fehlermeldung auf:

The following signatures were invalid: EXPKEYSIG 3F01618A51312F3F GitLab B.V. (package repository signing key) <packages@gitlab.com>

Der Hintergrund ist recht einfach und wird auch auf der entsprechenden Hilfeseite erklärt:

This key’s expiration was extended from 2022-03-02 to 2024-03-01. If you encounter a complaint of expiration on 2022-03-02, perform the steps in Update keys after expiry extension to incorporate the updated public key content.

So lief tatsächlich der Repository Key in der Mitte der Woche regulär aus und muss nun erneuert bzw. aktualisiert werden, da seine Laufzeit erweitert wurde. Die Anleitung, wie man den Key aktualisieren kann, wird auf besagter Hilfeseite ebenfalls zur Verfügung gestellt. Danach verläuft das Upgrade wieder wie gehabt.

[GitLab.com Issue]

Möchte man KaTeX und cactus.chat gemeinsame verwenden, muss man sicherstellen, dass KaTeX nicht in den

-Container von cactus.chat reinschreibt…

5. März 2022

Ich verwende in meinem Blog KaTeX (siehe hier) und cactus.chat (siehe hier), und beides für sich genommen funktioniert ganz gut. Ein Problem tritt dann auf, wenn KaTeX und cactus.chat gemeinsam verwendet werden.

Dann kann es passieren, dass KaTeX in dem <div>-Container von cactus.chat herumschreibt, was dazu führt, dass cactus.chat nur “Getting comments…” anzeigt, ohne diese jedoch wirklich zu laden und ohne die Chance, einen neuen Kommentar hinzuzufügen.

Die Lösung besteht darin zu verhindern, dass KaTeX den <div>-Container anfasst. Die lässt sich in 2 Schritten umsetzen…

1. cactus.chat einrahmen

Wir modifizieren /layouts/shortcodes/chat.html (siehe hier) und packen den cactus.chat-Abschnitt komplett in ein eigenes <div>:

# {{< highlight html "linenos=table,hl_lines=2 15,linenostart=1" >}}
<br>
<div class="no-katex-here">
<script type="text/javascript" src="https://latest.cactus.chat/cactus.js"></script>
<link rel="stylesheet" href="https://latest.cactus.chat/style.css" type="text/css">
<div id="comment-section"></div>
<script>
initComments({
  node: document.getElementById("comment-section"),
  defaultHomeserverUrl: "https://matrix.cactus.chat:8448",
  serverName: "cactus.chat",
  siteName: "YOUR-SITE-NAME",
  commentSectionId: "{{ index .Params 0 }}"
})
</script>
</div>
#{{< / highlight >}}

In Zeile 2 beginnt unser Container mit der Klasse "no-katex-here", und in Zeile 15 endet er.

2. KaTeX anpassen

Man kann KaTeX anweisen, bestimmte Bereiche der Seite nicht anzufassen. Dies erfolgt entweder über den Parameter ignoredTags oder ignoredClasses (siehe KaTeX-Docs). Da wir oben im Cactus-Shortcode den <div>-Container der Klasse "no-katex-here" zugewiesen haben, bedienen wir uns der letzteren Option und übergeben ignoredClasses:['no-katex-here'] beim Funktionsaufruf.

Dafür muss die Datei /layouts/partials/katex.html (siehe hier) entsprechend angepasst werden.

<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.15.2/dist/katex.min.css" integrity="sha384-MlJdn/WNKDGXveldHDdyRP1R4CTHr3FeuDNfhsLPYrq2t0UBkUdK2jyTnXPEK1NQ" crossorigin="anonymous">

<!-- The loading of KaTeX is deferred to speed up page rendering -->
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.15.2/dist/katex.min.js" integrity="sha384-VQ8d8WVFw0yHhCk5E8I86oOhv48xLpnDZx5T9GogA/Y84DcCKWXDmSDfn13bzFZY" crossorigin="anonymous"></script>

<!-- To automatically render math in text elements, include the auto-render extension: -->
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.15.2/dist/contrib/auto-render.min.js" integrity="sha384-+XBljXPPiv+OzfbB3cVmLHf4hdUFHlWNZN5spNQ7rmHTXpd7WvJum6fIACpNNfIR" crossorigin="anonymous" onload="renderMathInElement(document.body,{ignoredClasses:['no-katex-here']});"></script>

<script>
    document.addEventListener("DOMContentLoaded", function() {
        renderMathInElement(document.body, {
            ignoredClasses:['no-katex-here'],
            delimiters: [
                {left: "$$", right: "$$", display: true},
                {left: "$", right: "$", display: false}
            ]      
        });
    });
</script>

In Zeile 7 und 12 haben wir den Funktionsaufruf um die Option ignoredClasses:['no-katex-here'] ergänzt.


Jetzt lässt KaTeX cactus.chat in Ruhe und beides funktioniert gemeinsam.




kommentiere per [matrix]:

Ich verwende in meinem Blog KaTeX (siehe hier) und cactus.chat (siehe hier), und beides für sich genommen funktioniert ganz gut. Ein Problem tritt dann auf, wenn KaTeX und cactus.chat gemeinsam verwendet werden.

Dann kann es passieren, dass KaTeX in dem <div>-Container von cactus.chat herumschreibt, was dazu führt, dass cactus.chat nur “Getting comments…” anzeigt, ohne diese jedoch wirklich zu laden und ohne die Chance, einen neuen Kommentar hinzuzufügen.

Die Lösung besteht darin zu verhindern, dass KaTeX den <div>-Container anfasst. Die lässt sich in 2 Schritten umsetzen…

1. cactus.chat einrahmen

Wir modifizieren /layouts/shortcodes/chat.html (siehe hier) und packen den cactus.chat-Abschnitt komplett in ein eigenes <div>:

# {{< highlight html "linenos=table,hl_lines=2 15,linenostart=1" >}}
<br>
<div class="no-katex-here">
<script type="text/javascript" src="https://latest.cactus.chat/cactus.js"></script>
<link rel="stylesheet" href="https://latest.cactus.chat/style.css" type="text/css">
<div id="comment-section"></div>
<script>
initComments({
  node: document.getElementById("comment-section"),
  defaultHomeserverUrl: "https://matrix.cactus.chat:8448",
  serverName: "cactus.chat",
  siteName: "YOUR-SITE-NAME",
  commentSectionId: "{{ index .Params 0 }}"
})
</script>
</div>
#{{< / highlight >}}

In Zeile 2 beginnt unser Container mit der Klasse "no-katex-here", und in Zeile 15 endet er.

2. KaTeX anpassen

Man kann KaTeX anweisen, bestimmte Bereiche der Seite nicht anzufassen. Dies erfolgt entweder über den Parameter ignoredTags oder ignoredClasses (siehe KaTeX-Docs). Da wir oben im Cactus-Shortcode den <div>-Container der Klasse "no-katex-here" zugewiesen haben, bedienen wir uns der letzteren Option und übergeben ignoredClasses:['no-katex-here'] beim Funktionsaufruf.

Dafür muss die Datei /layouts/partials/katex.html (siehe hier) entsprechend angepasst werden.

<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.15.2/dist/katex.min.css" integrity="sha384-MlJdn/WNKDGXveldHDdyRP1R4CTHr3FeuDNfhsLPYrq2t0UBkUdK2jyTnXPEK1NQ" crossorigin="anonymous">

<!-- The loading of KaTeX is deferred to speed up page rendering -->
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.15.2/dist/katex.min.js" integrity="sha384-VQ8d8WVFw0yHhCk5E8I86oOhv48xLpnDZx5T9GogA/Y84DcCKWXDmSDfn13bzFZY" crossorigin="anonymous"></script>

<!-- To automatically render math in text elements, include the auto-render extension: -->
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.15.2/dist/contrib/auto-render.min.js" integrity="sha384-+XBljXPPiv+OzfbB3cVmLHf4hdUFHlWNZN5spNQ7rmHTXpd7WvJum6fIACpNNfIR" crossorigin="anonymous" onload="renderMathInElement(document.body,{ignoredClasses:['no-katex-here']});"></script>

<script>
    document.addEventListener("DOMContentLoaded", function() {
        renderMathInElement(document.body, {
            ignoredClasses:['no-katex-here'],
            delimiters: [
                {left: "$$", right: "$$", display: true},
                {left: "$", right: "$", display: false}
            ]      
        });
    });
</script>

In Zeile 7 und 12 haben wir den Funktionsaufruf um die Option ignoredClasses:['no-katex-here'] ergänzt.


Jetzt lässt KaTeX cactus.chat in Ruhe und beides funktioniert gemeinsam.




kommentiere per [matrix]:

Die MZLA Technologies Corporation hat mit Thunderbird 91.6.2 ein Sicherheits-Update für seinen Open Source E-Mail-Client veröffentlicht.

Neuerungen von Thunderbird 91.6.2

Mit dem Update auf Thunderbird 91.6.2 hat die MZLA Technologies Corporation ein Update außer der Reihe für seinen Open Source E-Mail-Client veröffentlicht und behebt damit eben jene kritische Sicherheitslücken, die heute auch in Firefox 97.0.2 respektive Firefox ESR 91.6.1 behoben worden sind. Außerdem wurde noch das Problem behoben, dass temporäre Dateien aus geöffneten Dateianhängen mit zu hohen Berechtigungen gespeichert worden sind.

Der Beitrag Sicherheits-Update Thunderbird 91.6.2 veröffentlicht erschien zuerst auf soeren-hentzschel.at.

Mozilla hat mit Firefox 97.0.2 ein wichtiges Sicherheits-Update für seinen Browser veröffentlicht. Dieses behebt zwei Sicherheitsprobleme, von denen bekannt ist, dass diese bereits ausgenutzt werden.

Mit dem Update auf Firefox 97.0.2 reagiert Mozilla innerhalb kürzerster Zeit nach Bekanntwerden auf zwei kritische Sicherheitslücken. Wie wichtig dieses Update ist, zeigt sich neben der untypischen Veröffentlichung eines Updates am Wochenende vor allem daran, dass noch ein Update für Firefox 97 veröffentlicht worden ist, obwohl bereits in drei Tagen Firefox 98 veröffentlicht werden wird. Nach Angaben von Mozilla liegen Berichte vor, nach denen beide Sicherheitslücken bereits aktiv ausgenutzt werden.

Auch Firefox ESR ist betroffen. Dort wurden die Sicherheitslücken mit dem Update auf Firefox ESR 91.6.1 behoben.

Der Beitrag Kritisches Sicherheits-Update: Mozilla veröffentlicht Firefox 97.0.2 erschien zuerst auf soeren-hentzschel.at.

3. März 2022

Do, 3. März 2022, Lioh Möller

Die kommende Version der openSUSE Leap Distribution 15.4 hat den Beta-Status erreicht. Interessierte Anwender werden gebeten, die nun vorliegende Version zu testen und mögliche Fehler zu berichten. Die finale Veröffentlichung ist für den 8. Juni 2022 geplant.

Im Gegensatz zu früheren Versionen der 15er-Serie bringt Version 15.4 eine Vielzahl von Aktualisierungen mit sich. So sind Qt 5, Plasma, GNOME, und Enlightenment in neueren Versionsständen enthalten. Aktuell arbeiten die Entwickler noch an einem vereinfachten Weg, um H.264 und gstreamer Plugins installieren zu können.

Darüber hinaus wird parallel zur Version 15.4 erstmals eine MicroOS Variante von Leap angeboten werden. Dabei handelt es sich um eine Immutable Linux-Distribution, ähnlich wie Fedora Silverblue. Eine erste installierbare Version, soll in Kürze zur Verfügung stehen.

Download: https://get.opensuse.org/testing/
Ankündigung: https://news.opensuse.org/2022/03/02/leap-reaches-beta-build-phase/

Mit cactus.chat kann das Matrix-Protokoll verwendet werden, um auf HUGO-Seiten eine Kommentarfunktion bereitzustellen.

2. März 2022

Meinem Blog fehlt noch eine Kommentarfunktion, und HUGO bietet mir mehrere Möglichkeiten, dieses Vorhaben umzusetzen.

Eine davon ist Cactus Chat, welche das Matrix-Protokoll verwendet um die Kommentare bereitzustellen. Da schlägt das Herz des Datenveganers höher!

1. Matrix-Account erstellen

Ihr benötigt also einen Matrix-Account, um Cactus verwenden zu können.

2. Cactus klarmachen

Für den Anfang könnt ihr den bereitgestellten öffentlichen Service nutzen, oder aber cactus selbst installieren und hosten.

Startet eine Unterhaltung mit @cactusbot:cactus.chat. Sobald beide im Raum sind setzt ihr folgenden Befehl als Chatnachtricht ab:

register YOUR-SITE-NAME

wobei YOUR-SITE-NAME ein eindeutiger Name sein muss (es geht hier aber nicht um eurer tatsächlichen Servernamen oder URL). Ich hab mal produnistest gewählt:

register produnistest

Der Bot wird eure Seite registrieren und euch in den Raum #comments_YOUR-SITE-NAME:cactus.chat einladen, in meinem Falle #comments_produnistest:cactus.chat. Dieser gilt als Haupt-Moderationsraum.

3. In HUGO einbinden

Im Ordner /layouts/shortcodes/ erzeugt ihr die Datei chat.html und gebt ihr folgenden Inhalt:

<br>
<script type="text/javascript" src="https://latest.cactus.chat/cactus.js"></script>
<link rel="stylesheet" href="https://latest.cactus.chat/style.css" type="text/css">
<div id="comment-section"></div>
<script>
initComments({
  node: document.getElementById("comment-section"),
  defaultHomeserverUrl: "https://matrix.cactus.chat:8448",
  serverName: "cactus.chat",
  siteName: "YOUR-SITE-NAME",
  commentSectionId: "{{ index .Params 0 }}"
})
</script>

wobei ihr YOUR-SITE-NAME entsprechend ersetzen müsst.

Dieser Shortcode kann nun innerhalb der Posts aufgerufen werden mittels:

   {{< chat RAUMNAME >}}

wobei RAUMNAME ein frei wählbarer Name ist. Wenn RAUMNAME in allen Posts gleich ist, steht unter jedem Post der selbe Chatverlauf. Es bietet sich daher an, für jeden Post einen eigenen Raum zu erstellen. Das geht ganz einfach. Sobald die Seite das erste mal aufgerufen wird (z.B. als Preview), erfolgt die Raumerstellung automatisch anhand der Angaben im Shortcode. Die Kommentarfunktion funktioniert dann bereits auch im Preview. Anschließend solltet ihr selbst mit eurem Matrix-Account dem Raum beitreten, sonst könnt ihr die Beiträge nicht moderieren. Hierbei folgt die Notation der Comment-Räume dem Schema:

    #comments_YOUR-SITE-NAME_RAUMNAME:cactus.chat

Also z.B.

    #comments_produnistest_testraum:cactus.chat

Das funktioniert hier direkt auf Anhieb. Im nächsten Schritt werde ich Peter mal darauf anfixen, Cactus selbst zu hosten.

Links




kommentiere per [matrix]:

Meinem Blog fehlt noch eine Kommentarfunktion, und HUGO bietet mir mehrere Möglichkeiten, dieses Vorhaben umzusetzen.

Eine davon ist Cactus Chat, welche das Matrix-Protokoll verwendet um die Kommentare bereitzustellen. Da schlägt das Herz des Datenveganers höher!

1. Matrix-Account erstellen

Ihr benötigt also einen Matrix-Account, um Cactus verwenden zu können.

2. Cactus klarmachen

Für den Anfang könnt ihr den bereitgestellten öffentlichen Service nutzen, oder aber cactus selbst installieren und hosten.

Startet eine Unterhaltung mit @cactusbot:cactus.chat. Sobald beide im Raum sind setzt ihr folgenden Befehl als Chatnachtricht ab:

register YOUR-SITE-NAME

wobei YOUR-SITE-NAME ein eindeutiger Name sein muss (es geht hier aber nicht um eurer tatsächlichen Servernamen oder URL). Ich hab mal produnistest gewählt:

register produnistest

Der Bot wird eure Seite registrieren und euch in den Raum #comments_YOUR-SITE-NAME:cactus.chat einladen, in meinem Falle #comments_produnistest:cactus.chat. Dieser gilt als Haupt-Moderationsraum.

3. In HUGO einbinden

Im Ordner /layouts/shortcodes/ erzeugt ihr die Datei chat.html und gebt ihr folgenden Inhalt:

<br>
<script type="text/javascript" src="https://latest.cactus.chat/cactus.js"></script>
<link rel="stylesheet" href="https://latest.cactus.chat/style.css" type="text/css">
<div id="comment-section"></div>
<script>
initComments({
  node: document.getElementById("comment-section"),
  defaultHomeserverUrl: "https://matrix.cactus.chat:8448",
  serverName: "cactus.chat",
  siteName: "YOUR-SITE-NAME",
  commentSectionId: "{{ index .Params 0 }}"
})
</script>

wobei ihr YOUR-SITE-NAME entsprechend ersetzen müsst.

Dieser Shortcode kann nun innerhalb der Posts aufgerufen werden mittels:

   {{< chat RAUMNAME >}}

wobei RAUMNAME ein frei wählbarer Name ist. Wenn RAUMNAME in allen Posts gleich ist, steht unter jedem Post der selbe Chatverlauf. Es bietet sich daher an, für jeden Post einen eigenen Raum zu erstellen. Das geht ganz einfach. Sobald die Seite das erste mal aufgerufen wird (z.B. als Preview), erfolgt die Raumerstellung automatisch anhand der Angaben im Shortcode. Die Kommentarfunktion funktioniert dann bereits auch im Preview. Anschließend solltet ihr selbst mit eurem Matrix-Account dem Raum beitreten, sonst könnt ihr die Beiträge nicht moderieren. Hierbei folgt die Notation der Comment-Räume dem Schema:

    #comments_YOUR-SITE-NAME_RAUMNAME:cactus.chat

Also z.B.

    #comments_produnistest_testraum:cactus.chat

Das funktioniert hier direkt auf Anhieb. Im nächsten Schritt werde ich Peter mal darauf anfixen, Cactus selbst zu hosten.

Links




kommentiere per [matrix]:

Mi, 2. März 2022, Ralf Hersel

Das Gaming Handheld SteamDeck wird mit einer neuen Version von SteamOS ausgeliefert, einer speziellen Linux-Distribution für Spielegeräte, an der Valve und Collabora seit mehreren Jahren gemeinsam arbeiten. SteamOS 3 basiert auf Arch Linux, einer Rolling-Release-Distribution, die die neueste Mesa-Version für Open-Source-Grafikbeschleunigung enthält und die auf Debian basierende Version SteamOS 2 ablöst, die für das frühere Steam Machine-Projekt verwendet wurde. SteamOS 3 ist noch nicht als eigenständige Distribution verfügbar, soll es aber in Kürze sein.


Ein Handheld-Gerät benötigt ein solides Update-Framework, daher bestand einer der wichtigsten Beiträge von Collabora zu SteamOS 3 darin, nahtlose System-Updates zu implementieren. Mit dem neuen "A/B"-Design gibt es jetzt zwei Betriebssystempartitionen mit zwei verschiedenen Versionen von SteamOS. Bei einem Upgrade wird ein neues Betriebssystem-Image auf die Partition geschrieben, die gerade nicht in Gebrauch ist, bevor das System neu gestartet wird. Ein spezielles Bootloader-Modul wählt dann automatisch das neuere Betriebssystem aus und bootet es. Wenn das Upgrade erfolgreich war, kann man das neue Betriebssystem weiter verwenden, und die vorherige Systempartition wird für das nächste Upgrade eingesetzt. Wenn die aktualisierte Version nicht erfolgreich bootet, fällt der Bootloader automatisch auf die vorherige Systempartition zurück.

Für Ihre Nicht-Gaming-Bedürfnisse ist auf dem Gerät KDE Plasma Desktop vorinstalliert, sodass man das Deck für Desktop-Aufgaben verwenden und vorhandenen Peripheriegeräte über den USB-C-Anschluss nutzen kann.

Bei normaler Nutzung ist die aktive Betriebssystempartition schreibgeschützt, um das Steam Deck so robust wie möglich zu machen. Im Gegensatz zu den meisten Spielekonsolen handelt es sich jedoch um ein vollständig offenes Gerät, das in einen Entwicklermodus umgeschaltet werden kann, in dem die Betriebssystempartition schreib- und lesbar ist und verändert werden kann. Der Paketmanager "pacman" von Arch Linux ist für die Verwendung im Entwicklermodus verfügbar.

Quelle: https://www.collabora.com/news-and-blog/news-and-events/portable-linux-gaming-with-the-steam-deck.html

1. März 2022

Mozilla wird in Kürze das Mozilla VPN in weiteren Ländern starten und damit in insgesamt 17 Ländern zur Verfügung stehen.

Mit dem Mozilla VPN bietet Mozilla in Zusammenarbeit mit Mullvad sein eigenes Virtual Private Network an und verspricht neben einer sehr einfachen Bedienung eine durch das moderne und schlanke WireGuard-Protokoll schnelle Performance, Sicherheit sowie Privatsphäre: Weder werden Nutzungsdaten geloggt noch mit einer externen Analysefirma zusammengearbeitet, um Nutzungsprofile zu erstellen.

Jetzt Mozilla VPN nutzen

Start in weiteren Ländern

Neben Deutschland, Österreich und der Schweiz steht das Mozilla VPN auch in Belgien, Italien, Irland, Frankreich, Kanada, Malaysia, Neuseeland, den Niederlanden, Singapur, Spanien, dem Vereinigten Königreich sowie den Vereinigten Staaten von Amerika zur Verfügung.

Beginnend mit dem 8. März expandiert Mozilla nach Schweden und nach Finnland, womit das Mozilla VPN dann in insgesamt 17 Ländern angeboten wird.

Der Beitrag Mozilla VPN startet in weiteren Ländern erschien zuerst auf soeren-hentzschel.at.

Di, 1. März 2022, Norbert Rüthers

Mit Freude habe ich heute erfahren das die Armbian-Gemeinschaft die allgemeine Verfügbarkeit von Armbian 22.02 als neueste stabile Version des Debian- und Ubuntu-basierten Betriebssystems für ARM-Geräte angekündigt hat. In dieser Version wird nun erstmals auch der Raspberry Pi unterstützt.

Bisher wurde, warum auch immer, kein einziger Raspberry unterstützt. Ich habe immer vermutet das man bei Armbian davon ausgegangen ist, dass der Raspberry ohnehin genug Unterstützung erhält, was wohl auch stimmt. Dies kann man von anderen Plattformen leider nicht behaupten, die oft schnell die Unterstützung seitens der Maintainer verlieren.

Sechs Monate nach Armbian 21.08 wird also nun mit Armbian 22.02 die erste Unterstützung für Raspberry Pi Geräte eingeführt. Das Raspberry Pi 4 Model B Board wird derzeit mit 64-Bit-Builds unterstützt, die die Kernel 5.15 LTS und 5.16 der Raspberry Pi Foundation sowie das Flash-Kernel-Tool von Debian verwenden.

Während die Unterstützung für den Raspberry Pi noch als "Work in Progress" gekennzeichnet ist, scheint es, dass die Community von Erfolgen bei der Ausführung von Armbian auf verschiedenen 64-Bit Raspberry Pi Boards berichtet, einschließlich des älteren Raspberry Pi 3 Model B und Raspberry Pi CM3 und CM4.

Aber die Arbeit an der Raspberry Pi Portierung ist noch lange nicht abgeschlossen, und die Armbian-Entwickler brauchen Ihre Hilfe, um die Community mit einer voll funktionsfähigen Portierung zu versorgen. Im Moment könnt ihr helfen, indem ihr die offiziellen Raspberry Pi-Images herunterladet (Link) und diese testet. Die Images  basieren auf Ubuntu 20.04 LTS (Focal Fossa) (nur CLI) sowie auf Ubuntu
Ob es auch schon wie bei anderen SBCs möglich ist das Image selbst zu kompilieren und damit weitere Anpassungen zu ermöglichen konnte ich noch nicht testen. Einen älteren Beitrag mit der Vorstellung von Armbian findet ihr hier

Zur Projektseite geht es hier

28. Februar 2022

Kurz notiert: Rust ist in Version 1.59 erschienen. Die spannendste Neuerung ist hierbei aus meiner Sicht die Unterstützung für Inline-Assembly-Instructions. Dabei lassen sich innerhalb von Rust-Quellcodedateien Assembly-Instructions übergeben, die so in das Kompilat übernommen werden können. Dies ist immer dann nötig, wenn bestimmte Spezialbefehle benötigt werden, welche der Compiler nicht standardmäßig ausgibt.

Manuelle Assembler-Programmierung wird bei den meisten Programmen nicht benötigt. Beispiele sind eher vor allem in der Embedded-Programmierung zu finden, wo meist direkt Interrupts konfiguriert werden, die wiederum in vielen Architekturen über spezielle Operationen eingestellt werden können. Aber auch der Einsatz von SIMD benötigt spezielle Befehle. Dies ist besonders für Bibliotheken hilfreich, die Daten parallel verarbeiten.

Klassischerweise können die Assembler-Module in .S-Dateien geschrieben werden, welche dann, ähnlich wie C-Dateien, zu .o-Objektdateien assembliert resp. übersetzt werden. Verschiedene Objektdateien, welche auch aus unterschiedlichen Programmiersprachen stammen können, lassen sich dann zu einem Programm linken. Die Option von Assembler-Sektionen innerhalb einer höheren Programmiersprache vereinfacht den Umgang allerdings deutlich. So bietet auch GNU GCC für C ein spezielles asm-Keyword an, mit dem direkt Assembler-Befehle übergeben werden können. Mehr Informationen diesbezüglich bietet die GCC-Doku.

Das Rust By Example-Handbuch bietet eine eigenen neue Sektion zur Inline Assembly mit Beispielen an. Es lässt sich erkennen, dass es einige Parallelen zum C-Äquivalent gibt, obgleich die Syntax Unterschiede aufweist. Es ist möglich, ähnlich wie bei format-Strings, Zusatzinformationen zu Variablen und Registern zu übergeben. Dabei sollte jedoch bedacht werden, dass für den asm-Code natürlich keine strenge Typsicherheit gelten kann und der Einsatz nur innerhalb von unsafe-Blöcken möglich ist.

Weitere Änderungen in der neuen Rust-Version beziehen sich auf destructuring assignments und const generics-Standards und Verschachtelungen. Die destructuring assignments können bei der Lesbarkeit helfen, da mehrere Werte auf der rechten Seite mehreren Variablen auf der linken Seite in einem Statement zugewiesen werden können. Ähnliches ist man auch schon im Python mit dem Unpacking gewohnt.

Alles in allem aus meiner Sicht ein sehr spannender Release, der besonders die Entwickler von Bibliotheken freuen wird, da weitere Optimierungsmöglichkeiten komfortabler zur Verfügung stehen.

Mo, 28. Februar 2022, Christian Imhorst

Ausser GNU/Linux gibt es noch weitere freie Betriebssysteme. Eins davon ist FreeDOS, das in diesen Tagen in Version 1.3 erschienen ist.

Blinky ist weder Fisch noch Wal und das etwas komisch guckende Maskottchen von FreeDOS. © FreeDOS Project (CC-BY-2.5)

Doch was ist DOS überhaupt und warum ist es heute noch von Bedeutung? Die Wurzeln von DOS liegen zwar in Betriebssystemen der Mainframes der 1960er Jahre. Es erreichte allerdings einen grösseren Bekanntheitsgrad, als in den 1980er Jahren die damals noch junge Firma Microsoft QDOS, Kurzform für „Quick and Dirty Operating System“, von Tim Patterson kaufte und daraus MS-DOS machte. MS-DOS wurde schliesslich mit den damals Massenmarkt tauglichen IBM-PCs ausgeliefert.


Im April 1994 erschien mit MS-DOS 6.22 die letzte eigenständige Version für PCs. Zu der Zeit war es das dominierende Betriebssystem für Einzelplatzrechner. Noch im selben Jahr hatte Jim Hall, damals Physik-Student an der Universität von Wisconsin, FreeDOS ins Leben gerufen, das heute aktiv, wenn auch langsam, als eine freie und kompatible Alternative zu MS-DOS unter der GPL 2.0 Lizenz entwickelt wird. Interessant dazu sind auch Jims Vorträge auf der Kielux zu Geschichte und Anspruch von FreeDOS, zeitgemäße Erweiterungen und Anpassungen an DOS vorzunehmen und dabei trotzdem mit MS-DOS kompatibel zu bleiben. Er hatte damals schon GNU/Linux installiert und war von den GNU-Programmen begeistert, weshalb er sich fragte: Wenn es eine Gruppe von Entwicklerinnen und Entwicklern schafft, etwas Komplexes wie Unix nachzuprogrammieren, indem sie einfach über das Internet zusammenarbeiten, warum sollte das nicht mit einem vergleichsweise simplen Betriebssystem wie DOS funktionieren?

Dass es funktioniert hat, sieht man in diesen Tagen, denn zum ersten Mal seit sechs Jahren hat FreeDOS ein grösseres Update erhalten, das es von Version 1.2 auf 1.3 bringt. Wer FreeDOS einmal virtuell zum Beispiel mit QEMU oder auf dem alten PC, der noch auf dem Dachboden verstaubt, ausprobieren möchte, benötigen eine Festplatte mit 20 MB Speicher für die Installation eines „einfachen DOS-Systems“ oder etwa 275 MB für eine „vollständige Installation mit Anwendungen und Spielen“ darunter auch viele GNU-Anwendungen, aber auch FreeDOOM und Vim. Weitere optionale Pakete befinden sich auf einer BonusCD, die man noch zusätzlich von der Webseite des Projekts herunterladen kann.

Doch wozu braucht man noch so alte Betriebssysteme? Mit der Informatik, besonders mit Software ist es Menschen gelungen, Mittel und Methoden zur Formalisierung und Automatisierung geistiger Tätigkeiten zu erzeugen. Programme, die in der DOS-Ära Handlungssysteme ersetzt oder modifiziert haben, können als Artefakte durch FreeDOS noch heute weiter verwendet werden. So trägt FreeDOS zum Erhalt eines technischen Teils der Menschheitsgeschichte bei, indem es dafür sorgt, dass Hard- oder Software, die mit einem modernen Betriebssystem nicht mehr funktioniert, immer noch lauffähig ist. Niemand braucht heute mehr VisiCalc, das erste Tabellenkalkulationsprogramm für PCs. Aber zu sehen, wie es einmal funktioniert hat, hält unsere Computergeschichte lebendig.

Ausser extreme Puristinnen oder Autoren von Fantasy-Romanen wie George R. R. Martin würde heute vermutlich niemand mit einem DOS arbeiten wollen, um Dokumente zu schreiben, Tabellen zu erstellen oder E-Mails zu bearbeiten. Dafür ist FreeDOS auch nicht gedacht. FreeDOS soll kein Paralleluniversum sein, in dem Microsoft Windows nie erfunden und weiter auf MS-DOS gesetzt hätte. FreeDOS hat aber genug Anhängerinnen und Anhänger, von der Spielerin klassischer Spiele wie Doom, Descent oder Duke Nukem über den Programmierer für veraltete Schnittstellen und Hardware, bis zur Elektroingenieurin, die sich mit Embedded-Plattformen beschäftigt, um eine Nische auszufüllen. Nicht zu vergessen wissenschaftliche Bibliotheken und Archive, die ihren Nutzerinnen und Nutzern Information von Disketten und CDs mit alten proprietären Programmen und Datenformaten bereitstellen müssen, von denen der Hersteller heute nicht mehr existiert oder das Produkt aufgeben hat. Aber auch kleine Unternehmen brauchen die Steuerung alter Fräsen in der Holzwerkstatt oder das Kassensystem nicht auszutauschen. Man kann sich im Unternehmens- oder im privaten Bereich den Upgrade-Stress sparen und diese Systeme mit einem freien Betriebssystem wie FreeDOS weiter betreiben. In diesem Bereich hat FreeDOS vielleicht eine Zukunft, um dorthin zu gehen, wo noch kein DOS zuvor gewesen ist.