- 2.000'den fazla geliştiricinin talep ettiği hata ayıklama özelliği sonunda Zed'e eklendi
- Hata ayıklayıcı, hız, aşinalık ve yapılandırılabilirlik odağında tasarlandı
- Rust, C/C++, JavaScript, Go, Python gibi popüler dillerle birlikte Debug Adapter Protocol (DAP) tabanlı genişletme desteği sunuluyor
- Sezgisel LOCATORS sistemi sayesinde çoğu projede ek ayar yapmadan kolayca hata ayıklama yapılabiliyor
- UI ve veri katmanını ayıran mimari sayesinde işbirlikçi hata ayıklama ve genişletilebilirlik için güçlü bir temel hazırlandı
Zed hata ayıklayıcısının yayımlanması
- 2.000'den fazla geliştiricinin talebi üzerine Zed editörüne resmi hata ayıklama özelliği eklendi. Bu, Zed 1.0'a giden yolda çok önemli bir ilerleme
Ana hedefler
- Hız: hızlı bağlam geçişleri ve verimli bir hata ayıklama deneyimi sunmak
- Aşinalık: Zed'in tasarım diliyle uyum sağlarken, tipik hata ayıklayıcı akışında beklenen tüm özellikleri desteklemek
- Yapılandırılabilirlik: UI, tuş atamaları ve hata ayıklama ayarları dahil olmak üzere kullanıcının her şeyi özgürce özelleştirebilmesi
Dil ve genişletme desteği
- Rust, C/C++, JavaScript, Go, Python gibi başlıca diller varsayılan olarak destekleniyor
- Debug Adapter Protocol (DAP) uygulayan tüm hata ayıklama adaptörleriyle entegre olabiliyor
- Genişletme sistemi üzerinden daha fazla dil ve hata ayıklama özelliği kolayca eklenebiliyor
Kolay hata ayıklama yapılandırması
- LOCATORS adlı yeni bir sistem getirilerek derleme ayarları hata ayıklama ayarlarına dönüştürülüyor
tasks.json içinde bir kez derleme görevi yazdıktan sonra bunu debug.json içinde referans gösterebilir veya Zed'in otomatik yapılandırma özelliğinden yararlanabilirsiniz
- Zed, yerleşik ya da Language Server'ın çalıştırılabilir dosyalarından locators'ı otomatik olarak çalıştırıyor
- Çoğu durumda ayrı bir hata ayıklama ayarı yapmadan doğrudan kullanılabiliyor
- Şu anda Cargo, Python, JavaScript ve Go için locator desteği sunuluyor (ek diller planlanıyor)
Hata ayıklama oturumunun özellikleri
- Zed içinde thread'ler, değişkenler, breakpoint'ler ve çağrı yığını gibi program durumları kolayca incelenebiliyor
- Hata ayıklayıcı paneli tamamen özelleştirilebilir; sekmeler sürüklenip sıralanabiliyor ve paneller serbestçe taşınabiliyor
- Klavye odaklı hata ayıklama da destekleniyor; fare olmadan kod gezinme, breakpoint açıp kapatma ve oturumlar arasında geçiş yapılabiliyor
Yüksek ölçüde genişletilebilir mimari
- Farklı dillerde hata ayıklama, işbirlikçi ortamlar, genişletme desteği ile verimli veri önbellekleme ve yönetim sağlayabilen bir yapı için iki katmanlı mimari tasarlandı
- Veri katmanı: hata ayıklama adaptörüyle doğrudan iletişim kurma, oturum durumunu koruma, yanıtları önbelleğe alma ve eski verileri geçersiz kılmayı yönetme görevini üstleniyor
- UI katmanı: yalnızca gerekli verileri istiyor ve arayüzün çizimine odaklanıyor
- Bu ayrım sayesinde işbirlikçi (çok oyunculu) hata ayıklama özelliğini uygulamak kolaylaşıyor ve ağ bant genişliğinden daha fazla tasarruf sağlanıyor
Genişletme API'si ve DAP uygulaması
- 70'ten fazla farklı DAP uygulaması bulunduğundan, her şeyi varsayılan olarak desteklemek yerine Zed'in genişletme API'si genişletilerek hata ayıklayıcı entegrasyonu mümkün kılındı
- Şema doğrudan tanımlama, adaptör indirme ve çalıştırma mantığını uygulama, hata ayıklama ayarları için varsayılan değer enjekte etme, locator ile otomatik entegrasyon gibi yollarla DAP desteği genişletilebiliyor
- LSP (Language Server Protocol) genişletme yöntemine benzer şekilde, geliştiriciler kendi hata ayıklama adaptörlerini Zed'e kolayca entegre edebiliyor
Satır içi değişken değeri desteği
- Satır içi değişken değeri gösterme özelliği DAP'e değil LSP'ye ait olduğundan, yalnızca DAP ve LSP birlikte bağlandığında mevcut yöntemle sunulabiliyor
- Düzenli ifadeler gibi basit eşleştirmeler kapsam, yorumlar ve benzeri nedenlerle düşük doğruluk veriyor
- Tree-sitter kullanılarak, çalışan kodun kapsamı içindeki değişkenler çok daha hassas biçimde belirlenebiliyor
- Ayrı bir LSP entegrasyonu olmadan
.scm dosyaları üzerinden dil bazında destek sağlanabiliyor
- Yayın anında Python, Rust ve Go desteği var; ileride daha fazla dil eklenecek
- Zed, Tree-sitter'ın yaratıcıları tarafından geliştirilen bir editör
Gelecek planları
- Yeni görünümler: izleme listesi, bellek görünümü, disassembly görünümü, stack trace gibi gelişmiş özellikler eklenecek
- Otomatik yapılandırma: daha fazla dil ve derleme sistemi için otomatik yapılandırma desteğini genişletme hedefi var
- İyileştirme ve genişletme: Discord, GitHub vb. üzerinden geri bildirim toplanacak ve aktif biçimde geliştirilmeye devam edilecek
Ek
- Zed, macOS ve Linux'ta kullanılabiliyor
- Geliştirici işe alımı yapılıyor (ilgileniyorsanız resmi siteye bakın)
2 yorum
Java ile Zed kullanan var mıdır acaba...? haha
Hacker News görüşleri
Hâlâ geliştiriliyor olan bir debugger görmek gerçekten sevindirici. Zed’e tamamen geçmemi engelleyen asıl eksik tam olarak buydu. Yine de henüz “işte bu” diyebileceğim noktada değil. Watch penceresi yok, stack trace görünümü eksik ve data breakpoint’lerden hiç bahsedilmemesi üzücü; bu yüzden bunu beta aşamasında görüyorum. Bu özelliklerin bir gün ekleneceğini biliyorum ama şu an sunulan hâli, benim debugging oturumlarımın %97’sini karşılamaya yetmiyor. Aynı anda birden fazla debugging oturumu desteği ve multithread debugging planlarının duyuruda daha açık belirtilmesini isterdim. Özellikle RemedyBG’deki gibi belirli bir thread’i “freeze” etmek ya da yalnızca birini “solo” çalıştırmak gibi multithread debugging için havalı fikirleri de merak ediyorum
Merhaba Laserbeam, debugger’ı geliştiren ve o yazıyı yazan geliştirici benim. Temel bir stack trace görünümü zaten destekleniyor. Yakında multi-buffer sistemi içinde stack trace görünümü de gelecek; şu anda da debugging oturumu sırasında “show stack trace” eylemiyle call stack’i multi-buffer içinde açıp her frame’i görebilirsiniz. Sadece Zed standartlarındaki yüksek kalite düzeyine henüz ulaşmadığı için bunu açıkça öne çıkarmadık. Watch değişkenleri/ifadeleri için PR da birkaç gün içinde merge edilecek. Özellik tamamlanmıştı ama lansmana bu kadar yakınken yeterince test edilmemiş bir şeyi eklemek konusunda temkinliydik. Data breakpoint’ler önemli bir öncelik, ancak bir süre otomatik kurulum tarafına odaklanmayı planladığımız için net bir takvim veremiyorum. Birden fazla oturum ve multithread debugging de aynı anda destekleniyor; iyileştirilmesi gereken noktalar var ama temel destek mevcut
Blog yazısında gelişmiş görünümlerin geliştirilmekte olduğu belirtiliyor. Bu ilk sürüm ve duyuru daha çok temeli atmaya odaklı. İleride watch list, memory view, disassembly view ve stack trace view gibi gelişmiş görünümler eklenecek [ilgili bağlantı]
Benim debugging oturumlarım hep normal breakpoint’ler ve stepping ile ilerliyor. O yüzden benim açımdan gayet yeterli
Ben de katılıyorum; Zed ekibinin geliştirme hızına bakınca bu özelliklerin yakında geleceğini düşünüyorum
Debugger’ı henüz denemedim ama benzer hissi Git özellikleri için yaşıyorum. Zed’de temel Git işlevleri var ama mevcut workflow’umun tamamını değiştirecek kadar yeterli değil. Git tarafındaki geliştirmelere de odaklanmaya devam etmelerini umuyorum
Zed gerçekten çok iyi bir editör. Yakın zamanda neovim’den zed’e geçiyorum ve oldukça memnunum. Her şey çok hızlı çalışıyor ve vim binding’leri de iyi entegre edilmiş. Agent mode da kullanışlı. VSCode’a kıyasla extension ekosistemi hâlâ zayıf ama ihtiyacım olan birçok işi yeterince karşılıyor. Debugger şimdiye kadar büyük bir eksikti, bu yüzden eklenmesine gerçekten sevindim
Vim binding’lerinin ne kadar gerçekten vim gibi hissettirdiğini merak ediyorum. Çoğu vim emülatörü yeterince benziyor ama tam da bu yüzden biraz belirsiz kalıyor; tuşlara sık sık yanlış basmama neden oluyor ve bu daha da sinir bozucu oluyor. Hatta bazen hiç vim gibi hissettirmeyen bir editör kullanmak, parmaklarımın sürekli “yanlış” yapmasından daha az rahatsız edici geliyor
Rust kod tamamlama Zed’de nasıl, merak ediyorum. Windsurf ya da Cursor’daki gibi her şeyin “tab-tab-tab” ile doğal biçimde tamamlandığı o sihirli ortam varsa harika olurdu. Özellikle TypeScript ya da script dillerinde bu tür otomatik tamamlama neredeyse refactoring otomasyonu gibi çalışıyor. IntelliJ/RustRover ise JetBrains modeli ya da Co-pilot kullansa bile Cursor ya da Windsurf seviyesine yaklaşamadı. Bunun Rust’ın doğasından kaynaklandığını düşünüyorum. 1) Rust’ta da bu kadar doğal tamamlama artık mümkün mü, ve Zed’de çalışıyor mu? 2) His olarak Zed, Cursor ve Windsurf ile kıyaslandığında nasıl; ayrıca RustRover ve JetBrains’in Rust AST ile çalışma biçimiyle karşılaştırınca nasıl bir deneyim sunuyor?
Zed, Lapce, Helix ve Neovim’in başaramadığı şeyi başarmış gibi hissettiriyor. 2021–2022 civarında Helix kullanmıştım ama bug’lar ve entegrasyon eksikleri yüzünden sonunda bıraktım; özellikle önceki iş yerimde kullandığım PHP için neredeyse hiç destek yoktu. Neovim en rahat ettiğim seçimdi ama ünlü topluluk eklentilerinin birçoğu çok katı bir tarza sahipti, alternatif eklentiler de fazla yavaştı. Kararlı bir ortam kurmak için gereğinden fazla seçenek arasında düşünmek zorunda kalmak yıpratıcıydı. Lapce ise bana sadece “VSCode klonu” gibi geldi, onu özel yapan şeyi göremedim. Hâlâ günlük ana editör olarak kullanılacak düzeyde olduğunu düşünmüyorum. Bu açıdan bakınca Zed kısa sürede benim için en iyi editör hâline geldi ve bugünlerde her gün bunun için minnet duyuyorum. Debugger’ın eklenmesi de ayrıca çok sevindirici
PHP desteği konusunda “önceki iş yerimde olduğu için” açıklaması gereksiz
Bir şeye “VSCode klonu” demek de ilginç bir bakış açısı. İnsanlık tarihinin en popüler editörüne dair eğlenceli bir yorum
Zed’in giderek daha olgun, hafif ve çok özellikli bir IDE’ye dönüşmesini hayranlıkla izliyorum. Bence DAP ve LSP, son 10 yılda programlama araçlarında yaşanan en iyi yenilikler
Başta Zed ilgimi çekmişti ama “AI” entegre edilmeye başladığından beri hevesim kaçtı. “AI” her yerde olmaya başlayınca insan yoruluyor. Daha iyi bir şey çıkana kadar Neovim kullanmaya devam edeceğim; böyle bir değişimin de ancak “AI balonu” patladıktan sonra geleceğini düşünüyorum
Zed, AI özelliklerini gerçekten denemek istememe neden olan ilk editör oldu. Genel olarak sağlam bir temeli var ve AI hissi de diğer editörlerdeki otomatik tamamlama kadar geri planda duruyor. Tavrı sanki “senin istediğin şey AI değil, iyi ve hızlı bir editör; biz onu yaptık ve AI özelliklerini de ekledik” gibi. Rakiplerde ise “bizim asıl ürünümüz AI, editör ise yanında geliyor” hissi var; Zed’de odak farklı
neovim’e baktığımda iki AI ürününden sponsorluk aldığını görmek beni şaşırttı. Doğrudan AI entegrasyonu kadar ileri gitmiyor ama artık bundan tamamen kaçınmak da giderek zorlaşıyor
Ben sadece AI ile ilgili tüm seçenekleri kapatıp kullanıyorum. Oldukça iyi bir editör. Yine de merge conflict çözmek için hâlâ VSCode açmam gerekiyor ama genel olarak memnunum
Zed’in AI özelliklerinin pratikte ne kadar müdahaleci olduğunu ve ayarlardan kapatılıp kapatılamadığını merak ediyorum
Normal kullanımda Zed’de AI özellikleri hiç rahatsız etmiyor. Bazen faydalı oluyor ama sık kullandığım bir şey değil
Linux desteği çıktığından beri her seferinde normal ekran (LoDPI) desteği gelip gelmediğini kontrol ediyorum. Hâlâ desteklenmiyor olması üzücü
Gerçekten sinir bozucu bir durum. Metin render etme bir kod editörünün temelidir ama sanki Zed ekibinde normal (non-retina) ekran kullanan kimse yok. İlgili GitHub issue bağlantısı
Geçici bir çözüm ama BetterDisplay’i (ücretsiz bir araç) kurup LoDPI ekranı HiDPI’a çevirirsen metin render etme kabul edilebilir hâle geliyor
Linux’ta 1920x1200 dizüstü ekranında her gün kullanıyorum ve hiçbir sorun yaşamıyorum
Windows desteği de yoksa ve Linux’ta da normal ekran desteği yoksa, aslında Mac merkezli bir şirket mi diye düşünmeden edemiyorum
Şu anda Python projemde Pyright kullanırken Cursor yerine Zed’e geçmek istiyorum ama pil tüketimi o kadar yüksek ki bunu haklı çıkarmak mümkün değil. Bu konu GitHub’da zaten açılmış durumda ve ekibin bunu yüksek önceliğe almaması gerçekten hayal kırıklığı yaratıyor
Bence Zed gerçek ürün geliştirmeye güzel bir örnek. Bir başka Chrome motoru yeniden paketlemesi olmaması çok memnun edici
Açıkçası bazı yavaşlıklar yaşadığım için şaşırdım. Sekme listesinden dosya değiştirirken gecikme oluyor ve yazı yazma tepkisi de Emacs’ten (
lsp-modeaçıkken) ya da web tarayıcısından daha yavaş. Ayrıca Emacs’ten yaklaşık 60MiB daha fazla bellek kullanıyor. Buna karşılık açılış hızı gerçekten çok iyi. Yani “hızlı editör” sloganına rağmen Emacs Lisp + C çekirdeğinden bile daha yavaş bir durum var. Eklenti yapısına bakınca WASM’a derlenip bir VM içinde çalışıyor gibi görünüyor. Acaba sebep bu mu?Zed’in nasıl olup da emacs’ten daha yavaş olabildiğini merak ediyorum. Benim deneyimimde Zed neredeyse gecikmesiz derecede hızlı. Editing, lsp ve dosya değiştirme anında oluyor. Hatta ben emacs’i çoğu zaman gecikme sorunları yüzünden bırakmıştım (özellikle uzak geliştirme ortamlarında)
Eklentiler WASM olarak bir VM içinde çalıştığı için yavaş olabilir mi sorusuna karşılık, benim gördüğüm eklentiler daha çok sunucu başlatmak gibi işler yapıyor; yani yazma tepkisiyle doğrudan ilgili değiller. Bana kalırsa sebep daha çok GPU kullanımı olabilir. GPU compositing gecikme yaratmaya yatkın ve işletim sisteminin kendi render katmanıyla da çakışabiliyor. emacs’in de event loop’u atlayıp arayüzü doğrudan güncelleyen hileler kullandığını ve bunun uyumluluk sorunlarına yol açtığını hatırlıyorum
emacs için dape adında, iyi tasarlanmış DAP tabanlı bir debugger paketi var. İlgili bağlantı Bağımlılıksız tasarlanmış, dolayısıyla ileride varsayılan emacs’e dahil edilme ihtimali var
Render pipeline kaynaklı bir sorun da olabilir. Hangi işletim sistemini kullandığını merak ediyorum
Zed ekibinden tek dileğim, düzgün C ve C++ dil algılama yapmaları. Bütün editörler C’yi C++ gibi ele alma hatasını tekrarlıyor (C, C++ değildir ve karıştırılmamalıdır).
compile_commands.jsoniçinde C standardı belirtilmiş olsa bile, C++ sözdizimi hatası veren kodlar yüzünden dosyanın C++ olarak algılandığı çok oluyor. Dil algılama düzgün olsa harika bir editör olur