2008-09-29 6 views

Répondre

12

Oui, dans la plupart des cas. MRI (1.8) les a soutenus autant que ma mémoire atteint, Ruby 1.9 (YARV) does it, too, ainsi que Rubinius. JRuby et IronRuby n'ont pas de suites, et il est peu probable qu'ils les obtiennent (JVM et CLR utilisent la pile-instrospection pour la sécurité)

Ruby en tant que langage prend en charge les suites via le mot-clé callcc. Ils sont utilisés, par exemple, pour implémenter la classe Generator à partir de la bibliothèque standard.

continuations on ruby-doc

frameworks web basé continuation (comme bord de mer, ou un de la bibliothèque std. Arc) semblent moins populaires. J'ai trouvé wee qui prétend vous laisser faire des suites facultatives, mais je ne l'ai jamais utilisé.

6

Comme d'autres l'ont déjà dit, Ruby 1.8 prend en charge les continuations.

Ruby 1.9 ne les a pas supportés pendant un moment. Ils ont été rajoutés quelque temps cette année, mais la plupart des autres interprètes Ruby (JRuby, IronRuby, etc) ne les supportent pas.

Si vous voulez que votre code soit utilisable sur d'autres plateformes que la ligne principale Ruby, je vous suggère de ne pas les utiliser.

Lire this InfoQ article pour une discussion plus complète sur le sujet.

1

neverblock utilise 1,9 fibres pour un seul serveur web rubis fileté

2

BTW this est un exemple d'exceptions réexécutables (aka conditions) implémenté en utilisant continuations. Je l'ai utilisé plusieurs fois et c'est cool d'avoir une boîte à outils Ruby.