deniz.in

Piyasalar

Hava durumu

Hava durumu yükleniyor

· kaynak Hacker News – Front Page (hnrss.org)

TailTalk, AppleTalk'ı modern işletim sistemleri için bağımlılıksız bir userspace Rust yığını olarak yeniden hayata geçiriyor

Tokio üzerinde Rust ile yazılmış TailTalk projesi, AppleTalk protokol takımının tamamını userspace'de uyguluyor; Linux, macOS ve Windows makinelerinin Netatalk veya kernel sürücüsü olmadan klasik Mac'lerle ve LocalTalk yazıcılarla konuşmasını sağlıyor.

TailTalk, AppleTalk'ı modern işletim sistemleri için bağımlılıksız bir userspace Rust yığını olarak yeniden hayata geçiriyor

Tokio asenkron runtime'ı üzerinde Rust ile yazılmış açık kaynak bir proje olan TailTalk, AppleTalk protokol takımının tamamını tamamen userspace'de uyguluyor. Hacker News ana sayfasında görünen projenin GitHub sayfasına göre araç takımı Linux, macOS ve Windows üzerinde çalışıyor ve klasik Mac'lere ile Apple yazıcılarına EtherTalk veya LocalTalk üzerinden bağlanıyor. Proje sıfırdan yazıldı; Netatalk'a veya herhangi bir kernel sürücüsüne bağımlılığı yok — gereken tüm donanım, bir raw network socket'i ya da LocalTalk için TashTalk uyumlu bir cihaz.

Kernel izi bırakmayan eksiksiz bir yığın

Uygulama, başlıca AppleTalk protokolleri için parser'lar ve tamamen asenkron API'ler içeriyor: AppleTalk Address Resolution Protocol (AARP), Datagram Delivery Protocol (DDP), Name Binding Protocol (NBP), AppleTalk Transaction Protocol (ATP), Printer Access Protocol (PAP), AppleTalk Session Protocol (ASP), AppleTalk Filing Protocol (AFP) ve AppleTalk Data Stream Protocol. Yığının birden fazla bağımsız kopyası aynı makinede eşzamanlı çalışabilir ve her bileşen mümkün olduğunca sıfır yapılandırmaya yakın olacak şekilde tasarlanmıştır; bu da dönemin Mac donanımındaki tak-ve-çalıştır davranışını yansıtıyor.

Yazar, projeye eski Mac'lerle dosya aktarmak, LaserWriter, ImageWriter ve ağa bağlı StyleWriter'lara yazdırmak ve bunlarla konuşan modern asenkron yazılımlar geliştirmek amacıyla başlamış. Bir uyarı: TailTalk şu anda yalnızca yönlendiricisiz (routerless) kurulumlarda çalışıyor. Yönlendiricili ağlara sorunsuz şekilde katılma desteği üzerinde çalışılıyor ancak henüz ana koda girmiş değil; README, projenin tamamının erken bir prototip olduğunu, hatalar ve eksik işlevler beklenebileceği konusunda uyarıyor.

GUI, AFP sunucusu ve yazıcı köprüleme

Kullanıcıya dönük program, TashTalk USB donanımını hedefleyen TailTalk GUI. LocalTalk portuyla gelen neredeyse her Mac ile çalışması amaçlanan bir AFP sunucusu içeriyor. StuffIt arşivlerini ve disket imajlarını resource fork'ları koruyarak paylaşılan dizine aktarabiliyor ve içeriklerini uzak istemcilerin kullanımına sunabiliyor.

Yazıcı desteği iki yönlü çalışıyor: LocalTalk destekli LaserWriter, ImageWriter ve StyleWriter'lar modern ağlara AirPrint/IPP yazıcı olarak sunulabiliyor; modern yazıcılar da klasik Mac'lere geri paylaştırılabiliyor.

README, yığın geliştirilirken doğrulama için kullanılan dört demo programı listeliyor: bir echo isteği gönderip yanıt süresini yazdıran aep-echo; klasik Mac sistemlerinde temel dizin gezinme ve dosya işlemlerini destekleyen, AFP 1.0, 1.1 ve 2.0 uyumlu sunucu afp-server; NBP sorguları yapan nbp-lookup; ve PostScript dosyalarını PAP yazıcılarına gönderen, şu ana kadar yalnızca yazarın LaserWriter 4/600 PS'iyle test edilmiş pap-print. Bunlar tailtalkd daemon'ı ve tailtalk-gui uygulamasının yanında yer alıyor.

Paylaşılan erişim için bir daemon

AARP/DDP altyapısı varsayılan olarak süreç içinde çalışır, ancak bunun yerine tailtalkd içinde yaşayabilir; bu paylaşılan daemon fiziksel arayüzlerin sahibidir ve DDP socket'lerini, adresleme ile yönlendirme kurallarını Unix ya da UDP socket'leri üzerinden protobuf protokolüyle birden fazla istemciye sunar. İstemciler, TalkStack builder API'si üzerinden başka TailTalk programları olabileceği gibi düz C kodu da olabilir.

Platform ve donanım ayrıntıları

Derleme için Rust 1.90 veya daha yenisi gerekiyor; cargo-packager Linux'ta AppImage, macOS'ta app bundle, Windows'ta NSIS kurulum paketi üretiyor. EtherTalk desteği, libpcap'in işletim sistemiyle geldiği macOS'ta varsayılan olarak GUI'ye derleniyor; Linux ve Windows'ta libpcap veya npcap SDK gerektiren isteğe bağlı bir özellik. Raw-socket taşıyıcıları Linux'ta root veya setcap, macOS'ta ise ChModBPF paketi gerektiriyor — kurulum yalnızca TashTalk ise yükseltilmiş ayrıcalık gerekmez.

TashTalk USB cihazları Silicon Labs CP210x USB-UART köprüsü kullanır. macOS 11 ve sonrası CP2102N çipini kutudan çıktığı gibi tanır; daha eski macOS sürümleri üretici sürücüsüne, Linux kullanıcıları ise cihaza root'suz erişim için bir udev kuralına ihtiyaç duyar.

Yazar, gerçek donanımla test edildiğini bildiriyor: Ethernet üzerinden Mac OS 9.2 çalışan bir PowerBook G3, System 7.1'de bir Macintosh SE/30, System 6.0.8'de bir Macintosh Classic, ayrıca bir LaserWriter 4/600 PS, bir Color StyleWriter 2200 ve bir ImageWriter II. Belgelenmiş tuhaflıklardan biri AsanteTalk adaptörüyle ilgili: adaptör, EtherTalk fazını açılışta seçiyor ve Phase 2 trafiği görmezse varsayılan olarak Phase 1'e geçiyor. TailTalk, LaserWriter'lar, NBP ve temel işlemler için Phase 1'i yönetiyor ancak bu modda AFP başarısız oluyor, çünkü yanıtların düştüğü görülüyor.

Neden önemli

Klasik Mac'lerin ve Apple yazıcılarının kullanılabilir kalması genellikle döneme uygun sunucular çalıştırmak veya Netatalk yapılandırmalarıyla boğuşmak anlamına geliyordu. TailTalk sorunu yeniden çerçeveliyor: yığının tamamı userspace'de asenkron bir Rust kütüphanesi olduğu için yeni yazılımlar AFP, PAP veya NBP'yi doğrudan içine gömebiliyor — bir ImageWriter için AirPrint köprüsü veya System 6'lı bir makine için betiklenebilir bir dosya aktarım aracı — kernel modülü veya eski sunucu kurulumu gerekmeden. StuffIt arşivlerinin ve disket imajlarının resource fork'larını koruyarak aktarılması da gerçek bir veri koruma ihtiyacına hitap ediyor. Proje hâlâ bir prototip ve yönlendirici desteği eksik; ancak çapraz platform erişimi, çok istemcili daemon tasarımı ve araç takımı yaklaşımı retrocomputing'e inşa edilecek modern bir temel sunuyor ve yazar katkıları açıkça davet ediyor.

  • #rust
  • #appletalk
  • #retrocomputing
  • #open-source
  • #networking

İlgili yazılar