🔒
Es gibt neue verfügbare Artikel. Klicken Sie, um die Seite zu aktualisieren.
Ältere BeiträgeHaupt-Feeds

Go 1.19 mit Updates bei der Implementierung

04. August 2022 um 10:23

Rund fünf Monate nach der Version 1.18 erscheint die Ausgabe 1.19 der Programmiersprache Go. Viele Neuerungen betreffen Implementierungen in Toolchain und Runtime.

Auch die Bibliotheken haben Neuerungen erfahren. Wie gewohnt betonen die Entwickler die Rückwärtskompatibilität: Wir erwarten, dass fast alle Go-Programme weiterhin kompiliert werden und wie bisher laufen.

An der Sprache selbst gebe es nur eine kleine Änderung und die betreffe eine Korrektur des Geltungsbereichs von Typparametern in Methodendeklarationen, teilen die Entwickler mit. Bestehende Programme seien davon nicht betroffen.

Zudem sei das Speichermodell von Go wurde überarbeitet worden, um Go an das von C, C++, Java, JavaScript, Rust und Swift verwendete Speichermodell anzugleichen, heißt es weiter. Mit der Aktualisierung des Speichermodells führt Go 1.19 neue Typen im sync/atomic-Paket ein, die die Verwendung atomarer Werte erleichtern, wie atomic.Int64 und atomic.Pointer[T].

Die Laufzeitumgebung bietet nun Unterstützung für eine weiche Speicherbegrenzung. Diese Speichergrenze umfasst den Go-Heap und alle anderen von der Laufzeitumgebung verwalteten Speicher und schließt externe Speicherquellen wie Mappings der Binärdatei selbst, in anderen Sprachen verwalteten Speicher und vom Betriebssystem im Auftrag des Go-Programms gehaltenen Speicher aus, teilen die Entwickler mit.

Die Ankündigung nennt weitere Details.

Der Beitrag Go 1.19 mit Updates bei der Implementierung erschien zuerst auf Linux-Magazin.

Meta empfiehlt Rust für CLIs und als C++-Alternative

01. August 2022 um 09:21

Für die Programmierung der Dienste von Facebook-Mutter Meta darf nun auch offiziell Rust verwendet werden. Die Nutzung wachse rasant, heißt es.

Für die Programmierung der serverseitigen Dienste des Facebook-Mutterkonzerns Meta können die Angestellten künftig auch offiziell die als besonders sicher geltende Programmiersprache Rust verwenden. Das kündigt das Team in seinem Engineering-Blog an. Damit zählt Rust nun zu den wenigen intern unterstützten Sprachen.

Zum Hintergrund der Entscheidung heißt es: “Die Unterstützung einer neuen Sprache ist keine Entscheidung, die wir leichtfertig treffen. Es ist wichtig, dass jede Sprache, die wir übernehmen, für einen bestimmten Anwendungsfall am besten geeignet ist, daher lassen wir bei der Bewertung einer Sprache ein hohes Maß an Sorgfalt walten. Sprachentscheidungen bleiben in der Regel bestehen, sobald sie einmal getroffen wurden, daher möchten wir von Anfang an bewusst vorgehen, um unseren Entwicklern die besten Werkzeuge zum Arbeiten zur Verfügung zu stellen.”

Die interne Unterstützung bedeutet laut Meta, dass die Entwickler mit den üblichen Werkzeugen zum Schreiben von Code, Debugging, den Builds und dem Ausrollen gut arbeiten können. Ähnliches gilt für Kernbibliotheken und Interoperabilität. Bisher zählten zu der Liste der unterstützten Sprachen die Eigenentwicklung Hack sowie Python und C++.

Die Nutzung von Rust empfiehlt Meta parallel zu C++ für Backend-Dienste, deren Leistung besonders kritisch ist. Das Unternehmen schreibt dazu: “Der Anteil von Rust an unseren Produkten und Dienstleistungen nimmt rapide zu, wir setzen uns langfristig für Rust ein und begrüßen Early Adopters.”

Zusätzlich dazu sollen mit Rust vor allem Kommandozeilenwerkzeuge erstellt werden. Für zustandslose Anwendungen werde hingegen Hack bevorzugt, Python wiederum für Data-Science- und Machine-Learning-Anwendungen. Nur in kleinen Teilbereichen werde außerdem auf Go, Java, Erlang und Haskell gesetzt.

Der Beitrag Meta empfiehlt Rust für CLIs und als C++-Alternative erschien zuerst auf Linux-Magazin.

Perl 7 wird fertig, wenn es soweit ist

Seit zwei Jahren arbeitet die Perl-Community an der Version 7. Doch eine Veröffentlichung ist weiter nicht in Sicht.

Das Leitungsgremium der Programmiersprache Perl gibt in einem aktuellen Blogpost eine Aussicht auf die kommenden Version 7 der Sprache sowie vor allem auf deren geplanten Veröffentlichungstermin. Wirklich eindeutig beantworten können und wollen das die Beteiligten zwar nicht, der Blogpost soll aber dazu dienen, endlich eine offizielle Stellungnahme dazu veröffentlichen zu können.

Die Arbeit an Perl 7 hatte das Team überraschend vor rund zwei Jahren angekündigt. Die Community der Sprache will damit vor allem zahlreiche alte Funktionen überwinden, die sich nach wie vor in dem aktuellen Perl 5 finden, dessen erste Version bereits im Oktober 1994 erschienen war.

In den letzten Jahrzehnten wurden aber immer mehr von den Standards abweichende Einstellungen erforderlich, da Default-Werte nicht geändert werden sollten, um die Kompatibilität zu den Vorversionen nicht zu brechen. Neu eingeführte Pragmas müssen deshalb immer einzeln aktiviert werden. In Version 7 sollen etwa die Strict- und Warning-Features automatisch aktiviert sein.

Der genaue Umgang mit diesen Plänen sorgt weiter für Diskussion in der Perl-Community und hat sogar zu komplett neuen internen Regeln samt der Etablierung des Leitungsgremiums geführt. Und dieses schreibt nun: “Im Moment ist unser Plan, weiterhin neue Funktionen einzuführen und alle bestehenden experimentellen Funktionen aufzulösen, so dass sie entweder fallengelassen oder zu nicht-experimentellen Funktionen werden (und somit im Versionspaket enthalten sind).”

Das wiederum führe aber dazu, das viele Nutzer nicht wüssten, welche Version von Perl jetzt genau welche dieser Funktionen unterstütze und welche nicht. “Irgendwann in der Zukunft” werde das Leitungsgremium aber entscheiden, “dass die Funktionen zusammengenommen einen ausreichend großen Schritt nach vorne darstellen, um eine neue Basisversion für Perl zu rechtfertigen. Wenn das passiert, wird die Version auf 7.0 angehoben.”

Der Beitrag Perl 7 wird fertig, wenn es soweit ist erschien zuerst auf Linux-Magazin.

Unterstützung für Python ohne Global Interpreter Lock wächst

Der Global Interpreter Lock in Python verhindert echte Nebenläufigkeit. Ein Projekt zur Abschaffung trifft auf Begeisterung des Kern-Teams.

Im Blog der Python Foundation fasst Entwickler Alex Waygood eine der wohl wichtigsten Diskussionen des vergangenen Python Language Summit zusammen: die Frage nach der Abschaffung des Global Interpreter Lock (GIL) der Sprache. Der GIL verhindert effektiv eine echte Nebenläufigkeit der Sprache. In der Vergangenheit gab es immer wieder Versuche, diese Technik in der Standardimplementierung CPython abzuschaffen. Eine neue Idee stößt nun offenbar auf große Unterstützung.

Konkret handelt es sich dabei um das Nogil-Projekt von Sam Gross, das auf vorigen Arbeiten zu der Idee basiert, den GIL in Python abzuschaffen. Verfügbar ist der experimentelle Beispielcode seit Oktober 2021. Er hatte zunächst vor allem Probleme bei Python-Projekten, die Drittanbieter-Code nutzten.

Zu dem Problem, das sich durch den Verzicht auf den GIL ergibt, heißt es im Blog: “Damit Python auch ohne die GIL effektiv arbeiten kann, müssen zu einem Großteil des Codes neue Sperren hinzugefügt werden, um sicherzustellen, dass er weiterhin Thread-sicher ist. Das Hinzufügen neuer Sperren zu bestehendem Code kann jedoch sehr schwierig sein, da es in einigen Bereichen zu großen Verlangsamungen kommen kann.” In einem früheren Experiment führte der Verzicht auf den GIL etwa zu einer massiven Verlangsamung für Single-Thread-Code.

Gross’ neue Arbeiten stoßen aber offenbar auf “Begeisterung” beim Rest des Kern-Entwicklungsteams von Python. Zu lösen ist vor allem die Frage, wie eine derart massive Änderung in CPython umgesetzt werden könnte. Gross schlägt dafür einen Compiler-Flag vor. Letztlich hieße das aber auch, zwei Versionen parallel zueinander zu pflegen – mit und ohne GIL. Eine finale Entscheidung zur Umsetzung ist noch nicht gefallen.

Der Beitrag Unterstützung für Python ohne Global Interpreter Lock wächst erschien zuerst auf Linux-Magazin.

Programmierung: Rust im Linux-Kernel bekommt Async und Netzwerk-Code

Mit den aktuellen Rust-Patches für den Linux-Kernel bekommt das Projekt ein neues Programmiermodell, das es mit C so nicht gibt.

Der Betreuer des Projekts, Rust im Linux-Kernel zu etablieren, Miguel Ojeda, hat seine Patch-Serie aktualisiert und dabei erstmals Unterstützung für Netzwerk-Code umgesetzt sowie erste Arbeiten am Async-Support vorgenommen. Beides zusammen könnte ein grundlegend neues Programmiermodell im Linux-Kernel etablieren, sofern die Rust-Patches irgendwann im stabilen Hauptzweig landen.

Für die Netzwerkunterstützung sind vor allem einige sehr wichtige und grundlegende Datentypen hinzugekommen. Dazu zählen etwa Typen für IPv4- und IPv6-Adressen sowie Socket-Adressen für IPv4 und IPv6, ein Buffer für Sockets, Namensräume sowie mit TcpListener und TcpStream ein prinzipieller Ersatz für die klassischen Netzwerk-Sockets.

Darüber hinaus ist das Async-Modul von Rust auf den Linux-Kernel adaptiert worden. Damit könnte das Projekt erstmals eine in die Sprache eingebaute Möglichkeit zur asynchronen Programmierung erhalten. Das ist mit C so bisher nicht möglich. Umsetzen lassen soll sich so etwa asynchroner TCP-Socket-Code, was Ojeda auch direkt mit einem Code-Beispiel in Rust illustriert und dieses erklärt. Dazu heißt es, dass der Code sehr ähnlich zu seiner synchronen Variante sei, der sogenannte Executor aber noch fehle.

Neu zum Rust-Code hinzugekommen sind außerdem Paketfilter, einige Locking-Mechanismen, eine einfache Mutex-Variante, die weniger Funktionen als das vorhandene C-Pendant bietet, sowie ein neuer Datentyp zu Referenzzählung, der das Definieren von Wrapper für den C-Code erleichtern soll. Möglich ist mit dem Rust-Code nun auch, Dokumentationstests auszuführen. Durch Umbauarbeiten am Code lassen sich so auch Kernel-APIs testen.

Der Beitrag Programmierung: Rust im Linux-Kernel bekommt Async und Netzwerk-Code erschien zuerst auf Linux-Magazin.

Gewinner von 10-Zeilen-Basic-Contest gekürt

14. April 2022 um 10:56

Die Jury hat die Gewinner des Basic 10 Liner Contest festgelegt. Im Contest geht es darum mit zehn Zeilen Quellcode in Basic Spiele und Demos zu programmieren.

Die weiteren Regeln für den Contest lauten: Kein Nachladen von Daten oder Programmteilen; die 10 Zeilen dürfen keine Maschinenprogramme enthalten, das Programm darf kompiliert werden; der gesamte Code muss im Listing sichtbar sein und selbst-modifizierender Code oder versteckte Initialisierungen sind nicht erlaubt; POKEn in Speicherstellen ist erlaubt.

Es gibt beim Basic 10 Liner Contest fünf Kategorien – “PUR-80”,  “PUR-120”, “EXTREM-256”, “Schau” und “Wild”- bei denen die Sieger nun feststehen. In der Kategorie “PUR-80” geht es darum, ein Spiel in 10 Zeilen mit maximal 80 Zeichen je logischer Zeile zu Programmieren. Abkürzungen sind dabei erlaubt. Das Spiel Snake Temple hat dabei den ersten Platz belegt.

In der Kategorie “PUR-120” darf das Spiel in 10 Zeilen maximal 120 Zeichen je logischer Zeile aufweisen (Abkürzungen sind erlaubt). Super Zombie Apocalypse Simulator hat das Rennen gemacht.

Beim Contest “EXTREM-256” geht es darum, in zehn Zeilen mit maximal 256 Zeichen je logischer Zeile zu entwickeln (Abkürzungen sind erlaubt). Sieger ist ein Spiel namens Dokoban.

Bei Schau heißt es ein Programm in 10 Zeilen mit maximal 256 Zeichen je Zeile und erlaubten Abkürzungen zu schaffen. Das Programm kann eine Demo, ein Tool oder ein Anwendungsprogramm sein. Sieger ist das Programm 8-Bit Sunset.

In der fünften Kategorie Wild sind alle Programme enthalten, die nicht den Regeln entsprechen. AlexK Rock-Paper wurde dort prämiert.

Der Beitrag Gewinner von 10-Zeilen-Basic-Contest gekürt erschien zuerst auf Linux-Magazin.

Programmiersprache Go 1.18 bietet drei große Neuerungen

16. März 2022 um 09:34

Trotz des nur kleinen Versionssprungs kündigen die Entwickler ihre neue Go-Version als „großen Meilenstein“ an. Neben Performance-Verbesserungen dürfen sich Programmierer über Generics, eingebautes Fuzzing und Workspaces freuen.

Go 1.18 unterstützt die generische Programmierung über parametrisierte Typen. Mit ihnen lässt sich eine Funktion schreiben, die fast beliebige Datentypen verarbeitet. Dabei ersetzt man zunächst den Datentyp durch einen Platzhalter, den der Go-Compiler dann später durch den jeweils passenden Typen ersetzt. Ein Beispiel und eine Einführung liefert ein Tutorial der Go-Entwickler. Die dort vorgestellte Funktion

func SumIntsOrFloats[K comparable, V int64 | float64](m map[K]V) V { … }

erwartet in der Map „m“ Zahlen vom Typ „int64“ oder „float64“, die sie dann im Rumpf miteinander addiert.

Des Weiteren lässt sich bei Tests die Fuzzing-Methode nutzen. Dabei testet Go den Code mit zahlreichen zufällig generierten Eingaben. Dies wiederum kann Probleme aufdecken, an die man als Programmierer beziehungsweise Tester nicht gedacht hat. Abschließend kennt Go 1.18 sogenannte Workspaces, die eine parallele Arbeit an mehreren Modulen vereinfachen.

Der Beitrag Programmiersprache Go 1.18 bietet drei große Neuerungen erschien zuerst auf Linux-Magazin.

Rust 1.58 ist fertig

17. Januar 2022 um 12:01

Mit der Veröffentlichung von Rust 1.58 halten die Entwickler der Programmiersprache ihren Release-Plan ein. Alle sechs Wochen gibt es ein Update.

In dieser Version heben die Entwickler hervor, dass Formatstrings nun Argumente erfassen können, indem der Entwickler einfach “{ident}” in den String schreibt. Diese Funktion funktioniere in allen Makros, die Format-Strings akzeptieren, heißt es in der Ankündigung. Ein Sonderfall stelle aber das Makro panic! in den Ausgaben 2015 und 2018 dar, wo “panic!(“{ident}”)” immer noch als unformatierter String behandelt werde. Der Compiler warne dann davor, dass damit nicht die beabsichtigte Wirkung erzielt werde. Durch die Aktualisierung der Panic-Makros in der Ausgabe 2021 zur Verbesserung der Konsistenz funktioniert dies in “panic!” 2021 aber wie erwartet. Der Rust-Blog gibt weitere Auskunft zu den Neuerungen und Änderungen.

Der Beitrag Rust 1.58 ist fertig erschien zuerst auf Linux-Magazin.

Snapshot 02/2022: Go-Programm richtet Handyfotos korrekt aus

03. Januar 2022 um 10:34

Mobiltelefone speichern Fotos aus Effizienzgründen oft verkehrt herum und verzeichnen den Trick in den EXIF-Metadaten. Damit kommen jedoch nicht alle Apps zurecht. Mike Schilli macht das Verfahren mit Go idiotensicher.

Im Video demonstriert er seine Lösung. Zu den Listings: https://www.linux-magazin.de/magazine/listings/#2022-02&082-pr_snapshot

Der Beitrag Snapshot 02/2022: Go-Programm richtet Handyfotos korrekt aus erschien zuerst auf Linux-Magazin.

Julia 1.7 mit vielen neuen Features

02. Dezember 2021 um 10:03

Nach 4 Betas und 3 Release Candidates ist die freie Programmiersprache Julia in der Version 1.7 erschienen. Die Ankündigung weist zahlreiche Neuerungen aus.

Zu denen zählt etwa ein neuer Zufallszahlengenerator. Der neue Random Number Generator (RNG) stammt aus der Familie der Xoshiro256 RNGs. Das soll diverse Vorteile bringen, etwa, dass die Zufallszahlen nur von der Struktur des Task-Spawnings eines Programms abhängen und nicht vom Zeitplan für die parallele Ausführung.

Ein neues Manifest-Format soll zudem Kompatibilitätsprobleme beseitigen. Wenn ein Benutzer ein Paket in Julia hinzufügt, schreibt der Paketmanager (Pkg) eine TOML-Datei, das “Manifest”, mit der genauen Version aller Abhängigkeiten dieses Pakets. In Version 1.7 wurde dieses Manifestformat so geändert, dass alle Abhängigkeiten unter einem gemeinsamen [deps]-Key zusammengefasst werden. Dadurch wird der globale Namespace frei, so dass ein julia_version-Eintrag hinzugefügt werden kann. Solche Manifeste zu lesen soll auch in Julia 1.6 zurückportiert werden. Der Blogbeitrag der Entwickler nennt weitere Details und Neuerungen.

Gestartet im Jahr 2009 ist Julia seit 2012 Open Source. Julia ist auf nummerisches Rechnen spezialisiert, gilt den Machern aber auch als General Purpose Language. Ziel der Entwickler war es, eine schnelle und dynamische Sprache zu entwickeln.

Der Beitrag Julia 1.7 mit vielen neuen Features erschien zuerst auf Linux-Magazin.

PHP 8.1 bringt Fibers und Read-Only Properties

29. November 2021 um 11:59

Mit der Version 8.1 der Programmiersprache PHP ist das für dieses Jahr letzte Feature-Update erschienen. Die neue Ausgabe bringt einige neue Features mit.

Dazu zählen die Entwickler die Einführung des Begriffs der “Enums” für einen benutzerdefinierten Typ ein, der eine diskrete Anzahl von möglichen Werten darstellt. PHP-Enums lassen sich überall verwenden, wo ein Objekt verwendet werden kann. Neu sind auch Fibers. Mit PHP Fibers werden unterbrechbare Funktionen unterstützt, die sich für kooperatives Multitasking in PHP einsetzen lassen.

Neu sind in PHP 8.1 auch schreibgeschützte Properties. Die Read-Only Properties sollen verhindern, dass solche Eigenschaften nach der Initialisierung geändert werden. Es sei nun zudem auch möglich, einen Verweis auf eine beliebige Funktion zu erhalten, was die Entwickler als “First-Class Callable Syntax” bezeichnen.

Neu ist auch, dass Objekte jetzt als Standard-Parameterwerte, statische Variablen und globale Konstanten sowie in Attributargumenten verwendet werden können. Die Ankündigung nennt weitere Details und bietet Links zu den Features.

Der Beitrag PHP 8.1 bringt Fibers und Read-Only Properties erschien zuerst auf Linux-Magazin.

PHP Foundation soll unabhängige Entwicklung sicherstellen

24. November 2021 um 12:38

Die Programmiersprache PHP bekommt eine unabhängige Dachorganisation, um einige Kernentwickler anzustellen. Mit dabei sind große Unternehmen.

Einer der bisherigen Hauptentwickler der Programmiersprache PHP, Nikita Popov, verlässt offenbar das Projekt und wendet sich professionell dem LLVM-Projekt zu. Das schreibt Popovs Arbeitgeber Jetbrains, der deshalb in seinem Blog über den sogenannten Bus-Faktor für die Sprache PHP nachdenkt. Vorläufiges Ende dieser Überlegung ist nun offenbar die Gründung der PHP Foundation.

Die unabhängige und gemeinnützige PHP Foundation soll vor allem dafür sorgen, dass einige der Kern-Entwickler von PHP selbst in Vollzeit oder Teilzeit an dem Projekt weiterarbeiten können, wie Jetbrains schreibt. Der Grund dafür sei recht einfach: Bisher hätten die Beteiligten die Fortentwicklung von PHP eher als “gemächliches” statt als kritisches Problem wahrgenommen.

Der Fortgang von Popov habe diesen Blick aber verändert, denn es versetze die Sprache, die “78 Prozent des Webs antreibt”, in eine zerbrechliche Lage. Darüber hinaus steige dadurch der Druck auf die verbliebenen Maintainer im PHP-Projekt. Derartige Belastungen führten aber in der gesamten Open-Source-Szene immer wieder zum Burnout Einzelner.

Um all diese beschriebenen Probleme anzugehen, soll mit der PHP Foundation das Projekt sowie die Sprache und deren Betreuer mehr Stabilität erhalten. Jetbrains selbst werde dafür rund 100.000 US-Dollar jährlich spenden. Insgesamt sollen mindestens 300.000 US-Dollar im Jahr für die PHP-Foundation zusammenkommen.

Unterstützt wird das Projekt dabei unter anderem noch von den WordPress-Machern Automattic, den PHP-Spezialisten Zend sowie zahlreichen weiteren Unternehmen, die Produkte und Frameworks auf Basis von PHP erstellen, wie etwa Symfony, Laraval oder Tideways. Auch andere sollen sich einfach an der PHP Foundation beteiligen können. Um dies zu vereinfachen, wird die PHP Foundation zunächst über Open Collective organisiert.

Weitere Details wie eine dauerhafte Führung oder Regeln für die PHP Foundation soll eine temporäre Arbeitsgruppe erarbeiten, an der namhafte PHP-Entwickler beteiligt sind, darunter auch Popov. An den bisherigen Regeln und Prozessen zur tatsächlichen Weiterentwicklung von PHP soll sich aber nichts ändern.

Der Beitrag PHP Foundation soll unabhängige Entwicklung sicherstellen erschien zuerst auf Linux-Magazin.

Rust 1.56.0 startet Edition 2021

22. Oktober 2021 um 11:52

Mit der Veröffentlichung der Programmiersprache Rust in Version 1.56.0 starten die Entwickler auch die Edition 2021. Nach der Edition 2015 und 2018 ist dies die dritte Edition.

Mit den sogenannten Editions haben die Rust Entwickler einen Weg gefunden, um Funktion freizugeben, die ansonsten nicht abwärtskompatibel wären. Editionen seien opt-in, so dass bestehende Crates diese Änderungen nicht sehen, bis sie explizit auf die neue Edition migrieren, lassen die Entwickler wissen. Rust verfolgt ein strenges Abwärtskompatibilitätsprogramm, deshalb dieser Sonderweg.

Zwar handle es sich bei der Edition 2021 um eine kleinere Ausgabe, verglichen zu den Vorgängern, es seien aber trotzdem einige Änderungen enthalten, die ein Edition-opt-in erfordern, um Probleme in existierendem Code zu vermeiden. 

Ein gewichtige Neuerung betrifft Closures. Closures bezeichnen bei Rust anonyme Funktionen, die sich in einer Variablen speichern oder als Argumente an andere Funktionen übergeben können. Closures erfassen automatisch Werte oder Verweise auf Identifier, die im Textkörper verwendet werden. Bislang seien die immer als Ganzes erfasst worden, nun würden Closures nur einzelne benannte Felder erfassen. Dieses “disjoint-capture” genante Feature soll es leichter machen, Closures zu schreiben. In der Ankündigung sind Code-Beispiele dafür genannt.

Der Beitrag Rust 1.56.0 startet Edition 2021 erschien zuerst auf Linux-Magazin.

Tiobe-Index: Python ist beliebteste Programmiersprache

13. Oktober 2021 um 09:52

Der Tiobe-Index, der die Beliebtheit von Programmiersprachen misst, kann nach rund 20 Jahren einen neuen Spitzenreiter vermelden: Python hat im Oktober das langjährige Führungsduo Java und C abgelöst.

Python, das als einfache Skriptsprache und als Alternative zu Perl begann, sei inzwischen ausgereift, berichtet Paul Jansen CEO von Tiobe Software. Die leichte Erlernbarkeit, die riesige Anzahl an Bibliotheken und die weit verbreitete Verwendung in allen möglichen Bereichen haben sie zur beliebtesten Programmiersprache der Gegenwart gemacht, schreibt Jansen weiter. Der CEO gratuliert Python-Erfinder Guido van Rossum zu Platz eins.  Diese Führungsrolle hatten in den vergangenen jahren C und Java inne.

Der Vorsprung von Python mit 11,27 Prozent gegenüber C auf Platz zwei mit 11,16 Prozent und Java auf Rang drei mit 10,46 Prozent ist allerdings knapp. Dennoch hat C gegenüber dem Oktober im Vorjahr rund 6 Prozentpunkte verloren und Java rund 2 Prozent. Platz 4 belegt C++ und Platz 5 C#.

Die Top-Ten im Oktober. Quelle: Tiobe Software

Die Bewertungen des Tiobe-Index basieren auf der Anzahl der ausgebildeten Ingenieure weltweit, auf der Zahl von Kursen und Services von Drittanbietern. Zudem werden Suchmaschinen wie Google, Bing, Yahoo!, Wikipedia, Amazon, YouTube und Baidu zur Berechnung der Bewertungen herangezogen. Der Tiobe-Index dient nicht dazu, die beste Programmiersprache oder die Sprache mit den meisten Codezeilen zu ermitteln, teilt das Unternehmen mit. Es wird damit lediglich versucht, den Beliebtheitsgrad zu messen.

Der Beitrag Tiobe-Index: Python ist beliebteste Programmiersprache erschien zuerst auf Linux-Magazin.

Go 1.17 bringt Erweiterungen

20. August 2021 um 10:28

Die Version, 1.17 der Programmiersprache Go erscheint pünktlich sechs Monate nach Go 1.16. Die Entwickler haben sich überwiegend der Implementierung der Toolchain, der Runtime und den Bibliotheken gewidmet. Es gib aber auch drei Erweiterungen.

Zu letzteren zählt die Konvertierungen von Slice zu Array Pointern. Ein Ausdruck s vom Typ []T könne nun in einen Array-Zeiger vom Typ *[N]T umgewandelt werden, schreiben die Entwickler in der Ankündigung. Eine wetere sei unsafe.Add. Die Funktion unsafe.Add(ptr, len) addiere len zu ptr und liefere den aktualisierten Zeiger unsafe.Pointer(uintptr(ptr) + uintptr(len)). Neu sei auch unsafe.Slice. Für einen Ausdruck ptr vom Typ *T gebe unsafe.Slice(ptr, len) ein Slice vom Typ [ ]T zurück, dessen zugrunde liegendes Array bei ptr beginne und dessen Länge und Kapazität len seien, heißt es in der Ankündigung des neuen Release.

Mit den neuen Erweiterungen sind auch mögliche Probleme verbunden. Denn die neue Konvertierung von Slice zu Array Pointer sei der erste Fall, in dem eine Typkonvertierung zur Laufzeit eine Panik auslösen könne. Entwickler sollten ihre Analysetools entsprechend aktualisieren, weil diese dann fälschlich davon ausgehen, dass Typkonvertierungen niemals in Panik geraten können.

Neuerungen gibt es auch beim Compiler. Go 1.17 implementiert eine neue Art der Übergabe von Funktionsargumenten und -ergebnissen unter Verwendung von Registern anstelle des Stacks, teilen die Entwickler mit. Das führe laut repräsentativen Benchmarks für Go-Pakete und -Programme zu einer Leistungsverbesserung von etwa 5 Prozent. Zudem verringere sich die Größe der Binaries um rund 2 Prozent. Dien eue Implementierung sei derzeit für Linux, MacOS und Windows auf der 64-Bit-x86-Architektur aktiviert. Die Ankündigung nennt viele weitere Details.

Der Beitrag Go 1.17 bringt Erweiterungen erschien zuerst auf Linux-Magazin.

Rust 1.54.0 versteht WebAssembly besser

30. Juli 2021 um 10:45

Mit der Version 1.54.0 der Programmiersprache Rust hatten die Entwickler unter anderem die WebAssembly-Plattform im Blick. Die Stabilisierung einiger Funktionen der wasm32-Plattform ermögliche nun den Zugriff auf die SIMD-Anweisungen in WebAssembly, heißt es in der Ankündigung.

Im Gegensatz zu den zuvor stabilisierten x86- und x86_64-Intrinsics bestehe für diese nun neu stabilisierten Funktionen keine Sicherheitsanforderung beim Aufruf. Das hänge damit zusammen, dass WebAssembly so geschrieben sei, dass Code vor der Ausführung sicher validiert werde, sodass die Anweisungen garantiert korrekt (oder gar nicht) dekodiert werden, heißt es in der Mitteilung der Entwickler.

Wieder als Standardeinstellung eingeführt haben die Macher die inkrementelle Kompilierung. Die sei in Version 1.52.1 standardmäßig deaktiviert worden, was zu mehr Fehleranfälligkeit geführt habe.

Rust 1.54 unterstütze auch das den Aufruf von funktionsähnlichen Makros innerhalb von Attributen, heißt es in den Release Notes. Ein Anwendungsfall dafür sei das Einfügen von Dokumentationen aus anderen Dateien in Rust-Doc-Kommentare. Die Ankündigung nennt weitere Details.

Der Beitrag Rust 1.54.0 versteht WebAssembly besser erschien zuerst auf Linux-Magazin.

Snapshot 08/2021: Race Conditions aufspüren mit Go

26. Juli 2021 um 12:51

Ziehen sich parallel laufende Programmteile gegenseitig den Teppich unter den Füßen weg, liegt das oft an Race Conditions. Mike Schilli zeigt, wie der Go-Compiler sie aufspürt und wie sie sich vermeiden lassen.

 Im Video demonstriert er seine Lösung

Der Beitrag Snapshot 08/2021: Race Conditions aufspüren mit Go erschien zuerst auf Linux-Magazin.

Rust 2021 geht in die Testphase

22. Juli 2021 um 10:23

Für die Rust 2021 Edition hat die öffentliche Testphase begonnen. Alle geplanten Features seien nun in den Nightly-Builds vorhanden, teilt Entwickler Niko Matsakis mit.

Auch die Migration des Codes von Rust 2018 auf die neue Version sollte klappen, schreibt der Entwickler. Dies sollte weitgehend automatisch klappen, so Matsakis. In seinem Blogbeitrag gibt es eine Anleitung dafür. Er weist vorsorglich darauf hin, dass es sich bei Rust 2021 um keine produktionsreife Version handelt, es sei deshalb empfohlen, dass Entwickler ihre Sachen in einer temporären Kopie des Codes migrieren.

Ziel sei es nun, Rust 2021 für die Veröffentlichung von Rust 1.56 stabi zu bekommen. Rust 1.56 erscheine am 21. Oktober 2021. Das bedeute, dass alle Funktionen und Arbeiten bis zum 7. September im Nightly-Zweig vorhanden sein müssen, so der Entwickler.

Der Beitrag Rust 2021 geht in die Testphase erschien zuerst auf Linux-Magazin.

Arti: Tor-Rewrite in Rust

12. Juli 2021 um 10:01

Das Projekt Arti innerhalb des Tor-Projekts hat sich vorgenommen, einen Rewrite von Tor in der Programmiersprache Rust vorzunehmen. Dank einer Finanzspritze könne das Arti-Projekt nun starten, teilen die Tor-Macher mit.

Tor sei, soweit es die client-und serverseitigen Teil der Implementierung der nötigen Protokolle betreffe, in C geschrieben, teilt Nik Mathewson vom Tor-Projekt in einem Blogbeitrag mit. Und obwohl C altehrwürdig und allgegenwärtig sei, sei es auch notorisch fehleranfällig und es ermangle der Programmiersprache an High-Level-Funktionen. Dies mache viele Programmieraufgaben komplexer als sie es in einer moderneren Sprache wären, so Mathewson. Das Programmieren in C sei damit ein langsamer und mühsamer Prozess, der mehr Code erfordere, als nötig und selbst den sichersten Code müsse man doppelt überprüfen, um sicherzugehen, dass er nicht einem von Cs enormer Fehlerliste zum Opfer falle.

Rust scheine dem Projekt der klarste Ausweg aus dieser Zwickmühle, so Mathewson. Es sei eine Hochsprache und wesentlich ausdrucksstärker als C. Außerdem weise Rust einige innovative Funktionen auf, mit denen die Sprache bestimmte Sicherheitseigenschaften bereits zur Kompilierzeit erzwingen könne. Seit Beginn des Bugtrackings im Jahr 2016 sei davon auszugehen, dass ungefähr die Hälfte der Bugs mit Rust erst gar nicht entstanden wären, so der Entwickler weiter.

Man habe sich nun für einen kompletten Rewrite entschlossen, teilt Mathewson mit. Eine Finanzierungsrunde der freien Funding-Plattform Zcash mache den Rewrite möglich.

Der Beitrag Arti: Tor-Rewrite in Rust erschien zuerst auf Linux-Magazin.

TIOBE-Index sieht C, Java und Python an der Spitze

06. Juli 2021 um 10:21

Der TIOBE-Index analysiert seit inzwischen 20 Jahren die Beliebtheit von Programmiersprachen anhand von Suchanfragen. Im Jubiläumsmonat Juli lagen C, Java und Python auf den drei ersten Plätzen.

Zum Start des Index im Jahr 2001 konkurrierten Java, C und C++ um die Top-3, teilen die Macher mit. Der aktuelle Index zeige ein äußerst knappes Rennen zwischen C, Java und Python. Diese Sprachen seien sich im Ranking näher gekommen als je zuvor. Der Unterschied zwischen Position 1 und Position 3 betrage nur 0,67 Prozent. C++ liegt im Juli 2021 auf Platz 4. Es sei nun interessant, wer in den kommenden Monaten das Rennen macht, heißt es in der Ankündigung. Python habe die besten Chancen auf Platz 1, dank seiner Marktführerschaft im boomenden Bereich Data Mining und künstliche Intelligenz, orakelt das auf Software-Analysen spezialisierte Unternehmen. Das C++ rund 0,5 Prozent hinzugewinne und näher an die Top 3 heranrücke sei ein weiteres interessantes Ergebnis des Juli-Index.

Der TIOBE-Index mit den zehn Spitzenreitern. Quelle: TIOBE

Der TIOBE Programming Community Index sei ein Indikator für die Popularität von Programmiersprachen, teilt das Unternehmen mit. Die Bewertungen basierten auf der Anzahl von qualifizierten Entwicklern weltweit, an der Zahl von Kursen und Drittanbietern. Suchmaschinen wie Google, Bing, Yahoo!, Wikipedia, Amazon, YouTube und Baidu ziehe man ebenfalls zur Berechnung der Bewertungen heran, heißt es weiter. Der Anbieter betont, dass es beim TIOBE-Index nicht um die beste Programmiersprache geht oder die Sprache, in der die meisten Codezeilen geschrieben wurden.

Der Beitrag TIOBE-Index sieht C, Java und Python an der Spitze erschien zuerst auf Linux-Magazin.

Die 30 besten VS Code Erweiterungen für Administratoren und DevOps

05. Juni 2021 um 12:36

Wie bereits im letzten Artikel erwähnt, gibt es mit Visual Studio Code einen starken Editor, welcher sich mit Hilfe von Erweiterungen für jeden Einsatzzweck anpassen lässt.

Ich möchte euch einige davon vorstellen, welche sich für den Einsatz im Administrations- oder DevOps Bereich eignen.

Die 30 besten VS Code Erweiterungen

  1. Ansible Language: Zu dieser Erweiterung muss wenig gesagt werden. Ihr erhaltet YAML Support mit Syntax Highlighting, Autovervollständigung und der mitgelieferte YAML bzw. Ansible Linter zeigt euch Fehler adhoc an. ansible

  2. Apache Syntax Support: Der Name ist Programm und eure Apache Config Files erstrahlen beim Editieren in neuem Glanz, dank Syntax Highlighting.

  3. Atom Keymap: Solltet ihr aus der Atom Editor Welt kommen und eure alten Shortcuts vermissen, dann hilft das Plugin ungemein.

  4. Better Jinja: Das Arbeiten mit Jinja Templates kann schnell in die Verzweiflung führen. Durch diese Erweiterung erhaltet ihr neben Jinja auch Support für HTML, Markdown, YAML, CSS, Docker, Python und uvm. in euren Dateien. jinja

  5. Better TomlTom's Obvious, Minimal Language kommt immer mal wieder vor. Einige werden die Dateien von Gitlab kennen. Die Extension sorgt für bessere Lesbarkeit beim Editieren.

  6. Confluence: Atlassians Wiki Lösung findet sich sehr häufig in Unternehmen. Aus diesem Grund kommen einige sicher öfters mit deren Markup in Berührung. Hier gibt es Unterstützung für Confluence® and Jira® Markup.

  7. Debian Package Syntax Highlighting: Nur für diejenigen, die öfters mit DEB Paketen zu tun haben.

  8. Docker: Eigentlich schon essentiell, Docker Unterstützung für VS Code. docker

  9. Git History: Für Git fast unverzichtbar. Bereitet Logs auf, nimmt Grafiken zu Hand, kann vergleichen usw.

  10. Git Lens: Der selbst ernannte Supercharger. Bietet ähnlich wie Git History eine schöne Log Übersicht. Zusätzlich dazu kommen Features wie Revision Navigation, History Anzeige in der Status Bar oder der aktuellen Zeile.

  11. Gremlins Tracker: Wer kenn es nicht, ein unerwünschtes Leerzeichen sorgt im Code für Aufregung. Gremlins werden sie von dieser Erweiterung genannt und als solche auch in der Sidebar sichtbar gemacht. gremlins

  12. Hugo Language Support: NutzerInnen des Frameworks wird mit Syntax Highlighting und Snippets das Webseiten bauen erleichtert.

  13. Indent Rainbow: Einer meiner Favoriten, macht Nichts anderes als Einrückung kolorieren. Das hilft nicht nur bei YAML Dateien ungemein. 

  14. Jinja Syntax Highlighting: Jinja kann durchaus hilfreich sein, leider geht auch schnell die Übersicht im Code verloren. Durch Syntax-Hervorhebung kann dem aber vorgebeugt werden.

  15. Kubernetes: Die Beschreibung im Marketplace sagt eigentlich alles:  Develop, deploy and debug Kubernetes applications

  16. Nginx Configuration Language Support: Autovervollständigung bei der NGINX Konfiguration, nicht mehr und nicht weniger. Allerdings nicht mehr ganz aktuell. nginx

  17. Notepad++ Keymap: Für Umsteiger eignet sich diese Notepad++ Keymap.

  18. OpenSSL Utilities: Auf ITrig hatte ich bereits Anleitungen, wie Private Key, CSR oder self-signed Zertifikate über die Kommandozeile erstellt werden. Die Erweiterung erlaubt euch das Erstellen ohne weitere Kenntnisse der CLI Befehle direkt in Visual Studio Code. privkey

  19. Prettier: Schöner programmieren mit Prettier - Code formatter. Das Tools formatiert euren Code automatisch. Unterstützt werden JavaScript, TypeScript, Flow, JSX, JSON, CSS, SCSS, Less, HTML, Vue, Angular, GraphQL, Markdown, YAML.

  20. Projekt Manager: Wenn an mehreren Projekten gleichzeitig gearbeitet wird, kann es sinnvoll sein die Verwaltung dieser zu verbessern.

  21. Rainbow Brackets: Es wird wieder bunt. Regenbogenfarben für die runden Klammern, die eckigen Klammern und die verschnörkelten Klammern.

  22. Remote SSH: Dateien direkt auf Servern editieren kann durchaus praktisch sein.

  23. Salt-lint. Einfacher Linter für States und Pillars

  24. Saltstack: Analog zum Salt-Linter ist dieser Syntax Highlighter für Saltstack ein Muss. saltstack

  25. Snort:  NIDS/NIPS in Farbe.

  26. Sort: Wörter alphabetisch sortieren, einfach shift+alt+s  drücken

  27. Tomcat for Visual Code: Tomcat Server direkt aus VS Code starten und war Pakete debuggen.

  28. Toml Language Support: Ein weiterer Formater für Toml Dateien.

  29. XML Support: Alles was es für XML braucht in einem Plugin.

  30. YAML: Voller YAML Support mit Kubernetes Unterstützung. yaml

Themes

Damit die Arbeit noch mehr Spaß macht, gibt es ebenfalls viele Themes, sowie Icon Sets.

Hier eine kleine Auswahl an Themes, welche ich gerne einsetze.

  1. SynthWave 84 (die 80er sind zurück)
  2. Dracula Theme (schönes ausgewogenes Theme)
  3. Material Icons (Icons für die Ordner und Dateistruktur)
  4. Solarized Dark (Blau und Grüntöne, ist bei VSCode dabei)
  5. Monokai Pro (Theme und Icon Set zusammen)

synthwave

Eine schöne Übersicht mit Vorschauen vieler Themes bietet vscodethemes.com

Download

Schlussendlich fehlt wohl noch ein Link zu Visual Studio Code. Denn was helfen Erweiterungen, wenn der Editor fehlt.

Download VSCode

Snapshot 06/2021: Golang – Skript-Schreiber stöhnen, C-Programmierer jubeln

28. Mai 2021 um 15:44

Bereits 2012 eingeführt, fristete Go lange Zeit ein Nischendasein. Dann mauserte es sich durch Vorzeigeprojekte wie Docker schnell zur Quasi-Standardsprache für systemnahe Programmierung. Mike Schilli gibt einen Einblick in die Sprache.

Im Video ist die Einführung in Go zu sehen.

Der Beitrag Snapshot 06/2021: Golang – Skript-Schreiber stöhnen, C-Programmierer jubeln erschien zuerst auf Linux-Magazin.

25 Python-Bücher für 15 € – Schnäppchen für Programmierer

18. Mai 2021 um 08:31
Von: jdo

Das Buch-Bundle Learn You More Python von No Starch Press bietet 15 Python-Bücher für circa 15 €*. Das ist ein hervorragender Preis und in der ersten Stufe snd Python-Werke für Kinder. Wie so oft ist das Bundle in drei Stufen eingeteilt. Würdest Du die Bücher regulär kaufen, müsstest Du ungefähr 411 $ auf den Tisch legen. Die gute Nachricht ist, dass es die Python-Bücher DRM-frei in den Formaten MOBI, EPub und PDF gibt. Die schlechte ist, dass die Bücher alle […]

Der Beitrag 25 Python-Bücher für 15 € – Schnäppchen für Programmierer ist von bitblokes.de.

VS Code: Swissknife - konvertieren und generieren direkt im Editor

16. Mai 2021 um 12:23

Cyberchef (The Cyber Swiss Army Knife) hatte ich vor fast 4 Jahren auf ITrig erwähnt. Das Tool sagte mir damals wegen seiner praktischen Encoding beziehungsweise Decoding Funktionen zu.

Seitdem ist einige Zeit vergangen und Arbeitsweisen haben sich geändert. So verwende ich inzwischen unter anderem Visual Studio Code fürs tägliche Editieren. Durch die vielen Plugins ist der Editor sehr gut erweiterbar.

Genau hier kommt die Erweiterung Swiss Knife ins Spiel

 

VS Code – Swissknife

swissknife

Die Visual Studio Code Erweiterung von Luis Fontes beherrscht eine Menge an Funktionen, vom Hashes generieren, über Hex oder Base64 bis Markdown.

Das heißt eurer Editor wird mit wenigen Klicks um viele Alltagsanwendungen erweitert.

Folgende Funktionen beherrscht das Schweizer Messer für Visual Studio momentan:

  • Base64 decode

  • Base64 encode

  • Binary To Text

  • Bip39 Mnemonic

  • CSV to Markdown

  • Count characters

  • Count words

  • Crypto currency value

  • Date to Timestamp

  • Eliptic Curve Key Pair

  • Generate Password

  • HTML Encode (AlL)

  • Hex decode

  • Hex encode

  • Hex to RGB

  • Identify hash

  • JWT Decode

  • Join lines

  • Lorem Ipsum

  • Markdown to HTML

  • Md5 hash

  • New Swissknife Script (JS)

  • New Swissknife Script (TS)

  • Password strength

  • RGB To Hex

  • RSA Key pair

  • Random String

  • Request to fetch

  • SHA1 hash

  • SHA256 hash

  • SHA512 hash

  • Self Signed Certificate

  • Start Local HTTP Server

  • Start Local HTTPS Server

  • Stop HTTP Server

  • Text To Binary

  • Text to String

  • Timestamp to Date

  • To Camel Case

  • To Lower Case

  • To Morse code

  • To Upper Case

  • UUIDv4

  • Unicode decode

  • Unicode encode (js format)

  • Unix/Linux Permission To Human Readable

  • Url Decode

  • Url Encode

  • Url Encode (All Characters)

  • Url Shorten

  • Url Unshorten (url expand)

Die Funktionen lassen sich mit swissknife.show oder Strg+Shift+9 beziehungsweise cmd+shift+9 im Terminal aufrufen. (Text markieren vorher nicht vergessen).

Hat man die Tastenkombination einmal im Kopf, erleichtert die Erweiterung das Arbeiten an vielen Stellen sehr, vorrausgesetzt die Anwendungsfälle kommen öfters vor.

Download swissknife

 

❌