mlib
ccan
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.
mlib
-
preprocessor stuff - compile time pasting into other files
This uses the preprocessing library
-
Popular Data Structure Libraries in C ?
M*LIB
-
So what's the best data structures and algorithms library for C?
Thanks to your feedback, I have added a new chapter in the documentation explaining how to do what you want. In this case, you need to inherit from the integer oplist (M_BASIC_OPLIST) and only adds the operator you need using the macro M_OPEXTEND. I have also added examples for integer and for c-string that may help you since there weren't any example with OA hashmap.
-
C Template Library
A quick bench on array(unsigned) between RXI vec and M*LIB array, which uses type generation, shows 1476 ms for RXI vec and 1116 ms for M*LIB (O2 / native / No LTO).
- M*LIB: Generic type-safe Container Library for C language
-
[2022] [C] Flipper Zero (STM32, ~100KB RAM available) - ALL 25 days
That was definitely part of the pain: I'm not fluent in C (professionally mainly write golang), so everything was taking me more time, and I was cursing the lack of all the niceties I'm used to. Having access to mlib that came with the firmware did help a lot, but still... Then also having to run everything through the flipper, 'screening' to it to get logs, etc. was just that extra little bit of pain.
-
STC VS mlib - a user suggested alternative
2 projects | 1 Oct 2022
ccan
-
Memory leak proof every C program
Hilarious!
But I remember the first time I saw such a program which never freed anything: jitterbug, the simple bug tracker which ran as a CGI script.
It indeed allows a very simple style!
Meanwhile, use ccan/tal (https://github.com/rustyrussell/ccan/blob/master/ccan/tal/_i...) and be happy :)
-
Popular Data Structure Libraries in C ?
There's CCAN, maintained by kernel hacker Rusty Russell: http://ccodearchive.net/
-
My review of the C standard library in practice
Please note that the above link has been claimed by squatters and isn’t the right link for CCAN anymore! The maintainer suggests [1] just using the GitHub repo [2] instead.
[1] https://lists.ozlabs.org/pipermail/ccan/2022-September/00141...
[2] https://github.com/rustyrussell/ccan/
-
[ROAST MY CODE] Implementing generic vector in C
This is a great learning exercise but not very useful because using void* creates practical problems that the compiler cant help you with. IMHO, for a nice vector in C look at https://github.com/rustyrussell/ccan/blob/master/ccan/darray/darray.h
- Common libraries and data structures for C
-
Toward a better list iterator for the Linux kernel
For more advanced intrusive lists in C, I've found that ccan's tlist2 (https://github.com/rustyrussell/ccan/blob/master/ccan/tlist2...) provides a decent model here.
Compared to the linux kernel's intrusive lists, it also tracks the offset of the list_node within the structure contained by the list, which eliminates another class of problems. It does still have the "using the iterator after the for loop is over" issue discussed in this article, but it also already tracks the types as Linus proposed doing in the article to resolve the issue.
-
Good C Source Code
ccan library https://github.com/rustyrussell/ccan I think it is used also in the linux kernel(?)
-
What are your favorite C resources? They can be either for learning or reference.
ccan (analagous to cpan, but for C rather than Perl.)
-
Dynamic link list
You could use a discriminated union in your list node. You could use a void pointer in your list node, allocate space as needed and memcpy the date into this space, or don't allocate and store pointers to the original data. You could use an intrusive list, like this.
-
The Byte Order Fiasco
The fallacy in the article is that anyone should code these functions. There's plenty of public domain libraries that do this correctly.
https://github.com/rustyrussell/ccan/blob/master/ccan/endian...
What are some alternatives?
stc - Speedy TypeScript type checker
SQLite - Official Git mirror of the SQLite source tree
STC - A modern, user friendly, generic, type-safe and fast C99 container library: String, Vector, Sorted and Unordered Map and Set, Deque, Forward List, Smart Pointers, Bitset and Random numbers.
advent-of-code-2022 - Advent of Code 2022 on the Flipper Zero
stage0 - A set of minimal dependency bootstrap binaries
CC - A small, usability-oriented generic container library.
stb - stb single-file public domain libraries for C/C++
map - A type-safe hash map implementation for C
limine - Modern, advanced, portable, multiprotocol bootloader and boot manager.
flipperzero-firmware - Flipper Zero firmware source code
chibicc - A small C compiler