From 91b3c4e4a4b93a8603b343d681086d9d9fabf65a Mon Sep 17 00:00:00 2001 From: Hyeseong Kim Date: Sun, 23 Mar 2025 00:42:13 +0900 Subject: [PATCH 1/5] Drop Node.js v18 (EoL) support --- .nvmrc | 2 +- CONTRIBUTING.md | 2 +- package-lock.json | 2 +- package.json | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.nvmrc b/.nvmrc index 3c032078a4..209e3ef4b6 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -18 +20 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 90d8a60953..f26e2227c3 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -14,7 +14,7 @@ Happy hacking! > Most of our contributors are working on Apple machines, so all our instructions are currently macOS / Linux centric. Contributions for Windows development welcome! -- [NodeJS v18](https://nodejs.org/) +- [Node.js](https://nodejs.org/) v20.x - C compiler toolchain (usually installed with `xcode` on Mac) - Python <= 3.11 (required to build ninja) - Rust toolchain (required to build rewatch; follow the instructions at https://www.rust-lang.org/tools/install) diff --git a/package-lock.json b/package-lock.json index 9878a7deff..f0cdfd9de4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21,7 +21,7 @@ "nyc": "15.0.0" }, "engines": { - "node": ">=18" + "node": ">=20" } }, "node_modules/@babel/code-frame": { diff --git a/package.json b/package.json index 479a16879e..b70b13c098 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,7 @@ "Woonki Moon (https://github.com/mununki)" ], "engines": { - "node": ">=18" + "node": ">=20" }, "bin": { "bsc": "cli/bsc", @@ -78,5 +78,5 @@ "mocha": "10.8.2", "nyc": "15.0.0" }, - "packageManager": "npm@10.8.1+sha512.0e9d42e92bd2318408ed81eaff2da5f78baf23ee7d12a6eed44a6e2901d0f29d7ab715d1b918ade601f72e769a824d9a5c322383f22bbbda5dd396e79de2a077" + "packageManager": "npm@10.9.2+sha512.8ab88f10f224a0c614cb717a7f7c30499014f77134120e9c1f0211ea3cf3397592cbe483feb38e0c4b3be1c54e347292c76a1b5edb94a3289d5448484ab8ac81" } From 4837a6156e35e37c518cdd46583035e40b5bf8ee Mon Sep 17 00:00:00 2001 From: Hyeseong Kim Date: Sun, 23 Mar 2025 00:46:19 +0900 Subject: [PATCH 2/5] pin NPM to v10.8.2 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index b70b13c098..4dc8596aa6 100644 --- a/package.json +++ b/package.json @@ -78,5 +78,5 @@ "mocha": "10.8.2", "nyc": "15.0.0" }, - "packageManager": "npm@10.9.2+sha512.8ab88f10f224a0c614cb717a7f7c30499014f77134120e9c1f0211ea3cf3397592cbe483feb38e0c4b3be1c54e347292c76a1b5edb94a3289d5448484ab8ac81" + "packageManager": "npm@10.8.2+sha512.c7f0088c520a46596b85c6f8f1da943400199748a0f7ea8cb8df75469668dc26f6fb3ba26df87e2884a5ebe91557292d0f3db7d0929cdb4f14910c3032ac81fb" } From 1e747f688abb88e219fa97149fc9e42d83b43985 Mon Sep 17 00:00:00 2001 From: Hyeseong Kim Date: Sun, 23 Mar 2025 17:25:21 +0900 Subject: [PATCH 3/5] fix runtime requirements in tests --- tests/docstring_tests/DocTest.res | 13 ++++++++----- tests/docstring_tests/DocTest.res.mjs | 19 +++++++++++++------ 2 files changed, 21 insertions(+), 11 deletions(-) diff --git a/tests/docstring_tests/DocTest.res b/tests/docstring_tests/DocTest.res index 1d7b78dc0a..bcb0bcba5f 100644 --- a/tests/docstring_tests/DocTest.res +++ b/tests/docstring_tests/DocTest.res @@ -21,11 +21,14 @@ let nodeVersion = let ignoreRuntimeTests = [ ( - // Ignore some tests not supported by node v18 - 18, + // Ignore some tests require Node.js v20+ + 20, + ["Stdlib.Array.toReversed", "Stdlib.Array.toSorted"], + ), + ( + // Ignore some tests require Node.js v22+ + 22, [ - "Stdlib.Array.toReversed", - "Stdlib.Array.toSorted", "Stdlib.Promise.withResolvers", "Stdlib.Set.union", "Stdlib.Set.isSupersetOf", @@ -202,7 +205,7 @@ let main = async () => { let codeExamples = examples->Array.filterMap(example => { let ignoreExample = ignoreRuntimeTests->Array.some( - ((version, tests)) => nodeVersion === version && tests->Array.includes(example.id), + ((version, tests)) => nodeVersion < version && tests->Array.includes(example.id), ) if ignoreExample { diff --git a/tests/docstring_tests/DocTest.res.mjs b/tests/docstring_tests/DocTest.res.mjs index c2276b1d23..8ce01923db 100644 --- a/tests/docstring_tests/DocTest.res.mjs +++ b/tests/docstring_tests/DocTest.res.mjs @@ -23,11 +23,17 @@ import * as RescriptTools_Docgen from "rescript/lib/es6/RescriptTools_Docgen.js" let nodeVersion = Stdlib_Option.getExn(Stdlib_Int.fromString(Stdlib_Option.getExn(process.version.replace("v", "").split(".")[0], "Failed to find major version of Node"), undefined), "Failed to convert node version to Int"); -let ignoreRuntimeTests = [[ - 18, +let ignoreRuntimeTests = [ + [ + 20, [ "Stdlib.Array.toReversed", - "Stdlib.Array.toSorted", + "Stdlib.Array.toSorted" + ] + ], + [ + 22, + [ "Stdlib.Promise.withResolvers", "Stdlib.Set.union", "Stdlib.Set.isSupersetOf", @@ -37,7 +43,8 @@ let ignoreRuntimeTests = [[ "Stdlib.Set.symmetricDifference", "Stdlib.Set.difference" ] - ]]; + ] +]; function getOutput(buffer) { return buffer.map(e => e.toString()).join(""); @@ -60,7 +67,7 @@ async function extractDocFromFile(file) { RE_EXN_ID: "Assert_failure", _1: [ "DocTest.res", - 58, + 61, 9 ], Error: new Error() @@ -237,7 +244,7 @@ async function main() { examples.sort((a, b) => Primitive_string.compare(a.name, b.name)); let codeExamples = Stdlib_Array.filterMap(examples, example => { let ignoreExample = ignoreRuntimeTests.some(param => { - if (nodeVersion === param[0]) { + if (nodeVersion < param[0]) { return param[1].includes(example.id); } else { return false; From 0a8c410938cdd15fb5785433cfe5ad864b5d7e3b Mon Sep 17 00:00:00 2001 From: Hyeseong Kim Date: Sun, 23 Mar 2025 18:58:11 +0900 Subject: [PATCH 4/5] more specific range --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index f0cdfd9de4..0c685355bb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21,7 +21,7 @@ "nyc": "15.0.0" }, "engines": { - "node": ">=20" + "node": ">=20.11.0" } }, "node_modules/@babel/code-frame": { diff --git a/package.json b/package.json index 4dc8596aa6..41327b7b37 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,7 @@ "Woonki Moon (https://github.com/mununki)" ], "engines": { - "node": ">=20" + "node": ">=20.11.0" }, "bin": { "bsc": "cli/bsc", From 48ca78db2f5ba32da75d8f234dd7573a5b2bea51 Mon Sep 17 00:00:00 2001 From: Hyeseong Kim Date: Sun, 23 Mar 2025 19:13:46 +0900 Subject: [PATCH 5/5] add changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index eb08220768..af03252955 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -26,6 +26,7 @@ - Replace ~date with ~day in Date.make\*. https://github.com/rescript-lang/rescript/pull/7324 - Remove `-bs-jsx-mode`. https://github.com/rescript-lang/rescript/pull/7327 +- Drop Node.js version <20 support, as it is reaching End-of-Life. https://github.com/rescript-lang/rescript-compiler/pull/7354 #### :house: Internal