Bionic (software)

Bionic es una bifurcación de la biblioteca estándar de C de BSD (también conocida como libc) desarrollado por Google para su sistema operativo Android.[2]

Bionic
Parte de Android
Información general
Tipo de programaC biblioteca estándar
DesarrolladorOpen Handset Alliance
Lanzamiento inicial23 de septiembre de 2008[1]
Licencia3-cláusula licencia BSD
Información técnica
Plataformas admitidas86, x86-64, ARM, ARM64, MIPS, MIPS64
Enlaces

Descripción

Los objetivos que se presentaron inicialmente para Bionic fueron las siguientes:[3][4]

  • La Licencia BSD es una licencia sin copyleft y Google quiso aislar las aplicaciones Android de los efectos tanto de la GPL como de la LGPL:
  • Tamaño pequeño: Bionic es mucho menor que la biblioteca GNU C (glibc) y algo menor que uClibc. Más importante es que los requerimientos de memoria son (y permanecen) inferiores.
  • Velocidad: Bionic está diseñado para CPUs con frecuencias de reloj relativamente bajas.

La forma recomendada de utilizar Bionic es con el kit de desarrollo de Android nativo (NDK).

Características y limitaciones

Bionic tiene varias restricciones en comparación con glibc, a menudo derivados del hecho de que Bionic. es una biblioteca diseñada específicamente para Android[3][5][6]

Algunas de las limitaciones son:

  • Bionic. no incluye el manejo de excepciones de C++, probablemente porque como las aplicaciones de Android se programan principalmente en Java, las excepciones se tratan directamente ahí.[7]
  • Bionic no incluye la biblioteca de plantillas estándar (STL), y los desarrolladores deben incluirla de forma manual si lo necesitan.
  • Bionic no incluye soporte a caracteres ampliados.
  • Algunas funciones dentro de Bionic POSIX y cabeceras del sistema de llamadas son Stubs o wrappers para el comportamiento específico de Android, provocando un comportamiento no deseado en algunos casos.[3][6][8]
  • A partir de Android Jelly Bean MR1 (4.2), los builds de Bionic empleados en Android incluyen soporte para FORTIFY_SOURCE de glibc,[9]​ que es una característica con la que funciones no seguras de memoria y de manejo de cadenas de caracteres (como strcpy() strcat() y memcpy()) realizan controles para evitar desbordamientos de búfer cuando el tamaño de búfer se pueden determinar en tiempo de compilación. Esta función sólo está disponible para las aplicaciones compiladas con gcc para procesadores ARM.[10]

Véase también

Referencias

Enlaces externos