Question

Quelqu'un at-il déjà travaillé pour que Ruby poursuive ses activités (comme Seaside sur Smalltalk)?

Était-ce utile?

La solution

Oui, dans la plupart des cas. MRI (1.8) les a pris en charge autant que ma mémoire est atteinte, Ruby 1.9 (YARV) le fait aussi , tout comme Rubinius. JRuby et IronRuby n'ont pas de continuité, et il est peu probable qu'ils l'obtiennent (JVM et CLR utilisent stack-instrospection pour la sécurité)

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

continuations sur ruby-doc

Les frameworks Web basés sur la continuité (comme seaside ou l’un de la bibliothèque standard d’Arc) semblent moins populaires. J'ai trouvé des wee qui prétendent vous permettre de faire des continuations facultatives, mais je ne les ai jamais utilisées.

Autres conseils

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

Ruby 1.9 ne les supporte pas depuis longtemps. Ils ont été ajoutés quelque temps cette année, mais la plupart des autres interprètes Ruby (JRuby, IronRuby, etc.) ne les prennent pas en charge.

Si vous voulez que votre code soit utilisable sur d'autres plates-formes que Ruby, je vous suggère de ne pas les utiliser.

Lisez cet article d'InfoQ pour plus d'informations. discussion approfondie sur le sujet.

Btw ceci est un exemple d'exception redémarrable ( aka conditions) implémenté en utilisant des continuations. Je l'ai utilisé quelques fois et c'est une bonne chose d'avoir une boîte à outils Ruby.

Neverblock utilise des fibres 1.9 pour un serveur Web ruby ??à un seul thread

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top