Ο Γραφικός Πελάτης Gnutella για Unix
Το gtk-gnutella είναι ένας εξυπηρετητής/πελάτης για το Gnutella. Τρέχει σε όλα τα Unix-like συστήματα που υποστηρίζουν GTK+ (1.2 ή νεότερο) και libxml. Δεν απαιτείται Gnome. Προς το παρόν αναπτύσσεται και δοκιμάζεται σε Linux (Debian 2.2) και είναι γνωστό ότι τρέχει τουλάχιστον σε Linux, FreeBSD, NetBSD, Darwin, Solaris, Tru64 UNIX (OSF/1), SGI IRIX, BeOS ενώ οι αρχιτεκτονικές υπολογιστή περιλαμβάνουν x86, AMD64, PowerPC, SPARC, MIPS.
Εκδίδεται υπό τους όρους της άδειας GNU General Public (GPL).
Το gtk-gnutella δεν έχει τελειώσει ακόμα, αλλά είναι πλήρως λειτουργικό: μπορείτε να μοιραστείτε, να αναζητήσετε, και να κατεβάσετε. Επίσης είναι σταθερό, οι χρήστες συνήθως το αφήνουν να τρέχει μόνο του για μέρες.
Όλες οι ιδέες και τα σχόλια είναι καλοδεχούμενα στην ταχυδρομική λίστα gtk-gnutella-devel. Τα σφάλματα πρέπει να αναφέρονται στο SourceForge.net Bug Tracker
Χρειαζόμαστε άτομα που θα συμβάλλουν σε ανάπτυξη C και στη συγγραφή εγχειριδίων.
Νέα
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.
