top of page

LLVM co-rutinas llegan a C++, mientras esperan Swift y Rust

InfoWorld

LLVM, el marco de compilación de código abierto que se utiliza como parte de la cadena de herramientas de idiomas, como Rust y Swift, fue actualizado hasta la versión 4.0.

La adición más llamativa es el apoyo a las co-rutinas, una construcción que se encuentra en muchos lenguajes de programación modernos que pueden ser usadas como una alternativa menos engorrosa, aunque un poco menos potente, al enhebrado

Anteriormente, un lenguaje con co-rutinas compilado en LLVM hubiese debido implementarlas manualmente. LLVM 4.0 agrega el soporte para su creación directamente en el compilador, por medio de nuevas instrucciones en su representación intermedia (IR).

En este momento, el apoyo de la co-rutina es experimental y tiene que ser activado explícitamente en LLVM. También se debe habilitar desde el lado del lenguaje. La recopilación del código existente en LLVM 4.0 no agregará automáticamente las instrucciones de la co-rutina.

Para ello, el siguiente paso será que los lenguajes respaldados por LLVM aprovechen el soporte de la co-rutina en el compilador. Rust, uno de los proyectos más prominentes que hoy utilizan LLVM, es el candidato probable. Irónicamente, no tiene co-rutinas como una característica de lenguaje nativo, no por falta de apoyo LLVM, sino debido a la discusión en curso sobre la mejor manera para que apoye oficialmente esta característica.

Algunas implementaciones existentes podrían ser usadas como una base, pero oficialmente todavía está lejos de ser logrado.

Con Swift también hay discusiones sobre la adición de co-rutinas y otras características de concurrencia, aunque está programado agregarlas en la próxima versión del lenguaje. Chris Lattner, el desarrollador jefe original de Swift, declaró que una funcionalidad de este tipo sería considerada “junto con cualquier enfoque de concurrencia / asincronancia que abordemos (probablemente en Swift 4)”.

Para los curiosos acerca de cómo LLVM lo hace internamente, Gor Nishanov, integrante del equipo de Microsoft Visual C ++ , proporcionó los detalles con diapositivas en una presentación de la Reunión de desarrolladores de LLVM 2016.

Las notas son altamente técnicas, pero dejan claro que las co-rutinas han sido firmemente integradas en LLVM, con el compilador consciente de las co-rutinas a lo largo de cada etapa del proceso de optimización.

“LLVM está comprometido con el apoyo a las co-rutinas C ++. Su representación en LLVM es neutral del lenguaje y se puede utilizar para apoyarlas en otros idiomas “, se lee en el resumen de la demostración. 

Comments


bottom of page