Commit Graph

24 Commits

Author SHA1 Message Date
Andrew Steinborn
f62768be9a Fix native compile as libdeflate moved to CMake
Fixes #890 correctly. Also rebuild the compression/encryption natives on macOS and Linux ARM64.
2023-01-01 11:45:47 -05:00
Andrew Steinborn
ece90dedfb Update natives to latest libdeflate and add OpenSSL 3 native compiled on Fedora 36 for ARM64 2022-09-11 23:54:33 -04:00
Hugo Manrique
6547ccaa7e Provide crypto native for Linux x86_64 and OpenSSL 3.0.x (#854)
Compiled the crypto native on Debian testing (that ships with OpenSSL
3.0.5-2). Fixes #852.
2022-08-28 17:24:56 -04:00
Andrew Steinborn
4b1cdbcb31 I have sinned but it feels good 2022-06-08 01:18:19 -04:00
Andrew Steinborn
35a1456c5f Update Linux natives for latest libdeflate
x86_64 libdeflate was compiled with Fedora Linux 35. aarch64 binaries were compiled with Ubuntu 18.04.
2022-03-09 02:12:15 -05:00
Andrew Steinborn
bf81d20ba7 Recompile natives for Linux aarch64 2020-10-27 01:48:25 -04:00
Andrew Steinborn
0f919d7163 Recompile natives for Linux x86_64
Debian 9 was used to compile the libdeflate native and OpenSSL 1.1.x crypto, CentOS for OpenSSL 1.0.x crypto only.
2020-10-27 01:44:14 -04:00
Andrew Steinborn
9dda0ba9dd Commit the other aarch64 native recompiled on Debian 9 2020-06-23 07:55:41 -04:00
Andrew Steinborn
f00301e15b Add aarch64 natives compiled on Debian 9 2020-06-22 20:56:07 -04:00
Andrew Steinborn
676ce7b7fd Use compression native compiled on CentOS 7 2020-06-22 20:17:52 -04:00
Andrew Steinborn
1bb84f81df Rewrite native crypto to use OpenSSL
OpenSSL is much more portable and optimized (important for aarch64) and most systems already have a version.

Unfortunately, OpenSSL likes to break their ABI. Thankfully, Velocity's natives system is very flexible largely, so we can provide multiple versions of this crypto.

Versions of the dynamically-linked crypto were compiled on CentOS 7 (still supported until 2024, uses OpenSSL 1.0.x) and Debian 9 (the oldest distro including OpenSSL 1.1.0, whose LTS supports ends in 2022). The choice of distros was intended to cover most modern distributions (2014 and afterwards).

An ARM compilation (using Debian 9) will be published soon.
2020-06-22 20:14:46 -04:00
Andrew Steinborn
f3d5c986da Add Velocity compression native for aarch64
This native has been compiled and tested on Ubuntu 18.04 aarch64 on AWS Graviton2.

The cipher native is at the moment unlikely to provide a performance boost as mbed TLS doesn't provide an accelerated AES extension.
2020-06-04 15:22:03 -04:00
Andrew Steinborn
bb69481f99 Lay down foundation for cross-architecture natives
We have dropped the rarely used kqueue and replaced it with the new Netty aarch64
native. In addition, lay down the foundation for other aarch64 natives.
2020-06-04 14:59:22 -04:00
Andrew Steinborn
793e938dd1 Drop macOS native support
This served a good purpose when I used macOS as a primary development system, but those days are gone (I use Linux now). The spirit of multiple variants is preserved by our special Java 11+ optimized compression.
2020-05-24 10:58:28 -04:00
Andrew Steinborn
b3bd773fea Switch out Cloudflare zlib for libdeflate.
libdeflate is significantly faster than vanilla zlib, zlib-ng, and Cloudflare zlib. It is also MIT-licensed (so no licensing concerns). In addition, it simplifies a lot of the native code (something that's been tricky to get right).

While we're at it, I have also taken the time to fine-time compression in Velocity in general. Thanks to this work, native compression only requires one JNI call, an improvement from the more than 2 (sometimes up to 5) that were possible before. This optimization also extends to the existing Java compressors, though they require potentially two JNI calls.
2020-05-24 10:56:26 -04:00
Andrew Steinborn
742b8d98cb Fix noexecstack for natives. 2020-05-20 04:55:55 -04:00
Andrew Steinborn
b3ac73a51e Use Cloudflare zlib for more aggressive optimizations 2020-02-18 01:34:39 -05:00
Andrew Steinborn
496027f7c1 Add AMD64-specific compile script 2020-02-18 01:15:33 -05:00
Andrew Steinborn
e21c33d435 Switch to zlib-ng
zlib-ng boasts higher throughput than regular zlib, by combining patches
from Cloudflare, zlib, and ARM's improvements to zlib along with a more
modern codebase.

Profiling consistently shows that compression is the largest CPU expense
by far, so even a minor speed-up here is significant.
2019-09-08 23:30:28 -04:00
Andrew Steinborn
d8e7f87506 Forgot to update the JNI compile script for Linux. 2019-01-11 14:15:07 -05:00
Andrew Steinborn
9daa6c3a64 Prettify JNI stuff. 2019-01-11 14:13:13 -05:00
Andrew Steinborn
8588e7f1fe Optimize native handling further.
We now try to work within the boundaries given by the native. In the
case of Java natives, we work with byte arrays. With natives, always use
direct buffers.

However, the numbers do favor the natives, since they work with direct
byte buffers, without any copying. For the most part, this commit is
intended to improve the lives of Velocity users on Windows.
2018-12-30 06:16:04 -05:00
Andrew Steinborn
2e59138428 Cleaned up native code. 2018-08-02 00:43:38 -04:00
Andrew Steinborn
fb4e6fd8f1 JNI native zlib compression 🔥 2018-08-01 22:22:09 -04:00