Category: Entwicklung

JIT-Kompilierung einer Stack-Maschine mit SLJIT: Eine Geschichte der Optimierung

2025-09-19

Dieser Beitrag beschreibt die Erfahrung des Autors bei der Implementierung eines JIT-Compilers für seine stapelbasierte uxn-Virtual Machine mit SLJIT. Erste Versuche führten aufgrund der häufigen dynamischen Sprünge in uxn nur zu geringen Performance-Verbesserungen. Durch verschiedene Optimierungen – darunter verbesserte Aufrufkonventionen, Stack-Caching und Registerallokationsstrategien – wurde jedoch eine Beschleunigung um 30–46 % erreicht. Der Artikel dokumentiert detailliert den Optimierungsprozess, die aufgetretenen Herausforderungen und Debugging-Techniken und bietet wertvolle Einblicke für alle, die sich für JIT-Kompilierung und die Optimierung stapelbasierter Virtual Machines interessieren.

Entwicklung Stack-Maschine

Deno kämpft gegen Oracles JavaScript-Markenrecht: Entscheidende Entdeckungsphase

2025-09-19
Deno kämpft gegen Oracles JavaScript-Markenrecht: Entscheidende Entdeckungsphase

Deno, eine JavaScript-Laufzeitumgebung, kämpft gegen Oracle um das Warenzeichen "JavaScript". Nach Einreichung einer Löschungsantrag nach einem breit unterzeichneten offenen Brief, haben sie die entscheidende Entdeckungsphase erreicht. Angesichts eines kostspieligen Rechtsstreits hat Deno eine GoFundMe-Kampagne gestartet, um professionelle Umfragen, Sachverständige und rechtliche Einreichungen zu finanzieren, um zu beweisen, dass "JavaScript" ein allgemeiner Begriff und keine Marke von Oracle ist. Das Ergebnis wird bestimmen, ob Warenzeichen verwendet werden können, um die Eigentumsrechte an allgemeinen Begriffen zu beanspruchen, und wird sich auf die Zukunft der Open-Source-Entwicklung auswirken.

Entwicklung Warenzeichen

Integrierter Browser in iTerm2: Terminal trifft Web

2025-09-19

iTerm2 verfügt jetzt über einen integrierten Webbrowser, der die Webnavigation nahtlos in die bestehende Fenster-, Tab- und geteilte Fensterarchitektur integriert. Benutzer können gleichzeitig im Terminal arbeiten und im Web browsen, alles in derselben Oberfläche. Es werden verschiedene Tastenkombinationen unterstützt, z. B. Cmd+Klick zum Öffnen von Links in neuen Tabs und Cmd+Shift+Klick zum Öffnen von Links in neuen vertikalen geteilten Fenstern. Die Integration von KI-Chats ermöglicht das Zusammenfassen, Analysieren oder Stellen von Fragen zur aktuellen Seite. Datenschutzfunktionen umfassen den Inkognito-Modus, das Blockieren von Popups und das Blockieren von Werbung. Obwohl es nicht als primärer Browser gedacht ist, ist es ein leistungsstarkes Werkzeug für integrierte Terminal- und Web-Workflows.

Entwicklung integrierter Browser

Entkopplung von Zeitallokation und Kapazitätsallokation: Der Schlüssel zu höherer Teameffizienz

2025-09-19
Entkopplung von Zeitallokation und Kapazitätsallokation: Der Schlüssel zu höherer Teameffizienz

Dieser Artikel beleuchtet Missverständnisse bezüglich der Kapazitätsallokation in Teams. Viele Unternehmen setzen Zeitallokation und Kapazitätsallokation gleich, wobei systemische Faktoren, die die Teamfähigkeit beeinflussen, außer Acht gelassen werden. Der Autor betont, dass Kapazität nicht nur die Summe der geleisteten Stunden ist, sondern Teamfähigkeiten, Tools, Prozesse usw. umfasst. Die alleinige Fokussierung auf Zeitallokation bei Vernachlässigung der Systemoptimierung führt zu Ineffizienz. Der Autor empfiehlt, zwischen „Zeitallokation“ (wo das Team seine Stunden investiert) und „Kapazitätsallokation“ (die tatsächliche Fähigkeit des Teams, Ergebnisse zu liefern) zu unterscheiden und verschiedene störende Faktoren zu berücksichtigen, um die Teameffizienz zu steigern.

Entwicklung Kapazitätsallokation

LLaMA-Factory: Ein einheitliches Framework für das effiziente Feintuning von über 100 LLMs

2025-09-19
LLaMA-Factory: Ein einheitliches Framework für das effiziente Feintuning von über 100 LLMs

LLaMA-Factory ist ein Open-Source-Framework, das das effiziente Feintuning von über 100 großen Sprachmodellen (LLMs) ermöglicht, darunter LLaMA, LLaVA und Mistral. Es integriert verschiedene Feintuning-Methoden (wie LoRA, QLoRA und OFT), bietet skalierbare Ressourcen und fortschrittliche Algorithmen und deckt ein breites Spektrum an Aufgaben ab, wie z. B. mehrstufige Dialoge und Bildverständnis. LLaMA-Factory unterstützt auch verschiedene Inferenzbeschleunigungstechniken und bietet eine benutzerfreundliche Oberfläche und API. Es wird ständig aktualisiert und unterstützt die neuesten Modelle und Techniken, um Entwicklern ein praktisches und effizientes Werkzeug für das Feintuning von LLMs zu bieten.

Entwicklung

Rust für Linux: Neuer "Untrusted"-Typ stärkt die Kernelsicherheit

2025-09-19

Der Linux-Kernel ist Sicherheitsbedrohungen aus verschiedenen nicht vertrauenswürdigen Datenquellen ausgesetzt, darunter der Benutzerraum, Netzwerke und Wechselspeicher. Zur Verbesserung der Sicherheit schlägt Benno Lossin eine neue Rust-API vor, die den Typ `Untrusted` einführt, um Daten aus nicht vertrauenswürdigen Quellen zu kennzeichnen. Dies nutzt das Rust-Typsystem, um versehentliche Entscheidungen basierend auf nicht validierten Daten aus dem Benutzerraum zu verhindern und potenzielle Angriffe zu mindern. Die API befindet sich in der vierten Überarbeitung und umfasst Dienstprogramme und Unterstützung für gängige Datenstrukturen wie Slices und Vektoren. Die zukünftige Verwendung in `ioctl()`-Funktionen von Treibern verspricht eine erhöhte Kernelsicherheit. Weitere Diskussionen werden auf der kommenden Kangrejos-Konferenz zum Rust-für-Linux-Projekt erwartet.

Entwicklung Benutzerraumdaten

Entsperren von macOS FileVault per SSH

2025-09-19

Wenn FileVault in macOS aktiviert ist, ist das Datenvolume während und nach dem Start gesperrt und nicht verfügbar, bis eine Authentifizierung mit einem Passwort erfolgt ist. Da die Konfigurationsdateien von OpenSSH auf dem Datenvolume gespeichert sind, sind die üblichen Authentifizierungsmethoden und der Shell-Zugriff während dieser Zeit nicht verfügbar. Wenn jedoch die Remote-Anmeldung aktiviert ist, ist es möglich, auch in dieser Situation eine Passwortauthenticierung mit SSH durchzuführen. Dies kann verwendet werden, um das Datenvolume remote über das Netzwerk zu entsperren. Dies erlaubt jedoch nicht sofort eine SSH-Sitzung. Stattdessen trennt macOS SSH kurz, sobald das Datenvolume mit dieser Methode entsperrt wurde, während es das Datenvolume einbindet und die restlichen davon abhängigen Dienste startet. Danach sind SSH (und andere aktivierte Dienste) voll verfügbar. Die Möglichkeit, das Datenvolume über SSH zu entsperren, erschien in macOS 26 Tahoe.

Entwicklung

YAML-Hölle entkommen: KSON, eine für Menschen konzipierte Konfigurationssprache

2025-09-18
YAML-Hölle entkommen: KSON, eine für Menschen konzipierte Konfigurationssprache

Müde von den endlosen Kopfschmerzen mit YAML-Konfigurationsdateien? Dieser Artikel erzählt die Geschichte eines Programmierers, der von der süßen Falle von YAML in einen schmerzhaften Abgrund stürzt, und stellt KSON vor – ein Open-Source-Projekt, das sich der Verbesserung der Konfigurationserfahrung widmet. KSON ist mit JSON und YAML kompatibel und fügt viele benutzerfreundliche Funktionen hinzu, wie z. B. Toleranz gegenüber Einrückungsfehlern und eine robuste Unterstützung von Code-Editoren, mit dem Ziel, die Konfiguration zu einer Freude und nicht zu einem Alptraum zu machen.

Entwicklung

Geizhals spendet 10.000 USD zur Sicherung der Zukunft von Perl 5

2025-09-18
Geizhals spendet 10.000 USD zur Sicherung der Zukunft von Perl 5

Geizhals Preisvergleich, eine 1997 gegründete deutsche Preisvergleichswebsite, hat 10.000 USD an die Perl and Raku Foundation gespendet, um den Perl 5 Core Maintenance Fund zu unterstützen. Da Geizhals von Anfang an auf Perl aufbaut, unterstreicht die Spende das Engagement für Open Source und die langfristige Stabilität von Perl. Der Fonds dient der Behebung kritischer Fehler und stellt sicher, dass Perl für unzählige Nutzer und Organisationen stabil und sicher bleibt. Diese großzügige Spende unterstreicht die wichtige Rolle der Community-Unterstützung bei der Aufrechterhaltung der essentiellen Open-Source-Infrastruktur.

Entwicklung

KI-gestützte Programmierung: Die richtige Arbeitsgrößeneinheit meistern

2025-09-18

Effizientes KI-gestütztes Programmieren besteht nicht nur aus intelligenten Modellen, sondern auch aus der sorgfältigen Verwaltung von Arbeitseinheiten. Der Autor argumentiert, dass die Zerlegung von Aufgaben in Einheiten der richtigen Größe entscheidend ist. Zu kleine Einheiten beeinträchtigen die Effizienz, zu große Einheiten führen durch Kontextverlust zu Fehlerakkumulation. Die ideale Einheit sollte einen klaren Geschäftswert haben, wie z. B. User Stories, die eine menschliche Überprüfung und Fehlerkorrektur ermöglichen und die Akkumulation von KI-Fehlern minimieren. Das StoryMachine-Projekt zielt darauf ab, effizientere Arbeitseinheiten zu definieren, um die Effizienz und Genauigkeit der KI-gestützten Programmierung zu verbessern und letztendlich die KI-Entwicklung weniger riskant und einfacher zu gestalten.

Entwicklung

KDE Plasma: Ein überraschend angenehmes Linux-Desktop-Erlebnis

2025-09-18

Der Autor hat kürzlich die Desktop-Umgebung seines Gaming-Rechners auf KDE Plasma umgestellt, ursprünglich um seiner Frau die Benutzung zu erleichtern. Er war jedoch positiv überrascht von den umfassenden Funktionen und der beeindruckenden Geschwindigkeit. Das KDE Plasma Netzwerk-Applet bietet umfangreiche Netzwerkinformationen; das integrierte Screenshot-Tool ist leistungsstark; und die Fensterregeln in den Systemeinstellungen ermöglichen eine weitreichende Anpassung von Anwendungsfenstern. Darüber hinaus bietet KDE Plasma viele vorinstallierte Tools, wie z. B. die Konfiguration von Flatpak-Berechtigungen, die Anzeige von Hardwareinformationen und die Verhinderung des Ruhezustands – Funktionen, die unter Windows und macOS normalerweise separate Softwareinstallationen erfordern. Obwohl er anfangs kleinere Probleme hatte, empfand der Autor KDE Plasma als sehr zufriedenstellende Erfahrung und bezeichnet es als die beste Linux-Desktop-Umgebung, die er seit Jahren benutzt.

Fernzugriff-Sleep verhindern: Ein einfacher Trick mit systemd-inhibit

2025-09-18
Fernzugriff-Sleep verhindern: Ein einfacher Trick mit systemd-inhibit

Genervt davon, dass Fernsitzungen durch den Ruhezustand Ihres Computers unterbrochen werden? Dieser Artikel präsentiert eine clevere Lösung mit dem Befehl `systemd-inhibit` und Bash-Aliasen. Zwei einfache Befehle, `block` und `unblock`, werden erstellt. `block` startet einen Hintergrundprozess, der den Ruhezustand verhindert, während `unblock` diesen Prozess beendet und den Ruhezustand erlaubt. Keine komplexe Konfiguration erforderlich; fügen Sie einfach zwei Zeilen zu Ihrer `.bashrc` oder `.zshrc` hinzu, um dieses häufige Problem zu lösen und Ihren Workflow zu verbessern.

Entwicklung

Schnelle Fourier-Transformationen (FFT) erklärt: Der Cooley-Tukey-Algorithmus

2025-09-18

Dieser Beitrag befasst sich eingehend mit Algorithmen der schnellen Fourier-Transformation (FFT), insbesondere mit dem Cooley-Tukey-Algorithmus. Zunächst wird die diskrete Fourier-Transformation (DFT) definiert und deren naive Zeitkomplexität von O(n^2) hervorgehoben. Der Autor leitet dann den Cooley-Tukey-Algorithmus detailliert her, der die Komplexität reduziert, indem er die DFT in kleinere DFTs zerlegt und so für Eingaben der Länge 2^n eine Komplexität von O(n log n) erreicht. Eine interaktive Visualisierung demonstriert die Funktionsweise des Algorithmus. Der Beitrag korrigiert auch die häufige Fehlanwendung von „FFT“ als Synonym für „DFT“ und stellt klar, dass FFT sich auf den Algorithmus und nicht auf die Transformation selbst bezieht.

Entwicklung

C-Programmierpraktiken: Reinheit, Geschwindigkeit und Korrektheit

2025-09-18

Dieses Dokument enthält Anmerkungen zu C-Programmierpraktiken, die den Codierungsstil, die Benennungskonventionen für Funktionen und Variablen, die Formatierung, Kommentare und clevere C-Tricks wie Bit-Zählung und Loop-Unrolling abdecken. Der Autor betont das Streben nach Code-Reinheit, Geschwindigkeit und Korrektheit und gibt Einblicke in die effiziente Verwendung von Header-Dateien, Compilern und die Überarbeitung gängiger Programmierparadigmen wie die Verwendung von GOTO-Anweisungen. Ziel ist es, die Qualität und Effizienz der C-Programmierung zu verbessern.

Entwicklung

Abschied von CSS-Klassen: Bau einer Website ohne Klassen

2025-09-18
Abschied von CSS-Klassen: Bau einer Website ohne Klassen

Nach einem vorherigen Beitrag, der sich für die Verwendung von integrierten Browser-Elementen einsetzte, setzte der Autor diese Philosophie in die Praxis um, indem er alle CSS-Klassen von seiner persönlichen Website vollständig entfernte. Er experimentierte mit detaillierteren Standardstilen, verschachtelten Selektoren, modernen CSS-Funktionen wie `:where()` und `:has()` sowie benutzerdefinierten Elementen und Attributen als Ersatz. Obwohl dies eine sorgfältigere Planung erfordert und nicht für alle Projekte geeignet ist, brachte das Experiment den Autor dazu, die Notwendigkeit von CSS-Klassen in Frage zu stellen, und hatte einen nachhaltigen Einfluss auf seine zukünftige Arbeit. Eine kleine Ausnahme wurde für ein Syntax-Highlighting-Plugin gemacht, das Klassen verwendet.

Debugging von Chez Scheme Programmen: Ein umfassender Leitfaden

2025-09-18

Dieser Leitfaden von R. Kent Dybvig bietet einen umfassenden Ansatz zum Debuggen von Chez Scheme Programmen. Er beginnt mit grundlegenden Techniken wie dem Verständnis von Fehlermeldungen, der Vereinfachung von Code und Eingabe und dem strategischen Platzieren von Druckanweisungen. Der Leitfaden geht dann zu fortgeschrittenen Methoden über, einschließlich der Verwendung der Trace-Funktionen und des Debuggers von Chez Scheme, um den Programmzustand zu inspizieren und schwer fassbare Fehler zu identifizieren. Egal, ob Sie Anfänger oder erfahrener Programmierer sind, dieser Leitfaden bietet wertvolle Einblicke für effizientes Debugging.

Entwicklung

pnpm-Update: Verzögerte Abhängigkeitsaktualisierungen und erweiterte Abhängigkeitsuche

2025-09-18
pnpm-Update: Verzögerte Abhängigkeitsaktualisierungen und erweiterte Abhängigkeitsuche

Das neueste pnpm-Release führt zwei wichtige Funktionen ein: Erstens eine neue Einstellung `minimumReleaseAge`, die die Installation neu veröffentlichter Abhängigkeiten verzögert, um Sicherheitsrisiken zu mindern. Zweitens wird die Unterstützung für Finder-Funktionen in `.pnpmfile.cjs` hinzugefügt, die benutzerdefinierte Suchregeln über `pnpm list` oder `pnpm why` mit dem Flag `--find-by` ermöglichen und so eine granularere Suche nach Abhängigkeiten erlauben; z. B. das Finden von Paketen mit einer bestimmten React-Version in ihren `peerDependencies`. Fehlerbehebungen umfassen die Behebung von Veraltungswarnungen in Node.js 24 und die Sicherstellung eines von Null verschiedenen Exit-Codes, wenn ein Prozess mit Strg+C abgebrochen wird.

Entwicklung

Erläuterung der Cookie-Richtlinie der Website

2025-09-18
Erläuterung der Cookie-Richtlinie der Website

Diese Website verwendet zwei Arten von Cookies: essentielle Cookies für grundlegende Website-Funktionen und Kommentar-Cookies, um die Benutzeraktivität über mehrere Sitzungen hinweg zu verfolgen, einschließlich Benutzername, E-Mail-Adresse und URL. Essentielle Cookies speichern die Cookie-Zustimmungs-Einstellungen der Benutzer für 30 Tage; Kommentar-Cookies sind Sitzungs-Cookies, die am Ende der Sitzung ablaufen.

Entwicklung Benutzerverfolgung

Manuelle Dekodierung von GZIP: Ein tiefer Einblick in den Deflate-Algorithmus

2025-09-18

Der Autor versucht, die mit GZIP komprimierte Zeichenkette "TOBEORNOTTOBEORTOBEORNOT" manuell zu dekodieren und bietet damit einen tiefen Einblick in den Deflate-Algorithmus. Der Artikel beschreibt detailliert die GZIP-Datenstruktur, einschließlich magischer Zahlen, Komprimierungsmethoden, Zeitstempel und anderer Felder. Er konzentriert sich auf den Kern der Deflate-Komprimierung – den LZ77-Algorithmus. LZ77 verwendet Zeichen und Kopierbefehle (Länge und Distanz) zur Kodierung und reduziert so die Datengröße effektiv. Durch die manuelle Analyse der komprimierten Daten rekonstruiert der Autor die ursprüngliche Zeichenkette Schritt für Schritt. Fazit: Bit-Kodierung ist effizienter als Byte-Kodierung für die Datenkomprimierung, aber die manuelle Dekodierung ist komplex.

Entwicklung

Bösartige npm-Pakete über kompromittierten GitHub Actions Workflow veröffentlicht

2025-09-18
Bösartige npm-Pakete über kompromittierten GitHub Actions Workflow veröffentlicht

Ein bösartiger GitHub Actions Workflow hat einen npm-Token mit umfassenden Veröffentlichungsrechten aus einem gemeinsam genutzten Repository extrahiert, was zur Veröffentlichung bösartiger Versionen von 20 Paketen führte, darunter das beliebte @ctrl/tinycolor. Obwohl das GitHub-Konto und das Repository des Autors nicht direkt kompromittiert wurden, ermöglichte ein Mitarbeiter mit Administratorzugriff auf ein gemeinsam genutztes Repository den Angriff. Die Angreifer nutzten ein GitHub Actions Secret, das den npm-Token enthielt. Die GitHub- und npm-Sicherheitsteams reagierten schnell und veröffentlichten die bösartigen Pakete wieder. Der Autor veröffentlichte saubere Versionen, um Caches zu leeren. Der Vorfall unterstreicht die Risiken gemeinsam genutzter Repositories und statischer Token und fördert die Umstellung auf npm's Trusted Publishing (OIDC) für verbesserte Sicherheit.

Entwicklung

Blender-Gründer Ton Roosendaal tritt als CEO zurück

2025-09-18

Ton Roosendaal, Gründer und CEO der Open-Source-3D-Software Blender, hat seinen Rücktritt zum 1. Januar 2026 angekündigt. Er wird in den neu gegründeten Aufsichtsrat der Blender Foundation wechseln. Der derzeitige COO, Francesco Siddi, wird die Nachfolge als CEO antreten, zusammen mit neuen Vorstandsmitgliedern: Sergey Sharybin (Leiter Entwicklung), Dalai Felinto (Leiter Produkt) und Fiona Cohen (Leiterin Operations). Roosendaal erklärte, dass sie sich seit 2019 darauf vorbereiten und er Vertrauen in das Team hat, Blender in das nächste Jahrzehnt zu führen.

Entwicklung

Rendezvous Hashing: Ein verteilter Hashing-Algorithmus mit ausgezeichneter Lastverteilung

2025-09-18

Rendezvous Hashing löst das Problem der verteilten Hash-Tabelle, indem es für jeden Schlüssel eine priorisierte Serverliste generiert und den ersten Server auswählt. Im Gegensatz zu konsistentem Hashing bietet es eine bessere Lastverteilung, hat aber eine Suchzeit von O(N). Es ist eine gute Wahl für kleine bis mittelgroße verteilte Caches, aber das Hinzufügen von Servern in größeren Systemen erfordert eine sorgfältige Verwaltung, um die „First-Choice“-Invariante aufrechtzuerhalten. Seine Popularität blieb hinter konsistentem Hashing zurück, möglicherweise aufgrund des Mangels an einem „Killer-App“-Moment, trotz seiner früheren Erfindung und der damit verbundenen Vorteile.

Haupt-Maintainer von libxml2 tritt zurück

2025-09-18
Haupt-Maintainer von libxml2 tritt zurück

Nick Wellnhofer, der Haupt-Maintainer von libxml2, hat seinen Rücktritt angekündigt, wodurch das Projekt weitgehend ohne Wartung ist. Er wird Regressionen in der Version 2.15 bis Ende 2025 beheben. Die Nachricht löste in der Community große Dankbarkeit und Besorgnis aus. Viele Entwickler dankten für die langjährige Wartung von libxml2, und einer bot an, die Wartung zu übernehmen, allerdings mit einigen technischen Fragen, die vom ehemaligen Maintainer geklärt werden müssen.

Entwicklung

arXivLabs: Entwicklung neuer arXiv-Funktionen mit Community-Mitarbeitern

2025-09-18
arXivLabs: Entwicklung neuer arXiv-Funktionen mit Community-Mitarbeitern

arXivLabs ist eine Plattform, die es Entwicklern und Forschern ermöglicht, neue arXiv-Funktionen direkt auf der arXiv-Website zu entwickeln und zu teilen. Diese Initiative steht für Offenheit, Community, Exzellenz und den Schutz der Nutzerdaten und zielt darauf ab, das arXiv-Erlebnis für alle zu verbessern. Haben Sie eine Idee, um arXiv zu verbessern? Machen Sie mit bei arXivLabs!

Entwicklung

Hypervisor-Interna und High-Performance-Fuzzing an einem Tag

2025-09-18

Dieser eintägige Kurs bietet einen Crashkurs über die interne Funktionsweise von Hypervisoren und Techniken zum Schreiben von Hypervisoren für High-Performance-Fuzzing. Er behandelt die Grundlagen hardwareunterstützter Virtualisierungstechnologien wie VMCS/VMCB, Gast-Host-Weltwechsel, EPT/NPT und nützliche Funktionen wie die Ausnahmeannahme zur Virtual-Machine-Introspektion beim Fuzzing. Der Kurs kombiniert Vorlesungen mit praktischen Übungen unter Verwendung der bereitgestellten Materialien und des Quellcodes im Verzeichnis Hypervisor-101-in-Rust/hypervisor.

Entwicklung

Wasm 3.0 veröffentlicht: GC, 64-Bit-Adressraum und mehr

2025-09-18
Wasm 3.0 veröffentlicht: GC, 64-Bit-Adressraum und mehr

Nach drei Jahren Entwicklung ist der WebAssembly (Wasm) 3.0-Standard endlich da! Dieses umfangreiche Update bietet bedeutende neue Funktionen, darunter 64-Bit-Adressräume, die den adressierbaren Speicher auf 16 Exabytes erweitern; Unterstützung für mehrere Speicherinstanzen, wodurch die Handhabung großer Anwendungen und Datensätze verbessert wird; einen Garbage Collection (GC)-Mechanismus, der den Prozess der Kompilierung von Hochsprachen nach Wasm erheblich vereinfacht; typisierte Referenzen für verbesserte Typsicherheit und Effizienz; sowie Tail Calls, Ausnahmebehandlung und verbesserte Vektorinstruktionen. Diese Verbesserungen machen Wasm deutlich besser geeignet für die Kompilierung von Hochsprachen wie Java und OCaml und erweitern damit seinen Anwendungsbereich.

Entwicklung

C# 14s Null-bedingter Zuweisungsoperator: Schluss mit redundanten if-Anweisungen

2025-09-18
C# 14s Null-bedingter Zuweisungsoperator: Schluss mit redundanten if-Anweisungen

C# 14 führt ein bahnbrechendes Feature ein: den null-bedingten Zuweisungsoperator. Dieser löst elegant das seit langem bestehende Problem der NullReferenceExceptions in C#. Früher waren mehrere if-Anweisungen erforderlich, um Nullwerte zu überprüfen; jetzt lassen sich Zuweisungen auf eine einzige Zeile reduzieren, was die Lesbarkeit des Codes deutlich verbessert und die Ausführlichkeit verringert. Beispielsweise ersetzt `config?.Settings?.RetryPolicy = new ExponentialBackoffRetryPolicy();` umständliche if-Überprüfungen. Obwohl der Operator Inkrement-/Dekrementoperatoren nicht unterstützt und übermäßiger Gebrauch vermieden werden sollte, ist er eine wertvolle Erweiterung in C# 14, die es nach der Veröffentlichung von .NET 10 zu erkunden gilt.

ClickHouse-Performanceoptimierung auf Intel Xeon-Prozessoren mit ultrahoher Kernanzahl

2025-09-17
ClickHouse-Performanceoptimierung auf Intel Xeon-Prozessoren mit ultrahoher Kernanzahl

Die neuesten Intel-Prozessoren verfügen über Hunderte von Kernen, was sowohl enorme Chancen als auch Herausforderungen für analytische Datenbanken wie ClickHouse bietet. Ingenieure von Intel Shanghai analysierten systematisch die Leistung von ClickHouse auf Servern mit ultrahoher Kernanzahl und identifizierten und optimierten fünf wichtige Engpässe: Lock Contention, Speicheroptimierung, unzureichender Parallelismus, SIMD-Instruktionen-Nutzung und False Sharing. Durch die Reduzierung der Sperrzeiten, die Verbesserung des Speicherallokators, die Parallelisierung serieller Phasen, den Einsatz intelligenterer SIMD-Algorithmen und die Optimierung des Speicherlayouts verbesserten sie die Skalierbarkeit von ClickHouse auf Systemen mit ultrahoher Kernanzahl erheblich und erzielten bis zu 10-fache Beschleunigungen bei einzelnen Abfragen und eine Verbesserung der geometrischen Mittelwert um 10 %. Diese Arbeit unterstreicht die Notwendigkeit einer vielseitigen Datenbankoptimierung im Zeitalter der ultrahohen Kernanzahl, wobei sowohl algorithmische als auch Speicherlayout-Aspekte berücksichtigt werden müssen.

Entwicklung Ultrahohe Kernanzahl

UUIDv47: Datenbankfreundliche UUIDs mit Sortierung und API-Kompatibilität

2025-09-17
UUIDv47: Datenbankfreundliche UUIDs mit Sortierung und API-Kompatibilität

UUIDv47 ist eine clevere Lösung, die sortierbare UUIDv7 in Datenbanken speichert und gleichzeitig eine UUIDv4-Fassade für APIs bietet. Dies wird erreicht, indem der Zeitstempel von UUIDv7 mit einem Schlüssel-SipHash-2-4-Stream, der mit den Zufallsbits des UUID verknüpft ist, mit XOR maskiert wird. Dies bietet Datenbank-Effizienz und API-Kompatibilität. Die C-Bibliothek ist einfach zu integrieren und bietet eine Schlüsselwiederherstellungsresistenz für erhöhte Sicherheit.

Entwicklung

Algebraische Typen sind nicht beängstigend: Eine einfache Erklärung mit der Mengenlehre

2025-09-17

Dieser Artikel bietet eine klare und verständliche Erklärung algebraischer Typen, unter Verwendung der Perspektive der Mengenlehre, wobei Typen als Mengen von Werten betrachtet werden. Er untersucht Produkttypen (ähnlich wie Strukturen oder Klassen) und Summentypen (wie Option- oder Result-Typen) und vergleicht deren Implementierung in einem Interpreter unter Verwendung algebraischer Typen im Vergleich zu objektorientierten Ansätzen (Vererbung oder Visitor-Pattern). Der Autor argumentiert, dass algebraische Typen eine höhere Prägnanz, Lesbarkeit und Wartbarkeit bieten und unnötige Komplexität vermeiden. Die Schlussfolgerung betont, dass Produkt- und Summentypen grundlegende Möglichkeiten zum Kombinieren von Typen darstellen, die für die meisten Programmieraufgaben ausreichen.

← Previous 1 3 4 5 6 7 8 9 209 210