diff --git a/LICENSE.txt b/LICENSE.txt index 47a19cdc0..827c0e52a 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -193,7 +193,7 @@ Jbigi Libraries (jbigi.jar): GMP 4.3.2 / 5.0.2: Copyright 1991, 1996, 1999, 2000, 2007 Free Software Foundation, Inc. See licenses/LICENSE-LGPLv3.txt - GMP 6.0.0 / 6.1.2: + GMP 6.0.0 / 6.1.2 / 6.2.0: See licenses/LICENSE-GPLv2.txt diff --git a/core/c/jbigi/download_gmp.sh b/core/c/jbigi/download_gmp.sh index eaec5919d..90664ae93 100644 --- a/core/c/jbigi/download_gmp.sh +++ b/core/c/jbigi/download_gmp.sh @@ -1,10 +1,10 @@ #!/bin/sh # -# This script downloads gmp-6.1.2.tar.bz2 to this directory +# This script downloads gmp-6.x.x.tar.bz2 to this directory # (if a different version, change the GMP_VER= line below) # -export GMP_VER=6.1.2 +export GMP_VER=6.2.0 export GMP_TARVER=${GMP_VER} export GMP_DIR="gmp-$GMP_VER" export GMP_TAR="gmp-$GMP_TARVER.tar.bz2" diff --git a/core/c/jbigi/mbuild-all.sh b/core/c/jbigi/mbuild-all.sh index b36153ae4..8ede42748 100755 --- a/core/c/jbigi/mbuild-all.sh +++ b/core/c/jbigi/mbuild-all.sh @@ -50,7 +50,7 @@ TRANSLATE_NAME_armv7a="armv7" # Note! these build on 32bit as 32bit when operating as 32bit... # starting with k10 added for 6.0.0 # As of GMP 6.0.0, libgmp 3, -X86_64_PLATFORMS="skylake coreisbr coreihwl coreibwl bobcat jaguar bulldozer piledriver steamroller excavator atom athlon64 core2 corei nano pentium4 k10 x86_64" +X86_64_PLATFORMS="zen2 zen silvermont goldmont skylake coreisbr coreihwl coreibwl bobcat jaguar bulldozer piledriver steamroller excavator atom athlon64 core2 corei nano pentium4 k10 x86_64" TRANSLATE_NAME_x86_64="none" # Rename x86_64 to none_64, since that is what NativeBigInteger refers to it as # Note! these are 32bit _ONLY_ (after the 64 bit ones) @@ -84,7 +84,7 @@ if [ ! -f "$JAVA_HOME/include/jni.h" ]; then exit 1 fi -if ! command m4 > /dev/null; then +if [ ! $(which m4) ]; then printf "\aWARNING: \`m4\` not found. Install m4 " >&2 printf "and re-run this script.\n\n\n\a" >&2 exit 1 @@ -140,7 +140,7 @@ else exit 1 fi -if ! command ${CC} > /dev/null; then +if [ ! $(which ${CC}) ]; then echo "The compiler you've selected \"$CC\" does not appear to exist" exit 1 fi diff --git a/core/java/src/freenet/support/CPUInformation/AMDCPUInfo.java b/core/java/src/freenet/support/CPUInformation/AMDCPUInfo.java index 4b4b0ec68..1c0317fc8 100644 --- a/core/java/src/freenet/support/CPUInformation/AMDCPUInfo.java +++ b/core/java/src/freenet/support/CPUInformation/AMDCPUInfo.java @@ -73,4 +73,16 @@ public interface AMDCPUInfo extends CPUInfo { */ public boolean IsExcavatorCompatible(); + /** + * @return true if the CPU present in the machine is at least a Zen family CPU + * @since 0.9.48 + */ + public boolean IsZenCompatible(); + + /** + * @return true if the CPU present in the machine is at least a Zen2 family CPU + * @since 0.9.48 + */ + public boolean IsZen2Compatible(); + } diff --git a/core/java/src/freenet/support/CPUInformation/AMDInfoImpl.java b/core/java/src/freenet/support/CPUInformation/AMDInfoImpl.java index d5c7f5886..19dbaee65 100644 --- a/core/java/src/freenet/support/CPUInformation/AMDInfoImpl.java +++ b/core/java/src/freenet/support/CPUInformation/AMDInfoImpl.java @@ -22,6 +22,8 @@ class AMDInfoImpl extends CPUIDCPUInfo implements AMDCPUInfo private static boolean isPiledriverCompatible; private static boolean isSteamrollerCompatible; private static boolean isExcavatorCompatible; + private static boolean isZenCompatible; + private static boolean isZen2Compatible; public boolean IsK6Compatible(){ return isK6Compatible; } @@ -50,6 +52,18 @@ class AMDInfoImpl extends CPUIDCPUInfo implements AMDCPUInfo public boolean IsExcavatorCompatible(){ return isExcavatorCompatible; } + /** + * @return true if the CPU present in the machine is at least a Zen family CPU + * @since 0.9.48 + */ + public boolean IsZenCompatible() { return isZenCompatible; } + + /** + * @return true if the CPU present in the machine is at least a Zen2 family CPU + * @since 0.9.48 + */ + public boolean IsZen2Compatible() { return isZen2Compatible; } + public String getCPUModelString() throws UnknownCPUException { @@ -454,9 +468,10 @@ class AMDInfoImpl extends CPUIDCPUInfo implements AMDCPUInfo } break; - //Ryzen 7 (model 1), Ryzen 5 TBD + // Zen / Zen+ / Zen2 / Zen3 / Ryzen 3/5/7/9/Threadripper / EPYC // untested - case 23: { + case 23: + case 25: { // Quote wikipedia: // Zen is a clean sheet design that differs from the long-standing Bulldozer architecture. // All models support: x87, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AES, CLMUL, @@ -466,18 +481,22 @@ class AMDInfoImpl extends CPUIDCPUInfo implements AMDCPUInfo isK6_3_Compatible = true; isAthlonCompatible = true; isAthlon64Compatible = true; - // Pending testing of the bulldozer jbigi - //isPiledriverCompatible = true; - //isSteamrollerCompatible = true; - //isExcavatorCompatible = true; - //isBulldozerCompatible = true; - if (model == 1) + isPiledriverCompatible = true; + isSteamrollerCompatible = true; + isExcavatorCompatible = true; + isBulldozerCompatible = true; + isZenCompatible = true; + isZen2Compatible = family == 25; + if (isZen2Compatible) + modelString = "EPYC model " + model; + else if (model == 1) modelString = "Ryzen 7"; else modelString = "Ryzen model " + model; } break; + // Hygon Dhyana // http://lkml.iu.edu/hypermail/linux/kernel/1806.1/00730.html // untested case 24: { diff --git a/core/java/src/freenet/support/CPUInformation/CPUID.java b/core/java/src/freenet/support/CPUInformation/CPUID.java index 1e0cdbcdd..8a4edcb8f 100644 --- a/core/java/src/freenet/support/CPUInformation/CPUID.java +++ b/core/java/src/freenet/support/CPUInformation/CPUID.java @@ -420,6 +420,8 @@ public class CPUID { System.out.println("Is Piledriver-compatible: " + cc.IsPiledriverCompatible()); System.out.println("Is Steamroller-compatible: " + cc.IsSteamrollerCompatible()); System.out.println("Is Excavator-compatible: " + cc.IsExcavatorCompatible()); + System.out.println("Is Zen-compatible: " + cc.IsZenCompatible()); + System.out.println("Is Zen2-compatible: " + cc.IsZen2Compatible()); } } diff --git a/core/java/src/net/i2p/util/NativeBigInteger.java b/core/java/src/net/i2p/util/NativeBigInteger.java index 29baa7ded..7dd7fdc6a 100644 --- a/core/java/src/net/i2p/util/NativeBigInteger.java +++ b/core/java/src/net/i2p/util/NativeBigInteger.java @@ -174,6 +174,10 @@ public class NativeBigInteger extends BigInteger { private final static String JBIGI_OPTIMIZATION_JAGUAR = "jaguar"; /** @since 0.9.41 */ private final static String JBIGI_OPTIMIZATION_SKYLAKE = "skylake"; + /** @since 0.9.48 */ + private final static String JBIGI_OPTIMIZATION_ZEN = "zen"; + /** @since 0.9.48 */ + private final static String JBIGI_OPTIMIZATION_ZEN2 = "zen2"; /** * Non-x86, no fallbacks to older libs or to "none" @@ -227,7 +231,9 @@ public class NativeBigInteger extends BigInteger { private final static String[] JBIGI_COMPAT_LIST_AMD_GEODE = {JBIGI_OPTIMIZATION_GEODE, JBIGI_OPTIMIZATION_K6_3, JBIGI_OPTIMIZATION_K6_2, JBIGI_OPTIMIZATION_K6, JBIGI_OPTIMIZATION_X86}; private final static String[] JBIGI_COMPAT_LIST_AMD_APU = {JBIGI_OPTIMIZATION_JAGUAR, JBIGI_OPTIMIZATION_BOBCAT, JBIGI_OPTIMIZATION_ATHLON64}; - private final static String[] JBIGI_COMPAT_LIST_AMD_BULLDOZER = {JBIGI_OPTIMIZATION_EXCAVATOR, JBIGI_OPTIMIZATION_STEAMROLLER, JBIGI_OPTIMIZATION_PILEDRIVER, + /** the main AMD product line */ + private final static String[] JBIGI_COMPAT_LIST_AMD_MAIN = {JBIGI_OPTIMIZATION_ZEN2, JBIGI_OPTIMIZATION_ZEN, + JBIGI_OPTIMIZATION_EXCAVATOR, JBIGI_OPTIMIZATION_STEAMROLLER, JBIGI_OPTIMIZATION_PILEDRIVER, JBIGI_OPTIMIZATION_BULLDOZER, JBIGI_OPTIMIZATION_ATHLON64, JBIGI_OPTIMIZATION_X86}; private final static String[] JBIGI_COMPAT_LIST_INTEL_ATOM = {JBIGI_OPTIMIZATION_ATOM, JBIGI_OPTIMIZATION_PENTIUM3, JBIGI_OPTIMIZATION_PENTIUM2, JBIGI_OPTIMIZATION_PENTIUMMMX, JBIGI_OPTIMIZATION_PENTIUM, JBIGI_OPTIMIZATION_X86, @@ -275,10 +281,12 @@ public class NativeBigInteger extends BigInteger { put(JBIGI_OPTIMIZATION_BOBCAT, JBIGI_COMPAT_LIST_AMD_APU); put(JBIGI_OPTIMIZATION_JAGUAR, JBIGI_COMPAT_LIST_AMD_APU); - put(JBIGI_OPTIMIZATION_BULLDOZER, JBIGI_COMPAT_LIST_AMD_BULLDOZER); - put(JBIGI_OPTIMIZATION_PILEDRIVER, JBIGI_COMPAT_LIST_AMD_BULLDOZER); - put(JBIGI_OPTIMIZATION_STEAMROLLER, JBIGI_COMPAT_LIST_AMD_BULLDOZER); - put(JBIGI_OPTIMIZATION_EXCAVATOR, JBIGI_COMPAT_LIST_AMD_BULLDOZER); + put(JBIGI_OPTIMIZATION_BULLDOZER, JBIGI_COMPAT_LIST_AMD_MAIN); + put(JBIGI_OPTIMIZATION_PILEDRIVER, JBIGI_COMPAT_LIST_AMD_MAIN); + put(JBIGI_OPTIMIZATION_STEAMROLLER, JBIGI_COMPAT_LIST_AMD_MAIN); + put(JBIGI_OPTIMIZATION_EXCAVATOR, JBIGI_COMPAT_LIST_AMD_MAIN); + put(JBIGI_OPTIMIZATION_ZEN, JBIGI_COMPAT_LIST_AMD_MAIN); + put(JBIGI_OPTIMIZATION_ZEN2, JBIGI_COMPAT_LIST_AMD_MAIN); put(JBIGI_OPTIMIZATION_ATOM, JBIGI_COMPAT_LIST_INTEL_ATOM); @@ -363,6 +371,10 @@ public class NativeBigInteger extends BigInteger { return JBIGI_OPTIMIZATION_VIAC3; } else if (c instanceof AMDCPUInfo) { AMDCPUInfo amdcpu = (AMDCPUInfo) c; + if (amdcpu.IsZen2Compatible()) + return JBIGI_OPTIMIZATION_ZEN2; + if (amdcpu.IsZenCompatible()) + return JBIGI_OPTIMIZATION_ZEN; if (amdcpu.IsExcavatorCompatible()) return JBIGI_OPTIMIZATION_EXCAVATOR; if (amdcpu.IsSteamrollerCompatible()) diff --git a/history.txt b/history.txt index b72a35864..fb7819015 100644 --- a/history.txt +++ b/history.txt @@ -1,4 +1,17 @@ +2020-09-26 zzz + * JBigI: GMP 6.2.0 for linux 64 bit Zen and Zen2 (ticket #1869) + +2020-09-22 zzz + * i2ptunnel: Change enctype default to both for: + HTTP, IRC, and Streamr servers + IRC, SOCKS IRC, and Streamr clients + * Susimail, SAM: More defensive ByteBuffer casting (ticket #2775) + +2020-09-18 zzz + * Build: More git support for release and Debian targets + 2020-09-16 zzz + * i2psnark: Defensive checks for v2 format files and magnet links * Router: Block same-country when in hidden mode (ticket #2759) 2020-09-11 zzz diff --git a/installer/lib/jbigi/libjbigi-linux-zen2_64.so b/installer/lib/jbigi/libjbigi-linux-zen2_64.so new file mode 100644 index 000000000..27f00b84f Binary files /dev/null and b/installer/lib/jbigi/libjbigi-linux-zen2_64.so differ diff --git a/installer/lib/jbigi/libjbigi-linux-zen_64.so b/installer/lib/jbigi/libjbigi-linux-zen_64.so new file mode 100644 index 000000000..c566148dc Binary files /dev/null and b/installer/lib/jbigi/libjbigi-linux-zen_64.so differ diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index 0725033fa..f6e6df3a5 100644 --- a/router/java/src/net/i2p/router/RouterVersion.java +++ b/router/java/src/net/i2p/router/RouterVersion.java @@ -18,7 +18,7 @@ public class RouterVersion { /** deprecated */ public final static String ID = "Monotone"; public final static String VERSION = CoreVersion.VERSION; - public final static long BUILD = 3; + public final static long BUILD = 4; /** for example "-test" */ public final static String EXTRA = "";