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 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
editarLos 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:
- Android se basa en el kernel de Linux, que está sujeto a la Licencia Pública General de GNU (GPL) versión 2.
- Las bibliotecas C estándar más difundido para los núcleos Linux son las biblioteca C de GNU (glibc) y uClibc, ambos sujetos a la Licencia Pública General de GNU (LGPL); en contraste con la GPL, la LGPL permite explícitamente la vinculación dinámica pero no permite la vinculación estática del software propietario.
- 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
editarBionic 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 (comostrcpy()
strcat()
ymemcpy()
) 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
editarReferencias
editar- ↑ «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.
- ↑ 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.
- ↑ a b c Burnette, Ed (4 de junio de 2008). «Patrick Brady dissects Android». ZDNet.
- ↑ 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.».
- ↑ 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.
- ↑ a b Gentry, Denton (28 de noviembre de 2008). «The Six Million Dollar LibC».
- ↑ «Google C++ Style Guide». Google. Archivado desde el original el 6 de octubre de 2014.
- ↑ «Not working on Xoom/Android 3.0 Honeycomb». 15 de abril de 2011.
- ↑ «Jelly Bean». Los desarrolladores de Android. android.com. Consultado el 27 de diciembre de 2013.
- ↑ «Android 4.2 y FORTIFY_SOURCE». Android Discusiones seguridad. groups.google.com. Consultado el 27 de diciembre de 2013.