Pergunta

Alguém já fez trabalho para chegar Ruby para fazer continuações (como Mar em Smalltalk)?

Foi útil?

Solução

Sim, na maioria dos casos. MRI (1,8) apoiaram-los, tanto quanto meus alcances de memória, Ruby 1.9 (YARV) isso também , o mesmo acontece com Rubinius. JRuby e IronRuby não têm continuações, e é muito improvável que eles vão buscá-los (JVM e CLR uso pilha-introspecção para segurança)

Ruby como uma linguagem suporta continuações através de palavras-chave callcc. Eles são usados, por exemplo, para implementar classe Generator da biblioteca padrão.

continuações no ruby-doc

baseado em continuação frameworks web (como à beira-mar, ou um de std. Biblioteca de Arc) parecem menos popular. Eu encontrei wee que pretendem deixá-lo fazer continuações opcionais, mas eu nunca usei.

Outras dicas

Como outros já disse, Ruby 1.8 suporta continuações.

Ruby 1.9 não apoiou-los por um tempo no entanto. Eles foram adicionados de volta algum tempo este ano, mas a maioria dos outros intérpretes Ruby (JRuby, IronRuby, etc) não apoiá-los.

Se você quiser que o seu código para ser usado em outras plataformas que não a linha principal Ruby, eu sugiro que não usá-los.

Leia este artigo InfoQ para uma mais discussão abrangente sobre o tema.

este é um exemplo de exceções reinicializáveis ??( aka condições) implementado usando continuações. Eu usei-o algumas vezes e é uma coisa legal para ter em uma caixa de ferramentas Ruby.

neverblock usa 1,9 fibras por um único servidor de rosca ruby ??web

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top