printf
trice
Our great sponsors
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
printf
- Nanoprintf – The smallest public printf implementation for its feature set
- Thank you senpai!
-
Sprintf without C library
https://github.com/mpaland/printf i think this would work
-
Nolibc: A minimal C-library replacement shipped with the kernel
Seems unlikely. My spot check of the the two vfprintf implementations shows no flow from one to the other, and shows that part of the Cosmopolitan code has an older lineage than nolibc.
The nolibc source has many reference to copyright held by "Willy Tarreau", under LGPL-2.1 OR MIT license, with a copyright date starting in 2017.
The string "Tarreau" does not exist in the Cosmopolitan library, so that's a strong negative there. Let's look closer.
The file organization is quite different. And so is the implementation. So that's another negative.
Compare the vfprintf in nolibc at https://elixir.bootlin.com/linux/v6.2-rc4/source/tools/inclu... (a 'minimal vfprintf()') with the one in cosmopolitan starting at https://github.com/jart/cosmopolitan/blob/master/libc/stdio/....
Right away we can see nolibc places many functions in the same file while Cosmopolitan uses a one-function-per-filename organization.
Cosmopolitan's fvprintf locks the file (which nolibc doesn't need to do) then calls vfprintf_unlocked which calls __fmt at https://github.com/jart/cosmopolitan/blob/master/libc/fmt/fm... , which is the actual implementation. It look very different from NOLIBC's.
Okay, so perhaps that's they way now but not at the beginning?
We can also go back to Cosmopolitan's original implementation and see how vfprintf goes through https://github.com/jart/cosmopolitan/blob/c91b3c50068224929c... to call "palandprintf", which https://github.com/jart/cosmopolitan/blob/c91b3c50068224929c... says is copyright "Marco Paland" from 2014-2019.
That's a few years older than the start of nolibc, available from https://github.com/mpaland/printf , and part of https://github.com/embeddedartistry/libc , a "libc targeted for embedded systems usage".
Thus, multiple factors seem to agree that nolibc code is not used in the Cosmopolitan library.
-
Would you merge with them?
This did turn up though and it's equally if not more legendary.
I could only find this https://github.com/mpaland/printf/issues/15
looked at that account, found this one too
Not so sure: https://github.com/mpaland/printf/issues/15 :)
The best part is that this user has posted some legitimate bugs and fixes like this. This is one of my favorites, because the dev just is like "sorry, fixed it."
trice
- Fully Permissive License C++ Logger For Embedded System
-
How useful are tool tracing software for RTOS in industry?
Printf like debugging is very easy and helpful but also costly in terms of memory space and execution time. Check out https://github.com/rokath/trice for a small and superfast tracing solution usable with the printf comfort even inside interrupts or the RTOS scheduler.
What are some alternatives?
tlog - Observability events system
zephyr - Primary Git Repository for the Zephyr Project. Zephyr is a new generation, scalable, optimized, secure RTOS for multiple hardware architectures.
tlog - Terminal I/O logger
nanoprintf - The smallest public printf implementation for its feature set.
defmt - Efficient, deferred formatting for logging on embedded systems
stumpless - a C logging library built for high performance and a rich feature set
z88dk - The development kit for over a hundred z80 family machines - c compiler, assembler, linker, libraries.
elk - A low footprint JavaScript engine for embedded systems
vformat - A Python str.format() like formatter, based on Text.Printf
modorganizer - Mod manager for various PC games. Discord Server: https://discord.gg/ewUVAqyrQX if you would like to be more involved
anal-encryption-2.0
uftrace - Function graph tracer for C/C++/Rust/Python