Hat jemand jemals Arbeit getan, um Ruby Fortsetzungen zu machen (wie Seaside auf Smalltalk)?Fortsetzungen in Ruby
Antwort
Ja, in den meisten Fällen. MRI (1.8) haben sie unterstützt, soweit mein Gedächtnis reicht, Rubin 1.9 (YARV) does it, too, so tut Rubinius. JRuby und IronRuby haben keine Fortsetzungen, und es ist ziemlich unwahrscheinlich, sie bekommen sie (JVM und CLR Verwendung Stack-instrospection für Sicherheit)
Rubin als eine Sprache Fortsetzungen über callcc
Schlüsselwort unterstützt. Sie werden beispielsweise verwendet, um die Klasse Generator
aus der Standardbibliothek zu implementieren.
Continuation-basierte Web-Frameworks (wie am Meer, oder ein von Arc std. Bibliothek) scheinen weniger beliebt. Ich habe wee gefunden, die behaupten, Sie optionale Fortsetzungen machen zu lassen, aber ich habe es nie benutzt.
Wie bereits erwähnt, unterstützt Ruby 1.8 Fortsetzungen.
Ruby 1.9 hat sie jedoch eine Weile nicht unterstützt. Sie wurden dieses Jahr einige Male hinzugefügt, aber die meisten anderen Ruby-Interpreter (JRuby, IronRuby, etc.) unterstützen sie nicht.
Wenn Sie möchten, dass Ihr Code auf anderen Plattformen als dem Mainline-Ruby verwendet werden kann, würde ich vorschlagen, sie nicht zu verwenden.
Lesen Sie this InfoQ article für eine umfassendere Diskussion über das Thema.
neverblock verwendet 1,9-Fasern für einen einzelnen Gewinderubin Webserver
BTW this ist ein Beispiel der wiederanlauf Ausnahmen (aka-Bedingungen) umgesetzt Fortsetzungen verwenden. Ich habe es einige Male benutzt und es ist eine coole Sache in einer Ruby Toolbox zu haben.