ccan VS libds

Compare ccan vs libds and see what are their differences.

libds

A collection of data structures for C (by lelanthran)
InfluxDB - Power Real-Time Data Analytics at Scale
Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
www.influxdata.com
featured
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com
featured
ccan libds
13 6
1,046 16
- -
3.4 0.0
2 months ago 18 days ago
C C
- MIT License
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
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.

ccan

Posts with mentions or reviews of ccan. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-03-22.
  • Memory leak proof every C program
    1 project | news.ycombinator.com | 20 Jan 2024
    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 ?
    13 projects | /r/C_Programming | 22 Mar 2023
    There's CCAN, maintained by kernel hacker Rusty Russell: http://ccodearchive.net/
  • My review of the C standard library in practice
    3 projects | news.ycombinator.com | 11 Feb 2023
    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
    1 project | /r/C_Programming | 15 Nov 2022
    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
    15 projects | news.ycombinator.com | 16 May 2022
  • Toward a better list iterator for the Linux kernel
    4 projects | news.ycombinator.com | 10 Mar 2022
    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
    12 projects | /r/C_Programming | 6 Jan 2022
    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.
    2 projects | /r/C_Programming | 6 Nov 2021
    ccan (analagous to cpan, but for C rather than Perl.)
  • Dynamic link list
    2 projects | /r/C_Programming | 21 Oct 2021
    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
    7 projects | news.ycombinator.com | 8 May 2021
    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...

libds

Posts with mentions or reviews of libds. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2022-05-16.
  • Common libraries and data structures for C
    15 projects | news.ycombinator.com | 16 May 2022
    I may as well throw my hat into the ring: https://github.com/lelanthran/libds

    I decided that I wanted to be able to simply drop a single .h file and a single .c file into any project without have to build a `libBlah.so` and link it to every project that needed (for example) a hashmap.

    The practical result is that using the hashmap only requires me to copy the header and source files into the calling project.

    It does build as a standalone library too, so you can link it if you want.

    My primary reason for starting this is that I was pretty unsatisfied with all of the string libraries for C. When all I want to do is concatenate multiple strings together, I don't want to have to convert between `char ` and `struct stringtype ` everywhere.

    The string functions are very useful as they all operate on the standard `char *` (nul-terminated) type.

  • Buffet
    11 projects | news.ycombinator.com | 7 Mar 2022
    That would be nice, then I wouldn't have to use non-standard stuff.

    I made my own easy-to-incorporate-into-any-project library - https://github.com/lelanthran/libds - just copy the ds_*.h and ds_*.c into a project and you're good to go.

    I'm not saying it will work for you, but it works for me.

  • BCHS: OpenBSD, C, httpd and SQLite web stack
    6 projects | news.ycombinator.com | 18 Jan 2022
    > Is there a good string-manipulation C library?

    You will have to define "good". My string library[1][2] is "good" for me because:

    1. It's compatible with all the usual string functions (doesn't define a new type `string_t` or similar, uses existing `char `).

    2. It does what I want: a) Works on multiple strings so repeated operations are easy, and b) Allocates as necessary so that the caller only has to free, and not calculate how much memory is needed beforehand.

    The combination of the above means that many common* string operations that I want to do in my programs are both easy to do and easy to visually inspect for correctness in the caller.

    Others will say that this is not good, because it still uses and exposes `char *`.

    [1] https://github.com/lelanthran/libds/blob/master/src/ds_str.h

    [2] Currently the only bug I know of is the quadratic runtime in many of the functions. I intend to fix this at some point.

  • Strings in C... tiring and unsafe. So I just made this lib. Am I doing it right, Reddit ?
    9 projects | /r/programming | 2 Feb 2021
    As an example of an opaque pointer library, see https://github.com/lelanthran/libds/blob/v1.0.5/src/ds_ll.h - See line 7 for the typedef. - Lines 9, 10, 11 and 67, 68 and 69 for making it callable from C++.

What are some alternatives?

When comparing ccan and libds you can also consider the following projects:

SQLite - Official Git mirror of the SQLite source tree

stb - stb single-file public domain libraries for C/C++

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.

libderp - C collections. Easy to build, boring algorithms. Dumb is good.

stage0 - A set of minimal dependency bootstrap binaries

live-bootstrap - Use of a Linux initramfs to fully automate the bootstrapping process

kcgi - minimal CGI and FastCGI library for C/C++

limine - Modern, advanced, portable, multiprotocol bootloader.

SDS - Simple Dynamic Strings library for C

chibicc - A small C compiler

buf - C string buffer library