|
1 | 1 | # Detailed Test Tier Breakdown |
2 | 2 |
|
3 | | -GraalPy test tiers are similar to [CPython Platform Support Tiers](https://peps.python.org/pep-0011/), but do not constitute or imply any commitment to support. |
| 3 | +GraalPy organizes platform testing into tiers that indicate the level of testing rigor and support you can expect for different platform configurations. This tiering system helps you understand: |
4 | 4 |
|
5 | | -Generally, running pure Python code on GraalPy without JIT is compatible with any recent JDK. |
6 | | -However, support for native extensions, platform-specific APIs, and just-in-time compilation is more limited. |
| 5 | +- How thoroughly your platform is tested |
| 6 | +- What level of stability to expect |
| 7 | +- Which features are fully supported vs. experimental |
7 | 8 |
|
8 | | -Platform testing is organized into Tiers, each with specific goals. |
9 | | -Tiers are identified by a "target tuple": `[CPU architecture]-[Operating System]-[libc]-[JDK]-[Java version]`. |
10 | | -JDK names correspond to those used by [SDKMAN!](https://sdkman.io/). |
11 | | -The term "graal" is used to refer to testing on both Oracle GraalVM and GraalVM Community Edition, including GraalVM Native Image. |
12 | | -The following tables list tested platforms by tier. |
13 | | -Platforms not listed are untested. |
| 9 | +Platforms are identified using the target tuple format: `[CPU architecture]-[Operating System]-[libc]-[JDK]-[Java version]`. JDK names follow [SDKMAN!](https://sdkman.io/) conventions, and "graal" refers to both Oracle GraalVM and GraalVM Community Edition (including Native Image). |
14 | 10 |
|
15 | | -**Tier 1** |
| 11 | +> **Important:** GraalPy test tiers are similar to [CPython Platform Support Tiers](https://peps.python.org/pep-0011/), but do not constitute or imply any commitment to support. |
16 | 12 |
|
17 | | -- CI failures block releases. |
18 | | -- Changes which would break the main or release branches are not allowed to be merged; any breakage should be fixed or reverted immediately. |
19 | | -- All core developers are responsible to keep main, and thus these platforms, working. |
20 | | -- Platform-specific Python APIs and Python C extensions are fully tested. |
| 13 | +Pure Python code runs reliably on GraalPy with recent JDKs when JIT compilation is disabled. However, advanced features like native extensions, platform-specific APIs, and JIT compilation have varying support depending on your platform tier. |
| 14 | + |
| 15 | +## Tier 1 |
| 16 | + |
| 17 | +- **Stability:** CI failures block releases. Changes which would break the main or release branches are not allowed to be merged; any breakage should be fixed or reverted immediately. |
| 18 | +- **Responsibility:** All core developers are responsible to keep main, and thus these platforms, working. |
| 19 | +- **Coverage:** Platform-specific Python APIs and Python C extensions are fully tested. |
21 | 20 |
|
22 | 21 | | Platform | Notes | |
23 | 22 | |----------------------------------|----------------------------| |
24 | 23 | | amd64-linux-glibc-graal-latest | Oracle Linux 8 or similar. | |
25 | 24 | | aarch64-linux-glibc-graal-latest | Oracle Linux 8 or similar. | |
26 | 25 |
|
27 | | -**Tier 2** |
| 26 | +## Tier 2 |
28 | 27 |
|
29 | | -- CI failures block releases. |
30 | | -- Changes which would break the main or release branches are not allowed to be merged; any breakage should be fixed or tests marked as skipped. |
31 | | -- Circa 10% of tests running on Tier 1 platforms may be skipped on Tier 2 platforms. |
32 | | -- Platform-specific Python APIs are fully tested; Python C extensions may have more issues than on Tier 1 platforms. |
| 28 | +- **Stability:** CI failures block releases. Changes which would break the main or release branches are not allowed to be merged; any breakage should be fixed or tests marked as skipped. |
| 29 | +- **Test Coverage:** Circa 10% of tests running on Tier 1 platforms may be skipped on Tier 2 platforms. |
| 30 | +- **Feature Support:** Platform-specific Python APIs are fully tested; Python C extensions may have more issues than on Tier 1 platforms. |
33 | 31 |
|
34 | 32 | | Platform | Notes | |
35 | 33 | |-----------------------------------|-------------------------| |
36 | 34 | | aarch64-macos-darwin-graal-latest | macOS on M-series CPUs. | |
37 | 35 |
|
38 | | -**Tier 3** |
| 36 | +## Tier 3 |
39 | 37 |
|
40 | | -- CI failures block releases. |
41 | | -- Changes which would break the main or release branches are not allowed to be merged; any breakage should be fixed or tests marked as skipped. |
42 | | -- Circa 25% of tests running on Tier 1 platforms may be skipped on Tier 3. |
43 | | -- Tests for platform-specific Python APIs and Python C extension are run, but not prioritized. |
| 38 | +- **Stability:** CI failures block releases. Changes which would break the main or release branches are not allowed to be merged; any breakage should be fixed or tests marked as skipped. |
| 39 | +- **Test Coverage:** Circa 25% of tests running on Tier 1 platforms may be skipped on Tier 3. |
| 40 | +- **Feature Support:** Tests for platform-specific Python APIs and Python C extension are run, but not prioritized. |
44 | 41 |
|
45 | 42 | | Platform | Notes | |
46 | 43 | |---------------------------------|----------------------------------------------| |
47 | | -| amd64-macos-darwin-graal-latest | macOS on Intel CPUs running BigSur or newer. | |
| 44 | +| amd64-macos-darwin-graal-latest | macOS on Intel CPUs running Big Sur or newer. | |
48 | 45 | | amd64-windows-msvc-graal-latest | Windows 11, Windows Server 2025, or newer. | |
49 | 46 | | amd64-linux-glibc-oracle-21 | JDK 21 is tested without JIT compilation. | |
50 | 47 | | aarch64-linux-glibc-oracle-21 | JDK 21 is tested without JIT compilation. | |
51 | 48 | | aarch64-macos-darwin-oracle-21 | JDK 21 is tested without JIT compilation. | |
52 | 49 | | amd64-macos-darwin-oracle-21 | JDK 21 is tested without JIT compilation. | |
53 | 50 | | amd64-windows-msvc-oracle-21 | JDK 21 is tested without JIT compilation. | |
| 51 | + |
| 52 | +## Tier 4 |
| 53 | + |
| 54 | +- **Stability:** CI failures do not block releases. Tests may be broken on the main and release branches. |
| 55 | +- **Test Coverage:** Smoke tests with platform-agnostic pure Python workloads are run on a regular schedule. |
| 56 | +- **Feature Support:** Only basic pure Python functionality is tested; platform-specific features and extensions are not prioritized. |
| 57 | + |
| 58 | +| Platform | Notes | |
| 59 | +| ------------------------------- | ----------------------------------------------| |
| 60 | +| amd64-linux-musl-graal-latest | Ensures GraalPy can be built for and used on musl libc platforms such as Alpine Linux. | |
| 61 | +| amd64-linux-glibc-j9-17 | Ensures that non-Oracle JVMs work for pure Python code without JIT. | |
| 62 | +| ppc64le-linux-glibc-oracle-17 | Ensures that other architectures (ppc64le, s390x, risc-v) work for pure Python code without JIT. | |
0 commit comments