ygrek / mldonkey

cross-platform multi-network p2p daemon (previously at http://mldonkey.sourceforge.net/)
Other
247 stars 46 forks source link

Adapt code to string immutability #98

Closed carlonluca closed 3 months ago

carlonluca commented 3 months ago

Compiling with recent versions of the ocaml compiler requires to respect the string immutability rule. This patch allows to build mldonkey without the unsafe strings switch, thus opening to new compiler versions and recent distros.

Respecting the string immutability rule required more byte/string conversions, which results in more copies. More refactoring is needed to prevent these copies.

This patch should close #46.

ygrek commented 3 months ago

I picked up some changes from this PR to safe-string branch. Going to merge safe-string to master shortly and close this PR. Would appreciate testing if I missed anything there.

builds for me with $ ./configure --enable-upnp-natpmp --enable-debug

Network modules:
 - eDonkey           enabled (eMule SUI enabled)
 - BitTorrent        enabled
 - FileTP (aka wget) enabled
 - Fasttrack         enabled
 - Gnutella                  disabled - unmaintained
 - Gnutella2                 disabled - unmaintained
 - Direct Connect    enabled
 - Open Napster              disabled - currently not usable
 - Soulseek                  disabled - currently not usable
 - OpenFT                    disabled - currently not usable

Core features:
 - zlib (required)   enabled
 - threads           enabled
 - bzip2             enabled
 - iconv             enabled
 - libmagic          enabled
 - upnp & natpmp     enabled
 - graphical stats           disabled

Compilers:
 - OCaml version     4.14.1 
 - gcc version       12
 - g++ version       12

Thanks a lot!

ygrek commented 3 months ago

99 takes care of this, thanks for the push to get it done