Natürlich können Sie aber eine andere Art zu denken? Ich denke, jede Sprache Umsetzung wird Ihnen sagen, dass während der sehr frühen Stadien der Entwicklung waren sie extrem schnelle, aber als sie näher kamen, um die Durchführung konforme Ruby Funktionalität, Performance gelitten, oder es habe immer schwieriger, die Umsetzung auf dem gleichen Niveau zu halten der Leistung. Aber das ist für eine Sprache wie Ruby verständlich, er stellt die Last der Klugheit über die Sprache, sondern als Entwickler writing-Anwendungen in Ruby.
Beachten Sie jedoch, RubySpec nicht für Performance-Tests. Und während die Ruby-Benchmark-Suite ist eine feine Benchmark-Suite, die meisten Vorteile für die Performance-Verbesserungen IronRuby haben Rails kommen aus Analyse und Optimierung von eigentlichen Programmen, wie, RSpec, RubyGems, Gurke, IRB, RubySpec tat etc. spielen hier eine Rolle, wie es half sicherstellen, dass wir nicht in Übereinstimmung degradieren während der Verwendung der realen Applikationen zur Performance-Tuning. Außerdem haben wir analysiert MSpec (RubySpec "s Testrunner) auf IronRuby für den Start und Durchsatzleistung.
Closures, Fortsetzungen und Schwanz-Call-Optimierungen sind oft in Form von erörtert Programmiersprache VM's. Welche dieser Attribute sind implementierbar derzeit die voraussichtlich umgesetzt werden sollen, und welche nicht durch Design möglich?
Verschlüsse sind nicht wirklich ein VM-Funktion, da sie lediglich einen Code-Block in einem Kontext ausgeführt werden. Da die Dynamic Language Runtime ist eine Sprache-Umsetzung Tool, unterstützt es Verschlüsse, jedoch IronRuby verwendet sie nicht, sie sind in IronRuby gegabelt, obwohl wir möchten DLR stellen unsere Updates in der nächsten Version des.
Allerdings ist die Common Language Infrastructure einen großen Teil bieten, was ein Verschluss, der Code-Block, die sogenannte Delegat wird. Die Delegierten sind im Wesentlichen Funktionszeiger, obwohl sie sind erstklassige Objekte in der CLR, so auf der anderen kann Teil einer gespeicherten Signatur-Methode, Objekte Müll, gesammelt, und haben andere Eigenschaften, die Objekte. Gekoppelt mit DynamicMethods, die at-Runtime-IL (die CLR Intermediate Language) ermöglichen Generation einD-Wandlung an die Delegierten, ist IronRuby können direkt aufrufen CLR-Code, sowie aussetzen Ruby-Methoden als Delegierte für die CLR-Code zu verwenden.
Fortsetzungen sind zwar nicht Bestandteil des ISO CLI, wenn Mono unterstützt jetzt microthreading und Koroutinen am Anfang der CLI. Fortsetzungen, die es ihnen zu implementieren. Microsoft CLR unterstützt keine Fortsetzungen, so IronRuby keine Unterstützung für die "callcc" heute. IronRuby unterstützen könnte wahr Fortsetzungen nur beim Laufenauf Mono, aber nur, wenn Nutzer IronRuby drängte sie, und selbst dann würden wir wirklich gerne ein unterschiedliches Verhalten auf der Grundlage Laufzeit zu vermeiden.
IronRuby hat noch keine Unterstützung für Tail-Call-Optimierung. Tail-Call-Optimierung ist CLR unterstützt durch das, aber es ist nicht automatisch; IronRuby muss dies erkennen und richtig strahlen die Opcode für tail-call-Optimierungen, und selbst dann den Code braucht, um fit eine spezifische Kriterien für die Just-in-time-Compiler erkennen die Opcode. Doch die CLR Weg supporting ist es nicht, warum IronRuby nicht unterstützt; in Echtzeit Ruby-Code würden Sie vermutlich nie sehen tail-call-Optimierung geschieht, so haben wir keinen Bedarf für die Optimierung gesehen. Tail-Call-Optimierung der Hauptvorteil in funktionalen Sprachen ist es, die Anrufer anstelle von Frame Rekursion mit einer Schleife, anstatt einen neuen Rahmen für jeden rekursiven Aufruf wiederzuverwenden. In Ruby diese Optimierung sei unerheblich, ob ein Block oder proc in der Anrufer verwendet wurde, da ein neuer Rahmen für jeden würde erforderlich sein.
</blockquote>
Wie Integral ist ein dynamisches Feedback-Optimierung zu erreichen ein hohes Maß an Leistung? Haben Sie das Gefühl es wird möglich sein, akzeptable Geschwindigkeit in die Zukunft zu erhalten, ohne diese Strategien umarmen oder gibt es weniger bekannte Alternativen, die möglicherweise effektiver sind?
Wenn durch "dynamisches Feedback-Optimierung" Sie "Inline-Caching" bedeutet, dann ist es sehr wesentlich für Leistung IronRuby. Die Dynamic Language Runtime, die IronRuby Verwendungen für ein Ziel Syntaxbaum, Code-Generierung und-Interop mit der CLR, verwendet "polymorphen Inline-Caching", das bedeutet, dass es mit allen Caches nennen Signatur einer Methode Begegnungen, Drehen nachfolgende Aufrufe der gleichen Methode ( die gleiche Signatur) in einem Cache-Lookup für einen Delegierten vertreten die Methode. </p>
Was sind Ihre Gedanken über die Programmiersprache Ruby im Rahmen der verteilten Programmierung?
Da die Anzahl der Prozessoren sind mehr und mehr von entscheidender Bedeutung für die allgemeine Geschwindigkeit der CPUs, muss Ruby verteilte Programmierung eines First-Class-Konzept in der Sprache zu gewährleisten, die fortwährende Nutzung in diesem sich verändernden Computing-Landschaft zu machen.
Die Sprache Ruby ist sehr ausdrucksstark, und ich zweifle nicht daran, die verteilte Programmierung Paradigma wird nahtlos in Rubys Syntax. Ruby's First-Class-Schließungen und syntaktischen Zucker um sie herum (Blöcke) sind eine natürliche Art und Weise auszudrücken parallelen Operationen. Auch Rubys Enumeratoren und künftigen Features wie einen faulen-Arrays bieten die richtigen Werkzeuge zur parallelen Programmierung noch einfacher zu machen.
Allerdings ist Ruby keine native Thread-Unterstützung, so dass nichts wirklich parallel ausgeführt werden müssen, um Cross-Prozess ausgeführt werden. Während dieser Arbeit wird große Plattform für die MRT, andere haben ihre Implementierungen zu finden, diese Möglichkeiten, um die Arbeit gut auf. Ich sehe dies als Ort, wo die verschiedenen Implementierungen von Ruby step up kann und bieten eine native Runtime-basierte Variante, um Programme parallel. Für IronRuby, könnten wir nutzen die / Library/dd460693 (VS.100). Aspx "> Parallel Extensions von Bibliotheken bauen jede Ruby-basierte parallele Unterstützung on-top. In der Tat, diese Bibliotheken könnten IronRuby ab heute direkt verwendet werden. Für weitere Informationen über das Schreiben paralleler Software auf die CLR, gibt es9934811.aspx "> eine gute Menge von Beispielen.
Welche 1.8.7 und 1.9.x ist Ihre Implementierung kompatibel?
IronRuby 1,0 Zielvorgaben Kompatibilität mit den neuesten Patch-Level 1.8.6. IronRuby hat eine "-19"-Flag, damit etwaige Ruby 1.9 Funktionen entlang der Weise umgesetzt, aber es wird für die Version 1.0 deaktiviert werden.
IronRuby 1.x Drop 1.8.6 Unterstützung und einzige Ziel der neuesten Version von 1.9. Es wird nicht eine bestimmte Version der Ruby 1.8.7 Ziele sein, aber diese Funktionen wird wahrscheinlich die erste Reihe der Dinge in der 1.x-Filiale umgesetzt werden. IronRuby 1.0.x wird ein Service-Niederlassung für IronRuby 1.0 sein, und dieser Zweigniederlassung wird weiterhin nur Unterstützung 1.8.6.
Denkst Du, daß weitere Akzeptanz von Ruby gleichermaßen durch Ausgaben Mannstunden Arbeit an Leistung und durch ein internationales Gremium Sitzung der Spezifikation gefahren?
Als Ruby Implementierer, begrüße ich eine Spezifikation für Ruby, dass jeder auf stimmt so was macht die ausgezeichnete Sprache Ruby ist es, solange es nicht zu behindern indem zukünftige Features, um die Sprache. Nach einer Spezifikation wird wahrscheinlich machen es einfacher für Implementierungen auf akzeptable Leistung zu erzielen, weil sie ihr System mit allen Anforderungen des Ruby in Sicht entwerfen.
Was sind Ihre Ziele Team für das nächste Quartal, das im nächsten Jahr?
IronRuby 1.0 wird im nächsten Quartal veröffentlicht werden, mit den Zielen der Verbesserung der Inbetriebnahme deutlich, bekommen RubySpec vorbei an mehr als 95% über dem Brett, und die Gewährleistung der Vereinbarkeit mit den beliebten Applikation Test-Suiten und Szenarien. Wir werden auch einige Zeit investieren in die Nutzung der neuen Features in. NET 4 und Silverlight 4, sowie eine Push-to-Mono gewährleisten die Kompatibilität mit der neuesten Version von.
Für das nächste Jahr wird das Team auf gut 1,9 IronRuby Kompatibilität zu konzentrieren, zu erforschen Werkzeug-Optionen in Visual Studio 2010, und die Unterstützung von Ruby und Windows-Entwickler, um ein erstklassiges IronRuby Ruby-Implementierung für Windows.
Neben offensichtliche Plattform Nische, vielleicht, warum jemand von der Wahl Ihrer Ruby-Implementierung verwenden profitieren?
Wenn Sie ignorieren die Plattform Nische alle Implementierungen von Ruby sind ziemlich ähnlich. In der Tat, es ist die zugrunde liegende Plattform, die eine Art von Ruby Vorteile bietet gegenüber einer anderen. Zum Beispiel hat extrem schnelle Startup-MRT im Vergleich zu anderen Aromen, es fehlt jedoch die reiche grafische Bibliotheken, Java und. NET haben. Am Ende dreht sich alles um das Wichtigste zu den Ruby Benutzer, und in IronRuby Fall gibt es viele Plattform-bezogenen Leistungen,von denen einige auch. NET Integration in die native Windows-GUI-System läuft mit Rails unter Windows mit IIS
Wie viel ist es ein Vorteil, dass Sie nicht auch verantwortlich für die Aufrechterhaltung der VM?
Nun, für Vorspeisen es ist eine weniger Platz haben wir die Verantwortung für Fehler, obwohl der Arbeiterklasse um irgendwelche Fehler liegt in unserer Verantwortung. Wir müssen nicht befürchten VM-Plattformen über verschiedene Themen, wie die CLR und Mono kümmern, dass für uns. Mono ist extrem schnell bei der Festsetzung Bugs entdecken wir, wie eine Frage von Tagen, die definitiv zur Festsetzung sie selbst Beats. Von einem Ökosystem Point-of-view, Dinge, die gebaut werden on-top des CLR anderen interop mit Ruby-Code kostenlos, wie läuft im Browser über Silverlight / Moonlight und CLR-basierten Debugger (wie MDbg, Visual Studio, und MonoDevelop).
Windows Vista und aboves mit. NET vorinstalliert, die meisten Linux-Distributionen vorinstalliert Mono oder es ist leicht verfügbaren Pakete via, Mono und ist auch leicht installierbar auf Macs. Trotz, dass eine Reihe von Rubyists etwas für Missachtung IronRuby mit einer Beziehung auch immer zu. NET. Sind sie schüttet das Kind mit dem Bade ausschütten?
Ich würde so sagen, aber sie müssen nicht unbedingt zum "Umstieg" auf IronRuby; alle Ruby-Implementierungen haben ihre eigenen Verwendungen. Ruby ist einzigartig, es läuft fast überall, so dass Rubyists eine Vielzahl von Tools zur Auswahl, um ihre Probleme zu lösen, während noch das Schreiben von Code in Ruby. In der Tat macht diese Allgegenwart Rubyists wertvoller Entwickler. Als Ruby wird eine akzeptierte Sprache. NET Geschäften zu verwenden, wird die Nachfrage Ruby-Entwickler werden in hoch.
[Job] Northwestern University (Chicago, IL) ist Entwickler der Suche nach einem Rails an der Feinberg School of Medicine auf ihrem Campus Innenstadt von Chicago. Erleben Sie mit BDD, Agile und CI unerlässlich.
