Jump to content

Wikifunctions:Status-Updates/2024-11-01

From Wikifunctions
This page is a translated version of the page Wikifunctions:Status updates/2024-11-01 and the translation is 100% complete.
Wikifunctions Status-Updates Translate

Abstrakte Wikipedia über Mailingliste Support-Team Abstrakte Wikipedia auf IRC Wikifunctions auf Telegram Wikifunctions auf Mastodon Wikifunctions auf Twitter Wikifunctions auf Facebook Wikifunctions auf Youtube Website von Wikifunctions Translate

Neuschreiben des Back-Ends

Das Team der Abstrakten Wikipedia arbeitet daran, unsere Back-End-Dienste in einer anderen Programmiersprache, wahrscheinlich Rust, neu zu schreiben. Node/JS hat uns gute Dienste geleistet, aber wir sind an einige Grenzen gestoßen, die sich am besten durch den Wechsel zu einem anderen Ökosystem lösen lassen.

Die unmittelbare Arbeit dreht sich um die Frage, wie wir besser mit WebAssembly (WASM) interagieren können. Vor fast genau einem Jahr kündigten wir an, dass wir Python- und JS-Code in WASM aufgrund seiner Sandboxing-Eigenschaften ausführen würden. Seitdem interagieren wir mit WASM über das WebAssembly System Interface (WASI), das WASM-Befehlen selektiven Zugriff auf das zugrunde liegende Betriebssystem ermöglicht.

Obwohl WASI unsere Code-Ausführer sicherer gemacht hat, hat die Verwendung dieses Werkzeugs einige Probleme verursacht. Die Node-Werkzeuge rund um WASI sind nicht besonders umfangreich. Als wir es eingeführt haben, haben wir festgestellt, dass die Verwendung von WASI-Kommandozeilenschnittstellen unsere beste Option ist. Wir haben uns entschieden, diese Schnittstellen in Unterprozessen auszuführen. Die Verwendung von Unterprozessen hat zu Problemen mit der Systemstabilität geführt, die hauptsächlich damit zusammenhängen, dass es unter bestimmten Bedingungen nicht möglich ist, Unterprozesse zu bereinigen.

Das WASI-Ökosystem in Rust ist viel weiter fortgeschritten. Mehrere WASI-Laufzeiten bieten Werkzeuge, die eine feine Kontrolle über die Bindung von WASM-Befehlen an Systemaufrufe bieten. Mit diesen Werkzeugen können wir unsere Nutzung von WASI optimieren. Wir können unsere Code-Ausführer direkt im Rust-Hostprogramm ausführen, Unterprozesse eliminieren und so mehrere Quellen der Systeminstabilität vermeiden. Als zusätzlichen Bonus bedeutet diese Kontrollebene, dass wir auch unser Sandboxing verbessern können – ein Sicherheitsgewinn – und in ferner (oder nicht so ferner?) Zukunft bestimmte Systemaufrufe übernehmen können, um neue Funktionen für unsere Code-Ausführer zu implementieren.

Anstehendes Freiwilligentreffen am 4. November

Nächste Woche, am Montag, 4. November 2024, um 19:30 MEZ, findet unser monatliches Freiwilligentreffen statt. Sofern es nicht viele Fragen gibt, werden wir unserer üblichen Tagesordnung folgen, Neuigkeiten zu den bevorstehenden Plänen und jüngsten Aktivitäten teilen, viel Zeit und Raum für deine Fragen haben und gemeinsam eine Funktion erstellen. Wir freuen uns darauf, dich am Montag zu sehen!

Funktion der Woche: Sprache von Lexem

Die Funktion language of lexeme (Z19295) ist eine einfache Funktion: Sie nimmt ein einzelnes Argument, ein Lexem, und gibt die (natürliche) Sprache des Lexems zurück. Jedes Lexem in Wikidata gehört genau zu einer Sprache. Wenn wir uns beispielsweise das Lexem L610505, “mkpụrụokwu”, ansehen, erfahren wir, dass es sich um ein Wort in der Sprache Igbo handelt.

Wenn wir dementsprechend auf der Funktionsseite für Sprache von Lexem das Lexem “mkpụrụokwu” auswählen, wird uns das Sprachobjekt zurückgegeben und der Sprachcode ig (der für Igbo steht) angezeigt.

Die Funktion hat einen Test, der das Lexem für das englische Nomen “dog” nimmt und das Objekt zurückgibt, das die englische Sprache darstellt.

Es gibt eine Implementierung, eine Komposition: Sie verwendet die Funktion Wert nach Schlüssel, eine grundlegende Funktion für die Arbeit mit Objekten in Wikifunctions. Jedes Lexem besteht aus sieben Schlüsseln, wie auf der Typseite für Lexeme definiert. Um den Wert eines bestimmten Schlüssels zu erhalten, können wir die Funktion Wert nach Schlüssel mit zwei Argumenten verwenden: dem Schlüssel, den wir nachschlagen möchten, und dem Objekt selbst, für das wir die Schlüsselsuche durchführen.

Für die meisten Typen ist es sinnvoll, für jeden Schlüssel eine Funktion zum Zerlegen von Objekten dieses Typs zu haben. Sprache von Lexem ist eine solche Funktion: Sie wählt einfach einen der Schlüssel des Lexem-Objekts aus und gibt diesen zurück.