aMule 3.0.0: nuova versione che ridà vita al client eD2k

Il progetto aMule, uno dei client più apprezzati per la rete eD2k (acronimo di eDonkey2000, un protocollo peer-to-peer per la condivisione di file), torna in grande stile con una nuova versione, aMule 3.0.0, la prima major release (versione principale) rilasciata l’8 giugno 2026 dopo oltre 5 anni di silenzio! La precedente e ultima versione era stata aMule 2.3.3, rilasciata nel febbraio 2021.
Questa versione segna un punto di svolta: non solo risolve problemi storici, ma introduce miglioramenti radicali in termini di prestazioni, stabilità e compatibilità, confermandosi come la scelta ideale per gli utenti delle distribuzioni GNU/Linux e non solo.
Il ritorno di un progetto che non si arrende
La comunità di aMule ha attraversato un periodo difficile. La mancanza di sviluppatori attivi e di manutentori aveva fatto dubitare molti sulla sopravvivenza del progetto. Alcuni lo avevano addirittura dichiarato “morto”. Tuttavia, la rete eD2k continua a contare su una base di utenti fedeli che necessitano di un software funzionale e aggiornato. Ed è proprio per loro che il team di sviluppo, nonostante le avversità, ha deciso di tornare in campo.
Purtroppo, c’è una nota dolente: Gonosztopi, uno degli sviluppatori più prolifici e a lungo manutentore del progetto, è scomparso senza dare notizie. Era l’unico proprietario dell’originale repository software su GitHub, e gli altri membri dell’organizzazione amule-project non avevano i permessi necessari per gestire correttamente il progetto. Questo ha costretto il team a creare una nuova organizzazione (amule-org) e nuovi repository software, mantenendo però lo stesso gruppo di sviluppatori appassionati.
Il nuovo sito ufficiale di aMule è ora disponibile all’indirizzo amule.org, dove è possibile trovare la pagina iniziale, la documentazione completa, i link per il download, le novità e i collegamenti al codice sorgente.
Novità in aMule 3.0.0
Uno dei cambiamenti più significativi riguarda la gestione delle operazioni di input/output su disco. Il team ha spostato le operazioni di lettura e scrittura su disco fuori dal thread principale, risolvendo problemi di sincronizzazione legati ad ASIO (una libreria per la programmazione asincrona) ed EPOLLET (un meccanismo di notifica per eventi su socket nel kernel Linux). Inoltre, i limiti di banda (throttler) sono stati sostituiti con algoritmi token-bucket più efficienti.
Il risultato? Miglioramenti drastici nelle prestazioni:
- Scaricamento peer‑to‑peer da circa 100 fino a oltre 380 volte più veloce rispetto alla versione 2.3.3, su GNU/Linux, macOS e Windows.
- Caricamento (upload) circa 4,8 volte superiore a quello di eMule 0.70b su Windows.
Questi dati sono stati misurati su un file di 30 GB scaricato da un seeder GNU/Linux x86_64 in un ambiente controllato. I miglioramenti sono visibili sia lato seeder (chi condivide i file) che lato leecher (chi scarica).
Correzioni critiche per i limiti di banda
I limiti di banda per il caricamento e lo scaricamento presentavano bug gravi nelle versioni precedenti:
- MaxUpload=0 non disabilitava completamente il limite, ma lo impostava a “velocità corrente + 5 KB/s”, un comportamento che limitava inutilmente la banda su connessioni veloci.
- MaxDownload non funzionava come un limite assoluto, ma come un controllore ad anello chiuso che regolava la velocità di ogni peer in base alla velocità corrente complessiva, invece di applicare un limite globale rigido, con il risultato di ottenere spesso una velocità inferiore a quella configurata.
Entrambi i problemi sono stati risolti con una riscrittura completa dei meccanismi di limitazione, garantendo ora un controllo preciso e affidabile della banda.
Gestione di librerie di file condivisi di grandi dimensioni
aMule 3.0.0 introduce ottimizzazioni specifiche per i nodi che condividono più di 100.000 file. In passato, l’interfaccia grafica (GUI), il WebUI (interfaccia web) e amuleweb (l’interfaccia di amministrazione remota) diventavano lenti e non reattivi a causa di algoritmi con complessità O(N²) (quadratica). Ora, grazie a una serie di miglioramenti algoritmici che riducono la complessità a O(N log N) o addirittura O(1) (lineare o costante), l’interfaccia rimane scorrevole anche con librerie di dimensioni considerevoli.
Tra le ottimizzazioni:
- Cache dei payload EC (Extended Cache) per ogni file, che evita di ricreare i link ed2k:// e i nomi dei file ad ogni aggiornamento.
- Aggiornamenti incrementali delle informazioni condivise, che saltano i file non modificati.
- Bypass ZLIB per i peer locali, riducendo il carico di elaborazione.
Un sistema di compilazione moderno e unificato
La nuova versione segna l’addio ad autotools, lo strumento tradizionale per la compilazione dei software sui sistemi GNU/Linux. Al suo posto, è stato adottato CMake, un sistema di build più moderno e flessibile, che richiede:
- CMake 3.10 come versione minima.
- wxWidgets 3.2.0 come libreria grafica minima.
Questo cambiamento semplifica la compilazione su diverse piattaforme e garantisce una maggiore compatibilità con gli strumenti di sviluppo attuali.
Binari nativi per tutte le principali piattaforme desktop
aMule 3.0.0 offre binari nativi per tutte le principali piattaforme, eliminando la necessità di compilare manualmente il software:
- AppImage (x86_64 e aarch64) per le piattaforme GNU/Linux.
- Flatpak (x86_64 e aarch64) per una maggiore integrazione con le distribuzioni GNU/Linux moderne.
- macOS Universal2 .dmg, che include sia aMuleGUI.app (l’interfaccia grafica) che aMule.app (il demone).
- Windows: versione portabile in formato ZIP e installatore NSIS (x64 e ARM64).
Inoltre, sono state introdotte funzionalità per migliorare l’esperienza utente:
- Integrazione desktop automatica al primo avvio per gli AppImage.
- Avvio automatico all’accesso su tutte le piattaforme.
Riscansione automatica delle cartelle condivise
La nuova versione introduce un monitoraggio automatico delle cartelle condivise grazie a wxFileSystemWatcher, una libreria che rileva le modifiche nel file system. Questo significa che:
- Non è più necessario riavviare il client dopo aver aggiunto o rimosso file dalle cartelle condivise.
- Il sistema distingue tra scansione ricorsiva (tutte le sottocartelle) e scansione esplicita (solo i file specificati).
- Sono supportate anche le cartelle in entrata e le cartelle di categoria personalizzate.
Supporto HTTPS funzionale e ricerche parallele su Kad
- HTTPS torna a funzionare: il componente CHTTPDownloadThread è stato riscritto utilizzando wxWebRequest, risolvendo i problemi di compatibilità con i certificati TLS moderni che avevano reso inutilizzabile il vecchio stack personalizzato.
- Ricerche parallele su Kad: il sistema Kademlia (la rete distribuita di eD2k) ora supporta ricerche parallele con un algoritmo di allargamento del frontiere alpha, che accelera il processo di ricerca dei file.
Aggiornamento del database geografico
Il sistema di mappatura degli indirizzi IP ai paesi è stato aggiornato: MaxMindDB sostituisce il vecchio GeoIP, che era stato deprecato (non più supportato). Questo garantisce una localizzazione più accurata dei peer e una migliore gestione delle regole geografiche per la condivisione.
Prestazioni in dettaglio: i numeri parlano chiaro
I miglioramenti nelle prestazioni sono il risultato di un lavoro minuzioso su più fronti. Ecco una panoramica dei risultati ottenuti su diverse piattaforme:
Confronti tra la versione 2.3.3 e la 3.0.0
| Piattaforma del leecher | Velocità 2.3.3 | Velocità 3.0.0 | Miglioramento |
|---|---|---|---|
| macOS (Apple Silicon, Mac Studio) | 0,35 MB/s | 135 MB/s | 381 volte |
| GNU/Linux ARM (Ubuntu 25.10) | 0,34 MB/s | 117 MB/s | 345 volte |
| Windows ARM (Windows 11) | 0,36 MB/s | 39 MB/s | 107 volte |
Questi dati sono stati misurati su una finestra di 90 secondi, con un singolo peer LAN che scaricava un file di 30 GB da un seeder GNU/Linux x86_64.
Confronti con eMule 0.70b su Windows
| Direzione | eMule 0.70b | aMule 3.0.0 | Miglioramento |
|---|---|---|---|
| Caricamento (Windows → macOS) | 22 MB/s | 106 MB/s | ~ 4,8 volte |
| Scaricamento (Linux → Windows) | 20 MB/s | 39 MB/s | ~ 1,9 volte |
Miglioramenti specifici per caricamento e scaricamento
Caricamento (Upload)
- Porting di
CUploadDiskIOThreadda eMule: le operazioni di lettura su disco e la costruzione dei pacchetti ed2k sono state spostate fuori dal thread principale, risolvendo problemi di sincronizzazione RC4 e wakeup spuri in EPOLLET. MaxUpload=0ora significa davvero illimitato: il vecchio codice impostava un limite dinamico che bloccava la velocità a un valore inferiore alla capacità reale della connessione.- Campi di limite di velocità estesi: i campi sono passati da uint16 (massimo 65.534 KB/s) a uint32, permettendo di configurare limiti fino a gigabit.
- Interfaccia utente migliorata: i pulsanti per la regolazione della banda ora supportano valori fino a 1.000.000 KB/s, e la larghezza dei campi è stata aumentata per evitare problemi di visualizzazione.
- Aumento del valore predefinito di
SlotAllocation: da 2 KB/s a 10 KB/s, per evitare la frammentazione eccessiva delle connessioni, che riduceva la velocità effettiva.
Scaricamento (Download)
CPartFileWriteThread: le operazioni di scrittura su disco per i file in download sono state spostate fuori dal thread principale.- Correzione del throttler: il wake gate è stato aggiunto al percorso della coda di controllo, risolvendo un problema che causava ritardi di 5-25 ms tra le operazioni di gestione della banda.
MaxDownloadora funziona come un limite assoluto: il vecchio sistema era un controllore ad anello chiuso che regolava la velocità di ogni peer in base a quella corrente, spesso portando a velocità inferiori a quella configurata. Ora, invece, utilizza un algoritmo token-bucket globale che garantisce un limite preciso entro il 2,5% su tutte le piattaforme.- Verifica degli hash in background: la verifica degli hash dei file è stata spostata su un thread dedicato, che viene eseguito solo quando il file non è in fase di trasferimento attivo.
Altre ottimizzazioni tecniche
- Modernizzazione dei binding ASIO: sostituzione di boost::bind con lambda C++11, e aggiornamento di Boost dalla versione 1.47 a 1.70.
- Confronti rapidi dei nomi dei file: il nuovo sistema salta la chiamata a wxGetCwd(), riducendo i tempi di elaborazione.
Come provare la nuova versione
La nuova versione aMule 3.0.0 è già disponibile per il download. È possibile scaricarla direttamente dai repository software della nuova organizzazione amule-org su GitHub. Per le distribuzioni GNU/Linux, si consiglia di utilizzare:
- AppImage: ideale per chi vuole una soluzione portatile e pronta all’uso.
- Flatpak: perfetto per chi preferisce un’installazione integrata con il sistema di gestione dei pacchetti moderno.
Per tutti i dettagli puoi consultare l’annuncio ufficiale del rilascio sulla pagina GitHub dedicata.
Se sei un utente di aMule o stai cercando un’alternativa open source e potente per la condivisione di file, non puoi perderti questa versione storica. Scaricala, provala e unisciti alla comunità che continua a mantenere viva la rete eD2k!
Fonte: https://github.com/amule-project/amule/releases/tag/3.0.0
Se vuoi sostenermi, puoi farlo acquistando qualsiasi cosa dai diversi link di affiliazione che ho nel mio sito o partendo da qui oppure alcune di queste distribuzioni GNU/Linux che sono disponibili sul mio negozio online, quelle mancanti possono essere comunque richieste.
Se ti senti generoso, puoi anche donarmi solo 1€ o più se vuoi con PayPal e aiutarmi a continuare a pubblicare più contenuti come questo. Grazie!
Hai dubbi o problemi? Ti aiutiamo noi!
Se vuoi rimanere sempre aggiornato, iscriviti al nostro canale Telegram.Se vuoi ricevere supporto per qualsiasi dubbio o problema, iscriviti alla nostra community Facebook o gruppo Telegram.
Cosa ne pensi? Fateci sapere i vostri pensieri nei commenti qui sotto.
Ti piace quello che leggi? Per favore condividilo con gli altri.
























