From 25a6c4f1bd83cad8049ba4b86aa16b7fad551de5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?I=C3=B1aki=20Amatria=20Barral?= Date: Thu, 22 Jan 2026 14:59:30 +0100 Subject: [PATCH 01/10] Run `npm audit fix` --- package-lock.json | 154 +++++++++++++++++++++++++--------------------- 1 file changed, 84 insertions(+), 70 deletions(-) diff --git a/package-lock.json b/package-lock.json index f0f1cae..95b47a7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -240,7 +240,6 @@ "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.42.0.tgz", "integrity": "sha512-NZR7yyHj2WzK6D5X8gn+/KOxPdzYEXOqVdSaK/biU8QfYUpUuEA0sCWg/XlO05tPVEcJelF/oLrrNY3UjRbOww==", "license": "MIT", - "peer": true, "dependencies": { "@algolia/client-common": "5.42.0", "@algolia/requester-browser-xhr": "5.42.0", @@ -366,7 +365,6 @@ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.5.tgz", "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==", "license": "MIT", - "peer": true, "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.5", @@ -2156,7 +2154,6 @@ } ], "license": "MIT", - "peer": true, "engines": { "node": ">=18" }, @@ -2179,7 +2176,6 @@ } ], "license": "MIT", - "peer": true, "engines": { "node": ">=18" } @@ -2289,7 +2285,6 @@ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", "license": "MIT", - "peer": true, "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -2711,7 +2706,6 @@ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", "license": "MIT", - "peer": true, "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -3417,7 +3411,6 @@ "resolved": "https://registry.npmjs.org/@docusaurus/core/-/core-3.9.2.tgz", "integrity": "sha512-HbjwKeC+pHUFBfLMNzuSjqFE/58+rLVKmOU3lxQrpsxLBOGosYco/Q0GduBb0/jEMRiyEqjNT/01rRdOMWq5pw==", "license": "MIT", - "peer": true, "dependencies": { "@docusaurus/babel": "3.9.2", "@docusaurus/bundler": "3.9.2", @@ -3599,7 +3592,6 @@ "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.9.2.tgz", "integrity": "sha512-C5wZsGuKTY8jEYsqdxhhFOe1ZDjH0uIYJ9T/jebHwkyxqnr4wW0jTkB72OMqNjsoQRcb0JN3PcSeTwFlVgzCZg==", "license": "MIT", - "peer": true, "dependencies": { "@docusaurus/core": "3.9.2", "@docusaurus/logger": "3.9.2", @@ -4323,7 +4315,6 @@ "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-3.1.0.tgz", "integrity": "sha512-QjHtSaoameoalGnKDT3FoIl4+9RwyTmo9ZJGBdLOks/YOiWHoRDI3PUwEzOE7kEmGcV3AFcp9K6dYu9rEuKLAQ==", "license": "MIT", - "peer": true, "dependencies": { "@types/mdx": "^2.0.0" }, @@ -4642,7 +4633,6 @@ "resolved": "https://registry.npmjs.org/@svgr/core/-/core-8.1.0.tgz", "integrity": "sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==", "license": "MIT", - "peer": true, "dependencies": { "@babel/core": "^7.21.3", "@svgr/babel-preset": "8.1.0", @@ -5020,7 +5010,6 @@ "resolved": "https://registry.npmjs.org/@types/react/-/react-19.1.10.tgz", "integrity": "sha512-EhBeSYX0Y6ye8pNebpKrwFJq7BoQ8J5SO6NlvNwwHjSj6adXJViPQrKlsyPw7hLBLvckEMO1yxeGdR82YBBlDg==", "license": "MIT", - "peer": true, "dependencies": { "csstype": "^3.0.2" } @@ -5377,7 +5366,6 @@ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "license": "MIT", - "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -5463,7 +5451,6 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "license": "MIT", - "peer": true, "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", @@ -5509,7 +5496,6 @@ "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.42.0.tgz", "integrity": "sha512-X5+PtWc9EJIPafT/cj8ZG+6IU3cjRRnlHGtqMHK/9gsiupQbAyYlH5y7qt/FtsAhfX5AICHffZy69ZAsVrxWkQ==", "license": "MIT", - "peer": true, "dependencies": { "@algolia/abtesting": "1.8.0", "@algolia/client-abtesting": "5.42.0", @@ -5872,23 +5858,23 @@ } }, "node_modules/body-parser": { - "version": "1.20.3", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", - "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", + "version": "1.20.4", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.4.tgz", + "integrity": "sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==", "license": "MIT", "dependencies": { - "bytes": "3.1.2", + "bytes": "~3.1.2", "content-type": "~1.0.5", "debug": "2.6.9", "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.13.0", - "raw-body": "2.5.2", + "destroy": "~1.2.0", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "on-finished": "~2.4.1", + "qs": "~6.14.0", + "raw-body": "~2.5.3", "type-is": "~1.6.18", - "unpipe": "1.0.0" + "unpipe": "~1.0.0" }, "engines": { "node": ">= 0.8", @@ -5913,12 +5899,41 @@ "ms": "2.0.0" } }, + "node_modules/body-parser/node_modules/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "license": "MIT", + "dependencies": { + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, "node_modules/body-parser/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "license": "MIT" }, + "node_modules/body-parser/node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/bonjour-service": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.3.0.tgz", @@ -5998,7 +6013,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "baseline-browser-mapping": "^2.8.19", "caniuse-lite": "^1.0.30001751", @@ -6970,7 +6984,6 @@ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", "license": "MIT", - "peer": true, "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -8363,21 +8376,6 @@ "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", "license": "MIT" }, - "node_modules/express/node_modules/qs": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", - "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", - "license": "BSD-3-Clause", - "dependencies": { - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/express/node_modules/range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", @@ -8544,7 +8542,6 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "license": "MIT", - "peer": true, "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -10844,9 +10841,9 @@ } }, "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "version": "4.17.23", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz", + "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==", "license": "MIT" }, "node_modules/lodash.debounce": { @@ -13598,7 +13595,6 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "license": "MIT", - "peer": true, "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -14114,7 +14110,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", @@ -15018,7 +15013,6 @@ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", "license": "MIT", - "peer": true, "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -15693,12 +15687,12 @@ } }, "node_modules/qs": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", - "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "version": "6.14.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.1.tgz", + "integrity": "sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==", "license": "BSD-3-Clause", "dependencies": { - "side-channel": "^1.0.6" + "side-channel": "^1.1.0" }, "engines": { "node": ">=0.6" @@ -15758,15 +15752,15 @@ } }, "node_modules/raw-body": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", - "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz", + "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==", "license": "MIT", "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" + "bytes": "~3.1.2", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "unpipe": "~1.0.0" }, "engines": { "node": ">= 0.8" @@ -15781,6 +15775,35 @@ "node": ">= 0.8" } }, + "node_modules/raw-body/node_modules/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "license": "MIT", + "dependencies": { + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/raw-body/node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/rc": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", @@ -15816,7 +15839,6 @@ "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", "license": "MIT", - "peer": true, "dependencies": { "loose-envify": "^1.1.0" }, @@ -15844,7 +15866,6 @@ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", "license": "MIT", - "peer": true, "dependencies": { "loose-envify": "^1.1.0", "scheduler": "^0.23.2" @@ -15907,7 +15928,6 @@ "resolved": "https://registry.npmjs.org/@docusaurus/react-loadable/-/react-loadable-6.0.0.tgz", "integrity": "sha512-YMMxTUQV/QFSnbgrP3tjDzLHRg7vsbMn8e9HAa8o/1iXoiomo48b7sk/kkmWEuWNDPJVlKSJRB6Y2fHqdJk+SQ==", "license": "MIT", - "peer": true, "dependencies": { "@types/react": "*" }, @@ -15936,7 +15956,6 @@ "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.3.4.tgz", "integrity": "sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA==", "license": "MIT", - "peer": true, "dependencies": { "@babel/runtime": "^7.12.13", "history": "^4.9.0", @@ -17806,8 +17825,7 @@ "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "license": "0BSD", - "peer": true + "license": "0BSD" }, "node_modules/type-fest": { "version": "2.19.0", @@ -17870,7 +17888,6 @@ "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", "devOptional": true, "license": "Apache-2.0", - "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -18248,7 +18265,6 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "license": "MIT", - "peer": true, "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -18452,7 +18468,6 @@ "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.101.3.tgz", "integrity": "sha512-7b0dTKR3Ed//AD/6kkx/o7duS8H3f1a4w3BYpIriX4BzIhjkn4teo05cptsxvLesHFKK5KObnadmCHBwGc+51A==", "license": "MIT", - "peer": true, "dependencies": { "@types/eslint-scope": "^3.7.7", "@types/estree": "^1.0.8", @@ -19077,7 +19092,6 @@ "resolved": "https://registry.npmjs.org/zod/-/zod-4.1.12.tgz", "integrity": "sha512-JInaHOamG8pt5+Ey8kGmdcAcg3OL9reK8ltczgHTAwNhMys/6ThXHityHxVV2p3fkw/c+MAvBHFVYHFZDmjMCQ==", "license": "MIT", - "peer": true, "funding": { "url": "https://github.com/sponsors/colinhacks" } From a4c73bfd3a27829f5f6781cb4fcb01f307f7ff6b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?I=C3=B1aki=20Amatria=20Barral?= Date: Thu, 22 Jan 2026 15:09:13 +0100 Subject: [PATCH 02/10] Install `@docusaurus/plugin-client-redirects` --- package-lock.json | 25 +++++++++++++++++++++++++ package.json | 1 + 2 files changed, 26 insertions(+) diff --git a/package-lock.json b/package-lock.json index 95b47a7..687acf2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,6 +9,7 @@ "version": "0.1.0", "dependencies": { "@docusaurus/core": "^3.9.2", + "@docusaurus/plugin-client-redirects": "^3.9.2", "@docusaurus/preset-classic": "^3.9.2", "@iconify/react": "^5.0.2", "@mdx-js/react": "^3.0.0", @@ -3553,6 +3554,30 @@ "react-dom": "*" } }, + "node_modules/@docusaurus/plugin-client-redirects": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-client-redirects/-/plugin-client-redirects-3.9.2.tgz", + "integrity": "sha512-lUgMArI9vyOYMzLRBUILcg9vcPTCyyI2aiuXq/4npcMVqOr6GfmwtmBYWSbNMlIUM0147smm4WhpXD0KFboffw==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.9.2", + "@docusaurus/logger": "3.9.2", + "@docusaurus/utils": "3.9.2", + "@docusaurus/utils-common": "3.9.2", + "@docusaurus/utils-validation": "3.9.2", + "eta": "^2.2.0", + "fs-extra": "^11.1.1", + "lodash": "^4.17.21", + "tslib": "^2.6.0" + }, + "engines": { + "node": ">=20.0" + }, + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + } + }, "node_modules/@docusaurus/plugin-content-blog": { "version": "3.9.2", "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-blog/-/plugin-content-blog-3.9.2.tgz", diff --git a/package.json b/package.json index c001015..22ba39d 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,7 @@ }, "dependencies": { "@docusaurus/core": "^3.9.2", + "@docusaurus/plugin-client-redirects": "^3.9.2", "@docusaurus/preset-classic": "^3.9.2", "@iconify/react": "^5.0.2", "@mdx-js/react": "^3.0.0", From 61b5e923e54712e82d0f110e0e145fc1d47b79e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?I=C3=B1aki=20Amatria=20Barral?= Date: Thu, 22 Jan 2026 15:10:46 +0100 Subject: [PATCH 03/10] Deprecate `PWR010` --- Checks/PWR043/README.md | 2 +- Checks/PWR062/README.md | 2 +- Checks/_category_.json | 3 +++ {Checks => Deprecated}/PWR010/README.md | 11 ++++++++++- {Checks => Deprecated}/PWR010/example.c | 0 Deprecated/_category_.json | 3 +++ Glossary/_category_.json | 3 +++ README.md | 1 - docusaurus.config.ts | 16 +++++++++++++++- 9 files changed, 36 insertions(+), 5 deletions(-) create mode 100644 Checks/_category_.json rename {Checks => Deprecated}/PWR010/README.md (81%) rename {Checks => Deprecated}/PWR010/example.c (100%) create mode 100644 Deprecated/_category_.json create mode 100644 Glossary/_category_.json diff --git a/Checks/PWR043/README.md b/Checks/PWR043/README.md index 5add216..bb2b245 100644 --- a/Checks/PWR043/README.md +++ b/Checks/PWR043/README.md @@ -176,7 +176,7 @@ end do * [PWR043 examples](https://github.com/codee-com/open-catalog/tree/main/Checks/PWR043/) -* [PWR010: Avoid column-major array access in C/C++](../PWR010/README.md) +* [PWR010: Avoid column-major array access in C/C++](../../Deprecated/PWR010/README.md) * [PWR039: Consider loop interchange to improve the locality of reference and enable vectorization](../PWR039/README.md) diff --git a/Checks/PWR062/README.md b/Checks/PWR062/README.md index 1f45201..b3c5c86 100644 --- a/Checks/PWR062/README.md +++ b/Checks/PWR062/README.md @@ -181,7 +181,7 @@ end subroutine matmul * [PWR062 examples](https://github.com/codee-com/open-catalog/tree/main/Checks/PWR062/) -* [PWR010: Avoid column-major array access in C/C++](../PWR010/README.md) +* [PWR010: Avoid column-major array access in C/C++](../../Deprecated/PWR010/README.md) * [PWR039: Consider loop interchange to improve the locality of reference and enable vectorization](../PWR039/README.md) diff --git a/Checks/_category_.json b/Checks/_category_.json new file mode 100644 index 0000000..046edaa --- /dev/null +++ b/Checks/_category_.json @@ -0,0 +1,3 @@ +{ + "position": 2 +} diff --git a/Checks/PWR010/README.md b/Deprecated/PWR010/README.md similarity index 81% rename from Checks/PWR010/README.md rename to Deprecated/PWR010/README.md index c6892da..52feef3 100644 --- a/Checks/PWR010/README.md +++ b/Deprecated/PWR010/README.md @@ -1,5 +1,14 @@ # PWR010: Avoid column-major array access in C/C++ +> [!WARNING] +> This check was deprecated in favor of [PWR039](../../Checks/PWR039/README.md) +> and [PWR040](../../Checks/PWR040/README.md). This is because PWR010 can apply +> to loops with multiple array accesses. When the stride is fixed, applying it +> may break the other accesses, creating a conflicting situation. In contrast, +> [PWR039](../../Checks/PWR039/README.md) and +> [PWR040](../../Checks/PWR040/README.md) only apply when all accesses are +> inefficient, which makes the check safe and actionable. + ### Issue In the C and C++ programming languages, matrices are stored in a @@ -55,7 +64,7 @@ for (int i = 0; i < n; ++i) { ### Related resources -* [PWR010 examples](https://github.com/codee-com/open-catalog/tree/main/Checks/PWR010/) +* [PWR010 examples](https://github.com/codee-com/open-catalog/tree/main/Deprecated/PWR010/) ### References diff --git a/Checks/PWR010/example.c b/Deprecated/PWR010/example.c similarity index 100% rename from Checks/PWR010/example.c rename to Deprecated/PWR010/example.c diff --git a/Deprecated/_category_.json b/Deprecated/_category_.json new file mode 100644 index 0000000..484e255 --- /dev/null +++ b/Deprecated/_category_.json @@ -0,0 +1,3 @@ +{ + "position": 4 +} diff --git a/Glossary/_category_.json b/Glossary/_category_.json new file mode 100644 index 0000000..0c949e0 --- /dev/null +++ b/Glossary/_category_.json @@ -0,0 +1,3 @@ +{ + "position": 3 +} diff --git a/README.md b/README.md index 27ee794..d9bee4a 100644 --- a/README.md +++ b/README.md @@ -40,7 +40,6 @@ designed to demonstrate: | [PWR007](Checks/PWR007/) | Disable the implicit declaration of variables and procedures | correctness, modernization, security | [CWE-628](https://cwe.mitre.org/data/definitions/628.html) | [6.17](https://j3-fortran.org/doc/year/23/23-241.pdf), [6.18](https://j3-fortran.org/doc/year/23/23-241.pdf), [6.19](https://j3-fortran.org/doc/year/23/23-241.pdf), [6.21](https://j3-fortran.org/doc/year/23/23-241.pdf), [6.54](https://j3-fortran.org/doc/year/23/23-241.pdf), [7.2](https://j3-fortran.org/doc/year/23/23-241.pdf) | [DCL07-C](https://wiki.sei.cmu.edu/confluence/display/c/DCL07-C.+Include+the+appropriate+type+information+in+function+declarators), [DCL31-C](https://wiki.sei.cmu.edu/confluence/display/c/DCL31-C.+Declare+identifiers+before+using+them), [EXP37-C](https://wiki.sei.cmu.edu/confluence/display/c/EXP37-C.+Call+functions+with+the+correct+number+and+type+of+arguments) | | | ✓ | | ✓[^1] | | [PWR008](Checks/PWR008/) | Declare the intent for each procedure argument | correctness, modernization, security | [CWE-374](https://cwe.mitre.org/data/definitions/374.html) | [6.32](https://j3-fortran.org/doc/year/23/23-241.pdf), [6.65](https://j3-fortran.org/doc/year/23/23-241.pdf) | [DCL13-C](https://wiki.sei.cmu.edu/confluence/display/c/DCL13-C.+Declare+function+parameters+that+are+pointers+to+values+not+changed+by+the+function+as+const) | | | ✓ | | ✓[^1] | | [PWR009](Checks/PWR009/) | Use OpenMP teams to offload work to GPU | optimization | | | | | ✓ | ✓ | ✓ | | -| [PWR010](Checks/PWR010/) | Avoid column-major array access in C/C++ | optimization | | | | | ✓ | | ✓ | | | [PWR012](Checks/PWR012/) | Pass only required fields from derived type as arguments | modernization, optimization | | | | | ✓ | ✓ | ✓ | | | [PWR013](Checks/PWR013/) | Avoid copying unused variables to or from the GPU | optimization | | | | | ✓ | ✓ | ✓ | | | [PWR014](Checks/PWR014/) | Out-of-dimension-bounds matrix access | correctness, security | [CWE-125](https://cwe.mitre.org/data/definitions/125.html), [CWE-787](https://cwe.mitre.org/data/definitions/787.html) | [6.8](https://j3-fortran.org/doc/year/23/23-241.pdf), [6.9](https://j3-fortran.org/doc/year/23/23-241.pdf), [6.10](https://j3-fortran.org/doc/year/23/23-241.pdf) | [ARR30-C](https://wiki.sei.cmu.edu/confluence/display/c/ARR30-C.+Do+not+form+or+use+out-of-bounds+pointers+or+array+subscripts) | | ✓ | | ✓ | | diff --git a/docusaurus.config.ts b/docusaurus.config.ts index e8fdcd3..b5e76cf 100644 --- a/docusaurus.config.ts +++ b/docusaurus.config.ts @@ -39,6 +39,7 @@ const config: Config = { include: [ 'README.md', 'Checks/**/*.md', + 'Deprecated/**/*.md', 'Glossary/**/*.md', // Standalone pages are stored in `static/pages/**` instead of // `src/pages/**` to prevent conflicts between the `mdx-loader` of @@ -156,7 +157,20 @@ const config: Config = { }, } satisfies Preset.ThemeConfig, - plugins: [require.resolve('docusaurus-lunr-search')], + plugins: [ + require.resolve('docusaurus-lunr-search'), + [ + '@docusaurus/plugin-client-redirects', + { + redirects: [ + { + to: '/Deprecated/PWR010', + from: '/Checks/PWR010', + }, + ], + }, + ], + ], // Executed on client-side (web browser) clientModules: [require.resolve('./src/scripts/custom.js')], From 4befb188b3e54ed7a6c90a4ae76f48997ec5c878 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?I=C3=B1aki=20Amatria=20Barral?= Date: Thu, 22 Jan 2026 15:11:51 +0100 Subject: [PATCH 04/10] Deprecate `PWR033` --- {Checks => Deprecated}/PWR033/README.md | 9 ++++++++- {Checks => Deprecated}/PWR033/example.c | 0 {Checks => Deprecated}/PWR033/example.f90 | 0 README.md | 1 - docusaurus.config.ts | 4 ++++ 5 files changed, 12 insertions(+), 2 deletions(-) rename {Checks => Deprecated}/PWR033/README.md (90%) rename {Checks => Deprecated}/PWR033/example.c (100%) rename {Checks => Deprecated}/PWR033/example.f90 (100%) diff --git a/Checks/PWR033/README.md b/Deprecated/PWR033/README.md similarity index 90% rename from Checks/PWR033/README.md rename to Deprecated/PWR033/README.md index d51779e..50d374e 100644 --- a/Checks/PWR033/README.md +++ b/Deprecated/PWR033/README.md @@ -1,5 +1,12 @@ # PWR033: Move invariant conditional out of the loop to avoid redundant computations +> [!WARNING] +> This check was deprecated in favor of [PWR022](../../Checks/PWR022/README.md). +> This is because PWR033 largely overlaps with +> [PWR022](../../Checks/PWR022/README.md), but +> [PWR022](../../Checks/PWR022/README.md) provides clearer actionable guidance +> and better examples. + ### Issue [Loop-invariant conditional](../../Glossary/Loop-unswitching.md) can be moved out of @@ -103,7 +110,7 @@ end subroutine ### Related resources -* [PWR033 examples](https://github.com/codee-com/open-catalog/tree/main/Checks/PWR033/) +* [PWR033 examples](https://github.com/codee-com/open-catalog/tree/main/Deprecated/PWR033/) ### References diff --git a/Checks/PWR033/example.c b/Deprecated/PWR033/example.c similarity index 100% rename from Checks/PWR033/example.c rename to Deprecated/PWR033/example.c diff --git a/Checks/PWR033/example.f90 b/Deprecated/PWR033/example.f90 similarity index 100% rename from Checks/PWR033/example.f90 rename to Deprecated/PWR033/example.f90 diff --git a/README.md b/README.md index d9bee4a..9f55ec8 100644 --- a/README.md +++ b/README.md @@ -61,7 +61,6 @@ designed to demonstrate: | [PWR030](Checks/PWR030/) | Remove pointer assignment preventing performance optimization for perfectly nested loops | security, optimization | [CWE-468](https://cwe.mitre.org/data/definitions/468.html) | | [EXP08-C](https://wiki.sei.cmu.edu/confluence/display/c/EXP08-C.+Ensure+pointer+arithmetic+is+used+correctly) | | ✓ | ✓ | ✓ | | | [PWR031](Checks/PWR031/) | Replace pow by multiplication, division and/or square root | optimization | | | | | ✓ | ✓ | ✓ | | | [PWR032](Checks/PWR032/) | Avoid calls to mathematical functions with higher precision than required | optimization | | | | | ✓ | | ✓ | | -| [PWR033](Checks/PWR033/) | Move invariant conditional out of the loop to avoid redundant computations | optimization | | | | | ✓ | ✓ | ✓ | | | [PWR034](Checks/PWR034/) | Avoid strided array access to improve performance | optimization | | | | | ✓ | ✓ | ✓ | | | [PWR035](Checks/PWR035/) | Avoid non-consecutive array access to improve performance | optimization | | | | | ✓ | ✓ | ✓ | | | [PWR036](Checks/PWR036/) | Avoid indirect array access to improve performance | optimization | | | | | ✓ | ✓ | ✓ | | diff --git a/docusaurus.config.ts b/docusaurus.config.ts index b5e76cf..e442955 100644 --- a/docusaurus.config.ts +++ b/docusaurus.config.ts @@ -167,6 +167,10 @@ const config: Config = { to: '/Deprecated/PWR010', from: '/Checks/PWR010', }, + { + to: '/Deprecated/PWR033', + from: '/Checks/PWR033', + }, ], }, ], From 59166d71278cec6126d1ea981034ff28552dd302 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?I=C3=B1aki=20Amatria=20Barral?= Date: Thu, 22 Jan 2026 15:12:57 +0100 Subject: [PATCH 05/10] Deprecate `RMK001` --- {Checks => Deprecated}/RMK001/README.md | 9 +++++++++ README.md | 1 - docusaurus.config.ts | 4 ++++ 3 files changed, 13 insertions(+), 1 deletion(-) rename {Checks => Deprecated}/RMK001/README.md (61%) diff --git a/Checks/RMK001/README.md b/Deprecated/RMK001/README.md similarity index 61% rename from Checks/RMK001/README.md rename to Deprecated/RMK001/README.md index f593b80..d34929f 100644 --- a/Checks/RMK001/README.md +++ b/Deprecated/RMK001/README.md @@ -1,5 +1,14 @@ # RMK001: loop nesting that might benefit from hybrid parallelization using multithreading and SIMD +> [!WARNING] +> This check was deprecated in favor of [PWR050](../../Checks/PWR050/README.md), +> [PWR051](../../Checks/PWR051/README.md), +> [PWR052](../../Checks/PWR052/README.md), +> [PWR053](../../Checks/PWR053/README.md), and +> [PWR054](../../Checks/PWR054/README.md). This is because RMK001 combined +> multithreading and vectorization concerns into a single check. The highlighted +> checks split these cases into more focused and actionable rules. + ### Issue Use multi-threading and SIMD hybrid parallelization to maximize the parallel diff --git a/README.md b/README.md index 9f55ec8..4776873 100644 --- a/README.md +++ b/README.md @@ -106,7 +106,6 @@ designed to demonstrate: | [PWD009](Checks/PWD009/) | Incorrect privatization in parallel region | correctness, security | [CWE-821](https://cwe.mitre.org/data/definitions/821.html) | | | | ✓ | ✓ | ✓ | | | [PWD010](Checks/PWD010/) | Incorrect sharing in parallel region | correctness, security | [CWE-366](https://cwe.mitre.org/data/definitions/366.html), [CWE-821](https://cwe.mitre.org/data/definitions/821.html) | [6.61](https://j3-fortran.org/doc/year/23/23-241.pdf) | [CON43-C](https://wiki.sei.cmu.edu/confluence/display/c/CON43-C.+Do+not+allow+data+races+in+multithreaded+code) | | ✓ | ✓ | ✓ | | | [PWD011](Checks/PWD011/) | Missing OpenMP lastprivate clause | correctness, security | [CWE-821](https://cwe.mitre.org/data/definitions/821.html) | | | | ✓ | ✓ | ✓ | | -| [RMK001](Checks/RMK001/) | Loop nesting that might benefit from hybrid parallelization using multithreading and SIMD | optimization | | | | | ✓ | ✓ | ✓ | ✓[^1] | | [RMK002](Checks/RMK002/) | Loop nesting that might benefit from hybrid parallelization using offloading and SIMD | optimization | | | | | ✓ | ✓ | ✓ | | | [RMK003](Checks/RMK003/) | Potentially privatizable temporary variable | optimization | | | | | ✓ | | ✓ | | | [RMK007](Checks/RMK007/) | Vectorization opportunity within a multithreaded region | optimization | | | | | ✓ | ✓ | ✓ | ✓[^1] | diff --git a/docusaurus.config.ts b/docusaurus.config.ts index e442955..96bcd56 100644 --- a/docusaurus.config.ts +++ b/docusaurus.config.ts @@ -171,6 +171,10 @@ const config: Config = { to: '/Deprecated/PWR033', from: '/Checks/PWR033', }, + { + to: '/Deprecated/RMK001', + from: '/Checks/RMK001', + }, ], }, ], From dccdce9d0af4227c699d40dab3fa06df2611fd73 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?I=C3=B1aki=20Amatria=20Barral?= Date: Thu, 22 Jan 2026 15:14:40 +0100 Subject: [PATCH 06/10] Deprecate `RMK002` --- {Checks => Deprecated}/RMK002/README.md | 9 +++++++++ README.md | 1 - docusaurus.config.ts | 4 ++++ 3 files changed, 13 insertions(+), 1 deletion(-) rename {Checks => Deprecated}/RMK002/README.md (70%) diff --git a/Checks/RMK002/README.md b/Deprecated/RMK002/README.md similarity index 70% rename from Checks/RMK002/README.md rename to Deprecated/RMK002/README.md index 74566e9..4e4d685 100644 --- a/Checks/RMK002/README.md +++ b/Deprecated/RMK002/README.md @@ -1,5 +1,14 @@ # RMK002: Loop nesting that might benefit from hybrid parallelization using offloading and SIMD +> [!WARNING] +> This check was deprecated in favor of [PWR053](../../Checks/PWR053/README.md), +> [PWR054](../../Checks/PWR054/README.md), +> [PWR055](../../Checks/PWR055/README.md), +> [PWR056](../../Checks/PWR056/README.md), and +> [PWR057](../../Checks/PWR057/README.md). This is because RMK002 combined +> offloading and vectorization concerns into a single check. The highlighted +> checks split these cases into more focused and actionable rules. + ### Issue Use offloading to the GPU and SIMD hybrid parallelization to maximize the diff --git a/README.md b/README.md index 4776873..0c47ed3 100644 --- a/README.md +++ b/README.md @@ -106,7 +106,6 @@ designed to demonstrate: | [PWD009](Checks/PWD009/) | Incorrect privatization in parallel region | correctness, security | [CWE-821](https://cwe.mitre.org/data/definitions/821.html) | | | | ✓ | ✓ | ✓ | | | [PWD010](Checks/PWD010/) | Incorrect sharing in parallel region | correctness, security | [CWE-366](https://cwe.mitre.org/data/definitions/366.html), [CWE-821](https://cwe.mitre.org/data/definitions/821.html) | [6.61](https://j3-fortran.org/doc/year/23/23-241.pdf) | [CON43-C](https://wiki.sei.cmu.edu/confluence/display/c/CON43-C.+Do+not+allow+data+races+in+multithreaded+code) | | ✓ | ✓ | ✓ | | | [PWD011](Checks/PWD011/) | Missing OpenMP lastprivate clause | correctness, security | [CWE-821](https://cwe.mitre.org/data/definitions/821.html) | | | | ✓ | ✓ | ✓ | | -| [RMK002](Checks/RMK002/) | Loop nesting that might benefit from hybrid parallelization using offloading and SIMD | optimization | | | | | ✓ | ✓ | ✓ | | | [RMK003](Checks/RMK003/) | Potentially privatizable temporary variable | optimization | | | | | ✓ | | ✓ | | | [RMK007](Checks/RMK007/) | Vectorization opportunity within a multithreaded region | optimization | | | | | ✓ | ✓ | ✓ | ✓[^1] | | [RMK008](Checks/RMK008/) | Vectorization opportunity within an offloaded region | optimization | | | | | ✓ | ✓ | ✓ | | diff --git a/docusaurus.config.ts b/docusaurus.config.ts index 96bcd56..f4625ab 100644 --- a/docusaurus.config.ts +++ b/docusaurus.config.ts @@ -175,6 +175,10 @@ const config: Config = { to: '/Deprecated/RMK001', from: '/Checks/RMK001', }, + { + to: '/Deprecated/RMK002', + from: '/Checks/RMK002', + }, ], }, ], From cfd7cdca4461e6e38a5fdddee1b57001f48afc40 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?I=C3=B1aki=20Amatria=20Barral?= Date: Thu, 22 Jan 2026 15:15:22 +0100 Subject: [PATCH 07/10] Deprecate `RMK003` --- {Checks => Deprecated}/RMK003/README.md | 3 +++ README.md | 1 - docusaurus.config.ts | 4 ++++ 3 files changed, 7 insertions(+), 1 deletion(-) rename {Checks => Deprecated}/RMK003/README.md (92%) diff --git a/Checks/RMK003/README.md b/Deprecated/RMK003/README.md similarity index 92% rename from Checks/RMK003/README.md rename to Deprecated/RMK003/README.md index f4e1e66..0bebbc2 100644 --- a/Checks/RMK003/README.md +++ b/Deprecated/RMK003/README.md @@ -1,5 +1,8 @@ # RMK003: potential temporary variable for the loop which might be privatizable, thus enabling the loop parallelization +> [!WARNING] +> This check was deprecated due to the lack of actionable guidance and examples. + ### Issue Loop is a potential parallelization opportunity if it can be confirmed that diff --git a/README.md b/README.md index 0c47ed3..ec6b591 100644 --- a/README.md +++ b/README.md @@ -106,7 +106,6 @@ designed to demonstrate: | [PWD009](Checks/PWD009/) | Incorrect privatization in parallel region | correctness, security | [CWE-821](https://cwe.mitre.org/data/definitions/821.html) | | | | ✓ | ✓ | ✓ | | | [PWD010](Checks/PWD010/) | Incorrect sharing in parallel region | correctness, security | [CWE-366](https://cwe.mitre.org/data/definitions/366.html), [CWE-821](https://cwe.mitre.org/data/definitions/821.html) | [6.61](https://j3-fortran.org/doc/year/23/23-241.pdf) | [CON43-C](https://wiki.sei.cmu.edu/confluence/display/c/CON43-C.+Do+not+allow+data+races+in+multithreaded+code) | | ✓ | ✓ | ✓ | | | [PWD011](Checks/PWD011/) | Missing OpenMP lastprivate clause | correctness, security | [CWE-821](https://cwe.mitre.org/data/definitions/821.html) | | | | ✓ | ✓ | ✓ | | -| [RMK003](Checks/RMK003/) | Potentially privatizable temporary variable | optimization | | | | | ✓ | | ✓ | | | [RMK007](Checks/RMK007/) | Vectorization opportunity within a multithreaded region | optimization | | | | | ✓ | ✓ | ✓ | ✓[^1] | | [RMK008](Checks/RMK008/) | Vectorization opportunity within an offloaded region | optimization | | | | | ✓ | ✓ | ✓ | | | [RMK009](Checks/RMK009/) | Outline loop to increase compiler and tooling code coverage | optimization | | | | | ✓ | | ✓ | | diff --git a/docusaurus.config.ts b/docusaurus.config.ts index f4625ab..8aab2a5 100644 --- a/docusaurus.config.ts +++ b/docusaurus.config.ts @@ -179,6 +179,10 @@ const config: Config = { to: '/Deprecated/RMK002', from: '/Checks/RMK002', }, + { + to: '/Deprecated/RMK003', + from: '/Checks/RMK003', + }, ], }, ], From 953b07c468c937849d4b637ff780be8a9f12c1dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?I=C3=B1aki=20Amatria=20Barral?= Date: Thu, 22 Jan 2026 15:16:11 +0100 Subject: [PATCH 08/10] Deprecate `RMK007` --- {Checks => Deprecated}/RMK007/README.md | 9 +++++++++ README.md | 1 - docusaurus.config.ts | 4 ++++ 3 files changed, 13 insertions(+), 1 deletion(-) rename {Checks => Deprecated}/RMK007/README.md (52%) diff --git a/Checks/RMK007/README.md b/Deprecated/RMK007/README.md similarity index 52% rename from Checks/RMK007/README.md rename to Deprecated/RMK007/README.md index 276e8a7..586df86 100644 --- a/Checks/RMK007/README.md +++ b/Deprecated/RMK007/README.md @@ -1,5 +1,14 @@ # RMK007: Vectorization opportunity within a multithreaded region +> [!WARNING] +> This check was deprecated in favor of [PWR050](../../Checks/PWR050/README.md), +> [PWR051](../../Checks/PWR051/README.md), +> [PWR052](../../Checks/PWR052/README.md), +> [PWR053](../../Checks/PWR053/README.md), and +> [PWR054](../../Checks/PWR054/README.md). This is because RMK007 combined +> multithreading and vectorization concerns into a single check. The highlighted +> checks split these cases into more focused and actionable rules. + ### Issue There is a SIMD vectorization opportunity within a multithreaded region. diff --git a/README.md b/README.md index ec6b591..40b654e 100644 --- a/README.md +++ b/README.md @@ -106,7 +106,6 @@ designed to demonstrate: | [PWD009](Checks/PWD009/) | Incorrect privatization in parallel region | correctness, security | [CWE-821](https://cwe.mitre.org/data/definitions/821.html) | | | | ✓ | ✓ | ✓ | | | [PWD010](Checks/PWD010/) | Incorrect sharing in parallel region | correctness, security | [CWE-366](https://cwe.mitre.org/data/definitions/366.html), [CWE-821](https://cwe.mitre.org/data/definitions/821.html) | [6.61](https://j3-fortran.org/doc/year/23/23-241.pdf) | [CON43-C](https://wiki.sei.cmu.edu/confluence/display/c/CON43-C.+Do+not+allow+data+races+in+multithreaded+code) | | ✓ | ✓ | ✓ | | | [PWD011](Checks/PWD011/) | Missing OpenMP lastprivate clause | correctness, security | [CWE-821](https://cwe.mitre.org/data/definitions/821.html) | | | | ✓ | ✓ | ✓ | | -| [RMK007](Checks/RMK007/) | Vectorization opportunity within a multithreaded region | optimization | | | | | ✓ | ✓ | ✓ | ✓[^1] | | [RMK008](Checks/RMK008/) | Vectorization opportunity within an offloaded region | optimization | | | | | ✓ | ✓ | ✓ | | | [RMK009](Checks/RMK009/) | Outline loop to increase compiler and tooling code coverage | optimization | | | | | ✓ | | ✓ | | | [RMK010](Checks/RMK010/) | Strided memory accesses in the loop body may prevent vectorization | optimization | | | | | ✓ | ✓ | ✓ | | diff --git a/docusaurus.config.ts b/docusaurus.config.ts index 8aab2a5..fbc3623 100644 --- a/docusaurus.config.ts +++ b/docusaurus.config.ts @@ -183,6 +183,10 @@ const config: Config = { to: '/Deprecated/RMK003', from: '/Checks/RMK003', }, + { + to: '/Deprecated/RMK007', + from: '/Checks/RMK007', + }, ], }, ], From 37e988d12a9712471b550dc791c351ef16c0a8f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?I=C3=B1aki=20Amatria=20Barral?= Date: Thu, 22 Jan 2026 15:17:03 +0100 Subject: [PATCH 09/10] Deprecate `RMK008` --- {Checks => Deprecated}/RMK008/README.md | 9 +++++++++ README.md | 1 - docusaurus.config.ts | 4 ++++ 3 files changed, 13 insertions(+), 1 deletion(-) rename {Checks => Deprecated}/RMK008/README.md (53%) diff --git a/Checks/RMK008/README.md b/Deprecated/RMK008/README.md similarity index 53% rename from Checks/RMK008/README.md rename to Deprecated/RMK008/README.md index 906a47d..0db6eda 100644 --- a/Checks/RMK008/README.md +++ b/Deprecated/RMK008/README.md @@ -1,5 +1,14 @@ # RMK008: Vectorization opportunity within an offloaded region +> [!WARNING] +> This check was deprecated in favor of [PWR053](../../Checks/PWR053/README.md), +> [PWR054](../../Checks/PWR054/README.md), +> [PWR055](../../Checks/PWR055/README.md), +> [PWR056](../../Checks/PWR056/README.md), and +> [PWR057](../../Checks/PWR057/README.md). This is because RMK008 combined +> offloading and vectorization concerns into a single check. The highlighted +> checks split these cases into more focused and actionable rules. + ### Issue There is a SIMD vectorization opportunity within an offloaded region. diff --git a/README.md b/README.md index 40b654e..f0a2739 100644 --- a/README.md +++ b/README.md @@ -106,7 +106,6 @@ designed to demonstrate: | [PWD009](Checks/PWD009/) | Incorrect privatization in parallel region | correctness, security | [CWE-821](https://cwe.mitre.org/data/definitions/821.html) | | | | ✓ | ✓ | ✓ | | | [PWD010](Checks/PWD010/) | Incorrect sharing in parallel region | correctness, security | [CWE-366](https://cwe.mitre.org/data/definitions/366.html), [CWE-821](https://cwe.mitre.org/data/definitions/821.html) | [6.61](https://j3-fortran.org/doc/year/23/23-241.pdf) | [CON43-C](https://wiki.sei.cmu.edu/confluence/display/c/CON43-C.+Do+not+allow+data+races+in+multithreaded+code) | | ✓ | ✓ | ✓ | | | [PWD011](Checks/PWD011/) | Missing OpenMP lastprivate clause | correctness, security | [CWE-821](https://cwe.mitre.org/data/definitions/821.html) | | | | ✓ | ✓ | ✓ | | -| [RMK008](Checks/RMK008/) | Vectorization opportunity within an offloaded region | optimization | | | | | ✓ | ✓ | ✓ | | | [RMK009](Checks/RMK009/) | Outline loop to increase compiler and tooling code coverage | optimization | | | | | ✓ | | ✓ | | | [RMK010](Checks/RMK010/) | Strided memory accesses in the loop body may prevent vectorization | optimization | | | | | ✓ | ✓ | ✓ | | | [RMK012](Checks/RMK012/) | Conditional execution in the loop body may prevent vectorization | optimization | | | | | ✓ | ✓ | ✓ | | diff --git a/docusaurus.config.ts b/docusaurus.config.ts index fbc3623..f08f890 100644 --- a/docusaurus.config.ts +++ b/docusaurus.config.ts @@ -187,6 +187,10 @@ const config: Config = { to: '/Deprecated/RMK007', from: '/Checks/RMK007', }, + { + to: '/Deprecated/RMK008', + from: '/Checks/RMK008', + }, ], }, ], From 113ae4980870fd16f2881352bfcdae41ac1285b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?I=C3=B1aki=20Amatria=20Barral?= Date: Thu, 22 Jan 2026 15:17:37 +0100 Subject: [PATCH 10/10] Deprecate `RMK009` --- {Checks => Deprecated}/RMK009/README.md | 3 +++ README.md | 1 - docusaurus.config.ts | 4 ++++ 3 files changed, 7 insertions(+), 1 deletion(-) rename {Checks => Deprecated}/RMK009/README.md (58%) diff --git a/Checks/RMK009/README.md b/Deprecated/RMK009/README.md similarity index 58% rename from Checks/RMK009/README.md rename to Deprecated/RMK009/README.md index 4fc5372..cf64ead 100644 --- a/Checks/RMK009/README.md +++ b/Deprecated/RMK009/README.md @@ -1,3 +1,6 @@ # RMK009: Outline loop to increase compiler and tooling code coverage +> [!WARNING] +> This check was deprecated due to the lack of actionable guidance and examples. + We are working on this remark and it will be available soon. diff --git a/README.md b/README.md index f0a2739..3f90771 100644 --- a/README.md +++ b/README.md @@ -106,7 +106,6 @@ designed to demonstrate: | [PWD009](Checks/PWD009/) | Incorrect privatization in parallel region | correctness, security | [CWE-821](https://cwe.mitre.org/data/definitions/821.html) | | | | ✓ | ✓ | ✓ | | | [PWD010](Checks/PWD010/) | Incorrect sharing in parallel region | correctness, security | [CWE-366](https://cwe.mitre.org/data/definitions/366.html), [CWE-821](https://cwe.mitre.org/data/definitions/821.html) | [6.61](https://j3-fortran.org/doc/year/23/23-241.pdf) | [CON43-C](https://wiki.sei.cmu.edu/confluence/display/c/CON43-C.+Do+not+allow+data+races+in+multithreaded+code) | | ✓ | ✓ | ✓ | | | [PWD011](Checks/PWD011/) | Missing OpenMP lastprivate clause | correctness, security | [CWE-821](https://cwe.mitre.org/data/definitions/821.html) | | | | ✓ | ✓ | ✓ | | -| [RMK009](Checks/RMK009/) | Outline loop to increase compiler and tooling code coverage | optimization | | | | | ✓ | | ✓ | | | [RMK010](Checks/RMK010/) | Strided memory accesses in the loop body may prevent vectorization | optimization | | | | | ✓ | ✓ | ✓ | | | [RMK012](Checks/RMK012/) | Conditional execution in the loop body may prevent vectorization | optimization | | | | | ✓ | ✓ | ✓ | | | [RMK013](Checks/RMK013/) | Low trip count unknown at compile time may prevent vectorization of the loop | optimization | | | | | ✓ | ✓ | ✓ | | diff --git a/docusaurus.config.ts b/docusaurus.config.ts index f08f890..1d9f430 100644 --- a/docusaurus.config.ts +++ b/docusaurus.config.ts @@ -191,6 +191,10 @@ const config: Config = { to: '/Deprecated/RMK008', from: '/Checks/RMK008', }, + { + to: '/Deprecated/RMK009', + from: '/Checks/RMK009', + }, ], }, ],