printf
printf
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
-
MISRA C
From my experience, maintaining a standalone/embedded printf library - MISRA is a combination of two things: Common-sense rules, and pain-in-the-ass rules. Example of the latter: Avoiding implementation-defined types like `int` in places where my code doesn't care about what sizeof(int) is.
I was able to accommodate most (?) of the MISRA rules (https://github.com/eyalroz/printf/issues/77), but mine is just a small library, so I don't know how restrictive they would be for a larger codebase.
-
Sprintf without C library
Note that https://github.com/eyalroz/printf is the fork of mpaland that is being maintained.
-
What is the most efficient way to create an ASCII string from multiple types?
Take a look at an embedded focused sprintf like this one and measure: https://github.com/eyalroz/printf
-
Cppfront, Herb Sutter's proposal for a new C++ syntax
> I have some bad C++ experienced, and I know enough programmers I respect who stick to C over C++.
Do you know such people who work on large software systems, as opposed to, say, micro-controller firmware, or kernel drivers and such?
(Asking as a person who maintains an important(ish) C library for embedded coders: https://github.com/eyalroz/printf)
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.
-
How should I go about implementing printf-like function in my library?
I wrap this C implementation in a C++ Logger class and use it to "print" into a simple buffer. Then the static buffer is periodically unrolled into a transport layer using a static Logger::transmit() function in my BSP. I'm working with very little flash, so the linked implementation is essential.
-
A 1 hour interview for an embedded engineering position
There are many good and tiny printf's fir embedded on GitHub. https://github.com/mpaland/printf eg Better than the bsd printf mostly
- is it safe to use printf()?
-
Sprintf on STM32?
I'm sure sprintf itself is working in their library, so try to find other issues first, BUT, as a last resort you can try another lib: https://github.com/mpaland/printf/
-
Would you merge with them?
looked at that account, found this one too
What are some alternatives?
nanoprintf - The smallest public printf implementation for its feature set.
gx - A Go->C++transpiler meant for data-oriented gameplay and application programming especially for WebAssembly. Using this mostly in the context of specific personal projects and heavily focusing the feature set on those. Used in my Raylib gamejam project: https://github.com/nikki93/raylib-5k -- also being used to develop a private longer term game project and a note-taking app.
trice - 🟢 super fast 🚀 and tiny 🐥 embedded device 𝘾 printf-like trace ✍ code, works also inside ⚡ interrupts ⚡ and real-time PC 💻 logging (trace ID visualization 👀)
callback_printf - callback_printf allows the implementation of portable sprintf, snprintf, vsprintf and vsnprintf like output functions. The code includes wrappers for those functions. It supports all formats of the C 11 standard. wchar_t arguments and strings are printed as UTF-8. It's pretty fast, threadsafe and has no dependencies to other libraries.
z88dk - The development kit for over a hundred z80 family machines - c compiler, assembler, linker, libraries.
cppfront - A personal experimental C++ Syntax 2 -> Syntax 1 compiler
anal-encryption-2.0
jakt - The Jakt Programming Language
elk - A low footprint JavaScript engine for embedded systems
pwned - Simple C++ code for simple tasks
modorganizer - Mod manager for various PC games. Discord Server: https://discord.gg/ewUVAqyrQX if you would like to be more involved