From 66c618cb964f47fe67b98737f1f8033444fdd0ac Mon Sep 17 00:00:00 2001 From: Rodolfo Wottrich Date: Mon, 20 Jul 2026 10:07:42 +0100 Subject: [PATCH 01/10] Switch markdown-link-check to maintained fork The old one is deprecated, the newer one is a fork. --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a784ef39..93dd889a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -29,7 +29,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4.1.7 - - uses: gaurav-nelson/github-action-markdown-link-check@v1 + - uses: tcort/github-action-markdown-link-check@v1 with: config-file: '.github/workflows/markdown-link-check.json' From 963c174c42b70ff857b904be115476b3cf9540e4 Mon Sep 17 00:00:00 2001 From: Rodolfo Wottrich Date: Mon, 20 Jul 2026 14:09:45 +0100 Subject: [PATCH 02/10] Restore original link check workflow Recommended fork is broken, passing links that are 404 for users but not for bots that can follow the redirects. --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 93dd889a..a784ef39 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -29,7 +29,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4.1.7 - - uses: tcort/github-action-markdown-link-check@v1 + - uses: gaurav-nelson/github-action-markdown-link-check@v1 with: config-file: '.github/workflows/markdown-link-check.json' From dda5504fd07581c87497d4a5800cdc27d3710573 Mon Sep 17 00:00:00 2001 From: Rodolfo Wottrich Date: Mon, 20 Jul 2026 14:20:20 +0100 Subject: [PATCH 03/10] Fix broken links, making markdown-link-check green Some links were moved, so we fix the URLs. Links to https://developer.arm.com/ are weird, 403ing to the bot but passing if we change the user agent. --- .github/workflows/markdown-link-check.json | 10 ++++++++++ CONTRIBUTING.md | 2 +- README.md | 2 +- main/acle.md | 12 ++++++------ main/design_documents/__ARM_FEATURE_MOPS.md | 2 +- 5 files changed, 19 insertions(+), 9 deletions(-) diff --git a/.github/workflows/markdown-link-check.json b/.github/workflows/markdown-link-check.json index f28711c4..a0a21ef5 100644 --- a/.github/workflows/markdown-link-check.json +++ b/.github/workflows/markdown-link-check.json @@ -3,5 +3,15 @@ { "pattern": "^https://developer.arm.com/architectures/instruction-sets/intrinsics/" } + ], + "httpHeaders": [ + { + "urls": [ + "https://developer.arm.com/" + ], + "headers": { + "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 Chrome/126.0.0.0 Safari/537.36" + } + } ] } diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index d42f1a1f..bd641d4e 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -95,7 +95,7 @@ will retain the copyright. # All contributors This project follows the [allcontributors -guidelines](https://allcontributors.org/docs/en/overview). We assume +guidelines](https://allcontributors.org/en/reference/). We assume that contributors are happy to be added to the [list of contributors in the main README file](README.md#contributors-). Please let us know explicitly if that is not the case in the PR or in the issue you have diff --git a/README.md b/README.md index 2029b04e..7e580506 100644 --- a/README.md +++ b/README.md @@ -80,7 +80,7 @@ before it was released as an open source project. ## Contributors ✨ -Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)): +Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/emoji-key/)): diff --git a/main/acle.md b/main/acle.md index 470abd48..bbf9cfc2 100644 --- a/main/acle.md +++ b/main/acle.md @@ -536,23 +536,23 @@ This document refers to the following documents. * ARMARMv81 Arm, Armv8.1 Extension, [The ARMv8-A architecture and its ongoing - development](http://community.arm.com/groups/processors/blog/2014/12/02/the-armv8-a-architecture-and-its-ongoing-development) + development](https://developer.arm.com/community/arm-community-blogs/b/architectures-and-processors-blog/posts/the-armv8-a-architecture-and-its-ongoing-development) * ARMARMv82 Arm, Armv8.2 Extension, [Armv8-A architecture - evolution](https://community.arm.com/groups/processors/blog/2016/01/05/armv8-a-architecture-evolution) + evolution](https://developer.arm.com/community/arm-community-blogs/b/architectures-and-processors-blog/posts/armv8-a-architecture-evolution) * ARMARMv83 Arm, Armv8.3 Extension, [Armv8-A architecture: 2016 - additions](https://community.arm.com/processors/b/blog/posts/armv8-a-architecture-2016-additions) + additions](https://developer.arm.com/community/arm-community-blogs/b/architectures-and-processors-blog/posts/armv8-a-architecture-2016-additions) * ARMARMv84 Arm, Armv8.4 Extension, [Introducing 2017’s extensions to the Arm - Architecture](https://community.arm.com/processors/b/blog/posts/introducing-2017s-extensions-to-the-arm-architecture) + Architecture](https://developer.arm.com/community/arm-community-blogs/b/architectures-and-processors-blog/posts/introducing-2017s-extensions-to-the-arm-architecture) * ARMARMv85 Arm, Armv8.5 Extension, [Arm A-Profile Architecture Developments 2018: - Armv8.5-A](https://community.arm.com/developer/ip-products/processors/b/processors-ip-blog/posts/arm-a-profile-architecture-2018-developments-armv85a) + Armv8.5-A](https://developer.arm.com/community/arm-community-blogs/b/architectures-and-processors-blog/posts/arm-a-profile-architecture-2018-developments-armv85a) * ARMv7M Arm, Arm Architecture Reference Manual (7-M), Arm DDI 0403C @@ -562,7 +562,7 @@ This document refers to the following documents. * Bfloat16 Arm, [BFloat16 processing for Neural Networks on - Armv8-A](https://community.arm.com/developer/ip-products/processors/b/ml-ip-blog/posts/bfloat16-processing-for-neural-networks-on-armv8_2d00_a) + Armv8-A](https://developer.arm.com/community/arm-community-blogs/b/ai-blog/posts/bfloat16-processing-for-neural-networks-on-armv8_2d00_a) * C11 ISO, Standard C (based on draft N1570), ISO/IEC 9899:2011 diff --git a/main/design_documents/__ARM_FEATURE_MOPS.md b/main/design_documents/__ARM_FEATURE_MOPS.md index e4f8adb6..eec6c8a8 100644 --- a/main/design_documents/__ARM_FEATURE_MOPS.md +++ b/main/design_documents/__ARM_FEATURE_MOPS.md @@ -1,6 +1,6 @@ # Design Document for `__ARM_FEATURE_MOPS` -Following the announcement of the [2021 Architecture Extensions](https://community.arm.com/developer/ip-products/processors/b/processors-ip-blog/posts/arm-a-profile-architecture-developments-2021), +Following the announcement of the [2021 Architecture Extensions](https://developer.arm.com/community/arm-community-blogs/b/architectures-and-processors-blog/posts/arm-a-profile-architecture-developments-2021), we are extending the ACLE to add support for the new instructions that standardise the memcpy family of operations, which were introduced in Armv8.8-A and Armv9.3-A. From b0f551e7737e69844cd1616ac35ddbe74a9e9c8f Mon Sep 17 00:00:00 2001 From: Rodolfo Wottrich Date: Mon, 20 Jul 2026 14:26:43 +0100 Subject: [PATCH 04/10] Use correct user agent --- .github/workflows/markdown-link-check.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/markdown-link-check.json b/.github/workflows/markdown-link-check.json index a0a21ef5..19cf2757 100644 --- a/.github/workflows/markdown-link-check.json +++ b/.github/workflows/markdown-link-check.json @@ -10,7 +10,7 @@ "https://developer.arm.com/" ], "headers": { - "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 Chrome/126.0.0.0 Safari/537.36" + "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:152.0) Gecko/20100101 Firefox/152.0" } } ] From 7ebc9a1e460f674da61d31f89ce1fd5180b5fbfa Mon Sep 17 00:00:00 2001 From: Rodolfo Wottrich Date: Mon, 20 Jul 2026 14:30:12 +0100 Subject: [PATCH 05/10] Fix links further --- .github/workflows/markdown-link-check.json | 2 +- README.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/markdown-link-check.json b/.github/workflows/markdown-link-check.json index 19cf2757..9a2b13d8 100644 --- a/.github/workflows/markdown-link-check.json +++ b/.github/workflows/markdown-link-check.json @@ -7,7 +7,7 @@ "httpHeaders": [ { "urls": [ - "https://developer.arm.com/" + "https://developer.arm.com" ], "headers": { "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:152.0) Gecko/20100101 Firefox/152.0" diff --git a/README.md b/README.md index 7e580506..8208402b 100644 --- a/README.md +++ b/README.md @@ -80,7 +80,7 @@ before it was released as an open source project. ## Contributors ✨ -Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/emoji-key/)): +Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/en/reference/emoji-key/)): From eaba7fbe492fdcf05c8a98eaef85b5a7b52c2cd9 Mon Sep 17 00:00:00 2001 From: Rodolfo Wottrich Date: Mon, 20 Jul 2026 14:41:52 +0100 Subject: [PATCH 06/10] Fix developer.arm.com results developer.arm.com fetches result in 403 in GitHub Actions. Here we do a wrapper to ignore 403s that come from that domain only. --- .github/scripts/check_links.py | 56 ++++++++++++++++++++++ .github/workflows/ci.yml | 11 +++-- .github/workflows/markdown-link-check.json | 10 ---- 3 files changed, 63 insertions(+), 14 deletions(-) create mode 100644 .github/scripts/check_links.py diff --git a/.github/scripts/check_links.py b/.github/scripts/check_links.py new file mode 100644 index 00000000..c34535f9 --- /dev/null +++ b/.github/scripts/check_links.py @@ -0,0 +1,56 @@ +#!/usr/bin/env python3 + +# SPDX-FileCopyrightText: Copyright 2026 Arm Limited and/or its affiliates +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import json +import subprocess +import sys +from urllib.parse import urlparse + +cmd = ["markdown-link-check", "-j", *sys.argv[1:]] + +proc = subprocess.run(cmd, capture_output=True, text=True) + +# If the checker itself failed unexpectedly, propagate that. +if proc.returncode not in (0, 1): + print(proc.stdout, end="") + print(proc.stderr, end="", file=sys.stderr) + sys.exit(proc.returncode) + +results = json.loads(proc.stdout) + +failed = False + +for result in results: + url = result["link"] + status = result["status"] + status_code = result.get("statusCode") + + host = urlparse(url).netloc + + if ( + host == "developer.arm.com" + and status == "dead" + and status_code == 403 + ): + print(f"IGNORING developer.arm.com 403: {url}") + continue + + if status == "dead": + failed = True + print(f"BROKEN ({status_code}): {url}") + +sys.exit(1 if failed else 0) \ No newline at end of file diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a784ef39..0a5ea487 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -28,10 +28,13 @@ jobs: markdown-link-check: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4.1.7 - - uses: gaurav-nelson/github-action-markdown-link-check@v1 - with: - config-file: '.github/workflows/markdown-link-check.json' + - name: Install markdown-link-check + run: npm install -g markdown-link-check + + - name: Check links + run: | + find . -name '*.md' -print0 | \ + xargs -0 python3 .github/scripts/check_links.py draftversion-check: runs-on: ubuntu-latest diff --git a/.github/workflows/markdown-link-check.json b/.github/workflows/markdown-link-check.json index 9a2b13d8..f28711c4 100644 --- a/.github/workflows/markdown-link-check.json +++ b/.github/workflows/markdown-link-check.json @@ -3,15 +3,5 @@ { "pattern": "^https://developer.arm.com/architectures/instruction-sets/intrinsics/" } - ], - "httpHeaders": [ - { - "urls": [ - "https://developer.arm.com" - ], - "headers": { - "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:152.0) Gecko/20100101 Firefox/152.0" - } - } ] } From 9762ba4696bf976772d2c749a7916d59ba9cd357 Mon Sep 17 00:00:00 2001 From: Rodolfo Wottrich Date: Mon, 20 Jul 2026 14:49:50 +0100 Subject: [PATCH 07/10] Fix link checking --- .github/scripts/check_links.py | 8 +++++++- .github/workflows/ci.yml | 4 ++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/.github/scripts/check_links.py b/.github/scripts/check_links.py index c34535f9..629aa576 100644 --- a/.github/scripts/check_links.py +++ b/.github/scripts/check_links.py @@ -20,7 +20,13 @@ import sys from urllib.parse import urlparse -cmd = ["markdown-link-check", "-j", *sys.argv[1:]] +cmd = [ + "markdown-link-check", + "-j", + "--config-file", + ".github/workflows/markdown-link-check.json", + *sys.argv[1:] +] proc = subprocess.run(cmd, capture_output=True, text=True) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0a5ea487..5f0b9b12 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -28,13 +28,13 @@ jobs: markdown-link-check: runs-on: ubuntu-latest steps: + - uses: actions/checkout@v4.1.7 - name: Install markdown-link-check run: npm install -g markdown-link-check - - name: Check links run: | find . -name '*.md' -print0 | \ - xargs -0 python3 .github/scripts/check_links.py + xargs -0 -n 1 python3 .github/scripts/check_links.py draftversion-check: runs-on: ubuntu-latest From 2a1982d168c191eaec4fdac7eb6d239ebba9476c Mon Sep 17 00:00:00 2001 From: Rodolfo Wottrich Date: Mon, 20 Jul 2026 14:54:07 +0100 Subject: [PATCH 08/10] Fix link checking 2 --- .github/scripts/check_links.py | 135 +++++++++++++++++++++++++-------- 1 file changed, 103 insertions(+), 32 deletions(-) diff --git a/.github/scripts/check_links.py b/.github/scripts/check_links.py index 629aa576..ad35fdf2 100644 --- a/.github/scripts/check_links.py +++ b/.github/scripts/check_links.py @@ -15,48 +15,119 @@ # See the License for the specific language governing permissions and # limitations under the License. -import json import subprocess import sys +import tempfile +import xml.etree.ElementTree as ET +from pathlib import Path from urllib.parse import urlparse -cmd = [ - "markdown-link-check", - "-j", - "--config-file", - ".github/workflows/markdown-link-check.json", - *sys.argv[1:] -] -proc = subprocess.run(cmd, capture_output=True, text=True) +CONFIG_FILE = Path(".github/workflows/markdown-link-check.json") -# If the checker itself failed unexpectedly, propagate that. -if proc.returncode not in (0, 1): - print(proc.stdout, end="") - print(proc.stderr, end="", file=sys.stderr) - sys.exit(proc.returncode) -results = json.loads(proc.stdout) +def testcase_properties(testcase: ET.Element) -> dict[str, str]: + properties: dict[str, str] = {} -failed = False + properties_element = testcase.find("properties") + if properties_element is None: + return properties -for result in results: - url = result["link"] - status = result["status"] - status_code = result.get("statusCode") + for prop in properties_element.findall("property"): + name = prop.get("name") + value = prop.get("value") - host = urlparse(url).netloc + if name is not None and value is not None: + properties[name] = value - if ( - host == "developer.arm.com" - and status == "dead" - and status_code == 403 - ): - print(f"IGNORING developer.arm.com 403: {url}") - continue + return properties - if status == "dead": - failed = True - print(f"BROKEN ({status_code}): {url}") -sys.exit(1 if failed else 0) \ No newline at end of file +def main() -> int: + if len(sys.argv) != 2: + print( + f"Usage: {Path(sys.argv[0]).name} ", + file=sys.stderr, + ) + return 2 + + markdown_file = Path(sys.argv[1]) + + with tempfile.NamedTemporaryFile( + suffix=".xml", + delete=False, + ) as report: + report_path = Path(report.name) + + cmd = [ + "markdown-link-check", + "--reporters", + "junit", + "--junit-output", + str(report_path), + "--config", + str(CONFIG_FILE), + str(markdown_file), + ] + + proc = subprocess.run( + cmd, + text=True, + capture_output=True, + check=False, + ) + + if proc.stdout: + print(proc.stdout, end="") + + if proc.stderr: + print(proc.stderr, end="", file=sys.stderr) + + try: + root = ET.parse(report_path).getroot() + except (ET.ParseError, OSError) as error: + print( + f"Could not read markdown-link-check report for " + f"{markdown_file}: {error}", + file=sys.stderr, + ) + return proc.returncode if proc.returncode != 0 else 2 + finally: + report_path.unlink(missing_ok=True) + + failed = False + + for testcase in root.findall(".//testcase"): + properties = testcase_properties(testcase) + + url = properties.get("url", testcase.get("name", "unknown")) + status = properties.get("status", "unknown") + status_code = properties.get("statusCode") + + parsed_url = urlparse(url) + + is_ignored_developer_arm_403 = ( + parsed_url.hostname == "developer.arm.com" + and status == "dead" + and status_code == "403" + ) + + if is_ignored_developer_arm_403: + print(f"IGNORED (403 from developer.arm.com): {url}") + continue + + failure = testcase.find("failure") + error = testcase.find("error") + + if failure is not None or error is not None: + failed = True + print( + f"BROKEN ({status_code or status}): {url}", + file=sys.stderr, + ) + + return 1 if failed else 0 + + +if __name__ == "__main__": + sys.exit(main()) From 2d03385e0b70a08acc349fece81b673081846ef3 Mon Sep 17 00:00:00 2001 From: Rodolfo Wottrich Date: Tue, 21 Jul 2026 11:52:14 +0100 Subject: [PATCH 09/10] Ignore anchors in link-check --- .github/workflows/markdown-link-check.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/markdown-link-check.json b/.github/workflows/markdown-link-check.json index f28711c4..e52a54cd 100644 --- a/.github/workflows/markdown-link-check.json +++ b/.github/workflows/markdown-link-check.json @@ -2,6 +2,9 @@ "ignorePatterns": [ { "pattern": "^https://developer.arm.com/architectures/instruction-sets/intrinsics/" + }, + { + "pattern": "^#" } ] } From 3689569b688de1ea57548aa6afe3dc31852b1a1d Mon Sep 17 00:00:00 2001 From: Rodolfo Wottrich Date: Tue, 21 Jul 2026 12:02:11 +0100 Subject: [PATCH 10/10] Remove inexistent profile links --- .all-contributorsrc | 8 ++++---- README.md | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.all-contributorsrc b/.all-contributorsrc index 673cdcff..e6dfb928 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc @@ -49,7 +49,7 @@ "login": "ktkachov-arm", "name": "ktkachov-arm", "avatar_url": "https://avatars.githubusercontent.com/u/74917949?v=4", - "profile": "https://github.com/ktkachov-arm", + "profile": "", "contributions": [ "code", "content", @@ -284,7 +284,7 @@ "login": "tmatheson-arm", "name": "tmatheson-arm", "avatar_url": "https://avatars.githubusercontent.com/u/76168689?v=4", - "profile": "https://github.com/tmatheson-arm", + "profile": "", "contributions": [ "code" ] @@ -311,7 +311,7 @@ "login": "andrewcarlotti", "name": "Andrew Carlotti", "avatar_url": "https://avatars.githubusercontent.com/u/11681428?v=4", - "profile": "https://github.com/andrewcarlotti", + "profile": "", "contributions": [ "review" ] @@ -392,7 +392,7 @@ "login": "rockdreamer", "name": "Claudio Bantaloukas", "avatar_url": "https://avatars.githubusercontent.com/u/111884?v=4", - "profile": "https://www.rdfm.org/", + "profile": "https://rdfm.org/", "contributions": [ "code" ] diff --git a/README.md b/README.md index 8208402b..d261e466 100644 --- a/README.md +++ b/README.md @@ -92,7 +92,7 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/e Matt
Matt

💻 ValeriaDaneva
ValeriaDaneva

💻 🚇 👀 Francesco Petrogalli
Francesco Petrogalli

💻 👀 - ktkachov-arm
ktkachov-arm

💻 🖋 🚇 👀 + ktkachov-arm
ktkachov-arm
💻 🖋 🚇 👀 sallyarmneale
sallyarmneale

👀 Simon Tatham
Simon Tatham

👀 @@ -125,10 +125,10 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/e bwmf2
bwmf2

💻 - tmatheson-arm
tmatheson-arm

💻 + tmatheson-arm
tmatheson-arm
💻 Anatoly Trosinenko
Anatoly Trosinenko

💻 Lucas Duarte Prates
Lucas Duarte Prates

💻 - Andrew Carlotti
Andrew Carlotti

👀 + Andrew Carlotti
Andrew Carlotti
👀 Alexandros Lamprineas
Alexandros Lamprineas

💻 Lukacma
Lukacma

📖 @@ -139,7 +139,7 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/e Kerry McLaughlin
Kerry McLaughlin

💻 Momchil Velikov
Momchil Velikov

💻 Yury Khrustalev
Yury Khrustalev

💻 - Claudio Bantaloukas
Claudio Bantaloukas

💻 + Claudio Bantaloukas
Claudio Bantaloukas

💻 Alfie Richards
Alfie Richards

💻