diff --git a/src/content/docs/concepts/architecture/rust-core-design.mdx b/src/content/docs/concepts/architecture/rust-core-design.mdx index 7869350b..50cb8300 100644 --- a/src/content/docs/concepts/architecture/rust-core-design.mdx +++ b/src/content/docs/concepts/architecture/rust-core-design.mdx @@ -6,8 +6,6 @@ sidebar: --- -import { Aside } from '@astrojs/starlight/components'; - Valkey GLIDE is built on a sophisticated, layered architecture designed to deliver consistent, high-performance database interaction across multiple programming languages. It features a **unified core engine written in Rust**, which handles all the complex, low-level tasks of client-server communication. @@ -59,9 +57,7 @@ In general, each language binding is responsible for: * **Handles Callbacks:** Enables event propagation across language boundaries * **Ensures Safety:** Prevents memory leaks and undefined behavior - +Each client reaches the FFI layer through its language's native interop mechanism. The Python async client uses PyO3 and the sync client uses CFFI. Java uses JNI (Java Native Interface), Node.js uses NAPI-RS, and Go uses cgo. C# calls the Rust library through P/Invoke, PHP through a C extension, and Ruby through the `ffi` gem. ## The Rust Core diff --git a/src/content/docs/getting-started/quickstart.mdx b/src/content/docs/getting-started/quickstart.mdx index c97094ef..39970a8a 100644 --- a/src/content/docs/getting-started/quickstart.mdx +++ b/src/content/docs/getting-started/quickstart.mdx @@ -49,11 +49,8 @@ For this guide, we will use a standalone client to connect to a Valkey Docker in ### Linux * Ubuntu 20 (x86\_64/amd64 and arm64/aarch64) -* Amazon Linux 2 (AL2) and 2023 (AL2023) (x86\_64) - -:::caution -Note: Currently Alpine Linux / MUSL is NOT supported. -::: +* Amazon Linux 2 (AL2) and 2023 (AL2023) (x86\_64). The Node.js client does not support AL2; see [Known Issues](/reference/known-issues). +* Alpine Linux are not supported for Python and C# clients. See [Installation Guide](/how-to/installation/#alpine-linux) for more details. ### MacOS @@ -62,15 +59,16 @@ Note: Currently Alpine Linux / MUSL is NOT supported. ### Windows -Windows support is currently available only for Valkey-GLIDE Java +Windows support is currently available for Valkey GLIDE Java and C#. * Windows (x86\_64) +* Windows (arm64) — C# only ## Install Valkey GLIDE - **Requirements:** Python 3.9 to 3.13. + **Requirements:** Python 3.9 to 3.14. ```bash # Install the latest version @@ -79,7 +77,7 @@ Windows support is currently available only for Valkey-GLIDE Java - **Requirements:** JDK 11+ + **Requirements:** JDK 8+ (JDK 11+ recommended) Add the following to your build tool. Make sure to specify your classifier for your OS. @@ -129,7 +127,7 @@ Windows support is currently available only for Valkey-GLIDE Java - **Requirements:** Node 16+ + **Requirements:** Node.js 20+ ```bash npm install @valkey/valkey-glide diff --git a/src/content/docs/how-to/installation.mdx b/src/content/docs/how-to/installation.mdx index 8b6228c1..475e7113 100644 --- a/src/content/docs/how-to/installation.mdx +++ b/src/content/docs/how-to/installation.mdx @@ -87,16 +87,23 @@ The release of Valkey GLIDE was tested on the following platforms: ### Linux * Ubuntu 20 (x86\_64/amd64 and arm64/aarch64) -* Amazon Linux 2 (AL2) and 2023 (AL2023) (x86\_64) +* Amazon Linux 2 (AL2) and 2023 (AL2023) (x86\_64). The Node.js client does not support AL2; see [Known Issues](/reference/known-issues).
`glibc` requirements The Node.js client requires `glibc` 2.28 or higher. Check your version with `ldd --version`. See [Known Issues](/reference/known-issues) for supported distributions and the requirements for other clients.
-:::caution -Currently Alpine Linux / MUSL is NOT supported. -::: +### Alpine Linux + +Alpine Linux defaults to using MUSL libc. Valkey GLIDE currently supports it as following: + +* **Java:** use a `linux_musl-x86_64` or `linux_musl-aarch_64` classifier, or the uber jar. +* **Go:** build with `-tags=musl` (for example, `export GOFLAGS=-tags=musl`). +* **PHP:** on Alpine 3.19+, install the build dependencies listed in the [PHP client README](https://github.com/valkey-io/valkey-glide-php#readme). +* **Ruby & Node.js:** Work out of the box. + +Python and C# clients currently do not support Alpine Linux or distro which uses MUSL. ### MacOS @@ -114,7 +121,7 @@ Windows support is currently available for Valkey GLIDE Java and C#. - **Requirements:** Python 3.9 to 3.13. + **Requirements:** Python 3.9 to 3.14. To get started, GLIDE Python is available on [pypi](https://pypi.org/project/valkey-glide/). @@ -134,7 +141,7 @@ Windows support is currently available for Valkey GLIDE Java and C#. - **Requirements:** JDK 11+ + **Requirements:** JDK 8+ (JDK 11+ recommended) To get started, add one of the following snippet into the build file for your tool. @@ -258,12 +265,12 @@ Windows support is currently available for Valkey GLIDE Java and C#. - **Requirements:** Node.js 16+ + **Requirements:** Node.js 20+ **For npm users on Linux it is recommended to use npm >=11**. It supports optional downloads based on libc. Yarn users should not be concerned. :::note - The library is dependent on the [protobufjs library](https://protobufjs.github.io/protobuf.js/#installation), which adds size to the package. The package is using the protobufjs/minimal version, hence, if size matters, bundlers should be able to strip the unused code. It should reduce the size of the dependency from 19kb gzipped to 6.5kb gzipped. + The library is dependent on the [protobufjs library](https://protobufjs.github.io/protobuf.js/#installation), which adds size to the package. The package is using the protobufjs/minimal version, hence, if size matters, bundlers should be able to strip the unused code. ::: To get started, Valkey GLIDE Node.js is available on npm for install. @@ -344,7 +351,7 @@ Windows support is currently available for Valkey GLIDE Java and C#. ``` :::note - The gem ships prebuilt native libraries for Linux and macOS, including Alpine Linux / musl (3.18+), and depends on the [`ffi`](https://github.com/ffi/ffi) gem. + The gem ships prebuilt native libraries for Linux (including Alpine Linux / musl 3.18+) and macOS on Apple silicon, and depends on the [`ffi`](https://github.com/ffi/ffi) gem. ::: diff --git a/src/content/docs/reference/known-issues.mdx b/src/content/docs/reference/known-issues.mdx index ae97d25a..5060c42d 100644 --- a/src/content/docs/reference/known-issues.mdx +++ b/src/content/docs/reference/known-issues.mdx @@ -8,16 +8,13 @@ import { Aside } from '@astrojs/starlight/components'; GLIDE has a native component built as a Rust-based library, which links against the system `glibc`. As a result, GLIDE requires a minimum `glibc` version and is not compatible with older `glibc`-based distributions. -The Node.js client requires **`glibc` 2.28 or higher**. The Python, Java, and Go clients require **`glibc` 2.17 or higher**. Amazon Linux 2 (`glibc` 2.26) is therefore not supported for the Node.js client — it is the previous generation of what [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes.html) runs on (node 18, py \<=11, java \<= 17). This does not affect MUSL-based distros, which are not based on `glibc`. +The Node.js client requires **`glibc` 2.28 or higher**. The Python, Java, Go, C#, and Ruby clients require **`glibc` 2.17 or higher**. Amazon Linux 2 (`glibc` 2.26) is therefore not supported for the Node.js client — it is the previous generation of what [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes.html) runs on (node 18, py \<=11, java \<= 17). This does not affect MUSL-based distros, which are not based on `glibc`. For every incompatible Linux distribution listed below, there is a newer stable version available, and we recommend using it. | Incompatible Distro Version | Compatible Successor Version | |-----------------------------|------------------------------| -| Debian 11 | Debian 12 / 13 | -| Ubuntu 20.04 LTS | Ubuntu 22.04 LTS / 24.04 LTS | -| Linux Mint 20 | Linux Mint 21 / 22 | -| Pop!\_OS 20.04 LTS | Pop!\_OS 22.04 LTS | +| Ubuntu 18.04 LTS | Ubuntu 22.04 LTS / 24.04 LTS | | Amazon Linux 2 | Amazon Linux 2023 | When running on an incompatible system, the client fails to load with an error such as: @@ -26,4 +23,4 @@ When running on an incompatible system, the client fails to load with an error s /lib64/libc.so.6: version `GLIBC_2.28' not found ``` -You can check the `glibc` version on your system by running `ldd --version`. For the Node.js client, any `glibc` below `2.28` (for example `2.26` or `2.27`) is not supported; for the Python, Java, and Go clients, any `glibc` below `2.17` is not supported. Progress on broader `glibc` compatibility is tracked in issue [#3291](https://github.com/valkey-io/valkey-glide/issues/3291). +You can check the `glibc` version on your system by running `ldd --version`. For the Node.js client, any `glibc` below `2.28` (for example `2.26` or `2.27`) is not supported; for the Python, Java, Go, C#, and Ruby clients, any `glibc` below `2.17` is not supported. Progress on broader `glibc` compatibility is tracked in issue [#3291](https://github.com/valkey-io/valkey-glide/issues/3291).