RetroFed Forum
Your home away from modern life.
I rewrote "tldr" in C, it's 20 times faster.
Post Reply
AuthorMessage
Girl Named ZERO piefed.zeromedia.vip girlnamedzero@piefed.zeromedia.vip
Joined: 2026-07-29
(edited) Quote

Seriously! According to the time command in fish, cldr (my program) takes around 4-5 ms to print files, tldr takes 80-100ms. (PS, on my server, cldr actually takes less than 1 ms to fetch the file, while tldr takes closer to 150 ms. That's 150 times faster!!!)

This started a couple days ago when a friend of mine alerted me to the fact that the official tldr repo now takes ai contributions for their pages (aka the cheat sheet files that are printed) and for the actual program code. She then showed me a repo called ethical-tldr which does not allow for the use of ai contributions in the pages or program code.

However, their even though their client doesn't allow vibe coding, it is still written in Python, which itself takes ai contributions.

So, I decided to learn C from scratch and make my own tldr client that's faster and better than theirs in *every way! Introducing cldr! I am especially proud of the list and search functionality because the interface is just gorgeous.

Note, ABSOLUTELY NO AI was used in the making of this, I learned and wrote everything on my own in just the past 3 days, I don't think I even copied much or any code from websites.

*There's still like two things I haven't implemented that the official client does, but they're very minor and I'd be willing to bet that 99% of you won't know the difference.

image

image

187   Original
Logi lemmy.world logi@lemmy.world
Joined: 2023-06-08
#2 · Quote Reply

So... C code is faster than python. We knew that. Thanks for the better performing rewrite. Now do it in rust 🤓

26
Logi lemmy.world logi@lemmy.world
Joined: 2023-06-08
#3 · Quote Reply

What your project desperately needs is a description of what it does. I had to follow the links to ethical-tldr back to the original tldr to see what it's supposed to do.

76
inari piefed.zip inari@piefed.zip
Joined: 2026-02-07
#4 · Quote Reply

This is an instance of that recurring trope of coding something better out of pure spite

54
inari piefed.zip inari@piefed.zip
Joined: 2026-02-07
#5 · Quote Reply

So... C code is faster than python. We knew that. Thanks for the better performing rewrite. Now do it in rust 🤓

Looks like someone did that https://github.com/tldr-pages/tlrc

28
Girl Named ZERO piefed.zeromedia.vip girlnamedzero@piefed.zeromedia.vip
Joined: 2026-07-29
#6 · Quote Reply

What your project desperately needs is a description of what it does. I had to follow the links to ethical-tldr back to the original tldr to see what it's supposed to do.

Ohh! That's a good point! Thanks! I just updated the README to provide an actual description.

53
esa discuss.tchncs.de syklemil@discuss.tchncs.de
Joined: 2024-12-16
#7 · Quote Reply

You might want to have a glance at the OpenSSF compiler hardening guide, and maybe try out ASAN (-fsanitize=address).

E.g. I get

[nobody@bb14e99a9c8e cldr]$ ./build/cldr --update --language C.
caution: filename not matched:  ethical-tldr/pages.C./*/*.md

=================================================================
==454==ERROR: LeakSanitizer: detected memory leaks

Direct leak of 4 byte(s) in 1 object(s) allocated from:
    #0 0x7fa48a32c0c1 in malloc (/usr/lib/libasan.so.8+0x12c0c1) (BuildId: b8a4241051a1621937fdc46e867ba7ecb56d96ea)
    #1 0x7fa489e8be0f  (/usr/lib/libc.so.6+0x8be0f) (BuildId: 503200d7fda94a5dc6058d7e0694e5d1dcb2e372)
    #2 0x7fa48a2f2761 in vasprintf (/usr/lib/libasan.so.8+0xf2761) (BuildId: b8a4241051a1621937fdc46e867ba7ecb56d96ea)
    #3 0x561d84213d8c in strfmt (/home/nobody/cldr/build/cldr+0x6d8c) (BuildId: 2a0f13efc2c9b12a67e7dd810a2cbdfd1866e53d)

SUMMARY: AddressSanitizer: 4 byte(s) leaked in 1 allocation(s).
20
esa discuss.tchncs.de syklemil@discuss.tchncs.de
Joined: 2024-12-16
#8 · Quote Reply

Looks like someone did that https://github.com/tldr-pages/tlrc

There's also https://github.com/tealdeer-rs/tealdeer

28
Girl Named ZERO piefed.zeromedia.vip girlnamedzero@piefed.zeromedia.vip
Joined: 2026-07-29
#9 · (edited) Quote Reply

You might want to have a glance at the OpenSSF compiler hardening guide, and maybe try out ASAN (-fsanitize=address). E.g. I get [nobody@bb14e99a9c8e cldr]$ ./build/cldr --update --language C. caution: filename not matched: ethical-tldr/pages.C./*/*.md ================================================================= ==454==ERROR: LeakSanitizer: detected memory leaks Direct leak of 4 byte(s) in...

Ah damn! That's one of the things I had told myself I needed to make sure I checked, but I forgot! Thanks! I'll look into this tomorrow. Like I said, I literally learned C over the last 3 days to make this, so I'm always happy to learn more!

18
Creat discuss.tchncs.de Creat@discuss.tchncs.de
Joined: 2023-06-16
#10 · Quote Reply

There's also https://github.com/tealdeer-rs/tealdeer

In all distros I've recently used this is what gets installed when you install the "tldr" package with the package manager. And for good reason.

20
eleijeep piefed.social eleijeep@piefed.social
Joined: 2025-09-22
#11 · Quote Reply

So, I decided to learn C from scratch
...
on my own in just the past 3 days

Really impressive, great job! What resources did you use for learning?

31
Dumhuvud programming.dev Dumhuvud@programming.dev
Joined: 2023-06-11
#12 · Quote Reply

Consider using a different name for the project if you care for searchability. There's already Unicode CLDR Project.

23
Girl Named ZERO piefed.zeromedia.vip girlnamedzero@piefed.zeromedia.vip
Joined: 2026-07-29
#13 · Quote Reply

So, I decided to learn C from scratch ... on my own in just the past 3 days Really impressive, great job! What resources did you use for learning?

Mostly just w3. Occasionally I had to look up some stuff for more “niche” use cases, but for the most part I just learned from w3.

I already have experience with programming in general, so the hardest part was learning the syntax, and strings… oh god strings are so bad in C, I had to make a new function called strfmt that works like printf but just for returning a formatted string.

23
Girl Named ZERO piefed.zeromedia.vip girlnamedzero@piefed.zeromedia.vip
Joined: 2026-07-29
#14 · Quote Reply

Consider using a different name for the project if you care for searchability. There's already Unicode CLDR Project.

damn! I guess I should have looked it up before going with the name. I just liked the play on tldr, cldr.

11
Gobbel2000 programming.dev Gobbel2000@programming.dev
Joined: 2024-04-03
#15 · Quote Reply

Mostly just w3. Occasionally I had to look up some stuff for more “niche” use cases, but for the most part I just learned from w3. I already have experience with programming in general, so the hardest part was learning the syntax, and strings… oh god strings are so bad in C, I had to make a new function called strfmt that works like printf but just for returning a formatted string.

Do you know about the sprintf function?

12
Girl Named ZERO piefed.zeromedia.vip girlnamedzero@piefed.zeromedia.vip
Joined: 2026-07-29
#16 · (edited) Quote Reply

You might want to have a glance at the OpenSSF compiler hardening guide, and maybe try out ASAN (-fsanitize=address). E.g. I get [nobody@bb14e99a9c8e cldr]$ ./build/cldr --update --language C. caution: filename not matched: ethical-tldr/pages.C./*/*.md ================================================================= ==454==ERROR: LeakSanitizer: detected memory leaks Direct leak of 4 byte(s) in...

Update to this, ~~I actually just fixed that bug, and ~~I went through the first section of the hardening guide. Changes are now pushed to main and I released v1.2.1

17
Girl Named ZERO piefed.zeromedia.vip girlnamedzero@piefed.zeromedia.vip
Joined: 2026-07-29
#17 · Quote Reply

Do you know about the sprintf function?

yes! However, I found it very frustrating to use and it kept leading to ludicrous errors beyond my wildest dreams. So I made my own function that works better and easier.

4
muzzle lemmy.zip muzzle@lemmy.zip
Joined: 2025-06-04
#18 · (edited) Quote Reply

damn! I guess I should have looked it up before going with the name. I just liked the play on tldr, cldr.

Just go with tlcr!

9
Girl Named ZERO piefed.zeromedia.vip girlnamedzero@piefed.zeromedia.vip
Joined: 2026-07-29
#19 · Quote Reply

Just go with tlcr!

Ohh, not bad! If I feel like I need to change it, tlcr is probably the best option

6
Artemis_Mystique lemmy.ml Artemis_Mystique@lemmy.ml
Joined: 2023-08-02
#20 · Quote Reply

C ftw, but seriously, calling an entire language(python) AI slop is going too far, though I will admit python has been responsible for slop code even before LLMs.
My opinion on the matter is, efficient use of LLMs will usher a push to go back to hardware level languages like C, as all the benefits of python(except the awesome collection of libraries it has unfortunately accumulated) are kind of moot when you have a machine capable of outputting any boilerplate you ask of it; beyond that I do not trust LLMs to write logic unless its a well known and named algorithm like reversing an array or a linked list.

2
Ace! _SL/S ani.social AceSLS@ani.social
Joined: 2023-11-10
#21 · Quote Reply

So... C code is faster than python. We knew that. Thanks for the better performing rewrite. Now do it in rust 🤓

Already exists and isn't vibecoded https://github.com/tealdeer-rs/tealdeer

12
esa discuss.tchncs.de syklemil@discuss.tchncs.de
Joined: 2024-12-16
#22 · Quote Reply

In all distros I've recently used this is what gets installed when you install the "tldr" package with the package manager. And for good reason.

I'll admit I have no idea what makes one of the Rust implementations preferable over the other. Nor can I go looking at the code myself now that GitHub has hosed itself again

5
kibiz0r midwest.social kibiz0r@midwest.social
Joined: 2023-07-14
#23 · Quote Reply

Consider using a different name for the project if you care for searchability. There's already Unicode CLDR Project.

We use CLDR quite a bit — and coincidentally, we often jokingly call it TLDR.

3
Valmond lemmy.dbzer0.com Valmond@lemmy.dbzer0.com
Joined: 2025-11-13
#24 · Quote Reply

So... C code is faster than python. We knew that. Thanks for the better performing rewrite. Now do it in rust 🤓

Why in rust? I mean it would be less faster, right? If speed is of the essence ofc.

0
for_some_delta beehaw.org for_some_delta@beehaw.org
Joined: 2025-05-23
#25 · Quote Reply

yes! However, I found it very frustrating to use and it kept leading to ludicrous errors beyond my wildest dreams. So I made my own function that works better and easier.

Glad you are enjoying C. As one of my proffesor's espoused, "It is God's language". As a C++ developer, I cannot recommend {fmt} enough.

15
sem piefed.blahaj.zone sem@piefed.blahaj.zone
Joined: 2025-09-04
#26 · Quote Reply

In all distros I've recently used this is what gets installed when you install the "tldr" package with the package manager. And for good reason.

What is the reason?

4
moldy_rice piefed.keyboardvagabond.com moldy_rice@piefed.keyboardvagabond.com
Joined: 2026-08-07
#27 · Quote Reply

What your project desperately needs is a description of what it does. I had to follow the links to ethical-tldr back to the original tldr to see what it's supposed to do.

And yet, you haven't said it either

2
MasterBlaster lemmy.world MasterBlaster@lemmy.world
Joined: 2023-06-07
#28 · Quote Reply

excellent. however if you are making a point about AI not being as good s a quality developer, you are missing the point.

CEOs don't give a shit about quality and effectiveness. it is all about getting rid of labor costs. once all he few remaining providers of service are absorbed, we take what they give and pay through the nose. monthly.

4
Jankatarch lemmy.world Jankatarch@lemmy.world
Joined: 2024-07-12
#29 · Quote Reply

Hell yeah!

2
Colloidal programming.dev Colloidal@programming.dev
Joined: 2025-02-26
#30 · (edited) Quote Reply

Dependancies

[Optional] wget can be installed for less reliance on other projects using ai, if wget is not found, curl will be used instead

  1. Small typo: dependencies.
  2. Is curl using AI in its code now?

Thanks for your work!

6
Ephera lemmy.ml Ephera@lemmy.ml
Joined: 2020-05-31
#31 · (edited) Quote Reply

And yet, you haven't said it either

It's basically short-form manpages, so it gives you a one-liner to describe what a CLI utility does, and then just lists a few concrete invocations to show off different use-cases for it.

One other big difference to manpages, though, is that the actual texts aren't packaged by your distro, but rather downloaded from a server.

13
tomenzgg midwest.social tomenzgg@midwest.social
Joined: 2025-01-19
#32 · Quote Reply

I could only wish to be this cool.

41
shittydwarf piefed.ca shittydwarf@piefed.ca
Joined: 2026-05-28
#33 · Quote Reply

20
chunes lemmy.world chunes@lemmy.world
Joined: 2025-04-08
#34 · (edited) Quote Reply

I wish people still had shame.

Python isn't for command line utilities that you intend to distribute to others. It's for personal one-off scripts.

I mean, FFS, if you're gonna vibecode something, why not pick a fast language? The fact that they can't even tell the LLM to use the right technology shows that they are a complete imbecile

7
communism lemmy.ml communism@lemmy.ml
Joined: 2024-03-19
#35 · Quote Reply

Why in rust? I mean it would be less faster, right? If speed is of the essence ofc.

Performance of compiled Rust and compiled C are comparable. Of course, compiling Rust is slower though.

4
endless_nameless lemmy.world endless_nameless@lemmy.world
Joined: 2026-01-15
#36 · Quote Reply

Why in rust? I mean it would be less faster, right? If speed is of the essence ofc.

The performance metrics are cool (though unscientific) but speed is definitely NOT of the essence lmfao

TLDR is not a high throughput real time application. You run it like once per use, probably at a rate of less than once per day. Then you spend a minute reading the output. We're talking about minutes-per-year time savings here.

3
bort sopuli.xyz bort@sopuli.xyz
Joined: 2024-02-19
#37 · Quote Reply

I wish people still had shame. Python isn't for command line utilities that you intend to distribute to others. It's for personal one-off scripts. I mean, FFS, if you're gonna vibecode something, why not pick a fast language? The fact that they can't even tell the LLM to use the right technology shows that they are a complete imbecile

Python isn’t for command line utilities that you intend to distribute to others

wat

12
potustheplant feddit.nl potustheplant@feddit.nl
Joined: 2023-08-29
#38 · Quote Reply

Mostly just w3. Occasionally I had to look up some stuff for more “niche” use cases, but for the most part I just learned from w3. I already have experience with programming in general, so the hardest part was learning the syntax, and strings… oh god strings are so bad in C, I had to make a new function called strfmt that works like printf but just for returning a formatted string.

Are you allergic to vowels?

3
milk discuss.tchncs.de milk@discuss.tchncs.de
Joined: 2023-08-11
#39 · Quote Reply

Oh yeah this is bound to be maintained

3
kieron115 startrek.website kieron115@startrek.website
Joined: 2024-02-14
#40 · Quote Reply

Already exists and isn't vibecoded https://github.com/tealdeer-rs/tealdeer

I was gonna post this as well, this comes with CachyOS by default.

3
kieron115 startrek.website kieron115@startrek.website
Joined: 2024-02-14
#41 · Quote Reply

https://github.com/tealdeer-rs/tealdeer Rust TLDR

19
Girl Named ZERO piefed.zeromedia.vip girlnamedzero@piefed.zeromedia.vip
Joined: 2026-07-29
#42 · Quote Reply

Dependancies [Optional] wget can be installed for less reliance on other projects using ai, if wget is not found, curl will be used instead Small typo: dependencies. Is curl using AI in its code now? Thanks for your work!

1: thanks! I’ll fix that soon.

2: this is according to the same friend I talked about, but it would be good to double check her knowledge

3
Girl Named ZERO piefed.zeromedia.vip girlnamedzero@piefed.zeromedia.vip
Joined: 2026-07-29
#43 · Quote Reply

Dependancies [Optional] wget can be installed for less reliance on other projects using ai, if wget is not found, curl will be used instead Small typo: dependencies. Is curl using AI in its code now? Thanks for your work!

Update to my previous comment:

1: Fixed!

2: Yes, it seems like it is! According to the open-slopware repository curl does take ai submissions.

7
Colloidal programming.dev Colloidal@programming.dev
Joined: 2025-02-26
#44 · Quote Reply

Update to my previous comment: 1: Fixed! 2: Yes, it seems like it is! According to the open-slopware repository curl does take ai submissions.

Dang, looks like they went all-in on it.

7
Girl Named ZERO piefed.zeromedia.vip girlnamedzero@piefed.zeromedia.vip
Joined: 2026-07-29
#45 · Quote Reply

Oh yeah this is bound to be maintained

I intend on maintaining this for as long as I'm able to program

5
fruitcantfly programming.dev fruitcantfly@programming.dev
Joined: 2023-07-01
#46 · (edited) Quote Reply

This looks like a colossally bad idea:

  if (!strcmp(platform, "windows") && !isSpecificPlatform) {
    debugLog("Falling back to rm -rf", 2);
    debugLog(strfmt("rm -rf exited with code %d",system(strfmt("rm -rf %s", path))), 3);
  }

In addition,

However, their even though their client doesn’t allow vibe coding, it is still written in Python, which itself takes ai contributions.

Per the Makefile, this project is built using GCC. GCC itself accepts AI contributions, provided that the code is "legally insignificant" (meaning less than around 15 lines of code) or is part of test cases: https://gcc.gnu.org/ai-policy.html

18
Logi lemmy.world logi@lemmy.world
Joined: 2023-06-08
#47 · Quote Reply

Why in rust? I mean it would be less faster, right? If speed is of the essence ofc.

Because "rewrite it in rust" is its own meme and needs no particular reasoning.

4
sinwell infosec.pub Septimaeus@infosec.pub
Joined: 2023-07-09
#48 · Quote Reply

Are you allergic to vowels?

Those are method names in C, so I’m afraid you’ll have to take it up with a guy named Dennis who isn’t very talkative these days.

5
potustheplant feddit.nl potustheplant@feddit.nl
Joined: 2023-08-29
#49 · Quote Reply

Those are method names in C, so I’m afraid you’ll have to take it up with a guy named Dennis who isn’t very talkative these days.

Not sure what you mean. You said that you had to make a new function and decided to call it "strfrm". The standard is actually the opposite afaik. You should be more verbose and not use contractions. Something like "string_format" is far easier to read.

4
darklamer feddit.org darklamer@feddit.org
Joined: 2026-02-19
#50 · Quote Reply

I wish people still had shame. Python isn't for command line utilities that you intend to distribute to others. It's for personal one-off scripts. I mean, FFS, if you're gonna vibecode something, why not pick a fast language? The fact that they can't even tell the LLM to use the right technology shows that they are a complete imbecile

Python isn't for command line utilities that you intend to distribute to others.

Sorry, but you're wrong about this. Python can be an excellent choice for many command line utilities intended for distribution to others.

3
chunes lemmy.world chunes@lemmy.world
Joined: 2025-04-08
#51 · Quote Reply

Python isn't for command line utilities that you intend to distribute to others. Sorry, but you're wrong about this. Python can be an excellent choice for many command line utilities intended for distribution to others.

I don't enjoy making my computer work 20 times harder than it has to

2
Post Reply Page 1 of 2   Goto page 1, 2 Last »
Back to top