A glibc, abreviação de GNU C Library, é a biblioteca padrão C utilizada na maioria das distribuições Linux, enquanto a linguagem C é a base para se escrever o código. Ela segue os padrões desta e - com isso - garante que os programas em C sejam portáveis e interoperáveis.
Nascida do projeto GNU em1983, consolidou-se como a biblioteca padrão de C para sistemas Unix-like. Sua evolução contínua moldou a forma como interagimos com esses sistemas.
É um projeto de código aberto, distribuído sob a GNU Lesser General Public License, onde qualquer pessoa pode contribuir com patches, relato de bugs e sugestões de melhorias.
Embora mais utilizada nas arquiteturas x86, também suporta ARM, PowerPC, DEC Alpha, ETRAX CRIS, MIPS, s390, Motorola 680x0 e SPARC.
Como funciona?
Ela funciona como uma “ponte” entre os programas e o kernel, traduzindo as ações para uma linguagem que ele entende; por exemplo, utilizando a manipulacão de strings de texto e funções matemáticas básicas (como seno, cosseno e logaritmos).
Glibc e linguagem C são a mesma coisa?
Não, a glibc e a linguagem C não são a mesma coisa, embora estejam intimamente relacionadas. Enquanto a primeira é uma linguagem de alto nível, amplamente utilizada para desenvolvimento de sistemas e aplicativos, a segunda é uma biblioteca de funções que implementa a maior parte da biblioteca padrão daquela.
Em outras palavras, permite que os programas se comuniquem com o sistema operacional. Imagine a linguagem C como peças de Lego e a glibc, como um manual de instruções para construir um carro com elas.
A linguagem C dá as peças (palavras-chave, tipos de dados) e o manual (glibc) mostra como montar essas peças para criar um carro funcional (seu programa).
Nem só de glibc vive o homem
Existem outras implementações da biblioteca padrão C, além da glibc. Embora a mais usada em sistemas Unix-like, especialmente no Linux, outras bibliotecas oferecem alternativas e funcionalidades específicas.
Um delas é a uClibc, menor e mais leve, desenvolvida para sistemas embarcados com recursos limitados.
Tem a musl libc, biblioteca C leve e estável, utilizada em distribuições Linux minimalistas e sistemas embarcados.
Outro exemplo é a dietlibc, biblioteca C ainda mais minimalista que a uClibc, focada em um tamanho de código extremamente reduzido.
Por último citamos a bionic, biblioteca C utilizada no sistema operacional Android.
E o futuro?
A glibc tem se mostrado extremamente robusta e confiável ao longo dos anos. É um projeto enorme, com décadas de desenvolvimento e milhões de linhas de código.
Milhares de programas e bibliotecas dependem dela e está profundamente integrada ao ecossistema unix-like. No entanto, como qualquer software, está sujeita a melhorias e aprimoramentos.
Algumas áreas que apresentam potenciais pontos de melhoria incluem:
-
melhorias na gestão de memória - reduzindo a probabilidade de executar código arbitrário em ataques de uso após a liberação (Use After Free);
-
mitigação dos ataques de estouro de buffer - quando um programa tenta escrever mais dados em uma área de memória do que ela pode armazenar, corrompendo os dados adjacentes e causando instabilidades ou mesmo a execução de código malicioso;
-
redução na latência de chamadas de sistema - reduzido impacto no desempenho global do sistema em cenários de alta carga de trabalho;
-
alocação de memória - melhorias na eficiência dos algoritmos de alocação de memória acarretam uso mais eficiente da memória, reduzindo a fragmentação;
-
suporte a novas arquiteturas de processadores - a glibc precisa se adaptar e oferecer suporte a essas plataformas;
-
compatibilidade com padrões - acompanhar os padrões da indústria, como POSIX e C11, garantindo a portabilidade dos programas;
-
melhorias na internacionalização - suporte mais robusto a diferentes localizações e idiomas, tornando os programas mais acessíveis globalmente;
-
modularidade - uma glibc mais modular permitiria que as distribuições Linux incluíssem apenas as funcionalidades necessárias, reduzindo o tamanho do sistema;
-
facilidade de manutenção - a estrutura modular facilitaria a manutenção e atualização da biblioteca.
Fontes: links no texto