Rust: Substituição de código quente

Criado em 10 mai. 2013  ·  6Comentários  ·  Fonte: rust-lang/rust

Olá, eu assisti a este http://www.youtube.com/watch?v=apZYqHPqzYo e pensei que seria bom ter uma substituição de código quente no Rust também.

Em Java, você tem o projeto OSGi (http://www.osgi.org/Main/HomePage) e hotswap (http://code.google.com/p/hotswap/), que facilita a atualização e alteração de módulos de seu aplicativo sem tocar em outros módulos.

E-hard

Comentários muito úteis

Todos 6 comentários

É realmente extremamente difícil fazer isso com código nativo, especialmente em uma plataforma cruzada. As VMs têm mais facilidade porque têm controle total sobre o carregamento de bytecode, geração de código, colocação de código, etc.

Não estou atualizado sobre as pesquisas mais recentes sobre o assunto, mas achei Kitsune: Atualização de software dinâmica de uso geral eficiente para C (OOPSLA 2012) interessante.

visitado para triagem, 17 de julho de 2013. Hot-swapping é realmente complicado, embora algumas das coisas necessárias para suportá-lo (por exemplo, marcar páginas como executáveis; liberação de cache I, etc.) também sejam necessárias para oferecer suporte a um compilador JIT.

Suspeito que também precisaríamos de código independente de posição (PIC). O artigo Kitsune realmente cobre transformações ainda mais agressivas, por exemplo, a migração dos layouts de dados entre as versões. (Eu apenas dei uma olhada naquele artigo neste momento.)

Isso seria legal, mas me sinto confortável em dizer que provavelmente não vai acontecer. Acho que existem muitos outros problemas difíceis que são mais convincentes.

Isso foi feito algumas vezes com código compilado através do LLVM e seu JIT. O que o joga em uma VM e permite fazer as mesmas coisas que Erlang pode fazer dentro de sua VM ...
Inspiração: http://vimeo.com/36579366
Exemplos com C ++:

Se alguém quiser usar uma VM de baixo nível, acho que também pode fazer no Rust ... Para algo assim funcionar, você precisa adicionar o comportamento da VM de qualquer maneira ...

Esta página foi útil?
0 / 5 - 0 avaliações