Articulo de referencia

glibc

{{cite web\n | url = https://lwn.net/Articles/488847/\n | title = A turning point for GNU libc\n | last = Corbet\n | first = Jonathan\n | date = 28 March 2012\n | publisher = LW...

La biblioteca GNU C , comúnmente conocida como glibc , es la implementación del Proyecto GNU de la biblioteca estándar de C. Proporciona una capa de abstracción sobre las llamadas al sistema del núcleo Linux y otros núcleos para su uso en aplicaciones. A pesar de su nombre, ahora también admite directamente C++ (e indirectamente, otros lenguajes de programación ). Fue creada en la década de 1980 por la Fundación del Software Libre (FSF) para el sistema operativo GNU .

glibc es software libre publicado bajo la Licencia Pública General Reducida de GNU . [ 3 ] El proyecto de la Biblioteca C de GNU 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 instalaciones fundamentales como open , read , write , malloc , printf , getaddrinfo , dlopen , pthread_create , crypt , login , exit y más.

Historia

Ulrich Drepper en 2007, autor principal de glibc
La biblioteca GNU C es una capa de abstracción sobre las llamadas al sistema del núcleo de Linux .
El núcleo de Linux y la biblioteca GNU C forman conjuntamente la API de Linux . Tras la compilación, los binarios ofrecen una ABI .

El proyecto glibc fue escrito inicialmente en su mayor parte por Roland McGrath, quien trabajaba para la Free Software Foundation (FSF) en el verano de 1987 siendo adolescente. [ 10 ] [ 11 ] En febrero de 1988, la FSF describió glibc como casi completando la funcionalidad requerida por ANSI C. [ 12 ] Para 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 a glibc y para 1997 la mayoría de las confirmaciones fueron hechas por él. Drepper ocupó el puesto de mantenedor durante muchos años y hasta 2012 acumuló el 63% de todas las confirmaciones al proyecto. [ 14 ]

En mayo de 2009, glibc fue migrado 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 la GPL . Se solucionó volviendo a licenciar los componentes de Sun RPC bajo la licencia BSD . [ 15 ] [ 16 ]

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

En julio de 2017, 30 años después de haber iniciado glibc, Roland McGrath anunció su partida, "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 ya no me necesitan". [ 10 ]

En 2018, el mantenedor Raymond Nicholson eliminó un chiste sobre el aborto del código fuente de glibc. Posteriormente, Alexandre Oliva lo restauró 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 pudieron fusionarse de nuevo con GNU Libc. [ 20 ] Cuando la FSF publicó glibc 2.0 en enero de 1997, los desarrolladores del kernel descontinuaron Linux libc debido a la mayor conformidad de glibc 2.0 con los estándares POSIX. [ 21 ] glibc 2.0 también tenía mejor internacionalización y traducción más profunda, capacidad IPv6 , acceso a datos de 64 bits, facilidades para aplicaciones multihilo, compatibilidad con versiones futuras y el código era más portable. [ 22 ] La última versión utilizada de Linux libc usaba el nombre interno ( soname ) libc.so.5 . A partir de esto, glibc 2.x en Linux usa el soname libc.so.6 [ 23 ]

En 2009, Debian y varios derivados cambiaron de glibc a la variante [ 25 ] eglibc. [ 26 ] Eglibc fue respaldada por un consorcio formado por Freescale , MIPS , MontaVista y Wind River . [ 27 ] Contenía cambios que la hacían más adecuada para su uso en sistemas embebidos y había añadido soporte para arquitecturas que no eran compatibles con glibc, como el PowerPC e500 . El código de eglibc se fusionó de nuevo con glibc en la versión 2.20. [ 28 ] Desde 2014, eglibc está descontinuada. El Proyecto Yocto y Debian también volvieron 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 ] con Ulrich Drepper [ 31 ] como 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 maniobra fallida de adquisición hostil por parte de Richard Stallman . [ 32 ] [ 33 ] [ 34 ] [ 35 ]

En marzo de 2012, el comité directivo votó a favor de disolverse y eliminar 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 de decisión adicional). [ 36 ] [ 37 ] [ 38 ]

Funcionalidad

glibc proporciona la funcionalidad requerida por la Especificación Única de UNIX , POSIX (1c, 1d y 1j) y parte de la funcionalidad requerida por ISO C11 , ISO C99 , las interfaces Berkeley Unix (BSD), la Definición de Interfaz del Sistema V (SVID) y la Guía de Portabilidad X/Open (XPG), Edición 4.2, con todas las extensiones comunes a los sistemas compatibles con XSI ( Interfaz de Sistema X/Open ) 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 núcleos compatibles

glibc se utiliza en sistemas que ejecutan muchos kernels y arquitecturas de hardware diferentes . Su uso más común es en sistemas que utilizan el kernel de Linux en hardware x86 , sin embargo, el hardware oficialmente compatible [ 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 antiguas admiten TILE ). Admite oficialmente los kernels Hurd y Linux . Además, hay versiones fuertemente parcheadas que se ejecutan en los kernels 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 llama libroot.so en BeOS y Haiku . [ 41 ]

Uso en dispositivos pequeños

glibc ha sido criticada por ser " excesiva " y más lenta que otras bibliotecas en el pasado, por ejemplo, por Linus Torvalds [ 42 ] y programadores de Linux embebido . Por esta razón, se han creado varias bibliotecas estándar C alternativas que priorizan un tamaño menor. Sin embargo, muchos proyectos para dispositivos pequeños utilizan GNU libc en lugar de las alternativas más pequeñas debido a su compatibilidad con aplicaciones, cumplimiento de estándares y exhaustividad. Algunos ejemplos son 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 las interfaces de comprobació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, añade complejidad e ineficiencia y no evita todos los desbordamientos de búfer en los destinos". [ 47 ] Las FAQ señalaron que las interfaces de comprobación de límites eran opcionales en el estándar ISO y que snprintf estaba disponible como alternativa. [ 47 ]

Capas de compatibilidad

Existen capas de compatibilidad (" shims ") que permiten que los programas escritos para otros ecosistemas se ejecuten en sistemas que ofrecen la interfaz glibc. Entre ellas se incluyen libhybris , una capa de compatibilidad para Android Bionic , y Wine , que puede considerarse una capa de compatibilidad entre las API de Windows y glibc, así como otras API nativas disponibles en sistemas tipo Unix.

Véase también

Notas

  1. LGPL-2.1 o posterior desde el 06/07/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 del original el 23 de abril de 2016. Recuperado el 5 de abril de 2012 .
  2. Andreas K. Hüttel (24 de enero de 2026). "La versión 2.43 de la biblioteca GNU C ya está disponible" . Consultado el 24 de enero de 2026 .
  3. 1 2 "sourceware.org Git – glibc.git/blob – Makefile" . sourceware.org . Archivado del original el 10 de junio de 2021. Recuperado 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" . sourceware.org . 6 de julio de 2001. Archivado del original el 10 de junio de 2021. Recuperado el 10 de junio de 2021. LGPL-2.1-or-later en los encabezados .
  5. "glibc-1.04.tar.Z" . 4 de septiembre de 1992. Archivado del original el 22 de diciembre de 2021. Recuperado el 22 de diciembre de 2021 .
  6. "sourceware.org Git – glibc.git/commit – Importación inicial: Makefile" . sourceware.org . 18 de febrero de 1995. Archivado del original el 10 de junio de 2021. Recuperado el 10 de junio de 2021. LGPL-2.0 o posterior en los encabezados .
  7. "sourceware.org Git – glibc.git/blob – NEWS" . Archivado del original el 21 de marzo de 2022. Consultado el 26 de abril de 2019 .
  8. "sourceware.org Git – glibc.git/blob – NEWS" . Archivado del 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" . sourceware.org . Archivado del original el 28 de septiembre de 2020. Consultado el 13 de agosto de 2020 .
  10. 1 2 "Roland McGrath se retira como mantenedor de glibc [ LWN.net ] " . lwn.net . 7 de julio de 2017. Archivado del original el 1 de agosto de 2020 . Recuperado el 8 de julio de 2017 .
  11. Chirgwin, Richard (10 de julio de 2017). "Roland McGrath deja su cargo como mantenedor de glibc tras 30 años" . The Register . Situation Publishing. Archivado del original el 7 de marzo de 2024. Consultado el 1 de junio de 2024 .
  12. «Boletín de GNU, vol. 1, n.º 4, febrero de 1988» . Archivado del 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 listas en algún momento de esta primavera.
  13. «Boletín de GNU, vol. 1, n.º 12» . Archivado del original el 11 de marzo de 2016. Consultado el 16 de abril de 2014. Actualmente 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. 1 2 Corbet, Jonathan (28 de marzo de 2012). "Un punto de inflexión para GNU libc" . LWN.net. Archivado del original el 23 de abril de 2016. Recuperado el 5 de abril de 2012. De los casi 19.000 commits encontrados en el repositorio git del proyecto (que contiene cambios desde 1995), más de 12.000 fueron realizados por Ulrich.
  15. "Glibc finalmente software libre – The H Open: Noticias y artículos" . H-online . Archivado del original el 21 de marzo de 2022. Consultado el 19 de septiembre de 2021 .
  16. Phipps, Simon (2 de septiembre de 2010). "Gnu/Linux: Por fin, es software libre de verdad" . InfoWorld . Archivado del original el 28 de octubre de 2021. Consultado el 19 de septiembre de 2021 .
  17. Corbet, Jonathan. "La ruptura de ABI s390 de glibc [ LWN.net ] " . LWN.net . Archivado del original el 17 de marzo de 2022 . Recuperado el 17 de marzo de 2022 .
  18. Claburn, Thomas. "La disputa sobre el 'chiste del aborto' de Glibc deja a Richard Stallman molesto" . The Register . Archivado del original el 17 de enero de 2023. Recuperado el 17 de enero de 2023 .
  19. Halfacree, Gareth. "Los proyectos de código abierto glibc y gnulib buscan romper sus vínculos de derechos de autor con la Free Software Foundation" . The Register . Archivado del original el 17 de enero de 2023. Consultado el 17 de enero de 2023 .
  20. "Historia de glibc y Linux libc" . Revista de Software Libre . Archivado del original el 26 de septiembre de 2021. Consultado el 10 de mayo de 2021 .
  21. "Bifurcación: incluso podría sucederte a ti" . 24 de octubre de 2000. Archivado del original el 15 de septiembre de 2009. La división entre GNU LIBC y Linux LIBC se prolongó durante años mientras Linux se estabilizaba, y luego las bifurcaciones se fusionaron nuevamente 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 heredadas" . Archivado del original el 11 de abril de 2004.
  23. Moen, Rick (20 de mayo de 2021) [14 de noviembre de 1999]. "Ensayo sobre el miedo a la bifurcación" . linuxmafia.com . 6. glibc --> Linux libc --> glibc. Archivado del original el 27 de noviembre de 2023.
  24. "EGLIBC: Preguntas frecuentes" . eglibc.org . Archivado del 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 original. [ 24 ]
  26. Vaduva, Alexandru (2016). Linux : desarrollo embebido: aprovecha el poder de Linux para desarrollar proyectos embebidos de Linux cautivadores y potentes : un curso en tres módulos . Alex Gonzalez, Chris Simmonds. Birmingham, Reino Unido: Packt Publishing. pág. 24. ISBN    978-1-78712-445-5OCLC 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). Dominando la programación de Linux embebido: libera todo el potencial de Linux embebido (2.ª ed.). Birmingham, Reino Unido. pág. 26. ISBN   978-1-78728-885-0OCLC 995052708 {{cite book}}: CS1 mantenimiento: falta el editor de ubicación ( enlace )
  29. Vaduva, Alexandru (2015). Aprendiendo Linux embebido con el proyecto Yocto: desarrolle potentes sistemas Linux embebidos con los componentes del proyecto Yocto . Birmingham, Reino Unido. pág. 29. ISBN  978-1-78439-519-3OCLC 914797028 {{cite book}}: CS1 mantenimiento: falta el editor de ubicación ( enlace )
  30. "Página principal de glibc" . Archivado del original el 22 de abril de 2016. Recuperado el 16 de abril de 2014. En 2001 se formó el Comité Directivo de la Biblioteca C de GNU..., que actualmente está compuesto por Mark Brown, Paul Eggert, Andreas Jaeger, Jakub Jelinek, Roland McGrath y Andreas Schwab.
  31. "Ulrich Drepper" . LinkedIn. Archivado del 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 lo está haciendo de nuevo" . sourceware.org. Archivado del original el 28 de diciembre de 2012. Recuperado el 20 de noviembre de 2015. Hace unas semanas, RMS comenzó 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 estoy siguiendo las "políticas de GNU" y por lo tanto debo ser reemplazado por un comité directivo del cual podría ser parte. Algunos de ustedes (en particular Roland y Andreas S.) probablemente saben sobre esto, ya que los propuso a ambos como otros miembros del comité. Además, estaba Mark Brown en la lista (conozco a alguien con ese nombre en IBM que también encajaría en este grupo, pero no estoy seguro de si realmente es él). De todos modos, rechazo completamente esto. No ayuda en absoluto, es todo lo contrario. Primero, no tengo conocimiento de ninguna política esencial que esté violando. Las únicas razones son que no sigo las ó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 esto último cuenta). Nada de esto cambiará.
  34. Drepper, Ulrich (15 de agosto de 2001). "glibc 2.2.4" . sourceware.com. Archivado del original el 9 de abril de 2016. Recuperado el 29 de noviembre de 2015. Y ahora, algunas cosas no tan agradables. 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 otros desarrolladores principales para que tomaran el control para que al final él tuviera el control y pudiera dictar lo que le placiera. Este intento fracasó, pero siguió presionando a la gente por todas partes y se puso realmente feo. Al final, acepté la creación de un llamado "comité directivo" (SC).
  35. rms-acusado-de-intentar-adquisición-hostil-de-glibc 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 C de GNU se disuelve – The H Open: Noticias y Características" . H-Online . Archivado del original el 21 de marzo de 2023. Consultado el 16 de marzo de 2023 .
  37. McGrath, Roland (26 de marzo de 2012). "Disolución del comité directivo de glibc" . Sourceware.org. Archivado del original el 26 de septiembre de 2019. Recuperado el 13 de junio de 2012 .
  38. Myers, Joseph S. (26 de marzo de 2012). "Desarrollo y mantenimiento de la biblioteca GNU C" . Sourceware.org. Archivado del original el 26 de septiembre de 2019. Recuperado el 13 de junio de 2012 .
  39. "Los mantenedores de la máquina de la biblioteca C de GNU" . Archivado del original el 18 de abril de 2016. Recuperado el 8 de octubre de 2015 .
  40. Bartley, David; Spang, Michael. "GNU/kOpenSolaris (GNU libc/base + núcleo OpenSolaris)" . Archivado del original el 6 de noviembre de 2019. Recuperado el 16 de diciembre de 2008 .
  41. "Haiku Source" . GitHub . Archivado del 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). "Publicación en la lista de correo de glibc" . Archivado del original el 12 de octubre de 2015. Recuperado el 22 de julio de 2007 .
  43. "Componentes de OpenMoko" . Archivado del original el 22 de abril de 2016. Recuperado 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 problemas de integración.
  44. "Re: [ Familiar ] ¿Qué glibc para Familiar 0.8.4 ?" . Archivado del original el 12 de marzo de 2022. Recuperado el 26 de noviembre de 2018. Pregunta: ¿Qué versión de GLIBC se utilizó para compilar Familiar 0.8.4 ? Respuesta: 2.3.3   
  45. Kerrisk, Michael. "Los altibajos de strlcpy()" . LWN.net . Archivado del original el 9 de diciembre de 2023. Consultado el 9 de diciembre de 2023 .
  46. Corbet, Jonathan. "Añadiendo strlcpy() a glibc" . LWN.net . Archivado del original el 9 de diciembre de 2023. Consultado el 9 de diciembre de 2023 .
  47. 1 2 "Preguntas frecuentes" . sourceware.org . Archivado del original el 9 de diciembre de 2023. Consultado el 9 de diciembre de 2023 .
  • Sitio web oficial