私たちに向かって、Oracleの敵対的な態度は、私たちは、Rubyプログラミング言語で開発を停止させる。これは、私が言うのは難しいが、もうRubyを使用しないでください。そのような組織をサポートしていません。Zugleich kündigte Oracle an, mit der demnächst erscheinenden Version 7 der Programmiersprache Java deren Lizenz so abzuändern, dass jegliche Software, die auf der Java Virtual Machine aufsetzt, nur noch als Closed-Source vertrieben werden darf. Dies veranlasste den führenden Kopf der JRuby-Implementation, Charles Oliver Nutter, zu einem hier nicht weiter zitierten, aber überaus unhöflichen Statement gegenüber Oracle. Alle Hoffnungen ruhen nun auf der letzten freien Ruby-Implementation Rubinius, deren Entwicklungsteam sich zwar gleichfalls geschockt zeigte, aber verlauten lies, man werde nun mit Hochdruck an der Fertigstellung von Rubinius 1.5 arbeiten, das vollständige Kompatibilität zum bisherigen MRI 1.9.2 besitzen solle.
Shugo hat eben folgenden Änderungsvorschlag vorgestellt:
Ein kleiner Nachschlag: Manchmal gehen Dinge plötzlich schnell. Nachdem das MRI-Team mit der Dual-Lizensierung unter GPL2 + Ruby License nicht besonders glücklich ist, wird momentan diskutiert, die GPL gegen die 2-clause BSD-Lizenz auszutauschen. Wer also Spass an Lizenz-Diskussionen hat, ist da genau richtig. Eine kurze Zusammenfassung der Gründe findet sich in den Notizen für das Ruby Developers Meeting 2010.
Ab Revision 29262 ist es dann auch so weit.
Am 07.05.2010 wurde die Versionsnummer vom Ruby Head auf 1.9.3 aktualisiert. Gleichzeitig wurde der aktuelle Trunk in den Branch 1_9_2 verschoben. Damit beginnt nun wohl die Stabilisierungsphase des 1.9.2er Releases. Bis zum 15.06.2010 werde nebenbei noch die “Supported Plattforms” für Ruby 1.9.2 ausgelotet. Im Moment gehört dazu ausschließlich GNU/Linux auf i386. Um Mac OS X etwas zu stärken habe ich mit Yugui gesprochen und eine Continuous Integration Environment für Mac OS X 10.6 aufgesetzt, welche ich in den nächsten Tagen noch stabilisieren möchte. Vielleicht wird 1.9.2 dann mit Unterstützung für Mac veröffentlicht.!
Fünfzig:
Übersetzt von yugui.
Erste große Neuigkeit vor dem kompletten Konferenzbericht.
Matz hat auf der RubyConf India 2010 angekündigt, dass nach dem finalen Release von Ruby 1.9.2 ende August, die Arbeiten an der Version 2.0 beginnen werden. Es ist bereits abzusehen, dass die Entwicklung ähnlich lange dauern wird, wie die Arbeiten an der 1.9er. Aus dem Grund z.B. das Koichi einen Forschungsauftrag für 3 Jahre erhalten hat, in dem er ein Konzept entwickelt und implementiert, mit dem Ruby Fit für das so genannte Hochleistungsrechnen gemacht werden soll. Diesbezüglich wird desöfteren auch NArray ins Gespräch gebracht. Weiterhin sind für die 2.0 die üblichen Verdächtigen geplannt:
Einige Monate ist es her, dass Yugui den Erscheinungstermin für Ruby 1.9.2 auf unbestimmte Zeit verschoben hatte. Diese unbestimmte Zeit ist nun scheinbar angebrochen. Yusuke verkündete heute morgen, dass der Trunk nun die RubySpec besteht. Damit bat er auch darum, einen neuen Erscheinungstermin für die Version 1.9.2 zu terminieren.
Einige Monate ist es her, dass auf der RubyWorldConf 2009 die ersten Informationen bezüglich eines Standardiserungsprozesses veröffentlicht wurden. Heute wurde nun eine erste Version der Ruby Draft Specification veröffentlicht. Man kann sich das 341-Seitige PDF (zum Glück in Englisch und nicht Japanisch) auf der Seite herunterladen. Es tut sich also tatsächlich was in Bezug auf eine offizielle Spezifikation von Ruby. Die Autoren des Dokumentes bitten nun die Community um Feedback. Bleibt abzuwarten, ob es nur bei einem “Draft” bleibt.
Ich kann ja Daniel die Mine nicht ganz alleine überlassen, allerdings steckt mein nächster großer Artikel erst in den Kinderschuhen und wird demnächst nicht fertig. Daher hier ein Happen für zwischendurch.
Einer meiner liebsten Quälgeister in Ruby und allen anderen Sprachen, die Zuweisungen in Bedingungen erlauben, ist folgender:
1 2 3 |
if action = :pass #something end |
Und plötzlich wundert man sich, warum die Aussage immer wahr ist... Klar, kleiner Fehler, schnell korrigiert, aber manchmal nervig zu finden. Aber warum in die Gefahr begeben, wenn es doch so eine einfach Lösung dafür gibt?
1 2 3 |
if :pass = action #something end |
Das ist nicht nur ein Laufzeit-, sondern gleich ein Syntaxfehler. Gleichzeitig find ichs schöner, weil der wichtige Teil (der erwartete Wert) vorne steht. Obendrein unterscheidet es sich sofort von diesem Pattern, in dem die Zuweisung bewusst geschieht (wir nehmen mal an, dass die Berechnung von full_name unakzeptabel lang dauert):
1 2 3 |
if name = object.full_name puts name end |
Yugui hat gerade in Ihrem Branch eine experimentelle DTrace Unterstützung eingebaut. Bei DTrace handelt es sich eigentlich um ein Profling Tool aus dem Solaris Universum, welches aber in der Apple Welt auch schon seit einiger Zeit sein Unwesen treibt. Das DTrace nun auch in den MRI Einzug erhält, lässt sich direkt auf die JRubyConf zurückführen. Auf dieser gab es einige Diskussionen über Schwarze Löcher im JRuby Interpreter, welche Geschwindigkeit verschlingen. Um diese Hotspots zu identifizieren, war nun die Idee geboren, in JRuby eine DTrace Unterstützung einzubauen. Um einen Vergleichswert zu ermitteln, war es dann auch nicht weit, diese Unterstützung ebenfalls in den MRI einzubauen. Dadurch lassen sich sehr detailierte Vergleiche einzelner Operationen zwischen den Implementation ausmachen und analysieren. Und wenn die entsprechenden Hotspots gefunden wurden, ist es nur noch eine Frage von Zeit und Aufwand diese zu entfernen. Diversität! Eine der mächtigsten Waffen im Rubyuniversum…
Wie Laurent Sansonetti auf dem MacRuby Blog ankündigt, findet sich auf der Downloadseite nun die erste Beta zu MacRuby 0.5.
MacRuby hat sich eine nahtlose Integrierung in das Ruby-ähnliche Objective-C-Objektsystem auf die Fahnen geschrieben. Auch ansonsten ist MacRuby ein interessantes Projekt: es basiert zwar auf dem Standardinterpreter MRI, tauscht aber dessen virtuelle Maschine (YARV) gegen einen LLVM-Unterbau aus.
0.5 ist bei weitem noch keine komplette Implementierung. Während die Kernsprache inzwischen fast komplett implementiert ist, werden nur 80% der Tests der Core-Bibliothek und 72% der Standardbibliothek erfüllt.
Beim basteln bin ich wieder über einen kleinen, aber feinen Unterschied zwischen Ruby 1.9 und Ruby 1.8 gestoßen, der eventuell verwunderlich sein kann: der Lookup von Konstanten wurde geändert. Meistens wird das nicht auffallen, allerdings gibt es einige Fälle, die einen erstmal etwas ratlos zurück lassen...
Bildquelle: http://www.flickr.com/photos/piulet/ / CC BY-NC-ND 2.0
Seit ein paar Tagen gibt es eine neue Hookmethode mit dem Namen respond_to_missing? im Rubytrunk.
Yugui war scheinbar auf einem Qualitätssicherungsseminar. Nach dem sie vorgestern angekündigt hat, den Release Schedule der 1.9.2 zu verschieben, sind nun Aufräumarbeiten bei den Maintainern angesagt. So kündigte sie vor 4 Stunden an, dass für alle Core- und Standard-Bibliotheken der Maintainerstatus geprüft wird. Sollte sich herausstellen, dass sich einige Maintainer nicht melden oder in den letzten drei Monaten keine Commits durchgeführt haben, wird Ihnen der Status aberkannt und eine neue Ausschreibung durchgeführt. Der Bestätigungsprozess der Maintainer läuft nun wahrscheinlich einige Wochen. Während und nach dieser Zeit, ist jeder Interessierte dazu aufgefordert, sich für einen offenen Maintainerposten zu bewerben.