Zed rappresenta una significativa innovazione nel panorama degli editor di codice, combinando prestazioni elevate, funzionalità collaborative avanzate e un’architettura tecnicamente sofisticata. Sviluppato dal team di Zed Industries, già noto per la creazione di Atom e Tree-sitter, Zed si propone come un editor di nuova generazione che ridefinisce gli standard di efficienza e produttività nello sviluppo software. A gennaio 2024 avevamo presentato l’editor open source destinato agli sviluppatori macOS. Adesso, i tecnici di Zed Industries hanno annunciato la disponibilità di Zed on Linux, versione del favoloso editor congegnata per la piattaforma del “pinguino”.
Cos’è Zed on Linux e come migliora lo sviluppo software
Al cuore di Zed si trova un’architettura progettata per sfruttare appieno le capacità dei moderni sistemi multi-core e delle GPU. L’editor è costruito su GPUI, un framework innovativo per interfacce utente 2D che rasterizza l’intera finestra sulla GPU, come farebbe un videogioco 3D. Si tratta di un approccio che garantisce una reattività eccezionale, con tempi di avvio quasi istantanei e una risposta agli input dell’utente sincronizzata con il refresh del display.
I programmatori di Zed hanno realizzato l’editor servendosi del linguaggio Rust: i risultati si vedono perché è possibile beneficiare di un’elevata parallelizzazione su più core senza compromettere la stabilità dell’applicazione. L’impiego di strutture dati come copy-on-write e primitive async consentono di spostare i compiti particolarmente gravosi per la CPU, ottenendo performance impossibili da aver con un classico editor single-threaded.
Sintassi e parsing avanzati
Zed si distingue per l’implementazione di Tree-sitter, un framework di parsing open source basato su grammatiche context-free. Questo approccio, fondato su solide basi teoriche della compilazione, supera i limiti dei tradizionali metodi basati su espressioni regolari. Inoltre, abilita le funzionalità language-aware tipicamente associate a IDE specifici per ciascun linguaggio di programmazione.
L’editor mantiene inoltre un albero sintattico completo aggiornato in tempo reale durante la digitazione. Ciò consente funzionalità avanzate come una precisa evidenziazione del codice, l’auto-indentazione, l’utilizzo di uno strumento di ricerca versatile e la selezione strutturale del codice.
Collaborazione in tempo reale
Un aspetto davvero rivoluzionario di Zed è il suo approccio alla collaborazione. L’impiego di un’apposita struttura dati chiamata Conflict-Free Replicated Data Type (CRDT), garantisce la consistenza in presenza di modifiche concorrenti. Questa caratteristica non solo facilita varie forme di collaborazione ma è anche un componente chiave dell’architettura multi-threaded di Zed.
La funzionalità di collaborazione in tempo reale permette a più sviluppatori di navigare e applicare modifiche all’interno di uno spazio di lavoro condiviso. Gli utenti possono interagire con il codice come se fosse sulla propria macchina locale, ovunque si trovino, beneficiando di bassa latenza e pieno supporto dei language server, servizi linguistici specifici per un determinato linguaggio di programmazione. I language server offrono funzionalità come il completamento automatico, la navigazione nel codice, l’evidenziazione degli errori, il refactoring e molto altro.
Intelligenza artificiale integrata
Zed integra abilità di sviluppo automatizzato del codice di programmazione basate sull’IA generativa. L’editor, infatti, supporta nativamente GitHub Copilot e permette l’utilizzo di OpenAI GPT-4 per la generazione e il refactoring del codice. L’integrazione permette interazioni conversazionali con il modello generativo senza uscire dal contesto di editing, migliorando significativamente il flusso di lavoro di ogni sviluppatore.
La magia di Zed on Linux
Come osservano gli sviluppatori di Zed, portare l’editor su Linux è stata una vera sfida. Lo sviluppo di applicazioni con interfaccia grafica per i sistemi GNU/Linux porta sul tavolo molteplici problemi.
Linux è noto per la sua diversità e flessibilità, caratteristiche che, mentre offrono grandi vantaggi agli utenti, pongono sfide significative per gli sviluppatori. Ogni GPU può usare driver diversi (proprietari od open source), con comportamenti e prestazioni variabili. Zed, utilizzando a piene mani il rendering GPU, deve adattarsi di conseguenza garantendo prestazioni ottimali su diversi hardware.
Esistono inoltre centinaia di distribuzioni Linux, ciascuna con le proprie peculiarità in termini di librerie di sistema, versioni dei pacchetti e configurazioni predefinite.
Il pinguino offre poi una moltitudine di window manager e desktop environment, da quelli leggeri come i3 o Openbox a quelli più complessi come GNOME o KDE. Ogni window manager può gestire in modo diverso aspetti come il ridimensionamento delle finestre, la gestione degli input o la composizione grafica. Per non parlare poi della scelta del server grafica (X11 o Wayland) e delle impostazioni di rendering.
Zed deve integrarsi correttamente con tutti questi ambienti, garantendo un’esperienza utente coerente. Per questo Zed Industries ha voluto pubblicamente ringraziare la comunità, che ha contribuito allo sviluppo del codice ed effettuato test approfonditi.
Come installare Zed on Linux
Per installare Zed su Linux, nella maggior parte delle distribuzioni disponibili, è sufficiente aprire una finestra del terminale quindi inserire quanto segue:
curl https://zed.dev/install.sh | sh
L’istruzione scarica lo script d’installazione dal sito degli sviluppatori zed.dev, quindi lo esegue immediatamente sulla macchina.
Mentre ancora non è possibile scaricare Zed nella versione per Windows, il rilascio di Zed on Linux rappresenta un notevole passo in avanti. Trattandosi di un progetto aperto, Zed on Linux democratizza lo sviluppo software avanzato (fino appannaggio dei soli utenti di macOS), estendendolo a tutti gli utenti del sistema operativo basato sul kernel mantenuto da Linus Torvalds.
Conclusioni
Zed rappresenta un significativo passo avanti nel campo degli editor di codice. Combinando prestazioni di alto livello, funzionalità collaborative evolute e un’architettura tecnicamente all’avanguardia, Zed migliora significativamente le attività di sviluppo software.
La sua capacità di sfruttare efficacemente l’hardware moderno, unita a funzionalità innovative come l’integrazione AI e la collaborazione in tempo reale, lo rende protagonista nel mercato degli editor di codice professionali.
Il team di Zed ha inoltre posto grande enfasi sulla stabilità del programma. L’editor è sottoposto a estensivi test di fuzzing, una nota tecnica che sfrutta l’invio al software di input casuali per identificare e correggere errori imprevisti che potrebbero essere sfruttati per eseguire codice dannoso. Questo approccio metodico alla qualità del software assicura un’esperienza utente affidabile e consistente.