Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 2 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ Also, review the [Code of Conduct](https://www.graalvm.org/community/conduct/) f
* Support for native extension modules is considered experimental, but you can already install [packages](docs/user/Python-Runtime.md#installing-packages) like *NumPy*, *PyTorch*, or *Tensorflow*; run [Hugging Face](https://huggingface.co/) models like *Stable Diffusion* or *GPT*
![](docs/user/assets/mcd.svg#gh-light-mode-only)![](docs/user/assets/mcd-dark.svg#gh-dark-mode-only)<sup>
We run the tests of the [most depended on PyPI packages](https://libraries.io/pypi) every day.
For 97% of those packages a recent version can be installed on GraalPy and GraalPy passes over 60% of all tests of all packages combined.
For 93% of those 600 packages a recent version can be installed on GraalPy and GraalPy passes over 65% of all tests of all packages combined.
We assume that CPython not passing 100% of all tests is due to problems in our infrastructure that may also affect GraalPy.
Packages where CPython fails all tests are marked as "not tested" for both CPython and GraalPy.
</sup>
Expand All @@ -44,12 +44,10 @@ Packages where CPython fails all tests are marked as "not tested" for both CPyth

* Pure Python code is often faster than on CPython after JIT compilation
* C extension performance is near CPython, but varies depending on the specific interactions of native and Python code
* GraalPy is ~4x faster than CPython on the official [Python Performance Benchmark Suite](https://pyperformance.readthedocs.io/)
* GraalPy is geomean ~4x faster than CPython on the official [Python Performance Benchmark Suite](https://pyperformance.readthedocs.io/)
![](docs/user/assets/performance.svg#gh-light-mode-only)![](docs/user/assets/performance-dark.svg#gh-dark-mode-only)<sup>
Benchmarks run via `pip install pyperformance && pyperformance run` on each of CPython and GraalPy.
Harness and benchmarks were adapted by hand for Jython due to missing Python 3 support.
Each interpreter was installed via <tt>[pyenv](https://github.com/pyenv/pyenv)</tt>.
Geomean speedup was calculated against CPython on the intersection of benchmarks that run on all interpreters.
</sup>

## Getting Started
Expand Down
2 changes: 1 addition & 1 deletion ci/graal/common.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
"Jsonnet files should not include this file directly but use ci/common.jsonnet instead."
],

"mx_version": "7.83.0",
"mx_version": "7.83.3",

"COMMENT.jdks": "When adding or removing JDKs keep in sync with JDKs in ci/common.jsonnet",
"jdks": {
Expand Down
6 changes: 3 additions & 3 deletions docs/user/assets/mcd-dark.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
6 changes: 3 additions & 3 deletions docs/user/assets/mcd.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
6 changes: 3 additions & 3 deletions docs/user/assets/performance-dark.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
6 changes: 3 additions & 3 deletions docs/user/assets/performance.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,4 @@ test.test_audit.AuditTest.test_http @ linux-aarch64-github,linux-x86_64-github
test.test_audit.AuditTest.test_mmap @ darwin-arm64,linux-aarch64,linux-aarch64-github,linux-x86_64,linux-x86_64-github
test.test_audit.AuditTest.test_socket @ darwin-arm64,linux-aarch64,linux-aarch64-github,linux-x86_64,linux-x86_64-github
test.test_audit.AuditTest.test_sqlite3 @ darwin-arm64,linux-aarch64,linux-aarch64-github,linux-x86_64,linux-x86_64-github
test.test_audit.AuditTest.test_sys_getframemodulename @ darwin-arm64,linux-aarch64,linux-aarch64-github,linux-x86_64,linux-x86_64-github
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ test.test_compile.TestSpecifics.test_literals_with_leading_zeroes @ darwin-arm64
test.test_compile.TestSpecifics.test_mangling @ darwin-arm64,linux-aarch64,linux-aarch64-github,linux-x86_64,linux-x86_64-github,win32-AMD64,win32-AMD64-github
test.test_compile.TestSpecifics.test_multi_line_lambda_as_argument @ darwin-arm64,linux-aarch64,linux-aarch64-github,linux-x86_64,linux-x86_64-github,win32-AMD64,win32-AMD64-github
test.test_compile.TestSpecifics.test_no_ending_newline @ darwin-arm64,linux-aarch64,linux-aarch64-github,linux-x86_64,linux-x86_64-github,win32-AMD64,win32-AMD64-github
test.test_compile.TestSpecifics.test_no_wraparound_jump @ darwin-arm64,linux-aarch64,linux-aarch64-github,linux-x86_64,linux-x86_64-github,win32-AMD64-github
test.test_compile.TestSpecifics.test_no_wraparound_jump @ darwin-arm64,linux-aarch64,linux-aarch64-github,linux-x86_64,linux-x86_64-github,win32-AMD64,win32-AMD64-github
test.test_compile.TestSpecifics.test_none_assignment @ darwin-arm64,linux-aarch64,linux-aarch64-github,linux-x86_64,linux-x86_64-github,win32-AMD64,win32-AMD64-github
test.test_compile.TestSpecifics.test_none_keyword_arg @ darwin-arm64,linux-aarch64,linux-aarch64-github,linux-x86_64,linux-x86_64-github,win32-AMD64,win32-AMD64-github
test.test_compile.TestSpecifics.test_null_terminated @ darwin-arm64,linux-aarch64,linux-aarch64-github,linux-x86_64,linux-x86_64-github,win32-AMD64,win32-AMD64-github
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,22 +67,22 @@ test.test_nntplib.NNTPv2Tests.test_stat @ darwin-arm64,linux-aarch64,linux-aarch
test.test_nntplib.NNTPv2Tests.test_too_long_lines @ darwin-arm64,linux-aarch64,linux-aarch64-github,linux-x86_64,linux-x86_64-github,win32-AMD64,win32-AMD64-github
test.test_nntplib.NNTPv2Tests.test_welcome @ darwin-arm64,linux-aarch64,linux-aarch64-github,linux-x86_64,linux-x86_64-github,win32-AMD64,win32-AMD64-github
test.test_nntplib.NNTPv2Tests.test_xover @ darwin-arm64,linux-aarch64,linux-aarch64-github,linux-x86_64,linux-x86_64-github,win32-AMD64,win32-AMD64-github
test.test_nntplib.NetworkedNNTPTests.test_capabilities @ linux-aarch64-github,linux-x86_64-github,win32-AMD64-github
test.test_nntplib.NetworkedNNTPTests.test_date @ linux-aarch64-github,linux-x86_64-github,win32-AMD64-github
test.test_nntplib.NetworkedNNTPTests.test_description @ linux-aarch64-github,linux-x86_64-github,win32-AMD64-github
test.test_nntplib.NetworkedNNTPTests.test_descriptions @ linux-aarch64-github,linux-x86_64-github,win32-AMD64-github
test.test_nntplib.NetworkedNNTPTests.test_group @ linux-aarch64-github,linux-x86_64-github,win32-AMD64-github
test.test_nntplib.NetworkedNNTPTests.test_help @ linux-aarch64-github,linux-x86_64-github,win32-AMD64-github
test.test_nntplib.NetworkedNNTPTests.test_list @ linux-aarch64-github,linux-x86_64-github,win32-AMD64-github
test.test_nntplib.NetworkedNNTPTests.test_list_active @ linux-aarch64-github,linux-x86_64-github,win32-AMD64-github
test.test_nntplib.NetworkedNNTPTests.test_newgroups @ linux-aarch64-github,linux-x86_64-github,win32-AMD64-github
test.test_nntplib.NetworkedNNTPTests.test_timeout @ linux-aarch64-github,linux-x86_64-github,win32-AMD64-github
test.test_nntplib.NetworkedNNTPTests.test_unknown_command @ linux-aarch64-github,linux-x86_64-github,win32-AMD64-github
test.test_nntplib.NetworkedNNTPTests.test_welcome @ linux-aarch64-github,linux-x86_64-github,win32-AMD64-github
test.test_nntplib.NetworkedNNTPTests.test_with_statement @ linux-aarch64-github,linux-x86_64-github,win32-AMD64-github
test.test_nntplib.NetworkedNNTPTests.test_xhdr @ linux-aarch64-github,linux-x86_64-github,win32-AMD64-github
test.test_nntplib.NetworkedNNTPTests.test_xover @ linux-aarch64-github,linux-x86_64-github,win32-AMD64-github
test.test_nntplib.NetworkedNNTPTests.test_zlogin @ linux-aarch64-github,linux-x86_64-github,win32-AMD64-github
test.test_nntplib.NetworkedNNTPTests.test_zzquit @ linux-aarch64-github,linux-x86_64-github,win32-AMD64-github
test.test_nntplib.NetworkedNNTPTests.test_capabilities @ win32-AMD64-github
test.test_nntplib.NetworkedNNTPTests.test_date @ win32-AMD64-github
test.test_nntplib.NetworkedNNTPTests.test_description @ win32-AMD64-github
test.test_nntplib.NetworkedNNTPTests.test_descriptions @ win32-AMD64-github
test.test_nntplib.NetworkedNNTPTests.test_group @ win32-AMD64-github
test.test_nntplib.NetworkedNNTPTests.test_help @ win32-AMD64-github
test.test_nntplib.NetworkedNNTPTests.test_list @ win32-AMD64-github
test.test_nntplib.NetworkedNNTPTests.test_list_active @ win32-AMD64-github
test.test_nntplib.NetworkedNNTPTests.test_newgroups @ win32-AMD64-github
test.test_nntplib.NetworkedNNTPTests.test_timeout @ win32-AMD64-github
test.test_nntplib.NetworkedNNTPTests.test_unknown_command @ win32-AMD64-github
test.test_nntplib.NetworkedNNTPTests.test_welcome @ win32-AMD64-github
test.test_nntplib.NetworkedNNTPTests.test_with_statement @ win32-AMD64-github
test.test_nntplib.NetworkedNNTPTests.test_xhdr @ win32-AMD64-github
test.test_nntplib.NetworkedNNTPTests.test_xover @ win32-AMD64-github
test.test_nntplib.NetworkedNNTPTests.test_zlogin @ win32-AMD64-github
test.test_nntplib.NetworkedNNTPTests.test_zzquit @ win32-AMD64-github
test.test_nntplib.PublicAPITests.test_module_all_attribute @ darwin-arm64,linux-aarch64,linux-aarch64-github,linux-x86_64,linux-x86_64-github,win32-AMD64,win32-AMD64-github
test.test_nntplib.SendReaderNNTPv2Tests.test_we_are_in_reader_mode_after_connect @ darwin-arm64,linux-aarch64,linux-aarch64-github,linux-x86_64,linux-x86_64-github,win32-AMD64,win32-AMD64-github
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ test.test_sys.SysModuleTest.test_exit @ darwin-arm64,linux-aarch64,linux-aarch64
test.test_sys.SysModuleTest.test_getdefaultencoding @ darwin-arm64,linux-aarch64,linux-aarch64-github,linux-x86_64,linux-x86_64-github,win32-AMD64,win32-AMD64-github
test.test_sys.SysModuleTest.test_getfilesystemencoding @ darwin-arm64,linux-aarch64,linux-aarch64-github,linux-x86_64,linux-x86_64-github,win32-AMD64,win32-AMD64-github
test.test_sys.SysModuleTest.test_getframe @ darwin-arm64,linux-aarch64,linux-aarch64-github,linux-x86_64,linux-x86_64-github,win32-AMD64,win32-AMD64-github
test.test_sys.SysModuleTest.test_getframemodulename @ linux-x86_64
test.test_sys.SysModuleTest.test_getframemodulename @ darwin-arm64,linux-aarch64,linux-aarch64-github,linux-x86_64,linux-x86_64-github,win32-AMD64
test.test_sys.SysModuleTest.test_getrecursionlimit @ darwin-arm64,linux-aarch64,linux-aarch64-github,linux-x86_64,linux-x86_64-github,win32-AMD64,win32-AMD64-github
test.test_sys.SysModuleTest.test_getwindowsversion @ win32-AMD64,win32-AMD64-github
test.test_sys.SysModuleTest.test_implementation @ darwin-arm64,linux-aarch64,linux-aarch64-github,linux-x86_64,linux-x86_64-github,win32-AMD64,win32-AMD64-github
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
test.test_uuid.TestInternalsWithoutExtModule.test_arp_getnode @ darwin-arm64
test.test_uuid.TestInternalsWithoutExtModule.test_find_mac_near_keyword @ darwin-arm64,linux-aarch64,linux-aarch64-github,linux-x86_64,linux-x86_64-github,win32-AMD64,win32-AMD64-github
test.test_uuid.TestInternalsWithoutExtModule.test_find_under_heading @ darwin-arm64,linux-aarch64,linux-aarch64-github,linux-x86_64,linux-x86_64-github,win32-AMD64,win32-AMD64-github
test.test_uuid.TestInternalsWithoutExtModule.test_find_under_heading_ipv6 @ darwin-arm64,linux-aarch64,linux-aarch64-github,linux-x86_64,linux-x86_64-github,win32-AMD64,win32-AMD64-github
Expand Down
22 changes: 11 additions & 11 deletions graalpython/python-venvlauncher/src/venvlauncher.c
Original file line number Diff line number Diff line change
Expand Up @@ -201,7 +201,7 @@ launchEnvironment(wchar_t *env, wchar_t *exe)
*** PROCESS CONTROLLER ***
\******************************************************************************/

#define GRAAL_PYTHON_ARGS L"GRAAL_PYTHON_ARGS="
#define GRAAL_PYTHON_VM_ARGS L"GRAAL_PYTHON_VM_ARGS="
#define GRAAL_PYTHON_EXE_ARG L"--python.Executable="
#define GRAAL_PYTHON_BASE_EXECUTABLE_ARG L"--python.BaseExecutable="
#define GRAAL_PYTHON_VENVLAUNCHER_COMMAND_ARG L"--python.VenvlauncherCommand="
Expand Down Expand Up @@ -376,7 +376,7 @@ wmain(int argc, wchar_t ** argv)
debug(L"base executable: %s\n", baseExecutable);

// calculate the size of the new environment, that is, the size of the previous environment
// plus the size of the GRAAL_PYTHON_ARGS variable with the arguments to pass on
// plus the size of the GRAAL_PYTHON_VM_ARGS variable with the arguments to pass on
env = GetEnvironmentStringsW();
if (env == NULL) {
winerror(0, L"Failed to get current environment");
Expand All @@ -389,7 +389,7 @@ wmain(int argc, wchar_t ** argv)
envCur = envCur + i + 1;
}
// env needs room for key=, no \0
envSize += wcslen(GRAAL_PYTHON_ARGS);
envSize += wcslen(GRAAL_PYTHON_VM_ARGS);
// need room to specify original launcher path
envSize += 1 + wcslen(GRAAL_PYTHON_EXE_ARG) + wcslen(currentExecutable);
// need room to specify base executable path
Expand All @@ -400,9 +400,9 @@ wmain(int argc, wchar_t ** argv)
// env needs room for \v and arg, no \0
envSize = envSize + 1 + wcslen(argv[i]);
}
// final \v at the end of GRAAL_PYTHON_ARGS, so it gets purged
// final \v at the end of GRAAL_PYTHON_VM_ARGS, so it gets purged
++envSize;
// \0 at the end of the GRAAL_PYTHON_ARGS variable
// \0 at the end of the GRAAL_PYTHON_VM_ARGS variable
++envSize;
// env needs room for \0 at the end
++envSize;
Expand All @@ -427,15 +427,15 @@ wmain(int argc, wchar_t ** argv)
envCur = envCur + i + 1;
envSize = envSize - i - 1;
}
exitCode = wcscpy_s(newEnvCur, envSize, GRAAL_PYTHON_ARGS);
exitCode = wcscpy_s(newEnvCur, envSize, GRAAL_PYTHON_VM_ARGS);
if (exitCode) {
winerror(exitCode, L"Failed to copy GRAAL_PYTHON_ARGS=");
winerror(exitCode, L"Failed to copy GRAAL_PYTHON_VM_ARGS=");
goto abort;
}
debug(L"\t%s", newEnvCur);
// move past key=
envSize = envSize - wcslen(GRAAL_PYTHON_ARGS);
newEnvCur = newEnvCur + wcslen(GRAAL_PYTHON_ARGS);
envSize = envSize - wcslen(GRAAL_PYTHON_VM_ARGS);
newEnvCur = newEnvCur + wcslen(GRAAL_PYTHON_VM_ARGS);
// specify launcher executable
newEnvCur[0] = L'\v';
--envSize;
Expand Down Expand Up @@ -512,11 +512,11 @@ wmain(int argc, wchar_t ** argv)
envSize = envSize - wcslen(argv[i]);
newEnvCur = newEnvCur + wcslen(argv[i]);
}
// insert terminating \v for GRAAL_PYTHON_ARGS
// insert terminating \v for GRAAL_PYTHON_VM_ARGS
newEnvCur[0] = L'\v';
--envSize;
++newEnvCur;
// insert terminating \0 for GRAAL_PYTHON_ARGS
// insert terminating \0 for GRAAL_PYTHON_VM_ARGS
newEnvCur[0] = L'\0';
--envSize;
++newEnvCur;
Expand Down
4 changes: 2 additions & 2 deletions mx.graalpython/graalos_versions.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{
"runtime": "graalos/graalos_prod_pkeyson_sandboxon-runtime-2026_06_26_v1.0.0_13219_g1edbd6bbd855-1.el8.x86_64.tar.gz",
"toolchain": "graal/graalvm-graalos-java25-linux-amd64-25.2.4-dev-g449946c.tar.gz"
"runtime": "graalos/graalos_prod_pkeyson_sandboxon-runtime-2026_07_13_v1.0.0_13349_g17b356ae80b6-1.el8.x86_64.tar.gz",
"toolchain": "graal/graalvm-graalos-java25-linux-amd64-25.2.4-dev-ge60c82c.tar.gz"
}
4 changes: 2 additions & 2 deletions mx.graalpython/suite.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,15 +53,15 @@
},
{
"name": "tools",
"version": "b8a290a5d5e364074ab03ed0f29987ca773b9c9f",
"version": "7f0cb575a3f77f695185b16cb5e6ed355cc68a03",
"subdir": True,
"urls": [
{"url": "https://github.com/oracle/graal", "kind": "git"},
],
},
{
"name": "regex",
"version": "b8a290a5d5e364074ab03ed0f29987ca773b9c9f",
"version": "7f0cb575a3f77f695185b16cb5e6ed355cc68a03",
"subdir": True,
"urls": [
{"url": "https://github.com/oracle/graal", "kind": "git"},
Expand Down
Loading