deniz.in

Piyasalar

Hava durumu

Hava durumu yükleniyor

· kaynak Hacker News – Front Page (native)

Zed'in uzak sunucusu artık bir uname aldatmacası ve bir Linuxulator düzeltmesiyle FreeBSD üzerinde çalışıyor

Bir blog yazısı, Linux emülasyonu ve küçük bir uname aldatmacası kullanarak Zed'in Linux uzak sunucusunu FreeBSD üzerinde çalıştırmayı anlatıyor; ayrıca yazarın bu yolda teşhis edip düzelttiği kernel regresyonunu da belgeliyor.

Zed'in uzak sunucusu artık bir uname aldatmacası ve bir Linuxulator düzeltmesiyle FreeBSD üzerinde çalışıyor

Zed'in uzak geliştirme sunucusunu FreeBSD üzerinde çalıştırmak artık mümkün; ancak bu, iki alışılmadık bileşen gerektiriyor: FreeBSD'nin Linux ikili uyumluluk katmanı ve Zed'e işletim sistemini yanlış bildiren bir wrapper betiği. Hacker News'in ana sayfasında öne çıkan Hayzam'ın blog yazısında detaylandırılan bu yöntem, yazarın bu arada teşhis edip düzelttiği bir FreeBSD kernel regresyonunu da belgeliyor — yaması zaten FreeBSD 15.2-RELEASE'e girmek üzere.

Yapay zekası isteğe bağlı olan daha hızlı bir editör

Yazı motivasyonla başlıyor: Yaklaşık on yıl VS Code kullandıktan sonra yazar, editörü yavaş ve giderek artan yapay zeka özellikleriyle dolu buluyor. Bir yorumcu, VS Code'un chat.disableAIFeatures seçeneğiyle geldiğini belirtti; yazar bunu test etti ve yerleşik asistanı gerçekten devre dışı bıraktığını gördü, ancak editör hâlâ hantal hissettiriyor. Buna karşılık Zed hızlı ve yapay zeka özellikleri için uzun süredir birinci sınıf bir kapatma anahtarı sunuyor: ister Settings üzerinden bir anahtar, ister config dosyasında "disable_ai": true olarak.

Yazar dil modellerinden tamamen kaçınmıyor; OpenCode gibi araçlar regresyon testlerini, uç durumları ve uçsuz bucaksız keşfi üstleniyor. İtiraz özellikle editöre gömülmuş, her kod satırının tepesinde durmaya hazır bir asistana.

Zed'e Linux'la konuştuğunu inandırmak

Zed bir FreeBSD uzak sunucusu göndermiyor, ama FreeBSD Linux ikili dosyalarını çalıştırabiliyor; bu yüzden yazı Zed'in Linux derlemesini kullanıyor. Adımlar:

  • sysrc linux_enable=YES ile Linux uyumluluğunu etkinleştirin, servisi başlatın, linux_base-rl9 paketini kurun ve kldstat ile linux64 modülünün yüklendiğini doğrulayın.
  • Zed sunucuya hangi platformda çalıştğını sorar; FreeBSD amd64 için eşleşen bir indirme yoktur ve istemci vazgeçer. Çözüm, ~/.local/bin/uname olarak kaydedilen ve Zed kernel adı ile donanımı sorduğunda (uname -sm veya -ms) "Linux x86_64" yanıtını veren, diğer tüm çağrıları gerçek /usr/bin/uname'e ileten küçük bir shell betiği.
  • Uzak bağlantılar etkileşimsiz SSH oturumları kullandığından, ~/.local/bin dizini PATH'e yalnızca etkileşimli rc dosyasında değil, ~/.zshenv (veya shell'in karşılığında) içinde eklenmelidir.
  • Zed'den SSH üzerinden bağlanın; ilk bağlantı Linux sunucusunu FreeBSD makinesindeki ~/.zed_server/ dizinine yükler, günlükler ~/.local/share/zed/logs altındadır.

Yazar bu aldatmacayı sınırlı bir yalan olarak nitelendiriyor ve yukarı akış desteği geldiğinde ilk bırakılması gereken kurulum parçası olarak görüyor.

Boş dosya ağacının ardındaki kernel hatası

Wrapper yerleştirildiğinde bağlantılar başarılı olur ama proje ağacı boş görünür ve sunucu günlüğü dizin okumalarının "Invalid argument" hatasıyla (os error 22) başarısız olduğunu gösterir. Yazıya göre suçlu, sahte NFS dizin girdilerine yönelik Şubat 2026 tarihli bir düzeltmeden (PR 292282) kaynaklanan bir regresyon: Linux uyumluluk katmanı, yerel FreeBSD okumasını yapmadan önce her dizin okuma isteğini 512 baytlık bloğa yuvarlamaya başlamış.

Çağıran taraf 512'nin katı olmayan bir tampon istediğinde — Zed'in sunucusu 768 bayt kullanıyor — yuvarlanan yerel okuma, çağıranın tamponunun taşıyabileceğinden fazla girdi üretebilir. Emülasyon katmanı bir girdi artık sığmadığında çevirmeyi durdurur ve EINVAL döndürür; ancak alttaki dizin konumu zaten yerel grubun tamamının ötesine ilerlemiştir. Kısmi bir grup döndürmek tek başına çözüm değildir: Hoşgörülü bir varyantın testinde 1.002 dosyadan 112'si proje listesinde sessizce kayboldu. Hatayı gören Zed klasörleri boş olarak gösterdi; yazar bunu sessiz bir kayıptan daha iyi buluyor.

Yama

Düzeltme (commit ec6629628cb, inceleme D60760) tamponu yalnızca istek tek bir 512 baytlık bloktan küçük olduğunda yuvarlıyor, aksi halde önceki gibi MAXBSIZE ile sınırlıyor. Değişiklik güvenlidir çünkü Linux dizin kayıtları asla FreeBSD'ninkilerden büyük değildir — dirent64 başlığı 19 bayt, FreeBSD'de 24 bayttır ve ikisi de kayıtları 8 bayta hizalar — böylece çağıranın tamponuna sığan her yerel grup, çevirimden sonra da sığar.

Yamanın ilk sürümü yalnızca getdents64'ü düzeltiyordu; onu 32 bit ve 64 bit çağıranlar için eski getdents yoluna genişletmek, yazarın test matrisindeki 86 hatayı sıfıra indirdi. Değişiklik main, stable/15 ve releng/15.2 dallarına birleştirildi, dolayısıyla 15.2-RELEASE bunu içerecek. FreeBSD geliştiricileri Kyle Evans ve Mark Johnston tarafından incelendi ve yazar, yamanın çoğu yamadan daha hızlı biçimde sürüm dalına azarına dikkat çekiyor.

Neden önemli

Yazı bir merak örneği gibi görünse de iki daha geniş izi işaret ediyor. Biri, varsayılan olarak hızlı ve yapay zeka desteğini ortamın bir parçası değil isteğe bağlı olarak ele alan editörlere olan talep — şikâyet dil modellerine değil, onları her tuş vuruşuna gömen editörlere. Öteki, FreeBSD'nin Linux emülasyonunun durumu: üretime yönelik bir uzak geliştirme sunucusunu değiştirmeden çalıştıracak kadar yetenekli, ama kerneldeki ince bir tampon boyutlandırma regresyonunun kendini yalnızca boş bir dosya ağacı olarak gösterdiği kadar kırılgan. Düzeltmenin 15.2'ye girmesiyle FreeBSD üzerinde Zed uzak geliştirmesi bir kernel hata ayıklama egzersizi olmaktan çıkıp tek bir wrapper'lık bir kuruma dönüşüyor ve BSD desteğini değerlendiren editör projelerinin elinde çalışan bir plan var.

  • #zed
  • #freebsd
  • #code-editors
  • #kernel
  • #remote-development

İlgili yazılar