Ruby に継続を行わせる作業を行った人はいますか (Smalltalk の Seaside のように)。
4 に答える
はい、ほとんどの場合。MRI (1.8) は私の記憶が届く限りそれらをサポートしており、Ruby 1.9 (YARV) もサポートしており、Rubiniusもサポートしています。JRuby と IronRuby には継続がなく、それらが取得される可能性はほとんどありません (JVM と CLR はセキュリティのためにスタック インストロスペクションを使用します)。
言語としての Ruby は、callcc
キーワードによる継続をサポートします。たとえば、Generator
標準ライブラリからクラスを実装するために使用されます。
継続ベースの Web フレームワーク (seaside や Arc の std. ライブラリのフレームワークなど) はあまり人気がないようです。オプションの継続を実行できると主張するウィーを見つけましたが、使用したことはありません。
他の人がすでに言っているように、Ruby 1.8 は継続をサポートしています。
ただし、Ruby 1.9 ではしばらくサポートされていません。今年になって再び追加されましたが、他のほとんどの Ruby インタープリター (JRuby、IronRuby など) はそれらをサポートしていません。
メインラインの Ruby 以外のプラットフォームでコードを使用できるようにしたい場合は、それらを使用しないことをお勧めします。
このトピックに関するより包括的な議論については、この InfoQ 記事をお読みください。
ところで、これは継続を使用して実装された再開可能な例外 (別名条件) の例です。数回使用しましたが、Ruby のツールボックスに入れておくと便利です。
neverblockは、シングルスレッドのrubyWebサーバーに1.9ファイバーを使用します