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 programa C biblioteca estándar
Desarrollador Open Handset Alliance
Lanzamiento inicial 23 de septiembre de 2008[1]
Licencia 3-cláusula licencia BSD
Información técnica
Plataformas admitidas 86, x86-64, ARM, ARM64, MIPS, MIPS64
Enlaces

Descripción editar

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 editar

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 editar

Referencias editar

  1. «Announcing the Android 1.0 SDK». 9 de septiembre de 2008. Archivado desde el original el 19 de septiembre de 2015. Consultado el 21 de septiembre de 2012. 
  2. a b «Android Anatomy and Physiology» (PDF). 28 de mayo de 2008. Archivado desde el original el 8 de abril de 2016. Consultado el 23 de mayo de 2014. 
  3. a b c Burnette, Ed (4 de junio de 2008). «Patrick Brady dissects Android». ZDNet. 
  4. Turner, David (7 de febrero de 2009). «Questions about Bionic». «El nombre "Bionic" viene del hecho de que es parte-BSD y parte en Linux: su código fuente consiste en una mezcla de BSD C piezas de la biblioteca con la costumbre de los bits específicos Linux utilizadas para hacer frente a las discusiones, los procesos, las señales y algunas otras cosas.». 
  5. Devos, Devos (2014). «Bionic vs Glibc report - Master thesis». Archivado desde el original el 22 de marzo de 2014. Consultado el 22 de marzo de 2014. 
  6. a b Gentry, Denton (28 de noviembre de 2008). «The Six Million Dollar LibC». 
  7. «Google C++ Style Guide». Google. Archivado desde el original el 6 de octubre de 2014. 
  8. «Not working on Xoom/Android 3.0 Honeycomb». 15 de abril de 2011. 
  9. «Jelly Bean». Los desarrolladores de Android. android.com. Consultado el 27 de diciembre de 2013. 
  10. «Android 4.2 y FORTIFY_SOURCE». Android Discusiones seguridad. groups.google.com. Consultado el 27 de diciembre de 2013. 

Enlaces externos editar