No description
Find a file
2017-03-20 18:06:54 +01:00
memorymapping@79ce0ddd0d Compile dynamically linked executables on MacOS 2016-04-28 22:40:14 +02:00
musl@fb58545f8d Link statically against musl 2015-07-07 02:49:51 +02:00
.gitignore Added little censoring script 2015-07-14 22:09:19 +02:00
.gitmodules Compile dynamically linked executables on MacOS 2016-04-28 22:40:14 +02:00
censor.c Improve interop 2016-04-28 22:55:06 +02:00
LICENSE Added a LICENSE 2014-10-24 11:13:57 +02:00
LOLCat-Rainbow.jpg Fixed the cat picture's filename 2014-10-25 16:57:53 +02:00
lolcat.c Compile dynamically linked executables on MacOS 2016-04-28 22:40:14 +02:00
Makefile Fix make rule order for system-musl builds 2016-11-19 10:28:45 +01:00
Makefile.musl Fix make rule order for system-musl builds 2016-11-19 10:28:45 +01:00
PKGBUILD Add musl to the arch PKGBUILD dependency list 2016-11-18 10:31:14 +01:00
README.md README: Add Ubuntu/Snap installation. Thanks @simos ! 2017-03-20 18:06:54 +01:00
screenshot.png Added a screenshot 2014-10-25 16:56:32 +02:00
sl.gif Adding cool sl gif. 2015-07-12 22:56:40 +02:00

What?

Screenshot

Installation

Archlinux

There's an AUR package:

$ yaourt -S c-lolcat

Ubuntu (Snap)

See this awesome blog post by a kind person from the internet:

$ snap install lolcat-c

Mac

Build the system-libc version (instead of the statically linked version) with:

$ make lolcat

...and put the resulting binary at a place of your choice.

Others

$ make && sudo make install

If this can't find musl and you have it installed somewhere, run

$ make MUSLDIR=/path/to/musl

If you don't have a musl around yet, the easiest way to build is to run

$ git submodule init
$ git submodule update
$ make

This will checkout and build musl in this repository's musl dir.

Why?

This lolcat clone is an attempt to reduce the world's carbon dioxide emissions by optimizing inefficient code. It's >10x as fast and <0.1% as large as the original one.

newton~/d/lolcat <3 dmesg>foo
newton~/d/lolcat <3 time upstream/bin/lolcat foo
13.51user 1.34system 0:15.99elapsed 92%CPU (0avgtext+0avgdata 10864maxresident)k
0inputs+0outputs (0major+1716minor)pagefaults 0swaps
newton~/d/lolcat <3 time ./lolcat foo
0.02user 0.00system 0:00.09elapsed 34%CPU (0avgtext+0avgdata 1936maxresident)k
0inputs+0outputs (0major+117minor)pagefaults 0swaps

Bonus comparison with python-lolcat:

newton~/d/lolcat <3 dmesg>foo
$ time python-lolcat foo
12.27user 0.00system 0:12.29elapsed 99%CPU (0avgtext+0avgdata 11484maxresident)k
0inputs+0outputs (0major+1627minor)pagefaults 0swaps
$ time c-lolcat foo
0.29user 0.00system 0:00.30elapsed 98%CPU (0avgtext+0avgdata 468maxresident)k
0inputs+0outputs (0major+21minor)pagefaults 0swaps

(Read: c-lolcat << python-lolcat << ruby-lolcat)