Articulo de referencia

Elevador de grúa

{{Cite web|url=https://github.com/bytecodealliance/wasmtime/blob/main/cranelift/codegen/LICENSE|title=LICENSE.md|website=[[GitHub]] }} "},"website":{"wt":"{{URL|https://cranelif...

Cranelift (anteriormente conocido como Cretonne ) es un backend de compilador optimizador que convierte una representación intermedia independiente del destino en código máquina ejecutable . Está escrito en Rust . El proyecto comenzó en 2016 y actualmente lo desarrolla Bytecode Alliance . [ 2 ] [ 3 ] Cranelift se centra en la compilación justo a tiempo y la compilación anticipada , siendo un objetivo explícito del proyecto la reducción del tiempo de compilación. [ 4 ]

A partir de 2025, Cranelift es compatible con arquitecturas de conjuntos de instrucciones como x86-64 , AArch64 , RISC-V e IBM z/Architecture , además de ofrecer posibilidades de reorientación publicitaria .

Historia

Antes de la reescritura del marco de trabajo del backend en 2020, el proyecto utilizaba una única representación intermedia (IR) en todas las etapas de compilación previas a la generación del código máquina: CLIF (Cranelift IR Format). El diseño anterior empleaba la legalización de instrucciones , que consistía en transformar continuamente la IR de alto nivel hasta que cada instrucción CLIF correspondiera a una instrucción de la máquina de destino, momento en el que se podía generar el código ejecutable .

En 2020, el backend se reescribió para usar un IR separado y específico de la máquina llamado VCode para las etapas de compilación posteriores. Después de esta reescritura, un CLIF de entrada de alto nivel sería optimizado por una capa intermedia antes de ser convertido a VCode , que sería transformado aún más por los pasos restantes en el backend. [ 4 ] También se agregó Peepmatic , una herramienta utilizada para generar un optimizador de peephole a partir de un lenguaje específico de dominio (DSL), [ 5 ] aunque posteriormente se eliminó. [ 6 ]

En 2022, se añadió un nuevo asignador de registros , adaptado del asignador de registros de IonMonkey . Además, se rediseñó el marco de trabajo del backend para utilizar ISLE ( Instruction Selection /Lowering Expressions DSL), otro DSL del proyecto creado para facilitar el desarrollo de la etapa de selección de instrucciones en los backends. [ 7 ]

A mediados de 2022 se añadieron pasos de optimización que utilizan e-grafos. [ 8 ] Los pasos de optimización están habilitados por defecto a partir de 2023.

Aplicaciones

Cranelift es utilizado por múltiples entornos de ejecución de WebAssembly , como Wasmtime  y Wasmer  , con un rendimiento comparable al de los entornos de ejecución basados ​​en LLVM. [ 9 ]

También existe un generador de código alternativo para el compilador de Rust que funciona con Cranelift. [ 10 ]

Véase también

Referencias

  1. "LICENSE.md" . GitHub .
  2. ^ "GitHub: bytecodealliance/cranelift en 399be07fcf00d0974d2a83d1af55f0bee9861d54" . GitHub . Consultado el 26 de enero de 2023 .
  3. "wasmtime/cranelift en main · bytecodealliance/wasmtime" . GitHub . Consultado el 26 de enero de 2023 .
  4. 1 2 Fallin, Chris. "Un nuevo backend para Cranelift, parte 1: selección de instrucciones" . cfallin.org . Consultado el 26 de enero de 2023 .
  5. "Presentamos peepmatic: un DSL de optimización de mirillas y un compilador de optimizadores de mirillas de fitzgen · Solicitud de extracción n.° 1647 · bytecodealliance/wasmtime" . GitHub .
  6. "Remove Peepmatic!!! by fitzgen · Pull Request #3543 · bytecodealliance/wasmtime" . GitHub . Consultado el 3 de febrero de 2023 .
  7. Fallin, Chris. "Selector de instrucciones DSL de Cranelift, ISLE: Reescritura de términos hecha práctica" . cfallin.org . Consultado el 26 de enero de 2023 .
  8. "egraph-based midend: dibuja el resto del búho (en producción). por cfallin · Solicitud de extracción n.° 4953 · bytecodealliance/wasmtime" . GitHub . Consultado el 26 de enero de 2023 .
  9. Denis, Frank. "Rendimiento de los entornos de ejecución de WebAssembly en 2023 | Reflexiones aleatorias de Frank DENIS" . 00f.net . Consultado el 26 de enero de 2023 .
  10. "Backend de generación de código Cranelift para Rust" . GitHub . 8 de enero de 2025. Consultado el 8 de enero de 2025 .
Obtenido de " https://en.wikipedia.org/w/index.php?title=Cranelift&oldid=1329157600 "