各位 TC 委员好:
我是赵川峰,这个邮件我讨论一下社区 LLVM 的版本选型及规划,也期望涉及 LLVM 编译器的相关委员提提诉求。
下图是 LLVM 上游社区的版本发布历史和计划,版本节奏是 2 个大版本 / 年,大版本发布后每 2 周发布一个小版本(计划内发布 5 个小版本,按需继续发布)。
可以看出上游社区版本 发布比较频繁 ,这与 openEuler LTS 版本对软件包的稳定性有些冲突,所以就有了支持 LLVM 多版本的诉求。
Compiler SIG 计划支持两个版本: LTS 版本(系统默认)和 latest 版本, rpm 源码仓库创建如下: LTS 版本: src-openeuler/clang : 包含 clang , clang-tools-extra src-openeuler/llvm : 包含 llvm , compiler-rt 、 libcxx 、 libcxxabi 、 llvm-libunwind 、 mlir 、 libc src-openeuler/lld : 包含 lld src-openeuler/llvm-bolt : 包含 bolt latest 版本: src-openeuler/clang-latest src-openeuler/llvm-latest src-openeuler/lld-latest src-openeuler/llvm-bolt-latest
原则 & 方案:
(1) LTS 版本跟随 openEuler LTS 版本升级,在 openEuler LTS 前一个创新版本 Ready ,后续 SPX 上版本保持不变。
(2) latest 版本跟随所有 openEuler 版本( LTS 和创新版本)升级,取上游社区当时最新版本。
(3) 如果有其他版本需要支持(需要有充分理由),可以创建 llvm- ; 相关的源码仓,支持方案与 llvm-latest 雷同。
基于以上原则,后续 openEuler 版本上 LLVM 编译器的版本选型将是:
欢迎大家给出宝贵意见,谢谢!
Best Regards 赵川峰( Steve )
Hi 川峰,
我对这个版本选型方案和模型本身没有意见,但是想提醒一下关于clang 16的问题。
由于clang 16默认打开了以下开关, * -Werror=implicit-function-declaration * -Werror=implicit-int * -Werror=strict-prototypes
造成clang 16在很多软件包的configure阶段会检测出错,或者有的检测虽然通过但是判断编译器的支持特性出错导致编译出来的二进制有功能问题。具体可以参考Gentoo的bug和clang上游的讨论,可以看到受影响的包非常多: https://archives.gentoo.org/gentoo-dev/message/dd9f2d3082b8b6f8dfbccb0639e6e... https://bugs.gentoo.org/870412 https://discourse.llvm.org/t/configure-script-breakage-with-the-new-werror-i...
理论上如果不修复所有受影响的包,那么在clang >=16的环境中都会受该问题影响。我记得你之前提到过在推进使用clang编译内核和整个系统,不知道这个问题是否已经考虑到并且有规划解决?
刘恺 Email: kai.liu@xfusion.commailto:kai.liu@xfusion.com | Mobile: 181 2600 8111
From: Zhaochuanfeng (Steve) zhaochuanfeng@huawei.com Sent: Thursday, April 27, 2023 8:33 PM To: tc@openeuler.org Cc: Weiwei (weiwei, Compiler) weiwei64@huawei.com; Chenxi Mao chenxi.mao@suse.com Subject: [Tc] 【RFC】【Compiler SIG】openEuler LLVM版本选型及规划讨论
各位TC委员好:
我是赵川峰,这个邮件我讨论一下社区LLVM的版本选型及规划,也期望涉及LLVM编译器的相关委员提提诉求。
下图是LLVM上游社区的版本发布历史和计划,版本节奏是2个大版本/年,大版本发布后每2周发布一个小版本(计划内发布5个小版本,按需继续发布)。 [cid:image001.jpg@01D97962.43339470] 可以看出上游社区版本发布比较频繁,这与openEuler LTS版本对软件包的稳定性有些冲突,所以就有了支持LLVM多版本的诉求。
Compiler SIG计划支持两个版本:LTS版本(系统默认)和latest版本,rpm源码仓库创建如下: LTS版本: src-openeuler/clang: 包含clang,clang-tools-extra src-openeuler/llvm: 包含llvm,compiler-rt、libcxx、libcxxabi、llvm-libunwind、mlir、libc src-openeuler/lld: 包含lld src-openeuler/llvm-bolt: 包含bolt latest版本: src-openeuler/clang-latest src-openeuler/llvm-latest src-openeuler/lld-latest src-openeuler/llvm-bolt-latest
原则&方案:
(1) LTS版本跟随openEuler LTS版本升级,在openEuler LTS前一个创新版本Ready,后续SPX上版本保持不变。
(2) latest版本跟随所有openEuler版本(LTS和创新版本)升级,取上游社区当时最新版本。
(3) 如果有其他版本需要支持(需要有充分理由),可以创建llvm-<major>相关的源码仓,支持方案与llvm-latest雷同。
基于以上原则,后续openEuler版本上LLVM编译器的版本选型将是: [cid:image002.jpg@01D97962.43339470]
欢迎大家给出宝贵意见,谢谢!
Best Regards 赵川峰(Steve)
Hi 刘恺,
多谢回复!由于目前平行宇宙计划使用的系统LLVM编译器版本是15.0.7,所以还没有遇到你说的问题,我们持续关注一下clang 16上面这个问题。 另外一个已知兼容性问题(晨曦之前提起过)是LLVM15上使用dwarf 5格式,与系统GCC 10上的dwarf 4有兼容问题。 目前的解决方案是先默认设置LLVM 15为dwarf 4,等系统GCC升级到12后再启用dwarf 5。
Best Regards 赵川峰(Steve)
发件人: kai.liu kai.liu@xfusion.com 发送时间: 2023年4月27日 23:47 收件人: Zhaochuanfeng (Steve) zhaochuanfeng@huawei.com; tc@openeuler.org 抄送: Weiwei (weiwei, Compiler) weiwei64@huawei.com; Chenxi Mao chenxi.mao@suse.com 主题: [Tc] Re: 【RFC】【Compiler SIG】openEuler LLVM版本选型及规划讨论
Hi 川峰,
我对这个版本选型方案和模型本身没有意见,但是想提醒一下关于clang 16的问题。
由于clang 16默认打开了以下开关, * -Werror=implicit-function-declaration * -Werror=implicit-int * -Werror=strict-prototypes
造成clang 16在很多软件包的configure阶段会检测出错,或者有的检测虽然通过但是判断编译器的支持特性出错导致编译出来的二进制有功能问题。具体可以参考Gentoo的bug和clang上游的讨论,可以看到受影响的包非常多: https://archives.gentoo.org/gentoo-dev/message/dd9f2d3082b8b6f8dfbccb0639e6e... https://bugs.gentoo.org/870412 https://discourse.llvm.org/t/configure-script-breakage-with-the-new-werror-i...
理论上如果不修复所有受影响的包,那么在clang >=16的环境中都会受该问题影响。我记得你之前提到过在推进使用clang编译内核和整个系统,不知道这个问题是否已经考虑到并且有规划解决?
刘恺 Email: kai.liu@xfusion.commailto:kai.liu@xfusion.com | Mobile: 181 2600 8111
From: Zhaochuanfeng (Steve) <zhaochuanfeng@huawei.commailto:zhaochuanfeng@huawei.com> Sent: Thursday, April 27, 2023 8:33 PM To: tc@openeuler.orgmailto:tc@openeuler.org Cc: Weiwei (weiwei, Compiler) <weiwei64@huawei.commailto:weiwei64@huawei.com>; Chenxi Mao <chenxi.mao@suse.commailto:chenxi.mao@suse.com> Subject: [Tc] 【RFC】【Compiler SIG】openEuler LLVM版本选型及规划讨论
各位TC委员好:
我是赵川峰,这个邮件我讨论一下社区LLVM的版本选型及规划,也期望涉及LLVM编译器的相关委员提提诉求。
下图是LLVM上游社区的版本发布历史和计划,版本节奏是2个大版本/年,大版本发布后每2周发布一个小版本(计划内发布5个小版本,按需继续发布)。 [cid:image001.jpg@01D979B8.35C952B0] 可以看出上游社区版本发布比较频繁,这与openEuler LTS版本对软件包的稳定性有些冲突,所以就有了支持LLVM多版本的诉求。
Compiler SIG计划支持两个版本:LTS版本(系统默认)和latest版本,rpm源码仓库创建如下: LTS版本: src-openeuler/clang: 包含clang,clang-tools-extra src-openeuler/llvm: 包含llvm,compiler-rt、libcxx、libcxxabi、llvm-libunwind、mlir、libc src-openeuler/lld: 包含lld src-openeuler/llvm-bolt: 包含bolt latest版本: src-openeuler/clang-latest src-openeuler/llvm-latest src-openeuler/lld-latest src-openeuler/llvm-bolt-latest
原则&方案:
(1) LTS版本跟随openEuler LTS版本升级,在openEuler LTS前一个创新版本Ready,后续SPX上版本保持不变。
(2) latest版本跟随所有openEuler版本(LTS和创新版本)升级,取上游社区当时最新版本。
(3) 如果有其他版本需要支持(需要有充分理由),可以创建llvm-<major>相关的源码仓,支持方案与llvm-latest雷同。
基于以上原则,后续openEuler版本上LLVM编译器的版本选型将是: [cid:image002.jpg@01D979B8.35C952B0]
欢迎大家给出宝贵意见,谢谢!
Best Regards 赵川峰(Steve)
嗯,这个有考虑过。如果下一个LTS版本是25.03,LLVM 的LTS版本可能在24.09上再升级一次。目前没有看到与GCC的其他大的兼容问题。 需要指出的是,下一个openEuler版本LLVM 12将被清退,依赖LLVM 12的(如mesa)需要同步升级到LLVM 15。
Best Regards 赵川峰(Steve)
发件人: myeuler@163.com myeuler@163.com 发送时间: 2023年4月28日 10:35 收件人: Zhaochuanfeng (Steve) zhaochuanfeng@huawei.com; kai.liu kai.liu@xfusion.com; tc@openeuler.org 抄送: Weiwei (weiwei, Compiler) weiwei64@huawei.com; Chenxi Mao chenxi.mao@suse.com 主题: 回复:[Tc] 答复: 【RFC】【Compiler SIG】openEuler LLVM版本选型及规划讨论
和下一代LTS的选型节奏匹配一下,考虑下一代LTS GCC LLVM的兼容性别出问题
发自我的手机
-------- 原始邮件 -------- 发件人: "Zhaochuanfeng (Steve)" <zhaochuanfeng@huawei.commailto:zhaochuanfeng@huawei.com> 日期: 2023年4月28日周五 上午10:17 收件人: "kai.liu" <kai.liu@xfusion.commailto:kai.liu@xfusion.com>, tc@openeuler.orgmailto:tc@openeuler.org 抄送: "Weiwei (weiwei, Compiler)" <weiwei64@huawei.commailto:weiwei64@huawei.com>, Chenxi Mao <chenxi.mao@suse.commailto:chenxi.mao@suse.com> 主 题: [Tc] 答复: 【RFC】【Compiler SIG】openEuler LLVM版本选型及规划讨论
Hi 刘恺,
多谢回复!由于目前平行宇宙计划使用的系统LLVM编译器版本是15.0.7,所以还没有遇到你说的问题,我们持续关注一下clang 16上面这个问题。
另外一个已知兼容性问题(晨曦之前提起过)是LLVM15上使用dwarf 5格式,与系统GCC 10上的dwarf 4有兼容问题。
目前的解决方案是先默认设置LLVM 15为dwarf 4,等系统GCC升级到12后再启用dwarf 5。
Best Regards
赵川峰(Steve)
发件人: kai.liu <kai.liu@xfusion.commailto:kai.liu@xfusion.com> 发送时间: 2023年4月27日 23:47 收件人: Zhaochuanfeng (Steve) <zhaochuanfeng@huawei.commailto:zhaochuanfeng@huawei.com>; tc@openeuler.orgmailto:tc@openeuler.org 抄送: Weiwei (weiwei, Compiler) <weiwei64@huawei.commailto:weiwei64@huawei.com>; Chenxi Mao <chenxi.mao@suse.commailto:chenxi.mao@suse.com> 主题: [Tc] Re: 【RFC】【Compiler SIG】openEuler LLVM版本选型及规划讨论
Hi 川峰,
我对这个版本选型方案和模型本身没有意见,但是想提醒一下关于clang 16的问题。
由于clang 16默认打开了以下开关,
* -Werror=implicit-function-declaration
* -Werror=implicit-int
* -Werror=strict-prototypes
造成clang 16在很多软件包的configure阶段会检测出错,或者有的检测虽然通过但是判断编译器的支持特性出错导致编译出来的二进制有功能问题。具体可以参考Gentoo的bug和clang上游的讨论,可以看到受影响的包非常多:
https://archives.gentoo.org/gentoo-dev/message/dd9f2d3082b8b6f8dfbccb0639e6e...
https://bugs.gentoo.org/870412
https://discourse.llvm.org/t/configure-script-breakage-with-the-new-werror-i...
理论上如果不修复所有受影响的包,那么在clang >=16的环境中都会受该问题影响。我记得你之前提到过在推进使用clang编译内核和整个系统,不知道这个问题是否已经考虑到并且有规划解决?
刘恺
Email: kai.liu@xfusion.commailto:kai.liu@xfusion.com | Mobile: 181 2600 8111
From: Zhaochuanfeng (Steve) <zhaochuanfeng@huawei.commailto:zhaochuanfeng@huawei.com> Sent: Thursday, April 27, 2023 8:33 PM To: tc@openeuler.orgmailto:tc@openeuler.org Cc: Weiwei (weiwei, Compiler) <weiwei64@huawei.commailto:weiwei64@huawei.com>; Chenxi Mao <chenxi.mao@suse.commailto:chenxi.mao@suse.com> Subject: [Tc] 【RFC】【Compiler SIG】openEuler LLVM版本选型及规划讨论
各位TC委员好:
我是赵川峰,这个邮件我讨论一下社区LLVM的版本选型及规划,也期望涉及LLVM编译器的相关委员提提诉求。
下图是LLVM上游社区的版本发布历史和计划,版本节奏是2个大版本/年,大版本发布后每2周发布一个小版本(计划内发布5个小版本,按需继续发布)。
[cid:image001.jpg@01D979C1.44AC93B0]
可以看出上游社区版本发布比较频繁,这与openEuler LTS版本对软件包的稳定性有些冲突,所以就有了支持LLVM多版本的诉求。
Compiler SIG计划支持两个版本:LTS版本(系统默认)和latest版本,rpm源码仓库创建如下:
LTS版本:
src-openeuler/clang: 包含clang,clang-tools-extra
src-openeuler/llvm: 包含llvm,compiler-rt、libcxx、libcxxabi、llvm-libunwind、mlir、libc
src-openeuler/lld: 包含lld
src-openeuler/llvm-bolt: 包含bolt
latest版本:
src-openeuler/clang-latest
src-openeuler/llvm-latest
src-openeuler/lld-latest
src-openeuler/llvm-bolt-latest
原则&方案:
(1) LTS版本跟随openEuler LTS版本升级,在openEuler LTS前一个创新版本Ready,后续SPX上版本保持不变。
(2) latest版本跟随所有openEuler版本(LTS和创新版本)升级,取上游社区当时最新版本。
(3) 如果有其他版本需要支持(需要有充分理由),可以创建llvm-<major>相关的源码仓,支持方案与llvm-latest雷同。
基于以上原则,后续openEuler版本上LLVM编译器的版本选型将是:
[cid:image002.jpg@01D979C1.44AC93B0]
欢迎大家给出宝贵意见,谢谢!
Best Regards
赵川峰(Steve)
如果24.03是LTS版本,LLVM的版本是15.0.7,GCC是12。如果25.03是LTS,LLVM可能是18.0.5,GCC可能仍是12
________________________________
赵川峰 Zhao Chuanfeng Mobile: +86-50000036156(For Welink,eSpace Calls) Email: zhaochuanfeng@huawei.com
发件人:myeuler myeuler@163.com 收件人:Zhaochuanfeng (Steve) zhaochuanfeng@huawei.com;kai.liu kai.liu@xfusion.com;tc tc@openeuler.org 抄 送:Weiwei (weiwei, Compiler) weiwei64@huawei.com;Chenxi Mao chenxi.mao@suse.com 时 间:2023-04-28 18:26:05 主 题:回复:[Tc] 答复: 回复:答复: 【RFC】【Compiler SIG】openEuler LLVM版本选型及规划讨论
目前下一个LTS是哪个版本没有确定,你们看看如果24年需要出LTS版本那么GCC,LLVM的选型准备是啥?
发自我的手机
-------- 原始邮件 -------- 发件人: "Zhaochuanfeng (Steve)" zhaochuanfeng@huawei.com 日期: 2023年4月28日周五 中午11:15 收件人: myeuler@163.com, "kai.liu" kai.liu@xfusion.com, tc@openeuler.org 抄送: "Weiwei (weiwei, Compiler)" weiwei64@huawei.com, Chenxi Mao chenxi.mao@suse.com 主 题: [Tc] 答复: 回复:答复: 【RFC】【Compiler SIG】openEuler LLVM版本选型及规划讨论
嗯,这个有考虑过。如果下一个LTS版本是25.03,LLVM 的LTS版本可能在24.09上再升级一次。目前没有看到与GCC的其他大的兼容问题。
需要指出的是,下一个openEuler版本LLVM 12将被清退,依赖LLVM 12的(如mesa)需要同步升级到LLVM 15。
Best Regards
赵川峰(Steve)
发件人: myeuler@163.com myeuler@163.com 发送时间: 2023年4月28日 10:35 收件人: Zhaochuanfeng (Steve) zhaochuanfeng@huawei.com; kai.liu kai.liu@xfusion.com; tc@openeuler.org 抄送: Weiwei (weiwei, Compiler) weiwei64@huawei.com; Chenxi Mao chenxi.mao@suse.com 主题: 回复:[Tc] 答复: 【RFC】【Compiler SIG】openEuler LLVM版本选型及规划讨论
和下一代LTS的选型节奏匹配一下,考虑下一代LTS GCC LLVM的兼容性别出问题
发自我的手机
-------- 原始邮件 -------- 发件人: "Zhaochuanfeng (Steve)" <zhaochuanfeng@huawei.commailto:zhaochuanfeng@huawei.com> 日期: 2023年4月28日周五 上午10:17 收件人: "kai.liu" <kai.liu@xfusion.commailto:kai.liu@xfusion.com>, tc@openeuler.orgmailto:tc@openeuler.org 抄送: "Weiwei (weiwei, Compiler)" <weiwei64@huawei.commailto:weiwei64@huawei.com>, Chenxi Mao <chenxi.mao@suse.commailto:chenxi.mao@suse.com> 主 题: [Tc] 答复: 【RFC】【Compiler SIG】openEuler LLVM版本选型及规划讨论
Hi 刘恺,
多谢回复!由于目前平行宇宙计划使用的系统LLVM编译器版本是15.0.7,所以还没有遇到你说的问题,我们持续关注一下clang 16上面这个问题。
另外一个已知兼容性问题(晨曦之前提起过)是LLVM15上使用dwarf 5格式,与系统GCC 10上的dwarf 4有兼容问题。
目前的解决方案是先默认设置LLVM 15为dwarf 4,等系统GCC升级到12后再启用dwarf 5。
Best Regards
赵川峰(Steve)
发件人: kai.liu <kai.liu@xfusion.commailto:kai.liu@xfusion.com> 发送时间: 2023年4月27日 23:47 收件人: Zhaochuanfeng (Steve) <zhaochuanfeng@huawei.commailto:zhaochuanfeng@huawei.com>; tc@openeuler.orgmailto:tc@openeuler.org 抄送: Weiwei (weiwei, Compiler) <weiwei64@huawei.commailto:weiwei64@huawei.com>; Chenxi Mao <chenxi.mao@suse.commailto:chenxi.mao@suse.com> 主题: [Tc] Re: 【RFC】【Compiler SIG】openEuler LLVM版本选型及规划讨论
Hi 川峰,
我对这个版本选型方案和模型本身没有意见,但是想提醒一下关于clang 16的问题。
由于clang 16默认打开了以下开关,
* -Werror=implicit-function-declaration
* -Werror=implicit-int
* -Werror=strict-prototypes
造成clang 16在很多软件包的configure阶段会检测出错,或者有的检测虽然通过但是判断编译器的支持特性出错导致编译出来的二进制有功能问题。具体可以参考Gentoo的bug和clang上游的讨论,可以看到受影响的包非常多:
https://archives.gentoo.org/gentoo-dev/message/dd9f2d3082b8b6f8dfbccb0639e6e...
https://bugs.gentoo.org/870412
https://discourse.llvm.org/t/configure-script-breakage-with-the-new-werror-i...
理论上如果不修复所有受影响的包,那么在clang >=16的环境中都会受该问题影响。我记得你之前提到过在推进使用clang编译内核和整个系统,不知道这个问题是否已经考虑到并且有规划解决?
刘恺
Email: kai.liu@xfusion.commailto:kai.liu@xfusion.com | Mobile: 181 2600 8111
From: Zhaochuanfeng (Steve) <zhaochuanfeng@huawei.commailto:zhaochuanfeng@huawei.com> Sent: Thursday, April 27, 2023 8:33 PM To: tc@openeuler.orgmailto:tc@openeuler.org Cc: Weiwei (weiwei, Compiler) <weiwei64@huawei.commailto:weiwei64@huawei.com>; Chenxi Mao <chenxi.mao@suse.commailto:chenxi.mao@suse.com> Subject: [Tc] 【RFC】【Compiler SIG】openEuler LLVM版本选型及规划讨论
各位TC委员好:
我是赵川峰,这个邮件我讨论一下社区LLVM的版本选型及规划,也期望涉及LLVM编译器的相关委员提提诉求。
下图是LLVM上游社区的版本发布历史和计划,版本节奏是2个大版本/年,大版本发布后每2周发布一个小版本(计划内发布5个小版本,按需继续发布)。
[cid:image001.jpg@01D979C1.44AC93B0]
可以看出上游社区版本发布比较频繁,这与openEuler LTS版本对软件包的稳定性有些冲突,所以就有了支持LLVM多版本的诉求。
Compiler SIG计划支持两个版本:LTS版本(系统默认)和latest版本,rpm源码仓库创建如下:
LTS版本:
src-openeuler/clang: 包含clang,clang-tools-extra
src-openeuler/llvm: 包含llvm,compiler-rt、libcxx、libcxxabi、llvm-libunwind、mlir、libc
src-openeuler/lld: 包含lld
src-openeuler/llvm-bolt: 包含bolt
latest版本:
src-openeuler/clang-latest
src-openeuler/llvm-latest
src-openeuler/lld-latest
src-openeuler/llvm-bolt-latest
原则&方案:
(1) LTS版本跟随openEuler LTS版本升级,在openEuler LTS前一个创新版本Ready,后续SPX上版本保持不变。
(2) latest版本跟随所有openEuler版本(LTS和创新版本)升级,取上游社区当时最新版本。
(3) 如果有其他版本需要支持(需要有充分理由),可以创建llvm-<major>相关的源码仓,支持方案与llvm-latest雷同。
基于以上原则,后续openEuler版本上LLVM编译器的版本选型将是:
[cid:image002.jpg@01D979C1.44AC93B0]
欢迎大家给出宝贵意见,谢谢!
Best Regards
赵川峰(Steve)