printf
pwned
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)
pwned
-
Cppfront, Herb Sutter's proposal for a new C++ syntax
modern C++ is fine, as long as you don't try to get too clever with return types, move semantics, constexpr and template parameter expansions.
They all have their places, but if your code is littered with them, it feels like every line is a puzzle.
Here's an attempt to wrap sqlite in a typesafe manner using template expansion. All very simple C++11. https://github.com/nurettin/pwned/blob/master/sqlsafe/sqlsaf...
(some types had to be spelled out because the compilers weren't ready)
Here's some more C++11 without using any of the mentioned complexities https://github.com/nurettin/pwned/blob/master/server/server....
This shows that simply spelling out your types and not getting crazy with polymorphic metaprogramming makes code much more readable. Ideally, code should just be a bunch of ifs and loops.
What are some alternatives?
nanoprintf - The smallest public printf implementation for its feature set.
cppfront - A personal experimental C++ Syntax 2 -> Syntax 1 compiler
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.
carbon-lang - Carbon Language's main repository: documents, design, implementation, and related tools. (NOTE: Carbon Language is experimental; see README)
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.
Vrmac - Vrmac Graphics, a cross-platform graphics library for .NET. Supports 3D, 2D, and accelerated video playback. Works on Windows 10 and Raspberry Pi4.
jakt - The Jakt Programming Language
printf - Tiny, fast, non-dependent and fully loaded printf implementation for embedded systems. Extensive test suite passing.
drogon - Drogon: A C++14/17/20 based HTTP web application framework running on Linux/macOS/Unix/Windows