Der grafische Gnutella-Client für Unix
gtk-gnutella ist ein Server/Client für Gnutella. Es läuft auf jedem Unix-ähnlichen System sofern GTK+ (1.2 oder neuer) und libxml installiert sind. Die Desktopumgebung GNOME wird nicht benötigt. gtk-gnutella wird derzeit hauptsächlich unter Linux (Debian) sowie NetBSD entwickelt und getestet. Es ist unter Linux, FreeBSD, NetBSD, Darwin, Solaris, Tru64 UNIX (OSF/1), SGI IRIX, BeOS nutzbar; zu den unterstützten CPU-Architekturen gehören unter anderem x86, AMD64, PowerPC, SPARC, MIPS.
gtk-gnutella wird unter der GNU General Public License (GPL) veröffentlicht.
Die Entwicklung von gtk-gnutella ist noch nicht abgeschlossen, aber es ist vollständig nutzbar: Sowohl die Suche als auch das Herunterladen und Anbieten eigener Dateien ist möglich. Es läuft stabil und kann normalerweise tagelang unbeaufsichtigt betrieben werden.
Vorschläge und Kommentare sind auf der gtk-gnutella-devel Mailing-Liste willkommen. Programmfehler sollten möglichst per SourceForge.net Bug Tracker gemeldet werden.
Neuigkeiten
9 March 2026, Version 1.3.1 Released
This is an urgent release fixing bugs.
Bug Fixes
- [GTK2] Removed "clock" icon in status bar, a left-over of the 1.3.0 edits.
- Was sometimes crashing at startup due to a bug in logfilter.
- Forgot an include of "mempcpy.h", causing compilation error on MacOs.
- Fixed compilation error on arm64.
6 March 2026, Version 1.3.0 Released
This is a maintenance release with minor bug fixes.
Improvements
- Removed expiration date: this version will now run forever.
Under the Hood
- Merged various enhancements from a side project reusing GTKG's library.
- Added experimental logfilter (see extra_files/logfilter.sample).
3 March 2024, Version 1.2.3 Released
This is a maintenance release with minor bug fixes.
Improvements
- Allow final address to be used as a search and sorting column in GUI.
- Do not hide the "random stats" shell command in the help.
- Shell "node add" now supports g2:IP:port for G2 nodes.
Bug Fixes
- Avoid assertion failure in
xmalloc()when the page size is not 4K - Fix build on NetBSD with SSP.
- Avoid conflicting symbol with NetBSD's powerpc/frame.h
- Force supervisor to quit if child gets a SIGKILL.
- Forgot to set te->ptid in discovered threads.
Under the Hood
- Add
aq_on_available()to hide waiter object. - Add debugging #define XMALLOC_DISABLED to remap
xmalloc()tomalloc(). - Add randomness every minute instead of 30 seconds.
- Dump held locks when suspending thread with locks.
- Fix
thread_lock_dump()logic. - Recent version of glib define G_NORETURN already.
- Use library
popcount()if it exists. - Use an integer for atomic_lock_t (or it fails on Darwin ppc32).
atio_get_lock(): no need to hash file descriptor.crash_hook_add(): watch out for early inits.crash_init(): ignore subsequent calls, loudly.crash_mode(): disable locking on concurrent crash.dump_hex_vec(): do not re-emit header if reached end.entropy_collect_gateway(): cache initial gateway information.entropy_harvest_many(): accelerate processing.evq_close(): forgot to free local callout queue.getgateway(): avoid endless warnings.- hashlist: avoid race condition for moveto operations.
random_double_generate(): ensure value is in [0, 1[.ripening_set_expire(): remove faulty assertion.rwlock_deadlocked(): trace locking thread owner.rwlock_lock_granted(): verify waiter presence.rwlock_readers_downto(): issue a memory barrier.shared_file_free(): give more details on assert failure.semaphore_emulate(): was not handling timeout properly.sig_get_pc_index(): also trap SIGBUS for OS/X.socket_tls_upgrade(): synchronous upgrade logged but no longer fatal.str_private(): must useNOT_LEAKING_Z()forwalloc().str_slice(): change semantics of `to'.thread_element_reset(): also clear lock stack overflow.thread_lock_dump(): can now omit details if necessary.thread_lock_released(): give more context on problems.thread_sig_handle(): add default handling of TSIG_TERM.vmm_mmap_anonymous(): optimize re-locking.walloc_get_zone(): do not keep lock whilst allocating zone.xmalloc_chunk_allocate(): validate chunk head is sound.- zalloc: do not keep lock whilst extending the zone.
zget(): limit scope of global spinlock to a minimum.
