.. | ||
build-support | ||
src | ||
build.gradle.kts | ||
README.md |
velocity-natives
This directory contains native acceleration code for Velocity, along with traditional Java fallbacks.
Compression is based on the libdeflate
library, which is wire-compatible with zlib but significantly faster.
Encryption is based on OpenSSL for Linux, which is the most widely-used encryption library in the world. OpenSSL has had several different ABIs over the years, so we provide multiple versions of the native library. Currently we compile against OpenSSL 1.1.x and OpenSSL 3.x.x. For macOS, we use the built-in CommonCrypto library.
Supported Platforms
velocity-natives
is built for the following platforms:
- Linux x86_64
- Linux aarch64
- macOS aarch64 ("Apple Silicon")
For Linux platforms, we provide two versions of the native library: one built against OpenSSL 1.1.x and one built against OpenSSL 3.x.x. All native libraries are built on various versions of Ubuntu:
- Ubuntu 20.04 for OpenSSL 1.1.x support and for compression
- Ubuntu 22.04 for OpenSSL 3.x.x support
Currently, we do not provide native libraries for distributions based on musl libc, like Alpine Linux. You might be able to use apk add libc6-compat
to fake it, but this is not officially supported.
In the future we may provide a musl libc build.
Building
On Linux
To build the native libraries, you need to have Docker installed and have it set up to perform multi-platform builds. Then, run the following command:
./build-support/build-all-linux-natives.sh
This will build the native libraries for both OpenSSL 1.1.x and OpenSSL 3.x.x on both x86_64 and aarch64.
On macOS
To build the native libraries on macOS, you need to have cmake
installed. You can install it using Homebrew:
brew install cmake
Then, run the following command:
./build-support/compile-macos.sh
This will build the native libraries for macOS aarch64. x86_64 has not been tested, but it should work.
On any other operating system?
If your OS of choice is a Unix of some sort, you can use the individual Linux build scripts as a base:
build-support/compile-linux-compress.sh
build-support/compile-linux-crypto.sh
You will need to have the necessary build tools installed (a C/C++ toolchain and cmake
), and you will need to have OpenSSL installed. You will also need to adjust the script to your needs.
If your OS of choice is Windows, you're on your own. It should be possible, but we don't provide any support for it.