Compilador, depurador, librerías y herramientas Clang 14 y LLVM 14 en Debian 12.

El Proyecto LLVM es una colección de compiladores modulares y reutilizables y tecnologías de cadena de herramientas. A pesar de su nombre, LLVM tiene poco que ver con las máquinas virtuales tradicionales. El nombre «LLVM» en sí no es un acrónimo; Es el nombre completo del proyecto.

LLVM comenzó como un proyecto de investigación en la Universidad de Illinois, con el objetivo de proporcionar una estrategia moderna de compilación basada en SSA capaz de soportar compilaciones estáticas y dinámicas de lenguajes de programación arbitrarios. Desde entonces, LLVM ha crecido hasta convertirse en un proyecto general que consiste en una serie de subproyectos, muchos de los cuales están siendo utilizados en la producción por una amplia variedad de proyectos comerciales y de código abierto, además de ser ampliamente utilizados en la investigación académica. El código en el proyecto LLVM está licenciado bajo la «Licencia Apache 2.0 con excepciones LLVM»

Los subproyectos principales de LLVM son:

Las bibliotecas LLVM Core proporcionan un optimizador moderno independiente de la fuente y el destino, junto con soporte de generación de código para muchas CPU populares (¡así como algunas menos comunes!) Estas bibliotecas están construidas alrededor de una representación de código bien especificada conocida como la representación intermedia de LLVM («LLVM IR»). Las bibliotecas de LLVM Core están bien documentadas y es particularmente fácil inventar su propio lenguaje (o portar un compilador existente) para usar LLVM como optimizador y generador de código.

Clang es un compilador C/C++/Objective-C «nativo de LLVM», que tiene como objetivo entregar compilaciones increíblemente rápidas, mensajes de error y advertencia extremadamente útiles y proporcionar una plataforma para construir excelentes herramientas de nivel fuente. Clang Static Analyzer y clang-tidy son herramientas que encuentran automáticamente errores en su código, y son excelentes ejemplos del tipo de herramientas que se pueden construir utilizando la interfaz de Clang como biblioteca para analizar el código C/C++.

El proyecto LLDB se basa en bibliotecas proporcionadas por LLVM y Clang para proporcionar un excelente depurador nativo. Utiliza los AST de Clang y el analizador de expresiones, LLVM JIT, desensamblador de LLVM, etc., de modo que proporciona una experiencia que «simplemente funciona». También es increíblemente rápido y mucho más eficiente en memoria que GDB al cargar símbolos.

Los proyectos libc++ y libc++ ABI proporcionan una implementación estándar y de alto rendimiento de la Biblioteca estándar de C++, que incluye soporte completo para C++ 11 y C++ 14.

El proyecto compiler-rt proporciona implementaciones altamente ajustadas de las rutinas de soporte del generador de código de bajo nivel como «__fixunsdfdi» y otras llamadas generadas cuando un objetivo no tiene una secuencia corta de instrucciones nativas para implementar una operación IR central. También proporciona implementaciones de bibliotecas en tiempo de ejecución para herramientas de pruebas dinámicas como AddressSanitizer, ThreadSanitizer, MemorySanitizer y DataFlowSanitizer.

El subproyecto MLIR es un enfoque novedoso para construir una infraestructura de compilador reutilizable y extensible. MLIR tiene como objetivo abordar la fragmentación del software, mejorar la compilación de hardware heterogéneo, reducir significativamente el costo de construir compiladores específicos de dominio y ayudar a conectar los compiladores existentes.

El subproyecto OpenMP proporciona un tiempo de ejecución de OpenMP para usar con la implementación de OpenMP en Clang.

El proyecto polly implementa un conjunto de optimizaciones de localidad de caché, así como auto-paralelismo y vectorización utilizando un modelo poliédrico.

El proyecto libclc tiene como objetivo implementar la biblioteca estándar OpenCL.

El proyecto klee implementa una «máquina virtual simbólica» que utiliza un probador de teoremas para tratar de evaluar todas las rutas dinámicas a través de un programa en un esfuerzo por encontrar errores y probar las propiedades de las funciones. Una característica importante de klee es que puede producir un caso de prueba en caso de que detecte un error.

El proyecto LLD es un nuevo vinculador. Es un reemplazo directo para los enlazadores del sistema y se ejecuta mucho más rápido.

Además de los subproyectos oficiales de LLVM, existe una amplia variedad de otros proyectos que utilizan componentes de LLVM para diversas tareas. A través de estos proyectos externos, puede utilizar LLVM para compilar Ruby, Python, Haskell, Rust, D, PHP, Pure, Lua y varios otros lenguajes. Una de las principales fortalezas de LLVM es su versatilidad, flexibilidad y reutilización, por lo que se está utilizando para una variedad tan amplia de tareas diferentes: desde compilaciones JIT livianas de lenguajes incrustados como Lua hasta compilar código Fortran para super masivos ordenadores.

Tanto como todo lo demás, LLVM tiene una comunidad amplia y amigable de personas que están interesadas en construir excelentes herramientas de bajo nivel. Si está interesado en participar, un buen primer lugar es hojear el Blog de LLVM y registrarse en la lista de correo de Desarrolladores de LLVM. Para obtener información sobre cómo enviar un parche, obtener acceso de confirmación y temas de derechos de autor y licencia, consulte la Política para desarrolladores de LLVM.

Instalar clang completo en debian 12 reléase 14:

LLVM

$ sudo apt install llvm llvm-runtime llvm-14-doc

Clang

$ sudo apt install clang clang-tools python3-clang

lld

$ sudo apt install lld lldb

Ya tienen en Linux el compilador,depurador, librerías y herramientas necesarias para desarrollar software, en lenguajes de programación C/C++/Objective-C.

Print Friendly, PDF & Email
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)

Soy Ojosdegato, un profeta y predicador que evangeliza la tecnología, la informática y telecomunicaciones, acompáñame en mi aventura y pasión por los sistemas abiertos Unix/Linux en las redes sociales y web.

También me gustan las furgonetas por ser más espaciosas y seguras que un coche.

Artículos relacionados

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Descubre más desde Izetic.com

Suscríbete ahora para seguir leyendo y obtener acceso al archivo completo.

Seguir leyendo