diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 58d44be12..f6700b6d8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -52,7 +52,7 @@ jobs: strategy: fail-fast: false matrix: - os: [ubuntu-20.04, ubuntu-20.04-aarch64, macos-11, macos-14, windows-2022] + os: [ubuntu-20.04, ubuntu-20.04-aarch64, macos-12, macos-14, windows-2022] java: [22] jdk_identifier: [latest] env: @@ -95,8 +95,9 @@ jobs: run: | sed "s/{USERNAME}/${GITHUB_ACTOR}/g; s/{TOKEN}/${{ secrets.GITHUB_TOKEN }}/g" mx.trufflesqueak/mvn-settings.xml.template > mx.trufflesqueak/mvn-settings.xml mx.trufflesqueak/utils.sh conditional-deploy \ + mx --env trufflesqueak-jar build --dependencies SMALLTALK,SMALLTALK_COMMUNITY && \ mx --env trufflesqueak-jar maven-deploy --settings mx.trufflesqueak/mvn-settings.xml --version-string ${{ github.ref_name }} --validate full --licenses MIT --suppress-javadoc github https://maven.pkg.github.com/hpi-swa/trufflesqueak - if: ${{ matrix.os == 'ubuntu-20.04' }} + if: ${{ matrix.os == 'ubuntu-20.04' && github.ref_type == 'tag' }} - name: Run SystemReporter on TruffleSqueak run: 'trufflesqueak --code "(String streamContents: [:s | SystemReporter basicNew reportImage: s; reportVM: s; reportVMParameters: s]) withUnixLineEndings" images/test-64bit.image' - name: Clone Graal.js repository @@ -138,7 +139,7 @@ jobs: strategy: fail-fast: false matrix: - os: [ubuntu-20.04, ubuntu-20.04-aarch64, windows-2022, macos-11, macos-14] + os: [ubuntu-20.04, ubuntu-20.04-aarch64, windows-2022, macos-12, macos-14] type: [native, jvm] env: JAVA_VERSION: "22" @@ -154,7 +155,7 @@ jobs: - name: Set up Oracle GraalVM uses: graalvm/setup-graalvm@v1 with: - java-version: ${{ env.JAVA_VERSION }} + java-version: '${{ env.JAVA_VERSION }}.0.2' distribution: 'graalvm' github-token: ${{ secrets.GITHUB_TOKEN }} if: ${{ matrix.type == 'native' }} @@ -174,6 +175,10 @@ jobs: - name: Build TruffleSqueak standalone run: mx.trufflesqueak/utils.sh build-standalone ${{ matrix.type }} ${{ env.JAVA_VERSION }} if: ${{ runner.os != 'Windows' }} + # Workaround for https://github.com/actions/runner-images/issues/10001: + - name: Upgrade LLVM + run: choco upgrade llvm + if: ${{ runner.os == 'Windows' }} - name: Build TruffleSqueak standalone via cmd.exe shell: cmd run: | diff --git a/mx.trufflesqueak/graalvm-24.0.0.patch b/mx.trufflesqueak/graalvm-24.0.0.patch deleted file mode 100644 index 74db12785..000000000 --- a/mx.trufflesqueak/graalvm-24.0.0.patch +++ /dev/null @@ -1,50 +0,0 @@ -diff --git a/sdk/src/org.graalvm.launcher.native/src/launcher.cc b/sdk/src/org.graalvm.launcher.native/src/launcher.cc -index 3eeab1c5a7c..6eda994382c 100644 ---- a/sdk/src/org.graalvm.launcher.native/src/launcher.cc -+++ b/sdk/src/org.graalvm.launcher.native/src/launcher.cc -@@ -263,7 +263,7 @@ static void *load_jli_lib(std::string exeDir) { - - /* load the language library (either native library or libjvm) and return a - * pointer to the JNI_CreateJavaVM function */ --static CreateJVM load_vm_lib(std::string liblangPath) { -+static CreateJVM load_vm_lib(bool jvmMode, std::string liblangPath) { - if (debug) { - std::cout << "Loading library " << liblangPath << std::endl; - } -@@ -277,6 +277,14 @@ static CreateJVM load_vm_lib(std::string liblangPath) { - std::cerr << "Error while loading " << liblangPath << ":" << std::endl << errorString << std::endl; - } - #else -+ if (!jvmMode) { -+ std::string exeDir = exe_directory(); -+ std::stringstream languageLibPath; -+ languageLibPath << exeDir << DIR_SEP_STR << ".." << DIR_SEP_STR << "lib"; -+ if (SetDllDirectory(languageLibPath.str().c_str()) == 0) { -+ std::cerr << "Error adding dll search path: " << languageLibPath.str() << std::endl; -+ } -+ } - HMODULE jvmHandle = LoadLibraryA(liblangPath.c_str()); - if (jvmHandle != NULL) { - return (CreateJVM) GetProcAddress(jvmHandle, "JNI_CreateJavaVM"); -@@ -697,7 +705,7 @@ static int jvm_main_thread(int argc, char *argv[], std::string exeDir, bool jvmM - - /* load VM library - after parsing arguments s.t. NMT - * tracking variable is already set */ -- CreateJVM createVM = load_vm_lib(libPath); -+ CreateJVM createVM = load_vm_lib(jvmMode, libPath); - if (!createVM) { - std::cerr << "Could not load JVM." << std::endl; - return -1; -diff --git a/truffle/src/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/NodeUtil.java b/truffle/src/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/NodeUtil.java -index e7efa981ffc..ab20d32f2e9 100644 ---- a/truffle/src/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/NodeUtil.java -+++ b/truffle/src/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/NodeUtil.java -@@ -175,7 +175,7 @@ public final class NodeUtil { - current = current.getParent(); - } while (current != null); - -- if (!(prev instanceof ExecutableNode)) { -+ if (prev.isAdoptable() && !(prev instanceof ExecutableNode)) { - failNotAdopted(node, prev); - } - return true; diff --git a/mx.trufflesqueak/graalvm-24.0.2.patch b/mx.trufflesqueak/graalvm-24.0.2.patch new file mode 100644 index 000000000..80f24b185 --- /dev/null +++ b/mx.trufflesqueak/graalvm-24.0.2.patch @@ -0,0 +1,145 @@ +diff --git a/sdk/mx.sdk/suite.py b/sdk/mx.sdk/suite.py +index a9307397ed9..88fc3a994a9 100644 +--- a/sdk/mx.sdk/suite.py ++++ b/sdk/mx.sdk/suite.py +@@ -158,37 +158,37 @@ suite = { + }, + }, + "LLVM_ORG" : { +- "version" : "16.0.1-4-gad8c248269-bg39f02d0d6a", ++ "version" : "18.1.3-4-gd3f23e9e73-bg3b8289d0a4", + "host" : "https://lafo.ssw.uni-linz.ac.at/pub/llvm-org", + "os_arch" : { + "linux" : { + "amd64" : { + "urls" : ["{host}/llvm-llvmorg-{version}-linux-amd64.tar.gz"], +- "digest" : "sha512:fdef7aff621c533d30b89c15a3152dd2f6791c99317bb25295e4c9fc9e9b76a341174b55510c6a7e2df7e51be6aad473560927ee5e48605afa884a412147eb8c", ++ "digest" : "sha512:6ed66161ae39849d92ba13b16759e5c97a6a499bd61fce0a7516e9813e201a8142e8e98e13baac74150916b72a284850e0fff878ddc97017f63dc6c4f83f6004", + }, + "aarch64" : { + "urls" : ["{host}/llvm-llvmorg-{version}-linux-aarch64.tar.gz"], +- "digest" : "sha512:3c15573d19cb84aab1aea9ac5e1052b24002d9d46109b496cdd2f3d605177c1592e7fed5a7ba0ee7de1c4aed91e0fdc50c53d5018d364c61f5792d7e8f00bb2c", ++ "digest" : "sha512:609ff4ccfb1249413a18656543d149bc3ed04d753ba2873ba82b75d50c4db9cbe47a60a33e63f479b20ec472957533b97bb279d7c9185fcdf6537aae85ac7ad7", + }, + "riscv64": { +- "urls" : ["{host}/llvm-llvmorg-16.0.1-4-gad8c248269-bge4d99266a2-linux-riscv64.tar.gz"], +- "digest" : "sha512:9186a20d4b657f8a4c86c6730d713c6f8f223a8e9ecceb88d8b5cd3c072e8e0159b810663e57076c0ddcdcd57a819b35b42b543e6633f012175b5f78a6d8de92", ++ "urls" : ["{host}/llvm-llvmorg-{version}-linux-riscv64.tar.gz"], ++ "digest" : "sha512:e4ad54bef601c1ff3f75e63816590bf578180285316440ec6ed4a6a454323ac1f62e14630aee64b2d44654dbc7e7a2c1a868ca3a2d15c40a977d3f9b8a94d036", + }, + }, + "darwin" : { + "amd64" : { + "urls" : ["{host}/llvm-llvmorg-{version}-darwin-amd64.tar.gz"], +- "digest" : "sha512:ae96a72ddeecd4bdc972adae01e6894d47d54024f50b996aa9d8df1a683c4a5faab435cd2d94d5fa4c0764f0b2902dbc30171ad254e0da94888ddc0bd018d4f0", ++ "digest" : "sha512:26d827536104e06f4baf964dd8d999266d3a89442c658d4490bef412fd12dfaa3bc06d9f748531b280b121d88e1fd9ed53aba8d217bae7f8a6e60d0f10e842be", + }, + "aarch64" : { + "urls" : ["{host}/llvm-llvmorg-{version}-darwin-aarch64.tar.gz"], +- "digest" : "sha512:9c57f30d5eed4162373ea9f342981843485dec5ebcefcf97f22e70e9af8a58167fc3eb3a383dfc9a00e061f58b8998fc063483b4f4e6ce5a74a0002f10a4e174", ++ "digest" : "sha512:741a2d007b9ce34d8f46e785d528cd116f3937bc2b403f68db405cfc272025d4b382ae234e2c0b3bba414e61abfc7a85aa8dfc6306cd274289bd1f10fb033e41", + } + }, + "windows" : { + "amd64" : { + "urls" : ["{host}/llvm-llvmorg-{version}-windows-amd64.tar.gz"], +- "digest" : "sha512:12e95f2b3ea64a059e8b73c67f5a7da6e6b30a068da65acb73da4e86ab2a376065105c84ecb90a7f7e2c31628642aba07f2b738fe18122524184c7b517e36e04", ++ "digest" : "sha512:7e1e1eae6ea1218486c752a04356a516bc1fbba52b09235f64c8bec39d3287a7157ea5ffd9f09bf6172e1af976e691b373dbae6e4cadc512ce7e4d054d282848", + } + }, + "": { +@@ -200,19 +200,19 @@ suite = { + "license" : "Apache-2.0-LLVM", + }, + "LLVM_ORG_COMPILER_RT_LINUX" : { +- "version" : "16.0.1-4-gad8c248269-bg39f02d0d6a", ++ "version" : "18.1.3-4-gd3f23e9e73-bg3b8289d0a4", + "host" : "https://lafo.ssw.uni-linz.ac.at/pub/llvm-org", + # we really want linux-amd64, also on non-linux and non-amd64 platforms for cross-compilation + "urls" : ["{host}/compiler-rt-llvmorg-{version}-linux-amd64.tar.gz"], +- "digest" : "sha512:1520628266c4ca165fe299bcd7b7db087290f1a645bd41fc07779d771db0ba3308067f6caf9c39d7a76f3051023f481052035d78f598f40862bb91b462819afa", ++ "digest" : "sha512:15334c645908d9195893c3fada3c291a5c2dc93d02de797b117ee801df59bd0087835dc2862d97b2862136961e474cedc9d3f90bb94d54d27af66021372e5172", + "license" : "Apache-2.0-LLVM", + }, + "LLVM_ORG_SRC" : { +- "version" : "16.0.1-4-gad8c248269-bg39f02d0d6a", ++ "version" : "18.1.3-4-gd3f23e9e73-bg3b8289d0a4", + "host" : "https://lafo.ssw.uni-linz.ac.at/pub/llvm-org", + "packedResource" : True, + "urls" : ["{host}/llvm-src-llvmorg-{version}.tar.gz"], +- "digest" : "sha512:1bb2f66cc123bb9f0263cd186a8ab7948939f181001e57a7171466534bc89c0ebb17863e90c487f48083f202745ea3d90275a3fa26d793fd2b9f1b62d7e1eabd", ++ "digest" : "sha512:7eb738373300c6c86acc081b9cd29e82c4f3ef4ebcf7ecd1b37e60346edbf0eb4b8edbc14d440a2f896966ed1f8824f940aca467f22630c81ee1403acefff2bd", + "license" : "Apache-2.0-LLVM", + }, + }, +diff --git a/sdk/src/org.graalvm.launcher.native/src/launcher.cc b/sdk/src/org.graalvm.launcher.native/src/launcher.cc +index 3eeab1c5a7c..6eda994382c 100644 +--- a/sdk/src/org.graalvm.launcher.native/src/launcher.cc ++++ b/sdk/src/org.graalvm.launcher.native/src/launcher.cc +@@ -263,7 +263,7 @@ static void *load_jli_lib(std::string exeDir) { + + /* load the language library (either native library or libjvm) and return a + * pointer to the JNI_CreateJavaVM function */ +-static CreateJVM load_vm_lib(std::string liblangPath) { ++static CreateJVM load_vm_lib(bool jvmMode, std::string liblangPath) { + if (debug) { + std::cout << "Loading library " << liblangPath << std::endl; + } +@@ -277,6 +277,14 @@ static CreateJVM load_vm_lib(std::string liblangPath) { + std::cerr << "Error while loading " << liblangPath << ":" << std::endl << errorString << std::endl; + } + #else ++ if (!jvmMode) { ++ std::string exeDir = exe_directory(); ++ std::stringstream languageLibPath; ++ languageLibPath << exeDir << DIR_SEP_STR << ".." << DIR_SEP_STR << "lib"; ++ if (SetDllDirectory(languageLibPath.str().c_str()) == 0) { ++ std::cerr << "Error adding dll search path: " << languageLibPath.str() << std::endl; ++ } ++ } + HMODULE jvmHandle = LoadLibraryA(liblangPath.c_str()); + if (jvmHandle != NULL) { + return (CreateJVM) GetProcAddress(jvmHandle, "JNI_CreateJavaVM"); +@@ -697,7 +705,7 @@ static int jvm_main_thread(int argc, char *argv[], std::string exeDir, bool jvmM + + /* load VM library - after parsing arguments s.t. NMT + * tracking variable is already set */ +- CreateJVM createVM = load_vm_lib(libPath); ++ CreateJVM createVM = load_vm_lib(jvmMode, libPath); + if (!createVM) { + std::cerr << "Could not load JVM." << std::endl; + return -1; +diff --git a/substratevm/mx.substratevm/suite.py b/substratevm/mx.substratevm/suite.py +index 4534030dd21..9d4d242b0f7 100644 +--- a/substratevm/mx.substratevm/suite.py ++++ b/substratevm/mx.substratevm/suite.py +@@ -175,13 +175,13 @@ suite = { + }, + "LLVM_LLD_STANDALONE": { + "license" : "Apache-2.0-LLVM", +- "version" : "16.0.1-4-gad8c248269-bg7bf7e45f73", ++ "version" : "18.1.3-4-gd3f23e9e73-bg3b8289d0a4", + "host" : "https://lafo.ssw.uni-linz.ac.at/pub/llvm-org", + "os_arch": { + "darwin": { + "aarch64": { +- "urls": ["{host}/llvm-lldonly-llvmorg-{version}-darwin-aarch64.tar.gz"], +- "digest": "sha512:2a8d1853deb238fa4ee14df0ebb8224b7191eb5f955e9c0f51ff2c6993a9de243eb4721e8af3f785a1ce2ba7e908ec7100e4ba70df7cf61688d6d433892b60f8", ++ "urls" : ["{host}/llvm-lldonly-llvmorg-{version}-darwin-aarch64.tar.gz"], ++ "digest" : "sha512:63afa451eab51699bd0ba0643645ca0170f4ee1c901fa2fcc1144566a2354c6c79ae95c218f1326fabc0f666a8949ced4af6172b89950d8f3a0c5a30b2246bbc", + }, + "": { + "optional": True, +diff --git a/truffle/src/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/NodeUtil.java b/truffle/src/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/NodeUtil.java +index e7efa981ffc..ab20d32f2e9 100644 +--- a/truffle/src/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/NodeUtil.java ++++ b/truffle/src/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/NodeUtil.java +@@ -175,7 +175,7 @@ public final class NodeUtil { + current = current.getParent(); + } while (current != null); + +- if (!(prev instanceof ExecutableNode)) { ++ if (prev.isAdoptable() && !(prev instanceof ExecutableNode)) { + failNotAdopted(node, prev); + } + return true; diff --git a/mx.trufflesqueak/suite.py b/mx.trufflesqueak/suite.py index 2f3a70a5f..2f12e22bd 100644 --- a/mx.trufflesqueak/suite.py +++ b/mx.trufflesqueak/suite.py @@ -14,7 +14,7 @@ "mxversion": "7.0.3", "versionConflictResolution": "latest", - "version": "24.0.0", + "version": "24.0.2", "trufflesqueak:dependencyMap": { "cuis_test_image": "CuisTestImage-6.0-5053.zip", "cuis_test_image_tag": "21.3.0", @@ -22,7 +22,7 @@ "test_image_tag": "22.3.0", }, - "release": True, + "release": False, "groupId": "de.hpi.swa.trufflesqueak", "url": "https://github.com/hpi-swa/trufflesqueak", @@ -46,7 +46,7 @@ "suites": [{ "name": "truffle", "subdir": True, - "version": "vm-24.0.0", + "version": "vm-24.0.2", "urls": [{ "url": "https://github.com/oracle/graal", "kind": "git" @@ -120,20 +120,20 @@ }, }, "TRUFFLE-ENTERPRISE": { - "digest": "sha512:718973b01213647ac091376e9fb32d739f09c0f46a20f916505c10899a2f877414018b18e1b42706a49fa9672b0ee289b9b88b2b56ac8d4db727230eeeb75849", + "digest": "sha512:7be8671001f12fbed907092086c85923b67ab13f36ed420634d8d1477a4086649934b2f260915c9d2f7310acbe85b637fe854d5073f0db9a006184faec9b96bc", "maven": { "groupId": "org.graalvm.truffle", "artifactId": "truffle-enterprise", - "version": "24.0.0", + "version": "24.0.2", }, "useModulePath": True, }, "SDK-NATIVEBRIDGE": { - "digest": "sha512:08719b2a6946f8db237fdf35badc7aae6942bc510f883bbc91818f3166f85b0a595656e644e7b1c2ad614f1d0f397a9e06e693ea057695ff1c29ea9b79d1ff75", + "digest": "sha512:8dbcd334eaaa9ddb057a60e90db54302cd94f44b22134fb426d8356cf71b94afc961593dc69ce332935bbb9244b9d4259dedf17abd1ce149e9ab77398cd5d650", "maven": { "groupId": "org.graalvm.sdk", "artifactId": "nativebridge", - "version": "24.0.0", + "version": "24.0.2", }, "useModulePath": True, }, diff --git a/mx.trufflesqueak/utils.sh b/mx.trufflesqueak/utils.sh index e49825b90..92916e6d8 100755 --- a/mx.trufflesqueak/utils.sh +++ b/mx.trufflesqueak/utils.sh @@ -33,6 +33,7 @@ OS_NAME=$(uname -s | tr '[:upper:]' '[:lower:]') [[ "${OS_NAME}" == msys* || "${OS_NAME}" == cygwin* || "${OS_NAME}" == mingw* ]] && OS_NAME="windows" OS_ARCH="amd64" [[ "${OS_NAME}" == "linux" ]] && [[ "$(dpkg --print-architecture)" == "arm64" ]] && OS_ARCH="aarch64" +[[ "${OS_NAME}" == "darwin" ]] && [[ "$(uname -m)" == "arm64" ]] && OS_ARCH="aarch64" JAVA_HOME_SUFFIX="" && [[ "${OS_NAME}" == "darwin" ]] && JAVA_HOME_SUFFIX="/Contents/Home" readonly OS_NAME OS_ARCH JAVA_HOME_SUFFIX @@ -301,7 +302,7 @@ shallow-clone-graalvm-project() { shallow-clone-graal() { shallow-clone-graalvm-project https://github.com/oracle/graal.git "${GRAAL_VERSION}" echo "[graal repo (${GRAAL_VERSION}) cloned successfully]" - $(cd ${BASE_DIRECTORY}/../graal && git apply "${SCRIPT_DIRECTORY}/graalvm-24.0.0.patch") + $(cd ${BASE_DIRECTORY}/../graal && git apply "${SCRIPT_DIRECTORY}/graalvm-24.0.2.patch") echo "[graal repo patched successfully]" } diff --git a/src/de.hpi.swa.trufflesqueak.shared/src/de/hpi/swa/trufflesqueak/shared/SqueakLanguageConfig.java b/src/de.hpi.swa.trufflesqueak.shared/src/de/hpi/swa/trufflesqueak/shared/SqueakLanguageConfig.java index 71d556b80..f08f3e437 100644 --- a/src/de.hpi.swa.trufflesqueak.shared/src/de/hpi/swa/trufflesqueak/shared/SqueakLanguageConfig.java +++ b/src/de.hpi.swa.trufflesqueak.shared/src/de/hpi/swa/trufflesqueak/shared/SqueakLanguageConfig.java @@ -13,11 +13,11 @@ public final class SqueakLanguageConfig { public static final String MIME_TYPE = "application/x-smalltalk"; public static final String NAME = "Squeak/Smalltalk"; public static final String ST_MIME_TYPE = "text/x-smalltalk"; - public static final String VERSION = "24.0.0"; + public static final String VERSION = "24.0.2-dev"; public static final String WEBSITE = "https://github.com/hpi-swa/trufflesqueak"; public static final String[][] SUPPORTED_IMAGES = { - {"TruffleSqueak image (24.0.0) (recommended)", "https://github.com/hpi-swa/trufflesqueak/releases/download/24.0.0/TruffleSqueakImage-24.0.0.zip"}, + {"TruffleSqueak image (24.0.0) (recommended)", "https://github.com/hpi-swa/trufflesqueak/releases/download/24.0.2/TruffleSqueakImage-24.0.0.zip"}, {"Squeak/Smalltalk (6.0-22104)", "https://files.squeak.org/6.0/Squeak6.0-22104-64bit/Squeak6.0-22104-64bit.zip"}, {"TruffleSqueak test image (6.0-22104)", "https://github.com/hpi-swa/trufflesqueak/releases/download/22.3.0/TruffleSqueakTestImage-6.0-22104-64bit.zip"}, {"Cuis-Smalltalk test image (6.0-5053)", "https://github.com/hpi-swa/trufflesqueak/releases/download/21.3.0/CuisTestImage-6.0-5053.zip"}};