stringtranslate.com

glibc

La biblioteca GNU C , comúnmente conocida como glibc , es la implementación del Proyecto GNU de la biblioteca estándar C. Es un contenedor de las llamadas al sistema del kernel de Linux para uso de aplicaciones. A pesar de su nombre, ahora también soporta directamente C++ (e, indirectamente, otros lenguajes de programación ). Fue iniciado en la década de 1980 por la Free Software Foundation (FSF) para el sistema operativo GNU .

glibc es un software gratuito publicado bajo la licencia pública general reducida GNU . [3] El proyecto GNU C Library proporciona las bibliotecas principales para el sistema GNU, así como para muchos sistemas que utilizan Linux como núcleo . Estas bibliotecas proporcionan API críticas que incluyen ISO C11 , POSIX.1-2008 , BSD , API específicas del sistema operativo y más. Estas API incluyen funciones fundamentales como abrir , leer , escribir , malloc , printf , getaddrinfo , dlopen , pthread_create , crypt , iniciar sesión , salir y más.

Historia

Ulrich Drepper en 2007, autor principal de glibc
La biblioteca GNU C es un contenedor para las llamadas al sistema del kernel de Linux .
El kernel de Linux y la biblioteca GNU C juntos forman la API de Linux . Después de la compilación, los binarios ofrecen un ABI .

El proyecto glibc fue escrito inicialmente en su mayor parte por Roland McGrath, que trabajaba para la Free Software Foundation (FSF) en el verano de 1987 cuando era un adolescente. [10] [11] En febrero de 1988, FSF describió que glibc casi había completado la funcionalidad requerida por ANSI C. [12] En 1992, tenía implementadas las funciones ANSI C-1989 y POSIX.1-1990 y se estaba trabajando en POSIX.2. [13] En septiembre de 1995, Ulrich Drepper hizo su primera contribución al glibc y en 1997 la mayoría de los compromisos fueron realizados por él. Drepper ocupó el puesto de mantenimiento durante muchos años y hasta 2012 acumuló el 63% de todos los compromisos con el proyecto. [14]

En mayo de 2009, se migró glibc a un repositorio Git . [14]

En 2010, se resolvió un problema de licencia causado por la implementación de Sun RPC en glibc que no era compatible con GPL . Se solucionó volviendo a otorgar la licencia de los componentes Sun RPC bajo la licencia BSD . [15] [16]

En 2014, glibc sufrió un error de rotura de ABI en s390. [17]

En julio de 2017, 30 años después de fundar glibc, Roland McGrath anunció su marcha, "declarándome mantenedor emérito y retirándome de la participación directa en el proyecto. Estos últimos meses, si no los últimos años, han demostrado que no necesitarme más". [10]

En 2018, el mantenedor Raymond Nicholson eliminó una broma sobre el aborto del código fuente de glibc. Fue restaurado posteriormente por Alexandre Oliva después de que Richard Stallman exigiera su devolución. [18]

En 2021, se eliminó del proyecto el requisito de cesión de derechos de autor a la Free Software Foundation . [19]

Horquilla y variante

En 1994, los desarrolladores del kernel de Linux bifurcaron glibc. Su bifurcación, "Linux libc", se mantuvo por separado hasta alrededor de 1998. Debido a que la atribución de derechos de autor era insuficiente, los cambios no se pudieron fusionar con GNU Libc. [20] Cuando la FSF lanzó glibc 2.0 en enero de 1997, los desarrolladores del kernel descontinuaron Linux libc debido al cumplimiento superior de glibc 2.0 con los estándares POSIX. [21] glibc 2.0 también tenía una mejor internacionalización y una traducción más profunda, capacidad IPv6 , acceso a datos de 64 bits, funciones para aplicaciones multiproceso, compatibilidad con versiones futuras y el código era más portátil. [22] La última versión utilizada de Linux libc utilizó el nombre interno ( soname ) libc.so.5 . A partir de esto, glibc 2.x en Linux usa el nombre soname libc.so.6 [23] [ se necesita una mejor fuente ]

En 2009, Debian y varios derivados cambiaron de glibc a la variante [25] eglibc. [26] Eglibc contó con el apoyo de un consorcio formado por Freescale , MIPS , MontaVista y Wind River . [27] Contenía cambios que lo hacían más adecuado para el uso integrado y agregaba soporte para arquitecturas que no eran compatibles con glibc, como el PowerPC e500 . El código de eglibc se fusionó nuevamente con glibc en la versión 2.20. [28] Desde 2014, eglibc está discontinuado. El Proyecto Yocto y Debian también regresaron a glibc desde el lanzamiento de Debian Jessie . [29]

Comité Directivo

A partir de 2001, el desarrollo de la biblioteca fue supervisado por un comité [30] , siendo Ulrich Drepper [31] el principal colaborador y mantenedor. La instalación del comité directivo estuvo rodeada de controversia pública, ya que Ulrich Drepper la describió abiertamente como una fallida maniobra hostil de adquisición por parte de Richard Stallman . [32] [33] [34] [35]

En marzo de 2012, el comité directivo votó a favor de disolverse y destituir a Drepper en favor de un proceso de desarrollo impulsado por la comunidad, con Ryan Arnold, Maxim Kuvyrkov, Joseph Myers, Carlos O'Donell y Alexandre Oliva asumiendo la responsabilidad del mantenimiento de GNU (pero sin poder adicional de toma de decisiones). [36] [37] [38]

Funcionalidad

glibc proporciona la funcionalidad requerida por la especificación única de UNIX , POSIX (1c, 1d y 1j) y algunas de las funciones requeridas por las interfaces ISO C11 , ISO C99 , Berkeley Unix (BSD), la definición de interfaz System V (SVID) y la Guía de portabilidad de X/Open (XPG), edición 4.2, con todas las extensiones comunes a los sistemas compatibles con XSI (X/Open System Interface) junto con todas las extensiones de X/Open UNIX.

Además, glibc también proporciona extensiones que se han considerado útiles o necesarias durante el desarrollo de GNU .

Hardware y kernels compatibles

glibc se utiliza en sistemas que ejecutan muchos núcleos diferentes y diferentes arquitecturas de hardware . Su uso más común es en sistemas que utilizan el kernel Linux en hardware x86 , sin embargo, el hardware oficialmente soportado [39] incluye: ARM , ARC , C-SKY, DEC Alpha , IA-64 , Motorola m68k , MicroBlaze , MIPS , Nios II , PA-RISC , PowerPC , RISC-V , s390 , SPARC y x86 (las versiones anteriores admiten TILE ). Es compatible oficialmente con los kernels Hurd y Linux . Además, existen versiones con muchos parches que se ejecutan en los núcleos de FreeBSD y NetBSD (a partir de los cuales se construyen los sistemas Debian GNU/kFreeBSD y Debian GNU/NetBSD , respectivamente), así como una versión bifurcada de OpenSolaris . [40] También se utiliza (en una forma editada) y se denomina libroot.so en BeOS y Haiku . [41]

Uso en dispositivos pequeños

glibc ha sido criticada en el pasado por estar " inflada " y ser más lenta que otras bibliotecas, por ejemplo por Linus Torvalds [42] y programadores integrados de Linux . Por esta razón, se han creado varias bibliotecas estándar de C alternativas que enfatizan un menor espacio. Sin embargo, muchos proyectos de dispositivos pequeños utilizan GNU libc en lugar de alternativas más pequeñas debido a su soporte de aplicaciones, cumplimiento de estándares e integridad. Los ejemplos incluyen Openmoko [43] y Familiar Linux para dispositivos portátiles iPaq (cuando se utiliza el software de visualización GPE ). [44]

Funciones de cadena seguras

glibc no implementa interfaces de verificación de límites definidas en C11 y no implementó strlcpy y strlcat [45] [46] hasta 2023 con el argumento de que "en la práctica, estas funciones pueden causar problemas, ya que su uso previsto fomenta el truncamiento silencioso de datos y agrega complejidad". e ineficiencia, y no previene todos los desbordamientos del buffer en los destinos". [47] Las preguntas frecuentes señalaron que las interfaces de verificación de límites eran opcionales en el estándar ISO y que snprintf estaba disponible como alternativa. [47]

Capas de compatibilidad

Hay capas de compatibilidad (" shims ") para permitir que los programas escritos para otros ecosistemas se ejecuten en sistemas que ofrecen interfaces glibc. Estos incluyen libhybris , una capa de compatibilidad para Bionic de Android , y Wine , que puede verse como una capa de compatibilidad desde las API de Windows hasta glibc y otras API nativas disponibles en sistemas tipo Unix.

Ver también

Notas

  1. ^ LGPL-2.1 o posterior desde el 6 de julio de 2001, versión 2.2.4. [3] [4]
  2. ^ LGPL-2.0 o posterior desde 1992 hasta el 5 de julio de 2001. ¿Versión 1.04? a 2.2.3. [5] [6]

Referencias

  1. ^ Corbet, Jonathan (28 de marzo de 2012). "Un punto de inflexión para GNU libc". LWN.net. Archivado desde el original el 23 de abril de 2016 . Consultado el 5 de abril de 2012 .
  2. ^ "La versión 2.40 de la biblioteca GNU C ya está disponible". 22 de julio de 2024 . Consultado el 23 de julio de 2024 .
  3. ^ ab "sourceware.org Git – glibc.git/blob – Makefile". fuenteware.org . Archivado desde el original el 10 de junio de 2021 . Consultado el 10 de junio de 2021 . LGPL-2.1-o posterior en los encabezados
  4. ^ "sourceware.org Git - glibc.git/commit - Actualización a LGPL v.2.1". fuenteware.org . 6 de julio de 2001. Archivado desde el original el 10 de junio de 2021 . Consultado el 10 de junio de 2021 . LGPL-2.1-o posterior en los encabezados
  5. ^ "glibc-1.04.tar.Z". 4 de septiembre de 1992. Archivado desde el original el 22 de diciembre de 2021 . Consultado el 22 de diciembre de 2021 .
  6. ^ "sourceware.org Git - glibc.git/commit - Importación inicial: Makefile". fuenteware.org . 18 de febrero de 1995. Archivado desde el original el 10 de junio de 2021 . Consultado el 10 de junio de 2021 . LGPL-2.0-o posterior en los encabezados
  7. ^ "sourceware.org Git - glibc.git/blob - NOTICIAS". Archivado desde el original el 21 de marzo de 2022 . Consultado el 26 de abril de 2019 .
  8. ^ "sourceware.org Git - glibc.git/blob - NOTICIAS". Archivado desde el original el 26 de septiembre de 2019 . Consultado el 26 de abril de 2019 .
  9. ^ "La versión 2.32 de la biblioteca GNU C ya está disponible". fuenteware.org . Archivado desde el original el 28 de septiembre de 2020 . Consultado el 13 de agosto de 2020 .
  10. ^ ab "Roland McGrath se retira como mantenedor de glibc [LWN.net]". lwn.net . 7 de julio de 2017. Archivado desde el original el 1 de agosto de 2020 . Consultado el 8 de julio de 2017 .
  11. ^ Chirgwin, Richard (10 de julio de 2017). "Roland McGrath deja el cargo de mantenedor de glibc después de 30 años". El Registro . Publicación de situaciones. Archivado desde el original el 7 de marzo de 2024 . Consultado el 1 de junio de 2024 .
  12. ^ "Boletín de GNU, vol. 1 no. 4, febrero de 1988". Archivado desde el original el 16 de abril de 2016 . Consultado el 16 de abril de 2014 . La mayoría de las bibliotecas están terminadas. Roland McGrath [...] tiene un conjunto casi completo de funciones de biblioteca ANSI C. Esperamos que estén listos en algún momento de esta primavera.
  13. ^ "Boletín de GNU, vol. 1 no. 12". Archivado desde el original el 11 de marzo de 2016 . Consultado el 16 de abril de 2014 . Ahora contiene todas las funciones ANSI C-1989 y POSIX.1-1990, y se está trabajando en las funciones POSIX.2 y Unix (BSD y System V).
  14. ^ ab Corbet, Jonathan (28 de marzo de 2012). "Un punto de inflexión para GNU libc". LWN.net. Archivado desde el original el 23 de abril de 2016 . Consultado el 5 de abril de 2012 . De las casi 19.000 confirmaciones encontradas en el repositorio git del proyecto (que contiene cambios desde 1995), más de 12.000 fueron realizadas por Ulrich.
  15. ^ "Glibc finalmente software gratuito - The H Open: noticias y características". H-en línea . Archivado desde el original el 21 de marzo de 2022 . Consultado el 19 de septiembre de 2021 .
  16. ^ Phipps, Simon (2 de septiembre de 2010). "Gnu/Linux: finalmente, es un software realmente libre". InfoMundo . Archivado desde el original el 28 de octubre de 2021 . Consultado el 19 de septiembre de 2021 .
  17. ^ Corbet, Jonathan. "La ruptura ABI del glibc s390 [LWN.net]". LWN.net . Archivado desde el original el 17 de marzo de 2022 . Consultado el 17 de marzo de 2022 .
  18. ^ Claburn, Thomas. "La diferencia de 'broma sobre el aborto' de Glibc deja a Richard Stallman molesto". El Registro . Archivado desde el original el 17 de enero de 2023 . Consultado el 17 de enero de 2023 .
  19. ^ Medio acre, Gareth. "Los proyectos de código abierto glibc y gnulib buscan romper los vínculos de derechos de autor con la Free Software Foundation". El Registro . Archivado desde el original el 17 de enero de 2023 . Consultado el 17 de enero de 2023 .
  20. ^ "Historia de glibc y libc de Linux". Revista de Software Libre . Archivado desde el original el 26 de septiembre de 2021 . Consultado el 10 de mayo de 2021 .
  21. ^ "Bifurcación: incluso te podría pasar a ti". 24 de octubre de 2000. Archivado desde el original el 15 de septiembre de 2009. la división entre GNU LIBC y Linux LIBC: continuó durante años mientras Linux se estabilizaba y luego las bifurcaciones se volvieron a fusionar en un solo proyecto.
  22. ^ Lee, Elliot (9 de julio de 1998). "Una comparación técnica de glibc 2.x con bibliotecas de sistemas heredados". Archivado desde el original el 11 de abril de 2004.
  23. ^ Moen, Rick (20 de mayo de 2021) [14 de noviembre de 1999]. "Ensayo sobre miedo a bifurcarse". linuxmafia.com . 6. glibc --> libc de Linux --> glibc. Archivado desde el original el 27 de noviembre de 2023.
  24. ^ "EGLIBC: preguntas frecuentes". eglibc.org . Archivado desde el original el 17 de marzo de 2012 . Consultado el 16 de septiembre de 2021 .
  25. ^ Los desarrolladores de eglibc enfatizaron que eglibc no es una bifurcación de glibc, sino una variante que acepta parches del proyecto glibc anterior. [24]
  26. ^ Vaduva, Alexandru (2016). Linux: desarrollo integrado: aproveche el poder de Linux para desarrollar proyectos de Linux integrados cautivadores y potentes: un curso de tres módulos. Alex González, Chris Simmonds. Birmingham, Reino Unido: Packt Publishing. pag. 24.ISBN 978-1-78712-445-5. OCLC  960471438.
  27. ^ Stiebert, Julius (6 de mayo de 2009). "Debian wechselt zur Eglibc". golem.de . Archivado desde el original el 16 de septiembre de 2021 . Consultado el 16 de septiembre de 2021 .
  28. ^ Simmonds, Chris (2017). Dominar la programación de Linux integrado: liberar todo el potencial de Linux integrado (2ª ed.). Birmingham, Reino Unido. pag. 26.ISBN 978-1-78728-885-0. OCLC  995052708.{{cite book}}: Mantenimiento CS1: falta el editor de la ubicación ( enlace )
  29. ^ Vaduva, Alexandru (2015). Aprenda Linux integrado utilizando el proyecto Yocto: desarrolle potentes sistemas Linux integrados con los componentes del proyecto Yocto. Birmingham, Reino Unido. pag. 29.ISBN 978-1-78439-519-3. OCLC  914797028.{{cite book}}: Mantenimiento CS1: falta el editor de la ubicación ( enlace )
  30. ^ "página de inicio de glibc". Archivado desde el original el 22 de abril de 2016 . Consultado el 16 de abril de 2014 . En 2001 se formó el Comité Directivo de la Biblioteca GNU C..., que actualmente está formado por Mark Brown, Paul Eggert, Andreas Jaeger, Jakub Jelinek, Roland McGrath y Andreas Schwab.
  31. ^ "Ulrich Drepper". LinkedIn. Archivado desde el original el 10 de septiembre de 2014 . Consultado el 13 de junio de 2012 .
  32. ^ en línea, heise (19 de agosto de 2001). "El creador de código abierto Stallman". heise en línea (en alemán). Archivado desde el original el 16 de septiembre de 2021 . Consultado el 16 de septiembre de 2021 .
  33. ^ Drepper, Ulrich (26 de junio de 2000). "RMS vuelve a hacerlo". fuenteware.org. Archivado desde el original el 28 de diciembre de 2012 . Consultado el 20 de noviembre de 2015 . Hace unas semanas, RMS inició el siguiente ataque contra mí (un solo correo, seguido de intentos indirectos de tomar influencia, seguido de otro correo hoy). La esencia es que se queja de que no sigo las "políticas de GNU" y que por lo tanto tengo que ser reemplazado por un comité directivo del que yo podría formar parte. Algunos de ustedes (en concreto, Roland y Andreas S.) probablemente lo sepan, ya que propuso a ambos como otros miembros del comité. Además estaba Mark Brown en la lista (conozco a alguien con este nombre en IBM que también encajaría en este grupo, pero no estoy seguro de si es realmente él). De todos modos, lo rechazo completamente. No ayuda en nada, es todo lo contrario. Primero, no tengo conocimiento de ninguna política esencial que esté violando. Los únicos son que no sigo órdenes de RMS que claramente tienen intenciones políticas (lo cual por supuesto es un sacrilegio) y posiblemente que no me importa Winblowz (si es que este último cuenta). Nada de esto cambiará de ninguna manera.
  34. ^ Drepper, Ulrich (15 de agosto de 2001). "glibc 2.2.4". fuenteware.com. Archivado desde el original el 9 de abril de 2016 . Consultado el 29 de noviembre de 2015 . Y ahora algunas cosas no tan bonitas. Stallman intentó recientemente lo que yo llamaría una adquisición hostil del desarrollo de glibc. Intentó conspirar a mis espaldas y persuadir a los demás desarrolladores principales para que tomaran el control, de modo que al final él tuviera el control y pudiera dictar lo que le placiera. Este intento falló pero siguió presionando a la gente en todas partes y la cosa se puso realmente fea. Al final acepté la creación del llamado "comité directivo" (SC).
  35. ^ rms-accused-of-attempting-glibc-hostile-takeover Archivado el 1 de agosto de 2020 en Wayback Machine en slashdot.com el 19 de agosto de 2001
  36. ^ "El Comité Directivo de la Biblioteca GNU C se disuelve - The H Open: Noticias y características". H-En línea . Archivado desde el original el 21 de marzo de 2023 . Consultado el 16 de marzo de 2023 .
  37. ^ McGrath, Roland (26 de marzo de 2012). "Se disuelve el comité directivo de glibc". Fuenteware.org. Archivado desde el original el 26 de septiembre de 2019 . Consultado el 13 de junio de 2012 .
  38. ^ Myers, Joseph S. (26 de marzo de 2012). "Desarrollo y mantenedores de la biblioteca GNU C". Fuenteware.org. Archivado desde el original el 26 de septiembre de 2019 . Consultado el 13 de junio de 2012 .
  39. ^ "Los mantenedores de máquinas de la biblioteca GNU C". Archivado desde el original el 18 de abril de 2016 . Consultado el 8 de octubre de 2015 .
  40. ^ Bartley, David; Spang, Michael. "GNU/kOpenSolaris (GNU libc/base + núcleo OpenSolaris)". Archivado desde el original el 6 de noviembre de 2019 . Consultado el 16 de diciembre de 2008 .
  41. ^ "Fuente de haiku". GitHub . Archivado desde el original el 1 de mayo de 2016 . Consultado el 15 de octubre de 2014 . libroot.so no forma parte del proyecto GNU y está incluido en el código fuente de Haiku.
  42. ^ Torvalds, Linus (9 de enero de 2002). "Publicar en la lista de correo de glibc". Archivado desde el original el 12 de octubre de 2015 . Consultado el 22 de julio de 2007 .
  43. ^ "Componentes de OpenMoko". Archivado desde el original el 22 de abril de 2016 . Consultado el 13 de mayo de 2008 . Usaremos glibc (no uClibC)... Las alternativas pueden ahorrar más espacio y estar más optimizadas, pero es más probable que nos den dolores de cabeza de integración
  44. ^ "Re: [Familiar] ¿Qué glibc para Familiar 0.8.4?". Archivado desde el original el 12 de marzo de 2022 . Consultado el 26 de noviembre de 2018 . Pregunta: ¿qué versión de GLIBC se utilizó para construir Familiar 0.8.4? Respuesta: 2.3.3
  45. ^ Kerrisk, Michael. "Los altibajos de strlcpy()". LWN.net . Archivado desde el original el 9 de diciembre de 2023 . Consultado el 9 de diciembre de 2023 .
  46. ^ Corbet, Jonathan. "Agregar strlcpy() a glibc". LWN.net . Archivado desde el original el 9 de diciembre de 2023 . Consultado el 9 de diciembre de 2023 .
  47. ^ ab "Preguntas frecuentes". fuenteware.org . Archivado desde el original el 9 de diciembre de 2023 . Consultado el 9 de diciembre de 2023 .

Enlaces externos