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.
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]
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]
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]
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 .
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]
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]
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]
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.
LGPL-2.1-o posterior en los encabezados
LGPL-2.1-o posterior en los encabezados
LGPL-2.0-o posterior en los encabezados
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.
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).
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.
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.
{{cite book}}
: Mantenimiento CS1: falta el editor de la ubicación ( enlace ){{cite book}}
: Mantenimiento CS1: falta el editor de la ubicación ( enlace )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.
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.
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).
libroot.so no forma parte del proyecto GNU y está incluido en el código fuente de Haiku.
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
Pregunta: ¿qué versión de GLIBC se utilizó para construir Familiar 0.8.4? Respuesta: 2.3.3