Numerous times when another person tells you that language X is “better” at anything they truly suggest that it has superior crafted-in libraries for that task. Java is a excellent case in point. The language isn’t all that various from C++ outdoors of rubbish assortment and numerous inheritance, but the typical libraries are tremendous powerful, especially for networking. Even C relies on a library to offer a good deal of functions persons feel of as element of the language —
printf, for example. That is not actually aspect of the C language, but just element of the typical library. When you are creating for a little processor, the choice of library is essential and [Keith Packard] provides you a single alternative: picolibc.
The library has its genesis from two other diminutive libraries: Newlib and the AVR edition of libc. It provides support for ARC, ARM, i386, m68k, MIPS, MSP430, Nios II, PPC, RISC-V, Sparc64, x86_64, and the ESP8266/ESP32.
There is documentation for how to graft the library into your assignments. That features a couple APIs that it expects from the working environment. There are also documents on how the library makes use of thread area storage, locking, and other technical aspects.
Is it greater than other choices? That’s not for us to say. You will have to create it on your exact system and make your very own comparisons. Even so, it is a viable applicant and because it is based mostly on newlib, it ought to be relatively stable. You can debate if you need to use
printf, or not. Or you can just lean into it. But you can also use other components of the library with no delving into
Even if you really don’t want a small library, at times reading as a result of library code for your preferred focus on can be illuminating. For instance, how would you produce an economical
strchr function? Now, glimpse how they did it. Portability is the satan listed here because you could most likely do even better with some CPU-distinct instructions like AVX2 or SSE.
Title graphic courtesy [Priscilla Du Preez]