2 puntos por GN⁺ 2023-07-01 | 2 comentarios | Compartir por WhatsApp
  • Se propone eliminar las bibliotecas LLVM, Clang y LLD del proyecto Zig.
  • Zig planea contar con sus propios pases de optimización y atraer proyectos de investigación y contribuciones de fabricantes de chips.
  • Eliminación en Zig de la capacidad de compilar C++, Objective-C y Objective-C++.
  • El código máquina generado por Zig podría ser menos competitivo en el futuro cercano, pero a largo plazo podría alcanzar o superar a LLVM y GCC.
  • Entre los beneficios de eliminar LLVM están una propiedad más clara de los bugs, compilación y bootstrapping más sencillos, mayor velocidad de compilación y la capacidad de implementar pases de optimización personalizados.
  • Se plantearon preocupaciones sobre el impacto en los proyectos que dependen de la compilación de C++ y sobre una posible disminución en la adopción de Zig.
  • Podría ser difícil eliminar las dependencias de DirectXShaderCompiler y del compilador de shaders Metal de Apple.
  • A largo plazo, se busca impulsar la transición hacia una solución puramente en Zig.
  • Algunos usuarios están preocupados por el impacto en la experiencia de desarrollo de juegos y en el uso de bibliotecas y herramientas existentes de C++.
  • Se elogia la simplicidad de Zig y su capacidad multiplataforma.
  • Se propuso mantener el backend de LLVM como configuración predeterminada, o conservar el soporte para la familia C mientras se elimina la bajada a LLVM IR.
  • Los usuarios destacan la importancia de que Zig pueda compilar sin fricciones código C/C++ y generar binarios con buen rendimiento.
  • Se discutió la posible pérdida de bibliotecas existentes y la necesidad de alternativas para la compilación JIT.
  • La propuesta es percibida por algunos como un impacto puramente negativo para los usuarios y como un posible señuelo.
  • Se enfatiza la importancia de mantener las capacidades de Zig para compilación cruzada e integración con bibliotecas existentes.
  • Se propuso eliminar las dependencias de LLVM y LLD, manteniendo clang como dependencia opcional.
  • Se expresaron preocupaciones sobre el impacto en el rendimiento y sobre la viabilidad de reemplazar LLVM.
  • Se subraya la importancia del soporte de compilación de C++ para el desarrollo de juegos y otros proyectos.
  • Se mencionó la posibilidad de que Zig pueda reemplazar con el tiempo las capacidades de LLVM.
  • Se discutió la necesidad de garantías de rendimiento razonables y la posible pérdida de margen de optimización.
  • Se mencionó el impacto en bibliotecas y herramientas específicas como ImGui y Tracy.
  • La propuesta de eliminar LLVM de la toolchain de Zig podría provocar una división en la comunidad de Zig.
  • Algunos usuarios podrían usar versiones anteriores de Zig para evitar migrar.
  • Mantener LLVM también implica desafíos y limitaciones.
  • Un sistema de plugins para el compilador de Zig podría ser una solución a largo plazo.
  • Seguiría siendo posible compilar programas Zig para otras plataformas y lenguajes.
  • zig cc, una función distintiva de Zig, podría seguir evolucionando como un proyecto propio.
  • Aún no se ha tomado una decisión final sobre la propuesta.
  • La discusión sobre eliminar LLVM se está extendiendo en redes sociales.
  • zig cc es muy valorado en la comunidad y ofrece ventajas frente a otras toolchains.
  • Es posible mantener zig cc sin Clang.
  • Un proyecto separado que empaquete Clang podría dar soporte a los casos de uso actuales de construir código C++ con Zig.
  • Separar herramientas o contratar mantenedores para conservar zig cc son posibles soluciones.
  • Podrían desarrollarse herramientas de migración para bases de código que dependan de las funciones eliminadas.
  • Recientemente, un ingeniero de software migró un proyecto a una versión moderna de GHC que usa un generador de código nativo para ofrecer tiempos de compilación más rápidos.
  • El proyecto Silk.NET usa zig cc y zig c++ para ofrecer un entorno de compilación reproducible para bibliotecas nativas, facilitando la compilación cruzada y la configuración local.
  • Un ingeniero de software usa zig cc y zig c++ en proyectos personales para facilitar la compilación cruzada de bibliotecas y una configuración única con build.zig.
  • El compilador Intel C/C++ completó la adopción de LLVM para ofrecer tiempos de compilación más rápidos, mejor optimización y soporte para offloading a GPU y FPGA.
  • La propuesta de mover la parte de LLVM de Zig a un proyecto separado mantenido por la comunidad recibió reacciones mixtas.
  • Algunos usuarios expresan preocupación por eliminar el soporte de C++ en Zig, mientras que otros sostienen que mantener ese soporte es costoso y no está contemplado en el presupuesto.
  • El equipo de Zig sugiere que quienes consideran importante el soporte de C++ deberían pensar en contribuir con dinero o tiempo para sostener esa funcionalidad.
  • Algunos usuarios señalan que eliminar LLVM podría traer beneficios a largo plazo, pero expresan preocupación por quitar por completo el soporte para C++ y Obj-C(++).
  • Existe una propuesta para reducir el compilador de Zig a un binario más pequeño y liviano, agregando las capacidades de LLVM como una extensión.

2 comentarios

 
alstjr7375 2023-07-02

¿Será posible lograr tanta optimización o soporte de plataformas como con LLVM..

 
GN⁺ 2023-07-01
Opiniones en Hacker News
  • El equipo de desarrollo de Zig está considerando eliminar la dependencia de LLVM
  • Algunas personas temen que esta transición desde LLVM desvíe el enfoque del equipo de Zig de Zig en sí
  • Otras creen que reescribir partes de LLVM dentro de Zig podría ser un proyecto genial y ambicioso
  • Si Zig deja de depender de LLVM, existen preocupaciones sobre la generación de código y el bootstrap
  • Algunas personas sienten que eliminar LLVM es una decisión apresurada y podría limitar el soporte de plataformas de Zig
  • Un comentarista criticó la propuesta por subestimar la carga de trabajo e ignorar el trabajo hecho sobre LLVM
  • Los sacrificios de eliminar LLVM incluyen la pérdida de compatibilidad con C++ y una posible pérdida de rendimiento
  • Algunos usuarios temen que descontinuar el soporte para ciertas arquitecturas afecte la popularidad de Zig
  • Un comentarista mencionó que la popularidad de Zig se debe en parte a su compatibilidad con C/C++ y a su facilidad de instalación
  • Se propuso que Zig use bytecode personalizado en los builds de depuración y que en los builds de lanzamiento siga dependiendo de LLVM
  • El lenguaje D tiene varios compiladores con distintos backends, y los usuarios agradecen esa posibilidad de elección
  • La toolchain de Zig es muy valorada, y eliminar Zig cc y Zig c++ podría hacer que los usuarios del lenguaje lo piensen dos veces
  • Algunos comentaristas creen que la decisión de eliminar funciones de C++ podría perjudicar el éxito futuro de Zig.