Picolibc Version 1.1
Picolibc development is settling down at last. With the addition of a simple 'hello world' demo app, it seems like a good time to stamp the current code as 'version 1.1'.
Changes since Version 1.0
Semihosting helper library. Semihosting lets an application running under a debugger or emulator communicate through the debugger or emulator with the environment hosting those. It's great for platform bringup before you've got clocking and a serial driver. I'm hoping it will also make running tests under qemu possible. The code works on ARM and RISC-V systems and offers console I/O and exit() support (under qemu).
Hello World example. This is a stand-alone bit of code with a Makefile that demonstrates how to build a complete application for both RISC-V and ARM embedded systems using picolibc after it has been installed. The executables run under QEMU using a provided script. Here's all the source code you need; the rest of the code (including semihosting support) is provided by picolibc:
#include <stdio.h> #include <stdlib.h>
int main(void) { printf("hello, world\n"); exit(0); }
POSIX file I/O support. For systems which have open/close/read/write, picolibc's tinystdio can now provide stdio functions that use them, including fopen and fdopen.
Updated code from newlib. I've merged current upstream newlib into the tree. There were a few useful changes there, including libm stubs for fenv on hosts that don't provide their own.
Where To Get Bits
You can find picolibc on my personal server's git repository:
https://keithp.com/cgit/picolibc.git/
There's also a copy on github:
https://github.com/keith-packard/picolibc
If you like tarballs, I also create those:
https://keithp.com/picolibc/dist/
I've create tags for 1.1 (upstream) and 1.1-1 (debian packaging included) and pushed those to the git repositories.
Filing Issues, Making Contributions
There's a mailing list at keithp.com:
https://keithp.com/mailman/listinfo/picolibc
Or you can file issues using the github tracker.