Category: Entwicklung

HTTP/3: Aktueller Stand – Herausforderungen und Chancen auf dem Weg zur Akzeptanz

2024-12-16
HTTP/3: Aktueller Stand – Herausforderungen und Chancen auf dem Weg zur Akzeptanz

Die HTTP/3-Spezifikationen sind fertiggestellt, warten aber noch auf die endgültige Veröffentlichung. Die Unterstützung auf Serverseite ist überraschend hoch, insbesondere bei Top-Websites. Große Anbieter wie Cloudflare haben HTTP/3 aktiviert, und Browser unterstützen es weitgehend. Allerdings ist die Unterstützung auf Client-Seite, z. B. in curl, noch unvollständig, hauptsächlich aufgrund der verzögerten Entwicklung von QUIC-fähigen TLS-Bibliotheken. Die QUIC-Unterstützung von OpenSSL wurde verschoben, während Alternativen wie BoringSSL und quictls Einschränkungen aufweisen. Obwohl HTTP/3 Geschwindigkeitsverbesserungen verspricht, hängen die tatsächlichen Vorteile von den Netzwerkbedingungen ab. Die breite Akzeptanz hängt von der Veröffentlichung der Spezifikationen und von ausgereiften TLS-Bibliotheken ab.

Entwicklung

Rusts Vec::drain: Nutzung von Drop für Sicherheit

2024-12-16
Rusts Vec::drain: Nutzung von Drop für Sicherheit

Dieser Artikel taucht tief in Rusts Vec::drain Methode und deren Drop Implementierung ein und zeigt, wie Ownership subtile Fehler – sowohl im Speicherbereich als auch anderswo – verhindert. Vec::drain optimiert die Performance, indem es eine mutable Referenz auf den ursprünglichen Vektor behält und nur den ursprünglichen Speicher liest und aktualisiert. Der Schlüssel liegt in der Drop Implementierung der Drain Struktur, die einen DropGuard verwendet, um sicherzustellen, dass selbst wenn der Iterator vorzeitig verworfen wird, die verbleibenden Elemente sicher in den ursprünglichen Vektor zurück verschoben werden, wodurch die Speichersicherheit gewährleistet wird. Der Artikel erklärt detailliert die Implementierungsdetails von Drain und DropGuard und behandelt Sonderfälle wie null-dimensionale Typen und die Herkunft von Zeigern.

Entwicklung

Der neue --shuffle-Modus von GNU Make: Versteckte Bugs in parallelen Builds entdeckt

2024-12-16

Elf Jahre lang plagten schwer reproduzierbare Bugs die parallelen Builds in GNU Make. Angeregt davon, wurde ein neuer `--shuffle`-Modus entwickelt, der die Ziele in Makefiles zufällig neu anordnet und so eine nicht-deterministische Build-Reihenfolge simuliert. Dies enthüllte effektiv versteckte Bugs in über 30 Paketen, darunter gcc, vim und ghc. Jetzt Teil von GNU Make 4.4, ist dieser Modus über `make --shuffle` oder die Umgebungsvariable `GNUMAKEFLAGS=--shuffle` zugänglich. Diese leistungsstarke Funktion hilft Entwicklern, Probleme bei parallelen Builds zu identifizieren und zu lösen und unterstreicht die kontinuierliche Verbesserung von Software-Entwicklungstools.

Googles neuer Load Balancer PReQuaL: Jenseits des CPU-Lastausgleichs

2024-12-16

Google Research präsentierte auf der NSDI 2024 PReQuaL (Probing to Reduce Queuing and Latency), einen neuartigen Load Balancer. Im Gegensatz zum traditionellen CPU-Lastausgleich sondiert PReQuaL aktiv die Serverlatenz und aktiven Anfragen, um Server auszuwählen und so Tail Latency, Fehlerraten und Ressourcenverbrauch bei Systemen wie YouTube drastisch zu reduzieren. Seit über einem Jahr im Einsatz bei YouTube, hat PReQuaL die Systemnutzung deutlich verbessert. Dieser innovative Ansatz stellt die gängige Weisheit in Frage und bietet ein neues Paradigma für Hochleistungs-verteilte Systeme.

Entwicklung Lastausgleich

Eine Reise der Softwareentwicklung in CAD und 3D-Druck: Ein überentwickelter Webcam-Heber

2024-12-16

Ein erfahrener Softwareentwickler, müde von der virtuellen Welt der Programmierung, sehnte sich danach, in der realen Welt zu erschaffen. Er erwarb einen Bambu Lab X1C 3D-Drucker und beherrschte schnell den 3D-Druck. Anschließend begann er, die CAD-Software Fusion 360 zu erlernen und stellte überrascht fest, dass deren Constraint-Konzepte den iOS-UI-Constraints ähneln und das parametrische CAD-Design der funktionalen Programmierung entspricht. Sein erstes Projekt: ein überentwickelter Webcam-Heber, um das Problem zu lösen, dass die Webcam seinen Bildschirm verdeckt. Dieses Projekt bescherte ihm nicht nur die Freude am 3D-Druck und am CAD-Design, sondern auch ein tiefes Verständnis für Fertigung, Materialien und andere Details, die in der Entwurfsphase berücksichtigt werden müssen.

Entwicklung 3D-Druck CAD-Design

Adélie Linux 1.0-BETA6 veröffentlicht: Verbesserte Kompatibilität und erweiterte Funktionen

2024-12-16
Adélie Linux 1.0-BETA6 veröffentlicht: Verbesserte Kompatibilität und erweiterte Funktionen

Adélie Linux hat die Version 1.0-BETA6 veröffentlicht, die 32-Bit- und 64-Bit-ARM-, POWER- und x86-Architekturen unterstützt und somit Smartphones, Spielekonsolen und Supercomputer abdeckt. Dieses Release enthält über 35 neue Pakete, Updates für GCC 13, LLVM 18, Rust 1.80 und den Linux-Kernel 6.6 LTS sowie verbesserte GRUB- und Wayland-Unterstützung. Viele Bugs wurden behoben und die Benutzererfahrung verbessert. Obwohl einige bekannte Probleme bestehen bleiben, arbeitet das Adélie-Team aktiv an Lösungen und begrüßt Fehlerberichte und Feedback.

Entwicklung Linux-Distribution

Cyphernetes: Automatisierung des Managements von Cloud-nativen Kubernetes-Clustern

2024-12-16

Cyphernetes ist ein Projekt, das das Management von Cloud-nativen Kubernetes-Clustern automatisiert. Es reduziert die Komplexität des Betriebs erheblich, indem es die Prozesse für Bereitstellung, Upgrades und Verwaltung vereinfacht. Stellen Sie sich vor, Sie können Ihren Cluster mühelos skalieren, um Verkehrsspitzen zu bewältigen, Fehler automatisch beheben und die Service-Stabilität gewährleisten – alles ohne manuelle Eingriffe. Cyphernetes fungiert als erfahrener Kubernetes-Clusteradministrator, der Ihre Anwendungen rund um die Uhr schützt und es Ihnen ermöglicht, sich auf Innovationen zu konzentrieren.

Dillo-Browser: 25 Jahre Geschichte, eine Geschichte der Wiederauferstehung

2024-12-16

Der Dillo-Webbrowser, geboren 1999, hat 25 Jahre Entwicklung überstanden. Er ist mehrmals ins Stocken geraten, hat aber dennoch überlebt. Zunächst von Jorge Arellano Cid geleitet, durchlief er Hauptphasen mit GTK und FLTK, wobei sich die Hauptentwickler wechselten und das Projekt Höhen und Tiefen erlebte. 2024 übernahm Rodrigo Arias Mallo das Projekt und veröffentlichte mit Hilfe der Community Version 3.1.1, wodurch dieser Veteran-Browser wieder ins Rampenlicht rückte. Dillos Geschichte ist ein Beispiel für den Open-Source-Geist und eine legendäre Geschichte von technologischem Erbe und Innovation.

Entwicklung Open-Source-Browser

Hyperbola GNU/Linux-libre: Eine leichtgewichtige Distribution mit Fokus auf Freiheit und langfristigem Support

2024-12-15

Hyperbola GNU/Linux-libre ist ein community-getriebenes Betriebssystem-Projekt, das eine vollständig freie, stabile, sichere, einfache und leichtgewichtige Distribution mit langfristigem Support (LTS) anstrebt. Es nutzt das Paketmanagement von Arch Linux und Sicherheitspatches von Debian und folgt den GNU Free System Distribution Guidelines. Hyperbola unterstützt die Architekturen i686 und x86_64 und plant die Veröffentlichung eines BSD-basierten Systems, HyperbolaBSD. Aktuelle Neuigkeiten beinhalten die fortgesetzte Unterstützung von 32-Bit-Systemen, die Einstellung der Verwendung von Debian-Patches ab Version 12 und Bedenken hinsichtlich der Erklärung der Free Software Foundation zum maschinellen Lernen.

GitHub-Projektkarte: Visualisierung von über 400.000 Projekten

2024-12-15
GitHub-Projektkarte: Visualisierung von über 400.000 Projekten

Der Entwickler Anvaka hat eine interaktive Karte erstellt, die über 400.000 GitHub-Projekte mithilfe öffentlich zugänglicher Daten visualisiert. Das Projekt verwendet die Jaccard-Ähnlichkeit, um die Beziehungen zwischen den Projekten zu berechnen, und den Leiden-Algorithmus für das Clustering. Das Ergebnis ist eine visuell beeindruckende Darstellung des GitHub-Ökosystems, die es Benutzern ermöglicht, nach Projekten zu suchen und die Verbindungen zwischen ihnen zu erkunden und so deren Komplexität und Reichhaltigkeit aufzuzeigen.

Entwicklung Projektbeziehungen

Vercel veröffentlicht ƒun: Eine lokale Serverless-Funktionslaufzeitumgebung

2024-12-15
Vercel veröffentlicht ƒun: Eine lokale Serverless-Funktionslaufzeitumgebung

Vercel hat ƒun veröffentlicht, eine lokale Laufzeitumgebung für die Entwicklung von Serverless-Funktionen, die es Entwicklern ermöglicht, die AWS Lambda-Umgebung lokal zu emulieren. ƒun unterstützt verschiedene Laufzeitumgebungen wie Node.js und Python und ermöglicht so schnelles Testen und Debuggen von Serverless-Funktionen ohne Cloud-Deployment. Obwohl ƒun eine möglichst genaue Simulation der echten Lambda-Umgebung anstrebt, gibt es einige wichtige Unterschiede, insbesondere bei der Prozess-Sandboxing und Benutzerberechtigungen.

Bilder per Drag & Drop in Bevy 0.15 im Web

2024-12-15

Dieser Beitrag zeigt, wie man native Web-APIs über WASM mit Bevy 0.15 integriert, um Drag-and-Drop-Funktionalität für Bilder in einem Webbrowser zu ermöglichen. Es werden wasm-bindgen, gloo und bevy_channel_trigger verwendet, um DOM-Ereignisse in Rust zu verarbeiten, Dateidaten zu extrahieren und an die Bevy-Engine zur Bildlade- und Renderverarbeitung weiterzuleiten. Der Prozess ähnelt der JavaScript-Implementierung, nutzt aber die Fähigkeiten von Rust und adressiert Fehlerbehandlung und Speicherlecks von Event-Listenern. Das Ergebnis ist eine Bevy-Webanwendung, die abgelegte PNG-Bilder laden und anzeigen kann.

Entwicklung Webentwicklung

Programmierer-Fokusanzeige: Die Geburt von FlowLight

2024-12-15

Inspiriert von einer Forschungsarbeit über die Auswirkungen von Arbeitsunterbrechungen, hat der Programmierer Shae Erisson ein DIY-System namens FlowLight entwickelt, um anzuzeigen, ob ein Programmierer sich in einem konzentrierten „Flow“-Zustand befindet. Das System überwacht die Leerlaufzeit im Emacs-Editor; wenn der Programmierer für einen Zeitraum inaktiv ist, ändert die LED eines Adafruit MagTag-Boards die Farbe (grün für Leerlauf, rot für beschäftigt). Erisson hat auch einen HTTP-Server in CircuitPython geschrieben, um die LED-Farbe und den Status fernzusteuern. Obwohl das System noch verbessert werden kann, z. B. durch genauere Überwachung der Leerlaufzeit und eine ansprechendere Anzeige, hilft es Programmierern effektiv dabei, Unterbrechungen zu vermeiden und die Produktivität zu steigern.

Entwicklung Programmierer Fokus Flow

WASM-Programm umgeht die node:wasi-Dateisystem-Sandbox

2024-12-15
WASM-Programm umgeht die node:wasi-Dateisystem-Sandbox

Dieses Projekt demonstriert einen Proof-of-Concept, der zeigt, wie ein WASM-Programm die Einschränkung des preopens-Verzeichnisses in node:wasi umgehen kann, um auf Dateien außerhalb der Sandbox zuzugreifen. Normalerweise ist der Zugriff von WASM-Programmen auf vorab geöffnete Verzeichnisse beschränkt. Durch geschickte Verwendung von symbolischen Links zum Ersetzen von Dateien zu einem genauen Zeitpunkt und die Ausführung eines externen Prozesses kann diese Einschränkung jedoch umgangen werden. Dies ist keine praktische Sicherheitslücke in node:wasi, sondern eher ein potenzieller Grenzfall. Das Projekt hebt hervor, dass man sich nicht darauf verlassen sollte, dass node:wasi bösartigen Code vollständig daran hindert, auf externe Dateien zuzugreifen.

Entwicklung

MacOS GPU-Optimierung: Ressourcenverschwendung für Geschwindigkeit

2024-12-15

Anukaris Entwickler stieß bei der Optimierung der GPU-Leistung unter MacOS auf einen Engpass. Aufgrund der eingeschränkten Systemsteuerung über die GPU-Leistung zeigte der Mechanismus zur Regulierung der GPU-Leistung von Apple im Anwendungsfall von Anukari eine schlechte Leistung, was zu Audio-Glitches führte. Der Entwickler implementierte eine Problemumgehung: Er widmete einen GPU-Threadgroup-Warp nutzlosen Berechnungen, um das System zu „täuschen“ und die GPU-Taktfrequenz zu erhöhen, wodurch die Audiolatenz deutlich reduziert und die Leistung verbessert wurde. Obwohl grob, erwies sich diese Methode als effektiv bei der Lösung von Leistungsproblemen unter MacOS. Die Leistungsverbesserungen variierten jedoch erheblich zwischen verschiedenen DAWs (Ableton und GarageBand), was eine weitere Optimierung erfordert.

Werden große Sprachmodelle das Programmieren beenden?

2024-12-15

Die jüngsten Fortschritte bei großen Sprachmodellen (LLMs) haben eine Debatte über die Obsoleszenz des Programmierens ausgelöst. Dieser Artikel argumentiert gegen diese zu optimistische Sichtweise. Mit dem Fokus auf die algorithmische Komplexität der Programmsynthese zeigt der Autor, dass die Erzeugung korrekten Codes ein PSPACE-vollständiges Problem ist, was bedeutet, dass selbst mittelgroße Eingaben exponentielle Zeit benötigen können. Obwohl LLMs Programmierer unterstützen und die Effizienz steigern können, verhindern ihre inhärenten Einschränkungen, dass sie Programmierer vollständig ersetzen. Der Kern des Programmierens bleibt die Problemlösung und das Systemdesign, was menschlichen Einfallsreichtum und Kreativität erfordert.

Optimistischer Computing: Ein Weg zu besserer Software

2024-12-15

Dieser Essay untersucht das Konzept des "Optimistischen Computing", nicht als blinden Optimismus, sondern als Konvergenz mehrerer leistungsstarker Ideen: Einfachheit und Benutzerfreundlichkeit ("Boot to Kill"), Local-First-Prinzipien und Benutzerbefähigung. Der Autor argumentiert, dass durch die Begrenzung von Abhängigkeiten, die Vereinfachung von Arbeitsabläufen, die Schaffung einer nahtlosen "funktioniert einfach"-Erfahrung und die Gewährung mehr Kontrolle an die Benutzer, wir zuverlässigere, sicherere und langlebigere Software erstellen können. Diese Philosophie gilt sowohl für einzelne Benutzer als auch für die Entwicklung von Unternehmenssoftware und zielt letztendlich auf eine digitale Welt ab, die die Privatsphäre und das Eigentum der Benutzerdaten respektiert.

Spark vs. DuckDB vs. Polars: Leistungsvergleich für kleine und mittlere Workloads

2024-12-15
Spark vs. DuckDB vs. Polars: Leistungsvergleich für kleine und mittlere Workloads

Dieser Artikel vergleicht die Datenverarbeitungs-Engines Spark, DuckDB und Polars und bewertet deren Leistung, Kosten und Entwicklungsaufwand für Datensätze von 10 GB und 100 GB. Die Ergebnisse zeigen, dass Spark für große Datensätze und ETL-Aufgaben aufgrund seiner verteilten Rechenleistung und seines ausgereiften Ökosystems weiterhin dominant ist. DuckDB und Polars zeichnen sich bei interaktiven Abfragen und der Datenexploration kleinerer Datensätze aus. Der Autor empfiehlt einen strategischen Mix-and-Match-Ansatz: Spark für ETL, DuckDB für interaktive Abfragen und Polars für Nischen-Szenarien. Die Wahl der Engine sollte an die spezifischen Bedürfnisse angepasst werden.

Schnelle LLM-Inferenz von Grund auf neu

2024-12-15

Dieser Artikel beschreibt den Weg des Autors beim Bau einer LLM-Inferenz-Engine von Grund auf mit C++ und CUDA, ohne auf Bibliotheken zurückzugreifen. Der Prozess ermöglichte einen tiefen Einblick in den gesamten Stack der LLM-Inferenz, von CUDA-Kernen bis zur Modellarchitektur, und zeigte, wie Optimierungen die Inferenzgeschwindigkeit beeinflussen. Das Ziel war es, ein Programm zu erstellen, das die Gewichte gängiger Open-Source-Modelle laden und eine Single-Batch-Inferenz auf einem einzelnen CPU+GPU-Server durchführen kann, wobei der Token-Durchsatz iterativ verbessert wird, um llama.cpp zu übertreffen. Der Artikel beschreibt detailliert die Optimierungsschritte auf CPU und GPU, darunter Multithreading, Gewichtsquantisierung, SIMD, Kernel-Fusion und KV-Cache-Quantisierung, und analysiert Engpässe und Herausforderungen. Das Endergebnis erreicht eine nahezu state-of-the-art Leistung für lokale LLM-Inferenz.

Entwicklung LLM-Inferenz

Wegwerfkode statt Design-Dokumente bevorzugen: Eine effizientere Softwareentwicklungsmethode

2024-12-15
Wegwerfkode statt Design-Dokumente bevorzugen: Eine effizientere Softwareentwicklungsmethode

In der Softwareentwicklung ist die traditionelle Methode, zuerst ein Design-Dokument zu erstellen und dann schrittweise zu entwickeln, nicht immer effizient. Der Autor Doug Turnbull schlägt eine "Coding-Binge"-Methode vor: Ein Prototyp wird schnell mit einem temporären PR implementiert, frühzeitiges Feedback vom Team eingeholt, das Design verfeinert und dann schrittweise in produktionsfähige PRs zerlegt. Diese Methode fördert schnelle Iteration, frühzeitiges Auffinden von Problemen und betrachtet den Code selbst als beste Dokumentation. Obwohl Design-Dokumente in bestimmten Situationen nützlich sind, plädiert der Autor für "zeigen statt erzählen" und nutzt Code-Prototypen für schnelle Validierung und Iteration, um eine effizientere Softwareentwicklung zu erreichen.

Entwicklung Code-Prototyp

Das Geheimnis hochperformanter Teams: Transaktive Gedächtnissysteme

2024-12-15
Das Geheimnis hochperformanter Teams: Transaktive Gedächtnissysteme

Dieser Artikel untersucht den Eckpfeiler hochperformanter Teams: Transaktive Gedächtnissysteme (TMS). Es geht nicht um die individuelle Gedächtnisleistung, sondern darum, wie Teams Wissen und Fähigkeiten ihrer Mitglieder effektiv teilen und nutzen. Drei Arten von Teamgedächtnis werden vorgestellt: Arbeitsgedächtnis, Langzeitgedächtnis und transaktives Gedächtnis, mit Fokus darauf, wie TMS die Teamleistung verbessert. TMS umfasst zwei Elemente: Zusammenarbeitmuster und individuelle Expertise. Durch den Aufbau eines TMS schöpfen Teams kollektive Intelligenz und überwinden die Auswirkungen von Mitgliederwechseln. Der Artikel empfiehlt Methoden wie den Capability Comb, das Team-Handbuch und bewusstes Üben, um Teams beim schnellen Aufbau und der Verbesserung ihres TMS zu unterstützen.

Isomorphe Web Components: Server-Side Rendering vereinfacht

2024-12-15
Isomorphe Web Components: Server-Side Rendering vereinfacht

Der lange Glaube, dass Server-Side Rendering von Web Components schwierig ist, wurde in Frage gestellt. Dieser Artikel zeigt, wie man Server-Side Rendering für bestehende Web Components erreicht, indem man clever Happy DOM verwendet, um eine Browserumgebung zu emulieren. Zwei Methoden werden detailliert beschrieben: die Verwendung des ``-Tags für direktes Rendering und die Emulation des DOM, um den Component-Code auszuführen und HTML zu generieren. Der Autor betont die Vorteile dieses Ansatzes: Kompatibilität mit allen Web Components, Robustheit bei JavaScript-Fehlern und die Vermeidung von Framework-Bindung. Dies löst das Problem des Server-Side Renderings für Web Components und bietet eine flexible und robuste Lösung.

Entwicklung Isomorph

SVC16: Der einfachste virtuelle Computer fordert Programmierer heraus

2024-12-15
SVC16: Der einfachste virtuelle Computer fordert Programmierer heraus

SVC16 ist ein minimalistischer 16-Bit-Virtual Computer, der auf maximale Einfachheit ausgelegt ist. Er verfügt über keine CPU-Register und führt alle Operationen in einem einzigen Speicherblock aus. Der Befehlssatz ist extrem reduziert, ohne ausgefeilte Funktionen wie Sound oder variable Bildschirmgröße. Programmierer werden herausgefordert, selbst Maschinencode und Compiler zu schreiben und mit den einfachsten Mitteln erstaunliche Leistungen zu vollbringen. Das Projekt bietet einen Emulator, um benutzererstellte Programme und sogar Spiele auszuführen. Dies ist ein perfektes Projekt, um Low-Level-Computerprinzipien zu lernen und die Programmierfähigkeiten zu verbessern.

Railgun Labs veröffentlicht Hochleistungs-Unicode-Algorithmusbibliothek: Unicorn

2024-12-15

Railgun Labs hat Unicorn veröffentlicht, eine Hochleistungs-Unicode-Algorithmusbibliothek, bekannt für Geschwindigkeit, Einbettbarkeit, plattformübergreifende Kompatibilität und Sicherheit. Unicorn unterstützt zahlreiche Unicode-Algorithmen, darunter Normalisierung, Groß-/Kleinschreibung, Sortierung und Segmentierung, und bietet Decoder, Encoder und Validatoren für UTF-8, UTF-16 und UTF-32-Codierungen. Die Bibliothek ist vollständig anpassbar und wurde umfassend auf Genauigkeit und Zuverlässigkeit getestet. Sie ist MISRA C:2012-konform und weitgehend threadsicher.

Sicherheitslücke im Internetzugriff von Home Assistant

2024-12-15

Frederik Braun versuchte, Home Assistant für die Fernsteuerung seines Smart Homes zu verwenden, entdeckte aber eine erhebliche Sicherheitslücke. Obwohl Home Assistant Benutzername/Passwort und Zwei-Faktor-Authentifizierung bietet, verhindert die Unfähigkeit, URLs mit eingebetteten Anmeldeinformationen zu verarbeiten, und die Notwendigkeit der Bereitstellung im Root-Pfad zusätzliche Sicherheitsmaßnahmen wie Webserver-Authentifizierung oder das Verstecken des Dienstes hinter unkonventionellen Pfaden. Dies lässt die Sicherheit von Home Assistant allein auf seine internen Mechanismen angewiesen, was ein Sicherheitsrisiko darstellt. Der Autor fordert die Home-Assistant-Community auf, die Flexibilität ihrer Sicherheitskonfiguration zu verbessern.

Entwicklung Fernzugriff

XFCE 4.20 veröffentlicht: Experimentelle Wayland-Unterstützung und zahlreiche Verbesserungen

2024-12-15

Nach fast zwei Jahren Entwicklung ist XFCE 4.20 offiziell erschienen! Diese Version konzentriert sich auf die Vorbereitung der Codebasis für Wayland und bietet nun experimentelle Wayland-Unterstützung für die meisten Komponenten. Sie ist jedoch noch in einem frühen Stadium und wird nur fortgeschrittenen Benutzern empfohlen. XFCE 4.20 enthält außerdem viele neue Funktionen, Fehlerbehebungen und Verbesserungen, darunter verbesserte Skalierung von Icons, eine leistungsstärkere Icon-Ansicht und einen aktualisierten Thunar-Dateimanager. Wichtig ist, dass die Wayland-Unterstützung noch unvollständig ist und einige Komponenten und Funktionen noch nicht portiert wurden.

Entwicklung Desktop-Umgebung

Implementierung eines einfachen Objektsystems in Ruby von Grund auf

2024-12-15

Dieser Blog-Beitrag beschreibt die Implementierung eines einfachen Objektsystems in Ruby, ohne Klassen zu verwenden. Der Autor nutzt geschickt anonyme Funktionen und Hash-Tabellen, um Kernkonzepte der OOP wie Methodenaufruf, prototypische Vererbung, Mixins und Metaprogrammierung zu implementieren. Ausgehend von einer Konstruktorfunktion wird gezeigt, wie private Variablen und öffentliche Schnittstellen simuliert werden, wodurch effektiv klassenähnliches Verhalten und Vererbung nachgebildet werden. Anhand klarer Codebeispiele lernen die Leser, Objekte zu erstellen, Methoden zu definieren, Vererbung und Mixins zu implementieren und sogar eine rudimentäre, `attr_accessor`-ähnliche Metaprogrammierungsfunktion zu bauen. Es ist eine praktische Anleitung zum Verständnis der Grundlagen von Objektsystemen.

JP Camaras RubyConf 2024 Vortrag jetzt auf YouTube

2024-12-15

JP Camaras Vortrag über Ruby-Concurrency von der RubyConf 2024 ist jetzt auf YouTube verfügbar. Der Vortrag fasst seine Forschung und sein Schreiben des letzten Jahres zusammen und enthält animierte Folien. Das Video ist auch auf RubyVideo zu finden.

Entwicklung

TeaVM 0.11.0 veröffentlicht: Neues WebAssembly-Backend

2024-12-15

TeaVM 0.11.0 wurde veröffentlicht, mit einem neuen WebAssembly-Backend als Hauptmerkmal. Das alte WebAssembly-Backend war zwar funktionsfähig, wurde aber aufgrund geringer Performance-Verbesserungen und einer schlechten Entwicklererfahrung nur wenig verwendet. Das neue Backend nutzt den WebAssembly GC-Vorschlag, um diese Probleme zu lösen, indem es die Interaktion mit Browser-JS-APIs verbessert und die Größe der Binärdateien reduziert. Obwohl es derzeit etwas weniger funktionsreich ist als das JS-Backend, unterstützt es bereits JSO (Java-to-JS-Interaktions-API) und zielt darauf ab, in der nächsten Version Parität zu erreichen. Diese Version enthält auch Fehlerbehebungen in der BitSet-Implementierung und fügt Unterstützung für verschiedene JS-APIs hinzu, wie z. B. Dateilesen, Touch-Events, die Popover-API und Navigator.sendBeacon.

Entwicklung

Abschied von endlosen Meetings: Ein neuer Ansatz für die Hochgeschwindigkeits-Softwareentwicklung

2024-12-15

Müde von endlosen Meetings und langen Planungsphasen? Dieser Artikel stellt eine hocheffiziente Methode zur Softwareentwicklung vor: codezentriert und schnell iterativ. Der Autor verwendet Backen als Beispiel, um das Konzept zu veranschaulichen, die optimale Lösung durch schnelles Experimentieren, häufiges Testen und kontinuierliche Verbesserung zu erreichen. Diese Methode betont die Reduzierung von Dokumentationen, das direkte Ausdrücken von Ideen im Code, die Verwendung von Mock-Daten und Hot-Reloading-Tools zur Beschleunigung der Entwicklung und die Verbesserung der Codelesbarkeit durch einen prägnanten Codestyle und Namenskonventionen. Der Autor befürwortet die Aufteilung von Projekten in unabhängig ausführbare Dateien, die Minimierung der Neustartzeiten und die Verwendung von Standard-Sprachwerkzeugen zum Debugging. Obwohl diese Methode wie ein "chaotisches Labor" aussehen mag, kann sie Projekte effizient abschließen und die Redundanz und Ineffizienz traditioneller Methoden vermeiden.

1 2 207 208 209 210 212 214 215