· kaynak Hacker News – Front Page (native)
Cbirds: her terminalde uçan, bağımlılıksız bir C99 boids sürüsü
Cbirds, bağımlılığı olmayan tek bir C99 programı; Craig Reynolds'ın boids modelini her terminalde braille karakterlerle, Kitty ve Ghostty'de ise sprite'larla canlandırıyor ve pipe ile verilen komut çıktısını uçan bir sürüye dönüştürebiliyor.
Cbirds adlı bir terminal sürü simülatörü 12 Ekim'de Hacker News'in ana sayfasına ulaştı ve okuyucuları GitHub'daki clainstone/cbirds deposuna yönlendirdi. Program, Craig Reynolds'ın boids modelini — canlılara özgü sürü davranışının birkaç basit yerel kuraldan ortaya çıktığı klasik model — uyguluyor ve projenin README'sine göre Linux ve macOS üzerinde çalışan, bağımlılığı olmayan tek bir C99 programı.
Tek binary içinde iki renderer
Cbirds varsayılan olarak kuşlarını her terminalin görüntüleyebildiği braille karakterleriyle çiziyor; sextant modu da mevcut. --render kitty parametresi, Kitty ve Ghostty terminallerinde çalışan Kitty graphics protocol üzerinden gönderilen sprite grafiklerine geçişi sağlıyor. README, proje sayfasındaki her demo klibin programın kendisi tarafından kaydedildiğini belirtiyor. Normal çalışma saniyede 60 kareyle sınırlı; --unlock-fps profil çıkarma için kare gecikmesini kaldırıyor ve simülasyon gerçek zamanlı ilerlediğinden kare hızını açmak kuşların daha hızlı uçmasını sağlamıyor.
Dokunulabilen bir sürü
Simülasyon izleyicisine tepki veriyor. İşaretçiyi sürünün içine götürmek onu dağıtıyor, q tuşuna basmak program kapanmadan önce tüm sürünün pencerenin tepesinden çıkmasını sağlıyor. H tuşu, sınırlar, ayrışma (separation), hizalanma (alignment), dönüş, algılama ve hız ayarlarını kapsayan bir kaydırıcı paneli açıyor — README'ye göre hız denetimi, sürünün normal temposunun beşte birinden yaklaşık 2,6 katına kadar uzanıyor. Küçük harfler bir değeri bir kademe düşürüyor, büyük harfler yükseltiyor. Program bir dakika boyunca başına bırakılırsa, bir tuşa basılana dek kendi kaydırıcılarını kendisi ayarlamaya başlıyor.
Seçenekler arasında sıldır kuşlarını taklit eden bir murmuration hazır ayarı, sürüyü avlayan şahinler, karışma istekliliği ayarlanabilen birden çok sürü, ice, ember ve prism gibi renk şemaları, derinlik ve iz efektleri ve kuşların yağmur gibi düştüğü bir --matrix modu var. Sürü ayrıca --say ile bir mesaj yazıp tutabilir, --clock ile saati söyleyebilir, --picture ile bir PNG resmi çizebilir veya ekran koruyucu olarak işlev görebilir.
Pipe ile gelen metin sürüye dönüşüyor
Cbirds'a pipe ile verilen her şey — fastfetch çıktısı, figlet banner'ları, dizin listeleri, git log'ları — önce kaynak komutun yazdırdığı gibi görünür, çünkü cbirds escape dizilerini okuyup renkleri ve yerleşimi yeniden üretir. Birkaç saniye sonra bir harf ayrılır ve komşuları onu izler; metin bir sürü gibi uçar. Yaklaşık yirmi saniye sonra harfler yuvalarına çağrılır, her biri kendi hücresine geri konar ve ekran yeniden komutun yazdırdığı şeyi gösterir.
Harfler uçuş sırasında kendi renklerini, kalın ve altı çizili biçimlerini korur; geniş karakterler iki hücre kaplar; şahinler metnin üzerinde oklar olarak görünür. Bir pipe sonuna kadar okunur ya da bir buçuk saniyedir sessiz kalana, sekiz saniye çalışana ya da bir megabayt teslim edilene kadar — hangisi önce gelirse — okunur ve yalnızca son ekran dolusu tutulur; böylece bir log'u izlerken log sustuğunda ne içerdiği görülür. Girdi bir pipe olduğunda tuşlar /dev/tty'den okunur; hiç terminal yokken program bir terminal gerektirdiğini bildirip çıkar. Metin çalıştırmalarının kayıtları varsayılan olarak tam 34 saniyelik bir döngüyü kapsar ve bir GIF'in sorunsuz döngü yapması için zamanlanır.
Kurulum
Üç kurulum yolu var. Bir Homebrew tap'i bash, zsh ve fish için tamamlamalarla geliyor; bir apt deposu amd64 veya arm64 üzerinde Debian 12, Ubuntu 22.04 ve sonrasını kapsıyor; kaynaktan derlemek ise yalnızca bir C derleyicisi ve make gerektiriyor ve /usr/local/bin/cbirds konumuna tek bir dosya kuruyor. Derleme CC, CFLAGS, LDFLAGS, PREFIX ve DESTDIR değişkenlerine saygı duyar, make test test paketini çalıştırır ve README her yöntem için kaldırma adımlarını belgeler.
Neden önemli
Cbirds, terminal render'ının ne kadar geliştiğinin kompakt bir vitrini. Braille hücreleri en sade terminale bile kaba bir piksel ızgarası verirken, artık adını verdiği terminalin ötesinde Ghostty tarafından da desteklenen Kitty graphics protocol, metin tabanlı bir programın gerçek sprite'lar yerleştirmesini sağlıyor. Ayrıca dağıtım disiplininin derli toplu bir örneği: kendi paketlemesi, shell tamamlamaları, testleri ve yerleşik kaydedicisiyle tek bir bağımlılıksız C99 binary'si ve hiçbir runtime yığını gerekmiyor. En önemlisi, ortaya çıkan davranış (emergent behaviour) klasiklerinin oynanabilir bir açıklaması; modelin her kuralı, okuyucunun itebileceği kaydırıcılara açık.
- #terminal
- #boids
- #simulation
- #c99
- #open-source