Knuth's improvements and releases
The Knuth engineering team is pleased to announce a couple of releases:
Knuth's build system (kthbuild) has been completely rewritten. We just released v1.0.37.
kthbuild relies on a new component we called microarch, that is a pip package to manage x86-64 microarchitectures, extensions and instruction-sets.
For x86-64 systems (AMD, Intel, etc.) the Knuth's build system now supports all five industry-defined microarchitecture levels:
x86-64-v0: just x86-64.
x86-64-v1: x86-64-v0 + CMOV, CX8, FPU, FXSR, MMX, OSFXSR, SCE, SSE, SSE2.
x86-64-v2: x86-64-v1 + CMPXCHG16B, LAHF-SAHF, POPCNT, SSE3, SSE4.1, SSE4.2, SSSE3.
x86-64-v3: x86-64-v2 +AVX, AVX2, BMI1, BMI2, F16C, FMA, LZCNT, MOVBE, XSAVE.
x86-64-v4: x86-64-v3 + AVX-512's general-purpose subset (AVX512F, AVX512BW, AVX512CD, AVX512DQ, AVX512VL)
The Knuth's build system also supports other extensions that are outside those cataloged in the 5 levels, currently supported extensions are the following:
CMOV, CX8, FPU, FXSR, MMX, SCE, SSE, SSE2, CX16, LAHF-SAHF, POPCNT, SSE3, SSE4.1, SSE4.2, SSSE3, AVX, AVX2, BMI1, BMI2, F16C, FMA, LZCNT, ABM, MOVBE, XSAVE, AVX512F, AVX512BW, AVX512CD, AVX512DQ, AVX512VL, SSE4A, PKU, PCLMUL, FSGSBASE, RDRND, FMA4, XOP, TBM, RDSEED, ADX, 3DNOW, 3DNOWEXT, PREFETCHW, PREFETCHWT1, CLFLUSHOPT, XSAVEOPT, XSAVEC, XSAVES, CLWB, PTWRITE, RDPID, SGX, GFNI, VPCLMULQDQ, PCONFIG, WBNOINVD, MOVDIRI, MOVDIR64B, LWP, MWAITX, CLZERO, INVLPGB_TLBSYNC, CET_SS, AVXVNNI, TSXRTM, TSXHLE, WAITPKG, ENQCMD, UINTR, TSXLDTRK, CLDEMOTE, SERIALIZE, HRESET, AES, VAES, SHA, KL, WIDEKL, AVX512FP16, AVX512PF, AVX512ER, AVX5124VNNIW, AVX5124FMAPS, AVX512VBMI, AVX512IFMA, AVX512VBMI2, AVX512VPOPCNTDQ, AVX512BITALG, AVX512VNNI, AVX512BF16, AVX512VP2INTERSECT, AMXBF16, AMXTILE, AMXINT8, MMXEXT, XGETBV_ECX1, UMIP, SGX_LC, MCOMMIT, RDPRU, INVPCID, SEV_SNP
As CPU manufacturers add more instructions, we will incorporate them into our system.
Knuth's build system will automatically detect which of these instructions are supported by your platform: CPU and compiler.
We just released the Knuth node version 0.25.0 which has been compiled using kthbuild v1.0.37. For the full release notes, please visit: https://github.com/k-nuth/kth/releases/tag/v0.25.0.
In addition to the Knuth node, we have also released our C-API v0.26.0 which includes some API improvements and has also been compiled using kthbuild v1.0.37. For the full release notes, please visit: https://github.com/k-nuth/c-api/releases/tag/v0.26.0
For both node and the C-API library we have chosen to distribute binaries compiled using the x86-64-v3 microarchitecture level. However, if your platform does not support the x86-64-v3 march level, kthbuild will automatically compile from source using your platform's specifications.
And if your platform is better than x86-64-v3, you can take advantage of your hardware by compiling node with
We also want to inform you that we are also continuing to work on our new Python library (which has been funded in our last Flipstarter campaign), we will have news soon.
Finally, we would like to give you some news about our next steps.
Our build system has been designed to help the compiler automatically optimize Knuth code, taking advantage of the instructions available on your computer. In addition to that, we will soon take advantage of automatic instruction detection to optimize some critical algorithms manually, that is: we will rewrite some parts of the code, such as signature verification, hashing algorithms, etc., using SIMD instructions (vector instructions, instead of scalar instructions), this will substantially improve the performance of the node.
Knuth is open source software that needs community support to continue its development. Therefore we would like to thank the generosity of our supporters and that of the entire Bitcoin Cash ecosystem. You are the ones that allow us to move forward with our goal, which is everyone's goal at Bitcoin Cash, which is to be the Peer-to-Peer Electronic Cash System for the entire world.