The Android Open Source Project | a27d2ba | 2008-10-21 07:00:00 -0700 | [diff] [blame] | 1 | Bionic is a very small C library because we have decided to *not* implement various features |
| 2 | of the POSIX standard. we only add functions on a as-needed basis, and there are a few things |
| 3 | we wish we'll never put in there. |
| 4 | |
| 5 | this file is here to document explicitely what we don't want to support in Bionic: |
| 6 | |
| 7 | - C++ exceptions are not supported. on embedded systems, they lead to extremely larger and |
| 8 | slower code for no good reason (even when so-called zero-cost exception schemes are |
| 9 | implemented, they enforce very large numbers of registers spills to the stack, even |
| 10 | in functions that do not throw an exception themselves). |
| 11 | |
| 12 | - pthread cancellation is *not* supported. this seemingly simple "feature" is the source |
| 13 | of much bloat and complexity in a C library. Besides, you'd better write correct |
| 14 | multi-threaded code instead of relying on this stuff. |
| 15 | |
| 16 | - pthread_once() doesn't support C++ exceptions thrown from the init function, or the init |
| 17 | function doing a fork(). |
| 18 | |
| 19 | - locales and wide characters are not supported. we use ICU for all this i18n stuff, which |
| 20 | is much better than the ill-designed related C libraries functions. |
| 21 | |
| 22 | - at the moment, several user-account-related functions like getpwd are stubbed and return |
| 23 | the values corresponding to root. this will be fixed when we'll be able to have distinct |
| 24 | users on the Android filesystem. :-( |
| 25 | |
| 26 | see bionic/stubs.c for the details |