virtuales sirve qué que programacion para máquina maquinas maquina machine implicaciones ejemplos descargar computadora haskell jvm vm-implementation

haskell - sirve - que es la jvm de java y sus implicaciones



¿Qué impide una máquina virtual Haskell eficiente(como JVM)? (6)

Me he estado preguntando, ¿qué impide el desarrollo de una máquina virtual eficiente como JVM o PyPy para Haskell (excepto quizás el esfuerzo de desarrollo)? ¿Es la estructura del lenguaje? Creo que los idiomas, que son más difíciles de interpretar de manera eficiente (como Python, al ser muy dinámicos), ya tienen máquinas virtuales decentes.

Además, si nada está obstruyendo tal implementación, ¿STG sería un buen "código de bytes" de destino, ya que todas las optimizaciones se realizan en Core?

¿Hay algún artículo o publicación de blog que discuta este tema?

EDICIONES:

  • Soy consciente de HaLVM , pero no creo que sea lo que quiero decir.
  • También soy consciente de runhaskell , pero no es eficiente en absoluto.

¿Qué impide una eficiente máquina virtual Haskell?

Nada, ya ha habido uno, el LVM de Daan Leijen. Era lo suficientemente eficiente como para ser utilizado para el sistema de tiempo de ejecución de Helium (el "lenguaje de enseñanza" de Haskell de la Universidad de Utrecht).

Dicho esto, no sé si se usa en estos días, por lo que la pregunta "¿Qué impide una máquina virtual Haskell eficiente?" Podría responderse como mano de obra, inversión continua , etc. Cuando Haskell ya tiene un buen compilador, una buena máquina virtual es un lujo, como señaló Paulo Pinto.


Nada impide que Haskell tenga una máquina virtual. Haskell funciona a la perfección en la JVM y puede ser incluso más rápido que GHC después del calentamiento de JIT en los casos en que el código generado golpea el punto óptimo del compilador JIT. Vea Eta , un proyecto que trae a GHC 7.10.3 Haskell completo en la JVM con interoperabilidad Java de tipo seguro. Solo requiere mucha paciencia y tiempo para trabajar.



No tengo conocimiento de ninguna restricción técnica que se aplique aquí. Hay un lenguaje llamado Frege , semánticamente cerca de Haskell, que se dirige a JVM. Así que es solo que nadie ha considerado hasta ahora que un compilador de Haskell a JVM haya valido la pena. De hecho, como escéptico de la JVM, me pregunto qué me depararía eso. Si es solo una portabilidad de lenguaje intermedio, preferiría trabajar en LLVM o en una granja de servidores binaria preconstruida.


No tengo una manera de publicar un comentario, y esto es quizás más un anti-VM que un compilador de código nativo, pero el OP podría estar interesado en el Reduceron.


UHC tiene un backend de Javascript que, por supuesto, se ejecuta en el motor de Javascript de un navegador. Quiero decir que no veo nada que impida a Haskell apuntar a diferentes backends. De hecho, creo que UHC fue diseñado para que sea más fácil apuntar a diferentes backends.