--- title: "lolcat-c" external_links: - name: Sources url: "https://git.jaseg.de/lolcat.git" - name: Github url: "https://github.com/jaseg/lolcat" - name: Issues url: "https://github.com/jaseg/lolcat/issues" summary: > lolcat-c is a small, high-performance re-implementation of the `lolcat `__ rainbow cat utility. lolcat-c is meant as a lolcat that you can actually use in production. It is fast, not slowing down whatever you pipe through it, and it robustly handles real-world terminal output including escape sequences. --- What? ===== .. image:: LOLCat-Rainbow.jpg Screenshot ========== .. image:: screenshot.png .. image:: sl.gif Installation ============ Archlinux --------- There's an `AUR package `__: .. code:: sh $ git clone https://aur.archlinux.org/packages/c-lolcat $ cd c-lolcat $ makepkg -csi Fedora ------ .. code:: sh $ dnf install lolcat Ubuntu (Snap) ------------- See `this awesome blog post by a kind person from the internet `__: .. code:: sh $ snap install lolcat-c Mac --- Build loclcat with: .. code:: sh $ make lolcat ...and put the resulting binary at a place of your choice. Others ------ .. code:: sh $ make && sudo make install 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. .. code:: sh 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 `__: .. code:: sh 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`)