Sonntag, 27. September 2009
Rakudo kratzt an den 15,500 Tests
Mitte September hat Rakudo die Marke der 15500 bestandenen Tests erreicht - das sind über 70% der offiziellen Testsuite.
Die Rakudo-Entwickler arbeiten hart und machen gute Fortschritte - im April nächsten Jahres wollen sie Rakudo * an die breiten Massen verteilen - eine zwar noch nicht fertige, aber "nützliche und benutzbar" Perl 6-Implementierung.
Die Rakudo-Entwickler arbeiten hart und machen gute Fortschritte - im April nächsten Jahres wollen sie Rakudo * an die breiten Massen verteilen - eine zwar noch nicht fertige, aber "nützliche und benutzbar" Perl 6-Implementierung.
Freitag, 25. Juli 2008
Ein Parser für Perl 6
Pünktlich zur OSCON 2008 hat Larry Wall seinen Parser für Perl 6 fertiggestellt.
STD.pm (für "standard grammar" oder so ähnlich) ist eine Perl 6-Grammatik, die zur Zeit etwas 95% der Dateien in der offiziellen Test-Suite parsen kann. Dazu wird die Grammatik erst nach perl 5 übersetzt und dann ausgeführt. Um den Parser benutzen zu können braucht man perl 5.10.0 mit der TRE regex engine.
Der Parser hat schon dabei geholfen, einige Syntaxfehler in den Testdateien zu finden.
Einziges Manko bisher ist die Geschwindigkeit: STD.pm braucht vier bis fünf Minuten um sich selbst zu parsen, und etwa 5 bis 10 Sekunden für eine durchschnittliche Testdatei. Da es aber bisher nicht für Geschwindigkeit optimiert ist sollte das nicht allzu pessimistisch stimmen.
Damit gibt es erstmals einen fast vollständigen Parser für Perl 6, der noch dazu in Perl 6 geschrieben ist und leicht erweiterbar ist.
STD.pm (für "standard grammar" oder so ähnlich) ist eine Perl 6-Grammatik, die zur Zeit etwas 95% der Dateien in der offiziellen Test-Suite parsen kann. Dazu wird die Grammatik erst nach perl 5 übersetzt und dann ausgeführt. Um den Parser benutzen zu können braucht man perl 5.10.0 mit der TRE regex engine.
Der Parser hat schon dabei geholfen, einige Syntaxfehler in den Testdateien zu finden.
Einziges Manko bisher ist die Geschwindigkeit: STD.pm braucht vier bis fünf Minuten um sich selbst zu parsen, und etwa 5 bis 10 Sekunden für eine durchschnittliche Testdatei. Da es aber bisher nicht für Geschwindigkeit optimiert ist sollte das nicht allzu pessimistisch stimmen.
Damit gibt es erstmals einen fast vollständigen Parser für Perl 6, der noch dazu in Perl 6 geschrieben ist und leicht erweiterbar ist.
Sonntag, 25. Mai 2008
Gesammelte Perl 6-Nachrichten
In letzter Zeit war es hier ein wenig ruhig, das lag aber eher an meiner Faulheit als Blogger denn an Mangel an Neuigkeiten.
Die spektakulärste Nachricht ist sicher, dass die Perl Foundation (TPF) eine 200.000 US-Dollar Spende bekommen hat. Die Hälfte soll in Perl 6 investiert werden, die andere Hälfte soll dazu verwendet werden die Infrastruktuer der TPF zu verbessern, um in Zukunft leichter an Spenden heranzukommen.
Auch sehr erfreulich ist die Nachricht, dass Googles "Summer of Code"-Projekt sechs Studenten sponsort die Perl-Projekte umsetzen - zwei davon beschäftigen sich mit Parrot (ein neuer Garbage Collector und ein "Native Call Interface", ein Möglichkeit C-Funktionen aus Parrot aufzurufen). Das dritte beschäftigt sich mit dem verbessern der Perl 6 Testsuite, mit mir als Mentor.
Ich habe mich auch ein wenig mit Rakudo beschäftigt und das Test-Framework so angepasst, dass man alle Tests aus der Offizielen Testsuite laufen lassen kann, die im Moment funktionieren sollten.
Jonathan Worthington hat ein wenig finanzielle Unterstützung bekommen um mehr an Rakudo hacken zu können, und hat promt Junctions, einen großen Teil der Objektorientierung und Regexes implementiert.
John M. Dlugosz hat versucht, die Syopsis in Form von Standarddokumenten zusammenzufassen, leider scheint das Projekt schon wieder zu schlafen.
Mitchell Charity hat einen neuen Perl 6-Kompiler namens "Elf" gestartet. Der Anfang war eine Ruby-Übersetzung der Standardgrammatik STD.pm, später kamen ein Perl 5-Backend und der eigentliche Compiler in Perl 6 dazu. Der Compiler kann immerhin schon 70% der Testsuite parsen, und wird stetig weiterentwickelt
Die spektakulärste Nachricht ist sicher, dass die Perl Foundation (TPF) eine 200.000 US-Dollar Spende bekommen hat. Die Hälfte soll in Perl 6 investiert werden, die andere Hälfte soll dazu verwendet werden die Infrastruktuer der TPF zu verbessern, um in Zukunft leichter an Spenden heranzukommen.
Auch sehr erfreulich ist die Nachricht, dass Googles "Summer of Code"-Projekt sechs Studenten sponsort die Perl-Projekte umsetzen - zwei davon beschäftigen sich mit Parrot (ein neuer Garbage Collector und ein "Native Call Interface", ein Möglichkeit C-Funktionen aus Parrot aufzurufen). Das dritte beschäftigt sich mit dem verbessern der Perl 6 Testsuite, mit mir als Mentor.
Ich habe mich auch ein wenig mit Rakudo beschäftigt und das Test-Framework so angepasst, dass man alle Tests aus der Offizielen Testsuite laufen lassen kann, die im Moment funktionieren sollten.
Jonathan Worthington hat ein wenig finanzielle Unterstützung bekommen um mehr an Rakudo hacken zu können, und hat promt Junctions, einen großen Teil der Objektorientierung und Regexes implementiert.
John M. Dlugosz hat versucht, die Syopsis in Form von Standarddokumenten zusammenzufassen, leider scheint das Projekt schon wieder zu schlafen.
Mitchell Charity hat einen neuen Perl 6-Kompiler namens "Elf" gestartet. Der Anfang war eine Ruby-Übersetzung der Standardgrammatik STD.pm, später kamen ein Perl 5-Backend und der eigentliche Compiler in Perl 6 dazu. Der Compiler kann immerhin schon 70% der Testsuite parsen, und wird stetig weiterentwickelt
Mittwoch, 16. Januar 2008
Test Suite Refactoring
Bisher wurde die Test Suite im Pugs-Repository hauptsächlich von pugs benutzt.
Da inzwischen aber auch kp6 und rakudo (also Perl 6 auf Parrot) stark am Wachsen sind und die Testsuite mitbenutzen, muss sie aufgeräumt werden.
Ein Teil der Arbeit besteht darin, die Tests nach Synopsis zu ordnen und in gemeinsame Ordner zu verschieben.
Außerdem werden die Tests auf Korrektheitüberprüft, und die TODO-Markierungen verallgemeinert.
Während der Entwicklung der verschiedenen Compiler werden alle Tests, die ein bestimmter Compiler noch nicht besteht, weil die Implementierung noch nicht weit genug ist, als TODO markiert.
Dazu benötigt man eine Syntax, die ich anhand eines Beispiels verdeutlichen will:
Der Spezielle Kommentar
Weil das bisher noch keine Implementierung richtig macht, hat Larry Wall ein Script namens "fudge" geschrieben, das als Präprozessor für die Scripte dient und ihnen einen Teil der Arbeit abnimmt.
Die Diskussion dazu gibt es in diesem perl6-language Thread.
Da inzwischen aber auch kp6 und rakudo (also Perl 6 auf Parrot) stark am Wachsen sind und die Testsuite mitbenutzen, muss sie aufgeräumt werden.
Ein Teil der Arbeit besteht darin, die Tests nach Synopsis zu ordnen und in gemeinsame Ordner zu verschieben.
Außerdem werden die Tests auf Korrektheitüberprüft, und die TODO-Markierungen verallgemeinert.
Während der Entwicklung der verschiedenen Compiler werden alle Tests, die ein bestimmter Compiler noch nicht besteht, weil die Implementierung noch nicht weit genug ist, als TODO markiert.
Dazu benötigt man eine Syntax, die ich anhand eines Beispiels verdeutlichen will:
use v6-alpha;
use Test;
# Vier tests geplant:
plan 4;
# rakudo kann die nächsten beiden Tests noch nicht ausführen:
#?rakudo: 2 todo "String matches not yet implemented"
ok "foo" ~~ "foo", "equal strings smartmatch";
ok "foo" !~~ "bar", "non-equal strings don't smartmatch";
# das "2 todo" ist jetzt aufgebraucht, d.h. die nächsten beiden Tests werden
# auch von rakudo wieder ausgeführt:
ok 1 ~~ 0 .. 10, "Smart match with ranges";
ok 10 !~~ ^10, "Smart match with exclusive ranges";
Der Spezielle Kommentar
#?pugs foo bedeutet, dass die Implementierung "pugs" das folgende, in diesem Fall "foo", ausführt, alle anderen Implementierungen ignorieren das.Weil das bisher noch keine Implementierung richtig macht, hat Larry Wall ein Script namens "fudge" geschrieben, das als Präprozessor für die Scripte dient und ihnen einen Teil der Arbeit abnimmt.
Die Diskussion dazu gibt es in diesem perl6-language Thread.
Namensänderungen
Namensänderungen scheinen in der Perl 6-Entwicklung ein wichtiger Bestandteil der Kultur zu sein.
So hat vor kurzem ruoso seine Virtual Machine "yap6" in "smop" umbenannt. "yap6" stand für "yet another Perl 6", und sollte als Backend für kp6 dienen.
Als dann klar wurde, dass die Implementierung viel allgemeiner wird, und für alle objektorientierten dynamischen Programmiersprachen funktioniert, musste ein allgemeinerer Name her. "smop" steht für small matter of programming oder diverse andere Abkürzungen, wie z.B. "Smop Meta Object Programming".
Außerdem wurde der Name der Perl 6-Implementierung auf Parrot von perl6 nach Rakudo geändert.
Hier war der Grund, dass viele Leute die Implementierung mit der Sprache (und Sprachspezifikation) verwechselt haben. Der Hintergrund des Namens ist auf der Seite rakudo.org erklärt.
So hat vor kurzem ruoso seine Virtual Machine "yap6" in "smop" umbenannt. "yap6" stand für "yet another Perl 6", und sollte als Backend für kp6 dienen.
Als dann klar wurde, dass die Implementierung viel allgemeiner wird, und für alle objektorientierten dynamischen Programmiersprachen funktioniert, musste ein allgemeinerer Name her. "smop" steht für small matter of programming oder diverse andere Abkürzungen, wie z.B. "Smop Meta Object Programming".
Außerdem wurde der Name der Perl 6-Implementierung auf Parrot von perl6 nach Rakudo geändert.
Hier war der Grund, dass viele Leute die Implementierung mit der Sprache (und Sprachspezifikation) verwechselt haben. Der Hintergrund des Namens ist auf der Seite rakudo.org erklärt.
Mittwoch, 12. Dezember 2007
Perl Status Update
Seit dem letzten Posting hier ist einiges passiert im Perliversum.
Von perl 5.10.0 gibt es bereits den zweiten Release Candidate, das final release ist Für Perls 20. Geburtstag am 18. Dezember geplant.
Von Parrot ist die Version 0.5 erschienen, die Versionsnummer lässt hoffen, dass Parrot damit zur Hälfte implementiert ist. (Gut benutzbar ist es schon seit einer ganzen Weile).
Flavio Glock hat, mit Hilfe einiger fleissigen Helfer, KindaPerl6 so weit gebracht, dass es sich selbst kompilieren kann, wenn auch noch nicht korrekt. Der letzte Schritt zum Bootstrap sollte also nicht so weit entfernt sein.
Zur Zeit wird darüber diskutiert, wie kp6 sinnvoll mit dem Perl6-Projekt von Parrot zusammenarbeiten kann, z.B. in Form eines Parrot-Emitters für kp6, oder eine gemeinsame Implementierung.
Von perl 5.10.0 gibt es bereits den zweiten Release Candidate, das final release ist Für Perls 20. Geburtstag am 18. Dezember geplant.
Von Parrot ist die Version 0.5 erschienen, die Versionsnummer lässt hoffen, dass Parrot damit zur Hälfte implementiert ist. (Gut benutzbar ist es schon seit einer ganzen Weile).
Flavio Glock hat, mit Hilfe einiger fleissigen Helfer, KindaPerl6 so weit gebracht, dass es sich selbst kompilieren kann, wenn auch noch nicht korrekt. Der letzte Schritt zum Bootstrap sollte also nicht so weit entfernt sein.
Zur Zeit wird darüber diskutiert, wie kp6 sinnvoll mit dem Perl6-Projekt von Parrot zusammenarbeiten kann, z.B. in Form eines Parrot-Emitters für kp6, oder eine gemeinsame Implementierung.
Donnerstag, 8. November 2007
Mozilla und Perl Foundation finanzieren Perl 6-Entwicklung
Wie perlbuzz berichtet, haben sich die Mozilla Foundation und The Perl Foundation dazu entschlossen, die Entwicklung von Perl 6 auf Parrot finanziell zu unterstützen.
Das passiert im Rahmen einer zweckgebunden Zahlung. Ziel ist es, die Compiler-Tools von Parrot zu verbessern, und darauf aufbauend den vorhandenden Perl 6-Compiler zu verbessern. Ebenso soll die Testsuite verbessert werden, und mehr Möglichkeiten geschaffen werden, andere Interessierte an der Entwicklung teilhaben zu lassen.
Das passiert im Rahmen einer zweckgebunden Zahlung. Ziel ist es, die Compiler-Tools von Parrot zu verbessern, und darauf aufbauend den vorhandenden Perl 6-Compiler zu verbessern. Ebenso soll die Testsuite verbessert werden, und mehr Möglichkeiten geschaffen werden, andere Interessierte an der Entwicklung teilhaben zu lassen.
Sonntag, 19. August 2007
metholate - Regexes als Methoden umschreiben
Da keine der aktuellen Perl 6-Implementierungen im Moment STD.pm ausführen können, hat Larry Wall damit angefangen, ein Script namens "metholate" zu schreiben, das STD.pm umschreibt:
Aus einer Grammatik mit Rules baut es eine Klasse mit Methoden, die die gleiche Funktion ausführen sollen.
Der Plan ist, STD.pm unter pugs zum laufen zu bringen, um alle Perl 6-Konstrukte parsen zu können. Das wäre ein großer Schritt vorwärts.
Zur Zeit kann "metholate" das erste Drittel von STD.pm soweit umsetzen, dass pugs es parsen kann.
Aus einer Grammatik mit Rules baut es eine Klasse mit Methoden, die die gleiche Funktion ausführen sollen.
Der Plan ist, STD.pm unter pugs zum laufen zu bringen, um alle Perl 6-Konstrukte parsen zu können. Das wäre ein großer Schritt vorwärts.
Zur Zeit kann "metholate" das erste Drittel von STD.pm soweit umsetzen, dass pugs es parsen kann.
(Seite 1 von 3, insgesamt 21 Einträge)
» nächste Seite
