1 puan yazan GN⁺ 2024-09-14 | 1 yorum | WhatsApp'ta paylaş

Mevcut durum

  • Şu anda SBCL çalışma zamanı ve derleyicisi Nintendo Switch üzerinde çalışacak şekilde port edildi
  • Paylaşımlı kütüphanelerle arayüz de mümkün ve çeşitli işletim sistemi taşınabilirlik kütüphaneleri de port edildi
  • Ancak SBCL’nin çöp toplayıcısı çalıştığında çökme meydana geliyor
  • Ses çıkışı yok, C callback mekanizmasında sorun var
  • Performansla ilgili sorunlar da bekleniyor

Genel bakış

  • Switch, ARM64 Cortex-A57 çipi ve 4 GB RAM kullanıyor ve özel bir mikrokernel işletim sistemi üzerinde çalışıyor
  • SBCL’nin zaten bir ARM64 Linux portu olduğundan kod üretimi sorunu çözülmüş durumda
  • Switch, OpenGL grafik kütüphanesini destekleyen tek konsol olduğundan Trial’ın grafik kütüphanesini port etmek kolaylaşıyor
  • Geliştirmeye başlamak için Nintendo of Europe’dan geliştirme kiti satın alınıp SDK kuruldu

SBCL derleme süreci

  1. build-config: Derleme yapılandırma seçeneklerini toplayıp okunabilir bir biçimde çıktılar
  2. make-host-1: Ana makine Lisp derleyicisiyle çapraz derleyiciyi derler
  3. make-target-1: Hedef C derleyicisiyle C çalışma zamanını oluşturur
  4. make-host-2: Hedef Lisp sistemini derler
  5. make-target-2: Hedef çalışma zamanında cold core’u yükleyip bootstrap’i tamamlar

Switch için derleme

  • Switch bir PC ortamı değil; kabuk, komut satırı ve derleyici yok
  • Yürütülebilir sayfalar oluşturulamadığı için çalışma zamanında derleme yapılamıyor
  • Kodun büyük kısmı platformdan bağımsız ve ARM64 için derlenebiliyor
  • Çalışma zamanı derlemesinin yerine fasteval kullanılıyor

Çöp toplayıcı

  • SBCL’nin standart GC’si "gencgc" olup nesil tabanlı bir çöp toplayıcıdır
  • Çok iş parçacıklı ortamda nesne taşıma sorunu ortaya çıkıyor
  • Unix sistemlerinde iş parçacıklarını park etmek için sinyal mekanizması kullanılıyor, ancak Switch’te bu mümkün değil
  • Bunun yerine iş parçacıklarının kendilerini park etmesini sağlayan "safepoints" stratejisi kullanılıyor

Gelecek çalışmalar

  • CLOS’u mümkün olduğunca sabitlemek ve önceden derleme seçeneklerini araştırmak
  • Switch’in düşük performanslı işlemcisi nedeniyle ek optimizasyon gerekli
  • Çöp toplayıcının tamamen çalışır hale getirilmesi gerekiyor
  • C callback sorununun çözülmesi gerekiyor

Sonuç

  • NDA nedeniyle yapılan çalışmaların tamamı açıklanamıyor, ancak mümkün olan kısımlar paylaşılmaya devam ediliyor
  • Patreon, GitHub ve Ko-Fi üzerinden destek isteniyor

GN⁺ özeti

  • Bu yazı, Common Lisp çalışma zamanının Nintendo Switch’e port edilme sürecini ve karşılaşılan zorlukları ele alıyor
  • Switch’in özel işletim sistemi ve donanım kısıtları nedeniyle çok sayıda teknik zorluk ortaya çıkıyor
  • Çöp toplayıcı ve çok iş parçacıklılık sorunları ile çalışma zamanı derleme problemi başlıca zorluklar arasında yer alıyor
  • Bu proje, Common Lisp geliştiricileri ve oyun geliştiricileri için faydalı bilgiler sunuyor

1 yorum

 
GN⁺ 2024-09-14
Hacker News yorumu
  • Birkaç haftadır Trial kullanarak Common Lisp ile oyun geliştirmeyi test ettim ve oldukça keyifli bir deneyimdi

    • Oyunun çalışması sırasında neredeyse her şeyi değiştirebilmek büyük bir avantaj
    • Bu portun başarılı olmasını umuyorum
  • SBCL harika bir dil implementasyonu ve "gerçek" bir oyun konsolu için CL geliştirmeyi denemek istiyordum

    • Shinmera'nın bu iş üzerinde çalışıyor olmasına şaşırdım
    • SBCL'nin iç yapısına kısa süre bakınca gözüm korkmuştu; kendisini takdir ediyorum
    • SBCL'nin (+threading/SDL2) Raspberry Pi üzerinde çalışıp çalışmadığını merak ediyorum
  • Yazara ilginç ve ayrıntılı bir yazı yazdığı için teşekkürler

    • Bu düzeyde ayrıntı genelde ancak konsolun ömrü sona erdikten sonra ortaya çıkar
    • Böyle derinlemesine çalışmaları her okuduğumda, bütün gün kullandığım tekdüze yazılımlara imreniyorum
  • Resmî SDK'nin neden kullanıldığını merak ediyorum

    • Nintendo, 3rd party SDK ile yapılmış oyunların resmî olarak yayımlanmasına izin vermiyor olabilir
  • Kandria'yı satın aldım

    • Çok oyun oynamam ama Shinmera'nın Lisp dünyasının sınırlarını genişletmesi desteklenmeye değer
  • SBCL - "Steel Bank Common Lisp"

    • SBCL, yüksek performanslı bir Common Lisp derleyicisidir ve açık kaynak/özgür yazılımdır
    • ANSI Common Lisp için bir derleyici ve çalışma zamanı sisteminin yanı sıra hata ayıklayıcı, istatistiksel profilleyici, kod kapsama aracı gibi çeşitli eklentiler de sunar
  • Onun çalışması hayranlık verici

    • CL'yi her yerde kullanmayı seven biri olarak bana büyük bir keyif veriyor
  • Nintendo ve Sony'nin bu tür çabaları desteklemesini isterdim

    • Github Accelerator benzeri programlar başlatmak, konsollar için oyun (IP) üretmenin başka bir yolu olurdu
  • Konudan biraz sapıyor ama Yuzu'nun Nintendo Switch'e port edilmesi şaşırtıcı olurdu

  • HN'ye gelme nedenim tam da bu tür şeyler

    • OP'ye ve ekibine övgüler
    • Nintendo sistemleri konusunda biraz daha açık olabilse büyük bir nimet olurdu