glibc

Unofficial mirror of sourceware glibc repository. Updated daily. (by bminor)

Glibc Alternatives

Similar projects and alternatives to glibc

  1. rust

    2,844 glibc VS rust

    Empowering everyone to build reliable and efficient software.

  2. InfluxDB

    InfluxDB – Built for High-Performance Time Series Workloads. InfluxDB 3 OSS is now GA. Transform, enrich, and act on time series data directly in the database. Automate critical tasks and eliminate the need to move data externally. Download now.

    InfluxDB logo
  3. go

    2,274 glibc VS go

    The Go programming language

  4. TypeScript

    1,427 glibc VS TypeScript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  5. linux

    1,060 glibc VS linux

    Linux kernel source tree

  6. src

    768 glibc VS src

    Read-only git conversion of OpenBSD's official CVS src repository. Pull requests not accepted - send diffs to the tech@ mailing list.

  7. rfcs

    690 glibc VS rfcs

    RFCs for changes to Rust

  8. systemd

    The systemd System and Service Manager

  9. SaaSHub

    SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives

    SaaSHub logo
  10. llvm-project

    The LLVM Project is a collection of modular and reusable compiler and toolchain technologies.

  11. cosmopolitan

    build-once run-anywhere c library

  12. STL

    162 glibc VS STL

    MSVC's implementation of the C++ Standard Library.

  13. ocaml

    130 glibc VS ocaml

    The core OCaml system: compilers, runtime system, base libraries

  14. Packagist

    68 glibc VS Packagist

    Package Repository Website - try https://packagist.com if you need your own -

  15. OpenVDB

    56 glibc VS OpenVDB

    OpenVDB - Sparse volume data structure and tools

  16. cups

    34 glibc VS cups

    OpenPrinting CUPS Sources (by OpenPrinting)

  17. json-c

    18 glibc VS json-c

    https://github.com/json-c/json-c is the official code repository for json-c. See the wiki for release tarballs for download. API docs at http://json-c.github.io/json-c/

  18. musl

    6 glibc VS musl

    Unofficial mirror of etalabs musl repository. Updated daily.

  19. grpc_bench

    Discontinued Various gRPC benchmarks [GET https://api.github.com/repos/microsoft/grpc_bench: 404 - Not Found // See: https://docs.github.com/rest/repos/repos#get-a-repository] (by microsoft)

  20. cups

    OpenPrinting CUPS Sources (by microsoft)

  21. vscode-gradle

    Manage Gradle Projects, run Gradle tasks and provide better Gradle file authoring experience in VS Code

  22. JSONFeed

    7 glibc VS JSONFeed

    Swift parser for JSON Feed — a new format similar to RSS and Atom but in JSON.

  23. SaaSHub

    SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives

    SaaSHub logo
NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a better glibc alternative or higher similarity.

glibc discussion

Log in or Post with

glibc reviews and mentions

Posts with mentions or reviews of glibc. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2025-04-29.
  • Path Isn't Real on Linux
    4 projects | news.ycombinator.com | 29 Apr 2025
    That's fair, sorry for my casual language in a technically nuanced discussion. I hadn't looked at this in quite a while, but it was good to review. Thanks for the prompting.

    https://github.com/bminor/glibc/blob/glibc-2.41/sysdeps/unix...

    https://github.com/bminor/glibc/blob/glibc-2.41/sysdeps/unix...

  • C stdlib isn't threadsafe and even safe Rust didn't save us
    5 projects | news.ycombinator.com | 22 Jan 2025
    I'll take existence proofs [1] over personal insults but YMMV.

    [1] https://github.com/bminor/glibc/commit/7a61e7f557a97ab597d6f...

  • Don't Clobber the Frame Pointer
    2 projects | news.ycombinator.com | 4 Jan 2025
    Depending on how you count, the ratio might not be that small. A lot of hot code are written in hand-coded inline assembly, so in terms of CPU cycles run it's probably non-negligible.

    i.e. take a look at the glibc implementation of 'strcmp` [0]

    [0] https://github.com/bminor/glibc/blob/master/sysdeps/x86_64/m...

  • I cut GTA Online loading times by 70% (2021)
    3 projects | news.ycombinator.com | 9 Jan 2024
  • Cray-1 performance vs. modern CPUs
    4 projects | news.ycombinator.com | 25 Dec 2023
    I wonder if you’re using a different definition of ‘vectorized’ from the one I would use. For example glibc provides a vectorized strlen. Here is the sse version: https://github.com/bminor/glibc/blob/master/sysdeps/x86_64/m...

    It’s pretty simple to imagine how to write an unoptimized version: read a vector from the start of the string, compare it to 0, convert that to a bitvector, test for equal to zero, then loop or clz and finish.

    I would call this vectorized because it operates on 16 bytes (sse) at a time.

    There are a few issues:

    1. You’re still spending a lot of time in the scalar code checking loop conditions.

    2. You’re doing unaligned reads which are slower on old processors

    3. You may read across a cache line forcing you to pull a second line into cache even if the string ends before then.

    4. You may read across a page boundary which could cause a segfault if the next page is not accessible

    So the fixes are to do 64-byte (ie cache line) aligned accesses which also means page-aligned (so you won’t read from a page until you know the string doesn’t end in the previous page). That deals with alignment problems. You read four vector registers at a time but this doesn’t really cost much more if the string is shorter as it all comes from one cache line. Another trick in the linked code is that it first finds the cache line by reading the first 16 bytes then merging in the next 3 groups with unsigned-min, so it only requires one test against a zero vector instead of 4. Then it finds the zero in the cache line. You need to do a bit of work in the first iteration to become aligned. With AVX, you can use mask registers on reads to handle that first step instead.

  • Setenv Is Not Thread Safe and C Doesn't Want to Fix It
    6 projects | news.ycombinator.com | 19 Nov 2023
    That was also my thought. To my knowledge `/etc/localtime` is the creation of Arthur David Olson, the founder of the tz database (now maintained by IANA), but his code never read `/etc/localtime` multiple times unless `TZ` environment variable was changed. Tzcode made into glibc but Ulrich Drepper changed it to not cache `/etc/localtime` when `TZ` is unset [1]; I wasn't able to locate the exact rationale, given that the commit was very ancient (1996-12) and no mailing list archive is available for this time period.

    [1] https://github.com/bminor/glibc/commit/68dbb3a69e78e24a778c6...

  • CTF Writeup: Abusing select() to factor RSA
    2 projects | news.ycombinator.com | 11 Nov 2023
    That's not really what the problem is. The actual code is fine.

    The issue is that the definition of `fd_set` has a constant size [1]. If you allocate the memory yourself, the select() system call will work with as many file descriptors as you care to pass to it. You can see that both glibc [2] and the kernel [3] support arbitrarily large arrays.

    [1] https://github.com/bminor/glibc/blob/master/misc/sys/select....

    [2] https://github.com/bminor/glibc/blob/master/sysdeps/unix/sys...

    [3] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/lin...

  • How are threads created in Linux x86_64
    3 projects | dev.to | 22 Sep 2023
    The source code for that is here.
  • Using Uninitialized Memory for Fun and Profit (2008)
    3 projects | news.ycombinator.com | 3 Sep 2023
    Expanding macro gives three GCC function attributes [2]: `__attribute__ ((malloc))`, `__attribute__ ((alloc_size(1)))` and `__attribute__ ((warn_unused_result))`. They are required for GCC (and others recognizing them) to actually ensure that they behave as the standard dictates. Your own malloc-like functions won't be treated same unless you give similar attributes.

    [1] https://github.com/bminor/glibc/blob/807690610916df8aef17cd1...

    [2] https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attribute...

  • “csinc”, the AArch64 instruction you didn’t know you wanted
    2 projects | news.ycombinator.com | 7 Jun 2023
    IFunc relocations is what enables glibc to dynamically choose the best memcpy routine to use at runtime based on the CPU.

    see https://github.com/bminor/glibc/blob/glibc-2.31/sysdeps/x86_...

  • A note from our sponsor - InfluxDB
    www.influxdata.com | 19 Jun 2025
    InfluxDB 3 OSS is now GA. Transform, enrich, and act on time series data directly in the database. Automate critical tasks and eliminate the need to move data externally. Download now. Learn more →

Stats

Basic glibc repo stats
48
1,635
9.9
4 days ago

Sponsored
InfluxDB – Built for High-Performance Time Series Workloads
InfluxDB 3 OSS is now GA. Transform, enrich, and act on time series data directly in the database. Automate critical tasks and eliminate the need to move data externally. Download now.
www.influxdata.com

Did you know that C is
the 6th most popular programming language
based on number of references?