Tag-Archive for » Bytecode «

Scriptsprache Ruby 2.5.0 verfügbar

Traditionell erscheinen größere neue Releases des Ruby-Projekts zwischen den Jahren. Und rechtzeitig vor dem gerade gelaufenen Jahreswechsel haben die Entwickler mit Ruby 2.5.0 die erste stabile Version in der 2.5er-Serie der Sprache vorgestellt. Außer Performance-Verbesserungen bringt die neue Version der Skriptsprache auch einige neue Features mit.

Dazu gehört unter anderem zum Beispiel die Unterstützung für Codeverzweigungs- und Methodenanalysen, um Entwicklern mehr Überblick der Testabdeckung ihrer Programme zu bringen. Das erweitert die Ergebnisse einer Testsuite um Informationen zu den logischen Zweigen in dem Code, die ausgeführt wurden und zeigt auch die dabei ausgeführten Methoden.

Entfernt haben die Entwickler aus ihrer Sicht unnötigen Ballast, wie zum Beispiel den trace-Befehl, der für die Unterstützung der TracePoint-API nötig war. Da die API jedoch so gut wie gar nicht genutzt wurde, hat das Entwickler-Team sämtliche trace-Befehle aus dem Bytecode (instruction sequences) entfernt und durch dynamische Hook Points ersetzt. Das soll zusammen mit einigen weiteren optimierten Methoden zu einer Verbesserung der Performance von bis zu 10 Prozent führen.

Weitere Neuerungen

Die häufig genutzte Bibliothek pp.rb  wird in Ruby 2.5 jetzt automatisch geladen, der Befehl require “pp” ist nicht mehr nötig. Außerdem können die mit Struct.new erzeugten Klassen jetzt auch unmittelbar mit Schlüsselwortargumenten (keyword arguments) umgehen.

Ausgabe von Backtraces und Fehlermeldungen erfolgen jetzt in umgekehrter Reihenfolge, so dass der aktuellste Aufruf als Letzter erscheint. So lässt sich die Ursache für ein langes Backtrace ganz einfach am Ende erkennen, falls das Backtrace dann direkt auf einem Terminal (TTY) ausgegeben wird.

Weitere Details zu Ruby 2.5.0, eine komplette Übersicht der Neuerungen und auch die Download-Links finden Sie in den Release-Informationen zu Ruby 2.5.

Java-Ersatz Kotlin 1.0 veröffentlicht

KotlinJavaEine gute Nachricht für Webschaffende mit Java-Schwerpunkt:

Nur gut eine Woche nach dem Erscheinen des Release Candidate ist jetzt die Version 1.0 der Programmiersprache Kotlin erschienen.

Version 1.0 sagt ja aus, dass die Kotlin-Entwickler bei JetBrains davon ausgehen, dass spätestens jetzt nichts mehr dagegen spreche, Kotlin auch in Produktivszenarien zu nutzen.

Die JVM-Sprache (Java Virtual Machine) ist inzwischen schon seit mehr als fünf Jahren in der Entwicklung und soll sich gegenüber Java insbesondere durch ihre gute Performance, die Sicherheit und ihre ausdrucksstarke und sehr gut lesbare Syntax auszeichnen.

Kotlin ist objektorientiert, statisch typisiert und mit Java kompatibel, wodurch der Kotlin-Compiler Java-Bytecode ausgeben beziehungsweise Java Kotlin-Code erzeugen und auch Java-Code aufrufen kann.

Den Markt auftrebender JVM-Sprachen teilt sich Kotlin unter anderem mit Scala, Clojure und Ceylon – sie alle sind Open Source.

WebAssembly – eine schnelle Javascript-Alternative

Schnellere Internetseiten mit WebAssembly: Das neue, schnellere Binärformat für Webinhalte könnte auf lange Sicht JavaScript im Browser ablösen.

WebAssembly besteht aus Bytecode und soll mit Unterstützung der großen Browserhersteller kompilierte Programme ohne Notwendigkeit eines Browser-Plug-ins statt JavaScript-Code im Internet etablieren. Um diesen Anspruch zu verdeutlichen, koordiniert eine Community-Arbeitsgruppe des Internet-Standardisierungsgremiums W3C die Arbeit.

Zum Start des Projekts gab Brendan Eich auf seiner Website zahlreiche Details bekannt. Er gehört zum Entwicklerteam für WebAssembly. Für interessierte Ersteller von Webseiten ist die Web-Assembly-Dokumentation samt FAQ und ersten Code-Experimenten ist auf GitHub zugänglich.

WebAssembly (kurz “wasm” genannt) kann auf verschiedenen Plattformen laufen: auf den x86-Prozessoren der PCs ebenso wie auf den ARM-CPUs in den Mobilgeräten. Es ist sehr kompakt und kann deshalb schneller geladen werden.

Da das zeitaufwendige Übersetzen im Browser zur Laufzeit wie bei JavaScript entfällt, soll wasm auch deutlich schneller laufen. Zum einfacheren Debuggen durch den Programmierer soll es neben dem Binärcode auch eine Repräsentation des Programmcodes als Text geben.

Ein LLVM-Backend erlaubt es den Entwicklern, C- und C++-Code in wasm zu übersetzen, und weiter Programmiersprachen könnten noch folgen.

Es gab zwar schon früher Versuche in dieser Richtung für schnelleren Code (Java, .Net, TypeScript), aber immer nur als Alleingänge einzelner Firmen, die dann von Plugins in den Browsern abhängig waren und deshalb auch keine nennenswerte Verbreitung erzielten. Dagegen hat WebAssembly, das von Microsoft, Mozilla, Google sowie WebKit, und somit auch Apples Browser Safari unterstützt wird, sich als schnelle und moderne Alternative zu JavaScript entwickeln könnte.

Schnelleres PHP mit HipHop

PHP ist eigentlich eine interpretierte Sprache. Das heißt, dass eine PHP-Seite erst übersetzt und dann ausgeliefert wird. Das braucht natürlich unnötig Zeit, wenn eine Seite bei jedem Aufruf erneut übersetzt wird, auch wenn der Quellcode überhaupt nicht geändert wurde. Auch die Entwickler von PHP haben das schon lange erkannt, und seit der Version 4 wird der Quellcode vor der Ausführung zunächst in einen Bytecode übersetzt und dann solange gespeichert vorrätig gehalten, bis sich der Quellcode einmal geändert hat. Erst dann wird er wieder einmalig in den Bytecode übersetzt. Dadurch kann die Ausführung eines PHP-Programms bis zu achtmal schneller erfolgen.

Für normale Internetseiten ist das schon eine deutliche Verbesserung der Performance – die Besucher einer solchen Präsenz bekommen schnell die angeforderten Informationen. Dem Internetdienst Facebook, der ca. 30.000 Server betreibt, um die Last von einigen Hundert Milliarden Seitenabrufen zu bewältigen, war das nicht ausreichend, und HipHop wurde innerhalb von zwei Jahren entwickelt.

Im Grunde übersetzt HipHop den PHP-Quellcode in C++-Quellcode und diesen wiederum in Maschinensprache. So etwas nennt man einen zweistufigen Sourcecode-Transformator.

Leider hat das System auch seine Schwächen, die zurzeit in der PHP-Community diskutiert werden. Das beginnt bei Funktionen wie eval(), die mit HipHop nicht mehr laufen, mit der Verkomplizierung der Entwicklungsprozesse, der berechtigten Sorge, dass die Anwendung sich unter HipHop nicht mehr genauso verhält wie das PHP-Original und endet mit Befürchtungen um die Kompatibilität mit aktuelleren oder zukünftigen PHP-Versionen.

HipHop ist bedingt durch seine Nachteile sicher keine Universallösung zur Beschleunigung von PHP-Programmen und zum Einsparen von Ressourcen. In Einzelfällen kann es aber sehr gut helfen, bezüglich der Performance oder des Ressourcenverbrauchs einer dedizierten PHP-Lösung auf die Beine zu helfen.

Probieren Sie es doch einfach aus, wenn Sie ein vielversprechendes Projekt im Auge haben! Sie können HipHop für PHP bei github.com kostenlos downloaden. Dort finden Sie auch Dokumentation zurInstallation und eine Beschreibung des Build-Prozesses. Auch im Wiki finden sich weitere Informationen zur Arbeit mit HipHop.

Category: Allgemein  Tags: , , ,  Comments off