From 5b06538ab2d8e13de5ecc4e32d79578a7ae3db70 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 8 Jan 2024 11:59:56 +0000 Subject: [PATCH] deploy: 4d0961ca65660ffb3378958dccc6280d5d909d45 --- 404.html | 4 +- asmdb/index.html | 4 +- assets/js/143c1d44.bc1b5640.js | 1 + ...ddf7d.dcc982ee.js => 169ddf7d.51b6d47c.js} | 2 +- ...bda43.f2676be5.js => 18bbda43.5129720b.js} | 2 +- ...49a5f.ae27c4a6.js => 1a849a5f.1223010f.js} | 2 +- ...f744e.c7baa4ec.js => 1d0f744e.eb8f174f.js} | 2 +- ...c37ba.68cc5d46.js => 316c37ba.4026e8b7.js} | 2 +- ...1c358.02ae1d4c.js => 35a1c358.3d936de2.js} | 2 +- ...7b374.3b64da3e.js => 37a7b374.52f310f0.js} | 2 +- ...a9e88.9fb9c642.js => 469a9e88.7bf437b0.js} | 2 +- ...59631.4f9d5cb6.js => 47159631.072d66ee.js} | 2 +- assets/js/4d72142f.57a69cc7.js | 1 - assets/js/4d72142f.5f3b3d98.js | 1 + ...6810a.fce72268.js => 5cc6810a.05fafc42.js} | 2 +- assets/js/5e1e6895.816e2082.js | 1 + assets/js/5e1e6895.a28035a5.js | 1 - ...884f9.2a28c894.js => 614884f9.4ce8e528.js} | 2 +- ...5aafd.fa7e83ab.js => 6245aafd.7a60520b.js} | 2 +- assets/js/652fe9bf.3eed6bb9.js | 1 + assets/js/669f9270.ab22c0c9.js | 1 + assets/js/6bbe02e6.481477f2.js | 1 + assets/js/6f54cb52.a982101b.js | 1 + .../js/{7298.ca9d84c7.js => 7298.3a91b5ff.js} | 4 +- ...CENSE.txt => 7298.3a91b5ff.js.LICENSE.txt} | 0 ...14c8c.c3197eca.js => 7e314c8c.96248a4a.js} | 2 +- .../js/{8443.7c6e8c3b.js => 8443.4a4044bb.js} | 4 +- ...CENSE.txt => 8443.4a4044bb.js.LICENSE.txt} | 0 assets/js/a19cf30a.81e6f8c9.js | 1 + assets/js/a68796e0.a16728c3.js | 1 - assets/js/a68796e0.bc04ce43.js | 1 + assets/js/cc17e890.127cefee.js | 1 + assets/js/cc17e890.5eef9301.js | 1 - ...b8b3a.e6e7f5f5.js => d8bb8b3a.fcfccbcf.js} | 2 +- ...e883e.80780071.js => e1be883e.0bd99653.js} | 2 +- assets/js/f05c6541.adae4b93.js | 1 + assets/js/main.371b7eca.js | 2 - assets/js/main.d18aa706.js | 2 + ...CENSE.txt => main.d18aa706.js.LICENSE.txt} | 0 assets/js/runtime~main.4510f3e2.js | 1 - assets/js/runtime~main.c50fa65d.js | 1 + blog/archive/index.html | 4 +- blog/index.html | 4 +- blog/site-faqs/index.html | 4 +- blog/tags/index.html | 4 +- .../index.html" | Bin 19000 -> 19000 bytes .../index.html | 4 +- blog/welcome/index.html | 4 +- docs/baseline-reference/index.html | 4 +- .../index.html | 4 +- docs/contrib/basics/index.html | 4 +- docs/contrib/index.html | 4 +- docs/contrib/natlang-style-guide/index.html | 4 +- docs/errata/index.html | 4 +- docs/intro/index.html | 4 +- docs/linux-upstream-support/index.html | 4 +- docs/loong-or-loongarch/index.html | 4 +- docs/old-and-new-worlds/index.html | 4 +- index.html | 6 +- newsletter/archive/index.html | 6 +- newsletter/atom.xml | 179 +++++++++++------- newsletter/index.html | 18 +- newsletter/page/2/index.html | 8 +- newsletter/page/3/index.html | 6 +- newsletter/page/4/index.html | 6 +- newsletter/rss.xml | 171 +++++++++++------ newsletter/tags/index.html | 6 +- .../index.html" | 20 +- .../page/2/index.html" | 10 +- .../page/3/index.html" | 8 +- .../page/4/index.html" | 8 +- .../these-weeks-in-loongarch-12/index.html | 6 +- .../these-weeks-in-loongarch-6/index.html | 6 +- .../this-week-in-loongarch-1/index.html | 6 +- .../this-week-in-loongarch-10/index.html | 6 +- .../this-week-in-loongarch-11/index.html | 6 +- .../this-week-in-loongarch-13/index.html | 6 +- .../this-week-in-loongarch-14/index.html | 6 +- .../this-week-in-loongarch-15/index.html | 6 +- .../this-week-in-loongarch-16/index.html | 6 +- .../this-week-in-loongarch-17/index.html | 6 +- .../this-week-in-loongarch-18/index.html | 6 +- .../this-week-in-loongarch-19/index.html | 6 +- .../this-week-in-loongarch-2/index.html | 6 +- .../this-week-in-loongarch-20/index.html | 6 +- .../this-week-in-loongarch-21/index.html | 6 +- .../this-week-in-loongarch-22/index.html | 6 +- .../this-week-in-loongarch-23/index.html | 6 +- .../this-week-in-loongarch-24/index.html | 6 +- .../this-week-in-loongarch-25/index.html | 6 +- .../this-week-in-loongarch-26/index.html | 6 +- .../this-week-in-loongarch-27/index.html | 14 +- .../this-week-in-loongarch-28/index.html | 6 +- .../this-week-in-loongarch-29/index.html | 6 +- .../this-week-in-loongarch-3/index.html | 6 +- .../this-week-in-loongarch-30/index.html | 6 +- .../this-week-in-loongarch-31/index.html | 8 +- .../this-week-in-loongarch-32/index.html | 122 ++++++++++++ .../this-week-in-loongarch-4/index.html | 6 +- .../this-week-in-loongarch-5/index.html | 6 +- .../this-week-in-loongarch-7/index.html | 6 +- .../this-week-in-loongarch-8/index.html | 6 +- .../this-week-in-loongarch-9/index.html | 6 +- porter/hackpascal/index.html | 22 +++ porter/jiangcuo/index.html | 22 +++ porter/liushuyu/index.html | 4 +- porter/loongson/index.html | 4 +- porter/lrzlin/index.html | 4 +- porter/phorcys/index.html | 22 +++ porter/shipujin/index.html | 4 +- porter/sunhaiyong1978/index.html | 4 +- porter/xen0n/index.html | 4 +- porter/xry111/index.html | 4 +- porter/yetist/index.html | 4 +- porter/yushanwei/index.html | 4 +- project/altlinux/index.html | 4 +- project/aosc/index.html | Bin 11749 -> 11749 bytes project/binutils/index.html | 4 +- project/clfs/index.html | 4 +- project/debian/index.html | 4 +- project/dlang/index.html | 4 +- project/dotnet/index.html | Bin 12202 -> 12202 bytes project/edk2/index.html | 4 +- project/fedora/index.html | 4 +- project/freebsd/index.html | 4 +- project/gcc/index.html | 4 +- project/gentoo/index.html | 4 +- project/ghc/index.html | 4 +- project/glibc/index.html | 4 +- project/gnumach/index.html | 4 +- project/go/index.html | 4 +- project/haiku/index.html | 4 +- project/jsc/index.html | 4 +- project/lfs/index.html | 4 +- project/linux/index.html | 4 +- project/llvm/index.html | 4 +- project/loongarchlinux/index.html | 4 +- project/luajit/index.html | 4 +- project/mono/index.html | 4 +- project/musl/index.html | 4 +- project/openbsd/index.html | 4 +- project/openjdk/index.html | 4 +- project/openwrt/index.html | 22 +++ project/proxmox-ve/index.html | 22 +++ project/qemu/index.html | 4 +- project/reactos/index.html | 4 +- project/rt-thread/index.html | 4 +- project/rust/index.html | 4 +- project/slackware/index.html | 4 +- project/sljit/index.html | 4 +- project/spidermonkey/index.html | 4 +- project/v8/index.html | 4 +- project/xbyak/index.html | 4 +- project/yongbao/index.html | 4 +- search-index-8c89b86a.json | 1 + search-index-91caf89d.json | 1 - search/index.html | 4 +- sitemap.xml | 2 +- 158 files changed, 770 insertions(+), 425 deletions(-) create mode 100644 assets/js/143c1d44.bc1b5640.js rename assets/js/{169ddf7d.dcc982ee.js => 169ddf7d.51b6d47c.js} (89%) rename assets/js/{18bbda43.f2676be5.js => 18bbda43.5129720b.js} (80%) rename assets/js/{1a849a5f.ae27c4a6.js => 1a849a5f.1223010f.js} (79%) rename assets/js/{1d0f744e.c7baa4ec.js => 1d0f744e.eb8f174f.js} (90%) rename assets/js/{316c37ba.68cc5d46.js => 316c37ba.4026e8b7.js} (90%) rename assets/js/{35a1c358.02ae1d4c.js => 35a1c358.3d936de2.js} (91%) rename assets/js/{37a7b374.3b64da3e.js => 37a7b374.52f310f0.js} (89%) rename assets/js/{469a9e88.9fb9c642.js => 469a9e88.7bf437b0.js} (89%) rename assets/js/{47159631.4f9d5cb6.js => 47159631.072d66ee.js} (50%) delete mode 100644 assets/js/4d72142f.57a69cc7.js create mode 100644 assets/js/4d72142f.5f3b3d98.js rename assets/js/{5cc6810a.fce72268.js => 5cc6810a.05fafc42.js} (89%) create mode 100644 assets/js/5e1e6895.816e2082.js delete mode 100644 assets/js/5e1e6895.a28035a5.js rename assets/js/{614884f9.2a28c894.js => 614884f9.4ce8e528.js} (89%) rename assets/js/{6245aafd.fa7e83ab.js => 6245aafd.7a60520b.js} (90%) create mode 100644 assets/js/652fe9bf.3eed6bb9.js create mode 100644 assets/js/669f9270.ab22c0c9.js create mode 100644 assets/js/6bbe02e6.481477f2.js create mode 100644 assets/js/6f54cb52.a982101b.js rename assets/js/{7298.ca9d84c7.js => 7298.3a91b5ff.js} (99%) rename assets/js/{7298.ca9d84c7.js.LICENSE.txt => 7298.3a91b5ff.js.LICENSE.txt} (100%) rename assets/js/{7e314c8c.c3197eca.js => 7e314c8c.96248a4a.js} (89%) rename assets/js/{8443.7c6e8c3b.js => 8443.4a4044bb.js} (99%) rename assets/js/{8443.7c6e8c3b.js.LICENSE.txt => 8443.4a4044bb.js.LICENSE.txt} (100%) create mode 100644 assets/js/a19cf30a.81e6f8c9.js delete mode 100644 assets/js/a68796e0.a16728c3.js create mode 100644 assets/js/a68796e0.bc04ce43.js create mode 100644 assets/js/cc17e890.127cefee.js delete mode 100644 assets/js/cc17e890.5eef9301.js rename assets/js/{d8bb8b3a.e6e7f5f5.js => d8bb8b3a.fcfccbcf.js} (90%) rename assets/js/{e1be883e.80780071.js => e1be883e.0bd99653.js} (91%) create mode 100644 assets/js/f05c6541.adae4b93.js delete mode 100644 assets/js/main.371b7eca.js create mode 100644 assets/js/main.d18aa706.js rename assets/js/{main.371b7eca.js.LICENSE.txt => main.d18aa706.js.LICENSE.txt} (100%) delete mode 100644 assets/js/runtime~main.4510f3e2.js create mode 100644 assets/js/runtime~main.c50fa65d.js create mode 100644 newsletter/this-week-in-loongarch-32/index.html create mode 100644 porter/hackpascal/index.html create mode 100644 porter/jiangcuo/index.html create mode 100644 porter/phorcys/index.html create mode 100644 project/openwrt/index.html create mode 100644 project/proxmox-ve/index.html create mode 100644 search-index-8c89b86a.json delete mode 100644 search-index-91caf89d.json diff --git a/404.html b/404.html index 710fbca5..a0f14ea0 100644 --- a/404.html +++ b/404.html @@ -13,8 +13,8 @@ - - + +
跳到主要内容

找不到页面

我们找不到您要找的页面。

请联系原始链接来源网站的所有者,并告知他们链接已损坏。

diff --git a/asmdb/index.html b/asmdb/index.html index 7bebbe19..8c2bcc46 100644 --- a/asmdb/index.html +++ b/asmdb/index.html @@ -13,8 +13,8 @@ - - + +
跳到主要内容
以龙芯官方指定的指令助记符、汇编语法展示下列内容
要看哪些指令?
diff --git a/assets/js/143c1d44.bc1b5640.js b/assets/js/143c1d44.bc1b5640.js new file mode 100644 index 00000000..261fca4e --- /dev/null +++ b/assets/js/143c1d44.bc1b5640.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkareweloongyet=self.webpackChunkareweloongyet||[]).push([[3853],{6223:e=>{e.exports=JSON.parse('{"name":"Jiang Cuo","kind":0,"url":"","githubUsername":"jiangcuo","giteeUsername":"jiangcuo"}')}}]); \ No newline at end of file diff --git a/assets/js/169ddf7d.dcc982ee.js b/assets/js/169ddf7d.51b6d47c.js similarity index 89% rename from assets/js/169ddf7d.dcc982ee.js rename to assets/js/169ddf7d.51b6d47c.js index 48817808..3af0c7d9 100644 --- a/assets/js/169ddf7d.dcc982ee.js +++ b/assets/js/169ddf7d.51b6d47c.js @@ -1 +1 @@ -"use strict";(self.webpackChunkareweloongyet=self.webpackChunkareweloongyet||[]).push([[2487],{3752:e=>{e.exports=JSON.parse('{"label":"\u6bcf\u5468\u4e00\u9f99","permalink":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99","allTagsPath":"/newsletter/tags","count":31,"unlisted":false}')}}]); \ No newline at end of file +"use strict";(self.webpackChunkareweloongyet=self.webpackChunkareweloongyet||[]).push([[2487],{3752:e=>{e.exports=JSON.parse('{"label":"\u6bcf\u5468\u4e00\u9f99","permalink":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99","allTagsPath":"/newsletter/tags","count":32,"unlisted":false}')}}]); \ No newline at end of file diff --git a/assets/js/18bbda43.f2676be5.js b/assets/js/18bbda43.5129720b.js similarity index 80% rename from assets/js/18bbda43.f2676be5.js rename to assets/js/18bbda43.5129720b.js index 36899700..6445d1e8 100644 --- a/assets/js/18bbda43.f2676be5.js +++ b/assets/js/18bbda43.5129720b.js @@ -1 +1 @@ -"use strict";(self.webpackChunkareweloongyet=self.webpackChunkareweloongyet||[]).push([[3113],{5532:e=>{e.exports=JSON.parse('[{"label":"\u6bcf\u5468\u4e00\u9f99","permalink":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99","count":31}]')}}]); \ No newline at end of file +"use strict";(self.webpackChunkareweloongyet=self.webpackChunkareweloongyet||[]).push([[3113],{5532:e=>{e.exports=JSON.parse('[{"label":"\u6bcf\u5468\u4e00\u9f99","permalink":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99","count":32}]')}}]); \ No newline at end of file diff --git a/assets/js/1a849a5f.ae27c4a6.js b/assets/js/1a849a5f.1223010f.js similarity index 79% rename from assets/js/1a849a5f.ae27c4a6.js rename to assets/js/1a849a5f.1223010f.js index 55d67f29..370cadfc 100644 --- a/assets/js/1a849a5f.ae27c4a6.js +++ b/assets/js/1a849a5f.1223010f.js @@ -1 +1 @@ -"use strict";(self.webpackChunkareweloongyet=self.webpackChunkareweloongyet||[]).push([[704],{7083:e=>{e.exports=JSON.parse('{"title":"Recent posts","items":[{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 31 \u671f","permalink":"/newsletter/this-week-in-loongarch-31","unlisted":false},{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 30 \u671f","permalink":"/newsletter/this-week-in-loongarch-30","unlisted":false},{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 29 \u671f","permalink":"/newsletter/this-week-in-loongarch-29","unlisted":false},{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 28 \u671f","permalink":"/newsletter/this-week-in-loongarch-28","unlisted":false},{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 27 \u671f","permalink":"/newsletter/this-week-in-loongarch-27","unlisted":false}]}')}}]); \ No newline at end of file +"use strict";(self.webpackChunkareweloongyet=self.webpackChunkareweloongyet||[]).push([[704],{7083:e=>{e.exports=JSON.parse('{"title":"Recent posts","items":[{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 32 \u671f","permalink":"/newsletter/this-week-in-loongarch-32","unlisted":false},{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 31 \u671f","permalink":"/newsletter/this-week-in-loongarch-31","unlisted":false},{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 30 \u671f","permalink":"/newsletter/this-week-in-loongarch-30","unlisted":false},{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 29 \u671f","permalink":"/newsletter/this-week-in-loongarch-29","unlisted":false},{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 28 \u671f","permalink":"/newsletter/this-week-in-loongarch-28","unlisted":false}]}')}}]); \ No newline at end of file diff --git a/assets/js/1d0f744e.c7baa4ec.js b/assets/js/1d0f744e.eb8f174f.js similarity index 90% rename from assets/js/1d0f744e.c7baa4ec.js rename to assets/js/1d0f744e.eb8f174f.js index fd9c2a1a..c5e07334 100644 --- a/assets/js/1d0f744e.c7baa4ec.js +++ b/assets/js/1d0f744e.eb8f174f.js @@ -1 +1 @@ -"use strict";(self.webpackChunkareweloongyet=self.webpackChunkareweloongyet||[]).push([[2145],{9167:e=>{e.exports=JSON.parse('{"permalink":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99","page":1,"postsPerPage":10,"totalPages":4,"totalCount":31,"nextPage":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99/page/2","blogDescription":"\u9f99\u67b6\u6784\xae\u65b0\u4e16\u754c\u751f\u6001\u5efa\u8bbe\u5468\u62a5\u300a\u6bcf\u5468\u4e00\u9f99\u300b\uff08This Week in LoongArch\uff09\u3002\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch\xae \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01","blogTitle":"\u6bcf\u5468\u4e00\u9f99"}')}}]); \ No newline at end of file +"use strict";(self.webpackChunkareweloongyet=self.webpackChunkareweloongyet||[]).push([[2145],{9167:e=>{e.exports=JSON.parse('{"permalink":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99","page":1,"postsPerPage":10,"totalPages":4,"totalCount":32,"nextPage":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99/page/2","blogDescription":"\u9f99\u67b6\u6784\xae\u65b0\u4e16\u754c\u751f\u6001\u5efa\u8bbe\u5468\u62a5\u300a\u6bcf\u5468\u4e00\u9f99\u300b\uff08This Week in LoongArch\uff09\u3002\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch\xae \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01","blogTitle":"\u6bcf\u5468\u4e00\u9f99"}')}}]); \ No newline at end of file diff --git a/assets/js/316c37ba.68cc5d46.js b/assets/js/316c37ba.4026e8b7.js similarity index 90% rename from assets/js/316c37ba.68cc5d46.js rename to assets/js/316c37ba.4026e8b7.js index 36adb020..87756605 100644 --- a/assets/js/316c37ba.68cc5d46.js +++ b/assets/js/316c37ba.4026e8b7.js @@ -1 +1 @@ -"use strict";(self.webpackChunkareweloongyet=self.webpackChunkareweloongyet||[]).push([[889],{9251:e=>{e.exports=JSON.parse('{"permalink":"/newsletter/page/2","page":2,"postsPerPage":10,"totalPages":4,"totalCount":31,"previousPage":"/newsletter","nextPage":"/newsletter/page/3","blogDescription":"\u9f99\u67b6\u6784\xae\u65b0\u4e16\u754c\u751f\u6001\u5efa\u8bbe\u5468\u62a5\u300a\u6bcf\u5468\u4e00\u9f99\u300b\uff08This Week in LoongArch\uff09\u3002\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch\xae \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01","blogTitle":"\u6bcf\u5468\u4e00\u9f99"}')}}]); \ No newline at end of file +"use strict";(self.webpackChunkareweloongyet=self.webpackChunkareweloongyet||[]).push([[889],{9251:e=>{e.exports=JSON.parse('{"permalink":"/newsletter/page/2","page":2,"postsPerPage":10,"totalPages":4,"totalCount":32,"previousPage":"/newsletter","nextPage":"/newsletter/page/3","blogDescription":"\u9f99\u67b6\u6784\xae\u65b0\u4e16\u754c\u751f\u6001\u5efa\u8bbe\u5468\u62a5\u300a\u6bcf\u5468\u4e00\u9f99\u300b\uff08This Week in LoongArch\uff09\u3002\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch\xae \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01","blogTitle":"\u6bcf\u5468\u4e00\u9f99"}')}}]); \ No newline at end of file diff --git a/assets/js/35a1c358.02ae1d4c.js b/assets/js/35a1c358.3d936de2.js similarity index 91% rename from assets/js/35a1c358.02ae1d4c.js rename to assets/js/35a1c358.3d936de2.js index 45a7e678..e61f5a98 100644 --- a/assets/js/35a1c358.02ae1d4c.js +++ b/assets/js/35a1c358.3d936de2.js @@ -1 +1 @@ -"use strict";(self.webpackChunkareweloongyet=self.webpackChunkareweloongyet||[]).push([[3207],{3881:e=>{e.exports=JSON.parse('{"permalink":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99/page/2","page":2,"postsPerPage":10,"totalPages":4,"totalCount":31,"previousPage":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99","nextPage":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99/page/3","blogDescription":"\u9f99\u67b6\u6784\xae\u65b0\u4e16\u754c\u751f\u6001\u5efa\u8bbe\u5468\u62a5\u300a\u6bcf\u5468\u4e00\u9f99\u300b\uff08This Week in LoongArch\uff09\u3002\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch\xae \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01","blogTitle":"\u6bcf\u5468\u4e00\u9f99"}')}}]); \ No newline at end of file +"use strict";(self.webpackChunkareweloongyet=self.webpackChunkareweloongyet||[]).push([[3207],{3881:e=>{e.exports=JSON.parse('{"permalink":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99/page/2","page":2,"postsPerPage":10,"totalPages":4,"totalCount":32,"previousPage":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99","nextPage":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99/page/3","blogDescription":"\u9f99\u67b6\u6784\xae\u65b0\u4e16\u754c\u751f\u6001\u5efa\u8bbe\u5468\u62a5\u300a\u6bcf\u5468\u4e00\u9f99\u300b\uff08This Week in LoongArch\uff09\u3002\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch\xae \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01","blogTitle":"\u6bcf\u5468\u4e00\u9f99"}')}}]); \ No newline at end of file diff --git a/assets/js/37a7b374.3b64da3e.js b/assets/js/37a7b374.52f310f0.js similarity index 89% rename from assets/js/37a7b374.3b64da3e.js rename to assets/js/37a7b374.52f310f0.js index 7522beef..e2ab026f 100644 --- a/assets/js/37a7b374.3b64da3e.js +++ b/assets/js/37a7b374.52f310f0.js @@ -1 +1 @@ -"use strict";(self.webpackChunkareweloongyet=self.webpackChunkareweloongyet||[]).push([[6232],{9038:e=>{e.exports=JSON.parse('{"permalink":"/newsletter/page/4","page":4,"postsPerPage":10,"totalPages":4,"totalCount":31,"previousPage":"/newsletter/page/3","blogDescription":"\u9f99\u67b6\u6784\xae\u65b0\u4e16\u754c\u751f\u6001\u5efa\u8bbe\u5468\u62a5\u300a\u6bcf\u5468\u4e00\u9f99\u300b\uff08This Week in LoongArch\uff09\u3002\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch\xae \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01","blogTitle":"\u6bcf\u5468\u4e00\u9f99"}')}}]); \ No newline at end of file +"use strict";(self.webpackChunkareweloongyet=self.webpackChunkareweloongyet||[]).push([[6232],{9038:e=>{e.exports=JSON.parse('{"permalink":"/newsletter/page/4","page":4,"postsPerPage":10,"totalPages":4,"totalCount":32,"previousPage":"/newsletter/page/3","blogDescription":"\u9f99\u67b6\u6784\xae\u65b0\u4e16\u754c\u751f\u6001\u5efa\u8bbe\u5468\u62a5\u300a\u6bcf\u5468\u4e00\u9f99\u300b\uff08This Week in LoongArch\uff09\u3002\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch\xae \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01","blogTitle":"\u6bcf\u5468\u4e00\u9f99"}')}}]); \ No newline at end of file diff --git a/assets/js/469a9e88.9fb9c642.js b/assets/js/469a9e88.7bf437b0.js similarity index 89% rename from assets/js/469a9e88.9fb9c642.js rename to assets/js/469a9e88.7bf437b0.js index a626bc1f..e28ab25c 100644 --- a/assets/js/469a9e88.9fb9c642.js +++ b/assets/js/469a9e88.7bf437b0.js @@ -1 +1 @@ -"use strict";(self.webpackChunkareweloongyet=self.webpackChunkareweloongyet||[]).push([[6150],{8016:e=>{e.exports=JSON.parse('{"label":"\u6bcf\u5468\u4e00\u9f99","permalink":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99","allTagsPath":"/newsletter/tags","count":31,"unlisted":false}')}}]); \ No newline at end of file +"use strict";(self.webpackChunkareweloongyet=self.webpackChunkareweloongyet||[]).push([[6150],{8016:e=>{e.exports=JSON.parse('{"label":"\u6bcf\u5468\u4e00\u9f99","permalink":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99","allTagsPath":"/newsletter/tags","count":32,"unlisted":false}')}}]); \ No newline at end of file diff --git a/assets/js/47159631.4f9d5cb6.js b/assets/js/47159631.072d66ee.js similarity index 50% rename from assets/js/47159631.4f9d5cb6.js rename to assets/js/47159631.072d66ee.js index 99fa74ff..4583611f 100644 --- a/assets/js/47159631.4f9d5cb6.js +++ b/assets/js/47159631.072d66ee.js @@ -1 +1 @@ -"use strict";(self.webpackChunkareweloongyet=self.webpackChunkareweloongyet||[]).push([[6882],{3318:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>a,default:()=>h,frontMatter:()=>s,metadata:()=>i,toc:()=>l});var o=n(5893),r=n(1151);const s={slug:"this-week-in-loongarch-31",title:"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 31 \u671f",authors:["xen0n"],date:new Date("2024-01-02T15:25:00.000Z"),tags:["\u6bcf\u5468\u4e00\u9f99"]},a=void 0,i={permalink:"/newsletter/this-week-in-loongarch-31",editUrl:"https://github.com/loongson-community/areweloongyet/newsletter/2024-01-01-this-week-in-loongarch-31.md",source:"@site/newsletter/2024-01-01-this-week-in-loongarch-31.md",title:"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 31 \u671f",description:"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01",date:"2024-01-02T15:25:00.000Z",formattedDate:"2024\u5e741\u67082\u65e5",tags:[{label:"\u6bcf\u5468\u4e00\u9f99",permalink:"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99"}],readingTime:4.845,hasTruncateMarker:!0,authors:[{name:"WANG Xuerui",title:"\ud83d\udc32\u9f99\u95e8\u5ba2\u6808\u6253\u6742\u7684",url:"https://github.com/xen0n",imageURL:"https://github.com/xen0n.png",key:"xen0n"}],frontMatter:{slug:"this-week-in-loongarch-31",title:"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 31 \u671f",authors:["xen0n"],date:"2024-01-02T15:25:00.000Z",tags:["\u6bcf\u5468\u4e00\u9f99"]},unlisted:!1,nextItem:{title:"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 30 \u671f",permalink:"/newsletter/this-week-in-loongarch-30"}},c={authorsImageUrls:[void 0]},l=[];function u(e){const t={p:"p",...(0,r.a)(),...e.components};return(0,o.jsx)(t.p,{children:"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch\xae \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01\n\u4e0a\u5468\u7684\u8fdb\u5c55\u4e3b\u8981\u6709 Linux \u548c\u5de5\u5177\u94fe\u3002\n\u8be6\u60c5\u70b9\u8fdb\u6765\u770b\uff01"})}function h(e={}){const{wrapper:t}={...(0,r.a)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(u,{...e})}):u(e)}},1151:(e,t,n)=>{n.d(t,{Z:()=>i,a:()=>a});var o=n(7294);const r={},s=o.createContext(r);function a(e){const t=o.useContext(s);return o.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function i(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),o.createElement(s.Provider,{value:t},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkareweloongyet=self.webpackChunkareweloongyet||[]).push([[6882],{3318:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>a,default:()=>h,frontMatter:()=>s,metadata:()=>i,toc:()=>c});var o=n(5893),r=n(1151);const s={slug:"this-week-in-loongarch-31",title:"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 31 \u671f",authors:["xen0n"],date:new Date("2024-01-02T15:25:00.000Z"),tags:["\u6bcf\u5468\u4e00\u9f99"]},a=void 0,i={permalink:"/newsletter/this-week-in-loongarch-31",editUrl:"https://github.com/loongson-community/areweloongyet/newsletter/2024-01-01-this-week-in-loongarch-31.md",source:"@site/newsletter/2024-01-01-this-week-in-loongarch-31.md",title:"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 31 \u671f",description:"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01",date:"2024-01-02T15:25:00.000Z",formattedDate:"2024\u5e741\u67082\u65e5",tags:[{label:"\u6bcf\u5468\u4e00\u9f99",permalink:"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99"}],readingTime:4.845,hasTruncateMarker:!0,authors:[{name:"WANG Xuerui",title:"\ud83d\udc32\u9f99\u95e8\u5ba2\u6808\u6253\u6742\u7684",url:"https://github.com/xen0n",imageURL:"https://github.com/xen0n.png",key:"xen0n"}],frontMatter:{slug:"this-week-in-loongarch-31",title:"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 31 \u671f",authors:["xen0n"],date:"2024-01-02T15:25:00.000Z",tags:["\u6bcf\u5468\u4e00\u9f99"]},unlisted:!1,prevItem:{title:"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 32 \u671f",permalink:"/newsletter/this-week-in-loongarch-32"},nextItem:{title:"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 30 \u671f",permalink:"/newsletter/this-week-in-loongarch-30"}},l={authorsImageUrls:[void 0]},c=[];function u(e){const t={p:"p",...(0,r.a)(),...e.components};return(0,o.jsx)(t.p,{children:"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch\xae \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01\n\u4e0a\u5468\u7684\u8fdb\u5c55\u4e3b\u8981\u6709 Linux \u548c\u5de5\u5177\u94fe\u3002\n\u8be6\u60c5\u70b9\u8fdb\u6765\u770b\uff01"})}function h(e={}){const{wrapper:t}={...(0,r.a)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(u,{...e})}):u(e)}},1151:(e,t,n)=>{n.d(t,{Z:()=>i,a:()=>a});var o=n(7294);const r={},s=o.createContext(r);function a(e){const t=o.useContext(s);return o.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function i(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),o.createElement(s.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/4d72142f.57a69cc7.js b/assets/js/4d72142f.57a69cc7.js deleted file mode 100644 index 753b70ad..00000000 --- a/assets/js/4d72142f.57a69cc7.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkareweloongyet=self.webpackChunkareweloongyet||[]).push([[2821],{5506:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>a,default:()=>h,frontMatter:()=>s,metadata:()=>i,toc:()=>c});var o=n(5893),r=n(1151);const s={slug:"this-week-in-loongarch-24",title:"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 24 \u671f",authors:["xen0n"],date:new Date("2023-11-13T15:50:00.000Z"),tags:["\u6bcf\u5468\u4e00\u9f99"]},a=void 0,i={permalink:"/newsletter/this-week-in-loongarch-24",editUrl:"https://github.com/loongson-community/areweloongyet/newsletter/2023-11-13-this-week-in-loongarch-24.md",source:"@site/newsletter/2023-11-13-this-week-in-loongarch-24.md",title:"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 24 \u671f",description:"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01",date:"2023-11-13T15:50:00.000Z",formattedDate:"2023\u5e7411\u670813\u65e5",tags:[{label:"\u6bcf\u5468\u4e00\u9f99",permalink:"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99"}],readingTime:12.56,hasTruncateMarker:!0,authors:[{name:"WANG Xuerui",title:"\ud83d\udc32\u9f99\u95e8\u5ba2\u6808\u6253\u6742\u7684",url:"https://github.com/xen0n",imageURL:"https://github.com/xen0n.png",key:"xen0n"}],frontMatter:{slug:"this-week-in-loongarch-24",title:"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 24 \u671f",authors:["xen0n"],date:"2023-11-13T15:50:00.000Z",tags:["\u6bcf\u5468\u4e00\u9f99"]},unlisted:!1,prevItem:{title:"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 25 \u671f",permalink:"/newsletter/this-week-in-loongarch-25"},nextItem:{title:"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 23 \u671f",permalink:"/newsletter/this-week-in-loongarch-23"}},l={authorsImageUrls:[void 0]},c=[];function u(e){const t={p:"p",...(0,r.a)(),...e.components};return(0,o.jsx)(t.p,{children:"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch\xae \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01\n\u4e0a\u5468\u7684\u8fdb\u5c55\u4e3b\u8981\u6709 Linux\u3001\u5de5\u5177\u94fe\uff0c\u4ee5\u53ca GSGPU \u9a71\u52a8\u5411\u4e3b\u7ebf\u5185\u6838\u7248\u672c\u7684\u79fb\u690d\u6210\u679c\u3002\n\u8be6\u60c5\u70b9\u8fdb\u6765\u770b\uff01"})}function h(e={}){const{wrapper:t}={...(0,r.a)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(u,{...e})}):u(e)}},1151:(e,t,n)=>{n.d(t,{Z:()=>i,a:()=>a});var o=n(7294);const r={},s=o.createContext(r);function a(e){const t=o.useContext(s);return o.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function i(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),o.createElement(s.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/4d72142f.5f3b3d98.js b/assets/js/4d72142f.5f3b3d98.js new file mode 100644 index 00000000..a4704e36 --- /dev/null +++ b/assets/js/4d72142f.5f3b3d98.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkareweloongyet=self.webpackChunkareweloongyet||[]).push([[2821],{5506:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>a,default:()=>h,frontMatter:()=>s,metadata:()=>i,toc:()=>c});var o=n(5893),r=n(1151);const s={slug:"this-week-in-loongarch-24",title:"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 24 \u671f",authors:["xen0n"],date:new Date("2023-11-13T15:50:00.000Z"),tags:["\u6bcf\u5468\u4e00\u9f99"]},a=void 0,i={permalink:"/newsletter/this-week-in-loongarch-24",editUrl:"https://github.com/loongson-community/areweloongyet/newsletter/2023-11-13-this-week-in-loongarch-24.md",source:"@site/newsletter/2023-11-13-this-week-in-loongarch-24.md",title:"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 24 \u671f",description:"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01",date:"2023-11-13T15:50:00.000Z",formattedDate:"2023\u5e7411\u670813\u65e5",tags:[{label:"\u6bcf\u5468\u4e00\u9f99",permalink:"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99"}],readingTime:12.565,hasTruncateMarker:!0,authors:[{name:"WANG Xuerui",title:"\ud83d\udc32\u9f99\u95e8\u5ba2\u6808\u6253\u6742\u7684",url:"https://github.com/xen0n",imageURL:"https://github.com/xen0n.png",key:"xen0n"}],frontMatter:{slug:"this-week-in-loongarch-24",title:"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 24 \u671f",authors:["xen0n"],date:"2023-11-13T15:50:00.000Z",tags:["\u6bcf\u5468\u4e00\u9f99"]},unlisted:!1,prevItem:{title:"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 25 \u671f",permalink:"/newsletter/this-week-in-loongarch-25"},nextItem:{title:"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 23 \u671f",permalink:"/newsletter/this-week-in-loongarch-23"}},l={authorsImageUrls:[void 0]},c=[];function u(e){const t={p:"p",...(0,r.a)(),...e.components};return(0,o.jsx)(t.p,{children:"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch\xae \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01\n\u4e0a\u5468\u7684\u8fdb\u5c55\u4e3b\u8981\u6709 Linux\u3001\u5de5\u5177\u94fe\uff0c\u4ee5\u53ca GSGPU \u9a71\u52a8\u5411\u4e3b\u7ebf\u5185\u6838\u7248\u672c\u7684\u79fb\u690d\u6210\u679c\u3002\n\u8be6\u60c5\u70b9\u8fdb\u6765\u770b\uff01"})}function h(e={}){const{wrapper:t}={...(0,r.a)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(u,{...e})}):u(e)}},1151:(e,t,n)=>{n.d(t,{Z:()=>i,a:()=>a});var o=n(7294);const r={},s=o.createContext(r);function a(e){const t=o.useContext(s);return o.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function i(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),o.createElement(s.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/5cc6810a.fce72268.js b/assets/js/5cc6810a.05fafc42.js similarity index 89% rename from assets/js/5cc6810a.fce72268.js rename to assets/js/5cc6810a.05fafc42.js index 0288da59..12cabd5c 100644 --- a/assets/js/5cc6810a.fce72268.js +++ b/assets/js/5cc6810a.05fafc42.js @@ -1 +1 @@ -"use strict";(self.webpackChunkareweloongyet=self.webpackChunkareweloongyet||[]).push([[3493],{7516:e=>{e.exports=JSON.parse('{"permalink":"/newsletter","page":1,"postsPerPage":10,"totalPages":4,"totalCount":31,"nextPage":"/newsletter/page/2","blogDescription":"\u9f99\u67b6\u6784\xae\u65b0\u4e16\u754c\u751f\u6001\u5efa\u8bbe\u5468\u62a5\u300a\u6bcf\u5468\u4e00\u9f99\u300b\uff08This Week in LoongArch\uff09\u3002\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch\xae \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01","blogTitle":"\u6bcf\u5468\u4e00\u9f99"}')}}]); \ No newline at end of file +"use strict";(self.webpackChunkareweloongyet=self.webpackChunkareweloongyet||[]).push([[3493],{7516:e=>{e.exports=JSON.parse('{"permalink":"/newsletter","page":1,"postsPerPage":10,"totalPages":4,"totalCount":32,"nextPage":"/newsletter/page/2","blogDescription":"\u9f99\u67b6\u6784\xae\u65b0\u4e16\u754c\u751f\u6001\u5efa\u8bbe\u5468\u62a5\u300a\u6bcf\u5468\u4e00\u9f99\u300b\uff08This Week in LoongArch\uff09\u3002\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch\xae \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01","blogTitle":"\u6bcf\u5468\u4e00\u9f99"}')}}]); \ No newline at end of file diff --git a/assets/js/5e1e6895.816e2082.js b/assets/js/5e1e6895.816e2082.js new file mode 100644 index 00000000..53dc2ea5 --- /dev/null +++ b/assets/js/5e1e6895.816e2082.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkareweloongyet=self.webpackChunkareweloongyet||[]).push([[827],{2233:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>t,contentTitle:()=>a,default:()=>d,frontMatter:()=>i,metadata:()=>c,toc:()=>o});var l=n(5893),r=n(1151);const i={slug:"this-week-in-loongarch-31",title:"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 31 \u671f",authors:["xen0n"],date:new Date("2024-01-02T15:25:00.000Z"),tags:["\u6bcf\u5468\u4e00\u9f99"]},a=void 0,c={permalink:"/newsletter/this-week-in-loongarch-31",editUrl:"https://github.com/loongson-community/areweloongyet/newsletter/2024-01-01-this-week-in-loongarch-31.md",source:"@site/newsletter/2024-01-01-this-week-in-loongarch-31.md",title:"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 31 \u671f",description:"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01",date:"2024-01-02T15:25:00.000Z",formattedDate:"2024\u5e741\u67082\u65e5",tags:[{label:"\u6bcf\u5468\u4e00\u9f99",permalink:"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99"}],readingTime:4.845,hasTruncateMarker:!0,authors:[{name:"WANG Xuerui",title:"\ud83d\udc32\u9f99\u95e8\u5ba2\u6808\u6253\u6742\u7684",url:"https://github.com/xen0n",imageURL:"https://github.com/xen0n.png",key:"xen0n"}],frontMatter:{slug:"this-week-in-loongarch-31",title:"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 31 \u671f",authors:["xen0n"],date:"2024-01-02T15:25:00.000Z",tags:["\u6bcf\u5468\u4e00\u9f99"]},unlisted:!1,prevItem:{title:"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 32 \u671f",permalink:"/newsletter/this-week-in-loongarch-32"},nextItem:{title:"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 30 \u671f",permalink:"/newsletter/this-week-in-loongarch-30"}},t={authorsImageUrls:[void 0]},o=[{value:"\u5148\u300c\u9a6c\u300d\u518d\u770b",id:"marked-projects",level:2},{value:"Linux",id:"linux",level:3},{value:"\u5de5\u5177\u94fe",id:"toolchain",level:3},{value:"binutils",id:"binutils",level:4},{value:"GCC",id:"gcc",level:4},{value:"LLVM",id:"llvm",level:4},{value:"\u6742\u95fb\u64ad\u62a5",id:"assorted-news",level:2},{value:"\u793e\u533a\u6574\u6d3b",id:"grins",level:2},{value:"\u5f20\u8d34\u680f",id:"bulletin",level:2}];function h(e){const s={a:"a",code:"code",h2:"h2",h3:"h3",h4:"h4",li:"li",p:"p",small:"small",ul:"ul",...(0,r.a)(),...e.components};return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(s.p,{children:"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch\xae \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01\n\u4e0a\u5468\u7684\u8fdb\u5c55\u4e3b\u8981\u6709 Linux \u548c\u5de5\u5177\u94fe\u3002\n\u8be6\u60c5\u70b9\u8fdb\u6765\u770b\uff01"}),"\n",(0,l.jsx)(s.p,{children:"\u5982\u65e0\u7279\u522b\u8bf4\u660e\uff0c\u6587\u4e2d\u63d0\u53ca\u7684\u65e5\u671f\u3001\u65f6\u95f4\u90fd\u4e3a\u5317\u4eac\u65f6\u95f4\uff08UTC+8\uff09\u3002"}),"\n",(0,l.jsxs)(s.p,{children:["\u672c\u671f\u5468\u62a5\u7684\u5b9e\u9645\u53d1\u7a3f\u65f6\u95f4\u662f\u5468\u4e8c\u665a\u95f4\uff0c\u56e0\u4e3a\u5468\u4e00\u662f\u5143\u65e6\u5047\u671f\u3002\u65b0\u5e74\u5feb\u4e50 ","\ud83c\udf89","\uff01"]}),"\n",(0,l.jsx)(s.h2,{id:"marked-projects",children:"\u5148\u300c\u9a6c\u300d\u518d\u770b"}),"\n",(0,l.jsx)(s.p,{children:"\u672c\u680f\u76ee\u7684\u5185\u5bb9\u5177\u6709\u4e00\u5b9a\u5ef6\u7eed\u6027\uff0c\u5c06\u6301\u7eed\u8ffd\u8e2a\u62a5\u9053 LoongArch\xae \u9886\u57df\u7684\u91cd\u8981\u6216\u957f\u671f\u9879\u76ee\uff08\u5751\uff09\u3002"}),"\n",(0,l.jsx)(s.h3,{id:"linux",children:"Linux"}),"\n",(0,l.jsxs)(s.p,{children:[(0,l.jsx)(s.a,{href:"https://github.com/xry111",className:"link--overseas",children:"Xi Ruoyao"})," ",(0,l.jsx)(s.a,{href:"https://lore.kernel.org/loongarch/20240102123706.6099-2-xry111@xry111.site/",className:"link--overseas",children:"\u67e5\u660e\u5e76\u4fee\u590d\u4e86"}),"\u9f99\u67b6\u6784\u4e0a\nLinux \u4e00\u76f4\u4ee5\u6765\u7684",(0,l.jsx)(s.a,{href:"https://github.com/loongson-community/discussions/issues/7",className:"link--overseas",children:"\u5076\u73b0\u95ee\u9898"}),"\uff1a\n\u521b\u5efa\u65b0\u8fdb\u7a0b\u65f6\uff0c\u65b0\u8fdb\u7a0b\u53ef\u80fd\u7ee7\u627f\u5230\u4e0d\u5e72\u51c0\u7684 FCSR\uff08\u6d6e\u70b9\u63a7\u5236\u72b6\u6001\u5bc4\u5b58\u5668\uff09\u5185\u5bb9\uff0c\u5bfc\u81f4\u540e\u7eed\u505a\u6d6e\u70b9\u64cd\u4f5c\u65f6\u8fdf\u65e9\u53d1\u751f\u975e\u9884\u671f\u884c\u4e3a\u751a\u81f3\u5d29\u6e83\u3002\n\u6b64 bug \u662f\u4ece MIPS \u5185\u6838\u5e26\u6765\u7684\u9057\u4ea7\u3002\u7531\u4e8e MIPS \u7684 FCSR \u521d\u59cb\u5316\u9700\u8981\u8003\u8651\u7a0b\u5e8f\u7684\u6267\u884c\u57df\uff08personality\uff09\uff0cXi Ruoyao \u4e0d\u77e5\u9053\u600e\u4e48\u4fee\uff0c\n\u6240\u4ee5\u53ea\u80fd",(0,l.jsx)(s.a,{href:"https://lore.kernel.org/linux-mips/7a6aa1bbdbbe2e63ae96ff163fab0349f58f1b9e.camel@xry111.site/",className:"link--overseas",children:"\u62a5\u544a\u4e86"}),"\u8be5\u95ee\u9898\uff0c\n\u7b49\u5f85 MIPS \u76f8\u5173\u7ef4\u62a4\u8005\u5904\u7406\u3002"]}),"\n",(0,l.jsxs)(s.p,{children:[(0,l.jsx)(s.a,{href:"https://github.com/xen0n",className:"link--overseas",children:"xen0n"})," ",(0,l.jsx)(s.a,{href:"https://lore.kernel.org/loongarch/20231227070317.1936234-1-kernel@xen0n.name/",className:"link--overseas",children:"\u4fee\u590d\u4e86"}),"\u4f7f\u7528\u6700\u65b0\nbinutils\u3001gcc \u6784\u5efa\u5185\u6838\u65f6 ",(0,l.jsx)(s.code,{children:"modpost"})," \u4f1a\u5d29\u6e83\u7684\u95ee\u9898\u3002"]}),"\n",(0,l.jsx)(s.h3,{id:"toolchain",children:"\u5de5\u5177\u94fe"}),"\n",(0,l.jsx)(s.h4,{id:"binutils",children:"binutils"}),"\n",(0,l.jsxs)(s.p,{children:["\u7531\u5e38\u4f73\u741b\u540c\u5b66\u64cd\u5200\u7684\uff0c\u5468\u62a5\u7b2c 27 \u671f",(0,l.jsx)(s.a,{href:"/newsletter/this-week-in-loongarch-27#abi",children:"\u63d0\u5230\u7684"})," LoongArch\nTLS LE relaxation \u7279\u6027\u7684 binutils \u90e8\u5206\uff0c\u6210\u529f\u8fdb\u5165\u4e3b\u7ebf\u4e86\u3002\n\u8ba9\u6211\u4eec\u795d\u8d3a ","t\u0101"," \u52a0\u5165\u4e0a\u6e38\u8d21\u732e\u8005\u7684\u884c\u5217 ","\ud83c\udf89","\uff01"]}),"\n",(0,l.jsx)(s.h4,{id:"gcc",children:"GCC"}),"\n",(0,l.jsxs)(s.p,{children:[(0,l.jsx)(s.a,{href:"https://github.com/xry111",className:"link--overseas",children:"Xi Ruoyao"})," ",(0,l.jsx)(s.a,{href:"https://gcc.gnu.org/pipermail/gcc-patches/2023-December/641443.html",className:"link--overseas",children:"\u4fee\u590d\u4e86"}),"\nxen0n ",(0,l.jsx)(s.a,{href:"https://gcc.gnu.org/PR113148",className:"link--overseas",children:"\u62a5\u544a\u7684"})," bug:\nXWayland \u7b49\u8f6f\u4ef6\u4e2d\u5b58\u5728\u4e2a\u522b\u5185\u542b\u5927\u91cf\u6d6e\u70b9\u6bd4\u8f83\u64cd\u4f5c\u7684\u51fd\u6570\uff0c\u7f16\u8bd1\u8fd9\u4e9b\u51fd\u6570\u65f6 gcc \u4f1a\u5d29\u6e83\u3002"]}),"\n",(0,l.jsxs)(s.p,{children:["Xi Ruoyao \u8fd8",(0,l.jsx)(s.a,{href:"https://gcc.gnu.org/pipermail/gcc-patches/2023-December/641609.html",className:"link--overseas",children:"\u5141\u8bb8\u4e86"}),"\u5229\u7528\n",(0,l.jsx)(s.code,{children:"{,x}vf{min,max}"})," \u56db\u79cd\u6307\u4ee4\u6765\u5411\u91cf\u5316\u5faa\u73af\u4e2d\u7684\u53d6\u6700\u5927/\u6700\u5c0f\u503c\u64cd\u4f5c\u3002LoongArch \u7684\u8fd9\u56db\u79cd\u6307\u4ee4\u8bbe\u8ba1\u4e0a\u5c31\u7b26\u5408 IEEE 754-2008 \u8bed\u4e49\uff0c\n\u56e0\u800c\u53ef\u7528\u3002"]}),"\n",(0,l.jsxs)(s.p,{children:["\u5468\u62a5\u7b2c 30 \u671f",(0,l.jsx)(s.a,{href:"/newsletter/this-week-in-loongarch-30#gcc",children:"\u63d0\u5230\u7684"}),"\nXi Ruoyao \u5f53\u65f6\u300c\u6b63\u5728\u8c03\u6574\u300d\u7684\u8865\u4e01\uff0c\u73b0\u5df2\u5b8c\u6210\u6539\u8fdb\u5de5\u4f5c\uff0c",(0,l.jsx)(s.a,{href:"https://gcc.gnu.org/r14-6863",className:"link--overseas",children:"\u8fdb\u5165\u4e3b\u7ebf\u4e86"}),"\u3002"]}),"\n",(0,l.jsxs)(s.p,{children:["\u7531 Lulu Cheng \u5f00\u53d1\u7684\uff0c\u4e0a\u4e00\u8282\u4e2d\u63d0\u5230\u7684 TLS LE relaxation \u7279\u6027\u7684 gcc \u90e8\u5206\uff0c\n\u4e5f",(0,l.jsx)(s.a,{href:"https://gcc.gnu.org/r14-6879",className:"link--overseas",children:"\u8fdb\u5165\u4e3b\u7ebf\u4e86"}),"\u3002"]}),"\n",(0,l.jsx)(s.h4,{id:"llvm",children:"LLVM"}),"\n",(0,l.jsxs)(s.p,{children:[(0,l.jsx)(s.a,{href:"https://github.com/yjijd",className:"link--overseas",children:"yjijd"})," \u6309\u7167 LoongArch psABI v2.30\uff0c",(0,l.jsx)(s.a,{href:"https://github.com/llvm/llvm-project/pull/74990",className:"link--overseas",children:"\u4fee\u590d\u4e86"}),"\u5148\u524d\u4f1a\u7528\u5411\u91cf\u5bc4\u5b58\u5668\u4f20\u9012\u5411\u91cf\u53c2\u6570\u7684\u95ee\u9898\u3002"]}),"\n",(0,l.jsxs)(s.p,{children:[(0,l.jsx)(s.a,{href:"https://github.com/wangleiat",className:"link--overseas",children:"wangleiat"})," \u4fee\u590d\u4e86\u4e00\u7cfb\u5217 SIMD \u4ee3\u7801\u751f\u6210\u4e0a\u7684\u9519\u8bef\uff1a"]}),"\n",(0,l.jsxs)(s.ul,{children:["\n",(0,l.jsxs)(s.li,{children:[(0,l.jsxs)(s.a,{href:"https://github.com/llvm/llvm-project/commit/da5378e87e11689d05a58198d6e15e9551916794",className:"link--overseas",children:[(0,l.jsx)(s.code,{children:"{,x}vbitseli.b"})," \u7684\u8bef\u7528"]}),"\uff0c"]}),"\n",(0,l.jsxs)(s.li,{children:[(0,l.jsxs)(s.a,{href:"https://github.com/llvm/llvm-project/commit/c7367f985e0d27aeb8bc993406d1b9f4ca307399",className:"link--overseas",children:[(0,l.jsx)(s.code,{children:"xvrepl128vei"})," \u7684\u8bef\u7528"]}),"\uff0c\u4ee5\u53ca"]}),"\n",(0,l.jsxs)(s.li,{children:[(0,l.jsxs)(s.a,{href:"https://github.com/llvm/llvm-project/commit/47c88bcd5de91522241cca1aaa1b7762ceb01394",className:"link--overseas",children:[(0,l.jsx)(s.code,{children:"vector_extract"})," \u5728 LASX \u4e0a\u7684\u9519\u8bef\u7f16\u8bd1\u7ed3\u679c"]}),"\u3002"]}),"\n"]}),"\n",(0,l.jsxs)(s.p,{children:["Go \u56e2\u961f\u7684 ",(0,l.jsx)(s.a,{href:"https://github.com/abner-chenc",className:"link--overseas",children:"abner-chenc"})," \u548c Xiaolin Zhao \u6765 LLVM \u4e0a\u6e38\u4e32\u95e8\u4e86\uff1a","t\u0101"," \u4eec\u7ed9 TSan\n",(0,l.jsx)(s.a,{href:"https://github.com/llvm/llvm-project/pull/72819",className:"link--overseas",children:"\u589e\u52a0\u4e86"})," Go ",(0,l.jsx)(s.code,{children:"loong64"})," \u652f\u6301\u3002"]}),"\n",(0,l.jsx)(s.h2,{id:"assorted-news",children:"\u6742\u95fb\u64ad\u62a5"}),"\n",(0,l.jsxs)(s.p,{children:["Slackwareloong \u7ef4\u62a4\u8005 ",(0,l.jsx)(s.a,{href:"https://github.com/shipujin",className:"link--overseas",children:"shipujin"})," \u8bf4\uff1aSlackware \u4e2d\u6587\u793e\u533a\u5728 Slackwareloong LTS 1.0 \u7cfb\u7edf\u4e0b\uff0c\n\u6210\u529f\u9a8c\u8bc1\u4e86\u6784\u5efa\u3001\u8fd0\u884c KDE Plasma 6 Beta 2 \u7248\u672c\u684c\u9762\u73af\u5883\u3002\n\u540e\u9762\u4f1a\u628a\u6784\u5efa\u597d\u7684\u76f8\u5173\u8f6f\u4ef6\u5305\u53d1\u5e03\u5230 Slackwareloong \u4e0b\u7684 KDE6 testing \u4ed3\u5e93\u3002\n\u611f\u8c22 shipujin \u63d0\u4f9b\u65b0\u95fb\u7ebf\u7d22\uff01"]}),"\n",(0,l.jsxs)(s.h2,{id:"grins",children:["\u793e\u533a\u6574\u6d3b",(0,l.jsx)(s.small,{children:"\u513f"})]}),"\n",(0,l.jsxs)(s.p,{children:["\u672c\u680f\u76ee\u63a5\u53d7\u4efb\u4f55\u7f51\u53cb\u7684\u6295\u7a3f\uff0c\u53ea\u8981\u5185\u5bb9\u4e0e LoongArch\xae \u6709\u5173\uff0c\u5e76\u53ef\u4ee5\u4e3a\u8bfb\u8005\u5e26\u6765\u4ef7\u503c\uff0c\n\u65e0\u8bba\u4e25\u8083\u8d21\u732e\uff08\u6574\u7684\u5927\u6d3b",(0,l.jsx)(s.small,{children:"\u513f"}),"\uff09\u6216\u662f\u535a\u541b\u4e00\u7b11\u90fd\u4e00\u6982\u6b22\u8fce\uff01"]}),"\n",(0,l.jsxs)(s.p,{children:["LoongArch \u975e\u5b98\u65b9\u5f00\u6e90\u793e\u533a\uff08LA UOSC\uff09\u7248\u4e3b",(0,l.jsx)(s.a,{href:"https://bbs.loongarch.org/u/4",className:"link--overseas",children:"\u675c\u6bd4"}),(0,l.jsx)(s.a,{href:"https://bbs.loongarch.org/d/351-lauosc-freebsd-ports",className:"link--overseas",children:"\u53d1\u8d77\u4e86"}),"\nFreeBSD \u79fb\u690d\u9879\u76ee\uff0c\u5de5\u4f5c\u8fdb\u5ea6",(0,l.jsx)(s.a,{href:"https://gitee.com/lauosc/freebsd",children:"\u653e\u5728\u4e86"})," Gitee \u4e0a\u3002\n\u65e0\u5c18\uff08yu shan wei\uff09\u540c\u5b66\u4e5f\u5355\u72ec",(0,l.jsx)(s.a,{href:"https://gitee.com/yushanwei/freebsd4loongarch",children:"\u7ef4\u62a4\u4e86"}),"\u8865\u4e01\u96c6\u5408\u3002\n\u611f\u8c22 ",(0,l.jsx)(s.a,{href:"https://github.com/haowuge",className:"link--overseas",children:"Haowu Ge"})," \u5728\u7fa4\u804a\u4e2d\u6295\u9012\u65b0\u95fb\u7ebf\u7d22\uff01"]}),"\n",(0,l.jsx)(s.h2,{id:"bulletin",children:"\u5f20\u8d34\u680f"}),"\n",(0,l.jsx)(s.p,{children:"\u672c\u680f\u76ee\u53ef\u4f9b\u5f20\u8d34\u516c\u76ca\u6027\u8d28\u7684\u5404\u79cd\u4fe1\u606f\u3002"}),"\n",(0,l.jsxs)(s.ul,{children:["\n",(0,l.jsxs)(s.li,{children:["\u53cb\u60c5\u6269\u6563\uff1a",(0,l.jsx)(s.a,{href:"https://aosc.io",className:"link--overseas",children:"\u5b89\u540c\u5f00\u6e90\u793e\u533a\uff08AOSC\uff09"}),"\u7684\u9f99\u67b6\u6784\u79fb\u690d\u4e3b\u7ebf\u5316\u5de5\u4f5c\u300c\u5408\u9f99\u300d\u4ecd\u5728\u5982\u706b\u5982\u837c\u8fdb\u884c\u4e2d\uff0c\n\u6b64\u5de5\u4f5c\u5b8c\u6210\u540e\u9f99\u67b6\u6784\u5c06\u5347\u683c\u4e3a AOSC OS \u7684 Tier 1 \u67b6\u6784\u3002\n\u6b22\u8fce\u540c\u5b66\u4eec\u8bd5\u7528\u3001\u53cd\u9988\uff0c\u4e5f\u6b22\u8fce\u6709\u5fd7\u4e4b\u58eb\u4e00\u540c\u52a0\u5165\uff08\u6c9f\u901a\u6e20\u9053\u8be6\u89c1 AOSC \u7f51\u7ad9\u76f8\u5173\u680f\u76ee\uff09\u3002"]}),"\n",(0,l.jsxs)(s.li,{children:["\u672c\u5468\u62a5",(0,l.jsx)(s.a,{href:"https://github.com/loongson-community/areweloongyet/issues/16",className:"link--overseas",children:"\u6301\u7eed\u63a5\u53d7\u7f51\u53cb\u6295\u7a3f"}),"\u3002\u6b22\u8fce\u6765\u4e0a\u6e38\u5750\u5750\uff01"]}),"\n"]})]})}function d(e={}){const{wrapper:s}={...(0,r.a)(),...e.components};return s?(0,l.jsx)(s,{...e,children:(0,l.jsx)(h,{...e})}):h(e)}},1151:(e,s,n)=>{n.d(s,{Z:()=>c,a:()=>a});var l=n(7294);const r={},i=l.createContext(r);function a(e){const s=l.useContext(i);return l.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function c(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),l.createElement(i.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/5e1e6895.a28035a5.js b/assets/js/5e1e6895.a28035a5.js deleted file mode 100644 index d12652d5..00000000 --- a/assets/js/5e1e6895.a28035a5.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkareweloongyet=self.webpackChunkareweloongyet||[]).push([[827],{2233:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>t,contentTitle:()=>a,default:()=>d,frontMatter:()=>i,metadata:()=>c,toc:()=>o});var l=n(5893),r=n(1151);const i={slug:"this-week-in-loongarch-31",title:"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 31 \u671f",authors:["xen0n"],date:new Date("2024-01-02T15:25:00.000Z"),tags:["\u6bcf\u5468\u4e00\u9f99"]},a=void 0,c={permalink:"/newsletter/this-week-in-loongarch-31",editUrl:"https://github.com/loongson-community/areweloongyet/newsletter/2024-01-01-this-week-in-loongarch-31.md",source:"@site/newsletter/2024-01-01-this-week-in-loongarch-31.md",title:"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 31 \u671f",description:"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01",date:"2024-01-02T15:25:00.000Z",formattedDate:"2024\u5e741\u67082\u65e5",tags:[{label:"\u6bcf\u5468\u4e00\u9f99",permalink:"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99"}],readingTime:4.845,hasTruncateMarker:!0,authors:[{name:"WANG Xuerui",title:"\ud83d\udc32\u9f99\u95e8\u5ba2\u6808\u6253\u6742\u7684",url:"https://github.com/xen0n",imageURL:"https://github.com/xen0n.png",key:"xen0n"}],frontMatter:{slug:"this-week-in-loongarch-31",title:"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 31 \u671f",authors:["xen0n"],date:"2024-01-02T15:25:00.000Z",tags:["\u6bcf\u5468\u4e00\u9f99"]},unlisted:!1,nextItem:{title:"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 30 \u671f",permalink:"/newsletter/this-week-in-loongarch-30"}},t={authorsImageUrls:[void 0]},o=[{value:"\u5148\u300c\u9a6c\u300d\u518d\u770b",id:"marked-projects",level:2},{value:"Linux",id:"linux",level:3},{value:"\u5de5\u5177\u94fe",id:"toolchain",level:3},{value:"binutils",id:"binutils",level:4},{value:"GCC",id:"gcc",level:4},{value:"LLVM",id:"llvm",level:4},{value:"\u6742\u95fb\u64ad\u62a5",id:"assorted-news",level:2},{value:"\u793e\u533a\u6574\u6d3b",id:"grins",level:2},{value:"\u5f20\u8d34\u680f",id:"bulletin",level:2}];function h(e){const s={a:"a",code:"code",h2:"h2",h3:"h3",h4:"h4",li:"li",p:"p",small:"small",ul:"ul",...(0,r.a)(),...e.components};return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(s.p,{children:"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch\xae \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01\n\u4e0a\u5468\u7684\u8fdb\u5c55\u4e3b\u8981\u6709 Linux \u548c\u5de5\u5177\u94fe\u3002\n\u8be6\u60c5\u70b9\u8fdb\u6765\u770b\uff01"}),"\n",(0,l.jsx)(s.p,{children:"\u5982\u65e0\u7279\u522b\u8bf4\u660e\uff0c\u6587\u4e2d\u63d0\u53ca\u7684\u65e5\u671f\u3001\u65f6\u95f4\u90fd\u4e3a\u5317\u4eac\u65f6\u95f4\uff08UTC+8\uff09\u3002"}),"\n",(0,l.jsxs)(s.p,{children:["\u672c\u671f\u5468\u62a5\u7684\u5b9e\u9645\u53d1\u7a3f\u65f6\u95f4\u662f\u5468\u4e8c\u665a\u95f4\uff0c\u56e0\u4e3a\u5468\u4e00\u662f\u5143\u65e6\u5047\u671f\u3002\u65b0\u5e74\u5feb\u4e50 ","\ud83c\udf89","\uff01"]}),"\n",(0,l.jsx)(s.h2,{id:"marked-projects",children:"\u5148\u300c\u9a6c\u300d\u518d\u770b"}),"\n",(0,l.jsx)(s.p,{children:"\u672c\u680f\u76ee\u7684\u5185\u5bb9\u5177\u6709\u4e00\u5b9a\u5ef6\u7eed\u6027\uff0c\u5c06\u6301\u7eed\u8ffd\u8e2a\u62a5\u9053 LoongArch\xae \u9886\u57df\u7684\u91cd\u8981\u6216\u957f\u671f\u9879\u76ee\uff08\u5751\uff09\u3002"}),"\n",(0,l.jsx)(s.h3,{id:"linux",children:"Linux"}),"\n",(0,l.jsxs)(s.p,{children:[(0,l.jsx)(s.a,{href:"https://github.com/xry111",className:"link--overseas",children:"Xi Ruoyao"})," ",(0,l.jsx)(s.a,{href:"https://lore.kernel.org/loongarch/20240102123706.6099-2-xry111@xry111.site/",className:"link--overseas",children:"\u67e5\u660e\u5e76\u4fee\u590d\u4e86"}),"\u9f99\u67b6\u6784\u4e0a\nLinux \u4e00\u76f4\u4ee5\u6765\u7684",(0,l.jsx)(s.a,{href:"https://github.com/loongson-community/discussions/issues/7",className:"link--overseas",children:"\u5076\u73b0\u95ee\u9898"}),"\uff1a\n\u521b\u5efa\u65b0\u8fdb\u7a0b\u65f6\uff0c\u65b0\u8fdb\u7a0b\u53ef\u80fd\u7ee7\u627f\u5230\u4e0d\u5e72\u51c0\u7684 FCSR\uff08\u6d6e\u70b9\u63a7\u5236\u72b6\u6001\u5bc4\u5b58\u5668\uff09\u5185\u5bb9\uff0c\u5bfc\u81f4\u540e\u7eed\u505a\u6d6e\u70b9\u64cd\u4f5c\u65f6\u8fdf\u65e9\u53d1\u751f\u975e\u9884\u671f\u884c\u4e3a\u751a\u81f3\u5d29\u6e83\u3002\n\u6b64 bug \u662f\u4ece MIPS \u5185\u6838\u5e26\u6765\u7684\u9057\u4ea7\u3002\u7531\u4e8e MIPS \u7684 FCSR \u521d\u59cb\u5316\u9700\u8981\u8003\u8651\u7a0b\u5e8f\u7684\u6267\u884c\u57df\uff08personality\uff09\uff0cXi Ruoyao \u4e0d\u77e5\u9053\u600e\u4e48\u4fee\uff0c\n\u6240\u4ee5\u53ea\u80fd",(0,l.jsx)(s.a,{href:"https://lore.kernel.org/linux-mips/7a6aa1bbdbbe2e63ae96ff163fab0349f58f1b9e.camel@xry111.site/",className:"link--overseas",children:"\u62a5\u544a\u4e86"}),"\u8be5\u95ee\u9898\uff0c\n\u7b49\u5f85 MIPS \u76f8\u5173\u7ef4\u62a4\u8005\u5904\u7406\u3002"]}),"\n",(0,l.jsxs)(s.p,{children:[(0,l.jsx)(s.a,{href:"https://github.com/xen0n",className:"link--overseas",children:"xen0n"})," ",(0,l.jsx)(s.a,{href:"https://lore.kernel.org/loongarch/20231227070317.1936234-1-kernel@xen0n.name/",className:"link--overseas",children:"\u4fee\u590d\u4e86"}),"\u4f7f\u7528\u6700\u65b0\nbinutils\u3001gcc \u6784\u5efa\u5185\u6838\u65f6 ",(0,l.jsx)(s.code,{children:"modpost"})," \u4f1a\u5d29\u6e83\u7684\u95ee\u9898\u3002"]}),"\n",(0,l.jsx)(s.h3,{id:"toolchain",children:"\u5de5\u5177\u94fe"}),"\n",(0,l.jsx)(s.h4,{id:"binutils",children:"binutils"}),"\n",(0,l.jsxs)(s.p,{children:["\u7531\u5e38\u4f73\u741b\u540c\u5b66\u64cd\u5200\u7684\uff0c\u5468\u62a5\u7b2c 27 \u671f",(0,l.jsx)(s.a,{href:"/newsletter/this-week-in-loongarch-27#abi",children:"\u63d0\u5230\u7684"})," LoongArch\nTLS LE relaxation \u7279\u6027\u7684 binutils \u90e8\u5206\uff0c\u6210\u529f\u8fdb\u5165\u4e3b\u7ebf\u4e86\u3002\n\u8ba9\u6211\u4eec\u795d\u8d3a ","t\u0101"," \u52a0\u5165\u4e0a\u6e38\u8d21\u732e\u8005\u7684\u884c\u5217 ","\ud83c\udf89","\uff01"]}),"\n",(0,l.jsx)(s.h4,{id:"gcc",children:"GCC"}),"\n",(0,l.jsxs)(s.p,{children:[(0,l.jsx)(s.a,{href:"https://github.com/xry111",className:"link--overseas",children:"Xi Ruoyao"})," ",(0,l.jsx)(s.a,{href:"https://gcc.gnu.org/pipermail/gcc-patches/2023-December/641443.html",className:"link--overseas",children:"\u4fee\u590d\u4e86"}),"\nxen0n ",(0,l.jsx)(s.a,{href:"https://gcc.gnu.org/PR113148",className:"link--overseas",children:"\u62a5\u544a\u7684"})," bug:\nXWayland \u7b49\u8f6f\u4ef6\u4e2d\u5b58\u5728\u4e2a\u522b\u5185\u542b\u5927\u91cf\u6d6e\u70b9\u6bd4\u8f83\u64cd\u4f5c\u7684\u51fd\u6570\uff0c\u7f16\u8bd1\u8fd9\u4e9b\u51fd\u6570\u65f6 gcc \u4f1a\u5d29\u6e83\u3002"]}),"\n",(0,l.jsxs)(s.p,{children:["Xi Ruoyao \u8fd8",(0,l.jsx)(s.a,{href:"https://gcc.gnu.org/pipermail/gcc-patches/2023-December/641609.html",className:"link--overseas",children:"\u5141\u8bb8\u4e86"}),"\u5229\u7528\n",(0,l.jsx)(s.code,{children:"{,x}vf{min,max}"})," \u56db\u79cd\u6307\u4ee4\u6765\u5411\u91cf\u5316\u5faa\u73af\u4e2d\u7684\u53d6\u6700\u5927/\u6700\u5c0f\u503c\u64cd\u4f5c\u3002LoongArch \u7684\u8fd9\u56db\u79cd\u6307\u4ee4\u8bbe\u8ba1\u4e0a\u5c31\u7b26\u5408 IEEE 754-2008 \u8bed\u4e49\uff0c\n\u56e0\u800c\u53ef\u7528\u3002"]}),"\n",(0,l.jsxs)(s.p,{children:["\u5468\u62a5\u7b2c 30 \u671f",(0,l.jsx)(s.a,{href:"/newsletter/this-week-in-loongarch-30#gcc",children:"\u63d0\u5230\u7684"}),"\nXi Ruoyao \u5f53\u65f6\u300c\u6b63\u5728\u8c03\u6574\u300d\u7684\u8865\u4e01\uff0c\u73b0\u5df2\u5b8c\u6210\u6539\u8fdb\u5de5\u4f5c\uff0c",(0,l.jsx)(s.a,{href:"https://gcc.gnu.org/r14-6863",className:"link--overseas",children:"\u8fdb\u5165\u4e3b\u7ebf\u4e86"}),"\u3002"]}),"\n",(0,l.jsxs)(s.p,{children:["\u7531 Lulu Cheng \u5f00\u53d1\u7684\uff0c\u4e0a\u4e00\u8282\u4e2d\u63d0\u5230\u7684 TLS LE relaxation \u7279\u6027\u7684 gcc \u90e8\u5206\uff0c\n\u4e5f",(0,l.jsx)(s.a,{href:"https://gcc.gnu.org/r14-6879",className:"link--overseas",children:"\u8fdb\u5165\u4e3b\u7ebf\u4e86"}),"\u3002"]}),"\n",(0,l.jsx)(s.h4,{id:"llvm",children:"LLVM"}),"\n",(0,l.jsxs)(s.p,{children:[(0,l.jsx)(s.a,{href:"https://github.com/yjijd",className:"link--overseas",children:"yjijd"})," \u6309\u7167 LoongArch psABI v2.30\uff0c",(0,l.jsx)(s.a,{href:"https://github.com/llvm/llvm-project/pull/74990",className:"link--overseas",children:"\u4fee\u590d\u4e86"}),"\u5148\u524d\u4f1a\u7528\u5411\u91cf\u5bc4\u5b58\u5668\u4f20\u9012\u5411\u91cf\u53c2\u6570\u7684\u95ee\u9898\u3002"]}),"\n",(0,l.jsxs)(s.p,{children:[(0,l.jsx)(s.a,{href:"https://github.com/wangleiat",className:"link--overseas",children:"wangleiat"})," \u4fee\u590d\u4e86\u4e00\u7cfb\u5217 SIMD \u4ee3\u7801\u751f\u6210\u4e0a\u7684\u9519\u8bef\uff1a"]}),"\n",(0,l.jsxs)(s.ul,{children:["\n",(0,l.jsxs)(s.li,{children:[(0,l.jsxs)(s.a,{href:"https://github.com/llvm/llvm-project/commit/da5378e87e11689d05a58198d6e15e9551916794",className:"link--overseas",children:[(0,l.jsx)(s.code,{children:"{,x}vbitseli.b"})," \u7684\u8bef\u7528"]}),"\uff0c"]}),"\n",(0,l.jsxs)(s.li,{children:[(0,l.jsxs)(s.a,{href:"https://github.com/llvm/llvm-project/commit/c7367f985e0d27aeb8bc993406d1b9f4ca307399",className:"link--overseas",children:[(0,l.jsx)(s.code,{children:"xvrepl128vei"})," \u7684\u8bef\u7528"]}),"\uff0c\u4ee5\u53ca"]}),"\n",(0,l.jsxs)(s.li,{children:[(0,l.jsxs)(s.a,{href:"https://github.com/llvm/llvm-project/commit/47c88bcd5de91522241cca1aaa1b7762ceb01394",className:"link--overseas",children:[(0,l.jsx)(s.code,{children:"vector_extract"})," \u5728 LASX \u4e0a\u7684\u9519\u8bef\u7f16\u8bd1\u7ed3\u679c"]}),"\u3002"]}),"\n"]}),"\n",(0,l.jsxs)(s.p,{children:["Go \u56e2\u961f\u7684 ",(0,l.jsx)(s.a,{href:"https://github.com/abner-chenc",className:"link--overseas",children:"abner-chenc"})," \u548c Xiaolin Zhao \u6765 LLVM \u4e0a\u6e38\u4e32\u95e8\u4e86\uff1a","t\u0101"," \u4eec\u7ed9 TSan\n",(0,l.jsx)(s.a,{href:"https://github.com/llvm/llvm-project/pull/72819",className:"link--overseas",children:"\u589e\u52a0\u4e86"})," Go ",(0,l.jsx)(s.code,{children:"loong64"})," \u652f\u6301\u3002"]}),"\n",(0,l.jsx)(s.h2,{id:"assorted-news",children:"\u6742\u95fb\u64ad\u62a5"}),"\n",(0,l.jsxs)(s.p,{children:["Slackwareloong \u7ef4\u62a4\u8005 ",(0,l.jsx)(s.a,{href:"https://github.com/shipujin",className:"link--overseas",children:"shipujin"})," \u8bf4\uff1aSlackware \u4e2d\u6587\u793e\u533a\u5728 Slackwareloong LTS 1.0 \u7cfb\u7edf\u4e0b\uff0c\n\u6210\u529f\u9a8c\u8bc1\u4e86\u6784\u5efa\u3001\u8fd0\u884c KDE Plasma 6 Beta 2 \u7248\u672c\u684c\u9762\u73af\u5883\u3002\n\u540e\u9762\u4f1a\u628a\u6784\u5efa\u597d\u7684\u76f8\u5173\u8f6f\u4ef6\u5305\u53d1\u5e03\u5230 Slackwareloong \u4e0b\u7684 KDE6 testing \u4ed3\u5e93\u3002\n\u611f\u8c22 shipujin \u63d0\u4f9b\u65b0\u95fb\u7ebf\u7d22\uff01"]}),"\n",(0,l.jsxs)(s.h2,{id:"grins",children:["\u793e\u533a\u6574\u6d3b",(0,l.jsx)(s.small,{children:"\u513f"})]}),"\n",(0,l.jsxs)(s.p,{children:["\u672c\u680f\u76ee\u63a5\u53d7\u4efb\u4f55\u7f51\u53cb\u7684\u6295\u7a3f\uff0c\u53ea\u8981\u5185\u5bb9\u4e0e LoongArch\xae \u6709\u5173\uff0c\u5e76\u53ef\u4ee5\u4e3a\u8bfb\u8005\u5e26\u6765\u4ef7\u503c\uff0c\n\u65e0\u8bba\u4e25\u8083\u8d21\u732e\uff08\u6574\u7684\u5927\u6d3b",(0,l.jsx)(s.small,{children:"\u513f"}),"\uff09\u6216\u662f\u535a\u541b\u4e00\u7b11\u90fd\u4e00\u6982\u6b22\u8fce\uff01"]}),"\n",(0,l.jsxs)(s.p,{children:["LoongArch \u975e\u5b98\u65b9\u5f00\u6e90\u793e\u533a\uff08LA UOSC\uff09\u7248\u4e3b",(0,l.jsx)(s.a,{href:"https://bbs.loongarch.org/u/4",className:"link--overseas",children:"\u675c\u6bd4"}),(0,l.jsx)(s.a,{href:"https://bbs.loongarch.org/d/351-lauosc-freebsd-ports",className:"link--overseas",children:"\u53d1\u8d77\u4e86"}),"\nFreeBSD \u79fb\u690d\u9879\u76ee\uff0c\u5de5\u4f5c\u8fdb\u5ea6",(0,l.jsx)(s.a,{href:"https://gitee.com/lauosc/freebsd",children:"\u653e\u5728\u4e86"})," Gitee \u4e0a\u3002\n\u65e0\u5c18\uff08yu shan wei\uff09\u540c\u5b66\u4e5f\u5355\u72ec",(0,l.jsx)(s.a,{href:"https://gitee.com/yushanwei/freebsd4loongarch",children:"\u7ef4\u62a4\u4e86"}),"\u8865\u4e01\u96c6\u5408\u3002\n\u611f\u8c22 ",(0,l.jsx)(s.a,{href:"https://github.com/haowuge",className:"link--overseas",children:"Haowu Ge"})," \u5728\u7fa4\u804a\u4e2d\u6295\u9012\u65b0\u95fb\u7ebf\u7d22\uff01"]}),"\n",(0,l.jsx)(s.h2,{id:"bulletin",children:"\u5f20\u8d34\u680f"}),"\n",(0,l.jsx)(s.p,{children:"\u672c\u680f\u76ee\u53ef\u4f9b\u5f20\u8d34\u516c\u76ca\u6027\u8d28\u7684\u5404\u79cd\u4fe1\u606f\u3002"}),"\n",(0,l.jsxs)(s.ul,{children:["\n",(0,l.jsxs)(s.li,{children:["\u53cb\u60c5\u6269\u6563\uff1a",(0,l.jsx)(s.a,{href:"https://aosc.io",className:"link--overseas",children:"\u5b89\u540c\u5f00\u6e90\u793e\u533a\uff08AOSC\uff09"}),"\u7684\u9f99\u67b6\u6784\u79fb\u690d\u4e3b\u7ebf\u5316\u5de5\u4f5c\u300c\u5408\u9f99\u300d\u4ecd\u5728\u5982\u706b\u5982\u837c\u8fdb\u884c\u4e2d\uff0c\n\u6b64\u5de5\u4f5c\u5b8c\u6210\u540e\u9f99\u67b6\u6784\u5c06\u5347\u683c\u4e3a AOSC OS \u7684 Tier 1 \u67b6\u6784\u3002\n\u6b22\u8fce\u540c\u5b66\u4eec\u8bd5\u7528\u3001\u53cd\u9988\uff0c\u4e5f\u6b22\u8fce\u6709\u5fd7\u4e4b\u58eb\u4e00\u540c\u52a0\u5165\uff08\u6c9f\u901a\u6e20\u9053\u8be6\u89c1 AOSC \u7f51\u7ad9\u76f8\u5173\u680f\u76ee\uff09\u3002"]}),"\n",(0,l.jsxs)(s.li,{children:["\u672c\u5468\u62a5",(0,l.jsx)(s.a,{href:"https://github.com/loongson-community/areweloongyet/issues/16",className:"link--overseas",children:"\u6301\u7eed\u63a5\u53d7\u7f51\u53cb\u6295\u7a3f"}),"\u3002\u6b22\u8fce\u6765\u4e0a\u6e38\u5750\u5750\uff01"]}),"\n"]})]})}function d(e={}){const{wrapper:s}={...(0,r.a)(),...e.components};return s?(0,l.jsx)(s,{...e,children:(0,l.jsx)(h,{...e})}):h(e)}},1151:(e,s,n)=>{n.d(s,{Z:()=>c,a:()=>a});var l=n(7294);const r={},i=l.createContext(r);function a(e){const s=l.useContext(i);return l.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function c(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),l.createElement(i.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/614884f9.2a28c894.js b/assets/js/614884f9.4ce8e528.js similarity index 89% rename from assets/js/614884f9.2a28c894.js rename to assets/js/614884f9.4ce8e528.js index 8d456137..8197e805 100644 --- a/assets/js/614884f9.2a28c894.js +++ b/assets/js/614884f9.4ce8e528.js @@ -1 +1 @@ -"use strict";(self.webpackChunkareweloongyet=self.webpackChunkareweloongyet||[]).push([[4582],{2649:e=>{e.exports=JSON.parse('{"label":"\u6bcf\u5468\u4e00\u9f99","permalink":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99","allTagsPath":"/newsletter/tags","count":31,"unlisted":false}')}}]); \ No newline at end of file +"use strict";(self.webpackChunkareweloongyet=self.webpackChunkareweloongyet||[]).push([[4582],{2649:e=>{e.exports=JSON.parse('{"label":"\u6bcf\u5468\u4e00\u9f99","permalink":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99","allTagsPath":"/newsletter/tags","count":32,"unlisted":false}')}}]); \ No newline at end of file diff --git a/assets/js/6245aafd.fa7e83ab.js b/assets/js/6245aafd.7a60520b.js similarity index 90% rename from assets/js/6245aafd.fa7e83ab.js rename to assets/js/6245aafd.7a60520b.js index 8436eced..45c7d682 100644 --- a/assets/js/6245aafd.fa7e83ab.js +++ b/assets/js/6245aafd.7a60520b.js @@ -1 +1 @@ -"use strict";(self.webpackChunkareweloongyet=self.webpackChunkareweloongyet||[]).push([[1991],{9016:e=>{e.exports=JSON.parse('{"permalink":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99/page/4","page":4,"postsPerPage":10,"totalPages":4,"totalCount":31,"previousPage":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99/page/3","blogDescription":"\u9f99\u67b6\u6784\xae\u65b0\u4e16\u754c\u751f\u6001\u5efa\u8bbe\u5468\u62a5\u300a\u6bcf\u5468\u4e00\u9f99\u300b\uff08This Week in LoongArch\uff09\u3002\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch\xae \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01","blogTitle":"\u6bcf\u5468\u4e00\u9f99"}')}}]); \ No newline at end of file +"use strict";(self.webpackChunkareweloongyet=self.webpackChunkareweloongyet||[]).push([[1991],{9016:e=>{e.exports=JSON.parse('{"permalink":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99/page/4","page":4,"postsPerPage":10,"totalPages":4,"totalCount":32,"previousPage":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99/page/3","blogDescription":"\u9f99\u67b6\u6784\xae\u65b0\u4e16\u754c\u751f\u6001\u5efa\u8bbe\u5468\u62a5\u300a\u6bcf\u5468\u4e00\u9f99\u300b\uff08This Week in LoongArch\uff09\u3002\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch\xae \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01","blogTitle":"\u6bcf\u5468\u4e00\u9f99"}')}}]); \ No newline at end of file diff --git a/assets/js/652fe9bf.3eed6bb9.js b/assets/js/652fe9bf.3eed6bb9.js new file mode 100644 index 00000000..0e746f0f --- /dev/null +++ b/assets/js/652fe9bf.3eed6bb9.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkareweloongyet=self.webpackChunkareweloongyet||[]).push([[7248],{2709:o=>{o.exports=JSON.parse('{"code":"proxmox-ve","name":"Proxmox VE","homepageURL":"https://proxmox.com","repoURL":"https://git.proxmox.com","portingEfforts":[{"authors":["jiangcuo"],"desc":"Proxmox VE \u4e0a\u6e38\u4f3c\u4e4e\u4ec5\u652f\u6301 x86 \u67b6\u6784\uff0c\u56e0\u6b64\u5728\u8be5\u4e0a\u6e38\u63a5\u53d7\u65b0\u67b6\u6784\u4e4b\u524d\uff0c\u6b64 fork \u5373\u4e3a LoongArch \u7b49\u5176\u4ed6\u67b6\u6784\u7684\u4e0a\u6e38\u3002","link":"https://github.com/jiangcuo/Proxmox-Port","supportStatus":8,"releasedSinceVersion":"","goodSinceVersion":"","quality":1}]}')}}]); \ No newline at end of file diff --git a/assets/js/669f9270.ab22c0c9.js b/assets/js/669f9270.ab22c0c9.js new file mode 100644 index 00000000..d56b0e80 --- /dev/null +++ b/assets/js/669f9270.ab22c0c9.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkareweloongyet=self.webpackChunkareweloongyet||[]).push([[1164],{5579:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>h,contentTitle:()=>i,default:()=>d,frontMatter:()=>r,metadata:()=>o,toc:()=>a});var l=s(5893),c=s(1151);const r={slug:"this-week-in-loongarch-32",title:"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 32 \u671f",authors:["xen0n"],date:new Date("2024-01-08T12:00:00.000Z"),tags:["\u6bcf\u5468\u4e00\u9f99"]},i=void 0,o={permalink:"/newsletter/this-week-in-loongarch-32",editUrl:"https://github.com/loongson-community/areweloongyet/newsletter/2024-01-08-this-week-in-loongarch-32.md",source:"@site/newsletter/2024-01-08-this-week-in-loongarch-32.md",title:"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 32 \u671f",description:"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01",date:"2024-01-08T12:00:00.000Z",formattedDate:"2024\u5e741\u67088\u65e5",tags:[{label:"\u6bcf\u5468\u4e00\u9f99",permalink:"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99"}],readingTime:9.795,hasTruncateMarker:!0,authors:[{name:"WANG Xuerui",title:"\ud83d\udc32\u9f99\u95e8\u5ba2\u6808\u6253\u6742\u7684",url:"https://github.com/xen0n",imageURL:"https://github.com/xen0n.png",key:"xen0n"}],frontMatter:{slug:"this-week-in-loongarch-32",title:"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 32 \u671f",authors:["xen0n"],date:"2024-01-08T12:00:00.000Z",tags:["\u6bcf\u5468\u4e00\u9f99"]},unlisted:!1,nextItem:{title:"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 31 \u671f",permalink:"/newsletter/this-week-in-loongarch-31"}},h={authorsImageUrls:[void 0]},a=[{value:"\u5148\u300c\u9a6c\u300d\u518d\u770b",id:"marked-projects",level:2},{value:"Linux",id:"linux",level:3},{value:"\u5de5\u5177\u94fe",id:"toolchain",level:3},{value:"GCC",id:"gcc",level:4},{value:"LLVM",id:"llvm",level:4},{value:"\u6742\u95fb\u64ad\u62a5",id:"assorted-news",level:2},{value:"\u793e\u533a\u6574\u6d3b",id:"grins",level:2},{value:"\u5f20\u8d34\u680f",id:"bulletin",level:2}];function t(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",h4:"h4",li:"li",p:"p",pre:"pre",small:"small",ul:"ul",...(0,c.a)(),...e.components},{Details:s}=n;return s||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(n.p,{children:"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch\xae \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01\n\u4e0a\u5468\u7684\u8fdb\u5c55\u4e3b\u8981\u6709 Linux\u3001GCC\u3001LLVM \u4ee5\u53ca\u8bb8\u591a\u7684\u53d1\u884c\u7248\u3002\n\u8be6\u60c5\u70b9\u8fdb\u6765\u770b\uff01"}),"\n",(0,l.jsx)(n.p,{children:"\u5982\u65e0\u7279\u522b\u8bf4\u660e\uff0c\u6587\u4e2d\u63d0\u53ca\u7684\u65e5\u671f\u3001\u65f6\u95f4\u90fd\u4e3a\u5317\u4eac\u65f6\u95f4\uff08UTC+8\uff09\u3002"}),"\n",(0,l.jsx)(n.h2,{id:"marked-projects",children:"\u5148\u300c\u9a6c\u300d\u518d\u770b"}),"\n",(0,l.jsx)(n.p,{children:"\u672c\u680f\u76ee\u7684\u5185\u5bb9\u5177\u6709\u4e00\u5b9a\u5ef6\u7eed\u6027\uff0c\u5c06\u6301\u7eed\u8ffd\u8e2a\u62a5\u9053 LoongArch\xae \u9886\u57df\u7684\u91cd\u8981\u6216\u957f\u671f\u9879\u76ee\uff08\u5751\uff09\u3002"}),"\n",(0,l.jsx)(n.h3,{id:"linux",children:"Linux"}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.a,{href:"https://github.com/heiher",className:"link--overseas",children:"heiher"})," ",(0,l.jsx)(n.a,{href:"https://github.com/ClangBuiltLinux/linux/issues/1884#issuecomment-1879564435",className:"link--overseas",children:"\u5b8c\u6210\u4e86"}),"\nClangBuiltLinux \u7684\u6a21\u5757\uff08",(0,l.jsx)(n.code,{children:"CONFIG_MODULES"}),"\uff09\u652f\u6301\u3002\n\u81f3\u6b64 LLVM/Clang \u5de5\u5177\u94fe\u5df2\u7ecf\u53ef\u4ee5\u7528\u6765\u6784\u5efa\u5168\u529f\u80fd\u7684 LoongArch Linux \u4e86\u3002"]}),"\n",(0,l.jsxs)(n.p,{children:["heiher \u8fd8\u4e3a Linux \u7684 Rust \u57fa\u7840\u8bbe\u65bd",(0,l.jsx)(n.a,{href:"https://lore.kernel.org/rust-for-linux/20240106065941.180796-1-wangrui@loongson.cn/",className:"link--overseas",children:"\u63d0\u4ea4\u4e86"}),"\nLoongArch \u652f\u6301\u3002\n\u5f88\u5feb\u5c31\u53ef\u7528 Rust \u8fd9\u4e00\u65b0\u5174\u7f16\u7a0b\u8bed\u8a00\uff0c\u4e3a LoongArch \u8fd9\u4e00\u65b0\u5174\u67b6\u6784\u505a\u5185\u6838\u3001\u9a71\u52a8\u5f00\u53d1\u4e86\uff01"]}),"\n",(0,l.jsxs)(n.p,{children:["Bibo Mao ",(0,l.jsx)(n.a,{href:"https://lore.kernel.org/loongarch/20240108064056.232546-1-maobibo@loongson.cn/",className:"link--overseas",children:"\u7ee7\u7eed\u4f18\u5316"}),"\nLoongArch KVM \u6027\u80fd\uff1a\n\u4ee5\u534f\u52a9\u865a\u62df\u5316\uff08para-virtualization\uff09\u65b9\u5f0f\uff0c\u901a\u8fc7 ",(0,l.jsx)(n.code,{children:"hvcl"})," \u6307\u4ee4\uff0c\n\u52a0\u901f\u865a\u62df\u673a\u7684\u5904\u7406\u5668\u95f4\u4e2d\u65ad\uff08inter-processor interrupts\uff0cIPI\uff09\u5904\u7406\u3002\n\u6539\u8fc7\u4e4b\u540e\uff0c16 \u6838\u7684\u865a\u62df\u673a\u4e2d UnixBench \u591a\u6838\u8dd1\u5206\u8fbe\u5230\u4e86\u7269\u7406\u673a\u60c5\u5f62\u7684 98.8%\uff08\u4f46\u4f5c\u8005\u672a\u7ed9\u51fa\u6539\u8fc7\u4e4b\u524d\u7684\u6027\u80fd\u5f00\u9500\u60c5\u51b5\uff09\u3002"]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsxs)("summary",{children:[(0,l.jsx)(n.code,{children:"hvcl"})," \u662f\u5565\u610f\u601d\uff1f"]}),(0,l.jsxs)(n.p,{children:["\u4ece\u7528\u6cd5\u4e0a\u770b\uff0c",(0,l.jsx)(n.code,{children:"hvcl"})," \u662f ",(0,l.jsx)(n.code,{children:"HyperVisor CaLl"})," \u7684\u7f29\u5199\uff0c\u300c\u76d1\u7ba1\u8c03\u7528\u300d\u7684\u610f\u601d\uff1a\u5411\u865a\u62df\u673a\u7ba1\u7406\u5668\uff08VM hypervisor\uff09\u8bf7\u6c42\u4e9b\u4ec0\u4e48\u3002"]}),(0,l.jsxs)(n.p,{children:["\u8fd9\u6837\u4e00\u6765\uff0c\u53ef\u80fd\u6709\u7684\u8bfb\u8005\u4f1a\u7422\u78e8\u4e86\uff1a\u4e3a\u5565\u4e0d\u50cf ",(0,l.jsx)(n.code,{children:"syscall"})," \u4e00\u6837\uff0c\u53eb\u4e00\u4e2a\u957f\u4e00\u70b9\u4f46\u66f4\u5b8c\u6574\u7684\u540d\u5b57\u5462\uff1f\n\u4f5c\u4e3a\u4e00\u4e2a\u80fd\u591f\u5bf9\u6700\u5e38\u7528\u6307\u4ee4\u4e4b\u4e00\u5374\u53d6\u5230 ",(0,l.jsx)(n.code,{children:"pcaddu12i"})," \u8fd9\u6837\u957f\u7684\u540d\u5b57\u4fdd\u6301\u5bb9\u5fcd\u7684\u67b6\u6784\uff0c\n\u663e\u7136 ",(0,l.jsx)(n.code,{children:"hypcall"})," \u8fd9\u79cd\u540d\u5b57\u66f4\u8fbe\u610f\uff0c\u5e76\u4e14\u4e0e\u5e38\u7528\u6307\u4ee4 ",(0,l.jsx)(n.code,{children:"syscall"})," \u98ce\u683c\u4e00\u81f4\u3002\n\u5b9e\u5219\u4e0d\u7136\uff1a\u5728 ",(0,l.jsx)(n.code,{children:"dbcl"}),"\uff08",(0,l.jsx)(n.code,{children:"DeBugger CaLl"}),"\uff0c\u8c03\u8bd5\u5668\u8c03\u7528\uff1b\u7528\u6765\u5c06\u4e0b\u4f4d\u673a CPU \u653e\u5165\u8c03\u8bd5\u6a21\u5f0f\uff09\u4e0e ",(0,l.jsx)(n.code,{children:"hvcl"})," \u4e4b\u95f4\uff0c\n",(0,l.jsx)(n.code,{children:"syscall"})," \u53cd\u5012\u6210\u4e86\u300c\u5f02\u7c7b\u300d\uff01"]}),(0,l.jsxs)(n.p,{children:["\u4e3a\u4e86\u964d\u4f4e\u5b66\u4e60\u8005\u7684\u8bb0\u5fc6\u8d1f\u62c5\uff0c\u7b14\u8005\u4ee5\u4e3a\u547d\u540d\u4e0a\u5982\u679c\u80fd\u505a\u5230\u4e00\u81f4\uff0c\u53ef\u80fd\u66f4\u52a0\u53cb\u597d\uff1a\n\u8981\u4e48\u5c06 ",(0,l.jsx)(n.code,{children:"dbcl"})," \u4e0e ",(0,l.jsx)(n.code,{children:"hvcl"})," \u6539\u6210\u66f4\u8fbe\u610f\u7684 ",(0,l.jsx)(n.code,{children:"dbgcall"})," \u4e0e ",(0,l.jsx)(n.code,{children:"hypcall"}),"\uff0c\n\u8981\u4e48\u5c06 ",(0,l.jsx)(n.code,{children:"syscall"})," \u6539\u6210\u66f4\u7b80\u7ec3\u7684 ",(0,l.jsx)(n.code,{children:"sycl"})," \u6216 ",(0,l.jsx)(n.code,{children:"sscl"})," \u4e4b\u7c7b\u3002\n\u8003\u8651\u5230 ",(0,l.jsx)(n.code,{children:"syscall"})," \u662f\u4e2a\u5e38\u89c1\u5355\u8bcd\u4e86\uff0c\u4e0d\u7528\u80cc\uff0c\u90a3\u4e48\u524d\u4e00\u79cd\u6539\u6cd5\u53ef\u80fd\u66f4\u53d7\u6b22\u8fce\u3002\n\u6c47\u7f16\u4ee3\u7801\u7684\u517c\u5bb9\u6027\u4e0d\u4f1a\u53d7\u5f71\u54cd\uff0c\u56e0\u4e3a\u5148\u524d\u7684\u540d\u79f0\u4e00\u65f6\u534a\u4f1a",(0,l.jsx)(n.small,{children:"\u513f"}),"\u4e0d\u4f1a\u88ab\u79fb\u9664\u652f\u6301\u3002"]})]}),"\n",(0,l.jsx)(n.h3,{id:"toolchain",children:"\u5de5\u5177\u94fe"}),"\n",(0,l.jsx)(n.h4,{id:"gcc",children:"GCC"}),"\n",(0,l.jsxs)(n.p,{children:["Yang Yujie ",(0,l.jsx)(n.a,{href:"https://gcc.gnu.org/pipermail/gcc-patches/2024-January/642084.html",className:"link--overseas",children:"\u5728\u91cd\u6784"}),"\nLoongArch \u540e\u7aef\u7684\u547d\u4ee4\u884c\u9009\u9879\u5904\u7406\u903b\u8f91\u3002"]}),"\n",(0,l.jsxs)(n.p,{children:["Lulu Cheng ",(0,l.jsx)(n.a,{href:"https://gcc.gnu.org/pipermail/gcc-patches/2024-January/641989.html",className:"link--overseas",children:"\u4f18\u5316\u6389\u4e86"}),"\u4f34\u968f\u4e00\u4e9b\u4f4d\u64cd\u4f5c\u7684\u591a\u4f59\u7684\u7b26\u53f7\u6269\u5c55\u64cd\u4f5c\u3002\n\u8fd9\u5bf9\u6240\u6709\u8f6f\u4ef6\u7684\u4f4d\u64cd\u4f5c\u6027\u80fd\u90fd\u6709\u79ef\u6781\u5f71\u54cd\uff1b\u5728\u8dd1\u5206\u65b9\u9762\uff0c\u4e5f\u5bf9 SPEC2017 \u7684 ",(0,l.jsx)(n.code,{children:"500.perlbench"})," \u7528\u4f8b\u6709 1.8% \u7684\u63d0\u5347\u3002"]}),"\n",(0,l.jsxs)(n.p,{children:["Yang Yujie \u4e3a\u4e86\u66f4\u597d\u7684 LTO\uff08\u94fe\u63a5\u65f6\u4f18\u5316\uff09\uff0c\u7ed9 LoongArch \u540e\u7aef",(0,l.jsx)(n.a,{href:"https://gcc.gnu.org/pipermail/gcc-patches/2024-January/641930.html",className:"link--overseas",children:"\u5b9e\u73b0\u4e86"}),"\u7f16\u8bd1\u9009\u9879\u7684\u4fdd\u5b58\u6062\u590d\u3002\n\u8fd9\u5c06\u4fee\u590d\u4e0a\u6e38 bug ",(0,l.jsx)(n.a,{href:"https://gcc.gnu.org/PR113233",className:"link--overseas",children:"PR113233"}),"\u3002"]}),"\n",(0,l.jsxs)(n.p,{children:["Jiahao Xu \u4e3a LA464 ",(0,l.jsx)(n.a,{href:"https://gcc.gnu.org/pipermail/gcc-patches/2024-January/641889.html",className:"link--overseas",children:"\u907f\u514d\u4e86"}),"\u6267\u884c\n",(0,l.jsx)(n.code,{children:"xvpermi.q"})," \u6307\u4ee4\u65f6\u53ef\u80fd\u78b0\u5230\u7684\u672a\u5b9a\u4e49\u884c\u4e3a\u3002"]}),"\n",(0,l.jsxs)(n.p,{children:["chenxiaolong \u4e3a\u4e86\u80fd\u7ed9 LoongArch \u6b63\u5e38\u542f\u7528 GCC \u5411\u91cf\u5316\u65b9\u9762\u7684\u516c\u5171\u6d4b\u8bd5\u7528\u4f8b\uff0c",(0,l.jsx)(n.a,{href:"https://gcc.gnu.org/pipermail/gcc-patches/2024-January/641868.html",className:"link--overseas",children:"\u4fee\u4e86"}),(0,l.jsx)(n.a,{href:"https://gcc.gnu.org/pipermail/gcc-patches/2024-January/641878.html",className:"link--overseas",children:"\u4e00\u5806"}),"\u5730\u65b9\u3002"]}),"\n",(0,l.jsxs)(n.p,{children:["liwei \u628a LSX \u4e0e LASX \u539f\u5148\u4e0d\u5171\u4eab\u7684\u4e24\u4efd\u5e38\u91cf\u5411\u91cf\u6392\u5217\uff08constant vector permutation\uff09\u5b9e\u73b0\n",(0,l.jsx)(n.a,{href:"https://gcc.gnu.org/pipermail/gcc-patches/2023-December/641477.html",className:"link--overseas",children:"\u7edf\u4e00\u6210\u4e86"}),"\u4e00\u4efd\u3002\n\u5728\u51c0\u5220\u9664\u4e86 888 \u884c\u4ee3\u7801\u4e4b\u5916\uff0c\u8dd1\u5206\u8fd8\u63d0\u9ad8\u4e86\u3002"]}),"\n",(0,l.jsx)(n.h4,{id:"llvm",children:"LLVM"}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.a,{href:"https://github.com/heiher",className:"link--overseas",children:"heiher"})," \u6700\u7ec8\u5b8c\u6210\u4e86\u5468\u62a5\u7b2c 24 \u671f",(0,l.jsx)(n.a,{href:"/newsletter/this-week-in-loongarch-24#llvm",children:"\u62a5\u9053\u7684"})," ",(0,l.jsx)(n.code,{children:"code_model"})," \u652f\u6301\u5de5\u4f5c\uff1a\n\u5408\u5e76\u4e86 ",(0,l.jsx)(n.a,{href:"https://github.com/llvm/llvm-project/pull/72078",className:"link--overseas",children:"Clang"})," \u4e0e\n",(0,l.jsx)(n.a,{href:"https://github.com/llvm/llvm-project/pull/72079",className:"link--overseas",children:"LoongArch \u540e\u7aef"}),"\u4e24\u90e8\u5206\u7684\u6700\u7ec8\u7248\u672c\u3002"]}),"\n",(0,l.jsxs)(n.p,{children:["\u6765\u81ea\u817e\u8baf\u7684 ",(0,l.jsx)(n.a,{href:"https://github.com/DamonFool",className:"link--overseas",children:"DamonFool"})," \u8d70\u8fc7\u8def\u8fc7\uff0c\u7ed9 LoongArch \u540e\u7aef",(0,l.jsx)(n.a,{href:"https://github.com/llvm/llvm-project/commit/52d1397e38ee88b170585c9c824d08e6975890ca",className:"link--overseas",children:"\u4fee\u4e86"}),"\u4e00\u5904\u975e\u8c03\u8bd5\u914d\u7f6e\u4e0b\u672a\u4f7f\u7528\u7684\u53d8\u91cf\uff08\u5426\u5219\u4f1a\u62a5\u9519\uff09\u3002"]}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.a,{href:"https://github.com/wangleiat",className:"link--overseas",children:"wangleiat"})," ",(0,l.jsx)(n.a,{href:"https://github.com/llvm/llvm-project/pull/76555",className:"link--overseas",children:"\u5b9e\u73b0\u4e86"}),"\u66f4\u591a\nLoongArch psABI v2.30 \u8bed\u4e49\uff1a\n\u6362\u7528 ",(0,l.jsx)(n.code,{children:"pcaddu18i + jirl"})," \u5b9e\u73b0 ",(0,l.jsx)(n.code,{children:"medium"})," \u4ee3\u7801\u6a21\u578b\u7684\u8fc7\u7a0b\u8c03\u7528\uff0c\n\u5e76\u786e\u4fdd\u4e86 ",(0,l.jsx)(n.code,{children:"extreme"})," \u4ee3\u7801\u6a21\u578b\u4e0b\u88c5\u8f7d\u7b26\u53f7\u5730\u5740\u64cd\u4f5c\u7684\u6307\u4ee4\u4e00\u5b9a\u76f8\u90bb\u3002"]}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.a,{href:"https://github.com/MQ-mengqing",className:"link--overseas",children:"MQ-mengqing"})," ",(0,l.jsx)(n.a,{href:"https://github.com/llvm/llvm-project/pull/76552",className:"link--overseas",children:"\u6539\u8fdb\u4e86"}),"\nLLVM MC \u5bf9\u4ee3\u7801\u6bb5\u5bf9\u9f50\u7684\u5904\u7406\u65b9\u5f0f\uff0cLoongArch \u548c RISC-V \u90fd\u4ece\u4e2d\u83b7\u76ca\u3002"]}),"\n",(0,l.jsx)(n.h2,{id:"assorted-news",children:"\u6742\u95fb\u64ad\u62a5"}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.a,{href:"https://github.com/heiher",className:"link--overseas",children:"heiher"})," \u7ed9 Rust \u6700\u5e38\u7528\u7684 JSON \u683c\u5f0f\u652f\u6301\u5e93 ",(0,l.jsx)(n.code,{children:"serde_json"}),"\n",(0,l.jsx)(n.a,{href:"https://github.com/serde-rs/json/pull/1100",className:"link--overseas",children:"\u6807\u8bb0\u4e86"}),"\nLoongArch \u6700\u9002\u5408\u5927\u6570\u8fd0\u7b97\u7684\u6574\u6570\u7c7b\u578b\u5bbd\u5ea6\u662f 64 \u4f4d\u3002\n\u4e0a\u6e38\u7ef4\u62a4\u8005\u534a\u5c0f\u65f6\u540e\u5c31\u7ed9\u5408\u5e76\u4e86\uff0c\u4e14\u53d1\u4e86 ",(0,l.jsx)(n.code,{children:"1.0.111"})," \u65b0\u7248\u672c\u3002\n\u8bf7\u540c\u5b66\u4eec\u6309\u9700 ",(0,l.jsx)(n.code,{children:"cargo update"})," \u4ee5\u67e5\u6536\u8fd9\u90e8\u5206\u514d\u8d39\u6027\u80fd\u63d0\u5347\u3002"]}),"\n",(0,l.jsx)(n.admonition,{title:"\u82b1\u7d6e",type:"info",children:(0,l.jsx)(n.p,{children:"\u8fd9\u5751\u662f xen0n \u5728\u7f16\u8bd1 ripgrep \u65f6\u5019\u767e\u65e0\u804a\u8d56\uff0c\u8eba\u5728\u6905\u5b50\u4e0a\u770b\u5c4f\u5e55\u4e0a\u6eda\u52a8\u7684\u7f16\u8bd1\u8fdb\u5ea6\uff0c\u5076\u7136\u6ce8\u610f\u5230\u7684\u3002\n\u6709\u65f6\u8eba\u5e73\u653e\u7a7a\u4e5f\u80fd\u521b\u9020\u4ef7\u503c\uff01"})}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.a,{href:"https://github.com/xen0n",className:"link--overseas",children:"xen0n"})," \u5411 gentoo-zh overlay ",(0,l.jsx)(n.a,{href:"https://github.com/microcai/gentoo-zh/pull/4109",className:"link--overseas",children:"\u63a8\u5165\u4e86"}),"\nAOSC OS \u7684 liblol \u65b0\u65e7\u4e16\u754c\u517c\u5bb9\u89e3\u51b3\u65b9\u6848\u6253\u5305\u3002\n\u6b64 overlay \u5305\u542b\u534e\u8bed\u7528\u6237\u5708\u5b50\u5e38\u7528\u7684\u8bb8\u591a\u8f6f\u4ef6\uff1b\n\u540e\u7eed Gentoo \u7528\u6237\u4eec\u4e5f\u80fd\u7528\u76f8\u540c\u59ff\u52bf\u5b89\u88c5 WPS Office \u7b49\u65e7\u4e16\u754c\u95ed\u6e90\u8f6f\u4ef6\u4e86\u3002\n\u4f8b\u5982\uff1a\u53ea\u8981 ",(0,l.jsx)(n.code,{children:"emerge wps-office"})," \u5373\u53ef\u81ea\u52a8\u62c9\u5165 liblol \u53ca\u5176\u5185\u6838\u6a21\u5757\u3002"]}),"\n",(0,l.jsxs)(n.admonition,{title:"\u6ce8\u610f\u4e8b\u9879",type:"info",children:[(0,l.jsx)(n.p,{children:"\u76ee\u524d liblol \u63d0\u4f9b\u7684\u4f9d\u8d56\u5e93\u4e3b\u8981\u90fd\u6765\u81ea Loongnix\xae\uff0c\n\u56e0\u6b64\u5728\u6211\u4eec\u5b8c\u6210\u5ba1\u8ba1\u8fd9\u4e9b\u6765\u81ea Loongnix \u7684\u6587\u4ef6\u7684\u5f00\u6e90\u8bb8\u53ef\u3001\u5e76\u786e\u8ba4\u5176\u4e2d\u4e0d\u542b\u95ed\u6e90\u6216\u4e13\u6709\u5185\u5bb9\u4e4b\u524d\uff0c\n\u60a8\u90fd\u9700\u8981\u660e\u786e\u63a5\u53d7\u300a\u57fa\u7840\u7248 Loongnix \u64cd\u4f5c\u7cfb\u7edf\u6700\u7ec8\u7528\u6237\u8bb8\u53ef\u534f\u8bae\u300b\uff0c\u624d\u80fd\u5b89\u88c5 liblol\uff1a"}),(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{children:"# e.g. /etc/portage/package.license/liblol\napp-emulation/liblol Loongnix-Base-EULA\n"})}),(0,l.jsxs)(n.p,{children:["\u6b64\u5916\uff0c\u9996\u6b21\u5b89\u88c5 ",(0,l.jsx)(n.code,{children:"la_ow_syscall"})," \u5185\u6838\u6a21\u5757\u4e4b\u540e\uff0c\u8be5\u6a21\u5757\u4e0d\u4f1a\u88ab\u81ea\u52a8\u8f7d\u5165\u2014\u2014\u5728 Gentoo\n\u6211\u4eec\u4e00\u822c\u4e0d\u5e2e\u7528\u6237\u505a\u8fd9\u79cd\u4e8b\uff0c\u800c\u4ee3\u4e4b\u4ee5 ",(0,l.jsx)(n.code,{children:"emerge"})," \u7ed3\u675f\u540e\u7684\u6e29\u99a8\u63d0\u9192\u3002\n\u5728\u5b89\u88c5\u5b8c liblol \u540e\u3001\u4f7f\u7528\u65e7\u4e16\u754c\u8f6f\u4ef6\u524d\uff0c\n\u60a8\u53ef\u4ee5\u7b80\u5355\u91cd\u542f\u7cfb\u7edf\uff0c\u6216\u8005\u4ee5 ",(0,l.jsx)(n.code,{children:"root"})," \u8eab\u4efd ",(0,l.jsx)(n.code,{children:"modprobe la_ow_syscall"}),"\uff1a\n\u53ea\u9700\u6267\u884c\u8fd9\u4e00\u6b21\u5373\u53ef\uff0c\u540e\u7eed\u6bcf\u6b21\u7cfb\u7edf\u542f\u52a8\u65f6\u90fd\u4f1a\u81ea\u52a8\u52a0\u8f7d\u4e86\u3002"]})]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{children:"\u81f4\u6253\u5305\u4eba\u4eec"}),(0,l.jsxs)(n.p,{children:["\u5bf9\u65e7\u4e16\u754c\u8f6f\u4ef6\u5305\u7684\u6807\u8bb0\u65b9\u5f0f\u662f ",(0,l.jsx)(n.code,{children:"RDEPEND"})," \u4e2d\u7684 ",(0,l.jsx)(n.code,{children:"loong? ( virtual/loong-ow-compat )"}),"\n\u8868\u8fbe\u5f0f\u3002"]}),(0,l.jsxs)(n.p,{children:["\u9700\u8981\u6ce8\u610f\uff1a\u65e7\u4e16\u754c\u7a0b\u5e8f\u7684\u52a8\u6001\u94fe\u63a5\u4f9d\u8d56\u90fd\u662f\u57fa\u4e8e liblol sysroot\uff08",(0,l.jsx)(n.code,{children:"/opt/lol"}),"\uff09\u89e3\u6790\u7684\uff0c\n\u800c\u4e0e\u5bbf\u4e3b\u7cfb\u7edf libdir \u65e0\u5173\u3002\n\u8fd9\u4e0e Gentoo \u5f53\u4e0b\u7684 multilib \u65b9\u6848\u4e0d\u540c\uff0c\u53cd\u5012\u4e0e\u51e0\u5e74\u524d\u7684 ",(0,l.jsx)(n.code,{children:"emul-linux-x86-*"})," \u5927\u5305\u795e\u4f3c\uff1b\n\u56e0\u6b64\u5927\u90e8\u5206\u60c5\u51b5\u4e0b\uff0c\u610f\u5728\u6ee1\u8db3\u52a8\u6001\u94fe\u63a5\u4f9d\u8d56\u7684 ",(0,l.jsx)(n.code,{children:"RDEPEND"})," \u9879\uff0c\u90fd\u4e0d\u5e94\u5f53\u5bf9 ",(0,l.jsx)(n.code,{children:"loong"})," \u9002\u7528\u3002"]}),(0,l.jsxs)(n.p,{children:["\u6253\u5305\u4eba\u4eec\u53ef\u53c2\u8003 ",(0,l.jsx)(n.a,{href:"https://github.com/microcai/gentoo-zh/pull/4112",className:"link--overseas",children:"WPS Office \u7684\u6253\u5305\u505a\u6cd5"}),"\uff0c\n\u4e3a\u5176\u4ed6\u65e7\u4e16\u754c\u8f6f\u4ef6\u6253\u5305\u3002\n\u63d0\u4ea4\u524d\uff0c\u8bb0\u5f97\u7b80\u5355\u6d4b\u4e0b\u8f6f\u4ef6\u529f\u80fd\uff1a\n\u5982\u679c liblol sysroot \u91cc\u7f3a\u4f9d\u8d56\uff0c\u53ef\u4ee5",(0,l.jsx)(n.a,{href:"https://github.com/shankerwangmiao/liblol/issues",className:"link--overseas",children:"\u53bb liblol \u4e0a\u6e38\u62a5\u544a"}),"\u3002"]}),(0,l.jsx)(n.p,{children:"\u540e\u7eed\uff0c\u6b64\u6253\u5305\u5de5\u4f5c\uff08\u5c24\u5176\u662f\u8d77\u5230\u6807\u8bb0\u4f5c\u7528\u7684 virtual \u5305\uff09\u5c06\u8fdb\u4e00\u6b65\u4e0a\u6e38\u81f3 Gentoo \u4e3b\u6e90\uff1b\n\u8fd9\u5c06\u5728 liblol \u7684 license \u5ba1\u8ba1\u5de5\u4f5c\u5b8c\u6210\u4e4b\u540e\u8fdb\u884c\u3002"})]}),"\n",(0,l.jsxs)(n.h2,{id:"grins",children:["\u793e\u533a\u6574\u6d3b",(0,l.jsx)(n.small,{children:"\u513f"})]}),"\n",(0,l.jsxs)(n.p,{children:["\u672c\u680f\u76ee\u63a5\u53d7\u4efb\u4f55\u7f51\u53cb\u7684\u6295\u7a3f\uff0c\u53ea\u8981\u5185\u5bb9\u4e0e LoongArch\xae \u6709\u5173\uff0c\u5e76\u53ef\u4ee5\u4e3a\u8bfb\u8005\u5e26\u6765\u4ef7\u503c\uff0c\n\u65e0\u8bba\u4e25\u8083\u8d21\u732e\uff08\u6574\u7684\u5927\u6d3b",(0,l.jsx)(n.small,{children:"\u513f"}),"\uff09\u6216\u662f\u535a\u541b\u4e00\u7b11\u90fd\u4e00\u6982\u6b22\u8fce\uff01"]}),"\n",(0,l.jsxs)(n.p,{children:["\u793e\u533a\u65b0\u9762\u5b54 ",(0,l.jsx)(n.a,{href:"https://github.com/LiarOnce",className:"link--overseas",children:"LiarOnce"})," \u7ed9 Loong Arch Linux ",(0,l.jsx)(n.a,{href:"https://github.com/LiarOnce-LoongAL/vscodium-electron-loong64",className:"link--overseas",children:"\u6253\u5305\u4e86"}),"\u4f7f\u7528\u7cfb\u7edf Electron \u7684\u6700\u65b0\u7248\u672c VSCodium\u3002"]}),"\n",(0,l.jsxs)(n.p,{children:["\u793e\u533a\u65b0\u9762\u5b54 ",(0,l.jsx)(n.a,{href:"https://github.com/hackpascal",className:"link--overseas",children:"hackpascal"})," \u5728 OpenWrt \u4e0a\u6e38",(0,l.jsx)(n.a,{href:"https://github.com/openwrt/openwrt/pull/14357",className:"link--overseas",children:"\u8d34\u51fa\u4e86"}),"\nLoongArch64 \u7684\u79fb\u690d\uff0c\u4f7f\u7528 Linux 6.6 \u5185\u6838\u3002\n\u5148\u524d ",(0,l.jsx)(n.a,{href:"https://github.com/phorcys",className:"link--overseas",children:"phorcys"})," \u5df2\u7ecf",(0,l.jsx)(n.a,{href:"https://github.com/phorcys/openwrt-loongarch",className:"link--overseas",children:"\u7ef4\u62a4\u4e86"}),"\u4e00\u4e2a\nfork \u6709\u4e00\u6bb5\u65f6\u95f4\uff0c\u4f46\u7b14\u8005\u5370\u8c61\u4e2d ","t\u0101"," \u4f3c\u4e4e\u65e0\u610f\u5c06\u5176\u4e0a\u6e38\uff1b\u7ed3\u679c\u53c8\u4e00\u540d\u52c7\u58eb\u5c31\u51fa\u73b0\u4e86\u3002\n\u770b\u8d77\u6765 OpenWrt \u786e\u5b9e\u662f\u73a9\u5bb6\u521a\u9700\uff01"]}),"\n",(0,l.jsxs)(n.p,{children:["\u7fa4\u53cb ",(0,l.jsx)(n.a,{href:"https://github.com/jiangcuo",className:"link--overseas",children:"amdyes"})," \u8fd1\u65e5\u5c06 ","t\u0101"," ",(0,l.jsx)(n.a,{href:"https://github.com/jiangcuo/Proxmox-Port",className:"link--overseas",children:"\u7ef4\u62a4\u7684"}),"\nProxmox VE\uff08PVE\uff09\u79fb\u690d\u4e0e\u4e0a\u6e38\u6700\u65b0\u7248\u672c\u540c\u6b65\u4e86\uff0c\u652f\u6301 64 \u4f4d\u7684 LoongArch \u4ee5\u53ca ARM\u3001RISC-V \u5e73\u53f0\u3002\n\u9f99\u67b6\u6784\u7684\u5bb6\u5ead\u6570\u636e\u4e2d\u5fc3\u5e94\u7528\u62fc\u56fe\u773c\u89c1\u5730\u5b8c\u6574\u8d77\u6765\uff01"]}),"\n",(0,l.jsx)(n.h2,{id:"bulletin",children:"\u5f20\u8d34\u680f"}),"\n",(0,l.jsx)(n.p,{children:"\u672c\u680f\u76ee\u53ef\u4f9b\u5f20\u8d34\u516c\u76ca\u6027\u8d28\u7684\u5404\u79cd\u4fe1\u606f\u3002"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\u53cb\u60c5\u6269\u6563\uff1a",(0,l.jsx)(n.a,{href:"https://aosc.io",className:"link--overseas",children:"\u5b89\u540c\u5f00\u6e90\u793e\u533a\uff08AOSC\uff09"}),"\u7684\u9f99\u67b6\u6784\u79fb\u690d\u4e3b\u7ebf\u5316\u5de5\u4f5c\u300c\u5408\u9f99\u300d\u4ecd\u5728\u5982\u706b\u5982\u837c\u8fdb\u884c\u4e2d\uff0c\n\u6b64\u5de5\u4f5c\u5b8c\u6210\u540e\u9f99\u67b6\u6784\u5c06\u5347\u683c\u4e3a AOSC OS \u7684 Tier 1 \u67b6\u6784\u3002\n\u6b22\u8fce\u540c\u5b66\u4eec\u8bd5\u7528\u3001\u53cd\u9988\uff0c\u4e5f\u6b22\u8fce\u6709\u5fd7\u4e4b\u58eb\u4e00\u540c\u52a0\u5165\uff08\u6c9f\u901a\u6e20\u9053\u8be6\u89c1 AOSC \u7f51\u7ad9\u76f8\u5173\u680f\u76ee\uff09\u3002"]}),"\n",(0,l.jsxs)(n.li,{children:["\u672c\u5468\u62a5",(0,l.jsx)(n.a,{href:"https://github.com/loongson-community/areweloongyet/issues/16",className:"link--overseas",children:"\u6301\u7eed\u63a5\u53d7\u7f51\u53cb\u6295\u7a3f"}),"\u3002\u6b22\u8fce\u6765\u4e0a\u6e38\u5750\u5750\uff01"]}),"\n"]})]})}function d(e={}){const{wrapper:n}={...(0,c.a)(),...e.components};return n?(0,l.jsx)(n,{...e,children:(0,l.jsx)(t,{...e})}):t(e)}},1151:(e,n,s)=>{s.d(n,{Z:()=>o,a:()=>i});var l=s(7294);const c={},r=l.createContext(c);function i(e){const n=l.useContext(r);return l.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(c):e.components||c:i(e.components),l.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/6bbe02e6.481477f2.js b/assets/js/6bbe02e6.481477f2.js new file mode 100644 index 00000000..eb57cfcf --- /dev/null +++ b/assets/js/6bbe02e6.481477f2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkareweloongyet=self.webpackChunkareweloongyet||[]).push([[7831],{6360:e=>{e.exports=JSON.parse('{"name":"phorcys","kind":0,"url":"","githubUsername":"phorcys","giteeUsername":""}')}}]); \ No newline at end of file diff --git a/assets/js/6f54cb52.a982101b.js b/assets/js/6f54cb52.a982101b.js new file mode 100644 index 00000000..47d22ed5 --- /dev/null +++ b/assets/js/6f54cb52.a982101b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkareweloongyet=self.webpackChunkareweloongyet||[]).push([[2947],{7470:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>a,default:()=>h,frontMatter:()=>s,metadata:()=>i,toc:()=>l});var o=n(5893),r=n(1151);const s={slug:"this-week-in-loongarch-32",title:"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 32 \u671f",authors:["xen0n"],date:new Date("2024-01-08T12:00:00.000Z"),tags:["\u6bcf\u5468\u4e00\u9f99"]},a=void 0,i={permalink:"/newsletter/this-week-in-loongarch-32",editUrl:"https://github.com/loongson-community/areweloongyet/newsletter/2024-01-08-this-week-in-loongarch-32.md",source:"@site/newsletter/2024-01-08-this-week-in-loongarch-32.md",title:"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 32 \u671f",description:"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01",date:"2024-01-08T12:00:00.000Z",formattedDate:"2024\u5e741\u67088\u65e5",tags:[{label:"\u6bcf\u5468\u4e00\u9f99",permalink:"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99"}],readingTime:9.795,hasTruncateMarker:!0,authors:[{name:"WANG Xuerui",title:"\ud83d\udc32\u9f99\u95e8\u5ba2\u6808\u6253\u6742\u7684",url:"https://github.com/xen0n",imageURL:"https://github.com/xen0n.png",key:"xen0n"}],frontMatter:{slug:"this-week-in-loongarch-32",title:"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 32 \u671f",authors:["xen0n"],date:"2024-01-08T12:00:00.000Z",tags:["\u6bcf\u5468\u4e00\u9f99"]},unlisted:!1,nextItem:{title:"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 31 \u671f",permalink:"/newsletter/this-week-in-loongarch-31"}},c={authorsImageUrls:[void 0]},l=[];function u(e){const t={p:"p",...(0,r.a)(),...e.components};return(0,o.jsx)(t.p,{children:"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch\xae \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01\n\u4e0a\u5468\u7684\u8fdb\u5c55\u4e3b\u8981\u6709 Linux\u3001GCC\u3001LLVM \u4ee5\u53ca\u8bb8\u591a\u7684\u53d1\u884c\u7248\u3002\n\u8be6\u60c5\u70b9\u8fdb\u6765\u770b\uff01"})}function h(e={}){const{wrapper:t}={...(0,r.a)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(u,{...e})}):u(e)}},1151:(e,t,n)=>{n.d(t,{Z:()=>i,a:()=>a});var o=n(7294);const r={},s=o.createContext(r);function a(e){const t=o.useContext(s);return o.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function i(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),o.createElement(s.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/7298.ca9d84c7.js b/assets/js/7298.3a91b5ff.js similarity index 99% rename from assets/js/7298.ca9d84c7.js rename to assets/js/7298.3a91b5ff.js index 9ae5c6bb..4b9107a7 100644 --- a/assets/js/7298.ca9d84c7.js +++ b/assets/js/7298.3a91b5ff.js @@ -1,2 +1,2 @@ -/*! For license information please see 7298.ca9d84c7.js.LICENSE.txt */ -(self.webpackChunkareweloongyet=self.webpackChunkareweloongyet||[]).push([[7298],{6397:(e,t,n)=>{"use strict";n.d(t,{iN:()=>x,R_:()=>y});var r=n(6500),i=n(1350),o=2,a=.16,s=.05,c=.05,u=.15,l=5,f=4,d=[{index:7,opacity:.15},{index:6,opacity:.25},{index:5,opacity:.3},{index:5,opacity:.45},{index:5,opacity:.65},{index:5,opacity:.85},{index:4,opacity:.9},{index:3,opacity:.95},{index:2,opacity:.97},{index:1,opacity:.98}];function h(e){var t=e.r,n=e.g,i=e.b,o=(0,r.py)(t,n,i);return{h:360*o.h,s:o.s,v:o.v}}function v(e){var t=e.r,n=e.g,i=e.b;return"#".concat((0,r.vq)(t,n,i,!1))}function p(e,t,n){var r;return(r=Math.round(e.h)>=60&&Math.round(e.h)<=240?n?Math.round(e.h)-o*t:Math.round(e.h)+o*t:n?Math.round(e.h)+o*t:Math.round(e.h)-o*t)<0?r+=360:r>=360&&(r-=360),r}function g(e,t,n){return 0===e.h&&0===e.s?e.s:((r=n?e.s-a*t:t===f?e.s+a:e.s+s*t)>1&&(r=1),n&&t===l&&r>.1&&(r=.1),r<.06&&(r=.06),Number(r.toFixed(2)));var r}function m(e,t,n){var r;return(r=n?e.v+c*t:e.v-u*t)>1&&(r=1),Number(r.toFixed(2))}function y(e){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=[],r=(0,i.uA)(e),o=l;o>0;o-=1){var a=h(r),s=v((0,i.uA)({h:p(a,o,!0),s:g(a,o,!0),v:m(a,o,!0)}));n.push(s)}n.push(v(r));for(var c=1;c<=f;c+=1){var u=h(r),y=v((0,i.uA)({h:p(u,c),s:g(u,c),v:m(u,c)}));n.push(y)}return"dark"===t.theme?d.map((function(e){var r,o,a,s=e.index,c=e.opacity;return v((r=(0,i.uA)(t.backgroundColor||"#141414"),o=(0,i.uA)(n[s]),a=100*c/100,{r:(o.r-r.r)*a+r.r,g:(o.g-r.g)*a+r.g,b:(o.b-r.b)*a+r.b}))})):n}var b={red:"#F5222D",volcano:"#FA541C",orange:"#FA8C16",gold:"#FAAD14",yellow:"#FADB14",lime:"#A0D911",green:"#52C41A",cyan:"#13C2C2",blue:"#1677FF",geekblue:"#2F54EB",purple:"#722ED1",magenta:"#EB2F96",grey:"#666666"},_={},w={};Object.keys(b).forEach((function(e){_[e]=y(b[e]),_[e].primary=_[e][5],w[e]=y(b[e],{theme:"dark",backgroundColor:"#141414"}),w[e].primary=w[e][5]}));_.red,_.volcano,_.gold,_.orange,_.yellow,_.lime,_.green,_.cyan;var x=_.blue;_.geekblue,_.purple,_.magenta,_.grey,_.grey},5980:(e,t,n)=>{"use strict";n.d(t,{jG:()=>Z,t2:()=>ee,ks:()=>V,bf:()=>I,CI:()=>st,fp:()=>ne,xy:()=>ot});var r=n(4942),i=n(7685),o=n(4902),a=n(1413);const s=function(e){for(var t,n=0,r=0,i=e.length;i>=4;++r,i-=4)t=1540483477*(65535&(t=255&e.charCodeAt(r)|(255&e.charCodeAt(++r))<<8|(255&e.charCodeAt(++r))<<16|(255&e.charCodeAt(++r))<<24))+(59797*(t>>>16)<<16),n=1540483477*(65535&(t^=t>>>24))+(59797*(t>>>16)<<16)^1540483477*(65535&n)+(59797*(n>>>16)<<16);switch(i){case 3:n^=(255&e.charCodeAt(r+2))<<16;case 2:n^=(255&e.charCodeAt(r+1))<<8;case 1:n=1540483477*(65535&(n^=255&e.charCodeAt(r)))+(59797*(n>>>16)<<16)}return(((n=1540483477*(65535&(n^=n>>>13))+(59797*(n>>>16)<<16))^n>>>15)>>>0).toString(36)};var c=n(8981),u=n(7294),l=n.t(u,2),f=(n(6982),n(1881),n(5671)),d=n(3144);const h=function(){function e(t){(0,f.Z)(this,e),(0,r.Z)(this,"instanceId",void 0),(0,r.Z)(this,"cache",new Map),this.instanceId=t}return(0,d.Z)(e,[{key:"get",value:function(e){return this.cache.get(e.join("%"))||null}},{key:"update",value:function(e,t){var n=e.join("%"),r=t(this.cache.get(n));null===r?this.cache.delete(n):this.cache.set(n,r)}}]),e}();var v="data-token-hash",p="data-css-hash",g="__cssinjs_instance__";function m(){var e=Math.random().toString(12).slice(2);if("undefined"!=typeof document&&document.head&&document.body){var t=document.body.querySelectorAll("style[".concat(p,"]"))||[],n=document.head.firstChild;Array.from(t).forEach((function(t){t[g]=t[g]||e,t[g]===e&&document.head.insertBefore(t,n)}));var r={};Array.from(document.querySelectorAll("style[".concat(p,"]"))).forEach((function(t){var n,i=t.getAttribute(p);r[i]?t[g]===e&&(null===(n=t.parentNode)||void 0===n||n.removeChild(t)):r[i]=!0}))}return new h(e)}var y=u.createContext({hashPriority:"low",cache:m(),defaultCache:!0});const b=y;var _=n(1002),w=n(8924);var x=function(){function e(){(0,f.Z)(this,e),(0,r.Z)(this,"cache",void 0),(0,r.Z)(this,"keys",void 0),(0,r.Z)(this,"cacheCallTimes",void 0),this.cache=new Map,this.keys=[],this.cacheCallTimes=0}return(0,d.Z)(e,[{key:"size",value:function(){return this.keys.length}},{key:"internalGet",value:function(e){var t,n,r=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i={map:this.cache};return e.forEach((function(e){var t;i?i=null===(t=i)||void 0===t||null===(t=t.map)||void 0===t?void 0:t.get(e):i=void 0})),null!==(t=i)&&void 0!==t&&t.value&&r&&(i.value[1]=this.cacheCallTimes++),null===(n=i)||void 0===n?void 0:n.value}},{key:"get",value:function(e){var t;return null===(t=this.internalGet(e,!0))||void 0===t?void 0:t[0]}},{key:"has",value:function(e){return!!this.internalGet(e)}},{key:"set",value:function(t,n){var r=this;if(!this.has(t)){if(this.size()+1>e.MAX_CACHE_SIZE+e.MAX_CACHE_OFFSET){var o=this.keys.reduce((function(e,t){var n=(0,i.Z)(e,2)[1];return r.internalGet(t)[1]0,"[Ant Design CSS-in-JS] Theme should have at least one derivative function."),O+=1}return(0,d.Z)(e,[{key:"getDerivativeToken",value:function(e){return this.derivatives.reduce((function(t,n){return n(e,t)}),void 0)}}]),e}(),E=new x;function Z(e){var t=Array.isArray(e)?e:[e];return E.has(t)||E.set(t,new k(t)),E.get(t)}var C=new WeakMap,A={};var P=new WeakMap;function j(e){var t=P.get(e)||"";return t||(Object.keys(e).forEach((function(n){var r=e[n];t+=n,r instanceof k?t+=r.id:r&&"object"===(0,_.Z)(r)?t+=j(r):t+=r})),P.set(e,t)),t}function F(e,t){return s("".concat(t,"_").concat(j(e)))}var M="random-".concat(Date.now(),"-").concat(Math.random()).replace(/\./g,""),T="_bAmBoO_";function R(e,t,n){if((0,w.Z)()){var r,i;(0,c.hq)(e,M);var o=document.createElement("div");o.style.position="fixed",o.style.left="0",o.style.top="0",null==t||t(o),document.body.appendChild(o);var a=n?n(o):null===(r=getComputedStyle(o).content)||void 0===r?void 0:r.includes(T);return null===(i=o.parentNode)||void 0===i||i.removeChild(o),(0,c.jL)(M),a}return!1}var N=void 0;var $=(0,w.Z)();function I(e){return"number"==typeof e?"".concat(e,"px"):e}function L(e,t,n){var i,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(arguments.length>4&&void 0!==arguments[4]&&arguments[4])return e;var s=(0,a.Z)((0,a.Z)({},o),{},(i={},(0,r.Z)(i,v,t),(0,r.Z)(i,p,n),i)),c=Object.keys(s).map((function(e){var t=s[e];return t?"".concat(e,'="').concat(t,'"'):null})).filter((function(e){return e})).join(" ");return"")}var V=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return"--".concat(t?"".concat(t,"-"):"").concat(e).replace(/([a-z0-9])([A-Z])/g,"$1-$2").replace(/([A-Z]+)([A-Z][a-z0-9]+)/g,"$1-$2").replace(/([a-z])([A-Z0-9])/g,"$1-$2").toLowerCase()},D=function(e,t,n){return Object.keys(e).length?".".concat(t).concat(null!=n&&n.scope?".".concat(n.scope):"","{").concat(Object.entries(e).map((function(e){var t=(0,i.Z)(e,2),n=t[0],r=t[1];return"".concat(n,":").concat(r,";")})).join(""),"}"):""},H=function(e,t,n){var r={},o={};return Object.entries(e).forEach((function(e){var t,a,s=(0,i.Z)(e,2),c=s[0],u=s[1];if(null!=n&&null!==(t=n.preserve)&&void 0!==t&&t[c])o[c]=u;else if(!("string"!=typeof u&&"number"!=typeof u||null!=n&&null!==(a=n.ignore)&&void 0!==a&&a[c])){var l,f=V(c,null==n?void 0:n.prefix);r[f]="number"!=typeof u||null!=n&&null!==(l=n.unitless)&&void 0!==l&&l[c]?String(u):"".concat(u,"px"),o[c]="var(".concat(f,")")}})),[o,D(r,t,{scope:null==n?void 0:n.scope})]},B=n(8410),z=(0,a.Z)({},l).useInsertionEffect;const q=z?function(e,t,n){return z((function(){return e(),t()}),n)}:function(e,t,n){u.useMemo(e,n),(0,B.Z)((function(){return t(!0)}),n)};const U=void 0!==(0,a.Z)({},l).useInsertionEffect?function(e){var t=[],n=!1;return u.useEffect((function(){return n=!1,function(){n=!0,t.length&&t.forEach((function(e){return e()}))}}),e),function(e){n||t.push(e)}}:function(){return function(e){e()}};const W=function(){return!1};function G(e,t,n,r,a){var s=u.useContext(b).cache,c=[e].concat((0,o.Z)(t)),l=c.join("_"),f=U([l]),d=(W(),function(e){s.update(c,(function(t){var r=t||[void 0,void 0],o=(0,i.Z)(r,2),a=o[0];var s=[void 0===a?0:a,o[1]||n()];return e?e(s):s}))});u.useMemo((function(){d()}),[l]);var h=s.get(c)[1];return q((function(){null==a||a(h)}),(function(e){return d((function(t){var n=(0,i.Z)(t,2),r=n[0],o=n[1];return e&&0===r&&(null==a||a(h)),[r+1,o]})),function(){s.update(c,(function(t){var n=t||[],o=(0,i.Z)(n,2),a=o[0],u=void 0===a?0:a,l=o[1];return 0===u-1?(f((function(){!e&&s.get(c)||null==r||r(l,!1)})),null):[u-1,l]}))}}),[l]),h}var X={},K="css",Y=new Map;var Q=0;function J(e,t){Y.set(e,(Y.get(e)||0)-1);var n=Array.from(Y.keys()),r=n.filter((function(e){return(Y.get(e)||0)<=0}));n.length-r.length>Q&&r.forEach((function(e){!function(e,t){"undefined"!=typeof document&&document.querySelectorAll("style[".concat(v,'="').concat(e,'"]')).forEach((function(e){var n;e[g]===t&&(null===(n=e.parentNode)||void 0===n||n.removeChild(e))}))}(e,t),Y.delete(e)}))}var ee=function(e,t,n,r){var i=n.getDerivativeToken(e),o=(0,a.Z)((0,a.Z)({},i),t);return r&&(o=r(o)),o},te="token";function ne(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=(0,u.useContext)(b),l=r.cache.instanceId,f=r.container,d=n.salt,h=void 0===d?"":d,m=n.override,y=void 0===m?X:m,_=n.formatToken,w=n.getComputedToken,x=n.cssVar,S=function(e,t){for(var n=C,r=0;r0?ge(Ze,--ke):0,Se--,10===Ee&&(Se=1,xe--),Ee}function Pe(){return Ee=ke2||Te(Ee)>3?"":" "}function Le(e,t){for(;--t&&Pe()&&!(Ee<48||Ee>102||Ee>57&&Ee<65||Ee>70&&Ee<97););return Me(e,Fe()+(t<6&&32==je()&&32==Pe()))}function Ve(e){for(;Pe();)switch(Ee){case e:return ke;case 34:case 39:34!==e&&39!==e&&Ve(Ee);break;case 40:41===e&&Ve(e);break;case 92:Pe()}return ke}function De(e,t){for(;Pe()&&e+Ee!==57&&(e+Ee!==84||47!==je()););return"/*"+Me(t,ke-1)+"*"+de(47===e?e:Pe())}function He(e){for(;!Te(je());)Pe();return Me(e,ke)}function Be(e){return Ne(ze("",null,null,null,[""],e=Re(e),0,[0],e))}function ze(e,t,n,r,i,o,a,s,c){for(var u=0,l=0,f=a,d=0,h=0,v=0,p=1,g=1,m=1,y=0,b="",_=i,w=o,x=r,S=b;g;)switch(v=y,y=Pe()){case 40:if(108!=v&&58==ge(S,f-1)){-1!=pe(S+=ve($e(y),"&","&\f"),"&\f")&&(m=-1);break}case 34:case 39:case 91:S+=$e(y);break;case 9:case 10:case 13:case 32:S+=Ie(v);break;case 92:S+=Le(Fe()-1,7);continue;case 47:switch(je()){case 42:case 47:be(Ue(De(Pe(),Fe()),t,n,c),c);break;default:S+="/"}break;case 123*p:s[u++]=ye(S)*m;case 125*p:case 59:case 0:switch(y){case 0:case 125:g=0;case 59+l:-1==m&&(S=ve(S,/\f/g,"")),h>0&&ye(S)-f&&be(h>32?We(S+";",r,n,f-1,c):We(ve(S," ","")+";",r,n,f-2,c),c);break;case 59:S+=";";default:if(be(x=qe(S,t,n,u,l,i,s,b,_=[],w=[],f,o),o),123===y)if(0===l)ze(S,t,x,x,_,o,f,s,w);else switch(99===d&&110===ge(S,3)?100:d){case 100:case 108:case 109:case 115:ze(e,x,x,r&&be(qe(e,x,x,0,0,i,s,b,i,_=[],f,w),w),i,w,f,s,r?_:w);break;default:ze(S,x,x,x,[""],w,0,s,w)}}u=l=h=0,p=m=1,b=S="",f=a;break;case 58:f=1+ye(S),h=v;default:if(p<1)if(123==y)--p;else if(125==y&&0==p++&&125==Ae())continue;switch(S+=de(y),y*p){case 38:m=l>0?1:(S+="\f",-1);break;case 44:s[u++]=(ye(S)-1)*m,m=1;break;case 64:45===je()&&(S+=$e(Pe())),d=je(),l=f=ye(b=S+=He(Fe())),y++;break;case 45:45===v&&2==ye(S)&&(p=0)}}return o}function qe(e,t,n,r,i,o,a,s,c,u,l,f){for(var d=i-1,h=0===i?o:[""],v=function(e){return e.length}(h),p=0,g=0,m=0;p0?h[y]+" "+b:ve(b,/&\f/g,h[y])))&&(c[m++]=_);return Ce(e,t,n,0===i?ae:s,c,u,l,f)}function Ue(e,t,n,r){return Ce(e,t,n,oe,de(Ee),me(e,2,-2),0,r)}function We(e,t,n,r,i){return Ce(e,t,n,se,me(e,0,r),me(e,r+1,-1),r,i)}var Ge,Xe="data-ant-cssinjs-cache-path",Ke="_FILE_STYLE__";var Ye=!0;function Qe(e){return function(){if(!Ge&&(Ge={},(0,w.Z)())){var e=document.createElement("div");e.className=Xe,e.style.position="fixed",e.style.visibility="hidden",e.style.top="-9999px",document.body.appendChild(e);var t=getComputedStyle(e).content||"";(t=t.replace(/^"/,"").replace(/"$/,"")).split(";").forEach((function(e){var t=e.split(":"),n=(0,i.Z)(t,2),r=n[0],o=n[1];Ge[r]=o}));var n,r=document.querySelector("style[".concat(Xe,"]"));r&&(Ye=!1,null===(n=r.parentNode)||void 0===n||n.removeChild(r)),document.body.removeChild(e)}}(),!!Ge[e]}var Je="_multi_value_";function et(e){return _e(Be(e),we).replace(/\{%%%\:[^;];}/g,";")}var tt=function e(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{root:!0,parentSelectors:[]},s=r.root,c=r.injectHash,u=r.parentSelectors,l=n.hashId,f=n.layer,d=(n.path,n.hashPriority),h=n.transformers,v=void 0===h?[]:h,p=(n.linters,""),g={};function m(t){var r=t.getName(l);if(!g[r]){var o=e(t.style,n,{root:!1,parentSelectors:u}),a=(0,i.Z)(o,1)[0];g[r]="@keyframes ".concat(t.getName(l)).concat(a)}}var y=function e(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return t.forEach((function(t){Array.isArray(t)?e(t,n):t&&n.push(t)})),n}(Array.isArray(t)?t:[t]);if(y.forEach((function(t){var r="string"!=typeof t||s?t:{};if("string"==typeof r)p+="".concat(r,"\n");else if(r._keyframe)m(r);else{var f=v.reduce((function(e,t){var n;return(null==t||null===(n=t.visit)||void 0===n?void 0:n.call(t,e))||e}),r);Object.keys(f).forEach((function(t){var r=f[t];if("object"!==(0,_.Z)(r)||!r||"animationName"===t&&r._keyframe||function(e){return"object"===(0,_.Z)(e)&&e&&("_skip_check_"in e||Je in e)}(r)){var h;function E(e,t){var n=e.replace(/[A-Z]/g,(function(e){return"-".concat(e.toLowerCase())})),r=t;ie[e]||"number"!=typeof r||0===r||(r="".concat(r,"px")),"animationName"===e&&null!=t&&t._keyframe&&(m(t),r=t.getName(l)),p+="".concat(n,":").concat(r,";")}var v=null!==(h=null==r?void 0:r.value)&&void 0!==h?h:r;"object"===(0,_.Z)(r)&&null!=r&&r[Je]&&Array.isArray(v)?v.forEach((function(e){E(t,e)})):E(t,v)}else{var y=!1,b=t.trim(),w=!1;(s||c)&&l?b.startsWith("@")?y=!0:b=function(e,t,n){if(!t)return e;var r=".".concat(t),i="low"===n?":where(".concat(r,")"):r;return e.split(",").map((function(e){var t,n=e.trim().split(/\s+/),r=n[0]||"",a=(null===(t=r.match(/^\w+/))||void 0===t?void 0:t[0])||"";return[r="".concat(a).concat(i).concat(r.slice(a.length))].concat((0,o.Z)(n.slice(1))).join(" ")})).join(",")}(t,l,d):!s||l||"&"!==b&&""!==b||(b="",w=!0);var x=e(r,n,{root:w,injectHash:y,parentSelectors:[].concat((0,o.Z)(u),[b])}),S=(0,i.Z)(x,2),O=S[0],k=S[1];g=(0,a.Z)((0,a.Z)({},g),k),p+="".concat(b).concat(O)}}))}})),s){if(f&&(void 0===N&&(N=R("@layer ".concat(M," { .").concat(M,' { content: "').concat(T,'"!important; } }'),(function(e){e.className=M}))),N)){var b=f.split(","),w=b[b.length-1].trim();p="@layer ".concat(w," {").concat(p,"}"),b.length>1&&(p="@layer ".concat(f,"{%%%:%}").concat(p))}}else p="{".concat(p,"}");return[p,g]};function nt(e,t){return s("".concat(e.join("%")).concat(t))}function rt(){return null}var it="style";function ot(e,t){var n=e.token,a=e.path,s=e.hashId,l=e.layer,f=e.nonce,d=e.clientOnly,h=e.order,m=void 0===h?0:h,y=u.useContext(b),_=y.autoClear,x=(y.mock,y.defaultCache),S=y.hashPriority,O=y.container,k=y.ssrInline,E=y.transformers,Z=y.linters,C=y.cache,A=n._tokenKey,P=[A].concat((0,o.Z)(a)),j=$;var F=G(it,P,(function(){var e=P.join("|");if(Qe(e)){var n=function(e){var t=Ge[e],n=null;if(t&&(0,w.Z)())if(Ye)n=Ke;else{var r=document.querySelector("style[".concat(p,'="').concat(Ge[e],'"]'));r?n=r.innerHTML:delete Ge[e]}return[n,t]}(e),r=(0,i.Z)(n,2),o=r[0],c=r[1];if(o)return[o,A,c,{},d,m]}var u=t(),f=tt(u,{hashId:s,hashPriority:S,layer:l,path:a.join("-"),transformers:E,linters:Z}),h=(0,i.Z)(f,2),v=h[0],g=h[1],y=et(v),b=nt(P,y);return[y,A,b,g,d,m]}),(function(e,t){var n=(0,i.Z)(e,3)[2];(t||_)&&$&&(0,c.jL)(n,{mark:p})}),(function(e){var t=(0,i.Z)(e,4),n=t[0],r=(t[1],t[2]),o=t[3];if(j&&n!==Ke){var a={mark:p,prepend:"queue",attachTo:O,priority:m},s="function"==typeof f?f():f;s&&(a.csp={nonce:s});var u=(0,c.hq)(n,r,a);u[g]=C.instanceId,u.setAttribute(v,A),Object.keys(o).forEach((function(e){(0,c.hq)(et(o[e]),"_effect-".concat(e),a)}))}})),M=(0,i.Z)(F,3),T=M[0],R=M[1],N=M[2];return function(e){var t,n;k&&!j&&x?t=u.createElement("style",(0,re.Z)({},(n={},(0,r.Z)(n,v,R),(0,r.Z)(n,p,N),n),{dangerouslySetInnerHTML:{__html:T}})):t=u.createElement(rt,null);return u.createElement(u.Fragment,null,t,e)}}var at="cssVar";const st=function(e,t){var n=e.key,r=e.prefix,a=e.unitless,s=e.ignore,l=e.token,f=e.scope,d=void 0===f?"":f,h=(0,u.useContext)(b),m=h.cache.instanceId,y=h.container,_=l._tokenKey,w=[].concat((0,o.Z)(e.path),[n,d,_]);return G(at,w,(function(){var e=t(),o=H(e,n,{prefix:r,unitless:a,ignore:s,scope:d}),c=(0,i.Z)(o,2),u=c[0],l=c[1];return[u,l,nt(w,l),n]}),(function(e){var t=(0,i.Z)(e,3)[2];$&&(0,c.jL)(t,{mark:p})}),(function(e){var t=(0,i.Z)(e,3),r=t[1],o=t[2];if(r){var a=(0,c.hq)(r,o,{mark:p,prepend:"queue",attachTo:y,priority:-999});a[g]=m,a.setAttribute(v,n)}}))};var ct;ct={},(0,r.Z)(ct,it,(function(e,t,n){var r=(0,i.Z)(e,6),o=r[0],a=r[1],s=r[2],c=r[3],u=r[4],l=r[5],f=(n||{}).plain;if(u)return null;var d=o,h={"data-rc-order":"prependQueue","data-rc-priority":"".concat(l)};return d=L(o,a,s,h,f),c&&Object.keys(c).forEach((function(e){if(!t[e]){t[e]=!0;var n=et(c[e]);d+=L(n,a,"_effect-".concat(e),h,f)}})),[l,s,d]})),(0,r.Z)(ct,te,(function(e,t,n){var r=(0,i.Z)(e,5),o=r[2],a=r[3],s=r[4],c=(n||{}).plain;if(!a)return null;var u=o._tokenKey;return[-999,u,L(a,s,u,{"data-rc-order":"prependQueue","data-rc-priority":"".concat(-999)},c)]})),(0,r.Z)(ct,at,(function(e,t,n){var r=(0,i.Z)(e,4),o=r[1],a=r[2],s=r[3],c=(n||{}).plain;if(!o)return null;return[-999,a,L(o,s,a,{"data-rc-order":"prependQueue","data-rc-priority":"".concat(-999)},c)]}));function ut(e){return e.notSplit=!0,e}ut(["borderTop","borderBottom"]),ut(["borderTop"]),ut(["borderBottom"]),ut(["borderLeft","borderRight"]),ut(["borderLeft"]),ut(["borderRight"])},3017:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r=(0,n(7294).createContext)({})},6500:(e,t,n)=>{"use strict";n.d(t,{T6:()=>h,VD:()=>v,WE:()=>u,Yt:()=>p,lC:()=>o,py:()=>c,rW:()=>i,s:()=>f,ve:()=>s,vq:()=>l});var r=n(279);function i(e,t,n){return{r:255*(0,r.sh)(e,255),g:255*(0,r.sh)(t,255),b:255*(0,r.sh)(n,255)}}function o(e,t,n){e=(0,r.sh)(e,255),t=(0,r.sh)(t,255),n=(0,r.sh)(n,255);var i=Math.max(e,t,n),o=Math.min(e,t,n),a=0,s=0,c=(i+o)/2;if(i===o)s=0,a=0;else{var u=i-o;switch(s=c>.5?u/(2-i-o):u/(i+o),i){case e:a=(t-n)/u+(t1&&(n-=1),n<1/6?e+6*n*(t-e):n<.5?t:n<2/3?e+(t-e)*(2/3-n)*6:e}function s(e,t,n){var i,o,s;if(e=(0,r.sh)(e,360),t=(0,r.sh)(t,100),n=(0,r.sh)(n,100),0===t)o=n,s=n,i=n;else{var c=n<.5?n*(1+t):n+t-n*t,u=2*n-c;i=a(u,c,e+1/3),o=a(u,c,e),s=a(u,c,e-1/3)}return{r:255*i,g:255*o,b:255*s}}function c(e,t,n){e=(0,r.sh)(e,255),t=(0,r.sh)(t,255),n=(0,r.sh)(n,255);var i=Math.max(e,t,n),o=Math.min(e,t,n),a=0,s=i,c=i-o,u=0===i?0:c/i;if(i===o)a=0;else{switch(i){case e:a=(t-n)/c+(t>16,g:(65280&e)>>8,b:255&e}}},8701:(e,t,n)=>{"use strict";n.d(t,{R:()=>r});var r={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",goldenrod:"#daa520",gold:"#ffd700",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavenderblush:"#fff0f5",lavender:"#e6e6fa",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"}},1350:(e,t,n)=>{"use strict";n.d(t,{uA:()=>a});var r=n(6500),i=n(8701),o=n(279);function a(e){var t={r:0,g:0,b:0},n=1,a=null,s=null,c=null,u=!1,d=!1;return"string"==typeof e&&(e=function(e){if(e=e.trim().toLowerCase(),0===e.length)return!1;var t=!1;if(i.R[e])e=i.R[e],t=!0;else if("transparent"===e)return{r:0,g:0,b:0,a:0,format:"name"};var n=l.rgb.exec(e);if(n)return{r:n[1],g:n[2],b:n[3]};if(n=l.rgba.exec(e),n)return{r:n[1],g:n[2],b:n[3],a:n[4]};if(n=l.hsl.exec(e),n)return{h:n[1],s:n[2],l:n[3]};if(n=l.hsla.exec(e),n)return{h:n[1],s:n[2],l:n[3],a:n[4]};if(n=l.hsv.exec(e),n)return{h:n[1],s:n[2],v:n[3]};if(n=l.hsva.exec(e),n)return{h:n[1],s:n[2],v:n[3],a:n[4]};if(n=l.hex8.exec(e),n)return{r:(0,r.VD)(n[1]),g:(0,r.VD)(n[2]),b:(0,r.VD)(n[3]),a:(0,r.T6)(n[4]),format:t?"name":"hex8"};if(n=l.hex6.exec(e),n)return{r:(0,r.VD)(n[1]),g:(0,r.VD)(n[2]),b:(0,r.VD)(n[3]),format:t?"name":"hex"};if(n=l.hex4.exec(e),n)return{r:(0,r.VD)(n[1]+n[1]),g:(0,r.VD)(n[2]+n[2]),b:(0,r.VD)(n[3]+n[3]),a:(0,r.T6)(n[4]+n[4]),format:t?"name":"hex8"};if(n=l.hex3.exec(e),n)return{r:(0,r.VD)(n[1]+n[1]),g:(0,r.VD)(n[2]+n[2]),b:(0,r.VD)(n[3]+n[3]),format:t?"name":"hex"};return!1}(e)),"object"==typeof e&&(f(e.r)&&f(e.g)&&f(e.b)?(t=(0,r.rW)(e.r,e.g,e.b),u=!0,d="%"===String(e.r).substr(-1)?"prgb":"rgb"):f(e.h)&&f(e.s)&&f(e.v)?(a=(0,o.JX)(e.s),s=(0,o.JX)(e.v),t=(0,r.WE)(e.h,a,s),u=!0,d="hsv"):f(e.h)&&f(e.s)&&f(e.l)&&(a=(0,o.JX)(e.s),c=(0,o.JX)(e.l),t=(0,r.ve)(e.h,a,c),u=!0,d="hsl"),Object.prototype.hasOwnProperty.call(e,"a")&&(n=e.a)),n=(0,o.Yq)(n),{ok:u,format:e.format||d,r:Math.min(255,Math.max(t.r,0)),g:Math.min(255,Math.max(t.g,0)),b:Math.min(255,Math.max(t.b,0)),a:n}}var s="(?:".concat("[-\\+]?\\d*\\.\\d+%?",")|(?:").concat("[-\\+]?\\d+%?",")"),c="[\\s|\\(]+(".concat(s,")[,|\\s]+(").concat(s,")[,|\\s]+(").concat(s,")\\s*\\)?"),u="[\\s|\\(]+(".concat(s,")[,|\\s]+(").concat(s,")[,|\\s]+(").concat(s,")[,|\\s]+(").concat(s,")\\s*\\)?"),l={CSS_UNIT:new RegExp(s),rgb:new RegExp("rgb"+c),rgba:new RegExp("rgba"+u),hsl:new RegExp("hsl"+c),hsla:new RegExp("hsla"+u),hsv:new RegExp("hsv"+c),hsva:new RegExp("hsva"+u),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/};function f(e){return Boolean(l.CSS_UNIT.exec(String(e)))}},274:(e,t,n)=>{"use strict";n.d(t,{C:()=>s});var r=n(6500),i=n(8701),o=n(1350),a=n(279),s=function(){function e(t,n){var i;if(void 0===t&&(t=""),void 0===n&&(n={}),t instanceof e)return t;"number"==typeof t&&(t=(0,r.Yt)(t)),this.originalInput=t;var a=(0,o.uA)(t);this.originalInput=t,this.r=a.r,this.g=a.g,this.b=a.b,this.a=a.a,this.roundA=Math.round(100*this.a)/100,this.format=null!==(i=n.format)&&void 0!==i?i:a.format,this.gradientType=n.gradientType,this.r<1&&(this.r=Math.round(this.r)),this.g<1&&(this.g=Math.round(this.g)),this.b<1&&(this.b=Math.round(this.b)),this.isValid=a.ok}return e.prototype.isDark=function(){return this.getBrightness()<128},e.prototype.isLight=function(){return!this.isDark()},e.prototype.getBrightness=function(){var e=this.toRgb();return(299*e.r+587*e.g+114*e.b)/1e3},e.prototype.getLuminance=function(){var e=this.toRgb(),t=e.r/255,n=e.g/255,r=e.b/255;return.2126*(t<=.03928?t/12.92:Math.pow((t+.055)/1.055,2.4))+.7152*(n<=.03928?n/12.92:Math.pow((n+.055)/1.055,2.4))+.0722*(r<=.03928?r/12.92:Math.pow((r+.055)/1.055,2.4))},e.prototype.getAlpha=function(){return this.a},e.prototype.setAlpha=function(e){return this.a=(0,a.Yq)(e),this.roundA=Math.round(100*this.a)/100,this},e.prototype.isMonochrome=function(){return 0===this.toHsl().s},e.prototype.toHsv=function(){var e=(0,r.py)(this.r,this.g,this.b);return{h:360*e.h,s:e.s,v:e.v,a:this.a}},e.prototype.toHsvString=function(){var e=(0,r.py)(this.r,this.g,this.b),t=Math.round(360*e.h),n=Math.round(100*e.s),i=Math.round(100*e.v);return 1===this.a?"hsv(".concat(t,", ").concat(n,"%, ").concat(i,"%)"):"hsva(".concat(t,", ").concat(n,"%, ").concat(i,"%, ").concat(this.roundA,")")},e.prototype.toHsl=function(){var e=(0,r.lC)(this.r,this.g,this.b);return{h:360*e.h,s:e.s,l:e.l,a:this.a}},e.prototype.toHslString=function(){var e=(0,r.lC)(this.r,this.g,this.b),t=Math.round(360*e.h),n=Math.round(100*e.s),i=Math.round(100*e.l);return 1===this.a?"hsl(".concat(t,", ").concat(n,"%, ").concat(i,"%)"):"hsla(".concat(t,", ").concat(n,"%, ").concat(i,"%, ").concat(this.roundA,")")},e.prototype.toHex=function(e){return void 0===e&&(e=!1),(0,r.vq)(this.r,this.g,this.b,e)},e.prototype.toHexString=function(e){return void 0===e&&(e=!1),"#"+this.toHex(e)},e.prototype.toHex8=function(e){return void 0===e&&(e=!1),(0,r.s)(this.r,this.g,this.b,this.a,e)},e.prototype.toHex8String=function(e){return void 0===e&&(e=!1),"#"+this.toHex8(e)},e.prototype.toHexShortString=function(e){return void 0===e&&(e=!1),1===this.a?this.toHexString(e):this.toHex8String(e)},e.prototype.toRgb=function(){return{r:Math.round(this.r),g:Math.round(this.g),b:Math.round(this.b),a:this.a}},e.prototype.toRgbString=function(){var e=Math.round(this.r),t=Math.round(this.g),n=Math.round(this.b);return 1===this.a?"rgb(".concat(e,", ").concat(t,", ").concat(n,")"):"rgba(".concat(e,", ").concat(t,", ").concat(n,", ").concat(this.roundA,")")},e.prototype.toPercentageRgb=function(){var e=function(e){return"".concat(Math.round(100*(0,a.sh)(e,255)),"%")};return{r:e(this.r),g:e(this.g),b:e(this.b),a:this.a}},e.prototype.toPercentageRgbString=function(){var e=function(e){return Math.round(100*(0,a.sh)(e,255))};return 1===this.a?"rgb(".concat(e(this.r),"%, ").concat(e(this.g),"%, ").concat(e(this.b),"%)"):"rgba(".concat(e(this.r),"%, ").concat(e(this.g),"%, ").concat(e(this.b),"%, ").concat(this.roundA,")")},e.prototype.toName=function(){if(0===this.a)return"transparent";if(this.a<1)return!1;for(var e="#"+(0,r.vq)(this.r,this.g,this.b,!1),t=0,n=Object.entries(i.R);t=0;return t||!r||!e.startsWith("hex")&&"name"!==e?("rgb"===e&&(n=this.toRgbString()),"prgb"===e&&(n=this.toPercentageRgbString()),"hex"!==e&&"hex6"!==e||(n=this.toHexString()),"hex3"===e&&(n=this.toHexString(!0)),"hex4"===e&&(n=this.toHex8String(!0)),"hex8"===e&&(n=this.toHex8String()),"name"===e&&(n=this.toName()),"hsl"===e&&(n=this.toHslString()),"hsv"===e&&(n=this.toHsvString()),n||this.toHexString()):"name"===e&&0===this.a?this.toName():this.toRgbString()},e.prototype.toNumber=function(){return(Math.round(this.r)<<16)+(Math.round(this.g)<<8)+Math.round(this.b)},e.prototype.clone=function(){return new e(this.toString())},e.prototype.lighten=function(t){void 0===t&&(t=10);var n=this.toHsl();return n.l+=t/100,n.l=(0,a.V2)(n.l),new e(n)},e.prototype.brighten=function(t){void 0===t&&(t=10);var n=this.toRgb();return n.r=Math.max(0,Math.min(255,n.r-Math.round(-t/100*255))),n.g=Math.max(0,Math.min(255,n.g-Math.round(-t/100*255))),n.b=Math.max(0,Math.min(255,n.b-Math.round(-t/100*255))),new e(n)},e.prototype.darken=function(t){void 0===t&&(t=10);var n=this.toHsl();return n.l-=t/100,n.l=(0,a.V2)(n.l),new e(n)},e.prototype.tint=function(e){return void 0===e&&(e=10),this.mix("white",e)},e.prototype.shade=function(e){return void 0===e&&(e=10),this.mix("black",e)},e.prototype.desaturate=function(t){void 0===t&&(t=10);var n=this.toHsl();return n.s-=t/100,n.s=(0,a.V2)(n.s),new e(n)},e.prototype.saturate=function(t){void 0===t&&(t=10);var n=this.toHsl();return n.s+=t/100,n.s=(0,a.V2)(n.s),new e(n)},e.prototype.greyscale=function(){return this.desaturate(100)},e.prototype.spin=function(t){var n=this.toHsl(),r=(n.h+t)%360;return n.h=r<0?360+r:r,new e(n)},e.prototype.mix=function(t,n){void 0===n&&(n=50);var r=this.toRgb(),i=new e(t).toRgb(),o=n/100;return new e({r:(i.r-r.r)*o+r.r,g:(i.g-r.g)*o+r.g,b:(i.b-r.b)*o+r.b,a:(i.a-r.a)*o+r.a})},e.prototype.analogous=function(t,n){void 0===t&&(t=6),void 0===n&&(n=30);var r=this.toHsl(),i=360/n,o=[this];for(r.h=(r.h-(i*t>>1)+720)%360;--t;)r.h=(r.h+i)%360,o.push(new e(r));return o},e.prototype.complement=function(){var t=this.toHsl();return t.h=(t.h+180)%360,new e(t)},e.prototype.monochromatic=function(t){void 0===t&&(t=6);for(var n=this.toHsv(),r=n.h,i=n.s,o=n.v,a=[],s=1/t;t--;)a.push(new e({h:r,s:i,v:o})),o=(o+s)%1;return a},e.prototype.splitcomplement=function(){var t=this.toHsl(),n=t.h;return[this,new e({h:(n+72)%360,s:t.s,l:t.l}),new e({h:(n+216)%360,s:t.s,l:t.l})]},e.prototype.onBackground=function(t){var n=this.toRgb(),r=new e(t).toRgb(),i=n.a+r.a*(1-n.a);return new e({r:(n.r*n.a+r.r*r.a*(1-n.a))/i,g:(n.g*n.a+r.g*r.a*(1-n.a))/i,b:(n.b*n.a+r.b*r.a*(1-n.a))/i,a:i})},e.prototype.triad=function(){return this.polyad(3)},e.prototype.tetrad=function(){return this.polyad(4)},e.prototype.polyad=function(t){for(var n=this.toHsl(),r=n.h,i=[this],o=360/t,a=1;a{"use strict";function r(e,t){(function(e){return"string"==typeof e&&-1!==e.indexOf(".")&&1===parseFloat(e)})(e)&&(e="100%");var n=function(e){return"string"==typeof e&&-1!==e.indexOf("%")}(e);return e=360===t?e:Math.min(t,Math.max(0,parseFloat(e))),n&&(e=parseInt(String(e*t),10)/100),Math.abs(e-t)<1e-6?1:e=360===t?(e<0?e%t+t:e%t)/parseFloat(String(t)):e%t/parseFloat(String(t))}function i(e){return Math.min(1,Math.max(0,e))}function o(e){return e=parseFloat(e),(isNaN(e)||e<0||e>1)&&(e=1),e}function a(e){return e<=1?"".concat(100*Number(e),"%"):e}function s(e){return 1===e.length?"0"+e:String(e)}n.d(t,{FZ:()=>s,JX:()=>a,V2:()=>i,Yq:()=>o,sh:()=>r})},4769:(e,t,n)=>{"use strict";n.d(t,{Z:()=>D});var r=n(4184),i=n.n(r),o=n(2550);var a=n(7294),s=n.t(a,2),c=n(3124);const{isValidElement:u}=s;function l(e,t){return function(e,t,n){return u(e)?a.cloneElement(e,"function"==typeof n?n(e.props||{}):n):t}(e,e,t)}var f=n(1945);const d=e=>{const{componentCls:t,colorPrimary:n}=e;return{[t]:{position:"absolute",background:"transparent",pointerEvents:"none",boxSizing:"border-box",color:`var(--wave-color, ${n})`,boxShadow:"0 0 0 0 currentcolor",opacity:.2,"&.wave-motion-appear":{transition:[`box-shadow 0.4s ${e.motionEaseOutCirc}`,`opacity 2s ${e.motionEaseOutCirc}`].join(","),"&-active":{boxShadow:"0 0 0 6px currentcolor",opacity:0},"&.wave-quick":{transition:[`box-shadow 0.3s ${e.motionEaseInOut}`,`opacity 0.35s ${e.motionEaseInOut}`].join(",")}}}}},h=(0,f.ZP)("Wave",(e=>[d(e)]));var v,p=n(6790),g=n(5164),m=n(9182),y=n(4165),b=n(5861),_=n(1002),w=n(1413),x=n(3935),S=n.t(x,2),O=(0,w.Z)({},S),k=O.version,E=O.render,Z=O.unmountComponentAtNode;try{Number((k||"").split(".")[0])>=18&&(v=O.createRoot)}catch(H){}function C(e){var t=O.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;t&&"object"===(0,_.Z)(t)&&(t.usingClientEntryPoint=e)}var A="__rc_react_root__";function P(e,t){v?function(e,t){C(!0);var n=t[A]||v(t);C(!1),n.render(e),t[A]=n}(e,t):function(e,t){E(e,t)}(e,t)}function j(e){return F.apply(this,arguments)}function F(){return(F=(0,b.Z)((0,y.Z)().mark((function e(t){return(0,y.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",Promise.resolve().then((function(){var e;null===(e=t[A])||void 0===e||e.unmount(),delete t[A]})));case 1:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function M(e){Z(e)}function T(){return(T=(0,b.Z)((0,y.Z)().mark((function e(t){return(0,y.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(void 0===v){e.next=2;break}return e.abrupt("return",j(t));case 2:M(t);case 3:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function R(e){return e&&"#fff"!==e&&"#ffffff"!==e&&"rgb(255, 255, 255)"!==e&&"rgba(255, 255, 255, 1)"!==e&&function(e){const t=(e||"").match(/rgba?\((\d*), (\d*), (\d*)(, [\d.]*)?\)/);return!(t&&t[1]&&t[2]&&t[3]&&t[1]===t[2]&&t[2]===t[3])}(e)&&!/rgba\((?:\d*, ){3}0\)/.test(e)&&"transparent"!==e}var N=n(7415);function $(e){return Number.isNaN(e)?0:e}const I=e=>{const{className:t,target:n,component:r}=e,o=a.useRef(null),[s,c]=a.useState(null),[u,l]=a.useState([]),[f,d]=a.useState(0),[h,v]=a.useState(0),[p,y]=a.useState(0),[b,_]=a.useState(0),[w,x]=a.useState(!1),S={left:f,top:h,width:p,height:b,borderRadius:u.map((e=>`${e}px`)).join(" ")};function O(){const e=getComputedStyle(n);c(function(e){const{borderTopColor:t,borderColor:n,backgroundColor:r}=getComputedStyle(e);return R(t)?t:R(n)?n:R(r)?r:null}(n));const t="static"===e.position,{borderLeftWidth:r,borderTopWidth:i}=e;d(t?n.offsetLeft:$(-parseFloat(r))),v(t?n.offsetTop:$(-parseFloat(i))),y(n.offsetWidth),_(n.offsetHeight);const{borderTopLeftRadius:o,borderTopRightRadius:a,borderBottomLeftRadius:s,borderBottomRightRadius:u}=e;l([o,a,u,s].map((e=>$(parseFloat(e)))))}if(s&&(S["--wave-color"]=s),a.useEffect((()=>{if(n){const e=(0,g.Z)((()=>{O(),x(!0)}));let t;return"undefined"!=typeof ResizeObserver&&(t=new ResizeObserver(O),t.observe(n)),()=>{g.Z.cancel(e),null==t||t.disconnect()}}}),[]),!w)return null;const k=("Checkbox"===r||"Radio"===r)&&(null==n?void 0:n.classList.contains(N.A));return a.createElement(m.ZP,{visible:!0,motionAppear:!0,motionName:"wave-motion",motionDeadline:5e3,onAppearEnd:(e,t)=>{var n;if(t.deadline||"opacity"===t.propertyName){const e=null===(n=o.current)||void 0===n?void 0:n.parentElement;(function(e){return T.apply(this,arguments)})(e).then((()=>{null==e||e.remove()}))}return!1}},(e=>{let{className:n}=e;return a.createElement("div",{ref:o,className:i()(t,{"wave-quick":k},n),style:S})}))},L=(e,t)=>{var n;const{component:r}=t;if("Checkbox"===r&&!(null===(n=e.querySelector("input"))||void 0===n?void 0:n.checked))return;const i=document.createElement("div");i.style.position="absolute",i.style.left="0px",i.style.top="0px",null==e||e.insertBefore(i,null==e?void 0:e.firstChild),P(a.createElement(I,Object.assign({},t,{target:e})),i)};var V=n(5976);const D=e=>{const{children:t,disabled:n,component:r}=e,{getPrefixCls:s}=(0,a.useContext)(c.E_),u=(0,a.useRef)(null),f=s("wave"),[,d]=h(f),v=function(e,t,n){const{wave:r}=a.useContext(c.E_),[,i,o]=(0,V.ZP)(),s=(0,p.zX)((a=>{const s=e.current;if((null==r?void 0:r.disabled)||!s)return;const c=s.querySelector(`.${N.A}`)||s,{showEffect:u}=r||{};(u||L)(c,{className:t,token:i,component:n,event:a,hashId:o})})),u=a.useRef();return e=>{g.Z.cancel(u.current),u.current=(0,g.Z)((()=>{s(e)}))}}(u,i()(f,d),r);if(a.useEffect((()=>{const e=u.current;if(!e||1!==e.nodeType||n)return;const t=t=>{!function(e){if(!e)return!1;if(e instanceof Element){if(e.offsetParent)return!0;if(e.getBBox){var t=e.getBBox(),n=t.width,r=t.height;if(n||r)return!0}if(e.getBoundingClientRect){var i=e.getBoundingClientRect(),o=i.width,a=i.height;if(o||a)return!0}}return!1}(t.target)||!e.getAttribute||e.getAttribute("disabled")||e.disabled||e.className.includes("disabled")||e.className.includes("-leave")||v(t)};return e.addEventListener("click",t,!0),()=>{e.removeEventListener("click",t,!0)}}),[n]),!a.isValidElement(t))return null!=t?t:null;return l(t,{ref:(0,o.Yr)(t)?(0,o.sQ)(t.ref,u):u})}},7415:(e,t,n)=>{"use strict";n.d(t,{A:()=>r});const r="ant-wave-target"},2407:(e,t,n)=>{"use strict";n.d(t,{Z:()=>ht});var r=n(7294),i=n(4184),o=n.n(i),a=n(7462),s=n(1413),c=n(4942),u=n(7685),l=n(5987),f=n(1770),d=["prefixCls","className","style","checked","disabled","defaultChecked","type","title","onChange"],h=(0,r.forwardRef)((function(e,t){var n,i=e.prefixCls,h=void 0===i?"rc-checkbox":i,v=e.className,p=e.style,g=e.checked,m=e.disabled,y=e.defaultChecked,b=void 0!==y&&y,_=e.type,w=void 0===_?"checkbox":_,x=e.title,S=e.onChange,O=(0,l.Z)(e,d),k=(0,r.useRef)(null),E=(0,f.Z)(b,{value:g}),Z=(0,u.Z)(E,2),C=Z[0],A=Z[1];(0,r.useImperativeHandle)(t,(function(){return{focus:function(){var e;null===(e=k.current)||void 0===e||e.focus()},blur:function(){var e;null===(e=k.current)||void 0===e||e.blur()},input:k.current}}));var P=o()(h,v,(n={},(0,c.Z)(n,"".concat(h,"-checked"),C),(0,c.Z)(n,"".concat(h,"-disabled"),m),n));return r.createElement("span",{className:P,title:x,style:p},r.createElement("input",(0,a.Z)({},O,{className:"".concat(h,"-input"),ref:k,onChange:function(t){m||("checked"in e||A(t.target.checked),null==S||S({target:(0,s.Z)((0,s.Z)({},e),{},{type:w,checked:t.target.checked}),stopPropagation:function(){t.stopPropagation()},preventDefault:function(){t.preventDefault()},nativeEvent:t.nativeEvent}))},disabled:m,checked:!!C,type:w})),r.createElement("span",{className:"".concat(h,"-inner")}))}));const v=h;var p=n(4769),g=n(7415),m=n(3124),y=n(8866),b=n(5976);const _=e=>{const[,,,,t]=(0,b.ZP)();return t?`${e}-css-var`:""};var w=n(4165),x=n(5861),S=n(4902),O=n(5671),k=n(3144),E=n(7326),Z=n(136),C=n(3568),A=n(1805);function P(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=[];return r.Children.forEach(e,(function(e){(null!=e||t.keepEmpty)&&(Array.isArray(e)?n=n.concat(P(e)):(0,A.isFragment)(e)&&e.props?n=n.concat(P(e.props.children,t)):n.push(e))})),n}var j=n(1881),F=n(334),M="RC_FORM_INTERNAL_HOOKS",T=function(){(0,F.ZP)(!1,"Can not find FormContext. Please make sure you wrap Field under Form.")};const R=r.createContext({getFieldValue:T,getFieldsValue:T,getFieldError:T,getFieldWarning:T,getFieldsError:T,isFieldsTouched:T,isFieldTouched:T,isFieldValidating:T,isFieldsValidating:T,resetFields:T,setFields:T,setFieldValue:T,setFieldsValue:T,validateFields:T,submit:T,getInternalHooks:function(){return T(),{dispatch:T,initEntityValue:T,registerField:T,useSubscribe:T,setInitialValues:T,destroyForm:T,setCallbacks:T,registerWatch:T,getFields:T,setValidateMessages:T,setPreserve:T,getInitialValue:T}}});const N=r.createContext(null);function $(e){return null==e?[]:Array.isArray(e)?e:[e]}function I(){return I=Object.assign?Object.assign.bind():function(e){for(var t=1;t1?t-1:0),r=1;r=o)return e;switch(e){case"%s":return String(n[i++]);case"%d":return Number(n[i++]);case"%j":try{return JSON.stringify(n[i++])}catch(t){return"[Circular]"}break;default:return e}})):e}function U(e,t){return null==e||(!("array"!==t||!Array.isArray(e)||e.length)||!(!function(e){return"string"===e||"url"===e||"hex"===e||"email"===e||"date"===e||"pattern"===e}(t)||"string"!=typeof e||e))}function W(e,t,n){var r=0,i=e.length;!function o(a){if(a&&a.length)n(a);else{var s=r;r+=1,s()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+\.)+[a-zA-Z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]{2,}))$/,te=/^#?([a-f0-9]{6}|[a-f0-9]{3})$/i,ne={integer:function(e){return ne.number(e)&&parseInt(e,10)===e},float:function(e){return ne.number(e)&&!ne.integer(e)},array:function(e){return Array.isArray(e)},regexp:function(e){if(e instanceof RegExp)return!0;try{return!!new RegExp(e)}catch(t){return!1}},date:function(e){return"function"==typeof e.getTime&&"function"==typeof e.getMonth&&"function"==typeof e.getYear&&!isNaN(e.getTime())},number:function(e){return!isNaN(e)&&"number"==typeof e},object:function(e){return"object"==typeof e&&!ne.array(e)},method:function(e){return"function"==typeof e},email:function(e){return"string"==typeof e&&e.length<=320&&!!e.match(ee)},url:function(e){return"string"==typeof e&&e.length<=2048&&!!e.match(function(){if(Q)return Q;var e="[a-fA-F\\d:]",t=function(t){return t&&t.includeBoundaries?"(?:(?<=\\s|^)(?="+e+")|(?<="+e+")(?=\\s|$))":""},n="(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}",r="[a-fA-F\\d]{1,4}",i=("\n(?:\n(?:"+r+":){7}(?:"+r+"|:)| // 1:2:3:4:5:6:7:: 1:2:3:4:5:6:7:8\n(?:"+r+":){6}(?:"+n+"|:"+r+"|:)| // 1:2:3:4:5:6:: 1:2:3:4:5:6::8 1:2:3:4:5:6::8 1:2:3:4:5:6::1.2.3.4\n(?:"+r+":){5}(?::"+n+"|(?::"+r+"){1,2}|:)| // 1:2:3:4:5:: 1:2:3:4:5::7:8 1:2:3:4:5::8 1:2:3:4:5::7:1.2.3.4\n(?:"+r+":){4}(?:(?::"+r+"){0,1}:"+n+"|(?::"+r+"){1,3}|:)| // 1:2:3:4:: 1:2:3:4::6:7:8 1:2:3:4::8 1:2:3:4::6:7:1.2.3.4\n(?:"+r+":){3}(?:(?::"+r+"){0,2}:"+n+"|(?::"+r+"){1,4}|:)| // 1:2:3:: 1:2:3::5:6:7:8 1:2:3::8 1:2:3::5:6:7:1.2.3.4\n(?:"+r+":){2}(?:(?::"+r+"){0,3}:"+n+"|(?::"+r+"){1,5}|:)| // 1:2:: 1:2::4:5:6:7:8 1:2::8 1:2::4:5:6:7:1.2.3.4\n(?:"+r+":){1}(?:(?::"+r+"){0,4}:"+n+"|(?::"+r+"){1,6}|:)| // 1:: 1::3:4:5:6:7:8 1::8 1::3:4:5:6:7:1.2.3.4\n(?::(?:(?::"+r+"){0,5}:"+n+"|(?::"+r+"){1,7}|:)) // ::2:3:4:5:6:7:8 ::2:3:4:5:6:7:8 ::8 ::1.2.3.4\n)(?:%[0-9a-zA-Z]{1,})? // %eth0 %1\n").replace(/\s*\/\/.*$/gm,"").replace(/\n/g,"").trim(),o=new RegExp("(?:^"+n+"$)|(?:^"+i+"$)"),a=new RegExp("^"+n+"$"),s=new RegExp("^"+i+"$"),c=function(e){return e&&e.exact?o:new RegExp("(?:"+t(e)+n+t(e)+")|(?:"+t(e)+i+t(e)+")","g")};c.v4=function(e){return e&&e.exact?a:new RegExp(""+t(e)+n+t(e),"g")},c.v6=function(e){return e&&e.exact?s:new RegExp(""+t(e)+i+t(e),"g")};var u=c.v4().source,l=c.v6().source;return Q=new RegExp("(?:^(?:(?:(?:[a-z]+:)?//)|www\\.)(?:\\S+(?::\\S*)?@)?(?:localhost|"+u+"|"+l+'|(?:(?:[a-z\\u00a1-\\uffff0-9][-_]*)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))(?::\\d{2,5})?(?:[/?#][^\\s"]*)?$)',"i")}())},hex:function(e){return"string"==typeof e&&!!e.match(te)}},re="enum",ie={required:J,whitespace:function(e,t,n,r,i){(/^\s+$/.test(t)||""===t)&&r.push(q(i.messages.whitespace,e.fullField))},type:function(e,t,n,r,i){if(e.required&&void 0===t)J(e,t,n,r,i);else{var o=e.type;["integer","float","array","regexp","object","method","email","number","date","url","hex"].indexOf(o)>-1?ne[o](t)||r.push(q(i.messages.types[o],e.fullField,e.type)):o&&typeof t!==e.type&&r.push(q(i.messages.types[o],e.fullField,e.type))}},range:function(e,t,n,r,i){var o="number"==typeof e.len,a="number"==typeof e.min,s="number"==typeof e.max,c=t,u=null,l="number"==typeof t,f="string"==typeof t,d=Array.isArray(t);if(l?u="number":f?u="string":d&&(u="array"),!u)return!1;d&&(c=t.length),f&&(c=t.replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,"_").length),o?c!==e.len&&r.push(q(i.messages[u].len,e.fullField,e.len)):a&&!s&&ce.max?r.push(q(i.messages[u].max,e.fullField,e.max)):a&&s&&(ce.max)&&r.push(q(i.messages[u].range,e.fullField,e.min,e.max))},enum:function(e,t,n,r,i){e[re]=Array.isArray(e[re])?e[re]:[],-1===e[re].indexOf(t)&&r.push(q(i.messages[re],e.fullField,e[re].join(", ")))},pattern:function(e,t,n,r,i){if(e.pattern)if(e.pattern instanceof RegExp)e.pattern.lastIndex=0,e.pattern.test(t)||r.push(q(i.messages.pattern.mismatch,e.fullField,t,e.pattern));else if("string"==typeof e.pattern){new RegExp(e.pattern).test(t)||r.push(q(i.messages.pattern.mismatch,e.fullField,t,e.pattern))}}},oe=function(e,t,n,r,i){var o=e.type,a=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if(U(t,o)&&!e.required)return n();ie.required(e,t,r,a,i,o),U(t,o)||ie.type(e,t,r,a,i)}n(a)},ae={string:function(e,t,n,r,i){var o=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if(U(t,"string")&&!e.required)return n();ie.required(e,t,r,o,i,"string"),U(t,"string")||(ie.type(e,t,r,o,i),ie.range(e,t,r,o,i),ie.pattern(e,t,r,o,i),!0===e.whitespace&&ie.whitespace(e,t,r,o,i))}n(o)},method:function(e,t,n,r,i){var o=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if(U(t)&&!e.required)return n();ie.required(e,t,r,o,i),void 0!==t&&ie.type(e,t,r,o,i)}n(o)},number:function(e,t,n,r,i){var o=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if(""===t&&(t=void 0),U(t)&&!e.required)return n();ie.required(e,t,r,o,i),void 0!==t&&(ie.type(e,t,r,o,i),ie.range(e,t,r,o,i))}n(o)},boolean:function(e,t,n,r,i){var o=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if(U(t)&&!e.required)return n();ie.required(e,t,r,o,i),void 0!==t&&ie.type(e,t,r,o,i)}n(o)},regexp:function(e,t,n,r,i){var o=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if(U(t)&&!e.required)return n();ie.required(e,t,r,o,i),U(t)||ie.type(e,t,r,o,i)}n(o)},integer:function(e,t,n,r,i){var o=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if(U(t)&&!e.required)return n();ie.required(e,t,r,o,i),void 0!==t&&(ie.type(e,t,r,o,i),ie.range(e,t,r,o,i))}n(o)},float:function(e,t,n,r,i){var o=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if(U(t)&&!e.required)return n();ie.required(e,t,r,o,i),void 0!==t&&(ie.type(e,t,r,o,i),ie.range(e,t,r,o,i))}n(o)},array:function(e,t,n,r,i){var o=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if(null==t&&!e.required)return n();ie.required(e,t,r,o,i,"array"),null!=t&&(ie.type(e,t,r,o,i),ie.range(e,t,r,o,i))}n(o)},object:function(e,t,n,r,i){var o=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if(U(t)&&!e.required)return n();ie.required(e,t,r,o,i),void 0!==t&&ie.type(e,t,r,o,i)}n(o)},enum:function(e,t,n,r,i){var o=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if(U(t)&&!e.required)return n();ie.required(e,t,r,o,i),void 0!==t&&ie.enum(e,t,r,o,i)}n(o)},pattern:function(e,t,n,r,i){var o=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if(U(t,"string")&&!e.required)return n();ie.required(e,t,r,o,i),U(t,"string")||ie.pattern(e,t,r,o,i)}n(o)},date:function(e,t,n,r,i){var o=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if(U(t,"date")&&!e.required)return n();var a;if(ie.required(e,t,r,o,i),!U(t,"date"))a=t instanceof Date?t:new Date(t),ie.type(e,a,r,o,i),a&&ie.range(e,a.getTime(),r,o,i)}n(o)},url:oe,hex:oe,email:oe,required:function(e,t,n,r,i){var o=[],a=Array.isArray(t)?"array":typeof t;ie.required(e,t,r,o,i,a),n(o)},any:function(e,t,n,r,i){var o=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if(U(t)&&!e.required)return n();ie.required(e,t,r,o,i)}n(o)}};function se(){return{default:"Validation error on field %s",required:"%s is required",enum:"%s must be one of %s",whitespace:"%s cannot be empty",date:{format:"%s date %s is invalid for format %s",parse:"%s date could not be parsed, %s is invalid ",invalid:"%s date %s is invalid"},types:{string:"%s is not a %s",method:"%s is not a %s (function)",array:"%s is not an %s",object:"%s is not an %s",number:"%s is not a %s",date:"%s is not a %s",boolean:"%s is not a %s",integer:"%s is not an %s",float:"%s is not a %s",regexp:"%s is not a valid %s",email:"%s is not a valid %s",url:"%s is not a valid %s",hex:"%s is not a valid %s"},string:{len:"%s must be exactly %s characters",min:"%s must be at least %s characters",max:"%s cannot be longer than %s characters",range:"%s must be between %s and %s characters"},number:{len:"%s must equal %s",min:"%s cannot be less than %s",max:"%s cannot be greater than %s",range:"%s must be between %s and %s"},array:{len:"%s must be exactly %s in length",min:"%s cannot be less than %s in length",max:"%s cannot be greater than %s in length",range:"%s must be between %s and %s in length"},pattern:{mismatch:"%s value %s does not match pattern %s"},clone:function(){var e=JSON.parse(JSON.stringify(this));return e.clone=this.clone,e}}}var ce=se(),ue=function(){function e(e){this.rules=null,this._messages=ce,this.define(e)}var t=e.prototype;return t.define=function(e){var t=this;if(!e)throw new Error("Cannot configure a schema with no rules");if("object"!=typeof e||Array.isArray(e))throw new Error("Rules must be an object");this.rules={},Object.keys(e).forEach((function(n){var r=e[n];t.rules[n]=Array.isArray(r)?r:[r]}))},t.messages=function(e){return e&&(this._messages=Y(se(),e)),this._messages},t.validate=function(t,n,r){var i=this;void 0===n&&(n={}),void 0===r&&(r=function(){});var o=t,a=n,s=r;if("function"==typeof a&&(s=a,a={}),!this.rules||0===Object.keys(this.rules).length)return s&&s(null,o),Promise.resolve(o);if(a.messages){var c=this.messages();c===ce&&(c=se()),Y(c,a.messages),a.messages=c}else a.messages=this.messages();var u={};(a.keys||Object.keys(this.rules)).forEach((function(e){var n=i.rules[e],r=o[e];n.forEach((function(n){var a=n;"function"==typeof a.transform&&(o===t&&(o=I({},o)),r=o[e]=a.transform(r)),(a="function"==typeof a?{validator:a}:I({},a)).validator=i.getValidationMethod(a),a.validator&&(a.field=e,a.fullField=a.fullField||e,a.type=i.getType(a),u[e]=u[e]||[],u[e].push({rule:a,value:r,source:o,field:e}))}))}));var l={};return X(u,a,(function(t,n){var r,i=t.rule,s=!("object"!==i.type&&"array"!==i.type||"object"!=typeof i.fields&&"object"!=typeof i.defaultField);function c(e,t){return I({},t,{fullField:i.fullField+"."+e,fullFields:i.fullFields?[].concat(i.fullFields,[e]):[e]})}function u(r){void 0===r&&(r=[]);var u=Array.isArray(r)?r:[r];!a.suppressWarning&&u.length&&e.warning("async-validator:",u),u.length&&void 0!==i.message&&(u=[].concat(i.message));var f=u.map(K(i,o));if(a.first&&f.length)return l[i.field]=1,n(f);if(s){if(i.required&&!t.value)return void 0!==i.message?f=[].concat(i.message).map(K(i,o)):a.error&&(f=[a.error(i,q(a.messages.required,i.field))]),n(f);var d={};i.defaultField&&Object.keys(t.value).map((function(e){d[e]=i.defaultField})),d=I({},d,t.rule.fields);var h={};Object.keys(d).forEach((function(e){var t=d[e],n=Array.isArray(t)?t:[t];h[e]=n.map(c.bind(null,e))}));var v=new e(h);v.messages(a.messages),t.rule.options&&(t.rule.options.messages=a.messages,t.rule.options.error=a.error),v.validate(t.value,t.rule.options||a,(function(e){var t=[];f&&f.length&&t.push.apply(t,f),e&&e.length&&t.push.apply(t,e),n(t.length?t:null)}))}else n(f)}if(s=s&&(i.required||!i.required&&t.value),i.field=t.field,i.asyncValidator)r=i.asyncValidator(i,t.value,u,t.source,a);else if(i.validator){try{r=i.validator(i,t.value,u,t.source,a)}catch(f){null==console.error||console.error(f),a.suppressValidatorError||setTimeout((function(){throw f}),0),u(f.message)}!0===r?u():!1===r?u("function"==typeof i.message?i.message(i.fullField||i.field):i.message||(i.fullField||i.field)+" fails"):r instanceof Array?u(r):r instanceof Error&&u(r.message)}r&&r.then&&r.then((function(){return u()}),(function(e){return u(e)}))}),(function(e){!function(e){for(var t,n,r=[],i={},a=0;a2&&void 0!==arguments[2]&&arguments[2];return e&&e.some((function(e){return Ee(t,e,n)}))}function Ee(e,t){return!(!e||!t)&&(!(!(arguments.length>2&&void 0!==arguments[2]&&arguments[2])&&e.length!==t.length)&&t.every((function(t,n){return e[n]===t})))}function Ze(e){var t=arguments.length<=1?void 0:arguments[1];return t&&t.target&&"object"===(0,we.Z)(t.target)&&e in t.target?t.target[e]:t}function Ce(e,t,n){var r=e.length;if(t<0||t>=r||n<0||n>=r)return e;var i=e[t],o=t-n;return o>0?[].concat((0,S.Z)(e.slice(0,n)),[i],(0,S.Z)(e.slice(n,t)),(0,S.Z)(e.slice(t+1,r))):o<0?[].concat((0,S.Z)(e.slice(0,t)),(0,S.Z)(e.slice(t+1,n+1)),[i],(0,S.Z)(e.slice(n+1,r))):e}var Ae=["name"],Pe=[];function je(e,t,n,r,i,o){return"function"==typeof e?e(t,n,"source"in o?{source:o.source}:{}):r!==i}var Fe=function(e){(0,Z.Z)(n,e);var t=(0,C.Z)(n);function n(e){var i;((0,O.Z)(this,n),i=t.call(this,e),(0,c.Z)((0,E.Z)(i),"state",{resetCount:0}),(0,c.Z)((0,E.Z)(i),"cancelRegisterFunc",null),(0,c.Z)((0,E.Z)(i),"mounted",!1),(0,c.Z)((0,E.Z)(i),"touched",!1),(0,c.Z)((0,E.Z)(i),"dirty",!1),(0,c.Z)((0,E.Z)(i),"validatePromise",void 0),(0,c.Z)((0,E.Z)(i),"prevValidating",void 0),(0,c.Z)((0,E.Z)(i),"errors",Pe),(0,c.Z)((0,E.Z)(i),"warnings",Pe),(0,c.Z)((0,E.Z)(i),"cancelRegister",(function(){var e=i.props,t=e.preserve,n=e.isListField,r=e.name;i.cancelRegisterFunc&&i.cancelRegisterFunc(n,t,Se(r)),i.cancelRegisterFunc=null})),(0,c.Z)((0,E.Z)(i),"getNamePath",(function(){var e=i.props,t=e.name,n=e.fieldContext.prefixName,r=void 0===n?[]:n;return void 0!==t?[].concat((0,S.Z)(r),(0,S.Z)(t)):[]})),(0,c.Z)((0,E.Z)(i),"getRules",(function(){var e=i.props,t=e.rules,n=void 0===t?[]:t,r=e.fieldContext;return n.map((function(e){return"function"==typeof e?e(r):e}))})),(0,c.Z)((0,E.Z)(i),"refresh",(function(){i.mounted&&i.setState((function(e){return{resetCount:e.resetCount+1}}))})),(0,c.Z)((0,E.Z)(i),"metaCache",null),(0,c.Z)((0,E.Z)(i),"triggerMetaEvent",(function(e){var t=i.props.onMetaChange;if(t){var n=(0,s.Z)((0,s.Z)({},i.getMeta()),{},{destroy:e});(0,j.Z)(i.metaCache,n)||t(n),i.metaCache=n}else i.metaCache=null})),(0,c.Z)((0,E.Z)(i),"onStoreChange",(function(e,t,n){var r=i.props,o=r.shouldUpdate,a=r.dependencies,s=void 0===a?[]:a,c=r.onReset,u=n.store,l=i.getNamePath(),f=i.getValue(e),d=i.getValue(u),h=t&&ke(t,l);switch("valueUpdate"===n.type&&"external"===n.source&&f!==d&&(i.touched=!0,i.dirty=!0,i.validatePromise=null,i.errors=Pe,i.warnings=Pe,i.triggerMetaEvent()),n.type){case"reset":if(!t||h)return i.touched=!1,i.dirty=!1,i.validatePromise=void 0,i.errors=Pe,i.warnings=Pe,i.triggerMetaEvent(),null==c||c(),void i.refresh();break;case"remove":if(o)return void i.reRender();break;case"setField":var v=n.data;if(h)return"touched"in v&&(i.touched=v.touched),"validating"in v&&!("originRCField"in v)&&(i.validatePromise=v.validating?Promise.resolve([]):null),"errors"in v&&(i.errors=v.errors||Pe),"warnings"in v&&(i.warnings=v.warnings||Pe),i.dirty=!0,i.triggerMetaEvent(),void i.reRender();if("value"in v&&ke(t,l,!0))return void i.reRender();if(o&&!l.length&&je(o,e,u,f,d,n))return void i.reRender();break;case"dependenciesUpdate":if(s.map(Se).some((function(e){return ke(n.relatedFields,e)})))return void i.reRender();break;default:if(h||(!s.length||l.length||o)&&je(o,e,u,f,d,n))return void i.reRender()}!0===o&&i.reRender()})),(0,c.Z)((0,E.Z)(i),"validateRules",(function(e){var t=i.getNamePath(),n=i.getValue(),r=e||{},o=r.triggerName,a=r.validateOnly,s=void 0!==a&&a,c=Promise.resolve().then((0,x.Z)((0,w.Z)().mark((function r(){var a,s,u,l,f,d,h;return(0,w.Z)().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(i.mounted){r.next=2;break}return r.abrupt("return",[]);case 2:if(a=i.props,s=a.validateFirst,u=void 0!==s&&s,l=a.messageVariables,f=a.validateDebounce,d=i.getRules(),o&&(d=d.filter((function(e){return e})).filter((function(e){var t=e.validateTrigger;return!t||$(t).includes(o)}))),!f||!o){r.next=10;break}return r.next=8,new Promise((function(e){setTimeout(e,f)}));case 8:if(i.validatePromise===c){r.next=10;break}return r.abrupt("return",[]);case 10:return(h=ye(t,n,d,e,u,l)).catch((function(e){return e})).then((function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Pe;if(i.validatePromise===c){var t;i.validatePromise=null;var n=[],r=[];null===(t=e.forEach)||void 0===t||t.call(e,(function(e){var t=e.rule.warningOnly,i=e.errors,o=void 0===i?Pe:i;t?r.push.apply(r,(0,S.Z)(o)):n.push.apply(n,(0,S.Z)(o))})),i.errors=n,i.warnings=r,i.triggerMetaEvent(),i.reRender()}})),r.abrupt("return",h);case 13:case"end":return r.stop()}}),r)}))));return s||(i.validatePromise=c,i.dirty=!0,i.errors=Pe,i.warnings=Pe,i.triggerMetaEvent(),i.reRender()),c})),(0,c.Z)((0,E.Z)(i),"isFieldValidating",(function(){return!!i.validatePromise})),(0,c.Z)((0,E.Z)(i),"isFieldTouched",(function(){return i.touched})),(0,c.Z)((0,E.Z)(i),"isFieldDirty",(function(){return!(!i.dirty&&void 0===i.props.initialValue)||void 0!==(0,i.props.fieldContext.getInternalHooks(M).getInitialValue)(i.getNamePath())})),(0,c.Z)((0,E.Z)(i),"getErrors",(function(){return i.errors})),(0,c.Z)((0,E.Z)(i),"getWarnings",(function(){return i.warnings})),(0,c.Z)((0,E.Z)(i),"isListField",(function(){return i.props.isListField})),(0,c.Z)((0,E.Z)(i),"isList",(function(){return i.props.isList})),(0,c.Z)((0,E.Z)(i),"isPreserve",(function(){return i.props.preserve})),(0,c.Z)((0,E.Z)(i),"getMeta",(function(){return i.prevValidating=i.isFieldValidating(),{touched:i.isFieldTouched(),validating:i.prevValidating,errors:i.errors,warnings:i.warnings,name:i.getNamePath(),validated:null===i.validatePromise}})),(0,c.Z)((0,E.Z)(i),"getOnlyChild",(function(e){if("function"==typeof e){var t=i.getMeta();return(0,s.Z)((0,s.Z)({},i.getOnlyChild(e(i.getControlled(),t,i.props.fieldContext))),{},{isFunction:!0})}var n=P(e);return 1===n.length&&r.isValidElement(n[0])?{child:n[0],isFunction:!1}:{child:n,isFunction:!1}})),(0,c.Z)((0,E.Z)(i),"getValue",(function(e){var t=i.props.fieldContext.getFieldsValue,n=i.getNamePath();return(0,xe.Z)(e||t(!0),n)})),(0,c.Z)((0,E.Z)(i),"getControlled",(function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=i.props,n=t.trigger,r=t.validateTrigger,o=t.getValueFromEvent,a=t.normalize,u=t.valuePropName,l=t.getValueProps,f=t.fieldContext,d=void 0!==r?r:f.validateTrigger,h=i.getNamePath(),v=f.getInternalHooks,p=f.getFieldsValue,g=v(M).dispatch,m=i.getValue(),y=l||function(e){return(0,c.Z)({},u,e)},b=e[n],_=(0,s.Z)((0,s.Z)({},e),y(m));return _[n]=function(){var e;i.touched=!0,i.dirty=!0,i.triggerMetaEvent();for(var t=arguments.length,n=new Array(t),r=0;r=0&&t<=n.length?(f.keys=[].concat((0,S.Z)(f.keys.slice(0,t)),[f.id],(0,S.Z)(f.keys.slice(t))),o([].concat((0,S.Z)(n.slice(0,t)),[e],(0,S.Z)(n.slice(t))))):(f.keys=[].concat((0,S.Z)(f.keys),[f.id]),o([].concat((0,S.Z)(n),[e]))),f.id+=1},remove:function(e){var t=s(),n=new Set(Array.isArray(e)?e:[e]);n.size<=0||(f.keys=f.keys.filter((function(e,t){return!n.has(t)})),o(t.filter((function(e,t){return!n.has(t)}))))},move:function(e,t){if(e!==t){var n=s();e<0||e>=n.length||t<0||t>=n.length||(f.keys=Ce(f.keys,e,t),o(Ce(n,e,t)))}}},l=r||[];return Array.isArray(l)||(l=[]),i(l.map((function(e,t){var n=f.keys[t];return void 0===n&&(f.keys[t]=f.id,n=f.keys[t],f.id+=1),{name:t,key:n,isListField:!0}})),c,t)}))))};var Re="__@field_split__";function Ne(e){return e.map((function(e){return"".concat((0,we.Z)(e),":").concat(e)})).join(Re)}var $e=function(){function e(){(0,O.Z)(this,e),(0,c.Z)(this,"kvs",new Map)}return(0,k.Z)(e,[{key:"set",value:function(e,t){this.kvs.set(Ne(e),t)}},{key:"get",value:function(e){return this.kvs.get(Ne(e))}},{key:"update",value:function(e,t){var n=t(this.get(e));n?this.set(e,n):this.delete(e)}},{key:"delete",value:function(e){this.kvs.delete(Ne(e))}},{key:"map",value:function(e){return(0,S.Z)(this.kvs.entries()).map((function(t){var n=(0,u.Z)(t,2),r=n[0],i=n[1],o=r.split(Re);return e({key:o.map((function(e){var t=e.match(/^([^:]*):(.*)$/),n=(0,u.Z)(t,3),r=n[1],i=n[2];return"number"===r?Number(i):i})),value:i})}))}},{key:"toJSON",value:function(){var e={};return this.map((function(t){var n=t.key,r=t.value;return e[n.join(".")]=r,null})),e}}]),e}();const Ie=$e;var Le=["name"],Ve=(0,k.Z)((function e(t){var n=this;(0,O.Z)(this,e),(0,c.Z)(this,"formHooked",!1),(0,c.Z)(this,"forceRootUpdate",void 0),(0,c.Z)(this,"subscribable",!0),(0,c.Z)(this,"store",{}),(0,c.Z)(this,"fieldEntities",[]),(0,c.Z)(this,"initialValues",{}),(0,c.Z)(this,"callbacks",{}),(0,c.Z)(this,"validateMessages",null),(0,c.Z)(this,"preserve",null),(0,c.Z)(this,"lastValidatePromise",null),(0,c.Z)(this,"getForm",(function(){return{getFieldValue:n.getFieldValue,getFieldsValue:n.getFieldsValue,getFieldError:n.getFieldError,getFieldWarning:n.getFieldWarning,getFieldsError:n.getFieldsError,isFieldsTouched:n.isFieldsTouched,isFieldTouched:n.isFieldTouched,isFieldValidating:n.isFieldValidating,isFieldsValidating:n.isFieldsValidating,resetFields:n.resetFields,setFields:n.setFields,setFieldValue:n.setFieldValue,setFieldsValue:n.setFieldsValue,validateFields:n.validateFields,submit:n.submit,_init:!0,getInternalHooks:n.getInternalHooks}})),(0,c.Z)(this,"getInternalHooks",(function(e){return e===M?(n.formHooked=!0,{dispatch:n.dispatch,initEntityValue:n.initEntityValue,registerField:n.registerField,useSubscribe:n.useSubscribe,setInitialValues:n.setInitialValues,destroyForm:n.destroyForm,setCallbacks:n.setCallbacks,setValidateMessages:n.setValidateMessages,getFields:n.getFields,setPreserve:n.setPreserve,getInitialValue:n.getInitialValue,registerWatch:n.registerWatch}):((0,F.ZP)(!1,"`getInternalHooks` is internal usage. Should not call directly."),null)})),(0,c.Z)(this,"useSubscribe",(function(e){n.subscribable=e})),(0,c.Z)(this,"prevWithoutPreserves",null),(0,c.Z)(this,"setInitialValues",(function(e,t){if(n.initialValues=e||{},t){var r,i=(0,de.T)(e,n.store);null===(r=n.prevWithoutPreserves)||void 0===r||r.map((function(t){var n=t.key;i=(0,de.Z)(i,n,(0,xe.Z)(e,n))})),n.prevWithoutPreserves=null,n.updateStore(i)}})),(0,c.Z)(this,"destroyForm",(function(){var e=new Ie;n.getFieldEntities(!0).forEach((function(t){n.isMergedPreserve(t.isPreserve())||e.set(t.getNamePath(),!0)})),n.prevWithoutPreserves=e})),(0,c.Z)(this,"getInitialValue",(function(e){var t=(0,xe.Z)(n.initialValues,e);return e.length?(0,de.T)(t):t})),(0,c.Z)(this,"setCallbacks",(function(e){n.callbacks=e})),(0,c.Z)(this,"setValidateMessages",(function(e){n.validateMessages=e})),(0,c.Z)(this,"setPreserve",(function(e){n.preserve=e})),(0,c.Z)(this,"watchList",[]),(0,c.Z)(this,"registerWatch",(function(e){return n.watchList.push(e),function(){n.watchList=n.watchList.filter((function(t){return t!==e}))}})),(0,c.Z)(this,"notifyWatch",(function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];if(n.watchList.length){var t=n.getFieldsValue(),r=n.getFieldsValue(!0);n.watchList.forEach((function(n){n(t,r,e)}))}})),(0,c.Z)(this,"timeoutId",null),(0,c.Z)(this,"warningUnhooked",(function(){0})),(0,c.Z)(this,"updateStore",(function(e){n.store=e})),(0,c.Z)(this,"getFieldEntities",(function(){return arguments.length>0&&void 0!==arguments[0]&&arguments[0]?n.fieldEntities.filter((function(e){return e.getNamePath().length})):n.fieldEntities})),(0,c.Z)(this,"getFieldsMap",(function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=new Ie;return n.getFieldEntities(e).forEach((function(e){var n=e.getNamePath();t.set(n,e)})),t})),(0,c.Z)(this,"getFieldEntitiesForNamePathList",(function(e){if(!e)return n.getFieldEntities(!0);var t=n.getFieldsMap(!0);return e.map((function(e){var n=Se(e);return t.get(n)||{INVALIDATE_NAME_PATH:Se(e)}}))})),(0,c.Z)(this,"getFieldsValue",(function(e,t){var r,i,o;if(n.warningUnhooked(),!0===e||Array.isArray(e)?(r=e,i=t):e&&"object"===(0,we.Z)(e)&&(o=e.strict,i=e.filter),!0===r&&!i)return n.store;var a=n.getFieldEntitiesForNamePathList(Array.isArray(r)?r:null),s=[];return a.forEach((function(e){var t,n,a,c,u="INVALIDATE_NAME_PATH"in e?e.INVALIDATE_NAME_PATH:e.getNamePath();if(o){if(null!==(a=(c=e).isList)&&void 0!==a&&a.call(c))return}else if(!r&&null!==(t=(n=e).isListField)&&void 0!==t&&t.call(n))return;if(i){var l="getMeta"in e?e.getMeta():null;i(l)&&s.push(u)}else s.push(u)})),Oe(n.store,s.map(Se))})),(0,c.Z)(this,"getFieldValue",(function(e){n.warningUnhooked();var t=Se(e);return(0,xe.Z)(n.store,t)})),(0,c.Z)(this,"getFieldsError",(function(e){return n.warningUnhooked(),n.getFieldEntitiesForNamePathList(e).map((function(t,n){return t&&!("INVALIDATE_NAME_PATH"in t)?{name:t.getNamePath(),errors:t.getErrors(),warnings:t.getWarnings()}:{name:Se(e[n]),errors:[],warnings:[]}}))})),(0,c.Z)(this,"getFieldError",(function(e){n.warningUnhooked();var t=Se(e);return n.getFieldsError([t])[0].errors})),(0,c.Z)(this,"getFieldWarning",(function(e){n.warningUnhooked();var t=Se(e);return n.getFieldsError([t])[0].warnings})),(0,c.Z)(this,"isFieldsTouched",(function(){n.warningUnhooked();for(var e=arguments.length,t=new Array(e),r=0;r0&&void 0!==arguments[0]?arguments[0]:{},t=new Ie,r=n.getFieldEntities(!0);r.forEach((function(e){var n=e.props.initialValue,r=e.getNamePath();if(void 0!==n){var i=t.get(r)||new Set;i.add({entity:e,value:n}),t.set(r,i)}}));var i;e.entities?i=e.entities:e.namePathList?(i=[],e.namePathList.forEach((function(e){var n,r=t.get(e);r&&(n=i).push.apply(n,(0,S.Z)((0,S.Z)(r).map((function(e){return e.entity}))))}))):i=r,i.forEach((function(r){if(void 0!==r.props.initialValue){var i=r.getNamePath();if(void 0!==n.getInitialValue(i))(0,F.ZP)(!1,"Form already set 'initialValues' with path '".concat(i.join("."),"'. Field can not overwrite it."));else{var o=t.get(i);if(o&&o.size>1)(0,F.ZP)(!1,"Multiple Field with path '".concat(i.join("."),"' set 'initialValue'. Can not decide which one to pick."));else if(o){var a=n.getFieldValue(i);r.isListField()||e.skipExist&&void 0!==a||n.updateStore((0,de.Z)(n.store,i,(0,S.Z)(o)[0].value))}}}}))})),(0,c.Z)(this,"resetFields",(function(e){n.warningUnhooked();var t=n.store;if(!e)return n.updateStore((0,de.T)(n.initialValues)),n.resetWithFieldInitialValue(),n.notifyObservers(t,null,{type:"reset"}),void n.notifyWatch();var r=e.map(Se);r.forEach((function(e){var t=n.getInitialValue(e);n.updateStore((0,de.Z)(n.store,e,t))})),n.resetWithFieldInitialValue({namePathList:r}),n.notifyObservers(t,r,{type:"reset"}),n.notifyWatch(r)})),(0,c.Z)(this,"setFields",(function(e){n.warningUnhooked();var t=n.store,r=[];e.forEach((function(e){var i=e.name,o=(0,l.Z)(e,Le),a=Se(i);r.push(a),"value"in o&&n.updateStore((0,de.Z)(n.store,a,o.value)),n.notifyObservers(t,[a],{type:"setField",data:e})})),n.notifyWatch(r)})),(0,c.Z)(this,"getFields",(function(){return n.getFieldEntities(!0).map((function(e){var t=e.getNamePath(),r=e.getMeta(),i=(0,s.Z)((0,s.Z)({},r),{},{name:t,value:n.getFieldValue(t)});return Object.defineProperty(i,"originRCField",{value:!0}),i}))})),(0,c.Z)(this,"initEntityValue",(function(e){var t=e.props.initialValue;if(void 0!==t){var r=e.getNamePath();void 0===(0,xe.Z)(n.store,r)&&n.updateStore((0,de.Z)(n.store,r,t))}})),(0,c.Z)(this,"isMergedPreserve",(function(e){var t=void 0!==e?e:n.preserve;return null==t||t})),(0,c.Z)(this,"registerField",(function(e){n.fieldEntities.push(e);var t=e.getNamePath();if(n.notifyWatch([t]),void 0!==e.props.initialValue){var r=n.store;n.resetWithFieldInitialValue({entities:[e],skipExist:!0}),n.notifyObservers(r,[e.getNamePath()],{type:"valueUpdate",source:"internal"})}return function(r,i){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];if(n.fieldEntities=n.fieldEntities.filter((function(t){return t!==e})),!n.isMergedPreserve(i)&&(!r||o.length>1)){var a=r?void 0:n.getInitialValue(t);if(t.length&&n.getFieldValue(t)!==a&&n.fieldEntities.every((function(e){return!Ee(e.getNamePath(),t)}))){var s=n.store;n.updateStore((0,de.Z)(s,t,a,!0)),n.notifyObservers(s,[t],{type:"remove"}),n.triggerDependenciesUpdate(s,t)}}n.notifyWatch([t])}})),(0,c.Z)(this,"dispatch",(function(e){switch(e.type){case"updateValue":var t=e.namePath,r=e.value;n.updateValue(t,r);break;case"validateField":var i=e.namePath,o=e.triggerName;n.validateFields([i],{triggerName:o})}})),(0,c.Z)(this,"notifyObservers",(function(e,t,r){if(n.subscribable){var i=(0,s.Z)((0,s.Z)({},r),{},{store:n.getFieldsValue(!0)});n.getFieldEntities().forEach((function(n){(0,n.onStoreChange)(e,t,i)}))}else n.forceRootUpdate()})),(0,c.Z)(this,"triggerDependenciesUpdate",(function(e,t){var r=n.getDependencyChildrenFields(t);return r.length&&n.validateFields(r),n.notifyObservers(e,r,{type:"dependenciesUpdate",relatedFields:[t].concat((0,S.Z)(r))}),r})),(0,c.Z)(this,"updateValue",(function(e,t){var r=Se(e),i=n.store;n.updateStore((0,de.Z)(n.store,r,t)),n.notifyObservers(i,[r],{type:"valueUpdate",source:"internal"}),n.notifyWatch([r]);var o=n.triggerDependenciesUpdate(i,r),a=n.callbacks.onValuesChange;a&&a(Oe(n.store,[r]),n.getFieldsValue());n.triggerOnFieldsChange([r].concat((0,S.Z)(o)))})),(0,c.Z)(this,"setFieldsValue",(function(e){n.warningUnhooked();var t=n.store;if(e){var r=(0,de.T)(n.store,e);n.updateStore(r)}n.notifyObservers(t,null,{type:"valueUpdate",source:"external"}),n.notifyWatch()})),(0,c.Z)(this,"setFieldValue",(function(e,t){n.setFields([{name:e,value:t}])})),(0,c.Z)(this,"getDependencyChildrenFields",(function(e){var t=new Set,r=[],i=new Ie;n.getFieldEntities().forEach((function(e){(e.props.dependencies||[]).forEach((function(t){var n=Se(t);i.update(n,(function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:new Set;return t.add(e),t}))}))}));return function e(n){(i.get(n)||new Set).forEach((function(n){if(!t.has(n)){t.add(n);var i=n.getNamePath();n.isFieldDirty()&&i.length&&(r.push(i),e(i))}}))}(e),r})),(0,c.Z)(this,"triggerOnFieldsChange",(function(e,t){var r=n.callbacks.onFieldsChange;if(r){var i=n.getFields();if(t){var o=new Ie;t.forEach((function(e){var t=e.name,n=e.errors;o.set(t,n)})),i.forEach((function(e){e.errors=o.get(e.name)||e.errors}))}var a=i.filter((function(t){var n=t.name;return ke(e,n)}));a.length&&r(a,i)}})),(0,c.Z)(this,"validateFields",(function(e,t){var r,i;n.warningUnhooked(),Array.isArray(e)||"string"==typeof e||"string"==typeof t?(r=e,i=t):i=e;var o=!!r,a=o?r.map(Se):[],c=[],u=String(Date.now()),l=new Set,f=i||{},d=f.recursive,h=f.dirty;n.getFieldEntities(!0).forEach((function(e){if(o||a.push(e.getNamePath()),e.props.rules&&e.props.rules.length&&(!h||e.isFieldDirty())){var t=e.getNamePath();if(l.add(t.join(u)),!o||ke(a,t,d)){var r=e.validateRules((0,s.Z)({validateMessages:(0,s.Z)((0,s.Z)({},fe),n.validateMessages)},i));c.push(r.then((function(){return{name:t,errors:[],warnings:[]}})).catch((function(e){var n,r=[],i=[];return null===(n=e.forEach)||void 0===n||n.call(e,(function(e){var t=e.rule.warningOnly,n=e.errors;t?i.push.apply(i,(0,S.Z)(n)):r.push.apply(r,(0,S.Z)(n))})),r.length?Promise.reject({name:t,errors:r,warnings:i}):{name:t,errors:r,warnings:i}})))}}}));var v=function(e){var t=!1,n=e.length,r=[];return e.length?new Promise((function(i,o){e.forEach((function(e,a){e.catch((function(e){return t=!0,e})).then((function(e){n-=1,r[a]=e,n>0||(t&&o(r),i(r))}))}))})):Promise.resolve([])}(c);n.lastValidatePromise=v,v.catch((function(e){return e})).then((function(e){var t=e.map((function(e){return e.name}));n.notifyObservers(n.store,t,{type:"validateFinish"}),n.triggerOnFieldsChange(t,e)}));var p=v.then((function(){return n.lastValidatePromise===v?Promise.resolve(n.getFieldsValue(a)):Promise.reject([])})).catch((function(e){var t=e.filter((function(e){return e&&e.errors.length}));return Promise.reject({values:n.getFieldsValue(a),errorFields:t,outOfDate:n.lastValidatePromise!==v})}));p.catch((function(e){return e}));var g=a.filter((function(e){return l.has(e.join(u))}));return n.triggerOnFieldsChange(g),p})),(0,c.Z)(this,"submit",(function(){n.warningUnhooked(),n.validateFields().then((function(e){var t=n.callbacks.onFinish;if(t)try{t(e)}catch(r){console.error(r)}})).catch((function(e){var t=n.callbacks.onFinishFailed;t&&t(e)}))})),this.forceRootUpdate=t}));const De=function(e){var t=r.useRef(),n=r.useState({}),i=(0,u.Z)(n,2)[1];if(!t.current)if(e)t.current=e;else{var o=new Ve((function(){i({})}));t.current=o.getForm()}return[t.current]};var He=r.createContext({triggerFormChange:function(){},triggerFormFinish:function(){},registerForm:function(){},unregisterForm:function(){}});const Be=He;var ze=["name","initialValues","fields","form","preserve","children","component","validateMessages","validateTrigger","onValuesChange","onFieldsChange","onFinish","onFinishFailed"];const qe=function(e,t){var n=e.name,i=e.initialValues,o=e.fields,c=e.form,f=e.preserve,d=e.children,h=e.component,v=void 0===h?"form":h,p=e.validateMessages,g=e.validateTrigger,m=void 0===g?"onChange":g,y=e.onValuesChange,b=e.onFieldsChange,_=e.onFinish,w=e.onFinishFailed,x=(0,l.Z)(e,ze),O=r.useContext(Be),k=De(c),E=(0,u.Z)(k,1)[0],Z=E.getInternalHooks(M),C=Z.useSubscribe,A=Z.setInitialValues,P=Z.setCallbacks,j=Z.setValidateMessages,F=Z.setPreserve,T=Z.destroyForm;r.useImperativeHandle(t,(function(){return E})),r.useEffect((function(){return O.registerForm(n,E),function(){O.unregisterForm(n)}}),[O,E,n]),j((0,s.Z)((0,s.Z)({},O.validateMessages),p)),P({onValuesChange:y,onFieldsChange:function(e){if(O.triggerFormChange(n,e),b){for(var t=arguments.length,r=new Array(t>1?t-1:0),i=1;i{const{checkboxCls:t}=e,n=`${t}-wrapper`;return[{[`${t}-group`]:Object.assign(Object.assign({},(0,Je.Wf)(e)),{display:"inline-flex",flexWrap:"wrap",columnGap:e.marginXS,[`> ${e.antCls}-row`]:{flex:1}}),[n]:Object.assign(Object.assign({},(0,Je.Wf)(e)),{display:"inline-flex",alignItems:"baseline",cursor:"pointer","&:after":{display:"inline-block",width:0,overflow:"hidden",content:"'\\a0'"},[`& + ${n}`]:{marginInlineStart:0},[`&${n}-in-form-item`]:{'input[type="checkbox"]':{width:14,height:14}}}),[t]:Object.assign(Object.assign({},(0,Je.Wf)(e)),{position:"relative",whiteSpace:"nowrap",lineHeight:1,cursor:"pointer",borderRadius:e.borderRadiusSM,alignSelf:"center",[`${t}-input`]:{position:"absolute",inset:0,zIndex:1,cursor:"pointer",opacity:0,margin:0,[`&:focus-visible + ${t}-inner`]:Object.assign({},(0,Je.oN)(e))},[`${t}-inner`]:{boxSizing:"border-box",position:"relative",top:0,insetInlineStart:0,display:"block",width:e.checkboxSize,height:e.checkboxSize,direction:"ltr",backgroundColor:e.colorBgContainer,border:`${(0,Qe.bf)(e.lineWidth)} ${e.lineType} ${e.colorBorder}`,borderRadius:e.borderRadiusSM,borderCollapse:"separate",transition:`all ${e.motionDurationSlow}`,"&:after":{boxSizing:"border-box",position:"absolute",top:"50%",insetInlineStart:"21.5%",display:"table",width:e.calc(e.checkboxSize).div(14).mul(5).equal(),height:e.calc(e.checkboxSize).div(14).mul(8).equal(),border:`${(0,Qe.bf)(e.lineWidthBold)} solid ${e.colorWhite}`,borderTop:0,borderInlineStart:0,transform:"rotate(45deg) scale(0) translate(-50%,-50%)",opacity:0,content:'""',transition:`all ${e.motionDurationFast} ${e.motionEaseInBack}, opacity ${e.motionDurationFast}`}},"& + span":{paddingInlineStart:e.paddingXS,paddingInlineEnd:e.paddingXS}})},{[`\n ${n}:not(${n}-disabled),\n ${t}:not(${t}-disabled)\n `]:{[`&:hover ${t}-inner`]:{borderColor:e.colorPrimary}},[`${n}:not(${n}-disabled)`]:{[`&:hover ${t}-checked:not(${t}-disabled) ${t}-inner`]:{backgroundColor:e.colorPrimaryHover,borderColor:"transparent"},[`&:hover ${t}-checked:not(${t}-disabled):after`]:{borderColor:e.colorPrimaryHover}}},{[`${t}-checked`]:{[`${t}-inner`]:{backgroundColor:e.colorPrimary,borderColor:e.colorPrimary,"&:after":{opacity:1,transform:"rotate(45deg) scale(1) translate(-50%,-50%)",transition:`all ${e.motionDurationMid} ${e.motionEaseOutBack} ${e.motionDurationFast}`}}},[`\n ${n}-checked:not(${n}-disabled),\n ${t}-checked:not(${t}-disabled)\n `]:{[`&:hover ${t}-inner`]:{backgroundColor:e.colorPrimaryHover,borderColor:"transparent"}}},{[t]:{"&-indeterminate":{[`${t}-inner`]:{backgroundColor:e.colorBgContainer,borderColor:e.colorBorder,"&:after":{top:"50%",insetInlineStart:"50%",width:e.calc(e.fontSizeLG).div(2).equal(),height:e.calc(e.fontSizeLG).div(2).equal(),backgroundColor:e.colorPrimary,border:0,transform:"translate(-50%, -50%) scale(1)",opacity:1,content:'""'}}}}},{[`${n}-disabled`]:{cursor:"not-allowed"},[`${t}-disabled`]:{[`&, ${t}-input`]:{cursor:"not-allowed",pointerEvents:"none"},[`${t}-inner`]:{background:e.colorBgContainerDisabled,borderColor:e.colorBorder,"&:after":{borderColor:e.colorTextDisabled}},"&:after":{display:"none"},"& + span":{color:e.colorTextDisabled},[`&${t}-indeterminate ${t}-inner::after`]:{background:e.colorTextDisabled}}}]};function rt(e,t){const n=(0,et.TS)(t,{checkboxCls:`.${e}`,checkboxSize:t.controlInteractiveSize});return[nt(n)]}const it=(0,tt.I$)("Checkbox",((e,t)=>{let{prefixCls:n}=t;return[rt(n,e)]}));var ot=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(e);i{var n;const{prefixCls:i,className:a,rootClassName:s,children:c,indeterminate:u=!1,style:l,onMouseEnter:f,onMouseLeave:d,skipGroup:h=!1,disabled:b}=e,w=ot(e,["prefixCls","className","rootClassName","children","indeterminate","style","onMouseEnter","onMouseLeave","skipGroup","disabled"]),{getPrefixCls:x,direction:S,checkbox:O}=r.useContext(m.E_),k=r.useContext(Ye),{isFormItemInput:E}=r.useContext(Ke),Z=r.useContext(y.Z),C=null!==(n=(null==k?void 0:k.disabled)||b)&&void 0!==n?n:Z,A=r.useRef(w.value);r.useEffect((()=>{null==k||k.registerValue(w.value)}),[]),r.useEffect((()=>{if(!h)return w.value!==A.current&&(null==k||k.cancelValue(A.current),null==k||k.registerValue(w.value),A.current=w.value),()=>null==k?void 0:k.cancelValue(w.value)}),[w.value]);const P=x("checkbox",i),j=_(P),[F,M]=it(P,j),T=Object.assign({},w);k&&!h&&(T.onChange=function(){w.onChange&&w.onChange.apply(w,arguments),k.toggleOption&&k.toggleOption({label:c,value:w.value})},T.name=k.name,T.checked=k.value.includes(w.value));const R=o()(`${P}-wrapper`,{[`${P}-rtl`]:"rtl"===S,[`${P}-wrapper-checked`]:T.checked,[`${P}-wrapper-disabled`]:C,[`${P}-wrapper-in-form-item`]:E},null==O?void 0:O.className,a,s,j,M),N=o()({[`${P}-indeterminate`]:u},g.A,M),$=u?"mixed":void 0;return F(r.createElement(p.Z,{component:"Checkbox",disabled:C},r.createElement("label",{className:R,style:Object.assign(Object.assign({},null==O?void 0:O.style),l),onMouseEnter:f,onMouseLeave:d},r.createElement(v,Object.assign({"aria-checked":$},T,{prefixCls:P,className:N,disabled:C,ref:t})),void 0!==c&&r.createElement("span",null,c))))};const st=r.forwardRef(at);var ct=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(e);i{const{defaultValue:n,children:i,options:a=[],prefixCls:c,className:u,rootClassName:l,style:f,onChange:d}=e,h=ct(e,["defaultValue","children","options","prefixCls","className","rootClassName","style","onChange"]),{getPrefixCls:v,direction:p}=r.useContext(m.E_),[g,y]=r.useState(h.value||n||[]),[b,w]=r.useState([]);r.useEffect((()=>{"value"in h&&y(h.value||[])}),[h.value]);const x=r.useMemo((()=>a.map((e=>"string"==typeof e||"number"==typeof e?{label:e,value:e}:e))),[a]),O=v("checkbox",c),k=`${O}-group`,E=_(O),[Z,C]=it(O,E),A=(P=h,j=["value","disabled"],F=(0,s.Z)({},P),Array.isArray(j)&&j.forEach((function(e){delete F[e]})),F);var P,j,F;const M=a.length?x.map((e=>r.createElement(st,{prefixCls:O,key:e.value.toString(),disabled:"disabled"in e?e.disabled:h.disabled,value:e.value,checked:g.includes(e.value),onChange:e.onChange,className:`${k}-item`,style:e.style,title:e.title,id:e.id,required:e.required},e.label))):i,T={toggleOption:e=>{const t=g.indexOf(e.value),n=(0,S.Z)(g);-1===t?n.push(e.value):n.splice(t,1),"value"in h||y(n),null==d||d(n.filter((e=>b.includes(e))).sort(((e,t)=>x.findIndex((t=>t.value===e))-x.findIndex((e=>e.value===t)))))},value:g,disabled:h.disabled,name:h.name,registerValue:e=>{w((t=>[].concat((0,S.Z)(t),[e])))},cancelValue:e=>{w((t=>t.filter((t=>t!==e))))}},R=o()(k,{[`${k}-rtl`]:"rtl"===p},u,l,E,C);return Z(r.createElement("div",Object.assign({className:R,style:f},A,{ref:t}),r.createElement(Ye.Provider,{value:T},M)))},lt=r.forwardRef(ut),ft=r.memo(lt),dt=st;dt.Group=ft,dt.__ANT_CHECKBOX=!0;const ht=dt},8866:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a,n:()=>o});var r=n(7294);const i=r.createContext(!1),o=e=>{let{children:t,disabled:n}=e;const o=r.useContext(i);return r.createElement(i.Provider,{value:null!=n?n:o},t)},a=i},7647:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a,q:()=>o});var r=n(7294);const i=r.createContext(void 0),o=e=>{let{children:t,size:n}=e;const o=r.useContext(i);return r.createElement(i.Provider,{value:n||o},t)},a=i},3124:(e,t,n)=>{"use strict";n.d(t,{E_:()=>o,oR:()=>i});var r=n(7294);const i="anticon",o=r.createContext({getPrefixCls:(e,t)=>t||(e?`ant-${e}`:"ant"),iconPrefixCls:i}),{Consumer:a}=o},9843:(e,t,n)=>{"use strict";n.d(t,{ZP:()=>J});var r=n(7294),i=n.t(r,2),o=n(5980),a=n(3017),s=n(6982),c=n(3799);n(334);function u(){}const l=r.createContext({}),f=()=>{const e=()=>{};return e.deprecated=u,e},d=(0,r.createContext)(void 0);const h={items_per_page:"/ page",jump_to:"Go to",jump_to_confirm:"confirm",page:"Page",prev_page:"Previous Page",next_page:"Next Page",prev_5:"Previous 5 Pages",next_5:"Next 5 Pages",prev_3:"Previous 3 Pages",next_3:"Next 3 Pages",page_size:"Page Size"};const v={locale:"en_US",today:"Today",now:"Now",backToToday:"Back to today",ok:"OK",clear:"Clear",month:"Month",year:"Year",timeSelect:"select time",dateSelect:"select date",weekSelect:"Choose a week",monthSelect:"Choose a month",yearSelect:"Choose a year",decadeSelect:"Choose a decade",yearFormat:"YYYY",dateFormat:"M/D/YYYY",dayFormat:"D",dateTimeFormat:"M/D/YYYY HH:mm:ss",monthBeforeYear:!0,previousMonth:"Previous month (PageUp)",nextMonth:"Next month (PageDown)",previousYear:"Last year (Control + left)",nextYear:"Next year (Control + right)",previousDecade:"Last decade",nextDecade:"Next decade",previousCentury:"Last century",nextCentury:"Next century"},p={placeholder:"Select time",rangePlaceholder:["Start time","End time"]},g={lang:Object.assign({placeholder:"Select date",yearPlaceholder:"Select year",quarterPlaceholder:"Select quarter",monthPlaceholder:"Select month",weekPlaceholder:"Select week",rangePlaceholder:["Start date","End date"],rangeYearPlaceholder:["Start year","End year"],rangeQuarterPlaceholder:["Start quarter","End quarter"],rangeMonthPlaceholder:["Start month","End month"],rangeWeekPlaceholder:["Start week","End week"]},v),timePickerLocale:Object.assign({},p)},m="${label} is not a valid ${type}",y={locale:"en",Pagination:h,DatePicker:g,TimePicker:p,Calendar:g,global:{placeholder:"Please select"},Table:{filterTitle:"Filter menu",filterConfirm:"OK",filterReset:"Reset",filterEmptyText:"No filters",filterCheckall:"Select all items",filterSearchPlaceholder:"Search in filters",emptyText:"No data",selectAll:"Select current page",selectInvert:"Invert current page",selectNone:"Clear all data",selectionAll:"Select all data",sortTitle:"Sort",expand:"Expand row",collapse:"Collapse row",triggerDesc:"Click to sort descending",triggerAsc:"Click to sort ascending",cancelSort:"Click to cancel sorting"},Tour:{Next:"Next",Previous:"Previous",Finish:"Finish"},Modal:{okText:"OK",cancelText:"Cancel",justOkText:"OK"},Popconfirm:{okText:"OK",cancelText:"Cancel"},Transfer:{titles:["",""],searchPlaceholder:"Search here",itemUnit:"item",itemsUnit:"items",remove:"Remove",selectCurrent:"Select current page",removeCurrent:"Remove current page",selectAll:"Select all data",removeAll:"Remove all data",selectInvert:"Invert current page"},Upload:{uploading:"Uploading...",removeFile:"Remove file",uploadError:"Upload error",previewFile:"Preview file",downloadFile:"Download file"},Empty:{description:"No data"},Icon:{icon:"icon"},Text:{edit:"Edit",copy:"Copy",copied:"Copied",expand:"Expand"},PageHeader:{back:"Back"},Form:{optional:"(optional)",defaultValidateMessages:{default:"Field validation error for ${label}",required:"Please enter ${label}",enum:"${label} must be one of [${enum}]",whitespace:"${label} cannot be a blank character",date:{format:"${label} date format is invalid",parse:"${label} cannot be converted to a date",invalid:"${label} is an invalid date"},types:{string:m,method:m,array:m,object:m,number:m,date:m,boolean:m,integer:m,float:m,regexp:m,email:m,url:m,hex:m},string:{len:"${label} must be ${len} characters",min:"${label} must be at least ${min} characters",max:"${label} must be up to ${max} characters",range:"${label} must be between ${min}-${max} characters"},number:{len:"${label} must be equal to ${len}",min:"${label} must be minimum ${min}",max:"${label} must be maximum ${max}",range:"${label} must be between ${min}-${max}"},array:{len:"Must be ${len} ${label}",min:"At least ${min} ${label}",max:"At most ${max} ${label}",range:"The amount of ${label} must be between ${min}-${max}"},pattern:{mismatch:"${label} does not match the pattern ${pattern}"}}},Image:{preview:"Preview"},QRCode:{expired:"QR code expired",refresh:"Refresh"},ColorPicker:{presetEmpty:"Empty"}};let b=Object.assign({},y.Modal),_=[];const w=()=>_.reduce(((e,t)=>Object.assign(Object.assign({},e),t)),y.Modal);const x=(0,r.createContext)(void 0);const S=e=>{const{locale:t={},children:n,_ANT_MARK__:i}=e;r.useEffect((()=>{const e=function(e){if(e){const t=Object.assign({},e);return _.push(t),b=w(),()=>{_=_.filter((e=>e!==t)),b=w()}}b=Object.assign({},y.Modal)}(t&&t.Modal);return e}),[t]);const o=r.useMemo((()=>Object.assign(Object.assign({},t),{exist:!0})),[t]);return r.createElement(x.Provider,{value:o},n)};var O=n(3083),k=n(2790),E=n(3124),Z=n(6397),C=n(274),A=n(8924),P=n(8981);const j=`-ant-${Date.now()}-${Math.random()}`;function F(e,t){const n=function(e,t){const n={},r=(e,t)=>{let n=e.clone();return n=(null==t?void 0:t(n))||n,n.toRgbString()},i=(e,t)=>{const i=new C.C(e),o=(0,Z.R_)(i.toRgbString());n[`${t}-color`]=r(i),n[`${t}-color-disabled`]=o[1],n[`${t}-color-hover`]=o[4],n[`${t}-color-active`]=o[6],n[`${t}-color-outline`]=i.clone().setAlpha(.2).toRgbString(),n[`${t}-color-deprecated-bg`]=o[0],n[`${t}-color-deprecated-border`]=o[2]};if(t.primaryColor){i(t.primaryColor,"primary");const e=new C.C(t.primaryColor),o=(0,Z.R_)(e.toRgbString());o.forEach(((e,t)=>{n[`primary-${t+1}`]=e})),n["primary-color-deprecated-l-35"]=r(e,(e=>e.lighten(35))),n["primary-color-deprecated-l-20"]=r(e,(e=>e.lighten(20))),n["primary-color-deprecated-t-20"]=r(e,(e=>e.tint(20))),n["primary-color-deprecated-t-50"]=r(e,(e=>e.tint(50))),n["primary-color-deprecated-f-12"]=r(e,(e=>e.setAlpha(.12*e.getAlpha())));const a=new C.C(o[0]);n["primary-color-active-deprecated-f-30"]=r(a,(e=>e.setAlpha(.3*e.getAlpha()))),n["primary-color-active-deprecated-d-02"]=r(a,(e=>e.darken(2)))}return t.successColor&&i(t.successColor,"success"),t.warningColor&&i(t.warningColor,"warning"),t.errorColor&&i(t.errorColor,"error"),t.infoColor&&i(t.infoColor,"info"),`\n :root {\n ${Object.keys(n).map((t=>`--${e}-${t}: ${n[t]};`)).join("\n")}\n }\n `.trim()}(e,t);(0,A.Z)()&&(0,P.hq)(n,`${j}-dynamic-theme`)}var M=n(8866),T=n(7647);const R=function(){return{componentDisabled:(0,r.useContext)(M.Z),componentSize:(0,r.useContext)(T.Z)}};var N=n(1881);const $=Object.assign({},i),{useId:I}=$,L=void 0===I?()=>"":I;var V=n(9182),D=n(5976);function H(e){const{children:t}=e,[,n]=(0,D.ZP)(),{motion:i}=n,o=r.useRef(!1);return o.current=o.current||!1===i,o.current?r.createElement(V.zt,{motion:i},t):t}const B=()=>null;var z=n(3269),q=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(e);i{const{children:t,csp:n,autoInsertSpaceInButton:i,alert:u,anchor:h,form:v,locale:p,componentSize:g,direction:m,space:b,virtual:_,dropdownMatchSelectWidth:w,popupMatchSelectWidth:x,popupOverflow:Z,legacyLocale:C,parentContext:A,iconPrefixCls:P,theme:j,componentDisabled:F,segmented:R,statistic:$,spin:I,calendar:V,carousel:D,cascader:W,collapse:G,typography:X,checkbox:K,descriptions:Y,divider:Q,drawer:J,skeleton:ee,steps:te,image:ne,layout:re,list:ie,mentions:oe,modal:ae,progress:se,result:ce,slider:ue,breadcrumb:le,menu:fe,pagination:de,input:he,empty:ve,badge:pe,radio:ge,rate:me,switch:ye,transfer:be,avatar:_e,message:we,tag:xe,table:Se,card:Oe,tabs:ke,timeline:Ee,timePicker:Ze,upload:Ce,notification:Ae,tree:Pe,colorPicker:je,datePicker:Fe,rangePicker:Me,flex:Te,wave:Re,dropdown:Ne,warning:$e}=e,Ie=r.useCallback(((t,n)=>{const{prefixCls:r}=e;if(n)return n;const i=r||A.getPrefixCls("");return t?`${i}-${t}`:i}),[A.getPrefixCls,e.prefixCls]),Le=P||A.iconPrefixCls||E.oR,Ve=n||A.csp;(0,z.Z)(Le,Ve);const De=function(e,t){f("ConfigProvider");const n=e||{},r=!1!==n.inherit&&t?t:O.u_,i=L();return(0,s.Z)((()=>{var o,a;if(!e)return t;const s=Object.assign({},r.components);Object.keys(e.components||{}).forEach((t=>{s[t]=Object.assign(Object.assign({},s[t]),e.components[t])}));const c=`css-var-${i.replace(/:/g,"")}`,u=(null!==(o=n.cssVar)&&void 0!==o?o:r.cssVar)&&Object.assign(Object.assign(Object.assign({prefix:"ant"},"object"==typeof r.cssVar?r.cssVar:{}),"object"==typeof n.cssVar?n.cssVar:{}),{key:"object"==typeof n.cssVar&&(null===(a=n.cssVar)||void 0===a?void 0:a.key)||c});return Object.assign(Object.assign(Object.assign({},r),n),{token:Object.assign(Object.assign({},r.token),n.token),components:s,cssVar:u})}),[n,r],((e,t)=>e.some(((e,n)=>{const r=t[n];return!(0,N.Z)(e,r,!0)}))))}(j,A.theme);const He={csp:Ve,autoInsertSpaceInButton:i,alert:u,anchor:h,locale:p||C,direction:m,space:b,virtual:_,popupMatchSelectWidth:null!=x?x:w,popupOverflow:Z,getPrefixCls:Ie,iconPrefixCls:Le,theme:De,segmented:R,statistic:$,spin:I,calendar:V,carousel:D,cascader:W,collapse:G,typography:X,checkbox:K,descriptions:Y,divider:Q,drawer:J,skeleton:ee,steps:te,image:ne,input:he,layout:re,list:ie,mentions:oe,modal:ae,progress:se,result:ce,slider:ue,breadcrumb:le,menu:fe,pagination:de,empty:ve,badge:pe,radio:ge,rate:me,switch:ye,transfer:be,avatar:_e,message:we,tag:xe,table:Se,card:Oe,tabs:ke,timeline:Ee,timePicker:Ze,upload:Ce,notification:Ae,tree:Pe,colorPicker:je,datePicker:Fe,rangePicker:Me,flex:Te,wave:Re,dropdown:Ne,warning:$e},Be=Object.assign({},A);Object.keys(He).forEach((e=>{void 0!==He[e]&&(Be[e]=He[e])})),U.forEach((t=>{const n=e[t];n&&(Be[t]=n)}));const ze=(0,s.Z)((()=>Be),Be,((e,t)=>{const n=Object.keys(e),r=Object.keys(t);return n.length!==r.length||n.some((n=>e[n]!==t[n]))})),qe=r.useMemo((()=>({prefixCls:Le,csp:Ve})),[Le,Ve]);let Ue=r.createElement(r.Fragment,null,r.createElement(B,{dropdownMatchSelectWidth:w}),t);const We=r.useMemo((()=>{var e,t,n,r;return(0,c.T)((null===(e=y.Form)||void 0===e?void 0:e.defaultValidateMessages)||{},(null===(n=null===(t=ze.locale)||void 0===t?void 0:t.Form)||void 0===n?void 0:n.defaultValidateMessages)||{},(null===(r=ze.form)||void 0===r?void 0:r.validateMessages)||{},(null==v?void 0:v.validateMessages)||{})}),[ze,null==v?void 0:v.validateMessages]);Object.keys(We).length>0&&(Ue=r.createElement(d.Provider,{value:We},Ue)),p&&(Ue=r.createElement(S,{locale:p,_ANT_MARK__:"internalMark"},Ue)),(Le||Ve)&&(Ue=r.createElement(a.Z.Provider,{value:qe},Ue)),g&&(Ue=r.createElement(T.q,{size:g},Ue)),Ue=r.createElement(H,null,Ue);const Ge=r.useMemo((()=>{const e=De||{},{algorithm:t,token:n,components:r,cssVar:i}=e,a=q(e,["algorithm","token","components","cssVar"]),s=t&&(!Array.isArray(t)||t.length>0)?(0,o.jG)(t):O.uH,c={};Object.entries(r||{}).forEach((e=>{let[t,n]=e;const r=Object.assign({},n);"algorithm"in r&&(!0===r.algorithm?r.theme=s:(Array.isArray(r.algorithm)||"function"==typeof r.algorithm)&&(r.theme=(0,o.jG)(r.algorithm)),delete r.algorithm),c[t]=r}));const u=Object.assign(Object.assign({},k.Z),n);return Object.assign(Object.assign({},a),{theme:s,token:u,components:c,override:Object.assign({override:u},c),cssVar:i})}),[De]);return j&&(Ue=r.createElement(O.Mj.Provider,{value:Ge},Ue)),ze.warning&&(Ue=r.createElement(l.Provider,{value:ze.warning},Ue)),void 0!==F&&(Ue=r.createElement(M.n,{disabled:F},Ue)),r.createElement(E.E_.Provider,{value:ze},Ue)},Q=e=>{const t=r.useContext(E.E_),n=r.useContext(x);return r.createElement(Y,Object.assign({parentContext:t,legacyLocale:n},e))};Q.ConfigContext=E.E_,Q.SizeContext=T.Z,Q.config=e=>{let{prefixCls:t,iconPrefixCls:n,theme:r}=e;void 0!==t&&(W=t),void 0!==n&&(G=n),r&&(!function(e){return Object.keys(e).some((e=>e.endsWith("Color")))}(r)?X=r:F(K(),r))},Q.useConfig=R,Object.defineProperty(Q,"SizeContext",{get:()=>T.Z});const J=Q},4747:(e,t,n)=>{"use strict";n.d(t,{Lx:()=>a,Qy:()=>u,Ro:()=>o,Wf:()=>i,du:()=>s,oN:()=>c});var r=n(5980);const i=function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return{boxSizing:"border-box",margin:0,padding:0,color:e.colorText,fontSize:e.fontSize,lineHeight:e.lineHeight,listStyle:"none",fontFamily:t?"inherit":e.fontFamily}},o=()=>({display:"inline-flex",alignItems:"center",color:"inherit",fontStyle:"normal",lineHeight:0,textAlign:"center",textTransform:"none",verticalAlign:"-0.125em",textRendering:"optimizeLegibility","-webkit-font-smoothing":"antialiased","-moz-osx-font-smoothing":"grayscale","> *":{lineHeight:1},svg:{display:"inline-block"}}),a=e=>({a:{color:e.colorLink,textDecoration:e.linkDecoration,backgroundColor:"transparent",outline:"none",cursor:"pointer",transition:`color ${e.motionDurationSlow}`,"-webkit-text-decoration-skip":"objects","&:hover":{color:e.colorLinkHover},"&:active":{color:e.colorLinkActive},"&:active,\n &:hover":{textDecoration:e.linkHoverDecoration,outline:0},"&:focus":{textDecoration:e.linkFocusDecoration,outline:0},"&[disabled]":{color:e.colorTextDisabled,cursor:"not-allowed"}}}),s=(e,t)=>{const{fontFamily:n,fontSize:r}=e,i=`[class^="${t}"], [class*=" ${t}"]`;return{[i]:{fontFamily:n,fontSize:r,boxSizing:"border-box","&::before, &::after":{boxSizing:"border-box"},[i]:{boxSizing:"border-box","&::before, &::after":{boxSizing:"border-box"}}}}},c=e=>({outline:`${(0,r.bf)(e.lineWidthFocus)} solid ${e.colorPrimaryBorder}`,outlineOffset:1,transition:"outline-offset 0s, outline 0s"}),u=e=>({"&:focus-visible":Object.assign({},c(e))})},196:(e,t,n)=>{"use strict";n.d(t,{Z:()=>ie});var r=n(7294),i=n(7462);const o={icon:{tag:"svg",attrs:{viewBox:"0 0 1024 1024",focusable:"false"},children:[{tag:"path",attrs:{d:"M988 548c-19.9 0-36-16.1-36-36 0-59.4-11.6-117-34.6-171.3a440.45 440.45 0 00-94.3-139.9 437.71 437.71 0 00-139.9-94.3C629 83.6 571.4 72 512 72c-19.9 0-36-16.1-36-36s16.1-36 36-36c69.1 0 136.2 13.5 199.3 40.3C772.3 66 827 103 874 150c47 47 83.9 101.8 109.7 162.7 26.7 63.1 40.2 130.2 40.2 199.3.1 19.9-16 36-35.9 36z"}}]},name:"loading",theme:"outlined"};var a=n(7685),s=n(4942),c=n(5987),u=n(4184),l=n.n(u),f=n(6397),d=n(3017),h=n(1413),v=n(1002),p=n(8981);function g(e){var t;return null==e||null===(t=e.getRootNode)||void 0===t?void 0:t.call(e)}function m(e){return function(e){return g(e)instanceof ShadowRoot}(e)?g(e):null}var y=n(334);function b(e){return"object"===(0,v.Z)(e)&&"string"==typeof e.name&&"string"==typeof e.theme&&("object"===(0,v.Z)(e.icon)||"function"==typeof e.icon)}function _(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return Object.keys(e).reduce((function(t,n){var r,i=e[n];if("class"===n)t.className=i,delete t.class;else delete t[n],t[(r=n,r.replace(/-(.)/g,(function(e,t){return t.toUpperCase()})))]=i;return t}),{})}function w(e,t,n){return n?r.createElement(e.tag,(0,h.Z)((0,h.Z)({key:t},_(e.attrs)),n),(e.children||[]).map((function(n,r){return w(n,"".concat(t,"-").concat(e.tag,"-").concat(r))}))):r.createElement(e.tag,(0,h.Z)({key:t},_(e.attrs)),(e.children||[]).map((function(n,r){return w(n,"".concat(t,"-").concat(e.tag,"-").concat(r))})))}function x(e){return(0,f.R_)(e)[0]}function S(e){return e?Array.isArray(e)?e:[e]:[]}var O=["icon","className","onClick","style","primaryColor","secondaryColor"],k={primaryColor:"#333",secondaryColor:"#E6E6E6",calculated:!1};var E=function(e){var t,n,i,o,a,s,u,l=e.icon,f=e.className,v=e.onClick,g=e.style,_=e.primaryColor,S=e.secondaryColor,E=(0,c.Z)(e,O),Z=r.useRef(),C=k;if(_&&(C={primaryColor:_,secondaryColor:S||x(_)}),t=Z,n=(0,r.useContext)(d.Z),i=n.csp,o=n.prefixCls,a="\n.anticon {\n display: inline-block;\n color: inherit;\n font-style: normal;\n line-height: 0;\n text-align: center;\n text-transform: none;\n vertical-align: -0.125em;\n text-rendering: optimizeLegibility;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n.anticon > * {\n line-height: 1;\n}\n\n.anticon svg {\n display: inline-block;\n}\n\n.anticon::before {\n display: none;\n}\n\n.anticon .anticon-icon {\n display: block;\n}\n\n.anticon[tabindex] {\n cursor: pointer;\n}\n\n.anticon-spin::before,\n.anticon-spin {\n display: inline-block;\n -webkit-animation: loadingCircle 1s infinite linear;\n animation: loadingCircle 1s infinite linear;\n}\n\n@-webkit-keyframes loadingCircle {\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n\n@keyframes loadingCircle {\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n",o&&(a=a.replace(/anticon/g,o)),(0,r.useEffect)((function(){var e=m(t.current);(0,p.hq)(a,"@ant-design-icons",{prepend:!0,csp:i,attachTo:e})}),[]),s=b(l),u="icon should be icon definiton, but got ".concat(l),(0,y.ZP)(s,"[@ant-design/icons] ".concat(u)),!b(l))return null;var A=l;return A&&"function"==typeof A.icon&&(A=(0,h.Z)((0,h.Z)({},A),{},{icon:A.icon(C.primaryColor,C.secondaryColor)})),w(A.icon,"svg-".concat(A.name),(0,h.Z)((0,h.Z)({className:f,onClick:v,style:g,"data-icon":A.name,width:"1em",height:"1em",fill:"currentColor","aria-hidden":"true"},E),{},{ref:Z}))};E.displayName="IconReact",E.getTwoToneColors=function(){return(0,h.Z)({},k)},E.setTwoToneColors=function(e){var t=e.primaryColor,n=e.secondaryColor;k.primaryColor=t,k.secondaryColor=n||x(t),k.calculated=!!n};const Z=E;function C(e){var t=S(e),n=(0,a.Z)(t,2),r=n[0],i=n[1];return Z.setTwoToneColors({primaryColor:r,secondaryColor:i})}var A=["className","icon","spin","rotate","tabIndex","onClick","twoToneColor"];C(f.iN.primary);var P=r.forwardRef((function(e,t){var n,o=e.className,u=e.icon,f=e.spin,h=e.rotate,v=e.tabIndex,p=e.onClick,g=e.twoToneColor,m=(0,c.Z)(e,A),y=r.useContext(d.Z),b=y.prefixCls,_=void 0===b?"anticon":b,w=y.rootClassName,x=l()(w,_,(n={},(0,s.Z)(n,"".concat(_,"-").concat(u.name),!!u.name),(0,s.Z)(n,"".concat(_,"-spin"),!!f||"loading"===u.name),n),o),O=v;void 0===O&&p&&(O=-1);var k=h?{msTransform:"rotate(".concat(h,"deg)"),transform:"rotate(".concat(h,"deg)")}:void 0,E=S(g),C=(0,a.Z)(E,2),P=C[0],j=C[1];return r.createElement("span",(0,i.Z)({role:"img","aria-label":u.name},m,{ref:t,tabIndex:O,onClick:p,className:x}),r.createElement(Z,{icon:u,primaryColor:P,secondaryColor:j,style:k}))}));P.displayName="AntdIcon",P.getTwoToneColor=function(){var e=Z.getTwoToneColors();return e.calculated?[e.primaryColor,e.secondaryColor]:e.primaryColor},P.setTwoToneColor=C;const j=P;var F=function(e,t){return r.createElement(j,(0,i.Z)({},e,{ref:t,icon:o}))};const M=r.forwardRef(F);var T=n(1770),R={MAC_ENTER:3,BACKSPACE:8,TAB:9,NUM_CENTER:12,ENTER:13,SHIFT:16,CTRL:17,ALT:18,PAUSE:19,CAPS_LOCK:20,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,PRINT_SCREEN:44,INSERT:45,DELETE:46,ZERO:48,ONE:49,TWO:50,THREE:51,FOUR:52,FIVE:53,SIX:54,SEVEN:55,EIGHT:56,NINE:57,QUESTION_MARK:63,A:65,B:66,C:67,D:68,E:69,F:70,G:71,H:72,I:73,J:74,K:75,L:76,M:77,N:78,O:79,P:80,Q:81,R:82,S:83,T:84,U:85,V:86,W:87,X:88,Y:89,Z:90,META:91,WIN_KEY_RIGHT:92,CONTEXT_MENU:93,NUM_ZERO:96,NUM_ONE:97,NUM_TWO:98,NUM_THREE:99,NUM_FOUR:100,NUM_FIVE:101,NUM_SIX:102,NUM_SEVEN:103,NUM_EIGHT:104,NUM_NINE:105,NUM_MULTIPLY:106,NUM_PLUS:107,NUM_MINUS:109,NUM_PERIOD:110,NUM_DIVISION:111,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,NUMLOCK:144,SEMICOLON:186,DASH:189,EQUALS:187,COMMA:188,PERIOD:190,SLASH:191,APOSTROPHE:192,SINGLE_QUOTE:222,OPEN_SQUARE_BRACKET:219,BACKSLASH:220,CLOSE_SQUARE_BRACKET:221,WIN_KEY:224,MAC_FF_META:224,WIN_IME:229,isTextModifyingKeyEvent:function(e){var t=e.keyCode;if(e.altKey&&!e.ctrlKey||e.metaKey||t>=R.F1&&t<=R.F12)return!1;switch(t){case R.ALT:case R.CAPS_LOCK:case R.CONTEXT_MENU:case R.CTRL:case R.DOWN:case R.END:case R.ESC:case R.HOME:case R.INSERT:case R.LEFT:case R.MAC_FF_META:case R.META:case R.NUMLOCK:case R.NUM_CENTER:case R.PAGE_DOWN:case R.PAGE_UP:case R.PAUSE:case R.PRINT_SCREEN:case R.RIGHT:case R.SHIFT:case R.UP:case R.WIN_KEY:case R.WIN_KEY_RIGHT:return!1;default:return!0}},isCharacterKey:function(e){if(e>=R.ZERO&&e<=R.NINE)return!0;if(e>=R.NUM_ZERO&&e<=R.NUM_MULTIPLY)return!0;if(e>=R.A&&e<=R.Z)return!0;if(-1!==window.navigator.userAgent.indexOf("WebKit")&&0===e)return!0;switch(e){case R.SPACE:case R.QUESTION_MARK:case R.NUM_PLUS:case R.NUM_MINUS:case R.NUM_PERIOD:case R.NUM_DIVISION:case R.SEMICOLON:case R.DASH:case R.EQUALS:case R.COMMA:case R.PERIOD:case R.SLASH:case R.APOSTROPHE:case R.SINGLE_QUOTE:case R.OPEN_SQUARE_BRACKET:case R.BACKSLASH:case R.CLOSE_SQUARE_BRACKET:return!0;default:return!1}}};const N=R;var $=["prefixCls","className","checked","defaultChecked","disabled","loadingIcon","checkedChildren","unCheckedChildren","onClick","onChange","onKeyDown"],I=r.forwardRef((function(e,t){var n,o=e.prefixCls,u=void 0===o?"rc-switch":o,f=e.className,d=e.checked,h=e.defaultChecked,v=e.disabled,p=e.loadingIcon,g=e.checkedChildren,m=e.unCheckedChildren,y=e.onClick,b=e.onChange,_=e.onKeyDown,w=(0,c.Z)(e,$),x=(0,T.Z)(!1,{value:d,defaultValue:h}),S=(0,a.Z)(x,2),O=S[0],k=S[1];function E(e,t){var n=O;return v||(k(n=e),null==b||b(n,t)),n}var Z=l()(u,f,(n={},(0,s.Z)(n,"".concat(u,"-checked"),O),(0,s.Z)(n,"".concat(u,"-disabled"),v),n));return r.createElement("button",(0,i.Z)({},w,{type:"button",role:"switch","aria-checked":O,disabled:v,className:Z,ref:t,onKeyDown:function(e){e.which===N.LEFT?E(!1,e):e.which===N.RIGHT&&E(!0,e),null==_||_(e)},onClick:function(e){var t=E(!O,e);null==y||y(t,e)}}),p,r.createElement("span",{className:"".concat(u,"-inner")},r.createElement("span",{className:"".concat(u,"-inner-checked")},g),r.createElement("span",{className:"".concat(u,"-inner-unchecked")},m)))}));I.displayName="Switch";const L=I;var V=n(4769),D=n(3124),H=n(8866),B=n(7647);const z=e=>{const t=r.useContext(B.Z);return r.useMemo((()=>e?"string"==typeof e?null!=e?e:t:e instanceof Function?e(t):t:t),[e,t])};var q=n(5980),U=n(274),W=n(4747),G=n(1945),X=n(5503);const K=e=>{const{componentCls:t,trackHeightSM:n,trackPadding:r,trackMinWidthSM:i,innerMinMarginSM:o,innerMaxMarginSM:a,handleSizeSM:s,calc:c}=e,u=`${t}-inner`,l=(0,q.bf)(c(s).add(c(r).mul(2)).equal()),f=(0,q.bf)(c(a).mul(2).equal());return{[t]:{[`&${t}-small`]:{minWidth:i,height:n,lineHeight:(0,q.bf)(n),[`${t}-inner`]:{paddingInlineStart:a,paddingInlineEnd:o,[`${u}-checked`]:{marginInlineStart:`calc(-100% + ${l} - ${f})`,marginInlineEnd:`calc(100% - ${l} + ${f})`},[`${u}-unchecked`]:{marginTop:c(n).mul(-1).equal(),marginInlineStart:0,marginInlineEnd:0}},[`${t}-handle`]:{width:s,height:s},[`${t}-loading-icon`]:{top:c(c(s).sub(e.switchLoadingIconSize)).div(2).equal(),fontSize:e.switchLoadingIconSize},[`&${t}-checked`]:{[`${t}-inner`]:{paddingInlineStart:o,paddingInlineEnd:a,[`${u}-checked`]:{marginInlineStart:0,marginInlineEnd:0},[`${u}-unchecked`]:{marginInlineStart:`calc(100% - ${l} + ${f})`,marginInlineEnd:`calc(-100% + ${l} - ${f})`}},[`${t}-handle`]:{insetInlineStart:`calc(100% - ${(0,q.bf)(c(s).add(r).equal())})`}},[`&:not(${t}-disabled):active`]:{[`&:not(${t}-checked) ${u}`]:{[`${u}-unchecked`]:{marginInlineStart:c(e.marginXXS).div(2).equal(),marginInlineEnd:c(e.marginXXS).mul(-1).div(2).equal()}},[`&${t}-checked ${u}`]:{[`${u}-checked`]:{marginInlineStart:c(e.marginXXS).mul(-1).div(2).equal(),marginInlineEnd:c(e.marginXXS).div(2).equal()}}}}}}},Y=e=>{const{componentCls:t,handleSize:n,calc:r}=e;return{[t]:{[`${t}-loading-icon${e.iconCls}`]:{position:"relative",top:r(r(n).sub(e.fontSize)).div(2).equal(),color:e.switchLoadingIconColor,verticalAlign:"top"},[`&${t}-checked ${t}-loading-icon`]:{color:e.switchColor}}}},Q=e=>{const{componentCls:t,trackPadding:n,handleBg:r,handleShadow:i,handleSize:o,calc:a}=e,s=`${t}-handle`;return{[t]:{[s]:{position:"absolute",top:n,insetInlineStart:n,width:o,height:o,transition:`all ${e.switchDuration} ease-in-out`,"&::before":{position:"absolute",top:0,insetInlineEnd:0,bottom:0,insetInlineStart:0,backgroundColor:r,borderRadius:a(o).div(2).equal(),boxShadow:i,transition:`all ${e.switchDuration} ease-in-out`,content:'""'}},[`&${t}-checked ${s}`]:{insetInlineStart:`calc(100% - ${(0,q.bf)(a(o).add(n).equal())})`},[`&:not(${t}-disabled):active`]:{[`${s}::before`]:{insetInlineEnd:e.switchHandleActiveInset,insetInlineStart:0},[`&${t}-checked ${s}::before`]:{insetInlineEnd:0,insetInlineStart:e.switchHandleActiveInset}}}}},J=e=>{const{componentCls:t,trackHeight:n,trackPadding:r,innerMinMargin:i,innerMaxMargin:o,handleSize:a,calc:s}=e,c=`${t}-inner`,u=(0,q.bf)(s(a).add(s(r).mul(2)).equal()),l=(0,q.bf)(s(o).mul(2).equal());return{[t]:{[c]:{display:"block",overflow:"hidden",borderRadius:100,height:"100%",paddingInlineStart:o,paddingInlineEnd:i,transition:`padding-inline-start ${e.switchDuration} ease-in-out, padding-inline-end ${e.switchDuration} ease-in-out`,[`${c}-checked, ${c}-unchecked`]:{display:"block",color:e.colorTextLightSolid,fontSize:e.fontSizeSM,transition:`margin-inline-start ${e.switchDuration} ease-in-out, margin-inline-end ${e.switchDuration} ease-in-out`,pointerEvents:"none"},[`${c}-checked`]:{marginInlineStart:`calc(-100% + ${u} - ${l})`,marginInlineEnd:`calc(100% - ${u} + ${l})`},[`${c}-unchecked`]:{marginTop:s(n).mul(-1).equal(),marginInlineStart:0,marginInlineEnd:0}},[`&${t}-checked ${c}`]:{paddingInlineStart:i,paddingInlineEnd:o,[`${c}-checked`]:{marginInlineStart:0,marginInlineEnd:0},[`${c}-unchecked`]:{marginInlineStart:`calc(100% - ${u} + ${l})`,marginInlineEnd:`calc(-100% + ${u} - ${l})`}},[`&:not(${t}-disabled):active`]:{[`&:not(${t}-checked) ${c}`]:{[`${c}-unchecked`]:{marginInlineStart:s(r).mul(2).equal(),marginInlineEnd:s(r).mul(-1).mul(2).equal()}},[`&${t}-checked ${c}`]:{[`${c}-checked`]:{marginInlineStart:s(r).mul(-1).mul(2).equal(),marginInlineEnd:s(r).mul(2).equal()}}}}}},ee=e=>{const{componentCls:t,trackHeight:n,trackMinWidth:r}=e;return{[t]:Object.assign(Object.assign(Object.assign(Object.assign({},(0,W.Wf)(e)),{position:"relative",display:"inline-block",boxSizing:"border-box",minWidth:r,height:n,lineHeight:`${(0,q.bf)(n)}`,verticalAlign:"middle",background:e.colorTextQuaternary,border:"0",borderRadius:100,cursor:"pointer",transition:`all ${e.motionDurationMid}`,userSelect:"none",[`&:hover:not(${t}-disabled)`]:{background:e.colorTextTertiary}}),(0,W.Qy)(e)),{[`&${t}-checked`]:{background:e.switchColor,[`&:hover:not(${t}-disabled)`]:{background:e.colorPrimaryHover}},[`&${t}-loading, &${t}-disabled`]:{cursor:"not-allowed",opacity:e.switchDisabledOpacity,"*":{boxShadow:"none",cursor:"not-allowed"}},[`&${t}-rtl`]:{direction:"rtl"}})}},te=(0,G.I$)("Switch",(e=>{const t=(0,X.TS)(e,{switchDuration:e.motionDurationMid,switchColor:e.colorPrimary,switchDisabledOpacity:e.opacityLoading,switchLoadingIconSize:e.calc(e.fontSizeIcon).mul(.75).equal(),switchLoadingIconColor:`rgba(0, 0, 0, ${e.opacityLoading})`,switchHandleActiveInset:"-30%"});return[ee(t),J(t),Q(t),Y(t),K(t)]}),(e=>{const{fontSize:t,lineHeight:n,controlHeight:r,colorWhite:i}=e,o=t*n,a=r/2,s=o-4,c=a-4;return{trackHeight:o,trackHeightSM:a,trackMinWidth:2*s+8,trackMinWidthSM:2*c+4,trackPadding:2,handleBg:i,handleSize:s,handleSizeSM:c,handleShadow:`0 2px 4px 0 ${new U.C("#00230b").setAlpha(.2).toRgbString()}`,innerMinMargin:s/2,innerMaxMargin:s+2+4,innerMinMarginSM:c/2,innerMaxMarginSM:c+2+4}}));var ne=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(e);i{const{prefixCls:n,size:i,disabled:o,loading:a,className:s,rootClassName:c,style:u,checked:f,value:d,defaultChecked:h,defaultValue:v,onChange:p}=e,g=ne(e,["prefixCls","size","disabled","loading","className","rootClassName","style","checked","value","defaultChecked","defaultValue","onChange"]),[m,y]=(0,T.Z)(!1,{value:null!=f?f:d,defaultValue:null!=h?h:v}),{getPrefixCls:b,direction:_,switch:w}=r.useContext(D.E_),x=r.useContext(H.Z),S=(null!=o?o:x)||a,O=b("switch",n),k=r.createElement("div",{className:`${O}-handle`},a&&r.createElement(M,{className:`${O}-loading-icon`})),[E,Z]=te(O),C=z(i),A=l()(null==w?void 0:w.className,{[`${O}-small`]:"small"===C,[`${O}-loading`]:a,[`${O}-rtl`]:"rtl"===_},s,c,Z),P=Object.assign(Object.assign({},null==w?void 0:w.style),u);return E(r.createElement(V.Z,{component:"Switch"},r.createElement(L,Object.assign({},g,{checked:m,onChange:function(){y(arguments.length<=0?void 0:arguments[0]),null==p||p.apply(void 0,arguments)},prefixCls:O,className:A,style:P,disabled:S,ref:t,loadingIcon:k}))))}));re.__ANT_SWITCH=!0;const ie=re},3083:(e,t,n)=>{"use strict";n.d(t,{Mj:()=>u,uH:()=>s,u_:()=>c});var r=n(7294),i=n(5980),o=n(7164),a=n(2790);const s=(0,i.jG)(o.Z),c={token:a.Z,override:{override:a.Z},hashed:!0},u=r.createContext(c)},9361:(e,t,n)=>{"use strict";n.d(t,{Z:()=>w});var r=n(5980),i=n(7164),o=n(2790),a=n(1393);const s=e=>{const t=(null==e?void 0:e.algorithm)?(0,r.jG)(e.algorithm):(0,r.jG)(i.Z),n=Object.assign(Object.assign({},o.Z),null==e?void 0:e.token);return(0,r.t2)(n,{override:null==e?void 0:e.token},t,a.Z)};var c=n(5976),u=n(3083),l=n(372);var f=n(8378);const d=(e,t)=>{const n=null!=t?t:(0,i.Z)(e),r=n.fontSizeSM,o=n.controlHeight-4;return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},n),function(e){const{sizeUnit:t,sizeStep:n}=e,r=n-2;return{sizeXXL:t*(r+10),sizeXL:t*(r+6),sizeLG:t*(r+2),sizeMD:t*(r+2),sizeMS:t*(r+1),size:t*r,sizeSM:t*r,sizeXS:t*(r-1),sizeXXS:t*(r-1)}}(null!=t?t:e)),(0,f.Z)(r)),{controlHeight:o}),(0,l.Z)(Object.assign(Object.assign({},n),{controlHeight:o})))};var h=n(6397),v=n(57),p=n(274);const g=(e,t)=>new p.C(e).setAlpha(t).toRgbString(),m=(e,t)=>new p.C(e).lighten(t).toHexString(),y=e=>{const t=(0,h.R_)(e,{theme:"dark"});return{1:t[0],2:t[1],3:t[2],4:t[3],5:t[6],6:t[5],7:t[4],8:t[6],9:t[5],10:t[4]}},b=(e,t)=>{const n=e||"#000",r=t||"#fff";return{colorBgBase:n,colorTextBase:r,colorText:g(r,.85),colorTextSecondary:g(r,.65),colorTextTertiary:g(r,.45),colorTextQuaternary:g(r,.25),colorFill:g(r,.18),colorFillSecondary:g(r,.12),colorFillTertiary:g(r,.08),colorFillQuaternary:g(r,.04),colorBgElevated:m(n,12),colorBgContainer:m(n,8),colorBgLayout:m(n,0),colorBgSpotlight:m(n,26),colorBgBlur:g(r,.04),colorBorder:m(n,26),colorBorderSecondary:m(n,19)}},_=(e,t)=>{const n=Object.keys(o.M).map((t=>{const n=(0,h.R_)(e[t],{theme:"dark"});return new Array(10).fill(1).reduce(((e,r,i)=>(e[`${t}-${i+1}`]=n[i],e[`${t}${i+1}`]=n[i],e)),{})})).reduce(((e,t)=>e=Object.assign(Object.assign({},e),t)),{}),r=null!=t?t:(0,i.Z)(e);return Object.assign(Object.assign(Object.assign({},r),n),(0,v.Z)(e,{generateColorPalettes:y,generateNeutralColorPalettes:b}))};const w={defaultConfig:u.u_,defaultSeed:u.u_.token,useToken:function(){const[e,t,n]=(0,c.ZP)();return{theme:e,token:t,hashId:n}},defaultAlgorithm:i.Z,darkAlgorithm:_,compactAlgorithm:d,getDesignToken:s}},7164:(e,t,n)=>{"use strict";n.d(t,{Z:()=>v});var r=n(6397),i=n(372);var o=n(2790),a=n(57);const s=e=>{let t=e,n=e,r=e,i=e;return e<6&&e>=5?t=e+1:e<16&&e>=6?t=e+2:e>=16&&(t=16),e<7&&e>=5?n=4:e<8&&e>=7?n=5:e<14&&e>=8?n=6:e<16&&e>=14?n=7:e>=16&&(n=8),e<6&&e>=2?r=1:e>=6&&(r=2),e>4&&e<8?i=4:e>=8&&(i=6),{borderRadius:e,borderRadiusXS:r,borderRadiusSM:n,borderRadiusLG:t,borderRadiusOuter:i}};var c=n(274);const u=(e,t)=>new c.C(e).setAlpha(t).toRgbString(),l=(e,t)=>new c.C(e).darken(t).toHexString(),f=e=>{const t=(0,r.R_)(e);return{1:t[0],2:t[1],3:t[2],4:t[3],5:t[4],6:t[5],7:t[6],8:t[4],9:t[5],10:t[6]}},d=(e,t)=>{const n=e||"#fff",r=t||"#000";return{colorBgBase:n,colorTextBase:r,colorText:u(r,.88),colorTextSecondary:u(r,.65),colorTextTertiary:u(r,.45),colorTextQuaternary:u(r,.25),colorFill:u(r,.15),colorFillSecondary:u(r,.06),colorFillTertiary:u(r,.04),colorFillQuaternary:u(r,.02),colorBgLayout:l(n,4),colorBgContainer:l(n,0),colorBgElevated:l(n,0),colorBgSpotlight:u(r,.85),colorBgBlur:"transparent",colorBorder:l(n,15),colorBorderSecondary:l(n,6)}};var h=n(8378);function v(e){const t=Object.keys(o.M).map((t=>{const n=(0,r.R_)(e[t]);return new Array(10).fill(1).reduce(((e,r,i)=>(e[`${t}-${i+1}`]=n[i],e[`${t}${i+1}`]=n[i],e)),{})})).reduce(((e,t)=>e=Object.assign(Object.assign({},e),t)),{});return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},e),t),(0,a.Z)(e,{generateColorPalettes:f,generateNeutralColorPalettes:d})),(0,h.Z)(e.fontSize)),function(e){const{sizeUnit:t,sizeStep:n}=e;return{sizeXXL:t*(n+8),sizeXL:t*(n+4),sizeLG:t*(n+2),sizeMD:t*(n+1),sizeMS:t*n,size:t*n,sizeSM:t*(n-1),sizeXS:t*(n-2),sizeXXS:t*(n-3)}}(e)),(0,i.Z)(e)),function(e){const{motionUnit:t,motionBase:n,borderRadius:r,lineWidth:i}=e;return Object.assign({motionDurationFast:`${(n+t).toFixed(1)}s`,motionDurationMid:`${(n+2*t).toFixed(1)}s`,motionDurationSlow:`${(n+3*t).toFixed(1)}s`,lineWidthBold:i+1},s(r))}(e))}},2790:(e,t,n)=>{"use strict";n.d(t,{M:()=>r,Z:()=>i});const r={blue:"#1677ff",purple:"#722ED1",cyan:"#13C2C2",green:"#52C41A",magenta:"#EB2F96",pink:"#eb2f96",red:"#F5222D",orange:"#FA8C16",yellow:"#FADB14",volcano:"#FA541C",geekblue:"#2F54EB",gold:"#FAAD14",lime:"#A0D911"},i=Object.assign(Object.assign({},r),{colorPrimary:"#1677ff",colorSuccess:"#52c41a",colorWarning:"#faad14",colorError:"#ff4d4f",colorInfo:"#1677ff",colorLink:"",colorTextBase:"",colorBgBase:"",fontFamily:"-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial,\n'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol',\n'Noto Color Emoji'",fontFamilyCode:"'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, Courier, monospace",fontSize:14,lineWidth:1,lineType:"solid",motionUnit:.1,motionBase:0,motionEaseOutCirc:"cubic-bezier(0.08, 0.82, 0.17, 1)",motionEaseInOutCirc:"cubic-bezier(0.78, 0.14, 0.15, 0.86)",motionEaseOut:"cubic-bezier(0.215, 0.61, 0.355, 1)",motionEaseInOut:"cubic-bezier(0.645, 0.045, 0.355, 1)",motionEaseOutBack:"cubic-bezier(0.12, 0.4, 0.29, 1.46)",motionEaseInBack:"cubic-bezier(0.71, -0.46, 0.88, 0.6)",motionEaseInQuint:"cubic-bezier(0.755, 0.05, 0.855, 0.06)",motionEaseOutQuint:"cubic-bezier(0.23, 1, 0.32, 1)",borderRadius:6,sizeUnit:4,sizeStep:4,sizePopupArrow:16,controlHeight:32,zIndexBase:0,zIndexPopupBase:1e3,opacityImage:1,wireframe:!1,motion:!0})},57:(e,t,n)=>{"use strict";n.d(t,{Z:()=>i});var r=n(274);function i(e,t){let{generateColorPalettes:n,generateNeutralColorPalettes:i}=t;const{colorSuccess:o,colorWarning:a,colorError:s,colorInfo:c,colorPrimary:u,colorBgBase:l,colorTextBase:f}=e,d=n(u),h=n(o),v=n(a),p=n(s),g=n(c),m=i(l,f),y=n(e.colorLink||e.colorInfo);return Object.assign(Object.assign({},m),{colorPrimaryBg:d[1],colorPrimaryBgHover:d[2],colorPrimaryBorder:d[3],colorPrimaryBorderHover:d[4],colorPrimaryHover:d[5],colorPrimary:d[6],colorPrimaryActive:d[7],colorPrimaryTextHover:d[8],colorPrimaryText:d[9],colorPrimaryTextActive:d[10],colorSuccessBg:h[1],colorSuccessBgHover:h[2],colorSuccessBorder:h[3],colorSuccessBorderHover:h[4],colorSuccessHover:h[4],colorSuccess:h[6],colorSuccessActive:h[7],colorSuccessTextHover:h[8],colorSuccessText:h[9],colorSuccessTextActive:h[10],colorErrorBg:p[1],colorErrorBgHover:p[2],colorErrorBorder:p[3],colorErrorBorderHover:p[4],colorErrorHover:p[5],colorError:p[6],colorErrorActive:p[7],colorErrorTextHover:p[8],colorErrorText:p[9],colorErrorTextActive:p[10],colorWarningBg:v[1],colorWarningBgHover:v[2],colorWarningBorder:v[3],colorWarningBorderHover:v[4],colorWarningHover:v[4],colorWarning:v[6],colorWarningActive:v[7],colorWarningTextHover:v[8],colorWarningText:v[9],colorWarningTextActive:v[10],colorInfoBg:g[1],colorInfoBgHover:g[2],colorInfoBorder:g[3],colorInfoBorderHover:g[4],colorInfoHover:g[4],colorInfo:g[6],colorInfoActive:g[7],colorInfoTextHover:g[8],colorInfoText:g[9],colorInfoTextActive:g[10],colorLinkHover:y[4],colorLink:y[6],colorLinkActive:y[7],colorBgMask:new r.C("#000").setAlpha(.45).toRgbString(),colorWhite:"#fff"})}},372:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r=e=>{const{controlHeight:t}=e;return{controlHeightSM:.75*t,controlHeightXS:.5*t,controlHeightLG:1.25*t}}},8378:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r=e=>{const t=function(e){const t=new Array(10).fill(null).map(((t,n)=>{const r=n-1,i=e*Math.pow(2.71828,r/5),o=n>1?Math.floor(i):Math.ceil(i);return 2*Math.floor(o/2)}));return t[1]=e,t.map((e=>({size:e,lineHeight:(e+8)/e})))}(e),n=t.map((e=>e.size)),r=t.map((e=>e.lineHeight)),i=n[1],o=n[0],a=n[2],s=r[1],c=r[0],u=r[2];return{fontSizeSM:o,fontSize:i,fontSizeLG:a,fontSizeXL:n[3],fontSizeHeading1:n[6],fontSizeHeading2:n[5],fontSizeHeading3:n[4],fontSizeHeading4:n[3],fontSizeHeading5:n[2],lineHeight:s,lineHeightLG:u,lineHeightSM:c,fontHeight:Math.round(s*i),fontHeightLG:Math.round(u*a),fontHeightSM:Math.round(c*o),lineHeightHeading1:r[6],lineHeightHeading2:r[5],lineHeightHeading3:r[4],lineHeightHeading4:r[3],lineHeightHeading5:r[2]}}},5976:(e,t,n)=>{"use strict";n.d(t,{ZP:()=>v,ID:()=>f,NJ:()=>l});var r=n(7294),i=n(5980);const o="5.12.2";var a=n(3083),s=n(2790),c=n(1393),u=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(e);i{const r=n.getDerivativeToken(e),{override:i}=t,o=u(t,["override"]);let a=Object.assign(Object.assign({},r),{override:i});return a=(0,c.Z)(a),o&&Object.entries(o).forEach((e=>{let[t,n]=e;const{theme:r}=n,i=u(n,["theme"]);let o=i;r&&(o=h(Object.assign(Object.assign({},a),i),{override:i},r)),a[t]=o})),a};function v(){const{token:e,hashed:t,theme:n,override:u,cssVar:v}=r.useContext(a.Mj),p=`${o}-${t||""}`,g=n||a.uH,[m,y,b]=(0,i.fp)(g,[s.Z,e],{salt:p,override:u,getComputedToken:h,formatToken:c.Z,cssVar:v&&{prefix:v.prefix,key:v.key,unitless:l,ignore:f,preserve:d}});return[g,b,t?y:"",m,v]}},1393:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});var r=n(274),i=n(2790);function o(e){return e>=0&&e<=255}const a=function(e,t){const{r:n,g:i,b:a,a:s}=new r.C(e).toRgb();if(s<1)return e;const{r:c,g:u,b:l}=new r.C(t).toRgb();for(let f=.01;f<=1;f+=.01){const e=Math.round((n-c*(1-f))/f),t=Math.round((i-u*(1-f))/f),s=Math.round((a-l*(1-f))/f);if(o(e)&&o(t)&&o(s))return new r.C({r:e,g:t,b:s,a:Math.round(100*f)/100}).toRgbString()}return new r.C({r:n,g:i,b:a,a:1}).toRgbString()};var s=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(e);i{delete o[e]}));const c=Object.assign(Object.assign({},n),o),u=1200,l=1600;if(!1===c.motion){const e="0s";c.motionDurationFast=e,c.motionDurationMid=e,c.motionDurationSlow=e}return Object.assign(Object.assign(Object.assign({},c),{colorFillContent:c.colorFillSecondary,colorFillContentHover:c.colorFill,colorFillAlter:c.colorFillQuaternary,colorBgContainerDisabled:c.colorFillTertiary,colorBorderBg:c.colorBgContainer,colorSplit:a(c.colorBorderSecondary,c.colorBgContainer),colorTextPlaceholder:c.colorTextQuaternary,colorTextDisabled:c.colorTextQuaternary,colorTextHeading:c.colorText,colorTextLabel:c.colorTextSecondary,colorTextDescription:c.colorTextTertiary,colorTextLightSolid:c.colorWhite,colorHighlight:c.colorError,colorBgTextHover:c.colorFillSecondary,colorBgTextActive:c.colorFill,colorIcon:c.colorTextTertiary,colorIconHover:c.colorText,colorErrorOutline:a(c.colorErrorBg,c.colorBgContainer),colorWarningOutline:a(c.colorWarningBg,c.colorBgContainer),fontSizeIcon:c.fontSizeSM,lineWidthFocus:4*c.lineWidth,lineWidth:c.lineWidth,controlOutlineWidth:2*c.lineWidth,controlInteractiveSize:c.controlHeight/2,controlItemBgHover:c.colorFillTertiary,controlItemBgActive:c.colorPrimaryBg,controlItemBgActiveHover:c.colorPrimaryBgHover,controlItemBgActiveDisabled:c.colorFill,controlTmpOutline:c.colorFillQuaternary,controlOutline:a(c.colorPrimaryBg,c.colorBgContainer),lineType:c.lineType,borderRadius:c.borderRadius,borderRadiusXS:c.borderRadiusXS,borderRadiusSM:c.borderRadiusSM,borderRadiusLG:c.borderRadiusLG,fontWeightStrong:600,opacityLoading:.65,linkDecoration:"none",linkHoverDecoration:"none",linkFocusDecoration:"none",controlPaddingHorizontal:12,controlPaddingHorizontalSM:8,paddingXXS:c.sizeXXS,paddingXS:c.sizeXS,paddingSM:c.sizeSM,padding:c.size,paddingMD:c.sizeMD,paddingLG:c.sizeLG,paddingXL:c.sizeXL,paddingContentHorizontalLG:c.sizeLG,paddingContentVerticalLG:c.sizeMS,paddingContentHorizontal:c.sizeMS,paddingContentVertical:c.sizeSM,paddingContentHorizontalSM:c.size,paddingContentVerticalSM:c.sizeXS,marginXXS:c.sizeXXS,marginXS:c.sizeXS,marginSM:c.sizeSM,margin:c.size,marginMD:c.sizeMD,marginLG:c.sizeLG,marginXL:c.sizeXL,marginXXL:c.sizeXXL,boxShadow:"\n 0 6px 16px 0 rgba(0, 0, 0, 0.08),\n 0 3px 6px -4px rgba(0, 0, 0, 0.12),\n 0 9px 28px 8px rgba(0, 0, 0, 0.05)\n ",boxShadowSecondary:"\n 0 6px 16px 0 rgba(0, 0, 0, 0.08),\n 0 3px 6px -4px rgba(0, 0, 0, 0.12),\n 0 9px 28px 8px rgba(0, 0, 0, 0.05)\n ",boxShadowTertiary:"\n 0 1px 2px 0 rgba(0, 0, 0, 0.03),\n 0 1px 6px -1px rgba(0, 0, 0, 0.02),\n 0 2px 4px 0 rgba(0, 0, 0, 0.02)\n ",screenXS:480,screenXSMin:480,screenXSMax:575,screenSM:576,screenSMMin:576,screenSMMax:767,screenMD:768,screenMDMin:768,screenMDMax:991,screenLG:992,screenLGMin:992,screenLGMax:1199,screenXL:u,screenXLMin:u,screenXLMax:1599,screenXXL:l,screenXXLMin:l,boxShadowPopoverArrow:"2px 2px 5px rgba(0, 0, 0, 0.05)",boxShadowCard:`\n 0 1px 2px -2px ${new r.C("rgba(0, 0, 0, 0.16)").toRgbString()},\n 0 3px 6px 0 ${new r.C("rgba(0, 0, 0, 0.12)").toRgbString()},\n 0 5px 12px 4px ${new r.C("rgba(0, 0, 0, 0.09)").toRgbString()}\n `,boxShadowDrawerRight:"\n -6px 0 16px 0 rgba(0, 0, 0, 0.08),\n -3px 0 6px -4px rgba(0, 0, 0, 0.12),\n -9px 0 28px 8px rgba(0, 0, 0, 0.05)\n ",boxShadowDrawerLeft:"\n 6px 0 16px 0 rgba(0, 0, 0, 0.08),\n 3px 0 6px -4px rgba(0, 0, 0, 0.12),\n 9px 0 28px 8px rgba(0, 0, 0, 0.05)\n ",boxShadowDrawerUp:"\n 0 6px 16px 0 rgba(0, 0, 0, 0.08),\n 0 3px 6px -4px rgba(0, 0, 0, 0.12),\n 0 9px 28px 8px rgba(0, 0, 0, 0.05)\n ",boxShadowDrawerDown:"\n 0 -6px 16px 0 rgba(0, 0, 0, 0.08),\n 0 -3px 6px -4px rgba(0, 0, 0, 0.12),\n 0 -9px 28px 8px rgba(0, 0, 0, 0.05)\n ",boxShadowTabsOverflowLeft:"inset 10px 0 8px -8px rgba(0, 0, 0, 0.08)",boxShadowTabsOverflowRight:"inset -10px 0 8px -8px rgba(0, 0, 0, 0.08)",boxShadowTabsOverflowTop:"inset 0 10px 8px -8px rgba(0, 0, 0, 0.08)",boxShadowTabsOverflowBottom:"inset 0 -10px 8px -8px rgba(0, 0, 0, 0.08)"}),o)}},1945:(e,t,n)=>{"use strict";n.d(t,{ZP:()=>k,I$:()=>E});var r=n(7294),i=n(5980),o=n(4184),a=n.n(o),s=(n(6790),n(3124)),c=n(4747),u=n(5976),l=n(5671),f=n(3144),d=n(136),h=n(3568);const v=(0,f.Z)((function e(){(0,l.Z)(this,e)}));let p=function(e){(0,d.Z)(n,e);var t=(0,h.Z)(n);function n(e){var r;return(0,l.Z)(this,n),(r=t.call(this)).result=0,e instanceof n?r.result=e.result:"number"==typeof e&&(r.result=e),r}return(0,f.Z)(n,[{key:"add",value:function(e){return e instanceof n?this.result+=e.result:"number"==typeof e&&(this.result+=e),this}},{key:"sub",value:function(e){return e instanceof n?this.result-=e.result:"number"==typeof e&&(this.result-=e),this}},{key:"mul",value:function(e){return e instanceof n?this.result*=e.result:"number"==typeof e&&(this.result*=e),this}},{key:"div",value:function(e){return e instanceof n?this.result/=e.result:"number"==typeof e&&(this.result/=e),this}},{key:"equal",value:function(){return this.result}}]),n}(v);const g="CALC_UNIT";function m(e){return"number"==typeof e?`${e}${g}`:e}let y=function(e){(0,d.Z)(n,e);var t=(0,h.Z)(n);function n(e){var r;return(0,l.Z)(this,n),(r=t.call(this)).result="",e instanceof n?r.result=`(${e.result})`:"number"==typeof e?r.result=m(e):"string"==typeof e&&(r.result=e),r}return(0,f.Z)(n,[{key:"add",value:function(e){return e instanceof n?this.result=`${this.result} + ${e.getResult()}`:"number"!=typeof e&&"string"!=typeof e||(this.result=`${this.result} + ${m(e)}`),this.lowPriority=!0,this}},{key:"sub",value:function(e){return e instanceof n?this.result=`${this.result} - ${e.getResult()}`:"number"!=typeof e&&"string"!=typeof e||(this.result=`${this.result} - ${m(e)}`),this.lowPriority=!0,this}},{key:"mul",value:function(e){return this.lowPriority&&(this.result=`(${this.result})`),e instanceof n?this.result=`${this.result} * ${e.getResult(!0)}`:"number"!=typeof e&&"string"!=typeof e||(this.result=`${this.result} * ${e}`),this.lowPriority=!1,this}},{key:"div",value:function(e){return this.lowPriority&&(this.result=`(${this.result})`),e instanceof n?this.result=`${this.result} / ${e.getResult(!0)}`:"number"!=typeof e&&"string"!=typeof e||(this.result=`${this.result} / ${e}`),this.lowPriority=!1,this}},{key:"getResult",value:function(e){return this.lowPriority||e?`(${this.result})`:this.result}},{key:"equal",value:function(e){const{unit:t=!0}=e||{},n=new RegExp(`${g}`,"g");return this.result=this.result.replace(n,t?"px":""),void 0!==this.lowPriority?`calc(${this.result})`:this.result}}]),n}(v);const b=e=>{const t="css"===e?y:p;return e=>new t(e)};var _=n(5503),w=n(3269);const x=(e,t,n)=>{var r;return"function"==typeof n?n((0,_.TS)(t,null!==(r=t[e])&&void 0!==r?r:{})):null!=n?n:{}},S=(e,t,n,r)=>{const i=Object.assign({},t[e]);if(null==r?void 0:r.deprecatedTokens){const{deprecatedTokens:e}=r;e.forEach((e=>{let[t,n]=e;var r;((null==i?void 0:i[t])||(null==i?void 0:i[n]))&&(null!==(r=i[n])&&void 0!==r||(i[n]=null==i?void 0:i[t]))}))}let o=Object.assign(Object.assign({},n),i);return(null==r?void 0:r.format)&&(o=r.format(o)),Object.keys(o).forEach((e=>{o[e]===t[e]&&delete o[e]})),o},O=(e,t)=>`${[t,e.replace(/([A-Z]+)([A-Z][a-z]+)/g,"$1-$2").replace(/([a-z])([A-Z])/g,"$1-$2")].filter(Boolean).join("-")}`;function k(e,t,n){let o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};const l=Array.isArray(e)?e:[e,e],[f]=l,d=l.join("-");return e=>{const[l,h,v,p,g]=(0,u.ZP)(),{getPrefixCls:m,iconPrefixCls:y,csp:k}=(0,r.useContext)(s.E_),E=m(),Z=g?"css":"js",C=b(Z),{max:A,min:P}=function(e){return"js"===e?{max:Math.max,min:Math.min}:{max:function(){for(var e=arguments.length,t=new Array(e),n=0;n(0,i.bf)(e))).join(",")})`},min:function(){for(var e=arguments.length,t=new Array(e),n=0;n(0,i.bf)(e))).join(",")})`}}}(Z),j={theme:l,token:p,hashId:v,nonce:()=>null==k?void 0:k.nonce,clientOnly:o.clientOnly,order:o.order||-999};(0,i.xy)(Object.assign(Object.assign({},j),{clientOnly:!1,path:["Shared",E]}),(()=>[{"&":(0,c.Lx)(p)}])),(0,w.Z)(y,k);return[(0,i.xy)(Object.assign(Object.assign({},j),{path:[d,e,y]}),(()=>{if(!1===o.injectStyle)return[];const{token:r,flush:a}=(0,_.ZP)(p),s=x(f,h,n),u=`.${e}`,l=S(f,h,s,{deprecatedTokens:o.deprecatedTokens,format:o.format});g&&Object.keys(s).forEach((e=>{s[e]=`var(${(0,i.ks)(e,O(f,g.prefix))})`}));const d=(0,_.TS)(r,{componentCls:u,prefixCls:e,iconCls:`.${y}`,antCls:`.${E}`,calc:C,max:A,min:P},g?s:l),m=t(d,{hashId:v,prefixCls:e,rootPrefixCls:E,iconPrefixCls:y});return a(f,l),[!1===o.resetStyle?null:(0,c.du)(d,e),m]})),a()(v,null==g?void 0:g.key)]}}const E=(e,t,n,o)=>{const a=k(e,t,n,o),s=((e,t,n)=>{function o(t){return`${e}${t.slice(0,1).toUpperCase()}${t.slice(1)}`}const{unitless:a={},injectStyle:s=!0}=null!=n?n:{},c={[o("zIndexPopup")]:!0};Object.keys(a).forEach((e=>{c[o(e)]=a[e]}));const l=r=>{let{rootCls:a,cssVar:s}=r;const[,l]=(0,u.ZP)();return(0,i.CI)({path:[e],prefix:s.prefix,key:null==s?void 0:s.key,unitless:Object.assign(Object.assign({},u.NJ),c),ignore:u.ID,token:l,scope:a},(()=>{const r=x(e,l,t),i=S(e,l,r,{format:null==n?void 0:n.format,deprecatedTokens:null==n?void 0:n.deprecatedTokens});return Object.keys(r).forEach((e=>{i[o(e)]=i[e],delete i[e]})),i})),null};return t=>{const[,,,,n]=(0,u.ZP)();return i=>s&&n?r.createElement(r.Fragment,null,r.createElement(l,{rootCls:t,cssVar:n,component:e}),i):i}})(e,n,o);return function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e;const[,n]=a(e);return[s(t),n]}}},5503:(e,t,n)=>{"use strict";n.d(t,{TS:()=>o,ZP:()=>c});const r="undefined"!=typeof CSSINJS_STATISTIC;let i=!0;function o(){for(var e=arguments.length,t=new Array(e),n=0;n{Object.keys(e).forEach((t=>{Object.defineProperty(o,t,{configurable:!0,enumerable:!0,get:()=>e[t]})}))})),i=!0,o}const a={};function s(){}function c(e){let t,n=e,o=s;return r&&"undefined"!=typeof Proxy&&(t=new Set,n=new Proxy(e,{get:(e,n)=>(i&&t.add(n),e[n])}),o=(e,n)=>{var r;a[e]={global:Array.from(t),component:Object.assign(Object.assign({},null===(r=a[e])||void 0===r?void 0:r.component),n)}}),{token:n,keys:t,flush:o}}},3269:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});var r=n(5980),i=n(4747),o=n(5976);const a=(e,t)=>{const[n,a]=(0,o.ZP)();return(0,r.xy)({theme:n,token:a,hashId:"",path:["ant-design-icons",e],nonce:()=>null==t?void 0:t.nonce},(()=>[{[`.${e}`]:Object.assign(Object.assign({},(0,i.Ro)()),{[`.${e} .${e}-icon`]:{display:"block"}})}]))}},4184:(e,t)=>{var n;!function(){"use strict";var r={}.hasOwnProperty;function i(){for(var e=[],t=0;t{"use strict";n.d(t,{Qj:()=>m});var r=n(8949),i=n(7294);if(!i.useState)throw new Error("mobx-react-lite requires React with Hooks support");if(!r.rC)throw new Error("mobx-react-lite@3 requires mobx at least version 6 to be available");var o=n(3935);function a(e){e()}function s(e){return(0,r.Gf)(e)}var c=function(){function e(e){var t=this;Object.defineProperty(this,"finalize",{enumerable:!0,configurable:!0,writable:!0,value:e}),Object.defineProperty(this,"registrations",{enumerable:!0,configurable:!0,writable:!0,value:new Map}),Object.defineProperty(this,"sweepTimeout",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"sweep",{enumerable:!0,configurable:!0,writable:!0,value:function(e){void 0===e&&(e=1e4),clearTimeout(t.sweepTimeout),t.sweepTimeout=void 0;var n=Date.now();t.registrations.forEach((function(r,i){n-r.registeredAt>=e&&(t.finalize(r.value),t.registrations.delete(i))})),t.registrations.size>0&&t.scheduleSweep()}}),Object.defineProperty(this,"finalizeAllImmediately",{enumerable:!0,configurable:!0,writable:!0,value:function(){t.sweep(0)}})}return Object.defineProperty(e.prototype,"register",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t,n){this.registrations.set(n,{value:t,registeredAt:Date.now()}),this.scheduleSweep()}}),Object.defineProperty(e.prototype,"unregister",{enumerable:!1,configurable:!0,writable:!0,value:function(e){this.registrations.delete(e)}}),Object.defineProperty(e.prototype,"scheduleSweep",{enumerable:!1,configurable:!0,writable:!0,value:function(){void 0===this.sweepTimeout&&(this.sweepTimeout=setTimeout(this.sweep,1e4))}}),e}(),u=new("undefined"!=typeof FinalizationRegistry?FinalizationRegistry:c)((function(e){var t;null===(t=e.reaction)||void 0===t||t.dispose(),e.reaction=null})),l=!1;var f=function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(s){i={error:s}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a};function d(e){return"observer".concat(e)}var h=function(){};function v(){return new h}function p(e,t){if(void 0===t&&(t="observed"),l)return e();var n=f(i.useState(v),1)[0],o=f(i.useState(),2)[1],a=function(){return o([])},c=i.useRef(null);c.current||(c.current={reaction:null,mounted:!1,changedBeforeMount:!1});var h,p,g=c.current;if(g.reaction||(g.reaction=new r.le(d(t),(function(){g.mounted?a():g.changedBeforeMount=!0})),u.register(n,g,g)),i.useDebugValue(g.reaction,s),i.useEffect((function(){return u.unregister(g),g.mounted=!0,g.reaction?g.changedBeforeMount&&(g.changedBeforeMount=!1,a()):(g.reaction=new r.le(d(t),(function(){a()})),a()),function(){g.reaction.dispose(),g.reaction=null,g.mounted=!1,g.changedBeforeMount=!1}}),[]),g.reaction.track((function(){try{h=e()}catch(t){p=t}})),p)throw p;return h}var g="function"==typeof Symbol&&Symbol.for;g?Symbol.for("react.forward_ref"):"function"==typeof i.forwardRef&&(0,i.forwardRef)((function(e){return null})).$$typeof,g?Symbol.for("react.memo"):"function"==typeof i.memo&&(0,i.memo)((function(e){return null})).$$typeof;function m(e){var t=e.children,n=e.render,r=t||n;return"function"!=typeof r?null:p(r)}m.displayName="Observer";var y,b;(b=o.unstable_batchedUpdates)||(b=a),(0,r.jQ)({reactionScheduler:b});y=u.finalizeAllImmediately},8949:(e,t,n)=>{"use strict";n.d(t,{Fl:()=>$e,Gf:()=>Yt,LO:()=>Me,aD:()=>Nt,jQ:()=>Xt,le:()=>xt,rC:()=>yn});function r(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;re.length)&&(t=e.length);for(var n=0,r=new Array(t);n=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var V=Symbol("mobx-stored-annotations");function D(e){return Object.assign((function(t,n){if(B(n))return e.decorate_20223_(t,n);H(t,n,e)}),e)}function H(e,t,n){P(e,V)||x(e,V,T({},e[V])),function(e){return e.annotationType_===Y}(n)||(e[V][t]=n)}function B(e){return"object"==typeof e&&"string"==typeof e.kind}var z=Symbol("mobx administration"),q=function(){function e(e){void 0===e&&(e="Atom"),this.name_=void 0,this.isPendingUnobservation_=!1,this.isBeingObserved_=!1,this.observers_=new Set,this.diffValue_=0,this.lastAccessedBy_=0,this.lowestObserverState_=Xe.NOT_TRACKING_,this.onBOL=void 0,this.onBUOL=void 0,this.name_=e}var t=e.prototype;return t.onBO=function(){this.onBOL&&this.onBOL.forEach((function(e){return e()}))},t.onBUO=function(){this.onBUOL&&this.onBUOL.forEach((function(e){return e()}))},t.reportObserved=function(){return _t(this)},t.reportChanged=function(){yt(),wt(this),bt()},t.toString=function(){return this.name_},e}(),U=O("Atom",q);function W(e,t,n){void 0===t&&(t=g),void 0===n&&(n=g);var r,i=new q(e);return t!==g&&qt(Ht,i,t,r),n!==g&&zt(i,n),i}var G={identity:function(e,t){return e===t},structural:function(e,t){return vr(e,t)},default:function(e,t){return Object.is?Object.is(e,t):e===t?0!==e||1/e==1/t:e!=e&&t!=t},shallow:function(e,t){return vr(e,t,1)}};function X(e,t,n){return cn(e)?e:Array.isArray(e)?Me.array(e,{name:n}):_(e)?Me.object(e,void 0,{name:n}):k(e)?Me.map(e,{name:n}):E(e)?Me.set(e,{name:n}):"function"!=typeof e||It(e)||an(e)?e:w(e)?rn(e):$t(n,e)}function K(e){return e}var Y="override";function Q(e,t){return{annotationType_:e,options_:t,make_:J,extend_:ee,decorate_20223_:te}}function J(e,t,n,r){var i;if(null!=(i=this.options_)&&i.bound)return null===this.extend_(e,t,n,!1)?0:1;if(r===e.target_)return null===this.extend_(e,t,n,!1)?0:2;if(It(n.value))return 1;var o=ne(e,this,t,n,!1);return c(r,t,o),2}function ee(e,t,n,r){var i=ne(e,this,t,n);return e.defineProperty_(t,i,r)}function te(e,t){var n=t.kind,i=t.name,o=t.addInitializer,a=this;if("field"!=n){var s,c,u,l,f,d;if("method"==n)return It(e)||(c=e,e=Be(null!=(u=null==(l=a.options_)?void 0:l.name)?u:i.toString(),c,null!=(f=null==(d=a.options_)?void 0:d.autoAction)&&f)),null!=(s=this.options_)&&s.bound&&o((function(){var e=this,t=e[i].bind(e);t.isMobxAction=!0,e[i]=t})),e;r("Cannot apply '"+a.annotationType_+"' to '"+String(i)+"' (kind: "+n+"):\n'"+a.annotationType_+"' can only be used on properties with a function value.")}else o((function(){H(this,i,a)}))}function ne(e,t,n,r,i){var o,a,s,c,u,l,f,d;void 0===i&&(i=vt.safeDescriptors),d=r,t.annotationType_,d.value;var h,v=r.value;null!=(o=t.options_)&&o.bound&&(v=v.bind(null!=(h=e.proxy_)?h:e.target_));return{value:Be(null!=(a=null==(s=t.options_)?void 0:s.name)?a:n.toString(),v,null!=(c=null==(u=t.options_)?void 0:u.autoAction)&&c,null!=(l=t.options_)&&l.bound?null!=(f=e.proxy_)?f:e.target_:void 0),configurable:!i||e.isPlainObject_,enumerable:!1,writable:!i}}function re(e,t){return{annotationType_:e,options_:t,make_:ie,extend_:oe,decorate_20223_:ae}}function ie(e,t,n,r){var i;if(r===e.target_)return null===this.extend_(e,t,n,!1)?0:2;if(null!=(i=this.options_)&&i.bound&&(!P(e.target_,t)||!an(e.target_[t]))&&null===this.extend_(e,t,n,!1))return 0;if(an(n.value))return 1;var o=se(e,this,t,n,!1,!1);return c(r,t,o),2}function oe(e,t,n,r){var i,o=se(e,this,t,n,null==(i=this.options_)?void 0:i.bound);return e.defineProperty_(t,o,r)}function ae(e,t){var n;var r=t.name,i=t.addInitializer;return an(e)||(e=rn(e)),null!=(n=this.options_)&&n.bound&&i((function(){var e=this,t=e[r].bind(e);t.isMobXFlow=!0,e[r]=t})),e}function se(e,t,n,r,i,o){var a;void 0===o&&(o=vt.safeDescriptors),a=r,t.annotationType_,a.value;var s,c=r.value;(an(c)||(c=rn(c)),i)&&((c=c.bind(null!=(s=e.proxy_)?s:e.target_)).isMobXFlow=!0);return{value:c,configurable:!o||e.isPlainObject_,enumerable:!1,writable:!o}}function ce(e,t){return{annotationType_:e,options_:t,make_:ue,extend_:le,decorate_20223_:fe}}function ue(e,t,n){return null===this.extend_(e,t,n,!1)?0:1}function le(e,t,n,r){return function(e,t,n,r){t.annotationType_,r.get;0}(0,this,0,n),e.defineComputedProperty_(t,T({},this.options_,{get:n.get,set:n.set}),r)}function fe(e,t){var n=this,r=t.name;return(0,t.addInitializer)((function(){var t=Un(this)[z],i=T({},n.options_,{get:e,context:this});i.name||(i.name="ObservableObject."+r.toString()),t.values_.set(r,new Ye(i))})),function(){return this[z].getObservablePropValue_(r)}}function de(e,t){return{annotationType_:e,options_:t,make_:he,extend_:ve,decorate_20223_:pe}}function he(e,t,n){return null===this.extend_(e,t,n,!1)?0:1}function ve(e,t,n,r){var i,o;return function(e,t,n,r){t.annotationType_;0}(0,this),e.defineObservableProperty_(t,n.value,null!=(i=null==(o=this.options_)?void 0:o.enhancer)?i:X,r)}function pe(e,t){var n=this,r=t.kind,i=t.name,o=new WeakSet;function a(e,t){var r,a,s=Un(e)[z],c=new Ge(t,null!=(r=null==(a=n.options_)?void 0:a.enhancer)?r:X,"ObservableObject."+i.toString(),!1);s.values_.set(i,c),o.add(e)}if("accessor"==r)return{get:function(){return o.has(this)||a(this,e.get.call(this)),this[z].getObservablePropValue_(i)},set:function(e){return o.has(this)||a(this,e),this[z].setObservablePropValue_(i,e)},init:function(e){return o.has(this)||a(this,e),e}}}var ge="true",me=ye();function ye(e){return{annotationType_:ge,options_:e,make_:be,extend_:_e,decorate_20223_:we}}function be(e,t,n,r){var i,o,a,s;if(n.get)return $e.make_(e,t,n,r);if(n.set){var u=Be(t.toString(),n.set);return r===e.target_?null===e.defineProperty_(t,{configurable:!vt.safeDescriptors||e.isPlainObject_,set:u})?0:2:(c(r,t,{configurable:!0,set:u}),2)}if(r!==e.target_&&"function"==typeof n.value)return w(n.value)?(null!=(s=this.options_)&&s.autoBind?rn.bound:rn).make_(e,t,n,r):(null!=(a=this.options_)&&a.autoBind?$t.bound:$t).make_(e,t,n,r);var l,f=!1===(null==(i=this.options_)?void 0:i.deep)?Me.ref:Me;"function"==typeof n.value&&null!=(o=this.options_)&&o.autoBind&&(n.value=n.value.bind(null!=(l=e.proxy_)?l:e.target_));return f.make_(e,t,n,r)}function _e(e,t,n,r){var i,o,a;if(n.get)return $e.extend_(e,t,n,r);if(n.set)return e.defineProperty_(t,{configurable:!vt.safeDescriptors||e.isPlainObject_,set:Be(t.toString(),n.set)},r);"function"==typeof n.value&&null!=(i=this.options_)&&i.autoBind&&(n.value=n.value.bind(null!=(a=e.proxy_)?a:e.target_));return(!1===(null==(o=this.options_)?void 0:o.deep)?Me.ref:Me).extend_(e,t,n,r)}function we(e,t){r("'"+this.annotationType_+"' cannot be used as a decorator")}var xe={deep:!0,name:void 0,defaultDecorator:void 0,proxy:!0};function Se(e){return e||xe}Object.freeze(xe);var Oe=de("observable"),ke=de("observable.ref",{enhancer:K}),Ee=de("observable.shallow",{enhancer:function(e,t,n){return null==e||Xn(e)||Fn(e)||Ln(e)||Hn(e)?e:Array.isArray(e)?Me.array(e,{name:n,deep:!1}):_(e)?Me.object(e,void 0,{name:n,deep:!1}):k(e)?Me.map(e,{name:n,deep:!1}):E(e)?Me.set(e,{name:n,deep:!1}):void 0}}),Ze=de("observable.struct",{enhancer:function(e,t){return vr(e,t)?t:e}}),Ce=D(Oe);function Ae(e){return!0===e.deep?X:!1===e.deep?K:(t=e.defaultDecorator)&&null!=(n=null==(r=t.options_)?void 0:r.enhancer)?n:X;var t,n,r}function Pe(e,t,n){return B(t)?Oe.decorate_20223_(e,t):y(t)?void H(e,t,Oe):cn(e)?e:_(e)?Me.object(e,t,n):Array.isArray(e)?Me.array(e,t):k(e)?Me.map(e,t):E(e)?Me.set(e,t):"object"==typeof e&&null!==e?e:Me.box(e,t)}a(Pe,Ce);var je,Fe,Me=a(Pe,{box:function(e,t){var n=Se(t);return new Ge(e,Ae(n),n.name,!0,n.equals)},array:function(e,t){var n=Se(t);return(!1===vt.useProxies||!1===n.proxy?cr:Sn)(e,Ae(n),n.name)},map:function(e,t){var n=Se(t);return new In(e,Ae(n),n.name)},set:function(e,t){var n=Se(t);return new Dn(e,Ae(n),n.name)},object:function(e,t,n){return dr((function(){return Kt(!1===vt.useProxies||!1===(null==n?void 0:n.proxy)?Un({},n):function(e,t){var n,r;return v(),e=Un(e,t),null!=(r=(n=e[z]).proxy_)?r:n.proxy_=new Proxy(e,fn)}({},n),e,t)}))},ref:D(ke),shallow:D(Ee),deep:Ce,struct:D(Ze)}),Te="computed",Re=ce(Te),Ne=ce("computed.struct",{equals:G.structural}),$e=function(e,t){if(B(t))return Re.decorate_20223_(e,t);if(y(t))return H(e,t,Re);if(_(e))return D(ce(Te,e));var n=_(t)?t:{};return n.get=e,n.name||(n.name=e.name||""),new Ye(n)};Object.assign($e,Re),$e.struct=D(Ne);var Ie,Le=0,Ve=1,De=null!=(je=null==(Fe=s((function(){}),"name"))?void 0:Fe.configurable)&&je,He={value:"action",configurable:!0,writable:!1,enumerable:!1};function Be(e,t,n,r){function i(){return ze(e,n,t,r||this,arguments)}return void 0===n&&(n=!1),i.isMobxAction=!0,i.toString=function(){return t.toString()},De&&(He.value=e,c(i,"name",He)),i}function ze(e,t,n,i,o){var a=function(e,t,n,r){var i=!1,o=0;0;var a=vt.trackingDerivation,s=!t||!a;yt();var c=vt.allowStateChanges;s&&(at(),c=qe(!0));var u=ct(!0),l={runAsAction_:s,prevDerivation_:a,prevAllowStateChanges_:c,prevAllowStateReads_:u,notifySpy_:i,startTime_:o,actionId_:Ve++,parentActionId_:Le};return Le=l.actionId_,l}(0,t);try{return n.apply(i,o)}catch(s){throw a.error_=s,s}finally{!function(e){Le!==e.actionId_&&r(30);Le=e.parentActionId_,void 0!==e.error_&&(vt.suppressReactionErrors=!0);Ue(e.prevAllowStateChanges_),ut(e.prevAllowStateReads_),bt(),e.runAsAction_&&st(e.prevDerivation_);0;vt.suppressReactionErrors=!1}(a)}}function qe(e){var t=vt.allowStateChanges;return vt.allowStateChanges=e,t}function Ue(e){vt.allowStateChanges=e}Ie=Symbol.toPrimitive;var We,Ge=function(e){function t(t,n,r,i,o){var a;return void 0===r&&(r="ObservableValue"),void 0===i&&(i=!0),void 0===o&&(o=G.default),(a=e.call(this,r)||this).enhancer=void 0,a.name_=void 0,a.equals=void 0,a.hasUnreportedChange_=!1,a.interceptors_=void 0,a.changeListeners_=void 0,a.value_=void 0,a.dehancer=void 0,a.enhancer=n,a.name_=r,a.equals=o,a.value_=n(t,void 0,r),a}R(t,e);var n=t.prototype;return n.dehanceValue=function(e){return void 0!==this.dehancer?this.dehancer(e):e},n.set=function(e){this.value_;if((e=this.prepareNewValue_(e))!==vt.UNCHANGED){0,this.setNewValue_(e)}},n.prepareNewValue_=function(e){if(nt(this),dn(this)){var t=vn(this,{object:this,type:_n,newValue:e});if(!t)return vt.UNCHANGED;e=t.newValue}return e=this.enhancer(e,this.value_,this.name_),this.equals(this.value_,e)?vt.UNCHANGED:e},n.setNewValue_=function(e){var t=this.value_;this.value_=e,this.reportChanged(),pn(this)&&mn(this,{type:_n,object:this,newValue:e,oldValue:t})},n.get=function(){return this.reportObserved(),this.dehanceValue(this.value_)},n.intercept_=function(e){return hn(this,e)},n.observe_=function(e,t){return t&&e({observableKind:"value",debugObjectName:this.name_,object:this,type:_n,newValue:this.value_,oldValue:void 0}),gn(this,e)},n.raw=function(){return this.value_},n.toJSON=function(){return this.get()},n.toString=function(){return this.name_+"["+this.value_+"]"},n.valueOf=function(){return A(this.get())},n[Ie]=function(){return this.valueOf()},t}(q);We=Symbol.toPrimitive;var Xe,Ke,Ye=function(){function e(e){this.dependenciesState_=Xe.NOT_TRACKING_,this.observing_=[],this.newObserving_=null,this.isBeingObserved_=!1,this.isPendingUnobservation_=!1,this.observers_=new Set,this.diffValue_=0,this.runId_=0,this.lastAccessedBy_=0,this.lowestObserverState_=Xe.UP_TO_DATE_,this.unboundDepsCount_=0,this.value_=new Je(null),this.name_=void 0,this.triggeredBy_=void 0,this.isComputing_=!1,this.isRunningSetter_=!1,this.derivation=void 0,this.setter_=void 0,this.isTracing_=Ke.NONE,this.scope_=void 0,this.equals_=void 0,this.requiresReaction_=void 0,this.keepAlive_=void 0,this.onBOL=void 0,this.onBUOL=void 0,e.get||r(31),this.derivation=e.get,this.name_=e.name||"ComputedValue",e.set&&(this.setter_=Be("ComputedValue-setter",e.set)),this.equals_=e.equals||(e.compareStructural||e.struct?G.structural:G.default),this.scope_=e.context,this.requiresReaction_=e.requiresReaction,this.keepAlive_=!!e.keepAlive}var t=e.prototype;return t.onBecomeStale_=function(){!function(e){if(e.lowestObserverState_!==Xe.UP_TO_DATE_)return;e.lowestObserverState_=Xe.POSSIBLY_STALE_,e.observers_.forEach((function(e){e.dependenciesState_===Xe.UP_TO_DATE_&&(e.dependenciesState_=Xe.POSSIBLY_STALE_,e.onBecomeStale_())}))}(this)},t.onBO=function(){this.onBOL&&this.onBOL.forEach((function(e){return e()}))},t.onBUO=function(){this.onBUOL&&this.onBUOL.forEach((function(e){return e()}))},t.get=function(){if(this.isComputing_&&r(32,this.name_,this.derivation),0!==vt.inBatch||0!==this.observers_.size||this.keepAlive_){if(_t(this),tt(this)){var e=vt.trackingContext;this.keepAlive_&&!e&&(vt.trackingContext=this),this.trackAndCompute()&&function(e){if(e.lowestObserverState_===Xe.STALE_)return;e.lowestObserverState_=Xe.STALE_,e.observers_.forEach((function(t){t.dependenciesState_===Xe.POSSIBLY_STALE_?t.dependenciesState_=Xe.STALE_:t.dependenciesState_===Xe.UP_TO_DATE_&&(e.lowestObserverState_=Xe.UP_TO_DATE_)}))}(this),vt.trackingContext=e}}else tt(this)&&(this.warnAboutUntrackedRead_(),yt(),this.value_=this.computeValue_(!1),bt());var t=this.value_;if(et(t))throw t.cause;return t},t.set=function(e){if(this.setter_){this.isRunningSetter_&&r(33,this.name_),this.isRunningSetter_=!0;try{this.setter_.call(this.scope_,e)}finally{this.isRunningSetter_=!1}}else r(34,this.name_)},t.trackAndCompute=function(){var e=this.value_,t=this.dependenciesState_===Xe.NOT_TRACKING_,n=this.computeValue_(!0),r=t||et(e)||et(n)||!this.equals_(e,n);return r&&(this.value_=n),r},t.computeValue_=function(e){this.isComputing_=!0;var t,n=qe(!1);if(e)t=rt(this,this.derivation,this.scope_);else if(!0===vt.disableErrorBoundaries)t=this.derivation.call(this.scope_);else try{t=this.derivation.call(this.scope_)}catch(r){t=new Je(r)}return Ue(n),this.isComputing_=!1,t},t.suspend_=function(){this.keepAlive_||(it(this),this.value_=void 0)},t.observe_=function(e,t){var n=this,r=!0,i=void 0;return Lt((function(){var o=n.get();if(!r||t){var a=at();e({observableKind:"computed",debugObjectName:n.name_,type:_n,object:n,newValue:o,oldValue:i}),st(a)}r=!1,i=o}))},t.warnAboutUntrackedRead_=function(){},t.toString=function(){return this.name_+"["+this.derivation.toString()+"]"},t.valueOf=function(){return A(this.get())},t[We]=function(){return this.valueOf()},e}(),Qe=O("ComputedValue",Ye);!function(e){e[e.NOT_TRACKING_=-1]="NOT_TRACKING_",e[e.UP_TO_DATE_=0]="UP_TO_DATE_",e[e.POSSIBLY_STALE_=1]="POSSIBLY_STALE_",e[e.STALE_=2]="STALE_"}(Xe||(Xe={})),function(e){e[e.NONE=0]="NONE",e[e.LOG=1]="LOG",e[e.BREAK=2]="BREAK"}(Ke||(Ke={}));var Je=function(e){this.cause=void 0,this.cause=e};function et(e){return e instanceof Je}function tt(e){switch(e.dependenciesState_){case Xe.UP_TO_DATE_:return!1;case Xe.NOT_TRACKING_:case Xe.STALE_:return!0;case Xe.POSSIBLY_STALE_:for(var t=ct(!0),n=at(),r=e.observing_,i=r.length,o=0;or&&(r=s.dependenciesState_)}n.length=i,e.newObserving_=null,o=t.length;for(;o--;){var c=t[o];0===c.diffValue_&>(c,e),c.diffValue_=0}for(;i--;){var u=n[i];1===u.diffValue_&&(u.diffValue_=0,pt(u,e))}r!==Xe.UP_TO_DATE_&&(e.dependenciesState_=r,e.onBecomeStale_())}(e),ut(r),i}function it(e){var t=e.observing_;e.observing_=[];for(var n=t.length;n--;)gt(t[n],e);e.dependenciesState_=Xe.NOT_TRACKING_}function ot(e){var t=at();try{return e()}finally{st(t)}}function at(){var e=vt.trackingDerivation;return vt.trackingDerivation=null,e}function st(e){vt.trackingDerivation=e}function ct(e){var t=vt.allowStateReads;return vt.allowStateReads=e,t}function ut(e){vt.allowStateReads=e}function lt(e){if(e.dependenciesState_!==Xe.UP_TO_DATE_){e.dependenciesState_=Xe.UP_TO_DATE_;for(var t=e.observing_,n=t.length;n--;)t[n].lowestObserverState_=Xe.UP_TO_DATE_}}var ft=function(){this.version=6,this.UNCHANGED={},this.trackingDerivation=null,this.trackingContext=null,this.runId=0,this.mobxGuid=0,this.inBatch=0,this.pendingUnobservations=[],this.pendingReactions=[],this.isRunningReactions=!1,this.allowStateChanges=!1,this.allowStateReads=!0,this.enforceActions=!0,this.spyListeners=[],this.globalReactionErrorHandlers=[],this.computedRequiresReaction=!1,this.reactionRequiresObservable=!1,this.observableRequiresReaction=!1,this.disableErrorBoundaries=!1,this.suppressReactionErrors=!1,this.useProxies=!0,this.verifyProxies=!1,this.safeDescriptors=!0},dt=!0,ht=!1,vt=function(){var e=o();return e.__mobxInstanceCount>0&&!e.__mobxGlobals&&(dt=!1),e.__mobxGlobals&&e.__mobxGlobals.version!==(new ft).version&&(dt=!1),dt?e.__mobxGlobals?(e.__mobxInstanceCount+=1,e.__mobxGlobals.UNCHANGED||(e.__mobxGlobals.UNCHANGED={}),e.__mobxGlobals):(e.__mobxInstanceCount=1,e.__mobxGlobals=new ft):(setTimeout((function(){ht||r(35)}),1),new ft)}();function pt(e,t){e.observers_.add(t),e.lowestObserverState_>t.dependenciesState_&&(e.lowestObserverState_=t.dependenciesState_)}function gt(e,t){e.observers_.delete(t),0===e.observers_.size&&mt(e)}function mt(e){!1===e.isPendingUnobservation_&&(e.isPendingUnobservation_=!0,vt.pendingUnobservations.push(e))}function yt(){vt.inBatch++}function bt(){if(0==--vt.inBatch){kt();for(var e=vt.pendingUnobservations,t=0;t0&&mt(e),!1)}function wt(e){e.lowestObserverState_!==Xe.STALE_&&(e.lowestObserverState_=Xe.STALE_,e.observers_.forEach((function(e){e.dependenciesState_===Xe.UP_TO_DATE_&&e.onBecomeStale_(),e.dependenciesState_=Xe.STALE_})))}var xt=function(){function e(e,t,n,r){void 0===e&&(e="Reaction"),this.name_=void 0,this.onInvalidate_=void 0,this.errorHandler_=void 0,this.requiresObservable_=void 0,this.observing_=[],this.newObserving_=[],this.dependenciesState_=Xe.NOT_TRACKING_,this.diffValue_=0,this.runId_=0,this.unboundDepsCount_=0,this.isDisposed_=!1,this.isScheduled_=!1,this.isTrackPending_=!1,this.isRunning_=!1,this.isTracing_=Ke.NONE,this.name_=e,this.onInvalidate_=t,this.errorHandler_=n,this.requiresObservable_=r}var t=e.prototype;return t.onBecomeStale_=function(){this.schedule_()},t.schedule_=function(){this.isScheduled_||(this.isScheduled_=!0,vt.pendingReactions.push(this),kt())},t.isScheduled=function(){return this.isScheduled_},t.runReaction_=function(){if(!this.isDisposed_){yt(),this.isScheduled_=!1;var e=vt.trackingContext;if(vt.trackingContext=this,tt(this)){this.isTrackPending_=!0;try{this.onInvalidate_()}catch(t){this.reportExceptionInDerivation_(t)}}vt.trackingContext=e,bt()}},t.track=function(e){if(!this.isDisposed_){yt();0,this.isRunning_=!0;var t=vt.trackingContext;vt.trackingContext=this;var n=rt(this,e,void 0);vt.trackingContext=t,this.isRunning_=!1,this.isTrackPending_=!1,this.isDisposed_&&it(this),et(n)&&this.reportExceptionInDerivation_(n.cause),bt()}},t.reportExceptionInDerivation_=function(e){var t=this;if(this.errorHandler_)this.errorHandler_(e,this);else{if(vt.disableErrorBoundaries)throw e;var n="[mobx] uncaught error in '"+this+"'";vt.suppressReactionErrors||console.error(n,e),vt.globalReactionErrorHandlers.forEach((function(n){return n(e,t)}))}},t.dispose=function(){this.isDisposed_||(this.isDisposed_=!0,this.isRunning_||(yt(),it(this),bt()))},t.getDisposer_=function(e){var t=this,n=function n(){t.dispose(),null==e||null==e.removeEventListener||e.removeEventListener("abort",n)};return null==e||null==e.addEventListener||e.addEventListener("abort",n),n[z]=this,n},t.toString=function(){return"Reaction["+this.name_+"]"},t.trace=function(e){void 0===e&&(e=!1)},e}();var St=100,Ot=function(e){return e()};function kt(){vt.inBatch>0||vt.isRunningReactions||Ot(Et)}function Et(){vt.isRunningReactions=!0;for(var e=vt.pendingReactions,t=0;e.length>0;){++t===St&&(console.error("[mobx] cycle in reaction: "+e[0]),e.splice(0));for(var n=e.splice(0),r=0,i=n.length;r0&&(n.dependencies=(t=e.observing_,Array.from(new Set(t))).map(Qt)),n}var Jt=0;function en(){this.message="FLOW_CANCELLED"}en.prototype=Object.create(Error.prototype);var tn=re("flow"),nn=re("flow.bound",{bound:!0}),rn=Object.assign((function(e,t){if(B(t))return tn.decorate_20223_(e,t);if(y(t))return H(e,t,tn);var n=e,r=n.name||"",i=function(){var e,t=arguments,i=++Jt,o=Nt(r+" - runid: "+i+" - init",n).apply(this,t),a=void 0,s=new Promise((function(t,n){var s=0;function c(e){var t;a=void 0;try{t=Nt(r+" - runid: "+i+" - yield "+s++,o.next).call(o,e)}catch(c){return n(c)}l(t)}function u(e){var t;a=void 0;try{t=Nt(r+" - runid: "+i+" - yield "+s++,o.throw).call(o,e)}catch(c){return n(c)}l(t)}function l(e){if(!m(null==e?void 0:e.then))return e.done?t(e.value):(a=Promise.resolve(e.value)).then(c,u);e.then(l,n)}e=n,c(void 0)}));return s.cancel=Nt(r+" - runid: "+i+" - cancel",(function(){try{a&&on(a);var t=o.return(void 0),n=Promise.resolve(t.value);n.then(g,g),on(n),e(new en)}catch(r){e(r)}})),s};return i.isMobXFlow=!0,i}),tn);function on(e){m(e.cancel)&&e.cancel()}function an(e){return!0===(null==e?void 0:e.isMobXFlow)}function sn(e,t){return!!e&&(void 0!==t?!!Xn(e)&&e[z].values_.has(t):Xn(e)||!!e[z]||U(e)||Zt(e)||Qe(e))}function cn(e){return sn(e)}function un(e,t){void 0===t&&(t=void 0),yt();try{return e.apply(t)}finally{bt()}}function ln(e){return e[z]}rn.bound=D(nn);var fn={has:function(e,t){return ln(e).has_(t)},get:function(e,t){return ln(e).get_(t)},set:function(e,t,n){var r;return!!y(t)&&(null==(r=ln(e).set_(t,n,!0))||r)},deleteProperty:function(e,t){var n;return!!y(t)&&(null==(n=ln(e).delete_(t,!0))||n)},defineProperty:function(e,t,n){var r;return null==(r=ln(e).defineProperty_(t,n))||r},ownKeys:function(e){return ln(e).ownKeys_()},preventExtensions:function(e){r(13)}};function dn(e){return void 0!==e.interceptors_&&e.interceptors_.length>0}function hn(e,t){var n=e.interceptors_||(e.interceptors_=[]);return n.push(t),p((function(){var e=n.indexOf(t);-1!==e&&n.splice(e,1)}))}function vn(e,t){var n=at();try{for(var i=[].concat(e.interceptors_||[]),o=0,a=i.length;o0}function gn(e,t){var n=e.changeListeners_||(e.changeListeners_=[]);return n.push(t),p((function(){var e=n.indexOf(t);-1!==e&&n.splice(e,1)}))}function mn(e,t){var n=at(),r=e.changeListeners_;if(r){for(var i=0,o=(r=r.slice()).length;i0?e.map(this.dehancer):e},t.intercept_=function(e){return hn(this,e)},t.observe_=function(e,t){return void 0===t&&(t=!1),t&&e({observableKind:"array",object:this.proxy_,debugObjectName:this.atom_.name_,type:"splice",index:0,added:this.values_.slice(),addedCount:this.values_.length,removed:[],removedCount:0}),gn(this,e)},t.getArrayLength_=function(){return this.atom_.reportObserved(),this.values_.length},t.setArrayLength_=function(e){("number"!=typeof e||isNaN(e)||e<0)&&r("Out of range: "+e);var t=this.values_.length;if(e!==t)if(e>t){for(var n=new Array(e-t),i=0;i0&&sr(e+t+1)},t.spliceWithArray_=function(e,t,n){var r=this;this.atom_;var i=this.values_.length;if(void 0===e?e=0:e>i?e=i:e<0&&(e=Math.max(0,i+e)),t=1===arguments.length?i-e:null==t?0:Math.max(0,Math.min(t,i-e)),void 0===n&&(n=l),dn(this)){var o=vn(this,{object:this.proxy_,type:bn,index:e,removedCount:t,added:n});if(!o)return l;t=o.removedCount,n=o.added}if(n=0===n.length?n:n.map((function(e){return r.enhancer_(e,void 0)})),this.legacyMode_){var a=n.length-t;this.updateArrayLength_(i,a)}var s=this.spliceItemsIntoValues_(e,t,n);return 0===t&&0===n.length||this.notifyArraySplice_(e,n,s),this.dehanceValues_(s)},t.spliceItemsIntoValues_=function(e,t,n){var r;if(n.length<1e4)return(r=this.values_).splice.apply(r,[e,t].concat(n));var i=this.values_.slice(e,e+t),o=this.values_.slice(e+t);this.values_.length+=n.length-t;for(var a=0;a=this.values_.length))return this.atom_.reportObserved(),this.dehanceValue_(this.values_[e]);console.warn("[mobx] Out of bounds read: "+e)},t.set_=function(e,t){var n=this.values_;if(this.legacyMode_&&e>n.length&&r(17,e,n.length),e2?n-2:0),i=2;i-1&&(this.splice(n,1),!0)}};function kn(e,t){"function"==typeof Array.prototype[e]&&(On[e]=t(e))}function En(e){return function(){var t=this[z];t.atom_.reportObserved();var n=t.dehanceValues_(t.values_);return n[e].apply(n,arguments)}}function Zn(e){return function(t,n){var r=this,i=this[z];return i.atom_.reportObserved(),i.dehanceValues_(i.values_)[e]((function(e,i){return t.call(n,e,i,r)}))}}function Cn(e){return function(){var t=this,n=this[z];n.atom_.reportObserved();var r=n.dehanceValues_(n.values_),i=arguments[0];return arguments[0]=function(e,n,r){return i(e,n,r,t)},r[e].apply(r,arguments)}}kn("at",En),kn("concat",En),kn("flat",En),kn("includes",En),kn("indexOf",En),kn("join",En),kn("lastIndexOf",En),kn("slice",En),kn("toString",En),kn("toLocaleString",En),kn("toSorted",En),kn("toSpliced",En),kn("with",En),kn("every",Zn),kn("filter",Zn),kn("find",Zn),kn("findIndex",Zn),kn("findLast",Zn),kn("findLastIndex",Zn),kn("flatMap",Zn),kn("forEach",Zn),kn("map",Zn),kn("some",Zn),kn("toReversed",Zn),kn("reduce",Cn),kn("reduceRight",Cn);var An,Pn,jn=O("ObservableArrayAdministration",xn);function Fn(e){return b(e)&&jn(e[z])}var Mn={},Tn="add",Rn="delete";An=Symbol.iterator,Pn=Symbol.toStringTag;var Nn,$n,In=function(){function e(e,t,n){var i=this;void 0===t&&(t=X),void 0===n&&(n="ObservableMap"),this.enhancer_=void 0,this.name_=void 0,this[z]=Mn,this.data_=void 0,this.hasMap_=void 0,this.keysAtom_=void 0,this.interceptors_=void 0,this.changeListeners_=void 0,this.dehancer=void 0,this.enhancer_=t,this.name_=n,m(Map)||r(18),dr((function(){i.keysAtom_=W("ObservableMap.keys()"),i.data_=new Map,i.hasMap_=new Map,e&&i.merge(e)}))}var t=e.prototype;return t.has_=function(e){return this.data_.has(e)},t.has=function(e){var t=this;if(!vt.trackingDerivation)return this.has_(e);var n=this.hasMap_.get(e);if(!n){var r=n=new Ge(this.has_(e),K,"ObservableMap.key?",!1);this.hasMap_.set(e,r),zt(r,(function(){return t.hasMap_.delete(e)}))}return n.get()},t.set=function(e,t){var n=this.has_(e);if(dn(this)){var r=vn(this,{type:n?_n:Tn,object:this,newValue:t,name:e});if(!r)return this;t=r.newValue}return n?this.updateValue_(e,t):this.addValue_(e,t),this},t.delete=function(e){var t=this;if((this.keysAtom_,dn(this))&&!vn(this,{type:Rn,object:this,name:e}))return!1;if(this.has_(e)){var n=pn(this),r=n?{observableKind:"map",debugObjectName:this.name_,type:Rn,object:this,oldValue:this.data_.get(e).value_,name:e}:null;return un((function(){var n;t.keysAtom_.reportChanged(),null==(n=t.hasMap_.get(e))||n.setNewValue_(!1),t.data_.get(e).setNewValue_(void 0),t.data_.delete(e)})),n&&mn(this,r),!0}return!1},t.updateValue_=function(e,t){var n=this.data_.get(e);if((t=n.prepareNewValue_(t))!==vt.UNCHANGED){var r=pn(this),i=r?{observableKind:"map",debugObjectName:this.name_,type:_n,object:this,oldValue:n.value_,name:e,newValue:t}:null;0,n.setNewValue_(t),r&&mn(this,i)}},t.addValue_=function(e,t){var n=this;this.keysAtom_,un((function(){var r,i=new Ge(t,n.enhancer_,"ObservableMap.key",!1);n.data_.set(e,i),t=i.value_,null==(r=n.hasMap_.get(e))||r.setNewValue_(!0),n.keysAtom_.reportChanged()}));var r=pn(this),i=r?{observableKind:"map",debugObjectName:this.name_,type:Tn,object:this,name:e,newValue:t}:null;r&&mn(this,i)},t.get=function(e){return this.has(e)?this.dehanceValue_(this.data_.get(e).get()):this.dehanceValue_(void 0)},t.dehanceValue_=function(e){return void 0!==this.dehancer?this.dehancer(e):e},t.keys=function(){return this.keysAtom_.reportObserved(),this.data_.keys()},t.values=function(){var e=this,t=this.keys();return mr({next:function(){var n=t.next(),r=n.done,i=n.value;return{done:r,value:r?void 0:e.get(i)}}})},t.entries=function(){var e=this,t=this.keys();return mr({next:function(){var n=t.next(),r=n.done,i=n.value;return{done:r,value:r?void 0:[i,e.get(i)]}}})},t[An]=function(){return this.entries()},t.forEach=function(e,t){for(var n,r=L(this);!(n=r()).done;){var i=n.value,o=i[0],a=i[1];e.call(t,a,o,this)}},t.merge=function(e){var t=this;return Ln(e)&&(e=new Map(e)),un((function(){_(e)?function(e){var t=Object.keys(e);if(!Z)return t;var n=Object.getOwnPropertySymbols(e);return n.length?[].concat(t,n.filter((function(t){return u.propertyIsEnumerable.call(e,t)}))):t}(e).forEach((function(n){return t.set(n,e[n])})):Array.isArray(e)?e.forEach((function(e){var n=e[0],r=e[1];return t.set(n,r)})):k(e)?(e.constructor!==Map&&r(19,e),e.forEach((function(e,n){return t.set(n,e)}))):null!=e&&r(20,e)})),this},t.clear=function(){var e=this;un((function(){ot((function(){for(var t,n=L(e.keys());!(t=n()).done;){var r=t.value;e.delete(r)}}))}))},t.replace=function(e){var t=this;return un((function(){for(var n,i=function(e){if(k(e)||Ln(e))return e;if(Array.isArray(e))return new Map(e);if(_(e)){var t=new Map;for(var n in e)t.set(n,e[n]);return t}return r(21,e)}(e),o=new Map,a=!1,s=L(t.data_.keys());!(n=s()).done;){var c=n.value;if(!i.has(c))if(t.delete(c))a=!0;else{var u=t.data_.get(c);o.set(c,u)}}for(var l,f=L(i.entries());!(l=f()).done;){var d=l.value,h=d[0],v=d[1],p=t.data_.has(h);if(t.set(h,v),t.data_.has(h)){var g=t.data_.get(h);o.set(h,g),p||(a=!0)}}if(!a)if(t.data_.size!==o.size)t.keysAtom_.reportChanged();else for(var m=t.data_.keys(),y=o.keys(),b=m.next(),w=y.next();!b.done;){if(b.value!==w.value){t.keysAtom_.reportChanged();break}b=m.next(),w=y.next()}t.data_=o})),this},t.toString=function(){return"[object ObservableMap]"},t.toJSON=function(){return Array.from(this)},t.observe_=function(e,t){return gn(this,e)},t.intercept_=function(e){return hn(this,e)},M(e,[{key:"size",get:function(){return this.keysAtom_.reportObserved(),this.data_.size}},{key:Pn,get:function(){return"Map"}}]),e}(),Ln=O("ObservableMap",In);var Vn={};Nn=Symbol.iterator,$n=Symbol.toStringTag;var Dn=function(){function e(e,t,n){var i=this;void 0===t&&(t=X),void 0===n&&(n="ObservableSet"),this.name_=void 0,this[z]=Vn,this.data_=new Set,this.atom_=void 0,this.changeListeners_=void 0,this.interceptors_=void 0,this.dehancer=void 0,this.enhancer_=void 0,this.name_=n,m(Set)||r(22),this.enhancer_=function(e,r){return t(e,r,n)},dr((function(){i.atom_=W(i.name_),e&&i.replace(e)}))}var t=e.prototype;return t.dehanceValue_=function(e){return void 0!==this.dehancer?this.dehancer(e):e},t.clear=function(){var e=this;un((function(){ot((function(){for(var t,n=L(e.data_.values());!(t=n()).done;){var r=t.value;e.delete(r)}}))}))},t.forEach=function(e,t){for(var n,r=L(this);!(n=r()).done;){var i=n.value;e.call(t,i,i,this)}},t.add=function(e){var t=this;if((this.atom_,dn(this))&&!vn(this,{type:Tn,object:this,newValue:e}))return this;if(!this.has(e)){un((function(){t.data_.add(t.enhancer_(e,void 0)),t.atom_.reportChanged()}));var n=!1,r=pn(this),i=r?{observableKind:"set",debugObjectName:this.name_,type:Tn,object:this,newValue:e}:null;n,r&&mn(this,i)}return this},t.delete=function(e){var t=this;if(dn(this)&&!vn(this,{type:Rn,object:this,oldValue:e}))return!1;if(this.has(e)){var n=pn(this),r=n?{observableKind:"set",debugObjectName:this.name_,type:Rn,object:this,oldValue:e}:null;return un((function(){t.atom_.reportChanged(),t.data_.delete(e)})),n&&mn(this,r),!0}return!1},t.has=function(e){return this.atom_.reportObserved(),this.data_.has(this.dehanceValue_(e))},t.entries=function(){var e=0,t=Array.from(this.keys()),n=Array.from(this.values());return mr({next:function(){var r=e;return e+=1,rnr){for(var t=nr;t=0&&n++}e=gr(e),t=gr(t);var s="[object Array]"===a;if(!s){if("object"!=typeof e||"object"!=typeof t)return!1;var c=e.constructor,u=t.constructor;if(c!==u&&!(m(c)&&c instanceof c&&m(u)&&u instanceof u)&&"constructor"in e&&"constructor"in t)return!1}if(0===n)return!1;n<0&&(n=-1),i=i||[];for(var l=(r=r||[]).length;l--;)if(r[l]===e)return i[l]===t;if(r.push(e),i.push(t),s){if((l=e.length)!==t.length)return!1;for(;l--;)if(!pr(e[l],t[l],n-1,r,i))return!1}else{var f,d=Object.keys(e);if(l=d.length,Object.keys(t).length!==l)return!1;for(;l--;)if(!P(t,f=d[l])||!pr(e[f],t[f],n-1,r,i))return!1}return r.pop(),i.pop(),!0}function gr(e){return Fn(e)?e.slice():k(e)||Ln(e)||E(e)||Hn(e)?Array.from(e.entries()):e}function mr(e){return e[Symbol.iterator]=yr,e}function yr(){return this}["Symbol","Map","Set"].forEach((function(e){void 0===o()[e]&&r("MobX requires global '"+e+"' to be available or polyfilled")})),"object"==typeof __MOBX_DEVTOOLS_GLOBAL_HOOK__&&__MOBX_DEVTOOLS_GLOBAL_HOOK__.injectMobx({spy:function(e){return console.warn("[mobx.spy] Is a no-op in production builds"),function(){}},extras:{getDebugName:fr},$mobx:z})},9182:(e,t,n)=>{"use strict";n.d(t,{zt:()=>g,ZP:()=>ge});var r=n(4942),i=n(1413),o=n(7685),a=n(1002),s=n(4184),c=n.n(s),u=n(7294),l=n(3935);function f(e){return function(e){return e instanceof HTMLElement||e instanceof SVGElement}(e)?e:e instanceof u.Component?l.findDOMNode(e):null}var d=n(2550),h=n(5987),v=["children"],p=u.createContext({});function g(e){var t=e.children,n=(0,h.Z)(e,v);return u.createElement(p.Provider,{value:n},t)}var m=n(5671),y=n(3144),b=n(136),_=n(3568);const w=function(e){(0,b.Z)(n,e);var t=(0,_.Z)(n);function n(){return(0,m.Z)(this,n),t.apply(this,arguments)}return(0,y.Z)(n,[{key:"render",value:function(){return this.props.children}}]),n}(u.Component);var x=n(470),S="none",O="appear",k="enter",E="leave",Z="none",C="prepare",A="start",P="active",j="end",F="prepared",M=n(8924);function T(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit".concat(e)]="webkit".concat(t),n["Moz".concat(e)]="moz".concat(t),n["ms".concat(e)]="MS".concat(t),n["O".concat(e)]="o".concat(t.toLowerCase()),n}var R,N,$,I=(R=(0,M.Z)(),N="undefined"!=typeof window?window:{},$={animationend:T("Animation","AnimationEnd"),transitionend:T("Transition","TransitionEnd")},R&&("AnimationEvent"in N||delete $.animationend.animation,"TransitionEvent"in N||delete $.transitionend.transition),$),L={};if((0,M.Z)()){var V=document.createElement("div");L=V.style}var D={};function H(e){if(D[e])return D[e];var t=I[e];if(t)for(var n=Object.keys(t),r=n.length,i=0;i1&&void 0!==arguments[1]?arguments[1]:2;t();var o=(0,Y.Z)((function(){i<=1?r({isCanceled:function(){return o!==e.current}}):n(r,i-1)}));e.current=o},t]}(),l=(0,o.Z)(c,2),f=l[0],d=l[1];var h=t?J:Q;return K((function(){if(a!==Z&&a!==j){var e=h.indexOf(a),t=h[e+1],r=n(a);r===ee?s(t,!0):t&&f((function(e){function n(){e.isCanceled()||s(t,!0)}!0===r?n():Promise.resolve(r).then(n)}))}}),[e,a]),u.useEffect((function(){return function(){d()}}),[]),[function(){s(C,!0)},a]};const ie=function(e){var t=e;"object"===(0,a.Z)(e)&&(t=e.transitionSupport);var n=u.forwardRef((function(e,n){var a=e.visible,s=void 0===a||a,l=e.removeOnLeave,h=void 0===l||l,v=e.forceRender,g=e.children,m=e.motionName,y=e.leavedClassName,b=e.eventProps,_=function(e,n){return!(!e.motionName||!t||!1===n)}(e,u.useContext(p).motion),Z=(0,u.useRef)(),j=(0,u.useRef)();var M=function(e,t,n,a){var s=a.motionEnter,c=void 0===s||s,l=a.motionAppear,f=void 0===l||l,d=a.motionLeave,h=void 0===d||d,v=a.motionDeadline,p=a.motionLeaveImmediately,g=a.onAppearPrepare,m=a.onEnterPrepare,y=a.onLeavePrepare,b=a.onAppearStart,_=a.onEnterStart,w=a.onLeaveStart,Z=a.onAppearActive,j=a.onEnterActive,M=a.onLeaveActive,T=a.onAppearEnd,R=a.onEnterEnd,N=a.onLeaveEnd,$=a.onVisibleChanged,I=(0,x.Z)(),L=(0,o.Z)(I,2),V=L[0],D=L[1],H=(0,x.Z)(S),B=(0,o.Z)(H,2),z=B[0],q=B[1],U=(0,x.Z)(null),W=(0,o.Z)(U,2),G=W[0],Y=W[1],Q=(0,u.useRef)(!1),J=(0,u.useRef)(null);function ie(){return n()}var oe=(0,u.useRef)(!1);function ae(){q(S,!0),Y(null,!0)}function se(e){var t=ie();if(!e||e.deadline||e.target===t){var n,r=oe.current;z===O&&r?n=null==T?void 0:T(t,e):z===k&&r?n=null==R?void 0:R(t,e):z===E&&r&&(n=null==N?void 0:N(t,e)),z!==S&&r&&!1!==n&&ae()}}var ce=X(se),ue=(0,o.Z)(ce,1)[0],le=function(e){var t,n,i;switch(e){case O:return t={},(0,r.Z)(t,C,g),(0,r.Z)(t,A,b),(0,r.Z)(t,P,Z),t;case k:return n={},(0,r.Z)(n,C,m),(0,r.Z)(n,A,_),(0,r.Z)(n,P,j),n;case E:return i={},(0,r.Z)(i,C,y),(0,r.Z)(i,A,w),(0,r.Z)(i,P,M),i;default:return{}}},fe=u.useMemo((function(){return le(z)}),[z]),de=re(z,!e,(function(e){if(e===C){var t=fe[C];return t?t(ie()):ee}var n;return pe in fe&&Y((null===(n=fe[pe])||void 0===n?void 0:n.call(fe,ie(),null))||null),pe===P&&(ue(ie()),v>0&&(clearTimeout(J.current),J.current=setTimeout((function(){se({deadline:!0})}),v))),pe===F&&ae(),te})),he=(0,o.Z)(de,2),ve=he[0],pe=he[1],ge=ne(pe);oe.current=ge,K((function(){D(t);var n,r=Q.current;Q.current=!0,!r&&t&&f&&(n=O),r&&t&&c&&(n=k),(r&&!t&&h||!r&&p&&!t&&h)&&(n=E);var i=le(n);n&&(e||i[C])?(q(n),ve()):q(S)}),[t]),(0,u.useEffect)((function(){(z===O&&!f||z===k&&!c||z===E&&!h)&&q(S)}),[f,c,h]),(0,u.useEffect)((function(){return function(){Q.current=!1,clearTimeout(J.current)}}),[]);var me=u.useRef(!1);(0,u.useEffect)((function(){V&&(me.current=!0),void 0!==V&&z===S&&((me.current||V)&&(null==$||$(V)),me.current=!0)}),[V,z]);var ye=G;return fe[C]&&pe===A&&(ye=(0,i.Z)({transition:"none"},ye)),[z,pe,ye,null!=V?V:t]}(_,s,(function(){try{return Z.current instanceof HTMLElement?Z.current:f(j.current)}catch(e){return null}}),e),T=(0,o.Z)(M,4),R=T[0],N=T[1],$=T[2],I=T[3],L=u.useRef(I);I&&(L.current=!0);var V,D=u.useCallback((function(e){Z.current=e,(0,d.mH)(n,e)}),[n]),H=(0,i.Z)((0,i.Z)({},b),{},{visible:s});if(g)if(R===S)V=I?g((0,i.Z)({},H),D):!h&&L.current&&y?g((0,i.Z)((0,i.Z)({},H),{},{className:y}),D):v||!h&&!y?g((0,i.Z)((0,i.Z)({},H),{},{style:{display:"none"}}),D):null;else{var B,z;N===C?z="prepare":ne(N)?z="active":N===A&&(z="start");var q=G(m,"".concat(R,"-").concat(z));V=g((0,i.Z)((0,i.Z)({},H),{},{className:c()(G(m,R),(B={},(0,r.Z)(B,q,q&&z),(0,r.Z)(B,m,"string"==typeof m),B)),style:$}),D)}else V=null;u.isValidElement(V)&&(0,d.Yr)(V)&&(V.ref||(V=u.cloneElement(V,{ref:D})));return u.createElement(w,{ref:j},V)}));return n.displayName="CSSMotion",n}(q);var oe=n(7462),ae=n(7326),se="add",ce="keep",ue="remove",le="removed";function fe(e){var t;return t=e&&"object"===(0,a.Z)(e)&&"key"in e?e:{key:e},(0,i.Z)((0,i.Z)({},t),{},{key:String(t.key)})}function de(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:[]).map(fe)}var he=["component","children","onVisibleChanged","onAllRemoved"],ve=["status"],pe=["eventProps","visible","children","motionName","motionAppear","motionEnter","motionLeave","motionLeaveImmediately","motionDeadline","removeOnLeave","leavedClassName","onAppearPrepare","onAppearStart","onAppearActive","onAppearEnd","onEnterStart","onEnterActive","onEnterEnd","onLeaveStart","onLeaveActive","onLeaveEnd"];!function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:ie,n=function(e){(0,b.Z)(o,e);var n=(0,_.Z)(o);function o(){var e;(0,m.Z)(this,o);for(var t=arguments.length,a=new Array(t),s=0;s0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=[],r=0,o=t.length,a=de(e),s=de(t);a.forEach((function(e){for(var t=!1,a=r;a1})).forEach((function(e){(n=n.filter((function(t){var n=t.key,r=t.status;return n!==e||r!==ue}))).forEach((function(t){t.key===e&&(t.status=ce)}))})),n}(r,o);return{keyEntities:a.filter((function(e){var t=r.find((function(t){var n=t.key;return e.key===n}));return!t||t.status!==le||e.status!==ue}))}}}]),o}(u.Component);(0,r.Z)(n,"defaultProps",{component:"div"})}(q);const ge=ie},8924:(e,t,n)=>{"use strict";function r(){return!("undefined"==typeof window||!window.document||!window.document.createElement)}n.d(t,{Z:()=>r})},8981:(e,t,n)=>{"use strict";n.d(t,{jL:()=>h,hq:()=>v});var r=n(8924);var i="data-rc-order",o="data-rc-priority",a="rc-util-key",s=new Map;function c(){var e=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}).mark;return e?e.startsWith("data-")?e:"data-".concat(e):a}function u(e){return e.attachTo?e.attachTo:document.querySelector("head")||document.body}function l(e){return Array.from((s.get(e)||e).children).filter((function(e){return"STYLE"===e.tagName}))}function f(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!(0,r.Z)())return null;var n=t.csp,a=t.prepend,s=t.priority,c=void 0===s?0:s,f=function(e){return"queue"===e?"prependQueue":e?"prepend":"append"}(a),d="prependQueue"===f,h=document.createElement("style");h.setAttribute(i,f),d&&c&&h.setAttribute(o,"".concat(c)),null!=n&&n.nonce&&(h.nonce=null==n?void 0:n.nonce),h.innerHTML=e;var v=u(t),p=v.firstChild;if(a){if(d){var g=l(v).filter((function(e){if(!["prepend","prependQueue"].includes(e.getAttribute(i)))return!1;var t=Number(e.getAttribute(o)||0);return c>=t}));if(g.length)return v.insertBefore(h,g[g.length-1].nextSibling),h}v.insertBefore(h,p)}else v.appendChild(h);return h}function d(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return l(u(t)).find((function(n){return n.getAttribute(c(t))===e}))}function h(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=d(e,t);n&&u(t).removeChild(n)}function v(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};!function(e,t){var n=s.get(e);if(!n||!function(e,t){if(!e)return!1;if(e.contains)return e.contains(t);for(var n=t;n;){if(n===e)return!0;n=n.parentNode}return!1}(document,n)){var r=f("",t),i=r.parentNode;s.set(e,i),e.removeChild(r)}}(u(n),n);var r=d(t,n);if(r){var i,o,a;if(null!==(i=n.csp)&&void 0!==i&&i.nonce&&r.nonce!==(null===(o=n.csp)||void 0===o?void 0:o.nonce))r.nonce=null===(a=n.csp)||void 0===a?void 0:a.nonce;return r.innerHTML!==e&&(r.innerHTML=e),r}var l=f(e,n);return l.setAttribute(c(n),t),l}},6680:(e,t,n)=>{"use strict";n.d(t,{Z:()=>i});var r=n(7294);function i(e){var t=r.useRef();t.current=e;var n=r.useCallback((function(){for(var e,n=arguments.length,r=new Array(n),i=0;i{"use strict";n.d(t,{Z:()=>s,o:()=>a});var r=n(7294),i=(0,n(8924).Z)()?r.useLayoutEffect:r.useEffect,o=function(e,t){var n=r.useRef(!0);i((function(){return e(n.current)}),t),i((function(){return n.current=!1,function(){n.current=!0}}),[])},a=function(e,t){o((function(t){if(!t)return e()}),t)};const s=o},6982:(e,t,n)=>{"use strict";n.d(t,{Z:()=>i});var r=n(7294);function i(e,t,n){var i=r.useRef({});return"value"in i.current&&!n(i.current.condition,t)||(i.current.value=e(),i.current.condition=t),i.current.value}},1770:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});var r=n(7685),i=n(6680),o=n(8410),a=n(470);function s(e){return void 0!==e}function c(e,t){var n=t||{},c=n.defaultValue,u=n.value,l=n.onChange,f=n.postState,d=(0,a.Z)((function(){return s(u)?u:s(c)?"function"==typeof c?c():c:"function"==typeof e?e():e})),h=(0,r.Z)(d,2),v=h[0],p=h[1],g=void 0!==u?u:v,m=f?f(g):g,y=(0,i.Z)(l),b=(0,a.Z)([g]),_=(0,r.Z)(b,2),w=_[0],x=_[1];return(0,o.o)((function(){var e=w[0];v!==e&&y(v,e)}),[w]),(0,o.o)((function(){s(u)||p(u)}),[u]),[m,(0,i.Z)((function(e,t){p(e,t),x([g],t)}))]}},470:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7685),i=n(7294);function o(e){var t=i.useRef(!1),n=i.useState(e),o=(0,r.Z)(n,2),a=o[0],s=o[1];return i.useEffect((function(){return t.current=!1,function(){t.current=!0}}),[]),[a,function(e,n){n&&t.current||s(e)}]}},6790:(e,t,n)=>{"use strict";n.d(t,{zX:()=>r.Z});var r=n(6680);n(1770),n(2550),n(3799),n(334)},1881:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(1002),i=n(334);const o=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],o=new Set;return function e(t,a){var s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,c=o.has(t);if((0,i.ZP)(!c,"Warning: There may be circular references"),c)return!1;if(t===a)return!0;if(n&&s>1)return!1;o.add(t);var u=s+1;if(Array.isArray(t)){if(!Array.isArray(a)||t.length!==a.length)return!1;for(var l=0;l{"use strict";n.d(t,{Z:()=>u});var r=function(e){return+setTimeout(e,16)},i=function(e){return clearTimeout(e)};"undefined"!=typeof window&&"requestAnimationFrame"in window&&(r=function(e){return window.requestAnimationFrame(e)},i=function(e){return window.cancelAnimationFrame(e)});var o=0,a=new Map;function s(e){a.delete(e)}var c=function(e){var t=o+=1;return function n(i){if(0===i)s(t),e();else{var o=r((function(){n(i-1)}));a.set(t,o)}}(arguments.length>1&&void 0!==arguments[1]?arguments[1]:1),t};c.cancel=function(e){var t=a.get(e);return s(e),i(t)};const u=c},2550:(e,t,n)=>{"use strict";n.d(t,{Yr:()=>s,mH:()=>o,sQ:()=>a});var r=n(1002),i=(n(7294),n(1805));n(6982);function o(e,t){"function"==typeof e?e(t):"object"===(0,r.Z)(e)&&e&&"current"in e&&(e.current=t)}function a(){for(var e=arguments.length,t=new Array(e),n=0;n{"use strict";function r(e,t){for(var n=e,r=0;rr})},3799:(e,t,n)=>{"use strict";n.d(t,{Z:()=>d,T:()=>p});var r=n(1002),i=n(1413),o=n(4902),a=n(3878),s=n(9199),c=n(181),u=n(5267);var l=n(8306);function f(e,t,n,r){if(!t.length)return n;var l,d,h=(l=t,(0,a.Z)(l)||(0,s.Z)(l)||(0,c.Z)(l)||(0,u.Z)()),v=h[0],p=h.slice(1);return d=e||"number"!=typeof v?Array.isArray(e)?(0,o.Z)(e):(0,i.Z)({},e):[],r&&void 0===n&&1===p.length?delete d[v][p[0]]:d[v]=f(d[v],p,n,r),d}function d(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]&&arguments[3];return t.length&&r&&void 0===n&&!(0,l.Z)(e,t.slice(0,-1))?e:f(e,t,n,r)}function h(e){return Array.isArray(e)?[]:{}}var v="undefined"==typeof Reflect?Object.keys:Reflect.ownKeys;function p(){for(var e=arguments.length,t=new Array(e),n=0;n{"use strict";n.d(t,{Kp:()=>o,ZP:()=>u});var r={},i=[];function o(e,t){}function a(e,t){}function s(e,t,n){t||r[n]||(e(!1,n),r[n]=!0)}function c(e,t){s(o,e,t)}c.preMessage=function(e){i.push(e)},c.resetWarned=function(){r={}},c.noteOnce=function(e,t){s(a,e,t)};const u=c},1162:(e,t)=>{"use strict";var n,r=Symbol.for("react.element"),i=Symbol.for("react.portal"),o=Symbol.for("react.fragment"),a=Symbol.for("react.strict_mode"),s=Symbol.for("react.profiler"),c=Symbol.for("react.provider"),u=Symbol.for("react.context"),l=Symbol.for("react.server_context"),f=Symbol.for("react.forward_ref"),d=Symbol.for("react.suspense"),h=Symbol.for("react.suspense_list"),v=Symbol.for("react.memo"),p=Symbol.for("react.lazy"),g=Symbol.for("react.offscreen");function m(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case r:switch(e=e.type){case o:case s:case a:case d:case h:return e;default:switch(e=e&&e.$$typeof){case l:case u:case f:case p:case v:case c:return e;default:return t}}case i:return t}}}n=Symbol.for("react.module.reference"),t.isFragment=function(e){return m(e)===o},t.isMemo=function(e){return m(e)===v}},1805:(e,t,n)=>{"use strict";e.exports=n(1162)},907:(e,t,n)=>{"use strict";function r(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);nr})},3878:(e,t,n)=>{"use strict";function r(e){if(Array.isArray(e))return e}n.d(t,{Z:()=>r})},7326:(e,t,n)=>{"use strict";function r(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}n.d(t,{Z:()=>r})},5861:(e,t,n)=>{"use strict";function r(e,t,n,r,i,o,a){try{var s=e[o](a),c=s.value}catch(u){return void n(u)}s.done?t(c):Promise.resolve(c).then(r,i)}function i(e){return function(){var t=this,n=arguments;return new Promise((function(i,o){var a=e.apply(t,n);function s(e){r(a,i,o,s,c,"next",e)}function c(e){r(a,i,o,s,c,"throw",e)}s(void 0)}))}}n.d(t,{Z:()=>i})},5671:(e,t,n)=>{"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}n.d(t,{Z:()=>r})},3144:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(3997);function i(e,t){for(var n=0;n{"use strict";function r(e){return r=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},r(e)}n.d(t,{Z:()=>a});var i=n(1002),o=n(7326);function a(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,a=r(e);if(t){var s=r(this).constructor;n=Reflect.construct(a,arguments,s)}else n=a.apply(this,arguments);return function(e,t){if(t&&("object"===(0,i.Z)(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return(0,o.Z)(e)}(this,n)}}},4942:(e,t,n)=>{"use strict";n.d(t,{Z:()=>i});var r=n(3997);function i(e,t,n){return(t=(0,r.Z)(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}},136:(e,t,n)=>{"use strict";n.d(t,{Z:()=>i});var r=n(9611);function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&(0,r.Z)(e,t)}},9199:(e,t,n)=>{"use strict";function r(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}n.d(t,{Z:()=>r})},5267:(e,t,n)=>{"use strict";function r(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}n.d(t,{Z:()=>r})},1413:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(4942);function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t{"use strict";n.d(t,{Z:()=>i});var r=n(3366);function i(e,t){if(null==e)return{};var n,i,o=(0,r.Z)(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}},4165:(e,t,n)=>{"use strict";n.d(t,{Z:()=>i});var r=n(1002);function i(){i=function(){return t};var e,t={},n=Object.prototype,o=n.hasOwnProperty,a=Object.defineProperty||function(e,t,n){e[t]=n.value},s="function"==typeof Symbol?Symbol:{},c=s.iterator||"@@iterator",u=s.asyncIterator||"@@asyncIterator",l=s.toStringTag||"@@toStringTag";function f(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{f({},"")}catch(e){f=function(e,t,n){return e[t]=n}}function d(e,t,n,r){var i=t&&t.prototype instanceof b?t:b,o=Object.create(i.prototype),s=new F(r||[]);return a(o,"_invoke",{value:C(e,n,s)}),o}function h(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}t.wrap=d;var v="suspendedStart",p="suspendedYield",g="executing",m="completed",y={};function b(){}function _(){}function w(){}var x={};f(x,c,(function(){return this}));var S=Object.getPrototypeOf,O=S&&S(S(M([])));O&&O!==n&&o.call(O,c)&&(x=O);var k=w.prototype=b.prototype=Object.create(x);function E(e){["next","throw","return"].forEach((function(t){f(e,t,(function(e){return this._invoke(t,e)}))}))}function Z(e,t){function n(i,a,s,c){var u=h(e[i],e,a);if("throw"!==u.type){var l=u.arg,f=l.value;return f&&"object"==(0,r.Z)(f)&&o.call(f,"__await")?t.resolve(f.__await).then((function(e){n("next",e,s,c)}),(function(e){n("throw",e,s,c)})):t.resolve(f).then((function(e){l.value=e,s(l)}),(function(e){return n("throw",e,s,c)}))}c(u.arg)}var i;a(this,"_invoke",{value:function(e,r){function o(){return new t((function(t,i){n(e,r,t,i)}))}return i=i?i.then(o,o):o()}})}function C(t,n,r){var i=v;return function(o,a){if(i===g)throw new Error("Generator is already running");if(i===m){if("throw"===o)throw a;return{value:e,done:!0}}for(r.method=o,r.arg=a;;){var s=r.delegate;if(s){var c=A(s,r);if(c){if(c===y)continue;return c}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if(i===v)throw i=m,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);i=g;var u=h(t,n,r);if("normal"===u.type){if(i=r.done?m:p,u.arg===y)continue;return{value:u.arg,done:r.done}}"throw"===u.type&&(i=m,r.method="throw",r.arg=u.arg)}}}function A(t,n){var r=n.method,i=t.iterator[r];if(i===e)return n.delegate=null,"throw"===r&&t.iterator.return&&(n.method="return",n.arg=e,A(t,n),"throw"===n.method)||"return"!==r&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+r+"' method")),y;var o=h(i,t.iterator,n.arg);if("throw"===o.type)return n.method="throw",n.arg=o.arg,n.delegate=null,y;var a=o.arg;return a?a.done?(n[t.resultName]=a.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,y):a:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,y)}function P(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function j(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function F(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(P,this),this.reset(!0)}function M(t){if(t||""===t){var n=t[c];if(n)return n.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var i=-1,a=function n(){for(;++i=0;--i){var a=this.tryEntries[i],s=a.completion;if("root"===a.tryLoc)return r("end");if(a.tryLoc<=this.prev){var c=o.call(a,"catchLoc"),u=o.call(a,"finallyLoc");if(c&&u){if(this.prev=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&o.call(r,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),j(n),y}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var i=r.arg;j(n)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(t,n,r){return this.delegate={iterator:M(t),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=e),y}},t}},7685:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});var r=n(3878);var i=n(181),o=n(5267);function a(e,t){return(0,r.Z)(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,i,o,a,s=[],c=!0,u=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=o.call(n)).done)&&(s.push(r.value),s.length!==t);c=!0);}catch(e){u=!0,i=e}finally{try{if(!c&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(u)throw i}}return s}}(e,t)||(0,i.Z)(e,t)||(0,o.Z)()}},4902:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});var r=n(907);var i=n(9199),o=n(181);function a(e){return function(e){if(Array.isArray(e))return(0,r.Z)(e)}(e)||(0,i.Z)(e)||(0,o.Z)(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}},3997:(e,t,n)=>{"use strict";n.d(t,{Z:()=>i});var r=n(1002);function i(e){var t=function(e,t){if("object"!=(0,r.Z)(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,t||"default");if("object"!=(0,r.Z)(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==(0,r.Z)(t)?t:String(t)}},1002:(e,t,n)=>{"use strict";function r(e){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r(e)}n.d(t,{Z:()=>r})},181:(e,t,n)=>{"use strict";n.d(t,{Z:()=>i});var r=n(907);function i(e,t){if(e){if("string"==typeof e)return(0,r.Z)(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?(0,r.Z)(e,t):void 0}}}}]); \ No newline at end of file +/*! For license information please see 7298.3a91b5ff.js.LICENSE.txt */ +(self.webpackChunkareweloongyet=self.webpackChunkareweloongyet||[]).push([[7298],{6397:(e,t,n)=>{"use strict";n.d(t,{iN:()=>x,R_:()=>y});var r=n(6500),i=n(1350),o=2,a=.16,s=.05,c=.05,u=.15,l=5,f=4,d=[{index:7,opacity:.15},{index:6,opacity:.25},{index:5,opacity:.3},{index:5,opacity:.45},{index:5,opacity:.65},{index:5,opacity:.85},{index:4,opacity:.9},{index:3,opacity:.95},{index:2,opacity:.97},{index:1,opacity:.98}];function h(e){var t=e.r,n=e.g,i=e.b,o=(0,r.py)(t,n,i);return{h:360*o.h,s:o.s,v:o.v}}function v(e){var t=e.r,n=e.g,i=e.b;return"#".concat((0,r.vq)(t,n,i,!1))}function p(e,t,n){var r;return(r=Math.round(e.h)>=60&&Math.round(e.h)<=240?n?Math.round(e.h)-o*t:Math.round(e.h)+o*t:n?Math.round(e.h)+o*t:Math.round(e.h)-o*t)<0?r+=360:r>=360&&(r-=360),r}function g(e,t,n){return 0===e.h&&0===e.s?e.s:((r=n?e.s-a*t:t===f?e.s+a:e.s+s*t)>1&&(r=1),n&&t===l&&r>.1&&(r=.1),r<.06&&(r=.06),Number(r.toFixed(2)));var r}function m(e,t,n){var r;return(r=n?e.v+c*t:e.v-u*t)>1&&(r=1),Number(r.toFixed(2))}function y(e){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=[],r=(0,i.uA)(e),o=l;o>0;o-=1){var a=h(r),s=v((0,i.uA)({h:p(a,o,!0),s:g(a,o,!0),v:m(a,o,!0)}));n.push(s)}n.push(v(r));for(var c=1;c<=f;c+=1){var u=h(r),y=v((0,i.uA)({h:p(u,c),s:g(u,c),v:m(u,c)}));n.push(y)}return"dark"===t.theme?d.map((function(e){var r,o,a,s=e.index,c=e.opacity;return v((r=(0,i.uA)(t.backgroundColor||"#141414"),o=(0,i.uA)(n[s]),a=100*c/100,{r:(o.r-r.r)*a+r.r,g:(o.g-r.g)*a+r.g,b:(o.b-r.b)*a+r.b}))})):n}var b={red:"#F5222D",volcano:"#FA541C",orange:"#FA8C16",gold:"#FAAD14",yellow:"#FADB14",lime:"#A0D911",green:"#52C41A",cyan:"#13C2C2",blue:"#1677FF",geekblue:"#2F54EB",purple:"#722ED1",magenta:"#EB2F96",grey:"#666666"},_={},w={};Object.keys(b).forEach((function(e){_[e]=y(b[e]),_[e].primary=_[e][5],w[e]=y(b[e],{theme:"dark",backgroundColor:"#141414"}),w[e].primary=w[e][5]}));_.red,_.volcano,_.gold,_.orange,_.yellow,_.lime,_.green,_.cyan;var x=_.blue;_.geekblue,_.purple,_.magenta,_.grey,_.grey},5980:(e,t,n)=>{"use strict";n.d(t,{jG:()=>Z,t2:()=>ee,ks:()=>V,bf:()=>I,CI:()=>st,fp:()=>ne,xy:()=>ot});var r=n(4942),i=n(7685),o=n(4902),a=n(1413);const s=function(e){for(var t,n=0,r=0,i=e.length;i>=4;++r,i-=4)t=1540483477*(65535&(t=255&e.charCodeAt(r)|(255&e.charCodeAt(++r))<<8|(255&e.charCodeAt(++r))<<16|(255&e.charCodeAt(++r))<<24))+(59797*(t>>>16)<<16),n=1540483477*(65535&(t^=t>>>24))+(59797*(t>>>16)<<16)^1540483477*(65535&n)+(59797*(n>>>16)<<16);switch(i){case 3:n^=(255&e.charCodeAt(r+2))<<16;case 2:n^=(255&e.charCodeAt(r+1))<<8;case 1:n=1540483477*(65535&(n^=255&e.charCodeAt(r)))+(59797*(n>>>16)<<16)}return(((n=1540483477*(65535&(n^=n>>>13))+(59797*(n>>>16)<<16))^n>>>15)>>>0).toString(36)};var c=n(8981),u=n(7294),l=n.t(u,2),f=(n(6982),n(1881),n(5671)),d=n(3144);const h=function(){function e(t){(0,f.Z)(this,e),(0,r.Z)(this,"instanceId",void 0),(0,r.Z)(this,"cache",new Map),this.instanceId=t}return(0,d.Z)(e,[{key:"get",value:function(e){return this.cache.get(e.join("%"))||null}},{key:"update",value:function(e,t){var n=e.join("%"),r=t(this.cache.get(n));null===r?this.cache.delete(n):this.cache.set(n,r)}}]),e}();var v="data-token-hash",p="data-css-hash",g="__cssinjs_instance__";function m(){var e=Math.random().toString(12).slice(2);if("undefined"!=typeof document&&document.head&&document.body){var t=document.body.querySelectorAll("style[".concat(p,"]"))||[],n=document.head.firstChild;Array.from(t).forEach((function(t){t[g]=t[g]||e,t[g]===e&&document.head.insertBefore(t,n)}));var r={};Array.from(document.querySelectorAll("style[".concat(p,"]"))).forEach((function(t){var n,i=t.getAttribute(p);r[i]?t[g]===e&&(null===(n=t.parentNode)||void 0===n||n.removeChild(t)):r[i]=!0}))}return new h(e)}var y=u.createContext({hashPriority:"low",cache:m(),defaultCache:!0});const b=y;var _=n(1002),w=n(8924);var x=function(){function e(){(0,f.Z)(this,e),(0,r.Z)(this,"cache",void 0),(0,r.Z)(this,"keys",void 0),(0,r.Z)(this,"cacheCallTimes",void 0),this.cache=new Map,this.keys=[],this.cacheCallTimes=0}return(0,d.Z)(e,[{key:"size",value:function(){return this.keys.length}},{key:"internalGet",value:function(e){var t,n,r=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i={map:this.cache};return e.forEach((function(e){var t;i?i=null===(t=i)||void 0===t||null===(t=t.map)||void 0===t?void 0:t.get(e):i=void 0})),null!==(t=i)&&void 0!==t&&t.value&&r&&(i.value[1]=this.cacheCallTimes++),null===(n=i)||void 0===n?void 0:n.value}},{key:"get",value:function(e){var t;return null===(t=this.internalGet(e,!0))||void 0===t?void 0:t[0]}},{key:"has",value:function(e){return!!this.internalGet(e)}},{key:"set",value:function(t,n){var r=this;if(!this.has(t)){if(this.size()+1>e.MAX_CACHE_SIZE+e.MAX_CACHE_OFFSET){var o=this.keys.reduce((function(e,t){var n=(0,i.Z)(e,2)[1];return r.internalGet(t)[1]0,"[Ant Design CSS-in-JS] Theme should have at least one derivative function."),O+=1}return(0,d.Z)(e,[{key:"getDerivativeToken",value:function(e){return this.derivatives.reduce((function(t,n){return n(e,t)}),void 0)}}]),e}(),E=new x;function Z(e){var t=Array.isArray(e)?e:[e];return E.has(t)||E.set(t,new k(t)),E.get(t)}var C=new WeakMap,A={};var P=new WeakMap;function j(e){var t=P.get(e)||"";return t||(Object.keys(e).forEach((function(n){var r=e[n];t+=n,r instanceof k?t+=r.id:r&&"object"===(0,_.Z)(r)?t+=j(r):t+=r})),P.set(e,t)),t}function F(e,t){return s("".concat(t,"_").concat(j(e)))}var M="random-".concat(Date.now(),"-").concat(Math.random()).replace(/\./g,""),T="_bAmBoO_";function R(e,t,n){if((0,w.Z)()){var r,i;(0,c.hq)(e,M);var o=document.createElement("div");o.style.position="fixed",o.style.left="0",o.style.top="0",null==t||t(o),document.body.appendChild(o);var a=n?n(o):null===(r=getComputedStyle(o).content)||void 0===r?void 0:r.includes(T);return null===(i=o.parentNode)||void 0===i||i.removeChild(o),(0,c.jL)(M),a}return!1}var N=void 0;var $=(0,w.Z)();function I(e){return"number"==typeof e?"".concat(e,"px"):e}function L(e,t,n){var i,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(arguments.length>4&&void 0!==arguments[4]&&arguments[4])return e;var s=(0,a.Z)((0,a.Z)({},o),{},(i={},(0,r.Z)(i,v,t),(0,r.Z)(i,p,n),i)),c=Object.keys(s).map((function(e){var t=s[e];return t?"".concat(e,'="').concat(t,'"'):null})).filter((function(e){return e})).join(" ");return"")}var V=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return"--".concat(t?"".concat(t,"-"):"").concat(e).replace(/([a-z0-9])([A-Z])/g,"$1-$2").replace(/([A-Z]+)([A-Z][a-z0-9]+)/g,"$1-$2").replace(/([a-z])([A-Z0-9])/g,"$1-$2").toLowerCase()},D=function(e,t,n){return Object.keys(e).length?".".concat(t).concat(null!=n&&n.scope?".".concat(n.scope):"","{").concat(Object.entries(e).map((function(e){var t=(0,i.Z)(e,2),n=t[0],r=t[1];return"".concat(n,":").concat(r,";")})).join(""),"}"):""},H=function(e,t,n){var r={},o={};return Object.entries(e).forEach((function(e){var t,a,s=(0,i.Z)(e,2),c=s[0],u=s[1];if(null!=n&&null!==(t=n.preserve)&&void 0!==t&&t[c])o[c]=u;else if(!("string"!=typeof u&&"number"!=typeof u||null!=n&&null!==(a=n.ignore)&&void 0!==a&&a[c])){var l,f=V(c,null==n?void 0:n.prefix);r[f]="number"!=typeof u||null!=n&&null!==(l=n.unitless)&&void 0!==l&&l[c]?String(u):"".concat(u,"px"),o[c]="var(".concat(f,")")}})),[o,D(r,t,{scope:null==n?void 0:n.scope})]},B=n(8410),z=(0,a.Z)({},l).useInsertionEffect;const q=z?function(e,t,n){return z((function(){return e(),t()}),n)}:function(e,t,n){u.useMemo(e,n),(0,B.Z)((function(){return t(!0)}),n)};const U=void 0!==(0,a.Z)({},l).useInsertionEffect?function(e){var t=[],n=!1;return u.useEffect((function(){return n=!1,function(){n=!0,t.length&&t.forEach((function(e){return e()}))}}),e),function(e){n||t.push(e)}}:function(){return function(e){e()}};const W=function(){return!1};function G(e,t,n,r,a){var s=u.useContext(b).cache,c=[e].concat((0,o.Z)(t)),l=c.join("_"),f=U([l]),d=(W(),function(e){s.update(c,(function(t){var r=t||[void 0,void 0],o=(0,i.Z)(r,2),a=o[0];var s=[void 0===a?0:a,o[1]||n()];return e?e(s):s}))});u.useMemo((function(){d()}),[l]);var h=s.get(c)[1];return q((function(){null==a||a(h)}),(function(e){return d((function(t){var n=(0,i.Z)(t,2),r=n[0],o=n[1];return e&&0===r&&(null==a||a(h)),[r+1,o]})),function(){s.update(c,(function(t){var n=t||[],o=(0,i.Z)(n,2),a=o[0],u=void 0===a?0:a,l=o[1];return 0===u-1?(f((function(){!e&&s.get(c)||null==r||r(l,!1)})),null):[u-1,l]}))}}),[l]),h}var X={},K="css",Y=new Map;var Q=0;function J(e,t){Y.set(e,(Y.get(e)||0)-1);var n=Array.from(Y.keys()),r=n.filter((function(e){return(Y.get(e)||0)<=0}));n.length-r.length>Q&&r.forEach((function(e){!function(e,t){"undefined"!=typeof document&&document.querySelectorAll("style[".concat(v,'="').concat(e,'"]')).forEach((function(e){var n;e[g]===t&&(null===(n=e.parentNode)||void 0===n||n.removeChild(e))}))}(e,t),Y.delete(e)}))}var ee=function(e,t,n,r){var i=n.getDerivativeToken(e),o=(0,a.Z)((0,a.Z)({},i),t);return r&&(o=r(o)),o},te="token";function ne(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=(0,u.useContext)(b),l=r.cache.instanceId,f=r.container,d=n.salt,h=void 0===d?"":d,m=n.override,y=void 0===m?X:m,_=n.formatToken,w=n.getComputedToken,x=n.cssVar,S=function(e,t){for(var n=C,r=0;r0?ge(Ze,--ke):0,Se--,10===Ee&&(Se=1,xe--),Ee}function Pe(){return Ee=ke2||Te(Ee)>3?"":" "}function Le(e,t){for(;--t&&Pe()&&!(Ee<48||Ee>102||Ee>57&&Ee<65||Ee>70&&Ee<97););return Me(e,Fe()+(t<6&&32==je()&&32==Pe()))}function Ve(e){for(;Pe();)switch(Ee){case e:return ke;case 34:case 39:34!==e&&39!==e&&Ve(Ee);break;case 40:41===e&&Ve(e);break;case 92:Pe()}return ke}function De(e,t){for(;Pe()&&e+Ee!==57&&(e+Ee!==84||47!==je()););return"/*"+Me(t,ke-1)+"*"+de(47===e?e:Pe())}function He(e){for(;!Te(je());)Pe();return Me(e,ke)}function Be(e){return Ne(ze("",null,null,null,[""],e=Re(e),0,[0],e))}function ze(e,t,n,r,i,o,a,s,c){for(var u=0,l=0,f=a,d=0,h=0,v=0,p=1,g=1,m=1,y=0,b="",_=i,w=o,x=r,S=b;g;)switch(v=y,y=Pe()){case 40:if(108!=v&&58==ge(S,f-1)){-1!=pe(S+=ve($e(y),"&","&\f"),"&\f")&&(m=-1);break}case 34:case 39:case 91:S+=$e(y);break;case 9:case 10:case 13:case 32:S+=Ie(v);break;case 92:S+=Le(Fe()-1,7);continue;case 47:switch(je()){case 42:case 47:be(Ue(De(Pe(),Fe()),t,n,c),c);break;default:S+="/"}break;case 123*p:s[u++]=ye(S)*m;case 125*p:case 59:case 0:switch(y){case 0:case 125:g=0;case 59+l:-1==m&&(S=ve(S,/\f/g,"")),h>0&&ye(S)-f&&be(h>32?We(S+";",r,n,f-1,c):We(ve(S," ","")+";",r,n,f-2,c),c);break;case 59:S+=";";default:if(be(x=qe(S,t,n,u,l,i,s,b,_=[],w=[],f,o),o),123===y)if(0===l)ze(S,t,x,x,_,o,f,s,w);else switch(99===d&&110===ge(S,3)?100:d){case 100:case 108:case 109:case 115:ze(e,x,x,r&&be(qe(e,x,x,0,0,i,s,b,i,_=[],f,w),w),i,w,f,s,r?_:w);break;default:ze(S,x,x,x,[""],w,0,s,w)}}u=l=h=0,p=m=1,b=S="",f=a;break;case 58:f=1+ye(S),h=v;default:if(p<1)if(123==y)--p;else if(125==y&&0==p++&&125==Ae())continue;switch(S+=de(y),y*p){case 38:m=l>0?1:(S+="\f",-1);break;case 44:s[u++]=(ye(S)-1)*m,m=1;break;case 64:45===je()&&(S+=$e(Pe())),d=je(),l=f=ye(b=S+=He(Fe())),y++;break;case 45:45===v&&2==ye(S)&&(p=0)}}return o}function qe(e,t,n,r,i,o,a,s,c,u,l,f){for(var d=i-1,h=0===i?o:[""],v=function(e){return e.length}(h),p=0,g=0,m=0;p0?h[y]+" "+b:ve(b,/&\f/g,h[y])))&&(c[m++]=_);return Ce(e,t,n,0===i?ae:s,c,u,l,f)}function Ue(e,t,n,r){return Ce(e,t,n,oe,de(Ee),me(e,2,-2),0,r)}function We(e,t,n,r,i){return Ce(e,t,n,se,me(e,0,r),me(e,r+1,-1),r,i)}var Ge,Xe="data-ant-cssinjs-cache-path",Ke="_FILE_STYLE__";var Ye=!0;function Qe(e){return function(){if(!Ge&&(Ge={},(0,w.Z)())){var e=document.createElement("div");e.className=Xe,e.style.position="fixed",e.style.visibility="hidden",e.style.top="-9999px",document.body.appendChild(e);var t=getComputedStyle(e).content||"";(t=t.replace(/^"/,"").replace(/"$/,"")).split(";").forEach((function(e){var t=e.split(":"),n=(0,i.Z)(t,2),r=n[0],o=n[1];Ge[r]=o}));var n,r=document.querySelector("style[".concat(Xe,"]"));r&&(Ye=!1,null===(n=r.parentNode)||void 0===n||n.removeChild(r)),document.body.removeChild(e)}}(),!!Ge[e]}var Je="_multi_value_";function et(e){return _e(Be(e),we).replace(/\{%%%\:[^;];}/g,";")}var tt=function e(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{root:!0,parentSelectors:[]},s=r.root,c=r.injectHash,u=r.parentSelectors,l=n.hashId,f=n.layer,d=(n.path,n.hashPriority),h=n.transformers,v=void 0===h?[]:h,p=(n.linters,""),g={};function m(t){var r=t.getName(l);if(!g[r]){var o=e(t.style,n,{root:!1,parentSelectors:u}),a=(0,i.Z)(o,1)[0];g[r]="@keyframes ".concat(t.getName(l)).concat(a)}}var y=function e(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return t.forEach((function(t){Array.isArray(t)?e(t,n):t&&n.push(t)})),n}(Array.isArray(t)?t:[t]);if(y.forEach((function(t){var r="string"!=typeof t||s?t:{};if("string"==typeof r)p+="".concat(r,"\n");else if(r._keyframe)m(r);else{var f=v.reduce((function(e,t){var n;return(null==t||null===(n=t.visit)||void 0===n?void 0:n.call(t,e))||e}),r);Object.keys(f).forEach((function(t){var r=f[t];if("object"!==(0,_.Z)(r)||!r||"animationName"===t&&r._keyframe||function(e){return"object"===(0,_.Z)(e)&&e&&("_skip_check_"in e||Je in e)}(r)){var h;function E(e,t){var n=e.replace(/[A-Z]/g,(function(e){return"-".concat(e.toLowerCase())})),r=t;ie[e]||"number"!=typeof r||0===r||(r="".concat(r,"px")),"animationName"===e&&null!=t&&t._keyframe&&(m(t),r=t.getName(l)),p+="".concat(n,":").concat(r,";")}var v=null!==(h=null==r?void 0:r.value)&&void 0!==h?h:r;"object"===(0,_.Z)(r)&&null!=r&&r[Je]&&Array.isArray(v)?v.forEach((function(e){E(t,e)})):E(t,v)}else{var y=!1,b=t.trim(),w=!1;(s||c)&&l?b.startsWith("@")?y=!0:b=function(e,t,n){if(!t)return e;var r=".".concat(t),i="low"===n?":where(".concat(r,")"):r;return e.split(",").map((function(e){var t,n=e.trim().split(/\s+/),r=n[0]||"",a=(null===(t=r.match(/^\w+/))||void 0===t?void 0:t[0])||"";return[r="".concat(a).concat(i).concat(r.slice(a.length))].concat((0,o.Z)(n.slice(1))).join(" ")})).join(",")}(t,l,d):!s||l||"&"!==b&&""!==b||(b="",w=!0);var x=e(r,n,{root:w,injectHash:y,parentSelectors:[].concat((0,o.Z)(u),[b])}),S=(0,i.Z)(x,2),O=S[0],k=S[1];g=(0,a.Z)((0,a.Z)({},g),k),p+="".concat(b).concat(O)}}))}})),s){if(f&&(void 0===N&&(N=R("@layer ".concat(M," { .").concat(M,' { content: "').concat(T,'"!important; } }'),(function(e){e.className=M}))),N)){var b=f.split(","),w=b[b.length-1].trim();p="@layer ".concat(w," {").concat(p,"}"),b.length>1&&(p="@layer ".concat(f,"{%%%:%}").concat(p))}}else p="{".concat(p,"}");return[p,g]};function nt(e,t){return s("".concat(e.join("%")).concat(t))}function rt(){return null}var it="style";function ot(e,t){var n=e.token,a=e.path,s=e.hashId,l=e.layer,f=e.nonce,d=e.clientOnly,h=e.order,m=void 0===h?0:h,y=u.useContext(b),_=y.autoClear,x=(y.mock,y.defaultCache),S=y.hashPriority,O=y.container,k=y.ssrInline,E=y.transformers,Z=y.linters,C=y.cache,A=n._tokenKey,P=[A].concat((0,o.Z)(a)),j=$;var F=G(it,P,(function(){var e=P.join("|");if(Qe(e)){var n=function(e){var t=Ge[e],n=null;if(t&&(0,w.Z)())if(Ye)n=Ke;else{var r=document.querySelector("style[".concat(p,'="').concat(Ge[e],'"]'));r?n=r.innerHTML:delete Ge[e]}return[n,t]}(e),r=(0,i.Z)(n,2),o=r[0],c=r[1];if(o)return[o,A,c,{},d,m]}var u=t(),f=tt(u,{hashId:s,hashPriority:S,layer:l,path:a.join("-"),transformers:E,linters:Z}),h=(0,i.Z)(f,2),v=h[0],g=h[1],y=et(v),b=nt(P,y);return[y,A,b,g,d,m]}),(function(e,t){var n=(0,i.Z)(e,3)[2];(t||_)&&$&&(0,c.jL)(n,{mark:p})}),(function(e){var t=(0,i.Z)(e,4),n=t[0],r=(t[1],t[2]),o=t[3];if(j&&n!==Ke){var a={mark:p,prepend:"queue",attachTo:O,priority:m},s="function"==typeof f?f():f;s&&(a.csp={nonce:s});var u=(0,c.hq)(n,r,a);u[g]=C.instanceId,u.setAttribute(v,A),Object.keys(o).forEach((function(e){(0,c.hq)(et(o[e]),"_effect-".concat(e),a)}))}})),M=(0,i.Z)(F,3),T=M[0],R=M[1],N=M[2];return function(e){var t,n;k&&!j&&x?t=u.createElement("style",(0,re.Z)({},(n={},(0,r.Z)(n,v,R),(0,r.Z)(n,p,N),n),{dangerouslySetInnerHTML:{__html:T}})):t=u.createElement(rt,null);return u.createElement(u.Fragment,null,t,e)}}var at="cssVar";const st=function(e,t){var n=e.key,r=e.prefix,a=e.unitless,s=e.ignore,l=e.token,f=e.scope,d=void 0===f?"":f,h=(0,u.useContext)(b),m=h.cache.instanceId,y=h.container,_=l._tokenKey,w=[].concat((0,o.Z)(e.path),[n,d,_]);return G(at,w,(function(){var e=t(),o=H(e,n,{prefix:r,unitless:a,ignore:s,scope:d}),c=(0,i.Z)(o,2),u=c[0],l=c[1];return[u,l,nt(w,l),n]}),(function(e){var t=(0,i.Z)(e,3)[2];$&&(0,c.jL)(t,{mark:p})}),(function(e){var t=(0,i.Z)(e,3),r=t[1],o=t[2];if(r){var a=(0,c.hq)(r,o,{mark:p,prepend:"queue",attachTo:y,priority:-999});a[g]=m,a.setAttribute(v,n)}}))};var ct;ct={},(0,r.Z)(ct,it,(function(e,t,n){var r=(0,i.Z)(e,6),o=r[0],a=r[1],s=r[2],c=r[3],u=r[4],l=r[5],f=(n||{}).plain;if(u)return null;var d=o,h={"data-rc-order":"prependQueue","data-rc-priority":"".concat(l)};return d=L(o,a,s,h,f),c&&Object.keys(c).forEach((function(e){if(!t[e]){t[e]=!0;var n=et(c[e]);d+=L(n,a,"_effect-".concat(e),h,f)}})),[l,s,d]})),(0,r.Z)(ct,te,(function(e,t,n){var r=(0,i.Z)(e,5),o=r[2],a=r[3],s=r[4],c=(n||{}).plain;if(!a)return null;var u=o._tokenKey;return[-999,u,L(a,s,u,{"data-rc-order":"prependQueue","data-rc-priority":"".concat(-999)},c)]})),(0,r.Z)(ct,at,(function(e,t,n){var r=(0,i.Z)(e,4),o=r[1],a=r[2],s=r[3],c=(n||{}).plain;if(!o)return null;return[-999,a,L(o,s,a,{"data-rc-order":"prependQueue","data-rc-priority":"".concat(-999)},c)]}));function ut(e){return e.notSplit=!0,e}ut(["borderTop","borderBottom"]),ut(["borderTop"]),ut(["borderBottom"]),ut(["borderLeft","borderRight"]),ut(["borderLeft"]),ut(["borderRight"])},3017:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r=(0,n(7294).createContext)({})},6500:(e,t,n)=>{"use strict";n.d(t,{T6:()=>h,VD:()=>v,WE:()=>u,Yt:()=>p,lC:()=>o,py:()=>c,rW:()=>i,s:()=>f,ve:()=>s,vq:()=>l});var r=n(279);function i(e,t,n){return{r:255*(0,r.sh)(e,255),g:255*(0,r.sh)(t,255),b:255*(0,r.sh)(n,255)}}function o(e,t,n){e=(0,r.sh)(e,255),t=(0,r.sh)(t,255),n=(0,r.sh)(n,255);var i=Math.max(e,t,n),o=Math.min(e,t,n),a=0,s=0,c=(i+o)/2;if(i===o)s=0,a=0;else{var u=i-o;switch(s=c>.5?u/(2-i-o):u/(i+o),i){case e:a=(t-n)/u+(t1&&(n-=1),n<1/6?e+6*n*(t-e):n<.5?t:n<2/3?e+(t-e)*(2/3-n)*6:e}function s(e,t,n){var i,o,s;if(e=(0,r.sh)(e,360),t=(0,r.sh)(t,100),n=(0,r.sh)(n,100),0===t)o=n,s=n,i=n;else{var c=n<.5?n*(1+t):n+t-n*t,u=2*n-c;i=a(u,c,e+1/3),o=a(u,c,e),s=a(u,c,e-1/3)}return{r:255*i,g:255*o,b:255*s}}function c(e,t,n){e=(0,r.sh)(e,255),t=(0,r.sh)(t,255),n=(0,r.sh)(n,255);var i=Math.max(e,t,n),o=Math.min(e,t,n),a=0,s=i,c=i-o,u=0===i?0:c/i;if(i===o)a=0;else{switch(i){case e:a=(t-n)/c+(t>16,g:(65280&e)>>8,b:255&e}}},8701:(e,t,n)=>{"use strict";n.d(t,{R:()=>r});var r={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",goldenrod:"#daa520",gold:"#ffd700",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavenderblush:"#fff0f5",lavender:"#e6e6fa",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"}},1350:(e,t,n)=>{"use strict";n.d(t,{uA:()=>a});var r=n(6500),i=n(8701),o=n(279);function a(e){var t={r:0,g:0,b:0},n=1,a=null,s=null,c=null,u=!1,d=!1;return"string"==typeof e&&(e=function(e){if(e=e.trim().toLowerCase(),0===e.length)return!1;var t=!1;if(i.R[e])e=i.R[e],t=!0;else if("transparent"===e)return{r:0,g:0,b:0,a:0,format:"name"};var n=l.rgb.exec(e);if(n)return{r:n[1],g:n[2],b:n[3]};if(n=l.rgba.exec(e),n)return{r:n[1],g:n[2],b:n[3],a:n[4]};if(n=l.hsl.exec(e),n)return{h:n[1],s:n[2],l:n[3]};if(n=l.hsla.exec(e),n)return{h:n[1],s:n[2],l:n[3],a:n[4]};if(n=l.hsv.exec(e),n)return{h:n[1],s:n[2],v:n[3]};if(n=l.hsva.exec(e),n)return{h:n[1],s:n[2],v:n[3],a:n[4]};if(n=l.hex8.exec(e),n)return{r:(0,r.VD)(n[1]),g:(0,r.VD)(n[2]),b:(0,r.VD)(n[3]),a:(0,r.T6)(n[4]),format:t?"name":"hex8"};if(n=l.hex6.exec(e),n)return{r:(0,r.VD)(n[1]),g:(0,r.VD)(n[2]),b:(0,r.VD)(n[3]),format:t?"name":"hex"};if(n=l.hex4.exec(e),n)return{r:(0,r.VD)(n[1]+n[1]),g:(0,r.VD)(n[2]+n[2]),b:(0,r.VD)(n[3]+n[3]),a:(0,r.T6)(n[4]+n[4]),format:t?"name":"hex8"};if(n=l.hex3.exec(e),n)return{r:(0,r.VD)(n[1]+n[1]),g:(0,r.VD)(n[2]+n[2]),b:(0,r.VD)(n[3]+n[3]),format:t?"name":"hex"};return!1}(e)),"object"==typeof e&&(f(e.r)&&f(e.g)&&f(e.b)?(t=(0,r.rW)(e.r,e.g,e.b),u=!0,d="%"===String(e.r).substr(-1)?"prgb":"rgb"):f(e.h)&&f(e.s)&&f(e.v)?(a=(0,o.JX)(e.s),s=(0,o.JX)(e.v),t=(0,r.WE)(e.h,a,s),u=!0,d="hsv"):f(e.h)&&f(e.s)&&f(e.l)&&(a=(0,o.JX)(e.s),c=(0,o.JX)(e.l),t=(0,r.ve)(e.h,a,c),u=!0,d="hsl"),Object.prototype.hasOwnProperty.call(e,"a")&&(n=e.a)),n=(0,o.Yq)(n),{ok:u,format:e.format||d,r:Math.min(255,Math.max(t.r,0)),g:Math.min(255,Math.max(t.g,0)),b:Math.min(255,Math.max(t.b,0)),a:n}}var s="(?:".concat("[-\\+]?\\d*\\.\\d+%?",")|(?:").concat("[-\\+]?\\d+%?",")"),c="[\\s|\\(]+(".concat(s,")[,|\\s]+(").concat(s,")[,|\\s]+(").concat(s,")\\s*\\)?"),u="[\\s|\\(]+(".concat(s,")[,|\\s]+(").concat(s,")[,|\\s]+(").concat(s,")[,|\\s]+(").concat(s,")\\s*\\)?"),l={CSS_UNIT:new RegExp(s),rgb:new RegExp("rgb"+c),rgba:new RegExp("rgba"+u),hsl:new RegExp("hsl"+c),hsla:new RegExp("hsla"+u),hsv:new RegExp("hsv"+c),hsva:new RegExp("hsva"+u),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/};function f(e){return Boolean(l.CSS_UNIT.exec(String(e)))}},274:(e,t,n)=>{"use strict";n.d(t,{C:()=>s});var r=n(6500),i=n(8701),o=n(1350),a=n(279),s=function(){function e(t,n){var i;if(void 0===t&&(t=""),void 0===n&&(n={}),t instanceof e)return t;"number"==typeof t&&(t=(0,r.Yt)(t)),this.originalInput=t;var a=(0,o.uA)(t);this.originalInput=t,this.r=a.r,this.g=a.g,this.b=a.b,this.a=a.a,this.roundA=Math.round(100*this.a)/100,this.format=null!==(i=n.format)&&void 0!==i?i:a.format,this.gradientType=n.gradientType,this.r<1&&(this.r=Math.round(this.r)),this.g<1&&(this.g=Math.round(this.g)),this.b<1&&(this.b=Math.round(this.b)),this.isValid=a.ok}return e.prototype.isDark=function(){return this.getBrightness()<128},e.prototype.isLight=function(){return!this.isDark()},e.prototype.getBrightness=function(){var e=this.toRgb();return(299*e.r+587*e.g+114*e.b)/1e3},e.prototype.getLuminance=function(){var e=this.toRgb(),t=e.r/255,n=e.g/255,r=e.b/255;return.2126*(t<=.03928?t/12.92:Math.pow((t+.055)/1.055,2.4))+.7152*(n<=.03928?n/12.92:Math.pow((n+.055)/1.055,2.4))+.0722*(r<=.03928?r/12.92:Math.pow((r+.055)/1.055,2.4))},e.prototype.getAlpha=function(){return this.a},e.prototype.setAlpha=function(e){return this.a=(0,a.Yq)(e),this.roundA=Math.round(100*this.a)/100,this},e.prototype.isMonochrome=function(){return 0===this.toHsl().s},e.prototype.toHsv=function(){var e=(0,r.py)(this.r,this.g,this.b);return{h:360*e.h,s:e.s,v:e.v,a:this.a}},e.prototype.toHsvString=function(){var e=(0,r.py)(this.r,this.g,this.b),t=Math.round(360*e.h),n=Math.round(100*e.s),i=Math.round(100*e.v);return 1===this.a?"hsv(".concat(t,", ").concat(n,"%, ").concat(i,"%)"):"hsva(".concat(t,", ").concat(n,"%, ").concat(i,"%, ").concat(this.roundA,")")},e.prototype.toHsl=function(){var e=(0,r.lC)(this.r,this.g,this.b);return{h:360*e.h,s:e.s,l:e.l,a:this.a}},e.prototype.toHslString=function(){var e=(0,r.lC)(this.r,this.g,this.b),t=Math.round(360*e.h),n=Math.round(100*e.s),i=Math.round(100*e.l);return 1===this.a?"hsl(".concat(t,", ").concat(n,"%, ").concat(i,"%)"):"hsla(".concat(t,", ").concat(n,"%, ").concat(i,"%, ").concat(this.roundA,")")},e.prototype.toHex=function(e){return void 0===e&&(e=!1),(0,r.vq)(this.r,this.g,this.b,e)},e.prototype.toHexString=function(e){return void 0===e&&(e=!1),"#"+this.toHex(e)},e.prototype.toHex8=function(e){return void 0===e&&(e=!1),(0,r.s)(this.r,this.g,this.b,this.a,e)},e.prototype.toHex8String=function(e){return void 0===e&&(e=!1),"#"+this.toHex8(e)},e.prototype.toHexShortString=function(e){return void 0===e&&(e=!1),1===this.a?this.toHexString(e):this.toHex8String(e)},e.prototype.toRgb=function(){return{r:Math.round(this.r),g:Math.round(this.g),b:Math.round(this.b),a:this.a}},e.prototype.toRgbString=function(){var e=Math.round(this.r),t=Math.round(this.g),n=Math.round(this.b);return 1===this.a?"rgb(".concat(e,", ").concat(t,", ").concat(n,")"):"rgba(".concat(e,", ").concat(t,", ").concat(n,", ").concat(this.roundA,")")},e.prototype.toPercentageRgb=function(){var e=function(e){return"".concat(Math.round(100*(0,a.sh)(e,255)),"%")};return{r:e(this.r),g:e(this.g),b:e(this.b),a:this.a}},e.prototype.toPercentageRgbString=function(){var e=function(e){return Math.round(100*(0,a.sh)(e,255))};return 1===this.a?"rgb(".concat(e(this.r),"%, ").concat(e(this.g),"%, ").concat(e(this.b),"%)"):"rgba(".concat(e(this.r),"%, ").concat(e(this.g),"%, ").concat(e(this.b),"%, ").concat(this.roundA,")")},e.prototype.toName=function(){if(0===this.a)return"transparent";if(this.a<1)return!1;for(var e="#"+(0,r.vq)(this.r,this.g,this.b,!1),t=0,n=Object.entries(i.R);t=0;return t||!r||!e.startsWith("hex")&&"name"!==e?("rgb"===e&&(n=this.toRgbString()),"prgb"===e&&(n=this.toPercentageRgbString()),"hex"!==e&&"hex6"!==e||(n=this.toHexString()),"hex3"===e&&(n=this.toHexString(!0)),"hex4"===e&&(n=this.toHex8String(!0)),"hex8"===e&&(n=this.toHex8String()),"name"===e&&(n=this.toName()),"hsl"===e&&(n=this.toHslString()),"hsv"===e&&(n=this.toHsvString()),n||this.toHexString()):"name"===e&&0===this.a?this.toName():this.toRgbString()},e.prototype.toNumber=function(){return(Math.round(this.r)<<16)+(Math.round(this.g)<<8)+Math.round(this.b)},e.prototype.clone=function(){return new e(this.toString())},e.prototype.lighten=function(t){void 0===t&&(t=10);var n=this.toHsl();return n.l+=t/100,n.l=(0,a.V2)(n.l),new e(n)},e.prototype.brighten=function(t){void 0===t&&(t=10);var n=this.toRgb();return n.r=Math.max(0,Math.min(255,n.r-Math.round(-t/100*255))),n.g=Math.max(0,Math.min(255,n.g-Math.round(-t/100*255))),n.b=Math.max(0,Math.min(255,n.b-Math.round(-t/100*255))),new e(n)},e.prototype.darken=function(t){void 0===t&&(t=10);var n=this.toHsl();return n.l-=t/100,n.l=(0,a.V2)(n.l),new e(n)},e.prototype.tint=function(e){return void 0===e&&(e=10),this.mix("white",e)},e.prototype.shade=function(e){return void 0===e&&(e=10),this.mix("black",e)},e.prototype.desaturate=function(t){void 0===t&&(t=10);var n=this.toHsl();return n.s-=t/100,n.s=(0,a.V2)(n.s),new e(n)},e.prototype.saturate=function(t){void 0===t&&(t=10);var n=this.toHsl();return n.s+=t/100,n.s=(0,a.V2)(n.s),new e(n)},e.prototype.greyscale=function(){return this.desaturate(100)},e.prototype.spin=function(t){var n=this.toHsl(),r=(n.h+t)%360;return n.h=r<0?360+r:r,new e(n)},e.prototype.mix=function(t,n){void 0===n&&(n=50);var r=this.toRgb(),i=new e(t).toRgb(),o=n/100;return new e({r:(i.r-r.r)*o+r.r,g:(i.g-r.g)*o+r.g,b:(i.b-r.b)*o+r.b,a:(i.a-r.a)*o+r.a})},e.prototype.analogous=function(t,n){void 0===t&&(t=6),void 0===n&&(n=30);var r=this.toHsl(),i=360/n,o=[this];for(r.h=(r.h-(i*t>>1)+720)%360;--t;)r.h=(r.h+i)%360,o.push(new e(r));return o},e.prototype.complement=function(){var t=this.toHsl();return t.h=(t.h+180)%360,new e(t)},e.prototype.monochromatic=function(t){void 0===t&&(t=6);for(var n=this.toHsv(),r=n.h,i=n.s,o=n.v,a=[],s=1/t;t--;)a.push(new e({h:r,s:i,v:o})),o=(o+s)%1;return a},e.prototype.splitcomplement=function(){var t=this.toHsl(),n=t.h;return[this,new e({h:(n+72)%360,s:t.s,l:t.l}),new e({h:(n+216)%360,s:t.s,l:t.l})]},e.prototype.onBackground=function(t){var n=this.toRgb(),r=new e(t).toRgb(),i=n.a+r.a*(1-n.a);return new e({r:(n.r*n.a+r.r*r.a*(1-n.a))/i,g:(n.g*n.a+r.g*r.a*(1-n.a))/i,b:(n.b*n.a+r.b*r.a*(1-n.a))/i,a:i})},e.prototype.triad=function(){return this.polyad(3)},e.prototype.tetrad=function(){return this.polyad(4)},e.prototype.polyad=function(t){for(var n=this.toHsl(),r=n.h,i=[this],o=360/t,a=1;a{"use strict";function r(e,t){(function(e){return"string"==typeof e&&-1!==e.indexOf(".")&&1===parseFloat(e)})(e)&&(e="100%");var n=function(e){return"string"==typeof e&&-1!==e.indexOf("%")}(e);return e=360===t?e:Math.min(t,Math.max(0,parseFloat(e))),n&&(e=parseInt(String(e*t),10)/100),Math.abs(e-t)<1e-6?1:e=360===t?(e<0?e%t+t:e%t)/parseFloat(String(t)):e%t/parseFloat(String(t))}function i(e){return Math.min(1,Math.max(0,e))}function o(e){return e=parseFloat(e),(isNaN(e)||e<0||e>1)&&(e=1),e}function a(e){return e<=1?"".concat(100*Number(e),"%"):e}function s(e){return 1===e.length?"0"+e:String(e)}n.d(t,{FZ:()=>s,JX:()=>a,V2:()=>i,Yq:()=>o,sh:()=>r})},4769:(e,t,n)=>{"use strict";n.d(t,{Z:()=>D});var r=n(9875),i=n.n(r),o=n(2550);var a=n(7294),s=n.t(a,2),c=n(3124);const{isValidElement:u}=s;function l(e,t){return function(e,t,n){return u(e)?a.cloneElement(e,"function"==typeof n?n(e.props||{}):n):t}(e,e,t)}var f=n(1945);const d=e=>{const{componentCls:t,colorPrimary:n}=e;return{[t]:{position:"absolute",background:"transparent",pointerEvents:"none",boxSizing:"border-box",color:`var(--wave-color, ${n})`,boxShadow:"0 0 0 0 currentcolor",opacity:.2,"&.wave-motion-appear":{transition:[`box-shadow 0.4s ${e.motionEaseOutCirc}`,`opacity 2s ${e.motionEaseOutCirc}`].join(","),"&-active":{boxShadow:"0 0 0 6px currentcolor",opacity:0},"&.wave-quick":{transition:[`box-shadow 0.3s ${e.motionEaseInOut}`,`opacity 0.35s ${e.motionEaseInOut}`].join(",")}}}}},h=(0,f.ZP)("Wave",(e=>[d(e)]));var v,p=n(6790),g=n(5164),m=n(9182),y=n(4165),b=n(5861),_=n(1002),w=n(1413),x=n(3935),S=n.t(x,2),O=(0,w.Z)({},S),k=O.version,E=O.render,Z=O.unmountComponentAtNode;try{Number((k||"").split(".")[0])>=18&&(v=O.createRoot)}catch(H){}function C(e){var t=O.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;t&&"object"===(0,_.Z)(t)&&(t.usingClientEntryPoint=e)}var A="__rc_react_root__";function P(e,t){v?function(e,t){C(!0);var n=t[A]||v(t);C(!1),n.render(e),t[A]=n}(e,t):function(e,t){E(e,t)}(e,t)}function j(e){return F.apply(this,arguments)}function F(){return(F=(0,b.Z)((0,y.Z)().mark((function e(t){return(0,y.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",Promise.resolve().then((function(){var e;null===(e=t[A])||void 0===e||e.unmount(),delete t[A]})));case 1:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function M(e){Z(e)}function T(){return(T=(0,b.Z)((0,y.Z)().mark((function e(t){return(0,y.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(void 0===v){e.next=2;break}return e.abrupt("return",j(t));case 2:M(t);case 3:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function R(e){return e&&"#fff"!==e&&"#ffffff"!==e&&"rgb(255, 255, 255)"!==e&&"rgba(255, 255, 255, 1)"!==e&&function(e){const t=(e||"").match(/rgba?\((\d*), (\d*), (\d*)(, [\d.]*)?\)/);return!(t&&t[1]&&t[2]&&t[3]&&t[1]===t[2]&&t[2]===t[3])}(e)&&!/rgba\((?:\d*, ){3}0\)/.test(e)&&"transparent"!==e}var N=n(7415);function $(e){return Number.isNaN(e)?0:e}const I=e=>{const{className:t,target:n,component:r}=e,o=a.useRef(null),[s,c]=a.useState(null),[u,l]=a.useState([]),[f,d]=a.useState(0),[h,v]=a.useState(0),[p,y]=a.useState(0),[b,_]=a.useState(0),[w,x]=a.useState(!1),S={left:f,top:h,width:p,height:b,borderRadius:u.map((e=>`${e}px`)).join(" ")};function O(){const e=getComputedStyle(n);c(function(e){const{borderTopColor:t,borderColor:n,backgroundColor:r}=getComputedStyle(e);return R(t)?t:R(n)?n:R(r)?r:null}(n));const t="static"===e.position,{borderLeftWidth:r,borderTopWidth:i}=e;d(t?n.offsetLeft:$(-parseFloat(r))),v(t?n.offsetTop:$(-parseFloat(i))),y(n.offsetWidth),_(n.offsetHeight);const{borderTopLeftRadius:o,borderTopRightRadius:a,borderBottomLeftRadius:s,borderBottomRightRadius:u}=e;l([o,a,u,s].map((e=>$(parseFloat(e)))))}if(s&&(S["--wave-color"]=s),a.useEffect((()=>{if(n){const e=(0,g.Z)((()=>{O(),x(!0)}));let t;return"undefined"!=typeof ResizeObserver&&(t=new ResizeObserver(O),t.observe(n)),()=>{g.Z.cancel(e),null==t||t.disconnect()}}}),[]),!w)return null;const k=("Checkbox"===r||"Radio"===r)&&(null==n?void 0:n.classList.contains(N.A));return a.createElement(m.ZP,{visible:!0,motionAppear:!0,motionName:"wave-motion",motionDeadline:5e3,onAppearEnd:(e,t)=>{var n;if(t.deadline||"opacity"===t.propertyName){const e=null===(n=o.current)||void 0===n?void 0:n.parentElement;(function(e){return T.apply(this,arguments)})(e).then((()=>{null==e||e.remove()}))}return!1}},(e=>{let{className:n}=e;return a.createElement("div",{ref:o,className:i()(t,{"wave-quick":k},n),style:S})}))},L=(e,t)=>{var n;const{component:r}=t;if("Checkbox"===r&&!(null===(n=e.querySelector("input"))||void 0===n?void 0:n.checked))return;const i=document.createElement("div");i.style.position="absolute",i.style.left="0px",i.style.top="0px",null==e||e.insertBefore(i,null==e?void 0:e.firstChild),P(a.createElement(I,Object.assign({},t,{target:e})),i)};var V=n(5976);const D=e=>{const{children:t,disabled:n,component:r}=e,{getPrefixCls:s}=(0,a.useContext)(c.E_),u=(0,a.useRef)(null),f=s("wave"),[,d]=h(f),v=function(e,t,n){const{wave:r}=a.useContext(c.E_),[,i,o]=(0,V.ZP)(),s=(0,p.zX)((a=>{const s=e.current;if((null==r?void 0:r.disabled)||!s)return;const c=s.querySelector(`.${N.A}`)||s,{showEffect:u}=r||{};(u||L)(c,{className:t,token:i,component:n,event:a,hashId:o})})),u=a.useRef();return e=>{g.Z.cancel(u.current),u.current=(0,g.Z)((()=>{s(e)}))}}(u,i()(f,d),r);if(a.useEffect((()=>{const e=u.current;if(!e||1!==e.nodeType||n)return;const t=t=>{!function(e){if(!e)return!1;if(e instanceof Element){if(e.offsetParent)return!0;if(e.getBBox){var t=e.getBBox(),n=t.width,r=t.height;if(n||r)return!0}if(e.getBoundingClientRect){var i=e.getBoundingClientRect(),o=i.width,a=i.height;if(o||a)return!0}}return!1}(t.target)||!e.getAttribute||e.getAttribute("disabled")||e.disabled||e.className.includes("disabled")||e.className.includes("-leave")||v(t)};return e.addEventListener("click",t,!0),()=>{e.removeEventListener("click",t,!0)}}),[n]),!a.isValidElement(t))return null!=t?t:null;return l(t,{ref:(0,o.Yr)(t)?(0,o.sQ)(t.ref,u):u})}},7415:(e,t,n)=>{"use strict";n.d(t,{A:()=>r});const r="ant-wave-target"},2407:(e,t,n)=>{"use strict";n.d(t,{Z:()=>ht});var r=n(7294),i=n(9875),o=n.n(i),a=n(7462),s=n(1413),c=n(4942),u=n(7685),l=n(5987),f=n(1770),d=["prefixCls","className","style","checked","disabled","defaultChecked","type","title","onChange"],h=(0,r.forwardRef)((function(e,t){var n,i=e.prefixCls,h=void 0===i?"rc-checkbox":i,v=e.className,p=e.style,g=e.checked,m=e.disabled,y=e.defaultChecked,b=void 0!==y&&y,_=e.type,w=void 0===_?"checkbox":_,x=e.title,S=e.onChange,O=(0,l.Z)(e,d),k=(0,r.useRef)(null),E=(0,f.Z)(b,{value:g}),Z=(0,u.Z)(E,2),C=Z[0],A=Z[1];(0,r.useImperativeHandle)(t,(function(){return{focus:function(){var e;null===(e=k.current)||void 0===e||e.focus()},blur:function(){var e;null===(e=k.current)||void 0===e||e.blur()},input:k.current}}));var P=o()(h,v,(n={},(0,c.Z)(n,"".concat(h,"-checked"),C),(0,c.Z)(n,"".concat(h,"-disabled"),m),n));return r.createElement("span",{className:P,title:x,style:p},r.createElement("input",(0,a.Z)({},O,{className:"".concat(h,"-input"),ref:k,onChange:function(t){m||("checked"in e||A(t.target.checked),null==S||S({target:(0,s.Z)((0,s.Z)({},e),{},{type:w,checked:t.target.checked}),stopPropagation:function(){t.stopPropagation()},preventDefault:function(){t.preventDefault()},nativeEvent:t.nativeEvent}))},disabled:m,checked:!!C,type:w})),r.createElement("span",{className:"".concat(h,"-inner")}))}));const v=h;var p=n(4769),g=n(7415),m=n(3124),y=n(8866),b=n(5976);const _=e=>{const[,,,,t]=(0,b.ZP)();return t?`${e}-css-var`:""};var w=n(4165),x=n(5861),S=n(4902),O=n(5671),k=n(3144),E=n(7326),Z=n(136),C=n(3568),A=n(1805);function P(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=[];return r.Children.forEach(e,(function(e){(null!=e||t.keepEmpty)&&(Array.isArray(e)?n=n.concat(P(e)):(0,A.isFragment)(e)&&e.props?n=n.concat(P(e.props.children,t)):n.push(e))})),n}var j=n(1881),F=n(334),M="RC_FORM_INTERNAL_HOOKS",T=function(){(0,F.ZP)(!1,"Can not find FormContext. Please make sure you wrap Field under Form.")};const R=r.createContext({getFieldValue:T,getFieldsValue:T,getFieldError:T,getFieldWarning:T,getFieldsError:T,isFieldsTouched:T,isFieldTouched:T,isFieldValidating:T,isFieldsValidating:T,resetFields:T,setFields:T,setFieldValue:T,setFieldsValue:T,validateFields:T,submit:T,getInternalHooks:function(){return T(),{dispatch:T,initEntityValue:T,registerField:T,useSubscribe:T,setInitialValues:T,destroyForm:T,setCallbacks:T,registerWatch:T,getFields:T,setValidateMessages:T,setPreserve:T,getInitialValue:T}}});const N=r.createContext(null);function $(e){return null==e?[]:Array.isArray(e)?e:[e]}function I(){return I=Object.assign?Object.assign.bind():function(e){for(var t=1;t1?t-1:0),r=1;r=o)return e;switch(e){case"%s":return String(n[i++]);case"%d":return Number(n[i++]);case"%j":try{return JSON.stringify(n[i++])}catch(t){return"[Circular]"}break;default:return e}})):e}function U(e,t){return null==e||(!("array"!==t||!Array.isArray(e)||e.length)||!(!function(e){return"string"===e||"url"===e||"hex"===e||"email"===e||"date"===e||"pattern"===e}(t)||"string"!=typeof e||e))}function W(e,t,n){var r=0,i=e.length;!function o(a){if(a&&a.length)n(a);else{var s=r;r+=1,s()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+\.)+[a-zA-Z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]{2,}))$/,te=/^#?([a-f0-9]{6}|[a-f0-9]{3})$/i,ne={integer:function(e){return ne.number(e)&&parseInt(e,10)===e},float:function(e){return ne.number(e)&&!ne.integer(e)},array:function(e){return Array.isArray(e)},regexp:function(e){if(e instanceof RegExp)return!0;try{return!!new RegExp(e)}catch(t){return!1}},date:function(e){return"function"==typeof e.getTime&&"function"==typeof e.getMonth&&"function"==typeof e.getYear&&!isNaN(e.getTime())},number:function(e){return!isNaN(e)&&"number"==typeof e},object:function(e){return"object"==typeof e&&!ne.array(e)},method:function(e){return"function"==typeof e},email:function(e){return"string"==typeof e&&e.length<=320&&!!e.match(ee)},url:function(e){return"string"==typeof e&&e.length<=2048&&!!e.match(function(){if(Q)return Q;var e="[a-fA-F\\d:]",t=function(t){return t&&t.includeBoundaries?"(?:(?<=\\s|^)(?="+e+")|(?<="+e+")(?=\\s|$))":""},n="(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}",r="[a-fA-F\\d]{1,4}",i=("\n(?:\n(?:"+r+":){7}(?:"+r+"|:)| // 1:2:3:4:5:6:7:: 1:2:3:4:5:6:7:8\n(?:"+r+":){6}(?:"+n+"|:"+r+"|:)| // 1:2:3:4:5:6:: 1:2:3:4:5:6::8 1:2:3:4:5:6::8 1:2:3:4:5:6::1.2.3.4\n(?:"+r+":){5}(?::"+n+"|(?::"+r+"){1,2}|:)| // 1:2:3:4:5:: 1:2:3:4:5::7:8 1:2:3:4:5::8 1:2:3:4:5::7:1.2.3.4\n(?:"+r+":){4}(?:(?::"+r+"){0,1}:"+n+"|(?::"+r+"){1,3}|:)| // 1:2:3:4:: 1:2:3:4::6:7:8 1:2:3:4::8 1:2:3:4::6:7:1.2.3.4\n(?:"+r+":){3}(?:(?::"+r+"){0,2}:"+n+"|(?::"+r+"){1,4}|:)| // 1:2:3:: 1:2:3::5:6:7:8 1:2:3::8 1:2:3::5:6:7:1.2.3.4\n(?:"+r+":){2}(?:(?::"+r+"){0,3}:"+n+"|(?::"+r+"){1,5}|:)| // 1:2:: 1:2::4:5:6:7:8 1:2::8 1:2::4:5:6:7:1.2.3.4\n(?:"+r+":){1}(?:(?::"+r+"){0,4}:"+n+"|(?::"+r+"){1,6}|:)| // 1:: 1::3:4:5:6:7:8 1::8 1::3:4:5:6:7:1.2.3.4\n(?::(?:(?::"+r+"){0,5}:"+n+"|(?::"+r+"){1,7}|:)) // ::2:3:4:5:6:7:8 ::2:3:4:5:6:7:8 ::8 ::1.2.3.4\n)(?:%[0-9a-zA-Z]{1,})? // %eth0 %1\n").replace(/\s*\/\/.*$/gm,"").replace(/\n/g,"").trim(),o=new RegExp("(?:^"+n+"$)|(?:^"+i+"$)"),a=new RegExp("^"+n+"$"),s=new RegExp("^"+i+"$"),c=function(e){return e&&e.exact?o:new RegExp("(?:"+t(e)+n+t(e)+")|(?:"+t(e)+i+t(e)+")","g")};c.v4=function(e){return e&&e.exact?a:new RegExp(""+t(e)+n+t(e),"g")},c.v6=function(e){return e&&e.exact?s:new RegExp(""+t(e)+i+t(e),"g")};var u=c.v4().source,l=c.v6().source;return Q=new RegExp("(?:^(?:(?:(?:[a-z]+:)?//)|www\\.)(?:\\S+(?::\\S*)?@)?(?:localhost|"+u+"|"+l+'|(?:(?:[a-z\\u00a1-\\uffff0-9][-_]*)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))(?::\\d{2,5})?(?:[/?#][^\\s"]*)?$)',"i")}())},hex:function(e){return"string"==typeof e&&!!e.match(te)}},re="enum",ie={required:J,whitespace:function(e,t,n,r,i){(/^\s+$/.test(t)||""===t)&&r.push(q(i.messages.whitespace,e.fullField))},type:function(e,t,n,r,i){if(e.required&&void 0===t)J(e,t,n,r,i);else{var o=e.type;["integer","float","array","regexp","object","method","email","number","date","url","hex"].indexOf(o)>-1?ne[o](t)||r.push(q(i.messages.types[o],e.fullField,e.type)):o&&typeof t!==e.type&&r.push(q(i.messages.types[o],e.fullField,e.type))}},range:function(e,t,n,r,i){var o="number"==typeof e.len,a="number"==typeof e.min,s="number"==typeof e.max,c=t,u=null,l="number"==typeof t,f="string"==typeof t,d=Array.isArray(t);if(l?u="number":f?u="string":d&&(u="array"),!u)return!1;d&&(c=t.length),f&&(c=t.replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,"_").length),o?c!==e.len&&r.push(q(i.messages[u].len,e.fullField,e.len)):a&&!s&&ce.max?r.push(q(i.messages[u].max,e.fullField,e.max)):a&&s&&(ce.max)&&r.push(q(i.messages[u].range,e.fullField,e.min,e.max))},enum:function(e,t,n,r,i){e[re]=Array.isArray(e[re])?e[re]:[],-1===e[re].indexOf(t)&&r.push(q(i.messages[re],e.fullField,e[re].join(", ")))},pattern:function(e,t,n,r,i){if(e.pattern)if(e.pattern instanceof RegExp)e.pattern.lastIndex=0,e.pattern.test(t)||r.push(q(i.messages.pattern.mismatch,e.fullField,t,e.pattern));else if("string"==typeof e.pattern){new RegExp(e.pattern).test(t)||r.push(q(i.messages.pattern.mismatch,e.fullField,t,e.pattern))}}},oe=function(e,t,n,r,i){var o=e.type,a=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if(U(t,o)&&!e.required)return n();ie.required(e,t,r,a,i,o),U(t,o)||ie.type(e,t,r,a,i)}n(a)},ae={string:function(e,t,n,r,i){var o=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if(U(t,"string")&&!e.required)return n();ie.required(e,t,r,o,i,"string"),U(t,"string")||(ie.type(e,t,r,o,i),ie.range(e,t,r,o,i),ie.pattern(e,t,r,o,i),!0===e.whitespace&&ie.whitespace(e,t,r,o,i))}n(o)},method:function(e,t,n,r,i){var o=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if(U(t)&&!e.required)return n();ie.required(e,t,r,o,i),void 0!==t&&ie.type(e,t,r,o,i)}n(o)},number:function(e,t,n,r,i){var o=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if(""===t&&(t=void 0),U(t)&&!e.required)return n();ie.required(e,t,r,o,i),void 0!==t&&(ie.type(e,t,r,o,i),ie.range(e,t,r,o,i))}n(o)},boolean:function(e,t,n,r,i){var o=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if(U(t)&&!e.required)return n();ie.required(e,t,r,o,i),void 0!==t&&ie.type(e,t,r,o,i)}n(o)},regexp:function(e,t,n,r,i){var o=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if(U(t)&&!e.required)return n();ie.required(e,t,r,o,i),U(t)||ie.type(e,t,r,o,i)}n(o)},integer:function(e,t,n,r,i){var o=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if(U(t)&&!e.required)return n();ie.required(e,t,r,o,i),void 0!==t&&(ie.type(e,t,r,o,i),ie.range(e,t,r,o,i))}n(o)},float:function(e,t,n,r,i){var o=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if(U(t)&&!e.required)return n();ie.required(e,t,r,o,i),void 0!==t&&(ie.type(e,t,r,o,i),ie.range(e,t,r,o,i))}n(o)},array:function(e,t,n,r,i){var o=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if(null==t&&!e.required)return n();ie.required(e,t,r,o,i,"array"),null!=t&&(ie.type(e,t,r,o,i),ie.range(e,t,r,o,i))}n(o)},object:function(e,t,n,r,i){var o=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if(U(t)&&!e.required)return n();ie.required(e,t,r,o,i),void 0!==t&&ie.type(e,t,r,o,i)}n(o)},enum:function(e,t,n,r,i){var o=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if(U(t)&&!e.required)return n();ie.required(e,t,r,o,i),void 0!==t&&ie.enum(e,t,r,o,i)}n(o)},pattern:function(e,t,n,r,i){var o=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if(U(t,"string")&&!e.required)return n();ie.required(e,t,r,o,i),U(t,"string")||ie.pattern(e,t,r,o,i)}n(o)},date:function(e,t,n,r,i){var o=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if(U(t,"date")&&!e.required)return n();var a;if(ie.required(e,t,r,o,i),!U(t,"date"))a=t instanceof Date?t:new Date(t),ie.type(e,a,r,o,i),a&&ie.range(e,a.getTime(),r,o,i)}n(o)},url:oe,hex:oe,email:oe,required:function(e,t,n,r,i){var o=[],a=Array.isArray(t)?"array":typeof t;ie.required(e,t,r,o,i,a),n(o)},any:function(e,t,n,r,i){var o=[];if(e.required||!e.required&&r.hasOwnProperty(e.field)){if(U(t)&&!e.required)return n();ie.required(e,t,r,o,i)}n(o)}};function se(){return{default:"Validation error on field %s",required:"%s is required",enum:"%s must be one of %s",whitespace:"%s cannot be empty",date:{format:"%s date %s is invalid for format %s",parse:"%s date could not be parsed, %s is invalid ",invalid:"%s date %s is invalid"},types:{string:"%s is not a %s",method:"%s is not a %s (function)",array:"%s is not an %s",object:"%s is not an %s",number:"%s is not a %s",date:"%s is not a %s",boolean:"%s is not a %s",integer:"%s is not an %s",float:"%s is not a %s",regexp:"%s is not a valid %s",email:"%s is not a valid %s",url:"%s is not a valid %s",hex:"%s is not a valid %s"},string:{len:"%s must be exactly %s characters",min:"%s must be at least %s characters",max:"%s cannot be longer than %s characters",range:"%s must be between %s and %s characters"},number:{len:"%s must equal %s",min:"%s cannot be less than %s",max:"%s cannot be greater than %s",range:"%s must be between %s and %s"},array:{len:"%s must be exactly %s in length",min:"%s cannot be less than %s in length",max:"%s cannot be greater than %s in length",range:"%s must be between %s and %s in length"},pattern:{mismatch:"%s value %s does not match pattern %s"},clone:function(){var e=JSON.parse(JSON.stringify(this));return e.clone=this.clone,e}}}var ce=se(),ue=function(){function e(e){this.rules=null,this._messages=ce,this.define(e)}var t=e.prototype;return t.define=function(e){var t=this;if(!e)throw new Error("Cannot configure a schema with no rules");if("object"!=typeof e||Array.isArray(e))throw new Error("Rules must be an object");this.rules={},Object.keys(e).forEach((function(n){var r=e[n];t.rules[n]=Array.isArray(r)?r:[r]}))},t.messages=function(e){return e&&(this._messages=Y(se(),e)),this._messages},t.validate=function(t,n,r){var i=this;void 0===n&&(n={}),void 0===r&&(r=function(){});var o=t,a=n,s=r;if("function"==typeof a&&(s=a,a={}),!this.rules||0===Object.keys(this.rules).length)return s&&s(null,o),Promise.resolve(o);if(a.messages){var c=this.messages();c===ce&&(c=se()),Y(c,a.messages),a.messages=c}else a.messages=this.messages();var u={};(a.keys||Object.keys(this.rules)).forEach((function(e){var n=i.rules[e],r=o[e];n.forEach((function(n){var a=n;"function"==typeof a.transform&&(o===t&&(o=I({},o)),r=o[e]=a.transform(r)),(a="function"==typeof a?{validator:a}:I({},a)).validator=i.getValidationMethod(a),a.validator&&(a.field=e,a.fullField=a.fullField||e,a.type=i.getType(a),u[e]=u[e]||[],u[e].push({rule:a,value:r,source:o,field:e}))}))}));var l={};return X(u,a,(function(t,n){var r,i=t.rule,s=!("object"!==i.type&&"array"!==i.type||"object"!=typeof i.fields&&"object"!=typeof i.defaultField);function c(e,t){return I({},t,{fullField:i.fullField+"."+e,fullFields:i.fullFields?[].concat(i.fullFields,[e]):[e]})}function u(r){void 0===r&&(r=[]);var u=Array.isArray(r)?r:[r];!a.suppressWarning&&u.length&&e.warning("async-validator:",u),u.length&&void 0!==i.message&&(u=[].concat(i.message));var f=u.map(K(i,o));if(a.first&&f.length)return l[i.field]=1,n(f);if(s){if(i.required&&!t.value)return void 0!==i.message?f=[].concat(i.message).map(K(i,o)):a.error&&(f=[a.error(i,q(a.messages.required,i.field))]),n(f);var d={};i.defaultField&&Object.keys(t.value).map((function(e){d[e]=i.defaultField})),d=I({},d,t.rule.fields);var h={};Object.keys(d).forEach((function(e){var t=d[e],n=Array.isArray(t)?t:[t];h[e]=n.map(c.bind(null,e))}));var v=new e(h);v.messages(a.messages),t.rule.options&&(t.rule.options.messages=a.messages,t.rule.options.error=a.error),v.validate(t.value,t.rule.options||a,(function(e){var t=[];f&&f.length&&t.push.apply(t,f),e&&e.length&&t.push.apply(t,e),n(t.length?t:null)}))}else n(f)}if(s=s&&(i.required||!i.required&&t.value),i.field=t.field,i.asyncValidator)r=i.asyncValidator(i,t.value,u,t.source,a);else if(i.validator){try{r=i.validator(i,t.value,u,t.source,a)}catch(f){null==console.error||console.error(f),a.suppressValidatorError||setTimeout((function(){throw f}),0),u(f.message)}!0===r?u():!1===r?u("function"==typeof i.message?i.message(i.fullField||i.field):i.message||(i.fullField||i.field)+" fails"):r instanceof Array?u(r):r instanceof Error&&u(r.message)}r&&r.then&&r.then((function(){return u()}),(function(e){return u(e)}))}),(function(e){!function(e){for(var t,n,r=[],i={},a=0;a2&&void 0!==arguments[2]&&arguments[2];return e&&e.some((function(e){return Ee(t,e,n)}))}function Ee(e,t){return!(!e||!t)&&(!(!(arguments.length>2&&void 0!==arguments[2]&&arguments[2])&&e.length!==t.length)&&t.every((function(t,n){return e[n]===t})))}function Ze(e){var t=arguments.length<=1?void 0:arguments[1];return t&&t.target&&"object"===(0,we.Z)(t.target)&&e in t.target?t.target[e]:t}function Ce(e,t,n){var r=e.length;if(t<0||t>=r||n<0||n>=r)return e;var i=e[t],o=t-n;return o>0?[].concat((0,S.Z)(e.slice(0,n)),[i],(0,S.Z)(e.slice(n,t)),(0,S.Z)(e.slice(t+1,r))):o<0?[].concat((0,S.Z)(e.slice(0,t)),(0,S.Z)(e.slice(t+1,n+1)),[i],(0,S.Z)(e.slice(n+1,r))):e}var Ae=["name"],Pe=[];function je(e,t,n,r,i,o){return"function"==typeof e?e(t,n,"source"in o?{source:o.source}:{}):r!==i}var Fe=function(e){(0,Z.Z)(n,e);var t=(0,C.Z)(n);function n(e){var i;((0,O.Z)(this,n),i=t.call(this,e),(0,c.Z)((0,E.Z)(i),"state",{resetCount:0}),(0,c.Z)((0,E.Z)(i),"cancelRegisterFunc",null),(0,c.Z)((0,E.Z)(i),"mounted",!1),(0,c.Z)((0,E.Z)(i),"touched",!1),(0,c.Z)((0,E.Z)(i),"dirty",!1),(0,c.Z)((0,E.Z)(i),"validatePromise",void 0),(0,c.Z)((0,E.Z)(i),"prevValidating",void 0),(0,c.Z)((0,E.Z)(i),"errors",Pe),(0,c.Z)((0,E.Z)(i),"warnings",Pe),(0,c.Z)((0,E.Z)(i),"cancelRegister",(function(){var e=i.props,t=e.preserve,n=e.isListField,r=e.name;i.cancelRegisterFunc&&i.cancelRegisterFunc(n,t,Se(r)),i.cancelRegisterFunc=null})),(0,c.Z)((0,E.Z)(i),"getNamePath",(function(){var e=i.props,t=e.name,n=e.fieldContext.prefixName,r=void 0===n?[]:n;return void 0!==t?[].concat((0,S.Z)(r),(0,S.Z)(t)):[]})),(0,c.Z)((0,E.Z)(i),"getRules",(function(){var e=i.props,t=e.rules,n=void 0===t?[]:t,r=e.fieldContext;return n.map((function(e){return"function"==typeof e?e(r):e}))})),(0,c.Z)((0,E.Z)(i),"refresh",(function(){i.mounted&&i.setState((function(e){return{resetCount:e.resetCount+1}}))})),(0,c.Z)((0,E.Z)(i),"metaCache",null),(0,c.Z)((0,E.Z)(i),"triggerMetaEvent",(function(e){var t=i.props.onMetaChange;if(t){var n=(0,s.Z)((0,s.Z)({},i.getMeta()),{},{destroy:e});(0,j.Z)(i.metaCache,n)||t(n),i.metaCache=n}else i.metaCache=null})),(0,c.Z)((0,E.Z)(i),"onStoreChange",(function(e,t,n){var r=i.props,o=r.shouldUpdate,a=r.dependencies,s=void 0===a?[]:a,c=r.onReset,u=n.store,l=i.getNamePath(),f=i.getValue(e),d=i.getValue(u),h=t&&ke(t,l);switch("valueUpdate"===n.type&&"external"===n.source&&f!==d&&(i.touched=!0,i.dirty=!0,i.validatePromise=null,i.errors=Pe,i.warnings=Pe,i.triggerMetaEvent()),n.type){case"reset":if(!t||h)return i.touched=!1,i.dirty=!1,i.validatePromise=void 0,i.errors=Pe,i.warnings=Pe,i.triggerMetaEvent(),null==c||c(),void i.refresh();break;case"remove":if(o)return void i.reRender();break;case"setField":var v=n.data;if(h)return"touched"in v&&(i.touched=v.touched),"validating"in v&&!("originRCField"in v)&&(i.validatePromise=v.validating?Promise.resolve([]):null),"errors"in v&&(i.errors=v.errors||Pe),"warnings"in v&&(i.warnings=v.warnings||Pe),i.dirty=!0,i.triggerMetaEvent(),void i.reRender();if("value"in v&&ke(t,l,!0))return void i.reRender();if(o&&!l.length&&je(o,e,u,f,d,n))return void i.reRender();break;case"dependenciesUpdate":if(s.map(Se).some((function(e){return ke(n.relatedFields,e)})))return void i.reRender();break;default:if(h||(!s.length||l.length||o)&&je(o,e,u,f,d,n))return void i.reRender()}!0===o&&i.reRender()})),(0,c.Z)((0,E.Z)(i),"validateRules",(function(e){var t=i.getNamePath(),n=i.getValue(),r=e||{},o=r.triggerName,a=r.validateOnly,s=void 0!==a&&a,c=Promise.resolve().then((0,x.Z)((0,w.Z)().mark((function r(){var a,s,u,l,f,d,h;return(0,w.Z)().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(i.mounted){r.next=2;break}return r.abrupt("return",[]);case 2:if(a=i.props,s=a.validateFirst,u=void 0!==s&&s,l=a.messageVariables,f=a.validateDebounce,d=i.getRules(),o&&(d=d.filter((function(e){return e})).filter((function(e){var t=e.validateTrigger;return!t||$(t).includes(o)}))),!f||!o){r.next=10;break}return r.next=8,new Promise((function(e){setTimeout(e,f)}));case 8:if(i.validatePromise===c){r.next=10;break}return r.abrupt("return",[]);case 10:return(h=ye(t,n,d,e,u,l)).catch((function(e){return e})).then((function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Pe;if(i.validatePromise===c){var t;i.validatePromise=null;var n=[],r=[];null===(t=e.forEach)||void 0===t||t.call(e,(function(e){var t=e.rule.warningOnly,i=e.errors,o=void 0===i?Pe:i;t?r.push.apply(r,(0,S.Z)(o)):n.push.apply(n,(0,S.Z)(o))})),i.errors=n,i.warnings=r,i.triggerMetaEvent(),i.reRender()}})),r.abrupt("return",h);case 13:case"end":return r.stop()}}),r)}))));return s||(i.validatePromise=c,i.dirty=!0,i.errors=Pe,i.warnings=Pe,i.triggerMetaEvent(),i.reRender()),c})),(0,c.Z)((0,E.Z)(i),"isFieldValidating",(function(){return!!i.validatePromise})),(0,c.Z)((0,E.Z)(i),"isFieldTouched",(function(){return i.touched})),(0,c.Z)((0,E.Z)(i),"isFieldDirty",(function(){return!(!i.dirty&&void 0===i.props.initialValue)||void 0!==(0,i.props.fieldContext.getInternalHooks(M).getInitialValue)(i.getNamePath())})),(0,c.Z)((0,E.Z)(i),"getErrors",(function(){return i.errors})),(0,c.Z)((0,E.Z)(i),"getWarnings",(function(){return i.warnings})),(0,c.Z)((0,E.Z)(i),"isListField",(function(){return i.props.isListField})),(0,c.Z)((0,E.Z)(i),"isList",(function(){return i.props.isList})),(0,c.Z)((0,E.Z)(i),"isPreserve",(function(){return i.props.preserve})),(0,c.Z)((0,E.Z)(i),"getMeta",(function(){return i.prevValidating=i.isFieldValidating(),{touched:i.isFieldTouched(),validating:i.prevValidating,errors:i.errors,warnings:i.warnings,name:i.getNamePath(),validated:null===i.validatePromise}})),(0,c.Z)((0,E.Z)(i),"getOnlyChild",(function(e){if("function"==typeof e){var t=i.getMeta();return(0,s.Z)((0,s.Z)({},i.getOnlyChild(e(i.getControlled(),t,i.props.fieldContext))),{},{isFunction:!0})}var n=P(e);return 1===n.length&&r.isValidElement(n[0])?{child:n[0],isFunction:!1}:{child:n,isFunction:!1}})),(0,c.Z)((0,E.Z)(i),"getValue",(function(e){var t=i.props.fieldContext.getFieldsValue,n=i.getNamePath();return(0,xe.Z)(e||t(!0),n)})),(0,c.Z)((0,E.Z)(i),"getControlled",(function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=i.props,n=t.trigger,r=t.validateTrigger,o=t.getValueFromEvent,a=t.normalize,u=t.valuePropName,l=t.getValueProps,f=t.fieldContext,d=void 0!==r?r:f.validateTrigger,h=i.getNamePath(),v=f.getInternalHooks,p=f.getFieldsValue,g=v(M).dispatch,m=i.getValue(),y=l||function(e){return(0,c.Z)({},u,e)},b=e[n],_=(0,s.Z)((0,s.Z)({},e),y(m));return _[n]=function(){var e;i.touched=!0,i.dirty=!0,i.triggerMetaEvent();for(var t=arguments.length,n=new Array(t),r=0;r=0&&t<=n.length?(f.keys=[].concat((0,S.Z)(f.keys.slice(0,t)),[f.id],(0,S.Z)(f.keys.slice(t))),o([].concat((0,S.Z)(n.slice(0,t)),[e],(0,S.Z)(n.slice(t))))):(f.keys=[].concat((0,S.Z)(f.keys),[f.id]),o([].concat((0,S.Z)(n),[e]))),f.id+=1},remove:function(e){var t=s(),n=new Set(Array.isArray(e)?e:[e]);n.size<=0||(f.keys=f.keys.filter((function(e,t){return!n.has(t)})),o(t.filter((function(e,t){return!n.has(t)}))))},move:function(e,t){if(e!==t){var n=s();e<0||e>=n.length||t<0||t>=n.length||(f.keys=Ce(f.keys,e,t),o(Ce(n,e,t)))}}},l=r||[];return Array.isArray(l)||(l=[]),i(l.map((function(e,t){var n=f.keys[t];return void 0===n&&(f.keys[t]=f.id,n=f.keys[t],f.id+=1),{name:t,key:n,isListField:!0}})),c,t)}))))};var Re="__@field_split__";function Ne(e){return e.map((function(e){return"".concat((0,we.Z)(e),":").concat(e)})).join(Re)}var $e=function(){function e(){(0,O.Z)(this,e),(0,c.Z)(this,"kvs",new Map)}return(0,k.Z)(e,[{key:"set",value:function(e,t){this.kvs.set(Ne(e),t)}},{key:"get",value:function(e){return this.kvs.get(Ne(e))}},{key:"update",value:function(e,t){var n=t(this.get(e));n?this.set(e,n):this.delete(e)}},{key:"delete",value:function(e){this.kvs.delete(Ne(e))}},{key:"map",value:function(e){return(0,S.Z)(this.kvs.entries()).map((function(t){var n=(0,u.Z)(t,2),r=n[0],i=n[1],o=r.split(Re);return e({key:o.map((function(e){var t=e.match(/^([^:]*):(.*)$/),n=(0,u.Z)(t,3),r=n[1],i=n[2];return"number"===r?Number(i):i})),value:i})}))}},{key:"toJSON",value:function(){var e={};return this.map((function(t){var n=t.key,r=t.value;return e[n.join(".")]=r,null})),e}}]),e}();const Ie=$e;var Le=["name"],Ve=(0,k.Z)((function e(t){var n=this;(0,O.Z)(this,e),(0,c.Z)(this,"formHooked",!1),(0,c.Z)(this,"forceRootUpdate",void 0),(0,c.Z)(this,"subscribable",!0),(0,c.Z)(this,"store",{}),(0,c.Z)(this,"fieldEntities",[]),(0,c.Z)(this,"initialValues",{}),(0,c.Z)(this,"callbacks",{}),(0,c.Z)(this,"validateMessages",null),(0,c.Z)(this,"preserve",null),(0,c.Z)(this,"lastValidatePromise",null),(0,c.Z)(this,"getForm",(function(){return{getFieldValue:n.getFieldValue,getFieldsValue:n.getFieldsValue,getFieldError:n.getFieldError,getFieldWarning:n.getFieldWarning,getFieldsError:n.getFieldsError,isFieldsTouched:n.isFieldsTouched,isFieldTouched:n.isFieldTouched,isFieldValidating:n.isFieldValidating,isFieldsValidating:n.isFieldsValidating,resetFields:n.resetFields,setFields:n.setFields,setFieldValue:n.setFieldValue,setFieldsValue:n.setFieldsValue,validateFields:n.validateFields,submit:n.submit,_init:!0,getInternalHooks:n.getInternalHooks}})),(0,c.Z)(this,"getInternalHooks",(function(e){return e===M?(n.formHooked=!0,{dispatch:n.dispatch,initEntityValue:n.initEntityValue,registerField:n.registerField,useSubscribe:n.useSubscribe,setInitialValues:n.setInitialValues,destroyForm:n.destroyForm,setCallbacks:n.setCallbacks,setValidateMessages:n.setValidateMessages,getFields:n.getFields,setPreserve:n.setPreserve,getInitialValue:n.getInitialValue,registerWatch:n.registerWatch}):((0,F.ZP)(!1,"`getInternalHooks` is internal usage. Should not call directly."),null)})),(0,c.Z)(this,"useSubscribe",(function(e){n.subscribable=e})),(0,c.Z)(this,"prevWithoutPreserves",null),(0,c.Z)(this,"setInitialValues",(function(e,t){if(n.initialValues=e||{},t){var r,i=(0,de.T)(e,n.store);null===(r=n.prevWithoutPreserves)||void 0===r||r.map((function(t){var n=t.key;i=(0,de.Z)(i,n,(0,xe.Z)(e,n))})),n.prevWithoutPreserves=null,n.updateStore(i)}})),(0,c.Z)(this,"destroyForm",(function(){var e=new Ie;n.getFieldEntities(!0).forEach((function(t){n.isMergedPreserve(t.isPreserve())||e.set(t.getNamePath(),!0)})),n.prevWithoutPreserves=e})),(0,c.Z)(this,"getInitialValue",(function(e){var t=(0,xe.Z)(n.initialValues,e);return e.length?(0,de.T)(t):t})),(0,c.Z)(this,"setCallbacks",(function(e){n.callbacks=e})),(0,c.Z)(this,"setValidateMessages",(function(e){n.validateMessages=e})),(0,c.Z)(this,"setPreserve",(function(e){n.preserve=e})),(0,c.Z)(this,"watchList",[]),(0,c.Z)(this,"registerWatch",(function(e){return n.watchList.push(e),function(){n.watchList=n.watchList.filter((function(t){return t!==e}))}})),(0,c.Z)(this,"notifyWatch",(function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];if(n.watchList.length){var t=n.getFieldsValue(),r=n.getFieldsValue(!0);n.watchList.forEach((function(n){n(t,r,e)}))}})),(0,c.Z)(this,"timeoutId",null),(0,c.Z)(this,"warningUnhooked",(function(){0})),(0,c.Z)(this,"updateStore",(function(e){n.store=e})),(0,c.Z)(this,"getFieldEntities",(function(){return arguments.length>0&&void 0!==arguments[0]&&arguments[0]?n.fieldEntities.filter((function(e){return e.getNamePath().length})):n.fieldEntities})),(0,c.Z)(this,"getFieldsMap",(function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=new Ie;return n.getFieldEntities(e).forEach((function(e){var n=e.getNamePath();t.set(n,e)})),t})),(0,c.Z)(this,"getFieldEntitiesForNamePathList",(function(e){if(!e)return n.getFieldEntities(!0);var t=n.getFieldsMap(!0);return e.map((function(e){var n=Se(e);return t.get(n)||{INVALIDATE_NAME_PATH:Se(e)}}))})),(0,c.Z)(this,"getFieldsValue",(function(e,t){var r,i,o;if(n.warningUnhooked(),!0===e||Array.isArray(e)?(r=e,i=t):e&&"object"===(0,we.Z)(e)&&(o=e.strict,i=e.filter),!0===r&&!i)return n.store;var a=n.getFieldEntitiesForNamePathList(Array.isArray(r)?r:null),s=[];return a.forEach((function(e){var t,n,a,c,u="INVALIDATE_NAME_PATH"in e?e.INVALIDATE_NAME_PATH:e.getNamePath();if(o){if(null!==(a=(c=e).isList)&&void 0!==a&&a.call(c))return}else if(!r&&null!==(t=(n=e).isListField)&&void 0!==t&&t.call(n))return;if(i){var l="getMeta"in e?e.getMeta():null;i(l)&&s.push(u)}else s.push(u)})),Oe(n.store,s.map(Se))})),(0,c.Z)(this,"getFieldValue",(function(e){n.warningUnhooked();var t=Se(e);return(0,xe.Z)(n.store,t)})),(0,c.Z)(this,"getFieldsError",(function(e){return n.warningUnhooked(),n.getFieldEntitiesForNamePathList(e).map((function(t,n){return t&&!("INVALIDATE_NAME_PATH"in t)?{name:t.getNamePath(),errors:t.getErrors(),warnings:t.getWarnings()}:{name:Se(e[n]),errors:[],warnings:[]}}))})),(0,c.Z)(this,"getFieldError",(function(e){n.warningUnhooked();var t=Se(e);return n.getFieldsError([t])[0].errors})),(0,c.Z)(this,"getFieldWarning",(function(e){n.warningUnhooked();var t=Se(e);return n.getFieldsError([t])[0].warnings})),(0,c.Z)(this,"isFieldsTouched",(function(){n.warningUnhooked();for(var e=arguments.length,t=new Array(e),r=0;r0&&void 0!==arguments[0]?arguments[0]:{},t=new Ie,r=n.getFieldEntities(!0);r.forEach((function(e){var n=e.props.initialValue,r=e.getNamePath();if(void 0!==n){var i=t.get(r)||new Set;i.add({entity:e,value:n}),t.set(r,i)}}));var i;e.entities?i=e.entities:e.namePathList?(i=[],e.namePathList.forEach((function(e){var n,r=t.get(e);r&&(n=i).push.apply(n,(0,S.Z)((0,S.Z)(r).map((function(e){return e.entity}))))}))):i=r,i.forEach((function(r){if(void 0!==r.props.initialValue){var i=r.getNamePath();if(void 0!==n.getInitialValue(i))(0,F.ZP)(!1,"Form already set 'initialValues' with path '".concat(i.join("."),"'. Field can not overwrite it."));else{var o=t.get(i);if(o&&o.size>1)(0,F.ZP)(!1,"Multiple Field with path '".concat(i.join("."),"' set 'initialValue'. Can not decide which one to pick."));else if(o){var a=n.getFieldValue(i);r.isListField()||e.skipExist&&void 0!==a||n.updateStore((0,de.Z)(n.store,i,(0,S.Z)(o)[0].value))}}}}))})),(0,c.Z)(this,"resetFields",(function(e){n.warningUnhooked();var t=n.store;if(!e)return n.updateStore((0,de.T)(n.initialValues)),n.resetWithFieldInitialValue(),n.notifyObservers(t,null,{type:"reset"}),void n.notifyWatch();var r=e.map(Se);r.forEach((function(e){var t=n.getInitialValue(e);n.updateStore((0,de.Z)(n.store,e,t))})),n.resetWithFieldInitialValue({namePathList:r}),n.notifyObservers(t,r,{type:"reset"}),n.notifyWatch(r)})),(0,c.Z)(this,"setFields",(function(e){n.warningUnhooked();var t=n.store,r=[];e.forEach((function(e){var i=e.name,o=(0,l.Z)(e,Le),a=Se(i);r.push(a),"value"in o&&n.updateStore((0,de.Z)(n.store,a,o.value)),n.notifyObservers(t,[a],{type:"setField",data:e})})),n.notifyWatch(r)})),(0,c.Z)(this,"getFields",(function(){return n.getFieldEntities(!0).map((function(e){var t=e.getNamePath(),r=e.getMeta(),i=(0,s.Z)((0,s.Z)({},r),{},{name:t,value:n.getFieldValue(t)});return Object.defineProperty(i,"originRCField",{value:!0}),i}))})),(0,c.Z)(this,"initEntityValue",(function(e){var t=e.props.initialValue;if(void 0!==t){var r=e.getNamePath();void 0===(0,xe.Z)(n.store,r)&&n.updateStore((0,de.Z)(n.store,r,t))}})),(0,c.Z)(this,"isMergedPreserve",(function(e){var t=void 0!==e?e:n.preserve;return null==t||t})),(0,c.Z)(this,"registerField",(function(e){n.fieldEntities.push(e);var t=e.getNamePath();if(n.notifyWatch([t]),void 0!==e.props.initialValue){var r=n.store;n.resetWithFieldInitialValue({entities:[e],skipExist:!0}),n.notifyObservers(r,[e.getNamePath()],{type:"valueUpdate",source:"internal"})}return function(r,i){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];if(n.fieldEntities=n.fieldEntities.filter((function(t){return t!==e})),!n.isMergedPreserve(i)&&(!r||o.length>1)){var a=r?void 0:n.getInitialValue(t);if(t.length&&n.getFieldValue(t)!==a&&n.fieldEntities.every((function(e){return!Ee(e.getNamePath(),t)}))){var s=n.store;n.updateStore((0,de.Z)(s,t,a,!0)),n.notifyObservers(s,[t],{type:"remove"}),n.triggerDependenciesUpdate(s,t)}}n.notifyWatch([t])}})),(0,c.Z)(this,"dispatch",(function(e){switch(e.type){case"updateValue":var t=e.namePath,r=e.value;n.updateValue(t,r);break;case"validateField":var i=e.namePath,o=e.triggerName;n.validateFields([i],{triggerName:o})}})),(0,c.Z)(this,"notifyObservers",(function(e,t,r){if(n.subscribable){var i=(0,s.Z)((0,s.Z)({},r),{},{store:n.getFieldsValue(!0)});n.getFieldEntities().forEach((function(n){(0,n.onStoreChange)(e,t,i)}))}else n.forceRootUpdate()})),(0,c.Z)(this,"triggerDependenciesUpdate",(function(e,t){var r=n.getDependencyChildrenFields(t);return r.length&&n.validateFields(r),n.notifyObservers(e,r,{type:"dependenciesUpdate",relatedFields:[t].concat((0,S.Z)(r))}),r})),(0,c.Z)(this,"updateValue",(function(e,t){var r=Se(e),i=n.store;n.updateStore((0,de.Z)(n.store,r,t)),n.notifyObservers(i,[r],{type:"valueUpdate",source:"internal"}),n.notifyWatch([r]);var o=n.triggerDependenciesUpdate(i,r),a=n.callbacks.onValuesChange;a&&a(Oe(n.store,[r]),n.getFieldsValue());n.triggerOnFieldsChange([r].concat((0,S.Z)(o)))})),(0,c.Z)(this,"setFieldsValue",(function(e){n.warningUnhooked();var t=n.store;if(e){var r=(0,de.T)(n.store,e);n.updateStore(r)}n.notifyObservers(t,null,{type:"valueUpdate",source:"external"}),n.notifyWatch()})),(0,c.Z)(this,"setFieldValue",(function(e,t){n.setFields([{name:e,value:t}])})),(0,c.Z)(this,"getDependencyChildrenFields",(function(e){var t=new Set,r=[],i=new Ie;n.getFieldEntities().forEach((function(e){(e.props.dependencies||[]).forEach((function(t){var n=Se(t);i.update(n,(function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:new Set;return t.add(e),t}))}))}));return function e(n){(i.get(n)||new Set).forEach((function(n){if(!t.has(n)){t.add(n);var i=n.getNamePath();n.isFieldDirty()&&i.length&&(r.push(i),e(i))}}))}(e),r})),(0,c.Z)(this,"triggerOnFieldsChange",(function(e,t){var r=n.callbacks.onFieldsChange;if(r){var i=n.getFields();if(t){var o=new Ie;t.forEach((function(e){var t=e.name,n=e.errors;o.set(t,n)})),i.forEach((function(e){e.errors=o.get(e.name)||e.errors}))}var a=i.filter((function(t){var n=t.name;return ke(e,n)}));a.length&&r(a,i)}})),(0,c.Z)(this,"validateFields",(function(e,t){var r,i;n.warningUnhooked(),Array.isArray(e)||"string"==typeof e||"string"==typeof t?(r=e,i=t):i=e;var o=!!r,a=o?r.map(Se):[],c=[],u=String(Date.now()),l=new Set,f=i||{},d=f.recursive,h=f.dirty;n.getFieldEntities(!0).forEach((function(e){if(o||a.push(e.getNamePath()),e.props.rules&&e.props.rules.length&&(!h||e.isFieldDirty())){var t=e.getNamePath();if(l.add(t.join(u)),!o||ke(a,t,d)){var r=e.validateRules((0,s.Z)({validateMessages:(0,s.Z)((0,s.Z)({},fe),n.validateMessages)},i));c.push(r.then((function(){return{name:t,errors:[],warnings:[]}})).catch((function(e){var n,r=[],i=[];return null===(n=e.forEach)||void 0===n||n.call(e,(function(e){var t=e.rule.warningOnly,n=e.errors;t?i.push.apply(i,(0,S.Z)(n)):r.push.apply(r,(0,S.Z)(n))})),r.length?Promise.reject({name:t,errors:r,warnings:i}):{name:t,errors:r,warnings:i}})))}}}));var v=function(e){var t=!1,n=e.length,r=[];return e.length?new Promise((function(i,o){e.forEach((function(e,a){e.catch((function(e){return t=!0,e})).then((function(e){n-=1,r[a]=e,n>0||(t&&o(r),i(r))}))}))})):Promise.resolve([])}(c);n.lastValidatePromise=v,v.catch((function(e){return e})).then((function(e){var t=e.map((function(e){return e.name}));n.notifyObservers(n.store,t,{type:"validateFinish"}),n.triggerOnFieldsChange(t,e)}));var p=v.then((function(){return n.lastValidatePromise===v?Promise.resolve(n.getFieldsValue(a)):Promise.reject([])})).catch((function(e){var t=e.filter((function(e){return e&&e.errors.length}));return Promise.reject({values:n.getFieldsValue(a),errorFields:t,outOfDate:n.lastValidatePromise!==v})}));p.catch((function(e){return e}));var g=a.filter((function(e){return l.has(e.join(u))}));return n.triggerOnFieldsChange(g),p})),(0,c.Z)(this,"submit",(function(){n.warningUnhooked(),n.validateFields().then((function(e){var t=n.callbacks.onFinish;if(t)try{t(e)}catch(r){console.error(r)}})).catch((function(e){var t=n.callbacks.onFinishFailed;t&&t(e)}))})),this.forceRootUpdate=t}));const De=function(e){var t=r.useRef(),n=r.useState({}),i=(0,u.Z)(n,2)[1];if(!t.current)if(e)t.current=e;else{var o=new Ve((function(){i({})}));t.current=o.getForm()}return[t.current]};var He=r.createContext({triggerFormChange:function(){},triggerFormFinish:function(){},registerForm:function(){},unregisterForm:function(){}});const Be=He;var ze=["name","initialValues","fields","form","preserve","children","component","validateMessages","validateTrigger","onValuesChange","onFieldsChange","onFinish","onFinishFailed"];const qe=function(e,t){var n=e.name,i=e.initialValues,o=e.fields,c=e.form,f=e.preserve,d=e.children,h=e.component,v=void 0===h?"form":h,p=e.validateMessages,g=e.validateTrigger,m=void 0===g?"onChange":g,y=e.onValuesChange,b=e.onFieldsChange,_=e.onFinish,w=e.onFinishFailed,x=(0,l.Z)(e,ze),O=r.useContext(Be),k=De(c),E=(0,u.Z)(k,1)[0],Z=E.getInternalHooks(M),C=Z.useSubscribe,A=Z.setInitialValues,P=Z.setCallbacks,j=Z.setValidateMessages,F=Z.setPreserve,T=Z.destroyForm;r.useImperativeHandle(t,(function(){return E})),r.useEffect((function(){return O.registerForm(n,E),function(){O.unregisterForm(n)}}),[O,E,n]),j((0,s.Z)((0,s.Z)({},O.validateMessages),p)),P({onValuesChange:y,onFieldsChange:function(e){if(O.triggerFormChange(n,e),b){for(var t=arguments.length,r=new Array(t>1?t-1:0),i=1;i{const{checkboxCls:t}=e,n=`${t}-wrapper`;return[{[`${t}-group`]:Object.assign(Object.assign({},(0,Je.Wf)(e)),{display:"inline-flex",flexWrap:"wrap",columnGap:e.marginXS,[`> ${e.antCls}-row`]:{flex:1}}),[n]:Object.assign(Object.assign({},(0,Je.Wf)(e)),{display:"inline-flex",alignItems:"baseline",cursor:"pointer","&:after":{display:"inline-block",width:0,overflow:"hidden",content:"'\\a0'"},[`& + ${n}`]:{marginInlineStart:0},[`&${n}-in-form-item`]:{'input[type="checkbox"]':{width:14,height:14}}}),[t]:Object.assign(Object.assign({},(0,Je.Wf)(e)),{position:"relative",whiteSpace:"nowrap",lineHeight:1,cursor:"pointer",borderRadius:e.borderRadiusSM,alignSelf:"center",[`${t}-input`]:{position:"absolute",inset:0,zIndex:1,cursor:"pointer",opacity:0,margin:0,[`&:focus-visible + ${t}-inner`]:Object.assign({},(0,Je.oN)(e))},[`${t}-inner`]:{boxSizing:"border-box",position:"relative",top:0,insetInlineStart:0,display:"block",width:e.checkboxSize,height:e.checkboxSize,direction:"ltr",backgroundColor:e.colorBgContainer,border:`${(0,Qe.bf)(e.lineWidth)} ${e.lineType} ${e.colorBorder}`,borderRadius:e.borderRadiusSM,borderCollapse:"separate",transition:`all ${e.motionDurationSlow}`,"&:after":{boxSizing:"border-box",position:"absolute",top:"50%",insetInlineStart:"21.5%",display:"table",width:e.calc(e.checkboxSize).div(14).mul(5).equal(),height:e.calc(e.checkboxSize).div(14).mul(8).equal(),border:`${(0,Qe.bf)(e.lineWidthBold)} solid ${e.colorWhite}`,borderTop:0,borderInlineStart:0,transform:"rotate(45deg) scale(0) translate(-50%,-50%)",opacity:0,content:'""',transition:`all ${e.motionDurationFast} ${e.motionEaseInBack}, opacity ${e.motionDurationFast}`}},"& + span":{paddingInlineStart:e.paddingXS,paddingInlineEnd:e.paddingXS}})},{[`\n ${n}:not(${n}-disabled),\n ${t}:not(${t}-disabled)\n `]:{[`&:hover ${t}-inner`]:{borderColor:e.colorPrimary}},[`${n}:not(${n}-disabled)`]:{[`&:hover ${t}-checked:not(${t}-disabled) ${t}-inner`]:{backgroundColor:e.colorPrimaryHover,borderColor:"transparent"},[`&:hover ${t}-checked:not(${t}-disabled):after`]:{borderColor:e.colorPrimaryHover}}},{[`${t}-checked`]:{[`${t}-inner`]:{backgroundColor:e.colorPrimary,borderColor:e.colorPrimary,"&:after":{opacity:1,transform:"rotate(45deg) scale(1) translate(-50%,-50%)",transition:`all ${e.motionDurationMid} ${e.motionEaseOutBack} ${e.motionDurationFast}`}}},[`\n ${n}-checked:not(${n}-disabled),\n ${t}-checked:not(${t}-disabled)\n `]:{[`&:hover ${t}-inner`]:{backgroundColor:e.colorPrimaryHover,borderColor:"transparent"}}},{[t]:{"&-indeterminate":{[`${t}-inner`]:{backgroundColor:e.colorBgContainer,borderColor:e.colorBorder,"&:after":{top:"50%",insetInlineStart:"50%",width:e.calc(e.fontSizeLG).div(2).equal(),height:e.calc(e.fontSizeLG).div(2).equal(),backgroundColor:e.colorPrimary,border:0,transform:"translate(-50%, -50%) scale(1)",opacity:1,content:'""'}}}}},{[`${n}-disabled`]:{cursor:"not-allowed"},[`${t}-disabled`]:{[`&, ${t}-input`]:{cursor:"not-allowed",pointerEvents:"none"},[`${t}-inner`]:{background:e.colorBgContainerDisabled,borderColor:e.colorBorder,"&:after":{borderColor:e.colorTextDisabled}},"&:after":{display:"none"},"& + span":{color:e.colorTextDisabled},[`&${t}-indeterminate ${t}-inner::after`]:{background:e.colorTextDisabled}}}]};function rt(e,t){const n=(0,et.TS)(t,{checkboxCls:`.${e}`,checkboxSize:t.controlInteractiveSize});return[nt(n)]}const it=(0,tt.I$)("Checkbox",((e,t)=>{let{prefixCls:n}=t;return[rt(n,e)]}));var ot=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(e);i{var n;const{prefixCls:i,className:a,rootClassName:s,children:c,indeterminate:u=!1,style:l,onMouseEnter:f,onMouseLeave:d,skipGroup:h=!1,disabled:b}=e,w=ot(e,["prefixCls","className","rootClassName","children","indeterminate","style","onMouseEnter","onMouseLeave","skipGroup","disabled"]),{getPrefixCls:x,direction:S,checkbox:O}=r.useContext(m.E_),k=r.useContext(Ye),{isFormItemInput:E}=r.useContext(Ke),Z=r.useContext(y.Z),C=null!==(n=(null==k?void 0:k.disabled)||b)&&void 0!==n?n:Z,A=r.useRef(w.value);r.useEffect((()=>{null==k||k.registerValue(w.value)}),[]),r.useEffect((()=>{if(!h)return w.value!==A.current&&(null==k||k.cancelValue(A.current),null==k||k.registerValue(w.value),A.current=w.value),()=>null==k?void 0:k.cancelValue(w.value)}),[w.value]);const P=x("checkbox",i),j=_(P),[F,M]=it(P,j),T=Object.assign({},w);k&&!h&&(T.onChange=function(){w.onChange&&w.onChange.apply(w,arguments),k.toggleOption&&k.toggleOption({label:c,value:w.value})},T.name=k.name,T.checked=k.value.includes(w.value));const R=o()(`${P}-wrapper`,{[`${P}-rtl`]:"rtl"===S,[`${P}-wrapper-checked`]:T.checked,[`${P}-wrapper-disabled`]:C,[`${P}-wrapper-in-form-item`]:E},null==O?void 0:O.className,a,s,j,M),N=o()({[`${P}-indeterminate`]:u},g.A,M),$=u?"mixed":void 0;return F(r.createElement(p.Z,{component:"Checkbox",disabled:C},r.createElement("label",{className:R,style:Object.assign(Object.assign({},null==O?void 0:O.style),l),onMouseEnter:f,onMouseLeave:d},r.createElement(v,Object.assign({"aria-checked":$},T,{prefixCls:P,className:N,disabled:C,ref:t})),void 0!==c&&r.createElement("span",null,c))))};const st=r.forwardRef(at);var ct=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(e);i{const{defaultValue:n,children:i,options:a=[],prefixCls:c,className:u,rootClassName:l,style:f,onChange:d}=e,h=ct(e,["defaultValue","children","options","prefixCls","className","rootClassName","style","onChange"]),{getPrefixCls:v,direction:p}=r.useContext(m.E_),[g,y]=r.useState(h.value||n||[]),[b,w]=r.useState([]);r.useEffect((()=>{"value"in h&&y(h.value||[])}),[h.value]);const x=r.useMemo((()=>a.map((e=>"string"==typeof e||"number"==typeof e?{label:e,value:e}:e))),[a]),O=v("checkbox",c),k=`${O}-group`,E=_(O),[Z,C]=it(O,E),A=(P=h,j=["value","disabled"],F=(0,s.Z)({},P),Array.isArray(j)&&j.forEach((function(e){delete F[e]})),F);var P,j,F;const M=a.length?x.map((e=>r.createElement(st,{prefixCls:O,key:e.value.toString(),disabled:"disabled"in e?e.disabled:h.disabled,value:e.value,checked:g.includes(e.value),onChange:e.onChange,className:`${k}-item`,style:e.style,title:e.title,id:e.id,required:e.required},e.label))):i,T={toggleOption:e=>{const t=g.indexOf(e.value),n=(0,S.Z)(g);-1===t?n.push(e.value):n.splice(t,1),"value"in h||y(n),null==d||d(n.filter((e=>b.includes(e))).sort(((e,t)=>x.findIndex((t=>t.value===e))-x.findIndex((e=>e.value===t)))))},value:g,disabled:h.disabled,name:h.name,registerValue:e=>{w((t=>[].concat((0,S.Z)(t),[e])))},cancelValue:e=>{w((t=>t.filter((t=>t!==e))))}},R=o()(k,{[`${k}-rtl`]:"rtl"===p},u,l,E,C);return Z(r.createElement("div",Object.assign({className:R,style:f},A,{ref:t}),r.createElement(Ye.Provider,{value:T},M)))},lt=r.forwardRef(ut),ft=r.memo(lt),dt=st;dt.Group=ft,dt.__ANT_CHECKBOX=!0;const ht=dt},8866:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a,n:()=>o});var r=n(7294);const i=r.createContext(!1),o=e=>{let{children:t,disabled:n}=e;const o=r.useContext(i);return r.createElement(i.Provider,{value:null!=n?n:o},t)},a=i},7647:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a,q:()=>o});var r=n(7294);const i=r.createContext(void 0),o=e=>{let{children:t,size:n}=e;const o=r.useContext(i);return r.createElement(i.Provider,{value:n||o},t)},a=i},3124:(e,t,n)=>{"use strict";n.d(t,{E_:()=>o,oR:()=>i});var r=n(7294);const i="anticon",o=r.createContext({getPrefixCls:(e,t)=>t||(e?`ant-${e}`:"ant"),iconPrefixCls:i}),{Consumer:a}=o},9843:(e,t,n)=>{"use strict";n.d(t,{ZP:()=>J});var r=n(7294),i=n.t(r,2),o=n(5980),a=n(3017),s=n(6982),c=n(3799);n(334);function u(){}const l=r.createContext({}),f=()=>{const e=()=>{};return e.deprecated=u,e},d=(0,r.createContext)(void 0);const h={items_per_page:"/ page",jump_to:"Go to",jump_to_confirm:"confirm",page:"Page",prev_page:"Previous Page",next_page:"Next Page",prev_5:"Previous 5 Pages",next_5:"Next 5 Pages",prev_3:"Previous 3 Pages",next_3:"Next 3 Pages",page_size:"Page Size"};const v={locale:"en_US",today:"Today",now:"Now",backToToday:"Back to today",ok:"OK",clear:"Clear",month:"Month",year:"Year",timeSelect:"select time",dateSelect:"select date",weekSelect:"Choose a week",monthSelect:"Choose a month",yearSelect:"Choose a year",decadeSelect:"Choose a decade",yearFormat:"YYYY",dateFormat:"M/D/YYYY",dayFormat:"D",dateTimeFormat:"M/D/YYYY HH:mm:ss",monthBeforeYear:!0,previousMonth:"Previous month (PageUp)",nextMonth:"Next month (PageDown)",previousYear:"Last year (Control + left)",nextYear:"Next year (Control + right)",previousDecade:"Last decade",nextDecade:"Next decade",previousCentury:"Last century",nextCentury:"Next century"},p={placeholder:"Select time",rangePlaceholder:["Start time","End time"]},g={lang:Object.assign({placeholder:"Select date",yearPlaceholder:"Select year",quarterPlaceholder:"Select quarter",monthPlaceholder:"Select month",weekPlaceholder:"Select week",rangePlaceholder:["Start date","End date"],rangeYearPlaceholder:["Start year","End year"],rangeQuarterPlaceholder:["Start quarter","End quarter"],rangeMonthPlaceholder:["Start month","End month"],rangeWeekPlaceholder:["Start week","End week"]},v),timePickerLocale:Object.assign({},p)},m="${label} is not a valid ${type}",y={locale:"en",Pagination:h,DatePicker:g,TimePicker:p,Calendar:g,global:{placeholder:"Please select"},Table:{filterTitle:"Filter menu",filterConfirm:"OK",filterReset:"Reset",filterEmptyText:"No filters",filterCheckall:"Select all items",filterSearchPlaceholder:"Search in filters",emptyText:"No data",selectAll:"Select current page",selectInvert:"Invert current page",selectNone:"Clear all data",selectionAll:"Select all data",sortTitle:"Sort",expand:"Expand row",collapse:"Collapse row",triggerDesc:"Click to sort descending",triggerAsc:"Click to sort ascending",cancelSort:"Click to cancel sorting"},Tour:{Next:"Next",Previous:"Previous",Finish:"Finish"},Modal:{okText:"OK",cancelText:"Cancel",justOkText:"OK"},Popconfirm:{okText:"OK",cancelText:"Cancel"},Transfer:{titles:["",""],searchPlaceholder:"Search here",itemUnit:"item",itemsUnit:"items",remove:"Remove",selectCurrent:"Select current page",removeCurrent:"Remove current page",selectAll:"Select all data",removeAll:"Remove all data",selectInvert:"Invert current page"},Upload:{uploading:"Uploading...",removeFile:"Remove file",uploadError:"Upload error",previewFile:"Preview file",downloadFile:"Download file"},Empty:{description:"No data"},Icon:{icon:"icon"},Text:{edit:"Edit",copy:"Copy",copied:"Copied",expand:"Expand"},PageHeader:{back:"Back"},Form:{optional:"(optional)",defaultValidateMessages:{default:"Field validation error for ${label}",required:"Please enter ${label}",enum:"${label} must be one of [${enum}]",whitespace:"${label} cannot be a blank character",date:{format:"${label} date format is invalid",parse:"${label} cannot be converted to a date",invalid:"${label} is an invalid date"},types:{string:m,method:m,array:m,object:m,number:m,date:m,boolean:m,integer:m,float:m,regexp:m,email:m,url:m,hex:m},string:{len:"${label} must be ${len} characters",min:"${label} must be at least ${min} characters",max:"${label} must be up to ${max} characters",range:"${label} must be between ${min}-${max} characters"},number:{len:"${label} must be equal to ${len}",min:"${label} must be minimum ${min}",max:"${label} must be maximum ${max}",range:"${label} must be between ${min}-${max}"},array:{len:"Must be ${len} ${label}",min:"At least ${min} ${label}",max:"At most ${max} ${label}",range:"The amount of ${label} must be between ${min}-${max}"},pattern:{mismatch:"${label} does not match the pattern ${pattern}"}}},Image:{preview:"Preview"},QRCode:{expired:"QR code expired",refresh:"Refresh"},ColorPicker:{presetEmpty:"Empty"}};let b=Object.assign({},y.Modal),_=[];const w=()=>_.reduce(((e,t)=>Object.assign(Object.assign({},e),t)),y.Modal);const x=(0,r.createContext)(void 0);const S=e=>{const{locale:t={},children:n,_ANT_MARK__:i}=e;r.useEffect((()=>{const e=function(e){if(e){const t=Object.assign({},e);return _.push(t),b=w(),()=>{_=_.filter((e=>e!==t)),b=w()}}b=Object.assign({},y.Modal)}(t&&t.Modal);return e}),[t]);const o=r.useMemo((()=>Object.assign(Object.assign({},t),{exist:!0})),[t]);return r.createElement(x.Provider,{value:o},n)};var O=n(3083),k=n(2790),E=n(3124),Z=n(6397),C=n(274),A=n(8924),P=n(8981);const j=`-ant-${Date.now()}-${Math.random()}`;function F(e,t){const n=function(e,t){const n={},r=(e,t)=>{let n=e.clone();return n=(null==t?void 0:t(n))||n,n.toRgbString()},i=(e,t)=>{const i=new C.C(e),o=(0,Z.R_)(i.toRgbString());n[`${t}-color`]=r(i),n[`${t}-color-disabled`]=o[1],n[`${t}-color-hover`]=o[4],n[`${t}-color-active`]=o[6],n[`${t}-color-outline`]=i.clone().setAlpha(.2).toRgbString(),n[`${t}-color-deprecated-bg`]=o[0],n[`${t}-color-deprecated-border`]=o[2]};if(t.primaryColor){i(t.primaryColor,"primary");const e=new C.C(t.primaryColor),o=(0,Z.R_)(e.toRgbString());o.forEach(((e,t)=>{n[`primary-${t+1}`]=e})),n["primary-color-deprecated-l-35"]=r(e,(e=>e.lighten(35))),n["primary-color-deprecated-l-20"]=r(e,(e=>e.lighten(20))),n["primary-color-deprecated-t-20"]=r(e,(e=>e.tint(20))),n["primary-color-deprecated-t-50"]=r(e,(e=>e.tint(50))),n["primary-color-deprecated-f-12"]=r(e,(e=>e.setAlpha(.12*e.getAlpha())));const a=new C.C(o[0]);n["primary-color-active-deprecated-f-30"]=r(a,(e=>e.setAlpha(.3*e.getAlpha()))),n["primary-color-active-deprecated-d-02"]=r(a,(e=>e.darken(2)))}return t.successColor&&i(t.successColor,"success"),t.warningColor&&i(t.warningColor,"warning"),t.errorColor&&i(t.errorColor,"error"),t.infoColor&&i(t.infoColor,"info"),`\n :root {\n ${Object.keys(n).map((t=>`--${e}-${t}: ${n[t]};`)).join("\n")}\n }\n `.trim()}(e,t);(0,A.Z)()&&(0,P.hq)(n,`${j}-dynamic-theme`)}var M=n(8866),T=n(7647);const R=function(){return{componentDisabled:(0,r.useContext)(M.Z),componentSize:(0,r.useContext)(T.Z)}};var N=n(1881);const $=Object.assign({},i),{useId:I}=$,L=void 0===I?()=>"":I;var V=n(9182),D=n(5976);function H(e){const{children:t}=e,[,n]=(0,D.ZP)(),{motion:i}=n,o=r.useRef(!1);return o.current=o.current||!1===i,o.current?r.createElement(V.zt,{motion:i},t):t}const B=()=>null;var z=n(3269),q=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(e);i{const{children:t,csp:n,autoInsertSpaceInButton:i,alert:u,anchor:h,form:v,locale:p,componentSize:g,direction:m,space:b,virtual:_,dropdownMatchSelectWidth:w,popupMatchSelectWidth:x,popupOverflow:Z,legacyLocale:C,parentContext:A,iconPrefixCls:P,theme:j,componentDisabled:F,segmented:R,statistic:$,spin:I,calendar:V,carousel:D,cascader:W,collapse:G,typography:X,checkbox:K,descriptions:Y,divider:Q,drawer:J,skeleton:ee,steps:te,image:ne,layout:re,list:ie,mentions:oe,modal:ae,progress:se,result:ce,slider:ue,breadcrumb:le,menu:fe,pagination:de,input:he,empty:ve,badge:pe,radio:ge,rate:me,switch:ye,transfer:be,avatar:_e,message:we,tag:xe,table:Se,card:Oe,tabs:ke,timeline:Ee,timePicker:Ze,upload:Ce,notification:Ae,tree:Pe,colorPicker:je,datePicker:Fe,rangePicker:Me,flex:Te,wave:Re,dropdown:Ne,warning:$e}=e,Ie=r.useCallback(((t,n)=>{const{prefixCls:r}=e;if(n)return n;const i=r||A.getPrefixCls("");return t?`${i}-${t}`:i}),[A.getPrefixCls,e.prefixCls]),Le=P||A.iconPrefixCls||E.oR,Ve=n||A.csp;(0,z.Z)(Le,Ve);const De=function(e,t){f("ConfigProvider");const n=e||{},r=!1!==n.inherit&&t?t:O.u_,i=L();return(0,s.Z)((()=>{var o,a;if(!e)return t;const s=Object.assign({},r.components);Object.keys(e.components||{}).forEach((t=>{s[t]=Object.assign(Object.assign({},s[t]),e.components[t])}));const c=`css-var-${i.replace(/:/g,"")}`,u=(null!==(o=n.cssVar)&&void 0!==o?o:r.cssVar)&&Object.assign(Object.assign(Object.assign({prefix:"ant"},"object"==typeof r.cssVar?r.cssVar:{}),"object"==typeof n.cssVar?n.cssVar:{}),{key:"object"==typeof n.cssVar&&(null===(a=n.cssVar)||void 0===a?void 0:a.key)||c});return Object.assign(Object.assign(Object.assign({},r),n),{token:Object.assign(Object.assign({},r.token),n.token),components:s,cssVar:u})}),[n,r],((e,t)=>e.some(((e,n)=>{const r=t[n];return!(0,N.Z)(e,r,!0)}))))}(j,A.theme);const He={csp:Ve,autoInsertSpaceInButton:i,alert:u,anchor:h,locale:p||C,direction:m,space:b,virtual:_,popupMatchSelectWidth:null!=x?x:w,popupOverflow:Z,getPrefixCls:Ie,iconPrefixCls:Le,theme:De,segmented:R,statistic:$,spin:I,calendar:V,carousel:D,cascader:W,collapse:G,typography:X,checkbox:K,descriptions:Y,divider:Q,drawer:J,skeleton:ee,steps:te,image:ne,input:he,layout:re,list:ie,mentions:oe,modal:ae,progress:se,result:ce,slider:ue,breadcrumb:le,menu:fe,pagination:de,empty:ve,badge:pe,radio:ge,rate:me,switch:ye,transfer:be,avatar:_e,message:we,tag:xe,table:Se,card:Oe,tabs:ke,timeline:Ee,timePicker:Ze,upload:Ce,notification:Ae,tree:Pe,colorPicker:je,datePicker:Fe,rangePicker:Me,flex:Te,wave:Re,dropdown:Ne,warning:$e},Be=Object.assign({},A);Object.keys(He).forEach((e=>{void 0!==He[e]&&(Be[e]=He[e])})),U.forEach((t=>{const n=e[t];n&&(Be[t]=n)}));const ze=(0,s.Z)((()=>Be),Be,((e,t)=>{const n=Object.keys(e),r=Object.keys(t);return n.length!==r.length||n.some((n=>e[n]!==t[n]))})),qe=r.useMemo((()=>({prefixCls:Le,csp:Ve})),[Le,Ve]);let Ue=r.createElement(r.Fragment,null,r.createElement(B,{dropdownMatchSelectWidth:w}),t);const We=r.useMemo((()=>{var e,t,n,r;return(0,c.T)((null===(e=y.Form)||void 0===e?void 0:e.defaultValidateMessages)||{},(null===(n=null===(t=ze.locale)||void 0===t?void 0:t.Form)||void 0===n?void 0:n.defaultValidateMessages)||{},(null===(r=ze.form)||void 0===r?void 0:r.validateMessages)||{},(null==v?void 0:v.validateMessages)||{})}),[ze,null==v?void 0:v.validateMessages]);Object.keys(We).length>0&&(Ue=r.createElement(d.Provider,{value:We},Ue)),p&&(Ue=r.createElement(S,{locale:p,_ANT_MARK__:"internalMark"},Ue)),(Le||Ve)&&(Ue=r.createElement(a.Z.Provider,{value:qe},Ue)),g&&(Ue=r.createElement(T.q,{size:g},Ue)),Ue=r.createElement(H,null,Ue);const Ge=r.useMemo((()=>{const e=De||{},{algorithm:t,token:n,components:r,cssVar:i}=e,a=q(e,["algorithm","token","components","cssVar"]),s=t&&(!Array.isArray(t)||t.length>0)?(0,o.jG)(t):O.uH,c={};Object.entries(r||{}).forEach((e=>{let[t,n]=e;const r=Object.assign({},n);"algorithm"in r&&(!0===r.algorithm?r.theme=s:(Array.isArray(r.algorithm)||"function"==typeof r.algorithm)&&(r.theme=(0,o.jG)(r.algorithm)),delete r.algorithm),c[t]=r}));const u=Object.assign(Object.assign({},k.Z),n);return Object.assign(Object.assign({},a),{theme:s,token:u,components:c,override:Object.assign({override:u},c),cssVar:i})}),[De]);return j&&(Ue=r.createElement(O.Mj.Provider,{value:Ge},Ue)),ze.warning&&(Ue=r.createElement(l.Provider,{value:ze.warning},Ue)),void 0!==F&&(Ue=r.createElement(M.n,{disabled:F},Ue)),r.createElement(E.E_.Provider,{value:ze},Ue)},Q=e=>{const t=r.useContext(E.E_),n=r.useContext(x);return r.createElement(Y,Object.assign({parentContext:t,legacyLocale:n},e))};Q.ConfigContext=E.E_,Q.SizeContext=T.Z,Q.config=e=>{let{prefixCls:t,iconPrefixCls:n,theme:r}=e;void 0!==t&&(W=t),void 0!==n&&(G=n),r&&(!function(e){return Object.keys(e).some((e=>e.endsWith("Color")))}(r)?X=r:F(K(),r))},Q.useConfig=R,Object.defineProperty(Q,"SizeContext",{get:()=>T.Z});const J=Q},4747:(e,t,n)=>{"use strict";n.d(t,{Lx:()=>a,Qy:()=>u,Ro:()=>o,Wf:()=>i,du:()=>s,oN:()=>c});var r=n(5980);const i=function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return{boxSizing:"border-box",margin:0,padding:0,color:e.colorText,fontSize:e.fontSize,lineHeight:e.lineHeight,listStyle:"none",fontFamily:t?"inherit":e.fontFamily}},o=()=>({display:"inline-flex",alignItems:"center",color:"inherit",fontStyle:"normal",lineHeight:0,textAlign:"center",textTransform:"none",verticalAlign:"-0.125em",textRendering:"optimizeLegibility","-webkit-font-smoothing":"antialiased","-moz-osx-font-smoothing":"grayscale","> *":{lineHeight:1},svg:{display:"inline-block"}}),a=e=>({a:{color:e.colorLink,textDecoration:e.linkDecoration,backgroundColor:"transparent",outline:"none",cursor:"pointer",transition:`color ${e.motionDurationSlow}`,"-webkit-text-decoration-skip":"objects","&:hover":{color:e.colorLinkHover},"&:active":{color:e.colorLinkActive},"&:active,\n &:hover":{textDecoration:e.linkHoverDecoration,outline:0},"&:focus":{textDecoration:e.linkFocusDecoration,outline:0},"&[disabled]":{color:e.colorTextDisabled,cursor:"not-allowed"}}}),s=(e,t)=>{const{fontFamily:n,fontSize:r}=e,i=`[class^="${t}"], [class*=" ${t}"]`;return{[i]:{fontFamily:n,fontSize:r,boxSizing:"border-box","&::before, &::after":{boxSizing:"border-box"},[i]:{boxSizing:"border-box","&::before, &::after":{boxSizing:"border-box"}}}}},c=e=>({outline:`${(0,r.bf)(e.lineWidthFocus)} solid ${e.colorPrimaryBorder}`,outlineOffset:1,transition:"outline-offset 0s, outline 0s"}),u=e=>({"&:focus-visible":Object.assign({},c(e))})},196:(e,t,n)=>{"use strict";n.d(t,{Z:()=>ie});var r=n(7294),i=n(7462);const o={icon:{tag:"svg",attrs:{viewBox:"0 0 1024 1024",focusable:"false"},children:[{tag:"path",attrs:{d:"M988 548c-19.9 0-36-16.1-36-36 0-59.4-11.6-117-34.6-171.3a440.45 440.45 0 00-94.3-139.9 437.71 437.71 0 00-139.9-94.3C629 83.6 571.4 72 512 72c-19.9 0-36-16.1-36-36s16.1-36 36-36c69.1 0 136.2 13.5 199.3 40.3C772.3 66 827 103 874 150c47 47 83.9 101.8 109.7 162.7 26.7 63.1 40.2 130.2 40.2 199.3.1 19.9-16 36-35.9 36z"}}]},name:"loading",theme:"outlined"};var a=n(7685),s=n(4942),c=n(5987),u=n(9875),l=n.n(u),f=n(6397),d=n(3017),h=n(1413),v=n(1002),p=n(8981);function g(e){var t;return null==e||null===(t=e.getRootNode)||void 0===t?void 0:t.call(e)}function m(e){return function(e){return g(e)instanceof ShadowRoot}(e)?g(e):null}var y=n(334);function b(e){return"object"===(0,v.Z)(e)&&"string"==typeof e.name&&"string"==typeof e.theme&&("object"===(0,v.Z)(e.icon)||"function"==typeof e.icon)}function _(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return Object.keys(e).reduce((function(t,n){var r,i=e[n];if("class"===n)t.className=i,delete t.class;else delete t[n],t[(r=n,r.replace(/-(.)/g,(function(e,t){return t.toUpperCase()})))]=i;return t}),{})}function w(e,t,n){return n?r.createElement(e.tag,(0,h.Z)((0,h.Z)({key:t},_(e.attrs)),n),(e.children||[]).map((function(n,r){return w(n,"".concat(t,"-").concat(e.tag,"-").concat(r))}))):r.createElement(e.tag,(0,h.Z)({key:t},_(e.attrs)),(e.children||[]).map((function(n,r){return w(n,"".concat(t,"-").concat(e.tag,"-").concat(r))})))}function x(e){return(0,f.R_)(e)[0]}function S(e){return e?Array.isArray(e)?e:[e]:[]}var O=["icon","className","onClick","style","primaryColor","secondaryColor"],k={primaryColor:"#333",secondaryColor:"#E6E6E6",calculated:!1};var E=function(e){var t,n,i,o,a,s,u,l=e.icon,f=e.className,v=e.onClick,g=e.style,_=e.primaryColor,S=e.secondaryColor,E=(0,c.Z)(e,O),Z=r.useRef(),C=k;if(_&&(C={primaryColor:_,secondaryColor:S||x(_)}),t=Z,n=(0,r.useContext)(d.Z),i=n.csp,o=n.prefixCls,a="\n.anticon {\n display: inline-block;\n color: inherit;\n font-style: normal;\n line-height: 0;\n text-align: center;\n text-transform: none;\n vertical-align: -0.125em;\n text-rendering: optimizeLegibility;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n.anticon > * {\n line-height: 1;\n}\n\n.anticon svg {\n display: inline-block;\n}\n\n.anticon::before {\n display: none;\n}\n\n.anticon .anticon-icon {\n display: block;\n}\n\n.anticon[tabindex] {\n cursor: pointer;\n}\n\n.anticon-spin::before,\n.anticon-spin {\n display: inline-block;\n -webkit-animation: loadingCircle 1s infinite linear;\n animation: loadingCircle 1s infinite linear;\n}\n\n@-webkit-keyframes loadingCircle {\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n\n@keyframes loadingCircle {\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n",o&&(a=a.replace(/anticon/g,o)),(0,r.useEffect)((function(){var e=m(t.current);(0,p.hq)(a,"@ant-design-icons",{prepend:!0,csp:i,attachTo:e})}),[]),s=b(l),u="icon should be icon definiton, but got ".concat(l),(0,y.ZP)(s,"[@ant-design/icons] ".concat(u)),!b(l))return null;var A=l;return A&&"function"==typeof A.icon&&(A=(0,h.Z)((0,h.Z)({},A),{},{icon:A.icon(C.primaryColor,C.secondaryColor)})),w(A.icon,"svg-".concat(A.name),(0,h.Z)((0,h.Z)({className:f,onClick:v,style:g,"data-icon":A.name,width:"1em",height:"1em",fill:"currentColor","aria-hidden":"true"},E),{},{ref:Z}))};E.displayName="IconReact",E.getTwoToneColors=function(){return(0,h.Z)({},k)},E.setTwoToneColors=function(e){var t=e.primaryColor,n=e.secondaryColor;k.primaryColor=t,k.secondaryColor=n||x(t),k.calculated=!!n};const Z=E;function C(e){var t=S(e),n=(0,a.Z)(t,2),r=n[0],i=n[1];return Z.setTwoToneColors({primaryColor:r,secondaryColor:i})}var A=["className","icon","spin","rotate","tabIndex","onClick","twoToneColor"];C(f.iN.primary);var P=r.forwardRef((function(e,t){var n,o=e.className,u=e.icon,f=e.spin,h=e.rotate,v=e.tabIndex,p=e.onClick,g=e.twoToneColor,m=(0,c.Z)(e,A),y=r.useContext(d.Z),b=y.prefixCls,_=void 0===b?"anticon":b,w=y.rootClassName,x=l()(w,_,(n={},(0,s.Z)(n,"".concat(_,"-").concat(u.name),!!u.name),(0,s.Z)(n,"".concat(_,"-spin"),!!f||"loading"===u.name),n),o),O=v;void 0===O&&p&&(O=-1);var k=h?{msTransform:"rotate(".concat(h,"deg)"),transform:"rotate(".concat(h,"deg)")}:void 0,E=S(g),C=(0,a.Z)(E,2),P=C[0],j=C[1];return r.createElement("span",(0,i.Z)({role:"img","aria-label":u.name},m,{ref:t,tabIndex:O,onClick:p,className:x}),r.createElement(Z,{icon:u,primaryColor:P,secondaryColor:j,style:k}))}));P.displayName="AntdIcon",P.getTwoToneColor=function(){var e=Z.getTwoToneColors();return e.calculated?[e.primaryColor,e.secondaryColor]:e.primaryColor},P.setTwoToneColor=C;const j=P;var F=function(e,t){return r.createElement(j,(0,i.Z)({},e,{ref:t,icon:o}))};const M=r.forwardRef(F);var T=n(1770),R={MAC_ENTER:3,BACKSPACE:8,TAB:9,NUM_CENTER:12,ENTER:13,SHIFT:16,CTRL:17,ALT:18,PAUSE:19,CAPS_LOCK:20,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,PRINT_SCREEN:44,INSERT:45,DELETE:46,ZERO:48,ONE:49,TWO:50,THREE:51,FOUR:52,FIVE:53,SIX:54,SEVEN:55,EIGHT:56,NINE:57,QUESTION_MARK:63,A:65,B:66,C:67,D:68,E:69,F:70,G:71,H:72,I:73,J:74,K:75,L:76,M:77,N:78,O:79,P:80,Q:81,R:82,S:83,T:84,U:85,V:86,W:87,X:88,Y:89,Z:90,META:91,WIN_KEY_RIGHT:92,CONTEXT_MENU:93,NUM_ZERO:96,NUM_ONE:97,NUM_TWO:98,NUM_THREE:99,NUM_FOUR:100,NUM_FIVE:101,NUM_SIX:102,NUM_SEVEN:103,NUM_EIGHT:104,NUM_NINE:105,NUM_MULTIPLY:106,NUM_PLUS:107,NUM_MINUS:109,NUM_PERIOD:110,NUM_DIVISION:111,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,NUMLOCK:144,SEMICOLON:186,DASH:189,EQUALS:187,COMMA:188,PERIOD:190,SLASH:191,APOSTROPHE:192,SINGLE_QUOTE:222,OPEN_SQUARE_BRACKET:219,BACKSLASH:220,CLOSE_SQUARE_BRACKET:221,WIN_KEY:224,MAC_FF_META:224,WIN_IME:229,isTextModifyingKeyEvent:function(e){var t=e.keyCode;if(e.altKey&&!e.ctrlKey||e.metaKey||t>=R.F1&&t<=R.F12)return!1;switch(t){case R.ALT:case R.CAPS_LOCK:case R.CONTEXT_MENU:case R.CTRL:case R.DOWN:case R.END:case R.ESC:case R.HOME:case R.INSERT:case R.LEFT:case R.MAC_FF_META:case R.META:case R.NUMLOCK:case R.NUM_CENTER:case R.PAGE_DOWN:case R.PAGE_UP:case R.PAUSE:case R.PRINT_SCREEN:case R.RIGHT:case R.SHIFT:case R.UP:case R.WIN_KEY:case R.WIN_KEY_RIGHT:return!1;default:return!0}},isCharacterKey:function(e){if(e>=R.ZERO&&e<=R.NINE)return!0;if(e>=R.NUM_ZERO&&e<=R.NUM_MULTIPLY)return!0;if(e>=R.A&&e<=R.Z)return!0;if(-1!==window.navigator.userAgent.indexOf("WebKit")&&0===e)return!0;switch(e){case R.SPACE:case R.QUESTION_MARK:case R.NUM_PLUS:case R.NUM_MINUS:case R.NUM_PERIOD:case R.NUM_DIVISION:case R.SEMICOLON:case R.DASH:case R.EQUALS:case R.COMMA:case R.PERIOD:case R.SLASH:case R.APOSTROPHE:case R.SINGLE_QUOTE:case R.OPEN_SQUARE_BRACKET:case R.BACKSLASH:case R.CLOSE_SQUARE_BRACKET:return!0;default:return!1}}};const N=R;var $=["prefixCls","className","checked","defaultChecked","disabled","loadingIcon","checkedChildren","unCheckedChildren","onClick","onChange","onKeyDown"],I=r.forwardRef((function(e,t){var n,o=e.prefixCls,u=void 0===o?"rc-switch":o,f=e.className,d=e.checked,h=e.defaultChecked,v=e.disabled,p=e.loadingIcon,g=e.checkedChildren,m=e.unCheckedChildren,y=e.onClick,b=e.onChange,_=e.onKeyDown,w=(0,c.Z)(e,$),x=(0,T.Z)(!1,{value:d,defaultValue:h}),S=(0,a.Z)(x,2),O=S[0],k=S[1];function E(e,t){var n=O;return v||(k(n=e),null==b||b(n,t)),n}var Z=l()(u,f,(n={},(0,s.Z)(n,"".concat(u,"-checked"),O),(0,s.Z)(n,"".concat(u,"-disabled"),v),n));return r.createElement("button",(0,i.Z)({},w,{type:"button",role:"switch","aria-checked":O,disabled:v,className:Z,ref:t,onKeyDown:function(e){e.which===N.LEFT?E(!1,e):e.which===N.RIGHT&&E(!0,e),null==_||_(e)},onClick:function(e){var t=E(!O,e);null==y||y(t,e)}}),p,r.createElement("span",{className:"".concat(u,"-inner")},r.createElement("span",{className:"".concat(u,"-inner-checked")},g),r.createElement("span",{className:"".concat(u,"-inner-unchecked")},m)))}));I.displayName="Switch";const L=I;var V=n(4769),D=n(3124),H=n(8866),B=n(7647);const z=e=>{const t=r.useContext(B.Z);return r.useMemo((()=>e?"string"==typeof e?null!=e?e:t:e instanceof Function?e(t):t:t),[e,t])};var q=n(5980),U=n(274),W=n(4747),G=n(1945),X=n(5503);const K=e=>{const{componentCls:t,trackHeightSM:n,trackPadding:r,trackMinWidthSM:i,innerMinMarginSM:o,innerMaxMarginSM:a,handleSizeSM:s,calc:c}=e,u=`${t}-inner`,l=(0,q.bf)(c(s).add(c(r).mul(2)).equal()),f=(0,q.bf)(c(a).mul(2).equal());return{[t]:{[`&${t}-small`]:{minWidth:i,height:n,lineHeight:(0,q.bf)(n),[`${t}-inner`]:{paddingInlineStart:a,paddingInlineEnd:o,[`${u}-checked`]:{marginInlineStart:`calc(-100% + ${l} - ${f})`,marginInlineEnd:`calc(100% - ${l} + ${f})`},[`${u}-unchecked`]:{marginTop:c(n).mul(-1).equal(),marginInlineStart:0,marginInlineEnd:0}},[`${t}-handle`]:{width:s,height:s},[`${t}-loading-icon`]:{top:c(c(s).sub(e.switchLoadingIconSize)).div(2).equal(),fontSize:e.switchLoadingIconSize},[`&${t}-checked`]:{[`${t}-inner`]:{paddingInlineStart:o,paddingInlineEnd:a,[`${u}-checked`]:{marginInlineStart:0,marginInlineEnd:0},[`${u}-unchecked`]:{marginInlineStart:`calc(100% - ${l} + ${f})`,marginInlineEnd:`calc(-100% + ${l} - ${f})`}},[`${t}-handle`]:{insetInlineStart:`calc(100% - ${(0,q.bf)(c(s).add(r).equal())})`}},[`&:not(${t}-disabled):active`]:{[`&:not(${t}-checked) ${u}`]:{[`${u}-unchecked`]:{marginInlineStart:c(e.marginXXS).div(2).equal(),marginInlineEnd:c(e.marginXXS).mul(-1).div(2).equal()}},[`&${t}-checked ${u}`]:{[`${u}-checked`]:{marginInlineStart:c(e.marginXXS).mul(-1).div(2).equal(),marginInlineEnd:c(e.marginXXS).div(2).equal()}}}}}}},Y=e=>{const{componentCls:t,handleSize:n,calc:r}=e;return{[t]:{[`${t}-loading-icon${e.iconCls}`]:{position:"relative",top:r(r(n).sub(e.fontSize)).div(2).equal(),color:e.switchLoadingIconColor,verticalAlign:"top"},[`&${t}-checked ${t}-loading-icon`]:{color:e.switchColor}}}},Q=e=>{const{componentCls:t,trackPadding:n,handleBg:r,handleShadow:i,handleSize:o,calc:a}=e,s=`${t}-handle`;return{[t]:{[s]:{position:"absolute",top:n,insetInlineStart:n,width:o,height:o,transition:`all ${e.switchDuration} ease-in-out`,"&::before":{position:"absolute",top:0,insetInlineEnd:0,bottom:0,insetInlineStart:0,backgroundColor:r,borderRadius:a(o).div(2).equal(),boxShadow:i,transition:`all ${e.switchDuration} ease-in-out`,content:'""'}},[`&${t}-checked ${s}`]:{insetInlineStart:`calc(100% - ${(0,q.bf)(a(o).add(n).equal())})`},[`&:not(${t}-disabled):active`]:{[`${s}::before`]:{insetInlineEnd:e.switchHandleActiveInset,insetInlineStart:0},[`&${t}-checked ${s}::before`]:{insetInlineEnd:0,insetInlineStart:e.switchHandleActiveInset}}}}},J=e=>{const{componentCls:t,trackHeight:n,trackPadding:r,innerMinMargin:i,innerMaxMargin:o,handleSize:a,calc:s}=e,c=`${t}-inner`,u=(0,q.bf)(s(a).add(s(r).mul(2)).equal()),l=(0,q.bf)(s(o).mul(2).equal());return{[t]:{[c]:{display:"block",overflow:"hidden",borderRadius:100,height:"100%",paddingInlineStart:o,paddingInlineEnd:i,transition:`padding-inline-start ${e.switchDuration} ease-in-out, padding-inline-end ${e.switchDuration} ease-in-out`,[`${c}-checked, ${c}-unchecked`]:{display:"block",color:e.colorTextLightSolid,fontSize:e.fontSizeSM,transition:`margin-inline-start ${e.switchDuration} ease-in-out, margin-inline-end ${e.switchDuration} ease-in-out`,pointerEvents:"none"},[`${c}-checked`]:{marginInlineStart:`calc(-100% + ${u} - ${l})`,marginInlineEnd:`calc(100% - ${u} + ${l})`},[`${c}-unchecked`]:{marginTop:s(n).mul(-1).equal(),marginInlineStart:0,marginInlineEnd:0}},[`&${t}-checked ${c}`]:{paddingInlineStart:i,paddingInlineEnd:o,[`${c}-checked`]:{marginInlineStart:0,marginInlineEnd:0},[`${c}-unchecked`]:{marginInlineStart:`calc(100% - ${u} + ${l})`,marginInlineEnd:`calc(-100% + ${u} - ${l})`}},[`&:not(${t}-disabled):active`]:{[`&:not(${t}-checked) ${c}`]:{[`${c}-unchecked`]:{marginInlineStart:s(r).mul(2).equal(),marginInlineEnd:s(r).mul(-1).mul(2).equal()}},[`&${t}-checked ${c}`]:{[`${c}-checked`]:{marginInlineStart:s(r).mul(-1).mul(2).equal(),marginInlineEnd:s(r).mul(2).equal()}}}}}},ee=e=>{const{componentCls:t,trackHeight:n,trackMinWidth:r}=e;return{[t]:Object.assign(Object.assign(Object.assign(Object.assign({},(0,W.Wf)(e)),{position:"relative",display:"inline-block",boxSizing:"border-box",minWidth:r,height:n,lineHeight:`${(0,q.bf)(n)}`,verticalAlign:"middle",background:e.colorTextQuaternary,border:"0",borderRadius:100,cursor:"pointer",transition:`all ${e.motionDurationMid}`,userSelect:"none",[`&:hover:not(${t}-disabled)`]:{background:e.colorTextTertiary}}),(0,W.Qy)(e)),{[`&${t}-checked`]:{background:e.switchColor,[`&:hover:not(${t}-disabled)`]:{background:e.colorPrimaryHover}},[`&${t}-loading, &${t}-disabled`]:{cursor:"not-allowed",opacity:e.switchDisabledOpacity,"*":{boxShadow:"none",cursor:"not-allowed"}},[`&${t}-rtl`]:{direction:"rtl"}})}},te=(0,G.I$)("Switch",(e=>{const t=(0,X.TS)(e,{switchDuration:e.motionDurationMid,switchColor:e.colorPrimary,switchDisabledOpacity:e.opacityLoading,switchLoadingIconSize:e.calc(e.fontSizeIcon).mul(.75).equal(),switchLoadingIconColor:`rgba(0, 0, 0, ${e.opacityLoading})`,switchHandleActiveInset:"-30%"});return[ee(t),J(t),Q(t),Y(t),K(t)]}),(e=>{const{fontSize:t,lineHeight:n,controlHeight:r,colorWhite:i}=e,o=t*n,a=r/2,s=o-4,c=a-4;return{trackHeight:o,trackHeightSM:a,trackMinWidth:2*s+8,trackMinWidthSM:2*c+4,trackPadding:2,handleBg:i,handleSize:s,handleSizeSM:c,handleShadow:`0 2px 4px 0 ${new U.C("#00230b").setAlpha(.2).toRgbString()}`,innerMinMargin:s/2,innerMaxMargin:s+2+4,innerMinMarginSM:c/2,innerMaxMarginSM:c+2+4}}));var ne=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(e);i{const{prefixCls:n,size:i,disabled:o,loading:a,className:s,rootClassName:c,style:u,checked:f,value:d,defaultChecked:h,defaultValue:v,onChange:p}=e,g=ne(e,["prefixCls","size","disabled","loading","className","rootClassName","style","checked","value","defaultChecked","defaultValue","onChange"]),[m,y]=(0,T.Z)(!1,{value:null!=f?f:d,defaultValue:null!=h?h:v}),{getPrefixCls:b,direction:_,switch:w}=r.useContext(D.E_),x=r.useContext(H.Z),S=(null!=o?o:x)||a,O=b("switch",n),k=r.createElement("div",{className:`${O}-handle`},a&&r.createElement(M,{className:`${O}-loading-icon`})),[E,Z]=te(O),C=z(i),A=l()(null==w?void 0:w.className,{[`${O}-small`]:"small"===C,[`${O}-loading`]:a,[`${O}-rtl`]:"rtl"===_},s,c,Z),P=Object.assign(Object.assign({},null==w?void 0:w.style),u);return E(r.createElement(V.Z,{component:"Switch"},r.createElement(L,Object.assign({},g,{checked:m,onChange:function(){y(arguments.length<=0?void 0:arguments[0]),null==p||p.apply(void 0,arguments)},prefixCls:O,className:A,style:P,disabled:S,ref:t,loadingIcon:k}))))}));re.__ANT_SWITCH=!0;const ie=re},3083:(e,t,n)=>{"use strict";n.d(t,{Mj:()=>u,uH:()=>s,u_:()=>c});var r=n(7294),i=n(5980),o=n(7164),a=n(2790);const s=(0,i.jG)(o.Z),c={token:a.Z,override:{override:a.Z},hashed:!0},u=r.createContext(c)},9361:(e,t,n)=>{"use strict";n.d(t,{Z:()=>w});var r=n(5980),i=n(7164),o=n(2790),a=n(1393);const s=e=>{const t=(null==e?void 0:e.algorithm)?(0,r.jG)(e.algorithm):(0,r.jG)(i.Z),n=Object.assign(Object.assign({},o.Z),null==e?void 0:e.token);return(0,r.t2)(n,{override:null==e?void 0:e.token},t,a.Z)};var c=n(5976),u=n(3083),l=n(372);var f=n(8378);const d=(e,t)=>{const n=null!=t?t:(0,i.Z)(e),r=n.fontSizeSM,o=n.controlHeight-4;return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},n),function(e){const{sizeUnit:t,sizeStep:n}=e,r=n-2;return{sizeXXL:t*(r+10),sizeXL:t*(r+6),sizeLG:t*(r+2),sizeMD:t*(r+2),sizeMS:t*(r+1),size:t*r,sizeSM:t*r,sizeXS:t*(r-1),sizeXXS:t*(r-1)}}(null!=t?t:e)),(0,f.Z)(r)),{controlHeight:o}),(0,l.Z)(Object.assign(Object.assign({},n),{controlHeight:o})))};var h=n(6397),v=n(57),p=n(274);const g=(e,t)=>new p.C(e).setAlpha(t).toRgbString(),m=(e,t)=>new p.C(e).lighten(t).toHexString(),y=e=>{const t=(0,h.R_)(e,{theme:"dark"});return{1:t[0],2:t[1],3:t[2],4:t[3],5:t[6],6:t[5],7:t[4],8:t[6],9:t[5],10:t[4]}},b=(e,t)=>{const n=e||"#000",r=t||"#fff";return{colorBgBase:n,colorTextBase:r,colorText:g(r,.85),colorTextSecondary:g(r,.65),colorTextTertiary:g(r,.45),colorTextQuaternary:g(r,.25),colorFill:g(r,.18),colorFillSecondary:g(r,.12),colorFillTertiary:g(r,.08),colorFillQuaternary:g(r,.04),colorBgElevated:m(n,12),colorBgContainer:m(n,8),colorBgLayout:m(n,0),colorBgSpotlight:m(n,26),colorBgBlur:g(r,.04),colorBorder:m(n,26),colorBorderSecondary:m(n,19)}},_=(e,t)=>{const n=Object.keys(o.M).map((t=>{const n=(0,h.R_)(e[t],{theme:"dark"});return new Array(10).fill(1).reduce(((e,r,i)=>(e[`${t}-${i+1}`]=n[i],e[`${t}${i+1}`]=n[i],e)),{})})).reduce(((e,t)=>e=Object.assign(Object.assign({},e),t)),{}),r=null!=t?t:(0,i.Z)(e);return Object.assign(Object.assign(Object.assign({},r),n),(0,v.Z)(e,{generateColorPalettes:y,generateNeutralColorPalettes:b}))};const w={defaultConfig:u.u_,defaultSeed:u.u_.token,useToken:function(){const[e,t,n]=(0,c.ZP)();return{theme:e,token:t,hashId:n}},defaultAlgorithm:i.Z,darkAlgorithm:_,compactAlgorithm:d,getDesignToken:s}},7164:(e,t,n)=>{"use strict";n.d(t,{Z:()=>v});var r=n(6397),i=n(372);var o=n(2790),a=n(57);const s=e=>{let t=e,n=e,r=e,i=e;return e<6&&e>=5?t=e+1:e<16&&e>=6?t=e+2:e>=16&&(t=16),e<7&&e>=5?n=4:e<8&&e>=7?n=5:e<14&&e>=8?n=6:e<16&&e>=14?n=7:e>=16&&(n=8),e<6&&e>=2?r=1:e>=6&&(r=2),e>4&&e<8?i=4:e>=8&&(i=6),{borderRadius:e,borderRadiusXS:r,borderRadiusSM:n,borderRadiusLG:t,borderRadiusOuter:i}};var c=n(274);const u=(e,t)=>new c.C(e).setAlpha(t).toRgbString(),l=(e,t)=>new c.C(e).darken(t).toHexString(),f=e=>{const t=(0,r.R_)(e);return{1:t[0],2:t[1],3:t[2],4:t[3],5:t[4],6:t[5],7:t[6],8:t[4],9:t[5],10:t[6]}},d=(e,t)=>{const n=e||"#fff",r=t||"#000";return{colorBgBase:n,colorTextBase:r,colorText:u(r,.88),colorTextSecondary:u(r,.65),colorTextTertiary:u(r,.45),colorTextQuaternary:u(r,.25),colorFill:u(r,.15),colorFillSecondary:u(r,.06),colorFillTertiary:u(r,.04),colorFillQuaternary:u(r,.02),colorBgLayout:l(n,4),colorBgContainer:l(n,0),colorBgElevated:l(n,0),colorBgSpotlight:u(r,.85),colorBgBlur:"transparent",colorBorder:l(n,15),colorBorderSecondary:l(n,6)}};var h=n(8378);function v(e){const t=Object.keys(o.M).map((t=>{const n=(0,r.R_)(e[t]);return new Array(10).fill(1).reduce(((e,r,i)=>(e[`${t}-${i+1}`]=n[i],e[`${t}${i+1}`]=n[i],e)),{})})).reduce(((e,t)=>e=Object.assign(Object.assign({},e),t)),{});return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},e),t),(0,a.Z)(e,{generateColorPalettes:f,generateNeutralColorPalettes:d})),(0,h.Z)(e.fontSize)),function(e){const{sizeUnit:t,sizeStep:n}=e;return{sizeXXL:t*(n+8),sizeXL:t*(n+4),sizeLG:t*(n+2),sizeMD:t*(n+1),sizeMS:t*n,size:t*n,sizeSM:t*(n-1),sizeXS:t*(n-2),sizeXXS:t*(n-3)}}(e)),(0,i.Z)(e)),function(e){const{motionUnit:t,motionBase:n,borderRadius:r,lineWidth:i}=e;return Object.assign({motionDurationFast:`${(n+t).toFixed(1)}s`,motionDurationMid:`${(n+2*t).toFixed(1)}s`,motionDurationSlow:`${(n+3*t).toFixed(1)}s`,lineWidthBold:i+1},s(r))}(e))}},2790:(e,t,n)=>{"use strict";n.d(t,{M:()=>r,Z:()=>i});const r={blue:"#1677ff",purple:"#722ED1",cyan:"#13C2C2",green:"#52C41A",magenta:"#EB2F96",pink:"#eb2f96",red:"#F5222D",orange:"#FA8C16",yellow:"#FADB14",volcano:"#FA541C",geekblue:"#2F54EB",gold:"#FAAD14",lime:"#A0D911"},i=Object.assign(Object.assign({},r),{colorPrimary:"#1677ff",colorSuccess:"#52c41a",colorWarning:"#faad14",colorError:"#ff4d4f",colorInfo:"#1677ff",colorLink:"",colorTextBase:"",colorBgBase:"",fontFamily:"-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial,\n'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol',\n'Noto Color Emoji'",fontFamilyCode:"'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, Courier, monospace",fontSize:14,lineWidth:1,lineType:"solid",motionUnit:.1,motionBase:0,motionEaseOutCirc:"cubic-bezier(0.08, 0.82, 0.17, 1)",motionEaseInOutCirc:"cubic-bezier(0.78, 0.14, 0.15, 0.86)",motionEaseOut:"cubic-bezier(0.215, 0.61, 0.355, 1)",motionEaseInOut:"cubic-bezier(0.645, 0.045, 0.355, 1)",motionEaseOutBack:"cubic-bezier(0.12, 0.4, 0.29, 1.46)",motionEaseInBack:"cubic-bezier(0.71, -0.46, 0.88, 0.6)",motionEaseInQuint:"cubic-bezier(0.755, 0.05, 0.855, 0.06)",motionEaseOutQuint:"cubic-bezier(0.23, 1, 0.32, 1)",borderRadius:6,sizeUnit:4,sizeStep:4,sizePopupArrow:16,controlHeight:32,zIndexBase:0,zIndexPopupBase:1e3,opacityImage:1,wireframe:!1,motion:!0})},57:(e,t,n)=>{"use strict";n.d(t,{Z:()=>i});var r=n(274);function i(e,t){let{generateColorPalettes:n,generateNeutralColorPalettes:i}=t;const{colorSuccess:o,colorWarning:a,colorError:s,colorInfo:c,colorPrimary:u,colorBgBase:l,colorTextBase:f}=e,d=n(u),h=n(o),v=n(a),p=n(s),g=n(c),m=i(l,f),y=n(e.colorLink||e.colorInfo);return Object.assign(Object.assign({},m),{colorPrimaryBg:d[1],colorPrimaryBgHover:d[2],colorPrimaryBorder:d[3],colorPrimaryBorderHover:d[4],colorPrimaryHover:d[5],colorPrimary:d[6],colorPrimaryActive:d[7],colorPrimaryTextHover:d[8],colorPrimaryText:d[9],colorPrimaryTextActive:d[10],colorSuccessBg:h[1],colorSuccessBgHover:h[2],colorSuccessBorder:h[3],colorSuccessBorderHover:h[4],colorSuccessHover:h[4],colorSuccess:h[6],colorSuccessActive:h[7],colorSuccessTextHover:h[8],colorSuccessText:h[9],colorSuccessTextActive:h[10],colorErrorBg:p[1],colorErrorBgHover:p[2],colorErrorBorder:p[3],colorErrorBorderHover:p[4],colorErrorHover:p[5],colorError:p[6],colorErrorActive:p[7],colorErrorTextHover:p[8],colorErrorText:p[9],colorErrorTextActive:p[10],colorWarningBg:v[1],colorWarningBgHover:v[2],colorWarningBorder:v[3],colorWarningBorderHover:v[4],colorWarningHover:v[4],colorWarning:v[6],colorWarningActive:v[7],colorWarningTextHover:v[8],colorWarningText:v[9],colorWarningTextActive:v[10],colorInfoBg:g[1],colorInfoBgHover:g[2],colorInfoBorder:g[3],colorInfoBorderHover:g[4],colorInfoHover:g[4],colorInfo:g[6],colorInfoActive:g[7],colorInfoTextHover:g[8],colorInfoText:g[9],colorInfoTextActive:g[10],colorLinkHover:y[4],colorLink:y[6],colorLinkActive:y[7],colorBgMask:new r.C("#000").setAlpha(.45).toRgbString(),colorWhite:"#fff"})}},372:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r=e=>{const{controlHeight:t}=e;return{controlHeightSM:.75*t,controlHeightXS:.5*t,controlHeightLG:1.25*t}}},8378:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r=e=>{const t=function(e){const t=new Array(10).fill(null).map(((t,n)=>{const r=n-1,i=e*Math.pow(2.71828,r/5),o=n>1?Math.floor(i):Math.ceil(i);return 2*Math.floor(o/2)}));return t[1]=e,t.map((e=>({size:e,lineHeight:(e+8)/e})))}(e),n=t.map((e=>e.size)),r=t.map((e=>e.lineHeight)),i=n[1],o=n[0],a=n[2],s=r[1],c=r[0],u=r[2];return{fontSizeSM:o,fontSize:i,fontSizeLG:a,fontSizeXL:n[3],fontSizeHeading1:n[6],fontSizeHeading2:n[5],fontSizeHeading3:n[4],fontSizeHeading4:n[3],fontSizeHeading5:n[2],lineHeight:s,lineHeightLG:u,lineHeightSM:c,fontHeight:Math.round(s*i),fontHeightLG:Math.round(u*a),fontHeightSM:Math.round(c*o),lineHeightHeading1:r[6],lineHeightHeading2:r[5],lineHeightHeading3:r[4],lineHeightHeading4:r[3],lineHeightHeading5:r[2]}}},5976:(e,t,n)=>{"use strict";n.d(t,{ZP:()=>v,ID:()=>f,NJ:()=>l});var r=n(7294),i=n(5980);const o="5.12.2";var a=n(3083),s=n(2790),c=n(1393),u=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(e);i{const r=n.getDerivativeToken(e),{override:i}=t,o=u(t,["override"]);let a=Object.assign(Object.assign({},r),{override:i});return a=(0,c.Z)(a),o&&Object.entries(o).forEach((e=>{let[t,n]=e;const{theme:r}=n,i=u(n,["theme"]);let o=i;r&&(o=h(Object.assign(Object.assign({},a),i),{override:i},r)),a[t]=o})),a};function v(){const{token:e,hashed:t,theme:n,override:u,cssVar:v}=r.useContext(a.Mj),p=`${o}-${t||""}`,g=n||a.uH,[m,y,b]=(0,i.fp)(g,[s.Z,e],{salt:p,override:u,getComputedToken:h,formatToken:c.Z,cssVar:v&&{prefix:v.prefix,key:v.key,unitless:l,ignore:f,preserve:d}});return[g,b,t?y:"",m,v]}},1393:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});var r=n(274),i=n(2790);function o(e){return e>=0&&e<=255}const a=function(e,t){const{r:n,g:i,b:a,a:s}=new r.C(e).toRgb();if(s<1)return e;const{r:c,g:u,b:l}=new r.C(t).toRgb();for(let f=.01;f<=1;f+=.01){const e=Math.round((n-c*(1-f))/f),t=Math.round((i-u*(1-f))/f),s=Math.round((a-l*(1-f))/f);if(o(e)&&o(t)&&o(s))return new r.C({r:e,g:t,b:s,a:Math.round(100*f)/100}).toRgbString()}return new r.C({r:n,g:i,b:a,a:1}).toRgbString()};var s=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(e);i{delete o[e]}));const c=Object.assign(Object.assign({},n),o),u=1200,l=1600;if(!1===c.motion){const e="0s";c.motionDurationFast=e,c.motionDurationMid=e,c.motionDurationSlow=e}return Object.assign(Object.assign(Object.assign({},c),{colorFillContent:c.colorFillSecondary,colorFillContentHover:c.colorFill,colorFillAlter:c.colorFillQuaternary,colorBgContainerDisabled:c.colorFillTertiary,colorBorderBg:c.colorBgContainer,colorSplit:a(c.colorBorderSecondary,c.colorBgContainer),colorTextPlaceholder:c.colorTextQuaternary,colorTextDisabled:c.colorTextQuaternary,colorTextHeading:c.colorText,colorTextLabel:c.colorTextSecondary,colorTextDescription:c.colorTextTertiary,colorTextLightSolid:c.colorWhite,colorHighlight:c.colorError,colorBgTextHover:c.colorFillSecondary,colorBgTextActive:c.colorFill,colorIcon:c.colorTextTertiary,colorIconHover:c.colorText,colorErrorOutline:a(c.colorErrorBg,c.colorBgContainer),colorWarningOutline:a(c.colorWarningBg,c.colorBgContainer),fontSizeIcon:c.fontSizeSM,lineWidthFocus:4*c.lineWidth,lineWidth:c.lineWidth,controlOutlineWidth:2*c.lineWidth,controlInteractiveSize:c.controlHeight/2,controlItemBgHover:c.colorFillTertiary,controlItemBgActive:c.colorPrimaryBg,controlItemBgActiveHover:c.colorPrimaryBgHover,controlItemBgActiveDisabled:c.colorFill,controlTmpOutline:c.colorFillQuaternary,controlOutline:a(c.colorPrimaryBg,c.colorBgContainer),lineType:c.lineType,borderRadius:c.borderRadius,borderRadiusXS:c.borderRadiusXS,borderRadiusSM:c.borderRadiusSM,borderRadiusLG:c.borderRadiusLG,fontWeightStrong:600,opacityLoading:.65,linkDecoration:"none",linkHoverDecoration:"none",linkFocusDecoration:"none",controlPaddingHorizontal:12,controlPaddingHorizontalSM:8,paddingXXS:c.sizeXXS,paddingXS:c.sizeXS,paddingSM:c.sizeSM,padding:c.size,paddingMD:c.sizeMD,paddingLG:c.sizeLG,paddingXL:c.sizeXL,paddingContentHorizontalLG:c.sizeLG,paddingContentVerticalLG:c.sizeMS,paddingContentHorizontal:c.sizeMS,paddingContentVertical:c.sizeSM,paddingContentHorizontalSM:c.size,paddingContentVerticalSM:c.sizeXS,marginXXS:c.sizeXXS,marginXS:c.sizeXS,marginSM:c.sizeSM,margin:c.size,marginMD:c.sizeMD,marginLG:c.sizeLG,marginXL:c.sizeXL,marginXXL:c.sizeXXL,boxShadow:"\n 0 6px 16px 0 rgba(0, 0, 0, 0.08),\n 0 3px 6px -4px rgba(0, 0, 0, 0.12),\n 0 9px 28px 8px rgba(0, 0, 0, 0.05)\n ",boxShadowSecondary:"\n 0 6px 16px 0 rgba(0, 0, 0, 0.08),\n 0 3px 6px -4px rgba(0, 0, 0, 0.12),\n 0 9px 28px 8px rgba(0, 0, 0, 0.05)\n ",boxShadowTertiary:"\n 0 1px 2px 0 rgba(0, 0, 0, 0.03),\n 0 1px 6px -1px rgba(0, 0, 0, 0.02),\n 0 2px 4px 0 rgba(0, 0, 0, 0.02)\n ",screenXS:480,screenXSMin:480,screenXSMax:575,screenSM:576,screenSMMin:576,screenSMMax:767,screenMD:768,screenMDMin:768,screenMDMax:991,screenLG:992,screenLGMin:992,screenLGMax:1199,screenXL:u,screenXLMin:u,screenXLMax:1599,screenXXL:l,screenXXLMin:l,boxShadowPopoverArrow:"2px 2px 5px rgba(0, 0, 0, 0.05)",boxShadowCard:`\n 0 1px 2px -2px ${new r.C("rgba(0, 0, 0, 0.16)").toRgbString()},\n 0 3px 6px 0 ${new r.C("rgba(0, 0, 0, 0.12)").toRgbString()},\n 0 5px 12px 4px ${new r.C("rgba(0, 0, 0, 0.09)").toRgbString()}\n `,boxShadowDrawerRight:"\n -6px 0 16px 0 rgba(0, 0, 0, 0.08),\n -3px 0 6px -4px rgba(0, 0, 0, 0.12),\n -9px 0 28px 8px rgba(0, 0, 0, 0.05)\n ",boxShadowDrawerLeft:"\n 6px 0 16px 0 rgba(0, 0, 0, 0.08),\n 3px 0 6px -4px rgba(0, 0, 0, 0.12),\n 9px 0 28px 8px rgba(0, 0, 0, 0.05)\n ",boxShadowDrawerUp:"\n 0 6px 16px 0 rgba(0, 0, 0, 0.08),\n 0 3px 6px -4px rgba(0, 0, 0, 0.12),\n 0 9px 28px 8px rgba(0, 0, 0, 0.05)\n ",boxShadowDrawerDown:"\n 0 -6px 16px 0 rgba(0, 0, 0, 0.08),\n 0 -3px 6px -4px rgba(0, 0, 0, 0.12),\n 0 -9px 28px 8px rgba(0, 0, 0, 0.05)\n ",boxShadowTabsOverflowLeft:"inset 10px 0 8px -8px rgba(0, 0, 0, 0.08)",boxShadowTabsOverflowRight:"inset -10px 0 8px -8px rgba(0, 0, 0, 0.08)",boxShadowTabsOverflowTop:"inset 0 10px 8px -8px rgba(0, 0, 0, 0.08)",boxShadowTabsOverflowBottom:"inset 0 -10px 8px -8px rgba(0, 0, 0, 0.08)"}),o)}},1945:(e,t,n)=>{"use strict";n.d(t,{ZP:()=>k,I$:()=>E});var r=n(7294),i=n(5980),o=n(9875),a=n.n(o),s=(n(6790),n(3124)),c=n(4747),u=n(5976),l=n(5671),f=n(3144),d=n(136),h=n(3568);const v=(0,f.Z)((function e(){(0,l.Z)(this,e)}));let p=function(e){(0,d.Z)(n,e);var t=(0,h.Z)(n);function n(e){var r;return(0,l.Z)(this,n),(r=t.call(this)).result=0,e instanceof n?r.result=e.result:"number"==typeof e&&(r.result=e),r}return(0,f.Z)(n,[{key:"add",value:function(e){return e instanceof n?this.result+=e.result:"number"==typeof e&&(this.result+=e),this}},{key:"sub",value:function(e){return e instanceof n?this.result-=e.result:"number"==typeof e&&(this.result-=e),this}},{key:"mul",value:function(e){return e instanceof n?this.result*=e.result:"number"==typeof e&&(this.result*=e),this}},{key:"div",value:function(e){return e instanceof n?this.result/=e.result:"number"==typeof e&&(this.result/=e),this}},{key:"equal",value:function(){return this.result}}]),n}(v);const g="CALC_UNIT";function m(e){return"number"==typeof e?`${e}${g}`:e}let y=function(e){(0,d.Z)(n,e);var t=(0,h.Z)(n);function n(e){var r;return(0,l.Z)(this,n),(r=t.call(this)).result="",e instanceof n?r.result=`(${e.result})`:"number"==typeof e?r.result=m(e):"string"==typeof e&&(r.result=e),r}return(0,f.Z)(n,[{key:"add",value:function(e){return e instanceof n?this.result=`${this.result} + ${e.getResult()}`:"number"!=typeof e&&"string"!=typeof e||(this.result=`${this.result} + ${m(e)}`),this.lowPriority=!0,this}},{key:"sub",value:function(e){return e instanceof n?this.result=`${this.result} - ${e.getResult()}`:"number"!=typeof e&&"string"!=typeof e||(this.result=`${this.result} - ${m(e)}`),this.lowPriority=!0,this}},{key:"mul",value:function(e){return this.lowPriority&&(this.result=`(${this.result})`),e instanceof n?this.result=`${this.result} * ${e.getResult(!0)}`:"number"!=typeof e&&"string"!=typeof e||(this.result=`${this.result} * ${e}`),this.lowPriority=!1,this}},{key:"div",value:function(e){return this.lowPriority&&(this.result=`(${this.result})`),e instanceof n?this.result=`${this.result} / ${e.getResult(!0)}`:"number"!=typeof e&&"string"!=typeof e||(this.result=`${this.result} / ${e}`),this.lowPriority=!1,this}},{key:"getResult",value:function(e){return this.lowPriority||e?`(${this.result})`:this.result}},{key:"equal",value:function(e){const{unit:t=!0}=e||{},n=new RegExp(`${g}`,"g");return this.result=this.result.replace(n,t?"px":""),void 0!==this.lowPriority?`calc(${this.result})`:this.result}}]),n}(v);const b=e=>{const t="css"===e?y:p;return e=>new t(e)};var _=n(5503),w=n(3269);const x=(e,t,n)=>{var r;return"function"==typeof n?n((0,_.TS)(t,null!==(r=t[e])&&void 0!==r?r:{})):null!=n?n:{}},S=(e,t,n,r)=>{const i=Object.assign({},t[e]);if(null==r?void 0:r.deprecatedTokens){const{deprecatedTokens:e}=r;e.forEach((e=>{let[t,n]=e;var r;((null==i?void 0:i[t])||(null==i?void 0:i[n]))&&(null!==(r=i[n])&&void 0!==r||(i[n]=null==i?void 0:i[t]))}))}let o=Object.assign(Object.assign({},n),i);return(null==r?void 0:r.format)&&(o=r.format(o)),Object.keys(o).forEach((e=>{o[e]===t[e]&&delete o[e]})),o},O=(e,t)=>`${[t,e.replace(/([A-Z]+)([A-Z][a-z]+)/g,"$1-$2").replace(/([a-z])([A-Z])/g,"$1-$2")].filter(Boolean).join("-")}`;function k(e,t,n){let o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};const l=Array.isArray(e)?e:[e,e],[f]=l,d=l.join("-");return e=>{const[l,h,v,p,g]=(0,u.ZP)(),{getPrefixCls:m,iconPrefixCls:y,csp:k}=(0,r.useContext)(s.E_),E=m(),Z=g?"css":"js",C=b(Z),{max:A,min:P}=function(e){return"js"===e?{max:Math.max,min:Math.min}:{max:function(){for(var e=arguments.length,t=new Array(e),n=0;n(0,i.bf)(e))).join(",")})`},min:function(){for(var e=arguments.length,t=new Array(e),n=0;n(0,i.bf)(e))).join(",")})`}}}(Z),j={theme:l,token:p,hashId:v,nonce:()=>null==k?void 0:k.nonce,clientOnly:o.clientOnly,order:o.order||-999};(0,i.xy)(Object.assign(Object.assign({},j),{clientOnly:!1,path:["Shared",E]}),(()=>[{"&":(0,c.Lx)(p)}])),(0,w.Z)(y,k);return[(0,i.xy)(Object.assign(Object.assign({},j),{path:[d,e,y]}),(()=>{if(!1===o.injectStyle)return[];const{token:r,flush:a}=(0,_.ZP)(p),s=x(f,h,n),u=`.${e}`,l=S(f,h,s,{deprecatedTokens:o.deprecatedTokens,format:o.format});g&&Object.keys(s).forEach((e=>{s[e]=`var(${(0,i.ks)(e,O(f,g.prefix))})`}));const d=(0,_.TS)(r,{componentCls:u,prefixCls:e,iconCls:`.${y}`,antCls:`.${E}`,calc:C,max:A,min:P},g?s:l),m=t(d,{hashId:v,prefixCls:e,rootPrefixCls:E,iconPrefixCls:y});return a(f,l),[!1===o.resetStyle?null:(0,c.du)(d,e),m]})),a()(v,null==g?void 0:g.key)]}}const E=(e,t,n,o)=>{const a=k(e,t,n,o),s=((e,t,n)=>{function o(t){return`${e}${t.slice(0,1).toUpperCase()}${t.slice(1)}`}const{unitless:a={},injectStyle:s=!0}=null!=n?n:{},c={[o("zIndexPopup")]:!0};Object.keys(a).forEach((e=>{c[o(e)]=a[e]}));const l=r=>{let{rootCls:a,cssVar:s}=r;const[,l]=(0,u.ZP)();return(0,i.CI)({path:[e],prefix:s.prefix,key:null==s?void 0:s.key,unitless:Object.assign(Object.assign({},u.NJ),c),ignore:u.ID,token:l,scope:a},(()=>{const r=x(e,l,t),i=S(e,l,r,{format:null==n?void 0:n.format,deprecatedTokens:null==n?void 0:n.deprecatedTokens});return Object.keys(r).forEach((e=>{i[o(e)]=i[e],delete i[e]})),i})),null};return t=>{const[,,,,n]=(0,u.ZP)();return i=>s&&n?r.createElement(r.Fragment,null,r.createElement(l,{rootCls:t,cssVar:n,component:e}),i):i}})(e,n,o);return function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e;const[,n]=a(e);return[s(t),n]}}},5503:(e,t,n)=>{"use strict";n.d(t,{TS:()=>o,ZP:()=>c});const r="undefined"!=typeof CSSINJS_STATISTIC;let i=!0;function o(){for(var e=arguments.length,t=new Array(e),n=0;n{Object.keys(e).forEach((t=>{Object.defineProperty(o,t,{configurable:!0,enumerable:!0,get:()=>e[t]})}))})),i=!0,o}const a={};function s(){}function c(e){let t,n=e,o=s;return r&&"undefined"!=typeof Proxy&&(t=new Set,n=new Proxy(e,{get:(e,n)=>(i&&t.add(n),e[n])}),o=(e,n)=>{var r;a[e]={global:Array.from(t),component:Object.assign(Object.assign({},null===(r=a[e])||void 0===r?void 0:r.component),n)}}),{token:n,keys:t,flush:o}}},3269:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});var r=n(5980),i=n(4747),o=n(5976);const a=(e,t)=>{const[n,a]=(0,o.ZP)();return(0,r.xy)({theme:n,token:a,hashId:"",path:["ant-design-icons",e],nonce:()=>null==t?void 0:t.nonce},(()=>[{[`.${e}`]:Object.assign(Object.assign({},(0,i.Ro)()),{[`.${e} .${e}-icon`]:{display:"block"}})}]))}},9875:(e,t)=>{var n;!function(){"use strict";var r={}.hasOwnProperty;function i(){for(var e=[],t=0;t{"use strict";n.d(t,{Qj:()=>m});var r=n(8949),i=n(7294);if(!i.useState)throw new Error("mobx-react-lite requires React with Hooks support");if(!r.rC)throw new Error("mobx-react-lite@3 requires mobx at least version 6 to be available");var o=n(3935);function a(e){e()}function s(e){return(0,r.Gf)(e)}var c=function(){function e(e){var t=this;Object.defineProperty(this,"finalize",{enumerable:!0,configurable:!0,writable:!0,value:e}),Object.defineProperty(this,"registrations",{enumerable:!0,configurable:!0,writable:!0,value:new Map}),Object.defineProperty(this,"sweepTimeout",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"sweep",{enumerable:!0,configurable:!0,writable:!0,value:function(e){void 0===e&&(e=1e4),clearTimeout(t.sweepTimeout),t.sweepTimeout=void 0;var n=Date.now();t.registrations.forEach((function(r,i){n-r.registeredAt>=e&&(t.finalize(r.value),t.registrations.delete(i))})),t.registrations.size>0&&t.scheduleSweep()}}),Object.defineProperty(this,"finalizeAllImmediately",{enumerable:!0,configurable:!0,writable:!0,value:function(){t.sweep(0)}})}return Object.defineProperty(e.prototype,"register",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t,n){this.registrations.set(n,{value:t,registeredAt:Date.now()}),this.scheduleSweep()}}),Object.defineProperty(e.prototype,"unregister",{enumerable:!1,configurable:!0,writable:!0,value:function(e){this.registrations.delete(e)}}),Object.defineProperty(e.prototype,"scheduleSweep",{enumerable:!1,configurable:!0,writable:!0,value:function(){void 0===this.sweepTimeout&&(this.sweepTimeout=setTimeout(this.sweep,1e4))}}),e}(),u=new("undefined"!=typeof FinalizationRegistry?FinalizationRegistry:c)((function(e){var t;null===(t=e.reaction)||void 0===t||t.dispose(),e.reaction=null})),l=!1;var f=function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(s){i={error:s}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a};function d(e){return"observer".concat(e)}var h=function(){};function v(){return new h}function p(e,t){if(void 0===t&&(t="observed"),l)return e();var n=f(i.useState(v),1)[0],o=f(i.useState(),2)[1],a=function(){return o([])},c=i.useRef(null);c.current||(c.current={reaction:null,mounted:!1,changedBeforeMount:!1});var h,p,g=c.current;if(g.reaction||(g.reaction=new r.le(d(t),(function(){g.mounted?a():g.changedBeforeMount=!0})),u.register(n,g,g)),i.useDebugValue(g.reaction,s),i.useEffect((function(){return u.unregister(g),g.mounted=!0,g.reaction?g.changedBeforeMount&&(g.changedBeforeMount=!1,a()):(g.reaction=new r.le(d(t),(function(){a()})),a()),function(){g.reaction.dispose(),g.reaction=null,g.mounted=!1,g.changedBeforeMount=!1}}),[]),g.reaction.track((function(){try{h=e()}catch(t){p=t}})),p)throw p;return h}var g="function"==typeof Symbol&&Symbol.for;g?Symbol.for("react.forward_ref"):"function"==typeof i.forwardRef&&(0,i.forwardRef)((function(e){return null})).$$typeof,g?Symbol.for("react.memo"):"function"==typeof i.memo&&(0,i.memo)((function(e){return null})).$$typeof;function m(e){var t=e.children,n=e.render,r=t||n;return"function"!=typeof r?null:p(r)}m.displayName="Observer";var y,b;(b=o.unstable_batchedUpdates)||(b=a),(0,r.jQ)({reactionScheduler:b});y=u.finalizeAllImmediately},8949:(e,t,n)=>{"use strict";n.d(t,{Fl:()=>$e,Gf:()=>Yt,LO:()=>Me,aD:()=>Nt,jQ:()=>Xt,le:()=>xt,rC:()=>yn});function r(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;re.length)&&(t=e.length);for(var n=0,r=new Array(t);n=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var V=Symbol("mobx-stored-annotations");function D(e){return Object.assign((function(t,n){if(B(n))return e.decorate_20223_(t,n);H(t,n,e)}),e)}function H(e,t,n){P(e,V)||x(e,V,T({},e[V])),function(e){return e.annotationType_===Y}(n)||(e[V][t]=n)}function B(e){return"object"==typeof e&&"string"==typeof e.kind}var z=Symbol("mobx administration"),q=function(){function e(e){void 0===e&&(e="Atom"),this.name_=void 0,this.isPendingUnobservation_=!1,this.isBeingObserved_=!1,this.observers_=new Set,this.diffValue_=0,this.lastAccessedBy_=0,this.lowestObserverState_=Xe.NOT_TRACKING_,this.onBOL=void 0,this.onBUOL=void 0,this.name_=e}var t=e.prototype;return t.onBO=function(){this.onBOL&&this.onBOL.forEach((function(e){return e()}))},t.onBUO=function(){this.onBUOL&&this.onBUOL.forEach((function(e){return e()}))},t.reportObserved=function(){return _t(this)},t.reportChanged=function(){yt(),wt(this),bt()},t.toString=function(){return this.name_},e}(),U=O("Atom",q);function W(e,t,n){void 0===t&&(t=g),void 0===n&&(n=g);var r,i=new q(e);return t!==g&&qt(Ht,i,t,r),n!==g&&zt(i,n),i}var G={identity:function(e,t){return e===t},structural:function(e,t){return vr(e,t)},default:function(e,t){return Object.is?Object.is(e,t):e===t?0!==e||1/e==1/t:e!=e&&t!=t},shallow:function(e,t){return vr(e,t,1)}};function X(e,t,n){return cn(e)?e:Array.isArray(e)?Me.array(e,{name:n}):_(e)?Me.object(e,void 0,{name:n}):k(e)?Me.map(e,{name:n}):E(e)?Me.set(e,{name:n}):"function"!=typeof e||It(e)||an(e)?e:w(e)?rn(e):$t(n,e)}function K(e){return e}var Y="override";function Q(e,t){return{annotationType_:e,options_:t,make_:J,extend_:ee,decorate_20223_:te}}function J(e,t,n,r){var i;if(null!=(i=this.options_)&&i.bound)return null===this.extend_(e,t,n,!1)?0:1;if(r===e.target_)return null===this.extend_(e,t,n,!1)?0:2;if(It(n.value))return 1;var o=ne(e,this,t,n,!1);return c(r,t,o),2}function ee(e,t,n,r){var i=ne(e,this,t,n);return e.defineProperty_(t,i,r)}function te(e,t){var n=t.kind,i=t.name,o=t.addInitializer,a=this;if("field"!=n){var s,c,u,l,f,d;if("method"==n)return It(e)||(c=e,e=Be(null!=(u=null==(l=a.options_)?void 0:l.name)?u:i.toString(),c,null!=(f=null==(d=a.options_)?void 0:d.autoAction)&&f)),null!=(s=this.options_)&&s.bound&&o((function(){var e=this,t=e[i].bind(e);t.isMobxAction=!0,e[i]=t})),e;r("Cannot apply '"+a.annotationType_+"' to '"+String(i)+"' (kind: "+n+"):\n'"+a.annotationType_+"' can only be used on properties with a function value.")}else o((function(){H(this,i,a)}))}function ne(e,t,n,r,i){var o,a,s,c,u,l,f,d;void 0===i&&(i=vt.safeDescriptors),d=r,t.annotationType_,d.value;var h,v=r.value;null!=(o=t.options_)&&o.bound&&(v=v.bind(null!=(h=e.proxy_)?h:e.target_));return{value:Be(null!=(a=null==(s=t.options_)?void 0:s.name)?a:n.toString(),v,null!=(c=null==(u=t.options_)?void 0:u.autoAction)&&c,null!=(l=t.options_)&&l.bound?null!=(f=e.proxy_)?f:e.target_:void 0),configurable:!i||e.isPlainObject_,enumerable:!1,writable:!i}}function re(e,t){return{annotationType_:e,options_:t,make_:ie,extend_:oe,decorate_20223_:ae}}function ie(e,t,n,r){var i;if(r===e.target_)return null===this.extend_(e,t,n,!1)?0:2;if(null!=(i=this.options_)&&i.bound&&(!P(e.target_,t)||!an(e.target_[t]))&&null===this.extend_(e,t,n,!1))return 0;if(an(n.value))return 1;var o=se(e,this,t,n,!1,!1);return c(r,t,o),2}function oe(e,t,n,r){var i,o=se(e,this,t,n,null==(i=this.options_)?void 0:i.bound);return e.defineProperty_(t,o,r)}function ae(e,t){var n;var r=t.name,i=t.addInitializer;return an(e)||(e=rn(e)),null!=(n=this.options_)&&n.bound&&i((function(){var e=this,t=e[r].bind(e);t.isMobXFlow=!0,e[r]=t})),e}function se(e,t,n,r,i,o){var a;void 0===o&&(o=vt.safeDescriptors),a=r,t.annotationType_,a.value;var s,c=r.value;(an(c)||(c=rn(c)),i)&&((c=c.bind(null!=(s=e.proxy_)?s:e.target_)).isMobXFlow=!0);return{value:c,configurable:!o||e.isPlainObject_,enumerable:!1,writable:!o}}function ce(e,t){return{annotationType_:e,options_:t,make_:ue,extend_:le,decorate_20223_:fe}}function ue(e,t,n){return null===this.extend_(e,t,n,!1)?0:1}function le(e,t,n,r){return function(e,t,n,r){t.annotationType_,r.get;0}(0,this,0,n),e.defineComputedProperty_(t,T({},this.options_,{get:n.get,set:n.set}),r)}function fe(e,t){var n=this,r=t.name;return(0,t.addInitializer)((function(){var t=Un(this)[z],i=T({},n.options_,{get:e,context:this});i.name||(i.name="ObservableObject."+r.toString()),t.values_.set(r,new Ye(i))})),function(){return this[z].getObservablePropValue_(r)}}function de(e,t){return{annotationType_:e,options_:t,make_:he,extend_:ve,decorate_20223_:pe}}function he(e,t,n){return null===this.extend_(e,t,n,!1)?0:1}function ve(e,t,n,r){var i,o;return function(e,t,n,r){t.annotationType_;0}(0,this),e.defineObservableProperty_(t,n.value,null!=(i=null==(o=this.options_)?void 0:o.enhancer)?i:X,r)}function pe(e,t){var n=this,r=t.kind,i=t.name,o=new WeakSet;function a(e,t){var r,a,s=Un(e)[z],c=new Ge(t,null!=(r=null==(a=n.options_)?void 0:a.enhancer)?r:X,"ObservableObject."+i.toString(),!1);s.values_.set(i,c),o.add(e)}if("accessor"==r)return{get:function(){return o.has(this)||a(this,e.get.call(this)),this[z].getObservablePropValue_(i)},set:function(e){return o.has(this)||a(this,e),this[z].setObservablePropValue_(i,e)},init:function(e){return o.has(this)||a(this,e),e}}}var ge="true",me=ye();function ye(e){return{annotationType_:ge,options_:e,make_:be,extend_:_e,decorate_20223_:we}}function be(e,t,n,r){var i,o,a,s;if(n.get)return $e.make_(e,t,n,r);if(n.set){var u=Be(t.toString(),n.set);return r===e.target_?null===e.defineProperty_(t,{configurable:!vt.safeDescriptors||e.isPlainObject_,set:u})?0:2:(c(r,t,{configurable:!0,set:u}),2)}if(r!==e.target_&&"function"==typeof n.value)return w(n.value)?(null!=(s=this.options_)&&s.autoBind?rn.bound:rn).make_(e,t,n,r):(null!=(a=this.options_)&&a.autoBind?$t.bound:$t).make_(e,t,n,r);var l,f=!1===(null==(i=this.options_)?void 0:i.deep)?Me.ref:Me;"function"==typeof n.value&&null!=(o=this.options_)&&o.autoBind&&(n.value=n.value.bind(null!=(l=e.proxy_)?l:e.target_));return f.make_(e,t,n,r)}function _e(e,t,n,r){var i,o,a;if(n.get)return $e.extend_(e,t,n,r);if(n.set)return e.defineProperty_(t,{configurable:!vt.safeDescriptors||e.isPlainObject_,set:Be(t.toString(),n.set)},r);"function"==typeof n.value&&null!=(i=this.options_)&&i.autoBind&&(n.value=n.value.bind(null!=(a=e.proxy_)?a:e.target_));return(!1===(null==(o=this.options_)?void 0:o.deep)?Me.ref:Me).extend_(e,t,n,r)}function we(e,t){r("'"+this.annotationType_+"' cannot be used as a decorator")}var xe={deep:!0,name:void 0,defaultDecorator:void 0,proxy:!0};function Se(e){return e||xe}Object.freeze(xe);var Oe=de("observable"),ke=de("observable.ref",{enhancer:K}),Ee=de("observable.shallow",{enhancer:function(e,t,n){return null==e||Xn(e)||Fn(e)||Ln(e)||Hn(e)?e:Array.isArray(e)?Me.array(e,{name:n,deep:!1}):_(e)?Me.object(e,void 0,{name:n,deep:!1}):k(e)?Me.map(e,{name:n,deep:!1}):E(e)?Me.set(e,{name:n,deep:!1}):void 0}}),Ze=de("observable.struct",{enhancer:function(e,t){return vr(e,t)?t:e}}),Ce=D(Oe);function Ae(e){return!0===e.deep?X:!1===e.deep?K:(t=e.defaultDecorator)&&null!=(n=null==(r=t.options_)?void 0:r.enhancer)?n:X;var t,n,r}function Pe(e,t,n){return B(t)?Oe.decorate_20223_(e,t):y(t)?void H(e,t,Oe):cn(e)?e:_(e)?Me.object(e,t,n):Array.isArray(e)?Me.array(e,t):k(e)?Me.map(e,t):E(e)?Me.set(e,t):"object"==typeof e&&null!==e?e:Me.box(e,t)}a(Pe,Ce);var je,Fe,Me=a(Pe,{box:function(e,t){var n=Se(t);return new Ge(e,Ae(n),n.name,!0,n.equals)},array:function(e,t){var n=Se(t);return(!1===vt.useProxies||!1===n.proxy?cr:Sn)(e,Ae(n),n.name)},map:function(e,t){var n=Se(t);return new In(e,Ae(n),n.name)},set:function(e,t){var n=Se(t);return new Dn(e,Ae(n),n.name)},object:function(e,t,n){return dr((function(){return Kt(!1===vt.useProxies||!1===(null==n?void 0:n.proxy)?Un({},n):function(e,t){var n,r;return v(),e=Un(e,t),null!=(r=(n=e[z]).proxy_)?r:n.proxy_=new Proxy(e,fn)}({},n),e,t)}))},ref:D(ke),shallow:D(Ee),deep:Ce,struct:D(Ze)}),Te="computed",Re=ce(Te),Ne=ce("computed.struct",{equals:G.structural}),$e=function(e,t){if(B(t))return Re.decorate_20223_(e,t);if(y(t))return H(e,t,Re);if(_(e))return D(ce(Te,e));var n=_(t)?t:{};return n.get=e,n.name||(n.name=e.name||""),new Ye(n)};Object.assign($e,Re),$e.struct=D(Ne);var Ie,Le=0,Ve=1,De=null!=(je=null==(Fe=s((function(){}),"name"))?void 0:Fe.configurable)&&je,He={value:"action",configurable:!0,writable:!1,enumerable:!1};function Be(e,t,n,r){function i(){return ze(e,n,t,r||this,arguments)}return void 0===n&&(n=!1),i.isMobxAction=!0,i.toString=function(){return t.toString()},De&&(He.value=e,c(i,"name",He)),i}function ze(e,t,n,i,o){var a=function(e,t,n,r){var i=!1,o=0;0;var a=vt.trackingDerivation,s=!t||!a;yt();var c=vt.allowStateChanges;s&&(at(),c=qe(!0));var u=ct(!0),l={runAsAction_:s,prevDerivation_:a,prevAllowStateChanges_:c,prevAllowStateReads_:u,notifySpy_:i,startTime_:o,actionId_:Ve++,parentActionId_:Le};return Le=l.actionId_,l}(0,t);try{return n.apply(i,o)}catch(s){throw a.error_=s,s}finally{!function(e){Le!==e.actionId_&&r(30);Le=e.parentActionId_,void 0!==e.error_&&(vt.suppressReactionErrors=!0);Ue(e.prevAllowStateChanges_),ut(e.prevAllowStateReads_),bt(),e.runAsAction_&&st(e.prevDerivation_);0;vt.suppressReactionErrors=!1}(a)}}function qe(e){var t=vt.allowStateChanges;return vt.allowStateChanges=e,t}function Ue(e){vt.allowStateChanges=e}Ie=Symbol.toPrimitive;var We,Ge=function(e){function t(t,n,r,i,o){var a;return void 0===r&&(r="ObservableValue"),void 0===i&&(i=!0),void 0===o&&(o=G.default),(a=e.call(this,r)||this).enhancer=void 0,a.name_=void 0,a.equals=void 0,a.hasUnreportedChange_=!1,a.interceptors_=void 0,a.changeListeners_=void 0,a.value_=void 0,a.dehancer=void 0,a.enhancer=n,a.name_=r,a.equals=o,a.value_=n(t,void 0,r),a}R(t,e);var n=t.prototype;return n.dehanceValue=function(e){return void 0!==this.dehancer?this.dehancer(e):e},n.set=function(e){this.value_;if((e=this.prepareNewValue_(e))!==vt.UNCHANGED){0,this.setNewValue_(e)}},n.prepareNewValue_=function(e){if(nt(this),dn(this)){var t=vn(this,{object:this,type:_n,newValue:e});if(!t)return vt.UNCHANGED;e=t.newValue}return e=this.enhancer(e,this.value_,this.name_),this.equals(this.value_,e)?vt.UNCHANGED:e},n.setNewValue_=function(e){var t=this.value_;this.value_=e,this.reportChanged(),pn(this)&&mn(this,{type:_n,object:this,newValue:e,oldValue:t})},n.get=function(){return this.reportObserved(),this.dehanceValue(this.value_)},n.intercept_=function(e){return hn(this,e)},n.observe_=function(e,t){return t&&e({observableKind:"value",debugObjectName:this.name_,object:this,type:_n,newValue:this.value_,oldValue:void 0}),gn(this,e)},n.raw=function(){return this.value_},n.toJSON=function(){return this.get()},n.toString=function(){return this.name_+"["+this.value_+"]"},n.valueOf=function(){return A(this.get())},n[Ie]=function(){return this.valueOf()},t}(q);We=Symbol.toPrimitive;var Xe,Ke,Ye=function(){function e(e){this.dependenciesState_=Xe.NOT_TRACKING_,this.observing_=[],this.newObserving_=null,this.isBeingObserved_=!1,this.isPendingUnobservation_=!1,this.observers_=new Set,this.diffValue_=0,this.runId_=0,this.lastAccessedBy_=0,this.lowestObserverState_=Xe.UP_TO_DATE_,this.unboundDepsCount_=0,this.value_=new Je(null),this.name_=void 0,this.triggeredBy_=void 0,this.isComputing_=!1,this.isRunningSetter_=!1,this.derivation=void 0,this.setter_=void 0,this.isTracing_=Ke.NONE,this.scope_=void 0,this.equals_=void 0,this.requiresReaction_=void 0,this.keepAlive_=void 0,this.onBOL=void 0,this.onBUOL=void 0,e.get||r(31),this.derivation=e.get,this.name_=e.name||"ComputedValue",e.set&&(this.setter_=Be("ComputedValue-setter",e.set)),this.equals_=e.equals||(e.compareStructural||e.struct?G.structural:G.default),this.scope_=e.context,this.requiresReaction_=e.requiresReaction,this.keepAlive_=!!e.keepAlive}var t=e.prototype;return t.onBecomeStale_=function(){!function(e){if(e.lowestObserverState_!==Xe.UP_TO_DATE_)return;e.lowestObserverState_=Xe.POSSIBLY_STALE_,e.observers_.forEach((function(e){e.dependenciesState_===Xe.UP_TO_DATE_&&(e.dependenciesState_=Xe.POSSIBLY_STALE_,e.onBecomeStale_())}))}(this)},t.onBO=function(){this.onBOL&&this.onBOL.forEach((function(e){return e()}))},t.onBUO=function(){this.onBUOL&&this.onBUOL.forEach((function(e){return e()}))},t.get=function(){if(this.isComputing_&&r(32,this.name_,this.derivation),0!==vt.inBatch||0!==this.observers_.size||this.keepAlive_){if(_t(this),tt(this)){var e=vt.trackingContext;this.keepAlive_&&!e&&(vt.trackingContext=this),this.trackAndCompute()&&function(e){if(e.lowestObserverState_===Xe.STALE_)return;e.lowestObserverState_=Xe.STALE_,e.observers_.forEach((function(t){t.dependenciesState_===Xe.POSSIBLY_STALE_?t.dependenciesState_=Xe.STALE_:t.dependenciesState_===Xe.UP_TO_DATE_&&(e.lowestObserverState_=Xe.UP_TO_DATE_)}))}(this),vt.trackingContext=e}}else tt(this)&&(this.warnAboutUntrackedRead_(),yt(),this.value_=this.computeValue_(!1),bt());var t=this.value_;if(et(t))throw t.cause;return t},t.set=function(e){if(this.setter_){this.isRunningSetter_&&r(33,this.name_),this.isRunningSetter_=!0;try{this.setter_.call(this.scope_,e)}finally{this.isRunningSetter_=!1}}else r(34,this.name_)},t.trackAndCompute=function(){var e=this.value_,t=this.dependenciesState_===Xe.NOT_TRACKING_,n=this.computeValue_(!0),r=t||et(e)||et(n)||!this.equals_(e,n);return r&&(this.value_=n),r},t.computeValue_=function(e){this.isComputing_=!0;var t,n=qe(!1);if(e)t=rt(this,this.derivation,this.scope_);else if(!0===vt.disableErrorBoundaries)t=this.derivation.call(this.scope_);else try{t=this.derivation.call(this.scope_)}catch(r){t=new Je(r)}return Ue(n),this.isComputing_=!1,t},t.suspend_=function(){this.keepAlive_||(it(this),this.value_=void 0)},t.observe_=function(e,t){var n=this,r=!0,i=void 0;return Lt((function(){var o=n.get();if(!r||t){var a=at();e({observableKind:"computed",debugObjectName:n.name_,type:_n,object:n,newValue:o,oldValue:i}),st(a)}r=!1,i=o}))},t.warnAboutUntrackedRead_=function(){},t.toString=function(){return this.name_+"["+this.derivation.toString()+"]"},t.valueOf=function(){return A(this.get())},t[We]=function(){return this.valueOf()},e}(),Qe=O("ComputedValue",Ye);!function(e){e[e.NOT_TRACKING_=-1]="NOT_TRACKING_",e[e.UP_TO_DATE_=0]="UP_TO_DATE_",e[e.POSSIBLY_STALE_=1]="POSSIBLY_STALE_",e[e.STALE_=2]="STALE_"}(Xe||(Xe={})),function(e){e[e.NONE=0]="NONE",e[e.LOG=1]="LOG",e[e.BREAK=2]="BREAK"}(Ke||(Ke={}));var Je=function(e){this.cause=void 0,this.cause=e};function et(e){return e instanceof Je}function tt(e){switch(e.dependenciesState_){case Xe.UP_TO_DATE_:return!1;case Xe.NOT_TRACKING_:case Xe.STALE_:return!0;case Xe.POSSIBLY_STALE_:for(var t=ct(!0),n=at(),r=e.observing_,i=r.length,o=0;or&&(r=s.dependenciesState_)}n.length=i,e.newObserving_=null,o=t.length;for(;o--;){var c=t[o];0===c.diffValue_&>(c,e),c.diffValue_=0}for(;i--;){var u=n[i];1===u.diffValue_&&(u.diffValue_=0,pt(u,e))}r!==Xe.UP_TO_DATE_&&(e.dependenciesState_=r,e.onBecomeStale_())}(e),ut(r),i}function it(e){var t=e.observing_;e.observing_=[];for(var n=t.length;n--;)gt(t[n],e);e.dependenciesState_=Xe.NOT_TRACKING_}function ot(e){var t=at();try{return e()}finally{st(t)}}function at(){var e=vt.trackingDerivation;return vt.trackingDerivation=null,e}function st(e){vt.trackingDerivation=e}function ct(e){var t=vt.allowStateReads;return vt.allowStateReads=e,t}function ut(e){vt.allowStateReads=e}function lt(e){if(e.dependenciesState_!==Xe.UP_TO_DATE_){e.dependenciesState_=Xe.UP_TO_DATE_;for(var t=e.observing_,n=t.length;n--;)t[n].lowestObserverState_=Xe.UP_TO_DATE_}}var ft=function(){this.version=6,this.UNCHANGED={},this.trackingDerivation=null,this.trackingContext=null,this.runId=0,this.mobxGuid=0,this.inBatch=0,this.pendingUnobservations=[],this.pendingReactions=[],this.isRunningReactions=!1,this.allowStateChanges=!1,this.allowStateReads=!0,this.enforceActions=!0,this.spyListeners=[],this.globalReactionErrorHandlers=[],this.computedRequiresReaction=!1,this.reactionRequiresObservable=!1,this.observableRequiresReaction=!1,this.disableErrorBoundaries=!1,this.suppressReactionErrors=!1,this.useProxies=!0,this.verifyProxies=!1,this.safeDescriptors=!0},dt=!0,ht=!1,vt=function(){var e=o();return e.__mobxInstanceCount>0&&!e.__mobxGlobals&&(dt=!1),e.__mobxGlobals&&e.__mobxGlobals.version!==(new ft).version&&(dt=!1),dt?e.__mobxGlobals?(e.__mobxInstanceCount+=1,e.__mobxGlobals.UNCHANGED||(e.__mobxGlobals.UNCHANGED={}),e.__mobxGlobals):(e.__mobxInstanceCount=1,e.__mobxGlobals=new ft):(setTimeout((function(){ht||r(35)}),1),new ft)}();function pt(e,t){e.observers_.add(t),e.lowestObserverState_>t.dependenciesState_&&(e.lowestObserverState_=t.dependenciesState_)}function gt(e,t){e.observers_.delete(t),0===e.observers_.size&&mt(e)}function mt(e){!1===e.isPendingUnobservation_&&(e.isPendingUnobservation_=!0,vt.pendingUnobservations.push(e))}function yt(){vt.inBatch++}function bt(){if(0==--vt.inBatch){kt();for(var e=vt.pendingUnobservations,t=0;t0&&mt(e),!1)}function wt(e){e.lowestObserverState_!==Xe.STALE_&&(e.lowestObserverState_=Xe.STALE_,e.observers_.forEach((function(e){e.dependenciesState_===Xe.UP_TO_DATE_&&e.onBecomeStale_(),e.dependenciesState_=Xe.STALE_})))}var xt=function(){function e(e,t,n,r){void 0===e&&(e="Reaction"),this.name_=void 0,this.onInvalidate_=void 0,this.errorHandler_=void 0,this.requiresObservable_=void 0,this.observing_=[],this.newObserving_=[],this.dependenciesState_=Xe.NOT_TRACKING_,this.diffValue_=0,this.runId_=0,this.unboundDepsCount_=0,this.isDisposed_=!1,this.isScheduled_=!1,this.isTrackPending_=!1,this.isRunning_=!1,this.isTracing_=Ke.NONE,this.name_=e,this.onInvalidate_=t,this.errorHandler_=n,this.requiresObservable_=r}var t=e.prototype;return t.onBecomeStale_=function(){this.schedule_()},t.schedule_=function(){this.isScheduled_||(this.isScheduled_=!0,vt.pendingReactions.push(this),kt())},t.isScheduled=function(){return this.isScheduled_},t.runReaction_=function(){if(!this.isDisposed_){yt(),this.isScheduled_=!1;var e=vt.trackingContext;if(vt.trackingContext=this,tt(this)){this.isTrackPending_=!0;try{this.onInvalidate_()}catch(t){this.reportExceptionInDerivation_(t)}}vt.trackingContext=e,bt()}},t.track=function(e){if(!this.isDisposed_){yt();0,this.isRunning_=!0;var t=vt.trackingContext;vt.trackingContext=this;var n=rt(this,e,void 0);vt.trackingContext=t,this.isRunning_=!1,this.isTrackPending_=!1,this.isDisposed_&&it(this),et(n)&&this.reportExceptionInDerivation_(n.cause),bt()}},t.reportExceptionInDerivation_=function(e){var t=this;if(this.errorHandler_)this.errorHandler_(e,this);else{if(vt.disableErrorBoundaries)throw e;var n="[mobx] uncaught error in '"+this+"'";vt.suppressReactionErrors||console.error(n,e),vt.globalReactionErrorHandlers.forEach((function(n){return n(e,t)}))}},t.dispose=function(){this.isDisposed_||(this.isDisposed_=!0,this.isRunning_||(yt(),it(this),bt()))},t.getDisposer_=function(e){var t=this,n=function n(){t.dispose(),null==e||null==e.removeEventListener||e.removeEventListener("abort",n)};return null==e||null==e.addEventListener||e.addEventListener("abort",n),n[z]=this,n},t.toString=function(){return"Reaction["+this.name_+"]"},t.trace=function(e){void 0===e&&(e=!1)},e}();var St=100,Ot=function(e){return e()};function kt(){vt.inBatch>0||vt.isRunningReactions||Ot(Et)}function Et(){vt.isRunningReactions=!0;for(var e=vt.pendingReactions,t=0;e.length>0;){++t===St&&(console.error("[mobx] cycle in reaction: "+e[0]),e.splice(0));for(var n=e.splice(0),r=0,i=n.length;r0&&(n.dependencies=(t=e.observing_,Array.from(new Set(t))).map(Qt)),n}var Jt=0;function en(){this.message="FLOW_CANCELLED"}en.prototype=Object.create(Error.prototype);var tn=re("flow"),nn=re("flow.bound",{bound:!0}),rn=Object.assign((function(e,t){if(B(t))return tn.decorate_20223_(e,t);if(y(t))return H(e,t,tn);var n=e,r=n.name||"",i=function(){var e,t=arguments,i=++Jt,o=Nt(r+" - runid: "+i+" - init",n).apply(this,t),a=void 0,s=new Promise((function(t,n){var s=0;function c(e){var t;a=void 0;try{t=Nt(r+" - runid: "+i+" - yield "+s++,o.next).call(o,e)}catch(c){return n(c)}l(t)}function u(e){var t;a=void 0;try{t=Nt(r+" - runid: "+i+" - yield "+s++,o.throw).call(o,e)}catch(c){return n(c)}l(t)}function l(e){if(!m(null==e?void 0:e.then))return e.done?t(e.value):(a=Promise.resolve(e.value)).then(c,u);e.then(l,n)}e=n,c(void 0)}));return s.cancel=Nt(r+" - runid: "+i+" - cancel",(function(){try{a&&on(a);var t=o.return(void 0),n=Promise.resolve(t.value);n.then(g,g),on(n),e(new en)}catch(r){e(r)}})),s};return i.isMobXFlow=!0,i}),tn);function on(e){m(e.cancel)&&e.cancel()}function an(e){return!0===(null==e?void 0:e.isMobXFlow)}function sn(e,t){return!!e&&(void 0!==t?!!Xn(e)&&e[z].values_.has(t):Xn(e)||!!e[z]||U(e)||Zt(e)||Qe(e))}function cn(e){return sn(e)}function un(e,t){void 0===t&&(t=void 0),yt();try{return e.apply(t)}finally{bt()}}function ln(e){return e[z]}rn.bound=D(nn);var fn={has:function(e,t){return ln(e).has_(t)},get:function(e,t){return ln(e).get_(t)},set:function(e,t,n){var r;return!!y(t)&&(null==(r=ln(e).set_(t,n,!0))||r)},deleteProperty:function(e,t){var n;return!!y(t)&&(null==(n=ln(e).delete_(t,!0))||n)},defineProperty:function(e,t,n){var r;return null==(r=ln(e).defineProperty_(t,n))||r},ownKeys:function(e){return ln(e).ownKeys_()},preventExtensions:function(e){r(13)}};function dn(e){return void 0!==e.interceptors_&&e.interceptors_.length>0}function hn(e,t){var n=e.interceptors_||(e.interceptors_=[]);return n.push(t),p((function(){var e=n.indexOf(t);-1!==e&&n.splice(e,1)}))}function vn(e,t){var n=at();try{for(var i=[].concat(e.interceptors_||[]),o=0,a=i.length;o0}function gn(e,t){var n=e.changeListeners_||(e.changeListeners_=[]);return n.push(t),p((function(){var e=n.indexOf(t);-1!==e&&n.splice(e,1)}))}function mn(e,t){var n=at(),r=e.changeListeners_;if(r){for(var i=0,o=(r=r.slice()).length;i0?e.map(this.dehancer):e},t.intercept_=function(e){return hn(this,e)},t.observe_=function(e,t){return void 0===t&&(t=!1),t&&e({observableKind:"array",object:this.proxy_,debugObjectName:this.atom_.name_,type:"splice",index:0,added:this.values_.slice(),addedCount:this.values_.length,removed:[],removedCount:0}),gn(this,e)},t.getArrayLength_=function(){return this.atom_.reportObserved(),this.values_.length},t.setArrayLength_=function(e){("number"!=typeof e||isNaN(e)||e<0)&&r("Out of range: "+e);var t=this.values_.length;if(e!==t)if(e>t){for(var n=new Array(e-t),i=0;i0&&sr(e+t+1)},t.spliceWithArray_=function(e,t,n){var r=this;this.atom_;var i=this.values_.length;if(void 0===e?e=0:e>i?e=i:e<0&&(e=Math.max(0,i+e)),t=1===arguments.length?i-e:null==t?0:Math.max(0,Math.min(t,i-e)),void 0===n&&(n=l),dn(this)){var o=vn(this,{object:this.proxy_,type:bn,index:e,removedCount:t,added:n});if(!o)return l;t=o.removedCount,n=o.added}if(n=0===n.length?n:n.map((function(e){return r.enhancer_(e,void 0)})),this.legacyMode_){var a=n.length-t;this.updateArrayLength_(i,a)}var s=this.spliceItemsIntoValues_(e,t,n);return 0===t&&0===n.length||this.notifyArraySplice_(e,n,s),this.dehanceValues_(s)},t.spliceItemsIntoValues_=function(e,t,n){var r;if(n.length<1e4)return(r=this.values_).splice.apply(r,[e,t].concat(n));var i=this.values_.slice(e,e+t),o=this.values_.slice(e+t);this.values_.length+=n.length-t;for(var a=0;a=this.values_.length))return this.atom_.reportObserved(),this.dehanceValue_(this.values_[e]);console.warn("[mobx] Out of bounds read: "+e)},t.set_=function(e,t){var n=this.values_;if(this.legacyMode_&&e>n.length&&r(17,e,n.length),e2?n-2:0),i=2;i-1&&(this.splice(n,1),!0)}};function kn(e,t){"function"==typeof Array.prototype[e]&&(On[e]=t(e))}function En(e){return function(){var t=this[z];t.atom_.reportObserved();var n=t.dehanceValues_(t.values_);return n[e].apply(n,arguments)}}function Zn(e){return function(t,n){var r=this,i=this[z];return i.atom_.reportObserved(),i.dehanceValues_(i.values_)[e]((function(e,i){return t.call(n,e,i,r)}))}}function Cn(e){return function(){var t=this,n=this[z];n.atom_.reportObserved();var r=n.dehanceValues_(n.values_),i=arguments[0];return arguments[0]=function(e,n,r){return i(e,n,r,t)},r[e].apply(r,arguments)}}kn("at",En),kn("concat",En),kn("flat",En),kn("includes",En),kn("indexOf",En),kn("join",En),kn("lastIndexOf",En),kn("slice",En),kn("toString",En),kn("toLocaleString",En),kn("toSorted",En),kn("toSpliced",En),kn("with",En),kn("every",Zn),kn("filter",Zn),kn("find",Zn),kn("findIndex",Zn),kn("findLast",Zn),kn("findLastIndex",Zn),kn("flatMap",Zn),kn("forEach",Zn),kn("map",Zn),kn("some",Zn),kn("toReversed",Zn),kn("reduce",Cn),kn("reduceRight",Cn);var An,Pn,jn=O("ObservableArrayAdministration",xn);function Fn(e){return b(e)&&jn(e[z])}var Mn={},Tn="add",Rn="delete";An=Symbol.iterator,Pn=Symbol.toStringTag;var Nn,$n,In=function(){function e(e,t,n){var i=this;void 0===t&&(t=X),void 0===n&&(n="ObservableMap"),this.enhancer_=void 0,this.name_=void 0,this[z]=Mn,this.data_=void 0,this.hasMap_=void 0,this.keysAtom_=void 0,this.interceptors_=void 0,this.changeListeners_=void 0,this.dehancer=void 0,this.enhancer_=t,this.name_=n,m(Map)||r(18),dr((function(){i.keysAtom_=W("ObservableMap.keys()"),i.data_=new Map,i.hasMap_=new Map,e&&i.merge(e)}))}var t=e.prototype;return t.has_=function(e){return this.data_.has(e)},t.has=function(e){var t=this;if(!vt.trackingDerivation)return this.has_(e);var n=this.hasMap_.get(e);if(!n){var r=n=new Ge(this.has_(e),K,"ObservableMap.key?",!1);this.hasMap_.set(e,r),zt(r,(function(){return t.hasMap_.delete(e)}))}return n.get()},t.set=function(e,t){var n=this.has_(e);if(dn(this)){var r=vn(this,{type:n?_n:Tn,object:this,newValue:t,name:e});if(!r)return this;t=r.newValue}return n?this.updateValue_(e,t):this.addValue_(e,t),this},t.delete=function(e){var t=this;if((this.keysAtom_,dn(this))&&!vn(this,{type:Rn,object:this,name:e}))return!1;if(this.has_(e)){var n=pn(this),r=n?{observableKind:"map",debugObjectName:this.name_,type:Rn,object:this,oldValue:this.data_.get(e).value_,name:e}:null;return un((function(){var n;t.keysAtom_.reportChanged(),null==(n=t.hasMap_.get(e))||n.setNewValue_(!1),t.data_.get(e).setNewValue_(void 0),t.data_.delete(e)})),n&&mn(this,r),!0}return!1},t.updateValue_=function(e,t){var n=this.data_.get(e);if((t=n.prepareNewValue_(t))!==vt.UNCHANGED){var r=pn(this),i=r?{observableKind:"map",debugObjectName:this.name_,type:_n,object:this,oldValue:n.value_,name:e,newValue:t}:null;0,n.setNewValue_(t),r&&mn(this,i)}},t.addValue_=function(e,t){var n=this;this.keysAtom_,un((function(){var r,i=new Ge(t,n.enhancer_,"ObservableMap.key",!1);n.data_.set(e,i),t=i.value_,null==(r=n.hasMap_.get(e))||r.setNewValue_(!0),n.keysAtom_.reportChanged()}));var r=pn(this),i=r?{observableKind:"map",debugObjectName:this.name_,type:Tn,object:this,name:e,newValue:t}:null;r&&mn(this,i)},t.get=function(e){return this.has(e)?this.dehanceValue_(this.data_.get(e).get()):this.dehanceValue_(void 0)},t.dehanceValue_=function(e){return void 0!==this.dehancer?this.dehancer(e):e},t.keys=function(){return this.keysAtom_.reportObserved(),this.data_.keys()},t.values=function(){var e=this,t=this.keys();return mr({next:function(){var n=t.next(),r=n.done,i=n.value;return{done:r,value:r?void 0:e.get(i)}}})},t.entries=function(){var e=this,t=this.keys();return mr({next:function(){var n=t.next(),r=n.done,i=n.value;return{done:r,value:r?void 0:[i,e.get(i)]}}})},t[An]=function(){return this.entries()},t.forEach=function(e,t){for(var n,r=L(this);!(n=r()).done;){var i=n.value,o=i[0],a=i[1];e.call(t,a,o,this)}},t.merge=function(e){var t=this;return Ln(e)&&(e=new Map(e)),un((function(){_(e)?function(e){var t=Object.keys(e);if(!Z)return t;var n=Object.getOwnPropertySymbols(e);return n.length?[].concat(t,n.filter((function(t){return u.propertyIsEnumerable.call(e,t)}))):t}(e).forEach((function(n){return t.set(n,e[n])})):Array.isArray(e)?e.forEach((function(e){var n=e[0],r=e[1];return t.set(n,r)})):k(e)?(e.constructor!==Map&&r(19,e),e.forEach((function(e,n){return t.set(n,e)}))):null!=e&&r(20,e)})),this},t.clear=function(){var e=this;un((function(){ot((function(){for(var t,n=L(e.keys());!(t=n()).done;){var r=t.value;e.delete(r)}}))}))},t.replace=function(e){var t=this;return un((function(){for(var n,i=function(e){if(k(e)||Ln(e))return e;if(Array.isArray(e))return new Map(e);if(_(e)){var t=new Map;for(var n in e)t.set(n,e[n]);return t}return r(21,e)}(e),o=new Map,a=!1,s=L(t.data_.keys());!(n=s()).done;){var c=n.value;if(!i.has(c))if(t.delete(c))a=!0;else{var u=t.data_.get(c);o.set(c,u)}}for(var l,f=L(i.entries());!(l=f()).done;){var d=l.value,h=d[0],v=d[1],p=t.data_.has(h);if(t.set(h,v),t.data_.has(h)){var g=t.data_.get(h);o.set(h,g),p||(a=!0)}}if(!a)if(t.data_.size!==o.size)t.keysAtom_.reportChanged();else for(var m=t.data_.keys(),y=o.keys(),b=m.next(),w=y.next();!b.done;){if(b.value!==w.value){t.keysAtom_.reportChanged();break}b=m.next(),w=y.next()}t.data_=o})),this},t.toString=function(){return"[object ObservableMap]"},t.toJSON=function(){return Array.from(this)},t.observe_=function(e,t){return gn(this,e)},t.intercept_=function(e){return hn(this,e)},M(e,[{key:"size",get:function(){return this.keysAtom_.reportObserved(),this.data_.size}},{key:Pn,get:function(){return"Map"}}]),e}(),Ln=O("ObservableMap",In);var Vn={};Nn=Symbol.iterator,$n=Symbol.toStringTag;var Dn=function(){function e(e,t,n){var i=this;void 0===t&&(t=X),void 0===n&&(n="ObservableSet"),this.name_=void 0,this[z]=Vn,this.data_=new Set,this.atom_=void 0,this.changeListeners_=void 0,this.interceptors_=void 0,this.dehancer=void 0,this.enhancer_=void 0,this.name_=n,m(Set)||r(22),this.enhancer_=function(e,r){return t(e,r,n)},dr((function(){i.atom_=W(i.name_),e&&i.replace(e)}))}var t=e.prototype;return t.dehanceValue_=function(e){return void 0!==this.dehancer?this.dehancer(e):e},t.clear=function(){var e=this;un((function(){ot((function(){for(var t,n=L(e.data_.values());!(t=n()).done;){var r=t.value;e.delete(r)}}))}))},t.forEach=function(e,t){for(var n,r=L(this);!(n=r()).done;){var i=n.value;e.call(t,i,i,this)}},t.add=function(e){var t=this;if((this.atom_,dn(this))&&!vn(this,{type:Tn,object:this,newValue:e}))return this;if(!this.has(e)){un((function(){t.data_.add(t.enhancer_(e,void 0)),t.atom_.reportChanged()}));var n=!1,r=pn(this),i=r?{observableKind:"set",debugObjectName:this.name_,type:Tn,object:this,newValue:e}:null;n,r&&mn(this,i)}return this},t.delete=function(e){var t=this;if(dn(this)&&!vn(this,{type:Rn,object:this,oldValue:e}))return!1;if(this.has(e)){var n=pn(this),r=n?{observableKind:"set",debugObjectName:this.name_,type:Rn,object:this,oldValue:e}:null;return un((function(){t.atom_.reportChanged(),t.data_.delete(e)})),n&&mn(this,r),!0}return!1},t.has=function(e){return this.atom_.reportObserved(),this.data_.has(this.dehanceValue_(e))},t.entries=function(){var e=0,t=Array.from(this.keys()),n=Array.from(this.values());return mr({next:function(){var r=e;return e+=1,rnr){for(var t=nr;t=0&&n++}e=gr(e),t=gr(t);var s="[object Array]"===a;if(!s){if("object"!=typeof e||"object"!=typeof t)return!1;var c=e.constructor,u=t.constructor;if(c!==u&&!(m(c)&&c instanceof c&&m(u)&&u instanceof u)&&"constructor"in e&&"constructor"in t)return!1}if(0===n)return!1;n<0&&(n=-1),i=i||[];for(var l=(r=r||[]).length;l--;)if(r[l]===e)return i[l]===t;if(r.push(e),i.push(t),s){if((l=e.length)!==t.length)return!1;for(;l--;)if(!pr(e[l],t[l],n-1,r,i))return!1}else{var f,d=Object.keys(e);if(l=d.length,Object.keys(t).length!==l)return!1;for(;l--;)if(!P(t,f=d[l])||!pr(e[f],t[f],n-1,r,i))return!1}return r.pop(),i.pop(),!0}function gr(e){return Fn(e)?e.slice():k(e)||Ln(e)||E(e)||Hn(e)?Array.from(e.entries()):e}function mr(e){return e[Symbol.iterator]=yr,e}function yr(){return this}["Symbol","Map","Set"].forEach((function(e){void 0===o()[e]&&r("MobX requires global '"+e+"' to be available or polyfilled")})),"object"==typeof __MOBX_DEVTOOLS_GLOBAL_HOOK__&&__MOBX_DEVTOOLS_GLOBAL_HOOK__.injectMobx({spy:function(e){return console.warn("[mobx.spy] Is a no-op in production builds"),function(){}},extras:{getDebugName:fr},$mobx:z})},9182:(e,t,n)=>{"use strict";n.d(t,{zt:()=>g,ZP:()=>ge});var r=n(4942),i=n(1413),o=n(7685),a=n(1002),s=n(9875),c=n.n(s),u=n(7294),l=n(3935);function f(e){return function(e){return e instanceof HTMLElement||e instanceof SVGElement}(e)?e:e instanceof u.Component?l.findDOMNode(e):null}var d=n(2550),h=n(5987),v=["children"],p=u.createContext({});function g(e){var t=e.children,n=(0,h.Z)(e,v);return u.createElement(p.Provider,{value:n},t)}var m=n(5671),y=n(3144),b=n(136),_=n(3568);const w=function(e){(0,b.Z)(n,e);var t=(0,_.Z)(n);function n(){return(0,m.Z)(this,n),t.apply(this,arguments)}return(0,y.Z)(n,[{key:"render",value:function(){return this.props.children}}]),n}(u.Component);var x=n(470),S="none",O="appear",k="enter",E="leave",Z="none",C="prepare",A="start",P="active",j="end",F="prepared",M=n(8924);function T(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit".concat(e)]="webkit".concat(t),n["Moz".concat(e)]="moz".concat(t),n["ms".concat(e)]="MS".concat(t),n["O".concat(e)]="o".concat(t.toLowerCase()),n}var R,N,$,I=(R=(0,M.Z)(),N="undefined"!=typeof window?window:{},$={animationend:T("Animation","AnimationEnd"),transitionend:T("Transition","TransitionEnd")},R&&("AnimationEvent"in N||delete $.animationend.animation,"TransitionEvent"in N||delete $.transitionend.transition),$),L={};if((0,M.Z)()){var V=document.createElement("div");L=V.style}var D={};function H(e){if(D[e])return D[e];var t=I[e];if(t)for(var n=Object.keys(t),r=n.length,i=0;i1&&void 0!==arguments[1]?arguments[1]:2;t();var o=(0,Y.Z)((function(){i<=1?r({isCanceled:function(){return o!==e.current}}):n(r,i-1)}));e.current=o},t]}(),l=(0,o.Z)(c,2),f=l[0],d=l[1];var h=t?J:Q;return K((function(){if(a!==Z&&a!==j){var e=h.indexOf(a),t=h[e+1],r=n(a);r===ee?s(t,!0):t&&f((function(e){function n(){e.isCanceled()||s(t,!0)}!0===r?n():Promise.resolve(r).then(n)}))}}),[e,a]),u.useEffect((function(){return function(){d()}}),[]),[function(){s(C,!0)},a]};const ie=function(e){var t=e;"object"===(0,a.Z)(e)&&(t=e.transitionSupport);var n=u.forwardRef((function(e,n){var a=e.visible,s=void 0===a||a,l=e.removeOnLeave,h=void 0===l||l,v=e.forceRender,g=e.children,m=e.motionName,y=e.leavedClassName,b=e.eventProps,_=function(e,n){return!(!e.motionName||!t||!1===n)}(e,u.useContext(p).motion),Z=(0,u.useRef)(),j=(0,u.useRef)();var M=function(e,t,n,a){var s=a.motionEnter,c=void 0===s||s,l=a.motionAppear,f=void 0===l||l,d=a.motionLeave,h=void 0===d||d,v=a.motionDeadline,p=a.motionLeaveImmediately,g=a.onAppearPrepare,m=a.onEnterPrepare,y=a.onLeavePrepare,b=a.onAppearStart,_=a.onEnterStart,w=a.onLeaveStart,Z=a.onAppearActive,j=a.onEnterActive,M=a.onLeaveActive,T=a.onAppearEnd,R=a.onEnterEnd,N=a.onLeaveEnd,$=a.onVisibleChanged,I=(0,x.Z)(),L=(0,o.Z)(I,2),V=L[0],D=L[1],H=(0,x.Z)(S),B=(0,o.Z)(H,2),z=B[0],q=B[1],U=(0,x.Z)(null),W=(0,o.Z)(U,2),G=W[0],Y=W[1],Q=(0,u.useRef)(!1),J=(0,u.useRef)(null);function ie(){return n()}var oe=(0,u.useRef)(!1);function ae(){q(S,!0),Y(null,!0)}function se(e){var t=ie();if(!e||e.deadline||e.target===t){var n,r=oe.current;z===O&&r?n=null==T?void 0:T(t,e):z===k&&r?n=null==R?void 0:R(t,e):z===E&&r&&(n=null==N?void 0:N(t,e)),z!==S&&r&&!1!==n&&ae()}}var ce=X(se),ue=(0,o.Z)(ce,1)[0],le=function(e){var t,n,i;switch(e){case O:return t={},(0,r.Z)(t,C,g),(0,r.Z)(t,A,b),(0,r.Z)(t,P,Z),t;case k:return n={},(0,r.Z)(n,C,m),(0,r.Z)(n,A,_),(0,r.Z)(n,P,j),n;case E:return i={},(0,r.Z)(i,C,y),(0,r.Z)(i,A,w),(0,r.Z)(i,P,M),i;default:return{}}},fe=u.useMemo((function(){return le(z)}),[z]),de=re(z,!e,(function(e){if(e===C){var t=fe[C];return t?t(ie()):ee}var n;return pe in fe&&Y((null===(n=fe[pe])||void 0===n?void 0:n.call(fe,ie(),null))||null),pe===P&&(ue(ie()),v>0&&(clearTimeout(J.current),J.current=setTimeout((function(){se({deadline:!0})}),v))),pe===F&&ae(),te})),he=(0,o.Z)(de,2),ve=he[0],pe=he[1],ge=ne(pe);oe.current=ge,K((function(){D(t);var n,r=Q.current;Q.current=!0,!r&&t&&f&&(n=O),r&&t&&c&&(n=k),(r&&!t&&h||!r&&p&&!t&&h)&&(n=E);var i=le(n);n&&(e||i[C])?(q(n),ve()):q(S)}),[t]),(0,u.useEffect)((function(){(z===O&&!f||z===k&&!c||z===E&&!h)&&q(S)}),[f,c,h]),(0,u.useEffect)((function(){return function(){Q.current=!1,clearTimeout(J.current)}}),[]);var me=u.useRef(!1);(0,u.useEffect)((function(){V&&(me.current=!0),void 0!==V&&z===S&&((me.current||V)&&(null==$||$(V)),me.current=!0)}),[V,z]);var ye=G;return fe[C]&&pe===A&&(ye=(0,i.Z)({transition:"none"},ye)),[z,pe,ye,null!=V?V:t]}(_,s,(function(){try{return Z.current instanceof HTMLElement?Z.current:f(j.current)}catch(e){return null}}),e),T=(0,o.Z)(M,4),R=T[0],N=T[1],$=T[2],I=T[3],L=u.useRef(I);I&&(L.current=!0);var V,D=u.useCallback((function(e){Z.current=e,(0,d.mH)(n,e)}),[n]),H=(0,i.Z)((0,i.Z)({},b),{},{visible:s});if(g)if(R===S)V=I?g((0,i.Z)({},H),D):!h&&L.current&&y?g((0,i.Z)((0,i.Z)({},H),{},{className:y}),D):v||!h&&!y?g((0,i.Z)((0,i.Z)({},H),{},{style:{display:"none"}}),D):null;else{var B,z;N===C?z="prepare":ne(N)?z="active":N===A&&(z="start");var q=G(m,"".concat(R,"-").concat(z));V=g((0,i.Z)((0,i.Z)({},H),{},{className:c()(G(m,R),(B={},(0,r.Z)(B,q,q&&z),(0,r.Z)(B,m,"string"==typeof m),B)),style:$}),D)}else V=null;u.isValidElement(V)&&(0,d.Yr)(V)&&(V.ref||(V=u.cloneElement(V,{ref:D})));return u.createElement(w,{ref:j},V)}));return n.displayName="CSSMotion",n}(q);var oe=n(7462),ae=n(7326),se="add",ce="keep",ue="remove",le="removed";function fe(e){var t;return t=e&&"object"===(0,a.Z)(e)&&"key"in e?e:{key:e},(0,i.Z)((0,i.Z)({},t),{},{key:String(t.key)})}function de(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:[]).map(fe)}var he=["component","children","onVisibleChanged","onAllRemoved"],ve=["status"],pe=["eventProps","visible","children","motionName","motionAppear","motionEnter","motionLeave","motionLeaveImmediately","motionDeadline","removeOnLeave","leavedClassName","onAppearPrepare","onAppearStart","onAppearActive","onAppearEnd","onEnterStart","onEnterActive","onEnterEnd","onLeaveStart","onLeaveActive","onLeaveEnd"];!function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:ie,n=function(e){(0,b.Z)(o,e);var n=(0,_.Z)(o);function o(){var e;(0,m.Z)(this,o);for(var t=arguments.length,a=new Array(t),s=0;s0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=[],r=0,o=t.length,a=de(e),s=de(t);a.forEach((function(e){for(var t=!1,a=r;a1})).forEach((function(e){(n=n.filter((function(t){var n=t.key,r=t.status;return n!==e||r!==ue}))).forEach((function(t){t.key===e&&(t.status=ce)}))})),n}(r,o);return{keyEntities:a.filter((function(e){var t=r.find((function(t){var n=t.key;return e.key===n}));return!t||t.status!==le||e.status!==ue}))}}}]),o}(u.Component);(0,r.Z)(n,"defaultProps",{component:"div"})}(q);const ge=ie},8924:(e,t,n)=>{"use strict";function r(){return!("undefined"==typeof window||!window.document||!window.document.createElement)}n.d(t,{Z:()=>r})},8981:(e,t,n)=>{"use strict";n.d(t,{jL:()=>h,hq:()=>v});var r=n(8924);var i="data-rc-order",o="data-rc-priority",a="rc-util-key",s=new Map;function c(){var e=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}).mark;return e?e.startsWith("data-")?e:"data-".concat(e):a}function u(e){return e.attachTo?e.attachTo:document.querySelector("head")||document.body}function l(e){return Array.from((s.get(e)||e).children).filter((function(e){return"STYLE"===e.tagName}))}function f(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!(0,r.Z)())return null;var n=t.csp,a=t.prepend,s=t.priority,c=void 0===s?0:s,f=function(e){return"queue"===e?"prependQueue":e?"prepend":"append"}(a),d="prependQueue"===f,h=document.createElement("style");h.setAttribute(i,f),d&&c&&h.setAttribute(o,"".concat(c)),null!=n&&n.nonce&&(h.nonce=null==n?void 0:n.nonce),h.innerHTML=e;var v=u(t),p=v.firstChild;if(a){if(d){var g=l(v).filter((function(e){if(!["prepend","prependQueue"].includes(e.getAttribute(i)))return!1;var t=Number(e.getAttribute(o)||0);return c>=t}));if(g.length)return v.insertBefore(h,g[g.length-1].nextSibling),h}v.insertBefore(h,p)}else v.appendChild(h);return h}function d(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return l(u(t)).find((function(n){return n.getAttribute(c(t))===e}))}function h(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=d(e,t);n&&u(t).removeChild(n)}function v(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};!function(e,t){var n=s.get(e);if(!n||!function(e,t){if(!e)return!1;if(e.contains)return e.contains(t);for(var n=t;n;){if(n===e)return!0;n=n.parentNode}return!1}(document,n)){var r=f("",t),i=r.parentNode;s.set(e,i),e.removeChild(r)}}(u(n),n);var r=d(t,n);if(r){var i,o,a;if(null!==(i=n.csp)&&void 0!==i&&i.nonce&&r.nonce!==(null===(o=n.csp)||void 0===o?void 0:o.nonce))r.nonce=null===(a=n.csp)||void 0===a?void 0:a.nonce;return r.innerHTML!==e&&(r.innerHTML=e),r}var l=f(e,n);return l.setAttribute(c(n),t),l}},6680:(e,t,n)=>{"use strict";n.d(t,{Z:()=>i});var r=n(7294);function i(e){var t=r.useRef();t.current=e;var n=r.useCallback((function(){for(var e,n=arguments.length,r=new Array(n),i=0;i{"use strict";n.d(t,{Z:()=>s,o:()=>a});var r=n(7294),i=(0,n(8924).Z)()?r.useLayoutEffect:r.useEffect,o=function(e,t){var n=r.useRef(!0);i((function(){return e(n.current)}),t),i((function(){return n.current=!1,function(){n.current=!0}}),[])},a=function(e,t){o((function(t){if(!t)return e()}),t)};const s=o},6982:(e,t,n)=>{"use strict";n.d(t,{Z:()=>i});var r=n(7294);function i(e,t,n){var i=r.useRef({});return"value"in i.current&&!n(i.current.condition,t)||(i.current.value=e(),i.current.condition=t),i.current.value}},1770:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});var r=n(7685),i=n(6680),o=n(8410),a=n(470);function s(e){return void 0!==e}function c(e,t){var n=t||{},c=n.defaultValue,u=n.value,l=n.onChange,f=n.postState,d=(0,a.Z)((function(){return s(u)?u:s(c)?"function"==typeof c?c():c:"function"==typeof e?e():e})),h=(0,r.Z)(d,2),v=h[0],p=h[1],g=void 0!==u?u:v,m=f?f(g):g,y=(0,i.Z)(l),b=(0,a.Z)([g]),_=(0,r.Z)(b,2),w=_[0],x=_[1];return(0,o.o)((function(){var e=w[0];v!==e&&y(v,e)}),[w]),(0,o.o)((function(){s(u)||p(u)}),[u]),[m,(0,i.Z)((function(e,t){p(e,t),x([g],t)}))]}},470:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7685),i=n(7294);function o(e){var t=i.useRef(!1),n=i.useState(e),o=(0,r.Z)(n,2),a=o[0],s=o[1];return i.useEffect((function(){return t.current=!1,function(){t.current=!0}}),[]),[a,function(e,n){n&&t.current||s(e)}]}},6790:(e,t,n)=>{"use strict";n.d(t,{zX:()=>r.Z});var r=n(6680);n(1770),n(2550),n(3799),n(334)},1881:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(1002),i=n(334);const o=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],o=new Set;return function e(t,a){var s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,c=o.has(t);if((0,i.ZP)(!c,"Warning: There may be circular references"),c)return!1;if(t===a)return!0;if(n&&s>1)return!1;o.add(t);var u=s+1;if(Array.isArray(t)){if(!Array.isArray(a)||t.length!==a.length)return!1;for(var l=0;l{"use strict";n.d(t,{Z:()=>u});var r=function(e){return+setTimeout(e,16)},i=function(e){return clearTimeout(e)};"undefined"!=typeof window&&"requestAnimationFrame"in window&&(r=function(e){return window.requestAnimationFrame(e)},i=function(e){return window.cancelAnimationFrame(e)});var o=0,a=new Map;function s(e){a.delete(e)}var c=function(e){var t=o+=1;return function n(i){if(0===i)s(t),e();else{var o=r((function(){n(i-1)}));a.set(t,o)}}(arguments.length>1&&void 0!==arguments[1]?arguments[1]:1),t};c.cancel=function(e){var t=a.get(e);return s(e),i(t)};const u=c},2550:(e,t,n)=>{"use strict";n.d(t,{Yr:()=>s,mH:()=>o,sQ:()=>a});var r=n(1002),i=(n(7294),n(1805));n(6982);function o(e,t){"function"==typeof e?e(t):"object"===(0,r.Z)(e)&&e&&"current"in e&&(e.current=t)}function a(){for(var e=arguments.length,t=new Array(e),n=0;n{"use strict";function r(e,t){for(var n=e,r=0;rr})},3799:(e,t,n)=>{"use strict";n.d(t,{Z:()=>d,T:()=>p});var r=n(1002),i=n(1413),o=n(4902),a=n(3878),s=n(9199),c=n(181),u=n(5267);var l=n(8306);function f(e,t,n,r){if(!t.length)return n;var l,d,h=(l=t,(0,a.Z)(l)||(0,s.Z)(l)||(0,c.Z)(l)||(0,u.Z)()),v=h[0],p=h.slice(1);return d=e||"number"!=typeof v?Array.isArray(e)?(0,o.Z)(e):(0,i.Z)({},e):[],r&&void 0===n&&1===p.length?delete d[v][p[0]]:d[v]=f(d[v],p,n,r),d}function d(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]&&arguments[3];return t.length&&r&&void 0===n&&!(0,l.Z)(e,t.slice(0,-1))?e:f(e,t,n,r)}function h(e){return Array.isArray(e)?[]:{}}var v="undefined"==typeof Reflect?Object.keys:Reflect.ownKeys;function p(){for(var e=arguments.length,t=new Array(e),n=0;n{"use strict";n.d(t,{Kp:()=>o,ZP:()=>u});var r={},i=[];function o(e,t){}function a(e,t){}function s(e,t,n){t||r[n]||(e(!1,n),r[n]=!0)}function c(e,t){s(o,e,t)}c.preMessage=function(e){i.push(e)},c.resetWarned=function(){r={}},c.noteOnce=function(e,t){s(a,e,t)};const u=c},1162:(e,t)=>{"use strict";var n,r=Symbol.for("react.element"),i=Symbol.for("react.portal"),o=Symbol.for("react.fragment"),a=Symbol.for("react.strict_mode"),s=Symbol.for("react.profiler"),c=Symbol.for("react.provider"),u=Symbol.for("react.context"),l=Symbol.for("react.server_context"),f=Symbol.for("react.forward_ref"),d=Symbol.for("react.suspense"),h=Symbol.for("react.suspense_list"),v=Symbol.for("react.memo"),p=Symbol.for("react.lazy"),g=Symbol.for("react.offscreen");function m(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case r:switch(e=e.type){case o:case s:case a:case d:case h:return e;default:switch(e=e&&e.$$typeof){case l:case u:case f:case p:case v:case c:return e;default:return t}}case i:return t}}}n=Symbol.for("react.module.reference"),t.isFragment=function(e){return m(e)===o},t.isMemo=function(e){return m(e)===v}},1805:(e,t,n)=>{"use strict";e.exports=n(1162)},907:(e,t,n)=>{"use strict";function r(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);nr})},3878:(e,t,n)=>{"use strict";function r(e){if(Array.isArray(e))return e}n.d(t,{Z:()=>r})},7326:(e,t,n)=>{"use strict";function r(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}n.d(t,{Z:()=>r})},5861:(e,t,n)=>{"use strict";function r(e,t,n,r,i,o,a){try{var s=e[o](a),c=s.value}catch(u){return void n(u)}s.done?t(c):Promise.resolve(c).then(r,i)}function i(e){return function(){var t=this,n=arguments;return new Promise((function(i,o){var a=e.apply(t,n);function s(e){r(a,i,o,s,c,"next",e)}function c(e){r(a,i,o,s,c,"throw",e)}s(void 0)}))}}n.d(t,{Z:()=>i})},5671:(e,t,n)=>{"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}n.d(t,{Z:()=>r})},3144:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(3997);function i(e,t){for(var n=0;n{"use strict";function r(e){return r=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},r(e)}n.d(t,{Z:()=>a});var i=n(1002),o=n(7326);function a(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,a=r(e);if(t){var s=r(this).constructor;n=Reflect.construct(a,arguments,s)}else n=a.apply(this,arguments);return function(e,t){if(t&&("object"===(0,i.Z)(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return(0,o.Z)(e)}(this,n)}}},4942:(e,t,n)=>{"use strict";n.d(t,{Z:()=>i});var r=n(3997);function i(e,t,n){return(t=(0,r.Z)(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}},136:(e,t,n)=>{"use strict";n.d(t,{Z:()=>i});var r=n(9611);function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&(0,r.Z)(e,t)}},9199:(e,t,n)=>{"use strict";function r(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}n.d(t,{Z:()=>r})},5267:(e,t,n)=>{"use strict";function r(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}n.d(t,{Z:()=>r})},1413:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(4942);function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t{"use strict";n.d(t,{Z:()=>i});var r=n(3366);function i(e,t){if(null==e)return{};var n,i,o=(0,r.Z)(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}},4165:(e,t,n)=>{"use strict";n.d(t,{Z:()=>i});var r=n(1002);function i(){i=function(){return t};var e,t={},n=Object.prototype,o=n.hasOwnProperty,a=Object.defineProperty||function(e,t,n){e[t]=n.value},s="function"==typeof Symbol?Symbol:{},c=s.iterator||"@@iterator",u=s.asyncIterator||"@@asyncIterator",l=s.toStringTag||"@@toStringTag";function f(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{f({},"")}catch(e){f=function(e,t,n){return e[t]=n}}function d(e,t,n,r){var i=t&&t.prototype instanceof b?t:b,o=Object.create(i.prototype),s=new F(r||[]);return a(o,"_invoke",{value:C(e,n,s)}),o}function h(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}t.wrap=d;var v="suspendedStart",p="suspendedYield",g="executing",m="completed",y={};function b(){}function _(){}function w(){}var x={};f(x,c,(function(){return this}));var S=Object.getPrototypeOf,O=S&&S(S(M([])));O&&O!==n&&o.call(O,c)&&(x=O);var k=w.prototype=b.prototype=Object.create(x);function E(e){["next","throw","return"].forEach((function(t){f(e,t,(function(e){return this._invoke(t,e)}))}))}function Z(e,t){function n(i,a,s,c){var u=h(e[i],e,a);if("throw"!==u.type){var l=u.arg,f=l.value;return f&&"object"==(0,r.Z)(f)&&o.call(f,"__await")?t.resolve(f.__await).then((function(e){n("next",e,s,c)}),(function(e){n("throw",e,s,c)})):t.resolve(f).then((function(e){l.value=e,s(l)}),(function(e){return n("throw",e,s,c)}))}c(u.arg)}var i;a(this,"_invoke",{value:function(e,r){function o(){return new t((function(t,i){n(e,r,t,i)}))}return i=i?i.then(o,o):o()}})}function C(t,n,r){var i=v;return function(o,a){if(i===g)throw new Error("Generator is already running");if(i===m){if("throw"===o)throw a;return{value:e,done:!0}}for(r.method=o,r.arg=a;;){var s=r.delegate;if(s){var c=A(s,r);if(c){if(c===y)continue;return c}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if(i===v)throw i=m,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);i=g;var u=h(t,n,r);if("normal"===u.type){if(i=r.done?m:p,u.arg===y)continue;return{value:u.arg,done:r.done}}"throw"===u.type&&(i=m,r.method="throw",r.arg=u.arg)}}}function A(t,n){var r=n.method,i=t.iterator[r];if(i===e)return n.delegate=null,"throw"===r&&t.iterator.return&&(n.method="return",n.arg=e,A(t,n),"throw"===n.method)||"return"!==r&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+r+"' method")),y;var o=h(i,t.iterator,n.arg);if("throw"===o.type)return n.method="throw",n.arg=o.arg,n.delegate=null,y;var a=o.arg;return a?a.done?(n[t.resultName]=a.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,y):a:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,y)}function P(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function j(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function F(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(P,this),this.reset(!0)}function M(t){if(t||""===t){var n=t[c];if(n)return n.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var i=-1,a=function n(){for(;++i=0;--i){var a=this.tryEntries[i],s=a.completion;if("root"===a.tryLoc)return r("end");if(a.tryLoc<=this.prev){var c=o.call(a,"catchLoc"),u=o.call(a,"finallyLoc");if(c&&u){if(this.prev=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&o.call(r,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),j(n),y}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var i=r.arg;j(n)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(t,n,r){return this.delegate={iterator:M(t),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=e),y}},t}},7685:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});var r=n(3878);var i=n(181),o=n(5267);function a(e,t){return(0,r.Z)(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,i,o,a,s=[],c=!0,u=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=o.call(n)).done)&&(s.push(r.value),s.length!==t);c=!0);}catch(e){u=!0,i=e}finally{try{if(!c&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(u)throw i}}return s}}(e,t)||(0,i.Z)(e,t)||(0,o.Z)()}},4902:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});var r=n(907);var i=n(9199),o=n(181);function a(e){return function(e){if(Array.isArray(e))return(0,r.Z)(e)}(e)||(0,i.Z)(e)||(0,o.Z)(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}},3997:(e,t,n)=>{"use strict";n.d(t,{Z:()=>i});var r=n(1002);function i(e){var t=function(e,t){if("object"!=(0,r.Z)(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,t||"default");if("object"!=(0,r.Z)(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==(0,r.Z)(t)?t:String(t)}},1002:(e,t,n)=>{"use strict";function r(e){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r(e)}n.d(t,{Z:()=>r})},181:(e,t,n)=>{"use strict";n.d(t,{Z:()=>i});var r=n(907);function i(e,t){if(e){if("string"==typeof e)return(0,r.Z)(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?(0,r.Z)(e,t):void 0}}}}]); \ No newline at end of file diff --git a/assets/js/7298.ca9d84c7.js.LICENSE.txt b/assets/js/7298.3a91b5ff.js.LICENSE.txt similarity index 100% rename from assets/js/7298.ca9d84c7.js.LICENSE.txt rename to assets/js/7298.3a91b5ff.js.LICENSE.txt diff --git a/assets/js/7e314c8c.c3197eca.js b/assets/js/7e314c8c.96248a4a.js similarity index 89% rename from assets/js/7e314c8c.c3197eca.js rename to assets/js/7e314c8c.96248a4a.js index acc8ac98..296b9e10 100644 --- a/assets/js/7e314c8c.c3197eca.js +++ b/assets/js/7e314c8c.96248a4a.js @@ -1 +1 @@ -"use strict";(self.webpackChunkareweloongyet=self.webpackChunkareweloongyet||[]).push([[3378],{5685:e=>{e.exports=JSON.parse('{"label":"\u6bcf\u5468\u4e00\u9f99","permalink":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99","allTagsPath":"/newsletter/tags","count":31,"unlisted":false}')}}]); \ No newline at end of file +"use strict";(self.webpackChunkareweloongyet=self.webpackChunkareweloongyet||[]).push([[3378],{5685:e=>{e.exports=JSON.parse('{"label":"\u6bcf\u5468\u4e00\u9f99","permalink":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99","allTagsPath":"/newsletter/tags","count":32,"unlisted":false}')}}]); \ No newline at end of file diff --git a/assets/js/8443.7c6e8c3b.js b/assets/js/8443.4a4044bb.js similarity index 99% rename from assets/js/8443.7c6e8c3b.js rename to assets/js/8443.4a4044bb.js index 5c2c9cb7..67cf097a 100644 --- a/assets/js/8443.7c6e8c3b.js +++ b/assets/js/8443.4a4044bb.js @@ -1,2 +1,2 @@ -/*! For license information please see 8443.7c6e8c3b.js.LICENSE.txt */ -(self.webpackChunkareweloongyet=self.webpackChunkareweloongyet||[]).push([[8443],{8443:(t,e,n)=>{"use strict";t.exports=n(295)},1228:(t,e,n)=>{"use strict";var i=n(2856),s={wrapper:{position:"relative",display:"inline-block"},hint:{position:"absolute",top:"0",left:"0",borderColor:"transparent",boxShadow:"none",opacity:"1"},input:{position:"relative",verticalAlign:"top",backgroundColor:"transparent"},inputWithNoHint:{position:"relative",verticalAlign:"top"},dropdown:{position:"absolute",top:"100%",left:"0",zIndex:"100",display:"none"},suggestions:{display:"block"},suggestion:{whiteSpace:"nowrap",cursor:"pointer"},suggestionChild:{whiteSpace:"normal"},ltr:{left:"0",right:"auto"},rtl:{left:"auto",right:"0"},defaultClasses:{root:"algolia-autocomplete",prefix:"aa",noPrefix:!1,dropdownMenu:"dropdown-menu",input:"input",hint:"hint",suggestions:"suggestions",suggestion:"suggestion",cursor:"cursor",dataset:"dataset",empty:"empty"},appendTo:{wrapper:{position:"absolute",zIndex:"100",display:"none"},input:{},inputWithNoHint:{},dropdown:{display:"block"}}};i.isMsie()&&i.mixin(s.input,{backgroundImage:"url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)"}),i.isMsie()&&i.isMsie()<=7&&i.mixin(s.input,{marginTop:"-1px"}),t.exports=s},2334:(t,e,n)=>{"use strict";var i="aaDataset",s="aaValue",r="aaDatum",o=n(2856),a=n(4910),u=n(3561),c=n(1228),l=n(3109);function h(t){var e;(t=t||{}).templates=t.templates||{},t.source||o.error("missing source"),t.name&&(e=t.name,!/^[_a-zA-Z0-9-]+$/.test(e))&&o.error("invalid dataset name: "+t.name),this.query=null,this._isEmpty=!0,this.highlight=!!t.highlight,this.name=void 0===t.name||null===t.name?o.getUniqueId():t.name,this.source=t.source,this.displayFn=function(t){return t=t||"value",o.isFunction(t)?t:e;function e(e){return e[t]}}(t.display||t.displayKey),this.debounce=t.debounce,this.cache=!1!==t.cache,this.templates=function(t,e){return{empty:t.empty&&o.templatify(t.empty),header:t.header&&o.templatify(t.header),footer:t.footer&&o.templatify(t.footer),suggestion:t.suggestion||n};function n(t){return"

"+e(t)+"

"}}(t.templates,this.displayFn),this.css=o.mixin({},c,t.appendTo?c.appendTo:{}),this.cssClasses=t.cssClasses=o.mixin({},c.defaultClasses,t.cssClasses||{}),this.cssClasses.prefix=t.cssClasses.formattedPrefix||o.formatPrefix(this.cssClasses.prefix,this.cssClasses.noPrefix);var n=o.className(this.cssClasses.prefix,this.cssClasses.dataset);this.$el=t.$menu&&t.$menu.find(n+"-"+this.name).length>0?a.element(t.$menu.find(n+"-"+this.name)[0]):a.element(u.dataset.replace("%CLASS%",this.name).replace("%PREFIX%",this.cssClasses.prefix).replace("%DATASET%",this.cssClasses.dataset)),this.$menu=t.$menu,this.clearCachedSuggestions()}h.extractDatasetName=function(t){return a.element(t).data(i)},h.extractValue=function(t){return a.element(t).data(s)},h.extractDatum=function(t){var e=a.element(t).data(r);return"string"==typeof e&&(e=JSON.parse(e)),e},o.mixin(h.prototype,l,{_render:function(t,e){if(this.$el){var n,c=this,l=[].slice.call(arguments,2);if(this.$el.empty(),n=e&&e.length,this._isEmpty=!n,!n&&this.templates.empty)this.$el.html(function(){var e=[].slice.call(arguments,0);return e=[{query:t,isEmpty:!0}].concat(e),c.templates.empty.apply(this,e)}.apply(this,l)).prepend(c.templates.header?h.apply(this,l):null).append(c.templates.footer?p.apply(this,l):null);else if(n)this.$el.html(function(){var t,n,l=[].slice.call(arguments,0),h=this,p=u.suggestions.replace("%PREFIX%",this.cssClasses.prefix).replace("%SUGGESTIONS%",this.cssClasses.suggestions);return t=a.element(p).css(this.css.suggestions),n=o.map(e,f),t.append.apply(t,n),t;function f(t){var e,n=u.suggestion.replace("%PREFIX%",h.cssClasses.prefix).replace("%SUGGESTION%",h.cssClasses.suggestion);return(e=a.element(n).attr({role:"option",id:["option",Math.floor(1e8*Math.random())].join("-")}).append(c.templates.suggestion.apply(this,[t].concat(l)))).data(i,c.name),e.data(s,c.displayFn(t)||void 0),e.data(r,JSON.stringify(t)),e.children().each((function(){a.element(this).css(h.css.suggestionChild)})),e}}.apply(this,l)).prepend(c.templates.header?h.apply(this,l):null).append(c.templates.footer?p.apply(this,l):null);else if(e&&!Array.isArray(e))throw new TypeError("suggestions must be an array");this.$menu&&this.$menu.addClass(this.cssClasses.prefix+(n?"with":"without")+"-"+this.name).removeClass(this.cssClasses.prefix+(n?"without":"with")+"-"+this.name),this.trigger("rendered",t)}function h(){var e=[].slice.call(arguments,0);return e=[{query:t,isEmpty:!n}].concat(e),c.templates.header.apply(this,e)}function p(){var e=[].slice.call(arguments,0);return e=[{query:t,isEmpty:!n}].concat(e),c.templates.footer.apply(this,e)}},getRoot:function(){return this.$el},update:function(t){function e(e){if(!this.canceled&&t===this.query){var n=[].slice.call(arguments,1);this.cacheSuggestions(t,e,n),this._render.apply(this,[t,e].concat(n))}}if(this.query=t,this.canceled=!1,this.shouldFetchFromCache(t))e.apply(this,[this.cachedSuggestions].concat(this.cachedRenderExtraArgs));else{var n=this,i=function(){n.canceled||n.source(t,e.bind(n))};if(this.debounce){clearTimeout(this.debounceTimeout),this.debounceTimeout=setTimeout((function(){n.debounceTimeout=null,i()}),this.debounce)}else i()}},cacheSuggestions:function(t,e,n){this.cachedQuery=t,this.cachedSuggestions=e,this.cachedRenderExtraArgs=n},shouldFetchFromCache:function(t){return this.cache&&this.cachedQuery===t&&this.cachedSuggestions&&this.cachedSuggestions.length},clearCachedSuggestions:function(){delete this.cachedQuery,delete this.cachedSuggestions,delete this.cachedRenderExtraArgs},cancel:function(){this.canceled=!0},clear:function(){this.$el&&(this.cancel(),this.$el.empty(),this.trigger("rendered",""))},isEmpty:function(){return this._isEmpty},destroy:function(){this.clearCachedSuggestions(),this.$el=null}}),t.exports=h},3354:(t,e,n)=>{"use strict";var i=n(2856),s=n(4910),r=n(3109),o=n(2334),a=n(1228);function u(t){var e,n,r,o=this;(t=t||{}).menu||i.error("menu is required"),i.isArray(t.datasets)||i.isObject(t.datasets)||i.error("1 or more datasets required"),t.datasets||i.error("datasets is required"),this.isOpen=!1,this.isEmpty=!0,this.minLength=t.minLength||0,this.templates={},this.appendTo=t.appendTo||!1,this.css=i.mixin({},a,t.appendTo?a.appendTo:{}),this.cssClasses=t.cssClasses=i.mixin({},a.defaultClasses,t.cssClasses||{}),this.cssClasses.prefix=t.cssClasses.formattedPrefix||i.formatPrefix(this.cssClasses.prefix,this.cssClasses.noPrefix),e=i.bind(this._onSuggestionClick,this),n=i.bind(this._onSuggestionMouseEnter,this),r=i.bind(this._onSuggestionMouseLeave,this);var c=i.className(this.cssClasses.prefix,this.cssClasses.suggestion);this.$menu=s.element(t.menu).on("mouseenter.aa",c,n).on("mouseleave.aa",c,r).on("click.aa",c,e),this.$container=t.appendTo?t.wrapper:this.$menu,t.templates&&t.templates.header&&(this.templates.header=i.templatify(t.templates.header),this.$menu.prepend(this.templates.header())),t.templates&&t.templates.empty&&(this.templates.empty=i.templatify(t.templates.empty),this.$empty=s.element('
'),this.$menu.append(this.$empty),this.$empty.hide()),this.datasets=i.map(t.datasets,(function(e){return function(t,e,n){return new u.Dataset(i.mixin({$menu:t,cssClasses:n},e))}(o.$menu,e,t.cssClasses)})),i.each(this.datasets,(function(t){var e=t.getRoot();e&&0===e.parent().length&&o.$menu.append(e),t.onSync("rendered",o._onRendered,o)})),t.templates&&t.templates.footer&&(this.templates.footer=i.templatify(t.templates.footer),this.$menu.append(this.templates.footer()));var l=this;s.element(window).resize((function(){l._redraw()}))}i.mixin(u.prototype,r,{_onSuggestionClick:function(t){this.trigger("suggestionClicked",s.element(t.currentTarget))},_onSuggestionMouseEnter:function(t){var e=s.element(t.currentTarget);if(!e.hasClass(i.className(this.cssClasses.prefix,this.cssClasses.cursor,!0))){this._removeCursor();var n=this;setTimeout((function(){n._setCursor(e,!1)}),0)}},_onSuggestionMouseLeave:function(t){if(t.relatedTarget&&s.element(t.relatedTarget).closest("."+i.className(this.cssClasses.prefix,this.cssClasses.cursor,!0)).length>0)return;this._removeCursor(),this.trigger("cursorRemoved")},_onRendered:function(t,e){if(this.isEmpty=i.every(this.datasets,(function(t){return t.isEmpty()})),this.isEmpty)if(e.length>=this.minLength&&this.trigger("empty"),this.$empty)if(e.length=this.minLength?this._show():this._hide());this.trigger("datasetRendered")},_hide:function(){this.$container.hide()},_show:function(){this.$container.css("display","block"),this._redraw(),this.trigger("shown")},_redraw:function(){this.isOpen&&this.appendTo&&this.trigger("redrawn")},_getSuggestions:function(){return this.$menu.find(i.className(this.cssClasses.prefix,this.cssClasses.suggestion))},_getCursor:function(){return this.$menu.find(i.className(this.cssClasses.prefix,this.cssClasses.cursor)).first()},_setCursor:function(t,e){t.first().addClass(i.className(this.cssClasses.prefix,this.cssClasses.cursor,!0)).attr("aria-selected","true"),this.trigger("cursorMoved",e)},_removeCursor:function(){this._getCursor().removeClass(i.className(this.cssClasses.prefix,this.cssClasses.cursor,!0)).removeAttr("aria-selected")},_moveCursor:function(t){var e,n,i,s;this.isOpen&&(n=this._getCursor(),e=this._getSuggestions(),this._removeCursor(),-1!==(i=((i=e.index(n)+t)+1)%(e.length+1)-1)?(i<-1&&(i=e.length-1),this._setCursor(s=e.eq(i),!0),this._ensureVisible(s)):this.trigger("cursorRemoved"))},_ensureVisible:function(t){var e,n,i,s;n=(e=t.position().top)+t.height()+parseInt(t.css("margin-top"),10)+parseInt(t.css("margin-bottom"),10),i=this.$menu.scrollTop(),s=this.$menu.height()+parseInt(this.$menu.css("padding-top"),10)+parseInt(this.$menu.css("padding-bottom"),10),e<0?this.$menu.scrollTop(i+e):s{"use strict";var i=n(2856),s=n(4910);function r(t){t&&t.el||i.error("EventBus initialized without el"),this.$el=s.element(t.el)}i.mixin(r.prototype,{trigger:function(t,e,n,s){var r=i.Event("autocomplete:"+t);return this.$el.trigger(r,[e,n,s]),r}}),t.exports=r},3109:(t,e,n)=>{"use strict";var i=n(624),s=/\s+/;function r(t,e,n,i){var r;if(!n)return this;for(e=e.split(s),n=i?function(t,e){return t.bind?t.bind(e):function(){t.apply(e,[].slice.call(arguments,0))}}(n,i):n,this._callbacks=this._callbacks||{};r=e.shift();)this._callbacks[r]=this._callbacks[r]||{sync:[],async:[]},this._callbacks[r][t].push(n);return this}function o(t,e,n){return function(){for(var i,s=0,r=t.length;!i&&s{"use strict";t.exports={wrapper:'',dropdown:'',dataset:'
',suggestions:'',suggestion:'
'}},2534:(t,e,n)=>{"use strict";var i;i={9:"tab",27:"esc",37:"left",39:"right",13:"enter",38:"up",40:"down"};var s=n(2856),r=n(4910),o=n(3109);function a(t){var e,n,o,a,u,c=this;(t=t||{}).input||s.error("input is missing"),e=s.bind(this._onBlur,this),n=s.bind(this._onFocus,this),o=s.bind(this._onKeydown,this),a=s.bind(this._onInput,this),this.$hint=r.element(t.hint),this.$input=r.element(t.input).on("blur.aa",e).on("focus.aa",n).on("keydown.aa",o),0===this.$hint.length&&(this.setHint=this.getHint=this.clearHint=this.clearHintIfInvalid=s.noop),s.isMsie()?this.$input.on("keydown.aa keypress.aa cut.aa paste.aa",(function(t){i[t.which||t.keyCode]||s.defer(s.bind(c._onInput,c,t))})):this.$input.on("input.aa",a),this.query=this.$input.val(),this.$overflowHelper=(u=this.$input,r.element('').css({position:"absolute",visibility:"hidden",whiteSpace:"pre",fontFamily:u.css("font-family"),fontSize:u.css("font-size"),fontStyle:u.css("font-style"),fontVariant:u.css("font-variant"),fontWeight:u.css("font-weight"),wordSpacing:u.css("word-spacing"),letterSpacing:u.css("letter-spacing"),textIndent:u.css("text-indent"),textRendering:u.css("text-rendering"),textTransform:u.css("text-transform")}).insertAfter(u))}function u(t){return t.altKey||t.ctrlKey||t.metaKey||t.shiftKey}a.normalizeQuery=function(t){return(t||"").replace(/^\s*/g,"").replace(/\s{2,}/g," ")},s.mixin(a.prototype,o,{_onBlur:function(){this.resetInputValue(),this.$input.removeAttr("aria-activedescendant"),this.trigger("blurred")},_onFocus:function(){this.trigger("focused")},_onKeydown:function(t){var e=i[t.which||t.keyCode];this._managePreventDefault(e,t),e&&this._shouldTrigger(e,t)&&this.trigger(e+"Keyed",t)},_onInput:function(){this._checkInputValue()},_managePreventDefault:function(t,e){var n,i,s;switch(t){case"tab":i=this.getHint(),s=this.getInputValue(),n=i&&i!==s&&!u(e);break;case"up":case"down":n=!u(e);break;default:n=!1}n&&e.preventDefault()},_shouldTrigger:function(t,e){var n;if("tab"===t)n=!u(e);else n=!0;return n},_checkInputValue:function(){var t,e,n,i,s;t=this.getInputValue(),i=t,s=this.query,n=!(!(e=a.normalizeQuery(i)===a.normalizeQuery(s))||!this.query)&&this.query.length!==t.length,this.query=t,e?n&&this.trigger("whitespaceChanged",this.query):this.trigger("queryChanged",this.query)},focus:function(){this.$input.focus()},blur:function(){this.$input.blur()},getQuery:function(){return this.query},setQuery:function(t){this.query=t},getInputValue:function(){return this.$input.val()},setInputValue:function(t,e){void 0===t&&(t=this.query),this.$input.val(t),e?this.clearHint():this._checkInputValue()},expand:function(){this.$input.attr("aria-expanded","true")},collapse:function(){this.$input.attr("aria-expanded","false")},setActiveDescendant:function(t){this.$input.attr("aria-activedescendant",t)},removeActiveDescendant:function(){this.$input.removeAttr("aria-activedescendant")},resetInputValue:function(){this.setInputValue(this.query,!0)},getHint:function(){return this.$hint.val()},setHint:function(t){this.$hint.val(t)},clearHint:function(){this.setHint("")},clearHintIfInvalid:function(){var t,e,n;n=(t=this.getInputValue())!==(e=this.getHint())&&0===e.indexOf(t),""!==t&&n&&!this.hasOverflow()||this.clearHint()},getLanguageDirection:function(){return(this.$input.css("direction")||"ltr").toLowerCase()},hasOverflow:function(){var t=this.$input.width()-2;return this.$overflowHelper.text(this.getInputValue()),this.$overflowHelper.width()>=t},isCursorAtEnd:function(){var t,e,n;return t=this.$input.val().length,e=this.$input[0].selectionStart,s.isNumber(e)?e===t:!document.selection||((n=document.selection.createRange()).moveStart("character",-t),t===n.text.length)},destroy:function(){this.$hint.off(".aa"),this.$input.off(".aa"),this.$hint=this.$input=this.$overflowHelper=null}}),t.exports=a},6549:(t,e,n)=>{"use strict";var i="aaAttrs",s=n(2856),r=n(4910),o=n(50),a=n(2534),u=n(3354),c=n(3561),l=n(1228);function h(t){var e,n;if((t=t||{}).input||s.error("missing input"),this.isActivated=!1,this.debug=!!t.debug,this.autoselect=!!t.autoselect,this.autoselectOnBlur=!!t.autoselectOnBlur,this.openOnFocus=!!t.openOnFocus,this.minLength=s.isNumber(t.minLength)?t.minLength:1,this.autoWidth=void 0===t.autoWidth||!!t.autoWidth,this.clearOnSelected=!!t.clearOnSelected,this.tabAutocomplete=void 0===t.tabAutocomplete||!!t.tabAutocomplete,t.hint=!!t.hint,t.hint&&t.appendTo)throw new Error("[autocomplete.js] hint and appendTo options can't be used at the same time");this.css=t.css=s.mixin({},l,t.appendTo?l.appendTo:{}),this.cssClasses=t.cssClasses=s.mixin({},l.defaultClasses,t.cssClasses||{}),this.cssClasses.prefix=t.cssClasses.formattedPrefix=s.formatPrefix(this.cssClasses.prefix,this.cssClasses.noPrefix),this.listboxId=t.listboxId=[this.cssClasses.root,"listbox",s.getUniqueId()].join("-");var a=function(t){var e,n,o,a;e=r.element(t.input),n=r.element(c.wrapper.replace("%ROOT%",t.cssClasses.root)).css(t.css.wrapper),t.appendTo||"block"!==e.css("display")||"table"!==e.parent().css("display")||n.css("display","table-cell");var u=c.dropdown.replace("%PREFIX%",t.cssClasses.prefix).replace("%DROPDOWN_MENU%",t.cssClasses.dropdownMenu);o=r.element(u).css(t.css.dropdown).attr({role:"listbox",id:t.listboxId}),t.templates&&t.templates.dropdownMenu&&o.html(s.templatify(t.templates.dropdownMenu)());a=e.clone().css(t.css.hint).css(function(t){return{backgroundAttachment:t.css("background-attachment"),backgroundClip:t.css("background-clip"),backgroundColor:t.css("background-color"),backgroundImage:t.css("background-image"),backgroundOrigin:t.css("background-origin"),backgroundPosition:t.css("background-position"),backgroundRepeat:t.css("background-repeat"),backgroundSize:t.css("background-size")}}(e)),a.val("").addClass(s.className(t.cssClasses.prefix,t.cssClasses.hint,!0)).removeAttr("id name placeholder required").prop("readonly",!0).attr({"aria-hidden":"true",autocomplete:"off",spellcheck:"false",tabindex:-1}),a.removeData&&a.removeData();e.data(i,{"aria-autocomplete":e.attr("aria-autocomplete"),"aria-expanded":e.attr("aria-expanded"),"aria-owns":e.attr("aria-owns"),autocomplete:e.attr("autocomplete"),dir:e.attr("dir"),role:e.attr("role"),spellcheck:e.attr("spellcheck"),style:e.attr("style"),type:e.attr("type")}),e.addClass(s.className(t.cssClasses.prefix,t.cssClasses.input,!0)).attr({autocomplete:"off",spellcheck:!1,role:"combobox","aria-autocomplete":t.datasets&&t.datasets[0]&&t.datasets[0].displayKey?"both":"list","aria-expanded":"false","aria-label":t.ariaLabel,"aria-owns":t.listboxId}).css(t.hint?t.css.input:t.css.inputWithNoHint);try{e.attr("dir")||e.attr("dir","auto")}catch(l){}return n=t.appendTo?n.appendTo(r.element(t.appendTo).eq(0)).eq(0):e.wrap(n).parent(),n.prepend(t.hint?a:null).append(o),{wrapper:n,input:e,hint:a,menu:o}}(t);this.$node=a.wrapper;var u=this.$input=a.input;e=a.menu,n=a.hint,t.dropdownMenuContainer&&r.element(t.dropdownMenuContainer).css("position","relative").append(e.css("top","0")),u.on("blur.aa",(function(t){var n=document.activeElement;s.isMsie()&&(e[0]===n||e[0].contains(n))&&(t.preventDefault(),t.stopImmediatePropagation(),s.defer((function(){u.focus()})))})),e.on("mousedown.aa",(function(t){t.preventDefault()})),this.eventBus=t.eventBus||new o({el:u}),this.dropdown=new h.Dropdown({appendTo:t.appendTo,wrapper:this.$node,menu:e,datasets:t.datasets,templates:t.templates,cssClasses:t.cssClasses,minLength:this.minLength}).onSync("suggestionClicked",this._onSuggestionClicked,this).onSync("cursorMoved",this._onCursorMoved,this).onSync("cursorRemoved",this._onCursorRemoved,this).onSync("opened",this._onOpened,this).onSync("closed",this._onClosed,this).onSync("shown",this._onShown,this).onSync("empty",this._onEmpty,this).onSync("redrawn",this._onRedrawn,this).onAsync("datasetRendered",this._onDatasetRendered,this),this.input=new h.Input({input:u,hint:n}).onSync("focused",this._onFocused,this).onSync("blurred",this._onBlurred,this).onSync("enterKeyed",this._onEnterKeyed,this).onSync("tabKeyed",this._onTabKeyed,this).onSync("escKeyed",this._onEscKeyed,this).onSync("upKeyed",this._onUpKeyed,this).onSync("downKeyed",this._onDownKeyed,this).onSync("leftKeyed",this._onLeftKeyed,this).onSync("rightKeyed",this._onRightKeyed,this).onSync("queryChanged",this._onQueryChanged,this).onSync("whitespaceChanged",this._onWhitespaceChanged,this),this._bindKeyboardShortcuts(t),this._setLanguageDirection()}s.mixin(h.prototype,{_bindKeyboardShortcuts:function(t){if(t.keyboardShortcuts){var e=this.$input,n=[];s.each(t.keyboardShortcuts,(function(t){"string"==typeof t&&(t=t.toUpperCase().charCodeAt(0)),n.push(t)})),r.element(document).keydown((function(t){var i=t.target||t.srcElement,s=i.tagName;if(!i.isContentEditable&&"INPUT"!==s&&"SELECT"!==s&&"TEXTAREA"!==s){var r=t.which||t.keyCode;-1!==n.indexOf(r)&&(e.focus(),t.stopPropagation(),t.preventDefault())}}))}},_onSuggestionClicked:function(t,e){var n;(n=this.dropdown.getDatumForSuggestion(e))&&this._select(n,{selectionMethod:"click"})},_onCursorMoved:function(t,e){var n=this.dropdown.getDatumForCursor(),i=this.dropdown.getCurrentCursor().attr("id");this.input.setActiveDescendant(i),n&&(e&&this.input.setInputValue(n.value,!0),this.eventBus.trigger("cursorchanged",n.raw,n.datasetName))},_onCursorRemoved:function(){this.input.resetInputValue(),this._updateHint(),this.eventBus.trigger("cursorremoved")},_onDatasetRendered:function(){this._updateHint(),this.eventBus.trigger("updated")},_onOpened:function(){this._updateHint(),this.input.expand(),this.eventBus.trigger("opened")},_onEmpty:function(){this.eventBus.trigger("empty")},_onRedrawn:function(){this.$node.css("top","0px"),this.$node.css("left","0px");var t=this.$input[0].getBoundingClientRect();this.autoWidth&&this.$node.css("width",t.width+"px");var e=this.$node[0].getBoundingClientRect(),n=t.bottom-e.top;this.$node.css("top",n+"px");var i=t.left-e.left;this.$node.css("left",i+"px"),this.eventBus.trigger("redrawn")},_onShown:function(){this.eventBus.trigger("shown"),this.autoselect&&this.dropdown.cursorTopSuggestion()},_onClosed:function(){this.input.clearHint(),this.input.removeActiveDescendant(),this.input.collapse(),this.eventBus.trigger("closed")},_onFocused:function(){if(this.isActivated=!0,this.openOnFocus){var t=this.input.getQuery();t.length>=this.minLength?this.dropdown.update(t):this.dropdown.empty(),this.dropdown.open()}},_onBlurred:function(){var t,e;t=this.dropdown.getDatumForCursor(),e=this.dropdown.getDatumForTopSuggestion();var n={selectionMethod:"blur"};this.debug||(this.autoselectOnBlur&&t?this._select(t,n):this.autoselectOnBlur&&e?this._select(e,n):(this.isActivated=!1,this.dropdown.empty(),this.dropdown.close()))},_onEnterKeyed:function(t,e){var n,i;n=this.dropdown.getDatumForCursor(),i=this.dropdown.getDatumForTopSuggestion();var s={selectionMethod:"enterKey"};n?(this._select(n,s),e.preventDefault()):this.autoselect&&i&&(this._select(i,s),e.preventDefault())},_onTabKeyed:function(t,e){if(this.tabAutocomplete){var n;(n=this.dropdown.getDatumForCursor())?(this._select(n,{selectionMethod:"tabKey"}),e.preventDefault()):this._autocomplete(!0)}else this.dropdown.close()},_onEscKeyed:function(){this.dropdown.close(),this.input.resetInputValue()},_onUpKeyed:function(){var t=this.input.getQuery();this.dropdown.isEmpty&&t.length>=this.minLength?this.dropdown.update(t):this.dropdown.moveCursorUp(),this.dropdown.open()},_onDownKeyed:function(){var t=this.input.getQuery();this.dropdown.isEmpty&&t.length>=this.minLength?this.dropdown.update(t):this.dropdown.moveCursorDown(),this.dropdown.open()},_onLeftKeyed:function(){"rtl"===this.dir&&this._autocomplete()},_onRightKeyed:function(){"ltr"===this.dir&&this._autocomplete()},_onQueryChanged:function(t,e){this.input.clearHintIfInvalid(),e.length>=this.minLength?this.dropdown.update(e):this.dropdown.empty(),this.dropdown.open(),this._setLanguageDirection()},_onWhitespaceChanged:function(){this._updateHint(),this.dropdown.open()},_setLanguageDirection:function(){var t=this.input.getLanguageDirection();this.dir!==t&&(this.dir=t,this.$node.css("direction",t),this.dropdown.setLanguageDirection(t))},_updateHint:function(){var t,e,n,i,r;(t=this.dropdown.getDatumForTopSuggestion())&&this.dropdown.isVisible()&&!this.input.hasOverflow()?(e=this.input.getInputValue(),n=a.normalizeQuery(e),i=s.escapeRegExChars(n),(r=new RegExp("^(?:"+i+")(.+$)","i").exec(t.value))?this.input.setHint(e+r[1]):this.input.clearHint()):this.input.clearHint()},_autocomplete:function(t){var e,n,i,s;e=this.input.getHint(),n=this.input.getQuery(),i=t||this.input.isCursorAtEnd(),e&&n!==e&&i&&((s=this.dropdown.getDatumForTopSuggestion())&&this.input.setInputValue(s.value),this.eventBus.trigger("autocompleted",s.raw,s.datasetName))},_select:function(t,e){void 0!==t.value&&this.input.setQuery(t.value),this.clearOnSelected?this.setVal(""):this.input.setInputValue(t.value,!0),this._setLanguageDirection(),!1===this.eventBus.trigger("selected",t.raw,t.datasetName,e).isDefaultPrevented()&&(this.dropdown.close(),s.defer(s.bind(this.dropdown.empty,this.dropdown)))},open:function(){if(!this.isActivated){var t=this.input.getInputValue();t.length>=this.minLength?this.dropdown.update(t):this.dropdown.empty()}this.dropdown.open()},close:function(){this.dropdown.close()},setVal:function(t){t=s.toStr(t),this.isActivated?this.input.setInputValue(t):(this.input.setQuery(t),this.input.setInputValue(t,!0)),this._setLanguageDirection()},getVal:function(){return this.input.getQuery()},destroy:function(){this.input.destroy(),this.dropdown.destroy(),function(t,e){var n=t.find(s.className(e.prefix,e.input));s.each(n.data(i),(function(t,e){void 0===t?n.removeAttr(e):n.attr(e,t)})),n.detach().removeClass(s.className(e.prefix,e.input,!0)).insertAfter(t),n.removeData&&n.removeData(i);t.remove()}(this.$node,this.cssClasses),this.$node=null},getWrapper:function(){return this.dropdown.$container[0]}}),h.Dropdown=u,h.Input=a,h.sources=n(8840),t.exports=h},4910:t=>{"use strict";t.exports={element:null}},6177:t=>{"use strict";t.exports=function(t){var e=t.match(/Algolia for JavaScript \((\d+\.)(\d+\.)(\d+)\)/)||t.match(/Algolia for vanilla JavaScript (\d+\.)(\d+\.)(\d+)/);if(e)return[e[1],e[2],e[3]]}},2856:(t,e,n)=>{"use strict";var i,s=n(8820),r=n(4910);function o(t){return t.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}t.exports={isArray:null,isFunction:null,isObject:null,bind:null,each:null,map:null,mixin:null,isMsie:function(t){if(void 0===t&&(t=navigator.userAgent),/(msie|trident)/i.test(t)){var e=t.match(/(msie |rv:)(\d+(.\d+)?)/i);if(e)return e[2]}return!1},escapeRegExChars:function(t){return t.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")},isNumber:function(t){return"number"==typeof t},toStr:function(t){return null==t?"":t+""},cloneDeep:function(t){var e=this.mixin({},t),n=this;return this.each(e,(function(t,i){t&&(n.isArray(t)?e[i]=[].concat(t):n.isObject(t)&&(e[i]=n.cloneDeep(t)))})),e},error:function(t){throw new Error(t)},every:function(t,e){var n=!0;return t?(this.each(t,(function(i,s){n&&(n=e.call(null,i,s,t)&&n)})),!!n):n},any:function(t,e){var n=!1;return t?(this.each(t,(function(i,s){if(e.call(null,i,s,t))return n=!0,!1})),n):n},getUniqueId:(i=0,function(){return i++}),templatify:function(t){if(this.isFunction(t))return t;var e=r.element(t);return"SCRIPT"===e.prop("tagName")?function(){return e.text()}:function(){return String(t)}},defer:function(t){setTimeout(t,0)},noop:function(){},formatPrefix:function(t,e){return e?"":t+"-"},className:function(t,e,n){return n?t+e:"."+s(t+e,{isIdentifier:!0})},escapeHighlightedString:function(t,e,n){e=e||"";var i=document.createElement("div");i.appendChild(document.createTextNode(e)),n=n||"";var s=document.createElement("div");s.appendChild(document.createTextNode(n));var r=document.createElement("div");return r.appendChild(document.createTextNode(t)),r.innerHTML.replace(RegExp(o(i.innerHTML),"g"),e).replace(RegExp(o(s.innerHTML),"g"),n)}}},9983:(t,e,n)=>{"use strict";var i=n(2856),s=n(533),r=n(6177);var o,a,u=(o=[],a=window.Promise.resolve(),function(t,e){return function(n,s){(function(t,e){return window.Promise.resolve().then((function(){return o.length&&(a=t.search(o),o=[]),a})).then((function(t){if(t)return t.results[e]}))})(t.as,o.push({indexName:t.indexName,query:n,params:e})-1).then((function(t){t&&s(t.hits,t)})).catch((function(t){i.error(t.message)}))}});t.exports=function(t,e){var n=r(t.as._ua);if(n&&n[0]>=3&&n[1]>20){var i="autocomplete.js "+s;-1===t.as._ua.indexOf(i)&&(t.as._ua+="; "+i)}return u(t,e)}},8840:(t,e,n)=>{"use strict";t.exports={hits:n(9983),popularIn:n(4445)}},4445:(t,e,n)=>{"use strict";var i=n(2856),s=n(533),r=n(6177);t.exports=function(t,e,n,o){var a=r(t.as._ua);if(a&&a[0]>=3&&a[1]>20&&((e=e||{}).additionalUA="autocomplete.js "+s),!n.source)return i.error("Missing 'source' key");var u=i.isFunction(n.source)?n.source:function(t){return t[n.source]};if(!n.index)return i.error("Missing 'index' key");var c=n.index;return o=o||{},function(a,l){t.search(a,e,(function(t,a){if(t)i.error(t.message);else{if(a.hits.length>0){var h=a.hits[0],p=i.mixin({hitsPerPage:0},n);delete p.source,delete p.index;var f=r(c.as._ua);return f&&f[0]>=3&&f[1]>20&&(e.additionalUA="autocomplete.js "+s),void c.search(u(h),p,(function(t,e){if(t)i.error(t.message);else{var n=[];if(o.includeAll){var s=o.allTitle||"All departments";n.push(i.mixin({facet:{value:s,count:e.nbHits}},i.cloneDeep(h)))}i.each(e.facets,(function(t,e){i.each(t,(function(t,s){n.push(i.mixin({facet:{facet:e,value:s,count:t}},i.cloneDeep(h)))}))}));for(var r=1;r{"use strict";var i=n(6990);n(4910).element=i;var s=n(2856);s.isArray=i.isArray,s.isFunction=i.isFunction,s.isObject=i.isPlainObject,s.bind=i.proxy,s.each=function(t,e){i.each(t,(function(t,n){return e(n,t)}))},s.map=i.map,s.mixin=i.extend,s.Event=i.Event;var r="aaAutocomplete",o=n(6549),a=n(50);function u(t,e,n,u){n=s.isArray(n)?n:[].slice.call(arguments,2);var c=i(t).each((function(t,s){var c=i(s),l=new a({el:c}),h=u||new o({input:c,eventBus:l,dropdownMenuContainer:e.dropdownMenuContainer,hint:void 0===e.hint||!!e.hint,minLength:e.minLength,autoselect:e.autoselect,autoselectOnBlur:e.autoselectOnBlur,tabAutocomplete:e.tabAutocomplete,openOnFocus:e.openOnFocus,templates:e.templates,debug:e.debug,clearOnSelected:e.clearOnSelected,cssClasses:e.cssClasses,datasets:n,keyboardShortcuts:e.keyboardShortcuts,appendTo:e.appendTo,autoWidth:e.autoWidth,ariaLabel:e.ariaLabel||s.getAttribute("aria-label")});c.data(r,h)}));return c.autocomplete={},s.each(["open","close","getVal","setVal","destroy","getWrapper"],(function(t){c.autocomplete[t]=function(){var e,n=arguments;return c.each((function(s,o){var a=i(o).data(r);e=a[t].apply(a,n)})),e}})),c}u.sources=o.sources,u.escapeHighlightedString=s.escapeHighlightedString;var c="autocomplete"in window,l=window.autocomplete;u.noConflict=function(){return c?window.autocomplete=l:delete window.autocomplete,u},t.exports=u},533:t=>{t.exports="0.38.1"},6990:t=>{var e;e=window,t.exports=function(t){var e,n,i=function(){var e,n,i,s,r,o,a=[],u=a.concat,c=a.filter,l=a.slice,h=t.document,p={},f={},d={"column-count":1,columns:1,"font-weight":1,"line-height":1,opacity:1,"z-index":1,zoom:1},g=/^\s*<(\w+|!)[^>]*>/,m=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,v=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,y=/^(?:body|html)$/i,w=/([A-Z])/g,b=["val","css","html","text","data","width","height","offset"],C=["after","prepend","before","append"],x=h.createElement("table"),_=h.createElement("tr"),S={tr:h.createElement("tbody"),tbody:x,thead:x,tfoot:x,td:_,th:_,"*":h.createElement("div")},E=/complete|loaded|interactive/,A=/^[\w-]*$/,$={},T=$.toString,O={},D=h.createElement("div"),N={tabindex:"tabIndex",readonly:"readOnly",for:"htmlFor",class:"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},k=Array.isArray||function(t){return t instanceof Array};function I(t){return null==t?String(t):$[T.call(t)]||"object"}function P(t){return"function"==I(t)}function L(t){return null!=t&&t==t.window}function M(t){return null!=t&&t.nodeType==t.DOCUMENT_NODE}function F(t){return"object"==I(t)}function R(t){return F(t)&&!L(t)&&Object.getPrototypeOf(t)==Object.prototype}function q(t){var e=!!t&&"length"in t&&t.length,n=i.type(t);return"function"!=n&&!L(t)&&("array"==n||0===e||"number"==typeof e&&e>0&&e-1 in t)}function V(t){return c.call(t,(function(t){return null!=t}))}function H(t){return t.length>0?i.fn.concat.apply([],t):t}function B(t){return t.replace(/::/g,"/").replace(/([A-Z]+)([A-Z][a-z])/g,"$1_$2").replace(/([a-z\d])([A-Z])/g,"$1_$2").replace(/_/g,"-").toLowerCase()}function K(t){return t in f?f[t]:f[t]=new RegExp("(^|\\s)"+t+"(\\s|$)")}function j(t,e){return"number"!=typeof e||d[B(t)]?e:e+"px"}function z(t){var e,n;return p[t]||(e=h.createElement(t),h.body.appendChild(e),n=getComputedStyle(e,"").getPropertyValue("display"),e.parentNode.removeChild(e),"none"==n&&(n="block"),p[t]=n),p[t]}function U(t){return"children"in t?l.call(t.children):i.map(t.childNodes,(function(t){if(1==t.nodeType)return t}))}function Q(t,e){var n,i=t?t.length:0;for(n=0;n")),n===e&&(n=g.test(t)&&RegExp.$1),n in S||(n="*"),(a=S[n]).innerHTML=""+t,r=i.each(l.call(a.childNodes),(function(){a.removeChild(this)}))),R(s)&&(o=i(r),i.each(s,(function(t,e){b.indexOf(t)>-1?o[t](e):o.attr(t,e)}))),r},O.Z=function(t,e){return new Q(t,e)},O.isZ=function(t){return t instanceof O.Z},O.init=function(t,n){var s;if(!t)return O.Z();if("string"==typeof t)if("<"==(t=t.trim())[0]&&g.test(t))s=O.fragment(t,RegExp.$1,n),t=null;else{if(n!==e)return i(n).find(t);s=O.qsa(h,t)}else{if(P(t))return i(h).ready(t);if(O.isZ(t))return t;if(k(t))s=V(t);else if(F(t))s=[t],t=null;else if(g.test(t))s=O.fragment(t.trim(),RegExp.$1,n),t=null;else{if(n!==e)return i(n).find(t);s=O.qsa(h,t)}}return O.Z(s,t)},(i=function(t,e){return O.init(t,e)}).extend=function(t){var e,n=l.call(arguments,1);return"boolean"==typeof t&&(e=t,t=n.shift()),n.forEach((function(n){W(t,n,e)})),t},O.qsa=function(t,e){var n,i="#"==e[0],s=!i&&"."==e[0],r=i||s?e.slice(1):e,o=A.test(r);return t.getElementById&&o&&i?(n=t.getElementById(r))?[n]:[]:1!==t.nodeType&&9!==t.nodeType&&11!==t.nodeType?[]:l.call(o&&!i&&t.getElementsByClassName?s?t.getElementsByClassName(r):t.getElementsByTagName(e):t.querySelectorAll(e))},i.contains=h.documentElement.contains?function(t,e){return t!==e&&t.contains(e)}:function(t,e){for(;e&&(e=e.parentNode);)if(e===t)return!0;return!1},i.type=I,i.isFunction=P,i.isWindow=L,i.isArray=k,i.isPlainObject=R,i.isEmptyObject=function(t){var e;for(e in t)return!1;return!0},i.isNumeric=function(t){var e=Number(t),n=typeof t;return null!=t&&"boolean"!=n&&("string"!=n||t.length)&&!isNaN(e)&&isFinite(e)||!1},i.inArray=function(t,e,n){return a.indexOf.call(e,t,n)},i.camelCase=r,i.trim=function(t){return null==t?"":String.prototype.trim.call(t)},i.uuid=0,i.support={},i.expr={},i.noop=function(){},i.map=function(t,e){var n,i,s,r=[];if(q(t))for(i=0;i=0?t:t+this.length]},toArray:function(){return this.get()},size:function(){return this.length},remove:function(){return this.each((function(){null!=this.parentNode&&this.parentNode.removeChild(this)}))},each:function(t){return a.every.call(this,(function(e,n){return!1!==t.call(e,n,e)})),this},filter:function(t){return P(t)?this.not(this.not(t)):i(c.call(this,(function(e){return O.matches(e,t)})))},add:function(t,e){return i(o(this.concat(i(t,e))))},is:function(t){return this.length>0&&O.matches(this[0],t)},not:function(t){var n=[];if(P(t)&&t.call!==e)this.each((function(e){t.call(this,e)||n.push(this)}));else{var s="string"==typeof t?this.filter(t):q(t)&&P(t.item)?l.call(t):i(t);this.forEach((function(t){s.indexOf(t)<0&&n.push(t)}))}return i(n)},has:function(t){return this.filter((function(){return F(t)?i.contains(this,t):i(this).find(t).size()}))},eq:function(t){return-1===t?this.slice(t):this.slice(t,+t+1)},first:function(){var t=this[0];return t&&!F(t)?t:i(t)},last:function(){var t=this[this.length-1];return t&&!F(t)?t:i(t)},find:function(t){var e=this;return t?"object"==typeof t?i(t).filter((function(){var t=this;return a.some.call(e,(function(e){return i.contains(e,t)}))})):1==this.length?i(O.qsa(this[0],t)):this.map((function(){return O.qsa(this,t)})):i()},closest:function(t,e){var n=[],s="object"==typeof t&&i(t);return this.each((function(i,r){for(;r&&!(s?s.indexOf(r)>=0:O.matches(r,t));)r=r!==e&&!M(r)&&r.parentNode;r&&n.indexOf(r)<0&&n.push(r)})),i(n)},parents:function(t){for(var e=[],n=this;n.length>0;)n=i.map(n,(function(t){if((t=t.parentNode)&&!M(t)&&e.indexOf(t)<0)return e.push(t),t}));return Z(e,t)},parent:function(t){return Z(o(this.pluck("parentNode")),t)},children:function(t){return Z(this.map((function(){return U(this)})),t)},contents:function(){return this.map((function(){return this.contentDocument||l.call(this.childNodes)}))},siblings:function(t){return Z(this.map((function(t,e){return c.call(U(e.parentNode),(function(t){return t!==e}))})),t)},empty:function(){return this.each((function(){this.innerHTML=""}))},pluck:function(t){return i.map(this,(function(e){return e[t]}))},show:function(){return this.each((function(){"none"==this.style.display&&(this.style.display=""),"none"==getComputedStyle(this,"").getPropertyValue("display")&&(this.style.display=z(this.nodeName))}))},replaceWith:function(t){return this.before(t).remove()},wrap:function(t){var e=P(t);if(this[0]&&!e)var n=i(t).get(0),s=n.parentNode||this.length>1;return this.each((function(r){i(this).wrapAll(e?t.call(this,r):s?n.cloneNode(!0):n)}))},wrapAll:function(t){if(this[0]){var e;for(i(this[0]).before(t=i(t));(e=t.children()).length;)t=e.first();i(t).append(this)}return this},wrapInner:function(t){var e=P(t);return this.each((function(n){var s=i(this),r=s.contents(),o=e?t.call(this,n):t;r.length?r.wrapAll(o):s.append(o)}))},unwrap:function(){return this.parent().each((function(){i(this).replaceWith(i(this).children())})),this},clone:function(){return this.map((function(){return this.cloneNode(!0)}))},hide:function(){return this.css("display","none")},toggle:function(t){return this.each((function(){var n=i(this);(t===e?"none"==n.css("display"):t)?n.show():n.hide()}))},prev:function(t){return i(this.pluck("previousElementSibling")).filter(t||"*")},next:function(t){return i(this.pluck("nextElementSibling")).filter(t||"*")},html:function(t){return 0 in arguments?this.each((function(e){var n=this.innerHTML;i(this).empty().append(X(this,t,e,n))})):0 in this?this[0].innerHTML:null},text:function(t){return 0 in arguments?this.each((function(e){var n=X(this,t,e,this.textContent);this.textContent=null==n?"":""+n})):0 in this?this.pluck("textContent").join(""):null},attr:function(t,i){var s;return"string"!=typeof t||1 in arguments?this.each((function(e){if(1===this.nodeType)if(F(t))for(n in t)G(this,n,t[n]);else G(this,t,X(this,i,e,this.getAttribute(t)))})):0 in this&&1==this[0].nodeType&&null!=(s=this[0].getAttribute(t))?s:e},removeAttr:function(t){return this.each((function(){1===this.nodeType&&t.split(" ").forEach((function(t){G(this,t)}),this)}))},prop:function(t,e){return t=N[t]||t,1 in arguments?this.each((function(n){this[t]=X(this,e,n,this[t])})):this[0]&&this[0][t]},removeProp:function(t){return t=N[t]||t,this.each((function(){delete this[t]}))},data:function(t,n){var i="data-"+t.replace(w,"-$1").toLowerCase(),s=1 in arguments?this.attr(i,n):this.attr(i);return null!==s?Y(s):e},val:function(t){return 0 in arguments?(null==t&&(t=""),this.each((function(e){this.value=X(this,t,e,this.value)}))):this[0]&&(this[0].multiple?i(this[0]).find("option").filter((function(){return this.selected})).pluck("value"):this[0].value)},offset:function(e){if(e)return this.each((function(t){var n=i(this),s=X(this,e,t,n.offset()),r=n.offsetParent().offset(),o={top:s.top-r.top,left:s.left-r.left};"static"==n.css("position")&&(o.position="relative"),n.css(o)}));if(!this.length)return null;if(h.documentElement!==this[0]&&!i.contains(h.documentElement,this[0]))return{top:0,left:0};var n=this[0].getBoundingClientRect();return{left:n.left+t.pageXOffset,top:n.top+t.pageYOffset,width:Math.round(n.width),height:Math.round(n.height)}},css:function(t,e){if(arguments.length<2){var s=this[0];if("string"==typeof t){if(!s)return;return s.style[r(t)]||getComputedStyle(s,"").getPropertyValue(t)}if(k(t)){if(!s)return;var o={},a=getComputedStyle(s,"");return i.each(t,(function(t,e){o[e]=s.style[r(e)]||a.getPropertyValue(e)})),o}}var u="";if("string"==I(t))e||0===e?u=B(t)+":"+j(t,e):this.each((function(){this.style.removeProperty(B(t))}));else for(n in t)t[n]||0===t[n]?u+=B(n)+":"+j(n,t[n])+";":this.each((function(){this.style.removeProperty(B(n))}));return this.each((function(){this.style.cssText+=";"+u}))},index:function(t){return t?this.indexOf(i(t)[0]):this.parent().children().indexOf(this[0])},hasClass:function(t){return!!t&&a.some.call(this,(function(t){return this.test(J(t))}),K(t))},addClass:function(t){return t?this.each((function(e){if("className"in this){s=[];var n=J(this);X(this,t,e,n).split(/\s+/g).forEach((function(t){i(this).hasClass(t)||s.push(t)}),this),s.length&&J(this,n+(n?" ":"")+s.join(" "))}})):this},removeClass:function(t){return this.each((function(n){if("className"in this){if(t===e)return J(this,"");s=J(this),X(this,t,n,s).split(/\s+/g).forEach((function(t){s=s.replace(K(t)," ")})),J(this,s.trim())}}))},toggleClass:function(t,n){return t?this.each((function(s){var r=i(this);X(this,t,s,J(this)).split(/\s+/g).forEach((function(t){(n===e?!r.hasClass(t):n)?r.addClass(t):r.removeClass(t)}))})):this},scrollTop:function(t){if(this.length){var n="scrollTop"in this[0];return t===e?n?this[0].scrollTop:this[0].pageYOffset:this.each(n?function(){this.scrollTop=t}:function(){this.scrollTo(this.scrollX,t)})}},scrollLeft:function(t){if(this.length){var n="scrollLeft"in this[0];return t===e?n?this[0].scrollLeft:this[0].pageXOffset:this.each(n?function(){this.scrollLeft=t}:function(){this.scrollTo(t,this.scrollY)})}},position:function(){if(this.length){var t=this[0],e=this.offsetParent(),n=this.offset(),s=y.test(e[0].nodeName)?{top:0,left:0}:e.offset();return n.top-=parseFloat(i(t).css("margin-top"))||0,n.left-=parseFloat(i(t).css("margin-left"))||0,s.top+=parseFloat(i(e[0]).css("border-top-width"))||0,s.left+=parseFloat(i(e[0]).css("border-left-width"))||0,{top:n.top-s.top,left:n.left-s.left}}},offsetParent:function(){return this.map((function(){for(var t=this.offsetParent||h.body;t&&!y.test(t.nodeName)&&"static"==i(t).css("position");)t=t.offsetParent;return t}))}},i.fn.detach=i.fn.remove,["width","height"].forEach((function(t){var n=t.replace(/./,(function(t){return t[0].toUpperCase()}));i.fn[t]=function(s){var r,o=this[0];return s===e?L(o)?o["inner"+n]:M(o)?o.documentElement["scroll"+n]:(r=this.offset())&&r[t]:this.each((function(e){(o=i(this)).css(t,X(this,s,e,o[t]()))}))}})),C.forEach((function(n,s){var r=s%2;i.fn[n]=function(){var n,o,a=i.map(arguments,(function(t){var s=[];return"array"==(n=I(t))?(t.forEach((function(t){return t.nodeType!==e?s.push(t):i.zepto.isZ(t)?s=s.concat(t.get()):void(s=s.concat(O.fragment(t)))})),s):"object"==n||null==t?t:O.fragment(t)})),u=this.length>1;return a.length<1?this:this.each((function(e,n){o=r?n:n.parentNode,n=0==s?n.nextSibling:1==s?n.firstChild:2==s?n:null;var c=i.contains(h.documentElement,o);a.forEach((function(e){if(u)e=e.cloneNode(!0);else if(!o)return i(e).remove();o.insertBefore(e,n),c&&tt(e,(function(e){if(!(null==e.nodeName||"SCRIPT"!==e.nodeName.toUpperCase()||e.type&&"text/javascript"!==e.type||e.src)){var n=e.ownerDocument?e.ownerDocument.defaultView:t;n.eval.call(n,e.innerHTML)}}))}))}))},i.fn[r?n+"To":"insert"+(s?"Before":"After")]=function(t){return i(t)[n](this),this}})),O.Z.prototype=Q.prototype=i.fn,O.uniq=o,O.deserializeValue=Y,i.zepto=O,i}();return function(e){var n,i=1,s=Array.prototype.slice,r=e.isFunction,o=function(t){return"string"==typeof t},a={},u={},c="onfocusin"in t,l={focus:"focusin",blur:"focusout"},h={mouseenter:"mouseover",mouseleave:"mouseout"};function p(t){return t._zid||(t._zid=i++)}function f(t,e,n,i){if((e=d(e)).ns)var s=g(e.ns);return(a[p(t)]||[]).filter((function(t){return t&&(!e.e||t.e==e.e)&&(!e.ns||s.test(t.ns))&&(!n||p(t.fn)===p(n))&&(!i||t.sel==i)}))}function d(t){var e=(""+t).split(".");return{e:e[0],ns:e.slice(1).sort().join(" ")}}function g(t){return new RegExp("(?:^| )"+t.replace(" "," .* ?")+"(?: |$)")}function m(t,e){return t.del&&!c&&t.e in l||!!e}function v(t){return h[t]||c&&l[t]||t}function y(t,i,s,r,o,u,c){var l=p(t),f=a[l]||(a[l]=[]);i.split(/\s/).forEach((function(i){if("ready"==i)return e(document).ready(s);var a=d(i);a.fn=s,a.sel=o,a.e in h&&(s=function(t){var n=t.relatedTarget;if(!n||n!==this&&!e.contains(this,n))return a.fn.apply(this,arguments)}),a.del=u;var l=u||s;a.proxy=function(e){if(!(e=S(e)).isImmediatePropagationStopped()){try{var i=Object.getOwnPropertyDescriptor(e,"data");i&&!i.writable||(e.data=r)}catch(e){}var s=l.apply(t,e._args==n?[e]:[e].concat(e._args));return!1===s&&(e.preventDefault(),e.stopPropagation()),s}},a.i=f.length,f.push(a),"addEventListener"in t&&t.addEventListener(v(a.e),a.proxy,m(a,c))}))}function w(t,e,n,i,s){var r=p(t);(e||"").split(/\s/).forEach((function(e){f(t,e,n,i).forEach((function(e){delete a[r][e.i],"removeEventListener"in t&&t.removeEventListener(v(e.e),e.proxy,m(e,s))}))}))}u.click=u.mousedown=u.mouseup=u.mousemove="MouseEvents",e.event={add:y,remove:w},e.proxy=function(t,n){var i=2 in arguments&&s.call(arguments,2);if(r(t)){var a=function(){return t.apply(n,i?i.concat(s.call(arguments)):arguments)};return a._zid=p(t),a}if(o(n))return i?(i.unshift(t[n],t),e.proxy.apply(null,i)):e.proxy(t[n],t);throw new TypeError("expected function")},e.fn.bind=function(t,e,n){return this.on(t,e,n)},e.fn.unbind=function(t,e){return this.off(t,e)},e.fn.one=function(t,e,n,i){return this.on(t,e,n,i,1)};var b=function(){return!0},C=function(){return!1},x=/^([A-Z]|returnValue$|layer[XY]$|webkitMovement[XY]$)/,_={preventDefault:"isDefaultPrevented",stopImmediatePropagation:"isImmediatePropagationStopped",stopPropagation:"isPropagationStopped"};function S(t,i){if(i||!t.isDefaultPrevented){i||(i=t),e.each(_,(function(e,n){var s=i[e];t[e]=function(){return this[n]=b,s&&s.apply(i,arguments)},t[n]=C}));try{t.timeStamp||(t.timeStamp=Date.now())}catch(s){}(i.defaultPrevented!==n?i.defaultPrevented:"returnValue"in i?!1===i.returnValue:i.getPreventDefault&&i.getPreventDefault())&&(t.isDefaultPrevented=b)}return t}function E(t){var e,i={originalEvent:t};for(e in t)x.test(e)||t[e]===n||(i[e]=t[e]);return S(i,t)}e.fn.delegate=function(t,e,n){return this.on(e,t,n)},e.fn.undelegate=function(t,e,n){return this.off(e,t,n)},e.fn.live=function(t,n){return e(document.body).delegate(this.selector,t,n),this},e.fn.die=function(t,n){return e(document.body).undelegate(this.selector,t,n),this},e.fn.on=function(t,i,a,u,c){var l,h,p=this;return t&&!o(t)?(e.each(t,(function(t,e){p.on(t,i,a,e,c)})),p):(o(i)||r(u)||!1===u||(u=a,a=i,i=n),u!==n&&!1!==a||(u=a,a=n),!1===u&&(u=C),p.each((function(n,r){c&&(l=function(t){return w(r,t.type,u),u.apply(this,arguments)}),i&&(h=function(t){var n,o=e(t.target).closest(i,r).get(0);if(o&&o!==r)return n=e.extend(E(t),{currentTarget:o,liveFired:r}),(l||u).apply(o,[n].concat(s.call(arguments,1)))}),y(r,t,u,a,i,h||l)})))},e.fn.off=function(t,i,s){var a=this;return t&&!o(t)?(e.each(t,(function(t,e){a.off(t,i,e)})),a):(o(i)||r(s)||!1===s||(s=i,i=n),!1===s&&(s=C),a.each((function(){w(this,t,s,i)})))},e.fn.trigger=function(t,n){return(t=o(t)||e.isPlainObject(t)?e.Event(t):S(t))._args=n,this.each((function(){t.type in l&&"function"==typeof this[t.type]?this[t.type]():"dispatchEvent"in this?this.dispatchEvent(t):e(this).triggerHandler(t,n)}))},e.fn.triggerHandler=function(t,n){var i,s;return this.each((function(r,a){(i=E(o(t)?e.Event(t):t))._args=n,i.target=a,e.each(f(a,t.type||t),(function(t,e){if(s=e.proxy(i),i.isImmediatePropagationStopped())return!1}))})),s},"focusin focusout focus blur load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select keydown keypress keyup error".split(" ").forEach((function(t){e.fn[t]=function(e){return 0 in arguments?this.bind(t,e):this.trigger(t)}})),e.Event=function(t,e){o(t)||(t=(e=t).type);var n=document.createEvent(u[t]||"Events"),i=!0;if(e)for(var s in e)"bubbles"==s?i=!!e[s]:n[s]=e[s];return n.initEvent(t,i,!0),S(n)}}(i),n=[],i.fn.remove=function(){return this.each((function(){this.parentNode&&("IMG"===this.tagName&&(n.push(this),this.src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=",e&&clearTimeout(e),e=setTimeout((function(){n=[]}),6e4)),this.parentNode.removeChild(this))}))},function(t){var e={},n=t.fn.data,i=t.camelCase,s=t.expando="Zepto"+ +new Date,r=[];function o(r,o){var u=r[s],c=u&&e[u];if(void 0===o)return c||a(r);if(c){if(o in c)return c[o];var l=i(o);if(l in c)return c[l]}return n.call(t(r),o)}function a(n,r,o){var a=n[s]||(n[s]=++t.uuid),c=e[a]||(e[a]=u(n));return void 0!==r&&(c[i(r)]=o),c}function u(e){var n={};return t.each(e.attributes||r,(function(e,s){0==s.name.indexOf("data-")&&(n[i(s.name.replace("data-",""))]=t.zepto.deserializeValue(s.value))})),n}t.fn.data=function(e,n){return void 0===n?t.isPlainObject(e)?this.each((function(n,i){t.each(e,(function(t,e){a(i,t,e)}))})):0 in this?o(this[0],e):void 0:this.each((function(){a(this,e,n)}))},t.data=function(e,n,i){return t(e).data(n,i)},t.hasData=function(n){var i=n[s],r=i&&e[i];return!!r&&!t.isEmptyObject(r)},t.fn.removeData=function(n){return"string"==typeof n&&(n=n.split(/\s+/)),this.each((function(){var r=this[s],o=r&&e[r];o&&t.each(n||o,(function(t){delete o[n?i(this):t]}))}))},["remove","empty"].forEach((function(e){var n=t.fn[e];t.fn[e]=function(){var t=this.find("*");return"remove"===e&&(t=t.add(this)),t.removeData(),n.call(this)}}))}(i),i}(e)},8820:t=>{"use strict";var e={}.hasOwnProperty,n=/[ -,\.\/:-@\[-\^`\{-~]/,i=/[ -,\.\/:-@\[\]\^`\{-~]/,s=/(^|\\+)?(\\[A-F0-9]{1,6})\x20(?![a-fA-F0-9\x20])/g,r=function t(r,o){"single"!=(o=function(t,n){if(!t)return n;var i={};for(var s in n)i[s]=e.call(t,s)?t[s]:n[s];return i}(o,t.options)).quotes&&"double"!=o.quotes&&(o.quotes="single");for(var a="double"==o.quotes?'"':"'",u=o.isIdentifier,c=r.charAt(0),l="",h=0,p=r.length;h126){if(d>=55296&&d<=56319&&h{"use strict";var i,s,r,o=[n(5525),n(4785),n(8291),n(2709),n(2506),n(9176)],a=-1,u=[],c=!1;function l(){i&&s&&(i=!1,s.length?u=s.concat(u):a=-1,u.length&&h())}function h(){if(!i){c=!1,i=!0;for(var t=u.length,e=setTimeout(l);t;){for(s=u,u=[];s&&++a1)for(var n=1;n{"use strict";e.test=function(){return!n.g.setImmediate&&void 0!==n.g.MessageChannel},e.install=function(t){var e=new n.g.MessageChannel;return e.port1.onmessage=t,function(){e.port2.postMessage(0)}}},8291:(t,e,n)=>{"use strict";var i=n.g.MutationObserver||n.g.WebKitMutationObserver;e.test=function(){return i},e.install=function(t){var e=0,s=new i(t),r=n.g.document.createTextNode("");return s.observe(r,{characterData:!0}),function(){r.data=e=++e%2}}},4785:(t,e,n)=>{"use strict";e.test=function(){return"function"==typeof n.g.queueMicrotask},e.install=function(t){return function(){n.g.queueMicrotask(t)}}},2506:(t,e,n)=>{"use strict";e.test=function(){return"document"in n.g&&"onreadystatechange"in n.g.document.createElement("script")},e.install=function(t){return function(){var e=n.g.document.createElement("script");return e.onreadystatechange=function(){t(),e.onreadystatechange=null,e.parentNode.removeChild(e),e=null},n.g.document.documentElement.appendChild(e),t}}},9176:(t,e)=>{"use strict";e.test=function(){return!0},e.install=function(t){return function(){setTimeout(t,0)}}}}]); \ No newline at end of file +/*! For license information please see 8443.4a4044bb.js.LICENSE.txt */ +(self.webpackChunkareweloongyet=self.webpackChunkareweloongyet||[]).push([[8443],{8443:(t,e,n)=>{"use strict";t.exports=n(295)},1228:(t,e,n)=>{"use strict";var i=n(2856),s={wrapper:{position:"relative",display:"inline-block"},hint:{position:"absolute",top:"0",left:"0",borderColor:"transparent",boxShadow:"none",opacity:"1"},input:{position:"relative",verticalAlign:"top",backgroundColor:"transparent"},inputWithNoHint:{position:"relative",verticalAlign:"top"},dropdown:{position:"absolute",top:"100%",left:"0",zIndex:"100",display:"none"},suggestions:{display:"block"},suggestion:{whiteSpace:"nowrap",cursor:"pointer"},suggestionChild:{whiteSpace:"normal"},ltr:{left:"0",right:"auto"},rtl:{left:"auto",right:"0"},defaultClasses:{root:"algolia-autocomplete",prefix:"aa",noPrefix:!1,dropdownMenu:"dropdown-menu",input:"input",hint:"hint",suggestions:"suggestions",suggestion:"suggestion",cursor:"cursor",dataset:"dataset",empty:"empty"},appendTo:{wrapper:{position:"absolute",zIndex:"100",display:"none"},input:{},inputWithNoHint:{},dropdown:{display:"block"}}};i.isMsie()&&i.mixin(s.input,{backgroundImage:"url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)"}),i.isMsie()&&i.isMsie()<=7&&i.mixin(s.input,{marginTop:"-1px"}),t.exports=s},2334:(t,e,n)=>{"use strict";var i="aaDataset",s="aaValue",r="aaDatum",o=n(2856),a=n(4910),u=n(3561),c=n(1228),l=n(3109);function h(t){var e;(t=t||{}).templates=t.templates||{},t.source||o.error("missing source"),t.name&&(e=t.name,!/^[_a-zA-Z0-9-]+$/.test(e))&&o.error("invalid dataset name: "+t.name),this.query=null,this._isEmpty=!0,this.highlight=!!t.highlight,this.name=void 0===t.name||null===t.name?o.getUniqueId():t.name,this.source=t.source,this.displayFn=function(t){return t=t||"value",o.isFunction(t)?t:e;function e(e){return e[t]}}(t.display||t.displayKey),this.debounce=t.debounce,this.cache=!1!==t.cache,this.templates=function(t,e){return{empty:t.empty&&o.templatify(t.empty),header:t.header&&o.templatify(t.header),footer:t.footer&&o.templatify(t.footer),suggestion:t.suggestion||n};function n(t){return"

"+e(t)+"

"}}(t.templates,this.displayFn),this.css=o.mixin({},c,t.appendTo?c.appendTo:{}),this.cssClasses=t.cssClasses=o.mixin({},c.defaultClasses,t.cssClasses||{}),this.cssClasses.prefix=t.cssClasses.formattedPrefix||o.formatPrefix(this.cssClasses.prefix,this.cssClasses.noPrefix);var n=o.className(this.cssClasses.prefix,this.cssClasses.dataset);this.$el=t.$menu&&t.$menu.find(n+"-"+this.name).length>0?a.element(t.$menu.find(n+"-"+this.name)[0]):a.element(u.dataset.replace("%CLASS%",this.name).replace("%PREFIX%",this.cssClasses.prefix).replace("%DATASET%",this.cssClasses.dataset)),this.$menu=t.$menu,this.clearCachedSuggestions()}h.extractDatasetName=function(t){return a.element(t).data(i)},h.extractValue=function(t){return a.element(t).data(s)},h.extractDatum=function(t){var e=a.element(t).data(r);return"string"==typeof e&&(e=JSON.parse(e)),e},o.mixin(h.prototype,l,{_render:function(t,e){if(this.$el){var n,c=this,l=[].slice.call(arguments,2);if(this.$el.empty(),n=e&&e.length,this._isEmpty=!n,!n&&this.templates.empty)this.$el.html(function(){var e=[].slice.call(arguments,0);return e=[{query:t,isEmpty:!0}].concat(e),c.templates.empty.apply(this,e)}.apply(this,l)).prepend(c.templates.header?h.apply(this,l):null).append(c.templates.footer?p.apply(this,l):null);else if(n)this.$el.html(function(){var t,n,l=[].slice.call(arguments,0),h=this,p=u.suggestions.replace("%PREFIX%",this.cssClasses.prefix).replace("%SUGGESTIONS%",this.cssClasses.suggestions);return t=a.element(p).css(this.css.suggestions),n=o.map(e,f),t.append.apply(t,n),t;function f(t){var e,n=u.suggestion.replace("%PREFIX%",h.cssClasses.prefix).replace("%SUGGESTION%",h.cssClasses.suggestion);return(e=a.element(n).attr({role:"option",id:["option",Math.floor(1e8*Math.random())].join("-")}).append(c.templates.suggestion.apply(this,[t].concat(l)))).data(i,c.name),e.data(s,c.displayFn(t)||void 0),e.data(r,JSON.stringify(t)),e.children().each((function(){a.element(this).css(h.css.suggestionChild)})),e}}.apply(this,l)).prepend(c.templates.header?h.apply(this,l):null).append(c.templates.footer?p.apply(this,l):null);else if(e&&!Array.isArray(e))throw new TypeError("suggestions must be an array");this.$menu&&this.$menu.addClass(this.cssClasses.prefix+(n?"with":"without")+"-"+this.name).removeClass(this.cssClasses.prefix+(n?"without":"with")+"-"+this.name),this.trigger("rendered",t)}function h(){var e=[].slice.call(arguments,0);return e=[{query:t,isEmpty:!n}].concat(e),c.templates.header.apply(this,e)}function p(){var e=[].slice.call(arguments,0);return e=[{query:t,isEmpty:!n}].concat(e),c.templates.footer.apply(this,e)}},getRoot:function(){return this.$el},update:function(t){function e(e){if(!this.canceled&&t===this.query){var n=[].slice.call(arguments,1);this.cacheSuggestions(t,e,n),this._render.apply(this,[t,e].concat(n))}}if(this.query=t,this.canceled=!1,this.shouldFetchFromCache(t))e.apply(this,[this.cachedSuggestions].concat(this.cachedRenderExtraArgs));else{var n=this,i=function(){n.canceled||n.source(t,e.bind(n))};if(this.debounce){clearTimeout(this.debounceTimeout),this.debounceTimeout=setTimeout((function(){n.debounceTimeout=null,i()}),this.debounce)}else i()}},cacheSuggestions:function(t,e,n){this.cachedQuery=t,this.cachedSuggestions=e,this.cachedRenderExtraArgs=n},shouldFetchFromCache:function(t){return this.cache&&this.cachedQuery===t&&this.cachedSuggestions&&this.cachedSuggestions.length},clearCachedSuggestions:function(){delete this.cachedQuery,delete this.cachedSuggestions,delete this.cachedRenderExtraArgs},cancel:function(){this.canceled=!0},clear:function(){this.$el&&(this.cancel(),this.$el.empty(),this.trigger("rendered",""))},isEmpty:function(){return this._isEmpty},destroy:function(){this.clearCachedSuggestions(),this.$el=null}}),t.exports=h},3354:(t,e,n)=>{"use strict";var i=n(2856),s=n(4910),r=n(3109),o=n(2334),a=n(1228);function u(t){var e,n,r,o=this;(t=t||{}).menu||i.error("menu is required"),i.isArray(t.datasets)||i.isObject(t.datasets)||i.error("1 or more datasets required"),t.datasets||i.error("datasets is required"),this.isOpen=!1,this.isEmpty=!0,this.minLength=t.minLength||0,this.templates={},this.appendTo=t.appendTo||!1,this.css=i.mixin({},a,t.appendTo?a.appendTo:{}),this.cssClasses=t.cssClasses=i.mixin({},a.defaultClasses,t.cssClasses||{}),this.cssClasses.prefix=t.cssClasses.formattedPrefix||i.formatPrefix(this.cssClasses.prefix,this.cssClasses.noPrefix),e=i.bind(this._onSuggestionClick,this),n=i.bind(this._onSuggestionMouseEnter,this),r=i.bind(this._onSuggestionMouseLeave,this);var c=i.className(this.cssClasses.prefix,this.cssClasses.suggestion);this.$menu=s.element(t.menu).on("mouseenter.aa",c,n).on("mouseleave.aa",c,r).on("click.aa",c,e),this.$container=t.appendTo?t.wrapper:this.$menu,t.templates&&t.templates.header&&(this.templates.header=i.templatify(t.templates.header),this.$menu.prepend(this.templates.header())),t.templates&&t.templates.empty&&(this.templates.empty=i.templatify(t.templates.empty),this.$empty=s.element('
'),this.$menu.append(this.$empty),this.$empty.hide()),this.datasets=i.map(t.datasets,(function(e){return function(t,e,n){return new u.Dataset(i.mixin({$menu:t,cssClasses:n},e))}(o.$menu,e,t.cssClasses)})),i.each(this.datasets,(function(t){var e=t.getRoot();e&&0===e.parent().length&&o.$menu.append(e),t.onSync("rendered",o._onRendered,o)})),t.templates&&t.templates.footer&&(this.templates.footer=i.templatify(t.templates.footer),this.$menu.append(this.templates.footer()));var l=this;s.element(window).resize((function(){l._redraw()}))}i.mixin(u.prototype,r,{_onSuggestionClick:function(t){this.trigger("suggestionClicked",s.element(t.currentTarget))},_onSuggestionMouseEnter:function(t){var e=s.element(t.currentTarget);if(!e.hasClass(i.className(this.cssClasses.prefix,this.cssClasses.cursor,!0))){this._removeCursor();var n=this;setTimeout((function(){n._setCursor(e,!1)}),0)}},_onSuggestionMouseLeave:function(t){if(t.relatedTarget&&s.element(t.relatedTarget).closest("."+i.className(this.cssClasses.prefix,this.cssClasses.cursor,!0)).length>0)return;this._removeCursor(),this.trigger("cursorRemoved")},_onRendered:function(t,e){if(this.isEmpty=i.every(this.datasets,(function(t){return t.isEmpty()})),this.isEmpty)if(e.length>=this.minLength&&this.trigger("empty"),this.$empty)if(e.length=this.minLength?this._show():this._hide());this.trigger("datasetRendered")},_hide:function(){this.$container.hide()},_show:function(){this.$container.css("display","block"),this._redraw(),this.trigger("shown")},_redraw:function(){this.isOpen&&this.appendTo&&this.trigger("redrawn")},_getSuggestions:function(){return this.$menu.find(i.className(this.cssClasses.prefix,this.cssClasses.suggestion))},_getCursor:function(){return this.$menu.find(i.className(this.cssClasses.prefix,this.cssClasses.cursor)).first()},_setCursor:function(t,e){t.first().addClass(i.className(this.cssClasses.prefix,this.cssClasses.cursor,!0)).attr("aria-selected","true"),this.trigger("cursorMoved",e)},_removeCursor:function(){this._getCursor().removeClass(i.className(this.cssClasses.prefix,this.cssClasses.cursor,!0)).removeAttr("aria-selected")},_moveCursor:function(t){var e,n,i,s;this.isOpen&&(n=this._getCursor(),e=this._getSuggestions(),this._removeCursor(),-1!==(i=((i=e.index(n)+t)+1)%(e.length+1)-1)?(i<-1&&(i=e.length-1),this._setCursor(s=e.eq(i),!0),this._ensureVisible(s)):this.trigger("cursorRemoved"))},_ensureVisible:function(t){var e,n,i,s;n=(e=t.position().top)+t.height()+parseInt(t.css("margin-top"),10)+parseInt(t.css("margin-bottom"),10),i=this.$menu.scrollTop(),s=this.$menu.height()+parseInt(this.$menu.css("padding-top"),10)+parseInt(this.$menu.css("padding-bottom"),10),e<0?this.$menu.scrollTop(i+e):s{"use strict";var i=n(2856),s=n(4910);function r(t){t&&t.el||i.error("EventBus initialized without el"),this.$el=s.element(t.el)}i.mixin(r.prototype,{trigger:function(t,e,n,s){var r=i.Event("autocomplete:"+t);return this.$el.trigger(r,[e,n,s]),r}}),t.exports=r},3109:(t,e,n)=>{"use strict";var i=n(624),s=/\s+/;function r(t,e,n,i){var r;if(!n)return this;for(e=e.split(s),n=i?function(t,e){return t.bind?t.bind(e):function(){t.apply(e,[].slice.call(arguments,0))}}(n,i):n,this._callbacks=this._callbacks||{};r=e.shift();)this._callbacks[r]=this._callbacks[r]||{sync:[],async:[]},this._callbacks[r][t].push(n);return this}function o(t,e,n){return function(){for(var i,s=0,r=t.length;!i&&s{"use strict";t.exports={wrapper:'',dropdown:'',dataset:'
',suggestions:'',suggestion:'
'}},2534:(t,e,n)=>{"use strict";var i;i={9:"tab",27:"esc",37:"left",39:"right",13:"enter",38:"up",40:"down"};var s=n(2856),r=n(4910),o=n(3109);function a(t){var e,n,o,a,u,c=this;(t=t||{}).input||s.error("input is missing"),e=s.bind(this._onBlur,this),n=s.bind(this._onFocus,this),o=s.bind(this._onKeydown,this),a=s.bind(this._onInput,this),this.$hint=r.element(t.hint),this.$input=r.element(t.input).on("blur.aa",e).on("focus.aa",n).on("keydown.aa",o),0===this.$hint.length&&(this.setHint=this.getHint=this.clearHint=this.clearHintIfInvalid=s.noop),s.isMsie()?this.$input.on("keydown.aa keypress.aa cut.aa paste.aa",(function(t){i[t.which||t.keyCode]||s.defer(s.bind(c._onInput,c,t))})):this.$input.on("input.aa",a),this.query=this.$input.val(),this.$overflowHelper=(u=this.$input,r.element('').css({position:"absolute",visibility:"hidden",whiteSpace:"pre",fontFamily:u.css("font-family"),fontSize:u.css("font-size"),fontStyle:u.css("font-style"),fontVariant:u.css("font-variant"),fontWeight:u.css("font-weight"),wordSpacing:u.css("word-spacing"),letterSpacing:u.css("letter-spacing"),textIndent:u.css("text-indent"),textRendering:u.css("text-rendering"),textTransform:u.css("text-transform")}).insertAfter(u))}function u(t){return t.altKey||t.ctrlKey||t.metaKey||t.shiftKey}a.normalizeQuery=function(t){return(t||"").replace(/^\s*/g,"").replace(/\s{2,}/g," ")},s.mixin(a.prototype,o,{_onBlur:function(){this.resetInputValue(),this.$input.removeAttr("aria-activedescendant"),this.trigger("blurred")},_onFocus:function(){this.trigger("focused")},_onKeydown:function(t){var e=i[t.which||t.keyCode];this._managePreventDefault(e,t),e&&this._shouldTrigger(e,t)&&this.trigger(e+"Keyed",t)},_onInput:function(){this._checkInputValue()},_managePreventDefault:function(t,e){var n,i,s;switch(t){case"tab":i=this.getHint(),s=this.getInputValue(),n=i&&i!==s&&!u(e);break;case"up":case"down":n=!u(e);break;default:n=!1}n&&e.preventDefault()},_shouldTrigger:function(t,e){var n;if("tab"===t)n=!u(e);else n=!0;return n},_checkInputValue:function(){var t,e,n,i,s;t=this.getInputValue(),i=t,s=this.query,n=!(!(e=a.normalizeQuery(i)===a.normalizeQuery(s))||!this.query)&&this.query.length!==t.length,this.query=t,e?n&&this.trigger("whitespaceChanged",this.query):this.trigger("queryChanged",this.query)},focus:function(){this.$input.focus()},blur:function(){this.$input.blur()},getQuery:function(){return this.query},setQuery:function(t){this.query=t},getInputValue:function(){return this.$input.val()},setInputValue:function(t,e){void 0===t&&(t=this.query),this.$input.val(t),e?this.clearHint():this._checkInputValue()},expand:function(){this.$input.attr("aria-expanded","true")},collapse:function(){this.$input.attr("aria-expanded","false")},setActiveDescendant:function(t){this.$input.attr("aria-activedescendant",t)},removeActiveDescendant:function(){this.$input.removeAttr("aria-activedescendant")},resetInputValue:function(){this.setInputValue(this.query,!0)},getHint:function(){return this.$hint.val()},setHint:function(t){this.$hint.val(t)},clearHint:function(){this.setHint("")},clearHintIfInvalid:function(){var t,e,n;n=(t=this.getInputValue())!==(e=this.getHint())&&0===e.indexOf(t),""!==t&&n&&!this.hasOverflow()||this.clearHint()},getLanguageDirection:function(){return(this.$input.css("direction")||"ltr").toLowerCase()},hasOverflow:function(){var t=this.$input.width()-2;return this.$overflowHelper.text(this.getInputValue()),this.$overflowHelper.width()>=t},isCursorAtEnd:function(){var t,e,n;return t=this.$input.val().length,e=this.$input[0].selectionStart,s.isNumber(e)?e===t:!document.selection||((n=document.selection.createRange()).moveStart("character",-t),t===n.text.length)},destroy:function(){this.$hint.off(".aa"),this.$input.off(".aa"),this.$hint=this.$input=this.$overflowHelper=null}}),t.exports=a},6549:(t,e,n)=>{"use strict";var i="aaAttrs",s=n(2856),r=n(4910),o=n(50),a=n(2534),u=n(3354),c=n(3561),l=n(1228);function h(t){var e,n;if((t=t||{}).input||s.error("missing input"),this.isActivated=!1,this.debug=!!t.debug,this.autoselect=!!t.autoselect,this.autoselectOnBlur=!!t.autoselectOnBlur,this.openOnFocus=!!t.openOnFocus,this.minLength=s.isNumber(t.minLength)?t.minLength:1,this.autoWidth=void 0===t.autoWidth||!!t.autoWidth,this.clearOnSelected=!!t.clearOnSelected,this.tabAutocomplete=void 0===t.tabAutocomplete||!!t.tabAutocomplete,t.hint=!!t.hint,t.hint&&t.appendTo)throw new Error("[autocomplete.js] hint and appendTo options can't be used at the same time");this.css=t.css=s.mixin({},l,t.appendTo?l.appendTo:{}),this.cssClasses=t.cssClasses=s.mixin({},l.defaultClasses,t.cssClasses||{}),this.cssClasses.prefix=t.cssClasses.formattedPrefix=s.formatPrefix(this.cssClasses.prefix,this.cssClasses.noPrefix),this.listboxId=t.listboxId=[this.cssClasses.root,"listbox",s.getUniqueId()].join("-");var a=function(t){var e,n,o,a;e=r.element(t.input),n=r.element(c.wrapper.replace("%ROOT%",t.cssClasses.root)).css(t.css.wrapper),t.appendTo||"block"!==e.css("display")||"table"!==e.parent().css("display")||n.css("display","table-cell");var u=c.dropdown.replace("%PREFIX%",t.cssClasses.prefix).replace("%DROPDOWN_MENU%",t.cssClasses.dropdownMenu);o=r.element(u).css(t.css.dropdown).attr({role:"listbox",id:t.listboxId}),t.templates&&t.templates.dropdownMenu&&o.html(s.templatify(t.templates.dropdownMenu)());a=e.clone().css(t.css.hint).css(function(t){return{backgroundAttachment:t.css("background-attachment"),backgroundClip:t.css("background-clip"),backgroundColor:t.css("background-color"),backgroundImage:t.css("background-image"),backgroundOrigin:t.css("background-origin"),backgroundPosition:t.css("background-position"),backgroundRepeat:t.css("background-repeat"),backgroundSize:t.css("background-size")}}(e)),a.val("").addClass(s.className(t.cssClasses.prefix,t.cssClasses.hint,!0)).removeAttr("id name placeholder required").prop("readonly",!0).attr({"aria-hidden":"true",autocomplete:"off",spellcheck:"false",tabindex:-1}),a.removeData&&a.removeData();e.data(i,{"aria-autocomplete":e.attr("aria-autocomplete"),"aria-expanded":e.attr("aria-expanded"),"aria-owns":e.attr("aria-owns"),autocomplete:e.attr("autocomplete"),dir:e.attr("dir"),role:e.attr("role"),spellcheck:e.attr("spellcheck"),style:e.attr("style"),type:e.attr("type")}),e.addClass(s.className(t.cssClasses.prefix,t.cssClasses.input,!0)).attr({autocomplete:"off",spellcheck:!1,role:"combobox","aria-autocomplete":t.datasets&&t.datasets[0]&&t.datasets[0].displayKey?"both":"list","aria-expanded":"false","aria-label":t.ariaLabel,"aria-owns":t.listboxId}).css(t.hint?t.css.input:t.css.inputWithNoHint);try{e.attr("dir")||e.attr("dir","auto")}catch(l){}return n=t.appendTo?n.appendTo(r.element(t.appendTo).eq(0)).eq(0):e.wrap(n).parent(),n.prepend(t.hint?a:null).append(o),{wrapper:n,input:e,hint:a,menu:o}}(t);this.$node=a.wrapper;var u=this.$input=a.input;e=a.menu,n=a.hint,t.dropdownMenuContainer&&r.element(t.dropdownMenuContainer).css("position","relative").append(e.css("top","0")),u.on("blur.aa",(function(t){var n=document.activeElement;s.isMsie()&&(e[0]===n||e[0].contains(n))&&(t.preventDefault(),t.stopImmediatePropagation(),s.defer((function(){u.focus()})))})),e.on("mousedown.aa",(function(t){t.preventDefault()})),this.eventBus=t.eventBus||new o({el:u}),this.dropdown=new h.Dropdown({appendTo:t.appendTo,wrapper:this.$node,menu:e,datasets:t.datasets,templates:t.templates,cssClasses:t.cssClasses,minLength:this.minLength}).onSync("suggestionClicked",this._onSuggestionClicked,this).onSync("cursorMoved",this._onCursorMoved,this).onSync("cursorRemoved",this._onCursorRemoved,this).onSync("opened",this._onOpened,this).onSync("closed",this._onClosed,this).onSync("shown",this._onShown,this).onSync("empty",this._onEmpty,this).onSync("redrawn",this._onRedrawn,this).onAsync("datasetRendered",this._onDatasetRendered,this),this.input=new h.Input({input:u,hint:n}).onSync("focused",this._onFocused,this).onSync("blurred",this._onBlurred,this).onSync("enterKeyed",this._onEnterKeyed,this).onSync("tabKeyed",this._onTabKeyed,this).onSync("escKeyed",this._onEscKeyed,this).onSync("upKeyed",this._onUpKeyed,this).onSync("downKeyed",this._onDownKeyed,this).onSync("leftKeyed",this._onLeftKeyed,this).onSync("rightKeyed",this._onRightKeyed,this).onSync("queryChanged",this._onQueryChanged,this).onSync("whitespaceChanged",this._onWhitespaceChanged,this),this._bindKeyboardShortcuts(t),this._setLanguageDirection()}s.mixin(h.prototype,{_bindKeyboardShortcuts:function(t){if(t.keyboardShortcuts){var e=this.$input,n=[];s.each(t.keyboardShortcuts,(function(t){"string"==typeof t&&(t=t.toUpperCase().charCodeAt(0)),n.push(t)})),r.element(document).keydown((function(t){var i=t.target||t.srcElement,s=i.tagName;if(!i.isContentEditable&&"INPUT"!==s&&"SELECT"!==s&&"TEXTAREA"!==s){var r=t.which||t.keyCode;-1!==n.indexOf(r)&&(e.focus(),t.stopPropagation(),t.preventDefault())}}))}},_onSuggestionClicked:function(t,e){var n;(n=this.dropdown.getDatumForSuggestion(e))&&this._select(n,{selectionMethod:"click"})},_onCursorMoved:function(t,e){var n=this.dropdown.getDatumForCursor(),i=this.dropdown.getCurrentCursor().attr("id");this.input.setActiveDescendant(i),n&&(e&&this.input.setInputValue(n.value,!0),this.eventBus.trigger("cursorchanged",n.raw,n.datasetName))},_onCursorRemoved:function(){this.input.resetInputValue(),this._updateHint(),this.eventBus.trigger("cursorremoved")},_onDatasetRendered:function(){this._updateHint(),this.eventBus.trigger("updated")},_onOpened:function(){this._updateHint(),this.input.expand(),this.eventBus.trigger("opened")},_onEmpty:function(){this.eventBus.trigger("empty")},_onRedrawn:function(){this.$node.css("top","0px"),this.$node.css("left","0px");var t=this.$input[0].getBoundingClientRect();this.autoWidth&&this.$node.css("width",t.width+"px");var e=this.$node[0].getBoundingClientRect(),n=t.bottom-e.top;this.$node.css("top",n+"px");var i=t.left-e.left;this.$node.css("left",i+"px"),this.eventBus.trigger("redrawn")},_onShown:function(){this.eventBus.trigger("shown"),this.autoselect&&this.dropdown.cursorTopSuggestion()},_onClosed:function(){this.input.clearHint(),this.input.removeActiveDescendant(),this.input.collapse(),this.eventBus.trigger("closed")},_onFocused:function(){if(this.isActivated=!0,this.openOnFocus){var t=this.input.getQuery();t.length>=this.minLength?this.dropdown.update(t):this.dropdown.empty(),this.dropdown.open()}},_onBlurred:function(){var t,e;t=this.dropdown.getDatumForCursor(),e=this.dropdown.getDatumForTopSuggestion();var n={selectionMethod:"blur"};this.debug||(this.autoselectOnBlur&&t?this._select(t,n):this.autoselectOnBlur&&e?this._select(e,n):(this.isActivated=!1,this.dropdown.empty(),this.dropdown.close()))},_onEnterKeyed:function(t,e){var n,i;n=this.dropdown.getDatumForCursor(),i=this.dropdown.getDatumForTopSuggestion();var s={selectionMethod:"enterKey"};n?(this._select(n,s),e.preventDefault()):this.autoselect&&i&&(this._select(i,s),e.preventDefault())},_onTabKeyed:function(t,e){if(this.tabAutocomplete){var n;(n=this.dropdown.getDatumForCursor())?(this._select(n,{selectionMethod:"tabKey"}),e.preventDefault()):this._autocomplete(!0)}else this.dropdown.close()},_onEscKeyed:function(){this.dropdown.close(),this.input.resetInputValue()},_onUpKeyed:function(){var t=this.input.getQuery();this.dropdown.isEmpty&&t.length>=this.minLength?this.dropdown.update(t):this.dropdown.moveCursorUp(),this.dropdown.open()},_onDownKeyed:function(){var t=this.input.getQuery();this.dropdown.isEmpty&&t.length>=this.minLength?this.dropdown.update(t):this.dropdown.moveCursorDown(),this.dropdown.open()},_onLeftKeyed:function(){"rtl"===this.dir&&this._autocomplete()},_onRightKeyed:function(){"ltr"===this.dir&&this._autocomplete()},_onQueryChanged:function(t,e){this.input.clearHintIfInvalid(),e.length>=this.minLength?this.dropdown.update(e):this.dropdown.empty(),this.dropdown.open(),this._setLanguageDirection()},_onWhitespaceChanged:function(){this._updateHint(),this.dropdown.open()},_setLanguageDirection:function(){var t=this.input.getLanguageDirection();this.dir!==t&&(this.dir=t,this.$node.css("direction",t),this.dropdown.setLanguageDirection(t))},_updateHint:function(){var t,e,n,i,r;(t=this.dropdown.getDatumForTopSuggestion())&&this.dropdown.isVisible()&&!this.input.hasOverflow()?(e=this.input.getInputValue(),n=a.normalizeQuery(e),i=s.escapeRegExChars(n),(r=new RegExp("^(?:"+i+")(.+$)","i").exec(t.value))?this.input.setHint(e+r[1]):this.input.clearHint()):this.input.clearHint()},_autocomplete:function(t){var e,n,i,s;e=this.input.getHint(),n=this.input.getQuery(),i=t||this.input.isCursorAtEnd(),e&&n!==e&&i&&((s=this.dropdown.getDatumForTopSuggestion())&&this.input.setInputValue(s.value),this.eventBus.trigger("autocompleted",s.raw,s.datasetName))},_select:function(t,e){void 0!==t.value&&this.input.setQuery(t.value),this.clearOnSelected?this.setVal(""):this.input.setInputValue(t.value,!0),this._setLanguageDirection(),!1===this.eventBus.trigger("selected",t.raw,t.datasetName,e).isDefaultPrevented()&&(this.dropdown.close(),s.defer(s.bind(this.dropdown.empty,this.dropdown)))},open:function(){if(!this.isActivated){var t=this.input.getInputValue();t.length>=this.minLength?this.dropdown.update(t):this.dropdown.empty()}this.dropdown.open()},close:function(){this.dropdown.close()},setVal:function(t){t=s.toStr(t),this.isActivated?this.input.setInputValue(t):(this.input.setQuery(t),this.input.setInputValue(t,!0)),this._setLanguageDirection()},getVal:function(){return this.input.getQuery()},destroy:function(){this.input.destroy(),this.dropdown.destroy(),function(t,e){var n=t.find(s.className(e.prefix,e.input));s.each(n.data(i),(function(t,e){void 0===t?n.removeAttr(e):n.attr(e,t)})),n.detach().removeClass(s.className(e.prefix,e.input,!0)).insertAfter(t),n.removeData&&n.removeData(i);t.remove()}(this.$node,this.cssClasses),this.$node=null},getWrapper:function(){return this.dropdown.$container[0]}}),h.Dropdown=u,h.Input=a,h.sources=n(8840),t.exports=h},4910:t=>{"use strict";t.exports={element:null}},6177:t=>{"use strict";t.exports=function(t){var e=t.match(/Algolia for JavaScript \((\d+\.)(\d+\.)(\d+)\)/)||t.match(/Algolia for vanilla JavaScript (\d+\.)(\d+\.)(\d+)/);if(e)return[e[1],e[2],e[3]]}},2856:(t,e,n)=>{"use strict";var i,s=n(8820),r=n(4910);function o(t){return t.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}t.exports={isArray:null,isFunction:null,isObject:null,bind:null,each:null,map:null,mixin:null,isMsie:function(t){if(void 0===t&&(t=navigator.userAgent),/(msie|trident)/i.test(t)){var e=t.match(/(msie |rv:)(\d+(.\d+)?)/i);if(e)return e[2]}return!1},escapeRegExChars:function(t){return t.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")},isNumber:function(t){return"number"==typeof t},toStr:function(t){return null==t?"":t+""},cloneDeep:function(t){var e=this.mixin({},t),n=this;return this.each(e,(function(t,i){t&&(n.isArray(t)?e[i]=[].concat(t):n.isObject(t)&&(e[i]=n.cloneDeep(t)))})),e},error:function(t){throw new Error(t)},every:function(t,e){var n=!0;return t?(this.each(t,(function(i,s){n&&(n=e.call(null,i,s,t)&&n)})),!!n):n},any:function(t,e){var n=!1;return t?(this.each(t,(function(i,s){if(e.call(null,i,s,t))return n=!0,!1})),n):n},getUniqueId:(i=0,function(){return i++}),templatify:function(t){if(this.isFunction(t))return t;var e=r.element(t);return"SCRIPT"===e.prop("tagName")?function(){return e.text()}:function(){return String(t)}},defer:function(t){setTimeout(t,0)},noop:function(){},formatPrefix:function(t,e){return e?"":t+"-"},className:function(t,e,n){return n?t+e:"."+s(t+e,{isIdentifier:!0})},escapeHighlightedString:function(t,e,n){e=e||"";var i=document.createElement("div");i.appendChild(document.createTextNode(e)),n=n||"";var s=document.createElement("div");s.appendChild(document.createTextNode(n));var r=document.createElement("div");return r.appendChild(document.createTextNode(t)),r.innerHTML.replace(RegExp(o(i.innerHTML),"g"),e).replace(RegExp(o(s.innerHTML),"g"),n)}}},9983:(t,e,n)=>{"use strict";var i=n(2856),s=n(533),r=n(6177);var o,a,u=(o=[],a=window.Promise.resolve(),function(t,e){return function(n,s){(function(t,e){return window.Promise.resolve().then((function(){return o.length&&(a=t.search(o),o=[]),a})).then((function(t){if(t)return t.results[e]}))})(t.as,o.push({indexName:t.indexName,query:n,params:e})-1).then((function(t){t&&s(t.hits,t)})).catch((function(t){i.error(t.message)}))}});t.exports=function(t,e){var n=r(t.as._ua);if(n&&n[0]>=3&&n[1]>20){var i="autocomplete.js "+s;-1===t.as._ua.indexOf(i)&&(t.as._ua+="; "+i)}return u(t,e)}},8840:(t,e,n)=>{"use strict";t.exports={hits:n(9983),popularIn:n(4445)}},4445:(t,e,n)=>{"use strict";var i=n(2856),s=n(533),r=n(6177);t.exports=function(t,e,n,o){var a=r(t.as._ua);if(a&&a[0]>=3&&a[1]>20&&((e=e||{}).additionalUA="autocomplete.js "+s),!n.source)return i.error("Missing 'source' key");var u=i.isFunction(n.source)?n.source:function(t){return t[n.source]};if(!n.index)return i.error("Missing 'index' key");var c=n.index;return o=o||{},function(a,l){t.search(a,e,(function(t,a){if(t)i.error(t.message);else{if(a.hits.length>0){var h=a.hits[0],p=i.mixin({hitsPerPage:0},n);delete p.source,delete p.index;var f=r(c.as._ua);return f&&f[0]>=3&&f[1]>20&&(e.additionalUA="autocomplete.js "+s),void c.search(u(h),p,(function(t,e){if(t)i.error(t.message);else{var n=[];if(o.includeAll){var s=o.allTitle||"All departments";n.push(i.mixin({facet:{value:s,count:e.nbHits}},i.cloneDeep(h)))}i.each(e.facets,(function(t,e){i.each(t,(function(t,s){n.push(i.mixin({facet:{facet:e,value:s,count:t}},i.cloneDeep(h)))}))}));for(var r=1;r{"use strict";var i=n(6990);n(4910).element=i;var s=n(2856);s.isArray=i.isArray,s.isFunction=i.isFunction,s.isObject=i.isPlainObject,s.bind=i.proxy,s.each=function(t,e){i.each(t,(function(t,n){return e(n,t)}))},s.map=i.map,s.mixin=i.extend,s.Event=i.Event;var r="aaAutocomplete",o=n(6549),a=n(50);function u(t,e,n,u){n=s.isArray(n)?n:[].slice.call(arguments,2);var c=i(t).each((function(t,s){var c=i(s),l=new a({el:c}),h=u||new o({input:c,eventBus:l,dropdownMenuContainer:e.dropdownMenuContainer,hint:void 0===e.hint||!!e.hint,minLength:e.minLength,autoselect:e.autoselect,autoselectOnBlur:e.autoselectOnBlur,tabAutocomplete:e.tabAutocomplete,openOnFocus:e.openOnFocus,templates:e.templates,debug:e.debug,clearOnSelected:e.clearOnSelected,cssClasses:e.cssClasses,datasets:n,keyboardShortcuts:e.keyboardShortcuts,appendTo:e.appendTo,autoWidth:e.autoWidth,ariaLabel:e.ariaLabel||s.getAttribute("aria-label")});c.data(r,h)}));return c.autocomplete={},s.each(["open","close","getVal","setVal","destroy","getWrapper"],(function(t){c.autocomplete[t]=function(){var e,n=arguments;return c.each((function(s,o){var a=i(o).data(r);e=a[t].apply(a,n)})),e}})),c}u.sources=o.sources,u.escapeHighlightedString=s.escapeHighlightedString;var c="autocomplete"in window,l=window.autocomplete;u.noConflict=function(){return c?window.autocomplete=l:delete window.autocomplete,u},t.exports=u},533:t=>{t.exports="0.38.1"},6990:t=>{var e;e=window,t.exports=function(t){var e,n,i=function(){var e,n,i,s,r,o,a=[],u=a.concat,c=a.filter,l=a.slice,h=t.document,p={},f={},d={"column-count":1,columns:1,"font-weight":1,"line-height":1,opacity:1,"z-index":1,zoom:1},g=/^\s*<(\w+|!)[^>]*>/,m=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,v=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,y=/^(?:body|html)$/i,w=/([A-Z])/g,b=["val","css","html","text","data","width","height","offset"],C=["after","prepend","before","append"],x=h.createElement("table"),_=h.createElement("tr"),S={tr:h.createElement("tbody"),tbody:x,thead:x,tfoot:x,td:_,th:_,"*":h.createElement("div")},E=/complete|loaded|interactive/,A=/^[\w-]*$/,$={},T=$.toString,O={},D=h.createElement("div"),N={tabindex:"tabIndex",readonly:"readOnly",for:"htmlFor",class:"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},k=Array.isArray||function(t){return t instanceof Array};function I(t){return null==t?String(t):$[T.call(t)]||"object"}function P(t){return"function"==I(t)}function L(t){return null!=t&&t==t.window}function M(t){return null!=t&&t.nodeType==t.DOCUMENT_NODE}function F(t){return"object"==I(t)}function R(t){return F(t)&&!L(t)&&Object.getPrototypeOf(t)==Object.prototype}function q(t){var e=!!t&&"length"in t&&t.length,n=i.type(t);return"function"!=n&&!L(t)&&("array"==n||0===e||"number"==typeof e&&e>0&&e-1 in t)}function V(t){return c.call(t,(function(t){return null!=t}))}function H(t){return t.length>0?i.fn.concat.apply([],t):t}function B(t){return t.replace(/::/g,"/").replace(/([A-Z]+)([A-Z][a-z])/g,"$1_$2").replace(/([a-z\d])([A-Z])/g,"$1_$2").replace(/_/g,"-").toLowerCase()}function K(t){return t in f?f[t]:f[t]=new RegExp("(^|\\s)"+t+"(\\s|$)")}function j(t,e){return"number"!=typeof e||d[B(t)]?e:e+"px"}function z(t){var e,n;return p[t]||(e=h.createElement(t),h.body.appendChild(e),n=getComputedStyle(e,"").getPropertyValue("display"),e.parentNode.removeChild(e),"none"==n&&(n="block"),p[t]=n),p[t]}function U(t){return"children"in t?l.call(t.children):i.map(t.childNodes,(function(t){if(1==t.nodeType)return t}))}function Q(t,e){var n,i=t?t.length:0;for(n=0;n")),n===e&&(n=g.test(t)&&RegExp.$1),n in S||(n="*"),(a=S[n]).innerHTML=""+t,r=i.each(l.call(a.childNodes),(function(){a.removeChild(this)}))),R(s)&&(o=i(r),i.each(s,(function(t,e){b.indexOf(t)>-1?o[t](e):o.attr(t,e)}))),r},O.Z=function(t,e){return new Q(t,e)},O.isZ=function(t){return t instanceof O.Z},O.init=function(t,n){var s;if(!t)return O.Z();if("string"==typeof t)if("<"==(t=t.trim())[0]&&g.test(t))s=O.fragment(t,RegExp.$1,n),t=null;else{if(n!==e)return i(n).find(t);s=O.qsa(h,t)}else{if(P(t))return i(h).ready(t);if(O.isZ(t))return t;if(k(t))s=V(t);else if(F(t))s=[t],t=null;else if(g.test(t))s=O.fragment(t.trim(),RegExp.$1,n),t=null;else{if(n!==e)return i(n).find(t);s=O.qsa(h,t)}}return O.Z(s,t)},(i=function(t,e){return O.init(t,e)}).extend=function(t){var e,n=l.call(arguments,1);return"boolean"==typeof t&&(e=t,t=n.shift()),n.forEach((function(n){W(t,n,e)})),t},O.qsa=function(t,e){var n,i="#"==e[0],s=!i&&"."==e[0],r=i||s?e.slice(1):e,o=A.test(r);return t.getElementById&&o&&i?(n=t.getElementById(r))?[n]:[]:1!==t.nodeType&&9!==t.nodeType&&11!==t.nodeType?[]:l.call(o&&!i&&t.getElementsByClassName?s?t.getElementsByClassName(r):t.getElementsByTagName(e):t.querySelectorAll(e))},i.contains=h.documentElement.contains?function(t,e){return t!==e&&t.contains(e)}:function(t,e){for(;e&&(e=e.parentNode);)if(e===t)return!0;return!1},i.type=I,i.isFunction=P,i.isWindow=L,i.isArray=k,i.isPlainObject=R,i.isEmptyObject=function(t){var e;for(e in t)return!1;return!0},i.isNumeric=function(t){var e=Number(t),n=typeof t;return null!=t&&"boolean"!=n&&("string"!=n||t.length)&&!isNaN(e)&&isFinite(e)||!1},i.inArray=function(t,e,n){return a.indexOf.call(e,t,n)},i.camelCase=r,i.trim=function(t){return null==t?"":String.prototype.trim.call(t)},i.uuid=0,i.support={},i.expr={},i.noop=function(){},i.map=function(t,e){var n,i,s,r=[];if(q(t))for(i=0;i=0?t:t+this.length]},toArray:function(){return this.get()},size:function(){return this.length},remove:function(){return this.each((function(){null!=this.parentNode&&this.parentNode.removeChild(this)}))},each:function(t){return a.every.call(this,(function(e,n){return!1!==t.call(e,n,e)})),this},filter:function(t){return P(t)?this.not(this.not(t)):i(c.call(this,(function(e){return O.matches(e,t)})))},add:function(t,e){return i(o(this.concat(i(t,e))))},is:function(t){return this.length>0&&O.matches(this[0],t)},not:function(t){var n=[];if(P(t)&&t.call!==e)this.each((function(e){t.call(this,e)||n.push(this)}));else{var s="string"==typeof t?this.filter(t):q(t)&&P(t.item)?l.call(t):i(t);this.forEach((function(t){s.indexOf(t)<0&&n.push(t)}))}return i(n)},has:function(t){return this.filter((function(){return F(t)?i.contains(this,t):i(this).find(t).size()}))},eq:function(t){return-1===t?this.slice(t):this.slice(t,+t+1)},first:function(){var t=this[0];return t&&!F(t)?t:i(t)},last:function(){var t=this[this.length-1];return t&&!F(t)?t:i(t)},find:function(t){var e=this;return t?"object"==typeof t?i(t).filter((function(){var t=this;return a.some.call(e,(function(e){return i.contains(e,t)}))})):1==this.length?i(O.qsa(this[0],t)):this.map((function(){return O.qsa(this,t)})):i()},closest:function(t,e){var n=[],s="object"==typeof t&&i(t);return this.each((function(i,r){for(;r&&!(s?s.indexOf(r)>=0:O.matches(r,t));)r=r!==e&&!M(r)&&r.parentNode;r&&n.indexOf(r)<0&&n.push(r)})),i(n)},parents:function(t){for(var e=[],n=this;n.length>0;)n=i.map(n,(function(t){if((t=t.parentNode)&&!M(t)&&e.indexOf(t)<0)return e.push(t),t}));return Z(e,t)},parent:function(t){return Z(o(this.pluck("parentNode")),t)},children:function(t){return Z(this.map((function(){return U(this)})),t)},contents:function(){return this.map((function(){return this.contentDocument||l.call(this.childNodes)}))},siblings:function(t){return Z(this.map((function(t,e){return c.call(U(e.parentNode),(function(t){return t!==e}))})),t)},empty:function(){return this.each((function(){this.innerHTML=""}))},pluck:function(t){return i.map(this,(function(e){return e[t]}))},show:function(){return this.each((function(){"none"==this.style.display&&(this.style.display=""),"none"==getComputedStyle(this,"").getPropertyValue("display")&&(this.style.display=z(this.nodeName))}))},replaceWith:function(t){return this.before(t).remove()},wrap:function(t){var e=P(t);if(this[0]&&!e)var n=i(t).get(0),s=n.parentNode||this.length>1;return this.each((function(r){i(this).wrapAll(e?t.call(this,r):s?n.cloneNode(!0):n)}))},wrapAll:function(t){if(this[0]){var e;for(i(this[0]).before(t=i(t));(e=t.children()).length;)t=e.first();i(t).append(this)}return this},wrapInner:function(t){var e=P(t);return this.each((function(n){var s=i(this),r=s.contents(),o=e?t.call(this,n):t;r.length?r.wrapAll(o):s.append(o)}))},unwrap:function(){return this.parent().each((function(){i(this).replaceWith(i(this).children())})),this},clone:function(){return this.map((function(){return this.cloneNode(!0)}))},hide:function(){return this.css("display","none")},toggle:function(t){return this.each((function(){var n=i(this);(t===e?"none"==n.css("display"):t)?n.show():n.hide()}))},prev:function(t){return i(this.pluck("previousElementSibling")).filter(t||"*")},next:function(t){return i(this.pluck("nextElementSibling")).filter(t||"*")},html:function(t){return 0 in arguments?this.each((function(e){var n=this.innerHTML;i(this).empty().append(X(this,t,e,n))})):0 in this?this[0].innerHTML:null},text:function(t){return 0 in arguments?this.each((function(e){var n=X(this,t,e,this.textContent);this.textContent=null==n?"":""+n})):0 in this?this.pluck("textContent").join(""):null},attr:function(t,i){var s;return"string"!=typeof t||1 in arguments?this.each((function(e){if(1===this.nodeType)if(F(t))for(n in t)G(this,n,t[n]);else G(this,t,X(this,i,e,this.getAttribute(t)))})):0 in this&&1==this[0].nodeType&&null!=(s=this[0].getAttribute(t))?s:e},removeAttr:function(t){return this.each((function(){1===this.nodeType&&t.split(" ").forEach((function(t){G(this,t)}),this)}))},prop:function(t,e){return t=N[t]||t,1 in arguments?this.each((function(n){this[t]=X(this,e,n,this[t])})):this[0]&&this[0][t]},removeProp:function(t){return t=N[t]||t,this.each((function(){delete this[t]}))},data:function(t,n){var i="data-"+t.replace(w,"-$1").toLowerCase(),s=1 in arguments?this.attr(i,n):this.attr(i);return null!==s?Y(s):e},val:function(t){return 0 in arguments?(null==t&&(t=""),this.each((function(e){this.value=X(this,t,e,this.value)}))):this[0]&&(this[0].multiple?i(this[0]).find("option").filter((function(){return this.selected})).pluck("value"):this[0].value)},offset:function(e){if(e)return this.each((function(t){var n=i(this),s=X(this,e,t,n.offset()),r=n.offsetParent().offset(),o={top:s.top-r.top,left:s.left-r.left};"static"==n.css("position")&&(o.position="relative"),n.css(o)}));if(!this.length)return null;if(h.documentElement!==this[0]&&!i.contains(h.documentElement,this[0]))return{top:0,left:0};var n=this[0].getBoundingClientRect();return{left:n.left+t.pageXOffset,top:n.top+t.pageYOffset,width:Math.round(n.width),height:Math.round(n.height)}},css:function(t,e){if(arguments.length<2){var s=this[0];if("string"==typeof t){if(!s)return;return s.style[r(t)]||getComputedStyle(s,"").getPropertyValue(t)}if(k(t)){if(!s)return;var o={},a=getComputedStyle(s,"");return i.each(t,(function(t,e){o[e]=s.style[r(e)]||a.getPropertyValue(e)})),o}}var u="";if("string"==I(t))e||0===e?u=B(t)+":"+j(t,e):this.each((function(){this.style.removeProperty(B(t))}));else for(n in t)t[n]||0===t[n]?u+=B(n)+":"+j(n,t[n])+";":this.each((function(){this.style.removeProperty(B(n))}));return this.each((function(){this.style.cssText+=";"+u}))},index:function(t){return t?this.indexOf(i(t)[0]):this.parent().children().indexOf(this[0])},hasClass:function(t){return!!t&&a.some.call(this,(function(t){return this.test(J(t))}),K(t))},addClass:function(t){return t?this.each((function(e){if("className"in this){s=[];var n=J(this);X(this,t,e,n).split(/\s+/g).forEach((function(t){i(this).hasClass(t)||s.push(t)}),this),s.length&&J(this,n+(n?" ":"")+s.join(" "))}})):this},removeClass:function(t){return this.each((function(n){if("className"in this){if(t===e)return J(this,"");s=J(this),X(this,t,n,s).split(/\s+/g).forEach((function(t){s=s.replace(K(t)," ")})),J(this,s.trim())}}))},toggleClass:function(t,n){return t?this.each((function(s){var r=i(this);X(this,t,s,J(this)).split(/\s+/g).forEach((function(t){(n===e?!r.hasClass(t):n)?r.addClass(t):r.removeClass(t)}))})):this},scrollTop:function(t){if(this.length){var n="scrollTop"in this[0];return t===e?n?this[0].scrollTop:this[0].pageYOffset:this.each(n?function(){this.scrollTop=t}:function(){this.scrollTo(this.scrollX,t)})}},scrollLeft:function(t){if(this.length){var n="scrollLeft"in this[0];return t===e?n?this[0].scrollLeft:this[0].pageXOffset:this.each(n?function(){this.scrollLeft=t}:function(){this.scrollTo(t,this.scrollY)})}},position:function(){if(this.length){var t=this[0],e=this.offsetParent(),n=this.offset(),s=y.test(e[0].nodeName)?{top:0,left:0}:e.offset();return n.top-=parseFloat(i(t).css("margin-top"))||0,n.left-=parseFloat(i(t).css("margin-left"))||0,s.top+=parseFloat(i(e[0]).css("border-top-width"))||0,s.left+=parseFloat(i(e[0]).css("border-left-width"))||0,{top:n.top-s.top,left:n.left-s.left}}},offsetParent:function(){return this.map((function(){for(var t=this.offsetParent||h.body;t&&!y.test(t.nodeName)&&"static"==i(t).css("position");)t=t.offsetParent;return t}))}},i.fn.detach=i.fn.remove,["width","height"].forEach((function(t){var n=t.replace(/./,(function(t){return t[0].toUpperCase()}));i.fn[t]=function(s){var r,o=this[0];return s===e?L(o)?o["inner"+n]:M(o)?o.documentElement["scroll"+n]:(r=this.offset())&&r[t]:this.each((function(e){(o=i(this)).css(t,X(this,s,e,o[t]()))}))}})),C.forEach((function(n,s){var r=s%2;i.fn[n]=function(){var n,o,a=i.map(arguments,(function(t){var s=[];return"array"==(n=I(t))?(t.forEach((function(t){return t.nodeType!==e?s.push(t):i.zepto.isZ(t)?s=s.concat(t.get()):void(s=s.concat(O.fragment(t)))})),s):"object"==n||null==t?t:O.fragment(t)})),u=this.length>1;return a.length<1?this:this.each((function(e,n){o=r?n:n.parentNode,n=0==s?n.nextSibling:1==s?n.firstChild:2==s?n:null;var c=i.contains(h.documentElement,o);a.forEach((function(e){if(u)e=e.cloneNode(!0);else if(!o)return i(e).remove();o.insertBefore(e,n),c&&tt(e,(function(e){if(!(null==e.nodeName||"SCRIPT"!==e.nodeName.toUpperCase()||e.type&&"text/javascript"!==e.type||e.src)){var n=e.ownerDocument?e.ownerDocument.defaultView:t;n.eval.call(n,e.innerHTML)}}))}))}))},i.fn[r?n+"To":"insert"+(s?"Before":"After")]=function(t){return i(t)[n](this),this}})),O.Z.prototype=Q.prototype=i.fn,O.uniq=o,O.deserializeValue=Y,i.zepto=O,i}();return function(e){var n,i=1,s=Array.prototype.slice,r=e.isFunction,o=function(t){return"string"==typeof t},a={},u={},c="onfocusin"in t,l={focus:"focusin",blur:"focusout"},h={mouseenter:"mouseover",mouseleave:"mouseout"};function p(t){return t._zid||(t._zid=i++)}function f(t,e,n,i){if((e=d(e)).ns)var s=g(e.ns);return(a[p(t)]||[]).filter((function(t){return t&&(!e.e||t.e==e.e)&&(!e.ns||s.test(t.ns))&&(!n||p(t.fn)===p(n))&&(!i||t.sel==i)}))}function d(t){var e=(""+t).split(".");return{e:e[0],ns:e.slice(1).sort().join(" ")}}function g(t){return new RegExp("(?:^| )"+t.replace(" "," .* ?")+"(?: |$)")}function m(t,e){return t.del&&!c&&t.e in l||!!e}function v(t){return h[t]||c&&l[t]||t}function y(t,i,s,r,o,u,c){var l=p(t),f=a[l]||(a[l]=[]);i.split(/\s/).forEach((function(i){if("ready"==i)return e(document).ready(s);var a=d(i);a.fn=s,a.sel=o,a.e in h&&(s=function(t){var n=t.relatedTarget;if(!n||n!==this&&!e.contains(this,n))return a.fn.apply(this,arguments)}),a.del=u;var l=u||s;a.proxy=function(e){if(!(e=S(e)).isImmediatePropagationStopped()){try{var i=Object.getOwnPropertyDescriptor(e,"data");i&&!i.writable||(e.data=r)}catch(e){}var s=l.apply(t,e._args==n?[e]:[e].concat(e._args));return!1===s&&(e.preventDefault(),e.stopPropagation()),s}},a.i=f.length,f.push(a),"addEventListener"in t&&t.addEventListener(v(a.e),a.proxy,m(a,c))}))}function w(t,e,n,i,s){var r=p(t);(e||"").split(/\s/).forEach((function(e){f(t,e,n,i).forEach((function(e){delete a[r][e.i],"removeEventListener"in t&&t.removeEventListener(v(e.e),e.proxy,m(e,s))}))}))}u.click=u.mousedown=u.mouseup=u.mousemove="MouseEvents",e.event={add:y,remove:w},e.proxy=function(t,n){var i=2 in arguments&&s.call(arguments,2);if(r(t)){var a=function(){return t.apply(n,i?i.concat(s.call(arguments)):arguments)};return a._zid=p(t),a}if(o(n))return i?(i.unshift(t[n],t),e.proxy.apply(null,i)):e.proxy(t[n],t);throw new TypeError("expected function")},e.fn.bind=function(t,e,n){return this.on(t,e,n)},e.fn.unbind=function(t,e){return this.off(t,e)},e.fn.one=function(t,e,n,i){return this.on(t,e,n,i,1)};var b=function(){return!0},C=function(){return!1},x=/^([A-Z]|returnValue$|layer[XY]$|webkitMovement[XY]$)/,_={preventDefault:"isDefaultPrevented",stopImmediatePropagation:"isImmediatePropagationStopped",stopPropagation:"isPropagationStopped"};function S(t,i){if(i||!t.isDefaultPrevented){i||(i=t),e.each(_,(function(e,n){var s=i[e];t[e]=function(){return this[n]=b,s&&s.apply(i,arguments)},t[n]=C}));try{t.timeStamp||(t.timeStamp=Date.now())}catch(s){}(i.defaultPrevented!==n?i.defaultPrevented:"returnValue"in i?!1===i.returnValue:i.getPreventDefault&&i.getPreventDefault())&&(t.isDefaultPrevented=b)}return t}function E(t){var e,i={originalEvent:t};for(e in t)x.test(e)||t[e]===n||(i[e]=t[e]);return S(i,t)}e.fn.delegate=function(t,e,n){return this.on(e,t,n)},e.fn.undelegate=function(t,e,n){return this.off(e,t,n)},e.fn.live=function(t,n){return e(document.body).delegate(this.selector,t,n),this},e.fn.die=function(t,n){return e(document.body).undelegate(this.selector,t,n),this},e.fn.on=function(t,i,a,u,c){var l,h,p=this;return t&&!o(t)?(e.each(t,(function(t,e){p.on(t,i,a,e,c)})),p):(o(i)||r(u)||!1===u||(u=a,a=i,i=n),u!==n&&!1!==a||(u=a,a=n),!1===u&&(u=C),p.each((function(n,r){c&&(l=function(t){return w(r,t.type,u),u.apply(this,arguments)}),i&&(h=function(t){var n,o=e(t.target).closest(i,r).get(0);if(o&&o!==r)return n=e.extend(E(t),{currentTarget:o,liveFired:r}),(l||u).apply(o,[n].concat(s.call(arguments,1)))}),y(r,t,u,a,i,h||l)})))},e.fn.off=function(t,i,s){var a=this;return t&&!o(t)?(e.each(t,(function(t,e){a.off(t,i,e)})),a):(o(i)||r(s)||!1===s||(s=i,i=n),!1===s&&(s=C),a.each((function(){w(this,t,s,i)})))},e.fn.trigger=function(t,n){return(t=o(t)||e.isPlainObject(t)?e.Event(t):S(t))._args=n,this.each((function(){t.type in l&&"function"==typeof this[t.type]?this[t.type]():"dispatchEvent"in this?this.dispatchEvent(t):e(this).triggerHandler(t,n)}))},e.fn.triggerHandler=function(t,n){var i,s;return this.each((function(r,a){(i=E(o(t)?e.Event(t):t))._args=n,i.target=a,e.each(f(a,t.type||t),(function(t,e){if(s=e.proxy(i),i.isImmediatePropagationStopped())return!1}))})),s},"focusin focusout focus blur load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select keydown keypress keyup error".split(" ").forEach((function(t){e.fn[t]=function(e){return 0 in arguments?this.bind(t,e):this.trigger(t)}})),e.Event=function(t,e){o(t)||(t=(e=t).type);var n=document.createEvent(u[t]||"Events"),i=!0;if(e)for(var s in e)"bubbles"==s?i=!!e[s]:n[s]=e[s];return n.initEvent(t,i,!0),S(n)}}(i),n=[],i.fn.remove=function(){return this.each((function(){this.parentNode&&("IMG"===this.tagName&&(n.push(this),this.src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=",e&&clearTimeout(e),e=setTimeout((function(){n=[]}),6e4)),this.parentNode.removeChild(this))}))},function(t){var e={},n=t.fn.data,i=t.camelCase,s=t.expando="Zepto"+ +new Date,r=[];function o(r,o){var u=r[s],c=u&&e[u];if(void 0===o)return c||a(r);if(c){if(o in c)return c[o];var l=i(o);if(l in c)return c[l]}return n.call(t(r),o)}function a(n,r,o){var a=n[s]||(n[s]=++t.uuid),c=e[a]||(e[a]=u(n));return void 0!==r&&(c[i(r)]=o),c}function u(e){var n={};return t.each(e.attributes||r,(function(e,s){0==s.name.indexOf("data-")&&(n[i(s.name.replace("data-",""))]=t.zepto.deserializeValue(s.value))})),n}t.fn.data=function(e,n){return void 0===n?t.isPlainObject(e)?this.each((function(n,i){t.each(e,(function(t,e){a(i,t,e)}))})):0 in this?o(this[0],e):void 0:this.each((function(){a(this,e,n)}))},t.data=function(e,n,i){return t(e).data(n,i)},t.hasData=function(n){var i=n[s],r=i&&e[i];return!!r&&!t.isEmptyObject(r)},t.fn.removeData=function(n){return"string"==typeof n&&(n=n.split(/\s+/)),this.each((function(){var r=this[s],o=r&&e[r];o&&t.each(n||o,(function(t){delete o[n?i(this):t]}))}))},["remove","empty"].forEach((function(e){var n=t.fn[e];t.fn[e]=function(){var t=this.find("*");return"remove"===e&&(t=t.add(this)),t.removeData(),n.call(this)}}))}(i),i}(e)},8820:t=>{"use strict";var e={}.hasOwnProperty,n=/[ -,\.\/:-@\[-\^`\{-~]/,i=/[ -,\.\/:-@\[\]\^`\{-~]/,s=/(^|\\+)?(\\[A-F0-9]{1,6})\x20(?![a-fA-F0-9\x20])/g,r=function t(r,o){"single"!=(o=function(t,n){if(!t)return n;var i={};for(var s in n)i[s]=e.call(t,s)?t[s]:n[s];return i}(o,t.options)).quotes&&"double"!=o.quotes&&(o.quotes="single");for(var a="double"==o.quotes?'"':"'",u=o.isIdentifier,c=r.charAt(0),l="",h=0,p=r.length;h126){if(d>=55296&&d<=56319&&h{"use strict";var i,s,r,o=[n(5525),n(4785),n(8291),n(4322),n(2506),n(9176)],a=-1,u=[],c=!1;function l(){i&&s&&(i=!1,s.length?u=s.concat(u):a=-1,u.length&&h())}function h(){if(!i){c=!1,i=!0;for(var t=u.length,e=setTimeout(l);t;){for(s=u,u=[];s&&++a1)for(var n=1;n{"use strict";e.test=function(){return!n.g.setImmediate&&void 0!==n.g.MessageChannel},e.install=function(t){var e=new n.g.MessageChannel;return e.port1.onmessage=t,function(){e.port2.postMessage(0)}}},8291:(t,e,n)=>{"use strict";var i=n.g.MutationObserver||n.g.WebKitMutationObserver;e.test=function(){return i},e.install=function(t){var e=0,s=new i(t),r=n.g.document.createTextNode("");return s.observe(r,{characterData:!0}),function(){r.data=e=++e%2}}},4785:(t,e,n)=>{"use strict";e.test=function(){return"function"==typeof n.g.queueMicrotask},e.install=function(t){return function(){n.g.queueMicrotask(t)}}},2506:(t,e,n)=>{"use strict";e.test=function(){return"document"in n.g&&"onreadystatechange"in n.g.document.createElement("script")},e.install=function(t){return function(){var e=n.g.document.createElement("script");return e.onreadystatechange=function(){t(),e.onreadystatechange=null,e.parentNode.removeChild(e),e=null},n.g.document.documentElement.appendChild(e),t}}},9176:(t,e)=>{"use strict";e.test=function(){return!0},e.install=function(t){return function(){setTimeout(t,0)}}}}]); \ No newline at end of file diff --git a/assets/js/8443.7c6e8c3b.js.LICENSE.txt b/assets/js/8443.4a4044bb.js.LICENSE.txt similarity index 100% rename from assets/js/8443.7c6e8c3b.js.LICENSE.txt rename to assets/js/8443.4a4044bb.js.LICENSE.txt diff --git a/assets/js/a19cf30a.81e6f8c9.js b/assets/js/a19cf30a.81e6f8c9.js new file mode 100644 index 00000000..d9faf505 --- /dev/null +++ b/assets/js/a19cf30a.81e6f8c9.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkareweloongyet=self.webpackChunkareweloongyet||[]).push([[9470],{4184:e=>{e.exports=JSON.parse('{"name":"Weijie Gao","kind":0,"url":"","githubUsername":"hackpascal","giteeUsername":""}')}}]); \ No newline at end of file diff --git a/assets/js/a68796e0.a16728c3.js b/assets/js/a68796e0.a16728c3.js deleted file mode 100644 index 5e45af36..00000000 --- a/assets/js/a68796e0.a16728c3.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkareweloongyet=self.webpackChunkareweloongyet||[]).push([[2484],{4790:n=>{n.exports=JSON.parse('{"blogPosts":[{"id":"this-week-in-loongarch-31","metadata":{"permalink":"/newsletter/this-week-in-loongarch-31","editUrl":"https://github.com/loongson-community/areweloongyet/newsletter/2024-01-01-this-week-in-loongarch-31.md","source":"@site/newsletter/2024-01-01-this-week-in-loongarch-31.md","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 31 \u671f","description":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01","date":"2024-01-02T15:25:00.000Z","formattedDate":"2024\u5e741\u67082\u65e5","tags":[{"label":"\u6bcf\u5468\u4e00\u9f99","permalink":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99"}],"readingTime":4.845,"hasTruncateMarker":true,"authors":[{"name":"WANG Xuerui","title":"\ud83d\udc32\u9f99\u95e8\u5ba2\u6808\u6253\u6742\u7684","url":"https://github.com/xen0n","imageURL":"https://github.com/xen0n.png","key":"xen0n"}],"frontMatter":{"slug":"this-week-in-loongarch-31","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 31 \u671f","authors":["xen0n"],"date":"2024-01-02T15:25:00.000Z","tags":["\u6bcf\u5468\u4e00\u9f99"]},"unlisted":false,"nextItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 30 \u671f","permalink":"/newsletter/this-week-in-loongarch-30"}},"content":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01\\n\u4e0a\u5468\u7684\u8fdb\u5c55\u4e3b\u8981\u6709 Linux \u548c\u5de5\u5177\u94fe\u3002\\n\u8be6\u60c5\u70b9\u8fdb\u6765\u770b\uff01\\n\\n\x3c!-- truncate --\x3e\\n\\n\u5982\u65e0\u7279\u522b\u8bf4\u660e\uff0c\u6587\u4e2d\u63d0\u53ca\u7684\u65e5\u671f\u3001\u65f6\u95f4\u90fd\u4e3a\u5317\u4eac\u65f6\u95f4\uff08UTC+8\uff09\u3002\\n\\n\u672c\u671f\u5468\u62a5\u7684\u5b9e\u9645\u53d1\u7a3f\u65f6\u95f4\u662f\u5468\u4e8c\u665a\u95f4\uff0c\u56e0\u4e3a\u5468\u4e00\u662f\u5143\u65e6\u5047\u671f\u3002\u65b0\u5e74\u5feb\u4e50 :tada:\uff01\\n\\n## \u5148\u300c\u9a6c\u300d\u518d\u770b {#marked-projects}\\n\\n\u672c\u680f\u76ee\u7684\u5185\u5bb9\u5177\u6709\u4e00\u5b9a\u5ef6\u7eed\u6027\uff0c\u5c06\u6301\u7eed\u8ffd\u8e2a\u62a5\u9053 LoongArch® \u9886\u57df\u7684\u91cd\u8981\u6216\u957f\u671f\u9879\u76ee\uff08\u5751\uff09\u3002\\n\\n### Linux {#linux}\\n\\n[Xi Ruoyao][xry111] [\u67e5\u660e\u5e76\u4fee\u590d\u4e86](https://lore.kernel.org/loongarch/20240102123706.6099-2-xry111@xry111.site/)\u9f99\u67b6\u6784\u4e0a\\nLinux \u4e00\u76f4\u4ee5\u6765\u7684[\u5076\u73b0\u95ee\u9898](https://github.com/loongson-community/discussions/issues/7)\uff1a\\n\u521b\u5efa\u65b0\u8fdb\u7a0b\u65f6\uff0c\u65b0\u8fdb\u7a0b\u53ef\u80fd\u7ee7\u627f\u5230\u4e0d\u5e72\u51c0\u7684 FCSR\uff08\u6d6e\u70b9\u63a7\u5236\u72b6\u6001\u5bc4\u5b58\u5668\uff09\u5185\u5bb9\uff0c\u5bfc\u81f4\u540e\u7eed\u505a\u6d6e\u70b9\u64cd\u4f5c\u65f6\u8fdf\u65e9\u53d1\u751f\u975e\u9884\u671f\u884c\u4e3a\u751a\u81f3\u5d29\u6e83\u3002\\n\u6b64 bug \u662f\u4ece MIPS \u5185\u6838\u5e26\u6765\u7684\u9057\u4ea7\u3002\u7531\u4e8e MIPS \u7684 FCSR \u521d\u59cb\u5316\u9700\u8981\u8003\u8651\u7a0b\u5e8f\u7684\u6267\u884c\u57df\uff08personality\uff09\uff0cXi Ruoyao \u4e0d\u77e5\u9053\u600e\u4e48\u4fee\uff0c\\n\u6240\u4ee5\u53ea\u80fd[\u62a5\u544a\u4e86](https://lore.kernel.org/linux-mips/7a6aa1bbdbbe2e63ae96ff163fab0349f58f1b9e.camel@xry111.site/)\u8be5\u95ee\u9898\uff0c\\n\u7b49\u5f85 MIPS \u76f8\u5173\u7ef4\u62a4\u8005\u5904\u7406\u3002\\n\\n[xen0n] [\u4fee\u590d\u4e86](https://lore.kernel.org/loongarch/20231227070317.1936234-1-kernel@xen0n.name/)\u4f7f\u7528\u6700\u65b0\\nbinutils\u3001gcc \u6784\u5efa\u5185\u6838\u65f6 `modpost` \u4f1a\u5d29\u6e83\u7684\u95ee\u9898\u3002\\n\\n[xry111]: https://github.com/xry111\\n[xen0n]: https://github.com/xen0n\\n\\n### \u5de5\u5177\u94fe {#toolchain}\\n\\n#### binutils {#binutils}\\n\\n\u7531\u5e38\u4f73\u741b\u540c\u5b66\u64cd\u5200\u7684\uff0c\u5468\u62a5\u7b2c 27 \u671f[\u63d0\u5230\u7684](./2023-12-05-this-week-in-loongarch-27/index.md#abi) LoongArch\\nTLS LE relaxation \u7279\u6027\u7684 binutils \u90e8\u5206\uff0c\u6210\u529f\u8fdb\u5165\u4e3b\u7ebf\u4e86\u3002\\n\u8ba9\u6211\u4eec\u795d\u8d3a :ta: \u52a0\u5165\u4e0a\u6e38\u8d21\u732e\u8005\u7684\u884c\u5217 :tada:\uff01\\n\\n#### GCC {#gcc}\\n\\n[Xi Ruoyao][xry111] [\u4fee\u590d\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-December/641443.html)\\nxen0n [\u62a5\u544a\u7684][PR113148] bug:\\nXWayland \u7b49\u8f6f\u4ef6\u4e2d\u5b58\u5728\u4e2a\u522b\u5185\u542b\u5927\u91cf\u6d6e\u70b9\u6bd4\u8f83\u64cd\u4f5c\u7684\u51fd\u6570\uff0c\u7f16\u8bd1\u8fd9\u4e9b\u51fd\u6570\u65f6 gcc \u4f1a\u5d29\u6e83\u3002\\n\\n[PR113148]: https://gcc.gnu.org/PR113148\\n\\nXi Ruoyao \u8fd8[\u5141\u8bb8\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-December/641609.html)\u5229\u7528\\n`{,x}vf{min,max}` \u56db\u79cd\u6307\u4ee4\u6765\u5411\u91cf\u5316\u5faa\u73af\u4e2d\u7684\u53d6\u6700\u5927/\u6700\u5c0f\u503c\u64cd\u4f5c\u3002LoongArch \u7684\u8fd9\u56db\u79cd\u6307\u4ee4\u8bbe\u8ba1\u4e0a\u5c31\u7b26\u5408 IEEE 754-2008 \u8bed\u4e49\uff0c\\n\u56e0\u800c\u53ef\u7528\u3002\\n\\n\u5468\u62a5\u7b2c 30 \u671f[\u63d0\u5230\u7684](./2023-12-26-this-week-in-loongarch-30/index.md#gcc)\\nXi Ruoyao \u5f53\u65f6\u300c\u6b63\u5728\u8c03\u6574\u300d\u7684\u8865\u4e01\uff0c\u73b0\u5df2\u5b8c\u6210\u6539\u8fdb\u5de5\u4f5c\uff0c[\u8fdb\u5165\u4e3b\u7ebf\u4e86](https://gcc.gnu.org/r14-6863)\u3002\\n\\n\u7531 Lulu Cheng \u5f00\u53d1\u7684\uff0c\u4e0a\u4e00\u8282\u4e2d\u63d0\u5230\u7684 TLS LE relaxation \u7279\u6027\u7684 gcc \u90e8\u5206\uff0c\\n\u4e5f[\u8fdb\u5165\u4e3b\u7ebf\u4e86](https://gcc.gnu.org/r14-6879)\u3002\\n\\n#### LLVM {#llvm}\\n\\n[yjijd] \u6309\u7167 LoongArch psABI v2.30\uff0c[\u4fee\u590d\u4e86](https://github.com/llvm/llvm-project/pull/74990)\u5148\u524d\u4f1a\u7528\u5411\u91cf\u5bc4\u5b58\u5668\u4f20\u9012\u5411\u91cf\u53c2\u6570\u7684\u95ee\u9898\u3002\\n\\n[wangleiat] \u4fee\u590d\u4e86\u4e00\u7cfb\u5217 SIMD \u4ee3\u7801\u751f\u6210\u4e0a\u7684\u9519\u8bef\uff1a\\n\\n* [`{,x}vbitseli.b` \u7684\u8bef\u7528](https://github.com/llvm/llvm-project/commit/da5378e87e11689d05a58198d6e15e9551916794)\uff0c\\n* [`xvrepl128vei` \u7684\u8bef\u7528](https://github.com/llvm/llvm-project/commit/c7367f985e0d27aeb8bc993406d1b9f4ca307399)\uff0c\u4ee5\u53ca\\n* [`vector_extract` \u5728 LASX \u4e0a\u7684\u9519\u8bef\u7f16\u8bd1\u7ed3\u679c](https://github.com/llvm/llvm-project/commit/47c88bcd5de91522241cca1aaa1b7762ceb01394)\u3002\\n\\nGo \u56e2\u961f\u7684 [abner-chenc] \u548c Xiaolin Zhao \u6765 LLVM \u4e0a\u6e38\u4e32\u95e8\u4e86\uff1a:ta: \u4eec\u7ed9 TSan\\n[\u589e\u52a0\u4e86](https://github.com/llvm/llvm-project/pull/72819) Go `loong64` \u652f\u6301\u3002\\n\\n[yjijd]: https://github.com/yjijd\\n[wangleiat]: https://github.com/wangleiat\\n[abner-chenc]: https://github.com/abner-chenc\\n\\n## \u6742\u95fb\u64ad\u62a5 {#assorted-news}\\n\\nSlackwareloong \u7ef4\u62a4\u8005 [shipujin] \u8bf4\uff1aSlackware \u4e2d\u6587\u793e\u533a\u5728 Slackwareloong LTS 1.0 \u7cfb\u7edf\u4e0b\uff0c\\n\u6210\u529f\u9a8c\u8bc1\u4e86\u6784\u5efa\u3001\u8fd0\u884c KDE Plasma 6 Beta 2 \u7248\u672c\u684c\u9762\u73af\u5883\u3002\\n\u540e\u9762\u4f1a\u628a\u6784\u5efa\u597d\u7684\u76f8\u5173\u8f6f\u4ef6\u5305\u53d1\u5e03\u5230 Slackwareloong \u4e0b\u7684 KDE6 testing \u4ed3\u5e93\u3002\\n\u611f\u8c22 shipujin \u63d0\u4f9b\u65b0\u95fb\u7ebf\u7d22\uff01\\n\\n[shipujin]: https://github.com/shipujin\\n\\n## \u793e\u533a\u6574\u6d3b:\u513f: {#grins}\\n\\n\u672c\u680f\u76ee\u63a5\u53d7\u4efb\u4f55\u7f51\u53cb\u7684\u6295\u7a3f\uff0c\u53ea\u8981\u5185\u5bb9\u4e0e LoongArch® \u6709\u5173\uff0c\u5e76\u53ef\u4ee5\u4e3a\u8bfb\u8005\u5e26\u6765\u4ef7\u503c\uff0c\\n\u65e0\u8bba\u4e25\u8083\u8d21\u732e\uff08\u6574\u7684\u5927\u6d3b:\u513f:\uff09\u6216\u662f\u535a\u541b\u4e00\u7b11\u90fd\u4e00\u6982\u6b22\u8fce\uff01\\n\\nLoongArch \u975e\u5b98\u65b9\u5f00\u6e90\u793e\u533a\uff08LA UOSC\uff09\u7248\u4e3b[\u675c\u6bd4][dbhrscom][\u53d1\u8d77\u4e86](https://bbs.loongarch.org/d/351-lauosc-freebsd-ports)\\nFreeBSD \u79fb\u690d\u9879\u76ee\uff0c\u5de5\u4f5c\u8fdb\u5ea6[\u653e\u5728\u4e86](https://gitee.com/lauosc/freebsd) Gitee \u4e0a\u3002\\n\u65e0\u5c18\uff08yu shan wei\uff09\u540c\u5b66\u4e5f\u5355\u72ec[\u7ef4\u62a4\u4e86](https://gitee.com/yushanwei/freebsd4loongarch)\u8865\u4e01\u96c6\u5408\u3002\\n\u611f\u8c22 [Haowu Ge][haowuge] \u5728\u7fa4\u804a\u4e2d\u6295\u9012\u65b0\u95fb\u7ebf\u7d22\uff01\\n\\n[dbhrscom]: https://bbs.loongarch.org/u/4\\n[haowuge]: https://github.com/haowuge\\n\\n## \u5f20\u8d34\u680f {#bulletin}\\n\\n\u672c\u680f\u76ee\u53ef\u4f9b\u5f20\u8d34\u516c\u76ca\u6027\u8d28\u7684\u5404\u79cd\u4fe1\u606f\u3002\\n\\n* \u53cb\u60c5\u6269\u6563\uff1a[\u5b89\u540c\u5f00\u6e90\u793e\u533a\uff08AOSC\uff09][aosc]\u7684\u9f99\u67b6\u6784\u79fb\u690d\u4e3b\u7ebf\u5316\u5de5\u4f5c\u300c\u5408\u9f99\u300d\u4ecd\u5728\u5982\u706b\u5982\u837c\u8fdb\u884c\u4e2d\uff0c\\n \u6b64\u5de5\u4f5c\u5b8c\u6210\u540e\u9f99\u67b6\u6784\u5c06\u5347\u683c\u4e3a AOSC OS \u7684 Tier 1 \u67b6\u6784\u3002\\n \u6b22\u8fce\u540c\u5b66\u4eec\u8bd5\u7528\u3001\u53cd\u9988\uff0c\u4e5f\u6b22\u8fce\u6709\u5fd7\u4e4b\u58eb\u4e00\u540c\u52a0\u5165\uff08\u6c9f\u901a\u6e20\u9053\u8be6\u89c1 AOSC \u7f51\u7ad9\u76f8\u5173\u680f\u76ee\uff09\u3002\\n* \u672c\u5468\u62a5[\u6301\u7eed\u63a5\u53d7\u7f51\u53cb\u6295\u7a3f][call-for-submissions]\u3002\u6b22\u8fce\u6765\u4e0a\u6e38\u5750\u5750\uff01\\n\\n[aosc]: https://aosc.io\\n[call-for-submissions]: https://github.com/loongson-community/areweloongyet/issues/16"},{"id":"this-week-in-loongarch-30","metadata":{"permalink":"/newsletter/this-week-in-loongarch-30","editUrl":"https://github.com/loongson-community/areweloongyet/newsletter/2023-12-26-this-week-in-loongarch-30/index.md","source":"@site/newsletter/2023-12-26-this-week-in-loongarch-30/index.md","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 30 \u671f","description":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01","date":"2023-12-25T16:50:00.000Z","formattedDate":"2023\u5e7412\u670825\u65e5","tags":[{"label":"\u6bcf\u5468\u4e00\u9f99","permalink":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99"}],"readingTime":12.015,"hasTruncateMarker":true,"authors":[{"name":"WANG Xuerui","title":"\ud83d\udc32\u9f99\u95e8\u5ba2\u6808\u6253\u6742\u7684","url":"https://github.com/xen0n","imageURL":"https://github.com/xen0n.png","key":"xen0n"}],"frontMatter":{"slug":"this-week-in-loongarch-30","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 30 \u671f","authors":["xen0n"],"date":"2023-12-25T16:50:00.000Z","tags":["\u6bcf\u5468\u4e00\u9f99"]},"unlisted":false,"prevItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 31 \u671f","permalink":"/newsletter/this-week-in-loongarch-31"},"nextItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 29 \u671f","permalink":"/newsletter/this-week-in-loongarch-29"}},"content":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01\\n\u4e0a\u5468\u7684\u8fdb\u5c55\u4e3b\u8981\u6709 LoongArch® ABI v2.30\u3001\u5de5\u5177\u94fe\uff0c\u4ee5\u53ca AOSC \u7814\u53d1\u7684\u65b0\u65e7\u4e16\u754c\u517c\u5bb9\u65b9\u6848\u3002\\n\u8be6\u60c5\u70b9\u8fdb\u6765\u770b\uff01\\n\\n\x3c!-- truncate --\x3e\\n\\n\u5982\u65e0\u7279\u522b\u8bf4\u660e\uff0c\u6587\u4e2d\u63d0\u53ca\u7684\u65e5\u671f\u3001\u65f6\u95f4\u90fd\u4e3a\u5317\u4eac\u65f6\u95f4\uff08UTC+8\uff09\u3002\\n\\n\u672c\u671f\u5468\u62a5\u7684\u5b9e\u9645\u53d1\u7a3f\u65f6\u95f4\u662f\u5468\u4e8c\u51cc\u6668\uff0c\u56e0\u4e3a\u8fd9\u4e2a\u70b9\u624d\u5199\u5b8c\u2014\u2014\u767d\u5929\u90fd\u5728\u5fd9\u522b\u7684\u3002\\n\u7f51\u9875\u4e0a\u663e\u793a\u7684\u53d1\u7a3f\u65f6\u95f4\u4ecd\u7136\u662f 12 \u6708 25 \u65e5\uff1a\\n\u8fd9\u662f Docusaurus \u65e9\u671f\u4e3a\u4e86\u4fee\u590d\u4e00\u4e2a\u65f6\u533a bug \u800c[\u5bfc\u81f4\u7684](https://github.com/facebook/docusaurus/issues/4881)\u53c8\u4e00\u4e2a\u65f6\u533a bug\u3002\\n\\n## \u5148\u300c\u9a6c\u300d\u518d\u770b {#marked-projects}\\n\\n\u672c\u680f\u76ee\u7684\u5185\u5bb9\u5177\u6709\u4e00\u5b9a\u5ef6\u7eed\u6027\uff0c\u5c06\u6301\u7eed\u8ffd\u8e2a\u62a5\u9053 LoongArch® \u9886\u57df\u7684\u91cd\u8981\u6216\u957f\u671f\u9879\u76ee\uff08\u5751\uff09\u3002\\n\\n### Linux {#linux}\\n\\nHuacai Chen [\u53d1\u51fa\u4e86](https://lore.kernel.org/loongarch/20231223120642.1067728-1-chenhuacai@loongson.cn/)\\nLinux v6.8 \u5f00\u53d1\u5468\u671f\u7684\u9f99\u67b6\u6784 KVM \u53d8\u66f4 PR\u3002\\n\u5176\u4e2d\uff0cBibo Mao \u4fee\u590d\u4e86\u5b9a\u65f6\u5668\u7684\u6a21\u62df\uff1bTianrui Zhao \u8ba9\u865a\u62df\u673a\u5185\u90e8\u53ef\u4ee5\u4f7f\u7528 LSX\u3001LASX \u6307\u4ee4\u3002\\n\\nHuacai Chen [\u4fee\u590d\u4e86](https://lore.kernel.org/loongarch/20231225070002.1350705-1-chenhuacai@loongson.cn/)\u5355\u8282\u70b9\u7684\u903b\u8f91\u5904\u7406\u5668\u6570\u91cf\u5927\u4e8e 64 \u65f6\uff0c\u7cfb\u7edf\u5f15\u5bfc\u8fc7\u7a0b\u4f1a\u5199\u574f\u4e00\u4e9b\u5185\u5b58\u5185\u5bb9\u7684\u95ee\u9898\u3002\\n\\n\u9f99\u82af QEMU \u5f00\u53d1\u8005 Song Gao \u4e3a\u65b9\u4fbf\u7528\u6237\u4ee5 FDT\uff08flattened device tree\uff0c\u62cd\u5e73\u8bbe\u5907\u6811\uff09\u534f\u8bae\u542f\u52a8\u4e3b\u7ebf\u5185\u6838\uff0c\\n\u9884\u5907\u4e3a\u4e3b\u7ebf\u5185\u6838\u7684\u9ed8\u8ba4\u914d\u7f6e[\u5f00\u542f](https://lore.kernel.org/loongarch/20231222024628.3138406-1-gaosong@loongson.cn)\u901a\u7528 PCIe \u5bbf\u4e3b\u652f\u6301\u3002\\n\\n[Xi Ruoyao][xry111] \u5c1d\u8bd5[\u5fae\u8c03\u4e86](https://lore.kernel.org/loongarch/20231214130206.21219-1-xry111@xry111.site/)\\nLoongArch \u4e0a\u4e0b\u6587\u5207\u6362\u4ee3\u7801\u4e2d\u4fdd\u5b58\u3001\u6062\u590d 8 \u4e2a\u6d6e\u70b9\u6761\u4ef6\u7801\u7684\u7247\u6bb5\uff0c\\n\u56e0\u4e3a\u5148\u524d\u7684\u7b80\u5355\u5199\u6cd5\u5728 LA464 \u4e0a\u6027\u80fd\u5f88\u5dee\u3002\\n\u7136\u800c Huacai Chen \u8fd8\u662f[\u559c\u6b22](https://lore.kernel.org/loongarch/CAAhV-H5m65qL05W9VZw7Qff-qg8TUc_wY8zs-pSeBuWSAFnSaQ@mail.gmail.com/)\u7b80\u5355\u7684\u4ee3\u7801\uff0c\\n\u56e0\u6b64\u4f30\u8ba1\u5728\u8c01\u638f\u51fa\u8fd9\u4e48\u6539\u53ef\u4ee5\u63d0\u5347\u4e0a\u4e0b\u6587\u5207\u6362\u6027\u80fd\u7684\u5ba2\u89c2\u8bc1\u636e\uff0c\u4f8b\u5982\u8dd1\u5206\u5bf9\u6bd4\u4e4b\u524d\uff0c\u8fd9\u4e2a\u8865\u4e01\u662f\u4e0d\u4f1a\u88ab\u6536\u4e86 :confused:\u3002\\n\\n:::info \u7a76\u7adf\u6709\u591a\u5dee\uff1f\\n\u6839\u636e Xi Ruoyao \u7684\u5b9e\u9a8c\u7ed3\u679c\uff0cLA464 \u4e0a\u6bcf\u6b21 `movcf2gr` \u82b1\u7684\u65f6\u95f4\u662f `movcf2fr + movfr2gr` \u7684 7 \u500d\uff0c\\n\u800c `movgr2cf` \u66f4\u662f `movgr2fr + movfr2cf` \u7684 15 \u500d\uff01\\n\u60f3\u5728\u6d6e\u70b9\u6761\u4ef6\u7801\u548c\u6574\u6570\u5bc4\u5b58\u5668\u4e4b\u95f4\u642c\u8fd0\u591a\u8fbe 1 \u6bd4\u7279\u7684\u6570\u636e\uff0c\u591a\u7ecf\u8fc7\u6d6e\u70b9\u5bc4\u5b58\u5668\u5012\u4e00\u624b\uff0c\u5c45\u7136\u80fd\u5feb\u51e0\u500d\u751a\u81f3\u5341\u51e0\u500d\uff0c\u7b80\u76f4\u79bb\u8c31\u3002\\n\u8fd8\u597d LA664 \u628a\u8fd9\u5751\u586b\u6389\u4e86\u3002\\n:::\\n\\n### \u5de5\u5177\u94fe {#toolchain}\\n\\n#### ABI {#abi}\\n\\n\u4eca\uff0825\uff09\u65e5\u4e0b\u73ed\u524d\uff0c\u9f99\u82af\u5de5\u5177\u94fe\u56e2\u961f[\u5408\u5e76\u4e86](https://github.com/loongson/la-abi-specs/pull/5)\\nLoongArch ABI \u89c4\u8303\u6587\u6863\u7684 v2.30 \u66f4\u65b0\uff08\u6574\u4f53\u7248\u672c\u53f7\uff1b\u6587\u6863\u7248\u672c\u53f7\u4e3a v20231219\uff09\u3002\\n\u672c\u6b21\u66f4\u65b0\u7684\u4e3b\u8981\u5185\u5bb9\u6709\uff1a\\n\\n* \u660e\u786e\u4e86\u57fa\u7840 ABI \u4e0b\uff0c\u51fd\u6570\u7684\u5411\u91cf\u53c2\u6570\u7684\u4f20\u9012\u65b9\u5f0f\u3002\u57fa\u7840 ABI \u4e0d\u4fdd\u8bc1 SIMD \u6269\u5c55\u4e00\u5b9a\u5b58\u5728\uff0c\u56e0\u6b64\u53ea\u80fd\u5c06\u5411\u91cf\u53c2\u6570\u89c6\u4f5c\u57fa\u672c\u7c7b\u578b\u91cf\u7684\u6570\u7ec4\u5904\u7406\u3002\\n* \u4fee\u590d\u4e86\u4e00\u4e9b\u91cd\u5b9a\u4f4d\u64cd\u4f5c\u7684\u7b97\u672f\u63cf\u8ff0\u3002\\n* \u589e\u52a0\u4e86\u4ee3\u7801\u6a21\u578b\uff08code model\uff09\u7ae0\u8282\u3002\u4e3b\u8981\u662f\u660e\u786e\u5b9a\u4e49\u4e86 `normal`\u3001`medium` \u4e0e `extreme` \u4e09\u79cd\u4ee3\u7801\u6a21\u578b\uff0c\u4ee5\u53ca\u8981\u6c42 `extreme` \u4ee3\u7801\u6a21\u578b\u7684\u56db\u6761\u62fc\u63a5\u5730\u5740\u6307\u4ee4\u5fc5\u987b\u76f8\u90bb\u3002\\n \u540e\u8005\u662f\u5148\u524d\u9488\u5bf9\u8be5\u95ee\u9898\u7684\u793e\u533a\u8ba8\u8bba\u6240[\u63d0\u5230\u7684](https://github.com/loongson-community/discussions/issues/17)\u7b80\u5355\u65b9\u6848\u3002\\n \u5468\u62a5\u7b2c 26 \u671f\u7684[\u731c\u6d4b](../2023-11-27-this-week-in-loongarch-26.md#abi)\u51fa\u4e86\u4e9b\u504f\u5dee\uff1a\\n \u53ef\u80fd\u51fa\u4e8e\u5de5\u4f5c\u91cf\u548c\u517c\u5bb9\u6027\u8003\u8651\uff0c\u672c\u6b21\u5e76\u672a\u300c\u4e00\u6b65\u5230\u4f4d\u300d\uff0c\u76f4\u63a5\u5b9e\u73b0\u90a3\u4e2a\u901a\u8fc7\u63d0\u4f9b\u5b8c\u6574\u5173\u8054\u4fe1\u606f\u800c\u89e3\u51b3\u95ee\u9898\u7684\u590d\u6742\u65b9\u6848\u3002\\n \u672c\u7ad9\u7684\u57fa\u7ebf\u53c2\u8003\u6587\u6863\u4e5f\u5df2[\u540c\u6b65\u66f4\u65b0\u4e86](/docs/baseline-reference/)\u3002\\n* \u6b63\u5f0f\u52a0\u5165\u4e86\u5468\u62a5\u7b2c 27 \u671f[\u63d0\u53ca\u7684](../2023-12-05-this-week-in-loongarch-27/index.md#abi)\\n TLS \u63cf\u8ff0\u7b26\uff08TLSDESC\uff09\u76f8\u5173\u5b9a\u4e49\u3002\\n\\n#### binutils {#binutils}\\n\\nmengqinggang [\u4fee\u590d\u4e86](https://sourceware.org/pipermail/binutils/2023-December/131391.html)\u5148\u524d\u4f1a\u7ed9\u4e0d\u662f\u51fd\u6570\u7c7b\u578b\u7684\u7b26\u53f7\u4e5f\u751f\u6210\\nPLT\uff08procedure linkage table\uff0c\u8fc7\u7a0b\u94fe\u63a5\u8868\uff09\u8bb0\u5f55\u7684\u95ee\u9898\u3002\\n\\nmengqinggang \u8fd8\u6309\u7167\u672c\u6b21\u7684 ELF psABI \u66f4\u65b0\uff0c[\u5b9e\u73b0\u4e86](https://sourceware.org/pipermail/binutils/2023-December/131386.html)\\n`R_LARCH_ALIGN` \u5bf9\u6c47\u7f16\u5668 `.align` \u7b2c\u4e09\u4f4d\u7f6e\u7684\u8868\u8fbe\u5f0f\u53c2\u6570\u7684\u652f\u6301\u3002\\n\\n#### GCC {#gcc}\\n\\n[Xi Ruoyao][xry111] \u4fee\u590d\u4e86[\u6770\u54e5][jiegec][\u53d1\u73b0\u7684](https://gcc.gnu.org/PR113033)\u7f16\u8bd1\\nLSX \u7684\u5faa\u73af\u79fb\u4f4d\u64cd\u4f5c\u4f1a\u5d29\u6e83\uff08ICE\uff09\u7684\u95ee\u9898\uff1a[\u8865\u4e01\u7532](https://gcc.gnu.org/pipermail/gcc-patches/2023-December/640937.html)\u3001[\u8865\u4e01\u4e59](https://gcc.gnu.org/pipermail/gcc-patches/2023-December/641401.html)\u3002\\n\\nXi Ruoyao \u8fd8[\u4fee\u590d\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-December/640808.html)\u540c\u6837\u7531\u6770\u54e5[\u53d1\u73b0\u7684](https://gcc.gnu.org/PR113034)\\n`__m128` \u7c7b\u578b\u7684\u300c\u4e0d\u7b49\u4e8e\u300d\u6bd4\u8f83\u64cd\u4f5c\u4f1a\u88ab\u9519\u8bef\u7f16\u8bd1\u7684\u95ee\u9898\u3002\\n\\nXi Ruoyao \u8fd8[\u8282\u7ea6\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-December/640809.html)\u6bcf\u6b21 32 \u4f4d\u5faa\u73af\u79fb\u4f4d\u64cd\u4f5c\u5148\u524d\u90fd\u9644\u5e26\u7684\u4e00\u6b21\u591a\u4f59\u7b26\u53f7\u6269\u5c55\u3002\\n\\nXi Ruoyao \u8fd8[\u5c1d\u8bd5\u89e3\u51b3\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-December/640280.html)\u5148\u524d\u5728\\n`-mexplicit-relocs=auto` \u65f6\uff0c\u6709\u4e9b\u9002\u5408\u5408\u5e76\u7684\u7b26\u53f7\u5730\u5740\u88c5\u8f7d\u64cd\u4f5c\u6ca1\u88ab\u8bc6\u522b\u51fa\u6765\u3001\u4e88\u4ee5\u5408\u5e76\u7684\u95ee\u9898\uff1b\\n\u76ee\u524d\u8fd8\u6709\u5c0f\u5751\uff0c\u6b63\u5728\u8c03\u6574\u3002\\n\\nXi Ruoyao \u8fd8\u6539\u5584\u4e86\u5bf9\u4e8e\u6d6e\u70b9\u6761\u4ef6\u7801\u7684\u5904\u7406\uff1a[\u6e05\u7406\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-December/640731.html)\\nLoongArch \u540e\u7aef\u5b9a\u4e49\u4e2d\u4e00\u5904\u4e0d\u4f1a\u88ab\u7528\u5230\u7684\u60c5\u51b5\uff0c\\n\u53c8[\u5b9e\u73b0\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-December/640713.html)\u6d6e\u70b9\u6761\u4ef6\u7801\uff08`FCCmode`\uff09\\n\u7684\u91cd\u65b0\u88c5\u8f7d\uff08reload\uff09\u3002\\n\u540e\u8005\u6709\u5229\u4e8e\u5728\u67d0\u5904\u6d6e\u70b9\u6bd4\u8f83\u64cd\u4f5c\u7684\u7ed3\u679c\u65e0\u6cd5\u9884\u6d4b\u65f6\uff0c\u63d0\u5347\u6b64\u5904\u7ed3\u679c\u5411\u76ee\u6807\u4f4d\u7f6e\u7684\u4fdd\u5b58\u6027\u80fd\u3002\\n\\nLulu Cheng [\u5b9e\u73b0\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-December/640977.html)\\nTLS LE (local-exec) relaxation\uff08\u7ebf\u7a0b\u672c\u5730\u5b58\u50a8\u7684\u672c\u5730\u6267\u884c\u6a21\u578b\u7684\u677e\u5f1b\uff09\u4f18\u5316\u7684\u7f16\u8bd1\u5668\u4e00\u4fa7\u3002\\n\u642d\u914d\u5468\u62a5\u7b2c 27 \u671f[\u63d0\u5230\u7684](../2023-12-05-this-week-in-loongarch-27/index.md#abi)\u6c47\u7f16\u5668\u4e00\u4fa7\u652f\u6301\uff0c\\n\u9884\u8ba1\u80fd\u5728\u67d0\u4e9b\u591a\u7ebf\u7a0b\u573a\u666f\u4e0b\u63d0\u5347\u6027\u80fd\u3002\\n\\nLi Wei [\u4fee\u590d\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-December/641407.html)\u542f\u7528\u94fe\u63a5\u65f6\u4f18\u5316\uff08LTO\uff09\u65f6\uff0c\\n\u53ef\u80fd\u5bfc\u81f4\u4e2a\u522b\u4f4d\u57df\u88c5\u8f7d\u64cd\u4f5c\u88ab\u9519\u8bef\u7f16\u8bd1\u7684\u95ee\u9898\uff1b\u539f\u56e0\u662f `*bstrins__for_ior_mask` \u8fd9\u6761\u89c4\u5219\u5199\u9519\u4e86\u3002\\n\u8be5\u95ee\u9898\u81f3\u5c11\u6ce2\u53ca\u4e86 SPEC 2006 \u7684 `400.perlbench` \u7528\u4f8b\u3002\\n\\n\u672c\u671f\u7684 GCC \u65b0\u95fb\u90fd\u662f [Xi Ruoyao][xry111] \u5e2e\u5fd9\u6574\u7406\u7684\uff0c\u8ba9\u6211\u4eec\u611f\u8c22 :ta: \u7684\u5949\u732e\uff01\\n\\n[jiegec]: https://github.com/jiegec\\n\\n#### LLVM {#llvm}\\n\\n\u7d27\u968f LoongArch ELF psABI v20231219\uff08\u6574\u4f53\u7248\u672c\u53f7 v2.30\uff09\u7684\u53d1\u5e03\uff0c[SixWeining]\\n[\u66f4\u65b0\u4e86](https://github.com/llvm/llvm-project/pull/73387)\u5148\u524d\u5bf9 LLD `extreme`\\n\u4ee3\u7801\u6a21\u578b\u7684\u7acb\u5373\u6570\u5904\u7406\u7684\u91cd\u5236\u3002\\n\u6309\u7167\u76ee\u524d\u7684\u5b9e\u73b0\u65b9\u5f0f\uff0c\u8fd9\u4f1a\u8ba9\u4e00\u4e9b\u5148\u524d\u9519\u8bef\u7684\u8fb9\u754c\u60c5\u51b5\u53d8\u6b63\u786e\uff0c\u4f46\u4e5f\u4f1a\u8ba9\u4e00\u4e9b\u5148\u524d\u6b63\u786e\u7684\u8fb9\u754c\u60c5\u51b5\u53d8\u9519\u8bef\uff1a\\n\u8fd8\u597d\u76ee\u524d\u51e0\u4e4e\u6ca1\u6709\u8f6f\u4ef6\u7528\u5230 `extreme` \u4ee3\u7801\u6a21\u578b\uff0c\u5269\u4e0b\u7684\u5c31\u53ea\u6709\u7948\u7977\uff01\\n\\n[MQ-mengqing] \u7ed9 linker relaxation \u505a\u51c6\u5907\uff1a\u4eff\u7167 RISC-V\uff0c[\u63a8\u8fdf\u4e86](https://github.com/llvm/llvm-project/pull/72960)\\nLLVM MC \u7684 LoongArch \u540e\u7aef\u51b3\u7b56\u662f\u5426\u4ea7\u751f\u300c\u52a0\u3001\u51cf\u300d\u7c7b\u578b\u91cd\u5b9a\u4f4d\u8bb0\u5f55\u7684\u65f6\u673a\u3002\\n\u7136\u800c\u5728\u8be5\u8865\u4e01\u5408\u5e76\u4e4b\u540e\uff0c\u53d1\u73b0\u4e00\u4e9b\u8f6f\u4ef6\u5f00\u59cb\u94fe\u63a5\u5931\u8d25\uff1a\\n\u8fd9\u662f\u7531\u4e8e DWARF v5 \u8c03\u8bd5\u4fe1\u606f\u7528\u5230\u4e86 ULEB128 \u7c7b\u578b\u7684\u52a0\u51cf\u64cd\u4f5c\uff0c\\n\u800c LoongArch \u6682\u672a\u5982 RISC-V \u4e00\u6837[\u5b9e\u73b0\u4e86](https://github.com/llvm/llvm-project/pull/72610)\u8fd9\u4e9b\u64cd\u4f5c\u3002\\n\u76ee\u524d MQ-mengqing [\u5199\u4e86](https://github.com/llvm/llvm-project/pull/72960#issuecomment-1868650942)\u4e00\u7248\u4fee\u590d\uff0c\\n\u6b63\u5728\u8865\u5145\u6d4b\u8bd5\u7528\u4f8b\u3002\\n\\n[SixWeining] \u4e3a LLD [\u65b0\u589e\u4e86](https://github.com/llvm/llvm-project/pull/73346)\\n`R_LARCH_CALL36` \u652f\u6301\u3002\\n\\n[SixWeining]: https://github.com/SixWeining\\n[MQ-mengqing]: https://github.com/MQ-mengqing\\n\\n## \u6742\u95fb\u64ad\u62a5 {#assorted-news}\\n\\n\u6b27\u6d32\u65f6\u95f4 12 \u6708 20 \u65e5\u665a\u95f4\uff0c\u9996\u5ea6\u5305\u542b\u4e86\u9f99\u67b6\u6784\u652f\u6301\u7684 GRUB 2.12\\n[\u6b63\u5f0f\u53d1\u5e03\u4e86](https://lists.gnu.org/archive/html/grub-devel/2023-12/msg00052.html)\u3002\\n\u4e45\u7b49\u4e86\uff01\\n\u77e5\u540d\u79d1\u6280\u5a92\u4f53 Phoronix \u4e5f[\u62a5\u9053\u4e86](https://www.phoronix.com/news/GRUB-2.12-Released)\u6b64\u4e8b\u3002\\n\u611f\u8c22 [xry111] \u63d0\u4f9b\u65b0\u95fb\u7ebf\u7d22\u3002\\n\\n[xry111]: https://github.com/xry111\\n\\n## \u793e\u533a\u6574\u6d3b:\u513f: {#grins}\\n\\n\u672c\u680f\u76ee\u63a5\u53d7\u4efb\u4f55\u7f51\u53cb\u7684\u6295\u7a3f\uff0c\u53ea\u8981\u5185\u5bb9\u4e0e LoongArch® \u6709\u5173\uff0c\u5e76\u53ef\u4ee5\u4e3a\u8bfb\u8005\u5e26\u6765\u4ef7\u503c\uff0c\\n\u65e0\u8bba\u4e25\u8083\u8d21\u732e\uff08\u6574\u7684\u5927\u6d3b:\u513f:\uff09\u6216\u662f\u535a\u541b\u4e00\u7b11\u90fd\u4e00\u6982\u6b22\u8fce\uff01\\n\\n## `libLoL`: AOSC \u4e3a\u60a8\u5728\u65b0\u65e7\u4e16\u754c\u4e4b\u95f4\u67b6\u8d77\u6865\u6881\uff01 {#liblol}\\n\\n\u4f17\u6240\u5468\u77e5\uff0cLoongArch \u7684[\u65b0\u65e7\u4e16\u754c\u751f\u6001\u5272\u88c2\u95ee\u9898](/docs/old-and-new-worlds/)\u5df2\u7ecf\u56f0\u6270\u4e86\u793e\u533a\u53d1\u884c\u7248\u7528\u6237\u8bb8\u4e45\uff1a\\n\u867d\u7136\u8bb8\u591a\u95ed\u6e90\u8f6f\u4ef6\u90fd\u9646\u7eed\u652f\u6301\u4e86 LoongArch\uff0c\u4f46\u90fd\u662f\u5728\u91c7\u7528\u65e7\u4e16\u754c ABI \u7684\u5546\u4e1a\u53d1\u884c\u7248\u4e0a\uff0c\\n\u4ece\u800c\u4e0e\u57fa\u4e8e\u65b0\u4e16\u754c ABI \u7684\u793e\u533a\u53d1\u884c\u7248\u548c\u7528\u6237\u7fa4\u4f53\u300c\u7edd\u7f18\u300d\u3002\\n\u867d\u7136\u5728\u65e9\u5148[\u4e0a\u8bc1\u8def\u6f14\u7684\u6295\u8d44\u8005\u4e92\u52a8\u73af\u8282][sse-roadshow]\u300111 \u6708 28 \u65e5\u7684\u4ea7\u54c1\u53d1\u5e03\u4f1a\u4e0a\uff0c\\n\u9f99\u82af\u516c\u53f8\u90fd\u8868\u6001\u5c06\u5f00\u53d1\u65b0\u65e7\u4e16\u754c\u5e94\u7528\u7684\u517c\u5bb9\u65b9\u6848\uff0c\\n\u4f46\u622a\u81f3\u76ee\u524d\uff0c\u5173\u4e8e\u9f99\u82af\u65b9\u6848\u7684\u6280\u672f\u7ec6\u8282\uff0c\u6ee1\u6000\u70ed\u5ff1\u7684\u540c\u5b66\u4eec\u4ecd\u672a\u5728\u516c\u5f00\u6e20\u9053\u5f97\u5230\u6b63\u9762\u56de\u5e94\u3002\\n\u8003\u8651\u5230\u6027\u80fd\u559c\u4eba\u7684 3A6000 \u677f\u5361\u5df2\u7ecf\u9646\u7eed\u4e0a\u5e02\uff0c\u4e0d\u96be\u4f5c\u51fa\u5408\u7406\u63a8\u6d4b\uff1a\\n\u603b\u6709\u7fa4\u4f17\u7b49\u4e0d\u53ca\u4e24\u5e74\u540e\uff08\u65e0\u8bba\u5b9e\u9645\u66f4\u65e9\u6216\u66f4\u665a\uff09\u8fd9\u4e9b\u8f6f\u4ef6\u7684\u5b98\u65b9\u65b0\u4e16\u754c\u7248\u672c\uff0c\u800c**\u73b0\u5728\u5c31\u8981\u7528**\uff01\\n\\n[sse-roadshow]: https://roadshow.sseinfo.com/roadshowIndex.do?id=16536#cd-placeholder-hdjl\\n\\n[\u5b89\u540c\u5f00\u6e90\u793e\u533a\uff08AOSC\uff09][aosc]\u4f5c\u4e3a\u300c\u7262\u8bb0\u670d\u52a1\u7528\u6237\u9700\u6c42\u8fd9\u4e00\u5b97\u65e8\u300d\u7684\u4e00\u7fa4\u4eba\uff0c\u6b64\u523b\u4fbf\u7ad9\u4e86\u51fa\u6765\u3002:ta: \u4eec\u7ed9\u51fa\u7684\u7b54\u6848\u662f\\n`libLoL`: LoongArch on LoongArch\u3002\\n\\nAOSC \u5f00\u53d1\u8005[\u738b\u9088][shankerwangmiao]\u4e0e[\u5218\u5b50\u5174][liushuyu]\uff0c\\n\u5728\u5185\u6838\u5c42\u9762\u5b9e\u73b0\u4e86\u4ee5\u5916\u6302\u6a21\u5757\uff08\u4ea6\u53ef\u7406\u89e3\u4e3a\u300c\u9a71\u52a8\u300d\uff09\u65b9\u5f0f\uff0c\u52a8\u6001\u8f7d\u5165\u7684\u65e7\u4e16\u754c\u7cfb\u7edf\u8c03\u7528\u652f\u6301\u3002\\n\u738b\u9088\u4e5f\u8bbe\u8ba1\u3001\u5b9e\u73b0\u4e86\u4f4d\u4e8e\u7528\u6237\u6001\u7684\u8fd0\u884c\u65f6\u90e8\u5206\uff1a\u6253\u5305\u4e86\u65e7\u4e16\u754c\u53c2\u8003\u53d1\u884c\u7248 Loongnix® \u7684\u6838\u5fc3\u8fd0\u884c\u65f6\u5e93\uff0c\\n\u4f7f\u65e7\u4e16\u754c\u5e94\u7528\u80fd\u591f\u6709\u300c\u56de\u5bb6\u7684\u611f\u89c9\u300d\u4ece\u800c\u6b63\u5e38\u542f\u52a8\u3002\\n\u76ee\u524d AOSC OS \u5df2\u7ecf\u80fd\u591f\u8fd0\u884c WPS Office \u4e0e\u9f99\u82af\u6d4f\u89c8\u5668\u7b49\u6807\u5fd7\u6027\u7684\u65e7\u4e16\u754c\u5e94\u7528\uff0c\\n\u5982\u56fe\u6240\u793a\uff08\u70b9\u51fb\u5373\u770b\u9ad8\u6e05\u5927\u56fe\uff09\uff1a\\n\\n[![\u542f\u7528\u4e86 libLoL \u7684 AOSC \u7cfb\u7edf\u4e0a\u6210\u529f\u8fd0\u884c\u65e7\u4e16\u754c WPS \u4e0e\u9f99\u82af\u6d4f\u89c8\u5668\u7684\u622a\u56fe](./liblol-showcase@0.5x.webp)](./liblol-showcase.webp)\\n\\n[shankerwangmiao]: https://github.com/shankerwangmiao\\n[liushuyu]: https://github.com/liushuyu\\n\\n\u540e\u7eed\uff0c\u5728\u5b8c\u6210\u914d\u5957\u5185\u6838\u6a21\u5757\u7684\u8f7d\u5165\u5411\u5bfc\u540e\uff0c\u4f7f\u7528\u9f99\u67b6\u6784\u8bbe\u5907\u7684 AOSC OS \u7528\u6237\u4fbf\u53ef\u6309\u9700\u542f\u7528\u6b64\u517c\u5bb9\u65b9\u6848\u4e86\u3002AOSC \u540c\u4ec1\u4eec\u4e5f\u6b22\u8fce\u5176\u4ed6\u65b0\u4e16\u754c\u53d1\u884c\u7248\u7ef4\u62a4\u8005\u8003\u5bdf `libLoL`\uff0c\u5e76\u89c6\u81ea\u8eab\u60c5\u51b5\u548c\u9700\u6c42\u96c6\u6210\u6b64\u9879\u76ee\u7684\u6210\u679c\u3002\\n\\n12 \u6708 23 \u65e5\u53d1\u5e03\u7684 AOSC \u53cc\u5468\u62a5\u300a\u5b89\u8bb0\u51b0\u5ba4\u30fb\u5341\u4e8c\u6708\u4e0b\u300b[\u8bb0\u8f7d\u4e86](https://github.com/AOSC-Dev/newsroom/blob/2c5443a792291702438cbf6059d8d4039ca5dc85/coffee-break/20231223/zh_CN.md#%E5%B1%95%E6%9C%9B-liblol%E9%BE%99%E6%9E%B6%E6%9E%84%E6%97%A7%E4%B8%96%E7%95%8C%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E5%85%BC%E5%AE%B9%E8%BF%90%E8%A1%8C%E6%97%B6)\u8fd9\u9879\u5de5\u4f5c\u7684\u66f4\u591a\u4fe1\u606f\uff0c\u63a8\u8350\u9605\u8bfb\u3002\\n\\n## \u5f20\u8d34\u680f {#bulletin}\\n\\n\u672c\u680f\u76ee\u53ef\u4f9b\u5f20\u8d34\u516c\u76ca\u6027\u8d28\u7684\u5404\u79cd\u4fe1\u606f\u3002\\n\\n* \u53cb\u60c5\u6269\u6563\uff1a[\u5b89\u540c\u5f00\u6e90\u793e\u533a\uff08AOSC\uff09][aosc]\u7684\u9f99\u67b6\u6784\u79fb\u690d\u4e3b\u7ebf\u5316\u5de5\u4f5c\u300c\u5408\u9f99\u300d\u4ecd\u5728\u5982\u706b\u5982\u837c\u8fdb\u884c\u4e2d\uff0c\\n \u6b64\u5de5\u4f5c\u5b8c\u6210\u540e\u9f99\u67b6\u6784\u5c06\u5347\u683c\u4e3a AOSC OS \u7684 Tier 1 \u67b6\u6784\u3002\\n \u6b22\u8fce\u540c\u5b66\u4eec\u8bd5\u7528\u3001\u53cd\u9988\uff0c\u4e5f\u6b22\u8fce\u6709\u5fd7\u4e4b\u58eb\u4e00\u540c\u52a0\u5165\uff08\u6c9f\u901a\u6e20\u9053\u8be6\u89c1 AOSC \u7f51\u7ad9\u76f8\u5173\u680f\u76ee\uff09\u3002\\n* \u672c\u5468\u62a5[\u6301\u7eed\u63a5\u53d7\u7f51\u53cb\u6295\u7a3f][call-for-submissions]\u3002\u6b22\u8fce\u6765\u4e0a\u6e38\u5750\u5750\uff01\\n\\n[aosc]: https://aosc.io\\n[call-for-submissions]: https://github.com/loongson-community/areweloongyet/issues/16"},{"id":"this-week-in-loongarch-29","metadata":{"permalink":"/newsletter/this-week-in-loongarch-29","editUrl":"https://github.com/loongson-community/areweloongyet/newsletter/2023-12-18-this-week-in-loongarch-29/index.md","source":"@site/newsletter/2023-12-18-this-week-in-loongarch-29/index.md","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 29 \u671f","description":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01","date":"2023-12-18T15:30:00.000Z","formattedDate":"2023\u5e7412\u670818\u65e5","tags":[{"label":"\u6bcf\u5468\u4e00\u9f99","permalink":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99"}],"readingTime":13.645,"hasTruncateMarker":true,"authors":[{"name":"WANG Xuerui","title":"\ud83d\udc32\u9f99\u95e8\u5ba2\u6808\u6253\u6742\u7684","url":"https://github.com/xen0n","imageURL":"https://github.com/xen0n.png","key":"xen0n"}],"frontMatter":{"slug":"this-week-in-loongarch-29","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 29 \u671f","authors":["xen0n"],"date":"2023-12-18T15:30:00.000Z","tags":["\u6bcf\u5468\u4e00\u9f99"]},"unlisted":false,"prevItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 30 \u671f","permalink":"/newsletter/this-week-in-loongarch-30"},"nextItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 28 \u671f","permalink":"/newsletter/this-week-in-loongarch-28"}},"content":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01\\n\u4e0a\u5468\u7684\u8fdb\u5c55\u4e3b\u8981\u6709\u793e\u533a\u7248\u9f99\u82af SIMD \u6307\u4ee4\u6587\u6863\u30013A6000 \u793e\u533a\u7248\u8d85\u9891\u56fa\u4ef6\uff0c\u4ee5\u53ca ABI\u3002\\n\u8be6\u60c5\u70b9\u8fdb\u6765\u770b\uff01\\n\\n\x3c!-- truncate --\x3e\\n\\n\u5982\u65e0\u7279\u522b\u8bf4\u660e\uff0c\u6587\u4e2d\u63d0\u53ca\u7684\u65e5\u671f\u3001\u65f6\u95f4\u90fd\u4e3a\u5317\u4eac\u65f6\u95f4\uff08UTC+8\uff09\u3002\\n\\n## \u5148\u300c\u9a6c\u300d\u518d\u770b {#marked-projects}\\n\\n\u672c\u680f\u76ee\u7684\u5185\u5bb9\u5177\u6709\u4e00\u5b9a\u5ef6\u7eed\u6027\uff0c\u5c06\u6301\u7eed\u8ffd\u8e2a\u62a5\u9053 LoongArch® \u9886\u57df\u7684\u91cd\u8981\u6216\u957f\u671f\u9879\u76ee\uff08\u5751\uff09\u3002\\n\\n### Linux {#linux}\\n\\nLinux 6.6 LTS \u5206\u652f\u65e5\u524d[\u5411\u540e\u79fb\u690d\u4e86](https://git.kernel.org/pub/scm/linux/kernel/git/stable/stable-queue.git/diff/queue-6.6/loongarch-mark-dmw-tlb-_virt_to_page-exports-as-non-.patch?id=f5b20a28332e98771485a6ebbd97791f4031f6a5)\u653e\u5bbd\\n`{dmw,virt}_to_page` \u4e24\u4e2a\u7b26\u53f7\u7684\u8bb8\u53ef\u8bc1\u8981\u6c42\u7684\u63d0\u4ea4\u3002\\n\u8fd9\u610f\u5473\u7740 OpenZFS 2.2.x \u5c06\u53ef\u642d\u914d Linux 6.6.x \u7cfb\u5217\u4e2d\u7684 6.6.8 \u6216\u66f4\u9ad8\u7248\u672c\u4f7f\u7528\u4e86\u3002\\n\\n### \u5de5\u5177\u94fe {#toolchain}\\n\\n#### ABI {#abi}\\n\\n[\u5b89\u540c\u5f00\u6e90\u793e\u533a\uff08AOSC\uff09][aosc]\u5f00\u53d1\u8005[\u738b\u6c5f\u6d25](https://github.com/RedL0tus)\u5728\u9002\u914d JetBrains® \u5f00\u53d1\u73af\u5883\u5168\u5bb6\u6876\u65f6\uff0c\\n\u53d1\u73b0\u6709 [Java \u7ec4\u4ef6](https://github.com/JetBrains/pty4j)\u60f3\u52a8\u6001\u52a0\u8f7d `libutil.so`\uff0c\u800c\u8be5\u5171\u4eab\u5e93\u5728 LoongArch \u4e0a\u5e76\u4e0d\u5b58\u5728\u3002\\n\u5728 glibc \u7684\u5b9e\u73b0\u4e2d\uff0c\u8be5\u5171\u4eab\u5e93\u7684\u6240\u6709\u51fd\u6570\u90fd[\u5408\u5e76\u5165 `libc.so` \u4e86](https://sourceware.org/git/?p=glibc.git;a=commit;h=734c60ebb607086ad6d67b2544d6b7baba72a652)\uff1b\\n\u6b64\u4e8b\u53d1\u751f\u5728 LoongArch \u8fdb\u5165 glibc \u4e0a\u6e38\u4e4b\u524d\uff0c\u56e0\u6b64 glibc \u5728 LoongArch \u4e0a\u81ea\u59cb\u5c31\u4e0d\u63d0\u4f9b\u8be5\u5171\u4eab\u5e93\u3002\\n\u4f46\u540c\u6837\u6765\u81ea AOSC \u7684 [Icenowy](https://github.com/Icenowy) \u7ffb\u67e5\u89c4\u8303\u6587\u6863\u53d1\u73b0 [LSB \u4f3c\u4e4e\u6709\u8981\u6c42\u63d0\u4f9b\u8be5\u6587\u4ef6](https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/libutil.html)\uff0c\\n\u6545[\u5efa\u7acb\u4e86](https://github.com/loongson-community/discussions/issues/29)\u9f99\u82af\u793e\u533a\u7684\u8ddf\u8e2a\u5de5\u5355\uff0c\\n\u4ee5\u53ca\u76f8\u5e94\u7684 [glibc \u95ee\u9898\u62a5\u544a](https://sourceware.org/bugzilla/show_bug.cgi?id=31136)\u3002\\n\u6839\u636e\u76ee\u524d\u7684\u4e0a\u6e38\u53e3\u5f84\uff0c\u4f3c\u4e4e\u63d0\u4f9b\u4e00\u4e2a\u6307\u5411 `libc.so` \u7684\u7b26\u53f7\u94fe\u63a5\u5c31\u8db3\u591f\u4e86\u3002\\n\\n## \u6742\u95fb\u64ad\u62a5 {#assorted-news}\\n\\n### .net {#dotnet}\\n\\n\u9f99\u82af\u4e2d\u79d1\u7684\u5de5\u7a0b\u5e08[\u4e54\u9e4f\u7a0b](https://github.com/shushanhf)\u5728 2023 \u5e74 12 \u6708 16 \u65e5\u4e3e\u884c\u7684\\n.NET Conf China 2023 \u4ecb\u7ecd\u4e86 LoongArch .net/Mono \u76f8\u5173\u8fdb\u5c55\uff1a\\n\\n* .net 8.0 EA \u7248\u7684\u65b0\u4e16\u754c\u4e8c\u8fdb\u5236\u5df2\u7ecf\u6709\u9996\u4e2a\u53d1\u5e03\u7248\u672c\uff1a[GitHub \u9875\u9762](https://github.com/shushanhf/LoongArch64-Blog-for-.NET-Mono/releases/tag/sdk8.0.0-LA64-newABI-upstream)\\n- Mono LoongArch \u652f\u6301\u9884\u8ba1 2024Q1 \u5f00\u59cb\u63a8\u9001\u793e\u533a\uff0c\u8ba1\u5212\u5728 2024 \u5e74 7 \u6708\u4e4b\u524d\u5b8c\u6210\\n- Unity®\uff08\u56e2\u7ed3\u5f15\u64ce\uff09\u5df2\u4e0e LoongArch \u5b8c\u6210\u9002\u914d\\n\\n\u51fa\u4e8e\u5386\u53f2\u539f\u56e0\uff0c\u5f00\u6e90\u4e16\u754c\u5bf9\u4e8e .net/Mono \u7684\u5173\u6ce8\u5ea6\u5e76\u4e0d\u9ad8\uff0c\u4f46 .net/Mono \u662f Unreal\uff08\u865a\u5e7b\uff09\u3001Unity\uff08\u56e2\u7ed3\uff09\u3001Godot\\n\u7b49\u6e38\u620f\u5f15\u64ce\u7684\u6838\u5fc3\u7ec4\u4ef6\uff0c\u4e5f\u662f\u5927\u91cf\u5546\u4e1a\u516c\u53f8\u90e8\u7f72\u684c\u9762\u3001\u670d\u52a1\u7aef\u4ea7\u54c1\u7684\u91cd\u8981\u751f\u6001\u3002LoongArch .net/Mono port\\n\u63a8\u9001\u8ba1\u5212\u660e\u786e\uff0c\u5bf9\u4e8e\u666e\u901a\u684c\u9762\u7528\u6237\uff0c\u5373\u4f7f\u4e3a\u4e86\u6253\u6e38\u620f\uff0c\u90a3\u4e5f\u662f\u6781\u597d\u7684\u3002\\n\\n\x3c!-- https://github.com/loongson-community/areweloongyet/assets/5524744/cd444646-6449-40f1-a418-8ca16d307ae2 --\x3e\\n![\u4f1a\u8bae\u73b0\u573a\u56fe\u7247 1](./dotnet-1.jpg)\\n\\n\x3c!-- https://github.com/loongson-community/areweloongyet/assets/5524744/ff3b38e8-2c42-4e8d-8b70-491ca42a6bb1 --\x3e\\n![\u4f1a\u8bae\u73b0\u573a\u56fe\u7247 2](./dotnet-2.jpg)\\n\\n\u4ee5\u4e0a\u7684\u65b0\u95fb\u7531 [phorcys] \u4e3a\u60a8\u64ad\u62a5\u3002\\n\\n### Gentoo {#gentoo}\\n\\n[xen0n](https://github.com/xen0n) \u6b63\u5728 Gentoo \u63a8\u8fdb LoongArch \u7684\u5b89\u88c5 CD \u4e0e LLVM/Clang stage3 \u7684\u6784\u5efa\u5de5\u4f5c\u3002\\n\u4e3a\u6b64\u9700\u8981\u7ed9 Gentoo \u53d1\u884c\u7248\u5185\u6838\uff08dist kernel\uff09[\u589e\u52a0](https://github.com/gentoo/gentoo/pull/34291)\\nLoongArch \u652f\u6301\uff0c\u4ee5\u53ca[\u589e\u52a0](https://github.com/gentoo/gentoo/pull/34324) Clang profiles\uff1b\\n\u4ed6\u89c9\u5f97\u5728 2024 \u5230\u6765\u4e4b\u524d\u6709\u671b\u5b8c\u6210\u8fd9\u4e24\u90e8\u5206\u5de5\u4f5c\u3002\\n\\n### Ghidra {#ghidra}\\n\\n\u8fd1\u65e5\uff0c\u7f8e\u56fd\u56fd\u5bb6\u5b89\u5168\u5c40\uff08NSA\uff09\u4e3a Ghidra\\n[\u589e\u52a0\u4e86](https://github.com/NationalSecurityAgency/ghidra/commit/0f09d6fed3b1c884f1843bda5ec1bf1dfbada06c) LoongArch \u652f\u6301\uff0c\\n\u5c06\u4e8e Ghidra 10.5 \u6b63\u5f0f\u53d1\u5e03\u3002Ghidra \u662f NSA \u4e3b\u5bfc\u5f00\u53d1\u7684\u8f6f\u4ef6\u9006\u5411\u5de5\u7a0b\u6846\u67b6\uff0c\u4e3a\u8fd1\u5e74\u5168\u7403\u4fe1\u606f\u5b89\u5168\u9886\u57df\u7684\u4ece\u4e1a\u8005\u6240\u9010\u6e10\u91c7\u7528\u3002\\n\u611f\u8c22[\u6770\u54e5][jiegec]\u63d0\u4f9b\u65b0\u95fb\u7ebf\u7d22\u3002\\n\\n
\\n\u81f4\u5173\u5fc3\u6b64\u4e8b\u7684\u4e2d\u56fd\u7acb\u573a\u7f51\u53cb\u4eec\\n\\n\u5c3d\u7ba1\u672c\u7ad9\u8c08\u8bba\u6280\u672f\u8bdd\u9898\u5c3d\u91cf\u4e0d\u6d89\u53ca\u653f\u6cbb\u4e0e\u4eba\u4e8b\uff0c\u4f46\u7531\u4e8e NSA \u7684\u9690\u853d\u6218\u7ebf\u80cc\u666f\u5341\u5206\u660e\u663e\uff0c\\n\u7b14\u8005\u5408\u7406\u63a8\u6d4b\u90a3\u4e9b\u7ad9\u5728\u4e2d\u56fd\u5229\u76ca\u4e00\u8fb9\uff0c\u4f46\u4e0d\u719f\u6089\u4fe1\u606f\u5b89\u5168\u9886\u57df\u7684\u7f51\u53cb\u4eec\uff0c\u4f1a\u5bf9\u6b64\u6709\u8bf8\u591a\u7591\u8651\u3002\\n\u4ee5\u4e0b\u662f\u7b14\u8005\u7ad9\u5728\u4e2a\u4eba\u7acb\u573a\u7684\u5206\u6790\uff1a\\n\\n\u4efb\u4f55\u53d7\u5230\u5e7f\u6cdb\u652f\u6301\u7684\u67b6\u6784\uff0c\u90fd\u514d\u4e0d\u4e86\u88ab\u5b89\u5168\u7814\u7a76\u8005\u4eec\u4ed4\u7ec6\u5ba1\u89c6\u3002LoongArch \u4f5c\u4e3a\u56fd\u5185\u5916\u7684\u4ea7\u4e1a\u754c\u3001\u5f00\u6e90\u793e\u533a\u591a\u5c11\u90fd\u5728\u62e5\u62b1\u7684\u4e00\u95e8\u65b0\u5174\u67b6\u6784\uff0c\\n\u5b83\u53d7\u5230 NSA \u9879\u76ee\u7ec4\u91cd\u89c6\u5e76\u8fdb\u5165 Ghidra \u5168\u5bb6\u6876\uff0c\u662f\u5fc5\u7136\u7684\u53d1\u5c55\u3002\\n\u67d0\u79cd\u7a0b\u5ea6\u4e0a\uff0c\u8fd9\u4e5f\u80fd\u8d77\u5230\u79ef\u6781\u6548\u679c\u2014\u2014\u903c\u8feb\u9f99\u82af\u53ca\u793e\u533a\u7684\u53c2\u4e0e\u8005\u4eec\uff0c\u5fc5\u987b\u901a\u8fc7\u53ef\u516c\u5f00\u7684\u7cbe\u5fc3\u8bbe\u8ba1\u5b9e\u73b0\u8f6f\u786c\u4ef6\u7684\u6574\u4f53\u5b89\u5168\uff0c\\n\u800c\u4e0d\u80fd\u6307\u671b\u9760\u7740\u5411\u516c\u4f17\u9690\u85cf\u4ec0\u4e48\u4e1c\u897f\u6765\u6362\u53d6\u6682\u65f6\u7684\u300c\u5b89\u5168\u611f\u300d\u3002\\n\\n\u5b9e\u9645\u4e0a\uff1a\u5373\u4fbf LoongArch \u6587\u6863\u59cb\u7ec8\u4e0d\u88ab\u516c\u5f00\uff0c\u5728\u8db3\u591f\u591a\u7684\u793e\u533a\u6210\u5458\u6298\u817e\u8fc7\u540e\uff0c\u540c\u6837\u7684\u6587\u6863\u88ab\u5199\u51fa\u4e5f\u53ea\u662f\u65f6\u95f4\u95ee\u9898\u2014\u2014\u4f8b\u5982\u5728\u300a\u9f99\u82af\u67b6\u6784\u53c2\u8003\u624b\u518c\u300b\u5377\u4e00\u5c1a\u672a\u516c\u5e03\u7684\\n2021 \u5e74 3 \u6708\u521d\uff0cxen0n \u8fd8\u662f[\u80fd\u591f\u638f\u51fa](https://github.com/loongson-community/docs/pull/4)\u4fdd\u771f\u5ea6\u76f8\u5f53\u9ad8\u7684\u57fa\u7840\u6307\u4ee4\u6587\u6863\u3002\\n\u867d\u7136\u4e8b\u540e\u770b\u6765\u8fd9\u4efd\u6587\u6863\u7684\u9519\u8bef\u4e0d\u5c11\uff0c\u4f46\u8bf7\u6ce8\u610f\uff1a\u5f53\u65f6 LoongArch \u4e0d\u5149\u6ca1\u6709\u516c\u5f00\u6587\u6863\uff0c\u751a\u81f3\u5728\u516c\u5f00\u6e20\u9053\u8fde\u786c\u4ef6\u90fd\u6ca1\u6709\uff0c\\n\u800c\u8fd9\u4e9b\u4fe1\u606f\u53ea\u9700\u8981\u6709\u8db3\u91cf\u7684\u673a\u5668\u8bed\u8a00\uff0c\u9760\u8111\u5b50\u5c31\u8db3\u4ee5\u63ed\u9732\u4e86\u3002\\n\u5982\u679c\u5f53\u65f6\u80fd\u591f\u6478\u5230\u771f\u5b9e LoongArch \u786c\u4ef6\u4ee5\u5b9e\u9645\u9a8c\u8bc1\u60f3\u6cd5\uff0c\u6216\u8005\u5c06\u66f4\u591a\u673a\u5668\u8bed\u8a00\u6750\u6599\u52a0\u5165\u5206\u6790\uff0c\\n\u90a3\u4e48\u8ba9\u6587\u6863\u7684\u51c6\u786e\u7387\u8fbe\u5230 100% \u4e5f\u4e0d\u662f\u4ec0\u4e48\u96be\u4e8b\u3002\\n\\n\u8fd9\u5176\u5b9e\u610f\u5473\u7740\uff0c\u5982\u679c\u4e00\u4e2a\u67b6\u6784\u60f3\u4e0d\u88ab\u5b89\u5168\u7814\u7a76\u8005\u4eec\u76ef\u4e0a\uff0c\u53ea\u6709\u8ba9 :ta: \u4eec\u786c\u4ef6\u8f6f\u4ef6\u90fd\u62ff\u4e0d\u5230\uff1b\\n\u4f46\u8fd9\u6837\u4e00\u6765\uff0c\u4e5f\u5c31\u4e0d\u53ef\u80fd\u5c06\u6b64\u67b6\u6784\u5927\u9762\u79ef\u63a8\u5e7f\u4e86\u3002\\n\\n\uff08\u6b64\u5916\uff0c\u63a5\u4e0b\u6765\u5c06\u4e3a\u60a8\u62a5\u9053\u7684\u793e\u533a\u5236 3A6000 \u8d85\u9891\u56fa\u4ef6\uff0c\u5c31\u662f\u90a3\u4f4d\u4fe1\u606f\u5b89\u5168\u4ece\u4e1a\u8005\u4f7f\u7528 Ghidra\\n\u7814\u7a76\u3001\u64cd\u4f5c\u9f99\u82af\u56fa\u4ef6\u7684\u7ed3\u679c\u3002\\n\u8003\u8651\u5230\u300c\u771f\u6b63\u654f\u611f\u7684\u4fe1\u606f\u4e0d\u4f1a\u88ab\u516c\u5f00\u300d\u8fd9\u4e00\u70b9\uff0cNSA \u9009\u62e9\u5c06 Ghidra \u5f00\u6e90\uff0c\u53ef\u80fd\u4e5f\u662f\u5bf9\u5168\u7403\u540c\u884c\u7684\u8d21\u732e\u4e86\u3002\u2014\u2014\u7531\u4e8e\u4e2d\u56fd\u540c\u884c\u4eec\u5e76\u672a\u5c06\u81ea\u5df1\u7684\u7c7b\u4f3c\u6846\u67b6\u4e5f\u5f00\u6e90\uff0c\\n\u4e3a :ta: \u4eec\u62c5\u5fc3\u7684\u4e2d\u56fd\u7acb\u573a\u7f51\u53cb\u4eec\uff0c\u4e5f\u53ef\u4ee5\u653e\u5fc3\u4e86\u3002\uff09\\n\\n
\\n\\n## \u793e\u533a\u6574\u6d3b:\u513f: {#grins}\\n\\n\u672c\u680f\u76ee\u63a5\u53d7\u4efb\u4f55\u7f51\u53cb\u7684\u6295\u7a3f\uff0c\u53ea\u8981\u5185\u5bb9\u4e0e LoongArch® \u6709\u5173\uff0c\u5e76\u53ef\u4ee5\u4e3a\u8bfb\u8005\u5e26\u6765\u4ef7\u503c\uff0c\\n\u65e0\u8bba\u4e25\u8083\u8d21\u732e\uff08\u6574\u7684\u5927\u6d3b:\u513f:\uff09\u6216\u662f\u535a\u541b\u4e00\u7b11\u90fd\u4e00\u6982\u6b22\u8fce\uff01\\n\\n\u4e5f\u8bb8\u662f\u70ed\u5fc3\u7fa4\u4f17\u89c9\u5f97\u5feb\u5230\u5e74\u672b\u4e86\uff0c\u793e\u533a\u91cc\u65b0\u95fb\u8fd8\u4e0d\u591f\u5927\uff1b\\n\u56e0\u6b64\u5728\u5168\u56fd\u964d\u6e29\u7684\u80cc\u666f\u4e0b\uff0c\u6211\u4eec\u7684\u52c7\u58eb\u4eec\u8fd8\u662f\u633a\u8eab\u800c\u51fa\uff0c\u7528\u72e0\u6d3b:\u513f:\u52a0\u70ed\u5c4f\u5e55\u524d\u9605\u8bfb\u5468\u62a5\u7684\u60a8\\n\uff08\u548c\u60a8\u7684\u7535\u8111\u4e3b\u673a\u2014\u2014\u5982\u679c\u60a8\u770b\u5b8c\u4e4b\u540e\u4e5f\u70ed\u8840\u6cb8\u817e\uff0c\u800c\u51b3\u5b9a\u4e0a\u624b\u5e72\u70b9\u5565\u7684\u8bdd\uff09\uff01\\n\\n### 3A6000 XA61200 \u5b98\u65b9\u56fa\u4ef6\u7206\u6539\u8d85\u9891\uff01\\n\\n\u5728\u534e\u7855[\u53d1\u5e03\u4e86](https://www.bilibili.com/video/BV15u4y1A7aK) 3A6000 \u8d85\u9891\u89c6\u9891\u540e\uff0c\\n\u5bf9 3A6000 \u8d85\u9891\u7684\u5173\u6ce8\u4e00\u4e0b\u5b50\u591a\u4e86\u8d77\u6765\u3002\\n\\n\u867d\u7136\u9f99\u82af\u4e2d\u79d1\u7684\u56fa\u4ef6\u5de5\u7a0b\u5e08 [@MarsDoge] \u5df2\u7ecf\u5728\u8bc4\u8bba\u533a[\u63d0\u5230](https://github.com/loongson/Firmware/pull/79#issuecomment-1832171459)\uff0c\\n\u4f1a\u5728\u4e0b\u4e2a\u53d1\u5e03\u5468\u671f\uff082024 \u5e74 2 \u6708\uff09\u63d0\u4f9b\u56fa\u4ef6\u7684\u8d85\u9891\u9009\u9879\uff0c\u4f46\u793e\u533a\u7684\u5c0f\u4f19\u4f34\uff0c\u5df2\u7ecf\u5b8c\u5168\u7b49\u4e0d\u53ca\u4e86\u3002\\n\\nBilibili \u7528\u6237 [nywkkk]\uff08GitHub [@naivekun]\uff0918 \u65e5\u51cc\u6668[\u53d1\u5e03\u4e86](https://www.bilibili.com/video/BV11a4y1r7Qc)\u81ea\u5236\u7684\\nXA61200 \u4e3b\u677f\uff083A6000\uff09\u624b\u52a8\u81ea\u5b9a\u4e49\u8d85\u9891\u56fa\u4ef6\u3002\\n\\n[@MarsDoge]: https://github.com/MarsDoge\\n[nywkkk]: https://space.bilibili.com/25097496\\n[@naivekun]: https://github.com/naivekun\\n\\nnywkkk \u4e0a\u5468\u6839\u636e\u624b\u518c\u9006\u5411\u5e76\u4fee\u6539\u4e86\u4e3b\u677f UEFI \u56fa\u4ef6\uff0c\u901a\u8fc7\u4e8c\u8fdb\u5236\u4fee\u6539 PEI\uff08Pre-EFI Initialization\uff0cEFI \u524d\u521d\u59cb\u5316\uff09\u9636\u6bb5\\nPLL \u914d\u7f6e\uff0c\u8fbe\u6210\u4e86 3A6000 \u7684 2.7GHz \u8d85\u9891\uff1b:ta:\\n\u5c06\u6539\u597d\u7684\u56fa\u4ef6\u6587\u4ef6\u5728 GitHub \u4e0a[\u53d1\u5e03\u4e86](https://github.com/naivekun/ls3a6000-overclock-firmware)\u3002\\n\u672c\u5468 :ta: \u518d\u8fdb\u4e00\u6b65\uff0c\u7f16\u5199\u4e86\u8d85\u9891 UEFI PEI \u6a21\u5757\u5e76[\u516c\u5f00\u4e86](https://github.com/naivekun/LoongsonOverclockPkg)\u6a21\u5757\u6e90\u7801\uff1a\\n\u8be5\u6a21\u5757\u63d2\u5165\u4e3b\u677f\u56fa\u4ef6 PEI \u542f\u52a8\u94fe\u540e\uff0c\u53ef\u4ee5\u5b9e\u73b0\u5bf9\u7535\u538b\u3001\u9891\u7387\u7684\u81ea\u5b9a\u4e49\u8c03\u8282\u3002\\n\\n\u5237\u5165\u4fee\u6539\u7248\u56fa\u4ef6\u540e\uff0c\u4e5f\u53ef\u4ee5\u5728 UEFI shell \u4e2d\u901a\u8fc7\u65b0\u589e\u7684 `overclock` \u547d\u4ee4\u8c03\u8282\u5904\u7406\u5668\u7535\u538b\uff0c\u9891\u7387\uff0c\u91cd\u542f\u540e\u751f\u6548\u3002\\n\u4f46\u5982\u679c\u9891\u7387\u6216\u7535\u538b\u592a\u9ad8\uff0c\u5219\u4f1a\u53d8\u7816\uff0c\u9700\u8981\u901a\u8fc7 SPI \u7f16\u7a0b\u5668\u5237\u5199\u56fa\u4ef6\uff0c\u6216\u8005\u5207\u6362\u5230\u4e3b\u677f\u5907\u7528\u56fa\u4ef6\u540e\u91cd\u5237\u56fa\u4ef6\u6765\u89e3\u51b3\u95ee\u9898\u3002\\n\u6ca1\u6709 SPI \u7f16\u7a0b\u5668\uff08CH341A\u3001FT2232 \u6216\u7c7b\u4f3c\u65b9\u6848\uff09\u7684\u7528\u6237\u53ef\u80fd\u4f1a\u9762\u4e34\u65e0\u6cd5\u6551\u7816\u7684\u98ce\u9669\u3002\\n\\n\u4e0d\u8fc7\uff0c\u7531\u4e8e 3A6000 \u548c 7A2000 \u7684\u5404\u4e2a\u9891\u7387\u57df\u8026\u5408\u5173\u7cfb\u6bd4\u8f83\u591a\uff0c\u76ee\u524d\u4fee\u6539\u56fa\u4ef6\u53ea\u662f\u521d\u6b65\u89e3\u51b3\u4e86\u9891\u7387\u3001\u7535\u538b\u7684\u8c03\u8282\uff0c\u6ca1\u6709\u5f7b\u5e95\u89e3\u8026\u3002\\n\u63d0\u9ad8\u8fd0\u884c\u9891\u7387\u4f1a\u5bf9 HT\u3001DDR \u548c\u6865\u7247\u9891\u7387\u6709\u5f71\u54cd\uff0c\u4f46\u731c\u6d4b\u5927\u90e8\u5206 3A6000 \u53ef\u4ee5\u8f7b\u677e\u8d85\u9891\u5230 2.7~2.8GHz \u7a33\u5b9a\u8fd0\u884c\uff0c\\n\u521a\u597d\u5bf9\u5e94\u8001\u80e1\u63d0\u5230\u7684\u300c3A6000 \u6709 200MHz \u777f\u9891\u63d0\u5347\u7a7a\u95f4\u300d\u3002\\n\u548c\u5927\u591a\u6570 Intel\u3001AMD CPU \u8d85\u9891\u4e00\u6837\uff0c\u5355\u901a\u9053\u5185\u5b58\u4f1a\u51cf\u5c11\u8d85\u9891\u96be\u5ea6\u4ee5\u53ca\u589e\u52a0\u7a33\u5b9a\u6027\u3002\\n\\n:::danger\\n\u867d\u7136\u76ee\u524d\u8d85\u9891\u81f3 2.8GHz \u4f1a\u5e26\u6765 10%~15% \u7684\u6027\u80fd\u63d0\u5347\uff0c\u4f46\u4ecd\u7136\u4e0d\u63a8\u8350\u666e\u901a\u7528\u6237\u8fdb\u884c\u8d85\u9891\u3002\\n\u8d85\u9891\u6709\u53ef\u80fd\u4f1a**\u6c38\u4e45\u635f\u574f**\u4f60\u7684 CPU \u548c\u4e3b\u677f\uff0c\u6709\u65f6\u4e5f\u4f1a\u8fde\u5e26\u635f\u574f\u5185\u5b58\u3001PCIe \u8bbe\u5907\u3002\\n\u5c24\u5176\u76ee\u524d 3A6000 \u8d85\u9891\u5c5e\u4e8e\u6781\u65e9\u671f\u6d4b\u8bd5\uff0c\u5e76\u6ca1\u6709\u660e\u786e\u7684\u7535\u538b\u9891\u7387\u5b89\u5168\u533a\u95f4\u3002\\n\u56e0\u6b64**\u8bf7\u52a1\u5fc5\u786e\u4fdd\u4f60\u5df2\u7ecf\u660e\u786e\u4e0a\u8ff0\u98ce\u9669\uff0c\u5e76\u51c6\u5907\u597d\u518d\u4e70\u4e00\u5757\u4e3b\u677f\u7684\u94b1**\uff0c\u518d\u8fdb\u884c\u8d85\u9891\u3002\\n:::\\n\\nnywkkk \u8fd8\u540c\u6b65[\u5f00\u53d1\u4e86](https://github.com/naivekun/ls3a6000_freq_tool)\u7528\u6765\u67e5\u770b\u9891\u7387\u529f\u8017\u7684\u5de5\u5177\u3002\\n\u6b64\u5de5\u5177\u9700\u8981\u540d\u4e3a `devmem` \u7684\u5de5\u5177\u8f85\u52a9\uff08\u672a\u7ed9\u51fa\u6e90\u7801\uff0c\u4f46\u770b\u4e0a\u53bb\u5b9e\u73b0\u8f83\u4e3a\u7b80\u5355\uff0c\u81ea\u5df1\u5199\u4e00\u4e2a\u5373\u53ef\uff09\uff0c\u4e14\u642d\u914d 4.19 \u5185\u6838\u4f7f\u7528\u3002\\n\u4ee5\u4e0b\u662f :ta: \u5728 Bilibili \u89c6\u9891\u8bc4\u8bba\u533a\u5c55\u793a\u4e86 :ta: \u5c06 3A6000 \u8d85\u9891\u81f3 2.8GHz \u65f6\u6ee1\u8f7d\u6d4b\u8bd5\u7684\u622a\u56fe\uff1a\\n\\n\x3c!-- https://github.com/loongson-community/areweloongyet/assets/5524744/61208f01-d939-4619-a85d-180d6e855cfa --\x3e\\n![3A6000 \u8d85\u9891\u4e4b\u540e 7z benchmark \u4e0e\u540c\u65f6\u7684\u65f6\u949f\u3001\u7535\u538b\u3001\u529f\u7387\u4fe1\u606f\u663e\u793a](./3a6000-at-2.8ghz-running-7z-and-freq.jpg)\\n\\n\\n\u63a8\u8350\u611f\u5174\u8da3\u7684\u540c\u5b66\u79fb\u6b65 naivekun \u540c\u5b66\u7684\u4e2a\u4eba\u7f51\u7ad9\uff0c\u9605\u8bfb :ta: \u4eb2\u7b14\u7684[\u539f\u7406\u8bb2\u89e3\u6587\u7ae0](https://naivekun.com/2023/12/loongson-3a6000-overclock/)\u3002\\n\\n\u672c\u680f\u76ee\u7531 [phorcys] \u4e3a\u60a8\u64ad\u62a5\uff08\u6587\u5b57\u6709\u5c11\u8bb8\u7f16\u8f91\uff09\u3002\\n\\n[phorcys]: https://github.com/phorcys\\n\\n### \u9f99\u82af SIMD \u6307\u4ee4\u6587\u6863\uff1a\u73b0\u5df2\u63a8\u51fa\u793e\u533a\u7248\uff01\\n\\n\u8fd8\u5728\u4e3a\u9f99\u82af\u8fdf\u8fdf\u4e0d\u653e\u51fa\u300a\u9f99\u82af\u67b6\u6784\u53c2\u8003\u624b\u518c\u300b\u7b2c\u4e8c\u5377\uff0cSIMD \u6307\u4ee4\u660e\u660e\u653e\u5728\u773c\u524d\u5374\u4e0d\u77e5\u9053\u600e\u4e48\u7528\uff0c\u800c\u611f\u5230\u4e3a\u96be\uff1f\\n\u611f\u8c22[\u6770\u54e5][jiegec]\uff1a\u73b0\u5728\u4e0d\u7528\u7b49\u4e86\uff01\\n\\n\u300c\u5728 LoongArch \u7b2c\u4e8c\u5377\u5411\u91cf\u6307\u4ee4\u96c6\u6587\u6863\u6ca1\u6709\u653e\u51fa\u7684\u60c5\u51b5\u4e0b\uff0c\u793e\u533a\u5f00\u53d1\u8005\u5bf9\u4e00\u4e9b\u8f6f\u4ef6\u8fdb\u884c SIMD \u52a0\u901f\u7684\u79fb\u690d\u4f1a\u9762\u4e34\u5f88\u5927\u7684\u56f0\u96be\u3002\\n\u56e0\u6b64\uff0c\u6211\u5f00\u59cb\u6839\u636e\u516c\u5f00\u4ee3\u7801\uff08QEMU \u548c GCC\uff09\u6574\u7406 LSX/LASX intrinsics \u7684\u6587\u6863\uff0c\\n\u4ed3\u5e93[\u6258\u7ba1\u5728 GitHub \u4e0a](https://github.com/jiegec/unofficial-loongarch-intrinsics-guide/)\uff0c\\n\u76ee\u524d[\u90e8\u7f72\u5728\u4e2a\u4eba\u7f51\u7ad9\u4e0a](http://jia.je/unofficial-loongarch-intrinsics-guide/)\uff0c\\n\u6b22\u8fce\u8bd5\u7528\u548c\u63d0\u4ea4\u8d21\u732e\u3002\\n\\n\u300c\u76ee\u524d\u5df2\u7ecf\u5b8c\u6210\u6240\u6709\u7684 LSX \u548c LASX intrinsics\uff0c\u5e76\u4e14\u6d4b\u91cf\u4e86\u5411\u91cf\u6307\u4ee4\u5728\u4e24\u4ee3 LA \u5904\u7406\u5668\u4e0a\u7684\u5ef6\u8fdf\u548c\u541e\u5410\u3002\\n\u540c\u65f6\u4e5f\u9a8c\u8bc1\u4e86\u4e4b\u524d\u63d0\u5230\u8fc7\u7684 `vshuf/xvshuf` \u7684 LA464 \u548c LA664 \u4e0d\u4e00\u81f4\u7684\u884c\u4e3a\uff0c\\n\u5e76\u4e14\u53e6\u5916\u53d1\u73b0 `xvpermi.q` \u4e5f\u6709\u7c7b\u4f3c\u95ee\u9898\uff0c\\n\u89c1 [The Guide](http://jia.je/unofficial-loongarch-intrinsics-guide/viewer/?q=MACHINE_3C5000)\u3002\u300d\\n\\n[jiegec]: https://github.com/jiegec\\n\\n\u672c\u680f\u76ee\u7531[\u6770\u54e5][jiegec]\u4e3a\u60a8\u64ad\u62a5\uff08\u6587\u5b57\u6709\u5c11\u8bb8\u7f16\u8f91\uff09\u3002\\n\\n## \u5f20\u8d34\u680f {#bulletin}\\n\\n\u672c\u680f\u76ee\u53ef\u4f9b\u5f20\u8d34\u516c\u76ca\u6027\u8d28\u7684\u5404\u79cd\u4fe1\u606f\u3002\\n\\n* \u53cb\u60c5\u6269\u6563\uff1a[\u5b89\u540c\u5f00\u6e90\u793e\u533a\uff08AOSC\uff09][aosc]\u7684\u9f99\u67b6\u6784\u79fb\u690d\u4e3b\u7ebf\u5316\u5de5\u4f5c\u300c\u5408\u9f99\u300d\u4ecd\u5728\u5982\u706b\u5982\u837c\u8fdb\u884c\u4e2d\uff0c\\n \u6b64\u5de5\u4f5c\u5b8c\u6210\u540e\u9f99\u67b6\u6784\u5c06\u5347\u683c\u4e3a AOSC OS \u7684 Tier 1 \u67b6\u6784\u3002\\n \u6b22\u8fce\u540c\u5b66\u4eec\u8bd5\u7528\u3001\u53cd\u9988\uff0c\u4e5f\u6b22\u8fce\u6709\u5fd7\u4e4b\u58eb\u4e00\u540c\u52a0\u5165\uff08\u6c9f\u901a\u6e20\u9053\u8be6\u89c1 AOSC \u7f51\u7ad9\u76f8\u5173\u680f\u76ee\uff09\u3002\\n* \u8bf7\u5173\u6ce8[\u9f99\u82af\u793e\u533a\u7684\u8ba8\u8bba\u56ed\u5730][discussions-issues]\uff1a\u76ee\u524d\u5927\u5bb6\u7ecf\u5e38\u5728\u8fd9\u91cc\u8ffd\u8e2a\u5de5\u4f5c\u8fdb\u5ea6\u548c\u6d3e\u6d3b:\u513f:\u4e86\u3002\u884c\u6709\u4f59\u529b\u7684\u540c\u5b66\u8bf7\u6765\u62a5\u5230\uff01\\n* \u672c\u5468\u62a5[\u6301\u7eed\u63a5\u53d7\u7f51\u53cb\u6295\u7a3f][call-for-submissions]\u3002\u6b22\u8fce\u6765\u4e0a\u6e38\u5750\u5750\uff01\\n\\n[aosc]: https://aosc.io\\n[call-for-submissions]: https://github.com/loongson-community/areweloongyet/issues/16\\n[discussions-issues]: https://github.com/loongson-community/discussions/issues"},{"id":"this-week-in-loongarch-28","metadata":{"permalink":"/newsletter/this-week-in-loongarch-28","editUrl":"https://github.com/loongson-community/areweloongyet/newsletter/2023-12-11-this-week-in-loongarch-28/index.md","source":"@site/newsletter/2023-12-11-this-week-in-loongarch-28/index.md","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 28 \u671f","description":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01","date":"2023-12-11T07:45:00.000Z","formattedDate":"2023\u5e7412\u670811\u65e5","tags":[{"label":"\u6bcf\u5468\u4e00\u9f99","permalink":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99"}],"readingTime":8.805,"hasTruncateMarker":true,"authors":[{"name":"WANG Xuerui","title":"\ud83d\udc32\u9f99\u95e8\u5ba2\u6808\u6253\u6742\u7684","url":"https://github.com/xen0n","imageURL":"https://github.com/xen0n.png","key":"xen0n"}],"frontMatter":{"slug":"this-week-in-loongarch-28","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 28 \u671f","authors":["xen0n"],"date":"2023-12-11T07:45:00.000Z","tags":["\u6bcf\u5468\u4e00\u9f99"]},"unlisted":false,"prevItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 29 \u671f","permalink":"/newsletter/this-week-in-loongarch-29"},"nextItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 27 \u671f","permalink":"/newsletter/this-week-in-loongarch-27"}},"content":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01\\n\u4e0a\u5468\u7684\u8fdb\u5c55\u4e3b\u8981\u6709\u5de5\u5177\u94fe\u3001\u672c\u7ad9\u9605\u8bfb\u6750\u6599\u7684\u65b0\u589e\uff0c\u4ee5\u53ca\u8bc1\u5b9e\u4e86 3A6000 \u53ef\u4e0a\u6c34\u51b7\uff08\u4f46\u9700\u81ea\u5907\u89d2\u78e8\u673a\u7b49\u673a\u52a0\u5de5\u8bbe\u5907\uff09\u3002\\n\u8be6\u60c5\u70b9\u8fdb\u6765\u770b\uff01\\n\\n\x3c!-- truncate --\x3e\\n\\n\u5982\u65e0\u7279\u522b\u8bf4\u660e\uff0c\u6587\u4e2d\u63d0\u53ca\u7684\u65e5\u671f\u3001\u65f6\u95f4\u90fd\u4e3a\u5317\u4eac\u65f6\u95f4\uff08UTC+8\uff09\u3002\\n\\n## \u5148\u300c\u9a6c\u300d\u518d\u770b {#marked-projects}\\n\\n\u672c\u680f\u76ee\u7684\u5185\u5bb9\u5177\u6709\u4e00\u5b9a\u5ef6\u7eed\u6027\uff0c\u5c06\u6301\u7eed\u8ffd\u8e2a\u62a5\u9053 LoongArch® \u9886\u57df\u7684\u91cd\u8981\u6216\u957f\u671f\u9879\u76ee\uff08\u5751\uff09\u3002\\n\\n### Linux {#linux}\\n\\nHuacai Chen [\u53d1\u51fa\u4e86](https://lore.kernel.org/loongarch/20231209112317.1542046-1-chenhuacai@loongson.cn/)\u672c\u5f00\u53d1\u5468\u671f\u7684\u7b2c\u4e8c\u7ec4\u95ee\u9898\u4fee\u590d\uff0c\\nLinus \u5df2[\u5c06\u5176\u5408\u5e76](https://github.com/torvalds/linux/commit/b10a3ccaf6e39f6290ca29d7c24604082eacaea0)\u5165 tag `v6.7-rc5`\u3002\\n\u4e3b\u8981\u7684\u53d8\u66f4\u6709\uff1a\\n\\n* \u4fee\u590d\u4e86\u4e0a\u671f\u5468\u62a5[\u63d0\u5230\u7684](../2023-12-05-this-week-in-loongarch-27/index.md#linux)\\n BPF JIT \u9519\u8bef\u5b9e\u73b0\uff08[Hengqi Chen][chenhengqi]\uff09\uff0cTiezhu Yang \u4e5f\u4fee\u4e86\u53e6\u4e24\u4e2a\u95ee\u9898\uff1b\\n* \u4fee\u590d\u4e86[\u4e0a\u4e0a\u671f](../2023-11-27-this-week-in-loongarch-26.md#linux)\u3001\u4e0a\u671f\u5468\u62a5\u90fd\u63d0\u5230\u7684\\n `execve` \u4e4b\u540e\u4e22\u5931\u7cfb\u7edf\u8c03\u7528\u53f7\u4fe1\u606f\u7684\u95ee\u9898\uff08[Hengqi Chen][chenhengqi]\uff09\uff1b\\n* \u4fee\u590d\u4e86\u4e0a\u4e0a\u671f\u5468\u62a5\u63d0\u5230\u7684 Clang \u6784\u5efa\u7684\u538b\u7f29\u5185\u6838[\u4e0d\u80fd\u5f15\u5bfc](https://github.com/ClangBuiltLinux/linux/issues/1962)\u7684\u95ee\u9898\uff08[WANG Rui][heiher]\uff09\u3002\\n\\n[chenhengqi]: https://github.com/chenhengqi\\n[heiher]: https://github.com/heiher\\n\\n### \u5de5\u5177\u94fe {#toolchain}\\n\\n#### binutils\\n\\n[Xi Ruoyao][xry111] \u4e3a\u5171\u4eab\u5e93[\u542f\u7528\u4e86](https://sourceware.org/pipermail/binutils/2023-December/130991.html)\\n`la.got` \u5230 `la.pcrel` \u7684 relaxation \u4f18\u5316\u3002\\n\\nmengqinggang [\u610f\u56fe](https://sourceware.org/pipermail/binutils/2023-December/130993.html)\u4e3a\\nLoongArch \u6c47\u7f16\u8bed\u8a00\u589e\u52a0\u53cc\u5f15\u53f7\u62ec\u8d77\u6765\u7684\u7b26\u53f7\u540d\u548c\u5bc4\u5b58\u5668\u540d\u652f\u6301\uff0c\u4f46\u672a\u4e00\u5e76\u7ed9\u51fa\u610f\u6b32\u652f\u6301\u7684\u9700\u6c42\u573a\u666f\u3002Fangrui Song\\n\u968f\u540e\u6307\u51fa\u4e86\u5bc4\u5b58\u5668\u540d\u8fd8\u52a0\u5f15\u53f7\u6709\u70b9\u5947\u602a\uff0c\u5e94\u8be5\u662f\u4e0d\u7528\u652f\u6301\uff1b\u4f5c\u8005\u540c\u610f\u4e86\uff0c\u4f1a\u518d\u6539\u4e00\u7248\u3002\\n\\n:::info \u5f15\u53f7\u8868\u793a\u7b26\u53f7\u540d\u7684\u610f\u4e49\\n\u8fd9\u6837\u505a\u5927\u6982\u662f\u4e3a\u4e86\u652f\u6301\u5f15\u7528\u90a3\u4e9b\u5185\u542b\u5947\u7279\u5b57\u7b26\u7684\u7b26\u53f7\u3002\u4f8b\u5982\u5728 x86 \u4e0a\uff1a\\n\\n```\\nmovq $1, \\"%rax\\" ; \u5411\u540d\u4e3a %rax \u7684\u7b26\u53f7\u6307\u5411\u7684 8 \u5b57\u8282\u4f4d\u7f6e\u5199 1\\nmovq $1, %rax ; \u5411 rax \u5bc4\u5b58\u5668\u5199 1\\n```\\n\\n\u8be6\u89c1 [Xi Ruoyao][xry111] \u7684[\u89e3\u91ca\u6587\u5b57](https://github.com/loongson-community/areweloongyet/pull/105#discussion_r1417857333)\u3002\\n:::\\n\\n#### GCC {#gcc}\\n\\n[\u6770\u54e5][jiegec]\u4e09\u5929\u524d\\n\uff0812 \u6708 8 \u65e5\uff09[\u53d1\u73b0](https://github.com/loongson-community/discussions/issues/23)\\nGCC 14 \u7684 20231203 \u5feb\u7167\u7248\u672c\uff0c\u76f8\u6bd4 GCC 13.2.1 \u5c45\u7136\u52a3\u5316\u4e86 3A6000 \u7684 CoreMark \u8dd1\u5206\u9ad8\u8fbe 15%\uff01Xi Ruoyao\\n\u7acb\u5373\u52a0\u5165\u6392\u67e5\u961f\u4f0d\u3002\\n\u5927\u5bb6\u53d1\u73b0\u4e86\u81f3\u5c11 4 \u4e2a\u5f7c\u6b64\u72ec\u7acb\u7684\u95ee\u9898\uff1a\\n\\n* [PR112919]\uff1a\u5148\u524d\u5728 LA464 \u4e0a\u8bc1\u5b9e\u6700\u4f18\u7684\u4ee3\u7801\u5757\u5bf9\u9f50\u53c2\u6570\uff0c\u5bf9 LA664 \u53cd\u800c\u662f\u635f\u5bb3\uff1b\\n* [PR112935]\uff1a\u67b6\u6784\u65e0\u5173\u90e8\u5206\u53d1\u751f\u4e86\u52a3\u5316\uff0cAndrew Pinski\\n \u5df2\u7ecf[\u7ed9\u51fa](https://gcc.gnu.org/pipermail/gcc-patches/2023-December/640030.html)\u8865\u4e01\uff1b\\n* [PR112936]\uff1a\u6392\u67e5\u4e0a\u4e00\u4e2a\u95ee\u9898\u65f6\uff0c\u53d1\u73b0 LoongArch \u7684\u4e58\u9664\u6cd5\u6307\u4ee4\u6210\u672c\u5b9a\u4e49\u5f97\u975e\u5e38\u574f\uff0c\u5b8c\u5168\u4e0d\u53cd\u6620\u73b0\u5b9e\uff0cXi Ruoyao\\n \u4e5f\u5df2[\u7ed9\u51fa](https://gcc.gnu.org/pipermail/gcc-patches/2023-December/640012.html)\u8865\u4e01\uff1b\u4ee5\u53ca\\n* [PR111126] \u4e5f\u4e0e\u672c\u95ee\u9898\u5b58\u5728\u4e00\u5b9a\u5173\u7cfb\uff0c\u662f\u540e\u7eed\u53ef\u4ee5\u60e0\u53ca LoongArch\u3001RISC-V \u548c MIPS64r6 \u7684\u4e00\u9879\u6539\u8fdb\u3002\\n\\n[PR112919]: https://gcc.gnu.org/PR112919\\n[PR112935]: https://gcc.gnu.org/PR112935\\n[PR112936]: https://gcc.gnu.org/PR112936\\n[PR111126]: https://gcc.gnu.org/PR111126\\n\\nJiahao Xu \u505a\u7684 LoongArch v1.10 \u7684\u8fd1\u4f3c\u6d6e\u70b9\u5012\u6570\u6307\u4ee4 `frecipe.[sd]`\u3001\u8fd1\u4f3c\u6d6e\u70b9\u5e73\u65b9\u6839\u5012\u6570\u6307\u4ee4 `frsqrte.[sd]`\\n\u53ca\u5176 SIMD \u652f\u6301\uff0c\u5df2\u7531 chenglulu [\u5408\u5165\u4e3b\u7ebf](https://github.com/gcc-mirror/gcc/commit/61f1001f2f4ab9128e5eb6e9a4adbbb0f9f0bc75)\u3002\\n\u611f\u8c22[\u6770\u54e5][jiegec]\u63d0\u4f9b\u65b0\u95fb\u7ebf\u7d22\uff01\\n\\n[Xi Ruoyao][xry111] [\u5141\u8bb8\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-December/639748.html)\u628a `-mcmodel=extreme` \u4e0e `model` \u5c5e\u6027\uff0c\\n\u642d\u914d `-mexplicit-relocs=auto` \u4f7f\u7528\u3002\\n\\n[Yang Yujie][scylaac] [\u4fee\u590d\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-December/639651.html)\u5bf9\\n`__builtin_eh_return` \u7684\u8c03\u7528\u4f1a\u5bfc\u81f4\u540c\u4e00\u51fd\u6570\u4e2d\u5176\u4ed6\u5e38\u89c4\u8fd4\u56de\u8def\u5f84\u7684\u8fd4\u56de\u503c\u88ab\u7834\u574f\u7684\u95ee\u9898\u3002\\n\u6b64\u95ee\u9898\u88ab\u53d1\u73b0\u4f1a\u5bfc\u81f4 libgcc \u7684 `_Unwind_RaiseException` \u5728\u6781\u7aef\u60c5\u51b5\u4e0b\u8fd4\u56de\u9519\u8bef\u7ed3\u679c\u3002\\n\\n[Yang Yujie][scylaac] \u8fd8\u57fa\u4e8e AOSC \u5f00\u53d1\u8005 Zixing Liu \u5148\u524d\u5728 9 \u6708\u4efd[\u53d1\u51fa\u7684](https://gcc.gnu.org/pipermail/gcc-patches/2023-September/631260.html)\\nD \u8bed\u8a00 LoongArch \u9002\u914d\u8865\u4e01\uff0c\\n\u5c06\u5176[\u8fed\u4ee3\u5230\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-December/638912.html)\u7b2c\u4e09\u7248\u3002\\n\\n\u672c\u671f\u7684\u5927\u591a\u6570 GCC \u65b0\u95fb\u90fd\u662f [Xi Ruoyao][xry111] \u5e2e\u5fd9\u6574\u7406\uff08\u4ee5\u53ca\u81ea\u5df1\u5236\u9020\uff09\u7684\uff0c\u8ba9\u6211\u4eec\u611f\u8c22 :ta: \u7684\u5949\u732e\uff01\\n\\n[jiegec]: https://github.com/jiegec\\n[scylaac]: https://github.com/scylaac\\n[xry111]: https://github.com/xry111\\n\\n#### LLVM {#llvm}\\n\\n[wangleiat](https://github.com/wangleiat) \u6559\u4f1a\u4e86 LLVM \u505a\u5f88\u591a SIMD \u4ee3\u7801\u751f\u6210\uff1a\\n\\n* [\u6574\u6570\u5143\u7d20\u7684\u53d6\u5b8c\u6574\u4e58\u6cd5\u7ed3\u679c\u9ad8\u534a\u90e8\u5206](https://github.com/llvm/llvm-project/commit/e9cd197d15300f186a5a32092103add65fbd3f50)\uff0c\\n \u5bf9\u5e94 LLVM IR \u4e2d\u64cd\u4f5c\u5411\u91cf\u6570\u636e\u7c7b\u578b\u7684 [`mul`][llvm-langref-mul] \u968f\u540e\\n `ashr`/`lshr` \u518d `trunc` \u7684\u64cd\u4f5c\uff1b\\n* [\u6574\u6570\u5143\u7d20\u7684\u9009\u62e9](https://github.com/llvm/llvm-project/commit/de21308f78f3b0f0910638dbdac90967150d19f0)\uff0c\\n \u5bf9\u5e94 LLVM IR \u4e2d\u64cd\u4f5c\u5411\u91cf\u6570\u636e\u7c7b\u578b\u7684 [`select`][llvm-langref-select]\uff1b\\n* [\u6d6e\u70b9\u3001\u6574\u6570\u7684\u5143\u7d20\u6bd4\u8f83](https://github.com/llvm/llvm-project/pull/74700)\uff0c\\n \u5206\u522b\u5bf9\u5e94 LLVM IR \u4e2d\u64cd\u4f5c\u5411\u91cf\u6570\u636e\u7c7b\u578b\u7684 [`fcmp`][llvm-langref-fcmp]\\n \u4e0e [`icmp`][llvm-langref-icmp]\uff1b\\n* [\u6d6e\u70b9\u5f00\u5e73\u65b9\u3001\u6c42\u5012\u6570](https://github.com/llvm/llvm-project/pull/74795)\uff0c\\n \u5206\u522b\u5bf9\u5e94 LLVM IR \u4e2d\u7684 [`llvm.sqrt.*`][llvm-langref-sqrt] intrinsics\uff0c\\n \u4ee5\u53ca\u88ab\u9664\u6570\u662f 1.0 \u7684 [`fdiv`][llvm-langref-fdiv]\uff1b\\n* [\u6d6e\u70b9\u6c42\u76f8\u53cd\u6570](https://github.com/llvm/llvm-project/commit/cdc37325669c0321328a7245083c427b229e79e9),\\n \u5bf9\u5e94 LLVM IR \u4e2d\u64cd\u4f5c\u5411\u91cf\u6570\u636e\u7c7b\u578b\u7684 [`fneg`][llvm-langref-fneg]\u3002\\n\\n[llvm-langref-fcmp]: https://llvm.org/docs/LangRef.html#fcmp-instruction\\n[llvm-langref-fdiv]: https://llvm.org/docs/LangRef.html#fdiv-instruction\\n[llvm-langref-fneg]: https://llvm.org/docs/LangRef.html#fneg-instruction\\n[llvm-langref-icmp]: https://llvm.org/docs/LangRef.html#icmp-instruction\\n[llvm-langref-mul]: https://llvm.org/docs/LangRef.html#mul-instruction\\n[llvm-langref-select]: https://llvm.org/docs/LangRef.html#select-instruction\\n[llvm-langref-sqrt]: https://llvm.org/docs/LangRef.html#llvm-sqrt-intrinsic\\n\\n[SixWeining](https://github.com/SixWeining)\\n[\u540c\u6b65\u4e86](https://github.com/llvm/llvm-project/pull/73345)\\nLoongArch ELF psABI 20231102 \u7248\u672c\uff08\u6574\u4f53\u7248\u672c\u53f7 v2.20\uff09\u53d8\u66f4\u4e86\u7684\u91cd\u5b9a\u4f4d\u7c7b\u578b\u5b9a\u4e49\u3002\\n\\n## \u6742\u95fb\u64ad\u62a5 {#assorted-news}\\n\\n\u672c\u7ad9\u7684\u5176\u4ed6\u680f\u76ee\u5f97\u5230\u4e86\u4e9b\u4e45\u8fdd\u7684\u66f4\u65b0\uff1a\\n\\n* \u65b0\u589e\u4e86[\u300a\u57fa\u7840\u8bbe\u65bd\u7248\u672c\u57fa\u7ebf\u53c2\u8003\u300b](/docs/baseline-reference/)\u4e0e[\u300a\u5178\u578b\u9f99\u67b6\u6784\u914d\u7f6e\u6570\u636e\u6536\u96c6\u300b](/docs/collection-of-typical-configurations/)\u4e24\u7bc7\u9605\u8bfb\u6750\u6599\uff1b\\n* \u4e3a[\u300a\u5982\u4f55\u79f0\u547c\u9f99\u67b6\u6784\uff1f\u300b](/docs/loong-or-loongarch/)\u66f4\u65b0\u4e86\u4fe1\u606f\uff0c\\n* \u5728\u9996\u9875\u65b0\u589e\u4e86 [ALT Linux](https://en.altlinux.org/Main_Page)\u3001[\u52c7\u8c79](https://github.com/sunhaiyong1978/Yongbao)\u4e24\u79cd\u53d1\u884c\u7248\uff1b\\n* \u5728\u9996\u9875\u65b0\u589e\u4e86 Haiku\u3001ReactOS \u4e24\u79cd\u5386\u53f2\u60a0\u4e45\u7684\u5c0f\u4f17\u5185\u6838\u3002\\n\\n\u6b22\u8fce\u8bfb\u8005\u4eec[\u63d0\u51fa\u5efa\u8bae](https://github.com/loongson-community/areweloongyet/issues)\u3001[\u53c2\u4e0e\u8d21\u732e](https://github.com/loongson-community/areweloongyet/pulls)\uff01\\n\\n[Xinmudotmoe] \u5341\u6708\u4efd\u5411 ROCm \u7684 ROCR-Runtime\\n\u7ec4\u4ef6[\u63d0\u4ea4\u7684](https://github.com/ROCm/ROCR-Runtime/pull/168)\\nLoongArch \u652f\u6301\u8865\u4e01\uff0c\u5df2\u4e3a AMD \u7ef4\u62a4\u8005\u6240\u786e\u8ba4\uff1a\u5c06\u8fdb\u5165 ROCm 6.1 \u5b98\u65b9\u7248\u672c\u3002\\n\\n[Xinmudotmoe]: https://github.com/Xinmudotmoe\\n\\nAOSC \u8d21\u732e\u8005[\u5085\u5b5d\u5143](https://github.com/eatradish)\u4e3a Rust \u7684 Lua \u7ed1\u5b9a\u5e93\\nmlua [\u65b0\u589e\u4e86](https://github.com/khvzak/mlua/pull/339) LoongArch \u652f\u6301\u3002\\n\u611f\u8c22[\u767d\u94ed\u9aa2](https://github.com/MingcongBai)\u6295\u9012\u65b0\u95fb\u7ebf\u7d22\uff01\\n\\n## \u793e\u533a\u6574\u6d3b:\u513f: {#grins}\\n\\n\u672c\u680f\u76ee\u63a5\u53d7\u4efb\u4f55\u7f51\u53cb\u7684\u6295\u7a3f\uff0c\u53ea\u8981\u5185\u5bb9\u4e0e LoongArch® \u6709\u5173\uff0c\u5e76\u53ef\u4ee5\u4e3a\u8bfb\u8005\u5e26\u6765\u4ef7\u503c\uff0c\\n\u65e0\u8bba\u4e25\u8083\u8d21\u732e\uff08\u6574\u7684\u5927\u6d3b:\u513f:\uff09\u6216\u662f\u535a\u541b\u4e00\u7b11\u90fd\u4e00\u6982\u6b22\u8fce\uff01\\n\\n\u8fd1\u65e5\uff0c[Xinmudotmoe] \u5728\u89d2\u78e8\u673a\u7684\u914d\u5408\u4e0b\uff0c\u4e3a :ta: \u7684 3A6000 \u6362\u4e0a\u4e86\u6c34\u51b7\uff01\\n\u770b\u770b :ta: \u7684\u597d\u6d3b:\u513f:\uff1a\\n\\n### 3A6000 \u6c34\u51b7\u8ba1\u5212\uff01\\n\\n\u56fa\u4ef6\u7ec4[\u66f4\u65b0\u592a\u5feb](https://github.com/loongson/Firmware/pull/79)\uff0c\\n\u4f7f\u5f97\u6211\u521a\u78e8\u5f00 PCIe \u69fd\u5c31\u6709\u4e86\u66f4\u597d\u7684\u56fa\u4ef6\u3002\uff08\u767d\u5e72\uff09\\n\\n\uff08\u7f16\u8005\u6309\uff1a3A6000 \u8bc4\u4f30\u677f\u7684\u51fa\u5382\u56fa\u4ef6\u662f\u4e0d\u80fd\u70b9\u4eae RDNA \u6216\u66f4\u5f80\u540e\u7684 A \u5361\u7684\u3002\\n\u867d\u7136\u53ef\u7528[\u300c\u732e\u796d\u6d41\u300d](https://github.com/loongson/Firmware/issues/74#issuecomment-1831442404)\u7ed5\u8fc7\uff0c\\n\u4f46\u524d\u63d0\u662f\u8981\u300c\u89e3\u51b3 x8 \u69fd\u63d2 x16 \u5361\u7684\u95ee\u9898\u300d\u2014\u2014\u670b\u53cb\u7684\u89d2\u78e8\u673a\u6015\u4e0d\u662f\u5c31\u4e3a\u8fd9\u8d2d\u4e70\u7684\u2026\u2026\uff09\\n\\nXA61200 \u4e3b\u677f\u6263\u5177\u517c\u5bb9 LGA 115x \u5b54\u4f4d\uff0c\u4f46\u5904\u7406\u5668\u9ad8\u5ea6\u8fc7\u4f4e\uff0c\u4e14\u6865\u7247\u6563\u70ed\u5668\u4e0e\u5904\u7406\u5668\u4f9b\u7535\u7535\u611f\u4f4d\u7f6e\u51b2\u7a81\u3002\\n\u53ea\u5f97\u7528\u89d2\u78e8\u673a\u5bf9 115x \u6c34\u51b7\u5934\u6846\u67b6\u8fdb\u884c\u6253\u78e8\uff0c\u4f7f\u5176\u517c\u5bb9\u3002\\n\u53ef\u89c1\u6253\u78e8\u540e\u6c34\u51b7\u5934\u7684\u53d8\u5316\uff08\u70b9\u51fb\u53ef\u770b\u9ad8\u6e05\u5927\u56fe\uff0c\u4e0b\u540c\uff09\uff1a\\n\\n\x3c!-- convert reduced-frame-closeup.jpg -resize 816x459 reduced-frame-closeup@0.25x.webp --\x3e\\n[![\u89d2\u78e8\u673a\u6253\u78e8\u540e\u7684\u51b7\u5934\u6846\u67b6\u7279\u5199](./reduced-frame-closeup@0.25x.webp)](./reduced-frame-closeup.jpg)\\n\\n\u6d4b\u8bd5\u5b89\u88c5\u538b\u529b\uff1a\\n\\n\x3c!-- convert pressure-test.jpg -resize 512x230 -rotate 90 pressure-test@0.125x.webp --\x3e\\n[![\u6d4b\u8bd5\u5b89\u88c5\u538b\u529b\u7684\u6548\u679c](./pressure-test@0.125x.webp)](./pressure-test.jpg)\\n\\n\u8fd0\u884c\u6548\u679c\uff1a\\n\\n\x3c!-- convert final-effect.jpg -resize 460x460 final-effect@0.25x.webp --\x3e\\n[![\u6c34\u51b7\u7cfb\u7edf\u7684\u8fd0\u884c\u6548\u679c](./final-effect@0.25x.webp)](./final-effect.jpg)\\n\\n~~\u89d2\u78e8\u4e00\u65f6\u723d\uff0c\u6f0f\u6db2\u706b\u846c\u573a\uff01~~\\n\\n## \u5f20\u8d34\u680f {#bulletin}\\n\\n\u672c\u680f\u76ee\u53ef\u4f9b\u5f20\u8d34\u516c\u76ca\u6027\u8d28\u7684\u5404\u79cd\u4fe1\u606f\u3002\\n\\n* \u53cb\u60c5\u6269\u6563\uff1a[\u5b89\u540c\u5f00\u6e90\u793e\u533a\uff08AOSC\uff09][aosc]\u7684\u9f99\u67b6\u6784\u79fb\u690d\u4e3b\u7ebf\u5316\u5de5\u4f5c\u300c\u5408\u9f99\u300d\u4ecd\u5728\u5982\u706b\u5982\u837c\u8fdb\u884c\u4e2d\uff0c\\n \u6b64\u5de5\u4f5c\u5b8c\u6210\u540e\u9f99\u67b6\u6784\u5c06\u5347\u683c\u4e3a AOSC OS \u7684 Tier 1 \u67b6\u6784\u3002\\n \u6b22\u8fce\u540c\u5b66\u4eec\u8bd5\u7528\u3001\u53cd\u9988\uff0c\u4e5f\u6b22\u8fce\u6709\u5fd7\u4e4b\u58eb\u4e00\u540c\u52a0\u5165\uff08\u6c9f\u901a\u6e20\u9053\u8be6\u89c1 AOSC \u7f51\u7ad9\u76f8\u5173\u680f\u76ee\uff09\u3002\\n* \u65b0\u589e\u4e00\u7bc7\u82f1\u96c4\u5e16\uff1a[\u5728\u793e\u533a\u4e2d\u65b0\u589e LoongArch \u7684 SMBIOS Type 44 \u8868\u683c\u652f\u6301](https://github.com/loongson-community/discussions/issues/28)\u3002\\n \u6b22\u8fce\u6709\u5fd7\u4e4b\u58eb\u53bb\u8bc4\u8bba\u533a\u62a5\u5230\uff01\\n* \u672c\u5468\u62a5[\u6301\u7eed\u63a5\u53d7\u7f51\u53cb\u6295\u7a3f][call-for-submissions]\u3002\u6b22\u8fce\u6765\u4e0a\u6e38\u5750\u5750\uff01\\n\\n[aosc]: https://aosc.io\\n[call-for-submissions]: https://github.com/loongson-community/areweloongyet/issues/16"},{"id":"this-week-in-loongarch-27","metadata":{"permalink":"/newsletter/this-week-in-loongarch-27","editUrl":"https://github.com/loongson-community/areweloongyet/newsletter/2023-12-05-this-week-in-loongarch-27/index.md","source":"@site/newsletter/2023-12-05-this-week-in-loongarch-27/index.md","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 27 \u671f","description":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01","date":"2023-12-04T19:00:00.000Z","formattedDate":"2023\u5e7412\u67084\u65e5","tags":[{"label":"\u6bcf\u5468\u4e00\u9f99","permalink":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99"}],"readingTime":9.925,"hasTruncateMarker":true,"authors":[{"name":"WANG Xuerui","title":"\ud83d\udc32\u9f99\u95e8\u5ba2\u6808\u6253\u6742\u7684","url":"https://github.com/xen0n","imageURL":"https://github.com/xen0n.png","key":"xen0n"}],"frontMatter":{"slug":"this-week-in-loongarch-27","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 27 \u671f","authors":["xen0n"],"date":"2023-12-04T19:00:00.000Z","tags":["\u6bcf\u5468\u4e00\u9f99"]},"unlisted":false,"prevItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 28 \u671f","permalink":"/newsletter/this-week-in-loongarch-28"},"nextItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 26 \u671f","permalink":"/newsletter/this-week-in-loongarch-26"}},"content":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01\\n\u4e0a\u5468\u7684\u8fdb\u5c55\u4e3b\u8981\u6709 ABI\u3001\u5de5\u5177\u94fe\u3001Firefox\u3001\u56fa\u4ef6\u3001OpenSSL\u3002\\n\u8be6\u60c5\u70b9\u8fdb\u6765\u770b\uff01\\n\\n\x3c!-- truncate --\x3e\\n\\n\u5982\u65e0\u7279\u522b\u8bf4\u660e\uff0c\u6587\u4e2d\u63d0\u53ca\u7684\u65e5\u671f\u3001\u65f6\u95f4\u90fd\u4e3a\u5317\u4eac\u65f6\u95f4\uff08UTC+8\uff09\u3002\\n\\n\u672c\u671f\u5468\u62a5\u7684\u5b9e\u9645\u53d1\u7a3f\u65f6\u95f4\u662f\u5468\u4e8c\u51cc\u6668\uff0c\u56e0\u4e3a\u8fd9\u4e2a\u70b9\u624d\u5199\u5b8c\u2014\u2014\u767d\u5929\u90fd\u5728\u5fd9\u522b\u7684\u3002\\n\u7f51\u9875\u4e0a\u663e\u793a\u7684\u53d1\u7a3f\u65f6\u95f4\u4ecd\u7136\u662f 12 \u6708 4 \u65e5\uff1a\\n\u8fd9\u662f Docusaurus \u65e9\u671f\u4e3a\u4e86\u4fee\u590d\u4e00\u4e2a\u65f6\u533a bug \u800c[\u5bfc\u81f4\u7684](https://github.com/facebook/docusaurus/issues/4881)\u53c8\u4e00\u4e2a\u65f6\u533a bug\u3002\\n\\n## \u8981\u95fb\u901f\u9012 {#breaking-news}\\n\\n11 \u6708 28 \u65e5\uff0c\u9f99\u82af\u516c\u53f8\u5728\u56fd\u5bb6\u4f1a\u8bae\u4e2d\u5fc3\u4e3e\u529e\u4e86 2023 \u9f99\u82af\u4ea7\u54c1\u53d1\u5e03\u66a8\u7528\u6237\u5927\u4f1a\u3002\\n\u7b14\u8005\u5728\u73b0\u573a\u83b7\u5f97\u4e86\u4e00\u4e9b\u6709\u4ef7\u503c\u4fe1\u606f\uff1b\u5728\u672a\u6765\u51e0\u671f\u7684\u5468\u62a5\u4e2d\u5c06\u9646\u7eed\u4e3a\u60a8\u64ad\u62a5\u3002\\n\\n## \u5148\u300c\u9a6c\u300d\u518d\u770b {#marked-projects}\\n\\n\u672c\u680f\u76ee\u7684\u5185\u5bb9\u5177\u6709\u4e00\u5b9a\u5ef6\u7eed\u6027\uff0c\u5c06\u6301\u7eed\u8ffd\u8e2a\u62a5\u9053 LoongArch® \u9886\u57df\u7684\u91cd\u8981\u6216\u957f\u671f\u9879\u76ee\uff08\u5751\uff09\u3002\\n\\n### Linux {#linux}\\n\\nHengqi Chen \u5728\u8dd1 BPF \u81ea\u6211\u6d4b\u8bd5\u7684\u65f6\u5019\uff0c[\u53d1\u73b0](https://lore.kernel.org/loongarch/CAEyhmHT6UOryPZi7eEfw01Y_CjAqxy8NM6eKkdvdojJqB9P7eQ@mail.gmail.com/)\u5f00\u542f\\nLoongArch BPF JIT \u4e4b\u540e\uff0c\u4e00\u4e9b\u7528\u4f8b\u4f1a\u5bfc\u81f4\u5185\u6838 panic \u6216\u5bfc\u81f4 RCU \u5361\u6b7b\u3002\\n\u622a\u81f3\u53d1\u7a3f\u65f6\uff0c[\u4fee\u4e86](https://lore.kernel.org/loongarch/20231204141938.7230-1-hengqi.chen@gmail.com/)\u4e00\u79cd panic\u3002\\n\\nHengqi Chen \u7ee7\u7eed\u8fed\u4ee3 :ta: \u7684\u5c06\u7cfb\u7edf\u8c03\u7528\u53f7\u5b58\u5165 `struct thread_info` \u7684\u8865\u4e01\u7cfb\u5217\u3002\\n\u4e3a\u4e86\u89e3\u51b3 `execsnoop` \u7b49\u5de5\u5177\u4e0d\u53ef\u7528\u7684\u71c3\u7709\u4e4b\u6025\uff0c:ta: \u5355\u72ec[\u62c6\u51fa\u4e86](https://lore.kernel.org/loongarch/20231204053745.3153-1-hengqi.chen@gmail.com/)\\n`exec` \u65f6\u4e0d\u6e05\u96f6 `$a7`\uff08\u7cfb\u7edf\u8c03\u7528\u53f7\u5bc4\u5b58\u5668\uff09\u7684\u8865\u4e01\uff1b\u6b64\u8865\u4e01\u5df2\u88ab Huacai Chen \u63a5\u53d7\uff0c\\n\u5c06\u5728 Linux 6.7 \u6700\u7ec8\u53d1\u5e03\u65f6\u53ef\u7528\u3002\\n\\nTiezhu Yang [\u8d34\u51fa\u4e86](https://lore.kernel.org/loongarch/20231129130701.27744-1-yangtiezhu@loongson.cn/)\u7b2c 5 \u7248\u7684\u4e3a\\nLoongArch \u9002\u914d [ORC stack unwinder](https://lwn.net/Articles/728339/) \u7684\u8865\u4e01\u3002\\n\\n### \u5de5\u5177\u94fe {#toolchain}\\n\\n#### ABI {#abi}\\n\\n\u9f99\u82af\u56e2\u961f\u5b8c\u6210\u4e86\u521d\u7248 TLS[^tls] \u63cf\u8ff0\u7b26\uff08TLS descriptors\uff0cTLSDESC\uff09ABI \u7684\u8bbe\u8ba1\u4e0e\u5b9e\u73b0\uff1a\\n\\n[^tls]: Thread-Local Storage\uff0c\u7ebf\u7a0b\u672c\u5730\u5b58\u50a8\u3002\u6b64 TLS \u975e\u5f7c TLS\uff08Transport Layer Security\uff0c\u4f20\u8f93\u5c42\u5b89\u5168\uff09\u3002\\n\\n* [binutils](https://sourceware.org/pipermail/binutils/2023-December/130916.html)\uff08Lulu Cai\uff09\\n* [gcc](https://gcc.gnu.org/pipermail/gcc-patches/2023-December/638907.html)\uff08mengqinggang\uff09\\n* [glibc](https://sourceware.org/pipermail/libc-alpha/2023-December/153052.html)\uff08mengqinggang\uff09\\n\\nTLS \u63cf\u8ff0\u7b26\u662f\u4e00\u79cd\u7528\u6765\u4f18\u5316\u7ebf\u7a0b\u672c\u5730\u53d8\u91cf\uff08thread-local variables\uff09\u8bbf\u95ee\u901f\u5ea6\u7684\u65b9\u6848\uff0c\\n\u7531 Alexandre Oliva \u5728 2005 \u5e74\u524d\u540e\u8bbe\u8ba1\uff1b\u4f5c\u8005[\u516c\u5f00\u4e86](https://www.fsfla.org/~lxoliva/writeups/TLS/RFC-TLSDESC-x86.txt)\u8bbe\u8ba1\u6587\u6863\u3002\\n\u76ee\u524d\u5b9e\u73b0\u4e86\u6216\u5373\u5c06\u5b9e\u73b0 TLS \u63cf\u8ff0\u7b26\u7684\u67b6\u6784\u6709\u4ee5\u4e0b\u51e0\u79cd\uff1a\\n\\n* \u5bcc\u58eb\u901a FR-V\uff1a\u6700\u521d\u8bbe\u8ba1\u7684\u7075\u611f\u6765\u6e90\u548c\u76ee\u6807\u67b6\u6784\u3002\\n* x86\uff1ai386\u3001AMD64\u3002\\n* ARM\uff1aARM\u3001AArch64\u3002\\n* Andes NDS32\\n* Tensilica Xtensa\\n* RISC-V\uff1a\u6b63\u5728\u63a8\u8fdb\u4e2d\uff0c[\u5de5\u5355](https://github.com/riscv-non-isa/riscv-elf-psabi-doc/issues/94)\u3001[\u8bbe\u8ba1\u7a3f](https://github.com/riscv-non-isa/riscv-elf-psabi-doc/pull/373)\u3002\\n\\nLoongArch \u4e0d\u65e5\u4e5f\u5c06\u52a0\u5165\u5b83\u4eec\u7684\u884c\u5217\u3002\\n\u7b2c\u4e00\u7248\u4ee3\u7801\u8fd8\u6709\u4e9b\u5730\u65b9\u8981\u6539\uff0c\u8bf7\u76f4\u63a5\u53bb\u4e0a\u6e38\u56f4\u89c2\u3002\\n\u503c\u5f97\u4e00\u63d0\u7684\u662f\u539f\u4f5c\u8005\u4e5f[\u52a0\u5165\u4e86](https://sourceware.org/pipermail/binutils/2023-December/130932.html)\u8ba8\u8bba\uff0c\u5e76\u4ece\u81ea\u5df1\u7684\u7ecf\u9a8c\u7ed9\u51fa\u4e86\u5b9d\u8d35\u5efa\u8bae\uff01\\n\\n\u51e0\u4e4e\u4e0e\u6b64\u540c\u65f6\uff0c\u5e38\u4f73\u741b\u540c\u5b66\u4e5f[\u8d34\u51fa\u4e86](https://sourceware.org/pipermail/binutils/2023-December/130921.html)\u4e00\u7248\u5bf9\\nTLS LE \u64cd\u4f5c\u7684 relaxation \u652f\u6301\u3002\\n\u8fd9\u540d\u53f7\u5728\u9f99\u82af\u5708\u5b50\u662f\u5934\u4e00\u56de\u89c1\uff0c\u90ae\u7bb1\u540e\u7f00\u4e5f\u662f\u897f\u5b89\u90ae\u7535\u5927\u5b66\uff0c\u800c\u975e `loongson.cn`\u2014\u2014\u65b0\u9c9c\u8840\u6db2\u672c\u5c31\u4e0d\u591a\u89c1\uff0c\\n\u4f55\u51b5\u9996\u79c0\u5c31\u5728 ABI \u8fd9\u79cd\u786c\u6838\u9886\u57df\u3002\\n\u8ba9\u6211\u4eec\u70ed\u70c8\u6b22\u8fce :ta:\uff01\\n\\n#### binutils {#binutils}\\n\\n\u5148\u524d[\u62a5\u9053\u8fc7\u7684](../2023-10-30-this-week-in-loongarch-22.md#binutils)\\n[Jiajie Chen](https://github.com/jiegec)\\n\u5e2e\u5fd9\u52a0\u7684 LoongArch® v1.10 \u65b0\u6307\u4ee4\uff0c\u5df2\u7ecf\u8fdb\u5165\u4e3b\u7ebf\uff1a[\u8865\u4e01\u7532](https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=cd51849c90e8fd13779bec69f5d4c7aadf03a532)\u3001[\u8865\u4e01\u4e59](https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=9ff4752d0f6d46ca0f7d275ea07e05790ac8dd1d)\u3002\\n\\nmengqinggang \u7ee7\u7eed\u8ddf\u8fdb\u65b0\u7684\u4e2d\u7b49\u4ee3\u7801\u6a21\u578b\uff08medium code model\uff09\u8fc7\u7a0b\u8c03\u7528\u65b9\u5f0f `R_LARCH_CALL36`\\n\u7684\u9002\u914d\u5de5\u4f5c\uff0c\u7ed9 binutils [\u589e\u52a0\u4e86](https://sourceware.org/pipermail/binutils/2023-December/130906.html)\\n`call` \u548c `tail` \u4f2a\u6307\u4ee4\u652f\u6301\u3002\\n\u5728\u90ae\u4ef6\u5217\u8868\u5df2\u7ecf\u8fdb\u884c\u4e86\u4e00\u4e9b\u8ba8\u8bba\uff0c\u56e0\u6b64\u8fd9\u4e9b\u6307\u4ee4\u7684\u5177\u4f53\u5f62\u6001\u53ef\u80fd\u8fd8\u4f1a\u5fae\u8c03\uff0c\u4f46\u8981\u52a0\u5165\u8fd9\u4e24\u7c7b\u4f2a\u6307\u4ee4\u8fd9\u4ef6\u4e8b\u5e94\u8be5\u662f\u786e\u5b9a\u4e86\u3002\\n\u719f\u6089 RISC-V \u7684\u8bfb\u8005\u5e94\u8be5\uff08\u7ec8\u4e8e\uff09\u4f1a\u611f\u5230\u5bb6\u7684\u6e29\u6696 :wink:\\n\\n#### GCC {#gcc}\\n\\nJoern Rennecke \u4e0e Jeff Law [\u505a\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-November/638380.html)\u4e00\u7a3f\u6d88\u9664\u591a\u4f59\u7b26\u53f7\u6269\u5c55\u3001\u96f6\u6269\u5c55\u7684\u5de5\u5e8f\uff08pass\uff09\u3002\\n\u8fd9\u4e0d\u662f\u4e13\u95e8\u4e3a LoongArch \u505a\u7684\u5de5\u4f5c\uff0c\u4f46\u5305\u62ec LoongArch \u5728\u5185\u7684\u4e0d\u5c11\u67b6\u6784\u5c06\u4ece\u4e2d\u53d7\u76ca\u3002\\n\\nJiahao Xu \u6309\u7167[\u4e4b\u524d Xi Ruoyao \u7684\u6539\u6cd5](../2023-11-13-this-week-in-loongarch-24.md#gcc)\uff0c\\n\u4fee\u590d\u4e86\u5269\u4f59\u7684\u5b50\u5bc4\u5b58\u5668\uff08subreg\uff09\u8bef\u7528\uff0c\\n\u7b49\u4e8e\u6d88\u706d\u4e86\u8fd9\u4e9b\u95ee\u9898\u903b\u8f91\u5c06\u5bfc\u81f4\u7684\u7f16\u8bd1\u5668\u5d29\u6e83\uff08ICE\uff09\u3002\\n\uff08GCC \u8981\u6c42\u4e0d\u80fd\u53d6\u5b50\u5bc4\u5b58\u5668\u7684\u5b50\u5bc4\u5b58\u5668\uff0c\u5426\u5219\u5d29\u6e83\u3002\uff09\\n\\nJiahao Xu \u8fd8[\u4fee\u590d\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-November/638556.html)\\n`{v,xv}shuf` \u7684\u6d4b\u8bd5\u7528\u4f8b\u5728 LA664 \u4e0a\u5931\u8d25\u7684\u95ee\u9898\uff08bug [PR112611]\uff09\u3002\\n\u8fd9\u662f\u56e0\u4e3a\u539f\u5148\u7684\u9884\u671f\u8ba1\u7b97\u7ed3\u679c\u5c31\u662f LA464 \u4e0a\u76f8\u5e94\u6307\u4ee4\u7684\u6267\u884c\u6548\u679c\uff0c\u800c\u539f\u5148\u7684\u8f93\u5165\u6570\u636e\u4f1a\u89e6\u53d1 LA464 \u7684\u672a\u5b9a\u4e49\u884c\u4e3a\u3002\\n\\n[PR112611]: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112611\\n\\nJiahao Xu \u8fd8[\u52a0\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-November/638369.html)\\n`-mrecip` \u9009\u9879\uff0c\u7528\u6765\u63a7\u5236\u662f\u5426\u5229\u7528 LA664 \u7684\u4e24\u79cd\u6d6e\u70b9\u8fd1\u4f3c\u5012\u6570\u6307\u4ee4\u3002\u4ee3\u7801\u4ecd\u9700\u4fee\u6539\u3002\\n\\nliwei \u7528 LoongArch SIMD \u6307\u4ee4[\u4f18\u5316\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-November/638384.html)\u6807\u91cf\u7684\\n`__builtin_popcount` \u64cd\u4f5c\u3002\\n\uff08\u8fd9\u4e2a\u64cd\u4f5c\u7684\u542b\u4e49\u662f\u6c42\u6574\u6570\u7684\u4e8c\u8fdb\u5236\u8868\u793a\u4e2d `1` \u7684\u4e2a\u6570\uff1bpopulation count \u76f4\u8bd1\u662f\u300c\u4eba\u53e3\u8ba1\u6570\u300d\uff0c\u5f88\u5f62\u8c61\u3002\uff09\\n\\n:::info \u7f16\u8005\u6309\\n\u8fd9\u4e2a\u64cd\u4f5c\u6709\u5411\u91cf\u7248\uff1a`{v,xv}pcnt.[bhwd]`\uff0c\u5374\u6ca1\u6709\u6807\u91cf\u7248\uff0c\u4e0d\u5bf9\u79f0\u3002\\n\u5728\u4e00\u4e9b\u96f6\u661f\u4f7f\u7528\uff0c\u56e0\u800c\u4e0d\u503c\u5f97\u5411\u91cf\u5316\u7684\u573a\u666f\u53ef\u80fd\u5403\u4e8f\u3002\\n\u5e0c\u671b\u4ee5\u540e\u80fd\u8865\u4e0a\u8fd9\u4e00\u5757\u2026\u2026\\n:::\\n\\nliwei \u8fd8[\u4f18\u5316\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-November/638385.html)\u53d6\u5947/\u5076\u5143\u7d20\u7684\u5411\u91cf\u64cd\u4f5c\u3002\\n\\nliwei \u8fd8[\u6e05\u7406\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-November/638390.html)[\u4e0a\u6b21\u4f18\u5316\u540e](../2023-11-20-this-week-in-loongarch-25.md#CLZ_DEFINED_VALUE_AT_ZERO)\u91cd\u590d\u7684\\n`CLZ_DEFINED_VALUE_AT_ZERO` \u5b9a\u4e49\u3002\\n\\nguojie \u5728 UBSan \u7684\u6307\u5bfc\u4e0b[\u4fee\u590d\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-November/637859.html)\\nLoongArch \u540e\u7aef\u5728\u5904\u7406\u7acb\u5373\u6570\u65f6\uff0c\u53ef\u80fd\u89e6\u53d1\u7684\u4e00\u5904\u672a\u5b9a\u4e49\u884c\u4e3a\u3002\\n\\nguojie \u8fd8[\u4f18\u5316\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-November/637858.html)\u9ad8 32 \u4f4d\u4e0e\u4f4e 32 \u4f4d\u78b0\u5de7\u76f8\u540c\u7684\u7acb\u5373\u6570\u7684\u88c5\u8f7d\u3002\\n\\n\u672c\u671f\u7684 GCC \u65b0\u95fb\u90fd\u662f [Xi Ruoyao][xry111] \u5e2e\u5fd9\u6574\u7406\u7684\uff0c\u8ba9\u6211\u4eec\u611f\u8c22 :ta: \u7684\u5949\u732e\uff01\\n\\n#### LLVM {#llvm}\\n\\n[wangleiat] \u4eff\u7167\u4e24\u5e74\u524d\u7684\u4e00\u7ec4 x86 \u6539\u52a8\uff0c[\u4fee\u590d\u4e86](https://github.com/llvm/llvm-project/pull/73742)\u5728\u4ee3\u7801\u751f\u6210\u7684\u8fb9\u754c\u60c5\u51b5\u65f6\\n`fnmsub.[sd]` \u7684\u9519\u8bef\u7528\u6cd5\u3002\\n\\n[wangleiat] \u7528 SIMD \u6307\u4ee4[\u652f\u6301\u4e86](https://github.com/llvm/llvm-project/pull/73759)\\nLLVM IR \u7684 [`extractelement` \u64cd\u4f5c](https://llvm.org/docs/LangRef.html#extractelement-instruction)\uff08\u63d0\u53d6\u5143\u7d20\uff1a\u63d0\u53d6\u4f4d\u4e8e\u8f93\u5165\u5411\u91cf\u7684\u7ed9\u5b9a\u7d22\u5f15\u7684\u6807\u91cf\u5143\u7d20\uff09\u3002\\n\u8fd9\u5e94\u8be5\u662f\u6700\u65e9\u4e00\u6279\u7684 LLVM/Clang \u5411\u91cf\u652f\u6301\u4e86\uff0c\u671f\u5f85\u540e\u7eed\u7684\u66f4\u591a\u5185\u5bb9\u3002\\n\\n[SixWeining] \u8ba9 LoongArch Clang [\u652f\u6301\u4e86](https://github.com/llvm/llvm-project/pull/72514)\\n`-mcmodel=`\uff08\u4ee3\u7801\u6a21\u578b\uff09\u53c2\u6570\uff0c\u7528\u6cd5\u4e0e GCC \u7684\u8be5\u53c2\u6570\u76f8\u540c\u3002\\n\\n[heiher] \u7684 LLVM IR `code_model` \u65b0\u589e\u5de5\u4f5c[\u63a5\u8fd1\u5c3e\u58f0](https://github.com/llvm/llvm-project/pull/72077#issuecomment-1837468951)\uff1a\\n\u76ee\u524d\u6240\u6709\u4ee3\u7801\u5ba1\u67e5\u610f\u89c1\u90fd\u5904\u7406\u5b8c\u4e86\u3002\\n\\n[wangleiat]: https://github.com/wangleiat\\n[SixWeining]: https://github.com/SixWeining\\n[heiher]: https://github.com/heiher\\n\\n## \u6742\u95fb\u64ad\u62a5 {#assorted-news}\\n\\n### Firefox {#firefox}\\n\\n[\u5b89\u540c\u5f00\u6e90\u793e\u533a\uff08AOSC\uff09][aosc]\u6ce8\u91cd\u684c\u9762\u7528\u6237\u4f53\u9a8c\u4e0e\u751f\u4ea7\u529b\uff0c\u5df2\u7ecf\u5728\u5708\u5185\u5c0f\u6709\u540d\u6c14\u3002AOSC \u7684\u5f00\u53d1\u8005\u4eec\u672c\u6b21\u4e5f\u4e3a\u706b\u72d0\uff08Firefox\uff09\u6d4f\u89c8\u5668\u5728\\nLoongArch \u7684\u826f\u597d\u7528\u6237\u4f53\u9a8c\u5e2e\u4e86\u5927\u5fd9\u3002\\n\\n[\u5218\u5b50\u5174](https://github.com/liushuyu)\u6210\u529f\u9002\u914d\u4e86 WebRTC\uff0c\u5df2\u7ecf\u53ef\u4ee5\u7528 Discord \u8fde\u9ea6\u4e86\uff0c\u5176\u4ed6\u7c7b\u4f3c\u7f51\u7ad9\u8bf4\u4e0d\u5b9a\u4e5f\u80fd\u7528\uff1a\\n\\n![Firefox WebRTC on LoongArch](./firefox-webrtc.jpg)\\n\\n\u6b64\u5de5\u4f5c\u540e\u7eed\u4f1a\u63a8\u5165\u4e0a\u6e38\u3002\\n\\n[\u738b\u6c5f\u6d25](https://github.com/RedL0tus)[\u53bb\u9664\u4e86](https://phabricator.services.mozilla.com/D194320)\u89c6\u9891\u786c\u89e3\u63a5\u53e3\\nVA-API \u7684\u67b6\u6784\u653e\u884c\u540d\u5355\uff0c\u4f7f\u6240\u6709\u7684 Linux \u5e73\u53f0\u4e0d\u8bba\u67b6\u6784\uff0c\u53ea\u8981\u80fd\u6210\u529f\u52a0\u8f7d `libva`\uff0c\u5373\u53ef\u786c\u89e3\u89c6\u9891\u3002Firefox 122 \u5c06\u5305\u542b\u6b64\u6539\u8fdb\u3002\\n\\n### \u56fa\u4ef6 {#firmware}\\n\\n\u9f99\u82af\u56fa\u4ef6\u56e2\u961f[\u653e\u51fa\u4e86](https://github.com/loongson/Firmware/pull/79)\\n3A6000 \u8bc4\u4f30\u677f `EVB_XA61200` \u7684\u56fa\u4ef6\u66f4\u65b0\u3002\\n\u76f8\u6bd4\u51fa\u5382\u7248\u672c\uff0c\u4fee\u590d\u4e86\u5982\u8f83\u65b0\u578b\u53f7\u7684 AMD \u663e\u5361\u63d2\u4e0a\u5219\u65e0\u6cd5\u4eae\u673a\u3001DMI \u4fe1\u606f\u4e0d\u542b\u5185\u5b58\u5b9e\u9645\u8fd0\u884c\u9891\u7387\u7b49\u5927\u91cf\u95ee\u9898\uff0c\\n\u5efa\u8bae\u6709\u52a8\u624b\u80fd\u529b\u7684\u540c\u5b66\u8ddf\u8fdb\u66f4\u65b0\u3002\\n\u8bf7\u53bb[\u5b98\u65b9\u4ed3\u5e93\u9875\u9762](https://github.com/loongson/Firmware/tree/main/6000Series/PC/XA61200)\u67e5\u770b\u81ea\u5df1\u7684\u786c\u4ef6\u662f\u5426\u5339\u914d\uff0c\\n\u53ca\u4e0b\u8f7d\u66f4\u65b0\u6587\u4ef6\u3002\\n\u611f\u8c22 [Xi Ruoyao][xry111] \u63d0\u4f9b\u65b0\u95fb\u7ebf\u7d22\uff01\\n\\n[yetist](https://github.com/yetist) \u4e3a\u8457\u540d\u7684\u81ea\u52a8\u56fa\u4ef6\u5347\u7ea7\u5de5\u5177 fwupd \u7684 UEFI \u6a21\u5757 fwupd-efi\\n[\u589e\u52a0\u4e86](https://github.com/fwupd/fwupd-efi/pull/48) LoongArch \u652f\u6301\u3002\\n\u611f\u8c22 [Revy](https://github.com/RevySR) \u63d0\u4f9b\u65b0\u95fb\u7ebf\u7d22\uff01\\n\\n### OpenSSL {#openssl}\\n\\n\u4e0a\u671f[\u63d0\u5230\u7684](../2023-11-27-this-week-in-loongarch-26.md#assorted-news)\u522b\u540d\u5206\u6790\uff08aliasing analysis\uff09\\n\u95ee\u9898\u5df2\u88ab\u4fee\u590d\uff0c\u5e76\u5f80\u56de\u79fb\u690d\u5230 3.2.x \u5206\u652f\u4e86\uff1a\\n\u4ece OpenSSL 3.2.1 \u5f00\u59cb\uff0c\u5373\u4fbf\u542f\u7528 LTO\uff0c\u4e5f\u4e0d\u7528\u975e\u5f97\u624b\u5de5\u6307\u5b9a\u5e73\u53f0\u4e3a `linux64-loongarch64` \u4e86\u3002\\n\u611f\u8c22 [Xi Ruoyao][xry111] \u5b8c\u6210\u6b64\u5de5\u4f5c\u5e76\u63d0\u4f9b\u65b0\u95fb\u7ebf\u7d22\uff01\\n\\n[xry111]: https://github.com/xry111\\n\\n## \u5f20\u8d34\u680f {#bulletin}\\n\\n\u672c\u680f\u76ee\u53ef\u4f9b\u5f20\u8d34\u516c\u76ca\u6027\u8d28\u7684\u5404\u79cd\u4fe1\u606f\u3002\\n\\n* \u53cb\u60c5\u6269\u6563\uff1a[\u5b89\u540c\u5f00\u6e90\u793e\u533a\uff08AOSC\uff09][aosc]\u7684\u9f99\u67b6\u6784\u79fb\u690d\u4e3b\u7ebf\u5316\u5de5\u4f5c\u300c\u5408\u9f99\u300d\u4ecd\u5728\u5982\u706b\u5982\u837c\u8fdb\u884c\u4e2d\uff0c\\n \u6b64\u5de5\u4f5c\u5b8c\u6210\u540e\u9f99\u67b6\u6784\u5c06\u5347\u683c\u4e3a AOSC OS \u7684 Tier 1 \u67b6\u6784\u3002\\n \u6b22\u8fce\u540c\u5b66\u4eec\u8bd5\u7528\u3001\u53cd\u9988\uff0c\u4e5f\u6b22\u8fce\u6709\u5fd7\u4e4b\u58eb\u4e00\u540c\u52a0\u5165\uff08\u6c9f\u901a\u6e20\u9053\u8be6\u89c1 AOSC \u7f51\u7ad9\u76f8\u5173\u680f\u76ee\uff09\u3002\\n* \u672c\u5468\u62a5[\u6301\u7eed\u63a5\u53d7\u7f51\u53cb\u6295\u7a3f][call-for-submissions]\u3002\u6b22\u8fce\u6765\u4e0a\u6e38\u5750\u5750\uff01\\n\\n[aosc]: https://aosc.io\\n[call-for-submissions]: https://github.com/loongson-community/areweloongyet/issues/16"},{"id":"this-week-in-loongarch-26","metadata":{"permalink":"/newsletter/this-week-in-loongarch-26","editUrl":"https://github.com/loongson-community/areweloongyet/newsletter/2023-11-27-this-week-in-loongarch-26.md","source":"@site/newsletter/2023-11-27-this-week-in-loongarch-26.md","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 26 \u671f","description":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01","date":"2023-11-27T15:20:00.000Z","formattedDate":"2023\u5e7411\u670827\u65e5","tags":[{"label":"\u6bcf\u5468\u4e00\u9f99","permalink":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99"}],"readingTime":8.67,"hasTruncateMarker":true,"authors":[{"name":"WANG Xuerui","title":"\ud83d\udc32\u9f99\u95e8\u5ba2\u6808\u6253\u6742\u7684","url":"https://github.com/xen0n","imageURL":"https://github.com/xen0n.png","key":"xen0n"}],"frontMatter":{"slug":"this-week-in-loongarch-26","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 26 \u671f","authors":["xen0n"],"date":"2023-11-27T15:20:00.000Z","tags":["\u6bcf\u5468\u4e00\u9f99"]},"unlisted":false,"prevItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 27 \u671f","permalink":"/newsletter/this-week-in-loongarch-27"},"nextItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 25 \u671f","permalink":"/newsletter/this-week-in-loongarch-25"}},"content":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01\\n\u4e0a\u5468\u7684\u8fdb\u5c55\u4e3b\u8981\u6709 ELF psABI \u95ee\u9898\u7684\u6df1\u5165\u63a2\u8ba8\u3001Linux\uff0c\u4ee5\u53ca\u5de5\u5177\u94fe\u3002\\n\u8be6\u60c5\u70b9\u8fdb\u6765\u770b\uff01\\n\\n\x3c!-- truncate --\x3e\\n\\n\u5982\u65e0\u7279\u522b\u8bf4\u660e\uff0c\u6587\u4e2d\u63d0\u53ca\u7684\u65e5\u671f\u3001\u65f6\u95f4\u90fd\u4e3a\u5317\u4eac\u65f6\u95f4\uff08UTC+8\uff09\u3002\\n\\n## \u5148\u300c\u9a6c\u300d\u518d\u770b {#marked-projects}\\n\\n\u672c\u680f\u76ee\u7684\u5185\u5bb9\u5177\u6709\u4e00\u5b9a\u5ef6\u7eed\u6027\uff0c\u5c06\u6301\u7eed\u8ffd\u8e2a\u62a5\u9053 LoongArch® \u9886\u57df\u7684\u91cd\u8981\u6216\u957f\u671f\u9879\u76ee\uff08\u5751\uff09\u3002\\n\\n### Linux {#linux}\\n\\nWANG Rui \u672c\u5468\u72b6\u6001\u795e\u52c7\uff0c\u4e0d\u4ec5\u6253\u78e8\u4e86 `kexec` \u529f\u80fd\uff1a\\n\\n* [\u8df3\u8fc7\u4e86](https://lore.kernel.org/kexec/20231124085410.107080-1-wangrui@loongson.cn)\u4e00\u5904\u5e94\u8be5\u88ab\u8df3\u8fc7\u7684\u68c0\u67e5\uff1b\\n* [\u4fee\u590d\u4e86](https://lore.kernel.org/kexec/20231125065232.116319-1-wangrui@loongson.cn)\u65b0\u5185\u6838\u7684\u52a0\u8f7d\u5730\u5740\uff1b\\n* [\u62ac\u9ad8\u4e86](https://lore.kernel.org/kexec/20231125072643.116681-1-wangrui@loongson.cn) LZMA \u89e3\u538b\u7f29\u5668\u7684\u5185\u5b58\u9650\u5236\u3002\\n\\n`kexec` \u662f\u4e00\u79cd\u5185\u6838\u529f\u80fd\uff1a\u52a0\u8f7d\u4e00\u4e2a\u65b0\u5185\u6838\u4ee5\u66ff\u6362\u5f53\u524d\u8fd0\u884c\u7684\u5185\u6838\uff0c\u76f8\u5f53\u4e8e\u8df3\u8fc7\u786c\u4ef6\u3001\u56fa\u4ef6\u521d\u59cb\u5316\u8fc7\u7a0b\u7684\u91cd\u542f\u64cd\u4f5c\u3002\\n\u7531\u4e8e\u8fd9\u6837\u64cd\u4f5c\u4e0b\u6765\u7684\u786c\u4ef6\u72b6\u6001\u4e0e\u6b63\u5e38\u91cd\u542f\u7684\u590d\u4f4d\u72b6\u6001\u4e0d\u4e00\u5b9a\u76f8\u540c\uff0c\u56e0\u800c\u4e0d\u662f\u6240\u6709\u786c\u4ef6\u914d\u7f6e\u90fd\u80fd\u5728 `kexec` \u4e4b\u540e\u4ecd\u7136\u6b63\u5e38\u5de5\u4f5c\uff1b\\n\u4f46\u5bf9\u90a3\u4e9b\u80fd\u591f\u901a\u8fc7\u8003\u9a8c\u7684\u786c\u4ef6\uff0c`kexec` \u4fbf\u80fd\u6781\u5927\u7f29\u77ed\u7cfb\u7edf\u91cd\u542f\u6240\u5bfc\u81f4\u7684\u4e0b\u7ebf\u65f6\u95f4\u4e86\u3002\\n\\n\u800c\u4e14\u8fd8[\u4fee\u590d\u4e86](https://lore.kernel.org/loongarch/20231124035534.70432-1-wangrui@loongson.cn/)\\nLLD \u94fe\u63a5\u7684 PIE \u538b\u7f29\u5185\u6838\u4e0d\u80fd\u5f15\u5bfc\u7684\u95ee\u9898\uff0c[\u66f4\u65b0\u4e86](https://github.com/ClangBuiltLinux/linux/issues/1884)\\nClangBuiltLinux \u7684\u6a21\u5757\u652f\u6301\u5de5\u4f5c\u8fdb\u5ea6\uff0c\\n\u5e76\u4e3a LoongArch Linux \u7684 Rust \u652f\u6301[\u5efa\u7acb\u4e86](https://github.com/loongson-community/discussions/issues/15)\u8ddf\u8e2a\u5de5\u5355\u3002\\n\\n\u611f\u8c22 :ta: \u81ea\u5df1\u521b\u9020\u5e76\u63d0\u4f9b\u65b0\u95fb\u7ebf\u7d22\uff01\\n\\nXi Ruoyao [\u6e05\u7406\u4e86](https://lore.kernel.org/loongarch/20231126121727.47303-2-xry111@xry111.site/)\\n`rdtime.d` \u5305\u88c5\u51fd\u6570\u7684\u4e00\u5904\u591a\u4f59\u5bc4\u5b58\u5668\u4f7f\u7528\u3002\\n\\nHengqi Chen [\u6539\u53d8\u4e86](https://lore.kernel.org/loongarch/20231121070209.210934-1-hengqi.chen@gmail.com/)\u7cfb\u7edf\u8c03\u7528\u53f7\u7684\u5b58\u50a8\u65b9\u5f0f\uff0c\\n\u5c06\u5176\u585e\u5165 `struct thread_info`\uff0c\u636e\u8bf4\u53ef\u89e3\u51b3\u4e00\u4e9b\u8c03\u8bd5\u5de5\u5177\u6253\u4e86\u8ddf\u8e2a\u70b9\u5374\u4e0d\u89e6\u53d1\u7684\u95ee\u9898\u3002\\n\u8fd8[\u4fee\u590d\u4e86](https://lore.kernel.org/loongarch/20231124014822.7894-1-hengqi.chen@gmail.com/)\u6253\u5370\u6709\u4e9b\u6808\u4e0a\u8fc7\u7a0b\u8c03\u7528\u8bb0\u5f55\u4f1a\u6b7b\u5faa\u73af\u7684\u95ee\u9898\u3002\\n\\nBinbin Zhou [\u4fee\u590d\u4e86](https://lore.kernel.org/loongarch/cover.1700817227.git.zhoubinbin@loongson.cn/)\u9f99\u82af 2 \u53f7\u6e29\u5ea6\u5b50\u7cfb\u7edf\u9a71\u52a8 `loongson2_thermal` \u7684\u4e24\u5904\u5c0f\u95ee\u9898\u3002\\n\\n### \u5de5\u5177\u94fe {#toolchain}\\n\\n#### ABI {#abi}\\n\\n\u8fd1\u65e5\u6765\uff0c\u793e\u533a\u540c\u5b66\u4eec\u88ab LoongArch ELF psABI v2.00 \u5f15\u5165\u7684 64 \u4f4d `PCALA` \u91cd\u5b9a\u4f4d\u8ba1\u7b97\u65b9\u5f0f[\u641e\u5f97\u7126\u5934\u70c2\u989d](https://github.com/loongson-community/discussions/issues/17)\u3002\\n\\n\u8fd9\u8981\u4ece[\u4e00\u4e2a\u770b\u4f3c\u5e73\u5e38\u7684\u5ba2\u6237\u53cd\u9988\u95ee\u9898\u4fee\u590d](https://github.com/llvm/llvm-project/pull/71907)\u8bf4\u8d77\u3002\\n\u5f00\u59cb\u90fd\u4ee5\u4e3a\u53ea\u662f\u5e73\u5e38\u5bb9\u6613\u5ffd\u89c6\u7684\u6ea2\u51fa\u95ee\u9898\uff0c\u4fee\u6389\u5c31\u597d\u4e86\uff0c\u6b8a\u4e0d\u77e5\u80cc\u540e\u9690\u85cf\u7684\u662f\u5f53\u524d\u5904\u7406\u65b9\u5f0f\u7684\u6839\u672c\u7f3a\u9677\uff1a\\n\u7531\u4e8e\u9f99\u67b6\u6784\u4e0a\u62fc\u63a5\u4e00\u4e2a 64 \u4f4d PC-\u76f8\u5bf9\u5730\u5740\u7684\u56db\u6761\u6307\u4ee4\u4e0d\u9700\u8981\u8fde\u7eed\uff0c\u5bf9\u5e94\u7684\u56db\u6761\u91cd\u5b9a\u4f4d\u8bb0\u5f55\u4e4b\u95f4\u4e5f\u6ca1\u6709\u4efb\u4f55\u5173\u8054\uff0c\\n\u56e0\u6b64\u5f53\u5b83\u4eec\u8de8\u4e86 4KiB\uff08\u5bf9\u5e94 12 \u4f4d\u7acb\u5373\u6570\uff09\u8fb9\u754c\u65f6\uff0c\u5c06\u5bfc\u81f4\u9519\u8bef\u7684\u91cd\u5b9a\u4f4d\u6548\u679c\u3002\\n\\n\u8fd9\u662f\u7531\u4e8e\uff0c\u53ea\u6709\u4e00\u6761\u6307\u4ee4\u8d1f\u8d23\u8d21\u732e\u300cPC-\u76f8\u5bf9\u300d\u4e2d\u7684\u300cPC\u300d\u90e8\u5206\uff0c\u90a3\u4e48\u8d1f\u8d23\u8d21\u732e\u300c\u76f8\u5bf9\u300d\u90e8\u5206\u7684\u53e6\u5916\u4e09\u6761\u6307\u4ee4\uff0c\\n\u90fd\u5e94\u8be5\u300c\u76f8\u5bf9\u300d\u4e8e**\u90a3\u6761\u8d21\u732e\u4e86 PC \u7684\u6307\u4ee4**\u2014\u2014\u8fd9\u5728\u5f53\u524d\u7248\u672c\u7684 LoongArch ELF psABI \u4e2d\uff0c\u65e0\u6cd5\u505a\u5230\uff01\\n\u6bcf\u6761\u6307\u4ee4\u9644\u5c5e\u7684\u91cd\u5b9a\u4f4d\u8bb0\u5f55\uff0c\u90fd\u6307\u5411\u90a3\u4e2a\u76ee\u6807\u7b26\u53f7\uff0c\u800c\u76f8\u4e92\u4e4b\u95f4\u4e0d\u5b58\u5728\u5173\u8054\u3002\\n\u56e0\u6b64\u53ea\u8981\u56db\u6761\u6307\u4ee4\u4e0d\u5c5e\u4e8e\u540c\u4e00\u6bb5 4KiB \u7a7a\u95f4\uff0c\u5b9e\u9645\u4f1a\u88ab\u6267\u884c\u7684\u300c\u76f8\u5bf9\u300d\u90e8\u5206\u5c31\u4f1a\u504f\u5dee\uff1a\\n\u76ee\u524d\u53ea\u80fd\u4f7f\u7528\u6bcf\u6761\u6307\u4ee4\u81ea\u5df1\u7684 PC \u6765\u8ba1\u7b97\u91cd\u5b9a\u4f4d\u3002\\n\\n\u76ee\u524d\u8ba8\u8bba\u4f3c\u4e4e\u5b89\u9759\u4e86\u4e0b\u6765\uff1a\u5927\u6982\u7387\u8981\u7ed9 LoongArch ELF psABI \u518d\u6253\u4e00\u6b21\u8865\u4e01\uff0c\\n\u4ee5\u7c7b\u4f3c RISC-V \u7684\u505a\u6cd5\u4e3a\u95ee\u9898\u91cd\u5b9a\u4f4d\u8bb0\u5f55\u8865\u5145\u5173\u952e\u4fe1\u606f\u3002\\n\u5f53\u7136\uff0c\u8fd9\u6709\u5f88\u591a\u5177\u4f53\u5b9e\u73b0\u65b9\u5f0f\uff0c\u5404\u6709\u5229\u5f0a\uff1b\u7814\u7a76\u4e5f\u5c06\u7ee7\u7eed\uff0c\u6709\u5174\u8da3\u7684\u540c\u5b66\u53ef\u4ee5\u53bb\u4e0a\u6e38\u56f4\u89c2\u3001\u53c2\u4e0e\u3002\\n\\n\u611f\u8c22 Xi Ruoyao \u63d0\u4f9b\u65b0\u95fb\u7ebf\u7d22\uff01\\n\\n#### GCC {#gcc}\\n\\n\u7531\u4e8e GCC 14 \u7684\u65b0\u529f\u80fd\u7279\u6027\u5f00\u53d1\u9636\u6bb5\u5df2\u7ecf\u7ed3\u675f\uff0cXi Ruoyao [\u53d1\u8d77\u4e86](https://github.com/loongson-community/discussions/issues/16)\u5728 GCC 15 \u5b9e\u73b0 LoongArch 16 \u5b57\u8282\u5bbd\u5ea6\u539f\u5b50\u64cd\u4f5c\u7684\u8ba8\u8bba\u3002\\n\\nXi Ruoyao [\u4fee\u590d\u4e86](https://gcc.gnu.org/r14-5634)\u9f99\u67b6\u6784 stage1 \u4ea4\u53c9\u7f16\u8bd1\u5668\u7684\u6784\u5efa\u5931\u8d25\u95ee\u9898\uff1a\\n\u5728\u76ee\u6807 libc \u53ef\u7528\u4e4b\u524d\uff0c\u6ca1\u6709\u529e\u6cd5\u4f7f\u7528 ``\uff0c\u56e0\u6b64\u5728\u975e\u76ee\u6807\u67b6\u6784\u7684\u5e93\u4ee3\u7801\u91cc\u4e5f\u5e94\u8be5\u907f\u514d\u4f7f\u7528\u3002\\n\\nXi Ruoyao \u8fd8[\u4fee\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-November/638067.html)\u4e0e\\nLoongArch \u4e0d\u592a\u76f4\u63a5\u76f8\u5173\u7684\u4e00\u5904\u6d6e\u70b9\u4f18\u5316\u9519\u8bef\u3002\\n\\n\u7b14\u8005\u4e0a\u5468[\u6392\u67e5\u51fa\u4e86](https://github.com/loongson-community/discussions/issues/19)\\nGCC 14 \u6784\u5efa `systemd-boot` UKI stub \u4e0d\u80fd\u6b63\u5e38\u5f15\u5bfc\u5185\u6838\u7684\u95ee\u9898\u539f\u56e0\uff1a\\n\u662f\u5728\u7f16\u8bd1\u65f6\u5e26\u4e86 `-march=la464` \u6216\u5176\u4ed6\u8868\u793a\u6709 SIMD \u6269\u5c55\u7528\u7684\u7f16\u8bd1\u53c2\u6570\u65f6\uff0cGCC \u4fbf\u5728 UEFI \u4ee3\u7801\u91cc\u4f7f\u7528\u4e86 SIMD \u6307\u4ee4\uff0c\\n\u800c\u8fd9\u65f6 SIMD \u5355\u5143\u672a\u4e3a\u66f4\u65e9\u9636\u6bb5\u8fd0\u884c\u7684\u56fa\u4ef6\u4ee3\u7801\u6240\u542f\u7528\uff0c\u5bfc\u81f4\u6b7b\u6389\u3002\\n\u5728\u5c1d\u8bd5\u89e3\u51b3\u95ee\u9898\u8fc7\u7a0b\u4e2d\uff0c\u53d1\u73b0\u52a0\u4e86 `-mabi=lp64s` \u4f1a\u5bfc\u81f4\u6784\u5efa\u5931\u8d25\uff0c\u56e0\u4e3a\u60f3\u5f15\u7528\u8f6f\u6d6e\u70b9\u914d\u7f6e\u7684 glibc \u5934\u800c\u4e0d\u80fd\uff1b\\n\u6b64\u65f6 Xi Ruoyao \u53d1\u73b0 GCC \u7684 `` \u603b\u662f\u4f1a\u5f15\u7528 libc \u7684\u540c\u540d\u5934\uff0c\u800c\u5728 `-ffreestanding`\\n\u60c5\u5f62\u4e0b\u8fd9\u662f\u53ef\u4ee5\u907f\u514d\u7684\uff0c\u56e0\u800c[\u53d1\u8d77\u4e86](https://gcc.gnu.org/PR112699)\u8be5\u63d0\u8bae\u3002\\n\\n\u672c\u671f\u7684\u5927\u591a\u6570 GCC \u65b0\u95fb\u90fd\u662f Xi Ruoyao \u5e2e\u5fd9\u6574\u7406\uff08\u4ee5\u53ca\u81ea\u5df1\u5236\u9020\uff09\u7684\uff0c\u8ba9\u6211\u4eec\u611f\u8c22 :ta: \u7684\u5949\u732e\uff01\\n\\n#### Go {#golang}\\n\\n\u622a\u81f3 11 \u6708 22 \u65e5\uff0cGo 1.22 \u5f00\u53d1\u5468\u671f\u5df2\u8fdb\u5165\u529f\u80fd\u51bb\u7ed3\u9636\u6bb5\u3002Go 1.22 \u7684\u9f99\u67b6\u6784\u76f8\u5173\u53d8\u66f4\u6709\uff1a\\n\\n* \u5bc4\u5b58\u5668\u4f20\u53c2 ABI\uff08regabi\uff09\u652f\u6301\uff1b\\n* \u63d2\u4ef6\u6784\u5efa\u6a21\u5f0f\uff08`buildmode=plugin`\uff09\u652f\u6301\u3002\\n\\n\u8fd9\u4e2a\u7248\u672c\u7684 LoongArch regabi \u652f\u6301\u5904\u4e8e\u5b9e\u9a8c\u6027\u72b6\u6001\uff0c\u4e0d\u4f1a\u9ed8\u8ba4\u5f00\u542f\uff0c\u4f46\u5b9e\u9645\u4e0a\u8be5\u529f\u80fd\u5df2\u7a33\u5b9a\u8fd0\u884c\u4e00\u6bb5\u65f6\u95f4\u4e86\u3002\\n\u5f85 Go 1.22 \u6b63\u5f0f\u53d1\u5e03\u65f6\uff0c\u8bfb\u8005\u53ef\u53c2\u8003\u5b98\u65b9\u7684\u53d1\u5e03\u8bf4\u660e\u6587\u6863\u4ee5\u4e86\u89e3\u5177\u4f53\u8be5\u600e\u4e48\u7528\uff0c\u5e2e\u5fd9\u6d4b\u8bd5\u3002\\n\\nMeidan Li \u7b49\u4eba\u8fd1\u65e5\u4e5f[\u63d0\u4ea4\u4e86](https://go.dev/cl/535616) cgo \u7684\u5185\u90e8\u94fe\u63a5\u652f\u6301\uff0c\\n\u94fe\u63a5\u542b\u6709 cgo \u7684 Go \u7a0b\u5e8f\u65f6\u5c31\u4e0d\u518d\u9700\u8981\u672c\u5730\u5b58\u5728\u4e00\u5957 C \u4ea4\u53c9\u5de5\u5177\u94fe\u4e86\u3002\\n\u8fd9\u5bf9\u4e0d\u5199 C/C++ \u4f46\u4f1a\u5411 LoongArch \u4ea4\u53c9\u7f16\u8bd1\u7684\u4eba\u58eb\u4f1a\u66f4\u53cb\u597d\u3002\\n\\n## \u6742\u95fb\u64ad\u62a5 {#assorted-news}\\n\\nXi Ruoyao \u4fee\u4e86\u4e00\u5806 OpenSSL bugs\uff1a\\n\\n* [\u4fee\u590d\u4e86](https://github.com/openssl/openssl/pull/22812) `linux64-loongarch64` \u5e73\u53f0\u88ab\u81ea\u52a8\u63a2\u6d4b\u65f6\uff0c\u5f00\u542f LTO \u6784\u5efa\u4f1a\u5931\u8d25\u7684\u95ee\u9898\u3002\\n\\n \u6b64\u4fee\u590d\u4e0d\u4f1a\u88ab\u79fb\u690d\u56de OpenSSL 3.2.x \u7248\u672c\uff0c\u56e0\u6b64\u5982\u679c\u60a8\u8981\u5f00\u7740 LTO \u6784\u5efa\u8fd9\u4e9b\u7248\u672c\u7684 OpenSSL\uff0c\u8bf7\u624b\u5de5\u6307\u5b9a\u5e73\u53f0\u4e3a `linux64-loongarch64`\u3002\\n\\n* [\u5c1d\u8bd5\u89e3\u51b3\u4e86](https://github.com/openssl/openssl/pull/22816)\u4e0a\u4e2a\u95ee\u9898\u7684\u6839\u56e0\uff1a\u522b\u540d\u5206\u6790\uff08aliasing analysis\uff09\u4e0d\u5f00\u5fc3\u4e86\u3002\\n* [\u4fee\u590d\u4e86](https://github.com/openssl/openssl/pull/22817) LoongArch64 \u6c47\u7f16\u4f18\u5316\u5305\u4e2d\u7684 ChaCha20 \u7b97\u6cd5\u672a\u9075\u5b88 ABI\uff08\u8be5\u4fdd\u5b58\u7684\u6d6e\u70b9\u5bc4\u5b58\u5668\u6ca1\u4fdd\u5b58\uff09\u7684\u95ee\u9898\u3002\\n* \u7528 `rdtimel.w` \u6307\u4ee4[\u771f\u6b63\u5b9e\u73b0\u4e86](https://github.com/openssl/openssl/pull/22823) `rdtsc` \u6307\u4ee4\u7684\u6a21\u62df\uff08\u5148\u524d\u76f4\u63a5\u8fd4\u56de 0 \u4e86\uff09\u3002\\n\\n\u611f\u8c22 :ta: \u81ea\u5df1\u521b\u9020\u5e76\u63d0\u4f9b\u65b0\u95fb\u7ebf\u7d22\uff01\\n\\n## \u5f20\u8d34\u680f {#bulletin}\\n\\n\u672c\u680f\u76ee\u53ef\u4f9b\u5f20\u8d34\u516c\u76ca\u6027\u8d28\u7684\u5404\u79cd\u4fe1\u606f\u3002\\n\\n* \u53cb\u60c5\u6269\u6563\uff1a[\u5b89\u540c\u5f00\u6e90\u793e\u533a\uff08AOSC\uff09][aosc]\u7684\u9f99\u67b6\u6784\u79fb\u690d\u4e3b\u7ebf\u5316\u5de5\u4f5c\u300c\u5408\u9f99\u300d\u4ecd\u5728\u5982\u706b\u5982\u837c\u8fdb\u884c\u4e2d\uff0c\\n \u6b64\u5de5\u4f5c\u5b8c\u6210\u540e\u9f99\u67b6\u6784\u5c06\u5347\u683c\u4e3a AOSC OS \u7684 Tier 1 \u67b6\u6784\u3002\\n \u6b22\u8fce\u540c\u5b66\u4eec\u8bd5\u7528\u3001\u53cd\u9988\uff0c\u4e5f\u6b22\u8fce\u6709\u5fd7\u4e4b\u58eb\u4e00\u540c\u52a0\u5165\uff08\u6c9f\u901a\u6e20\u9053\u8be6\u89c1 AOSC \u7f51\u7ad9\u76f8\u5173\u680f\u76ee\uff09\u3002\\n* \u672c\u5468\u62a5[\u6301\u7eed\u63a5\u53d7\u7f51\u53cb\u6295\u7a3f][call-for-submissions]\u3002\u6b22\u8fce\u6765\u4e0a\u6e38\u5750\u5750\uff01\\n\\n[aosc]: https://aosc.io\\n[call-for-submissions]: https://github.com/loongson-community/areweloongyet/issues/16"},{"id":"this-week-in-loongarch-25","metadata":{"permalink":"/newsletter/this-week-in-loongarch-25","editUrl":"https://github.com/loongson-community/areweloongyet/newsletter/2023-11-20-this-week-in-loongarch-25.md","source":"@site/newsletter/2023-11-20-this-week-in-loongarch-25.md","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 25 \u671f","description":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01","date":"2023-11-20T10:50:00.000Z","formattedDate":"2023\u5e7411\u670820\u65e5","tags":[{"label":"\u6bcf\u5468\u4e00\u9f99","permalink":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99"}],"readingTime":11.515,"hasTruncateMarker":true,"authors":[{"name":"WANG Xuerui","title":"\ud83d\udc32\u9f99\u95e8\u5ba2\u6808\u6253\u6742\u7684","url":"https://github.com/xen0n","imageURL":"https://github.com/xen0n.png","key":"xen0n"}],"frontMatter":{"slug":"this-week-in-loongarch-25","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 25 \u671f","authors":["xen0n"],"date":"2023-11-20T10:50:00.000Z","tags":["\u6bcf\u5468\u4e00\u9f99"]},"unlisted":false,"prevItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 26 \u671f","permalink":"/newsletter/this-week-in-loongarch-26"},"nextItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 24 \u671f","permalink":"/newsletter/this-week-in-loongarch-24"}},"content":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01\\n\u4e0a\u5468\u7684\u8fdb\u5c55\u4e3b\u8981\u6709 Linux \u548c\u5de5\u5177\u94fe\uff08\u6709\u5f88\u591a\u6210\u679c\uff09\u3002\\n\u8be6\u60c5\u70b9\u8fdb\u6765\u770b\uff01\\n\\n\x3c!-- truncate --\x3e\\n\\n\u5982\u65e0\u7279\u522b\u8bf4\u660e\uff0c\u6587\u4e2d\u63d0\u53ca\u7684\u65e5\u671f\u3001\u65f6\u95f4\u90fd\u4e3a\u5317\u4eac\u65f6\u95f4\uff08UTC+8\uff09\u3002\\n\\n## \u5148\u300c\u9a6c\u300d\u518d\u770b\\n\\n\u672c\u680f\u76ee\u7684\u5185\u5bb9\u5177\u6709\u4e00\u5b9a\u5ef6\u7eed\u6027\uff0c\u5c06\u6301\u7eed\u8ffd\u8e2a\u62a5\u9053 LoongArch® \u9886\u57df\u7684\u91cd\u8981\u6216\u957f\u671f\u9879\u76ee\uff08\u5751\uff09\u3002\\n\\n### Linux\\n\\n11 \u6708 19 \u65e5\uff0c\u5185\u6838\u6784\u5efa\u7cfb\u7edf\u7ef4\u62a4\u8005 Masahiro Yamada [\u5e2e\u5fd9\u6dfb\u52a0\u4e86](https://lore.kernel.org/loongarch/20231119053448.2367725-1-masahiroy@kernel.org/)\u9f99\u67b6\u6784\\n`vmlinuz.efi` \u4e0e `vmlinux.efi` \u4e4b\u95f4\u9057\u6f0f\u7684\u4f9d\u8d56\u5173\u7cfb\u3002\\n\u8fd9\u4f7f\u5f97\u5e76\u884c\u6784\u5efa\u66f4\u53ef\u9760\uff1a\u4e4b\u524d\u6709\u4f4e\u6982\u7387\u4f1a\u5728\u8fd9\u4e2a\u9636\u6bb5\u5931\u8d25\u3002\\n\\n11 \u6708 18 \u65e5\uff0c\u793e\u533a\u7528\u6237 Haowu Ge \u5728\u7f16\u8bd1 OpenZFS \u65f6\uff0c[\u53d1\u73b0](https://github.com/chenhuacai/linux/issues/3)\u591a\u51fa\u4e86\u5bf9\u4fe9 GPL-only \u7b26\u53f7\u7684\u4f9d\u8d56\u3002\\n\u56e0\u4e3a\u8fd9\u4fe9\u7b26\u53f7\u662f\u7528\u6765\u5b9e\u73b0 `virt_to_page` \u8fd9\u4e00\u9884\u5904\u7406\u5668\u5b8f\u7684\uff0c\u800c\u539f\u5148\u5bf9\u6b64\u5b8f\u7684\u4f7f\u7528\u5e76\u4e0d\u6d89\u53ca GPL\uff0c\\n\u6240\u4ee5\u5c06 GPL \u9700\u6c42\u53bb\u9664\u5927\u6982\u4e5f\u5408\u60c5\u5408\u7406\uff1bHuacai Chen \u7b2c\u4e8c\u5929\u4fbf[\u8fd9\u4e48\u505a\u4e86](https://lore.kernel.org/loongarch/20231119023317.3359647-1-chenhuacai@loongson.cn/)\u3002\\n\\nWANG Rui \u5728\u6301\u7eed\u63a8\u8fdb ClangBuiltLinux \u5de5\u4f5c\uff1a11 \u6708 15 \u65e5\u9884\u9632\u6027\u5730[\u589e\u52a0\u4e86](https://lore.kernel.org/loongarch/20231115132137.178523-1-wangrui@loongson.cn/)\u7f16\u8bd1\u9009\u9879\uff0c16\\n\u65e5\u53c8[\u6539\u53d8\u4e86](https://lore.kernel.org/loongarch/20231116130331.241395-1-wangrui@loongson.cn/)\u7edd\u5bf9\u91cd\u5b9a\u4f4d\u7684\u8bb0\u5f55\u65b9\u5f0f\u4ee5\u5141\u8bb8\u7528\\nLLVM/Clang \u7f16\u8bd1\u53ef\u91cd\u5b9a\u4f4d\u5185\u6838\u3002\\n\\n11 \u6708 15 \u65e5\uff0cHuacai Chen \u53c2\u7167 RISC-V \u505a\u6cd5[\u6539\u53d8\u4e86](https://lore.kernel.org/loongarch/20231115141530.2534778-1-chenhuacai@loongson.cn/)\u5185\u6838\u53c2\u6570\\n`nokaslr` \u7684\u5904\u7406\u65b9\u5f0f\uff0c\u4f7f\u5176\u4e0d\u4f1a\u88ab\u900f\u4f20\u81f3 init \u8fdb\u7a0b\u7684\u547d\u4ee4\u884c\u53c2\u6570\u3002\\n\\n\u540c\u4e00\u5929\uff0cHuacai Chen \u8fd8[\u4fee\u590d\u4e86](https://lore.kernel.org/loongarch/20231115090735.2404866-1-chenhuacai@loongson.cn/)\\nRandy Dunlap \u524d\u4e00\u5929[\u81ea\u52a8\u5316\u53d1\u73b0\u7684](https://lore.kernel.org/loongarch/960bef74-ed09-4b6f-8ae8-b3effef6914f@infradead.org/)\\nLoongArch KVM \u6784\u5efa\u5931\u8d25\u3002\\n\u8fd9\u662f\u4e00\u5904\u672a\u8ddf\u8fdb\u7684 API \u53d8\u66f4\uff1b\u4f30\u8ba1\u662f\u539f\u4f5c\u8005[\u91cd\u6784](https://lore.kernel.org/all/20231105163040.14904-4-pbonzini@redhat.com/)\u65f6\uff0c\\n\u7531\u4e8e LoongArch KVM \u4ee3\u7801\u5f53\u65f6\u5c1a\u672a\u4e3b\u7ebf\u5316\uff0c\u56e0\u800c\u6ca1\u770b\u5230\u3001\u6539\u5230\u3002\\n\\n11 \u6708 14 \u65e5\uff0cXi Ruoyao \u5728\u65e5\u5e38\u7684\u5de5\u5177\u94fe\u7ef4\u62a4\u4e2d\uff0c\u53d1\u73b0\u5347\u7ea7\u5230 Linux v6.7-rc1 \u4e4b\u540e\uff0c\u51e0\u6761 glibc\\n\u591a\u7ebf\u7a0b\u540c\u6b65\u7684\u6d4b\u8bd5\u7528\u4f8b\u5f00\u59cb\u8d85\u65f6\u4e86\uff0c\u800c x86 \u5c45\u7136\u4e5f\u5b58\u5728\u8be5\u95ee\u9898\uff01\\n\u9042\u679c\u65ad[\u62a5\u544a\u4e86](https://lore.kernel.org/all/d69d50445284a5e0d98a64862877c1e6ec22a9a8.camel@xry111.site/T/#u)\u3002\\n\u56e0\u4e3a\u5f15\u8d77\u95ee\u9898\u7684\u63d0\u4ea4\u662f\u4e2a\u5e38\u89c4\u91cd\u6784\uff0c\u53ea\u662f\u6539\u53d8\u4e86\u51e0\u4e2a\u6807\u5fd7\u4f4d\u7684\u5177\u4f53\u53d6\u503c\uff0c\u6240\u4ee5\u4f5c\u8005 Peter Zijlstra \u4e5f\u767e\u601d\u4e0d\u5f97\u5176\u89e3\u3002\\n\u76f4\u5230 Florian Weimer \u6307\u51fa `kernel/futex/core.c` \u6709\u51e0\u5904\u4f20\u53c2\u76f4\u63a5\u5199\u4e86 `1` \u800c\u975e `FLAGS_SHARED`\uff0c\\n\u624d\u604d\u7136\u5927\u609f\uff1b\\n\u4e8e\u662f\u6b64\u95ee\u9898\u5728 v6.7-rc2 \u5df2[\u5f97\u5230\u4fee\u590d](https://github.com/torvalds/linux/commit/c9bd1568d5462f4108417518ce1af7b924acfb6f)\u3002\\n\u611f\u8c22 Xi Ruoyao \u7684\u65b0\u95fb\u7ebf\u7d22\u4ee5\u53ca :ta: \u672c\u6b21\u4e3a Linux \u7a33\u5b9a\u6027\u4f5c\u51fa\u7684\u8d21\u732e\uff01\\n\\n\\n### \u5de5\u5177\u94fe\\n\\n#### binutils\\n\\n11 \u6708 14 \u65e5\uff0cXi Ruoyao \u60f3\u7ed9 binutils \u5728\u9f99\u67b6\u6784\u4e0a\u589e\u52a0 `DT_RELR` \u652f\u6301\uff0c\u8fd9\u6837\u53ef\u4ee5\u6709\u6548\u7f29\u5c0f\u4e00\u4e9b\u5927\u8f6f\u4ef6\u7684\u4f53\u79ef\uff1b\\n\u4f46 binutils \u7684\u6e90\u7801\u5f88\u4e0d\u76f4\u89c2\uff0c\u4e0d\u597d\u6539\uff0c\u4e8e\u662f\\n:ta: [\u5efa\u7acb\u4e86](https://github.com/loongson-community/discussions/issues/12)\u534f\u8c03\u5de5\u5355\u3002\\n\u968f\u540e MaskRay \u770b\u5230\u4e86\uff0c\u53cb\u60c5\u6307\u4e86\u6761\u8def\u3002\\n\\n#### GCC\\n\\n11 \u6708 19 \u65e5\uff0cXi Ruoyao [\u4fee\u590d\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-November/637239.html)\\nLSX \u6d6e\u70b9\u5411\u91cf shuffle \u6700\u7ec8\u751f\u6210\u4ee3\u7801\u5176\u5dee\u65e0\u6bd4\u7684\u95ee\u9898\u3002\\n\\n11 \u6708 17 \u65e5\uff0c\u5728\u6392\u67e5\u4e00\u4e2a[\u6709\u6982\u7387\u53d1\u751f\u7684\u95ee\u9898](https://github.com/loongson-community/discussions/issues/7)\u65f6\uff0cXi Ruoyao\\n[\u53d1\u73b0](https://gcc.gnu.org/PR112578) GCC \u5728\u5411\u91cf\u5316 LoongArch \u6d6e\u70b9\u820d\u5165\u64cd\u4f5c\u65f6\uff0c\u5bf9\u6d6e\u70b9\u5f02\u5e38\u7684\u5904\u7406\u6709\u8bef\u3002\\n\u622a\u81f3\u53d1\u7a3f\u65f6\uff0c[\u8fed\u4ee3\u5230\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-November/637316.html)\u7b2c\u4e09\u7248\u4fee\u590d\u3002\\n\u8fd9\u4e2a\u4ee3\u7801\u751f\u6210\u95ee\u9898\u8ddf\u539f\u5148\u8981\u6392\u67e5\u7684\u95ee\u9898\u65e0\u5173\uff1b\u8fd8\u5f97\u63a5\u7740\u67e5\uff01\\n\\n\u540c\u4e00\u5929\u51cc\u6668\uff0cKevin Lee \u5728 RISC-V \u4e0a[\u53d1\u73b0\u4e86](https://gcc.gnu.org/PR107723)\u7c7b\u4f3c\u7684\u6d6e\u70b9\u5f02\u5e38\u5904\u7406\u95ee\u9898\uff1a\\n\u5373\u4fbf\u52a0\u4e86 `-fno-fp-int-builtin-inexact` \u9009\u9879\uff0c`lround`\u3001`ceil` \u4e0e `floor` \u7b49\u64cd\u4f5c\u8fd8\u662f\u4f1a\u4ea7\u751f\u53ef\u80fd\u629b\u5f02\u5e38\u7684\u6307\u4ee4\u3002\\n\u968f\u540e\u4eba\u4eec\u53d1\u73b0 x86_64\u3001AArch64 \u548c LoongArch \u4e0a\u90fd\u5b58\u5728\u8be5\u95ee\u9898\uff0c\u56e0\u4e3a\u67b6\u6784\u65e0\u5173\u90e8\u5206\u5df2\u7ecf\u628a\u4ee3\u7801\u300c\u4f18\u5316\u300d\u6210\u4e86\u9519\u8bef\u5f62\u72b6\u3002\\n\u8fd9[\u63d0\u9192\u4e86](https://gcc.gnu.org/PR107723) Andrew Pinski \u8981\u5b8c\u5584\u4e0b\u8fd9\u90e8\u5206\u6587\u6863\u3002\\n\\n11 \u6708 16 \u65e5\uff0cXi Ruoyao [\u5b8c\u6210\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-November/636795.html)\u4e00\u7248\\nLA664 \u65b0\u589e\u7279\u6027\u7684 GCC \u9002\u914d\uff0c\u53ef\u4ee5\u7528 `-march=la664` \u4e86\uff0c\\n\u4e5f\u7ed9 `-march=native` \u52a0\u4e86\u76f8\u5e94\u5904\u7406\u3002\\n\u4e0d\u5de7\u9f99\u82af\u4e5f\u505a\u4e86\u540c\u6837\u7684\u4e8b\uff0c\u649e\u8f66\u4e86\uff1bLulu Cheng\\n\u7b2c\u4e8c\u5929[\u53d1\u4e86\u51fa\u6765](https://gcc.gnu.org/pipermail/gcc-patches/2023-November/636946.html)\u3002\\n\u9f99\u82af\u7684\u8fd9\u7248\u4ee3\u7801\u53ea\u505a\u4e86\u539f\u5b50\u64cd\u4f5c\u7684\u4e00\u90e8\u5206\u4f18\u5316\uff0c\u800c\u672a\u653e\u5bbd 32 \u4f4d\u9664\u6cd5\u3001\u53d6\u4f59\u64cd\u4f5c\u7684\u5165\u53c2\u8981\u6c42\uff0c\\n\u4e5f\u672a\u53bb\u9664\u90a3\u4e9b\u5728 LA664 \u4e0a\u4e0d\u518d\u5fc5\u8981\u7684 `DBAR 0x700` \u6307\u4ee4\uff1b\\n\u56e0\u6b64 Xi Ruoyao \u4ee5\u8fd9\u4e00\u7248\u9f99\u82af\u4ee3\u7801\u4e3a\u57fa\u7840\uff0c\u53c8[\u6539\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-November/637090.html)\u4e00\u7248\u3002\\n\\n\\n\\n\u540c\u4e00\u5929\uff0cJiahao Xu [\u4fee\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-November/636792.html)\u4e00\u4e9b\\nLSX\u3001LASX \u6d4b\u8bd5\uff1bLi Wei\\n\u4e5f\u5411 GCC [\u660e\u786e\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-November/636789.html)\\nLoongArch \u7684 `clz` `ctz` \u6307\u4ee4\u53ef\u4ee5\u6b63\u786e\u5904\u7406\u8f93\u5165\u4e3a\u96f6\u7684\u60c5\u51b5\u3002\\n\\n\u8fd9\u4e00\u5929 Jiahao Xu \u8fd8\u6839\u636e SPEC2017 \u8dd1\u5206\u7ed3\u679c\uff0c\u628a\u5411\u91cf\u8bbf\u5b58\u64cd\u4f5c\u7684\u6210\u672c\u4ece 1\\n[\u5fae\u8c03\u5230\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-November/637316.html)\\n2\uff0c\u8ba9\u5b83\u4eec\u548c\u975e\u5bf9\u9f50\u8bbf\u5b58\u76f8\u540c\uff1b\\n\u7ed3\u679c[\u5f71\u54cd\u5230\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-November/637155.html)\u6d4b\u8bd5\uff0c\\n\u5f85\u4fee\u590d\u3002\\n\\n11 \u6708 14 \u65e5\uff0cLulu Cheng \u8ba9 GCC \u5728\u4e2d\u7b49\u4ee3\u7801\u6a21\u578b\uff08`-mcmodel=medium`\uff09\u4e0b\uff0c[\u6362\u4f5c](https://gcc.gnu.org/pipermail/gcc-patches/2023-November/636443.html)\u4ee5\\n`%call36` \u5f62\u5f0f\u8fdb\u884c\u8fc7\u7a0b\u8c03\u7528\u3002`call36` \u662f\u7b2c 23 \u671f[\u62a5\u9053\u8fc7\u7684](./2023-11-06-this-week-in-loongarch-23.mdx#abi)\u65b0 ABI\u3002\\n\u8fd9\u4e2a\u53d8\u66f4\u6b20\u8003\u8651\u4e86\u642d\u914d\u65e7\u6c47\u7f16\u5668\u4f7f\u7528\u7684\u60c5\u51b5\uff1bXi Ruoyao 11 \u6708 18 \u65e5[\u5e2e\u5fd9\u4fee\u590d\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-November/637153.html)\u3002\\n\\n\u540c\u4e00\u5929\uff0c\u4e0a\u6e38\u5f00\u53d1\u8005 Andrew Pinski [\u4fee\u590d\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-November/636445.html)[^author-info-for-the-uninitiated]\u4e0a\u671f\u5468\u62a5[\u63d0\u5230\u7684](./2023-11-13-this-week-in-loongarch-24.md#gcc)\u4e00\u5904\u5b9e\u9645\u4e0a\u662f\u52a3\u5316\u7684\u300c\u4f18\u5316\u300d\u3002\\n\uff08\u8fd9\u4fee\u590d\u628a PowerPC \u7684\u6d4b\u8bd5\u70b8\u4e86\uff0c\u4f46\u4e0a\u6e38\u7684\u7ed3\u8bba\u662f\u5e94\u8be5\u6539 PowerPC \u76f8\u5173\u4ee3\u7801\u3002\uff09\\n\\n[^author-info-for-the-uninitiated]: \u8be5\u4fee\u590d\u65b9\u6848\u662f Andrew Pinski \u63d0\u51fa\u7684\uff0c\u53ea\u662f Xi Ruoyao \u5e2e :ta: \u628a\u90ae\u4ef6\u53d1\u4e86\u3002\u56e0\u4e3a\u90ae\u4ef6\u6b63\u6587\u5e26\u4e86 `From:` \u5b57\u6bb5\uff0c\u56e0\u6b64 Git \u63d0\u4ea4\u4e2d\u7684\u4f5c\u8005\u4fe1\u606f\u4ecd\u7136\u662f\u6b63\u786e\u7684\u3002\\n\\n\u540c\u4e00\u5929\u51cc\u6668\uff0cXi Ruoyao \u8fd8[\u53d1\u73b0](https://gcc.gnu.org/PR112520)\u6709\u4e2a GCC \u63d2\u4ef6\u6d4b\u8bd5\u7528\u4f8b\u5728\u9f99\u67b6\u6784\u4e0a\u5e94\u8be5\u5c31\u6ca1\u8fd0\u884c\u6210\u529f\u8fc7\uff1b\u8be5\u95ee\u9898\u4ecd\u5f85\u6392\u67e5\u3002\\n\\n11 \u6708 13 \u65e5\uff0cXi Ruoyao [\u6284\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-November/636379.html)\u4e2a\\nAArch64 \u7684\u4f18\u5316\uff0c\u80fd\u4e3a\u5f62\u5982 `copysign(x, -1)` \u7684\u64cd\u4f5c\u4ea7\u751f\u9ad8\u6548\u7684\u5411\u91cf\u5316\u4ee3\u7801\uff1b\\n\u53c8[\u79fb\u690d\u4e86](https://gcc.gnu.org/r14-5432) LLVM \u7684 `DBAR` \u4f18\u5316\\n\uff08\u5468\u62a5\u7b2c 20 \u671f[\u6709\u62a5\u9053](./2023-10-16-this-week-in-loongarch-20.md#LLVM)\uff09\u3002\\n\\n\u4ee5\u4e0a\u65b0\u589e\u7684\u5927\u5757\u5185\u5bb9\u90fd\u8d76\u4e0a\u4e86 GCC 14 stage 1\uff0c\u5728\u660e\u5e74\u7684 GCC 14.1 \u6b63\u5f0f\u7248\u5c31\u80fd\u7528\u4e0a\u4e86\u3002\\n\u7b49\u4e0d\u53ca\u7684\u540c\u5b66\u4e5f\u53ef\u4ee5\u4e0b\u8f7d GCC 14 \u5feb\u7167\u81ea\u884c\u7f16\u8bd1\uff0c\u6216\u4f7f\u7528 Gentoo\uff08\u76f4\u63a5 unmask \u76f8\u5e94\u7248\u672c\u5373\u53ef\uff09\u7b49\u6eda\u52a8\u53d1\u884c\u7248\uff0c\\n\u9a6c\u4e0a\u4f53\u9a8c\u3002\\n\\n\u672c\u671f\u7684\u5927\u591a\u6570 GCC \u65b0\u95fb\u90fd\u662f Xi Ruoyao \u5e2e\u5fd9\u6574\u7406\uff08\u4ee5\u53ca\u81ea\u5df1\u5236\u9020\uff09\u7684\uff0c\u8ba9\u6211\u4eec\u611f\u8c22 :ta: \u7684\u5949\u732e\uff01\\n\\n#### LLVM\\n\\n\u4eba\u4eec\u5df2\u7ecf\u5728\u7d27\u9523\u5bc6\u9f13\u5b9e\u73b0 LoongArch ELF psABI v2.20 \u7684\u65b0\u5185\u5bb9\u4e86\u3002\\n\\n11 \u6708 14 \u65e5\uff0cMaskRay \u4eb2\u81ea[\u5e2e\u5fd9\u4fee\u590d\u4e86](https://github.com/llvm/llvm-project/pull/72221)\u4e0a\u671f\u5468\u62a5[\u63d0\u5230\u7684](./2023-11-13-this-week-in-loongarch-24.md#llvm)\\nLLVM [issue #71645](https://github.com/llvm/llvm-project/issues/71645)\u3002\\n\\n\u540c\u4e00\u5929\uff0cMQ-mengqing \u4e3a LLD [\u589e\u52a0\u4e86](https://github.com/llvm/llvm-project/pull/72190)\\n`R_LARCH_{ADD,SUB}6` \u4e24\u79cd\u91cd\u5b9a\u4f4d\u8bb0\u5f55\u7684\u652f\u6301\uff0c\\n\u53c8\u4e3a LoongArch MC [\u589e\u52a0\u4e86](https://github.com/llvm/llvm-project/pull/72191) relaxation \u652f\u6301\u3002\\n\\n11 \u6708 13 \u65e5\uff0cMQ-mengqing [\u8bd5\u56fe](https://github.com/llvm/llvm-project/pull/72095)\u4e3a\\nLoongArch MC \u589e\u52a0\u7c7b\u4f3c [GAS \u7684\u6761\u4ef6\u8df3\u8f6c\u8303\u56f4\u6269\u5c55](https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commitdiff;h=1fb3cdd87ec61715a5684925fb6d6a6cf53bb97c)\u7684\u4e00\u9053\u5de5\u5e8f\uff0c\\n\u4f46 MaskRay \u53ca\u65f6\u6307\u51fa\u5f53\u5e74 RISC-V \u505a\u76f8\u540c\u4e8b\u60c5[\u88ab\u53d1\u73b0\u7684](https://reviews.llvm.org/D108961)\u5751\uff1a\\n\u5982\u679c\u9f99\u67b6\u6784\u80fd\u907f\u514d\u8e29\u5230\u8fd9\u4e9b\u5751\uff0c\u90a3\u4e48\u4fbf\u80fd\u300c\u6bd4 RISC-V \u505a\u5f97\u66f4\u597d\u300d\u3002MQ-mengqing \u663e\u7136\u53d7\u76ca\u532a\u6d45\uff0c\u5e94\u8be5\u5728\u6539\u4ee3\u7801\u4e86\u3002\\n\\n#### Rust\\n\\n11 \u6708 17 \u65e5\uff0cheiher \u4e3a\u4e86\u8ba9 rustup 1.27.0 \u53d1\u5e03\u65f6\u80fd\u5305\u542b\u9f99\u67b6\u6784\u4e8c\u8fdb\u5236\uff0c\\n\u4e34\u65f6\u7ed9\u9f99\u67b6\u6784\u7684 rustup [\u5173\u6389\u4e86](https://github.com/rust-lang/rustup/pull/3536) OpenSSL\u3002\\n\u8fd9\u8fd8\u662f\u7b2c 10 \u671f[\u8bb2\u8fc7\u7684](./2023-07-24-this-week-in-loongarch-10.md#openssl-asm-breakage)\u9f99\u82af\u6316\u7684\u5751\u7684\u540e\u7eed\u2026\u2026\\n\\n11 \u6708 14 \u65e5\uff0cheiher \u4e3a Rust \u7684 LoongArch musl \u652f\u6301\uff08`loongarch64-unknown-linux-musl` \u6784\u5efa\u76ee\u6807\uff09\\n\u63d0\u524d[\u5efa\u7acb\u4e86](https://github.com/loongson-community/discussions/issues/13)\u534f\u8c03\u5de5\u5355\u3002\\n\\n
\\nmusl \u79fb\u690d\u7684\u4e0a\u6e38\u5316\u8fdb\u5ea6\\n\\n\u76ee\u524d\u9f99\u82af\u63a8\u8fdb\u7684 musl LoongArch \u652f\u6301\u8865\u4e01\u5df2\u7ecf[\u7ffb\u65b0\u5230\u4e86](https://www.openwall.com/lists/musl/2023/11/16/2)\u7b2c 9 \u7248\uff0c\\n\u4f46\u4f3c\u4e4e\u6bcf\u6b21\u66f4\u65b0\u90fd\u585e\u4e86\u4e00\u4e9b\u4ee3\u7801\u5ba1\u67e5\u8bc4\u8bba\u4e4b\u5916\u7684\u4fee\u6539\u3002\\n\u8fd9\u4f7f\u4e0a\u6e38\u7ef4\u62a4\u8005[\u56f0\u60d1](https://www.openwall.com/lists/musl/2023/11/17/3)\uff1a\\n\u672c\u6765\u4e0a\u4e00\u7248\u5df2\u7ecf\u6ca1\u95ee\u9898\u4e86\uff0c\u7ed3\u679c\u53c8\u585e\u4e86\u65b0\u4e1c\u897f\u3002\\n\\n\u622a\u81f3\u53d1\u7a3f\u65f6\uff0c\u770b\u4e0a\u53bb\u9f99\u82af\u7ef4\u62a4\u8005[\u5df2\u7ecf\u6062\u590d\u4e86](https://www.openwall.com/lists/musl/2023/11/20/1)\u8865\u4e01\u7b2c 8 \u7248\u53d1\u51fa\u7684\u73b0\u72b6\u2014\u2014\u8fd9\u56de\u5e94\u8be5\u80fd\u5408\u5e76\u4e86\uff01\\n
\\n\\n## \u6742\u95fb\u64ad\u62a5\\n\\n11 \u6708 18 \u65e5\uff0cshipujin [\u53d1\u5e03\u4e86](http://www.slackwarecn.cn/2023/11/18/Slackwareloong1.0live%E5%8F%91%E5%B8%83%EF%BC%81/)\\nSlackwareloong64 LTS 1.0 \u7684 Live \u955c\u50cf\u3002\u6b22\u8fce\u611f\u5174\u8da3\u7684 Slackware \u7528\u6237\u3001\u7231\u597d\u8005\u4eec\u4e0b\u8f7d\u4f53\u9a8c\u3002\\n\u611f\u8c22 :ta: \u7684\u65b0\u95fb\u7ebf\u7d22\u4ee5\u53ca\u7ef4\u62a4\u5de5\u4f5c\uff01\\n\\n11 \u6708 17 \u65e5\uff0c\u9f99\u82af\u5c06\u300a\u624b\u518c\u300b\u82f1\u6587\u7248\u7ffb\u8bd1\u7684\u4ed3\u5e93\u77ed\u6682\u89e3\u9664\u4e86\u53ea\u8bfb\u72b6\u6001\uff1b\\n\u6587\u6863\u7ef4\u62a4\u8005 Yanteng Si \u9042[\u63a8\u5165\u4e86](https://github.com/loongson/LoongArch-Documentation/commit/3f3989f658965404ee37633f1a430836124e9343)\u300a\u624b\u518c\u300bv1.10 \u7684\u90e8\u5206\u66f4\u65b0\uff0c\\n\u5e76\u76f8\u5e94\u5730[\u66f4\u65b0\u4e86](https://lore.kernel.org/loongarch/CAAhV-H7-9JL1hf8_Hs3dirJ8aqgK4BGU1PANsXDDVkSHP_fe9A@mail.gmail.com/T/#t)\\nLinux \u9f99\u67b6\u6784\u6587\u6863\u7684\u94fe\u63a5\u3002\\n\\n\u672c\u6b21\u7ffb\u8bd1\u66f4\u65b0\u662f\u4e0d\u5b8c\u6574\u7684\uff1a\u53ea\u5305\u542b\u4e86\u65b0\u589e\u6307\u4ee4\u7684\u63cf\u8ff0\uff0c\\n\u800c\u6ca1\u6709\u8986\u76d6\u7b2c 1.5 \u8282\u5173\u4e8e\u6307\u4ee4\u96c6\u6f14\u8fdb\u7684\u8bf4\u660e\u3001\\n\u7b2c 2.2.10.5 \u8282\u7684\u65b0 `CPUCFG` \u5b57\u6bb5\u63cf\u8ff0\uff0c\u6216\u8005\u7279\u6743\u67b6\u6784\u90e8\u5206\u7684\u66f4\u65b0\u3002\\n\u7ed3\u5408\u9f99\u82af\u7ef4\u62a4\u8005\u5728 binutils \u90ae\u4ef6\u5217\u8868\u4e0a\uff0c\u5bf9\u4e0a\u4e2a\u6708 LoongArch v1.10 \u6307\u4ee4\u652f\u6301\u5de5\u4f5c\\n\uff08[\u7b2c 22 \u671f](./2023-10-30-this-week-in-loongarch-22.md#binutils)\u6709\u62a5\u9053\uff09\\n\u7684[\u4e00\u5c01\u56de\u590d](https://sourceware.org/pipermail/binutils/2023-November/130594.html)\uff0c\\n\u672c\u6b21\u66f4\u65b0\u5e94\u8be5\u662f\u5b9e\u7528\u4e3b\u4e49\u7684\uff1a\u53ef\u80fd\u4ec5\u4ec5\u4e3a\u4e86\u80fd\u591f\u5feb\u901f\u63a8\u8fdb\u65b0\u6307\u4ee4\u7684\u4e0a\u6e38\u5316\uff0c\u4e34\u65f6\u53eb\u4eba\u66f4\u65b0\u4e00\u4e0b\uff0c\\n\u800c\u5e76\u975e\u4e13\u95e8\u6392\u671f\u6765\u505a\u8fd9\u4ef6\u4e8b\u2014\u2014\u5982\u679c\u662f\u540e\u4e00\u79cd\u60c5\u51b5\uff0c\u90a3\u4e48\u5e94\u8be5\u4e0d\u4f1a\u53ea\u505a\u5b8c\u4e00\u90e8\u5206\u5c31\u63d0\u4ea4\u4e86\u3002\\n\\n## \u5f20\u8d34\u680f\\n\\n\u672c\u680f\u76ee\u53ef\u4f9b\u5f20\u8d34\u516c\u76ca\u6027\u8d28\u7684\u5404\u79cd\u4fe1\u606f\u3002\\n\\n* \u53cb\u60c5\u6269\u6563\uff1a[\u5b89\u540c\u5f00\u6e90\u793e\u533a\uff08AOSC\uff09][aosc]\u7684\u9f99\u67b6\u6784\u79fb\u690d\u4e3b\u7ebf\u5316\u5de5\u4f5c\u300c\u5408\u9f99\u300d\u4ecd\u5728\u5982\u706b\u5982\u837c\u8fdb\u884c\u4e2d\uff0c\\n \u6b64\u5de5\u4f5c\u5b8c\u6210\u540e\u9f99\u67b6\u6784\u5c06\u5347\u683c\u4e3a AOSC OS \u7684 Tier 1 \u67b6\u6784\u3002\\n \u6b22\u8fce\u540c\u5b66\u4eec\u8bd5\u7528\u3001\u53cd\u9988\uff0c\u4e5f\u6b22\u8fce\u6709\u5fd7\u4e4b\u58eb\u4e00\u540c\u52a0\u5165\uff08\u6c9f\u901a\u6e20\u9053\u8be6\u89c1 AOSC \u7f51\u7ad9\u76f8\u5173\u680f\u76ee\uff09\u3002\\n* \u672c\u5468\u62a5[\u6301\u7eed\u63a5\u53d7\u7f51\u53cb\u6295\u7a3f][call-for-submissions]\u3002\u6b22\u8fce\u6765\u4e0a\u6e38\u5750\u5750\uff01\\n\\n[aosc]: https://aosc.io\\n[call-for-submissions]: https://github.com/loongson-community/areweloongyet/issues/16"},{"id":"this-week-in-loongarch-24","metadata":{"permalink":"/newsletter/this-week-in-loongarch-24","editUrl":"https://github.com/loongson-community/areweloongyet/newsletter/2023-11-13-this-week-in-loongarch-24.md","source":"@site/newsletter/2023-11-13-this-week-in-loongarch-24.md","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 24 \u671f","description":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01","date":"2023-11-13T15:50:00.000Z","formattedDate":"2023\u5e7411\u670813\u65e5","tags":[{"label":"\u6bcf\u5468\u4e00\u9f99","permalink":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99"}],"readingTime":12.56,"hasTruncateMarker":true,"authors":[{"name":"WANG Xuerui","title":"\ud83d\udc32\u9f99\u95e8\u5ba2\u6808\u6253\u6742\u7684","url":"https://github.com/xen0n","imageURL":"https://github.com/xen0n.png","key":"xen0n"}],"frontMatter":{"slug":"this-week-in-loongarch-24","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 24 \u671f","authors":["xen0n"],"date":"2023-11-13T15:50:00.000Z","tags":["\u6bcf\u5468\u4e00\u9f99"]},"unlisted":false,"prevItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 25 \u671f","permalink":"/newsletter/this-week-in-loongarch-25"},"nextItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 23 \u671f","permalink":"/newsletter/this-week-in-loongarch-23"}},"content":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01\\n\u4e0a\u5468\u7684\u8fdb\u5c55\u4e3b\u8981\u6709 Linux\u3001\u5de5\u5177\u94fe\uff0c\u4ee5\u53ca GSGPU \u9a71\u52a8\u5411\u4e3b\u7ebf\u5185\u6838\u7248\u672c\u7684\u79fb\u690d\u6210\u679c\u3002\\n\u8be6\u60c5\u70b9\u8fdb\u6765\u770b\uff01\\n\\n\x3c!-- truncate --\x3e\\n\\n\u5982\u65e0\u7279\u522b\u8bf4\u660e\uff0c\u6587\u4e2d\u63d0\u53ca\u7684\u65e5\u671f\u3001\u65f6\u95f4\u90fd\u4e3a\u5317\u4eac\u65f6\u95f4\uff08UTC+8\uff09\u3002\\n\\n## \u5148\u300c\u9a6c\u300d\u518d\u770b\\n\\n\u672c\u680f\u76ee\u7684\u5185\u5bb9\u5177\u6709\u4e00\u5b9a\u5ef6\u7eed\u6027\uff0c\u5c06\u6301\u7eed\u8ffd\u8e2a\u62a5\u9053 LoongArch® \u9886\u57df\u7684\u91cd\u8981\u6216\u957f\u671f\u9879\u76ee\uff08\u5751\uff09\u3002\\n\\n### Linux\\n\\n\u622a\u81f3\u53d1\u7a3f\u65f6\uff0cLinux v6.7-rc1 [\u5df2\u7ecf\u53d1\u5e03](https://lore.kernel.org/lkml/CAHk-=whuO0zmuxp_yorYFWdcrALpqjRPhWkmEy+7wcCnnDcPNA@mail.gmail.com/)\u3002\\n\u9f99\u67b6\u6784\u7684 PR \u662f\u5728\u6700\u540e\u4e00\u5929[\u53d1\u51fa\u7684](https://lore.kernel.org/loongarch/20231112051248.272444-1-chenhuacai@loongson.cn/)\u3002\\n\\n:::info \u4e3a\u5565\u8fd9\u6b21 PR \u8fd9\u4e48\u665a\uff1f\\n\u539f\u56e0\u636e\u8bf4\u662f\u5148\u524d\u9f99\u82af\u559c\u6b22\u6700\u540e\u65f6\u523b\u66f4\u65b0\u5206\u652f\uff0c\u5bfc\u81f4\u65b0\u4ee3\u7801\u5728 linux-next \u8eba\u5f97\u4e0d\u591f\u4e45\uff1b\\n\u4e8e\u662f\u5728\u672c\u5468\u671f\u7684 PR \u53d1\u51fa\u4e4b\u524d\uff0c\u90a3\u4e9b\u4ee3\u7801\u5c31\u8001\u8001\u5b9e\u5b9e\u8eba\u4e86 4 \u5929\u3002\\n\\n\u5bf9\u90a3\u4e9b\u7784\u51c6\u4e3b\u7ebf\u7684\u4ee3\u7801\uff0c\u786e\u5b9e\u5e94\u8be5\u5728 linux-next \u591a\u5446\u51e0\u5929\uff1a\\n\u8fd9\u6837\u8fd9\u4e9b\u4ee3\u7801\u624d\u6709\u673a\u4f1a\u89e6\u53ca\u66f4\u591a\u7684\u6d4b\u8bd5\u4eba\u5458\u548c\u81ea\u52a8\u5316\u8bbe\u65bd\uff0c\\n\u6709\u52a9\u4e8e\u53d1\u73b0\u8de8\u5b50\u7cfb\u7edf\u6216\u67b6\u6784\u4ea7\u751f\u4e0d\u826f\u5f71\u54cd\u7684\u90a3\u4e9b\u5199\u6cd5\u3002\\n\\n\u4ece\u524d\uff0c\u5728\u4e3b\u7ebf\u4e4b\u5916\u7ef4\u62a4\u9f99\u82af\u5185\u6838\u7684\u5e74\u4ee3\uff0c\u7531\u4e8e\u5916\u754c\u4e0d\u611f\u77e5\u9f99\u82af\u53d8\u66f4\uff0c\u9f99\u82af\u516c\u53f8\u4e5f\u4e0d\u6d4b\u5176\u4ed6\u67b6\u6784\uff0c\\n\u56e0\u800c\u9f99\u82af\u516c\u53f8\u4e4b\u5916\u7684\u793e\u533a\u96c6\u6210\u8005\uff08\u4f8b\u5982\u7b14\u8005\uff09\u591a\u6b21\u906d\u9047\u4e86\u9f99\u82af\u76f8\u5173\u53d8\u66f4\u70b8\u6389\u5176\u4ed6\u67b6\u6784\u7684\u60c5\u51b5\u3002\\n\u8fd9\u79cd\u60c5\u51b5\u5728\u9f99\u82af\u4e5f\u6e10\u6e10\u8f6c\u5411\u793e\u533a\u534f\u4f5c\u6a21\u5f0f\u4e4b\u540e\uff0c\u4fbf\u6e10\u6e10\u6d88\u5931\u4e86\u2014\u2014\u9f99\u82af\u5f71\u54cd\u4e86\u522b\u4eba\u9f99\u82af\u4f1a\u4fee\uff1b\u76f8\u5e94\u5730\uff0c\u522b\u4eba\u5f71\u54cd\u4e86\u9f99\u82af\u522b\u4eba\u4e5f\u4f1a\u4fee\uff0c\\n\u800c\u6bcf\u4e00\u65b9\u90fd\u53ea\u9700\u8dd1\u81ea\u5df1\u73af\u5883\u7684\u6d4b\u8bd5\u5373\u53ef\u3002\\n:::\\n\\n\u672c\u5f00\u53d1\u5468\u671f\u4e2d\uff0c\u8f83\u4e3a\u5f15\u4eba\u6ce8\u76ee\u7684\u5927\u5757\u53d8\u66f4\u6709\uff1a\\n\\n* \u5408\u5e76\u4e86 bcachefs \u7684\u652f\u6301\uff1b\\n* \u79fb\u9664\u4e86 IA-64 \u67b6\u6784\u7684\u652f\u6301\uff1b\\n* \u5f00\u6e90\u7684 NVIDIA® \u663e\u5361\u9a71\u52a8 `nouveau` \u83b7\u5f97\u4e86 GSP \u652f\u6301\u3002\\n\\n
\\n\u5565\u53eb GSP\uff1f\\n\\nGSP \u662f GPU system processor \u7684\u7f29\u5199\uff1aGPU \u7cfb\u7edf\u5904\u7406\u5668\u3002\\n\\n\u81ea\u4ece 2018 \u5e74\u9762\u4e16\u7684 Turing \u5fae\u67b6\u6784\u4ee5\u6765\uff0c\u65b0\u578b\u53f7\u7684 NVIDIA® \u663e\u5361\u90fd\u65b0\u589e\u4e86\u4e00\u5757\\nRISC-V \u5fae\u63a7\u5236\u5668\uff0c\u63a5\u7ba1\u4e86\u4ece\u524d\u7531\u64cd\u4f5c\u7cfb\u7edf\u9a71\u52a8\u63a7\u5236\u7684\u8bb8\u591a\u786c\u4ef6\u8d44\u6e90\u63a7\u5236\u804c\u8d23\u3002\\n\u8fd9\u4f7f\u5f97 NVIDIA \u5f97\u4ee5\u5f00\u6e90\u5176\u5185\u6838\u9a71\u52a8\uff1a\u8fd9\u4e2a\u9a71\u52a8\u53ea\u5269\u4e00\u4e2a C/S \u67b6\u6784\u7684\u5ba2\u6237\u7aef\u7a7a\u58f3\u5b50\u4e86\u3002\\n
\\n\\n\u9f99\u67b6\u6784\u76f8\u5173\u7684\u4e3b\u8981\u53d8\u66f4\u6709\uff1a\\n\\n* \u65b0\u589e\u4e86 KVM \u652f\u6301\uff08Tianrui Zhao\u3001Bibo Mao\u3001Huacai Chen\uff09\uff1b\\n* [\u652f\u6301\u4e86](https://git.kernel.org/torvalds/c/80c7889de7a8246e44a9632a2b7d15b41ab3fe41)\u52a8\u6001\u62a2\u5360\uff08`PREEMPT_DYNAMIC`\uff09\uff08Huacai Chen\uff09\uff1b\\n* \u5728\u4fdd\u8bc1\u6b63\u786e\u7684\u524d\u63d0\u4e0b\uff0c[\u9002\u5f53\u653e\u677e\u4e86](https://git.kernel.org/torvalds/c/affef66b65889a0ea0060e13e5f7fe569897d787)\u539f\u5b50\u64cd\u4f5c\u7684\u7ea6\u675f\uff0c\\n \u4f7f\u5f97 3A6000 \u7684 8 \u7ebf\u7a0b Unixbench \u6d4b\u8bd5\u6700\u7ec8\u5f97\u5206\u63d0\u5347\u4e86 0.47%\uff08WANG Rui\uff09\uff1b\\n* \u8ddf\u8fdb\u4e86 [BPF \u865a\u62df\u673a\u6307\u4ee4\u96c6\u7684 v4 \u65b0\u589e](https://lore.kernel.org/bpf/4bfe98be-5333-1c7e-2f6d-42486c8ec039@meta.com/)\uff0c\\n \u4e3a\u9f99\u67b6\u6784[\u589e\u52a0\u4e86](https://lore.kernel.org/loongarch/20231026184337.563801-1-hengqi.chen@gmail.com/)\u76f8\u5e94\u652f\u6301\uff08Hengqi Chen\uff09\u3002\\n\\nPhoronix \u4e5f[\u62a5\u9053\u4e86](https://www.phoronix.com/news/Linux-6.7-rc1)\u6b64\u65b0\u7248\u672c\uff0c\\n\u611f\u5174\u8da3\u7684\u8bfb\u8005\u53ef\u62d3\u5c55\u9605\u8bfb\u3002\\n\\n### \u5de5\u5177\u94fe\\n\\n#### gcc\\n\\n11 \u6708 11 \u65e5\uff0cXi Ruoyao [\u53d1\u73b0](https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112483)\u4e00\u4e9b\u6d6e\u70b9\u6570\u503c\u8ba1\u7b97\u7684\u6d4b\u8bd5\u7528\u4f8b\u7a81\u7136\u5f00\u59cb\u5931\u8d25\u4e86\uff0c\\n\u6392\u67e5\u4e0b\u6765\u662f\u67b6\u6784\u65e0\u5173\u7684\u4f18\u5316\u9519\u8bef\uff0c\u4e8e\u662f\u7b2c\u4e8c\u5929[\u53d1\u51fa\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-November/636200.html)\u4fee\u590d\u8865\u4e01\u3002\\n\u8fc7\u7a0b\u4e2d\uff0c\u987a\u5e26\u8fd8\u53d1\u73b0\u4e86\u539f\u300c\u4f18\u5316\u300d\u5728\u9f99\u67b6\u6784\u4e0a\u5176\u5b9e\u662f\u8d1f\u4f18\u5316\uff1b\u6b63\u5728\u4e0e\u4e0a\u6e38\u4e00\u540c\u60f3\u529e\u6cd5\u89e3\u51b3\u3002\\n\\n:::info \u82b1\u7d6e\\n\u5728\u6298\u817e\u8fd9\u4e2a\u95ee\u9898\u8fc7\u7a0b\u4e2d\uff0cXi Ruoyao \u53c8\u88ab[\u53e6\u4e00\u4e2a\u65b0\u9c9c\u95ee\u9898](https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112497)\u5751\u5230\uff1a\\n\u662f\u963f\u91cc\u7684\u7f16\u8bd1\u5668\u5de5\u7a0b\u5e08\u540c\u884c\u6539\u67b6\u6784\u65e0\u5173\u6d41\u6c34\u7ebf\u4f18\u5316\u4ee3\u7801\u6539\u574f\u4e86\u3002\\n\u597d\u5728\u7b2c\u4e8c\u5929 GCC \u7ef4\u62a4\u8005\u53d1\u73b0\u4e86\u95ee\u9898\uff0c\u5c06\u95ee\u9898\u8865\u4e01 revert \u6389\u4e86\uff0c\\n\u4fdd\u62a4\u4e86\u5f88\u591a\u76f8\u5173\u4eba\u58eb\u7684\u7761\u7720\u65f6\u95f4\uff08\u548c\u53d1\u91cf\uff09\u3002\\n:::\\n\\n11 \u6708 10 \u65e5\uff0c\u7b14\u8005\u5728\u65e5\u5e38\u6d4b\u8bd5 Firefox 119 \u8fc7\u7a0b\u4e2d\uff0c\u7f16\u8bd1\u5668\u5d29\u6e83\u4e86\u3002\\n\u641e\u4e86\u4e00\u665a\u4e0a\uff0c\u5c06\u89e6\u53d1\u95ee\u9898\u7684\u8fd1 3MiB \u6e90\u7801[\u7cbe\u70bc\u6210\u4e86](https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112476)\u4e0a\u6e38 bug PR112476\u3002\\n\u4e24\u5929\u540e Xi Ruoyao \u5c06\u5176[\u4fee\u590d\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-November/636156.html)\uff0c\\n\u5df2[\u8fdb\u5165\u4e3b\u7ebf](https://gcc.gnu.org/g:b88500e0bc1e9e3a396ba764f9b701d22a76818f)\u3002\\n\\n11 \u6708 7 \u65e5\uff0cchenxiaolong \u7ed9 GCC \u8865\u5145\u4e86 LSX/LASX \u7684\u4f7f\u7528\u8bf4\u660e\u6587\u6863\uff1a\\n\\n* [intrinsics](https://gcc.gnu.org/pipermail/gcc-patches/2023-November/635431.html)\uff0c\\n* [\u5185\u8054\u6c47\u7f16\u7684\u64cd\u4f5c\u6570\u4fee\u9970\u7b26](https://gcc.gnu.org/pipermail/gcc-patches/2023-November/635435.html)\u3002\\n\\n11 \u6708 6 \u65e5\uff08\u521a\u597d\u9519\u8fc7\u4e0a\u671f\uff09\uff0cXi Ruoyao \u641e\u4e86\u4e09\u4e2a\u8865\u4e01\uff1a\\n\\n* [\u5b8c\u5584\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-November/635277.html)\\n GCC \u6784\u5efa\u65f6\u5bf9 linker relaxation \u652f\u6301\u7684\u5224\u65ad\uff1a\\n \u7b80\u5355\u6765\u8bf4\uff0c\u5982\u679c\u53d1\u73b0\u642d\u914d\u7684\u6c47\u7f16\u5668\u4e0d\u652f\u6301 relax \u6761\u4ef6\u5206\u652f\u6307\u4ee4\uff0c\\n \u90a3\u4e48\u5c31\u4f7f\u5373\u5c06\u88ab\u6784\u5efa\u7684 GCC \u9ed8\u8ba4\u7981\u7528 relaxation\u3002\\n \u8fd9\u6709\u52a9\u4e8e\u89c4\u907f\u7f16\u8bd1\u5927\u578b\u8f6f\u4ef6\u65f6\u6709\u6982\u7387\u9047\u5230\u7684\u70e6\u4eba\u7684\u300c\u91cd\u5b9a\u4f4d\u6ea2\u51fa\u300d\u9519\u8bef\u3002\\n \u8fd9\u4fee\u590d\u4e86\u4e0a\u6e38 bug [PR112330](https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112330)\u3002\\n* [\u4f18\u5316\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-November/635278.html)\\n `-mexplicit-relocs=auto` \u914d\u7f6e\u4e0b\uff0c\u4ec5\u5355\u6b21\u4f7f\u7528\u7684\u5730\u5740\u4e0e `fld` `fst` \u642d\u914d\u65f6\u7684\u751f\u6210\u4ee3\u7801\u3002\\n* [\u79fb\u690d\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-November/635304.html)\\n LLVM \u7684\u4e24\u7ec4\u9f99\u67b6\u6784 LL/SC \u4ee3\u7801\u7247\u6bb5\u4f18\u5316\uff1a[\u7b2c 20 \u671f\u62a5\u9053\u8fc7\u7684](./2023-10-16-this-week-in-loongarch-20.md#llvm)\\n heiher [\u505a\u7684\u4f18\u5316](https://github.com/llvm/llvm-project/pull/6739)\uff0c\u4ee5\u53ca\\n SixWeining \u968f\u540e[\u505a\u7684\u8fdb\u4e00\u6b65\u5b8c\u5584](https://github.com/llvm/llvm-project/pull/69339)\u3002\\n\\nXi Ruoyao \u51c6\u5907\u8d76\u5728 GCC 14 stage 1 \u622a\u6b62\uff08\u7b14\u8005\u6ce8\uff1a11 \u6708 19 \u53f7\uff09\u524d\u52a0\u5165\u4e00\u6279 LA664 \u652f\u6301\uff0c\\n\u4f46\u662f\u636e\u5356\u5bb6\u8bf4 :ta: \u7684\u677f\u5b50\u8fd8\u5728\u8001\u5316\u95f4\u91cc\u3002\\n\u8ba9\u6211\u4eec\u671f\u5f85\u4ed6\u80fd\u65e9\u65e5\u62ff\u5230\u677f\u5b50\uff08\u5f53\u7136\u793e\u533a\u540c\u5b66\u5305\u62ec\u7b14\u8005\u5728\u5185\u5e94\u8be5\u4e5f\u4f1a\u51fa\u624b\u76f8\u52a9\uff09\uff01\\n\\n\u672c\u671f\u7684\u5f88\u5927\u4e00\u90e8\u5206 GCC \u65b0\u95fb\u90fd\u662f Xi Ruoyao \u63d0\u4f9b\u7684\uff0c\u611f\u8c22 :ta: \u4ece\u73b0\u573a\u53d1\u56de\u7684\u62a5\u9053\u3002\\n\\n#### LLVM\\n\\n\u5728[\u5468\u62a5\u7b2c 8 \u671f](./2023-07-10-this-week-in-loongarch-8.md#llvm)\u7b14\u8005\u6253\u7b97\u505a\u6389\\n`model` \u5c5e\u6027\u652f\u6301\uff0c\u5728\u4e0a\u6e38\u8ba8\u8bba\u786e\u5b9a\u4e86\u6280\u672f\u65b9\u6848\u3002\\n\u4f46\u6b64\u540e\u73b0\u5b9e\u751f\u6d3b\u56e0\u7d20\u4e0e\u5404\u79cd\u5de5\u4f5c\u4f18\u5148\u7ea7\u53d8\u5316\u53e0\u52a0\uff0c\u4f7f\u5f97\u7b14\u8005\u4e0d\u5f97\u4e0d\u5f03\u6389\u6b64\u5751\u3002\\n\u4e00\u5468\u524d heiher [\u51fa\u624b\u76f8\u52a9](https://github.com/loongson-community/discussions/issues/10)\uff0c\\n\u5c06\u6b64\u5de5\u4f5c\u51b2\u8fc7\u4e86\u7ec8\u70b9\u7ebf\u3002\\n\u622a\u81f3\u53d1\u7a3f\u65f6\uff0c\u76f8\u5e94\u7684 LLVM PRs \u5df2\u7ecf\u65b0\u9c9c\u5efa\u7acb\uff1a\\n\\n* [#72077](https://github.com/llvm/llvm-project/pull/72077)\uff1a\u6269\u5c55 LLVM IR\uff0c\u65b0\u589e `code_model` \u5168\u5c40\u91cf\u5c5e\u6027\uff0c\\n* [#72078](https://github.com/llvm/llvm-project/pull/72078)\uff1a\u4e3a Clang \u65b0\u589e `model` \u5c5e\u6027\uff0c\\n* [#72079](https://github.com/llvm/llvm-project/pull/72079)\uff1a\u5728 LoongArch \u540e\u7aef\u5229\u7528\u6b64\u4fe1\u606f\u3002\\n\\n\u975e\u5e38\u611f\u8c22\uff01\\n\\n11 \u6708 10 \u65e5\uff0cSixWeining \u62a5\u544a\u6709\u7528\u6237\u78b0\u5de7\u9047\u4e0a\u4e86 LLD \u8ba1\u7b97 page \u504f\u79fb\u91cf\u7684\u4e00\u5904\u6ea2\u51fa\\n\uff08\u53ea\u6709\u5f53\u9700\u6c42\u7684\u504f\u79fb\u91cf\u6070\u597d\u662f `-4096` \u624d\u4f1a\u89e6\u53d1\uff09\uff0c\\n\u987a\u624b[\u4fee\u590d\u4e86](https://github.com/llvm/llvm-project/pull/71907)\u3002\\n\\n11 \u6708 8 \u65e5\uff0cxry111 [\u53d1\u73b0](https://github.com/llvm/llvm-project/issues/71645)\\nClang \u5bf9\u4e8e\u975e\u4f4d\u7f6e\u65e0\u5173\u7684\u53ef\u6267\u884c\u6587\u4ef6\uff08`-fno-pie`\uff09\u6240\u7528\u7684\u9ed8\u8ba4\u914d\u7f6e\\n`-fdirect-access-external-data` \u5728 LoongArch \u4e0a\u4e0d\u80fd\u7528\uff0c\u5e76\u4e14\u4e0d\u8be5\u80fd\u7528\uff0c\\n\u5efa\u8bae\u5c06\u5176\u5728 LoongArch \u5173\u6389\uff1b11 \u6708 10 \u65e5\\nheiher [\u5c1d\u8bd5\u8fd9\u4e48\u505a\u4e86](https://github.com/llvm/llvm-project/pull/71887)\u3002\\n\\n#### Go\\n\\n10 \u6708 16 \u65e5\u524d\u540e\uff0cMeidan Li [\u63d0\u4ea4\u4e86](https://go.dev/cl/533716) Go \u5185\u90e8\u94fe\u63a5\u5668\u7684 `loong64` \u652f\u6301\uff1b\\n11 \u6708 8 \u65e5 :ta: \u6574\u4f53\u66f4\u4e86\u4e00\u7248\uff0c\u5e94\u8be5\u8fbe\u5230\u53ef\u4ee5\u6d4b\u8bd5\u3001\u8bc4\u5ba1\u7684\u72b6\u6001\u4e86\u3002\\n\\n## \u6742\u95fb\u64ad\u62a5\\n\\n\u5317\u4eac\u65f6\u95f4 11 \u6708 13 \u65e5\u6e05\u6668\uff0c\u7531 Robin Lee \u63a8\u52a8\u3001\u5b9e\u73b0\uff0c\u5386\u65f6 9 \u4e2a\u6708\uff0cFreeDesktop SDK \u7684\\n`loongarch64` \u6700\u5c0f\u5316\u865a\u62df\u673a\u7684\u6784\u5efa\u652f\u6301[\u5408\u5165\u4e0a\u6e38](https://gitlab.com/freedesktop-sdk/freedesktop-sdk/-/merge_requests/11510)\uff1a\\n\u53ef\u4ee5\u901a\u8fc7 `vm/minimal/efi.bst` \u6784\u5efa\u865a\u62df\u673a\u7cfb\u7edf\u955c\u50cf\u6587\u4ef6\u4e86\u3002\\n\u7ee7[\u5468\u62a5\u7b2c 20 \u671f](./2023-10-16-this-week-in-loongarch-20.md#freedesktop-sdk-initial-support-merged)\u4e4b\u540e\uff0c\\n\u8fd9\u662f\u5c06 Flatpak \u751f\u6001\u5e26\u5165 LoongArch \u7684\u9053\u8def\u4e0a\u7684\u53c8\u4e00\u91cd\u8981\u8fdb\u5c55\u3002\\n\u611f\u8c22 :ta: \u81ea\u5df1\u6295\u9012\u7684\u65b0\u95fb\u7ebf\u7d22\uff01\\n\\n11 \u6708 6 \u65e5 systemd [\u53d1\u5e03\u4e86](https://github.com/systemd/systemd/releases/tag/v255-rc1)\\nv255-rc1\uff0c\u65b0\u589e\u4e86 LoongArch64 \u7684 seccomp \u652f\u6301\u3002\\nseccomp \u662f\u5b9e\u73b0\u6c99\u7bb1\uff08sandbox\uff09\u529f\u80fd\u7684\u5173\u952e\u57fa\u7840\u5e93\u3002\\nPhoronix \u4e5f[\u62a5\u9053\u4e86](https://www.phoronix.com/news/systemd-255-rc1)\u6b64\u4e8b\u3002\\n\\n## \u793e\u533a\u6574\u6d3b:\u513f:\\n\\n\u672c\u680f\u76ee\u63a5\u53d7\u4efb\u4f55\u7f51\u53cb\u7684\u6295\u7a3f\uff0c\u53ea\u8981\u5185\u5bb9\u4e0e LoongArch® \u6709\u5173\uff0c\u5e76\u53ef\u4ee5\u4e3a\u8bfb\u8005\u5e26\u6765\u4ef7\u503c\uff0c\\n\u65e0\u8bba\u4e25\u8083\u8d21\u732e\uff08\u6574\u7684\u5927\u6d3b:\u513f:\uff09\u6216\u662f\u535a\u541b\u4e00\u7b11\u90fd\u4e00\u6982\u6b22\u8fce\uff01\\n\\n\u793e\u533a\u5f00\u53d1\u8005 cl91 \u4ece[\u5468\u62a5\u7b2c 18 \u671f](./2023-10-02-this-week-in-loongarch-18.md#gsgpu-for-mainline)\u5f00\u59cb\u618b\u7684\u5927\u62db\uff0c\\n\u641e\u5b9a\u4e86\uff01\\n\u9f99\u82af 7A2000 \u4e2d\u7684\u72ec\u663e[^what-does-discrete-mean]\u6a21\u5757\u7684\u5185\u6838\u9a71\u52a8 GSGPU \u5df2\u7ecf\u79fb\u690d\u5230\u4e86\u6700\u65b0\u7684 Linux v6.6\u3002\\n\\n[^what-does-discrete-mean]: \u6309\u7167\u300c\u96c6\u6210\u5728\u4e3b\u677f\u4e0a\u7684\u663e\u5361\u5c31\u662f\u96c6\u663e\u300d\u8fd9\u4e2a\u76f4\u89c2\u6d45\u663e\u7684\u5224\u65ad\u6807\u51c6\uff0c\u5f53\u524d\u7684 GSGPU \u5f53\u7136\u4e0d\u7b97\u300c\u72ec\u663e\u300d\u3002\u9f99\u82af\u5b98\u65b9\u6587\u732e\u5c06 7A2000 GPU \u79f0\u4f5c\u300c\u72ec\u663e\u300d\u7684\u53d8\u66f4\u662f\u67d0\u5929\u7a81\u7136\u53d1\u751f\u7684\uff0c\u4e14\u81f3\u4eca\u672a\u660e\u786e\u8be5\u672f\u8bed\u7684\u5168\u79f0\uff1b\u7b14\u8005\u4e2a\u4eba\u8ba4\u4e3a\u8fd9\u662f\u5ba3\u4f20\u4e0a\u538b\u4eba\u4e00\u5934\u7684\u6587\u5b57\u6e38\u620f\uff0c\u5176\u5b9e\u9645\u542b\u4e49\u4e3a\u300c\u72ec\u7acb\u663e\u5b58\u300d\u3002\u6bd5\u7adf\u867d\u7136 GSGPU \u4ecd\u7136\u53d7\u9650\u4e8e\u6838\u5fc3\u9762\u79ef\u3001\u4f9b\u7535\u7b49\u56e0\u7d20\u800c\u4e0d\u5982\u771f\u6b63\u7684\u300c\u72ec\u7acb\u663e\u5361\u300d\uff0c\u4f46\u7531\u4e8e\u72ec\u7acb\u663e\u5b58\u65b9\u6848\u80fd\u591f\u907f\u514d\u5171\u4eab\u7cfb\u7edf\u5185\u5b58\u7684\u96c6\u663e\u65b9\u6848\u5bf9\u5e38\u89c4\u5185\u5b58\u8bbf\u95ee\u7684\u5f71\u54cd\uff0c\u4ece\u800c\u4f7f\u5f97 GSGPU \u786e\u5b9e\u6709\u6f5c\u529b\u8d85\u8fc7\u8fd9\u79cd\u96c6\u663e\u7684\u6027\u80fd\u3002\uff08\u81f3\u4e8e\u4e24\u79cd\u65b9\u6848\u7684\u771f\u5b9e\u5bf9\u6bd4\uff0c\u7531\u4e8e\u9f99\u82af\u5927\u6982\u7387\u4e0d\u4f1a\u505a\u51fa\u5171\u4eab\u663e\u5b58\u7684 GSGPU \u4ee5\u4fbf\u63a7\u5236\u53d8\u91cf\uff0c\u4e5f\u5c31\u65e0\u4ece\u5b9e\u5730\u9a8c\u8bc1\u4e86\u3002\uff09\\n\\n:::info cl91 \u7684\u8bdd\\nGSGPU \u6765\u6e90\u4e8e\u9f99\u82af\u516c\u53f8\u7ef4\u62a4\u7684 v4.19 \u4e0b\u6e38\u5185\u6838\u3002\\n\u4e0e\u4e0a\u6e38\u5185\u6838 DRM \u5b50\u7cfb\u7edf\u4e2d\u7684 `loongson` \u9a71\u52a8\u76f8\u6bd4\uff0c\\nGSGPU \u5185\u6838\u6a21\u5757\u589e\u52a0\u4e86\u5b8c\u6574\u7684 3D \u786c\u4ef6\u76f8\u5173\u7684\u63a7\u5236\u4ee3\u7801\uff0c\\n\u5e76\u5411\u7528\u6237\u6001\u66b4\u9732\u4e86\u5b9e\u73b0 3D \u6e32\u67d3\u5fc5\u9700\u7684 GPU \u7f13\u51b2\u533a\u5bf9\u8c61\uff08buffer object\uff09\u63a5\u53e3\uff0c\\n\u4ee5\u53ca\u5411 GPU \u63d0\u4ea4\u6e32\u67d3\u4efb\u52a1\u7684\u76f8\u5173\u63a5\u53e3\u3002\\nGSGPU \u540c\u65f6\u8fd8\u5b9e\u73b0\u4e86\u7b14\u8bb0\u672c\u80cc\u5149\u76f8\u5173\u7684\u63a7\u5236\u63a5\u53e3\uff0c\u4e0e\u4e0a\u6e38 `loongson` DRM \u9a71\u52a8\u76f8\u6bd4\uff0c\\n\u53ef\u4ee5\u652f\u6301\u642d\u8f7d 7A2000 \u6865\u7247\u7684\u7b14\u8bb0\u672c\u7684\u80cc\u5149\u8c03\u8282\u3002\\n\\n\u5f53\u7136\u8981\u5b9e\u73b0\u9f99\u82af\u72ec\u663e\u7684 3D \u786c\u4ef6\u52a0\u901f\uff0c\u5149\u5185\u6838\u9a71\u52a8\u8fd8\u4e0d\u591f\uff0c\u8fd8\u9700\u8981\u7528\u6237\u7a7a\u95f4\u7684 mesa 3D \u9a71\u52a8\u3002\\n\u8fd9\u76ee\u524d\u8fd8\u4e0d\u5b58\u5728\u5f00\u6e90\u7684\u5b9e\u73b0\uff0c\u6240\u4ee5\u8fd8\u9700\u8981\u793e\u533a\u7684\u5171\u540c\u52aa\u529b\u3002\\n\u76ee\u524d\u4f7f\u7528\u4e0a\u6e38\u7684\u7528\u6237\u7a7a\u95f4\u9a71\u52a8\uff0c\u914d\u5408 2D \u8f6f\u4ef6\u6e32\u67d3\u53ef\u4ee5\u6b63\u5e38\u4f7f\u7528 X11 \u548c Wayland\uff08\u5f53\u7136\u4ec5\u9650\u4e8e2D\uff09\u3002\\n\u6709\u5174\u8da3\u7684\u670b\u53cb\uff0c\u7279\u522b\u662f\u5728 7A2000 \u7b14\u8bb0\u672c\u4e0a\u4f7f\u7528\u65b0\u4e16\u754c\u5185\u6838\u7684\u670b\u53cb\u4eec\u53ef\u4ee5\u5728[\u8fd9\u4e2a\u8bba\u575b\u8d34\u5b50](https://bbs.loongarch.org/d/303-gsgpu)\u627e\u5230\u66f4\u591a\u8be6\u60c5\u3002\\n:::\\n\\n## \u5f20\u8d34\u680f\\n\\n\u672c\u680f\u76ee\u53ef\u4f9b\u5f20\u8d34\u516c\u76ca\u6027\u8d28\u7684\u5404\u79cd\u4fe1\u606f\u3002\\n\\n* \u53cb\u60c5\u6269\u6563\uff1a[\u5b89\u540c\u5f00\u6e90\u793e\u533a\uff08AOSC\uff09][aosc]\u7684\u9f99\u67b6\u6784\u79fb\u690d\u4e3b\u7ebf\u5316\u5de5\u4f5c\u300c\u5408\u9f99\u300d\u4ecd\u5728\u5982\u706b\u5982\u837c\u8fdb\u884c\u4e2d\uff0c\\n \u6b64\u5de5\u4f5c\u5b8c\u6210\u540e\u9f99\u67b6\u6784\u5c06\u5347\u683c\u4e3a AOSC OS \u7684 Tier 1 \u67b6\u6784\u3002\\n \u6b22\u8fce\u540c\u5b66\u4eec\u8bd5\u7528\u3001\u53cd\u9988\uff0c\u4e5f\u6b22\u8fce\u6709\u5fd7\u4e4b\u58eb\u4e00\u540c\u52a0\u5165\uff08\u6c9f\u901a\u6e20\u9053\u8be6\u89c1 AOSC \u7f51\u7ad9\u76f8\u5173\u680f\u76ee\uff09\u3002\\n* 11 \u6708 11 \u65e5\uff0cAOSC \u7684\u65b0\u4e00\u671f\u53cc\u5468\u62a5\u300a\u5b89\u8bb0\u51b0\u5ba4\u30fb\u5341\u4e00\u6708\u4e0a\u300b[\u53d1\u5e03\u4e86](https://github.com/AOSC-Dev/newsroom/blob/b747c8e383b40695dce1fb9d7efbb19d64991d68/coffee-break/20231111/zh_CN.md)\uff0c\\n \u6b22\u8fce\u540c\u5b66\u4eec\u9605\u8bfb\u3002An English version [is also available](https://github.com/AOSC-Dev/newsroom/blob/b747c8e383b40695dce1fb9d7efbb19d64991d68/coffee-break/20231111/en.md).\\n* \u672c\u5468\u62a5[\u6301\u7eed\u63a5\u53d7\u7f51\u53cb\u6295\u7a3f][call-for-submissions]\u3002\u6b22\u8fce\u6765\u4e0a\u6e38\u5750\u5750\uff01\\n\\n[aosc]: https://aosc.io\\n[call-for-submissions]: https://github.com/loongson-community/areweloongyet/issues/16"},{"id":"this-week-in-loongarch-23","metadata":{"permalink":"/newsletter/this-week-in-loongarch-23","editUrl":"https://github.com/loongson-community/areweloongyet/newsletter/2023-11-06-this-week-in-loongarch-23.mdx","source":"@site/newsletter/2023-11-06-this-week-in-loongarch-23.mdx","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 23 \u671f","description":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01","date":"2023-11-06T10:40:00.000Z","formattedDate":"2023\u5e7411\u67086\u65e5","tags":[{"label":"\u6bcf\u5468\u4e00\u9f99","permalink":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99"}],"readingTime":12.335,"hasTruncateMarker":true,"authors":[{"name":"WANG Xuerui","title":"\ud83d\udc32\u9f99\u95e8\u5ba2\u6808\u6253\u6742\u7684","url":"https://github.com/xen0n","imageURL":"https://github.com/xen0n.png","key":"xen0n"}],"frontMatter":{"slug":"this-week-in-loongarch-23","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 23 \u671f","authors":["xen0n"],"date":"2023-11-06T10:40:00.000Z","tags":["\u6bcf\u5468\u4e00\u9f99"]},"unlisted":false,"prevItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 24 \u671f","permalink":"/newsletter/this-week-in-loongarch-24"},"nextItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 22 \u671f","permalink":"/newsletter/this-week-in-loongarch-22"}},"content":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01\\n\u4e0a\u5468\u7684\u8fdb\u5c55\u4e3b\u8981\u6709 LoongArch® ABI v2.20\u3001Linux\u3001GCC \u4ee5\u53ca LLVM\u3002\\n\u8be6\u60c5\u70b9\u8fdb\u6765\u770b\uff01\\n\\n{/* truncate */}\\n\\n\u5982\u65e0\u7279\u522b\u8bf4\u660e\uff0c\u6587\u4e2d\u63d0\u53ca\u7684\u65e5\u671f\u3001\u65f6\u95f4\u90fd\u4e3a\u5317\u4eac\u65f6\u95f4\uff08UTC+8\uff09\u3002\\n\\n## \u5148\u300c\u9a6c\u300d\u518d\u770b\\n\\n\u672c\u680f\u76ee\u7684\u5185\u5bb9\u5177\u6709\u4e00\u5b9a\u5ef6\u7eed\u6027\uff0c\u5c06\u6301\u7eed\u8ffd\u8e2a\u62a5\u9053 LoongArch® \u9886\u57df\u7684\u91cd\u8981\u6216\u957f\u671f\u9879\u76ee\uff08\u5751\uff09\u3002\\n\\n### Linux\\n\\n\u4e0a\u671f\u6211\u4eec\u7528\u8f83\u5927\u7684\u7bc7\u5e45[\u62a5\u9053\u4e86](./2023-10-30-this-week-in-loongarch-22.md#loongarch-r1p10)\\nLoongArch® v1.10 \u7684\u65b0\u589e\u7279\u6027\u3002\\n\u56e0\u6b64\u867d\u7136 Linux 6.6 \u4e5f\u5728\u4e0a\u5468\u6b63\u5f0f\u53d1\u5e03\u4e86\uff0c\u4f46\u6211\u4eec\u5e76\u672a\u9a6c\u4e0a\u8be6\u7ec6\u62a5\u9053\u3002\\n\u622a\u81f3\u76ee\u524d\uff0cLinux 6.7 \u7684\u5408\u5e76\u7a97\u53e3\u4ecd\u5728\u706b\u70ed\u5f00\u653e\u4e2d\uff0c\u800c\u9f99\u67b6\u6784\u7684\u53d8\u66f4\u76f8\u5bf9\u4e0d\u591a\uff1b\\n\u6211\u4eec\u53ef\u4ee5\u5148\u628a\u4e0a\u5468\u7684 Linux 6.6 \u5185\u5bb9\u8865\u4e0a\uff0c\u518d\u7b80\u5355\u8fc7\u4e00\u904d\u672c\u5468\u671f\u7684\u65b0\u529f\u80fd\u3002\\n\\n#### Linux 6.6\\n\\n\u6211\u4eec\u5728\u5468\u62a5\u7b2c 14 \u671f[\u6574\u7406\u8fc7\u4e86](./2023-09-04-this-week-in-loongarch-14.md#linux-6.6-loongarch-changes)\\nLinux 6.6 \u7684\u9f99\u67b6\u6784\u76f8\u5173\u53d8\u66f4\uff0c\u53ef\u65b9\u4fbf\u8df3\u8f6c\u9605\u8bfb\u3002\\n\\n\u9664\u6b64\u4e4b\u5916\u503c\u5f97\u4e00\u63d0\u7684\u662f\uff1a\u4ece\u8be5\u7248\u672c\u5f00\u59cb\uff0cLinux \u7684\u9ed8\u8ba4\u8c03\u5ea6\u7b97\u6cd5\u88ab\u91cd\u505a\u4e86\uff0c\\n\u4ece CFS\uff08completely fair scheduler\uff1b\u5b8c\u5168\u516c\u5e73\u8c03\u5ea6\u5668\uff09\\n\u53d8\u4e3a\u4e86[\u4e0a\u4e16\u7eaa\u4e5d\u5341\u5e74\u4ee3\u4e00\u7bc7\u8bba\u6587][eevdf-paper]\u63d0\u51fa\u7684\\nEEVDF\uff08earliest eligible virtual deadline first\uff1b\u6700\u65e9\u5230\u671f\u7684\u865a\u62df\u622a\u6b62\u65f6\u523b\u4f18\u5148\uff09\uff0cLWN \u5bf9\u6b64[\u505a\u4e86\u8bb2\u89e3][eevdf-lwn]\u3002\\n\u8be5\u6539\u9020\u7531\u8457\u540d Linux \u8c03\u5ea6\u5668\u7ef4\u62a4\u8005 Peter Zijlstra \u64cd\u5200\u3002\\n\\n\u7ecf\u793e\u533a\u6d4b\u8bd5\uff0cEEVDF \u8c03\u5ea6\u7b97\u6cd5\u80fd\u4ee5\u66f4\u5c11\u7684\u914d\u7f6e\u9879\uff0c\u5728\u5927\u591a\u6570\u573a\u666f\u4e0b\u5b9e\u73b0\u66f4\u9ad8\u7684\u516c\u5e73\u6027\u4e0e\u541e\u5410\uff1b\\n\u663e\u7136\uff0cCFS \u5e76\u4e0d\u300c\u5b8c\u5168\u516c\u5e73\u300d\uff0c\u5c3d\u7ba1\u5b83\u786e\u5b9e\u4e5f\u6bd4\u5b83\u7684\u524d\u4efb O(1) \u8c03\u5ea6\u5668\u66f4\u516c\u5e73\u4e9b\u3002\\n\u4f46\u4e5f\u4e0d\u6392\u9664\u4e2a\u522b\u573a\u666f\u7531\u4e8e\u53d7\u76ca\u4e8e\u5148\u524d CFS \u7b97\u6cd5\u7684\u4e0d\u516c\u5e73\uff0c\u800c\u5728\u65b0\u5185\u6838\u53cd\u800c\u6027\u80fd\u52a3\u5316\uff0c\u50cf\u662f\u53d7\u4e86 EEVDF \u60e9\u7f5a\u4e00\u6837\u3002\\n\u8bf7\u90a3\u4e9b\u9700\u8981\u6216\u8005\u5df2\u7ecf\u8feb\u8fd1\u7cfb\u7edf\u6027\u80fd\u6781\u9650\u7684\u5f00\u53d1\u8005\u548c\u7528\u6237\u4eec\u6ce8\u610f\uff1a\u5347\u7ea7\u5185\u6838\u524d\u91cd\u65b0\u8dd1\u8dd1\u538b\u6d4b\u3002\\n\\n[eevdf-paper]: https://citeseerx.ist.psu.edu/document?repid=rep1&type=pdf&doi=805acf7726282721504c8f00575d91ebfd750564\\n[eevdf-lwn]: https://lwn.net/Articles/925371/\\n\\n\u9664\u4ee5\u4e0a\u53d8\u66f4\u4e4b\u5916\uff0c\u8fd8\u6709\u8bb8\u591a\u540c\u7b49\u91cd\u8981\u7684\u7f3a\u9677\u4fee\u590d\u3001\u4ee3\u7801\u91cd\u6784\u7b49\u5de5\u4f5c\u503c\u5f97\u8912\u626c\u3002\\n\u8fd9\u4e2a\u7248\u672c\u52a8\u8fc7\u9f99\u82af\u76f8\u5173\u4ee3\u7801\u7684\u6240\u6709\u5f00\u53d1\u8005\u4eec\uff08\u6309\u5b57\u6bcd\u987a\u5e8f\u6392\u5e8f\uff0c\u4ee5 Git \u63d0\u4ea4\u8bb0\u5f55\u4e2d\u7684\u4f5c\u8005\u5b57\u6bb5\u4e3a\u51c6\uff09\uff1a\\n\\nimport ColumnedList from \'@site/src/components/ColumnedList\'\\n\\n\\n* Andy Shevchenko\\n* Aneesh Kumar K.V\\n* Baoquan He\\n* Bibo Mao\\n* Binbin Zhou\\n* Costa Shulyupin\\n* Dan Carpenter\\n* Enze Li\\n* Eric DeVolder\\n* Feiyang Chen\\n* Helge Deller\\n* Hongchen Zhang\\n* Huacai Chen\\n* Icenowy Zheng\\n* Jiri Slaby\\n* Keguang Zhang\\n* Maciej W. Rozycki\\n* Matthew Wilcox (Oracle)\\n* Mingtong Bao\\n* Nathan Chancellor\\n* Nick Desaulniers\\n* Paul E. McKenney\\n* Qi Hu\\n* Qing Zhang\\n* Russell King (Oracle)\\n* Sui Jingfeng\\n* Thomas Zimmermann\\n* Tiezhu Yang\\n* Tom Rix\\n* Vishal Moola (Oracle)\\n* WANG Xuerui\\n* Weihao Li\\n* Yanteng Si\\n* Yinbo Zhu\\n* YingKun Meng\\n* Zhangjin Wu\\n\\n\\n\u8fd9\u4e9b\u7ef4\u62a4\u5de5\u4f5c\u6db5\u76d6\u4e86 MIPS \u548c\u9f99\u67b6\u6784\u4e24\u4e2a\u65f6\u4ee3\u7684\u9f99\u82af CPU\uff0c\u4ee5\u53ca\u67b6\u6784\u65e0\u5173\u7684\u5927\u91cf\u9f99\u82af\u5e73\u53f0\u5916\u8bbe\u9a71\u52a8\u3002\\n\u5f53\u4f60\u5728\u9f99\u82af\u786c\u4ef6\u4e0a\u4f7f\u7528 Linux 6.6 \u65f6\uff0c\u522b\u5fd8\u4e86\u5411 :ta: \u4eec\u8bf4\u58f0\u8c22\u8c22\uff01\\n\\n:::info\\n\u672c\u8282\u62a5\u9053\u7684\u4fe1\u606f\u53ef\u4ee5\u901a\u8fc7\u7b80\u5355\u7684 `git` \u64cd\u4f5c\u4ece Linux \u4ed3\u5e93\u4e2d\u83b7\u53d6\uff1a\\n\\n```sh\\ngit log --no-merges -P --grep=\'(?\u8bed\u4e49\u5316\u7248\u672cSemantic Versioning](https://semver.org/lang/zh-CN/)\u3001[\u65e5\u5386\u5316\u7248\u672cCalendar Versioning](https://calver.org/overview_zhcn.html)\u7b49\u7b49\u7cbe\u786e\u5b9a\u4e49\u7684\u65b9\u6848\uff0c\u6211\u4eec\u8fd8\u662f\u5c06\u5176\u79f0\u4f5c `v1.10`\uff1a\u8fd9\u6837\u81f3\u5c11\u6b21\u7248\u672c\u53f7\uff08minor version\uff09\u5b57\u6bb5\u7684\u5bbd\u5ea6\u90fd\u4e00\u81f4\uff0c\u56e0\u800c\u80fd\u591f\u660e\u786e\u662f\u4ee5 ASCII \u6392\u5e8f\u6765\u786e\u5b9a\u7248\u672c\u5148\u540e\u6b21\u5e8f\u4e86\u3002\u81f3\u4e8e\u672a\u6765\uff0c\u53ef\u80fd\u8fd8\u662f\u8f6c\u5411\u7cbe\u786e\u7684\u7248\u672c\u53f7\u65b9\u6848\u4f1a\u8282\u7701\u4e9b\u7406\u89e3\u6c9f\u901a\u6210\u672c\uff01\\n\\n### \u53d8\u66f4\u5185\u5bb9\\n\\n\u4e3a\u65b9\u4fbf\u9605\u8bfb\uff0c\u73b0\u6458\u5f55\u300a\u9f99\u82af\u67b6\u6784\u53c2\u8003\u624b\u518c\u300b\u5377\u4e00 1.5.1 \u8282\uff08LoongArch V1.1[^\u6ce8\u4e00] \u7248\u672c\u65b0\u589e\u5185\u5bb9\uff09\u5982\u4e0b\uff1a\\n\\n1. \u65b0\u589e\u8fd1\u4f3c\u6c42\u89e3\u6d6e\u70b9\u6570\u5f00\u6839\u548c\u6d6e\u70b9\u6570\u5f00\u6839\u6c42\u5012\u6570\u6307\u4ee4\uff0c\\n \u5305\u62ec\u6807\u91cf\u8fd0\u7b97\u7684 `FRECIPE.S`\u3001`FRECIPE.D`\u3001`FRSQRTE.S`\u3001`FRSQRTE.D` \u6307\u4ee4\uff0c128\\n \u4f4d SIMD \u8fd0\u7b97\u7684 `VFRECIPE.S`\u3001`VFRECIPE.D`\u3001`VFRSQRTE.S`\u3001`VFRSQRTE.D` \u6307\u4ee4\\n \u548c 256 \u4f4d SIMD \u8fd0\u7b97\u7684 `XVFRECIPE.S`\u3001`XVFRECIPE.D`\u3001`XVFRSQRTE.S`\u3001`XVFRSQRTE.D`\\n \u6307\u4ee4\u3002\\n2. \u65b0\u589e `SC.Q` \u6307\u4ee4\u3002\\n3. \u65b0\u589e `LLACQ.W`\u3001`SCREL.W`\u3001`LLACQ.D`\u3001`SCREL.D` \u6307\u4ee4\u3002\\n4. \u65b0\u589e `AMCAS.B`\u3001`AMCAS.H`\u3001`AMCAS.W`\u3001`AMCAS.D`\u3001`AMCAS_DB.B`\u3001`AMCAS_DB.H`\u3001`AMCAS_DB.W`\u3001`AMCAS_DB.D`\u3001`AMSWAP.B`\u3001`AMSWAP.H` \u6307\u4ee4\u3002\\n5. \u65b0\u589e `AMADD.B`\u3001`AMADD.H`\u3001`AMSWAP_DB.B`\u3001`AMSWAP_DB.H`\u3001`AMADD_DB.B`\u3001`AMADD_DB.H` \u6307\u4ee4\u3002\\n6. \u589e\u52a0 `dbar` \u6307\u4ee4\u90e8\u5206\u975e\u96f6 hint \u503c\u7684\u529f\u80fd\u5b9a\u4e49\u3002\\n7. \u65b0\u589e 64 \u4f4d\u673a\u5668\u4e0a\u6267\u884c 32 \u4f4d\u6574\u6570\u9664\u6cd5\u6307\u4ee4\u662f\u5426\u53d7\u6e90\u64cd\u4f5c\u6570\u5bc4\u5b58\u5668\u9ad8 32 \u4f4d\u503c\u5f71\u54cd\u7684\u5224\u5b9a\u65b9\u5f0f\u3002\\n8. \u89c4\u8303\u76f8\u540c\u5730\u5740 load \u8bbf\u5b58\u64cd\u4f5c\u987a\u5e8f\u6267\u884c\u884c\u4e3a\u5224\u5b9a\u65b9\u5f0f\u3002\\n9. \u589e\u52a0\u6d88\u606f\u4e2d\u65ad\u7684\u5b9a\u4e49\u3002\\n10. \u5141\u8bb8\u5b9e\u73b0\u786c\u4ef6\u9875\u8868\u904d\u5386\u3002\\n\\n:::info \u7248\u6743\u5185\u5bb9\u5408\u7406\u4f7f\u7528\u58f0\u660e\\n\u300a\u624b\u518c\u300b\u660e\u786e\u4fdd\u7559\u6240\u6709\u6743\u5229\u4e14\u7981\u6b62\u975e\u7ecf\u4e66\u9762\u8bb8\u53ef\u7684\u8f6c\u8f7d\u3002\\n\u4f46\u6839\u636e[\u300a\u4e2d\u534e\u4eba\u6c11\u5171\u548c\u56fd\u8457\u4f5c\u6743\u6cd5\u300b](https://www.gov.cn/guoqing/2021-10/29/content_5647633.htm)\u7b2c\u4e8c\u5341\u56db\u6761\u7b2c\u4e00\u6b3e\u7b2c\u4e00\u9879\u3001\u7b2c\u4e8c\u9879\uff0c\\n\u6211\u4eec\u786e\u4fe1\u4ee5\u4e0a\u5bf9\u300a\u624b\u518c\u300b\u5185\u5bb9\u7684\u6458\u6284\u5c5e\u4e8e\u5408\u7406\u4f7f\u7528\u8303\u7574\uff0c\u4e0d\u53d7\u300a\u624b\u518c\u300b\u7248\u6743\u58f0\u660e\u7ea6\u675f\u3002\\n:::\\n\\n### \u4e3b\u7f16\u70b9\u8bc4\\n\\n\u6309\u7167\u539f\u6587\u5217\u8868\u7f16\u53f7\u770b\uff0c\u8bf4\u662f 10 \u6761\u53d8\u66f4\uff0c\u5176\u5b9e\u5206\u7c7b\u6709\u70b9\u592a\u8fc7\u6241\u5e73\u4e86\uff1a\\n\u6bd4\u65b9\u8bf4\u5176\u4e2d 6 \u6761\u90fd\u4e0e\u539f\u5b50\u64cd\u4f5c\u6709\u5173\uff0c\u4e14 2\u30013 \u4e24\u6761\u90fd\u5c5e\u4e8e LL/SC \u64cd\u4f5c\u8303\u7574\uff0c5\\n\u4e2d\u7684\u539f\u5b50\u4ea4\u6362\u64cd\u4f5c\u4e5f\u4e0d\u77e5\u4e3a\u4f55\u6ca1\u653e\u5165 4\u3002\\n\u90a3\u4e48\u5148\u629b\u5f00\u8fd9\u4e9b\u884c\u6587\u7ec6\u8282\uff0c\u5b8f\u89c2\u6765\u770b\uff0c\u5927\u7684\u53d8\u66f4\u4e3b\u8981\u6709\u4ee5\u4e0b\u51e0\u4e2a\u65b9\u9762\uff1a\\n\\n* \u540c\u6b65/\u539f\u5b50\u64cd\u4f5c\u80fd\u529b\uff0c\u5f97\u5230\u4e86\u4e00\u8f6e\u76f8\u5f53\u7684\u8fed\u4ee3\u3001\u4f18\u5316\uff08\u7b2c 2\u30013\u30014\u30015\u30016\u30018 \u6761\uff09\uff1b\\n* \u4ee5\u6b63\u5f0f\u6587\u5b57\u5f62\u5f0f\uff0c\u53d8\u76f8\u627f\u8ba4\u4e86\u521d\u4ee3 LoongArch® \u786c\u4ef6\u4e8b\u5b9e\u4e0a\u7684\u5947\u8469\u5751\u70b9\uff0c\u53ca\u5982\u4f55\u65b9\u4fbf\u5224\u65ad\u8be5\u5751\u662f\u5426\u5b58\u5728\uff08\u7b2c 7 \u6761\uff09\uff1b\\n* \u5728\u7279\u6743\u67b6\u6784\u65b9\u9762\uff0c\u505a\u4e86\u66f4\u591a\u6027\u80fd\u4f18\u5316\u7684\u5c1d\u8bd5\uff08\u7b2c 9\u300110 \u6761\uff09\uff1b\\n* \u53ef\u80fd\u51fa\u4e8e\u7279\u5b9a\u5e94\u7528\u573a\u666f\u9700\u8981\uff0c\u65b0\u589e\u4e86\u4e00\u5957\u66f4\u5feb\u7684\u5f00\u6839\u53f7\u3001\u5f00\u6839\u53f7\u540c\u65f6\u6c42\u5012\u6570\u7684\u64cd\u4f5c\uff08\u7b2c 1 \u6761\uff09\u3002\\n\\n\u8bf4\u5230\u539f\u5b50\u64cd\u4f5c\uff1a\u5f53\u4ee3\u8f6f\u4ef6\u5df2\u7ecf\u6df1\u5ea6\u4f9d\u8d56\u591a\u6838\u3001\u5e76\u884c\u64cd\u4f5c\uff0c\\n\u800c\u6bcf\u4e2a\u5904\u7406\u5668\u6838\u5f80\u5f80\u4e5f\u6df1\u5ea6\u4e71\u5e8f\u6267\u884c\u4ee5\u4fdd\u8bc1\u5355\u7ebf\u7a0b\u6027\u80fd\uff1b\\n\u4e3a\u5728\u8fd9\u6837\u6076\u52a3\u7684\u73af\u5883\u4e0b\u4fdd\u6301\u7a0b\u5e8f\u8bed\u4e49\u6b63\u786e\uff0c\\n\u5185\u5b58\u6a21\u578b\u2014\u2014\u53ef\u4ee5\u7b80\u5355\u7406\u89e3\u4e3a\u5177\u4f53\u7cfb\u7edf\u4e0a\u6240\u6709\u5904\u7406\u5668\u6838\u8bbf\u5b58\u526f\u4f5c\u7528\u7684\u7cbe\u786e\u63cf\u8ff0\u2014\u2014\u5176\u91cd\u8981\u6027\u52ff\u5eb8\u8d58\u8a00\u3002\\n\u8fd9\u4e9b\u4f18\u5316\u5f53\u7136\u662f LA664 \u76f8\u6bd4\u524d\u4ee3\u5fae\u67b6\u6784\u80fd\u591f\u53d6\u5f97\u6574\u4f53\u4e24\u4f4d\u6570\u767e\u5206\u6bd4\u6027\u80fd\u63d0\u5347\u7684\u91cd\u8981\u57fa\u7840\uff1a\\n\u5370\u8c61\u4e2d\u5355\u7eaf\u4e0a\u6587\u7b2c 6 \u6761\u7684\u7ec6\u7c92\u5ea6 `dbar` \u6539\u8fdb\uff0c\u5728\u5185\u6838\u9002\u914d\u540e\uff0c\u5c31\u8fbe\u6210\u4e86 10% \u8fd8\u662f 20% \u7684\u63d0\u5347\u3002\\n\u5b9e\u9645\u4e0a\uff0c\u76ee\u524d\u8fd9\u65b9\u9762\u5e94\u8be5\u4e5f\u53ea\u6709\u7b2c 6 \u6761\u88ab\u5b9e\u73b0\u4e86\uff1a\u56e0\u4e3a\u53ea\u6709\u5b83\u80fd\u591f\u5411\u4e0b\u517c\u5bb9\u8f83\u65e9\u7684\u5904\u7406\u5668\u578b\u53f7\u3002\\n\u5982\u679c\u5728\u5177\u4f53\u573a\u666f\u80fd\u591f\u4e0d\u8003\u8651\u65e7\u5904\u7406\u5668\u578b\u53f7\u800c\u751f\u6210\u673a\u5668\u8bed\u8a00\u7684\u8bdd\uff0c\u4f18\u5316\u7a0b\u5ea6\u53ea\u4f1a\u66f4\u9ad8\u3002\\n\\n\u8bf4\u5230\u7b2c 7 \u6761\u7684\u5751\uff1a\u8003\u8651\u5230\u9f99\u82af\u516c\u53f8\u7684\u56e2\u961f\u89c4\u6a21\u3001\u6295\u5165\u8d44\u91d1\u4e4b\u53ef\u601c\uff0c\u4ee5\u53ca\u521d\u4ee3\\nLoongArch® \u63a8\u51fa\u4e4b\u4ed3\u4fc3\uff0c\\n\u591a\u5c11\u634f\u51fa\u51e0\u4e2a bugs \u5176\u5b9e\u4e5f\u65e0\u53ef\u539a\u975e\uff0c\u6ca1\u4ec0\u4e48\u55b7\u70b9\uff1a\u6ca1 bug \u624d\u4e0d\u5bf9\u52b2\u5462\uff01\\n\u8fd9 `div.w` \u7cfb\u5217\u6307\u4ee4\uff08\u5377\u4e00\u7b2c 2.2.1.13 \u8282\uff09\uff0c\u4f5c\u4e3a\u4e00\u5957 32 \u4f4d\u64cd\u4f5c\uff0c\u5374\u4e0e\u6574\u4e2a LoongArch®\\n\u5176\u4f59 32 \u4f4d\u64cd\u4f5c\u884c\u4e3a\u90fd\u4e0d\u540c\uff1a\\n\u5c45\u7136\u4ecd\u7136\u4f1a\u770b\u5165\u53c2\u7684\u9ad8 32 \u4f4d\uff0c\u4e0d\u662f\u7b26\u53f7\u6269\u5c55\u5c31\u8f93\u51fa\u5783\u573e\u7ed3\u679c\u2014\u2014\u867d\u7136\u4e0d\u505a 64 \u4f4d\u8fd0\u7b97\uff0c\u4f46\u8fd8\u5f97\u7167 64 \u4f4d\u51c6\u5907\uff01\\n\u8fd9\u4f30\u8ba1\u662f\u6e90\u81ea\u6700\u65e9\u671f MIPS \u4e58\u9664\u6cd5\u5668\u4e0e\u6d41\u6c34\u7ebf\u5206\u79bb\u7684\u5386\u53f2\u5305\u88b1\uff1aMIPS \u7684 32 \u4f4d\u4e58\u9664\u6cd5\u6307\u4ee4\u90fd\u6709\u76f8\u540c\u9650\u5236\u3002\\n\u9f99\u67b6\u6784\u7684 32 \u4f4d\u4e58\u6cd5\u672a\u53d7\u5f71\u54cd\uff0c\u4f46\u9664\u6cd5\u3001\u53d6\u4f59\u7684\u5177\u4f53\u5b9e\u73b0\u4e0d\u5e78\u4e0e MIPS \u884c\u4e3a\u4e00\u81f4\u4e86\u3002\\n\u663e\u7136\u8bbe\u8ba1\u5e08\u4eec\u5e76\u4e0d\u8ba4\u4e3a\u8fd9\u5f88\u5408\u7406\u2014\u2014\u8981\u4e0d\u7136\u4e5f\u4e0d\u4f1a\u5728 LA664 \u5c31\u6539\u6389\u4e86\uff1b\\n\u4f46\u65e7\u7684\u578b\u53f7\u624d\u53d1\u552e\u6ca1\u591a\u4e45\uff0c\u8fd8\u5f97\u7ee7\u7eed\u652f\u6301\uff0c\u4e8e\u662f\u65b0\u7248\u624b\u518c\u5e76\u6ca1\u6709\u4fee\u6539\u7b2c 2.2.1.13 \u8282\u7684\u5185\u5bb9\uff0c\\n\u800c\u662f\u5728\u7b2c 2.2.10.5 \u8282 CPUCFG \u6570\u636e\u7684\u4ecb\u7ecd\u4e2d\u63d0\u4e86\u4e00\u5634\uff1a\\n\u53ef\u4ee5\u770b `CPUCFG.0x2.DIV32[bit26]` \u6765\u786e\u5b9a\u5f53\u524d\u5904\u7406\u5668\u662f\u5426\u53d7\u6b64\u5751\u5f71\u54cd\u3002\\n\\n\u7b14\u8005\u9884\u8ba1\u76f8\u5f53\u957f\u7684\u4e00\u6bb5\u65f6\u95f4\u91cc\uff0c\u4f30\u8ba1\u90fd\u53ea\u6709 JIT \u8fd0\u884c\u65f6\u80fd\u4ece\u4e2d\u53d7\u76ca\uff1a\\n\u548c\u4e0a\u6587\u7684\u539f\u5b50\u64cd\u4f5c\u65b0\u6307\u4ee4\u4e00\u6837\uff0c\u60f3\u8981\u6574\u4e2a\u7cfb\u7edf\u90fd\u7528\u4e0a\u8fd9\u51e0\u4e2a\u64cd\u4f5c\u7684\u6b63\u5e38\u3001\u5bbd\u677e\u8bed\u4e49\uff0c\\n\u5c31\u610f\u5473\u7740\u5931\u53bb\u524d\u4ee3\u4ea7\u54c1\u7684\u517c\u5bb9\u6027\u3002\\n\u56e0\u4e3a 32 \u4f4d\u9664\u6cd5\u3001\u53d6\u4f59\u64cd\u4f5c\u662f\u5982\u6b64\u7684\u57fa\u7840\uff0c\u5982\u679c\u6bcf\u7528\u4e00\u6b21\u4e4b\u524d\u90fd\u8981\u52a8\u6001\u68c0\u67e5 CPU \u7279\u6027\uff0c\\n\u90a3\u6027\u80fd\u4e0d\u582a\u8bbe\u60f3\u3002\\n\u4f46 JIT \u7f16\u8bd1\u5668\u4e0d\u4e00\u6837\uff1a\u5b83\u52a8\u6001\u751f\u6210\u7684\u4ee3\u7801\u5e76\u4e0d\u53d7\u5b83\u81ea\u8eab\u9650\u5236\uff0c\u56e0\u6b64\u5b8c\u5168\u53ef\u4ee5\u505a\u5230\u52a8\u6001\u63a2\u67e5\u4e00\u6b21\\nCPU \u7279\u6027\uff0c\u540e\u7eed\u636e\u6b64\u751f\u6210\u3001\u8fd0\u884c\u5bf9\u5f53\u524d\u7cfb\u7edf\u6700\u4f18\u5316\u7684\u673a\u5668\u8bed\u8a00\uff0c\u800c\u81ea\u8eab\u5219\u4fdd\u6301\u4e0e\u6700\u517c\u5bb9\u7684\u57fa\u7ebf\u5bf9\u9f50\u3002\\n\\n\u65e2\u7136\u63d0\u5230\u4e86\u786c\u4ef6\u7684\u5751\uff0c\u90a3\u4e48\u5176\u5b9e\u4e5f\u4e0d\u5f97\u4e0d\u5410\u69fd\u4e0b\u7b2c 10 \u6761\u8fd9\u4e2a\u786c\u4ef6\u9875\u8868\u904d\u5386\u673a\u6784\uff1a\\n\u81f3\u5c11\u5728\u7b14\u8005\u62ff\u5230\u7684\u7b2c\u4e00\u6279 3A6000 \u677f\u5b50\u4e0a\uff0c\u8fd9\u4e2a\u529f\u80fd\u4f30\u8ba1\u88ab\u56fa\u4ef6\u7981\u7528\u4e86\uff1b\\n\u76f8\u5e94\u7684 CPUCFG \u6807\u5fd7\u4f4d\u8bfb\u51fa\u6765\u662f 0\uff0c\u5185\u6838\u5b9e\u9645\u4e5f\u6ca1\u7528\u4e0a\u3002\\n\u4e0d\u6e05\u695a\u524d\u51e0\u5929\u53d1\u552e\u7684\u91cf\u4ea7\u6279\u6b21\u8fd8\u6709\u6ca1\u6709\u8fd9\u95ee\u9898\uff1a\\n\u5982\u679c\u8fd9\u4e9b\u677f\u5b50\u4e0a\u8fd9\u6807\u5fd7\u4f4d\u4e5f\u662f 0\uff0c\\n\u90a3\u4f30\u8ba1 3A6000 \u8fd9\u4e2a\u673a\u6784\u5c31\u662f\u6709\u4ec0\u4e48\u5751\uff0c\u5bfc\u81f4\u7528\u4e0d\u8d77\u6765\u4e86\u3002\\n\u4e0d\u8fc7\u4e5f\u65e0\u4f24\u5927\u96c5\uff1a\u5176\u4ed6\u65b9\u9762\u7684\u6539\u8fdb\u5b9e\u5728\u592a\u5927\u4e86\uff0c\u7455\u4e0d\u63a9\u745c\u2014\u2014\u7b49\u4e0b\u4e2a\u6279\u6b21\u6216\u8005\u4e0b\u4e00\u4ee3\u4ea7\u54c1\u5427\uff01\\n\\n\u8bf4\u56de\u7b2c 9 \u6761\uff0c\u8fd9\u4e2a\u5e94\u8be5\u6ca1\u5751\u4e86\u2014\u2014\u4e5f\u4e0d\u4e00\u5b9a\uff1b\u56e0\u4e3a\u76ee\u524d Linux \u5185\u6838\u5e76\u6ca1\u6709\u52a0\u5165\u76f8\u5173\u652f\u6301\u3002\\n\u4e0d\u8fc7\u624b\u518c\u65e2\u7136\u653e\u51fa\u4e86\uff0c\u5185\u6838\u5c42\u9762\u8fd9\u4e2a\u7279\u6027\u4e5f\u80fd\u505a\u5230\u5411\u540e\u517c\u5bb9\uff0c\u90a3\u4e48\u5c31\u671f\u5f85\u63a5\u4e0b\u6765\u4e00\u4e24\u4e2a\u5468\u671f\u5b83\u80fd\u5f97\u5230\u652f\u6301\u5427\u3002\\n\\n\u6700\u540e\u662f\u7b2c 1 \u6761\u8fd9\u4e00\u5957\u6d6e\u70b9\u8fd0\u7b97\u4f18\u5316\uff1a\\n\u7b14\u8005\u5b9e\u6d4b\u4e86 `frsqrte.s` \u6307\u4ee4\u6bd4[\u8457\u540d\u7684 *Quake III Arena*\u300a\u96f7\u795e\u4e4b\u9524 3 \u7ade\u6280\u573a\u300b \u5feb\u901f\u5e73\u65b9\u5012\u6570\u7b97\u6cd5](https://en.wikipedia.org/wiki/Fast_inverse_square_root)\u7cbe\u786e\uff0c\\n\u4e14\u4e0d\u662f\u5355\u7eaf\u5c06\u8fd9\u4e2a\u7ecf\u5178\u7b97\u6cd5\u6700\u540e\u4e00\u6b65\u7684 Newton \u8fed\u4ee3\u591a\u8dd1\u4e00\u4e24\u8f6e\u90a3\u4e48\u7b80\u5355\u3002\\n\u5177\u4f53\u7528\u7684\u5565\u7b97\u6cd5\u76ee\u524d\u4e0d\u77e5\u9053\uff0c\u6bd5\u7adf\u7b14\u8005\u6ca1\u7cbe\u529b\u5bf9\u5904\u7406\u5668\u8bbe\u8ba1\u9886\u57df\u7684\u524d\u6cbf\u8bba\u6587\u4fdd\u6301\u5173\u6ce8\uff1b\\n\u5feb\u5c31\u5b8c\u4e8b\u4e86\uff01\\n\u8fd9\u4e9b\u64cd\u4f5c\u867d\u7136\u4e0d\u5982 IEEE 754 \u89c4\u8303\u4e0a\u8981\u6c42\u7684\u90a3\u4e48\u7cbe\u786e\uff0c\u4f46\u80dc\u5728\u6267\u884c\u5feb\uff1a\u8fd9\u5bf9 3D \u6e32\u67d3\u3001\\n\u7269\u7406\u5f15\u64ce\u3001\u7c97\u6d45\u7684\u6570\u503c\u6a21\u62df\uff0c\u4e4b\u7c7b\u7cbe\u5ea6\u8981\u6c42\u4e0d\u90a3\u4e48\u9ad8\u7684\u573a\u666f\u90fd\u662f\u597d\u4e8b\u3002\\n\u4e0d\u8fc7\u9f99\u67b6\u6784\u8fd9\u4e2a\u53d1\u660e\u6bd4\u8f83\u6709\u5f00\u521b\u6027\uff0c\u4ee5\u81f3\u4e8e\u4ece\u76ee\u524d\u7684\u7f16\u7a0b\u8bed\u8a00\u90fd\u4e0d\u592a\u5bb9\u6613\u8c03\u7528\u5b83\u4eec\uff0c\\n\u975e\u5f97\u624b\u5199\u70b9\u6c47\u7f16\u4e0d\u53ef\uff1b\\n\u6709\u5174\u8da3\u7684\u540c\u5b66\u53ef\u4ee5\u770b\u770b\u80fd\u4e0d\u80fd\u7ed9\u4f60\u7231\u7528\u7684\u6570\u5b66\u3001\u56fe\u5f62\u5b66\u8f6f\u4ef6\u63d0 PR \u52a0\u652f\u6301\u4e86\uff01\\n\\n\u603b\u4e4b\uff0c\u8fd9\u6b21\u66f4\u65b0\u5bf9\u6027\u80fd\u63d0\u5347\u884c\u4e4b\u6709\u6548\uff0c\u5bf9\u7fa4\u4f17\u6298\u817e\u5341\u5206\u53cb\u597d\uff0c\u76f8\u4fe1\u5b83\u80fd\u6210\u4e3a\u4f17\u53d1\u70e7\u53cb\u591a\u5e74\u540e\u7684\u7f8e\u597d\u56de\u5fc6\uff08\u4e5f\u53ef\u80fd\u4e0d :smiling_imp:\uff09\u3002\\n\\n## \u5148\u300c\u9a6c\u300d\u518d\u770b\\n\\n\u672c\u680f\u76ee\u7684\u5185\u5bb9\u5177\u6709\u4e00\u5b9a\u5ef6\u7eed\u6027\uff0c\u5c06\u6301\u7eed\u8ffd\u8e2a\u62a5\u9053 LoongArch® \u9886\u57df\u7684\u91cd\u8981\u6216\u957f\u671f\u9879\u76ee\uff08\u5751\uff09\u3002\\n\\n### Linux\\n\\nLinux 6.6 \u6b63\u5f0f\u7248[\u5df2\u7ecf\u53d1\u5e03](https://lore.kernel.org/lkml/CAHk-=wiZuU984NWVgP4snp8sEt4Ux5Mp_pxAN5MNV9VpcGUo+A@mail.gmail.com/)\u3002\\n\u672c\u5468\u548c\u4e0b\u5468\u662f Linux 6.7 \u7684\u5408\u5e76\u7a97\u53e3\uff1b\\n\u76ee\u524d\u9f99\u67b6\u6784\u5206\u652f\u4ecd\u7136\u4fdd\u6301\u5728\u53ea\u6709 KVM \u8865\u4e01\u7684\u72b6\u6001\uff0c\u7b49\u5f85 KVM \u7ef4\u62a4\u8005\u7684\u62c9\u53d6\u3002\\n\u4e0d\u7528\u6025\uff1a\u6709\u4e24\u5468\u65f6\u95f4\uff0c\u5e76\u4e14\u672c\u8eab\u9f99\u82af\u4e5f\u4e60\u60ef\u5728\u7b2c\u4e8c\u5468\u7684\u5468\u4e94\u53d1\u51fa PR\uff0c\u4e89\u53d6\u591a\u70b9\u5b8c\u5584\u4ee3\u7801\u7684\u65f6\u95f4\u3002\\n\\n### \u5de5\u5177\u94fe\\n\\n#### binutils\\n\\nJiajie Chen [\u7814\u7a76\u5b8c](https://github.com/jiegec/la-inst) 3A6000 \u5f7c\u65f6\u5c1a\u672a\u516c\u5f00\u7684\u6307\u4ee4\u4e4b\u540e\uff0c\\n\u4e00\u770b\u5230 LoongArch v1.10 \u6b63\u5f0f\u516c\u5e03\uff0c\\n\u4e24\u5929\u540e\u7684 10 \u6708 25 \u53f7\u5c31[\u638f\u51fa\u4e86](https://sourceware.org/pipermail/binutils/2023-October/130139.html)\u7ed9\\nbinutils \u65b0\u589e\u8fd9\u4e9b\u6307\u4ee4\u6c47\u7f16\u3001\u53cd\u6c47\u7f16\u652f\u6301\u7684\u8865\u4e01\uff08\u5f53\u7136\u53ea\u505a\u4e86\u6b63\u5f0f\u89c1\u8bf8\u6587\u6863\u7684\u90a3\u90e8\u5206\uff09\u3002\\n\u6770\u54e5\u5a01\u6b66\uff01\\n\u611f\u8c22 xry111 \u63d0\u4f9b\u65b0\u95fb\u7ebf\u7d22\u3002\\n\\n#### gcc\\n\\n\u6b63\u5728\u7b14\u8005\u9f9f\u901f\u8d76\u7a3f\u4e4b\u9645\uff0cXi Ruoyao\\n[\u4fee\u590d\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-October/634687.html)\u4ea4\u53c9\u6c47\u7f16\u5668\u5c31\u7eea\u524d\uff0c\\n\u6784\u5efa\u4ea4\u53c9\u7f16\u8bd1\u5668\u4f1a\u5931\u8d25\u7684\u95ee\u9898\u3002\\n\\n#### LLVM\\n\\n[\u4e0a\u671f\u62a5\u9053\u8fc7\u7684](./2023-10-23-this-week-in-loongarch-21.md#llvm) FCC \u642c\u8fd0\u652f\u6301\u8865\u4e01\uff0c\\n10 \u6708 27 \u65e5[\u88ab\u79fb\u690d\u56de\u4e86](https://github.com/llvm/llvm-project-release-prs/pull/746) LLVM 17 \u5206\u652f\u3002\\n\\n:::tip \u82b1\u7d6e\\n\u770b\u8bc4\u8bba\u533a\uff0c\u8fd9\u4e2a bug \u662f\u4e0b\u6e38\u6709\u4eba\u7f16\u8bd1 UE4\uff08\u5927\u540d\u9f0e\u9f0e\u7684\u865a\u5e7b\u56db\u6e38\u620f\u5f15\u64ce\uff09\u53d1\u73b0\u7684\uff1b\\n\u800c LLVM 17 \u7cfb\u5217\u7684\u53d1\u7248\u7ba1\u7406\u5458\u5728 Ubisoft\uff08\u80b2\u78a7\uff09\u7684\u5de5\u5177\u94fe\u90e8\u95e8\u5de5\u4f5c\u3002\\n\u6e38\u620f\u63a8\u52a8\u5148\u8fdb\u751f\u4ea7\u529b\uff01\\n:::\\n\\n## \u6742\u95fb\u64ad\u62a5\\n\\n\u5e94\u5fae\u4fe1\u300c\u9f99\u82af\u8bfb\u8005\u4ff1\u4e50\u90e8\u300d\u7fa4\u7684\u300c\u554a\u54c8\u54c8\u300d\u7fa4\u53cb\u53cd\u9988\uff0c\u4ece\u672c\u671f\u300a\u6bcf\u5468\u4e00\u9f99\u300b\u5f00\u59cb\uff0c\\n\u7565\u5fae\u6269\u5145\u4e86\u524d\u8a00\u90e8\u5206\u3002\u611f\u8c22\u8fd9\u4f4d\u8bfb\u8005\u7684\u5efa\u8bae\uff01\\n\\n\u6765\u81ea[\u5b89\u540c\u5f00\u6e90\u793e\u533a\uff08AOSC\uff09][aosc]\u7684\u670b\u53cb[\u738b\u6c5f\u6d25](https://github.com/RedL0tus)\u4e3a Google \u7684 OpenSSL\\nfork BoringSSL [\u63d0\u4ea4\u4e86](https://boringssl-review.googlesource.com/c/boringssl/+/63565)\u9002\u914d\u4efb\u610f\u975e\u5b98\u65b9\u652f\u6301\u7684\u5c0f\u7aef\\n\uff08little-endian\uff0932 \u4f4d\u6216 64 \u4f4d\u5e73\u53f0\u7684\u8865\u4e01\u3002\\n\\nxen0n \u5728\u7ed9 Debian loong64 port \u76d1\u5de5\u7684\u8fc7\u7a0b\u4e2d\uff0c\u53d1\u73b0\\n[buildd.debian.org \u7684\u7edf\u8ba1\u56fe\u8868\u9875\u9762](https://buildd.debian.org/stats/)\u4e00\u76f4\u7f3a\u9f99\u67b6\u6784\uff0c\\n\u4e8e\u662f\u987a\u624b\u5e2e\u5fd9[\u52a0\u4e0a\u4e86](https://salsa.debian.org/wb-team/wanna-build/-/commit/1f64a552b488f2565cbc1e8336416abac0376243)\u3002\\n\u867d\u7136\u5386\u53f2\u6570\u636e\u6ca1\u6cd5\u8865\uff0c\u4f46\u4e5f\u65e0\u4f24\u5927\u96c5\u2014\u2014\u8fd9 port \u51fa\u751f\u90fd\u6ca1\u51e0\u5929\u54ea\uff01\\n\\n:::tip \u82b1\u7d6e\\nxen0n \u9009\u53d6\u4e86 R \u8bed\u8a00\u7684\u756a\u8304\u8272 `tomato` \u4e3a\u9f99\u67b6\u6784\u914d\u8272\uff0c\u539f\u56e0\u5199\u5728\u4e86\u63d0\u4ea4\u8bf4\u660e\uff1a\\n\\n* \u8ddf\u9f99\u82af\u7684 logo \u914d\u8272\u5dee\u4e0d\u591a\uff0c\u90fd\u7ea2\u4e0d\u6e9c\u79cb\u7684\uff0c\u4ee5\u53ca\\n* \u756a\u8304 :tomato: \u57fa\u672c\u4e0a\u4e5f\u597d\u5403\uff01\\n\\n\uff08\u5176\u5b9e\u5f53\u7136\u9996\u8981\u8003\u8651\u662f\u533a\u5206\u5ea6\uff1b\u8fd9\u70b9\u5012\u662f\u5fd8\u8bb0\u5728\u63d0\u4ea4\u8bf4\u660e\u5199\u4e0a\u4e86\u3002:joy:\uff09\\n:::\\n\\n## \u5f20\u8d34\u680f\\n\\n\u672c\u680f\u76ee\u53ef\u4f9b\u5f20\u8d34\u516c\u76ca\u6027\u8d28\u7684\u5404\u79cd\u4fe1\u606f\u3002\\n\\n* \u53cb\u60c5\u6269\u6563\uff1a[\u5b89\u540c\u5f00\u6e90\u793e\u533a\uff08AOSC\uff09][aosc]\u7684\u9f99\u67b6\u6784\u79fb\u690d\u4e3b\u7ebf\u5316\u5de5\u4f5c\u300c\u5408\u9f99\u300d\u4ecd\u5728\u5982\u706b\u5982\u837c\u8fdb\u884c\u4e2d\uff0c\\n \u6b64\u5de5\u4f5c\u5b8c\u6210\u540e\u9f99\u67b6\u6784\u5c06\u5347\u683c\u4e3a AOSC OS \u7684 Tier 1 \u67b6\u6784\u3002\\n \u6b22\u8fce\u540c\u5b66\u4eec\u8bd5\u7528\u3001\u53cd\u9988\uff0c\u4e5f\u6b22\u8fce\u6709\u5fd7\u4e4b\u58eb\u4e00\u540c\u52a0\u5165\uff08\u6c9f\u901a\u6e20\u9053\u8be6\u89c1 AOSC \u7f51\u7ad9\u76f8\u5173\u680f\u76ee\uff09\u3002\\n* \u7ad9\u52a1\u516c\u544a\uff1a\u5e94\u5e7f\u5927\u6c89\u9ed8\u8bfb\u8005\u7fa4\u4f53\u7684\u9700\u6c42\uff08\u4f60\u4eec\u7684\u6c89\u9ed8\u9707\u8033\u6b32\u804b\uff1bl\xf3ng \u6ca1\u6709\u53cc\u5173\uff09\uff0c\\n \u6211\u4eec\u5df2\u4e3a\u672c\u7ad9\u53d6\u5f97\u4e86\u4e2d\u56fd\u5927\u9646 ICP \u5907\u6848\uff0c\\n \u4ee5\u4fbf\u4e3a\u4e2d\u56fd\u5927\u9646\u5730\u533a\u8bfb\u8005\u63d0\u4f9b\u5176\u5883\u5185\u7684 CDN \u52a0\u901f\uff1a\\n \u60a8\u6253\u5f00\u672c\u7ad9\u5e94\u8be5\u4e0d\u5361\u4e86\u3002\\n \u8be6\u89c1[\u672c\u7ad9\u52a8\u6001](/blog/we-are-now-served-from-cn-mainland/)\u3002\\n* \u672c\u5468\u62a5[\u6301\u7eed\u63a5\u53d7\u7f51\u53cb\u6295\u7a3f][call-for-submissions]\u3002\u6b22\u8fce\u6765\u4e0a\u6e38\u5750\u5750\uff01\\n\\n[aosc]: https://aosc.io\\n[call-for-submissions]: https://github.com/loongson-community/areweloongyet/issues/16"},{"id":"this-week-in-loongarch-21","metadata":{"permalink":"/newsletter/this-week-in-loongarch-21","editUrl":"https://github.com/loongson-community/areweloongyet/newsletter/2023-10-23-this-week-in-loongarch-21.md","source":"@site/newsletter/2023-10-23-this-week-in-loongarch-21.md","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 21 \u671f","description":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01","date":"2023-10-23T00:00:00.000Z","formattedDate":"2023\u5e7410\u670823\u65e5","tags":[{"label":"\u6bcf\u5468\u4e00\u9f99","permalink":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99"}],"readingTime":3.84,"hasTruncateMarker":true,"authors":[{"name":"WANG Xuerui","title":"\ud83d\udc32\u9f99\u95e8\u5ba2\u6808\u6253\u6742\u7684","url":"https://github.com/xen0n","imageURL":"https://github.com/xen0n.png","key":"xen0n"}],"frontMatter":{"slug":"this-week-in-loongarch-21","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 21 \u671f","authors":["xen0n"],"date":"2023-10-23T00:00:00.000Z","tags":["\u6bcf\u5468\u4e00\u9f99"]},"unlisted":false,"prevItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 22 \u671f","permalink":"/newsletter/this-week-in-loongarch-22"},"nextItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 20 \u671f","permalink":"/newsletter/this-week-in-loongarch-20"}},"content":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01\\n\\n\x3c!-- truncate --\x3e\\n\\n\u5982\u65e0\u7279\u522b\u8bf4\u660e\uff0c\u6587\u4e2d\u63d0\u53ca\u7684\u65e5\u671f\u3001\u65f6\u95f4\u90fd\u4e3a\u5317\u4eac\u65f6\u95f4\uff08UTC+8\uff09\u3002\\n\\n## \u5148\u300c\u9a6c\u300d\u518d\u770b\\n\\n\u672c\u680f\u76ee\u7684\u5185\u5bb9\u5177\u6709\u4e00\u5b9a\u5ef6\u7eed\u6027\uff0c\u5c06\u6301\u7eed\u8ffd\u8e2a\u62a5\u9053 LoongArch® \u9886\u57df\u7684\u91cd\u8981\u6216\u957f\u671f\u9879\u76ee\uff08\u5751\uff09\u3002\\n\\n### Linux\\n\\n10 \u6708 19 \u65e5\uff0cHuacai Chen [\u53d1\u51fa\u4e86](https://lore.kernel.org/loongarch/169774057661.20290.11492595041951746156.pr-tracker-bot@kernel.org/T/#m9facb0821a19108af3693a87dc0f603d6d9fa26f)\\nv6.6 \u5f00\u53d1\u5468\u671f\u7684\u7b2c\u4e09\u7ec4 LoongArch \u67b6\u6784\u76f8\u5173\u4fee\u590d\uff0c\\nLinus \u5f88\u5feb\u5c06\u5176\u62c9\u5165\u4e86\u4e3b\u7ebf\u3002\\n\u8fd9\u4e9b\u5185\u5bb9\u5df2\u5728\u7f8e\u897f\u65f6\u95f4\u5468\u65e5\u4e0b\u5348\u7684 v6.6-rc7 tag \u53d1\u5e03\u4e86\u3002\\n\u5185\u5bb9\u6709\uff1a\\n\\n* \u5468\u62a5\u7b2c 19 \u671f\u62a5\u9053\u7684 Icenowy Zheng \u7684 LoongArch \u5199\u5408\u5e76\u95ee\u9898\u89c4\u907f\u65b9\u5f0f[\u4fee\u590d](https://git.kernel.org/torvalds/c/278be83601dd1725d4732241f066d528e160a39d)\uff0c\\n \u5b9e\u6d4b\u89e3\u51b3\u4e86 AMD GPU \u7cfb\u7edf\u7684\u8bb8\u591a\u7eb9\u7406\u635f\u574f\u95ee\u9898\u3002\\n* \u540c\u6837\u5728\u7b2c 19 \u671f\u62a5\u9053\u7684\u4e0a\u6e38\u5f00\u53d1\u8005 Deepak \u53d1\u73b0\u7684\u5b9e\u65f6\u5185\u6838\u76f8\u5173\u91cd\u6784\u9700\u6c42\uff0c\\n \u7531 Huacai Chen [\u5b9e\u73b0](https://git.kernel.org/torvalds/c/477a0ebec101359f49d92796e3b609857d564b52)\u3002\\n* Tiezhu Yang [\u91cd\u6784\u7684](https://git.kernel.org/torvalds/c/00c2ca84c680f64b79b5e10a482ca435fd7d98ce)\u4e00\u4e9b\u6c47\u7f16\u4ee3\u7801\u4e2d\u5bf9\u7b26\u53f7\u6027\u8d28\u7684\u6807\u6ce8\u3002\\n* Huacai Chen [\u5b9e\u73b0\u7684](https://git.kernel.org/torvalds/c/449c2756c2323c9e32b2a2fa9c8b59ce91b5819d)\u7b2c\\n 18 \u671f\u5468\u62a5\u4e2d\u53d1\u73b0\u7684\u6784\u5efa\u9519\u8bef\u4fee\u590d\u3002\\n\\n### \u5de5\u5177\u94fe\\n\\n#### gcc\\n\\n10 \u6708 19 \u65e5\uff0cXi Ruoyao \u5b8c\u6210\u4e86\u56fd\u5e86\u4ee5\u6765\u4e00\u76f4\u5728\u505a\u7684\u6307\u4ee4\u8c03\u5ea6\u4e0e linker relaxation\\n\u7684\u5e73\u8861\u53d6\u820d\u5de5\u4f5c\uff0c\u5411\u90ae\u4ef6\u5217\u8868[\u53d1\u51fa\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-October/633583.html)\u7b2c\u4e00\u7a3f\u3002\\n\uff08\u5bf9\u4e8e\u5148\u524d\u53d1\u73b0\u7684 binutils BFD \u94fe\u63a5\u5668 \u4e0d\u4f1a relax \u4efb\u4f55\u5171\u4eab\u5e93\u7684\u95ee\u9898\uff0cmengqinggang\\n[\u5199\u4e86](https://sourceware.org/pipermail/binutils/2023-October/129941.html)\u4e00\u7248\u4fee\u590d\u3002\uff09\\n\\n#### LLVM\\n\\n10 \u6708 17 \u65e5\uff0cyjijd [\u63d0\u4ea4\u4e86](https://github.com/llvm/llvm-project/pull/69313)\\n:ta: \u548c leecheechen \u5408\u4f5c\u5f00\u53d1\u7684\uff0c\u4e3a Clang \u6dfb\u52a0 LSX/LASX builtins \u652f\u6301\u7684\u8865\u4e01\u3002\\n\u6709\u8fd9\u90e8\u5206\u652f\u6301\u4e4b\u540e Clang \u5c31\u53ef\u4ee5\u7f16\u8bd1\u5411\u91cf\u4f18\u5316\u7684 C \u4ee3\u7801\uff0c\u800c\u4e0d\u7528\u4f9d\u8d56\u624b\u5199\u6c47\u7f16\u4e86\u3002\\n\\n\u540c\u4e00\u5929\uff0cwangleiat [\u6559\u4f1a\u4e86](https://github.com/llvm/llvm-project/pull/69300)\\nLLVM \u5728 LoongArch \u6d6e\u70b9\u6761\u4ef6\u7801\u5bc4\u5b58\u5668\u95f4\u642c\u8fd0\u6570\u636e\u3002\\n\u5728\u6b64\u4e4b\u540e\uff0c\u5bc4\u5b58\u5668\u5206\u914d\u5de5\u5e8f\u5c31\u53ef\u4ee5\u653e\u5f00\u624b\u811a\u968f\u610f\u4f7f\u7528\u8fd9\u90e8\u5206\u5bc4\u5b58\u5668\u4e86\u3002\\n\uff08\u503c\u5f97\u4e00\u63d0\u7684\u662f\uff0c\u5728\u4ee3\u7801\u5ba1\u67e5\u8fc7\u7a0b\u4e2d\uff0c\u5076\u7136\u53d1\u73b0\u6b64\u53d8\u66f4\u6e05\u96f6 FCC \u7684\u65b9\u5f0f\u6bd4 GCC \u5148\u524d\u4f7f\u7528\u7684\u65b9\u5f0f\u8981[\u5feb\u8bb8\u591a](https://github.com/llvm/llvm-project/pull/69300#discussion_r1361832152)\u3002\\n\u5f53\u5929 Xi Ruoyao \u4fbf\u5c06\u6b64\u4f18\u5316[\u79fb\u690d\u5230\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-October/633317.html) GCC\uff0c\\n\u7b2c\u4e8c\u5929\u5373\u5408\u5e76\u4e86\u3002\uff09\\n\\n## \u6742\u95fb\u64ad\u62a5\\n\\n\u8fd1\u65e5\uff0c\u9f99\u82af\u5f00\u53d1\u8005 zhaojunchao \u5411\u5fae\u8f6f\u516c\u53f8\u7ef4\u62a4\u7684\u8de8\u5e73\u53f0\u3001\u9ad8\u6027\u80fd\u673a\u5668\u5b66\u4e60\u63a8\u7406\u3001\u8bad\u7ec3\u52a0\u901f\u65b9\u6848\\nONNX \u8fd0\u884c\u65f6[\u63d0\u4ea4\u4e86](https://github.com/microsoft/onnxruntime/pull/17937)\\nLoongArch \u5411\u91cf\u4f18\u5316\u3002\\n\uff08\u611f\u8c22 mengqinggang \u6295\u9012\u65b0\u95fb\u7ebf\u7d22\uff01\uff09\\n\\n\u524d\u4e00\u6bb5\u65f6\u95f4\uff0cDebian \u90ae\u4ef6\u5217\u8868\u7ba1\u7406\u5458[\u5b8c\u6210\u4e86](https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1023585#87)\\nDebian LoongArch port \u90ae\u4ef6\u5217\u8868\u7684\u521b\u5efa\u64cd\u4f5c\u3002\\n\u540e\u7eed\u53ef\u4ee5\u5728[\u8fd9\u91cc](https://lists.debian.org/debian-loongarch/)\u8ba2\u9605\u3001\u770b\u90ae\u4ef6\u5f52\u6863\u4e86\u3002\\n\uff08\u611f\u8c22 [SnowNF](https://github.com/SnowNF) \u6295\u9012\u65b0\u95fb\u7ebf\u7d22\uff01\uff09\\n\\n## \u5f20\u8d34\u680f\\n\\n\u672c\u680f\u76ee\u53ef\u4f9b\u5f20\u8d34\u516c\u76ca\u6027\u8d28\u7684\u5404\u79cd\u4fe1\u606f\u3002\\n\\n* \u53cb\u60c5\u6269\u6563\uff1a[\u5b89\u540c\u5f00\u6e90\u793e\u533a\uff08AOSC\uff09][aosc]\u7684\u9f99\u67b6\u6784\u79fb\u690d\u4e3b\u7ebf\u5316\u5de5\u4f5c\u300c\u5408\u9f99\u300d\u4ecd\u5728\u5982\u706b\u5982\u837c\u8fdb\u884c\u4e2d\uff0c\\n \u6b64\u5de5\u4f5c\u5b8c\u6210\u540e\u9f99\u67b6\u6784\u5c06\u5347\u683c\u4e3a AOSC OS \u7684 Tier 1 \u67b6\u6784\u3002\\n \u6b22\u8fce\u540c\u5b66\u4eec\u8bd5\u7528\u3001\u53cd\u9988\uff0c\u4e5f\u6b22\u8fce\u6709\u5fd7\u4e4b\u58eb\u4e00\u540c\u52a0\u5165\uff08\u6c9f\u901a\u6e20\u9053\u8be6\u89c1 AOSC \u7f51\u7ad9\u76f8\u5173\u680f\u76ee\uff09\u3002\\n* \u672c\u5468\u62a5[\u6301\u7eed\u63a5\u53d7\u7f51\u53cb\u6295\u7a3f][call-for-submissions]\u3002\u6b22\u8fce\u6765\u4e0a\u6e38\u5750\u5750\uff01\\n\\n[aosc]: https://aosc.io\\n[call-for-submissions]: https://github.com/loongson-community/areweloongyet/issues/16"},{"id":"this-week-in-loongarch-20","metadata":{"permalink":"/newsletter/this-week-in-loongarch-20","editUrl":"https://github.com/loongson-community/areweloongyet/newsletter/2023-10-16-this-week-in-loongarch-20.md","source":"@site/newsletter/2023-10-16-this-week-in-loongarch-20.md","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 20 \u671f","description":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01","date":"2023-10-16T10:27:58.000Z","formattedDate":"2023\u5e7410\u670816\u65e5","tags":[{"label":"\u6bcf\u5468\u4e00\u9f99","permalink":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99"}],"readingTime":7.51,"hasTruncateMarker":true,"authors":[{"name":"WANG Xuerui","title":"\ud83d\udc32\u9f99\u95e8\u5ba2\u6808\u6253\u6742\u7684","url":"https://github.com/xen0n","imageURL":"https://github.com/xen0n.png","key":"xen0n"}],"frontMatter":{"slug":"this-week-in-loongarch-20","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 20 \u671f","authors":["xen0n"],"date":"2023-10-16T10:27:58.000Z","tags":["\u6bcf\u5468\u4e00\u9f99"]},"unlisted":false,"prevItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 21 \u671f","permalink":"/newsletter/this-week-in-loongarch-21"},"nextItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 19 \u671f","permalink":"/newsletter/this-week-in-loongarch-19"}},"content":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01\\n\\n\x3c!-- truncate --\x3e\\n\\n\u5982\u65e0\u7279\u522b\u8bf4\u660e\uff0c\u6587\u4e2d\u63d0\u53ca\u7684\u65e5\u671f\u3001\u65f6\u95f4\u90fd\u4e3a\u5317\u4eac\u65f6\u95f4\uff08UTC+8\uff09\u3002\\n\\n## \u8981\u95fb\u901f\u9012\\n\\n\u793e\u533a\u4f19\u4f34 jiegec \u5b8c\u6210\u4e86\u9f99\u82af\u4e8c\u8fdb\u5236\u7ffb\u8bd1\uff08LBT\uff09\\n\u6269\u5c55\u7684\u89e3\u6790\u5de5\u4f5c\uff0c[\u6574\u7406\u4e86\u4e00\u4efd\u53c2\u8003\u6587\u6863](https://github.com/jiegec/la-inst/blob/master/LBT.md)\uff01\\n\u7528\u5230\u7684\u5b9e\u9a8c\u4ee3\u7801\u5c31\u9644\u5728\u6587\u6863\u65c1\u8fb9\u3002\\n\u8fd9\u610f\u5473\u7740 QEMU \u7b49\u76f8\u5173\u9879\u76ee\u4e0d\u4e45\u5c31\u80fd\u7528\u4e0a LBT \u7279\u8272\u6307\u4ee4\uff0c\\n\u4e0d\u7528\u82e6\u54c8\u54c8\u7b49\u300a\u9f99\u82af\u67b6\u6784\u53c2\u8003\u624b\u518c\u300b\u5377\u4e09\u516c\u5e03\u4e86\u3002\\n\\n\u51e0\u5468\u4ee5\u6765\uff0c[\u5b89\u540c\u5f00\u6e90\u793e\u533a][aosc]\uff08AOSC\uff09\\n\u7684\u670b\u53cb\u4eec\u9646\u7eed\u62ff\u5230\u4e86 LoongArch \u786c\u4ef6\uff0c\u505a\u4e86\u8bb8\u591a\u6d4b\u8bd5\u9a8c\u8bc1\u5de5\u4f5c\uff0c\\n\u5341\u5206\u8f9b\u82e6\u3002\\n\u672c\u671f\u7684 AOSC \u793e\u520a[\u300a\u5b89\u8bb0\u51b0\u5ba4\u30fb\u5341\u6708\u4e0a\u300b](https://github.com/AOSC-Dev/newsroom/blob/76c6dc1571cba2af74673b51df70f5f3d43ed1a0/coffee-break/20231014/zh_CN.md)\u8bb0\u5f55\u4e86\\n:ta: \u4eec\u7684\u5de5\u4f5c\u6210\u679c\uff0c\u63a8\u8350\u9605\u8bfb\u3002(An English version [is also available](https://github.com/AOSC-Dev/newsroom/blob/76c6dc1571cba2af74673b51df70f5f3d43ed1a0/coffee-break/20231014/en.md).)\\n\\n\u6b64\u5916\uff0c\u300a\u54b1\u9f99\u4e86\u5417\uff1f\u300b\u540e\u7eed\u4e5f\u5c06\u4e0e AOSC \u7b49\u793e\u533a\u670b\u53cb\u4eec\u4e00\u9053\uff0c\\n\u6269\u5145\u9605\u8bfb\u6750\u6599\u3001\u4f18\u5316\u4fe1\u606f\u67b6\u6784\uff0c\u4ee5\u671f\u66f4\u597d\u670d\u52a1\u8bfb\u8005\u7fa4\u4f53\u3002\\n\u656c\u8bf7\u671f\u5f85\uff08\u4e5f[\u671f\u5f85\u60a8\u7684\u53c2\u4e0e](https://github.com/loongson-community/areweloongyet)\uff09\uff01\\n\\n## \u5148\u300c\u9a6c\u300d\u518d\u770b\\n\\n\u672c\u680f\u76ee\u7684\u5185\u5bb9\u5177\u6709\u4e00\u5b9a\u5ef6\u7eed\u6027\uff0c\u5c06\u6301\u7eed\u8ffd\u8e2a\u62a5\u9053 LoongArch® \u9886\u57df\u7684\u91cd\u8981\u6216\u957f\u671f\u9879\u76ee\uff08\u5751\uff09\u3002\\n\\n### Linux\\n\\n\u5728\u89e3\u6790 LBT \u6269\u5c55\u7684\u8fc7\u7a0b\u4e2d\uff0cjiegec [\u53d1\u73b0\u4e86](https://bugzilla.kernel.org/show_bug.cgi?id=218012)\u4e3b\u7ebf\u5185\u6838\u5bf9\\nLBT x87 \u6d6e\u70b9\u6808\u9876\u6307\u9488\u5bc4\u5b58\u5668 `FTOP` \u7684\u4fdd\u5b58\u6062\u590d\u6709\u8bef\u3002\\n\u7531\u4e8e\u76f4\u5230\u672c\u5468\u4e3a\u6b62 LBT \u90fd\u5904\u4e8e\u7f3a\u4e4f\u6587\u6863\u7684\u72b6\u6001\uff0c\u4e14\u76ee\u524d\u5df2\u77e5\u552f\u4e00\u4f1a\u5229\u7528 LBT \u7684\u5e94\u7528\u7a0b\u5e8f LATX \u5e76\u672a\u53d7\u5176\u5f71\u54cd\uff0c\u8be5\u95ee\u9898\u4e0d\u4f1a\u5f71\u54cd\u65e5\u5e38\u4f7f\u7528\uff0c\u4f46\u9884\u8ba1\u4e5f\u4f1a\u5728\u6708\u4e2d\u5f97\u5230\u6392\u67e5\u3001\u4fee\u590d\u3002\\n\\n### \u5de5\u5177\u94fe\\n\\n#### gcc\\n\\n10 \u6708 16 \u65e5\uff0cJiahao Xu [\u8d34\u51fa\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-October/633086.html)\u4e24\u7ec4\u5411\u91cf\u64cd\u4f5c\u7684\u9f99\u67b6\u6784\u652f\u6301\uff0c\\n\u4ee5\u53ca\u4e00\u7248\u65b0\u7684\u5411\u91cf\u5316\u6210\u672c\u6a21\u578b\u3002\\n\u8fd9\u4f4d\u540c\u5b66\u5728\u4e0a\u6e38\u4f3c\u4e4e\u662f\u65b0\u9762\u5b54\uff0c\u6b22\u8fce\uff01\\n\\n10 \u6708 12 \u65e5\uff0cLulu Cheng [\u4fee\u6539\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-October/632748.html)\\ngcc \u5bf9\u9f50\u6c47\u7f16\u6307\u4ee4\u7684\u65b9\u5f0f\u3002\\n\u8be5\u53d8\u66f4\u9700\u8981\u914d\u5408 binutils \u7684[\u6b64\u63d0\u4ea4](https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commitdiff;h=1fb3cdd87ec61715a5684925fb6d6a6cf53bb97c)\u624d\u80fd\u5de5\u4f5c\u3002\\n\\n10 \u6708 11 \u65e5\uff0cChenghui Pan [\u4fee\u590d\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-October/632607.html)\u4e00\u4f8b\u5411\u91cf\u5316\u9020\u6210\u7684\u5d29\u6e83\\n\uff08\u5b66\u540d ICE\uff1a\u5185\u90e8\u7f16\u8bd1\u5668\u9519\u8bef\uff09\u3002\\n\\n#### LLVM\\n\\n10 \u6708 12 \u65e5\uff0c\u793e\u533a\u7684 Xinmudotmoe \u540c\u5b66\u5728\u6298\u817e LoongArch \u4e0a ROCm \u7684\u8fc7\u7a0b\u4e2d\uff0c\\n\u7ed9 LoongArch LLVM [\u6dfb\u52a0\u4e86](https://github.com/llvm/llvm-project/pull/68851)\\n16 \u4f4d\uff08\u534a\u7cbe\u5ea6\uff09\u53ca 128 \u4f4d\uff08\u56db\u7cbe\u5ea6\uff09\u6d6e\u70b9\u64cd\u4f5c\u7684\u6a21\u62df\u652f\u6301\u3002\\n\u6309\u7167\u516c\u5f00\u4fe1\u606f\uff0c\u9f99\u67b6\u6784\u6ca1\u6709 16 \u4f4d\u6216 128 \u4f4d\u6d6e\u70b9\u64cd\u4f5c\u7684\u539f\u751f\u652f\u6301\uff1b\\n\u4e3a\u4e86\u80fd\u8dd1\u66f4\u591a\u7a0b\u5e8f\uff0c\u5373\u4fbf\u6a21\u62df\u64cd\u4f5c\u6027\u80fd\u80af\u5b9a\u4e0d\u5982\u771f\u5b9e\u786c\u4ef6\u652f\u6301\uff0c\u5bf9\u751f\u6001\u6574\u4f53\u800c\u8a00\u4e5f\u503c\u4e86\u3002\\n\\n:::info \u7b14\u8005\u731c\u6d4b\\n\u5927\u6982\u7387 LoongArch \u66fe\u7ecf\u81f3\u5c11\u652f\u6301\u8fc7\u8fd9\u4e24\u79cd\u6d6e\u70b9\u683c\u5f0f\u4e4b\u4e00\uff0c\u4f46\u5728\u516c\u5f00\u524d\u88ab\u6252\u6389\u4e86\u3002\\n\\n\u53ef\u4ee5\u4ece\u6d6e\u70b9\u6307\u4ee4\u7684\u7f16\u7801\u4e0a\u770b\u51fa\u7aef\u502a\uff1a\u8868\u793a\u6d6e\u70b9\u683c\u5f0f\u7684\u90a3\u90e8\u5206\u64cd\u4f5c\u7801\uff0c\\n\u5355\u7cbe\u5ea6\u662f `01` \u53cc\u7cbe\u5ea6\u662f `10`\uff0c\u56e0\u6b64\u8fd9\u4e2a\u4f4d\u57df\u80af\u5b9a\u5bbd 2 \u4f4d\uff1b\\n\u4f46\u76f8\u5e94\u4f4d\u53d6 `00` \u6216 `11` \u7684\u6307\u4ee4\u5c3d\u4ed8\u9619\u5982\u3002\\n\u5982\u679c\u9700\u6c42\u4e0a\u53ea\u8981\u652f\u6301 2 \u79cd\u683c\u5f0f\u5373\u53ef\uff08\u5373\u6700\u5e38\u89c1\u7684\u5355\u7cbe\u5ea6\u3001\u53cc\u7cbe\u5ea6\u6d6e\u70b9\uff09\uff0c\u591a\u7684\u683c\u5f0f\u4ee5\u540e\u4e5f\u4e0d\u8981\uff0c\\n\u90a3\u4e48\u8868\u793a\u8fd9\u4e2a\u4fe1\u606f\u53ea\u8981 1 \u4f4d\u5c31\u591f\u4e86\u3002\\n\\n\u56e0\u6b64\u5728\u300c\u62c9\u6e05\u5355\u300d\u51b3\u5b9a\u6307\u4ee4\u96c6\u5927\u65b9\u5411\u7684\u9636\u6bb5\uff0c\u8bbe\u8ba1\u5e08\u5fc5\u7136\u8003\u8651\u4e86\u5176\u4ed6\u6d6e\u70b9\u683c\u5f0f\u4e14\u4e3a\u5176\u9884\u7559\u4e86\u7f16\u7801\u7a7a\u95f4\uff0c\\n\u800c\u662f\u51fa\u4e8e\u5176\u4ed6\u539f\u56e0\u624d\u672a\u5c06\u5176\u5305\u542b\u8fdb LoongArch v1.00\u3002\\n\u8fd9\u539f\u56e0\u53ef\u80fd\u662f FP16\u3001FP128 \u76ee\u524d\u5f88\u5c11\u7528\u5230\uff0c\u4e14\u673a\u5668\u5b66\u4e60\u573a\u666f\u5f80\u5f80\u90fd\u7528 FP16\\n\u7684\u53d8\u4f53 BF16\uff0c\u56e0\u6b64\u5982\u679c\u7b2c\u4e00\u65f6\u95f4\u5ba3\u79f0\u652f\u6301\uff0c\u5c06\u9650\u5236\u540e\u7eed\u7684\u8fed\u4ee3\u7a7a\u95f4\uff1b\\n\u5982\u679c\u52a0\u5165\u4e86\u652f\u6301\u5374\u51e0\u5e74\u90fd\u635e\u4e0d\u7740\u7528\uff0c\u66f4\u662f\u5f97\u4e0d\u507f\u5931\u3002\\n\u76f8\u53cd\uff0c\u76ee\u524d\u662f\u5c06\u4e24\u79cd\u683c\u5f0f\u7f16\u7801\u6682\u65f6\u4fdd\u7559\uff1a\u5982\u679c\u6709\u671d\u4e00\u65e5\u9700\u8981\u91cd\u65b0\u52a0\u5165\u5b83\u4eec\uff08\u6216\u8005\u522b\u7684\u683c\u5f0f\uff09\uff0c\u6307\u4ee4\u7f16\u7801\u4fbf\u80fd\u7ef4\u6301\u300c\u597d\u770b\u300d\u3002\\n\u300c\u597d\u770b\u300d\u4e0d\u5149\u662f\u770b\u8d77\u6765\u8212\u670d\uff0c\u8bd1\u7801\u5668\u7684\u5b9e\u73b0\u4e5f\u80fd\u7b80\u5355\u70b9\uff1b\\n\u8fd9\u65b9\u9762\u505a\u4e2a\u300c\u989c\u63a7\u300d\u5927\u6982\u6ca1\u6bdb\u75c5\uff01\\n:::\\n\\n\u540c\u4e00\u5929\uff0cheiher \u5e2e\u7b14\u8005\u628a\u5148\u524d\u505a\u4e86\u4e00\u5927\u534a\u5374\u6ca1\u7cbe\u529b\u8ddf\u8fdb\u7684 3A6000 `DBAR`\\n\u4f18\u5316\u8865\u4e01\u5b8c\u5584\u4e86\uff0c[\u5408\u5e76\u8fdb\u4e86](https://github.com/llvm/llvm-project/pull/68787)\u4e3b\u7ebf\u3002\\n\\n10 \u6708 11 \u65e5\uff0cheiher [\u4f18\u5316\u4e86](https://github.com/llvm/llvm-project/pull/67391)\u539f\u5b50\u64cd\u4f5c\u7684\u4ee3\u7801\u751f\u6210\u3002\\n\u5177\u4f53\u6765\u8bf4\u662f\u53bb\u6389\u4e86 `LL` \u4e4b\u524d\u4ee5\u53ca `LL/SC` \u4e4b\u95f4\u4e0d\u5fc5\u8981\u7684\u5185\u5b58\u6805\u969c\uff0c\\n\u8fd8\u4fee\u590d\u4e86 acquire \u8bed\u4e49\u3002\\n\\n### \u53d1\u884c\u7248\\n\\nDebian \u4e0a\u6e38\u5de5\u4f5c\u4e5f\u6709\u6240\u8fdb\u5c55\uff1a`binutils` \u5305\u7684\u6539\u52a8[\u83b7\u5408\u5e76](https://tracker.debian.org/news/1470074/accepted-binutils-2415020231010-1-source-amd64-all-into-experimental/)\uff0c`glibc`\\n\u5305\u7684[\u6539\u52a8](https://salsa.debian.org/glibc-team/glibc/-/commit/859b3e39e09a57f0735f04514d2b574f80c3926c)\u4e5f[\u5f85\u4e0a\u4f20](https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1053717)\u3002\\n\u8fd9\u610f\u5473\u7740\u9700\u8981 LoongArch \u65b9\u9762\u5355\u72ec\u7ef4\u62a4\u3001\u624b\u5de5\u5904\u7406\u7684\u5305\u8fdb\u4e00\u6b65\u51cf\u5c11\u4e86\u3002\\n\uff08\u611f\u8c22 Revy \u6295\u9012\u65b0\u95fb\u7ebf\u7d22\u3002\uff09\\n\\n## \u6742\u95fb\u64ad\u62a5\\n\\n\\n10 \u6708 10 \u65e5\uff0c\u793e\u533a\u540c\u5b66 Robin Lee \u505a\u7684 FreeDesktop SDK \u9f99\u67b6\u6784\u521d\u6b65\u9002\u914d[\u83b7\u5408\u5e76](https://gitlab.com/freedesktop-sdk/freedesktop-sdk/-/merge_requests/12203)\u3002\\nFreeDesktop SDK \u662f Flatpak \u6253\u5305\u65b9\u6848\u7684\u57fa\u7840\u8fd0\u884c\u65f6\u3002\\n\\nAOSC \u793e\u533a\u7684 LoongArch \u540c\u597d Tianhao Chai \u8fd1\u65e5\u7ed9 Mellanox \u7f51\u5361[^\u6ce8\u4e00]\u7684\u56fa\u4ef6\u5de5\u5177 `mstflint`\\n[\u63d0\u4ea4\u4e86](https://github.com/Mellanox/mstflint/pull/836) LoongArch \u9002\u914d\u3002\\n\u8fd9\u4e9b\u786c\u4ef6\u76ee\u524d\u770b\u6765\u5728 LoongArch \u7cfb\u7edf\u4e0a\u90fd\u80fd\u826f\u597d\u5de5\u4f5c\u3002\\n\\n[^\u6ce8\u4e00]: Mellanox\u8fc8\u7edc\u601d\uff0c\u662f InfiniBand \u7f51\u5361\u7684\u4e3b\u8981\u4f9b\u5e94\u5546\u4e4b\u4e00\uff0c\\n\u51e0\u5e74\u524d\u5df2\u4e3a NVIDIA\u82f1\u4f1f\u8fbe\u6240\u6536\u8d2d\u3002\\n\u5728\u5bb6\u5ead\u9ad8\u6027\u80fd\u8ba1\u7b97\u3001NAS \u7b49\u9886\u57df\uff0c\u6709\u4e0d\u5c11\u7528\u6237\u9009\u62e9\u8d2d\u4e70\u4e8c\u624b Mellanox \u786c\u4ef6\u3002\\n\\nSlackware \u4e2d\u6587\u793e\u533a\u540c\u5b66\u3001Slackware \u9f99\u67b6\u6784\u79fb\u690d\u7ef4\u62a4\u8005 Shi Pujin \u63d0\u9192\uff1aSlackware\\n\u4e2d\u6587\u793e\u533a\u7684\u5b98\u7f51\u5730\u5740[\u53d8\u66f4\u4e86](http://www.slackwarecn.cn)\uff0c\u89c1\u94fe\u63a5\u76ee\u6807\u3002\\n\uff08\u4ece\u6258\u7ba1\u57df\u540d\u53d8\u4e3a\u72ec\u7acb\u57df\u540d\u4e86\uff0c\u4f46\u4ecd\u7136\u6258\u7ba1\u5728 GitHub Pages\u3002\uff09\\n\\n\\n## \u5f20\u8d34\u680f\\n\\n\u672c\u680f\u76ee\u53ef\u4f9b\u5f20\u8d34\u516c\u76ca\u6027\u8d28\u7684\u5404\u79cd\u4fe1\u606f\u3002\\n\\n* \u53cb\u60c5\u6269\u6563\uff1a[\u5b89\u540c\u5f00\u6e90\u793e\u533a\uff08AOSC\uff09][aosc]\u7684\u9f99\u67b6\u6784\u79fb\u690d\u4e3b\u7ebf\u5316\u5de5\u4f5c\u300c\u5408\u9f99\u300d\u4ecd\u5728\u5982\u706b\u5982\u837c\u8fdb\u884c\u4e2d\uff0c\\n \u6b64\u5de5\u4f5c\u5b8c\u6210\u540e\u9f99\u67b6\u6784\u5c06\u5347\u683c\u4e3a AOSC OS \u7684 Tier 1 \u67b6\u6784\u3002\\n \u6b22\u8fce\u540c\u5b66\u4eec\u8bd5\u7528\u3001\u53cd\u9988\uff0c\u4e5f\u6b22\u8fce\u6709\u5fd7\u4e4b\u58eb\u4e00\u540c\u52a0\u5165\u3002\\n* \u672c\u5468\u62a5[\u6301\u7eed\u63a5\u53d7\u7f51\u53cb\u6295\u7a3f][call-for-submissions]\u3002\u6b22\u8fce\u6765\u4e0a\u6e38\u5750\u5750\uff01\\n\\n[aosc]: https://aosc.io\\n[call-for-submissions]: https://github.com/loongson-community/areweloongyet/issues/16"},{"id":"this-week-in-loongarch-19","metadata":{"permalink":"/newsletter/this-week-in-loongarch-19","editUrl":"https://github.com/loongson-community/areweloongyet/newsletter/2023-10-09-this-week-in-loongarch-19.md","source":"@site/newsletter/2023-10-09-this-week-in-loongarch-19.md","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 19 \u671f","description":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01","date":"2023-10-09T09:58:10.000Z","formattedDate":"2023\u5e7410\u67089\u65e5","tags":[{"label":"\u6bcf\u5468\u4e00\u9f99","permalink":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99"}],"readingTime":7.015,"hasTruncateMarker":true,"authors":[{"name":"WANG Xuerui","title":"\ud83d\udc32\u9f99\u95e8\u5ba2\u6808\u6253\u6742\u7684","url":"https://github.com/xen0n","imageURL":"https://github.com/xen0n.png","key":"xen0n"}],"frontMatter":{"slug":"this-week-in-loongarch-19","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 19 \u671f","authors":["xen0n"],"date":"2023-10-09T09:58:10.000Z","tags":["\u6bcf\u5468\u4e00\u9f99"]},"unlisted":false,"prevItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 20 \u671f","permalink":"/newsletter/this-week-in-loongarch-20"},"nextItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 18 \u671f","permalink":"/newsletter/this-week-in-loongarch-18"}},"content":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01\\n\\n\x3c!-- truncate --\x3e\\n\\n\u5982\u65e0\u7279\u522b\u8bf4\u660e\uff0c\u6587\u4e2d\u63d0\u53ca\u7684\u65e5\u671f\u3001\u65f6\u95f4\u90fd\u4e3a\u5317\u4eac\u65f6\u95f4\uff08UTC+8\uff09\u3002\\n\\n## \u5148\u300c\u9a6c\u300d\u518d\u770b\\n\\n\u672c\u680f\u76ee\u7684\u5185\u5bb9\u5177\u6709\u4e00\u5b9a\u5ef6\u7eed\u6027\uff0c\u5c06\u6301\u7eed\u8ffd\u8e2a\u62a5\u9053 LoongArch® \u9886\u57df\u7684\u91cd\u8981\u6216\u957f\u671f\u9879\u76ee\uff08\u5751\uff09\u3002\\n\\n### Linux\\n\\n10 \u6708 8 \u65e5\uff0cAOSC \u5f00\u53d1\u8005 Icenowy Zheng \u5728\u6392\u67e5 AMD \u663e\u5361\u7a33\u5b9a\u6027\u95ee\u9898\u8fc7\u7a0b\u4e2d\uff0c\\n\u53d1\u73b0\u4ee5\u524d\u4e3a\u70b9\u4eae RDNA2 \u800c\u5bf9 3A+7A \u7cfb\u7edf\u7684\u5199\u5408\u5e76\u95ee\u9898\u89c4\u907f\u4e0d\u5b8c\u5168\uff0c\\n\u6545\u4eb2\u81ea[\u5b8c\u5584\u4e86](https://lore.kernel.org/loongarch/20231009042841.635366-1-uwu@icenowy.me/)\u8fd9\u90e8\u5206\u903b\u8f91\u3002\\n\u5b9e\u6d4b\u6253\u4e0a\u6b64\u8865\u4e01\u540e\uff0c\u76f8\u5173\u7684\u7eb9\u7406\u635f\u574f\u95ee\u9898\uff08\u90e8\u5206\u82b1\u5c4f\uff0c\u620f\u79f0\u300c\u5b57\u8282\u8df3\u52a8\u300d\uff09\u4ee5\u53ca AMD Oland \u5fae\u67b6\u6784 GPU\\n\u5728 `amdgpu` \u5185\u6838\u6a21\u5757\u9a71\u52a8\u4e0b\u7684 ring timeout \u95ee\u9898\u90fd\u89e3\u51b3\u4e86\uff0c\u7a33\u5b9a\u6027\u4e5f\u6709\u90e8\u5206\u6539\u5584\u3002\\n\u8ba9\u6211\u4eec\u6b22\u8fce :ta: \u7684\u9996\u4e2a LoongArch \u5185\u6838\u8865\u4e01\uff01\\n\\n\u540c\u4e00\u5929\uff0cBibo Mao \u628a\u4ed6\u7684 vDSO & \u6808\u5185\u5b58\u5e03\u5c40\u4f18\u5316\u8865\u4e01[\u8fed\u4ee3\u5230\u4e86](https://lore.kernel.org/loongarch/20231008012036.1415883-1-maobibo@loongson.cn/)\u7b2c 3 \u7248\u3002\\n\u4ed6\u5b66 x86 \u8ba9 vDSO \u548c\u6808\u5171\u4eab\u540c\u4e00\u6761 PMD\uff0c\u800c\u5f97\u4ee5\u4ece\u6bcf\u4e2a\u7ebf\u7a0b\u7701\u51fa\u4e00\u9875\uff1b\u8fd8\u505a\u4e86\u5176\u4ed6\u5c0f\u4f18\u5316\u3002\\n\\n10 \u6708 7 \u65e5\uff0cTianrui Zhao [\u4fee\u590d\u4e86](https://lore.kernel.org/loongarch/9f7931dd-3c0e-4bc2-988e-1fb3549e440e@infradead.org/T/#t)\u4e0a\u671f\u63d0\u5230\u7684\\nKVM \u4ee3\u7801\u5728\u7279\u5b9a\u5185\u6838\u914d\u7f6e\u4e0b\u7f16\u8bd1\u5931\u8d25\u7684\u95ee\u9898\uff0cRandy \u6d4b\u4e86\u80fd\u7528\u3002\\n\\n10 \u6708 6 \u65e5\uff0c\u4e0a\u6e38\u5f00\u53d1\u8005 Deepak R Varma \u5728\u505a\u5b9e\u65f6\u5185\u6838\u6539\u9020\uff0c[\u6765\u95ee](https://lore.kernel.org/loongarch/ZSFWa44FTi48hDyE@runicha.com/T/#t)\u4e00\u4e2a\u51fd\u6570\u6709\u6ca1\u6709\u5728\u7528\uff0c\\n\u91cc\u5934\u7684\u5185\u5b58\u6620\u5c04\u64cd\u4f5c\u80fd\u4e0d\u80fd\u6362\u6210\u65b0\u52a0\u7684\u3001\u5bf9\u5b9e\u65f6\u8c03\u5ea6\u66f4\u53cb\u597d\u7684\u79cd\u7c7b\uff1b\\n\u88ab\u95ee\u5230\u7684\u51fd\u6570 `copy_user_highpage` \u53ea\u5bf9 32 \u4f4d\u5185\u6838\u6709\u7528\uff0c\\n\u56e0\u6b64\u5982\u679c\u6ca1\u6253\u7b97\u652f\u6301\u7eaf 32 \u4f4d\u7cfb\u7edf\u90a3\u4e48\u5176\u5b9e\u6700\u597d\u628a\u5b83\u5220\u6389\u3002Huacai Chen \u56de\u590d\u8bf4\u300c\u8fd1\u671f\u300d\u5c31\u4f1a\u52a0\u5165 LA32 \u652f\u6301\uff0c\\n\u7136\u540e\u987a\u624b\u628a Deepak \u7684\u5efa\u8bae\u5199\u6210\u8865\u4e01[\u8d34\u51fa\u6765\u4e86](https://lore.kernel.org/loongarch/20231007095229.235551-1-chenhuacai@loongson.cn/)\u3002Deepak \u5bf9\u6b64\u8868\u793a\u611f\u8c22\uff0c\\n\u5e76\u4e14 :ta: \u4ecd\u7136\u6253\u7b97\u51c6\u5907\u4e00\u4e2a LoongArch \u7f16\u8bd1\u73af\u5883\u6765\u5e2e\u5fd9\u6d4b\u8bd5\u3002\\n\u6211\u4eec\u4e5f\u611f\u8c22 :ta: \u7684\u5e2e\u5fd9\uff01\\n\\n10 \u6708 5 \u65e5\uff0cHuacai Chen \u5411 KVM \u5b50\u7cfb\u7edf\u7ef4\u62a4\u8005[\u53d1\u9001\u4e86](https://lore.kernel.org/kvm/20231005091825.3207300-1-chenhuacai@loongson.cn/)\u589e\u52a0\u9f99\u67b6\u6784 KVM \u652f\u6301\u7684 PR\u62c9\u53d6\u8bf7\u6c42\u3002\\n\u8ddd\u79bb\u4e3b\u7ebf\u4e00\u6b65\u4e4b\u9065\uff01\\n\\n### \u5de5\u5177\u94fe\\n\\n#### gcc\\n\\n10 \u6708 4 \u65e5\uff0c\u6765\u81ea\u5fb7\u56fd [Ostwestfalen-Lippe](https://en.wikipedia.org/wiki/Ostwestfalen-Lippe)\\nLinux \u7528\u6237\u7ec4\u7684\u793e\u533a\u540c\u5b66 Jan-Benedict Glaw\\n[\u62a5\u544a\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-October/631933.html)\u9f99\u67b6\u6784\\ngcc \u6784\u5efa\u9519\u8bef\u7684\u95ee\u9898\u3002\\n\u7ecf\u8fc7\u4e00\u4e9b\u8ba8\u8bba\u7814\u7a76\uff0c10 \u6708 7 \u65e5 Yang Yujie\\n[\u8d34\u51fa\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-October/632210.html)\u4e00\u79cd\u4fee\u590d\u65b9\u6cd5\uff0c[\u770b\u4e0a\u53bb\u884c](https://gcc.gnu.org/pipermail/gcc-patches/2023-October/632256.html)\u3002\\n\\n10 \u6708 3 \u65e5 Xi Ruoyao \u8ddf\u8fdb\u4e86\u4e00\u9879\u4e0a\u6e38\u91cd\u6784\uff1a\\n\u5c06\u7b26\u53f7\u62f7\u8d1d\u64cd\u4f5c\u7684\u8868\u793a\u65b9\u5f0f\u4ece\u539f\u5148\u7684\u81ea\u5b9a\u4e49 RTL\u5bc4\u5b58\u5668\u4f20\u8f93\u8bed\u8a00 \u6307\u4ee4[\u6539\u4e3a\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-October/631822.html)\u65b0\u589e\u7684\u901a\u7528\u5199\u6cd5\u3002\\n\\n#### binutils\\n\\n10 \u6708 5 \u65e5\uff0cXi Ruoyao \u5728\u6298\u817e\u8fc7\u7a0b\u4e2d\uff08\u8be6\u89c1\u4e0a\u671f\uff09\u53d1\u73b0 binutils \u5f53\u524d\u7684\u9f99\u67b6\u6784\\nlinker relaxation \u5de5\u5e8f\u4e0d\u4f1a relax \u4efb\u4f55\u5171\u4eab\u5e93\u7684\u4ee3\u7801\u3002\\n\u73b0\u4ee3 Linux \u53d1\u884c\u7248\u4e2d\uff0c\u5927\u591a\u6570\u88ab\u6267\u884c\u5230\u7684\u4ee3\u7801\u90fd\u4f4d\u4e8e\u5171\u4eab\u5e93\uff0c\u56e0\u6b64\u76ee\u524d\u7684\u884c\u4e3a\u80af\u5b9a\u8ba9\\nlinker relaxation \u7684\u4f5c\u7528\u6253\u4e0a\u4e86\u76f8\u5f53\u5927\u7684\u95ee\u53f7\uff1b\\n\\n\u975e\u4f46\u5982\u6b64\uff0c\u5f53\u524d\u7684\u5b9e\u73b0\u65b9\u5f0f\u8fd8\u6709\u6b63\u786e\u6027\u95ee\u9898\uff1a\u5982 Icenowy Zheng \u5728\u540c\u4e00\u5929\u6298\u817e libglvnd\\n\u65f6[\u6240\u53d1\u73b0\u7684](https://sourceware.org/bugzilla/show_bug.cgi?id=30944)\uff0c\\n\u76ee\u524d LoongArch \u6c47\u7f16\u4e2d\u7684\u5bf9\u9f50\u6307\u793a\u5df2\u7ecf\u6539\u4e3a\u501f\u7528 relaxation \u57fa\u7840\u8bbe\u65bd\u7684\u65b9\u5f0f\u5b9e\u73b0\u4e86\\n\uff08\u4ee5 `R_LARCH_ALIGN` \u7684\u5f62\u5f0f\u5411 relaxation \u5de5\u5e8f\u4f20\u9012\u4fe1\u606f\uff09\uff1b\\n\u800c\u5982\u679c\u4e0d relax\uff08\u4f8b\u5982\uff0c\u56e0\u4e3a\u662f\u5171\u4eab\u5e93\uff09\u5219\u8fd9\u4e9b\u4e0d\u7ba1 re- \u4e0d relax\\n\u90fd\u5e94\u8be5\u9075\u5b88\u7684\u5bf9\u9f50\u6307\u793a\u5c31\u4f1a\u88ab\u9519\u8bef\u65e0\u89c6\uff0c\u4f7f\u5f97\u751f\u6210\u4ee3\u7801\u7684\u5e03\u5c40\u9519\u8bef\uff0c\\n\u6700\u7ec8\u5bfc\u81f4\u8fd0\u884c\u65f6\u5d29\u6e83\u4e4b\u7c7b\u96be\u4ee5\u6392\u67e5\u7684\u4e0d\u597d\u7ed3\u679c\u3002\\n\u7b97\u4e0a\u4e00\u4e24\u4e2a\u6708\u524d\u540c\u6837\u88ab\u5751\u5230\u4f46\u5341\u5206\u62b1\u6b49\u672a\u80fd\u53ca\u65f6\u4e00\u53e5\u8bdd\u62a5\u51fa bug \u7684\u7b14\u8005\uff0c\\n\u81f3\u5c11\u5df2\u7ecf\u6709 3 \u4eba\u5171\u8ba1\u51e0\u4e2a\u751a\u81f3\u5341\u51e0\u5c0f\u65f6\u7684\u5b9d\u8d35\u4e1a\u4f59\u65f6\u95f4\u4ea4\u5f85\u5728\u8fd9\u4e86\u3002\\n\\n\u7531\u4e8e\u62a5\u544a\u95ee\u9898\u65f6\u6b63\u503c\u5047\u671f\uff0c\u76ee\u524d\u6682\u672a\u6709\u53cd\u9988\uff0c\u4f46\u6211\u4eec\u9884\u671f\u9f99\u82af\u5de5\u5177\u94fe\u7684\u540c\u5b66\u5c06\u5f88\u5feb\u5f97\u77e5\u5e76\u7740\u624b\u914d\u5408\u4fee\u590d\u6b64\u4e8b\u3002\\n\\n## \u6742\u95fb\u64ad\u62a5\\n\\n\u5468\u62a5\u7b2c 17 \u671f\u62a5\u9053\u8fc7\u7684 D \u8bed\u8a00\u8fd0\u884c\u65f6\u9002\u914d\u5de5\u4f5c\u5df2\u7ecf\u5728 10 \u6708 5 \u65e5[\u5408\u5e76\u4e86](https://github.com/dlang/dmd/pull/15628)\u3002\\n\u606d\u559c :tada:\uff01\\n\\n\\n## \u793e\u533a\u6574\u6d3b:\u513f:\\n\\n\u672c\u680f\u76ee\u63a5\u53d7\u4efb\u4f55\u7f51\u53cb\u7684\u6295\u7a3f\uff0c\u53ea\u8981\u5185\u5bb9\u4e0e LoongArch® \u6709\u5173\uff0c\u5e76\u53ef\u4ee5\u4e3a\u8bfb\u8005\u5e26\u6765\u4ef7\u503c\uff0c\\n\u65e0\u8bba\u4e25\u8083\u8d21\u732e\uff08\u6574\u7684\u5927\u6d3b:\u513f:\uff09\u6216\u662f\u535a\u541b\u4e00\u7b11\u90fd\u4e00\u6982\u6b22\u8fce\uff01\\n\\n10 \u6708 4 \u65e5\uff0cjiegec [\u53c8\u53d1\u73b0\u4e86](https://github.com/loongson-community/loongarch-opcodes/issues/1#issuecomment-1746975991) 21 \u6761\u672a\u89c1\u4e8e\u9f99\u67b6\u6784\u624b\u518c\u7684\u795e\u5947\u6307\u4ee4\uff01\\n\u5176\u4e2d\u6709\u4e00\u4e9b\u7591\u4f3c\u662f\u6267\u884c\u66f4\u5feb\u4f46\u7cbe\u5ea6\u66f4\u4f4e\u7684\u6d6e\u70b9\u6c42\u5012\u6570\u64cd\u4f5c\uff0c\u5982\u679c\u505a\u66f4\u591a\u5b9e\u9a8c\u6bd4\u5bf9\u76f8\u5e94\u6709\u6587\u6863\u8bb0\u8f7d\u6307\u4ee4\u7684\u8f93\u51fa\uff0c\u5219\u6709\u671b\u77e5\u6653\u66f4\u591a\u7ec6\u8282\u3002\\n\\n\u6574\u4e2a\u56fd\u5e86\u5047\u671f\uff0cAOSC \u793e\u533a\u90fd\u5728\u6298\u817e AMD \u663e\u5361\u5728\u9f99\u67b6\u6784\u673a\u5668\u4e0a\u7684\u7a33\u5b9a\u6027\u95ee\u9898\uff0c\\n\u9f99\u82af\u5de5\u7a0b\u5e08\u4eec\u4e5f\u79ef\u6781\u914d\u5408\uff0c\u300c\u4e3a\u4eba\u6c11\u505a\u9f99\u82af\u300d\u3002\\n\u4e2d\u56fd\u7684\u540c\u5b66\u8fc7\u7740\u7f8e\u897f\u65f6\u533a\uff0c\u7f8e\u897f\u7684\u540c\u5b66\u8fc7\u7740\u4e2d\u56fd\u65f6\u533a\uff1b\\n\u5728\u5982\u6b64\u7684\u793e\u533a\u534f\u4f5c\u4e0b\uff0c\u76f8\u4fe1\u6b64\u95ee\u9898\u7ec8\u5c06\u5f97\u5230\u89e3\u51b3\uff08\u6216\u51dd\u56fa\u4e3a [Errata \u6587\u6863](/docs/errata)\u7684\u9996\u6279\u8bb0\u8f7d\u4e4b\u4e00 :smiling_imp:\uff09\uff01\\n\\n## \u5f20\u8d34\u680f\\n\\n\u672c\u680f\u76ee\u53ef\u4f9b\u5f20\u8d34\u516c\u76ca\u6027\u8d28\u7684\u5404\u79cd\u4fe1\u606f\u3002\\n\\n* \u53cb\u60c5\u6269\u6563\uff1a[\u5b89\u540c\u5f00\u6e90\u793e\u533a\uff08AOSC\uff09](https://aosc.io)\u7684\u9f99\u67b6\u6784\u79fb\u690d\u4e3b\u7ebf\u5316\u5de5\u4f5c\u300c\u5408\u9f99\u300d\u4ecd\u5728\u5982\u706b\u5982\u837c\u8fdb\u884c\u4e2d\uff0c\\n \u6b64\u5de5\u4f5c\u5b8c\u6210\u540e\u9f99\u67b6\u6784\u5c06\u5347\u683c\u4e3a AOSC OS \u7684 Tier 1 \u67b6\u6784\u3002\\n \u6b22\u8fce\u540c\u5b66\u4eec\u8bd5\u7528\u3001\u53cd\u9988\uff0c\u4e5f\u6b22\u8fce\u6709\u5fd7\u4e4b\u58eb\u4e00\u540c\u52a0\u5165\u3002\\n \u63a8\u8350\u9605\u8bfb[\u300a\u5b89\u8bb0\u51b0\u5ba4\u30fb\u4e5d\u6708\u4e0b\u300b](https://github.com/AOSC-Dev/newsroom/blob/bfa12c12b1f819adab0fa568e906e682e0fbc244/coffee-break/20230922/zh_CN.md)\u3002(An\\n English version [is also available](https://github.com/AOSC-Dev/newsroom/blob/bfa12c12b1f819adab0fa568e906e682e0fbc244/coffee-break/20230922/en.md).)\\n* \u672c\u5468\u62a5[\u6301\u7eed\u63a5\u53d7\u7f51\u53cb\u6295\u7a3f][call-for-submissions]\u3002\u6b22\u8fce\u6765\u4e0a\u6e38\u5750\u5750\uff01\\n\\n[call-for-submissions]: https://github.com/loongson-community/areweloongyet/issues/16"},{"id":"this-week-in-loongarch-18","metadata":{"permalink":"/newsletter/this-week-in-loongarch-18","editUrl":"https://github.com/loongson-community/areweloongyet/newsletter/2023-10-02-this-week-in-loongarch-18.md","source":"@site/newsletter/2023-10-02-this-week-in-loongarch-18.md","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 18 \u671f","description":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01","date":"2023-10-02T10:40:39.000Z","formattedDate":"2023\u5e7410\u67082\u65e5","tags":[{"label":"\u6bcf\u5468\u4e00\u9f99","permalink":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99"}],"readingTime":7.505,"hasTruncateMarker":true,"authors":[{"name":"WANG Xuerui","title":"\ud83d\udc32\u9f99\u95e8\u5ba2\u6808\u6253\u6742\u7684","url":"https://github.com/xen0n","imageURL":"https://github.com/xen0n.png","key":"xen0n"}],"frontMatter":{"slug":"this-week-in-loongarch-18","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 18 \u671f","authors":["xen0n"],"date":"2023-10-02T10:40:39.000Z","tags":["\u6bcf\u5468\u4e00\u9f99"]},"unlisted":false,"prevItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 19 \u671f","permalink":"/newsletter/this-week-in-loongarch-19"},"nextItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 17 \u671f","permalink":"/newsletter/this-week-in-loongarch-17"}},"content":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01\\n\\n\x3c!-- truncate --\x3e\\n\\n\u5982\u65e0\u7279\u522b\u8bf4\u660e\uff0c\u6587\u4e2d\u63d0\u53ca\u7684\u65e5\u671f\u3001\u65f6\u95f4\u90fd\u4e3a\u5317\u4eac\u65f6\u95f4\uff08UTC+8\uff09\u3002\\n\\n## \u5148\u300c\u9a6c\u300d\u518d\u770b\\n\\n\u672c\u680f\u76ee\u7684\u5185\u5bb9\u5177\u6709\u4e00\u5b9a\u5ef6\u7eed\u6027\uff0c\u5c06\u6301\u7eed\u8ffd\u8e2a\u62a5\u9053 LoongArch® \u9886\u57df\u7684\u91cd\u8981\u6216\u957f\u671f\u9879\u76ee\uff08\u5751\uff09\u3002\\n\\n### Linux\\n\\nLinux v6.6-rc4 \u5df2\u7ecf[\u6b63\u5f0f tagged](https://lore.kernel.org/lkml/CAHk-=wia2-4DRvD-aXz70AV64yrt+Vr50MxHiDunZ71dHATv-Q@mail.gmail.com/)\uff0c\\n\u5305\u542b\u4e86\u4e24\u5904\u9f99\u67b6\u6784\u4fee\u590d\uff0c\u8bf7\u5404\u4e0b\u6e38\u53d1\u884c\u7248\u7684\u6253\u5305\u540c\u5b66\u4eec\u6ce8\u610f\u5e76\u5c3d\u91cf backport\uff1a\\n\\n* \u4fee\u590d\u6a21\u5757\u52a0\u8f7d\u5668\u4e0d\u8ba4\u8bc6 binutils 2.41 \u6c47\u7f16\u51fa\u7684\u65b0\u91cd\u5b9a\u4f4d\u7c7b\u578b\u7684\u95ee\u9898\uff08Tiezhu Yang\uff09\uff0c\\n* \u4fee\u590d NUMA \u7cfb\u7edf\u4e0a\u7269\u7406\u5185\u5b58\u5929\u82b1\u677f\u7684\u8ba1\u7b97\u95ee\u9898\uff08Huacai Chen\uff09\u3002\\n\\n\u6b64\u5916\uff0c\u9f99\u67b6\u6784 KVM \u652f\u6301\u76ee\u524d\u5df2\u8fdb\u5165 linux-next\uff0c\\n\u53ef\u642d\u914d\u6682\u672a\u5b8c\u5168\u4e0a\u6e38\u7684[\u9f99\u82af QEMU \u5206\u652f](https://github.com/loongson/qemu/tree/kvm-loongarch)\\n\u4f9b\u540c\u5b66\u4eec\u8bd5\u7528\u4e86\u3002\\n\uff08\u76ee\u524d\u5df2\u7ecf\u5728\u4e0a\u6e38\u7684\u968f\u673a\u81ea\u52a8\u5316\u6d4b\u8bd5\u4e2d[\u88ab\u53d1\u73b0\u4e86](https://lore.kernel.org/loongarch/d5ba4268-eef0-46be-8314-fccad55f41e2@infradead.org/)\u4e00\u5904\u7f16\u7801\u4e0d\u5468\uff0c\\n\u4e0d\u8fc7\u9884\u8ba1\u5047\u671f\u7ed3\u675f\u4e4b\u540e\u5c31\u4f1a\u4fee\u6389\u3002\uff09\\n\\n### \u5de5\u5177\u94fe\\n\\n#### gcc\\n\\n\u6301\u7eed\u6709\u4e00\u6bb5\u65f6\u95f4\u7684 [PR110939](https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110939)\\n\u4e0a\u5468\u7ec8\u4e8e\u5f97\u5230\u4e86\u89e3\u51b3\u3002\\n\u9f99\u67b6\u6784\u7684\u81ea\u4e3e\uff0c\u4ee5\u53ca ARM\u3001RISC-V \u4e0a\u7684\u76f8\u5173\u6d4b\u8bd5\u5931\u8d25\u90fd\u4fee\u590d\u4e86\u3002\\n\\nxry111 [\u5728\u52aa\u529b](https://github.com/xry111/gcc/commits/xry111/explicit-relocs-auto)\u4ece\u9ed8\u8ba4\u5f00\u542f\\nlinker relaxation \u6240\u5bfc\u81f4\u7684\u6307\u4ee4\u8c03\u5ea6\u673a\u4f1a\u51cf\u5c11\u4e2d\uff0c\u62a0\u56de\u4e00\u4e9b\u6027\u80fd\uff1a\\n\u5728\u4e00\u4e9b\u300c\u660e\u6446\u7740\u4e0d\u80fd\u4f9d\u9760\u94fe\u63a5\u5668 relax \u7684\u60c5\u51b5\u4e0b\u300d\uff08\u672c\u4eba\u8bed\uff09\uff0c\u4ecd\u7136\u5982\u5148\u524d\u4e00\u6837\u751f\u6210\\nexplicit relocs\u3002\\n\u4ed6\u51c6\u5907\u5728\u5047\u671f\u7ed3\u675f\u4e4b\u540e\u5c06\u6b64\u5de5\u4f5c\u53d1\u5411\u90ae\u4ef6\u5217\u8868\uff08\u5426\u5219\u53d1\u4e86\u4e5f\u6ca1\u4eba\u770b\uff09\u3002\\n\uff08\u611f\u8c22\u4f5c\u8005\u81ea\u6211\u6295\u7a3f\uff01\uff09\\n\\n#### LLVM\\n\\nLLVM \u7684\u534f\u4f5c\u6d41\u7a0b\u5df2\u5168\u9762\u8f6c\u5411 GitHub PR\uff0cPhabricator \u4e0d\u65e5\u5c06\u8f6c\u4e3a\u53ea\u8bfb\u6a21\u5f0f\uff0c\u8bf7\u5f00\u53d1\u8005\u4eec\u6ce8\u610f\u3002\\n\u8be6\u60c5\u8bf7\u89c1[\u8fc1\u79fb\u65f6\u95f4\u8868](https://discourse.llvm.org/t/update-on-github-pull-requests/71540)\u3002\\n\\nAmi-zhang \u7ed9 LLVM \u4e2d\u7aef\u7684 `Transforms/IPO/LowerTypeTests` \u5de5\u5e8fpass[\u9002\u914d\u4e86](https://github.com/llvm/llvm-project/pull/67312)\u9f99\u67b6\u6784\u3002\\n\\n\u5468\u62a5\u7b2c 14 \u671f\u62a5\u9053\u8fc7\u7684 hev \u7684[\u539f\u5b50\u64cd\u4f5c\u4f18\u5316](https://reviews.llvm.org/D159252)\u4e0a\u5468\u4e5f\u8fdb\u5165\u4e86\u4e3b\u7ebf\u3002\\n\\n#### Rust\\n\\n\u53d1\u7a3f\u51e0\u5c0f\u65f6\u524d\uff0cRust \u751f\u6001\u4e2d\u6700\u91cd\u8981\u5bc6\u7801\u5b66\u57fa\u7840\u5e93\u4e4b\u4e00 `ring`\\n[\u5408\u5e76\u4e86](https://github.com/briansmith/ring/pull/1632)\u9f99\u67b6\u6784\u652f\u6301\u3002\\n\u65f6\u9694\u4e24\u5e74\u4e4b\u4e45\uff0c`ring 0.17.0` \u7ec8\u4e8e\u6b63\u5f0f\u53d1\u5e03\uff0c\u53ef\u4ee5\u671f\u5f85\u672a\u6765\u7684\u6570\u6708\u95f4\u66f4\u591a Rust\\n\u9879\u76ee\u80fd\u591f\u968f\u7740\u4f9d\u8d56\u7248\u672c\u5347\u7ea7\uff0c\u800c\u83b7\u5f97\u9f99\u67b6\u6784\u652f\u6301\u4e86\u3002\\n\\n9 \u6708 30 \u65e5 hev \u5c06\u9f99\u67b6\u6784\u88f8\u673a\u7684\u6784\u5efa\u76ee\u6807[\u63d0\u5347\u5230\u4e86](https://github.com/rust-lang/rust/pull/115368)\\nTier 2\u3002\\n\u4e0d\u5de7\u7684\u662f\uff0c\u8fd9\u4e2a\u63d0\u4ea4\u7684\u5408\u5e76\u4f3c\u4e4e\u6070\u597d\u9519\u8fc7\u4e86 Rust 1.74.0 \u7684\u73ed\u8f66\uff1a\\n\u76ee\u524d\u770b\u56e0\u4e3a\u5c31\u51e0\u884c\u4ee3\u7801\u548c CI \u6539\u52a8\uff0c\u585e\u8fdb\u53bb\u4e5f\u4e0d\u662f\u4e0d\u53ef\u4ee5\uff0c\u4e0d\u8fc7\u4e0d\u6025\u7684\u8bdd\u4f30\u8ba1\u7b49\u7b49\u66f4\u597d\u3002\\n\u9f99\u67b6\u6784\u7684\u76ee\u524d\u7528\u6237\u7fa4\u4f53\u91cc\uff0c\u5e94\u8be5\u6781\u5c11\u6709\u65e2\u8ddf\u8e2a\u4e0a\u6e38\u793e\u533a\u7248\u672c\uff0c\u53c8\u505a\u88f8\u673a\u5f00\u53d1\u7684\uff0c\u56e0\u6b64\u7b14\u8005\u8ba4\u4e3a\u95ee\u9898\u4e0d\u5927\u3002\\n\uff08\u611f\u8c22\u4f5c\u8005\u81ea\u6211\u6295\u7a3f\uff01\uff09\\n\\n\u540c\u4e00\u5929\uff0cxry111 \u7ed9 Rust \u8bfb\u5199\u76ee\u6807\u4ee3\u7801\u6587\u4ef6\u683c\u5f0f\u7684\u8457\u540d\u57fa\u7840\u5e93 `object`\\n[\u6dfb\u52a0\u4e86](https://github.com/gimli-rs/object/pull/578) LoongArch ELF psABI\\n20230519 \u7248\u672c\u65b0\u589e\u7684\u91cd\u5b9a\u4f4d\u7c7b\u578b\u5b9a\u4e49\u3002\\n\uff08\u611f\u8c22\u4f5c\u8005\u81ea\u6211\u6295\u7a3f\uff01\uff09\\n\\n## \u9650\u65f6\u8fd4\u573a\u4e13\u680f\uff1aQEMU\\n\\n\u6700\u8fd1 QEMU \u4e0a\u6e38\u7684\u9f99\u67b6\u6784\u6587\u4ef6\u5939\u53c8\u70ed\u95f9\u8d77\u6765\u4e86\u3002\\n\u540e\u7eed\u770b\u60c5\u51b5\u53ea\u8981\u4e00\u5468\u95f4\u7684 QEMU \u52a8\u6001\u8db3\u591f\u591a\uff0c\u8fd9\u4e2a\u4e13\u680f\u5c31\u4f1a\u51fa\u73b0\u5e76\u6536\u7eb3\u5b83\u4eec\uff0c\u5426\u5219\u8fd8\u662f\u585e\u300a\u6742\u95fb\u64ad\u62a5\u300b\u3002\\n\\n\u65e5\u524d\uff089 \u6708 21 \u65e5\uff09\uff0cQEMU \u7684\u9f99\u67b6\u6784\u6a21\u62df[\u83b7\u5f97\u4e86](https://gitlab.com/qemu-project/qemu/-/commit/55394dcbec8f0c29c30e792c102a0edd50a52bf4)\\nLASX \u652f\u6301\uff08\u4e0d\u8fc7\u5f88\u5feb[\u88ab\u53d1\u73b0\u6709\u5751](https://gitlab.com/qemu-project/qemu/-/issues/1907)\uff09\u3002\\n\uff08\u611f\u8c22 [@jiegec](https://github.com/jiegec) \u7684\u63d0\u9192\uff01\uff09\\n\\n10 \u6708 1 \u65e5\uff0cJiajie Chen \u7ed9\u9f99\u67b6\u6784\u7684 linux-user \u6a21\u62df[\u5f00\u542f\u4e86](https://patchwork.kernel.org/project/qemu-devel/patch/20231001085315.1692667-1-c@jia.je/)\\nLSX\u3001LASX \u7684 ELF HWCAP \u6807\u5fd7\u4f4d\u3002\\n\uff08\u8fd9\u6837\u88ab\u6a21\u62df\u7684\u7a0b\u5e8f\u4eec\u5c31\u4e0d\u4f1a\u770b\u7740\u6ca1 HWCAP\uff0c\\n\u4fbf\u6309\u7167[\u300a\u9f99\u67b6\u6784\u8f6f\u4ef6\u5f00\u53d1\u4e0e\u6784\u5efa\u7ea6\u5b9a\u300b\u6709\u5173\u6761\u6b3e](https://github.com/loongson/la-softdev-convention/blob/2975b325e1d31c8b52d75f9948d627343c5a454c/la-softdev-convention.adoc#91-kernel-development)\uff0c\\n\u4e3b\u52a8\u89c4\u907f\u5411\u91cf\u6307\u4ee4\u4e86\u3002\uff09\\n\\n\u540c\u4e00\u5929\uff0c\u7b14\u8005\u6d4b\u8bd5\u4e86 Richard Henderson 9 \u6708 16 \u53f7[\u7ed9\u9f99\u67b6\u6784\u505a\u7684 128 \u4f4d\u8bbf\u5b58\u4f18\u5316](https://patchwork.kernel.org/project/qemu-devel/list/?series=784972)\u6ca1\u95ee\u9898\uff0c\\n\u56de\u4e86\u5c01\u90ae\u4ef6\uff0c\u5e76\u4e14\u5341\u5206\u60ed\u6127\u8fd1\u671f\u5728 QEMU \u6c34\u7684\u8865\u4e01\u4e0d\u591f\u591a\uff1a\\n\u51c6\u5907\u4eca\u5e74\u770b\u7740\u628a LBT \u6269\u5c55\u6307\u4ee4\u591a\u5229\u7528\u8d77\u6765\u3002\\n\\n9 \u6708 30 \u65e5\uff0cRichard Henderson \u5728\u4ed6\u7ed9 linux-user [\u589e\u52a0](https://patchwork.kernel.org/project/qemu-devel/list/?series=788954)\\nvDSO \u6a21\u62df\u7684\u540c\u65f6\uff0c\\n\u987a\u624b[\u9002\u914d\u4e86](https://patchwork.kernel.org/project/qemu-devel/patch/20230930021529.987950-16-richard.henderson@linaro.org/)\u9f99\u67b6\u6784\u3002\\n\\n\u540c\u4e00\u5929\uff0cJiajie Chen [\u4fee\u590d\u4e86](https://patchwork.kernel.org/project/qemu-devel/patch/20230930112837.1871691-1-c@jia.je/)\\n\u524d\u9762\u63d0\u5230\u7684 LASX \u652f\u6301\u4ee3\u7801\u4e2d\u4e00\u5904\u6807\u5fd7\u4f4d\u5199\u9519\uff0c\u5bfc\u81f4 guest \u5185\u6838\u6216\u8fdb\u7a0b\u5d29\u6e83\uff0c\u5565\u90fd\u5e72\u4e0d\u4e86\u7684\u5de8\u5751\u3002\\n\\n9 \u6708 26 \u65e5\uff0cSong Gao [\u4fee\u4e86](https://patchwork.kernel.org/project/qemu-devel/patch/20230926075819.3602537-1-gaosong@loongson.cn/)\u9f99\u67b6\u6784\\nTCG \u7684\u4e00\u5904\u6784\u5efa\u9519\u8bef\uff0c\u53c8[\u89e3\u51b3\u4e86](https://patchwork.kernel.org/project/qemu-devel/patch/20230926071253.3601021-1-gaosong@loongson.cn/)\u4e00\u5904\u8b66\u544a\u3002\\n\\n\u540c\u4e00\u5929\uff0cXianglai Li \u7ed9\u9f99\u67b6\u6784[\u52a0\u4e86](https://patchwork.kernel.org/project/qemu-devel/list/?series=787587)\u70ed\u63d2\u62d4\u865a\u62df CPU \u7684\u80fd\u529b\u3002\\n\\n## \u6742\u95fb\u64ad\u62a5\\n\\n9 \u6708 29 \u65e5\uff0cShi Pujin \u5728 Slackware CN \u7528\u6237\u793e\u533a[\u53d1\u5e03\u4e86](http://slackwarecn.github.io/2023/09/29/Slackwareloong1.0%E5%8F%91%E5%B8%83%EF%BC%81/)\\nSlackwareloong 1.0 LTS \u7248\u672c\u3002\\n\uff08\u611f\u8c22\u4f5c\u8005\u81ea\u6211\u6295\u7a3f\uff01\uff09\\n\\n\\n## \u793e\u533a\u6574\u6d3b:\u513f:\\n\\n\u672c\u680f\u76ee\u63a5\u53d7\u4efb\u4f55\u7f51\u53cb\u7684\u6295\u7a3f\uff0c\u53ea\u8981\u5185\u5bb9\u4e0e LoongArch® \u6709\u5173\uff0c\u5e76\u53ef\u4ee5\u4e3a\u8bfb\u8005\u5e26\u6765\u4ef7\u503c\uff0c\\n\u65e0\u8bba\u4e25\u8083\u8d21\u732e\uff08\u6574\u7684\u5927\u6d3b:\u513f:\uff09\u6216\u662f\u535a\u541b\u4e00\u7b11\u90fd\u4e00\u6982\u6b22\u8fce\uff01\\n\\n\\n\\nLA UOSC \u7f51\u53cb autistic-chad\uff08GitHub [@cl91](https://github.com/cl91)\uff09[\u5728\u618b\u5927\u62db](https://bbs.loongarch.org/d/303-gsgpu)\uff1a\\n\u5c06 GSGPU \u7684\u5185\u6838\u9a71\u52a8\u4ece Loongnix 4.19 \u5185\u6838\u79fb\u690d\u5230\u4e3b\u7ebf\u7248\u672c\uff086.6+\uff09\uff01\\n\\n:::info RESPECT\\n\u8fd9\u9700\u8981\u8de8\u8d8a 5 \u5e74\u7684\u65f6\u95f4\uff0c26 \u4e2a\u6b63\u5f0f\u7248\u672c\uff0c\u6570\u4e07\u6761\u56fe\u5f62\u5b50\u7cfb\u7edf\u63d0\u4ea4\uff0c\u51e0\u5341\u751a\u81f3\u4e0a\u767e\u6b21\u5408\u5e76\u51b2\u7a81\u6216\u63a5\u53e3\u53d8\u66f4\uff1b\\n\u8fd8\u6ca1\u7b97\u4e0a GSGPU \u548c Apple M1 GPU \u60c5\u51b5\u7c7b\u4f3c\uff0c\u90fd\u5904\u4e8e 0 \u516c\u5f00\u6587\u6863\u72b6\u6001\u3002\\n\u5411\u8fd9\u4f4d\u52c7\u58eb\u81f4\u656c\uff01\\n\\n\u4e5f\u6b22\u8fce\u6709\u610f\u5411\u7684\u540c\u5b66\u5728 LA UOSC \u8bba\u575b\u4e0a\u8ff0\u7684\u8d34\u5b50\u53c2\u4e0e\u4e92\u52a8\uff1a\\n\u6709\u4e00\u4efd\u70ed\uff0c\u53d1\u4e00\u4efd\u5149\uff0c\\n\u4ee5\u4f7f\u4e0a\u6e38\u5185\u6838\u7684\u4f7f\u7528\u8005\u4eec\u80fd\u65e9\u65e5\u7528\u4e0a\u9f99\u82af\u96c6\u663e\u7684 3D \u52a0\u901f~~\u868a\u5b50\u518d\u5c0f\u4e5f\u662f\u8089~~\u3002\\n:::\\n\\n## \u5f20\u8d34\u680f\\n\\n\u672c\u680f\u76ee\u53ef\u4f9b\u5f20\u8d34\u516c\u76ca\u6027\u8d28\u7684\u5404\u79cd\u4fe1\u606f\u3002\\n\\n* \u53cb\u60c5\u6269\u6563\uff1a[\u5b89\u540c\u5f00\u6e90\u793e\u533a\uff08AOSC\uff09](https://aosc.io)\u7684\u9f99\u67b6\u6784\u79fb\u690d\u4e3b\u7ebf\u5316\u5de5\u4f5c\u300c\u5408\u9f99\u300d\u4ecd\u5728\u5982\u706b\u5982\u837c\u8fdb\u884c\u4e2d\uff0c\\n \u6b64\u5de5\u4f5c\u5b8c\u6210\u540e\u9f99\u67b6\u6784\u5c06\u5347\u683c\u4e3a AOSC OS \u7684 Tier 1 \u67b6\u6784\u3002\\n \u6b22\u8fce\u540c\u5b66\u4eec\u8bd5\u7528\u3001\u53cd\u9988\uff0c\u4e5f\u6b22\u8fce\u6709\u5fd7\u4e4b\u58eb\u4e00\u540c\u52a0\u5165\u3002\\n \u63a8\u8350\u9605\u8bfb[\u300a\u5b89\u8bb0\u51b0\u5ba4\u30fb\u4e5d\u6708\u4e0b\u300b](https://github.com/AOSC-Dev/newsroom/blob/bfa12c12b1f819adab0fa568e906e682e0fbc244/coffee-break/20230922/zh_CN.md)\u3002(An\\n English version [is also available](https://github.com/AOSC-Dev/newsroom/blob/bfa12c12b1f819adab0fa568e906e682e0fbc244/coffee-break/20230922/en.md).)\\n* \u672c\u5468\u62a5[\u6301\u7eed\u63a5\u53d7\u7f51\u53cb\u6295\u7a3f][call-for-submissions]\u3002\u6b22\u8fce\u6765\u4e0a\u6e38\u5750\u5750\uff01\\n\\n[call-for-submissions]: https://github.com/loongson-community/areweloongyet/issues/16"},{"id":"this-week-in-loongarch-17","metadata":{"permalink":"/newsletter/this-week-in-loongarch-17","editUrl":"https://github.com/loongson-community/areweloongyet/newsletter/2023-09-25-this-week-in-loongarch-17.md","source":"@site/newsletter/2023-09-25-this-week-in-loongarch-17.md","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 17 \u671f","description":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01","date":"2023-09-25T07:17:26.000Z","formattedDate":"2023\u5e749\u670825\u65e5","tags":[{"label":"\u6bcf\u5468\u4e00\u9f99","permalink":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99"}],"readingTime":7.235,"hasTruncateMarker":true,"authors":[{"name":"WANG Xuerui","title":"\ud83d\udc32\u9f99\u95e8\u5ba2\u6808\u6253\u6742\u7684","url":"https://github.com/xen0n","imageURL":"https://github.com/xen0n.png","key":"xen0n"}],"frontMatter":{"slug":"this-week-in-loongarch-17","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 17 \u671f","authors":["xen0n"],"date":"2023-09-25T07:17:26.000Z","tags":["\u6bcf\u5468\u4e00\u9f99"]},"unlisted":false,"prevItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 18 \u671f","permalink":"/newsletter/this-week-in-loongarch-18"},"nextItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 16 \u671f","permalink":"/newsletter/this-week-in-loongarch-16"}},"content":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01\\n\\n\x3c!-- truncate --\x3e\\n\\n\u5982\u65e0\u7279\u522b\u8bf4\u660e\uff0c\u6587\u4e2d\u63d0\u53ca\u7684\u65e5\u671f\u3001\u65f6\u95f4\u90fd\u4e3a\u5317\u4eac\u65f6\u95f4\uff08UTC+8\uff09\u3002\\n\\n## \u5148\u300c\u9a6c\u300d\u518d\u770b\\n\\n\u672c\u680f\u76ee\u7684\u5185\u5bb9\u5177\u6709\u4e00\u5b9a\u5ef6\u7eed\u6027\uff0c\u5c06\u6301\u7eed\u8ffd\u8e2a\u62a5\u9053 LoongArch® \u9886\u57df\u7684\u91cd\u8981\u6216\u957f\u671f\u9879\u76ee\uff08\u5751\uff09\u3002\\n\\n### Linux\\n\\n9 \u6708 23 \u65e5\uff0cHuacai Chen \u5411[\u4e2d\u56fd\u65f6\u95f4 9 \u6708 25 \u65e5\u51cc\u6668 tagged \u7684](https://lore.kernel.org/lkml/CAHk-=wjrZgxjHZuXwrGeFnng_whUmtToCWE5GQ+HORhGSeiX8g@mail.gmail.com/)\\nLinux v6.6-rc3 [\u63a8\u9001\u4e86](https://lore.kernel.org/loongarch/20230923091031.1075337-1-chenhuacai@loongson.cn/)\u4e00\u7ec4\u95ee\u9898\u4fee\u590d\u4e0e\u4ee3\u7801\u6e05\u7406\u3002\\n\u7531\u4e8e\u6b64 rc \u5305\u542b\u91cd\u8981\u7684\u4fee\u590d\u5de5\u4f5c\uff08\u89c1\u4e0b\uff09\uff0c\u5efa\u8bae\u6240\u6709\u7d27\u8ddf\u4e3b\u7ebf\u7684\u540c\u5b66\u4eec\u5c3d\u5feb\u5347\u7ea7\u6216\u8ddf\u8fdb\u6700\u65b0\u7684\\nlinux-next\uff08≥ `next-20230925`\uff09\u3002\\n\\n* [\u4fee\u590d\u4e86](https://lore.kernel.org/loongarch/CAAhV-H7r2iNVUstHuYHj8Ve=sY9c5JoMvZNX_pDaUVhL7oGWXw@mail.gmail.com/T/#m74d1c148796ffb824ced5986e3160d055778899c)\u9f99\u67b6\u6784\u4e0a\u4e00\u65e6\u542f\u7528\u5185\u6838\u914d\u7f6e\u9879\\n `CONFIG_DEFERRED_STRUCT_PAGE_INIT` \u5219\u7cfb\u7edf\u65e0\u6cd5\u6b63\u5e38\u542f\u52a8\u7684\u95ee\u9898\u3002\\n \uff08\u5bf9\u4e8e\u63d2\u4e86\u5f88\u591a\u5185\u5b58\u7684\u673a\u5668\uff0c\u6b64\u4f18\u5316\u53ef\u5c11\u8bb8\u63d0\u5347\u542f\u52a8\u901f\u5ea6\u3002\\n \u56e0\u6b64\u5185\u5b58\u63d2\u6ee1\u53c8\u559c\u6b22\u5fae\u64cd\u7684\u793e\u533a\u5f00\u53d1\u8005\u4eec\u88ab\u7b2c\u4e00\u65f6\u95f4\u5751\u5230\u4e86\uff1a\\n \u9f99\u82af\u56e2\u961f\u6781\u5c11\u6539\u52a8\u3001\u6d4b\u8bd5\u8fd9\u4e9b\u4e0d\u76f4\u63a5\u4e0e\u9f99\u82af\u82af\u7247\u3001\u8f6f\u4ef6\u3001\u51fa\u8d27\u7cfb\u7edf\u76f8\u5173\u7684\u5185\u6838\u914d\u7f6e\uff0c\\n \u6240\u4ee5\u672a\u5728[\u5f15\u53d1\u95ee\u9898\u7684\u63d0\u4ea4](https://github.com/torvalds/linux/commit/61167ad5fecdea)\u6240\u5728\u7684\\n v6.5 \u5f00\u53d1\u5468\u671f\u53d1\u73b0\u95ee\u9898\u3002\uff09\\n* \uff08\u6b64\u53d8\u66f4\u4e0e\u9f99\u67b6\u6784\u65e0\u5173\u4f46\u5341\u5206\u91cd\u8981\uff09[\u56de\u6eda\u4e86](https://www.phoronix.com/news/Linux-Revert-MG-Timestamps)\u591a\u7c92\u5ea6\u65f6\u95f4\u6233\uff08Multi-grained Timestamps\uff09\u5de5\u4f5c\u3002\\n \u6b64\u4f18\u5316\u672c\u610f\u662f\u60f3\u964d\u4f4e NFS\uff08\u7f51\u7edc\u6587\u4ef6\u7cfb\u7edf\uff09\u7684\u6027\u80fd\u5f00\u9500\uff0c\u4f46\u5b9e\u9645\u5728\u5176\u4ed6\u6587\u4ef6\u7cfb\u7edf\u4e0a\u5f15\u8d77\u4e86\u76f8\u5173\u7684\u7ec6\u5fae bugs\uff0c\\n \u56e0\u6b64\u8865\u4e01\u4f5c\u8005\u51b3\u5b9a\u63a8\u7ffb\u6b64\u65b9\u6848\u4ece\u5934\u518d\u6765\u3002\\n\\n9 \u6708 20 \u65e5\uff0cKVM \u7ef4\u62a4\u8005 Paolo [\u5728\u56de\u4fe1\u4e2d\u8868\u793a](https://lore.kernel.org/loongarch/CAAhV-H6YormmC7DC4Ar9Rwu16OHKP0G8+=7eShxkWjjQ7kq5mA@mail.gmail.com/T/#m3a0928eccdaf047b8d1365512b563a571047f6c6)\uff1a\\n\u65e2\u7136\u4f60\u4eec\u5df2\u7ecf\u5728\u51c6\u5907\u7b2c 22 \u7248\u8865\u4e01\u4e86\uff0c\u5230\u65f6\u5019\u53ef\u4ee5\u4f5c\u4e3a Pull Request \u987a\u5e26\u63d0\u4e86\u3002Huacai Chen\\n[\u56de\u590d\u8bf4](https://lore.kernel.org/loongarch/CAAhV-H6YormmC7DC4Ar9Rwu16OHKP0G8+=7eShxkWjjQ7kq5mA@mail.gmail.com/)\uff1a\\n\u5982\u679c v22 \u6ca1\u4ec0\u4e48\u66f4\u591a\u5ba1\u67e5\u610f\u89c1\u7684\u8bdd\uff0c\u7b49\u4e00\u4e24\u5468\u5c31\u53d1\u3002\\n\u770b\u4e0a\u53bb\u9f99\u67b6\u6784 KVM \u652f\u6301\u8fdb\u5165 Linux 6.7 \u6307\u65e5\u53ef\u5f85\u4e86\uff1a\\n\u786c\u4ef6\u865a\u62df\u5316\uff0c\u8bf4\u662f\u670d\u52a1\u5668\u3001\u6570\u636e\u4e2d\u5fc3\uff0c\u751a\u81f3\u5bb6\u5ead\u591a\u5408\u4e00 NAS \u573a\u666f\u7684\u6700\u57fa\u7840\u80fd\u529b\u4e5f\u4e0d\u4e3a\u8fc7\u3002\\nLinux 6.7 \u662f\u4e2a\u503c\u5f97\u671f\u5f85\u7684\u66f4\u65b0\u3002\\n\\n### \u5de5\u5177\u94fe\\n\\n#### gcc\\n\\n\u4e3a\u542f\u7528 linker relaxation\uff08\u94fe\u63a5\u5668\u677e\u5f1b\uff09\u4f18\u5316\uff0cchenglulu [\u4f7f\u5f97](https://gcc.gnu.org/pipermail/gcc-patches/2023-September/630954.html)\\ngcc \u5728\u6784\u5efa\u65f6\u5982\u679c\u53d1\u73b0\u914d\u5957\u7684\u6c47\u7f16\u5668\u6709 `-mrelax` \u652f\u6301\uff0c\u5219\u8ba9\u6210\u54c1 gcc \u9ed8\u8ba4\u5173\u95ed\\n`-mexplicit-relocs` \u9009\u9879\u3002\\n\u8fd9\u6837\u505a\u7684\u4f18\u5316\u6548\u679c\u53ef\u80fd\u5341\u5206\u53d6\u51b3\u4e8e\u88ab\u7f16\u8bd1\u7684\u5177\u4f53\u4ee3\u7801\uff0c\u6545\u7279\u522b\u63d0\u53ca\uff0c\u8bf7\u5404\u4f4d\u540c\u5b66\u5347\u7ea7 gcc\\n\u65f6\u591a\u591a\u7559\u5fc3\u5e76\u89c2\u5bdf\u4e00\u4e9b\u81ea\u5df1\u5173\u5fc3\u7684\u8f6f\u4ef6\u3001\u51fd\u6570\u7684\u6027\u80fd\u4e0e\u6c47\u7f16\u5f62\u72b6\u662f\u5426\u4ecd\u7136\u7b26\u5408\u9884\u671f\u3002\\n\\n:::info\\n\u7531\u4e8e\u6d89\u53ca\u5220\u9664\u4e00\u4e9b\u6307\u4ee4\uff0clinker relaxation \u80fd\u5de5\u4f5c\u7684\u524d\u63d0\u662f\u76f8\u5173\u6307\u4ee4\u90fd\u805a\u5728\u4e00\u8d77\uff1a\\n\u8fd9\u9879\u5de5\u4f5c\u53ea\u80fd\u5728\u94fe\u63a5\u9636\u6bb5\u5b8c\u6210\uff0c\u4e0d\u505a\u6b64\u4fdd\u8bc1\u4f1a\u8ba9\u94fe\u63a5\u5668\u7684\u590d\u6742\u5ea6\u7206\u70b8\uff0c\\n\u4f8b\u5982\u9700\u8981\u8ddf\u8e2a\u6bcf\u4e2a\u5bc4\u5b58\u5668\u7684\u4f7f\u7528\u60c5\u51b5\u4ee5\u9632\u6b62\u5220\u9664\u6307\u4ee4\u5bfc\u81f4\u7a0b\u5e8f\u8bed\u4e49\u53d8\u5316\u3002\\n\u8fd9\u8981\u6c42\u7f16\u8bd1\u5668\u5728\u751f\u6210\u4ee3\u7801\u65f6\uff0c\u53ea\u7528\u4f2a\u6307\u4ee4\u6765\u8868\u8fbe\u4ea7\u751f\u3001\u4f7f\u7528\u7b26\u53f7\u5730\u5740\u7684\u52a8\u4f5c\uff0c**\u4e0d\u80fd**\u6709\u63a7\u5236\u80cc\u540e\u5177\u4f53\u6307\u4ee4\u7684\u81ea\u7531\u5ea6\u3002\\n\u8fd9\u5c31\u4e0e `-mexplicit-relocs` \u5929\u7136\u4e0d\u5bf9\u4ed8\uff1a\\n\u6253\u5f00\u8fd9\u4e2a\u9009\u9879\u5c31\u662f\u8981\u8ba9\u7f16\u8bd1\u5668**\u80fd**\u611f\u77e5\u3001\u63a7\u5236\u8fd9\u4e9b\u5177\u4f53\u6307\u4ee4\uff0c\\n\u8fdb\u800c\u5f97\u4ee5\u5229\u7528\u66f4\u591a\u4f18\u5316\u673a\u4f1a\uff0c\u4e5f\u66f4\u6709\u52a9\u4e8e\u6307\u4ee4\u8c03\u5ea6\u3002\\n\\n\u56e0\u4e3a linker relaxation \u4e0e\u76f8\u5173\u6307\u4ee4\u7684\u66f4\u4f73\u8c03\u5ea6\u5728\u73b0\u6709\u6761\u4ef6\u4e0b\u65e0\u6cd5\u4e24\u5168\uff0c\u6240\u4ee5\u624d\u8bf4\u4e0d\u89c1\u5f97\u662f\u65e0\u6761\u4ef6\u4f18\u5316\uff0c\u9700\u8981\u5341\u5206\u7559\u5fc3\u3002\\n:::\\n\\nliwei [\u8c03\u6574\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-September/630749.html)\u4e00\u4e9b\u5411\u91cf\u4f18\u5316\u6210\u672c\u6570\u503c\u3002\\n\\nguojie [\u4f18\u5316\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-September/631062.html)\u51e0\u79cd\u5411\u91cf\u503c\u7684\u6784\u9020\u3002\\n\\nChenghui Pan [\u5728\u4fee\u6d4b\u8bd5](https://gcc.gnu.org/pipermail/gcc-patches/2023-September/630953.html)\u3002\\n\\n#### D\\n\\nAOSC \u793e\u533a\u7684[\u5218\u5b50\u5174](https://github.com/liushuyu)\u4e3a D \u8bed\u8a00\u7684\\n[GCC \u524d\u7aef](https://gcc.gnu.org/pipermail/gcc-patches/2023-September/631259.html)\u4e0e[\u8fd0\u884c\u65f6](https://github.com/dlang/dmd/pull/15628)\u6dfb\u52a0\u4e86\u9f99\u67b6\u6784\u652f\u6301\u3002\\n\u6b22\u8fce\uff01\\n\\n#### LLVM\\n\\n\u5f53\u5730\u65f6\u95f4 9 \u6708 19 \u65e5\uff0cLLVM 17 \u6b63\u5f0f\u53d1\u5e03\u3002\u6b64\u7248\u672c\u65b0\u589e\u4e86\u4e0d\u5c11\u9f99\u67b6\u6784\u4f18\u5316\uff0c\u66f4\u6709\u5b8c\u6574\u7684\\nLA64 v1.00 \u6307\u4ee4\u6c47\u7f16\u3001\u53cd\u6c47\u7f16\u652f\u6301\uff08\u5148\u524d\u5df2\u6709\u62a5\u9053\uff09\uff0c\u5efa\u8bae\u5f00\u53d1\u8005\u4eec\u53ea\u8981\u53ef\u884c\u90fd\u5347\u7ea7\u3002\\n\\n\u6700\u8fd1\u53d1\u73b0 Clang 17 \u5728\u5e26\u7740 `-march=la464` \u7f16\u8bd1\u7684\u65f6\u5019\uff0c\u53ef\u80fd\u4f1a\u60f3\u505a\u81ea\u52a8\u5411\u91cf\u5316\u7136\u540e\u4e0d\u77e5\u9053\u600e\u4e48\u751f\u6210\u4ee3\u7801\uff08\u56e0\u4e3a\u5f53\u65f6\u8fd8\u6ca1\u505a\uff1b\u73b0\u5728\u4f3c\u4e4e\u4e5f\u6ca1\uff09\uff0c\u5bfc\u81f4\u5d29\u6e83\u3002\\n\u7531\u4e8e\u7b14\u8005\u7cbe\u529b\u6709\u9650\uff0c\u6b22\u8fce\u6709\u5fd7\u4e4b\u58eb\u81ea\u544a\u594b\u52c7\uff1a\u7b14\u8005\u4f1a\u6559\u4f60\u600e\u4e48\u67e5 & \u4fee\u3002\\n\\n## \u6742\u95fb\u64ad\u62a5\\n\\n\u8fd1\u65e5\uff0c\u8457\u540d\u5de5\u5177\u94fe\u7ef4\u62a4\u8005\u4e4b\u4e00\u3001LLVM LLD \u7684\u539f\u4f5c\u8005 Rui Ueyama \u3055\u3093[\u53d1\u5e03\u4e86](https://github.com/rui314/mold/releases/tag/v2.2.0)\\nmold 2.2\u3002\\nmold \u662f\u4ed6\u57fa\u4e8e\u591a\u5e74\u7684\u94fe\u63a5\u5668\u5f00\u53d1\u7ecf\u9a8c\u91cd\u65b0\u8bbe\u8ba1\u7684\u73b0\u4ee3\u5316\u3001\u9ad8\u6027\u80fd\u94fe\u63a5\u5668\uff0c\\n\u4ece 2.1 \u7248\u672c\u8d77\u652f\u6301\u9f99\u67b6\u6784\u3002\\n\u4e3a\u63d0\u5347 `--build-id` \u8ba1\u7b97\u901f\u5ea6\uff0cmold 2.2 \u6362\u7528\u4e86\\n[BLAKE3](https://github.com/BLAKE3-team/BLAKE3) \u54c8\u5e0c\u7b97\u6cd5\uff1b\\n\u8fd9\u4e2a\u5e93[\u6709\u6c47\u7f16\u4f18\u5316\u7a7a\u95f4](https://github.com/BLAKE3-team/BLAKE3/blob/master/c/README.md)\uff01\\n\u6b22\u8fce\u6709\u5fd7\u4e4b\u58eb\u4e3a\u5176\u6dfb\u52a0 LSX/LASX \u4f18\u5316\u3002\\n\\n9 \u6708 20 \u65e5\uff0c\u7b14\u8005\u4ece\u4e00\u5c01\u6284\u9001\u5230\u81ea\u5df1\u90ae\u7bb1\u7684\u901a\u77e5\u90ae\u4ef6\u5173\u6ce8\u5230\uff1aopenEuler \u793e\u533a[\u5df2\u5728\u7740\u624b](https://gitee.com/openeuler/kernel/issues/I82GAS)\u4e3a\u5176\\n23.09 \u7cfb\u7edf\u7684\u5185\u6838\u6dfb\u52a0\u66f4\u591a\u9f99\u67b6\u6784\u652f\u6301\u3002\\n\u770b\u90ae\u7bb1\u5730\u5740\uff0c\u63a8\u8fdb\u6b64\u5de5\u4f5c\u7684 Hongchen Zhang \u662f\u9f99\u82af\u5458\u5de5\u3002[openEuler 23.09 \u7684\u5185\u6838](https://gitee.com/openeuler/kernel/tree/openEuler-23.09/)\u7248\u672c\u662f 6.4\uff0c\\n\u8fd9\u610f\u5473\u7740\u4e0a\u8ff0\u5de5\u5355\u4e2d\u63d0\u5230\u7684\u5de5\u4f5c\u4f1a\u6d89\u53ca\u8bb8\u591a\u5411\u540e\u79fb\u690d\uff08backport\uff09\uff0c\u5728\u6b64\u795d :ta: \u4eec\u5c11\u88ab\u51b2\u7a81\u5751\u5230 :smiling_imp:\\n\\n## \u5f20\u8d34\u680f\\n\\n\u672c\u680f\u76ee\u53ef\u4f9b\u5f20\u8d34\u516c\u76ca\u6027\u8d28\u7684\u5404\u79cd\u4fe1\u606f\u3002\\n\\n* \u53cb\u60c5\u6269\u6563\uff1a[\u5b89\u540c\u5f00\u6e90\u793e\u533a\uff08AOSC\uff09](https://aosc.io)\u6b63\u5728\u63a8\u8fdb\u5176\u9f99\u67b6\u6784\u79fb\u690d\u7684\u4e3b\u7ebf\u5316\u5de5\u4f5c\u300c\u5408\u9f99\u300d\uff0c\\n \u6b64\u5de5\u4f5c\u5b8c\u6210\u540e\u9f99\u67b6\u6784\u5c06\u5347\u683c\u4e3a AOSC OS \u7684 Tier 1 \u67b6\u6784\u3002\\n \u6b22\u8fce\u540c\u5b66\u4eec\u8bd5\u7528\u3001\u53cd\u9988\uff0c\u4e5f\u6b22\u8fce\u6709\u5fd7\u4e4b\u58eb\u4e00\u540c\u52a0\u5165\u3002\\n \u63a8\u8350\u9605\u8bfb[\u300a\u5b89\u8bb0\u51b0\u5ba4\u30fb\u4e5d\u6708\u4e0b\u300b](https://github.com/AOSC-Dev/newsroom/blob/bfa12c12b1f819adab0fa568e906e682e0fbc244/coffee-break/20230922/zh_CN.md)\u3002(An\\n English version [is also available](https://github.com/AOSC-Dev/newsroom/blob/bfa12c12b1f819adab0fa568e906e682e0fbc244/coffee-break/20230922/en.md).)\\n* \u672c\u5468\u62a5[\u6301\u7eed\u63a5\u53d7\u7f51\u53cb\u6295\u7a3f][call-for-submissions]\u3002\u6b22\u8fce\u6765\u4e0a\u6e38\u5750\u5750\uff01\\n\\n[call-for-submissions]: https://github.com/loongson-community/areweloongyet/issues/16"},{"id":"this-week-in-loongarch-16","metadata":{"permalink":"/newsletter/this-week-in-loongarch-16","editUrl":"https://github.com/loongson-community/areweloongyet/newsletter/2023-09-18-this-week-in-loongarch-16.md","source":"@site/newsletter/2023-09-18-this-week-in-loongarch-16.md","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 16 \u671f","description":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01","date":"2023-09-18T05:37:25.000Z","formattedDate":"2023\u5e749\u670818\u65e5","tags":[{"label":"\u6bcf\u5468\u4e00\u9f99","permalink":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99"}],"readingTime":3.135,"hasTruncateMarker":true,"authors":[{"name":"WANG Xuerui","title":"\ud83d\udc32\u9f99\u95e8\u5ba2\u6808\u6253\u6742\u7684","url":"https://github.com/xen0n","imageURL":"https://github.com/xen0n.png","key":"xen0n"}],"frontMatter":{"slug":"this-week-in-loongarch-16","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 16 \u671f","authors":["xen0n"],"date":"2023-09-18T05:37:25.000Z","tags":["\u6bcf\u5468\u4e00\u9f99"]},"unlisted":false,"prevItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 17 \u671f","permalink":"/newsletter/this-week-in-loongarch-17"},"nextItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 15 \u671f","permalink":"/newsletter/this-week-in-loongarch-15"}},"content":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01\\n\\n\x3c!-- truncate --\x3e\\n\\n\u5982\u65e0\u7279\u522b\u8bf4\u660e\uff0c\u6587\u4e2d\u63d0\u53ca\u7684\u65e5\u671f\u3001\u65f6\u95f4\u90fd\u4e3a\u5317\u4eac\u65f6\u95f4\uff08UTC+8\uff09\u3002\\n\\n## \u5148\u300c\u9a6c\u300d\u518d\u770b\\n\\n\u672c\u680f\u76ee\u7684\u5185\u5bb9\u5177\u6709\u4e00\u5b9a\u5ef6\u7eed\u6027\uff0c\u5c06\u6301\u7eed\u8ffd\u8e2a\u62a5\u9053 LoongArch® \u9886\u57df\u7684\u91cd\u8981\u6216\u957f\u671f\u9879\u76ee\uff08\u5751\uff09\u3002\\n\\n### Linux\\n\\nLoongArch KVM\u5185\u6838\u865a\u62df\u673a \u7684\u4ee3\u7801\u4ecd\u7136\u5728\u6539\uff0c\u76ee\u524d\u6539\u5230\\n[v21](https://lore.kernel.org/loongarch/20230915014949.1222777-1-zhaotianrui@loongson.cn/)\\n\u4e86\u3002\\n\\n### \u5de5\u5177\u94fe\\n\\n#### gcc\\n\\n\u4e0a\u5468\u63d0\u5230\u7684\u9664\u6cd5\u3001\u53d6\u4f59\u5904\u7406\u4fee\u590d\\n\uff08bug [PR111334](https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111334)\uff09\\n\u5df2\u7ecf[\u63a8\u5165\u4e3b\u7ebf\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-September/630223.html)\u3002\\n\u4e00\u540c\u63a8\u5165\u7684\u8fd8\u6709\\n[LSX](https://gcc.gnu.org/pipermail/gcc-patches/2023-September/630221.html)\u3001[LASX](https://gcc.gnu.org/pipermail/gcc-patches/2023-September/630222.html)\\n\u7684\u6d4b\u8bd5\u7528\u4f8b\u3002\\n\\n\u6b64\u5916 Lulu Cheng \u8fd8\uff1a\\n\\n* \u5c06\u9ed8\u8ba4\u7684\u5206\u652f\u8df3\u8f6c\u6210\u672c\u4ece 2 [\u63d0\u5347\u5230\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-September/630285.html) 6\uff0c\\n* [\u4f18\u5316\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-September/630481.html)\u6d6e\u70b9\u6761\u4ef6\u642c\u8fd0\u64cd\u4f5c\uff0c\\n* [\u79fb\u9664\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-September/630486.html)\u591a\u4f59\u7684\u5bf9\u9f50\u52a8\u4f5c\uff08\u4f1a\u5bfc\u81f4\u6700\u7ec8\u751f\u6210\u7684\u4ee3\u7801\u53cd\u800c\u4e0d\u6ee1\u8db3\u5bf9\u9f50\u8981\u6c42\uff09\u3002\\n\\n\u9694\u58c1 binutils \u7ec4\u7684 mengqinggang \u4e5f\u6765[\u8c03\u6574\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-September/630653.html)\u4f18\u5316\u5668\u6210\u672c\u6a21\u578b\u4e00\u5904\uff1a\\n\u636e\u8bf4\u6709\u5229\u4e8e\u5bc4\u5b58\u5668\u538b\u529b\u8f83\u5927\u60c5\u51b5\u4e0b\u7684\u5faa\u73af\u4f18\u5316\uff0c\u4f46\u6ca1\u6d4b\u8bd5\u7528\u4f8b\uff08\u5e94\u8be5\u5728\u8865\u4e86\uff09\u3002\\n\\n#### LLVM\\n\\n\u5173\u6ce8\u5230 7 \u6708\u5e95 Rust \u793e\u533a\u7684\u540c\u5b66[\u6765\u62a5](https://github.com/llvm/llvm-project/issues/64208)\\n`llvm.maximum.*` \u548c `llvm.minimum.*` \u4e24\u79cd intrinsics \u6ca1\u6709\u5b9e\u73b0\u7684\u95ee\u9898\uff0c\u81f3\u4eca\u672a\u80fd\u6392\u4e0a\u8bae\u4e8b\u65e5\u7a0b\uff1b\\n\u6709\u5174\u8da3\u6c34\u4e00\u4e24\u4e2a\u8865\u4e01\u7684\u540c\u5b66\u53ef\u4ee5\u53bb\u770b\u770b\u3002\\n\\n:::info\\n\u5b9e\u73b0\u8d77\u6765\u5e94\u8be5\u6bd4\u8f83\u7b80\u5355\uff1ax86 \u6216\u8005 RISC-V \u7684\u5b9e\u73b0\u5747\u53ef\u501f\u9274\u3002\\n\\nLoongArch \u7684 `fmax` `fmin` \u6307\u4ee4\uff0c\u5728\u771f\u673a\u4e0a\u89c2\u5bdf\u5176\u8bed\u4e49\uff0c\u4f3c\u4e4e\u4e0e\u8981\u7684\u4e00\u81f4\uff08\u8bf7\u52a1\u5fc5\u81ea\u5df1\u4e5f\u505a\u5b9e\u9a8c\u5c1d\u8bd5\uff1a\u7b14\u8005\u53ea\u68c0\u67e5\u4e86\u6b63\u8d1f\u96f6\u7684\u5927\u5c0f\u6bd4\u8f83\uff09\u3002\\n\u4f46\u8bf7\u5341\u5206\u6ce8\u610f\uff1a\u9f99\u67b6\u6784\u624b\u518c\u4e0a\u5bf9\u6b64\u4e24\u6761\u6307\u4ee4\u7684\u63cf\u8ff0\u662f\u300c\u9075\u5faa IEEE 754-2008\u300d\uff0c\\n\u800c\u4e24\u6761 LLVM intrinsics \u7684\u8bed\u4e49\u662f\u9075\u5faa\u300cIEEE 754-2008 \u7684**\u8349\u7a3f\u7248\u672c**\u300d\u3002\\n\u7b14\u8005\u68c0\u67e5\u4e86\u6b63\u5f0f\u7248\u7684 IEEE 754-2008\uff08\u4f7f\u7528\u641c\u7d22\u5f15\u64ce\u5e94\u80fd\u5f88\u65b9\u4fbf\u514d\u8d39\u83b7\u53d6\uff09\uff1a\\n\u5176 Section 5.3.1 \u786e\u5b9e\u4e0d\u518d\u63d0\u53ca LLVM intrinsics \u8981\u6c42\u7684\u6b63\u8d1f\u96f6\u8bed\u4e49\u3002\\n\u56e0\u6b64\u4f60\u5728\u5b9e\u73b0\u7684\u65f6\u5019\u5927\u6982\u7387\u4e5f\u8981\u53c2\u8003 x86\u3001RISC-V \u540e\u7aef\u7684\u505a\u6cd5\uff0c\u786e\u4fdd\u89c4\u8303\u5916\u8bed\u4e49\u5f97\u5230\u6b63\u786e\u5904\u7406\u4e4b\u540e\uff0c\u624d\u80fd\u8c03\u7528\u8fd9\u4fe9\u6307\u4ee4\u3002\\n:::\\n\\n## \u6742\u95fb\u64ad\u62a5\\n\\n\u4e0a\u5468\u4f3c\u4e4e\u662f\u521b\u520a\u4ee5\u6765\u6700\u5b89\u9759\u7684\u4e00\u5468\uff0c\u5404\u4e2a\u793e\u533a\u90fd\u6ca1\u6709\u4ec0\u4e48\u5927\u65b0\u95fb\u3002\\n\u5f53\u7136\uff0c\u8fd9\u4e5f\u53ef\u80fd\u4ec5\u4ec5\u662f\u7b14\u8005\u672a\u80fd\u5173\u6ce8\u5230\uff1a\u8fd9\u4fbf\u662f\u4e3a\u4f55[\u7fa4\u4f17\u6295\u7a3f][call-for-submissions]\u5982\u6b64\u5fc5\u8981\u4e86\u3002\\n\\n## \u5f20\u8d34\u680f\\n\\n\u672c\u680f\u76ee\u53ef\u4f9b\u5f20\u8d34\u516c\u76ca\u6027\u8d28\u7684\u5404\u79cd\u4fe1\u606f\u3002\\n\\n* \u672c\u5468\u62a5[\u6301\u7eed\u63a5\u53d7\u7f51\u53cb\u6295\u7a3f][call-for-submissions]\u3002\u6b22\u8fce\u6765\u4e0a\u6e38\u5750\u5750\uff01\\n\\n[call-for-submissions]: https://github.com/loongson-community/areweloongyet/issues/16"},{"id":"this-week-in-loongarch-15","metadata":{"permalink":"/newsletter/this-week-in-loongarch-15","editUrl":"https://github.com/loongson-community/areweloongyet/newsletter/2023-09-11-this-week-in-loongarch-15.md","source":"@site/newsletter/2023-09-11-this-week-in-loongarch-15.md","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 15 \u671f","description":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01","date":"2023-09-11T09:10:28.000Z","formattedDate":"2023\u5e749\u670811\u65e5","tags":[{"label":"\u6bcf\u5468\u4e00\u9f99","permalink":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99"}],"readingTime":5.685,"hasTruncateMarker":true,"authors":[{"name":"WANG Xuerui","title":"\ud83d\udc32\u9f99\u95e8\u5ba2\u6808\u6253\u6742\u7684","url":"https://github.com/xen0n","imageURL":"https://github.com/xen0n.png","key":"xen0n"}],"frontMatter":{"slug":"this-week-in-loongarch-15","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 15 \u671f","authors":["xen0n"],"date":"2023-09-11T09:10:28.000Z","tags":["\u6bcf\u5468\u4e00\u9f99"]},"unlisted":false,"prevItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 16 \u671f","permalink":"/newsletter/this-week-in-loongarch-16"},"nextItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 14 \u671f","permalink":"/newsletter/this-week-in-loongarch-14"}},"content":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01\\n\\n\x3c!-- truncate --\x3e\\n\\n\u5982\u65e0\u7279\u522b\u8bf4\u660e\uff0c\u6587\u4e2d\u63d0\u53ca\u7684\u65e5\u671f\u3001\u65f6\u95f4\u90fd\u4e3a\u5317\u4eac\u65f6\u95f4\uff08UTC+8\uff09\u3002\\n\\n## \u5148\u300c\u9a6c\u300d\u518d\u770b\\n\\n\u672c\u680f\u76ee\u7684\u5185\u5bb9\u5177\u6709\u4e00\u5b9a\u5ef6\u7eed\u6027\uff0c\u5c06\u6301\u7eed\u8ffd\u8e2a\u62a5\u9053 LoongArch® \u9886\u57df\u7684\u91cd\u8981\u6216\u957f\u671f\u9879\u76ee\uff08\u5751\uff09\u3002\\n\\n### Linux\\n\\n\u5317\u4eac\u65f6\u95f4 9 \u6708 11 \u65e5\u6e05\u6668\uff0cLinus [tagged](https://lore.kernel.org/lkml/CAHk-=wgfL1rwyvELk2VwJTtiLNpwxTFeFtStLeAQ-2rTRd34eQ@mail.gmail.com/T/#u)\\nLinux 6.6-rc1\u3002\\n\u503c\u5f97\u4e00\u63d0\u7684\u662f\uff1aLinus \u5728\u62c9\u53d6\u3001\u5ba1\u67e5\u3001\u5408\u5e76\u672c\u6b21\u7684[\u9f99\u67b6\u6784 PR](https://lore.kernel.org/loongarch/169420324840.9132.7799052693511343279.pr-tracker-bot@kernel.org/T/#eb6a9a4343868f07c867cdbae4231a8f1f86ebed0) \u65f6\uff0c\\n\u5bf9\u5176\u4e2d\u7684 KASAN \u6280\u672f\u7ec6\u8282\u4eb2\u81ea\u7ed9\u51fa\u4e86\u6307\u5bfc\uff1a\\n\u6307\u51fa\u4e86\u5176\u4e2d\u6cbf\u7528\u7684\u4e00\u79cd\u8001\u5f0f\u4ee3\u7801\u5199\u6cd5\u4e4b\u4e0d\u59a5\uff0c\u5f53\u4ee3\u4e00\u822c\u5982\u4f55\u5199\uff1b\\n\u4ee5\u53ca\u4e24\u5904\u5185\u8054\u58f0\u660e\u7684\u80cc\u540e\u539f\u56e0\uff08\u8fd9\u539f\u56e0\u5728\u9f99\u67b6\u6784\u4e0a\u65e0\u8bba\u662f\u5426\u786e\u5b9e\u5b58\u5728\uff0c\u90fd\u610f\u5473\u7740\u8981\u6539\u4ee3\u7801\uff09\u3002\\n\u622a\u81f3\u53d1\u7a3f\u65f6\uff0cHuacai Chen \u5df2\u7ecf\u628a\u91cd\u6784\u63d0\u4ea4[\u8d34\u51fa\u6765](https://lore.kernel.org/loongarch/fc0f52e0-99a7-bde7-6674-9c1c579c6bc7@xen0n.name/T/#e78ae5e0fb57c26860c7c173dcc2464ba5e70a99a)\u4e86\u3002\\n\\n\u5728\u6b64\u4e4b\u5916\uff0cBibo Mao \u5728\u7ee7\u7eed\u7740\u4ed6\u5bf9\u9f99\u67b6\u6784\u5185\u5b58\u7ba1\u7406\u4ee3\u7801\u7684\u4f18\u5316\uff1a\\n[\u8865\u4e01\u4e00](https://lore.kernel.org/loongarch/20230908012907.2994001-1-maobibo@loongson.cn/)\u3001[\u8865\u4e01\u4e8c](https://lore.kernel.org/loongarch/20230907020936.2692542-1-maobibo@loongson.cn/)\u3002\\n\\n### \u5de5\u5177\u94fe\\n\\n#### gcc\\n\\n9 \u6708 8 \u65e5\uff0cGCC 14 \u6700\u65b0\u5f00\u53d1\u7248\u672c[\u88ab\u53d1\u73b0](https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111334)\u5728\u7f16\u8bd1 Mesa \u65f6\u5d29\u6e83\u3002\\n\u95ee\u9898\u539f\u56e0\u5df2\u627e\u5230\uff0c\u8865\u4e01[\u8d34\u51fa\u6765\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-September/629749.html)\uff0c\u7b49\u5f85\u5408\u5e76\u3002\\n\\n:::info \u6240\u4ee5\u95ee\u9898\u5728\u54ea\uff1f\\nLoongArch® v1.00 \u624b\u518c\u63d0\u5230\u4e86 LA64 \u7684 32 \u4f4d\u9664\u6cd5\u3001\u53d6\u6a21\u64cd\u4f5c\u6709\u5751\uff08\u4e2d\u6587\u7248\u5377\u4e00 2.2.1.13 \u8282\uff1b\u82f1\u6587\u7248\u4e2d\u6ca1\u6709\u6ce8\u660e\u8be5\u5751\uff09\uff1a\\n\\n\u300c\u5728 LoongArch64 \u4f4d\u517c\u5bb9\u7684\u673a\u5668\u4e0a\uff0c\u6267\u884c `DIV.W[U]` \u548c `MOD.W[U]` \u6307\u4ee4\u65f6\uff0c\\n\u5982\u679c\u901a\u7528\u5bc4\u5b58\u5668 rj \u548c rk \u4e2d\u7684\u6570\u503c\u8d85\u8fc7\u4e86 32 \u4f4d\u6709\u7b26\u53f7\u6570\u7684\u6570\u503c\u8303\u56f4\uff0c\\n\u5219\u6307\u4ee4\u6267\u884c\u7ed3\u679c\u53ef\u4ee5\u4e3a\u65e0\u610f\u4e49\u7684\u4efb\u610f\u503c\u3002\u300d\\n\\n\u8fd9\u662f\u4e00\u5904 LA464 \u7684\u5b9e\u73b0\u7ec6\u8282\u66b4\u9732\uff0c\u56e0\u4e3a\u5176\u4ed6 32 \u4f4d\u64cd\u4f5c\u90fd\u7b80\u5355\u65e0\u89c6\u5bc4\u5b58\u5668\u7684\u9ad8 32 \u4f4d\u90e8\u5206\u3002\\n\u9274\u4e8e\u6b64\uff0c\u6240\u6709\u4ea7\u751f\u9f99\u67b6\u6784\u673a\u5668\u8bed\u8a00\u7684\u7f16\u8bd1\u5668\u90fd\u5fc5\u987b\u505a\u76f8\u5e94\u7684\u7279\u6b8a\u9002\u914d\uff0c\u4ee5\u786e\u4fdd\u8fd9\u4e9b\u6307\u4ee4\u7684\u6e90\u64cd\u4f5c\u6570\u90fd\u7b26\u5408\u7ea6\u675f\uff1b\\n\u4e0d\u5de7 gcc \u91cc\u8fd9\u4e2a\u53d8\u6362\u5199\u9519\u4e86\u3002\\n\\n\u6b64\u5916\uff0c\u8bc4\u8bba\u533a\u4e2d Lulu Cheng \u900f\u9732\uff0c\u6b64\u4e58\u9664\u6cd5\u64cd\u4f5c\u7684\u8bed\u4e49\u5927\u5751\u5df2\u5728 LA664 \u89e3\u51b3\u4e86\u3002\\n\u7b14\u8005\u4e5f\u5728\u624b\u4e0a\u7684 3A6000 \u673a\u5668\u8bc1\u5b9e\u4e86\u6b64\u4e8b\u3002\\n\u5f85\u591a\u5e74\u4e4b\u540e\uff0c\u91c7\u7528\u65e7\u8bed\u4e49\u7684\u5904\u7406\u5668\u578b\u53f7\u90fd\u6de1\u51fa\u5e02\u573a\uff0c\u5c31\u53ef\u4ee5\u53eb\u5927\u5bb6\u90fd\u505c\u6b62\u751f\u6210\u8fd9\u4e9b\u591a\u4f59\u7684\u7b26\u53f7\u6269\u5c55\u64cd\u4f5c\u4e86\u3002\\n:::\\n\\n\u540c\u4e00\u5929\uff0cguojie \u4e3a\u9f99\u67b6\u6784\u4e0a `-O1` \u53ca\u66f4\u9ad8\u7684\u4f18\u5316\u7ea7\u522b\u90fd[\u9ed8\u8ba4\u5f00\u542f\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-September/629647.html)\\n`-fsched-pressure` \u4f18\u5316\u5de5\u5e8f\u3002\\n\\n9 \u6708 7 \u65e5\uff0cXi Ruoyao \u4f7f\u7528\u5411\u91cf\u8bbf\u5b58\u6307\u4ee4[\u4f18\u5316\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-September/629618.html)\u5f00\u542f\u5411\u91cf\u652f\u6301\u6761\u4ef6\u4e0b\u7684\u5185\u8054\u5185\u5b58\u642c\u8fd0\u64cd\u4f5c\u3002\\n\\n9 \u6708 6 \u65e5\uff0cXi Ruoyao \u7528\u4f1f\u5927\u7684 `bstrins` \u6307\u4ee4[\u4f18\u5316\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-September/629446.html)\u4f4d\u57df\u6e05\u7a7a\u3001\u4f4d\u57df\u66ff\u6362\u64cd\u4f5c\u3002\\n\u8fd9\u89e3\u51b3\u4e86\u4e0a\u6e38 bug [PR111252](https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111252)\uff1a\u6bd4\u5982\\n`__builtin_copysignf128`\uff08\u8fd1\u671f\u6dfb\u52a0\u7684 128 \u4f4d\u6d6e\u70b9\u7c7b\u578b\u652f\u6301\u7684\u76f8\u5173\u57fa\u672c\u64cd\u4f5c\u4e4b\u4e00\uff09\u7f16\u8bd1\u7ed3\u679c\u5341\u5206\u6076\u52a3\u7684\u95ee\u9898\u3002\\n\\n9 \u6708 4 \u65e5\uff0cYang Yujie \u5411 GCC \u7684 Ada \u8bed\u8a00\u5b9e\u73b0[\u6dfb\u52a0\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-September/629184.html) \u521d\u6b65\u7684 Linux/LoongArch \u9002\u914d\u3002\\n\\n#### LLVM\\n\\n9 \u6708 8 \u65e5\uff0cNathan Chancellor \u5728\u65e5\u5e38\u7684 ClangBuiltLinux \u6d4b\u8bd5\u4e2d\uff0c\u53d1\u73b0 Clang\\n\u5728\u9f99\u67b6\u6784\u4e0a\u4f7f\u7528\u7684 mcount \u7b26\u53f7\u540d\u79f0\u6709\u8bef\uff0c\u987a\u624b[\u5e2e\u5fd9\u4fee\u590d\u4e86](https://github.com/llvm/llvm-project/pull/65657)\u3002\\n\uff08\u8fd9\u4f3c\u4e4e\u4e5f\u662f LLVM \u4ee3\u7801\u5ba1\u67e5\u5de5\u4f5c[\u6574\u4f53\u8f6c\u5411 GitHub](https://discourse.llvm.org/t/update-on-github-pull-requests/71540)\\n\u4e4b\u540e\u7684\u7b2c\u4e00\u4e2a\u9f99\u67b6\u6784\u76f8\u5173 PR\u3002\uff09\\n\\n#### Rust\\n\\n9 \u6708 7 \u65e5\uff0c\u5c06 LA64 \u88f8\u673a\u7f16\u8bd1\u76ee\u6807\u4eec\u63d0\u5347\u81f3 Tier 2 \u652f\u6301\u7ea7\u522b\u7684 MCP [\u8fdb\u5165\u4e86\u516c\u793a\u671f](https://github.com/rust-lang/compiler-team/issues/664#issuecomment-1710266066)\uff0c\u516c\u793a\u671f 10 \u5929\u3002\\n\uff08\u8fd9\u4e2a\u63d0\u6848\u662f 8 \u6708 15 \u53f7\u53d1\u51fa\u6765\u7684\uff0c\u8fd9\u4e48\u4e45\u90fd\u6ca1\u6709\u53cd\u5bf9\u610f\u89c1\uff0c\u5927\u6982\u7387\u4e4b\u540e\u4e5f\u4e0d\u4f1a\u6709\u4e86\u30029 \u6708 17 \u53f7\u5e94\u8be5\u4f1a\u81ea\u52a8\u901a\u8fc7\u3002\uff09\\n\\n## \u793e\u533a\u6574\u6d3b:\u513f:\\n\\n\u672c\u680f\u76ee\u63a5\u53d7\u4efb\u4f55\u7f51\u53cb\u7684\u6295\u7a3f\uff0c\u53ea\u8981\u5185\u5bb9\u4e0e LoongArch® \u6709\u5173\uff0c\u5e76\u53ef\u4ee5\u4e3a\u8bfb\u8005\u5e26\u6765\u4ef7\u503c\uff0c\\n\u65e0\u8bba\u4e25\u8083\u8d21\u732e\uff08\u6574\u7684\u5927\u6d3b:\u513f:\uff09\u6216\u662f\u535a\u541b\u4e00\u7b11\u90fd\u4e00\u6982\u6b22\u8fce\uff01\\n\\n\uff08\u8865\u5145\u62a5\u9053\uff099 \u6708 3 \u65e5\uff0cJiajie Chen \u5728 fuzz \u4ed6\u624b\u5934\u7684\u9f99\u67b6\u6784 CPU \u65f6\uff0c[\u627e\u51fa\u4e86](https://github.com/loongson-community/loongarch-opcodes/issues/1)\u672a\u89c1\u4e8e\u516c\u5f00\u6587\u6863\u7684\u51e0\u6761\u6307\u4ee4\uff1a\\n\\n* \u64cd\u4f5c 8 \u4f4d\u548c 16 \u4f4d\u7684 `amswap` \u4e0e `amadd` \u8865\u5145\uff08\u6587\u6863\u4e2d\u6240\u6709\u7684\u539f\u5b50\u64cd\u4f5c\u6269\u5c55\u6307\u4ee4\uff0c\u6700\u5c0f\u6570\u636e\u5355\u4f4d\u90fd\u662f 32 \u4f4d\uff09\uff0c\u4ee5\u53ca\\n* \u7c7b\u4f3c `ldx` \u4f46\u65e0\u89c6 `rk` \u69fd\u4f4d\u7684\u8f7d\u5165\u64cd\u4f5c\uff0c\u8fd9\u4f7f\u5f97 `rk` \u69fd\u4f4d\u7684\u5185\u5bb9\u50cf\u662f\u7ed9\u5185\u5b58\u5b50\u7cfb\u7edf\u7684\u4ec0\u4e48\u63d0\u793a\u3002\\n\\n\u76ee\u524d\u6682\u672a\u68c0\u67e5\u8fd9\u4e9b\u6307\u4ee4\u662f LA464 \u8fd8\u662f LA664 \u7684\uff0c\u4f46\u5b83\u4eec\u663e\u7136\u5df2\u7ecf\u6210\u4e3a\u4e86\u91cd\u70b9\u5173\u6ce8\u5bf9\u8c61 :smirk_cat:\u3002\\n\\n## \u5f20\u8d34\u680f\\n\\n\u672c\u680f\u76ee\u53ef\u4f9b\u5f20\u8d34\u516c\u76ca\u6027\u8d28\u7684\u5404\u79cd\u4fe1\u606f\u3002\\n\\n* \u672c\u5468\u62a5[\u6301\u7eed\u63a5\u53d7\u7f51\u53cb\u6295\u7a3f][call-for-submissions]\u3002\u6b22\u8fce\u6765\u4e0a\u6e38\u5750\u5750\uff01\\n\\n[call-for-submissions]: https://github.com/loongson-community/areweloongyet/issues/16"},{"id":"this-week-in-loongarch-14","metadata":{"permalink":"/newsletter/this-week-in-loongarch-14","editUrl":"https://github.com/loongson-community/areweloongyet/newsletter/2023-09-04-this-week-in-loongarch-14.md","source":"@site/newsletter/2023-09-04-this-week-in-loongarch-14.md","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 14 \u671f","description":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01","date":"2023-09-04T17:39:31.000Z","formattedDate":"2023\u5e749\u67084\u65e5","tags":[{"label":"\u6bcf\u5468\u4e00\u9f99","permalink":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99"}],"readingTime":10.09,"hasTruncateMarker":true,"authors":[{"name":"WANG Xuerui","title":"\ud83d\udc32\u9f99\u95e8\u5ba2\u6808\u6253\u6742\u7684","url":"https://github.com/xen0n","imageURL":"https://github.com/xen0n.png","key":"xen0n"}],"frontMatter":{"slug":"this-week-in-loongarch-14","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 14 \u671f","authors":["xen0n"],"date":"2023-09-04T17:39:31.000Z","tags":["\u6bcf\u5468\u4e00\u9f99"]},"unlisted":false,"prevItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 15 \u671f","permalink":"/newsletter/this-week-in-loongarch-15"},"nextItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 13 \u671f","permalink":"/newsletter/this-week-in-loongarch-13"}},"content":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01\\n\\n\x3c!-- truncate --\x3e\\n\\n\u5982\u65e0\u7279\u522b\u8bf4\u660e\uff0c\u6587\u4e2d\u63d0\u53ca\u7684\u65e5\u671f\u3001\u65f6\u95f4\u90fd\u4e3a\u5317\u4eac\u65f6\u95f4\uff08UTC+8\uff09\u3002\\n\\n## \u5148\u300c\u9a6c\u300d\u518d\u770b\\n\\n\u672c\u680f\u76ee\u7684\u5185\u5bb9\u5177\u6709\u4e00\u5b9a\u5ef6\u7eed\u6027\uff0c\u5c06\u6301\u7eed\u8ffd\u8e2a\u62a5\u9053 LoongArch® \u9886\u57df\u7684\u91cd\u8981\u6216\u957f\u671f\u9879\u76ee\uff08\u5751\uff09\u3002\\n\\n### Linux {#linux-6.6-loongarch-changes}\\n\\n\u622a\u81f3\u53d1\u7a3f\u65f6\uff0cLinux 6.6 \u7684\u5408\u5e76\u7a97\u53e3\u5de5\u4f5c\u6b63\u98ce\u751f\u6c34\u8d77\uff0c\u5b50\u7cfb\u7edf\u7ef4\u62a4\u8005\u4eec\u90fd\u5728\u5fd9\u7740\u6574\u7406\u4ee3\u7801\u3001\u63d0\u4ea4 PR\u62c9\u53d6\u8bf7\u6c42\u3002\\n\u5408\u5e76\u7a97\u53e3\u9884\u8ba1\u5728\u7f8e\u897f\u65f6\u95f4\u7684\u672c\u5468\u65e5\u4e0b\u5348\uff089 \u6708 10 \u65e5\uff1b\u4e2d\u56fd\u65f6\u95f4 9 \u6708 11 \u65e5\uff09\u5173\u95ed\uff1b\\n\u672c\u5f00\u53d1\u5468\u671f\u7684 `arch/loongarch` \u53d8\u66f4\u5df2\u7531 Huacai Chen \u6574\u7406\u5b8c\u6210\u5e76[\u6253\u597d\u4e86 tag](https://git.kernel.org/chenhuacai/linux-loongson/l/loongarch-6.6)\uff0c\\n\u4e3b\u8981\u5305\u542b\u4ee5\u4e0b\u5185\u5bb9\uff1a\\n\\n:::info arch/loongarch in Linux 6.6\\n1. \u5141\u8bb8\u5728\u5185\u6838\u6001\u4f7f\u7528 LSX\u3001LASX\uff08Huacai Chen\uff0c\u5e94\u7b14\u8005\u7684 SIMD \u4f18\u5316\u9700\u6c42\u800c\u8bbe\u8ba1\uff09\uff1b\\n2. \u6dfb\u52a0 SIMD \u4f18\u5316\u7684 RAID5/RAID6 \u4f8b\u7a0b\uff08\u7b14\u8005\uff09\uff1b\\n3. \u6dfb\u52a0\u9f99\u82af\u4e8c\u8fdb\u5236\u7ffb\u8bd1\u6269\u5c55\uff08LBT\uff09\u652f\u6301\uff08Qi Hu\u3001Huacai Chen\uff09\uff1b\\n4. \u6dfb\u52a0 KGDB\u3001KDB \u7684\u57fa\u672c\u652f\u6301\uff1b\\n * \u6846\u67b6\u3001\u6838\u5fc3\u529f\u80fd\uff1aQing Zhang\uff1b\u8be5\u540c\u5b66\u662f\u524d\u9f99\u82af\u5458\u5de5\uff0c\u5728\u9f99\u82af\u65f6\u671f\u5b8c\u6210\u4e86\u6b64\u5de5\u4f5c\u3002\\n * \u65ad\u70b9\u3001\u5355\u6b65\uff1aBinbin Zhou\u3002\\n * \u7ec6\u8282\u6539\u8fdb\u8c03\u6574\uff1aHui Li\u3002\\n * \u6784\u5efa\u9519\u8bef\u4fee\u590d\u6253\u78e8\uff1aRandy Dunlap\uff1b\u6d3b\u8dc3\u7684\u4e0a\u6e38\u793e\u533a\u5f00\u53d1\u8005\u540c\u5b66\u4e4b\u4e00\u3002\\n5. \u652f\u6301\u5f00\u542f KCov\uff08\u5185\u6838\u7684\u4ee3\u7801\u8986\u76d6\u7387\u6536\u96c6\u673a\u5236\uff09\u6784\u5efa\u5185\u6838\uff08Feiyang Chen\uff09\uff1b\\n6. \u6dfb\u52a0 KFENCE (Kernel Electric-Fence) \u652f\u6301\uff08Enze Li\uff1b\u8be5\u540c\u5b66\u662f\u9e92\u9e9f\u5458\u5de5\uff09\uff1b\\n7. \u6dfb\u52a0 KASAN (Kernel Address Sanitizer) \u652f\u6301\uff08Qing Zhang\uff09\uff1b\\n8. bug \u4fee\u590d\u4e0e\u5176\u4ed6\u8f83\u5c0f\u53d8\u66f4\uff08Bibo Mao\u3001Weihao Li\u3001Tiezhu Yang\uff09\uff1b\\n9. \u9ed8\u8ba4\u914d\u7f6e\u66f4\u65b0\u3002\\n\\n\u8be5\u4fe1\u606f\u7ffb\u8bd1\u81ea [tag \u8bf4\u660e\u6587\u5b57](https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson.git/tag/?h=loongarch-6.6)\uff0c\\n\u76f8\u5173\u4f5c\u8005\u4fe1\u606f\u7531\u7b14\u8005\u6574\u7406\u6dfb\u52a0\u3002\\n\u9664\u7b14\u8005\u5916\uff0c\u672a\u63d0\u53ca\u5de5\u4f5c\u5355\u4f4d\u4fe1\u606f\u7684\u540c\u5b66\u90fd\u662f\u9f99\u82af\u5458\u5de5\u3002\\n:::\\n\\n8 \u6708 31 \u65e5\uff0cTianrui Zhao\u3001Bibo Mao \u7b49\u540c\u5b66\u5f00\u53d1\u7684\u9f99\u67b6\u6784 KVM\u5185\u6838\u865a\u62df\u673a\\n\u8865\u4e01\u7cfb\u5217\u5df2[\u8fed\u4ee3\u81f3](https://lore.kernel.org/loongarch/20230831083020.2187109-1-zhaotianrui@loongson.cn/)\u7b2c 20 \u7248\u3002\\n\u76ee\u524d\u9884\u8ba1\u8be5\u529f\u80fd\u6b63\u5f0f\u9732\u9762\u7684\u9996\u4e2a\u4e0a\u6e38\u5185\u6838\u7248\u672c\u662f Linux 6.7\uff08\u4e0b\u4e2a\u5f00\u53d1\u5468\u671f\uff09\uff0c\\n\u4f46\u6211\u4eec\u540c\u65f6\u9884\u8ba1\u793e\u533a\u53d1\u884c\u7248\u4eec\u5c06\u8f83\u5feb\u8ddf\u8fdb\u652f\u6301\uff08\u63d0\u524d\u96c6\u6210\u8fd9\u4e9b\u8865\u4e01\uff09\u3002\\n\\n:::info \u503c\u5f97\u4e00\u63d0\u7684\u662f\\n\u968f\u7740\u4e0a\u6e38\u7684\u5185\u6838 CI\u6301\u7eed\u96c6\u6210 \u8bbe\u65bd\u7684\u9f99\u67b6\u6784\u5de5\u5177\u94fe\u5347\u7ea7\u5230\u6700\u65b0\u7248\uff0c\\n\u6b64\u5806\u4ee3\u7801\u4e2d\u5199\u6b7b\u7684\u3001\u4e0d\u5229\u4e8e\u7ef4\u62a4\u7684\u6307\u4ee4\u7f16\u7801\u7ec8\u4e8e\u6d88\u5931\u4e86\u3002\\n\u8fd9\u5c06\u4e0d\u4f1a\u5f71\u54cd\u4e0b\u6e38\u672a\u5347\u7ea7\u5de5\u5177\u94fe\u7248\u672c\u7684\u53d1\u884c\u7248\u96c6\u6210\u8be5\u529f\u80fd\uff1a\u8fd9\u4e9b\u53d1\u884c\u7248\u603b\u80fd\u4e3a\u5176\u5de5\u5177\u94fe\u5355\u72ec\u52a0\u5165\u76f8\u5173\u6307\u4ee4\u652f\u6301\u3002\\n:::\\n\\n8 \u6708 17 \u65e5\uff0clihui\\n[\u8d34\u51fa\u4e86](https://lore.kernel.org/loongarch/20230817032825.22974-1-lihui@loongson.cn/)\u7b2c 3 \u7248\u7684\u9f99\u67b6\u6784 KGDB\u5185\u6838 GDB \u652f\u6301\u8865\u4e01\uff0c\\n\u4f46 :ta: \u628a\u8865\u4e01\u539f\u4f5c\u8005\u3001\u524d\u9f99\u82af\u5458\u5de5 Qing Zhang \u7684\u4f5c\u8005\u4fe1\u606f\u66ff\u6362\u6210\u4e86 :ta: \u81ea\u5df1\u3002\\n\uff08\u5728\u8865\u4e01\u5185\u5bb9\u672c\u8eab\u5e76\u672a\u53d1\u751f\u672c\u8d28\u6539\u53d8\u7684\u524d\u63d0\u4e0b\uff0c\u4f5c\u8005\u4fe1\u606f\u4e0d\u5e94\u88ab\u66ff\u6362\uff09\u3002\\n\u8865\u4e01\u7684\u539f\u4f5c\u8005 Qing Zhang \u5728 29 \u53f7\u4f7f\u7528\u817e\u8baf\u7684\u90ae\u7bb1\u5730\u5740[\u5410\u69fd\u4e86](https://lore.kernel.org/loongarch/ea1126e8-690c-424e-ab52-ef5ebbc9707a@tencent.com/)\u8fd9\u4ef6\u4e8b\uff0c\\n\u622a\u81f3\u53d1\u7a3f\u65f6\u5c1a\u672a\u6709\u540e\u7eed\u8fdb\u5c55\u3002\\n\u672c\u5468\u62a5\u5c06\u6301\u7eed\u4e3a\u60a8\u8ffd\u8e2a\u3002\\n\\n:::info \u5410\u69fd\u7684\u5177\u4f53\u70b9\\n\u4e00\u5207\u4ece\u4e00\u4e2a\u672a\u88ab\u521d\u59cb\u5316\u5373\u88ab\u4f7f\u7528\u7684\u53d8\u91cf `cj_val` \u5f00\u59cb\uff1a\\n\u8fd9\u610f\u5473\u7740\u8fd9\u90e8\u5206\u4ee3\u7801\u7684\u4f5c\u8005\u672a\u4f5c\u4efb\u4f55\u6d4b\u8bd5\uff0c\u751a\u81f3\u8fde\u6d4b\u8bd5\u7f16\u8bd1\u90fd\u6ca1\u8fdb\u884c\uff0c\u4fbf\u63d0\u4ea4\u4e86\u4ee3\u7801\u3002\\n\u4e14\u4e0d\u8bba\u8fd9\u79cd\u884c\u4e3a\u54ea\u6015\u5728\u4efb\u4f55\u516c\u53f8\u5185\u90e8\uff0c\u6050\u6015\u4e5f\u4e0d\u53ef\u63a5\u53d7\uff0c\u9051\u8bba\u793e\u533a\u8303\u7574\uff1b\\n\u4f5c\u4e3a\u8865\u4e01\u539f\u4f5c\u8005\uff0c\u770b\u5230\u63a5\u624b\u7684\u540c\u5b66\u8fd9\u6837\u5bf9\u5f85\u81ea\u5df1\u7684\u52b3\u52a8\u6210\u679c\uff0c\u5410\u69fd\u4e24\u53e5\u4e5f\u5408\u60c5\u5408\u7406\u5427\u3002\\n\\nQing Zhang \u8fd8\u63d0\u5230\uff1a\u8865\u4e01\u7684\u672c\u4f53\u662f :ta: \u7f16\u5199\u7684\uff0c\u540e\u7eed\u4fee\u8865\u5de5\u4f5c\u4e3b\u8981\u662f Binbin Zhou \u505a\u7684\uff0c\\n\u5e76\u4e14\u300c\u4e0d\u6539\u53d8\u4f5c\u8005\u4fe1\u606f\u300d\u8fd9\u4ef6\u4e8b\u4f3c\u4e4e\u662f :ta: \u4ece\u9f99\u82af\u79bb\u804c\u524d\u4e0e lihui \u5185\u90e8\u534f\u8c03\u8fc7\u7684\u4e8b\u9879\u3002\\n\u6211\u4eec\u5728\u6ca1\u6709\u83b7\u5f97\u66f4\u591a\u6d88\u606f\u4e4b\u524d\uff0c\u76f8\u4fe1\u6c9f\u901a\u53cc\u65b9\u672c\u8d28\u4e0a\u90fd\u57fa\u4e8e\u5584\u610f\uff1a\u4e5f\u8bb8 lihui\\n\u6216\u5176\u90e8\u95e8\u6709\u4ec0\u4e48\u5176\u4ed6\u539f\u56e0\u5bfc\u81f4 :ta: \u4e0d\u80fd\u7ef4\u6301\u539f\u4f5c\u8005\u4fe1\u606f\u4e86\u3002\\n\u5e0c\u671b\u8fd9\u573a\u5c0f\u98ce\u6ce2\u80fd\u6700\u7ec8\u5e73\u7a33\u89e3\u51b3\uff01\\n:::\\n\\n### \u5de5\u5177\u94fe\\n\\n#### gcc\\n\\n9 \u6708 2 \u65e5\uff0cLulu Cheng \u4f9d\u7167 [2018 \u5e74 RISC-V \u7684\u540c\u7b49\u4f18\u5316](https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=7bbce9b50302959286381d9177818642bceaf301)\uff0c\\n\u4e5f\u7ed9\u9f99\u67b6\u6784[\u4f18\u5316\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-September/629155.html) `switch` \u8bed\u53e5\u9009\u62e9\u652f\u662f 8 \u4f4d\u91cf\u7684\u7b26\u53f7\u6269\u5c55\u7ed3\u679c\u65f6\u7684\u4ee3\u7801\u751f\u6210\u3002\\n\\n\u540c\u4e00\u5929\uff0cguojie [\u4f18\u5316\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-September/629157.html)\u5411\u5f62\u5982 `MEM[base + index]` \u7684\u4f4d\u7f6e\u5b58\u5165\u6d6e\u70b9 `0.0` \u8fd9\u79cd\u884c\u4e3a\u7684\u4ee3\u7801\u751f\u6210\u3002\\n\\n9 \u6708 1 \u65e5\uff0cLulu Cheng \u5408\u5e76\u4e86 :ta: \u548c guojie 6 \u6708 29 \u65e5\u505a\u7684\u4e00\u5904\u4ee3\u7801\u751f\u6210\u9519\u8bef\u4fee\u590d\uff08GCC bug [PR110484](https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110484)\uff0c\\n\u5728\u5f00\u542f LTO\u94fe\u63a5\u65f6\u4f18\u5316 \u7f16\u8bd1 SPEC2017 541.leela\\\\_r \u7528\u4f8b\u65f6\u53d1\u73b0\uff09\u3002\\n\\n:::info LTO \u662f\u8dd1\u5206\u4e13\u4eab\u4f18\u5316\u5417\uff1f\u6709\u7528\u5417\uff1f\u4f1a\u53cd\u800c\u9020\u6210\u6027\u80fd\u52a3\u5316\u5417\uff1f\\n\u7b80\u5355\u7684\u56de\u7b54\uff1a\u4e0d\u662f\uff1b\u6709\u7528\uff1b\u4e0d\u5927\u53ef\u80fd\uff0c\u4e0d\u5fc5\u62c5\u5fc3\u3002\\n\\n\u590d\u6742\u7684\u56de\u7b54\uff1a\u53d6\u51b3\u4e8e\u5177\u4f53\u53d1\u884c\u7248\u548c\u8f6f\u4ef6\u4f5c\u8005\u7684\u7f16\u8bd1\u53c2\u6570\u9009\u62e9\uff1b\u53d6\u51b3\u4e8e\u5177\u4f53\u4ee3\u7801\u5199\u6cd5\uff1b\u5177\u4f53\u60c5\u51b5\u5177\u4f53\u5206\u6790\u3002\\n:::\\n\\n8 \u6708 31 \u65e5\uff0cchenxiaolong [\u63d0\u4ea4\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-August/628895.html)\u7b2c 5 \u7248\u7684\\n128 \u4f4d\u6d6e\u70b9\u64cd\u4f5c\u5185\u5efa\u51fd\u6570\u652f\u6301\u3002\\n\\n\u540c\u4e00\u5929\uff0cLulu Cheng [\u4f18\u5316\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-August/628950.html)\u4ece\u5185\u5b58\u4e2d\u8f7d\u5165\u5b9a\u70b9\u6570\u5e76\u9a6c\u4e0a\u5c06\u5176\u8f6c\u4e3a\u6d6e\u70b9\u6570\u7684\u64cd\u4f5c\uff1a\\n\u6bcf\u6b21\u8fd9\u79cd\u60c5\u51b5\u90fd\u7701\u4e00\u6761\u6307\u4ee4\uff08\u4e0d\u7528\u975e\u5f97\u5148\u88c5\u8fdb GPR \u518d\u642c\u8fdb FPR\uff0c\u53ef\u4ee5\u76f4\u63a5\u88c5\u8fdb FPR \u53bb\uff09\u3002\\n\\n#### glibc\\n\\n8 \u6708 26 \u65e5\uff0cXi Ruoyao [\u6e05\u7406\u4e86](https://sourceware.org/pipermail/libc-alpha/2023-August/151146.html)\u81ea\u4ece\\nglibc \u8981\u6c42\u7684\u6700\u4f4e binutils \u7248\u672c\u62ac\u5347\u81f3 2.41 \u4e4b\u540e\u4e0d\u518d\u9700\u8981\u7684\u517c\u5bb9\u4ee3\u7801\u3002\\n\\n8 \u6708 24 \u65e5\uff0cdengjianbo [\u8d34\u51fa\u4e86](https://sourceware.org/pipermail/libc-alpha/2023-August/151091.html)\u7b2c\u4e8c\u6279 LSX\u3001LASX \u5b9e\u73b0\u7684\u5b57\u7b26\u4e32\u51fd\u6570\u3002\\n\u968f\u540e 28 \u65e5 :ta: \u53c8[\u8d34\u51fa\u4e86](https://sourceware.org/pipermail/libc-alpha/2023-August/151156.html)\u7b2c\u4e09\u6279\u3002\\n\\n\u622a\u81f3\u53d1\u7a3f\u65f6\uff0c\u4e0a\u8ff0\u6539\u8fdb\u90fd\u5df2\u8fdb\u5165\u4e3b\u7ebf\u4e86\u3002\uff08\u611f\u8c22 Xi Ruoyao \u7684\u7ebf\u7d22\u6295\u9012\u3002\uff09\\n\\n#### LLVM\\n\\n8 \u6708 31 \u65e5\uff0chev \u628a [RISC-V \u7684\u4e00\u9879\u7279\u5b9a\u6709\u7528\u539f\u5b50\u64cd\u4f5c\u4f18\u5316](https://reviews.llvm.org/D156801)\uff0c[\u79fb\u690d\u5230\u4e86](https://reviews.llvm.org/D159252)\u9f99\u67b6\u6784\u3002\\n\u8fd9\u5c06[\u6709\u5229\u4e8e Rust](https://github.com/rust-lang/rust/pull/114034) \u751f\u6210\u66f4\u597d\u7684\u4ee3\u7801\u3002\\n\\n\u540c\u4e00\u5929\uff0chev \u8fd8[\u4f18\u5316\u6389\u4e86](https://reviews.llvm.org/D159272)\u9f99\u67b6\u6784 LL/SC \u64cd\u4f5c\u5e8f\u5217\u4e2d\u4e0d\u5fc5\u8981\u7684\u6805\u969c\u52a8\u4f5c\u3001\u4fee\u590d\u4e86\u5176 acquire \u8bed\u4e49\u3002\\n\\n8 \u6708 30 \u65e5\uff0cSixWeining [\u4f18\u5316\u4e86](https://reviews.llvm.org/D159183)LLVM intrinsic `llvm.is.fpclass` \u7684\u4ee3\u7801\u751f\u6210\u3002\\n\\n#### Go\\n\\n\uff08\u8fd9\u662f\u524d\u51e0\u671f\u9057\u6f0f\u5185\u5bb9\u7684\u8865\u5145\uff098 \u6708 22 \u65e5\uff0cGuoqi Chen \u9886\u8854\u7684\u9f99\u82af Go \u56e2\u961f[\u8d34\u51fa\u4e86](https://go-review.googlesource.com/c/go/+/521790)\u9f99\u67b6\u6784\u7684 regabi\u5bc4\u5b58\u5668 ABI \u9002\u914d\u8865\u4e01\u3002\\n\u7b14\u8005\u5728\u6b64\u5de5\u4f5c\u7684\u65e9\u671f\u4ea6\u6709\u8d21\u732e\u3002\\n\u6b64\u9002\u914d\u5b8c\u6574\u5408\u5e76\u3001\u542f\u7528\u540e\uff0c\u5c06\u4e3a\u9f99\u67b6\u6784\u7684 Go \u7a0b\u5e8f\u666e\u904d\u5e26\u6765 10% \u5230 20% \u5de6\u53f3\u7684\u6027\u80fd\u4f18\u5316\u3002\\n\\n## \u6742\u95fb\u64ad\u62a5\\n\\n8 \u6708 29 \u65e5\uff0cXi Ruoyao [\u4fee\u590d\u4e86](https://sourceware.org/pipermail/elfutils-devel/2023q3/006362.html)\\nelfutils \u9879\u76ee\u5728\u9f99\u67b6\u6784 binutils 2.41 \u4e0a\u7684\u6d4b\u8bd5\u5931\u8d25\uff08\u9057\u6f0f\u4e86\u65b0\u6dfb\u52a0\u7684\u91cd\u5b9a\u4f4d\u7c7b\u578b\u5e38\u91cf\uff09\u3002\uff08\u611f\u8c22 Xi Ruoyao \u7684\u7ebf\u7d22\u6295\u9012\u3002\uff09\\n\\n8 \u6708 28 \u65e5\uff0cJiajie Chen \u4e3a QEMU TCG \u7684 LoongArch64 \u79fb\u690d\u6dfb\u52a0\u4e86\u5411\u91cf\u652f\u6301\uff1a\\n\u53ef\u4ee5\u5c06\u88ab\u6a21\u62df\u67b6\u6784\u7684\u4e00\u4e9b SIMD \u64cd\u4f5c\u6620\u5c04\u5230\u9f99\u67b6\u6784\u7684\u5bf9\u5e94 SIMD \u64cd\u4f5c\u4e86\u3002\\n\u622a\u81f3 9 \u6708 2 \u65e5\uff0c\u8be5\u8865\u4e01\u7cfb\u5217\u5df2[\u8fed\u4ee3\u81f3\u7b2c 3 \u7248](https://patchwork.ozlabs.org/project/qemu-devel/list/?series=371423)\u3002\\n\\n## \u793e\u533a\u6574\u6d3b:\u513f:\\n\\n\u672c\u680f\u76ee\u63a5\u53d7\u4efb\u4f55\u7f51\u53cb\u7684\u6295\u7a3f\uff0c\u53ea\u8981\u5185\u5bb9\u4e0e LoongArch® \u6709\u5173\uff0c\u5e76\u53ef\u4ee5\u4e3a\u8bfb\u8005\u5e26\u6765\u4ef7\u503c\uff0c\\n\u65e0\u8bba\u4e25\u8083\u8d21\u732e\uff08\u6574\u7684\u5927\u6d3b:\u513f:\uff09\u6216\u662f\u535a\u541b\u4e00\u7b11\u90fd\u4e00\u6982\u6b22\u8fce\uff01\\n\\n\u5df2\u77e5\u6709\u540c\u5b66\u5728\u8fdb\u884c AMD® ROCm® \u5957\u4ef6\u7684\u9f99\u67b6\u6784\u79fb\u690d\u5de5\u4f5c\u4e86\uff0c\\n\u4e5f\u6709\u540c\u5b66\u5728\u9f99\u67b6\u6784\u4e0a\u521d\u6b65\u8dd1\u8d77\u4e86 NixOS\u3002\\n\u671f\u5f85 :ta: \u4eec\u5e26\u7740\u6574\u7406\u597d\u7684\u4ee3\u7801\u6b63\u5f0f\u51fa\u9053\uff01:smirk_cat:\\n\\n\u7b14\u8005\u4ecd\u5728\u4e0d\uff08b\u01cei\uff09\u614c\uff08m\xe1ng\uff09\u4e0d\uff08zh\u012b\uff09\u5fd9\uff08zh\u014dng\uff09\u7ee7\u7eed 3A6000/LA664 \u7684\u6d4b\u8bd5\u5de5\u4f5c\u3002\\n\u622a\u81f3\u76ee\u524d\uff1a\\n\\n* \u8bc1\u5b9e\u5230\u4e86 LA664 \u4e8c\u8fdb\u5236\u7ffb\u8bd1\u52a0\u901f\u5355\u5143\u7684\u541e\u5410\u63d0\u5347\uff0c\\n* \u53d1\u73b0\u524d\u51e0\u671f\u63d0\u5230\u7684\u786c\u4ef6\u9875\u8868\u904d\u5386\u52a0\u901f\u5355\u5143\uff08PTW\uff09\u88ab\u56fa\u4ef6\u5173\u95ed\u4e86\uff08\u53ef\u80fd\u6709 bug \u5bfc\u81f4\u4e0d\u80fd\u7528\uff09\uff0c\\n* \u4ecd\u672a\u786e\u8ba4\u5230 LA664 \u76f8\u6bd4 LA464 \u65b0\u589e\u7684\u4efb\u4f55\u6307\u4ee4\u3002\\n\\n\u6b64\u5916\uff0cLA664 \u7684 `CPUCFG` \u6570\u636e\u4e2d\u6709\u4e0d\u5c11\u672a\u77e5\u4f4d\u57df\u88ab\u7f6e\u4e86 `1`\uff0c\u4f46\u76ee\u524d\u5e76\u65e0\u4efb\u4f55\u65b9\u6cd5\u80fd\u83b7\u77e5\u5b83\u4eec\u7684\u540d\u5b57\u4e0e\u542b\u4e49\u3002\\n\\n## \u5f20\u8d34\u680f\\n\\n\u672c\u680f\u76ee\u53ef\u4f9b\u5f20\u8d34\u516c\u76ca\u6027\u8d28\u7684\u5404\u79cd\u4fe1\u606f\u3002\\n\\n* \u672c\u5468\u62a5[\u6301\u7eed\u63a5\u53d7\u7f51\u53cb\u6295\u7a3f][call-for-submissions]\u3002\u6b22\u8fce\u6765\u4e0a\u6e38\u5750\u5750\uff01\\n\\n[call-for-submissions]: https://github.com/loongson-community/areweloongyet/issues/16"},{"id":"this-week-in-loongarch-13","metadata":{"permalink":"/newsletter/this-week-in-loongarch-13","editUrl":"https://github.com/loongson-community/areweloongyet/newsletter/2023-08-28-this-week-in-loongarch-13.mdx","source":"@site/newsletter/2023-08-28-this-week-in-loongarch-13.mdx","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 13 \u671f","description":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01","date":"2023-08-28T08:06:17.000Z","formattedDate":"2023\u5e748\u670828\u65e5","tags":[{"label":"\u6bcf\u5468\u4e00\u9f99","permalink":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99"}],"readingTime":5.43,"hasTruncateMarker":true,"authors":[{"name":"WANG Xuerui","title":"\ud83d\udc32\u9f99\u95e8\u5ba2\u6808\u6253\u6742\u7684","url":"https://github.com/xen0n","imageURL":"https://github.com/xen0n.png","key":"xen0n"}],"frontMatter":{"slug":"this-week-in-loongarch-13","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 13 \u671f","authors":["xen0n"],"date":"2023-08-28T08:06:17.000Z","tags":["\u6bcf\u5468\u4e00\u9f99"]},"unlisted":false,"prevItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 14 \u671f","permalink":"/newsletter/this-week-in-loongarch-14"},"nextItem":{"title":"\u6bcf\u5468\u4e09\u9f99\uff1a\u7b2c 12 \u671f","permalink":"/newsletter/these-weeks-in-loongarch-12"}},"content":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01\\n\\n{/* truncate */}\\n\\n\u5982\u65e0\u7279\u522b\u8bf4\u660e\uff0c\u6587\u4e2d\u63d0\u53ca\u7684\u65e5\u671f\u3001\u65f6\u95f4\u90fd\u4e3a\u5317\u4eac\u65f6\u95f4\uff08UTC+8\uff09\u3002\\n\\n## \u5148\u300c\u9a6c\u300d\u518d\u770b\\n\\n\u672c\u680f\u76ee\u7684\u5185\u5bb9\u5177\u6709\u4e00\u5b9a\u5ef6\u7eed\u6027\uff0c\u5c06\u6301\u7eed\u8ffd\u8e2a\u62a5\u9053 LoongArch® \u9886\u57df\u7684\u91cd\u8981\u6216\u957f\u671f\u9879\u76ee\uff08\u5751\uff09\u3002\\n\\n### Linux\\n\\n\u7f8e\u897f\u65f6\u95f4\u5468\u65e5\u4e0b\u5348 3 \u70b9\u4e00\u523b\uff08\u4e2d\u56fd\u65f6\u95f4\u5468\u4e00\u65e9\u6668 6 \u70b9\uff09\uff0cLinus \u53d1\u5e03\u4e86 Linux 6.5 \u6b63\u5f0f\u7248\u3002\\n\u76f8\u6bd4\u4e8e Linux 6.4\uff0c\u5bf9\u9f99\u67b6\u6784\u800c\u8a00\uff0c\u8be5\u7248\u672c\u4e3b\u8981\u5305\u542b\u4e86\u4ee5\u4e0b\u4e00\u4e9b\u529f\u80fd\u53d8\u66f4\uff1a\\n\\n* \u9f99\u82af\u4e2d\u65ad\u63a7\u5236\u5668\u7684 bug \u4fee\u590d\uff08Jianmin Lv\u3001Liu Peibao\u3001Yinbo Zhu\uff09\u4e0e DT\u8bbe\u5907\u6811 \u5f15\u5bfc\u652f\u6301\uff08Binbin Zhou\uff09\u3002\\n* LS7A \u96c6\u6210\u58f0\u5361\u652f\u6301\uff08Yanteng Si\uff09\u3002\\n* AMD RDNA2 \u663e\u5361\u652f\u6301\uff08WANG Xuerui\u3001Huacai Chen\uff09\u3002\\n* \u652f\u6301\u4ee5 LLVM/Clang \u6784\u5efa\u9f99\u67b6\u6784\u5185\u6838\u7684\u4e00\u79cd\u57fa\u672c\u914d\u7f6e\uff08WANG Xuerui\u3001WANG Rui\uff09\u3002\\n* 3A6000 \u9002\u914d\u5de5\u4f5c\uff08\u786c\u4ef6\u9875\u8868\u904d\u5386\u3001SMT\u3001\u5411\u91cf\u6269\u5c55\u6307\u4ee4\u7684\u4e0a\u4e0b\u6587\u5207\u6362\u652f\u6301\u7b49\uff09\uff08Huacai Chen\uff09\u3002\\n* \u53d1\u73b0\u5e76\u4fee\u590d\u4e86\u7f16\u8bd1\u5668\u5b89\u5168\u5f3a\u5316\u624b\u6bb5\uff08`CONFIG_FORTIFY_SOURCE`\uff09\u672a\u80fd\u5b8c\u5168\u751f\u6548\u7684\u95ee\u9898\uff08Nathan Chancellor\u3001Nick Desaulniers\u3001WANG Xuerui\uff09\u3002\\n\\nLinux \u4e0a\u6e38\u793e\u533a\u4e0d\u4ec5\u7ef4\u62a4\u5185\u6838\uff0c\u4e5f\u5305\u62ec\u8bb8\u591a Linux \u7684\u5468\u8fb9\u8f6f\u4ef6\u3001\u652f\u6301\u5e93\u7b49\u3002\\n\\n* nolibc \u7684 stack protector \u652f\u6301\uff08Thomas Wei\xdfschuh\uff09\u3002\\n* `perf` \u547d\u4ee4\u7684\u9f99\u67b6\u6784\u6c47\u7f16\u5904\u7406\u4fee\u590d\uff08WANG Rui\uff09\u4ee5\u53ca\u4e00\u4e9b\u65e5\u5e38\u6027\u8d28\u7684\u4ee3\u7801\u6574\u7406\u5de5\u4f5c\uff08Tiezhu Yang\uff09\u3002\\n\\n\u867d\u7136\u9f99\u82af\u56e2\u961f\u5bf9\u5176 MIPS \u65f6\u4ee3\u4ea7\u54c1\u7684\u4e3b\u7ebf\u7ef4\u62a4\u5de5\u4f5c\u5f3a\u5ea6\u5df2\u5927\u4e0d\u5982\u524d\\n\uff08\u5728\u9f99\u82af MIPS \u4ea7\u54c1\u7ebf\u88ab\u780d\u4e4b\u524d\uff0c\u8fd9\u4e9b\u4ea7\u54c1\u672a\u80fd\u7b49\u5230\u5b8c\u5584\u7684\u4e3b\u7ebf\u652f\u6301\u3002\\n\u56e0\u6b64\u540e\u7eed\u5373\u4fbf\u9f99\u82af\u8981\u4e3a\u5176 MIPS \u4ea7\u54c1\u63d0\u4f9b\u6280\u672f\u652f\u6301\uff0c\u4e5f\u4e0d\u5fc5\u975e\u5f97\u5c06\u8fd9\u4e9b\u6210\u679c\u5408\u5e76\u56de\u4e3b\u7ebf\u4e86\uff09\uff0c\\n\u8fd9\u4e9b\u4ea7\u54c1\u4ecd\u7136\u5728\u5f97\u5230\u793e\u533a\u3001\u9f99\u82af\u5f00\u53d1\u8005\u7684\u90e8\u5206\u652f\u6301\u3002\\n\\n* \u9f99\u82af 1 \u53f7\u7684 PWM \u5b9a\u65f6\u5668/\u65f6\u949f\u6e90\u3001\u770b\u95e8\u72d7\u652f\u6301\uff08Keguang Zhang\uff09\u3002\\n* \u4e3a\u9f99\u82af 2K1000 SoC\u3001LS7A \u6865\u7247\u7684 MIPS \u7cfb\u7edf\u542f\u7528\u677f\u8f7d RTC \u652f\u6301\uff08Binbin Zhou\uff09\u3002\\n* MIPS KVM \u7a7a\u6307\u9488\u5f15\u7528\u4fee\u590d\u3001MIPS \u9f99\u82af\u5185\u6838\u7684\u7f16\u8bd1\u9519\u8bef\u4fee\u590d\u7b49\uff08Huacai Chen\uff09\u3002\\n\\n\u9664\u4ee5\u4e0a\u53d8\u66f4\u4e4b\u5916\uff0c\u8fd8\u6709\u8bb8\u591a\u540c\u7b49\u91cd\u8981\u7684\u7f3a\u9677\u4fee\u590d\u3001\u4ee3\u7801\u91cd\u6784\u7b49\u5de5\u4f5c\u503c\u5f97\u8912\u626c\u3002\\n\u8fd9\u4e2a\u7248\u672c\u52a8\u8fc7\u9f99\u82af\u76f8\u5173\u4ee3\u7801\u7684\u6240\u6709\u5f00\u53d1\u8005\u4eec\uff08\u6309\u5b57\u6bcd\u987a\u5e8f\u6392\u5e8f\uff0c\u4ee5 Git \u63d0\u4ea4\u8bb0\u5f55\u4e2d\u7684\u4f5c\u8005\u5b57\u6bb5\u4e3a\u51c6\uff09\uff1a\\n\\nimport ColumnedList from \'@site/src/components/ColumnedList\'\\n\\n\\n* Andy Shevchenko\\n* Arnaldo Carvalho de Melo\\n* Arnd Bergmann\\n* Binbin Zhou\\n* Chao Yu\\n* Chenguang Zhao\\n* Dan Carpenter\\n* Dave Airlie\\n* Donglin Peng\\n* Eric Lin\\n* Haoran Jiang\\n* Huacai Chen\\n* Ian Rogers\\n* Javier Martinez Canillas\\n* Jianmin Lv\\n* Jonathan Corbet\\n* Keguang Zhang\\n* Kuninori Morimoto\\n* Linus Torvalds\\n* Liu Peibao\\n* Marc Zyngier\\n* Masahiro Yamada\\n* Maxime Ripard\\n* Peter Zijlstra\\n* Sui Jingfeng\\n* Thomas Gleixner\\n* Thomas Wei\xdfschuh\\n* Thomas Zimmermann\\n* Tiezhu Yang\\n* WANG Rui\\n* WANG Xuerui\\n* Xi Ruoyao\\n* Yanteng Si\\n* Yinbo Zhu\\n* Yingkun Meng\\n* YingKun Meng\\n* Youling Tang\\n* Zhihong Dong\\n\\n\\n\u5f53\u4f60\u4f7f\u7528\u9f99\u67b6\u6784 Linux 6.5 \u65f6\uff0c\u522b\u5fd8\u4e86\u5411 :ta: \u4eec\u8868\u8fbe\u4e00\u58f0\u611f\u8c22\uff01\\n\\n:::info\\n\u672c\u8282\u62a5\u9053\u7684\u4fe1\u606f\u53ef\u4ee5\u901a\u8fc7\u7b80\u5355\u7684 `git` \u64cd\u4f5c\u4ece Linux \u4ed3\u5e93\u4e2d\u83b7\u53d6\uff1a\\n\\n```sh\\ngit log --grep=\'[Ll]oong\' v6.4..v6.5\\n```\\n\\n:::\\n\\n### \u5de5\u5177\u94fe\\n\\n#### gcc\\n\\n8 \u6708 28 \u65e5\uff0cLulu Cheng \u4e3a\u9f99\u67b6\u6784 `-O2` \u53ca\u66f4\u9ad8\u7684\u4f18\u5316\u7ea7\u522b[\u9ed8\u8ba4\u5f00\u542f\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-August/628538.html)\u79fb\u9664\u975e\u5fc5\u8981\u7b26\u53f7\u6269\u5c55\u3001\u96f6\u6269\u5c55\u64cd\u4f5c\u7684\u4f18\u5316\uff0c\\n\u4e5f[\u5408\u5e76\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-August/628534.html)\\n25 \u65e5 :ta: \u81ea\u5df1\u5199\u7684\u907f\u514d `SLT` \u6307\u4ee4\u5f15\u8d77\u591a\u4f59\u7b26\u53f7\u6269\u5c55\u52a8\u4f5c\u7684\u8865\u4e01\u3002\\n\\n#### LLVM\\n\\n8 \u6708 25 \u65e5\uff0cSixWeining [\u4f18\u5316\u4e86](https://reviews.llvm.org/D158832)\u9f99\u67b6\u6784\u7684\u4f4d\u57df\u6e05\u96f6\u64cd\u4f5c\uff0c\u57fa\u672c\u4e0a\u6bcf\u5904\u53ef\u4ee5\u7701 1 \u6761\u6307\u4ee4\u3002\\n\\n8 \u6708 23 \u65e5\uff0cAmi-zhang \u4e3a MSan [\u589e\u52a0\u4e86](https://reviews.llvm.org/D158587)\u9f99\u67b6\u6784\u53ef\u53d8\u53c2\u6570\u5217\u8868\u51fd\u6570\u7684\u652f\u6301\u3002\\n\\n## \u6742\u95fb\u64ad\u62a5\\n\\n8 \u6708 24 \u65e5\uff0cSong Gao [\u53d1\u51fa\u4e86](https://patchew.org/QEMU/20230824092409.1492470-1-gaosong@loongson.cn/)\\nQEMU 8.2 \u7684\u9f99\u67b6\u6784 target \u76f8\u5173\u6539\u52a8\u7684 PR\u3002\\n\u5176\u4e2d\u5305\u542b\u4e86\uff1a\\n\\n* LA32 \u652f\u6301\uff08Jiajie Chen\uff09\uff0c\\n* \u5728\u7ffb\u8bd1\u6269\u5c55\u6307\u4ee4\u524d\u8fdb\u884c\u66f4\u5b8c\u5584\u7684\u524d\u7f6e\u6761\u4ef6\u68c0\u67e5\uff08Song Gao\uff09\uff0c\\n* \u8fb9\u6cbf\u89e6\u53d1\u4e2d\u65ad\u7684\u4fee\u590d\uff08Bibo Mao\uff09\uff0c\u4ee5\u53ca\\n* \u4e3a CSR \u5199\u64cd\u4f5c\u6dfb\u52a0\u65e5\u5fd7\uff0c\u4ee5\u53ca\u4ee3\u7801\u91cd\u6784\uff08Philippe Mathieu-Daud\xe9\uff09\u3002\\n\\n\uff08\u611f\u8c22 Jiajie Chen \u7684\u7ebf\u7d22\u6295\u9012\u3002\uff09\\n\\n\u540c\u4e00\u5929\uff0cKatyushaScarlet 7 \u6708 22 \u65e5\u4e3a google/cpufeatures \u5e93\u505a\u7684\u9f99\u67b6\u6784\u9002\u914d[\u4e5f\u8fdb\u5165\u4e86\u4e3b\u7ebf](https://github.com/google/cpu_features/pull/314)\uff0c\\n\u9884\u8ba1\u5c06\u5728\u6b64\u5e93\u7684 v0.9.0 \u7248\u672c\u53d1\u5e03\u3002\uff08\u611f\u8c22 KatyushaScarlet \u7684\u7ebf\u7d22\u6295\u9012\u3002\uff09\\n\\n## \u5f20\u8d34\u680f\\n\\n\u672c\u680f\u76ee\u53ef\u4f9b\u5f20\u8d34\u516c\u76ca\u6027\u8d28\u7684\u5404\u79cd\u4fe1\u606f\u3002\\n\\n* \u672c\u5468\u62a5[\u6301\u7eed\u63a5\u53d7\u7f51\u53cb\u6295\u7a3f][call-for-submissions]\u3002\u6b22\u8fce\u6765\u4e0a\u6e38\u5750\u5750\uff01\\n\\n[call-for-submissions]: https://github.com/loongson-community/areweloongyet/issues/16"},{"id":"these-weeks-in-loongarch-12","metadata":{"permalink":"/newsletter/these-weeks-in-loongarch-12","editUrl":"https://github.com/loongson-community/areweloongyet/newsletter/2023-08-22-these-weeks-in-loongarch-12.md","source":"@site/newsletter/2023-08-22-these-weeks-in-loongarch-12.md","title":"\u6bcf\u5468\u4e09\u9f99\uff1a\u7b2c 12 \u671f","description":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01","date":"2023-08-21T17:07:50.000Z","formattedDate":"2023\u5e748\u670821\u65e5","tags":[{"label":"\u6bcf\u5468\u4e00\u9f99","permalink":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99"}],"readingTime":4.845,"hasTruncateMarker":true,"authors":[{"name":"WANG Xuerui","title":"\ud83d\udc32\u9f99\u95e8\u5ba2\u6808\u6253\u6742\u7684","url":"https://github.com/xen0n","imageURL":"https://github.com/xen0n.png","key":"xen0n"}],"frontMatter":{"slug":"these-weeks-in-loongarch-12","title":"\u6bcf\u5468\u4e09\u9f99\uff1a\u7b2c 12 \u671f","authors":["xen0n"],"date":"2023-08-21T17:07:50.000Z","tags":["\u6bcf\u5468\u4e00\u9f99"]},"unlisted":false,"prevItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 13 \u671f","permalink":"/newsletter/this-week-in-loongarch-13"},"nextItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 11 \u671f","permalink":"/newsletter/this-week-in-loongarch-11"}},"content":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01\\n\\n\x3c!-- truncate --\x3e\\n\\n\u56e0\u4e3a\u7b14\u8005\u7684\u73b0\u5b9e\u751f\u6d3b\u51fa\u73b0\u53d8\u6545\uff0c\u672c\u671f\u6539\u4e3a\u5468\u4e8c\u66f4\u65b0\u524d\u4e09\u5468\u7684\u5185\u5bb9\uff0c\u9884\u8ba1\u4e0b\u671f\u6062\u590d\u5468\u4e00\u66f4\u65b0\u3002\\n\\n\u5982\u65e0\u7279\u522b\u8bf4\u660e\uff0c\u6587\u4e2d\u63d0\u53ca\u7684\u65e5\u671f\u3001\u65f6\u95f4\u90fd\u4e3a\u5317\u4eac\u65f6\u95f4\uff08UTC+8\uff09\u3002\\n\\n## \u5148\u300c\u9a6c\u300d\u518d\u770b\\n\\n\u672c\u680f\u76ee\u7684\u5185\u5bb9\u5177\u6709\u4e00\u5b9a\u5ef6\u7eed\u6027\uff0c\u5c06\u6301\u7eed\u8ffd\u8e2a\u62a5\u9053 LoongArch® \u9886\u57df\u7684\u91cd\u8981\u6216\u957f\u671f\u9879\u76ee\uff08\u5751\uff09\u3002\\n\\n### Linux\\n\\nxen0n \u4f7f\u7528\u9f99\u67b6\u6784\u5411\u91cf\u6269\u5c55\u505a\u7684 RAID5\u3001RAID6 \u8ba1\u7b97\u4f18\u5316\u5df2[\u88ab linux-raid \u7ef4\u62a4\u8005\u63a5\u53d7](https://lore.kernel.org/linux-raid/CAPhsuW5J_wUGmU+1tvzTqmpJSRrJicXoNmp+-ftDuHuhBcbkqA@mail.gmail.com/T/#t)\uff0c\u5df2\u5728\u6700\u65b0 linux-next \u53ef\u7528\u3002\\n\u76f8\u6bd4\u901a\u7528\u7684\u6807\u91cf\u7b97\u6cd5\uff0c\u5411\u91cf\u52a0\u901f\u53ef\u4f7f\u8fd9\u4e9b\u64cd\u4f5c\u7684\u6027\u80fd\u63d0\u5347 1~3 \u500d\u3002\\n\\n### \u5de5\u5177\u94fe\\n\\n#### gcc\\n\\n8 \u6708 15 \u65e5\uff0cChenghui Pan \u4e0e Lulu Cheng \u7b49\u4eba\u7684\u9f99\u67b6\u6784\u5411\u91cf\u6269\u5c55\u4e0a\u6e38\u8865\u4e01\u5df2\u7ecf[\u7ffb\u65b0\u5230\u4e86\u7b2c 4 \u7248](https://gcc.gnu.org/pipermail/gcc-patches/2023-August/627413.html)\u3002\\n\u4e0d\u8fc7\u4ecd\u7136\u6ca1\u6709\u5c06\u8865\u4e01\u62c6\u5f97\u66f4\u7ec6\uff0c\u4e5f\u4ecd\u7136\u6709\u4e00\u4e9b\u5c0f\u7ec6\u8282\u9700\u8981\u6253\u78e8\u3002\\n\u597d\u4e8b\u591a\u78e8\uff01\\n\\n8 \u6708 6 \u65e5\uff0cJiajie Chen [\u63d0\u4ea4\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-August/626413.html)\\n32 \u4f4d\u9f99\u67b6\u6784\uff08LA32\uff09\u7684 GCC \u652f\u6301\u8865\u4e01\u3002\\n\u8be5\u540c\u5b66\u662f\u8fd1\u4e00\u6bb5\u65f6\u95f4\u4ee5\u6765\u7684\u65b0\u9c9c\u9762\u5b54\uff0c\u4e14\u5e76\u975e\u9f99\u82af\u5458\u5de5\uff0c\u6b22\u8fce\u6b22\u8fce\uff01\\n\uff08\u611f\u8c22 xry111 \u7684\u7ebf\u7d22\u6295\u9012\uff1b\u4ed6\u8fd8\u6709\u53e5\u5410\u69fd\uff1a\u5efa\u8bae\u5927\u5bb6\u522b\u5728\u8111\u5b50\u91cc\u603b\u628a 32 \u4f4d ISA \u8ddf 32 \u4f4d ABI \u201c\u5f3a\u7ed1\u5b9a\u201d\u4e00\u8d77\u3002\uff09\\n\\n#### LLVM\\n\\n8 \u6708 21 \u65e5\uff0cwangleiat \u5c06\u9f99\u67b6\u6784\u7684\u6808\u91cd\u5bf9\u9f50\u64cd\u4f5c\u5b9e\u73b0\u65b9\u5f0f\u4ece\u4e24\u6761\u79fb\u4f4d\uff08RISC-V \u505a\u6cd5\uff09[\u4f18\u5316\u5230\u4e86](https://reviews.llvm.org/D158384)\u4e00\u6b21 `bstrins`\u3002\\n\\n8 \u6708 19 \u65e5\uff0cwangleiat \u5408\u5e76\u4e86\u4ed6\u81ea\u5df1\u505a\u7684 Clang \u9f99\u67b6\u6784\u5411\u91cf\u64cd\u4f5c intrinsics\\n\u652f\u6301\u8865\u4e01\uff08[LSX](https://reviews.llvm.org/D155829)\u3001[LASX](https://reviews.llvm.org/D155830)\uff09\\n\u4e0e leecheechen \u8865\u7684\u76f8\u5173\u6d4b\u8bd5\u7528\u4f8b\uff08[LSX](https://reviews.llvm.org/D155834)\u3001[LASX](https://reviews.llvm.org/D155835)\uff09\u3002\\n\\n8 \u6708 9 \u65e5\uff0cwangleiat \u5408\u5e76\u4e86\u4ed6\u81ea\u5df1 2 \u53f7\u505a\u7684\u4e00\u7ec4 Clang \u9f99\u67b6\u6784 intrinsics \u76f8\u5173\u7684[\u4ee3\u7801\u91cd\u6784](https://reviews.llvm.org/D156866)\u3002\\n\\n\u540c\u4e00\u5929\uff0cSixWeining \u5408\u5e76\u4e86\u4ed6\u81ea\u5df1 1 \u53f7\u4e3a LLD \u65b0\u589e\u7684 [`R_LARCH_PCREL20_S2` \u91cd\u5b9a\u4f4d\u8bb0\u5f55\u7c7b\u578b\u652f\u6301](https://reviews.llvm.org/D156772)\uff1b\\n\u8fd8\u628a\u5148\u524d\u88ab\u53d1\u73b0\u6709\u95ee\u9898\u7684 `-march=`\u3001`-mtune=` \u9009\u9879\u652f\u6301\u8865\u4e01[\u6700\u7ec8\u4fee\u597d\u4e86](https://reviews.llvm.org/D155824)\u3002\\n\\n8 \u6708 8 \u65e5\uff0cSixWeining [\u4fee\u590d\u4e86](https://reviews.llvm.org/D156116)\u9f99\u67b6\u6784 Clang \u4e0e GCC \u6240\u5b9e\u73b0\u7684 C++ ABI \u7684\u4e00\u5904\u4e0d\u4e00\u81f4\u3002\\n\\n## \u6742\u95fb\u64ad\u62a5\\n\\n8 \u6708 17 \u65e5\uff0ccaiyinyu \u5408\u5e76\u4e86 8 \u6708 4 \u65e5 dengjianbo \u5728 glibc \u90ae\u4ef6\u5217\u8868[\u8d34\u51fa\u7684](https://sourceware.org/pipermail/libc-alpha/2023-August/150671.html)\u4f7f\u7528\u9f99\u67b6\u6784\u5411\u91cf\u6307\u4ee4\u4f18\u5316\u7684\u5b57\u7b26\u4e32\u64cd\u4f5c\u5b9e\u73b0\u3002\\n\u4ece\u90ae\u7bb1\u5730\u5740\u770b\uff0c\u8fd9\u4f4d Deng \u59d3\u540c\u5b66\u662f\u9f99\u82af\u5458\u5de5\uff0c\u8fd9\u5e94\u8be5\u662f :ta: \u5728\u4e0a\u6e38\u7684\u9996\u79c0\u3002\u6b22\u8fce\u6b22\u8fce\uff01\\n\u8fd9\u4e5f\u610f\u5473\u7740\u80fd\u591f\u6784\u5efa\u9f99\u67b6\u6784 glibc 2.39 \u7684\u6700\u4f4e binutils \u7248\u672c\u4e0a\u5347\u5230\u4e86 2.41\u3002xry111 \u5bf9\u6b64\u6307\u51fa\uff1a\\n\u4e0e\u4e00\u4e9b\u5176\u4ed6\u9879\u76ee\u4e0d\u540c\uff0cglibc \u7684\u7ef4\u62a4\u8005\u4eec\u4e0d\u559c\u6b22\u68c0\u6d4b\u6c47\u7f16\u5668\u80fd\u529b\u5e76\u4ee5\u6b64\u51b3\u5b9a\u6253\u5f00\u6216\u662f\u5173\u95ed\u67d0\u4e9b\u529f\u80fd\u3002\\n\uff08\u611f\u8c22 xry111 \u7684\u7ebf\u7d22\u6295\u9012\u3002\uff09\\n\\n8 \u6708 16 \u65e5\uff0cDebian Ports \u9879\u76ee[\u6b63\u5f0f\u5c06\u9f99\u67b6\u6784\u52a0\u5165](https://lists.debian.org/debian-devel-announce/2023/08/msg00000.html)\u5176\u81ea\u52a8\u5316\u6784\u5efa\u68af\u961f\u3002\\n\u8fd9\u5929\u4e5f\u6070\u5de7\u662f Debian \u9879\u76ee\u521b\u7acb 30 \u5468\u5e74\u7684\u7eaa\u5ff5\u65e5\u3002\\n\u6b64\u4e8b\u4e5f\u5f97\u5230\u4e86\u77e5\u540d Linux \u5a92\u4f53 [Phoronix \u7684\u62a5\u9053](https://www.phoronix.com/news/Debian-Ports-LoongArch)\u3002\\n\\nLLD \u539f\u4f5c\u8005 Rui Ueyama \u5355\u98de\u540e\u521b\u7acb\u7684 mold \u9879\u76ee\uff0c\u5df2\u5728\u5176 8 \u6708 13 \u65e5\u6b63\u5f0f\u53d1\u5e03\u7684 2.1\\n\u7248\u672c\u4e2d[\u5305\u542b\u4e86](https://github.com/rui314/mold/pull/1081) Jinyang He \u57fa\u4e8e LLD\\nLoongArch port \u5199\u4f5c\u7684\u9f99\u67b6\u6784\u652f\u6301\u8865\u4e01\u3002\\nPhoronix \u4e5f[\u62a5\u9053\u4e86](https://www.phoronix.com/news/Mold-2.1-Adds-LoongArch)\u6b64\u4e8b\u3002\\n\uff08\u611f\u8c22 zhangn1985 \u7684\u7ebf\u7d22\u6295\u9012\u3002\uff09\\n\\n## \u793e\u533a\u6574\u6d3b:\u513f:\\n\\n\u672c\u680f\u76ee\u63a5\u53d7\u4efb\u4f55\u7f51\u53cb\u7684\u6295\u7a3f\uff0c\u53ea\u8981\u5185\u5bb9\u4e0e LoongArch® \u6709\u5173\uff0c\u5e76\u53ef\u4ee5\u4e3a\u8bfb\u8005\u5e26\u6765\u4ef7\u503c\uff0c\\n\u65e0\u8bba\u4e25\u8083\u8d21\u732e\uff08\u6574\u7684\u5927\u6d3b:\u513f:\uff09\u6216\u662f\u535a\u541b\u4e00\u7b11\u90fd\u4e00\u6982\u6b22\u8fce\uff01\\n\\n\u8fd9\u51e0\u5468\u6ca1\u6709\u7f51\u53cb\u6574\u5927\u6d3b\u7684\u5370\u8c61\uff0c\u53ef\u80fd\u662f\u7b14\u8005\u6ca1\u5173\u6ce8\uff0c\u4e5f\u53ef\u80fd\u786e\u5b9e\u98ce\u5e73\u6d6a\u9759\u3002\\n\u4e0d\u8fc7\u7b14\u8005\u548c\u5176\u4ed6\u5f88\u591a\u540c\u5b66\u90fd\u9646\u7eed\u62ff\u5230/\u4e70\u5230\u4e86 3A6000 \u677f\u5b50\uff0c\u9884\u8ba1\u6709\u5f88\u591a\u6298\u817e\u6210\u679c\u5c06\u4e0d\u65e5\u516c\u5e03 :wink:\u3002\\n\\n## \u5f20\u8d34\u680f\\n\\n\u672c\u680f\u76ee\u53ef\u4f9b\u5f20\u8d34\u516c\u76ca\u6027\u8d28\u7684\u5404\u79cd\u4fe1\u606f\u3002\\n\\n* \u672c\u5468\u62a5[\u6301\u7eed\u63a5\u53d7\u7f51\u53cb\u6295\u7a3f][call-for-submissions]\u3002\u6b22\u8fce\u6765\u4e0a\u6e38\u5750\u5750\uff01\\n\\n[call-for-submissions]: https://github.com/loongson-community/areweloongyet/issues/16"},{"id":"this-week-in-loongarch-11","metadata":{"permalink":"/newsletter/this-week-in-loongarch-11","editUrl":"https://github.com/loongson-community/areweloongyet/newsletter/2023-07-31-this-week-in-loongarch-11.md","source":"@site/newsletter/2023-07-31-this-week-in-loongarch-11.md","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 11 \u671f","description":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01","date":"2023-07-31T12:21:17.000Z","formattedDate":"2023\u5e747\u670831\u65e5","tags":[{"label":"\u6bcf\u5468\u4e00\u9f99","permalink":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99"}],"readingTime":3.545,"hasTruncateMarker":true,"authors":[{"name":"WANG Xuerui","title":"\ud83d\udc32\u9f99\u95e8\u5ba2\u6808\u6253\u6742\u7684","url":"https://github.com/xen0n","imageURL":"https://github.com/xen0n.png","key":"xen0n"}],"frontMatter":{"slug":"this-week-in-loongarch-11","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 11 \u671f","authors":["xen0n"],"date":"2023-07-31T12:21:17.000Z","tags":["\u6bcf\u5468\u4e00\u9f99"]},"unlisted":false,"prevItem":{"title":"\u6bcf\u5468\u4e09\u9f99\uff1a\u7b2c 12 \u671f","permalink":"/newsletter/these-weeks-in-loongarch-12"},"nextItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 10 \u671f","permalink":"/newsletter/this-week-in-loongarch-10"}},"content":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01\\n\\n\x3c!-- truncate --\x3e\\n\\n\u5982\u65e0\u7279\u522b\u8bf4\u660e\uff0c\u6587\u4e2d\u63d0\u53ca\u7684\u65e5\u671f\u3001\u65f6\u95f4\u90fd\u4e3a\u5317\u4eac\u65f6\u95f4\uff08UTC+8\uff09\u3002\\n\\n## \u5148\u300c\u9a6c\u300d\u518d\u770b\\n\\n\u672c\u680f\u76ee\u7684\u5185\u5bb9\u5177\u6709\u4e00\u5b9a\u5ef6\u7eed\u6027\uff0c\u5c06\u6301\u7eed\u8ffd\u8e2a\u62a5\u9053 LoongArch® \u9886\u57df\u7684\u91cd\u8981\u6216\u957f\u671f\u9879\u76ee\uff08\u5751\uff09\u3002\\n\\n### Linux\\n\\n7 \u6708 31 \u65e5\uff0cxen0n \u5728\u505a RAID6 \u9f99\u67b6\u6784\u5411\u91cf\u4f18\u5316\u7684\u8fc7\u7a0b\u4e2d\uff0c\\n\u987a\u5e26[\u4fee\u590d\u4e86](https://lore.kernel.org/linux-raid/20230731104911.411964-1-kernel@xen0n.name/)\u5e74\u4e45\u5931\u4fee\u7684 `raid6test` \u8c03\u8bd5\u5de5\u5177\u3002\\n\\n\u4e2d\u56fd\u65f6\u95f4 7 \u6708 31 \u65e5\u51cc\u6668\uff0cLinus [tagged](https://lore.kernel.org/lkml/CAHk-=wik9NO9Un-OU0rVeo1+dp=6vj=s=K0T=uBVEa+Aqkj66w@mail.gmail.com/) Linux v6.5-rc4\u3002\\n\u5176\u4e2d\u7684\u9f99\u67b6\u6784\u53d8\u66f4\u5305\u542b\u4e86[\u9488\u5bf9 binutils 2.41 \u7684\u6784\u5efa\u4fee\u590d\u8865\u4e01](https://github.com/torvalds/linux/commit/03c53eb90c0c61885b2175adf8675fb56df7f8db)\uff0c\\n\u6709\u9700\u8981\u7684\u540c\u5b66\u53ef\u81ea\u884c\u53d6\u7528\u3002\\n\\n### \u5de5\u5177\u94fe\\n\\n7 \u6708 30 \u65e5\u665a\u95f4\uff0cbinutils 2.41 [\u6b63\u5f0f\u53d1\u5e03](https://sourceware.org/pipermail/binutils/2023-July/128719.html)\u3002\\n\u76f8\u5173\u53d8\u66f4\u5185\u5bb9\u5df2\u5728[\u5468\u62a5\u7b2c 7 \u671f](./2023-07-03-this-week-in-loongarch-7.md)\u62a5\u9053\u3002\\n\\n7 \u6708 29 \u65e5\uff0cLLVM 17.0.0-rc1 [\u53d1\u5e03](https://discourse.llvm.org/t/llvm-17-0-0-rc1-tagged/72404)\u3002\\n\u9664\u4e86\u5df2\u5728[\u5468\u62a5\u7b2c 10 \u671f](./2023-07-24-this-week-in-loongarch-10.md)\u62a5\u9053\u7684\u53d8\u66f4\u4e4b\u5916\uff0c\u5176\u4e2d\u91cd\u8981\u7684\u9f99\u67b6\u6784\u76f8\u5173\u53d8\u66f4\u8fd8\u6709\uff1a\\n\\n* LLD \u73b0\u5df2\u652f\u6301\u9f99\u67b6\u6784\uff08by xen0n\uff09\u3002\\n \u5728 LLVM\u3001QEMU\u3001Linux \u7b49\u5927\u578b\u9879\u76ee\u4e0a\u6d4b\u8bd5\u53ef\u7528\uff0c\u4e5f\u6d4b\u8bd5\u8fc7\u53ef\u4ee5\u81ea\u4e3e Gentoo LLVM stage\u3002\\n* Clang \u5728\u9f99\u67b6\u6784\u4e0a\u652f\u6301\u4e86 `-march=` `-mtune=` \u9009\u9879\uff0c\\n \u4ee5\u53ca\u76f8\u5e94\u7684\u5185\u5efa\u9884\u5904\u7406\u5668\u7b26\u53f7 `__loongarch_arch`\u3001`__loongarch_tune`\uff08by SixWeining\uff09\u3002\\n\\n## \u6742\u95fb\u64ad\u62a5\\n\\nGNOME3 \u5df2\u5728 Gentoo/LoongArch \u4e0a\u8bc1\u5b9e\u53ef\u7528\u5e76 keyworded\u3002\\n\u76f8\u5e94\u5730\uff0cGNOME \u4e0e Plasma \u7684 desktop profiles \u4e5f\u5728\u672c\u5468\u6dfb\u52a0\u4e86\u3002\\n\u6709\u9700\u8981\u7684\u540c\u5b66\u53ef\u4ee5\u5229\u7528\u5b83\u4eec\u6765\u7ed9\u81ea\u5df1 `make.conf` \u7b49\u7b49\u914d\u7f6e\u7626\u8eab\u4e86\u3002\\n\\n## \u793e\u533a\u6574\u6d3b:\u513f:\\n\\n\u672c\u680f\u76ee\u63a5\u53d7\u4efb\u4f55\u7f51\u53cb\u7684\u6295\u7a3f\uff0c\u53ea\u8981\u5185\u5bb9\u4e0e LoongArch® \u6709\u5173\uff0c\u5e76\u53ef\u4ee5\u4e3a\u8bfb\u8005\u5e26\u6765\u4ef7\u503c\uff0c\\n\u65e0\u8bba\u4e25\u8083\u8d21\u732e\uff08\u6574\u7684\u5927\u6d3b:\u513f:\uff09\u6216\u662f\u535a\u541b\u4e00\u7b11\u90fd\u4e00\u6982\u6b22\u8fce\uff01\\n\\n7 \u6708 31 \u65e5\uff0cxen0n \u5b8c\u6210\u4e86 Linux RAID 5/6 \u8ba1\u7b97\u7684 LSX\u3001LASX \u79fb\u690d\uff08\u6027\u80fd\u4e0d\u9519\uff09\uff0c\u9884\u8ba1\u5728\u672c\u5468\u5185\u63d0\u4ea4\u4e0a\u6e38\u3001\u89c1\u8bf8\u4e0b\u671f\u5468\u62a5\u3002\\n\\n7 \u6708 26 \u65e5\u665a\u95f4\uff0cxry111 [\u6ce8\u610f\u5230](https://github.com/openssl/openssl/pull/21530)\u9f99\u82af\u5458\u5de5\u5728\u4fee\u590d\\nOpenSSL \u7684\u9f99\u67b6\u6784 AES \u6c47\u7f16\u52a0\u901f\u7684\u6b63\u786e\u6027\uff0c\u8be5\u5458\u5de5\u63f4\u5f15\u300c\u6700\u65b0\u4fee\u8ba2\u7684 LoongArch64 \u5411\u91cf\u6307\u4ee4\u624b\u518c\u300d\uff1a\\n\u300c\u5bf9\u4e8e `vshuf.b` \u7684\u63a7\u5236\u5bc4\u5b58\u5668\u4e2d\u7684\u6bcf\u4e2a\u5b57\u8282\uff0c\u5176\u672a\u5b9a\u4e49\u7684\u6700\u9ad8 3 \u4f4d\u4e0d\u5e94\u88ab\u4f7f\u7528\uff0c\\n\u5426\u5219\u6307\u4ee4\u6267\u884c\u7ed3\u679c\u4e0d\u786e\u5b9a\u3002\u300dxry111 \u636e\u6b64\u6307\u51fa\uff1a\\n\\n> \u6839\u636e LA464 \u7684\u5b9e\u73b0\u201c\u731c\u201d\u7684\u5411\u91cf\u6307\u4ee4\u884c\u4e3a\u672a\u5fc5\u53ef\u9760\u3002\\n\\n\uff08\u7f16\u8005\u6ce8\uff1a\u5f88\u9057\u61be\uff0c\u8fd9\u610f\u5473\u7740\u6839\u636e QEMU \u5b9e\u73b0\u53cd\u63a8\u7684\u6307\u4ee4\u884c\u4e3a\u4e5f\u672a\u5fc5 100% \u5339\u914d\u771f\u5b9e\u6216\u672a\u6765\u786c\u4ef6\u884c\u4e3a\uff0c\\n\u56e0\u6b64\u4e0d\u57fa\u4e8e\u5b98\u65b9\u624b\u518c\u4e8c\u6b21\u521b\u4f5c\uff08\u8fd9\u76ee\u524d\u88ab\u7981\u6b62\uff09\u7684\u6307\u4ee4\u8bf4\u660e\u6587\u6863\u603b\u4e0d\u514d\u8981\u7ecf\u53d7\u4e9b\u540e\u77e5\u540e\u89c9\u7684\u4fee\u8ba2\u3002\\n\u4f46\u6709\u8fd9\u4e48\u4e00\u4efd\u8457\u4f5c\u6743\u4e0d\u53d7\u9650\u7684\u6587\u6863\u7684\u597d\u5904\u603b\u6bd4\u574f\u5904\u591a\u3002\uff09\\n\\n## \u5f20\u8d34\u680f\\n\\n\u672c\u680f\u76ee\u53ef\u4f9b\u5f20\u8d34\u516c\u76ca\u6027\u8d28\u7684\u5404\u79cd\u4fe1\u606f\u3002\\n\\n* \u672c\u5468\u62a5[\u6301\u7eed\u63a5\u53d7\u7f51\u53cb\u6295\u7a3f][call-for-submissions]\u3002\u6b22\u8fce\u6765\u4e0a\u6e38\u5750\u5750\uff01\\n\\n[call-for-submissions]: https://github.com/loongson-community/areweloongyet/issues/16"},{"id":"this-week-in-loongarch-10","metadata":{"permalink":"/newsletter/this-week-in-loongarch-10","editUrl":"https://github.com/loongson-community/areweloongyet/newsletter/2023-07-24-this-week-in-loongarch-10.md","source":"@site/newsletter/2023-07-24-this-week-in-loongarch-10.md","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 10 \u671f","description":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01","date":"2023-07-24T05:56:50.000Z","formattedDate":"2023\u5e747\u670824\u65e5","tags":[{"label":"\u6bcf\u5468\u4e00\u9f99","permalink":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99"}],"readingTime":4.765,"hasTruncateMarker":true,"authors":[{"name":"WANG Xuerui","title":"\ud83d\udc32\u9f99\u95e8\u5ba2\u6808\u6253\u6742\u7684","url":"https://github.com/xen0n","imageURL":"https://github.com/xen0n.png","key":"xen0n"}],"frontMatter":{"slug":"this-week-in-loongarch-10","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 10 \u671f","authors":["xen0n"],"date":"2023-07-24T05:56:50.000Z","tags":["\u6bcf\u5468\u4e00\u9f99"]},"unlisted":false,"prevItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 11 \u671f","permalink":"/newsletter/this-week-in-loongarch-11"},"nextItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 9 \u671f","permalink":"/newsletter/this-week-in-loongarch-9"}},"content":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01\\n\\n\x3c!-- truncate --\x3e\\n\\n\u5982\u65e0\u7279\u522b\u8bf4\u660e\uff0c\u6587\u4e2d\u63d0\u53ca\u7684\u65e5\u671f\u3001\u65f6\u95f4\u90fd\u4e3a\u5317\u4eac\u65f6\u95f4\uff08UTC+8\uff09\u3002\\n\\n## \u5148\u300c\u9a6c\u300d\u518d\u770b\\n\\n\u672c\u680f\u76ee\u7684\u5185\u5bb9\u5177\u6709\u4e00\u5b9a\u5ef6\u7eed\u6027\uff0c\u5c06\u6301\u7eed\u8ffd\u8e2a\u62a5\u9053 LoongArch® \u9886\u57df\u7684\u91cd\u8981\u6216\u957f\u671f\u9879\u76ee\uff08\u5751\uff09\u3002\\n\\n### Linux\\n\\n* 7 \u6708 24 \u65e5\uff0cHuacai Chen [\u53d1\u51fa\u4e86](https://lore.kernel.org/loongarch/20230722072201.2677516-1-chenhuacai@loongson.cn/)\u4e00\u7248\u6d4b\u8bd5\u8865\u4e01\uff0c\\n \u4ee5\u5141\u8bb8\u5185\u6838\u81ea\u8eab\u4f7f\u7528 LSX/LASX \u4e3a\u7279\u5b9a\u64cd\u4f5c\u52a0\u901f\u3002xen0n \u5c06\u5f88\u5feb\u57fa\u4e8e\u6b64\u8865\u4e01\u4f18\u5316\u9f99\u67b6\u6784\u4e0a\u7684 RAID5/6 \u8ba1\u7b97\u6027\u80fd\u3002\\n* 7 \u6708 19 \u65e5\uff0c\u6765\u81ea\u9e92\u9e9f\u7684 Enze Li [\u8d34\u51fa\u4e86](https://lore.kernel.org/loongarch/20230719082732.2189747-1-lienze@kylinos.cn/)\u9f99\u67b6\u6784\u7684\\n [KFENCE](https://www.kernel.org/doc/html/latest/dev-tools/kfence.html) \u9002\u914d\u3002KFENCE\uff08Kernel Electric-Fence\uff0c\u201c\u5185\u6838\u7535\u5b50\u56f4\u680f\u201d\uff09\\n \u662f\u57fa\u4e8e\u91c7\u6837\u7684\u4f4e\u5f00\u9500\u5185\u5b58\u5b89\u5168\u68c0\u67e5\u5de5\u5177\uff0c\u53ef\u4ee5\u5e2e\u52a9\u68c0\u67e5\u5806\u8d8a\u754c\u8bbf\u95ee\u3001\u91ca\u653e\u540e\u4f7f\u7528use-after-free\u3001\u975e\u6cd5\u91ca\u653e\u5185\u5b58\u7b49\u5e38\u89c1\u7684\u5185\u5b58\u5b89\u5168 bug\u3002\\n* 7 \u6708 18 \u65e5\uff0c\u4e0a\u6e38\u5f00\u53d1\u8005 Dan Carpenter \u4e3a\u9f99\u82af\u96c6\u663e\u663e\u63a7\u9a71\u52a8[\u589e\u52a0\u4e86](https://lore.kernel.org/dri-devel/0da6859b-40cc-4b3e-b8b6-fed157517083@moroto.mountain/T/#u)\u4e00\u5904\u9519\u8bef\u5904\u7406\u3002\\n \u7531\u4e8e\u9f99\u82af\u7684\u4ee3\u7801\u7ef4\u62a4\u8005\u4f3c\u4e4e\u4e00\u5f00\u59cb\u5e76\u4e0d\u60f3\u63a5\u53d7\u8be5\u8865\u4e01\uff0c\u52a0\u4e4b\u4f7f\u7528\u4e86\u9519\u8bef\u7684\u82f1\u8bed\u8868\u8fbe\uff0c\u5dee\u70b9\u5435\u8d77\u6765\uff0c\u8fd8\u597d\u540e\u8fb9\u548c\u5e73\u89e3\u51b3\u4e86\u3002\\n \uff08\u7b14\u8005\u5e76\u672a\u53c2\u4e0e\u8c03\u89e3\uff0c\u4f46\u7591\u4f3c\u662f\u6709\u56fd\u4eba\u670b\u53cb\u770b\u61c2\u4e86\u4e2d\u5f0f\u82f1\u8bed\uff0c\u79c1\u804a\u544a\u77e5\u4e86 Dan \u9f99\u82af\u7ef4\u62a4\u8005\u5b9e\u9645\u60f3\u8868\u8fbe\u7684\u542b\u4e49\u3002\uff09\\n\\n### \u5de5\u5177\u94fe\\n\\n#### LLVM\\n\\n\u9884\u8ba1\u5728\u4e2d\u56fd\u65f6\u95f4 7 \u6708 25~26 \u65e5\u671f\u95f4\uff0cLLVM 17 \u5c06\u4ece\u4e3b\u7ebf\u5207\u51fa\uff0c\u5982\u65e0\u91cd\u5927\u4e8b\u4ef6\u5219\u9884\u8ba1\u5728 6 \u5468\u540e\u6b63\u5f0f\u53d1\u5e03\u3002\\n\u8be5\u7248\u672c\u5982\u540c binutils 2.41\uff0c\u4e5f\u5c06\u5305\u542b\u5b8c\u6574\u7684 LA64 v1.00 \u6307\u4ee4\u6c47\u7f16\u3001\u53cd\u6c47\u7f16\u652f\u6301\u3002LLD \u7684\u9f99\u67b6\u6784\u79fb\u690d\u9884\u8ba1\u4e0d\u4f1a\u5728\u672c\u5468\u5185\u5b8c\u6210\uff08\u5c3d\u7ba1\u8fdb\u884c\u5230\u4e86\u6700\u540e\u7684\u5fae\u8c03\u5de5\u4f5c\uff09\uff0c\\n\u4f46\u7ecf\u4e0a\u6e38\u7ef4\u62a4\u8005 MaskRay \u8bc1\u5b9e\uff0c\u4e00\u65e6\u5176\u4ee3\u7801\u901a\u8fc7\u5ba1\u67e5\uff0c\u4e5f\u5c06\u80fd\u591f\u8fdb\u5165 LLVM 17 \u53d1\u5e03\u5206\u652f\u3002\\n\\n7 \u6708 21 \u65e5\uff0cwangleiat [\u63d0\u4ea4\u4e86](https://reviews.llvm.org/D155917)\u9f99\u67b6\u6784\u865a\u62df\u5316\u6269\u5c55\uff08LVZ\uff09\\n\u4e0e\u4e8c\u8fdb\u5236\u7ffb\u8bd1\u6269\u5c55\uff08LBT\uff09\u7684\u6307\u4ee4\u6c47\u7f16\u3001\u53cd\u6c47\u7f16\u652f\u6301\uff0c\u5df2\u4e8e 7 \u6708 24 \u65e5\u8fdb\u5165\u4e3b\u7ebf\uff0c\\n\u8d76\u4e0a\u4e86 LLVM 17 \u7684\u53d1\u5e03\u8282\u594f\u3002\\n\\n7 \u6708 20 \u65e5\uff0cwangleiat \u4e3a Clang \u589e\u52a0\u4e86 [LSX](https://reviews.llvm.org/D155829)\\n\u4e0e [LASX](https://reviews.llvm.org/D155830) \u7684 intrinsics \u652f\u6301\uff0c\\n\u7b2c\u4e8c\u5929 leecheechen \u4e3a\u5b83\u4eec\u5206\u522b[\u8865\u4e0a](https://reviews.llvm.org/D155834)\u4e86[\u6d4b\u8bd5](https://reviews.llvm.org/D155835)\u3002\\n\\n7 \u6708 20 \u65e5\uff0cSixWeining \u4e5f\u4e3a Clang [\u589e\u52a0\u4e86](https://reviews.llvm.org/D155824)\\n`-march=native` \u4e0e `-mtune=` \u547d\u4ee4\u884c\u9009\u9879\u7684\u652f\u6301\u3002\\n\\n## \u6742\u95fb\u64ad\u62a5\\n\\n\\n\\n7 \u6708 21 \u65e5\uff0cxry111 \u5411 OpenSSL \u9879\u76ee\u63d0\u4ea4\u4e86[\u8fd0\u884c\u65f6\u52a8\u6001\u68c0\u6d4b\u9f99\u67b6\u6784\u5411\u91cf\u6269\u5c55\u652f\u6301](https://github.com/openssl/openssl/pull/21509)\u4e0e[\u6784\u5efa\u65f6\u6b63\u786e\u68c0\u6d4b\u9f99\u67b6\u6784](https://github.com/openssl/openssl/pull/21510)\u7684\u8865\u4e01\u3002\u8fd9\u80fd\u4fee\u590d OpenSSL 3.1.x \u7684\u9f99\u67b6\u6784\u914d\u7f6e\u4e0d\u80fd\u642d\u914d\u6ca1\u6709\u5411\u91cf\u652f\u6301\u7684\u5de5\u5177\u94fe\u4f7f\u7528\u7684\u95ee\u9898\u3002\uff08\u5148\u524d\u9f99\u82af\u8d21\u732e\u7684\u4ee3\u7801\u672a\u8003\u8651\u8fd9\u4e00\u70b9\uff0c\u90a3\u4e9b\u5de5\u7a0b\u5e08\u5927\u6982\u7387\u672a\u5728\u793e\u533a\u53d1\u884c\u7248\u7684\u73af\u5883\u4e0b\u8fdb\u884c\u6d4b\u8bd5\u3002\uff09\\n\\n7 \u6708 20 \u65e5\uff0cGentoo \u7684\u9f99\u67b6\u6784\u79fb\u690d\u4ece WD40no rust \u72b6\u6001[\u6bd5\u4e1a\u4e86](https://github.com/gentoo/gentoo/pull/31957)\u3002\\n\u5f85 LLD \u652f\u6301\u4e0a\u6e38\u540e\uff0c\u9884\u8ba1 GNOME3 \u7684 keywording \u5de5\u4f5c\u5c06\u80fd\u591f\u5f88\u5feb\u63a8\u8fdb\u4e86\u3002\\n\\n7 \u6708 19\u300120 \u65e5\uff0cKatyushaScarlet \u5411 [v2ray](https://github.com/v2fly/v2ray-core/pull/2609)\\n\u4e0e [Xray](https://github.com/XTLS/Xray-core/pull/2338) \u5206\u522b\u63d0\u4ea4\u4e86 `loong64`\\n\u7684\u9002\u914d\uff0c\u53ea\u9700\u63d0\u5347\u4e00\u4e2a\u4f9d\u8d56\u7684\u7248\u672c\u5373\u53ef\u7f16\u51fa\u9f99\u67b6\u6784\u7684\u4e8c\u8fdb\u5236\u4e86\u3002\\n\\n7 \u6708 17 \u65e5\uff0c\u9f99\u82af\u5728\u5176 GitHub \u7ec4\u7ec7\u4e0b[\u521b\u5efa\u4e86](https://github.com/loongson/la-softdev-convention)\u540d\u4e3a\\n`la-softdev-convention`\u201c\u9f99\u67b6\u6784\u8f6f\u4ef6\u5f00\u53d1\u7ea6\u5b9a\u201d\u7684\u4ed3\u5e93\uff0c\\n\u5185\u5bb9\u4e5f\u662f\u5148\u524d\u88ab\u5f52\u6863\u7684\u300a\u9f99\u67b6\u6784\u5de5\u5177\u94fe\u7ea6\u5b9a\u300b\u7b49\u6587\u6863\u7684\u5fae\u8c03\u3002\\n\u5982\u540c[\u5148\u524d\u7684 `la-abi-specs` \u4ed3\u5e93](https://github.com/loongson/la-abi-specs)\uff0c[\u5411\u8be5\u5e93\u8d21\u732e](https://github.com/loongson/la-softdev-convention/blob/master/CONTRIBUTING.md)\u4e5f\u9700\u8981\u7b7e\u7f72\u9f99\u82af CLA\u3002\\n\u76ee\u524d\u4ecd\u672a\u6709\u9f99\u82af CLA \u65b9\u9762\u7684\u516c\u5f00\u8fdb\u5ea6\uff0c\u4f46\u89c2\u5bdf\u5230 [@loongson-admin](https://github.com/loongson-admin)\\n\u8d26\u53f7\u4e0b\u51fa\u73b0\u4e86[\u4e00\u4e2a Canonical CLA \u81ea\u52a8\u5316\u6d41\u7a0b\u7684 GitHub Action \u5b9a\u4e49\u7684 fork](https://github.com/loongson-admin/has-signed-canonical-cla)\u3002\\n\\n## \u5f20\u8d34\u680f\\n\\n\u672c\u680f\u76ee\u53ef\u4f9b\u5f20\u8d34\u516c\u76ca\u6027\u8d28\u7684\u5404\u79cd\u4fe1\u606f\u3002\\n\\n* \u672c\u5468\u62a5[\u6301\u7eed\u63a5\u53d7\u7f51\u53cb\u6295\u7a3f][call-for-submissions]\u3002\u6b22\u8fce\u6765\u4e0a\u6e38\u5750\u5750\uff01\\n\\n[call-for-submissions]: https://github.com/loongson-community/areweloongyet/issues/16"},{"id":"this-week-in-loongarch-9","metadata":{"permalink":"/newsletter/this-week-in-loongarch-9","editUrl":"https://github.com/loongson-community/areweloongyet/newsletter/2023-07-17-this-week-in-loongarch-9.md","source":"@site/newsletter/2023-07-17-this-week-in-loongarch-9.md","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 9 \u671f","description":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01","date":"2023-07-17T06:28:39.000Z","formattedDate":"2023\u5e747\u670817\u65e5","tags":[{"label":"\u6bcf\u5468\u4e00\u9f99","permalink":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99"}],"readingTime":4.555,"hasTruncateMarker":true,"authors":[{"name":"WANG Xuerui","title":"\ud83d\udc32\u9f99\u95e8\u5ba2\u6808\u6253\u6742\u7684","url":"https://github.com/xen0n","imageURL":"https://github.com/xen0n.png","key":"xen0n"}],"frontMatter":{"slug":"this-week-in-loongarch-9","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 9 \u671f","authors":["xen0n"],"date":"2023-07-17T06:28:39.000Z","tags":["\u6bcf\u5468\u4e00\u9f99"]},"unlisted":false,"prevItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 10 \u671f","permalink":"/newsletter/this-week-in-loongarch-10"},"nextItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 8 \u671f","permalink":"/newsletter/this-week-in-loongarch-8"}},"content":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01\\n\\n\x3c!-- truncate --\x3e\\n\\n\u5982\u65e0\u7279\u522b\u8bf4\u660e\uff0c\u6587\u4e2d\u63d0\u53ca\u7684\u65e5\u671f\u3001\u65f6\u95f4\u90fd\u4e3a\u5317\u4eac\u65f6\u95f4\uff08UTC+8\uff09\u3002\\n\\n## \u5148\u300c\u9a6c\u300d\u518d\u770b\\n\\n\u672c\u680f\u76ee\u7684\u5185\u5bb9\u5177\u6709\u4e00\u5b9a\u5ef6\u7eed\u6027\uff0c\u5c06\u6301\u7eed\u8ffd\u8e2a\u62a5\u9053 LoongArch® \u9886\u57df\u7684\u91cd\u8981\u6216\u957f\u671f\u9879\u76ee\uff08\u5751\uff09\u3002\\n\\n### Linux\\n\\n7 \u6708 13 \u65e5\uff0chev [\u4fee\u590d\u4e86](https://lore.kernel.org/loongarch/20230713030453.7404-1-wangrui@loongson.cn/)\\n`copy_user_fast` \u548c `clear_user_fast` \u5404\u81ea\u5f02\u5e38\u5904\u7406\u8def\u5f84\u4e2d\u7684\u4e00\u5904\u4e0b\u6ea2\u3002\\n\\n7 \u6708 13 \u65e5\uff0cFreeFlyingSheep [\u8d34\u51fa\u4e86](https://lore.kernel.org/loongarch/cover.1689215889.git.chenfeiyang@loongson.cn/)\\nLS7A \u96c6\u6210\u7f51\u5361\u7684\u9a71\u52a8\u8865\u4e01\u8349\u7a3f\uff0c\u8bf7\u793e\u533a\u7ed9\u70b9\u610f\u89c1\u3002\\n\\n7 \u6708 11 \u65e5\uff0cxen0n \u5c06\u9f99\u67b6\u6784 CPU \u7a7a\u95f2\u65f6\u6267\u884c\u7684\u51fd\u6570\u540d\u5b57[\u52a0\u5165\u4e86](https://lore.kernel.org/loongarch/20230711102202.1206488-1-kernel@xen0n.name/)\\n`perf` \u5de5\u5177\u7684\u76f8\u5173\u5217\u8868\uff0c\u4ee5\u53bb\u9664 `perf` \u8f93\u51fa\u4e2d\u7684\u8fd9\u90e8\u5206\u566a\u58f0\u3002\\n\\n7 \u6708 10 \u65e5\uff0c[@specialpointcentral](https://github.com/specialpointcentral)\\n[\u8d34\u51fa\u4e86](https://lore.kernel.org/loongarch/20230710124048.153562-1-huqi@loongson.cn/)\u9f99\u82af\u4e8c\u8fdb\u5236\u7ffb\u8bd1\u6269\u5c55\uff08LBT\uff09\u7684\u5185\u6838\u9002\u914d\u3002\\n\u622a\u81f3\u53d1\u7a3f\u65f6\u8be5\u8865\u4e01[\u5df2\u8fed\u4ee3\u5230](https://lore.kernel.org/loongarch/20230714132121.107045-1-huqi@loongson.cn/)\u7b2c\u4e09\u7248\u3002\\n\\n7 \u6708 9 \u65e5\uff0c[@donmor](https://github.com/donmor) [\u5c1d\u8bd5\u4fee\u590d](https://lore.kernel.org/loongarch/MEYP282MB2597CD6E861D659E3218148DD933A@MEYP282MB2597.AUSP282.PROD.OUTLOOK.COM/)\u9f99\u67b6\u6784\u5185\u6838\u7684\u547d\u4ee4\u884c\u5904\u7406\uff0c\\n\u4f7f\u5176\u80fd\u6b63\u786e\u652f\u6301\u4ee5\u5185\u5efa\u547d\u4ee4\u884c\u6765\u6269\u5c55\u6216\u4ee3\u66ff\u5f15\u5bfc\u5668\u6240\u4f20\u7684\u547d\u4ee4\u884c\u3002\\n\u622a\u81f3\u53d1\u7a3f\u65f6\u8be5\u8865\u4e01[\u5df2\u8fed\u4ee3\u5230](https://lore.kernel.org/loongarch/MEYP282MB2597514C7A4697A72F829B78D93BA@MEYP282MB2597.AUSP282.PROD.OUTLOOK.COM/)\u7b2c\u56db\u7248\u3002\\n\\n\\n### \u5de5\u5177\u94fe\\n\\n#### LLVM\\n\\n\u4e0a\u5468 7 \u6708 11 \u65e5\u5f00\u59cb hev \u9646\u7eed\u4ea4\u4e86\u4e00\u4e32\u4ee3\u7801\u751f\u6210\u4f18\u5316\uff1a[\u8865\u4e01\u4e00](https://reviews.llvm.org/D154762)\u3001[\u8865\u4e01\u4e8c](https://reviews.llvm.org/D154811)\u3001[\u8865\u4e01\u4e09](https://reviews.llvm.org/D154819)\u3001[\u8865\u4e01\u56db](https://reviews.llvm.org/D154919)\uff0c\u4e3b\u8981\u90fd\u662f\u544a\u8bc9 LLVM \u4f18\u5316\u5668\u66f4\u591a\u76f8\u5173\u4fe1\u606f\u4ee5\u8f85\u52a9\u5176\u51b3\u7b56\u3002\\n\\n\u540c\u6837\u5728 7 \u6708 11 \u65e5\uff0cleecheechen \u4e3a Clang [\u589e\u52a0\u4e86](https://reviews.llvm.org/D154931) LSX/LASX \u7684\u5185\u8054\u6c47\u7f16\u652f\u6301\u3002\\n\\nxen0n \u4e5f\u5728\u8fd9\u4e00\u5929[\u6574\u7406\u4e86](https://reviews.llvm.org/D154916)\u9f99\u67b6\u6784\u6307\u4ee4\u5b9a\u4e49\u6587\u4ef6\u8ba9\u5b83\u6e05\u723d\u4e00\u70b9\uff0c\u4e5f\u4e3a\u63a5\u4e0b\u6765\u7684\u91cd\u6784\u4f5c\u51c6\u5907\u3002\\n\\n#### Rust\\n\\n\u4e2d\u56fd\u65f6\u95f4 7 \u6708 13 \u65e5\u665a\u95f4\uff0cRust 1.71.0 [\u6b63\u5f0f\u53d1\u5e03](https://blog.rust-lang.org/2023/07/13/Rust-1.71.0.html)\u3002\\n\u9f99\u67b6\u6784\u5728\u8be5\u7248\u672c\u9996\u6b21\u4f5c\u4e3a Tier 2 with host tools\u5e26\u5bbf\u4e3b\u5de5\u5177\u7684\u4e8c\u7ea7\u67b6\u6784 \u83b7\u5f97\u652f\u6301\u3002\\n\u5df2\u7ecf\u53ef\u4ee5\u901a\u8fc7 rustup \u88c5\u4e0a\u6807\u51c6\u5e93\uff0c\u7528\u6765\u4ea4\u53c9\u7f16\u8bd1\u4e86\uff08\u5f53\u7136\uff0c\u76ee\u524d\u4ecd\u9700\u81ea\u884c\u51c6\u5907 C/C++ \u4ea4\u53c9\u5de5\u5177\u94fe\uff09\u3002\\n\\n```sh-session\\n$ rustup target list | grep loong\\nloongarch64-unknown-linux-gnu (installed)\\n```\\n\\n\u5728\u6b64\u4e4b\u540e\uff0c\u4e3a\u4e86\u9f99\u67b6\u6784\u7535\u8111\u7528\u6237\u4e5f\u80fd\u65b9\u4fbf\u4f7f\u7528\u5b98\u65b9\u5b89\u88c5\u6e20\u9053\\n[rustup.rs](https://rustup.rs/)\uff0chev [\u63d0\u4ea4\u4e86](https://github.com/rust-lang/rustup/pull/3405)\u4e3a\u5176\u7a33\u5b9a\u5206\u652f\\n\u5f00\u542f\u9f99\u67b6\u6784\u4e8c\u8fdb\u5236\u6784\u5efa\u7684\u53d8\u66f4\u5e76\u8bf7\u6c42\u53d1\u5e03\u65b0\u7248\uff0cxen0n [\u6574\u4e86\u4e2a\u6d3b:\u513f:](https://github.com/rust-lang/rustup/pull/3404)\u8ba9\u5b89\u88c5\u811a\u672c\u53ef\u4ee5\u8bc6\u522b\u65b0\u65e7\u4e16\u754c\uff0c\u4e3a\u65e7\u4e16\u754c\u7528\u6237\u62a5\u4e2a\u53cb\u597d\u7684\u9519\u3002\\n\\n### \u6742\u9879\\n\\n\u777d\u8fdd\u4e24\u5e74\uff0cGNU GRUB \u7684 2.12-rc1 \u7248\u672c\u5728 7 \u6708 10 \u65e5[\u6b63\u5f0f\u88ab tagged](https://lists.gnu.org/archive/html/grub-devel/2023-07/msg00029.html)\u3002\\n2.12 \u6b63\u5f0f\u7248\u9884\u8ba1\u5c06\u5728\u4e00\u4e2a\u6708\u5185\u53d1\u5e03\uff0c\u5c4a\u65f6\u6240\u6709\u53d1\u884c\u7248\u90fd\u53ef\u4ee5\u4e22\u6389\u4e00\u5768\u8865\u4e01\u4e86\u3002\\n\\n## \u793e\u533a\u6574\u6d3b:\u513f:\\n\\n\u672c\u680f\u76ee\u63a5\u53d7\u4efb\u4f55\u7f51\u53cb\u7684\u6295\u7a3f\uff0c\u53ea\u8981\u5185\u5bb9\u4e0e LoongArch® \u6709\u5173\uff0c\u5e76\u53ef\u4ee5\u4e3a\u8bfb\u8005\u5e26\u6765\u4ef7\u503c\uff0c\\n\u65e0\u8bba\u4e25\u8083\u8d21\u732e\uff08\u6574\u7684\u5927\u6d3b:\u513f:\uff09\u6216\u662f\u535a\u541b\u4e00\u7b11\u90fd\u4e00\u6982\u6b22\u8fce\uff01\\n\\n\u65e5\u524d Deepin \u793e\u533a\u6280\u672f\u59d4\u5458\u4f1a\uff08TC\uff09\u5728\u4f8b\u4f1a\u4e0a[\u8ba8\u8bba\u4e86](https://www.freelists.org/post/deepin-devel/-230628)\u5408\u5e76\u9f99\u67b6\u6784\u652f\u6301\u7684\u4e00\u4e9b\u6f5c\u5728\u95ee\u9898\u7b49\u3002\\n\u4f1a\u8bae\u4e5f\u8ba8\u8bba\u4e86 RISC-V \u79fb\u690d\u7684\u7c7b\u4f3c\u95ee\u9898\u3002\uff08\u611f\u8c22 Revy \u7684\u7ebf\u7d22\u6295\u9012\u3002\uff09\\n\\nxen0n [\u6574\u4e86](https://gist.github.com/xen0n/5ee04aaa6cecc5c7794b9a0c3b65fc7f)\u4e2a\\n156 \u5b57\u8282\u7684\u65b0\u65e7\u4e16\u754c\u5185\u6838 ABI \u68c0\u6d4b\u5de5\u5177\\n\uff08\u770b\u6e90\u7801\u9700\u8981\u68af\u5b50\uff0c\u4e0d\u8fc7\u603b\u5171\u4e5f\u6ca1\u51e0\u884c\uff0c\u590d\u6742\u5ea6\u4e3b\u8981\u5728\u4e8e ELF \u5934\u9700\u8981\u624b\u5de5\u6784\u9020\uff09\u3002\\n\\nTry it yourself!\\n\\n```sh-session\\n# highlight-next-line\\n$ base64 -d > check-new-world <pull request\u62c9\u53d6\u8bf7\u6c42 \u5df2[\u88ab Linus \u5408\u5e76][linux-loongarch-6.5]\u3002\\n\u5f53\u5929\u4e0b\u5348 Xi Ruoyao [\u63d0\u8bae][jump-label]\u5c06 `CONFIG_JUMP_LABEL` \u6027\u80fd\u4f18\u5316\u9009\u9879\u9ed8\u8ba4\u5f00\u542f\u3002\\n\\n6 \u6708 29 \u65e5\uff0cTianrui Zhao [\u8d34\u51fa\u4e86][loongarch-kvm-v16]\u7b2c 16 \u7248\u7684\u9f99\u67b6\u6784 KVM\u5185\u6838\u865a\u62df\u673a \u8865\u4e01\u3002\\n\u6b22\u8fce\u540c\u5b66\u4eec\u90fd\u6765\u770b\u770b\u3002\uff08\u611f\u8c22 [@Luo-Chang](https://github.com/Luo-Chang) \u7684\u7ebf\u7d22\u6295\u9012\u3002\uff09\\n\\n6 \u6708 28 \u65e5\uff0cClangBuiltLinux \u7ef4\u62a4\u8005 Nathan Chancellor \u4e3a\u8be5\u9879\u76ee\u7684CI\u6301\u7eed\u96c6\u6210\u57fa\u7840\u8bbe\u65bd[\u63d0\u4ea4\u4e86][cbl-boot-utils-loong]\u9f99\u67b6\u6784\u7684\u5f15\u5bfc\u6d4b\u8bd5\u652f\u6301\u3002\\n\u5341\u5206\u611f\u8c22\u56fd\u9645\u53cb\u4eba\u7684\u5bc6\u5207\u914d\u5408\uff08\u5e38\u5e38\u5728\u8865\u4e01\u53d1\u5e03\u3001\u5408\u5e76\u4e0d\u5230\u4e00\u5c0f\u65f6\u540e\u5c31\u884c\u52a8\u8d77\u6765\u4e86\uff09\uff01\\n\\n[linux-loongarch-6.5]: https://lore.kernel.org/loongarch/168814584495.9404.13332741026535742055.pr-tracker-bot@kernel.org/T/#t\\n[jump-label]: https://lore.kernel.org/loongarch/20230701083247.177482-1-xry111@xry111.site/\\n[loongarch-kvm-v16]: https://lore.kernel.org/loongarch/20230629075538.4063701-1-zhaotianrui@loongson.cn/\\n[cbl-boot-utils-loong]: https://github.com/ClangBuiltLinux/boot-utils/pull/109\\n\\n### \u5de5\u5177\u94fe\\n\\n#### binutils\\n\\n\u4ee5\u4e0b\u5185\u5bb9\u5747\u5df2\u8fdb\u5165\u4e3b\u7ebf\uff0c\u9759\u5f85 binutils 2.41 \u53d1\u5e03\uff1a\\n\\n* FreeFlyingSheep [\u6dfb\u52a0\u4e86](https://sourceware.org/pipermail/binutils/2023-June/127873.html)\u4ee5 `$fcsrX` \u79f0\u547c FCSR\u6d6e\u70b9\u63a7\u5236\u72b6\u6001\u5bc4\u5b58\u5668 \u7684\u652f\u6301\u3002\\n :::info \u4ee5\u524d\u548b\u56de\u4e8b\\n \u4ee5\u524d\u8981\u7528 `$rX` \u79f0\u547c FCSR\uff0c\u4e5f\u5c31\u662f\u8bf4\uff1a\u5f53\u6210\u6574\u6570\u5bc4\u5b58\u5668\uff01\u8fd9\u663e\u7136\u4e0d\u5bf9\uff0c\u800c\u4e14\u8ddf LLVM \u4e5f\u4e0d\u517c\u5bb9\u3002\u73b0\u5728\u4e24\u79cd\u5199\u6cd5\u90fd\u652f\u6301\u4e86\uff0c\u65e7\u5199\u6cd5\u5148\u7559\u4e00\u9635\u5b50\u4e0d\u5220\uff0c\u65b9\u4fbf\u4e0b\u6e38\u8fc1\u79fb\u3002\\n :::\\n* mengqinggang \u6dfb\u52a0\u4e86 [LSX\u3001LASX]\u3001[LVZ\u3001LBT] \u7684\u6307\u4ee4\u5b9a\u4e49\u3002\\n* xen0n [\u6539\u8fdb\u4e86](https://sourceware.org/pipermail/binutils/2023-June/128082.html)\u9f99\u67b6\u6784\u6c47\u7f16\u5668\u3001\u53cd\u6c47\u7f16\u5668\u7684\u4e00\u7cfb\u5217\u884c\u4e3a\uff1a\\n - \u652f\u6301\u4ee5\u5f69\u8272\uff08\u8bed\u6cd5\u9ad8\u4eae\uff09\u663e\u793a\u53cd\u6c47\u7f16\u8f93\u51fa\u4e86\u3002\u53c2\u89c1 `--disassembler-color` \u9009\u9879\u7684\u5e2e\u52a9\u6587\u672c\u3002\\n - \u5728\u4e0d\u5f71\u54cd\u8bed\u4e49\u7684\u524d\u63d0\u4e0b\uff0c\u4f1a\u663e\u793a\u4e00\u4e9b\u4f2a\u6307\u4ee4\u4e86\u3002\\n - \u6709\u7b26\u53f7\u7acb\u5373\u6570\u540e\u8fb9\u4e0d\u4f1a\u6253\u5370\u5bf9\u5e94\u7684\u5341\u516d\u8fdb\u5236\u4f4d\u57df\u8868\u793a\u4e86\u3002\\n - \u672a\u77e5\u6307\u4ee4\u5b57\u5c06\u4f1a\u4ee5 `.word` \u4e3a\u52a9\u8bb0\u7b26\u7684\u5f62\u5f0f\u5c55\u793a\u4e86\u3002\\n - \u9075\u5faa\u89c4\u8303\u6587\u6863\uff0c\u5f03\u7528\u4e86 `$v[01]`\u3001`$fv[01]`\u3001`$x` \u51e0\u4e2a\u8fdc\u53e4\u65f6\u671f\u9057\u7559\u7684\u5bc4\u5b58\u5668\u522b\u540d\uff0c\u73b0\u5728\u4f7f\u7528\u5b83\u4eec\u5c06\u88ab\u8b66\u544a\u3002\\n :::info shenmegui\\n |\u5f03\u7528\u540d\u79f0|\u73b0\u884c\u540d\u79f0|\\n |--------|--------|\\n |`$v0`\u3001`$v1`|`$a0`\u3001`$a1`|\\n |`$fv0`\u3001`$fv1`|`$fa0`\u3001`$fa1`|\\n |`$x`|`$r21`|\\n \u663e\u7136\uff0c\u9664\u4e86\u4e0d\u89c1\u4e8e[\u6b63\u5f0f\u7248\u672c\u7684\u5bc4\u5b58\u5668\u7ea6\u5b9a][lapcs-regs]\u4e4b\u5916\uff0c\u8fd9\u4e9b\u53eb\u6cd5\u66f4\u4f1a\u4e0e\u5411\u91cf\u5bc4\u5b58\u5668\u7684\u6b63\u5f0f\u540d\u79f0 `$vrX`\u3001`$xrX` \u5f62\u6210\u4e25\u91cd\u6df7\u6dc6\u3002\\n :::\\n\\n[LSX\u3001LASX]: https://sourceware.org/pipermail/binutils/2023-June/127990.html\\n[LVZ\u3001LBT]: https://sourceware.org/pipermail/binutils/2023-June/128156.html\\n[lapcs-regs]: https://github.com/loongson/la-abi-specs/blob/release/lapcs.adoc#the-registers\\n\\n#### GCC\\n\\n6 \u6708 30 \u65e5\uff0cChenghui Pan \u4ee3 Lulu Cheng [\u63d0\u4ea4\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-June/623262.html)\\nLSX\u3001LASX \u7684\u4ee3\u7801\u751f\u6210\u652f\u6301\u3002\u8865\u4e01\u6bd4\u8f83\u5927\uff0c\u4e0d\u4fbf\u4ed4\u7ec6\u5ba1\u67e5\uff0c\u76ee\u524d\u5927\u6982\u5728\u62c6\u4e86\u3002\\n\u65e0\u8bba\u5982\u4f55\uff0c\u660e\u5e74 GCC 14.1 \u6b63\u5f0f\u53d1\u5e03\u65f6\uff0c\u8fd9\u4e9b\u652f\u6301\u5927\u6982\u7387\u90fd\u4f1a\u641e\u5b9a\u3002\\n\\n#### LLVM\\n\\n\u4e00\u5468\u95f4\u5408\u5e76\u4e86\u4ee5\u4e0b\u7684\u529f\u80fd\u6539\u8fdb\u7b49\uff1a\\n\\n* xen0n [\u4fee\u590d\u4e86](https://reviews.llvm.org/D153865) CSR/IOCSR \u64cd\u4f5c\u7684\u526f\u4f5c\u7528\u6807\u8bb0\u3002\\n* SixWeining [\u652f\u6301\u4e86](https://reviews.llvm.org/D153872) `R_LARCH_64_PCREL` \u7684\u4ea7\u751f\u3002\\n \u8be5\u652f\u6301\u662f ClangBuiltLinux `CONFIG_JUMP_LABEL` \u7684\u524d\u7f6e\u9700\u6c42\u3002\\n* Ami-zhang \u5b8c\u6210\u4e86 MSan \u5230 LoongArch \u7684\u79fb\u690d\uff08[\u8865\u4e01\u4e00](https://reviews.llvm.org/D140528)\u3001[\u8865\u4e01\u4e8c](https://reviews.llvm.org/D152692)\uff09\u3002\\n\\n\u51fa\u73b0\u4e86\u4ee5\u4e0b\u7684\u65b0\u52a8\u5411\uff1a\\n\\n* wangleiat \u63d0\u4ea4\u4e86 [LSX](https://reviews.llvm.org/D154183)\u3001[LASX](https://reviews.llvm.org/D154195) \u7684\u6307\u4ee4\u5b9a\u4e49\uff0cleecheechen [\u8ddf\u8fdb\u63d0\u4ea4\u4e86](https://reviews.llvm.org/D154197)\u6d4b\u8bd5\u7528\u4f8b\u3002\\n* hev [\u663e\u5f0f\u6807\u8bb0\u4e86](https://reviews.llvm.org/D154192)\u6240\u6709\u6307\u4ee4\u7684\u5c5e\u6027\uff0c\u76f8\u6bd4\u4e8e\u8ba9 LLVM \u731c\uff0c\u53ef\u4ee5\u83b7\u5f97\u66f4\u9ad8\u8d28\u91cf\u7684\u751f\u6210\u4ee3\u7801\u3002\\n\\n#### Rust\\n\\n7 \u6708 1 \u65e5\uff0c\u4e0a\u6e38\u5408\u5e76\u4e86 hev \u7684 LoongArch ELF flags \u4fee\u590d\u3002\u8be5\u4fee\u590d\u4f7f\u5f97\u8f6f\u6d6e\u70b9\u7684 Rust\\n\u6784\u5efa\u4ea7\u7269\u7ec8\u4e8e\u83b7\u5f97\u4e86\u6b63\u786e\u7684 ELF `e_flags` \u5b57\u6bb5\u53d6\u503c\u3002\\n\u8be5\u4fee\u590d\u5c06\u4e8e Rust 1.72.0 \u6b63\u5f0f\u53d1\u5e03\u3002\\n\\n### QEMU\\n\\n6 \u6708 30 \u65e5\uff0cSong Gao [\u63d0\u4ea4\u4e86](https://patchwork.ozlabs.org/project/qemu-devel/list/?series=361811)\\nLASX \u7684\u6307\u4ee4\u6a21\u62df\u652f\u6301\uff0c\u5185\u542b\u6240\u6709 LASX \u6307\u4ee4\u7684\u8bed\u4e49\u5efa\u6a21\u3002\\n\\n## \u793e\u533a\u6574\u6d3b:\u513f:\\n\\n\u672c\u680f\u76ee\u63a5\u53d7\u4efb\u4f55\u7f51\u53cb\u7684\u6295\u7a3f\uff0c\u53ea\u8981\u5185\u5bb9\u4e0e LoongArch® \u6709\u5173\uff0c\u5e76\u53ef\u4ee5\u4e3a\u8bfb\u8005\u5e26\u6765\u4ef7\u503c\uff0c\\n\u65e0\u8bba\u4e25\u8083\u8d21\u732e\uff08\u6574\u7684\u5927\u6d3b:\u513f:\uff09\u6216\u662f\u535a\u541b\u4e00\u7b11\u90fd\u4e00\u6982\u6b22\u8fce\uff01\\n\\n6 \u6708 29 \u65e5\uff0cyetist \u7684 IPXE \u9f99\u67b6\u6784\u79fb\u690d[\u88ab\u4e0a\u6e38\u5408\u5e76](https://github.com/ipxe/ipxe/pull/820)\u3002\\n\u8fd9\u5bf9\u9f99\u67b6\u6784\u673a\u5668\u7684\u65e0\u4eba\u503c\u5b88\u8fd0\u7ef4\u662f\u4e00\u5927\u5229\u597d\u3002\uff08\u611f\u8c22 yetist \u7684\u7ebf\u7d22\u6295\u9012\u3002\uff09\\n\\n## \u5f20\u8d34\u680f\\n\\n\u672c\u680f\u76ee\u76ee\u524d\u53ef\u4f9b\u5f20\u8d34\u516c\u76ca\u6027\u8d28\u7684\u5404\u79cd\u4fe1\u606f\u3002\\n\\n* \u672c\u5468\u62a5[\u6301\u7eed\u63a5\u53d7\u7f51\u53cb\u6295\u7a3f][call-for-submissions]\u3002\u6b22\u8fce\u6765\u4e0a\u6e38\u5750\u5750\uff01\\n\\n[call-for-submissions]: https://github.com/loongson-community/areweloongyet/issues/16\\n\\n### AOSCC 2023\uff1a7 \u6708 15 \u81f3 16 \u65e5\uff0c\u4e0a\u79d1\u5927\u89c1\uff01\\n\\n\u8ddd\u79bb\u4eca\u5e74 AOSCC \u8fd8\u6709\u4e0d\u5230\u4e00\u4e2a\u6708\uff0c\u672c\u6b21\u805a\u4f1a\u7684\u65e5\u7a0b\u7e41\u591a\uff0c\u4e0d\u4ec5\u6709\u793e\u533a\u9879\u76ee\u76f8\u5173\u7684\u5c55\u793a\u3001\u8ba8\u8bba\u548c\u6295\u7968\uff0c\u8fd8\u6709\u8bb8\u591a\u6765\u81ea\u5f00\u6e90\u4e1a\u754c\u7684\u4ee3\u8868\u95e8\u5c06\u4f1a\u5230\u573a\u5206\u4eab\u7ecf\u9a8c\uff0c\u56de\u7b54\u95ee\u9898\u3002\\n\\n\u8be6\u89c1\uff1a[\u6d3b\u52a8\u65e5\u7a0b](https://wiki.aosc.io/zh/community/aoscc/2023/)\u3002\\n\\n#### \u201c\u9f99\u82af\u4e0e\u4f60\uff1a\u4f60\u95ee\u6211\u7b54\u201d\u95ee\u9898\u5f81\u96c6\\n\\n\u8fd1\u5e74\u6765\uff0c\u7531 LoongArch \u67b6\u6784\u9a71\u52a8\u7684\u9f99\u82af 5000 \u7cfb\u5217\u5904\u7406\u5668\u5c55\u73b0\u51fa\u4e86\u76f8\u5f53\u53ef\u89c2\u7684\u6027\u80fd\u63d0\u5347\uff0c\u4ea6\u5728\u5f00\u6e90\u793e\u533a\u4e2d\u6536\u83b7\u4e86\u4e0d\u5c11\u4eba\u6c14\uff1b\u4e0e\u6b64\u540c\u65f6\uff0c\u4f01\u4e1a\u4e0e\u793e\u533a\u7684\u201c\u65b0\u65e7\u4e16\u754c\u201d\u4ea4\u66ff\u4e0e\u5728\u4e0a\u6e38\u7684\u78b0\u649e\u4e0e\u4ea4\u6d41\u4e5f\u6210\u4e3a\u4e86\u6700\u8fd1\u51e0\u5e74 LoongArch \u751f\u6001\u53c2\u4e0e\u8005\u4eec\u65f6\u523b\u5173\u6ce8\u7684\u4e8b\u60c5\u3002\u672c\u6b21 AOSCC \u6211\u4eec\u6709\u5e78\u9080\u8bf7\u5230\u4e86\u6765\u81ea LoongArch \u793e\u533a\u7684\u4e0a\u6e38\u8d21\u732e\u8005\u548c\u9f99\u82af\u4e2d\u79d1\u7684\u5de5\u7a0b\u5e08\u4eec\u6765\u4e00\u540c\u4ecb\u7ecd\u548c\u89e3\u7b54\u5404\u4f4d\u7684\u95ee\u9898\u548c\u7591\u60d1\u3002\\n\\n\u8003\u8651\u5230\u65e5\u7a0b\u5b89\u6392\u8f83\u4e3a\u7d27\u51d1\uff0c\u6211\u4eec\u51b3\u5b9a\u63d0\u524d\u6536\u96c6\u793e\u533a\u63d0\u95ee\uff0c\u8bf7[\u4f7f\u7528\u672c\u95ee\u5377](https://forms.gle/QgdzPmcXqjwitmQm7)\u63d0\u4ea4\u60a8\u5e0c\u671b\u5f97\u5230\u89e3\u7b54\u7684\u95ee\u9898\u3002\\n\\n#### \u4e0e\u4f1a\u8005\u767b\u8bb0\\n\\n\u7531\u4e8e\u672c\u6b21 AOSCC \u7ebf\u4e0b\u6d3b\u52a8\u5728\u4e0a\u6d77\u79d1\u6280\u5927\u5b66\u4e3e\u884c\uff0c\u6821\u65b9\u5b89\u4fdd\u8981\u6c42\u6765\u8bbf\u8005\u767b\u8bb0\u4e2a\u4eba\u4fe1\u606f\uff0c\u6709\u610f\u53c2\u52a0\u7ebf\u4e0b\u6d3b\u52a8\u7684\uff0c\u8bf7\u4e8e 7 \u6708 13 \u65e5\u524d[\u586b\u5199\u767b\u8bb0\u95ee\u5377](https://forms.gle/vc8sd3yah7eMNmoP7)\u3002\\n\\n:::info \u8bf4\u660e\\n\u672c\u8868\u683c\u4ec5\u7531\u793e\u533a\u4ee3\u8868\uff08\u767d\u94ed\u9aa2\uff09\u548c GeekPie \u5bf9\u63a5\u4ee3\u8868\uff08\u79e6\u6590\u7136\uff09\u67e5\u9605\uff0c\u5e76\u4ea4\u7531\u6821\u65b9\u5f55\u5165\u3002\\n:::"},{"id":"these-weeks-in-loongarch-6","metadata":{"permalink":"/newsletter/these-weeks-in-loongarch-6","editUrl":"https://github.com/loongson-community/areweloongyet/newsletter/2023-06-27-these-weeks-in-loongarch-6.md","source":"@site/newsletter/2023-06-27-these-weeks-in-loongarch-6.md","title":"\u6bcf\u5468\u4e24\u9f99\uff1a\u7b2c 6 \u671f","description":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01","date":"2023-06-27T05:57:42.000Z","formattedDate":"2023\u5e746\u670827\u65e5","tags":[{"label":"\u6bcf\u5468\u4e00\u9f99","permalink":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99"}],"readingTime":4.95,"hasTruncateMarker":true,"authors":[{"name":"WANG Xuerui","title":"\ud83d\udc32\u9f99\u95e8\u5ba2\u6808\u6253\u6742\u7684","url":"https://github.com/xen0n","imageURL":"https://github.com/xen0n.png","key":"xen0n"}],"frontMatter":{"slug":"these-weeks-in-loongarch-6","title":"\u6bcf\u5468\u4e24\u9f99\uff1a\u7b2c 6 \u671f","authors":["xen0n"],"date":"2023-06-27T05:57:42.000Z","tags":["\u6bcf\u5468\u4e00\u9f99"]},"unlisted":false,"prevItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 7 \u671f","permalink":"/newsletter/this-week-in-loongarch-7"},"nextItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 5 \u671f","permalink":"/newsletter/this-week-in-loongarch-5"}},"content":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01\\n\\n\x3c!-- truncate --\x3e\\n\\n\u56e0\u4e3a\u7b14\u8005\u4e0a\u5468:sheep:\u4e86\uff0c\u672c\u671f\u6539\u4e3a\u5468\u4e8c\u66f4\u65b0\u524d\u4e24\u5468\u7684\u5185\u5bb9\uff0c\u9884\u8ba1\u4e0b\u671f\u6062\u590d\u5468\u4e00\u66f4\u65b0\u3002\\n\\n\u5982\u65e0\u7279\u522b\u8bf4\u660e\uff0c\u6587\u4e2d\u63d0\u53ca\u7684\u65e5\u671f\u3001\u65f6\u95f4\u90fd\u4e3a\u5317\u4eac\u65f6\u95f4\uff08UTC+8\uff09\u3002\\n\\n## \u5148\u300c\u9a6c\u300d\u518d\u770b\\n\\n\u672c\u680f\u76ee\u7684\u5185\u5bb9\u5177\u6709\u4e00\u5b9a\u5ef6\u7eed\u6027\uff0c\u5c06\u6301\u7eed\u8ffd\u8e2a\u62a5\u9053 LoongArch® \u9886\u57df\u7684\u91cd\u8981\u6216\u957f\u671f\u9879\u76ee\uff08\u5751\uff09\u3002\\n\\n### ClangBuiltLinux\\n\\n[\u4e0a\u6e38\u7684\u8ddf\u8e2a issue](https://github.com/ClangBuiltLinux/linux/issues/1787)\\n\u4e5f\u4f1a\u53ca\u65f6\u53cd\u6620\u6700\u65b0\u52a8\u6001\u3002\\n\u9274\u4e8e\u8be5\u5021\u8bae\u7684\u9f99\u67b6\u6784\u90e8\u5206\u4e3b\u4f53\u5de5\u4f5c\u5df2\u7ecf\u5b8c\u6210\uff0c\u540e\u7eed\u76f8\u5173\u5de5\u4f5c\u5c06\u5728 Linux \u4e00\u8282\u5408\u5e76\u62a5\u9053\u3002\\n\\n\u611f\u8c22 [@heiher](https://github.com/heiher) \u7684\u53c2\u4e0e\uff0c\u76ee\u524d\u6253\u8fc7\u8865\u4e01\u7684 LLVM/Clang\\n\u5df2\u7ecf\u53ef\u4ee5\u6784\u5efa\u57fa\u672c\u7684 LoongArch Linux \u955c\u50cf\u4e86\u3002\\n\u622a\u81f3\u53d1\u7a3f\u65f6[\u76f8\u5173\u5185\u6838\u8865\u4e01](https://lore.kernel.org/loongarch/20230625095644.3156349-1-kernel@xen0n.name/)\u5df2\u88ab\u63a5\u53d7\uff0c\\n\u5c06\u8fdb\u5165 v6.5-rc1\uff1b\\nLLVM \u7684\u53d8\u66f4\u60c5\u51b5\u89c1 LLVM \u4e00\u8282\u3002\\n\u4e0a\u6e38\u793e\u533a[\u706b\u901f\u8ddf\u8fdb\u4e86](https://github.com/ClangBuiltLinux/boot-utils/issues/108)\u76f8\u5173\u7684\u81ea\u52a8\u5316\u5f15\u5bfc\u6d4b\u8bd5\u652f\u6301\uff0c\\n\u53d1\u73b0\u7684\u5c0f\u5751\u5c06\u5728\u672c\u5468\u5feb\u901f\u586b\u5e73\uff0c\u540e\u7eed\u7684 LLVM/Clang \u517c\u5bb9\u6027\u5c06\u7531\u8be5\u8bbe\u65bd\u81ea\u52a8\u5316\u4fdd\u8bc1\u3002\\n\\n\u76ee\u524d\u8fd8\u7f3a\u6a21\u5757\u548c\u53ef\u91cd\u5b9a\u4f4d\uff08`CONFIG_RELOCATABLE`\uff09\u652f\u6301\uff0c\u8fd9\u90e8\u5206\u9884\u8ba1\u5728\u540e\u7eed\u7684\u5f00\u53d1\u5468\u671f\u4e5f\u4f1a\u6162\u6162\u89e3\u51b3\u6389\u3002\\n\\n### Linux\\n\\n\u76ee\u524d Linux v6.5 \u7684\u5408\u5e76\u7a97\u53e3\u5df2\u7ecf\u5f00\u542f\u3002\u672c\u5468\u671f\u7684\u9f99\u67b6\u6784\u76f8\u5173\u91cd\u5927\u53d8\u66f4\u6709\uff1a\\n\\n* [\u5411\u91cf\u6269\u5c55\u652f\u6301](https://lore.kernel.org/loongarch/20230613151918.2039498-1-chenhuacai@loongson.cn/)\u3002\\n \u9700\u8981\u7f16\u8bd1\u5668\u3001\u6c47\u7f16\u5668\u652f\u6301\u5411\u91cf\u6307\u4ee4\uff0c\u624d\u80fd\u6253\u5f00\u76f8\u5e94 Kconfig \u914d\u7f6e\u9879\u3002\\n \u8fc7\u4e00\u9635\u5b50\u5e94\u8be5\u90fd\u80fd\u7528\u4e0a\u4e86\u3002\\n* 3A6000/LA664 \u7684[\u7ec6\u7c92\u5ea6\u5185\u5b58\u6805\u969c\u652f\u6301](https://lore.kernel.org/loongarch/20230516124536.535343-1-chenhuacai@loongson.cn/)\u3002\\n* 3A6000/LA664 \u7684[\u540c\u65f6\u591a\u7ebf\u7a0b\uff08SMT\uff0c\u201c\u8d85\u7ebf\u7a0b\u201d\uff09\u652f\u6301](https://lore.kernel.org/loongarch/20230614093755.88881-1-wangliupu@loongson.cn/)\u3002\\n \u8865\u4e01\u900f\u9732\u8be5\u652f\u6301\u9700\u8981\u56fa\u4ef6\u914d\u5408\uff0c\u4ee5\u6700\u521d\u7528\u4e8e AArch64 \u7684 ACPI PPTT \u8868\u7ed3\u6784\u4f20\u9012\u5904\u7406\u5668\u6838\u7684\u62d3\u6251\u4fe1\u606f\u3002\\n* 3A6000/LA664 \u7684[\u786c\u4ef6\u9875\u8868\u904d\u5386\u5355\u5143\u652f\u6301](https://lore.kernel.org/loongarch/20230516124610.535360-1-chenhuacai@loongson.cn/)\u3002\\n* \u521d\u6b65\u7684 ClangBuiltLinux \u9002\u914d\u3002\\n\\n\u8be6\u60c5\u8bf7[\u79fb\u6b65\u9f99\u67b6\u6784\u7684\u4e0a\u6e38\u96c6\u6210\u5206\u652f](https://git.kernel.org/chenhuacai/linux-loongson/l/loongarch-next)\u3002\\n\\n6 \u6708 20 \u65e5\uff0cYouling Tang \u57fa\u4e8e :ta: [4 \u6708\u4efd\u7684 libelf \u5de5\u4f5c](https://sourceware.org/pipermail/elfutils-devel/2023q2/006107.html)\uff0c\\n\u5f00\u59cb\u5c06 [ORC unwinder](https://www.kernel.org/doc/html/latest/arch/x86/orc-unwinder.html)\\n\u79fb\u690d\u5230\u9f99\u67b6\u6784\uff1a[\u53d1\u51fa\u4e86](https://lore.kernel.org/loongarch/1687247209-31676-1-git-send-email-tangyouling@loongson.cn/)\u4e00\u7248\u521d\u7a3f\u8865\u4e01\u3002\\n\uff08\u611f\u8c22 [@xry111](https://github.com/xry111) \u7684\u65b0\u95fb\u7ebf\u7d22\u3002\uff09\\n\\n### \u5de5\u5177\u94fe\\n\\n#### binutils\\n\\n6 \u6708 25 \u65e5\uff0cmengqinggang \u5411 GNU binutils \u90ae\u4ef6\u5217\u8868[\u63d0\u4ea4\u4e86](https://sourceware.org/pipermail/binutils/2023-June/127990.html) LSX/LASX \u652f\u6301\uff0c\\n\u53c8[\u6dfb\u52a0\u4e86](https://sourceware.org/pipermail/binutils/2023-June/127993.html) `R_LARCH_64_PCREL` \u652f\u6301\u3002\\n\\n#### LLVM\\n\\n\u4e24\u5468\u95f4\u5408\u5e76\u4e86\u4ee5\u4e0b\u7684\u529f\u80fd\u6539\u8fdb\u7b49\uff1a\\n\\n* SixWeining [\u5141\u8bb8\u4e86](https://reviews.llvm.org/D150196)\u5728\u4efb\u4f55\u573a\u666f\u4e0b\u4f7f\u7528\u6d6e\u70b9\u3001\u5411\u91cf\u7b49\u6269\u5c55\u6307\u4ee4\uff0c\u4ee5\u4fbf\u88f8\u673a\u8f6f\u4ef6\u3001\u5185\u6838\u7b49\u5177\u5907\u8db3\u591f\u63a7\u5236\u529b\u7684\u7a0b\u5e8f\u5728\u672c\u8eab\u4e0d\u4f7f\u7528\u8fd9\u4e9b\u6307\u4ee4\u7684\u524d\u63d0\u4e0b\uff0c\u4ecd\u7136\u80fd\u591f\u81ea\u884c\u7ba1\u7406\u76f8\u5e94\u786c\u4ef6\u8d44\u6e90\u3002\\n :::info \u8fd9\u662f\u4e3a\u5565\\n \u9f99\u67b6\u6784\u4e0b\uff0c\u7ba1\u7406\u6269\u5c55\u8d44\u6e90\u9700\u8981\u7528\u5230\u6269\u5c55\u6307\u4ee4\uff0c\u4f46\u5148\u524d\u5982\u679c\u544a\u77e5 LLVM \u4e0d\u4f7f\u7528\u8fd9\u4e9b\u6307\u4ee4\uff0c\u90a3\u4e48\u53ea\u8981\u5c1d\u8bd5\u4f7f\u7528\u90fd\u4f1a\u62a5\u9519\u3002\\n \u5373\u4fbf\u7a0b\u5e8f\u5458\u77e5\u9053\u81ea\u5df1\u5728\u505a\u4ec0\u4e48\u3001\u54ea\u4e9b\u5730\u65b9\u7684\u624b\u5199\u6c47\u7f16\u7528\u5230\u6269\u5c55\u6307\u4ee4\u4e5f\u662f\u5b89\u5168\u7684\uff0c\u4e5f\u6ca1\u6cd5\u641e\u3002\\n :::\\n* xen0n \u4e3a `llvm-objcopy` [\u6dfb\u52a0\u4e86](https://reviews.llvm.org/D153609)\u9f99\u67b6\u6784\u652f\u6301\u3002\\n* xen0n \u4f7f Clang \u5904\u7406 `-m*-float` \u53c2\u6570\u65f6[\u4e5f\u4e0d\u5fd8\u68c0\u67e5](https://reviews.llvm.org/D153707) `-mabi`\u3001`-mfpu` \u9009\u9879\u3002\\n\\n\u51fa\u73b0\u4e86\u4ee5\u4e0b\u7684\u65b0\u52a8\u5411\uff1a\\n\\n* Ami-zhang \u63a5\u8fd1\u5b8c\u6210\u4e86 MSan \u7684\u9f99\u67b6\u6784\u79fb\u690d\uff1a[D140528](https://reviews.llvm.org/D140528)\u3001[D152692](https://reviews.llvm.org/D152692)\uff0c\u4e0d\u65e5\u5c06\u5408\u5e76\u3002\\n\\n## \u793e\u533a\u6574\u6d3b:\u513f:\\n\\n\u672c\u680f\u76ee\u63a5\u53d7\u4efb\u4f55\u7f51\u53cb\u7684\u6295\u7a3f\uff0c\u53ea\u8981\u5185\u5bb9\u4e0e LoongArch® \u6709\u5173\uff0c\u5e76\u53ef\u4ee5\u4e3a\u8bfb\u8005\u5e26\u6765\u4ef7\u503c\uff0c\\n\u65e0\u8bba\u4e25\u8083\u8d21\u732e\uff08\u6574\u7684\u5927\u6d3b:\u513f:\uff09\u6216\u662f\u535a\u541b\u4e00\u7b11\u90fd\u4e00\u6982\u6b22\u8fce\uff01\\n\\n[loongarch-opcodes \u9879\u76ee](https://github.com/loongson-community/loongarch-opcodes)\u6574\u7406\u5b8c\u6210\u4e86\u6240\u6709\\nLSX\u3001LASX \u6307\u4ee4\u7f16\u7801\u4fe1\u606f\u3002\u6709\u9700\u8981\u7684\u540c\u5b66\u53ef\u4ee5\u53c2\u8003\u8d77\u6765\u4e86\u3002\\n\u5728\u9f99\u82af\u516c\u5e03\u300a\u9f99\u82af\u67b6\u6784\u53c2\u8003\u624b\u518c\u300b\u5377\u4e8c\u4e4b\u524d\uff0c\u793e\u533a\u540c\u5b66\u4e5f\u53ef\u4ee5\u6839\u636e QEMU \u6e90\u7801\uff0c\u63a8\u8fdb\u6307\u4ee4\u6587\u6863\u7684\u7f16\u64b0\u4e86\u3002\\n\\n\u8fd1\u65e5 Gentoo \u793e\u533a\u4e00\u4f4d\u56fd\u9645\u53cb\u4eba\u62ff\u5230\u4e86 7A2000 \u677f\u5b50\uff0c\u9f99\u67b6\u6784\u7684\u670b\u53cb\u9010\u6e10\u589e\u591a :sunglasses:\\n\\n## \u5f20\u8d34\u680f\\n\\n\u672c\u680f\u76ee\u76ee\u524d\u53ef\u4f9b\u5f20\u8d34\u516c\u76ca\u6027\u8d28\u7684\u5404\u79cd\u4fe1\u606f\u3002\\n\\n* \u672c\u5468\u62a5[\u6301\u7eed\u63a5\u53d7\u7f51\u53cb\u6295\u7a3f][call-for-submissions]\u3002\u6b22\u8fce\u6765\u4e0a\u6e38\u5750\u5750\uff01\\n\\n[lauosc-debian]: https://bbs.loongarch.org/d/167-lauosc-debian-12-ports\\n[call-for-submissions]: https://github.com/loongson-community/areweloongyet/issues/16"},{"id":"this-week-in-loongarch-5","metadata":{"permalink":"/newsletter/this-week-in-loongarch-5","editUrl":"https://github.com/loongson-community/areweloongyet/newsletter/2023-06-12-this-week-in-loongarch-5.md","source":"@site/newsletter/2023-06-12-this-week-in-loongarch-5.md","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 5 \u671f","description":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01","date":"2023-06-12T06:42:22.000Z","formattedDate":"2023\u5e746\u670812\u65e5","tags":[{"label":"\u6bcf\u5468\u4e00\u9f99","permalink":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99"}],"readingTime":6.82,"hasTruncateMarker":true,"authors":[{"name":"WANG Xuerui","title":"\ud83d\udc32\u9f99\u95e8\u5ba2\u6808\u6253\u6742\u7684","url":"https://github.com/xen0n","imageURL":"https://github.com/xen0n.png","key":"xen0n"}],"frontMatter":{"slug":"this-week-in-loongarch-5","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 5 \u671f","authors":["xen0n"],"date":"2023-06-12T06:42:22.000Z","tags":["\u6bcf\u5468\u4e00\u9f99"]},"unlisted":false,"prevItem":{"title":"\u6bcf\u5468\u4e24\u9f99\uff1a\u7b2c 6 \u671f","permalink":"/newsletter/these-weeks-in-loongarch-6"},"nextItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 4 \u671f","permalink":"/newsletter/this-week-in-loongarch-4"}},"content":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01\\n\\n\x3c!-- truncate --\x3e\\n\\n\u5982\u65e0\u7279\u522b\u8bf4\u660e\uff0c\u6587\u4e2d\u63d0\u53ca\u7684\u65e5\u671f\u3001\u65f6\u95f4\u90fd\u4e3a\u5317\u4eac\u65f6\u95f4\uff08UTC+8\uff09\u3002\\n\\n## \u8981\u95fb\u901f\u9012\\n\\n6 \u6708 5 \u65e5\uff0cGitHub loongson \u7ec4\u7ec7\u4e0b\u51fa\u73b0\u4e86\u65b0\u7684\u53ef\u534f\u4f5c\u7684\u6587\u6863\u5e93\uff1a[la-abi-specs](https://github.com/loongson/la-abi-specs)\u3002\\n\u8fd9\u53ef\u88ab\u89c6\u4e3a\u9f99\u82af\u516c\u53f8\u5728 [LoongArch-Documentation \u5e93](https://github.com/loongson/LoongArch-Documentation)\u88ab\u5f52\u6863\u4e4b\u540e\u7ed9\u51fa\u7684\u89e3\u51b3\u65b9\u6848\u3002\\n\\n\u6ce8\u610f\uff1a\u6b64\u6587\u6863\u5e93\u7684\u8bb8\u53ef\u8bc1\u4ecd\u7136\u4e3a CC-BY-NC-ND 4.0\uff0c\u5e76\u4e14\u6dfb\u52a0\u4e86\u5fc5\u987b\u7b7e\u7f72\u8d21\u732e\u8005\u8bb8\u53ef\u534f\u8bae\uff08CLA\uff09\u624d\u80fd\u53c2\u4e0e\u8d21\u732e\u7684\u63d0\u793a\u3002\\n\u76ee\u524d CLA \u76f8\u5173\u4e8b\u5b9c\u4ecd\u7136\u53ea\u80fd\u901a\u8fc7\u8be2\u95ee\u76f8\u5173\u4eba\u5458\u4e86\u89e3\uff1b\u7b14\u8005\u4e86\u89e3\u5230\u7684\u60c5\u51b5\u662f\uff1a\\n\\n* CLA \u5df2\u7ecf\u5b9a\u7a3f\uff0c\u4e0d\u65e5\u5c06\u4e8e\u9f99\u82af\u5b98\u7f51\u6216\u5176\u4ed6\u6e20\u9053\u516c\u5f00\u3002\\n* \u540e\u7eed\u4f1a\u63d0\u4f9b\u7f51\u9875\u7b49\u81ea\u52a8\u5316\u7684\u7b7e\u7f72\u3001\u6821\u9a8c\u65b9\u5f0f\u3002\\n* \u8be5 CLA \u4e0e Google CLA \u7c7b\u4f3c\uff0c\u4f46\u6dfb\u52a0\u4e86\u66f4\u591a\u9650\u5236\u6027\u6761\u6b3e\uff0c\u8bf7\u8d21\u732e\u8005\u4eec\u6ce8\u610f\u3002\\n\\n:::warning\\n\u7b14\u8005\u4e0d\u662f\u5f8b\u5e08\uff0c\u4ee5\u4e0b\u7684\u5206\u6790\u4e0d\u662f\u6cd5\u5f8b\u5efa\u8bae\u3002\u8bf7\u5f85\u9f99\u82af CLA \u6587\u672c\u6b63\u5f0f\u516c\u5e03\u4e4b\u540e\u81ea\u884c\u9605\u8bfb\u3001\u5224\u65ad\u3002\\n:::\\n\\n\u4e0e Google CLA \u76f8\u6bd4\uff0c\u5177\u4f53\u7684\u4e0d\u540c\u4e4b\u5904\u5305\u62ec\u4f46\u4e0d\u9650\u4e8e\uff1a\\n\\n* \u65b0\u589e\u4e86**\u5176\u4ed6\u77e5\u8bc6\u4ea7\u6743\u6743\u5229\u6388\u4e88\u6761\u6b3e**\u3002\\n\\n \u5728 Google CLA \u7b2c 3 \u6761\u4e0e\u7b2c 4 \u6761\u4e4b\u95f4\uff0c\u6dfb\u52a0\u4e86\u5173\u4e8e\u300c\u5176\u4ed6\u77e5\u8bc6\u4ea7\u6743\u6743\u5229\u300d\u5982\u5546\u6807\u6743\u3001\u6280\u672f\u79d8\u5bc6\u3001\u4e13\u6709\u6280\u672f\u7b49\u7684\u6743\u5229\u8bb8\u53ef\u6388\u4e88\u6761\u6b3e\u3002\\n\\n* \u65b0\u589e\u4e86**\u6eaf\u53ca\u65e2\u5f80\u6761\u6b3e**\u3002\\n\\n \u53ea\u8981\u7b7e\u7f72\u8be5 CLA\uff0c\u6743\u5229\u8bb8\u53ef\u5c06\u81ea\u300c\u60a8\u300d\u9996\u6b21\u5411\u9f99\u82af\u4e2d\u79d1\u63d0\u4ea4\u8d21\u732e\u4e4b\u65e5\u8d77\u751f\u6548\uff0c\u5e76\u975e\u4ece\u7b7e\u7f72\u65f6\u523b\u8d77\u3002\\n\\n :::info\\n FSF copyright assignment \u7b49\u6709\u7c7b\u4f3c\u5b89\u6392\u7684\u534f\u8bae\u4e00\u822c\u4e5f\u4f1a\u63d0\u4f9b\u4e0d\u6eaf\u53ca\u65e2\u5f80\u7684\u534f\u8bae\u6587\u672c\u7248\u672c\u3002\\n :::\\n\\n* \u65b0\u589e\u4e86**\u7ea6\u5b9a\u7ba1\u8f96\u6761\u6b3e**\u3002\\n\\n \u7ea6\u5b9a\u4f7f\u7528\u4e2d\u534e\u4eba\u6c11\u5171\u548c\u56fd\u6cd5\u5f8b\u3002\\n \u4f46\u8fdb\u4e00\u6b65\u7ea6\u5b9a\u4e86\u300c\u4efb\u4f55\u7531\u672c\u534f\u8bae\u4ea7\u751f\u7684\u6cd5\u5f8b\u8bc9\u8bbc\u6216\u7a0b\u5e8f\u5747\u5e94\u6392\u4ed6\u6027\u5730\u63d0\u4ea4\u81f3\u9f99\u82af\u4e2d\u79d1\u6240\u5728\u5730\u7684\u6cd5\u9662\u8fdb\u884c\u5ba1\u7406\u300d\u3002\\n\\n :::info\\n \u5982\u4e0d\u7ea6\u5b9a\u7ba1\u8f96\uff0c\u4e00\u573a\u6c11\u4e8b\u7ea0\u7eb7\u9ed8\u8ba4\u5e94\u7531\u88ab\u544a\u6240\u5728\u5730\u6cd5\u9662\u7ba1\u8f96\u3002\\n \u8fd9\u662f\u4e3a\u4e86\u63d0\u9ad8\u539f\u544a\u8bc9\u8bbc\u6210\u672c\uff0c\u4ee5\u4f7f\u5176\u4e0d\u6ee5\u7528\u8bc9\u6743\uff08\u5426\u5219\uff0c\u4e00\u4e2a\u672a\u4f5c\u51c6\u5907\u7684\u88ab\u544a\u8981\u4e48\u5c06\u4e0d\u5f97\u4e0d\u5954\u6ce2\u81f3\u539f\u544a\u6240\u5728\u5730\u5e94\u8bc9\uff0c\u8981\u4e48\u627f\u62c5\u4e0d\u5e94\u8bc9\u7684\u4e0d\u5229\u540e\u679c\uff1b\u7b49\u4e8e\u5b58\u5728\u8d77\u8bc9\u8005\u300c\u6298\u817e\u300d\u4ed6\u8005\u7684\u53ef\u80fd\u6027\uff09\u3002\\n \u6309\u7167\u5f53\u524d\u63aa\u8f9e\uff0c\u6b64\u4e0a\u5c42\u8bbe\u8ba1\u5931\u6548\u3002\\n :::\\n\\n* \u65b0\u589e\u4e86**\u591a\u8bed\u8a00\u7248\u672c\u6761\u6b3e**\u3002\\n\\n \u8be5 CLA \u63d0\u4f9b\u4e86\u4e2d\u82f1\u6587\u4e24\u79cd\u7248\u672c\uff0c\u5e76\u7ea6\u5b9a\u4e86\u5982\u6709\u610f\u601d\u51b2\u7a81\uff0c\u5219\u4ee5\u4e2d\u6587\u7248\u4e3a\u51c6\u3002\\n\\n* \u4e0e Google CLA \u7b2c 4 \u6761\u76f8\u6bd4\uff0c\u5173\u4e8e\u5f53\u300c\u60a8\u300d\u662f\u6cd5\u4eba\u65f6\u7684\u627f\u8bfa\u63aa\u8f9e\u6709\u8c03\u6574\u3002\\n\\n## \u5148\u300c\u9a6c\u300d\u518d\u770b\\n\\n\u672c\u680f\u76ee\u7684\u5185\u5bb9\u5177\u6709\u4e00\u5b9a\u5ef6\u7eed\u6027\uff0c\u5c06\u6301\u7eed\u8ffd\u8e2a\u62a5\u9053 LoongArch® \u9886\u57df\u7684\u91cd\u8981\u6216\u957f\u671f\u9879\u76ee\uff08\u5751\uff09\u3002\\n\\n### ClangBuiltLinux\\n\\n[\u4e0a\u6e38\u7684\u8ddf\u8e2a issue](https://github.com/ClangBuiltLinux/linux/issues/1787)\\n\u4e5f\u4f1a\u53ca\u65f6\u53cd\u6620\u6700\u65b0\u52a8\u6001\u3002\\n\\nheiher \u52a0\u5165\u4e86\u6298\u817e\u7684\u884c\u5217\uff0c\u76ee\u524d\u5df2\u7ecf\u5728\u4e00\u5b9a\u7684\u914d\u7f6e\u4e0b\u7cca\u51fa\u4e86\u4e00\u7248\u80fd\u591f\u5de5\u4f5c\u7684\u5185\u6838\u3002\\n\u4f17\u4eba\u62fe\u67f4\u706b\u7130\u9ad8\uff01\u4ed6\u5728\u6298\u817e\u8fc7\u7a0b\u4e2d\u53d1\u73b0\uff1a\\n\\n* LLVM \u4e0d\u5e94\u8be5\u628a\u90a3\u4e9b\u6ca1\u6709\u6570\u636e\u4f9d\u8d56\u7684 CSR\u3001IOCSR \u64cd\u4f5c\u4f18\u5316\u6389\u3002\\n\\n### Linux\\n\\n6 \u6708 7 \u65e5\uff0c\u4e0a\u6e38\u58f0\u97f3\u5b50\u7cfb\u7edf\u7ef4\u62a4\u8005 Takashi Iwai [\u5408\u5e76\u4e86](https://lore.kernel.org/loongarch/87mt1b1rif.wl-tiwai@suse.de/) Yanteng Si \u524d\u4e00\u9635\u8d34\u51fa\u7684 LS7A \u96c6\u6210\u58f0\u5361\u652f\u6301\u8865\u4e01\u3002\\n\\n6 \u6708 5 \u65e5\uff0cYingkun Meng [\u8d34\u51fa\u4e86](https://lore.kernel.org/loongarch/20230605120934.2306548-1-mengyingkun@loongson.cn/)\u9f99\u82af 2K \u7cfb\u5217\u3001LS7A \u7684 I2S \u63a7\u5236\u5668\u652f\u6301\u3002\u8fd9\u4e5f\u662f\u4e00\u79cd\u300c\u96c6\u6210\u58f0\u5361\u300d\u786c\u4ef6\u3002\\n\\n### \u5de5\u5177\u94fe\\n\\n#### GCC\\n\\nchenglulu \u5728\u4f18\u5316 perlbench \u8dd1\u5206\u8fc7\u7a0b\u4e2d\uff0c\u53d1\u73b0\u4e86 [PR 110136](https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110136)\\n\u8fd9\u6837\u4e00\u4e2a\u4e25\u91cd\u5f71\u54cd\u6027\u80fd\u7684\u60c5\u51b5\uff0c\\n\u9042[\u63d0\u4ea4\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-June/621006.html)\u76f8\u5e94\u7684\u4fee\u590d\u8865\u4e01\u3002\\n\\n:::info\\n\u6240\u6709 `jr $ra` \u90fd\u88ab\u89c6\u4e3a\u8fc7\u7a0b\u8c03\u7528\u8fd4\u56de\u3002\\n\u56e0\u6b64\u5982\u679c\u4e00\u822c\u7684\u95f4\u63a5\u8df3\u8f6c\u4e0d\u5e78\u4f7f\u7528\u4e86`$ra` \u5b58\u653e\u76ee\u6807\u5730\u5740\uff0c\\n\u90a3\u4e48\u8fc7\u7a0b\u8c03\u7528\u8fd4\u56de\u548c\u95f4\u63a5\u8df3\u8f6c\u7684\u5206\u652f\u9884\u6d4b\u90fd\u4f1a\u88ab\u7834\u574f\u3002\\n:::\\n\\n#### LLVM\\n\\n\u4e00\u5468\u95f4\u5408\u5e76\u4e86\u4ee5\u4e0b\u7684\u529f\u80fd\u6539\u8fdb\u7b49\uff1a\\n\\n* [\u9ed8\u8ba4\u53ef\u751f\u6210\u975e\u5bf9\u9f50\u8bbf\u5b58](https://reviews.llvm.org/D149946)\u3002\u8fd9\u662f\u7531\u4e8e 2K1000LA \u7b49\u4e0d\u652f\u6301\u786c\u4ef6\u975e\u5bf9\u9f50\u8bbf\u5b58\u7684\u578b\u53f7\u51e0\u4e4e\u4e0d\u89c1\u4e8e\u901a\u7528\u573a\u666f\uff0c\u4e14\u540e\u7eed\u4f1a\u8d8a\u6765\u8d8a\u5c11\uff082K2000\u30012K3000 \u8fd9\u79cd\u9884\u671f\u4f1a\u5927\u6279\u91cf\u51fa\u8d27\u7684 LA364 \u578b\u53f7\u5df2\u88ab\u8bc1\u5b9e\u652f\u6301\uff09\u3002\u6709\u9700\u8981\u9002\u914d LA264\u3001LA132 \u7b49\u578b\u53f7\u7684\u5f00\u53d1\u8005\uff0c\u9700\u81ea\u884c\u8c03\u6574\u7f16\u8bd1\u53c2\u6570\u4ee5\u7981\u7528\u6b64\u884c\u4e3a\u3002\\n* [\u6dfb\u52a0 LAELF v20230519 \u7684\u65b0\u91cd\u5b9a\u4f4d\u7c7b\u578b\u5b9a\u4e49](https://reviews.llvm.org/D152184)\u3002\\n\\n\u51fa\u73b0\u4e86\u4ee5\u4e0b\u7684\u65b0\u52a8\u5411\uff1a\\n\\n* [LLD LoongArch port](https://reviews.llvm.org/D138135) \u7684\u4ee3\u7801\u5ba1\u67e5\u6709\u4e86\u8fdb\u5c55\uff0c\u6b63\u5728\u6539\u4ee3\u7801\u3002\\n* xen0n \u4e3a `RelocationResolver` [\u9002\u914d](https://reviews.llvm.org/D152344) LAELF v20230519 \u7684\u65b0\u91cd\u5b9a\u4f4d\u7c7b\u578b\u3002\\n\\n#### Rust\\n\\n\u81ea[\u6dfb\u52a0\u88f8\u673a LoongArch \u652f\u6301](https://github.com/rust-lang/compiler-team/issues/628)\u7684\u91cd\u5927\u53d8\u66f4\u63d0\u6848Major Change Proposal\u4e8e 6 \u6708 6 \u65e5\u6700\u7ec8\u901a\u8fc7\u540e\uff0c\\nheiher \u65cb\u5373[\u63a8\u8fdb\u4e86](https://github.com/rust-lang/rust/pull/112310)\u5b9e\u73b0\u3002\\n\\n\u4ee5\u4e0b `no_std` targets \u81ea 6 \u6708 8 \u65e5\u7684 nightly \u8d77\uff0c\u5df2\u7ecf\u53ef\u4ee5\u4f7f\u7528\uff0c\u5c06\u51fa\u73b0\u4e8e 1.72.0 \u7248\u672c\uff1a\\n\\n* `loongarch64-unknown-none`\uff0cLA64 LP64D\uff08\u53cc\u7cbe\u5ea6\u786c\u6d6e\u70b9\uff09\u88f8\u673a\\n* `loongarch64-unknown-none-softfloat`\uff0cLA64 LP64S\uff08\u8f6f\u6d6e\u70b9\uff09\u88f8\u673a\\n\\n## \u793e\u533a\u6574\u6d3b:\u513f:\\n\\n\u672c\u680f\u76ee\u63a5\u53d7\u4efb\u4f55\u7f51\u53cb\u7684\u6295\u7a3f\uff0c\u53ea\u8981\u5185\u5bb9\u4e0e LoongArch® \u6709\u5173\uff0c\u5e76\u53ef\u4ee5\u4e3a\u8bfb\u8005\u5e26\u6765\u4ef7\u503c\uff0c\\n\u65e0\u8bba\u4e25\u8083\u8d21\u732e\uff08\u6574\u7684\u5927\u6d3b:\u513f:\uff09\u6216\u662f\u535a\u541b\u4e00\u7b11\u90fd\u4e00\u6982\u6b22\u8fce\uff01\\n\\nYANG Xudong [\u4f18\u5316\u4e86](https://www.postgresql.org/message-id/flat/b522a0c5-e3b2-99cc-6387-58134fb88cbe%40ymatrix.cn)\\nPostgreSQL \u5728 LoongArch \u4e0a\u7684 CRC \u8ba1\u7b97\uff0c\\n\u5e76\u5c06\u8865\u4e01[\u63d0\u4ea4\u5230\u4e86](https://commitfest.postgresql.org/43/4353/)\\nPostgreSQL Commitfest 2023-07\u3002\\n\u76ee\u524d\u5411\u793e\u533a\u548c\u5468\u520a\u8bfb\u8005\u4eec\u5bfb\u6c42 review\u3002\\n\\n## \u5f20\u8d34\u680f\\n\\n\u672c\u680f\u76ee\u76ee\u524d\u53ef\u4f9b\u5f20\u8d34\u516c\u76ca\u6027\u8d28\u7684\u5404\u79cd\u4fe1\u606f\u3002\\n\\n* \u672c\u5468\u62a5[\u6301\u7eed\u63a5\u53d7\u7f51\u53cb\u6295\u7a3f][call-for-submissions]\u3002\u6b22\u8fce\u6765\u4e0a\u6e38\u5750\u5750\uff01\\n\\n[lauosc-debian]: https://bbs.loongarch.org/d/167-lauosc-debian-12-ports\\n[call-for-submissions]: https://github.com/loongson-community/areweloongyet/issues/16"},{"id":"this-week-in-loongarch-4","metadata":{"permalink":"/newsletter/this-week-in-loongarch-4","editUrl":"https://github.com/loongson-community/areweloongyet/newsletter/2023-06-05-this-week-in-loongarch-4.md","source":"@site/newsletter/2023-06-05-this-week-in-loongarch-4.md","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 4 \u671f","description":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01","date":"2023-06-05T06:10:50.000Z","formattedDate":"2023\u5e746\u67085\u65e5","tags":[{"label":"\u6bcf\u5468\u4e00\u9f99","permalink":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99"}],"readingTime":3.48,"hasTruncateMarker":true,"authors":[{"name":"WANG Xuerui","title":"\ud83d\udc32\u9f99\u95e8\u5ba2\u6808\u6253\u6742\u7684","url":"https://github.com/xen0n","imageURL":"https://github.com/xen0n.png","key":"xen0n"}],"frontMatter":{"slug":"this-week-in-loongarch-4","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 4 \u671f","authors":["xen0n"],"date":"2023-06-05T06:10:50.000Z","tags":["\u6bcf\u5468\u4e00\u9f99"]},"unlisted":false,"prevItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 5 \u671f","permalink":"/newsletter/this-week-in-loongarch-5"},"nextItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 3 \u671f","permalink":"/newsletter/this-week-in-loongarch-3"}},"content":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01\\n\\n\x3c!-- truncate --\x3e\\n\\n\u5982\u65e0\u7279\u522b\u8bf4\u660e\uff0c\u6587\u4e2d\u63d0\u53ca\u7684\u65e5\u671f\u3001\u65f6\u95f4\u90fd\u4e3a\u5317\u4eac\u65f6\u95f4\uff08UTC+8\uff09\u3002\\n\\n## \u8981\u95fb\u901f\u9012\\n\\n\u9f99\u82af\u7684 binutils \u7ef4\u62a4\u8005 mengqinggang \u5c06\u5148\u524d\u62a5\u9053\u8fc7\u7684 LoongArch linker relaxation\\n\u4f18\u5316[\u63a8\u5165\u4e86\u4e0a\u6e38](https://sourceware.org/git/?p=binutils-gdb.git;a=commitdiff;h=57a930e3bfe4b2c7fd6463ed39311e1938513138)\u3002\\n\u4f46\u7531\u4e8e [LoongArch-Documentation \u5e93](https://github.com/loongson/LoongArch-Documentation)\u7684\u7279\u6b8a\u60c5\u51b5\u4ecd\u672a\u89e3\u9664\uff0c\\n\u4e0e\u6b64\u6539\u52a8\u914d\u5957\u7684 ELF psABI \u89c4\u8303\u6587\u6863\u66f4\u65b0\u4e5f\u4ecd\u7136\u6ca1\u6709\u53d1\u751f\u3002\\n\u5bf9\u4e8e\u8fd9\u4e9b\u65b0 relocs \u7684\u7528\u6cd5\uff0c\u76ee\u524d\u53ea\u80fd\u4ee5\u4ee3\u7801\u7684\u5177\u4f53\u884c\u4e3a\u4e3a\u51c6\u3002\\n\\nbinutils \u7684\u5176\u4ed6\u4e0a\u6e38\u7ef4\u62a4\u8005\u968f\u540e\u5e2e\u5fd9\u4fee\u590d\u4e86 LoongArch \u4ee3\u7801\u7684\u4e00\u4e9b[\u98ce\u683c\u95ee\u9898](https://sourceware.org/git/?p=binutils-gdb.git;a=commitdiff;h=a15891aaea006d06066573449efbda353dd2863e)\u4e0e\\n\u901a\u8fc7fuzzing \u53d1\u73b0\u7684[\u7f13\u51b2\u533a\u6ea2\u51fa\u95ee\u9898](https://sourceware.org/git/?p=binutils-gdb.git;a=commitdiff;h=74a965d8e09217f3d8f8295c9126b77cdd62b798)\u3001[\u6bb5\u9519\u8bef\u95ee\u9898](https://sourceware.org/git/?p=binutils-gdb.git;a=commitdiff;h=89c70cd358b8fa46b84cd100efc95495ff0160ae)\u3002\\n\\n\u5efa\u8bae\u5173\u5fc3\u9f99\u67b6\u6784\u57fa\u7840\u8bbe\u65bd\u5efa\u8bbe\u3001\u8d28\u91cf\u7684\u540c\u5b66\u4e5f\u53ef\u4ee5\u5173\u6ce8 binutils \u7b49\u4e0a\u6e38\u7684\u6c9f\u901a\u6e20\u9053\uff0c\u4e00\u8d77\u53c2\u4e0e\u9f99\u67b6\u6784\u76f8\u5173\u4ee3\u7801\u3001\u529f\u80fd\u3001\u8d28\u91cf\u7684\u5b8c\u5584\u3002\\n\\n## \u5148\u300c\u9a6c\u300d\u518d\u770b\\n\\n\u672c\u680f\u76ee\u7684\u5185\u5bb9\u5177\u6709\u4e00\u5b9a\u5ef6\u7eed\u6027\uff0c\u5c06\u6301\u7eed\u8ffd\u8e2a\u62a5\u9053 LoongArch® \u9886\u57df\u7684\u91cd\u8981\u6216\u957f\u671f\u9879\u76ee\uff08\u5751\uff09\u3002\\n\\n### \u53d1\u884c\u7248\u4eec\\n\\n* Gentoo \u4e0a\u6e38\u5df2\u5c06 [`kdeutils-meta`][kdeutils]\u3001[`kdegames-meta`][kdegames] \u4e24\u4e2a meta-packages keyworded\uff0c\u6709\u9700\u8981\u7684\u540c\u5b66\u53ef\u76f4\u63a5 `emerge` \u4e86\u3002\\n* Gentoo \u6b63\u5728\u4e3a Rust 1.71.0 \u7684\u9f99\u67b6\u6784\u652f\u6301[\u505a\u597d\u51c6\u5907](https://github.com/gentoo/gentoo/pull/31241)\u3002\u987a\u5e26\u4e5f\u5c06\u4fee\u590d\u8001\u9f99\u82af\u7cfb\u7edf\u7684 Rust \u652f\u6301\u3002\\n\\n[kdeutils]: https://packages.gentoo.org/packages/kde-apps/kdeutils-meta\\n[kdegames]: https://packages.gentoo.org/packages/kde-apps/kdegames-meta\\n\\n### ClangBuiltLinux\\n\\n[\u4e0a\u6e38\u7684\u8ddf\u8e2a issue](https://github.com/ClangBuiltLinux/linux/issues/1787)\\n\u4e5f\u4f1a\u53ca\u65f6\u53cd\u6620\u6700\u65b0\u52a8\u6001\u3002\\n\\n\u672c\u5468\u6ca1\u6709\u8fd9\u65b9\u9762\u7684\u65b0\u52a8\u5411\u3002\\n\\n### Linux\\n\\n6 \u6708 1 \u65e5\uff0c\u77e5\u540d\u79d1\u6280\u5a92\u4f53 Phoronix [\u62a5\u9053\u4e86](https://www.phoronix.com/news/Loongson-Etnaviv-PCI-Driver)\\nSui Jingfeng \u4e3a\u9f99\u82af 2K1000 \u548c LS7A1000 \u5185\u7f6e\u7684 Vivante GC1000 GPU IP\\n\u505a\u7684[\u5185\u6838\u9002\u914d](https://lore.kernel.org/lkml/20230530160126.2344425-1-suijingfeng@loongson.cn/)\u548c\\n[Mesa \u9002\u914d](https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14606)\u3002\\n\\n5 \u6708 31 \u65e5\uff0cBinbin Zhou [\u8d34\u51fa\u4e86](https://lore.kernel.org/loongarch/cover.1685448898.git.zhoubinbin@loongson.cn/)\u9f99\u82af 2 \u53f7\u7cfb\u5217\u7684 APB DMA \u5f15\u64ce\u652f\u6301\u3002\\n\\n5 \u6708 31 \u65e5\uff0cYanteng Si [\u8d34\u51fa\u4e86](https://lore.kernel.org/loongarch/cover.1685501806.git.siyanteng@loongson.cn/) LS7A \u6865\u7247\u7684\u9ad8\u89e3\u6790\u5ea6\u97f3\u9891\uff08HD Audio\uff09\u652f\u6301\u3002\\n\\n### LLVM\\n\\n\u4e0a\u5468\u5408\u5e76\u4e86\u4ee5\u4e0b\u7684\u529f\u80fd\u6539\u8fdb\u7b49\uff1a\\n\\n* Ami-zhang [\u4fee\u590d\u4e86][D151794] LLVM \u9759\u6001\u5206\u6790\u7ec4\u4ef6\u5bf9 LoongArch \u7684 `i32` \u7c7b\u578b\u53c2\u6570\u3001\u8fd4\u56de\u503c\u7684\u5904\u7406\u3002\\n\\n\u51fa\u73b0\u4e86\u4ee5\u4e0b\u7684\u65b0\u52a8\u5411\uff1a\\n\\n* xen0n \u6839\u636e\u5148\u524d\u7684 Linux \u5185\u6838\u8865\u4e01\uff0c\u4e3a LLVM [\u6dfb\u52a0\u4e86][D151655] 3A6000/LA664 \u7684\u7ec6\u7c92\u5ea6\u5185\u5b58\u6805\u969c\u652f\u6301\u3002\\n\\n[D151655]: https://reviews.llvm.org/D151655\\n[D151794]: https://reviews.llvm.org/D151794\\n\\n## \u793e\u533a\u6574\u6d3b:\u513f:\\n\\n\u672c\u680f\u76ee\u63a5\u53d7\u4efb\u4f55\u7f51\u53cb\u7684\u6295\u7a3f\uff0c\u53ea\u8981\u5185\u5bb9\u4e0e LoongArch® \u6709\u5173\uff0c\u5e76\u53ef\u4ee5\u4e3a\u8bfb\u8005\u5e26\u6765\u4ef7\u503c\uff0c\\n\u65e0\u8bba\u4e25\u8083\u8d21\u732e\uff08\u6574\u7684\u5927\u6d3b:\u513f:\uff09\u6216\u662f\u535a\u541b\u4e00\u7b11\u90fd\u4e00\u6982\u6b22\u8fce\uff01\\n\\n[KatyushaScarlet](https://github.com/KatyushaScarlet)\\n[\u5411\u5927\u5bb6\u4ecb\u7ecd](https://katyusha.net/536.html) :ta: \u57fa\u4e8e DOSBox-X \u6574\u5408\u7684\u6e38\u620f\u6a21\u62df\u5668\u3002\\n\u4e0d\u8fc7\u4f3c\u4e4e\u5728 QEMU \u6a21\u62df\u6761\u4ef6\u4e0b\u53ef\u80fd\u65e0\u6cd5\u542f\u52a8\u3002\\n\u611f\u5174\u8da3\u7684\u540c\u5b66\u53ef\u4ee5\u52a0\u5165 :ta: \u7684\u884c\u5217\u4e00\u8d77\u6298\u817e\uff01\\n\\n## \u5f20\u8d34\u680f\\n\\n\u672c\u680f\u76ee\u76ee\u524d\u53ef\u4f9b\u5f20\u8d34\u516c\u76ca\u6027\u8d28\u7684\u5404\u79cd\u4fe1\u606f\u3002\\n\\n* \u672c\u5468\u62a5[\u6301\u7eed\u63a5\u53d7\u7f51\u53cb\u6295\u7a3f][call-for-submissions]\u3002\u6b22\u8fce\u6765\u4e0a\u6e38\u5750\u5750\uff01\\n\\n[lauosc-debian]: https://bbs.loongarch.org/d/167-lauosc-debian-12-ports\\n[call-for-submissions]: https://github.com/loongson-community/areweloongyet/issues/16"},{"id":"this-week-in-loongarch-3","metadata":{"permalink":"/newsletter/this-week-in-loongarch-3","editUrl":"https://github.com/loongson-community/areweloongyet/newsletter/2023-05-29-this-week-in-loongarch-3.md","source":"@site/newsletter/2023-05-29-this-week-in-loongarch-3.md","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 3 \u671f","description":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01","date":"2023-05-29T04:57:02.000Z","formattedDate":"2023\u5e745\u670829\u65e5","tags":[{"label":"\u6bcf\u5468\u4e00\u9f99","permalink":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99"}],"readingTime":5.68,"hasTruncateMarker":true,"authors":[{"name":"WANG Xuerui","title":"\ud83d\udc32\u9f99\u95e8\u5ba2\u6808\u6253\u6742\u7684","url":"https://github.com/xen0n","imageURL":"https://github.com/xen0n.png","key":"xen0n"}],"frontMatter":{"slug":"this-week-in-loongarch-3","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 3 \u671f","authors":["xen0n"],"date":"2023-05-29T04:57:02.000Z","tags":["\u6bcf\u5468\u4e00\u9f99"]},"unlisted":false,"prevItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 4 \u671f","permalink":"/newsletter/this-week-in-loongarch-4"},"nextItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 2 \u671f","permalink":"/newsletter/this-week-in-loongarch-2"}},"content":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01\\n\\n\x3c!-- truncate --\x3e\\n\\n\u5982\u65e0\u7279\u522b\u8bf4\u660e\uff0c\u6587\u4e2d\u63d0\u53ca\u7684\u65e5\u671f\u3001\u65f6\u95f4\u90fd\u4e3a\u5317\u4eac\u65f6\u95f4\uff08UTC+8\uff09\u3002\\n\\n## \u8981\u95fb\u901f\u9012\\n\\n5 \u6708 24 \u65e5\u4e0b\u5348\uff0cRust \u8bed\u8a00\u7684 `loongarch64-unknown-linux-gnu` \u76ee\u6807[\u6210\u529f\u664b\u5347][rust-loong-tier2]\u5230\\n[Tier 2 with Host Tools]\uff08\u5e26\u5bbf\u4e3b\u5de5\u5177\u7684\u4e8c\u7ea7\u67b6\u6784[^\u6ce8\u4e00]\uff09\u3002\\n\u8be5\u652f\u6301\u5df2\u4ece 5 \u6708 25 \u65e5\u5f00\u59cb\u51fa\u73b0\u4e8e Rust 1.71.0 Nightly \u7248\u672c\uff0c\u5e76\u5c06\u5728 7 \u6708 13 \u65e5\u7a33\u5b9a\u3002\\n\\n5 \u6708 26 \u65e5\uff0cmengqinggang \u5728 binutils \u90ae\u4ef6\u5217\u8868\u8d34\u51fa\u4e86 [LoongArch linker relaxation \u4f18\u5316][binutils-loong-relax]\u7684\u8865\u4e01\u3002\\n\\n:::info \u8fd9\u5565\u73a9\u610f\uff0c\u8fd9\u4e48\u653e\u677e\uff1f\\n\\nLinker relaxation \u6682\u65e0\u5e7f\u6cdb\u91c7\u7528\u7684\u4e2d\u6587\u7ffb\u8bd1\uff0c\u62d9\u8bd1\u300c\u94fe\u63a5\u5668\u5f1b\u8c6b\u300d\u6216\u300c\u94fe\u63a5\u5668\u677e\u5f1b\u300d\uff1a\\n\u7b80\u5355\u5730\u8bf4\uff0c\u8be5\u4f18\u5316\u662f\u94fe\u63a5\u5668\u6839\u636e\u7f16\u8bd1\u5668\u3001\u6c47\u7f16\u5668\u751f\u6210\u4ee3\u7801\u65f6\u63d0\u4f9b\u7684\u989d\u5916\u4fe1\u606f\uff0c\u5c06\u53ef\u7f29\u77ed\u7684\u8f83\u957f\u5e8f\u5217\u7f29\u77ed\uff0c\\n\u4ee5\u8fbe\u5230\u51cf\u5c11\u6307\u4ee4\u6570\uff0c\u4e14\u4e0d\u7528\u5173\u5fc3 code model \u7b49\u4ee3\u7801\u751f\u6210\u7ec6\u8282\u7684\u597d\u5904\uff1b\\n\u8fd9\u7c7b\u4f3c\u6750\u6599\u79d1\u5b66\u4e2d\u7684\u300c\u5e94\u529b\u5f1b\u8c6b/\u677e\u5f1b\u300d\u73b0\u8c61\uff0c\u5de5\u7a0b\u4e0a\u4e43\u81f3\u5728\u5bb6\u63c9\u9762\u65f6\uff0c\u300c\u91ca\u653e\u5e94\u529b\u300d\u4e5f\u662f\u5fc5\u987b\u7684\u64cd\u4f5c\u6b65\u9aa4\u3002\\n\u5728 Linker relaxation \u4e2d\uff0c\u88ab\u91ca\u653e\u7684\u300c\u5e94\u529b\u300d\u5c31\u662f\u4e3a\u4e86\u5b9e\u73b0\u4e00\u5b9a\u8bed\u4e49\uff0c\u6240\u53ef\u80fd\u7528\u5230\u7684\u6700\u957f\u6307\u4ee4\u5e8f\u5217\u5566\u3002\\n\\n\u66f4\u591a\u4fe1\u606f\u53ef\u53c2\u8003 MaskRay \u7684\u4e13\u9898\u6587\u7ae0\uff1a[*The dark side of RISC-V linker relaxation*](http://maskray.me/blog/2021-03-14-the-dark-side-of-riscv-linker-relaxation)\\n\u4e0e [*RISC-V linker relaxation in lld*](http://maskray.me/blog/2022-07-10-riscv-linker-relaxation-in-lld)\u3002\\n\uff08\u4ece\u7b2c\u4e00\u7bc7\u6587\u7ae0\u7684\u6807\u9898\u53ef\u89c1\uff0c\u8fd9\u4e2a\u4f18\u5316\u5bf9\u57fa\u7840\u7ec4\u4ef6\u5f00\u53d1\u8005\u6765\u8bf4\uff0c\u4e0d\u89c1\u5f97\u5b8c\u5168\u662f\u597d\u4e8b:smirk_cat:\u3002\uff09\\n\\n\u8be5\u4f18\u5316\u80fd\u5e26\u6765\u6027\u80fd\u597d\u5904\uff0c\u4f46\u4e5f\u5c06\u8f83\u4e3a\u6df1\u523b\u5730\u5f71\u54cd LoongArch \u76ee\u6807\u4ee3\u7801\u7684\u91cd\u5b9a\u4f4d\u8bb0\u5f55\u7528\u6cd5\u3001\u7f16\u8bd1\u5668\u4ee3\u7801\u751f\u6210\uff0c\u4e43\u81f3\u7f16\u8bd1\u5668\u547d\u4ee4\u884c\u4f7f\u7528\u65b9\u5f0f[^\u6ce8\u4e8c]\u7b49\u591a\u4e2a\u65b9\u9762\uff1b\\n\u56e0\u6b64\u5efa\u8bae\u5f00\u53d1\u8005\u540c\u5b66\u4eec\u5bc6\u5207\u5173\u6ce8\u3002\\n\\n:::\\n\\n[binutils-loong-relax]: https://sourceware.org/pipermail/binutils/2023-May/127630.html\\n[rust-loong-tier2]: https://github.com/rust-lang/rust/pull/110936\\n[Tier 2 with Host Tools]: https://doc.rust-lang.org/rustc/target-tier-policy.html#tier-2-with-host-tools\\n\\n[^\u6ce8\u4e00]: \u53ea\u6709 x86\u3001AMD64 \u548c AArch64 \u8fd9\u79cd\u5e7f\u6cdb\u6d41\u884c\u67b6\u6784\u624d\u80fd\u8dfb\u8eab Tier 1\u3002\u4f5c\u4e3a\u53c2\u8003\uff0c`riscv64gc-unknown-linux-gnu` \u4e5f\u548c LA64 Linux \u4e00\u6837\u4f4d\u4e8e Tier 2 with host tools \u7ea7\u522b\u3002\\n[^\u6ce8\u4e8c]: \u7531\u4e8e linker relaxation \u53ef\u4ee5\u5220\u9664\u6307\u4ee4\uff0c\u56e0\u6b64\u53ea\u8981\u6709\u4e86 linker relaxation \u90a3\u4e48\u7f16\u8bd1\u7a0b\u5e8f\u65f6\u5c31\u5c06\u4e0d\u518d\u9700\u8981\u6709\u65f6\u624b\u5de5\u6307\u5b9a code model \u4ee5\u5bb9\u8bb8\u66f4\u5927\u7684\u8df3\u8f6c\u8303\u56f4\u7b49\u60c5\u51b5\u53d1\u751f\u4e86\u3002\u56e0\u6b64\u8fd9\u79cd\u60c5\u51b5\u4e0b\uff0c\u7edd\u5927\u90e8\u5206\u573a\u666f\u5c31\u4e0d\u518d\u9700\u8981\u5173\u5fc3\u6216\u6307\u5b9a `-mcmodel` \u8fd9\u4e2a\u9009\u9879\u4e86\u3002\\n\\n## \u5148\u300c\u9a6c\u300d\u518d\u770b\\n\\n\u672c\u680f\u76ee\u7684\u5185\u5bb9\u5177\u6709\u4e00\u5b9a\u5ef6\u7eed\u6027\uff0c\u5c06\u6301\u7eed\u8ffd\u8e2a\u62a5\u9053 LoongArch® \u9886\u57df\u7684\u91cd\u8981\u6216\u957f\u671f\u9879\u76ee\uff08\u5751\uff09\u3002\\n\\n### \u53d1\u884c\u7248\u4eec\\n\\n\uff08\u4e0a\u671f\u6ca1\u6709\u6ce8\u610f\u5230\uff095 \u6708 20 \u65e5\uff0cDebian \u4e0a\u6e38\u65b0\u5efa\u4e86 `pool-loong64` \u6587\u4ef6\u5939\u3002\\n\\n### ClangBuiltLinux\\n\\n[\u4e0a\u6e38\u7684\u8ddf\u8e2a issue](https://github.com/ClangBuiltLinux/linux/issues/1787)\\n\u4e5f\u4f1a\u53ca\u65f6\u53cd\u6620\u6700\u65b0\u52a8\u6001\u3002\\n\\n\u4e0a\u5468\u6682\u65e0\u8fdb\u5c55\uff08\u63a8\u8fdb\u8be5\u9879\u76ee\u7684\u540c\u5b66\u90fd\u5728\u5fd9\u522b\u7684\uff09\u3002\\n\\n### Linux\\n\\n5 \u6708 22 \u65e5\uff0cYinbo Zhu [\u8d34\u51fa\u4e86](https://lore.kernel.org/loongarch/20230522093156.7108-1-zhuyinbo@loongson.cn/)\u9f99\u82af 2 \u53f7\u7cfb\u5217\u7684\u7535\u6e90\u7ba1\u7406\u652f\u6301\u8865\u4e01\u3002\\n\\n5 \u6708 23 \u65e5\uff0cTiezhu Yang [\u5c1d\u8bd5\u91cd\u6784](https://lore.kernel.org/loongarch/1684837327-18203-1-git-send-email-yangtiezhu@loongson.cn/) `perf` \u5de5\u5177\u7684\u7cfb\u7edf\u8c03\u7528\u8868\u3002\\n\\n5 \u6708 25 \u65e5\uff0cBinbin Zhou [\u8d34\u51fa\u4e86](https://lore.kernel.org/loongarch/cover.1684983279.git.zhoubinbin@loongson.cn/)\u9f99\u82af RTC \u63a7\u5236\u5668\u9a71\u52a8\u7684\u7b2c 4 \u7248\u8865\u4e01\u3002\\n\\n5 \u6708 29 \u65e5\uff0cJianmin Lv [\u8d34\u51fa\u4e86](https://lore.kernel.org/loongarch/20230529010954.2678-1-lvjianmin@loongson.cn/)\u9f99\u82af\u4e2d\u65ad\u63a7\u5236\u5668\u9a71\u52a8\u7684\u4e00\u4e9b\u884c\u4e3a\u4fee\u590d\u7684\u7b2c 2 \u7248\u8865\u4e01\u3002\\n\\n### LLVM\\n\\n\u672c\u5468\u5408\u5e76\u4e86\u4ee5\u4e0b\u7684\u529f\u80fd\u6539\u8fdb\u7b49\uff1a\\n\\n* tangyouling\u3001Ami-zhang \u4e3a compiler-rt fuzzer \u7ec4\u4ef6[\u9002\u914d\u4e86][D140607]\u975e 4KiB \u9875\u7684\u7cfb\u7edf\u3002\u5f53\u7136\uff0c\u4e5f\u5305\u62ec\u9f99\u67b6\u6784\u3002\\n\\n\u51fa\u73b0\u4e86\u4ee5\u4e0b\u7684\u65b0\u52a8\u5411\uff1a\\n\\n* xen0n \u7ec8\u4e8e\u627e\u5230\u4e86\u8db3\u591f\u65f6\u95f4[\u8c03\u8bd5\u5e76\u4fee\u590d\u4e86][D138135] lld/ELF LoongArch port \u7684 TLS \u5904\u7406\u903b\u8f91\u3002\u8be5\u8865\u4e01\u7ec8\u4e8e\u79f0\u5f97\u4e0a\u300c\u5b8c\u6210\u300d\u4e86\u3002\\n\\n[D138135]: https://reviews.llvm.org/D138135\\n[D140607]: https://reviews.llvm.org/D140607\\n\\n### Rust\\n\\n[\u6dfb\u52a0\u9f99\u67b6\u6784\u88f8\u673a targets \u7684 MCP][loong-baremetal-mcp] \u6b63\u5728\u516c\u793a\u671f\u5185\u3002\u76ee\u524d\u6ca1\u6709\u53cd\u5bf9\u610f\u89c1\uff0c\u9884\u8ba1\u672c\u5468\u5c06\u83b7\u5f97\u901a\u8fc7\u3002\\n\\n\u9f99\u67b6\u6784 Rust \u7ef4\u62a4\u8005\u4eec\u4e5f\u5728\u7740\u624b\u4e3a rustup \u6dfb\u52a0\u652f\u6301\u4e86\uff1a\\n\\n* [\u5347\u7ea7\u4f9d\u8d56\u7248\u672c][rustup-pr-1]\u3001\\n* [\u4fee\u590d\u7f16\u8bd1][rustup-pr-2]\u3001\\n* [\u6dfb\u52a0 CI \u652f\u6301][rustup-pr-3]\u3002\\n\\n[loong-baremetal-mcp]: https://github.com/rust-lang/compiler-team/issues/628\\n[rustup-pr-1]: https://github.com/rust-lang/rustup/pull/3365\\n[rustup-pr-2]: https://github.com/rust-lang/rustup/pull/3364\\n[rustup-pr-3]: https://github.com/rust-lang/rustup/pull/3363\\n\\n\u622a\u81f3\u53d1\u7a3f\u65f6\uff0c\u8fd9\u4e9b PRs \u90fd\u5df2\u88ab\u5408\u5e76\u3002\\n\u9884\u8ba1\u5230 Rust 1.71.0 \u6b63\u5f0f\u53d1\u5e03\u65f6\uff0c\u9f99\u67b6\u6784 Rust \u5f00\u53d1\u8005\u5c06\u5f97\u4ee5\u4eab\u53d7\u4e0d\u900a\u5176\u4ed6\u67b6\u6784\u7684\u540c\u7b49\u5f00\u53d1\u4f53\u9a8c\u3002\\n\\n## \u793e\u533a\u6574\u6d3b:\u513f:\\n\\n\u672c\u680f\u76ee\u63a5\u53d7\u4efb\u4f55\u7f51\u53cb\u7684\u6295\u7a3f\uff0c\u53ea\u8981\u5185\u5bb9\u4e0e LoongArch® \u6709\u5173\uff0c\u5e76\u53ef\u4ee5\u4e3a\u8bfb\u8005\u5e26\u6765\u4ef7\u503c\uff0c\\n\u65e0\u8bba\u4e25\u8083\u8d21\u732e\uff08\u6574\u7684\u5927\u6d3b:\u513f:\uff09\u6216\u662f\u535a\u541b\u4e00\u7b11\u90fd\u4e00\u6982\u6b22\u8fce\uff01\\n\\n\u672c\u5468\u6ca1\u6709\u6295\u7a3f\u3002\\n\\n## \u5f20\u8d34\u680f\\n\\n\u672c\u680f\u76ee\u76ee\u524d\u53ef\u4f9b\u5f20\u8d34\u516c\u76ca\u6027\u8d28\u7684\u5404\u79cd\u4fe1\u606f\u3002\\n\\n* \u675c\u6bd4\u6b22\u8fce\u540c\u5b66\u4eec\u53bb [LA UOSC \u7684 Debian port \u9875\u9762][lauosc-debian]\u770b\u770b\u3002\\n* \u672c\u5468\u62a5[\u6301\u7eed\u63a5\u53d7\u7f51\u53cb\u6295\u7a3f][call-for-submissions]\u3002\u6b22\u8fce\u6765\u4e0a\u6e38\u5750\u5750\uff01\\n\\n[lauosc-debian]: https://bbs.loongarch.org/d/167-lauosc-debian-12-ports\\n[call-for-submissions]: https://github.com/loongson-community/areweloongyet/issues/16"},{"id":"this-week-in-loongarch-2","metadata":{"permalink":"/newsletter/this-week-in-loongarch-2","editUrl":"https://github.com/loongson-community/areweloongyet/newsletter/2023-05-22-this-week-in-loongarch-2.md","source":"@site/newsletter/2023-05-22-this-week-in-loongarch-2.md","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 2 \u671f","description":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01","date":"2023-05-22T04:05:38.000Z","formattedDate":"2023\u5e745\u670822\u65e5","tags":[{"label":"\u6bcf\u5468\u4e00\u9f99","permalink":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99"}],"readingTime":4.485,"hasTruncateMarker":true,"authors":[{"name":"WANG Xuerui","title":"\ud83d\udc32\u9f99\u95e8\u5ba2\u6808\u6253\u6742\u7684","url":"https://github.com/xen0n","imageURL":"https://github.com/xen0n.png","key":"xen0n"}],"frontMatter":{"slug":"this-week-in-loongarch-2","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 2 \u671f","authors":["xen0n"],"date":"2023-05-22T04:05:38.000Z","tags":["\u6bcf\u5468\u4e00\u9f99"]},"unlisted":false,"prevItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 3 \u671f","permalink":"/newsletter/this-week-in-loongarch-3"},"nextItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 1 \u671f","permalink":"/newsletter/this-week-in-loongarch-1"}},"content":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01\\n\\n\x3c!-- truncate --\x3e\\n\\n\u5982\u65e0\u7279\u522b\u8bf4\u660e\uff0c\u6587\u4e2d\u63d0\u53ca\u7684\u65e5\u671f\u3001\u65f6\u95f4\u90fd\u4e3a\u5317\u4eac\u65f6\u95f4\uff08UTC+8\uff09\u3002\\n\\n## \u8981\u95fb\u901f\u9012\\n\\n\u672c\u680f\u76ee\u5e76\u975e\u6bcf\u671f\u90fd\u6709\u3002\u5982\u679c\u4f60\u770b\u5230\u4e86\uff0c\u4e00\u5b9a\u662f\u4e0a\u5468\u53d1\u751f\u4e86\u91cd\u5927\u4e8b\u4ef6\uff01\\n\\n5 \u6708 17 \u65e5\u665a\u95f4\uff0cGNU GRUB2 \u7684 LoongArch \u79fb\u690d[\u8fdb\u5165\u4e0a\u6e38][grub-msg]\uff0c\\n\u5c06\u4e8e\u8fd1\u671f\u7684 2.12 \u7248\u672c\u6b63\u5f0f\u53d1\u5e03\u3002\\n\u4ece[\u56fd\u5185 LoongArch \u793e\u533a\u6700\u65e9\u7684\u4ee3\u7801\u63d0\u4ea4\u4e0e\u5185\u90e8\u5ba1\u67e5][la64-grub-first-pr]\u4ee5\u6765\uff0c\\n\u5df2\u5c06\u8fd1\u4e24\u5e74\u65f6\u95f4\uff1b\u4ece[\u5411\u4e0a\u6e38\u6b63\u5f0f\u63d0\u4ea4\u7684\u7b2c\u4e00\u7248][grub-first-submission]\u5f00\u59cb\uff0c\\n\u4e5f\u5feb\u4e00\u5e74\u534a\u4e86\u3002\\n\\n[grub-msg]: https://lists.gnu.org/archive/html/grub-devel/2023-05/msg00089.html\\n[la64-grub-first-pr]: https://github.com/loongarch64/grub/pull/1\\n[grub-first-submission]: https://lists.gnu.org/archive/html/grub-devel/2022-01/msg00036.html\\n\\n\u8fd9\u671f\u95f4\uff0c\u4ee5\u4e0b\u540c\u5b66\u4ee5\u5404\u79cd\u5f62\u5f0f\u53c2\u4e0e\u4e86\u4ee3\u7801\u7684\u5f00\u53d1\u3001\u5ba1\u67e5\u3001\u6d4b\u8bd5\u7b49\u5de5\u4f5c\uff1a\uff08\u4ee5 ID \u4e3a\u5e8f\uff09\\n\\n* [@cnmushiba](https://github.com/cnmushiba)\\n* [@hudsonzuo](https://github.com/hudsonzuo)\\n* [@kilaterlee](https://github.com/kilaterlee)\\n* [@sdlaqz](https://github.com/sdlaqz)\\n* [@sunhaiyong1978](https://github.com/sunhaiyong1978)\\n* [@xen0n](https://github.com/xen0n)\\n* [@xry111](https://github.com/xry111)\\n* `yangqiming `\\n* [@yetist](https://github.com/yetist)\\n* [@zhangwenlong8911](https://github.com/zhangwenlong8911)\\n* [@zhuyaliang](https://github.com/zhuyaliang)\\n* [@zwaizwai](https://github.com/zwaizwai)\\n\\n\u5f53\u7136\uff0c\u9664\u4e86\u8fd9\u4e9b\u540d\u5b57\u4e4b\u5916\uff0c\u8fd8\u6709\u5176\u4ed6\u6ca1\u6709\u51fa\u73b0\u5728\u8ba8\u8bba\u4e32\u3001\u63d0\u4ea4\u5386\u53f2\u7684\u65e0\u540d\u82f1\u96c4\u3002\\n\u8ba9\u6211\u4eec\u611f\u8c22 :ta: \u4eec\u7684\u4ed8\u51fa\uff01\\n\\n## \u5148\u300c\u9a6c\u300d\u518d\u770b\\n\\n\u672c\u680f\u76ee\u7684\u5185\u5bb9\u5177\u6709\u4e00\u5b9a\u5ef6\u7eed\u6027\uff0c\u5c06\u6301\u7eed\u8ffd\u8e2a\u62a5\u9053 LoongArch® \u9886\u57df\u7684\u91cd\u8981\u6216\u957f\u671f\u9879\u76ee\uff08\u5751\uff09\u3002\\n\\n### \u53d1\u884c\u7248\u4eec\\n\\n\u4e0a\u5468\u6ca1\u6709\u53d1\u884c\u7248\u65b9\u9762\u7684\u65b0\u52a8\u5411\u3002\\n\\n### ClangBuiltLinux\\n\\n[\u4e0a\u6e38\u7684\u8ddf\u8e2a issue](https://github.com/ClangBuiltLinux/linux/issues/1787)\\n\u4e5f\u4f1a\u53ca\u65f6\u53cd\u6620\u6700\u65b0\u52a8\u6001\u3002\\n\\n\u9f99\u82af LLVM \u56e2\u961f\u4e0e xen0n \u6b63\u5728\u5bf9 LLVM \u8fdb\u884c\u5fc5\u8981\u7684\u4fee\u6539\uff0c\u4ee5\u4f7f\u5176\u8db3\u4ee5\u6784\u5efa Linux \u5185\u6838\u3002\\n\u4e0a\u4e00\u8f6e\u8fed\u4ee3\u57fa\u672c\u5b8c\u6210\uff0c\u53d1\u73b0\u4e86\u66f4\u591a\u7684\u5f85\u8ddf\u8fdb\u9879\uff0c\u5305\u62ec\u4f46\u4e0d\u9650\u4e8e\u4ee5\u4e0b\u7684\u5751\uff1a\\n\\n* \u62fc\u63a5\u6307\u4ee4\u5b57\u4f7f\u7528\u7684 `parse_r` \u8f85\u52a9\u4f8b\u7a0b\u76ee\u524d\u4e0d\u80fd\u5728 LLVM \u5904\u7406\u5f62\u5982 `$a0` \u7684\u5bc4\u5b58\u5668\u540d\u3002\\n* `` \u7528\u5230\u4e86\u4e0d\u80fd\u88ab\u6b63\u786e\u5904\u7406\u7684\u5199\u6cd5\u3002\\n* `la_abs` \u5b8f\u6240\u4f7f\u7528\u5230\u7684\u91cd\u5b9a\u4f4d\u5199\u6cd5\u6d89\u53ca\u4e86\u4e0d\u540c\u6bb5\uff08section\uff09\u95f4\u7684\u504f\u79fb\u8ba1\u7b97\uff0c\u4e0d\u88ab LLVM \u652f\u6301\uff0c\u9700\u8981\u6539\u5199\u3002\\n* `addrspace`\uff08\u5728 C \u4e00\u4fa7\uff1a`address_space(X)` \u5c5e\u6027\uff09\u4e0d\u80fd\u88ab\u7528\u4ee5\u7ed5\u8fc7\u5bf9 `model` \u5c5e\u6027\u7684\u6b63\u7ecf\u652f\u6301\uff0c`model` \u4ecd\u7136\u9700\u8981\u88ab\u5b9e\u73b0\u3002\\n\\n### Linux\\n\\n5 \u6708 16 \u65e5\uff0cHuacai Chen \u5728 Linux/LoongArch \u90ae\u4ef6\u5217\u8868\u8d34\u51fa\u4e86\u4e24\u4e2a\u9488\u5bf9\u9f99\u82af 3A6000\\n\uff08LA664 \u5fae\u67b6\u6784\uff09\u7684\u6027\u80fd\u4f18\u5316\u8865\u4e01\u3002\u8fd9\u4e5f\u662f LA664 \u5fae\u67b6\u6784\u7684\u65b0\u9c9c\u7279\u6027\u9996\u6b21\u89c1\u8bf8\u62a5\u7aef\u3002\\n\u5b83\u4eec\u5206\u522b\u662f\uff1a[\u66f4\u7ec6\u7c92\u5ea6\u7684\u5185\u5b58\u6805\u969c\u64cd\u4f5c][la664-dbar]\u4e0e[\u9875\u8868\u904d\u5386\u7684\u786c\u4ef6\u52a0\u901f\u652f\u6301][la664-ptw]\u3002\\n\\n5 \u6708 15 \u65e5\uff0cTianrui Zhao \u8d34\u51fa\u4e86 [LoongArch KVM \u7684\u7b2c 10 \u7248\u8865\u4e01][kvm-r10]\u3002\u7136\u800c\u865a\u62df\u5316\u6307\u4ee4\u96c6\u6269\u5c55\u7684\u624b\u518c\u4ecd\u7136\u6ca1\u6709\u516c\u5f00\u3002\\n\\n5 \u6708 14 \u65e5\uff0cImmad Mir [\u4fee\u590d\u4e86][fix-debugfs-init]\u975e\u5bf9\u9f50\u8bbf\u5b58\u6a21\u62df\u529f\u80fd\u7684 debugfs \u521d\u59cb\u5316\u8fc7\u7a0b\u7684\u8fd4\u56de\u503c\u5904\u7406\u3002\u8be5\u8865\u4e01\u5df2\u88ab\u63a5\u53d7\u3002\\n\\n[la664-dbar]: https://lore.kernel.org/loongarch/20230516124536.535343-1-chenhuacai@loongson.cn/\\n[la664-ptw]: https://lore.kernel.org/loongarch/20230516124610.535360-1-chenhuacai@loongson.cn/\\n[kvm-r10]: https://lore.kernel.org/loongarch/20230515021522.2445551-1-zhaotianrui@loongson.cn/\\n[fix-debugfs-init]: https://lore.kernel.org/loongarch/CY5PR12MB64558068B314942BA1B2ED2BC67B9@CY5PR12MB6455.namprd12.prod.outlook.com/\\n\\n### LLVM\\n\\n\u4e00\u5468\u95f4\u5408\u5e76\u4e86\u4ee5\u4e0b\u7684\u529f\u80fd\u6539\u8fdb\u7b49\uff1a\\n\\n* SixWeining \u4e3a LoongArch [\u6dfb\u52a0\u4e86 LP64S\uff0864 \u4f4d\u8f6f\u6d6e\u70b9\uff09ABI \u652f\u6301][D150417]\u3002\\n \u8fd9\u662f\u652f\u6301 ClangBuiltLinux \u9879\u76ee\u6240\u5fc5\u987b\u7684\u80fd\u529b\u4e4b\u4e00\u3002\\n* SixWeining \u4f7f Clang \u5728\u7f16\u8bd1\u6c47\u7f16\u8bed\u8a00\u7684\u6e90\u7801\u65f6[\u80fd\u591f\u6b63\u786e\u5411\u6c47\u7f16\u5668\u4f20\u9012 ABI \u76f8\u5173\u9009\u9879][D150537]\u3002\\n \u8fd9\u4e5f\u662f\u652f\u6301 ClangBuiltLinux \u9879\u76ee\u6240\u5fc5\u987b\u7684\u80fd\u529b\u4e4b\u4e00\u3002\\n\\n\u4e0a\u5468\u6ca1\u6709\u65b0\u7684 LoongArch \u76f8\u5173\u52a8\u5411\u3002\\n\\n[D150417]: https://reviews.llvm.org/D150417\\n[D150537]: https://reviews.llvm.org/D150537\\n\\n## \u793e\u533a\u6574\u6d3b:\u513f:\\n\\n\u672c\u680f\u76ee\u63a5\u53d7\u4efb\u4f55\u7f51\u53cb\u7684\u6295\u7a3f\uff0c\u53ea\u8981\u5185\u5bb9\u4e0e LoongArch® \u6709\u5173\uff0c\u5e76\u53ef\u4ee5\u4e3a\u8bfb\u8005\u5e26\u6765\u4ef7\u503c\uff0c\\n\u65e0\u8bba\u4e25\u8083\u8d21\u732e\uff08\u6574\u7684\u5927\u6d3b:\u513f:\uff09\u6216\u662f\u535a\u541b\u4e00\u7b11\u90fd\u4e00\u6982\u6b22\u8fce\uff01\\n\\n\u4e0a\u5468\u6ca1\u6709\u6295\u7a3f\u3002\\n\\n## \u5f20\u8d34\u680f\\n\\n\u672c\u680f\u76ee\u76ee\u524d\u53ef\u4f9b\u5f20\u8d34\u516c\u76ca\u6027\u8d28\u7684\u5404\u79cd\u4fe1\u606f\u3002\\n\\n* \u675c\u6bd4\u6b22\u8fce\u540c\u5b66\u4eec\u53bb [LA UOSC \u7684 Debian port \u9875\u9762][lauosc-debian]\u770b\u770b\u3002\\n* \u672c\u5468\u62a5[\u6301\u7eed\u63a5\u53d7\u7f51\u53cb\u6295\u7a3f][call-for-submissions]\u3002\u6b22\u8fce\u6765\u4e0a\u6e38\u5750\u5750\uff01\\n\\n[lauosc-debian]: https://bbs.loongarch.org/d/167-lauosc-debian-12-ports\\n[call-for-submissions]: https://github.com/loongson-community/areweloongyet/issues/16"},{"id":"this-week-in-loongarch-1","metadata":{"permalink":"/newsletter/this-week-in-loongarch-1","editUrl":"https://github.com/loongson-community/areweloongyet/newsletter/2023-05-15-this-week-in-loongarch-1.md","source":"@site/newsletter/2023-05-15-this-week-in-loongarch-1.md","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 1 \u671f","description":"\u7531\u5fd7\u613f\u8005\u4eec\u81ea\u53d1\u7f16\u64b0\u7684 LoongArch® \u793e\u533a\u751f\u6001\u5468\u62a5\u300a\u6bcf\u5468\u4e00\u9f99\u300b\u4e0e\u5927\u5bb6\u89c1\u9762\u4e86\uff01","date":"2023-05-15T13:49:14.000Z","formattedDate":"2023\u5e745\u670815\u65e5","tags":[{"label":"\u6bcf\u5468\u4e00\u9f99","permalink":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99"}],"readingTime":4.185,"hasTruncateMarker":true,"authors":[{"name":"WANG Xuerui","title":"\ud83d\udc32\u9f99\u95e8\u5ba2\u6808\u6253\u6742\u7684","url":"https://github.com/xen0n","imageURL":"https://github.com/xen0n.png","key":"xen0n"}],"frontMatter":{"slug":"this-week-in-loongarch-1","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 1 \u671f","authors":["xen0n"],"date":"2023-05-15T13:49:14.000Z","tags":["\u6bcf\u5468\u4e00\u9f99"]},"unlisted":false,"prevItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 2 \u671f","permalink":"/newsletter/this-week-in-loongarch-2"}},"content":"\u7531\u5fd7\u613f\u8005\u4eec\u81ea\u53d1\u7f16\u64b0\u7684 LoongArch® \u793e\u533a\u751f\u6001\u5468\u62a5\u300a\u6bcf\u5468\u4e00\u9f99\u300b\u4e0e\u5927\u5bb6\u89c1\u9762\u4e86\uff01\\n\u6bcf\u4e2a\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u5e26\u6765\u793e\u533a\u8d21\u732e\u8005\u4eec\u4ece\u6700\u524d\u7ebf\u4f20\u6765\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\u3002\\n\\n\x3c!-- truncate --\x3e\\n\\n## \u5148\u300c\u9a6c\u300d\u518d\u770b\\n\\n\u672c\u680f\u76ee\u7684\u5185\u5bb9\u5177\u6709\u4e00\u5b9a\u5ef6\u7eed\u6027\uff0c\u5c06\u6301\u7eed\u8ffd\u8e2a\u62a5\u9053 LoongArch® \u9886\u57df\u7684\u91cd\u8981\u6216\u957f\u671f\u9879\u76ee\uff08\u5751\uff09\u3002\\n\\n### \u53d1\u884c\u7248\u4eec\\n\\n* Loong Arch Linux: yetist \u53d1\u5e03\u4e86 2023.05.08 \u7248\u672c\u7684 ISO \u955c\u50cf\u3002\\n* Debian: 5 \u6708 15 \u65e5\u95f4\uff0czhangdandan \u547c\u5401\u611f\u5174\u8da3\u7684\u540c\u5b66\u53bb[\u7533\u8bf7\u521b\u5efa debian-loongarch \u90ae\u4ef6\u5217\u8868\u7684 bug][debian-loongarch] \u4e0b\u56de\u590d\u8868\u793a\u652f\u6301\u3002\\n* Deepin: \u4e2d\u56fd\u65f6\u95f4 5 \u6708 6 \u65e5\u51cc\u6668 03:59\uff0cRevy \u5728 Deepin \u793e\u533a[\u63d0\u4ea4\u4e86\u589e\u52a0\u9f99\u67b6\u6784\u652f\u6301\u7684 PR][deepin-loong]\u3002\u8f9b\u82e6\u4e86\uff01\\n\\n[loongarchlinux-isos]: https://mirrors.wsyu.edu.cn/loongarch/archlinux/iso/\\n[debian-loongarch]: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1023585\\n[deepin-loong]: https://github.com/deepin-community/rfcs/pull/2\\n\\n### ClangBuiltLinux\\n\\n[\u4e0a\u6e38\u7684\u8ddf\u8e2a issue](https://github.com/ClangBuiltLinux/linux/issues/1787)\\n\u4e5f\u4f1a\u53ca\u65f6\u53cd\u6620\u6700\u65b0\u52a8\u6001\u3002\\n\\n\u9f99\u82af LLVM \u56e2\u961f\u4e0e xen0n \u6b63\u5728\u5bf9 LLVM \u8fdb\u884c\u5fc5\u8981\u7684\u4fee\u6539\uff0c\u4ee5\u4f7f\u5176\u8db3\u4ee5\u6784\u5efa Linux \u5185\u6838\u3002\\n\\n### Linux\\n\\n* \u5317\u4eac\u65f6\u95f4 5 \u6708 11 \u65e5\uff0c`drm-next` \u5206\u652f[\u63a5\u53d7\u4e86\u4e3a DCN \u67b6\u6784 AMD \u663e\u5361\u6dfb\u52a0\u9f99\u67b6\u6784\u9002\u914d\u7684\u8865\u4e01][dc-fp-loong]\u3002\\n \u8be5\u8865\u4e01\u5df2\u8fdb\u5165 linux-next\uff0c\u53ef\u65b9\u4fbf\u8bd5\u7528\u4e86\u3002\\n\\n[dc-fp-loong]: https://gitlab.freedesktop.org/agd5f/linux/-/commit/d3295311e589a14a7496f0e14b5be6c3b5d9e134\\n\\n### LLVM\\n\\n\u4e00\u5468\u95f4\u5408\u5e76\u4e86\u4ee5\u4e0b\u7684\u529f\u80fd\u6539\u8fdb\u7b49\uff1a\\n\\n* SixWeining \u4e3a LoongArch Clang \u7684\u5185\u8054\u6c47\u7f16\uff08inline asm\uff09[\u6dfb\u52a0\u4e86][D136436]\u4e0d\u5e26 `$` \u524d\u7f00\u7684\u901a\u7528\u5bc4\u5b58\u5668\u652f\u6301\u3002\\n \u8fd9\u662f\u652f\u6301 ClangBuiltLinux \u9879\u76ee\u6240\u5fc5\u987b\u7684\u80fd\u529b\u4e4b\u4e00\u3002\\n* SixWeining \u4e3a LoongArch Clang \u7684\u5185\u8054\u6c47\u7f16[\u6dfb\u52a0\u4e86][D150089]\u5bf9\u6d6e\u70b9\u6761\u4ef6\u7801\u5bc4\u5b58\u5668 `$fccX` \u7684 clobber \u652f\u6301\u3002\\n\\n\u51fa\u73b0\u4e86\u4ee5\u4e0b\u7684\u65b0\u52a8\u5411\uff1a\\n\\n* xen0n \u5c1d\u8bd5\u4e3a LoongArch \u540e\u7aef[\u6dfb\u52a0\u5bf9 large \u4ee3\u7801\u6a21\u578b\u7684\u652f\u6301][D150522]\uff08GCC \u53eb\u8fd9\u4e2a\u6a21\u578b `extreme`\uff09\u3002\\n \u8fd9\u662f\u652f\u6301 ClangBuiltLinux \u9879\u76ee\u6240\u5fc5\u987b\u7684\u80fd\u529b\u4e4b\u4e00\u3002\\n\\n[D136436]: https://reviews.llvm.org/D136436\\n[D150089]: https://reviews.llvm.org/D150089\\n[D150522]: https://reviews.llvm.org/D150522\\n\\n## \u793e\u533a\u6574\u6d3b:\u513f:\\n\\n\u672c\u680f\u76ee\u63a5\u53d7\u4efb\u4f55\u7f51\u53cb\u7684\u6295\u7a3f\uff0c\u53ea\u8981\u5185\u5bb9\u4e0e LoongArch® \u6709\u5173\uff0c\u5e76\u53ef\u4ee5\u4e3a\u8bfb\u8005\u5e26\u6765\u4ef7\u503c\uff0c\\n\u65e0\u8bba\u4e25\u8083\u8d21\u732e\uff08\u6574\u7684\u5927\u6d3b:\u513f:\uff09\u6216\u662f\u535a\u541b\u4e00\u7b11\u90fd\u4e00\u6982\u6b22\u8fce\uff01\\n\\ndonmor \u540c\u5b66\u4f7f\u7528 QEMU \u6a21\u62df\u7684\u9f99\u67b6\u6784\u9a8c\u8bc1\u4e86\u5f88\u591a\u8f6f\u4ef6\u548c\u6e38\u620f\uff1a\\n\\n* [TheXTech SMBX](https://github.com/Wohlstand/TheXTech)\uff0c\u540c\u4eba\u9a6c\u91cc\u5965\u5f15\u64ce\u3002\\n \u4f7f\u7528 `-sw` \u53c2\u6570\u8f6f\u89e3\u53ef\u5728 QEMU \u8fd0\u884c~~\u4e00\u5e27\u7535\u7ade~~\uff0c\u636e\u7fa4\u53cb\u8bf4\u72ec\u663e\u5b9e\u673a\u53ef\u73a9\\n* [EasyRPG Player](https://easyrpg.org/player)\uff0cRPG2000/2003 \u865a\u62df\u673a\uff0c\u5728 QEMU \u53ef\u6d41\u7545\u8fd0\u884c\\n* [LTFS](https://github.com/LinearTapeFileSystem/ltfs)\uff0c\u78c1\u5e26\u673a\u7684\u9a71\u52a8\u3002\u53ef\u80fd\u9700\u8981\u7a0d\u5fae\u6539\u4e00\u4e9b\u4ee3\u7801\\n* [FRP](https://gofrp.org/)\uff0c\u5185\u7f51\u7a7f\u900f\u5de5\u5177\uff0c\u61c2\u7684\u90fd\u61c2\uff08\\n* [SpaceCadetPinball](https://github.com/k4zmu2a/SpaceCadetPinball)\uff0cWindows XP \u4e09\u7ef4\u5f39\u7403\u7684\u79fb\u690d\u7248\u3002\\n \u9700\u8981\u81ea\u884c\u83b7\u53d6\u539f\u7248\u6587\u4ef6\u653e\u5165 `~/.local/share/SpaceCadetPinball`\u3002\\n QEMU \u5e27\u6570\u611f\u4eba\\\\_(:\u0437\u300d\u2220)\\\\_\\n* [Seafile](https://www.seafile.com/)\uff0c\u5927\u540d\u9f0e\u9f0e\u7684\u7f51\u76d8\uff0c\u5728\u8bba\u575b\u4e5f\u88ab\u63d0\u8d77\u597d\u591a\u6b21\u3002\\n \u6b64\u6b21\u7f16\u8bd1\u7684\u662f\u793e\u533a\u7248 9.0.10\uff0c\u4e0d\u6392\u9664\u4e13\u4e1a\u7248\u53ef\u4ee5 LATX \u8fd0\u884c\uff08\\n \u9664\u7f51\u9875\u7aef Office \u96c6\u6210\u548c\u5ba2\u6237\u7aef OAuth\uff08\u6ca1\u8bd5\u8fc7\uff0c\u636e\u8bf4\u56e0\u4e3a\u7f3a\u5c11 qt5-webengine\uff09\u5916\uff0c\u5927\u90e8\u5206\u529f\u80fd\u5df2\u57fa\u672c\u53ef\u7528\uff0cseadrive \u9700\u6307\u5b9a\u4f7f\u7528 qt5-webkit\uff08\u5df2\u8fdb\u5165 Arch \u6e90\uff09\\n* [np2kai](http://domisan.sakura.ne.jp/article/np2kai/np2kai.html)\uff0c\u5927\u540d\u9f0e\u9f0e\u7684 PC98 \u6a21\u62df\u5668 nekoproject2 \u7684\u8de8\u5e73\u53f0\u6539\u7248\uff0c\u5df2\u7ecf\u8fdb\u5165 libretro\u3002\\n QEMU \u53ef\u542f\u52a8\uff0c\u80fd\u8fd0\u884c\u4e1c\u65b9\u65e7\u4f5c\uff0c\u7136\u800c\u5e27\u6570\u4e0d\u5230 1fps\uff08\u60b2\uff09\\n* [Onscripter-Yuri](https://github.com/YuriSizuku/OnscripterYuri)\uff0cNScripter\u865a\u62df\u673a\u3002\\n QEMU \u53ef\u542f\u52a8\uff0c\u4e5f\u6bd4\u8f83\u5361\uff0c\u4e0d\u8fc7\u8fd9\u4e5f\u662f\u4e2a\u4e0d\u4f1a\u8ba9\u4eba\u6709\u7a7a\u5173\u5fc3\u5e27\u6570\u7684\u73a9\u610f\uff08\\n \u636e\u8bf4\u53ef\u4ee5\u542f\u52a8 FSN\uff0c\u6708\u7403\u4eba\u72c2\u559c\\n\\n## \u5f20\u8d34\u680f\\n\\n\u672c\u680f\u76ee\u76ee\u524d\u53ef\u4f9b\u5f20\u8d34\u516c\u76ca\u6027\u8d28\u7684\u5404\u79cd\u4fe1\u606f\u3002\\n\\n* \u675c\u6bd4\u6b22\u8fce\u540c\u5b66\u4eec\u53bb [LA UOSC \u7684 Debian port \u9875\u9762][lauosc-debian]\u770b\u770b\u3002\\n* \u672c\u5468\u62a5[\u6301\u7eed\u63a5\u53d7\u7f51\u53cb\u6295\u7a3f][call-for-submissions]\u3002\u6b22\u8fce\u6765\u4e0a\u6e38\u5750\u5750\uff01\\n\\n[lauosc-debian]: https://bbs.loongarch.org/d/167-lauosc-debian-12-ports\\n[call-for-submissions]: https://github.com/loongson-community/areweloongyet/issues/16"}]}')}}]); \ No newline at end of file diff --git a/assets/js/a68796e0.bc04ce43.js b/assets/js/a68796e0.bc04ce43.js new file mode 100644 index 00000000..52df896b --- /dev/null +++ b/assets/js/a68796e0.bc04ce43.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkareweloongyet=self.webpackChunkareweloongyet||[]).push([[2484],{4790:n=>{n.exports=JSON.parse('{"blogPosts":[{"id":"this-week-in-loongarch-32","metadata":{"permalink":"/newsletter/this-week-in-loongarch-32","editUrl":"https://github.com/loongson-community/areweloongyet/newsletter/2024-01-08-this-week-in-loongarch-32.md","source":"@site/newsletter/2024-01-08-this-week-in-loongarch-32.md","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 32 \u671f","description":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01","date":"2024-01-08T12:00:00.000Z","formattedDate":"2024\u5e741\u67088\u65e5","tags":[{"label":"\u6bcf\u5468\u4e00\u9f99","permalink":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99"}],"readingTime":9.795,"hasTruncateMarker":true,"authors":[{"name":"WANG Xuerui","title":"\ud83d\udc32\u9f99\u95e8\u5ba2\u6808\u6253\u6742\u7684","url":"https://github.com/xen0n","imageURL":"https://github.com/xen0n.png","key":"xen0n"}],"frontMatter":{"slug":"this-week-in-loongarch-32","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 32 \u671f","authors":["xen0n"],"date":"2024-01-08T12:00:00.000Z","tags":["\u6bcf\u5468\u4e00\u9f99"]},"unlisted":false,"nextItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 31 \u671f","permalink":"/newsletter/this-week-in-loongarch-31"}},"content":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01\\n\u4e0a\u5468\u7684\u8fdb\u5c55\u4e3b\u8981\u6709 Linux\u3001GCC\u3001LLVM \u4ee5\u53ca\u8bb8\u591a\u7684\u53d1\u884c\u7248\u3002\\n\u8be6\u60c5\u70b9\u8fdb\u6765\u770b\uff01\\n\\n\x3c!-- truncate --\x3e\\n\\n\u5982\u65e0\u7279\u522b\u8bf4\u660e\uff0c\u6587\u4e2d\u63d0\u53ca\u7684\u65e5\u671f\u3001\u65f6\u95f4\u90fd\u4e3a\u5317\u4eac\u65f6\u95f4\uff08UTC+8\uff09\u3002\\n\\n## \u5148\u300c\u9a6c\u300d\u518d\u770b {#marked-projects}\\n\\n\u672c\u680f\u76ee\u7684\u5185\u5bb9\u5177\u6709\u4e00\u5b9a\u5ef6\u7eed\u6027\uff0c\u5c06\u6301\u7eed\u8ffd\u8e2a\u62a5\u9053 LoongArch® \u9886\u57df\u7684\u91cd\u8981\u6216\u957f\u671f\u9879\u76ee\uff08\u5751\uff09\u3002\\n\\n### Linux {#linux}\\n\\n[heiher] [\u5b8c\u6210\u4e86](https://github.com/ClangBuiltLinux/linux/issues/1884#issuecomment-1879564435)\\nClangBuiltLinux \u7684\u6a21\u5757\uff08`CONFIG_MODULES`\uff09\u652f\u6301\u3002\\n\u81f3\u6b64 LLVM/Clang \u5de5\u5177\u94fe\u5df2\u7ecf\u53ef\u4ee5\u7528\u6765\u6784\u5efa\u5168\u529f\u80fd\u7684 LoongArch Linux \u4e86\u3002\\n\\nheiher \u8fd8\u4e3a Linux \u7684 Rust \u57fa\u7840\u8bbe\u65bd[\u63d0\u4ea4\u4e86](https://lore.kernel.org/rust-for-linux/20240106065941.180796-1-wangrui@loongson.cn/)\\nLoongArch \u652f\u6301\u3002\\n\u5f88\u5feb\u5c31\u53ef\u7528 Rust \u8fd9\u4e00\u65b0\u5174\u7f16\u7a0b\u8bed\u8a00\uff0c\u4e3a LoongArch \u8fd9\u4e00\u65b0\u5174\u67b6\u6784\u505a\u5185\u6838\u3001\u9a71\u52a8\u5f00\u53d1\u4e86\uff01\\n\\nBibo Mao [\u7ee7\u7eed\u4f18\u5316](https://lore.kernel.org/loongarch/20240108064056.232546-1-maobibo@loongson.cn/)\\nLoongArch KVM \u6027\u80fd\uff1a\\n\u4ee5\u534f\u52a9\u865a\u62df\u5316\uff08para-virtualization\uff09\u65b9\u5f0f\uff0c\u901a\u8fc7 `hvcl` \u6307\u4ee4\uff0c\\n\u52a0\u901f\u865a\u62df\u673a\u7684\u5904\u7406\u5668\u95f4\u4e2d\u65ad\uff08inter-processor interrupts\uff0cIPI\uff09\u5904\u7406\u3002\\n\u6539\u8fc7\u4e4b\u540e\uff0c16 \u6838\u7684\u865a\u62df\u673a\u4e2d UnixBench \u591a\u6838\u8dd1\u5206\u8fbe\u5230\u4e86\u7269\u7406\u673a\u60c5\u5f62\u7684 98.8%\uff08\u4f46\u4f5c\u8005\u672a\u7ed9\u51fa\u6539\u8fc7\u4e4b\u524d\u7684\u6027\u80fd\u5f00\u9500\u60c5\u51b5\uff09\u3002\\n\\n
\\n`hvcl` \u662f\u5565\u610f\u601d\uff1f\\n\\n\u4ece\u7528\u6cd5\u4e0a\u770b\uff0c`hvcl` \u662f `HyperVisor CaLl` \u7684\u7f29\u5199\uff0c\u300c\u76d1\u7ba1\u8c03\u7528\u300d\u7684\u610f\u601d\uff1a\u5411\u865a\u62df\u673a\u7ba1\u7406\u5668\uff08VM hypervisor\uff09\u8bf7\u6c42\u4e9b\u4ec0\u4e48\u3002\\n\\n\u8fd9\u6837\u4e00\u6765\uff0c\u53ef\u80fd\u6709\u7684\u8bfb\u8005\u4f1a\u7422\u78e8\u4e86\uff1a\u4e3a\u5565\u4e0d\u50cf `syscall` \u4e00\u6837\uff0c\u53eb\u4e00\u4e2a\u957f\u4e00\u70b9\u4f46\u66f4\u5b8c\u6574\u7684\u540d\u5b57\u5462\uff1f\\n\u4f5c\u4e3a\u4e00\u4e2a\u80fd\u591f\u5bf9\u6700\u5e38\u7528\u6307\u4ee4\u4e4b\u4e00\u5374\u53d6\u5230 `pcaddu12i` \u8fd9\u6837\u957f\u7684\u540d\u5b57\u4fdd\u6301\u5bb9\u5fcd\u7684\u67b6\u6784\uff0c\\n\u663e\u7136 `hypcall` \u8fd9\u79cd\u540d\u5b57\u66f4\u8fbe\u610f\uff0c\u5e76\u4e14\u4e0e\u5e38\u7528\u6307\u4ee4 `syscall` \u98ce\u683c\u4e00\u81f4\u3002\\n\u5b9e\u5219\u4e0d\u7136\uff1a\u5728 `dbcl`\uff08`DeBugger CaLl`\uff0c\u8c03\u8bd5\u5668\u8c03\u7528\uff1b\u7528\u6765\u5c06\u4e0b\u4f4d\u673a CPU \u653e\u5165\u8c03\u8bd5\u6a21\u5f0f\uff09\u4e0e `hvcl` \u4e4b\u95f4\uff0c\\n`syscall` \u53cd\u5012\u6210\u4e86\u300c\u5f02\u7c7b\u300d\uff01\\n\\n\u4e3a\u4e86\u964d\u4f4e\u5b66\u4e60\u8005\u7684\u8bb0\u5fc6\u8d1f\u62c5\uff0c\u7b14\u8005\u4ee5\u4e3a\u547d\u540d\u4e0a\u5982\u679c\u80fd\u505a\u5230\u4e00\u81f4\uff0c\u53ef\u80fd\u66f4\u52a0\u53cb\u597d\uff1a\\n\u8981\u4e48\u5c06 `dbcl` \u4e0e `hvcl` \u6539\u6210\u66f4\u8fbe\u610f\u7684 `dbgcall` \u4e0e `hypcall`\uff0c\\n\u8981\u4e48\u5c06 `syscall` \u6539\u6210\u66f4\u7b80\u7ec3\u7684 `sycl` \u6216 `sscl` \u4e4b\u7c7b\u3002\\n\u8003\u8651\u5230 `syscall` \u662f\u4e2a\u5e38\u89c1\u5355\u8bcd\u4e86\uff0c\u4e0d\u7528\u80cc\uff0c\u90a3\u4e48\u524d\u4e00\u79cd\u6539\u6cd5\u53ef\u80fd\u66f4\u53d7\u6b22\u8fce\u3002\\n\u6c47\u7f16\u4ee3\u7801\u7684\u517c\u5bb9\u6027\u4e0d\u4f1a\u53d7\u5f71\u54cd\uff0c\u56e0\u4e3a\u5148\u524d\u7684\u540d\u79f0\u4e00\u65f6\u534a\u4f1a:\u513f:\u4e0d\u4f1a\u88ab\u79fb\u9664\u652f\u6301\u3002\\n\\n
\\n\\n[heiher]: https://github.com/heiher\\n\\n### \u5de5\u5177\u94fe {#toolchain}\\n\\n#### GCC {#gcc}\\n\\nYang Yujie [\u5728\u91cd\u6784](https://gcc.gnu.org/pipermail/gcc-patches/2024-January/642084.html)\\nLoongArch \u540e\u7aef\u7684\u547d\u4ee4\u884c\u9009\u9879\u5904\u7406\u903b\u8f91\u3002\\n\\nLulu Cheng [\u4f18\u5316\u6389\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2024-January/641989.html)\u4f34\u968f\u4e00\u4e9b\u4f4d\u64cd\u4f5c\u7684\u591a\u4f59\u7684\u7b26\u53f7\u6269\u5c55\u64cd\u4f5c\u3002\\n\u8fd9\u5bf9\u6240\u6709\u8f6f\u4ef6\u7684\u4f4d\u64cd\u4f5c\u6027\u80fd\u90fd\u6709\u79ef\u6781\u5f71\u54cd\uff1b\u5728\u8dd1\u5206\u65b9\u9762\uff0c\u4e5f\u5bf9 SPEC2017 \u7684 `500.perlbench` \u7528\u4f8b\u6709 1.8% \u7684\u63d0\u5347\u3002\\n\\nYang Yujie \u4e3a\u4e86\u66f4\u597d\u7684 LTO\uff08\u94fe\u63a5\u65f6\u4f18\u5316\uff09\uff0c\u7ed9 LoongArch \u540e\u7aef[\u5b9e\u73b0\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2024-January/641930.html)\u7f16\u8bd1\u9009\u9879\u7684\u4fdd\u5b58\u6062\u590d\u3002\\n\u8fd9\u5c06\u4fee\u590d\u4e0a\u6e38 bug [PR113233](https://gcc.gnu.org/PR113233)\u3002\\n\\nJiahao Xu \u4e3a LA464 [\u907f\u514d\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2024-January/641889.html)\u6267\u884c\\n`xvpermi.q` \u6307\u4ee4\u65f6\u53ef\u80fd\u78b0\u5230\u7684\u672a\u5b9a\u4e49\u884c\u4e3a\u3002\\n\\nchenxiaolong \u4e3a\u4e86\u80fd\u7ed9 LoongArch \u6b63\u5e38\u542f\u7528 GCC \u5411\u91cf\u5316\u65b9\u9762\u7684\u516c\u5171\u6d4b\u8bd5\u7528\u4f8b\uff0c[\u4fee\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2024-January/641868.html)[\u4e00\u5806](https://gcc.gnu.org/pipermail/gcc-patches/2024-January/641878.html)\u5730\u65b9\u3002\\n\\nliwei \u628a LSX \u4e0e LASX \u539f\u5148\u4e0d\u5171\u4eab\u7684\u4e24\u4efd\u5e38\u91cf\u5411\u91cf\u6392\u5217\uff08constant vector permutation\uff09\u5b9e\u73b0\\n[\u7edf\u4e00\u6210\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-December/641477.html)\u4e00\u4efd\u3002\\n\u5728\u51c0\u5220\u9664\u4e86 888 \u884c\u4ee3\u7801\u4e4b\u5916\uff0c\u8dd1\u5206\u8fd8\u63d0\u9ad8\u4e86\u3002\\n\\n#### LLVM {#llvm}\\n\\n[heiher] \u6700\u7ec8\u5b8c\u6210\u4e86\u5468\u62a5\u7b2c 24 \u671f[\u62a5\u9053\u7684](./2023-11-13-this-week-in-loongarch-24.md#llvm) `code_model` \u652f\u6301\u5de5\u4f5c\uff1a\\n\u5408\u5e76\u4e86 [Clang](https://github.com/llvm/llvm-project/pull/72078) \u4e0e\\n[LoongArch \u540e\u7aef](https://github.com/llvm/llvm-project/pull/72079)\u4e24\u90e8\u5206\u7684\u6700\u7ec8\u7248\u672c\u3002\\n\\n\u6765\u81ea\u817e\u8baf\u7684 [DamonFool] \u8d70\u8fc7\u8def\u8fc7\uff0c\u7ed9 LoongArch \u540e\u7aef[\u4fee\u4e86](https://github.com/llvm/llvm-project/commit/52d1397e38ee88b170585c9c824d08e6975890ca)\u4e00\u5904\u975e\u8c03\u8bd5\u914d\u7f6e\u4e0b\u672a\u4f7f\u7528\u7684\u53d8\u91cf\uff08\u5426\u5219\u4f1a\u62a5\u9519\uff09\u3002\\n\\n[wangleiat] [\u5b9e\u73b0\u4e86](https://github.com/llvm/llvm-project/pull/76555)\u66f4\u591a\\nLoongArch psABI v2.30 \u8bed\u4e49\uff1a\\n\u6362\u7528 `pcaddu18i + jirl` \u5b9e\u73b0 `medium` \u4ee3\u7801\u6a21\u578b\u7684\u8fc7\u7a0b\u8c03\u7528\uff0c\\n\u5e76\u786e\u4fdd\u4e86 `extreme` \u4ee3\u7801\u6a21\u578b\u4e0b\u88c5\u8f7d\u7b26\u53f7\u5730\u5740\u64cd\u4f5c\u7684\u6307\u4ee4\u4e00\u5b9a\u76f8\u90bb\u3002\\n\\n[MQ-mengqing] [\u6539\u8fdb\u4e86](https://github.com/llvm/llvm-project/pull/76552)\\nLLVM MC \u5bf9\u4ee3\u7801\u6bb5\u5bf9\u9f50\u7684\u5904\u7406\u65b9\u5f0f\uff0cLoongArch \u548c RISC-V \u90fd\u4ece\u4e2d\u83b7\u76ca\u3002\\n\\n[DamonFool]: https://github.com/DamonFool\\n[wangleiat]: https://github.com/wangleiat\\n[MQ-mengqing]: https://github.com/MQ-mengqing\\n\\n## \u6742\u95fb\u64ad\u62a5 {#assorted-news}\\n\\n[heiher] \u7ed9 Rust \u6700\u5e38\u7528\u7684 JSON \u683c\u5f0f\u652f\u6301\u5e93 `serde_json`\\n[\u6807\u8bb0\u4e86](https://github.com/serde-rs/json/pull/1100)\\nLoongArch \u6700\u9002\u5408\u5927\u6570\u8fd0\u7b97\u7684\u6574\u6570\u7c7b\u578b\u5bbd\u5ea6\u662f 64 \u4f4d\u3002\\n\u4e0a\u6e38\u7ef4\u62a4\u8005\u534a\u5c0f\u65f6\u540e\u5c31\u7ed9\u5408\u5e76\u4e86\uff0c\u4e14\u53d1\u4e86 `1.0.111` \u65b0\u7248\u672c\u3002\\n\u8bf7\u540c\u5b66\u4eec\u6309\u9700 `cargo update` \u4ee5\u67e5\u6536\u8fd9\u90e8\u5206\u514d\u8d39\u6027\u80fd\u63d0\u5347\u3002\\n\\n:::info \u82b1\u7d6e\\n\u8fd9\u5751\u662f xen0n \u5728\u7f16\u8bd1 ripgrep \u65f6\u5019\u767e\u65e0\u804a\u8d56\uff0c\u8eba\u5728\u6905\u5b50\u4e0a\u770b\u5c4f\u5e55\u4e0a\u6eda\u52a8\u7684\u7f16\u8bd1\u8fdb\u5ea6\uff0c\u5076\u7136\u6ce8\u610f\u5230\u7684\u3002\\n\u6709\u65f6\u8eba\u5e73\u653e\u7a7a\u4e5f\u80fd\u521b\u9020\u4ef7\u503c\uff01\\n:::\\n\\n[xen0n] \u5411 gentoo-zh overlay [\u63a8\u5165\u4e86](https://github.com/microcai/gentoo-zh/pull/4109)\\nAOSC OS \u7684 liblol \u65b0\u65e7\u4e16\u754c\u517c\u5bb9\u89e3\u51b3\u65b9\u6848\u6253\u5305\u3002\\n\u6b64 overlay \u5305\u542b\u534e\u8bed\u7528\u6237\u5708\u5b50\u5e38\u7528\u7684\u8bb8\u591a\u8f6f\u4ef6\uff1b\\n\u540e\u7eed Gentoo \u7528\u6237\u4eec\u4e5f\u80fd\u7528\u76f8\u540c\u59ff\u52bf\u5b89\u88c5 WPS Office \u7b49\u65e7\u4e16\u754c\u95ed\u6e90\u8f6f\u4ef6\u4e86\u3002\\n\u4f8b\u5982\uff1a\u53ea\u8981 `emerge wps-office` \u5373\u53ef\u81ea\u52a8\u62c9\u5165 liblol \u53ca\u5176\u5185\u6838\u6a21\u5757\u3002\\n\\n:::info \u6ce8\u610f\u4e8b\u9879\\n\u76ee\u524d liblol \u63d0\u4f9b\u7684\u4f9d\u8d56\u5e93\u4e3b\u8981\u90fd\u6765\u81ea Loongnix®\uff0c\\n\u56e0\u6b64\u5728\u6211\u4eec\u5b8c\u6210\u5ba1\u8ba1\u8fd9\u4e9b\u6765\u81ea Loongnix \u7684\u6587\u4ef6\u7684\u5f00\u6e90\u8bb8\u53ef\u3001\u5e76\u786e\u8ba4\u5176\u4e2d\u4e0d\u542b\u95ed\u6e90\u6216\u4e13\u6709\u5185\u5bb9\u4e4b\u524d\uff0c\\n\u60a8\u90fd\u9700\u8981\u660e\u786e\u63a5\u53d7\u300a\u57fa\u7840\u7248 Loongnix \u64cd\u4f5c\u7cfb\u7edf\u6700\u7ec8\u7528\u6237\u8bb8\u53ef\u534f\u8bae\u300b\uff0c\u624d\u80fd\u5b89\u88c5 liblol\uff1a\\n\\n```\\n# e.g. /etc/portage/package.license/liblol\\napp-emulation/liblol Loongnix-Base-EULA\\n```\\n\\n\u6b64\u5916\uff0c\u9996\u6b21\u5b89\u88c5 `la_ow_syscall` \u5185\u6838\u6a21\u5757\u4e4b\u540e\uff0c\u8be5\u6a21\u5757\u4e0d\u4f1a\u88ab\u81ea\u52a8\u8f7d\u5165\u2014\u2014\u5728 Gentoo\\n\u6211\u4eec\u4e00\u822c\u4e0d\u5e2e\u7528\u6237\u505a\u8fd9\u79cd\u4e8b\uff0c\u800c\u4ee3\u4e4b\u4ee5 `emerge` \u7ed3\u675f\u540e\u7684\u6e29\u99a8\u63d0\u9192\u3002\\n\u5728\u5b89\u88c5\u5b8c liblol \u540e\u3001\u4f7f\u7528\u65e7\u4e16\u754c\u8f6f\u4ef6\u524d\uff0c\\n\u60a8\u53ef\u4ee5\u7b80\u5355\u91cd\u542f\u7cfb\u7edf\uff0c\u6216\u8005\u4ee5 `root` \u8eab\u4efd `modprobe la_ow_syscall`\uff1a\\n\u53ea\u9700\u6267\u884c\u8fd9\u4e00\u6b21\u5373\u53ef\uff0c\u540e\u7eed\u6bcf\u6b21\u7cfb\u7edf\u542f\u52a8\u65f6\u90fd\u4f1a\u81ea\u52a8\u52a0\u8f7d\u4e86\u3002\\n:::\\n\\n
\\n\u81f4\u6253\u5305\u4eba\u4eec\\n\\n\u5bf9\u65e7\u4e16\u754c\u8f6f\u4ef6\u5305\u7684\u6807\u8bb0\u65b9\u5f0f\u662f `RDEPEND` \u4e2d\u7684 `loong? ( virtual/loong-ow-compat )`\\n\u8868\u8fbe\u5f0f\u3002\\n\\n\u9700\u8981\u6ce8\u610f\uff1a\u65e7\u4e16\u754c\u7a0b\u5e8f\u7684\u52a8\u6001\u94fe\u63a5\u4f9d\u8d56\u90fd\u662f\u57fa\u4e8e liblol sysroot\uff08`/opt/lol`\uff09\u89e3\u6790\u7684\uff0c\\n\u800c\u4e0e\u5bbf\u4e3b\u7cfb\u7edf libdir \u65e0\u5173\u3002\\n\u8fd9\u4e0e Gentoo \u5f53\u4e0b\u7684 multilib \u65b9\u6848\u4e0d\u540c\uff0c\u53cd\u5012\u4e0e\u51e0\u5e74\u524d\u7684 `emul-linux-x86-*` \u5927\u5305\u795e\u4f3c\uff1b\\n\u56e0\u6b64\u5927\u90e8\u5206\u60c5\u51b5\u4e0b\uff0c\u610f\u5728\u6ee1\u8db3\u52a8\u6001\u94fe\u63a5\u4f9d\u8d56\u7684 `RDEPEND` \u9879\uff0c\u90fd\u4e0d\u5e94\u5f53\u5bf9 `loong` \u9002\u7528\u3002\\n\\n\u6253\u5305\u4eba\u4eec\u53ef\u53c2\u8003 [WPS Office \u7684\u6253\u5305\u505a\u6cd5](https://github.com/microcai/gentoo-zh/pull/4112)\uff0c\\n\u4e3a\u5176\u4ed6\u65e7\u4e16\u754c\u8f6f\u4ef6\u6253\u5305\u3002\\n\u63d0\u4ea4\u524d\uff0c\u8bb0\u5f97\u7b80\u5355\u6d4b\u4e0b\u8f6f\u4ef6\u529f\u80fd\uff1a\\n\u5982\u679c liblol sysroot \u91cc\u7f3a\u4f9d\u8d56\uff0c\u53ef\u4ee5[\u53bb liblol \u4e0a\u6e38\u62a5\u544a](https://github.com/shankerwangmiao/liblol/issues)\u3002\\n\\n\u540e\u7eed\uff0c\u6b64\u6253\u5305\u5de5\u4f5c\uff08\u5c24\u5176\u662f\u8d77\u5230\u6807\u8bb0\u4f5c\u7528\u7684 virtual \u5305\uff09\u5c06\u8fdb\u4e00\u6b65\u4e0a\u6e38\u81f3 Gentoo \u4e3b\u6e90\uff1b\\n\u8fd9\u5c06\u5728 liblol \u7684 license \u5ba1\u8ba1\u5de5\u4f5c\u5b8c\u6210\u4e4b\u540e\u8fdb\u884c\u3002\\n\\n
\\n\\n[xen0n]: https://github.com/xen0n\\n\\n## \u793e\u533a\u6574\u6d3b:\u513f: {#grins}\\n\\n\u672c\u680f\u76ee\u63a5\u53d7\u4efb\u4f55\u7f51\u53cb\u7684\u6295\u7a3f\uff0c\u53ea\u8981\u5185\u5bb9\u4e0e LoongArch® \u6709\u5173\uff0c\u5e76\u53ef\u4ee5\u4e3a\u8bfb\u8005\u5e26\u6765\u4ef7\u503c\uff0c\\n\u65e0\u8bba\u4e25\u8083\u8d21\u732e\uff08\u6574\u7684\u5927\u6d3b:\u513f:\uff09\u6216\u662f\u535a\u541b\u4e00\u7b11\u90fd\u4e00\u6982\u6b22\u8fce\uff01\\n\\n\u793e\u533a\u65b0\u9762\u5b54 [LiarOnce] \u7ed9 Loong Arch Linux [\u6253\u5305\u4e86](https://github.com/LiarOnce-LoongAL/vscodium-electron-loong64)\u4f7f\u7528\u7cfb\u7edf Electron \u7684\u6700\u65b0\u7248\u672c VSCodium\u3002\\n\\n[LiarOnce]: https://github.com/LiarOnce\\n\\n\u793e\u533a\u65b0\u9762\u5b54 [hackpascal] \u5728 OpenWrt \u4e0a\u6e38[\u8d34\u51fa\u4e86](https://github.com/openwrt/openwrt/pull/14357)\\nLoongArch64 \u7684\u79fb\u690d\uff0c\u4f7f\u7528 Linux 6.6 \u5185\u6838\u3002\\n\u5148\u524d [phorcys] \u5df2\u7ecf[\u7ef4\u62a4\u4e86](https://github.com/phorcys/openwrt-loongarch)\u4e00\u4e2a\\nfork \u6709\u4e00\u6bb5\u65f6\u95f4\uff0c\u4f46\u7b14\u8005\u5370\u8c61\u4e2d :ta: \u4f3c\u4e4e\u65e0\u610f\u5c06\u5176\u4e0a\u6e38\uff1b\u7ed3\u679c\u53c8\u4e00\u540d\u52c7\u58eb\u5c31\u51fa\u73b0\u4e86\u3002\\n\u770b\u8d77\u6765 OpenWrt \u786e\u5b9e\u662f\u73a9\u5bb6\u521a\u9700\uff01\\n\\n[hackpascal]: https://github.com/hackpascal\\n[phorcys]: https://github.com/phorcys\\n\\n\u7fa4\u53cb [amdyes][jiangcuo] \u8fd1\u65e5\u5c06 :ta: [\u7ef4\u62a4\u7684](https://github.com/jiangcuo/Proxmox-Port)\\nProxmox VE\uff08PVE\uff09\u79fb\u690d\u4e0e\u4e0a\u6e38\u6700\u65b0\u7248\u672c\u540c\u6b65\u4e86\uff0c\u652f\u6301 64 \u4f4d\u7684 LoongArch \u4ee5\u53ca ARM\u3001RISC-V \u5e73\u53f0\u3002\\n\u9f99\u67b6\u6784\u7684\u5bb6\u5ead\u6570\u636e\u4e2d\u5fc3\u5e94\u7528\u62fc\u56fe\u773c\u89c1\u5730\u5b8c\u6574\u8d77\u6765\uff01\\n\\n[jiangcuo]: https://github.com/jiangcuo\\n\\n## \u5f20\u8d34\u680f {#bulletin}\\n\\n\u672c\u680f\u76ee\u53ef\u4f9b\u5f20\u8d34\u516c\u76ca\u6027\u8d28\u7684\u5404\u79cd\u4fe1\u606f\u3002\\n\\n* \u53cb\u60c5\u6269\u6563\uff1a[\u5b89\u540c\u5f00\u6e90\u793e\u533a\uff08AOSC\uff09][aosc]\u7684\u9f99\u67b6\u6784\u79fb\u690d\u4e3b\u7ebf\u5316\u5de5\u4f5c\u300c\u5408\u9f99\u300d\u4ecd\u5728\u5982\u706b\u5982\u837c\u8fdb\u884c\u4e2d\uff0c\\n \u6b64\u5de5\u4f5c\u5b8c\u6210\u540e\u9f99\u67b6\u6784\u5c06\u5347\u683c\u4e3a AOSC OS \u7684 Tier 1 \u67b6\u6784\u3002\\n \u6b22\u8fce\u540c\u5b66\u4eec\u8bd5\u7528\u3001\u53cd\u9988\uff0c\u4e5f\u6b22\u8fce\u6709\u5fd7\u4e4b\u58eb\u4e00\u540c\u52a0\u5165\uff08\u6c9f\u901a\u6e20\u9053\u8be6\u89c1 AOSC \u7f51\u7ad9\u76f8\u5173\u680f\u76ee\uff09\u3002\\n* \u672c\u5468\u62a5[\u6301\u7eed\u63a5\u53d7\u7f51\u53cb\u6295\u7a3f][call-for-submissions]\u3002\u6b22\u8fce\u6765\u4e0a\u6e38\u5750\u5750\uff01\\n\\n[aosc]: https://aosc.io\\n[call-for-submissions]: https://github.com/loongson-community/areweloongyet/issues/16"},{"id":"this-week-in-loongarch-31","metadata":{"permalink":"/newsletter/this-week-in-loongarch-31","editUrl":"https://github.com/loongson-community/areweloongyet/newsletter/2024-01-01-this-week-in-loongarch-31.md","source":"@site/newsletter/2024-01-01-this-week-in-loongarch-31.md","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 31 \u671f","description":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01","date":"2024-01-02T15:25:00.000Z","formattedDate":"2024\u5e741\u67082\u65e5","tags":[{"label":"\u6bcf\u5468\u4e00\u9f99","permalink":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99"}],"readingTime":4.845,"hasTruncateMarker":true,"authors":[{"name":"WANG Xuerui","title":"\ud83d\udc32\u9f99\u95e8\u5ba2\u6808\u6253\u6742\u7684","url":"https://github.com/xen0n","imageURL":"https://github.com/xen0n.png","key":"xen0n"}],"frontMatter":{"slug":"this-week-in-loongarch-31","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 31 \u671f","authors":["xen0n"],"date":"2024-01-02T15:25:00.000Z","tags":["\u6bcf\u5468\u4e00\u9f99"]},"unlisted":false,"prevItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 32 \u671f","permalink":"/newsletter/this-week-in-loongarch-32"},"nextItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 30 \u671f","permalink":"/newsletter/this-week-in-loongarch-30"}},"content":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01\\n\u4e0a\u5468\u7684\u8fdb\u5c55\u4e3b\u8981\u6709 Linux \u548c\u5de5\u5177\u94fe\u3002\\n\u8be6\u60c5\u70b9\u8fdb\u6765\u770b\uff01\\n\\n\x3c!-- truncate --\x3e\\n\\n\u5982\u65e0\u7279\u522b\u8bf4\u660e\uff0c\u6587\u4e2d\u63d0\u53ca\u7684\u65e5\u671f\u3001\u65f6\u95f4\u90fd\u4e3a\u5317\u4eac\u65f6\u95f4\uff08UTC+8\uff09\u3002\\n\\n\u672c\u671f\u5468\u62a5\u7684\u5b9e\u9645\u53d1\u7a3f\u65f6\u95f4\u662f\u5468\u4e8c\u665a\u95f4\uff0c\u56e0\u4e3a\u5468\u4e00\u662f\u5143\u65e6\u5047\u671f\u3002\u65b0\u5e74\u5feb\u4e50 :tada:\uff01\\n\\n## \u5148\u300c\u9a6c\u300d\u518d\u770b {#marked-projects}\\n\\n\u672c\u680f\u76ee\u7684\u5185\u5bb9\u5177\u6709\u4e00\u5b9a\u5ef6\u7eed\u6027\uff0c\u5c06\u6301\u7eed\u8ffd\u8e2a\u62a5\u9053 LoongArch® \u9886\u57df\u7684\u91cd\u8981\u6216\u957f\u671f\u9879\u76ee\uff08\u5751\uff09\u3002\\n\\n### Linux {#linux}\\n\\n[Xi Ruoyao][xry111] [\u67e5\u660e\u5e76\u4fee\u590d\u4e86](https://lore.kernel.org/loongarch/20240102123706.6099-2-xry111@xry111.site/)\u9f99\u67b6\u6784\u4e0a\\nLinux \u4e00\u76f4\u4ee5\u6765\u7684[\u5076\u73b0\u95ee\u9898](https://github.com/loongson-community/discussions/issues/7)\uff1a\\n\u521b\u5efa\u65b0\u8fdb\u7a0b\u65f6\uff0c\u65b0\u8fdb\u7a0b\u53ef\u80fd\u7ee7\u627f\u5230\u4e0d\u5e72\u51c0\u7684 FCSR\uff08\u6d6e\u70b9\u63a7\u5236\u72b6\u6001\u5bc4\u5b58\u5668\uff09\u5185\u5bb9\uff0c\u5bfc\u81f4\u540e\u7eed\u505a\u6d6e\u70b9\u64cd\u4f5c\u65f6\u8fdf\u65e9\u53d1\u751f\u975e\u9884\u671f\u884c\u4e3a\u751a\u81f3\u5d29\u6e83\u3002\\n\u6b64 bug \u662f\u4ece MIPS \u5185\u6838\u5e26\u6765\u7684\u9057\u4ea7\u3002\u7531\u4e8e MIPS \u7684 FCSR \u521d\u59cb\u5316\u9700\u8981\u8003\u8651\u7a0b\u5e8f\u7684\u6267\u884c\u57df\uff08personality\uff09\uff0cXi Ruoyao \u4e0d\u77e5\u9053\u600e\u4e48\u4fee\uff0c\\n\u6240\u4ee5\u53ea\u80fd[\u62a5\u544a\u4e86](https://lore.kernel.org/linux-mips/7a6aa1bbdbbe2e63ae96ff163fab0349f58f1b9e.camel@xry111.site/)\u8be5\u95ee\u9898\uff0c\\n\u7b49\u5f85 MIPS \u76f8\u5173\u7ef4\u62a4\u8005\u5904\u7406\u3002\\n\\n[xen0n] [\u4fee\u590d\u4e86](https://lore.kernel.org/loongarch/20231227070317.1936234-1-kernel@xen0n.name/)\u4f7f\u7528\u6700\u65b0\\nbinutils\u3001gcc \u6784\u5efa\u5185\u6838\u65f6 `modpost` \u4f1a\u5d29\u6e83\u7684\u95ee\u9898\u3002\\n\\n[xry111]: https://github.com/xry111\\n[xen0n]: https://github.com/xen0n\\n\\n### \u5de5\u5177\u94fe {#toolchain}\\n\\n#### binutils {#binutils}\\n\\n\u7531\u5e38\u4f73\u741b\u540c\u5b66\u64cd\u5200\u7684\uff0c\u5468\u62a5\u7b2c 27 \u671f[\u63d0\u5230\u7684](./2023-12-05-this-week-in-loongarch-27/index.md#abi) LoongArch\\nTLS LE relaxation \u7279\u6027\u7684 binutils \u90e8\u5206\uff0c\u6210\u529f\u8fdb\u5165\u4e3b\u7ebf\u4e86\u3002\\n\u8ba9\u6211\u4eec\u795d\u8d3a :ta: \u52a0\u5165\u4e0a\u6e38\u8d21\u732e\u8005\u7684\u884c\u5217 :tada:\uff01\\n\\n#### GCC {#gcc}\\n\\n[Xi Ruoyao][xry111] [\u4fee\u590d\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-December/641443.html)\\nxen0n [\u62a5\u544a\u7684][PR113148] bug:\\nXWayland \u7b49\u8f6f\u4ef6\u4e2d\u5b58\u5728\u4e2a\u522b\u5185\u542b\u5927\u91cf\u6d6e\u70b9\u6bd4\u8f83\u64cd\u4f5c\u7684\u51fd\u6570\uff0c\u7f16\u8bd1\u8fd9\u4e9b\u51fd\u6570\u65f6 gcc \u4f1a\u5d29\u6e83\u3002\\n\\n[PR113148]: https://gcc.gnu.org/PR113148\\n\\nXi Ruoyao \u8fd8[\u5141\u8bb8\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-December/641609.html)\u5229\u7528\\n`{,x}vf{min,max}` \u56db\u79cd\u6307\u4ee4\u6765\u5411\u91cf\u5316\u5faa\u73af\u4e2d\u7684\u53d6\u6700\u5927/\u6700\u5c0f\u503c\u64cd\u4f5c\u3002LoongArch \u7684\u8fd9\u56db\u79cd\u6307\u4ee4\u8bbe\u8ba1\u4e0a\u5c31\u7b26\u5408 IEEE 754-2008 \u8bed\u4e49\uff0c\\n\u56e0\u800c\u53ef\u7528\u3002\\n\\n\u5468\u62a5\u7b2c 30 \u671f[\u63d0\u5230\u7684](./2023-12-26-this-week-in-loongarch-30/index.md#gcc)\\nXi Ruoyao \u5f53\u65f6\u300c\u6b63\u5728\u8c03\u6574\u300d\u7684\u8865\u4e01\uff0c\u73b0\u5df2\u5b8c\u6210\u6539\u8fdb\u5de5\u4f5c\uff0c[\u8fdb\u5165\u4e3b\u7ebf\u4e86](https://gcc.gnu.org/r14-6863)\u3002\\n\\n\u7531 Lulu Cheng \u5f00\u53d1\u7684\uff0c\u4e0a\u4e00\u8282\u4e2d\u63d0\u5230\u7684 TLS LE relaxation \u7279\u6027\u7684 gcc \u90e8\u5206\uff0c\\n\u4e5f[\u8fdb\u5165\u4e3b\u7ebf\u4e86](https://gcc.gnu.org/r14-6879)\u3002\\n\\n#### LLVM {#llvm}\\n\\n[yjijd] \u6309\u7167 LoongArch psABI v2.30\uff0c[\u4fee\u590d\u4e86](https://github.com/llvm/llvm-project/pull/74990)\u5148\u524d\u4f1a\u7528\u5411\u91cf\u5bc4\u5b58\u5668\u4f20\u9012\u5411\u91cf\u53c2\u6570\u7684\u95ee\u9898\u3002\\n\\n[wangleiat] \u4fee\u590d\u4e86\u4e00\u7cfb\u5217 SIMD \u4ee3\u7801\u751f\u6210\u4e0a\u7684\u9519\u8bef\uff1a\\n\\n* [`{,x}vbitseli.b` \u7684\u8bef\u7528](https://github.com/llvm/llvm-project/commit/da5378e87e11689d05a58198d6e15e9551916794)\uff0c\\n* [`xvrepl128vei` \u7684\u8bef\u7528](https://github.com/llvm/llvm-project/commit/c7367f985e0d27aeb8bc993406d1b9f4ca307399)\uff0c\u4ee5\u53ca\\n* [`vector_extract` \u5728 LASX \u4e0a\u7684\u9519\u8bef\u7f16\u8bd1\u7ed3\u679c](https://github.com/llvm/llvm-project/commit/47c88bcd5de91522241cca1aaa1b7762ceb01394)\u3002\\n\\nGo \u56e2\u961f\u7684 [abner-chenc] \u548c Xiaolin Zhao \u6765 LLVM \u4e0a\u6e38\u4e32\u95e8\u4e86\uff1a:ta: \u4eec\u7ed9 TSan\\n[\u589e\u52a0\u4e86](https://github.com/llvm/llvm-project/pull/72819) Go `loong64` \u652f\u6301\u3002\\n\\n[yjijd]: https://github.com/yjijd\\n[wangleiat]: https://github.com/wangleiat\\n[abner-chenc]: https://github.com/abner-chenc\\n\\n## \u6742\u95fb\u64ad\u62a5 {#assorted-news}\\n\\nSlackwareloong \u7ef4\u62a4\u8005 [shipujin] \u8bf4\uff1aSlackware \u4e2d\u6587\u793e\u533a\u5728 Slackwareloong LTS 1.0 \u7cfb\u7edf\u4e0b\uff0c\\n\u6210\u529f\u9a8c\u8bc1\u4e86\u6784\u5efa\u3001\u8fd0\u884c KDE Plasma 6 Beta 2 \u7248\u672c\u684c\u9762\u73af\u5883\u3002\\n\u540e\u9762\u4f1a\u628a\u6784\u5efa\u597d\u7684\u76f8\u5173\u8f6f\u4ef6\u5305\u53d1\u5e03\u5230 Slackwareloong \u4e0b\u7684 KDE6 testing \u4ed3\u5e93\u3002\\n\u611f\u8c22 shipujin \u63d0\u4f9b\u65b0\u95fb\u7ebf\u7d22\uff01\\n\\n[shipujin]: https://github.com/shipujin\\n\\n## \u793e\u533a\u6574\u6d3b:\u513f: {#grins}\\n\\n\u672c\u680f\u76ee\u63a5\u53d7\u4efb\u4f55\u7f51\u53cb\u7684\u6295\u7a3f\uff0c\u53ea\u8981\u5185\u5bb9\u4e0e LoongArch® \u6709\u5173\uff0c\u5e76\u53ef\u4ee5\u4e3a\u8bfb\u8005\u5e26\u6765\u4ef7\u503c\uff0c\\n\u65e0\u8bba\u4e25\u8083\u8d21\u732e\uff08\u6574\u7684\u5927\u6d3b:\u513f:\uff09\u6216\u662f\u535a\u541b\u4e00\u7b11\u90fd\u4e00\u6982\u6b22\u8fce\uff01\\n\\nLoongArch \u975e\u5b98\u65b9\u5f00\u6e90\u793e\u533a\uff08LA UOSC\uff09\u7248\u4e3b[\u675c\u6bd4][dbhrscom][\u53d1\u8d77\u4e86](https://bbs.loongarch.org/d/351-lauosc-freebsd-ports)\\nFreeBSD \u79fb\u690d\u9879\u76ee\uff0c\u5de5\u4f5c\u8fdb\u5ea6[\u653e\u5728\u4e86](https://gitee.com/lauosc/freebsd) Gitee \u4e0a\u3002\\n\u65e0\u5c18\uff08yu shan wei\uff09\u540c\u5b66\u4e5f\u5355\u72ec[\u7ef4\u62a4\u4e86](https://gitee.com/yushanwei/freebsd4loongarch)\u8865\u4e01\u96c6\u5408\u3002\\n\u611f\u8c22 [Haowu Ge][haowuge] \u5728\u7fa4\u804a\u4e2d\u6295\u9012\u65b0\u95fb\u7ebf\u7d22\uff01\\n\\n[dbhrscom]: https://bbs.loongarch.org/u/4\\n[haowuge]: https://github.com/haowuge\\n\\n## \u5f20\u8d34\u680f {#bulletin}\\n\\n\u672c\u680f\u76ee\u53ef\u4f9b\u5f20\u8d34\u516c\u76ca\u6027\u8d28\u7684\u5404\u79cd\u4fe1\u606f\u3002\\n\\n* \u53cb\u60c5\u6269\u6563\uff1a[\u5b89\u540c\u5f00\u6e90\u793e\u533a\uff08AOSC\uff09][aosc]\u7684\u9f99\u67b6\u6784\u79fb\u690d\u4e3b\u7ebf\u5316\u5de5\u4f5c\u300c\u5408\u9f99\u300d\u4ecd\u5728\u5982\u706b\u5982\u837c\u8fdb\u884c\u4e2d\uff0c\\n \u6b64\u5de5\u4f5c\u5b8c\u6210\u540e\u9f99\u67b6\u6784\u5c06\u5347\u683c\u4e3a AOSC OS \u7684 Tier 1 \u67b6\u6784\u3002\\n \u6b22\u8fce\u540c\u5b66\u4eec\u8bd5\u7528\u3001\u53cd\u9988\uff0c\u4e5f\u6b22\u8fce\u6709\u5fd7\u4e4b\u58eb\u4e00\u540c\u52a0\u5165\uff08\u6c9f\u901a\u6e20\u9053\u8be6\u89c1 AOSC \u7f51\u7ad9\u76f8\u5173\u680f\u76ee\uff09\u3002\\n* \u672c\u5468\u62a5[\u6301\u7eed\u63a5\u53d7\u7f51\u53cb\u6295\u7a3f][call-for-submissions]\u3002\u6b22\u8fce\u6765\u4e0a\u6e38\u5750\u5750\uff01\\n\\n[aosc]: https://aosc.io\\n[call-for-submissions]: https://github.com/loongson-community/areweloongyet/issues/16"},{"id":"this-week-in-loongarch-30","metadata":{"permalink":"/newsletter/this-week-in-loongarch-30","editUrl":"https://github.com/loongson-community/areweloongyet/newsletter/2023-12-26-this-week-in-loongarch-30/index.md","source":"@site/newsletter/2023-12-26-this-week-in-loongarch-30/index.md","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 30 \u671f","description":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01","date":"2023-12-25T16:50:00.000Z","formattedDate":"2023\u5e7412\u670825\u65e5","tags":[{"label":"\u6bcf\u5468\u4e00\u9f99","permalink":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99"}],"readingTime":12.015,"hasTruncateMarker":true,"authors":[{"name":"WANG Xuerui","title":"\ud83d\udc32\u9f99\u95e8\u5ba2\u6808\u6253\u6742\u7684","url":"https://github.com/xen0n","imageURL":"https://github.com/xen0n.png","key":"xen0n"}],"frontMatter":{"slug":"this-week-in-loongarch-30","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 30 \u671f","authors":["xen0n"],"date":"2023-12-25T16:50:00.000Z","tags":["\u6bcf\u5468\u4e00\u9f99"]},"unlisted":false,"prevItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 31 \u671f","permalink":"/newsletter/this-week-in-loongarch-31"},"nextItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 29 \u671f","permalink":"/newsletter/this-week-in-loongarch-29"}},"content":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01\\n\u4e0a\u5468\u7684\u8fdb\u5c55\u4e3b\u8981\u6709 LoongArch® ABI v2.30\u3001\u5de5\u5177\u94fe\uff0c\u4ee5\u53ca AOSC \u7814\u53d1\u7684\u65b0\u65e7\u4e16\u754c\u517c\u5bb9\u65b9\u6848\u3002\\n\u8be6\u60c5\u70b9\u8fdb\u6765\u770b\uff01\\n\\n\x3c!-- truncate --\x3e\\n\\n\u5982\u65e0\u7279\u522b\u8bf4\u660e\uff0c\u6587\u4e2d\u63d0\u53ca\u7684\u65e5\u671f\u3001\u65f6\u95f4\u90fd\u4e3a\u5317\u4eac\u65f6\u95f4\uff08UTC+8\uff09\u3002\\n\\n\u672c\u671f\u5468\u62a5\u7684\u5b9e\u9645\u53d1\u7a3f\u65f6\u95f4\u662f\u5468\u4e8c\u51cc\u6668\uff0c\u56e0\u4e3a\u8fd9\u4e2a\u70b9\u624d\u5199\u5b8c\u2014\u2014\u767d\u5929\u90fd\u5728\u5fd9\u522b\u7684\u3002\\n\u7f51\u9875\u4e0a\u663e\u793a\u7684\u53d1\u7a3f\u65f6\u95f4\u4ecd\u7136\u662f 12 \u6708 25 \u65e5\uff1a\\n\u8fd9\u662f Docusaurus \u65e9\u671f\u4e3a\u4e86\u4fee\u590d\u4e00\u4e2a\u65f6\u533a bug \u800c[\u5bfc\u81f4\u7684](https://github.com/facebook/docusaurus/issues/4881)\u53c8\u4e00\u4e2a\u65f6\u533a bug\u3002\\n\\n## \u5148\u300c\u9a6c\u300d\u518d\u770b {#marked-projects}\\n\\n\u672c\u680f\u76ee\u7684\u5185\u5bb9\u5177\u6709\u4e00\u5b9a\u5ef6\u7eed\u6027\uff0c\u5c06\u6301\u7eed\u8ffd\u8e2a\u62a5\u9053 LoongArch® \u9886\u57df\u7684\u91cd\u8981\u6216\u957f\u671f\u9879\u76ee\uff08\u5751\uff09\u3002\\n\\n### Linux {#linux}\\n\\nHuacai Chen [\u53d1\u51fa\u4e86](https://lore.kernel.org/loongarch/20231223120642.1067728-1-chenhuacai@loongson.cn/)\\nLinux v6.8 \u5f00\u53d1\u5468\u671f\u7684\u9f99\u67b6\u6784 KVM \u53d8\u66f4 PR\u3002\\n\u5176\u4e2d\uff0cBibo Mao \u4fee\u590d\u4e86\u5b9a\u65f6\u5668\u7684\u6a21\u62df\uff1bTianrui Zhao \u8ba9\u865a\u62df\u673a\u5185\u90e8\u53ef\u4ee5\u4f7f\u7528 LSX\u3001LASX \u6307\u4ee4\u3002\\n\\nHuacai Chen [\u4fee\u590d\u4e86](https://lore.kernel.org/loongarch/20231225070002.1350705-1-chenhuacai@loongson.cn/)\u5355\u8282\u70b9\u7684\u903b\u8f91\u5904\u7406\u5668\u6570\u91cf\u5927\u4e8e 64 \u65f6\uff0c\u7cfb\u7edf\u5f15\u5bfc\u8fc7\u7a0b\u4f1a\u5199\u574f\u4e00\u4e9b\u5185\u5b58\u5185\u5bb9\u7684\u95ee\u9898\u3002\\n\\n\u9f99\u82af QEMU \u5f00\u53d1\u8005 Song Gao \u4e3a\u65b9\u4fbf\u7528\u6237\u4ee5 FDT\uff08flattened device tree\uff0c\u62cd\u5e73\u8bbe\u5907\u6811\uff09\u534f\u8bae\u542f\u52a8\u4e3b\u7ebf\u5185\u6838\uff0c\\n\u9884\u5907\u4e3a\u4e3b\u7ebf\u5185\u6838\u7684\u9ed8\u8ba4\u914d\u7f6e[\u5f00\u542f](https://lore.kernel.org/loongarch/20231222024628.3138406-1-gaosong@loongson.cn)\u901a\u7528 PCIe \u5bbf\u4e3b\u652f\u6301\u3002\\n\\n[Xi Ruoyao][xry111] \u5c1d\u8bd5[\u5fae\u8c03\u4e86](https://lore.kernel.org/loongarch/20231214130206.21219-1-xry111@xry111.site/)\\nLoongArch \u4e0a\u4e0b\u6587\u5207\u6362\u4ee3\u7801\u4e2d\u4fdd\u5b58\u3001\u6062\u590d 8 \u4e2a\u6d6e\u70b9\u6761\u4ef6\u7801\u7684\u7247\u6bb5\uff0c\\n\u56e0\u4e3a\u5148\u524d\u7684\u7b80\u5355\u5199\u6cd5\u5728 LA464 \u4e0a\u6027\u80fd\u5f88\u5dee\u3002\\n\u7136\u800c Huacai Chen \u8fd8\u662f[\u559c\u6b22](https://lore.kernel.org/loongarch/CAAhV-H5m65qL05W9VZw7Qff-qg8TUc_wY8zs-pSeBuWSAFnSaQ@mail.gmail.com/)\u7b80\u5355\u7684\u4ee3\u7801\uff0c\\n\u56e0\u6b64\u4f30\u8ba1\u5728\u8c01\u638f\u51fa\u8fd9\u4e48\u6539\u53ef\u4ee5\u63d0\u5347\u4e0a\u4e0b\u6587\u5207\u6362\u6027\u80fd\u7684\u5ba2\u89c2\u8bc1\u636e\uff0c\u4f8b\u5982\u8dd1\u5206\u5bf9\u6bd4\u4e4b\u524d\uff0c\u8fd9\u4e2a\u8865\u4e01\u662f\u4e0d\u4f1a\u88ab\u6536\u4e86 :confused:\u3002\\n\\n:::info \u7a76\u7adf\u6709\u591a\u5dee\uff1f\\n\u6839\u636e Xi Ruoyao \u7684\u5b9e\u9a8c\u7ed3\u679c\uff0cLA464 \u4e0a\u6bcf\u6b21 `movcf2gr` \u82b1\u7684\u65f6\u95f4\u662f `movcf2fr + movfr2gr` \u7684 7 \u500d\uff0c\\n\u800c `movgr2cf` \u66f4\u662f `movgr2fr + movfr2cf` \u7684 15 \u500d\uff01\\n\u60f3\u5728\u6d6e\u70b9\u6761\u4ef6\u7801\u548c\u6574\u6570\u5bc4\u5b58\u5668\u4e4b\u95f4\u642c\u8fd0\u591a\u8fbe 1 \u6bd4\u7279\u7684\u6570\u636e\uff0c\u591a\u7ecf\u8fc7\u6d6e\u70b9\u5bc4\u5b58\u5668\u5012\u4e00\u624b\uff0c\u5c45\u7136\u80fd\u5feb\u51e0\u500d\u751a\u81f3\u5341\u51e0\u500d\uff0c\u7b80\u76f4\u79bb\u8c31\u3002\\n\u8fd8\u597d LA664 \u628a\u8fd9\u5751\u586b\u6389\u4e86\u3002\\n:::\\n\\n### \u5de5\u5177\u94fe {#toolchain}\\n\\n#### ABI {#abi}\\n\\n\u4eca\uff0825\uff09\u65e5\u4e0b\u73ed\u524d\uff0c\u9f99\u82af\u5de5\u5177\u94fe\u56e2\u961f[\u5408\u5e76\u4e86](https://github.com/loongson/la-abi-specs/pull/5)\\nLoongArch ABI \u89c4\u8303\u6587\u6863\u7684 v2.30 \u66f4\u65b0\uff08\u6574\u4f53\u7248\u672c\u53f7\uff1b\u6587\u6863\u7248\u672c\u53f7\u4e3a v20231219\uff09\u3002\\n\u672c\u6b21\u66f4\u65b0\u7684\u4e3b\u8981\u5185\u5bb9\u6709\uff1a\\n\\n* \u660e\u786e\u4e86\u57fa\u7840 ABI \u4e0b\uff0c\u51fd\u6570\u7684\u5411\u91cf\u53c2\u6570\u7684\u4f20\u9012\u65b9\u5f0f\u3002\u57fa\u7840 ABI \u4e0d\u4fdd\u8bc1 SIMD \u6269\u5c55\u4e00\u5b9a\u5b58\u5728\uff0c\u56e0\u6b64\u53ea\u80fd\u5c06\u5411\u91cf\u53c2\u6570\u89c6\u4f5c\u57fa\u672c\u7c7b\u578b\u91cf\u7684\u6570\u7ec4\u5904\u7406\u3002\\n* \u4fee\u590d\u4e86\u4e00\u4e9b\u91cd\u5b9a\u4f4d\u64cd\u4f5c\u7684\u7b97\u672f\u63cf\u8ff0\u3002\\n* \u589e\u52a0\u4e86\u4ee3\u7801\u6a21\u578b\uff08code model\uff09\u7ae0\u8282\u3002\u4e3b\u8981\u662f\u660e\u786e\u5b9a\u4e49\u4e86 `normal`\u3001`medium` \u4e0e `extreme` \u4e09\u79cd\u4ee3\u7801\u6a21\u578b\uff0c\u4ee5\u53ca\u8981\u6c42 `extreme` \u4ee3\u7801\u6a21\u578b\u7684\u56db\u6761\u62fc\u63a5\u5730\u5740\u6307\u4ee4\u5fc5\u987b\u76f8\u90bb\u3002\\n \u540e\u8005\u662f\u5148\u524d\u9488\u5bf9\u8be5\u95ee\u9898\u7684\u793e\u533a\u8ba8\u8bba\u6240[\u63d0\u5230\u7684](https://github.com/loongson-community/discussions/issues/17)\u7b80\u5355\u65b9\u6848\u3002\\n \u5468\u62a5\u7b2c 26 \u671f\u7684[\u731c\u6d4b](../2023-11-27-this-week-in-loongarch-26.md#abi)\u51fa\u4e86\u4e9b\u504f\u5dee\uff1a\\n \u53ef\u80fd\u51fa\u4e8e\u5de5\u4f5c\u91cf\u548c\u517c\u5bb9\u6027\u8003\u8651\uff0c\u672c\u6b21\u5e76\u672a\u300c\u4e00\u6b65\u5230\u4f4d\u300d\uff0c\u76f4\u63a5\u5b9e\u73b0\u90a3\u4e2a\u901a\u8fc7\u63d0\u4f9b\u5b8c\u6574\u5173\u8054\u4fe1\u606f\u800c\u89e3\u51b3\u95ee\u9898\u7684\u590d\u6742\u65b9\u6848\u3002\\n \u672c\u7ad9\u7684\u57fa\u7ebf\u53c2\u8003\u6587\u6863\u4e5f\u5df2[\u540c\u6b65\u66f4\u65b0\u4e86](/docs/baseline-reference/)\u3002\\n* \u6b63\u5f0f\u52a0\u5165\u4e86\u5468\u62a5\u7b2c 27 \u671f[\u63d0\u53ca\u7684](../2023-12-05-this-week-in-loongarch-27/index.md#abi)\\n TLS \u63cf\u8ff0\u7b26\uff08TLSDESC\uff09\u76f8\u5173\u5b9a\u4e49\u3002\\n\\n#### binutils {#binutils}\\n\\nmengqinggang [\u4fee\u590d\u4e86](https://sourceware.org/pipermail/binutils/2023-December/131391.html)\u5148\u524d\u4f1a\u7ed9\u4e0d\u662f\u51fd\u6570\u7c7b\u578b\u7684\u7b26\u53f7\u4e5f\u751f\u6210\\nPLT\uff08procedure linkage table\uff0c\u8fc7\u7a0b\u94fe\u63a5\u8868\uff09\u8bb0\u5f55\u7684\u95ee\u9898\u3002\\n\\nmengqinggang \u8fd8\u6309\u7167\u672c\u6b21\u7684 ELF psABI \u66f4\u65b0\uff0c[\u5b9e\u73b0\u4e86](https://sourceware.org/pipermail/binutils/2023-December/131386.html)\\n`R_LARCH_ALIGN` \u5bf9\u6c47\u7f16\u5668 `.align` \u7b2c\u4e09\u4f4d\u7f6e\u7684\u8868\u8fbe\u5f0f\u53c2\u6570\u7684\u652f\u6301\u3002\\n\\n#### GCC {#gcc}\\n\\n[Xi Ruoyao][xry111] \u4fee\u590d\u4e86[\u6770\u54e5][jiegec][\u53d1\u73b0\u7684](https://gcc.gnu.org/PR113033)\u7f16\u8bd1\\nLSX \u7684\u5faa\u73af\u79fb\u4f4d\u64cd\u4f5c\u4f1a\u5d29\u6e83\uff08ICE\uff09\u7684\u95ee\u9898\uff1a[\u8865\u4e01\u7532](https://gcc.gnu.org/pipermail/gcc-patches/2023-December/640937.html)\u3001[\u8865\u4e01\u4e59](https://gcc.gnu.org/pipermail/gcc-patches/2023-December/641401.html)\u3002\\n\\nXi Ruoyao \u8fd8[\u4fee\u590d\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-December/640808.html)\u540c\u6837\u7531\u6770\u54e5[\u53d1\u73b0\u7684](https://gcc.gnu.org/PR113034)\\n`__m128` \u7c7b\u578b\u7684\u300c\u4e0d\u7b49\u4e8e\u300d\u6bd4\u8f83\u64cd\u4f5c\u4f1a\u88ab\u9519\u8bef\u7f16\u8bd1\u7684\u95ee\u9898\u3002\\n\\nXi Ruoyao \u8fd8[\u8282\u7ea6\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-December/640809.html)\u6bcf\u6b21 32 \u4f4d\u5faa\u73af\u79fb\u4f4d\u64cd\u4f5c\u5148\u524d\u90fd\u9644\u5e26\u7684\u4e00\u6b21\u591a\u4f59\u7b26\u53f7\u6269\u5c55\u3002\\n\\nXi Ruoyao \u8fd8[\u5c1d\u8bd5\u89e3\u51b3\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-December/640280.html)\u5148\u524d\u5728\\n`-mexplicit-relocs=auto` \u65f6\uff0c\u6709\u4e9b\u9002\u5408\u5408\u5e76\u7684\u7b26\u53f7\u5730\u5740\u88c5\u8f7d\u64cd\u4f5c\u6ca1\u88ab\u8bc6\u522b\u51fa\u6765\u3001\u4e88\u4ee5\u5408\u5e76\u7684\u95ee\u9898\uff1b\\n\u76ee\u524d\u8fd8\u6709\u5c0f\u5751\uff0c\u6b63\u5728\u8c03\u6574\u3002\\n\\nXi Ruoyao \u8fd8\u6539\u5584\u4e86\u5bf9\u4e8e\u6d6e\u70b9\u6761\u4ef6\u7801\u7684\u5904\u7406\uff1a[\u6e05\u7406\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-December/640731.html)\\nLoongArch \u540e\u7aef\u5b9a\u4e49\u4e2d\u4e00\u5904\u4e0d\u4f1a\u88ab\u7528\u5230\u7684\u60c5\u51b5\uff0c\\n\u53c8[\u5b9e\u73b0\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-December/640713.html)\u6d6e\u70b9\u6761\u4ef6\u7801\uff08`FCCmode`\uff09\\n\u7684\u91cd\u65b0\u88c5\u8f7d\uff08reload\uff09\u3002\\n\u540e\u8005\u6709\u5229\u4e8e\u5728\u67d0\u5904\u6d6e\u70b9\u6bd4\u8f83\u64cd\u4f5c\u7684\u7ed3\u679c\u65e0\u6cd5\u9884\u6d4b\u65f6\uff0c\u63d0\u5347\u6b64\u5904\u7ed3\u679c\u5411\u76ee\u6807\u4f4d\u7f6e\u7684\u4fdd\u5b58\u6027\u80fd\u3002\\n\\nLulu Cheng [\u5b9e\u73b0\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-December/640977.html)\\nTLS LE (local-exec) relaxation\uff08\u7ebf\u7a0b\u672c\u5730\u5b58\u50a8\u7684\u672c\u5730\u6267\u884c\u6a21\u578b\u7684\u677e\u5f1b\uff09\u4f18\u5316\u7684\u7f16\u8bd1\u5668\u4e00\u4fa7\u3002\\n\u642d\u914d\u5468\u62a5\u7b2c 27 \u671f[\u63d0\u5230\u7684](../2023-12-05-this-week-in-loongarch-27/index.md#abi)\u6c47\u7f16\u5668\u4e00\u4fa7\u652f\u6301\uff0c\\n\u9884\u8ba1\u80fd\u5728\u67d0\u4e9b\u591a\u7ebf\u7a0b\u573a\u666f\u4e0b\u63d0\u5347\u6027\u80fd\u3002\\n\\nLi Wei [\u4fee\u590d\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-December/641407.html)\u542f\u7528\u94fe\u63a5\u65f6\u4f18\u5316\uff08LTO\uff09\u65f6\uff0c\\n\u53ef\u80fd\u5bfc\u81f4\u4e2a\u522b\u4f4d\u57df\u88c5\u8f7d\u64cd\u4f5c\u88ab\u9519\u8bef\u7f16\u8bd1\u7684\u95ee\u9898\uff1b\u539f\u56e0\u662f `*bstrins__for_ior_mask` \u8fd9\u6761\u89c4\u5219\u5199\u9519\u4e86\u3002\\n\u8be5\u95ee\u9898\u81f3\u5c11\u6ce2\u53ca\u4e86 SPEC 2006 \u7684 `400.perlbench` \u7528\u4f8b\u3002\\n\\n\u672c\u671f\u7684 GCC \u65b0\u95fb\u90fd\u662f [Xi Ruoyao][xry111] \u5e2e\u5fd9\u6574\u7406\u7684\uff0c\u8ba9\u6211\u4eec\u611f\u8c22 :ta: \u7684\u5949\u732e\uff01\\n\\n[jiegec]: https://github.com/jiegec\\n\\n#### LLVM {#llvm}\\n\\n\u7d27\u968f LoongArch ELF psABI v20231219\uff08\u6574\u4f53\u7248\u672c\u53f7 v2.30\uff09\u7684\u53d1\u5e03\uff0c[SixWeining]\\n[\u66f4\u65b0\u4e86](https://github.com/llvm/llvm-project/pull/73387)\u5148\u524d\u5bf9 LLD `extreme`\\n\u4ee3\u7801\u6a21\u578b\u7684\u7acb\u5373\u6570\u5904\u7406\u7684\u91cd\u5236\u3002\\n\u6309\u7167\u76ee\u524d\u7684\u5b9e\u73b0\u65b9\u5f0f\uff0c\u8fd9\u4f1a\u8ba9\u4e00\u4e9b\u5148\u524d\u9519\u8bef\u7684\u8fb9\u754c\u60c5\u51b5\u53d8\u6b63\u786e\uff0c\u4f46\u4e5f\u4f1a\u8ba9\u4e00\u4e9b\u5148\u524d\u6b63\u786e\u7684\u8fb9\u754c\u60c5\u51b5\u53d8\u9519\u8bef\uff1a\\n\u8fd8\u597d\u76ee\u524d\u51e0\u4e4e\u6ca1\u6709\u8f6f\u4ef6\u7528\u5230 `extreme` \u4ee3\u7801\u6a21\u578b\uff0c\u5269\u4e0b\u7684\u5c31\u53ea\u6709\u7948\u7977\uff01\\n\\n[MQ-mengqing] \u7ed9 linker relaxation \u505a\u51c6\u5907\uff1a\u4eff\u7167 RISC-V\uff0c[\u63a8\u8fdf\u4e86](https://github.com/llvm/llvm-project/pull/72960)\\nLLVM MC \u7684 LoongArch \u540e\u7aef\u51b3\u7b56\u662f\u5426\u4ea7\u751f\u300c\u52a0\u3001\u51cf\u300d\u7c7b\u578b\u91cd\u5b9a\u4f4d\u8bb0\u5f55\u7684\u65f6\u673a\u3002\\n\u7136\u800c\u5728\u8be5\u8865\u4e01\u5408\u5e76\u4e4b\u540e\uff0c\u53d1\u73b0\u4e00\u4e9b\u8f6f\u4ef6\u5f00\u59cb\u94fe\u63a5\u5931\u8d25\uff1a\\n\u8fd9\u662f\u7531\u4e8e DWARF v5 \u8c03\u8bd5\u4fe1\u606f\u7528\u5230\u4e86 ULEB128 \u7c7b\u578b\u7684\u52a0\u51cf\u64cd\u4f5c\uff0c\\n\u800c LoongArch \u6682\u672a\u5982 RISC-V \u4e00\u6837[\u5b9e\u73b0\u4e86](https://github.com/llvm/llvm-project/pull/72610)\u8fd9\u4e9b\u64cd\u4f5c\u3002\\n\u76ee\u524d MQ-mengqing [\u5199\u4e86](https://github.com/llvm/llvm-project/pull/72960#issuecomment-1868650942)\u4e00\u7248\u4fee\u590d\uff0c\\n\u6b63\u5728\u8865\u5145\u6d4b\u8bd5\u7528\u4f8b\u3002\\n\\n[SixWeining] \u4e3a LLD [\u65b0\u589e\u4e86](https://github.com/llvm/llvm-project/pull/73346)\\n`R_LARCH_CALL36` \u652f\u6301\u3002\\n\\n[SixWeining]: https://github.com/SixWeining\\n[MQ-mengqing]: https://github.com/MQ-mengqing\\n\\n## \u6742\u95fb\u64ad\u62a5 {#assorted-news}\\n\\n\u6b27\u6d32\u65f6\u95f4 12 \u6708 20 \u65e5\u665a\u95f4\uff0c\u9996\u5ea6\u5305\u542b\u4e86\u9f99\u67b6\u6784\u652f\u6301\u7684 GRUB 2.12\\n[\u6b63\u5f0f\u53d1\u5e03\u4e86](https://lists.gnu.org/archive/html/grub-devel/2023-12/msg00052.html)\u3002\\n\u4e45\u7b49\u4e86\uff01\\n\u77e5\u540d\u79d1\u6280\u5a92\u4f53 Phoronix \u4e5f[\u62a5\u9053\u4e86](https://www.phoronix.com/news/GRUB-2.12-Released)\u6b64\u4e8b\u3002\\n\u611f\u8c22 [xry111] \u63d0\u4f9b\u65b0\u95fb\u7ebf\u7d22\u3002\\n\\n[xry111]: https://github.com/xry111\\n\\n## \u793e\u533a\u6574\u6d3b:\u513f: {#grins}\\n\\n\u672c\u680f\u76ee\u63a5\u53d7\u4efb\u4f55\u7f51\u53cb\u7684\u6295\u7a3f\uff0c\u53ea\u8981\u5185\u5bb9\u4e0e LoongArch® \u6709\u5173\uff0c\u5e76\u53ef\u4ee5\u4e3a\u8bfb\u8005\u5e26\u6765\u4ef7\u503c\uff0c\\n\u65e0\u8bba\u4e25\u8083\u8d21\u732e\uff08\u6574\u7684\u5927\u6d3b:\u513f:\uff09\u6216\u662f\u535a\u541b\u4e00\u7b11\u90fd\u4e00\u6982\u6b22\u8fce\uff01\\n\\n## `libLoL`: AOSC \u4e3a\u60a8\u5728\u65b0\u65e7\u4e16\u754c\u4e4b\u95f4\u67b6\u8d77\u6865\u6881\uff01 {#liblol}\\n\\n\u4f17\u6240\u5468\u77e5\uff0cLoongArch \u7684[\u65b0\u65e7\u4e16\u754c\u751f\u6001\u5272\u88c2\u95ee\u9898](/docs/old-and-new-worlds/)\u5df2\u7ecf\u56f0\u6270\u4e86\u793e\u533a\u53d1\u884c\u7248\u7528\u6237\u8bb8\u4e45\uff1a\\n\u867d\u7136\u8bb8\u591a\u95ed\u6e90\u8f6f\u4ef6\u90fd\u9646\u7eed\u652f\u6301\u4e86 LoongArch\uff0c\u4f46\u90fd\u662f\u5728\u91c7\u7528\u65e7\u4e16\u754c ABI \u7684\u5546\u4e1a\u53d1\u884c\u7248\u4e0a\uff0c\\n\u4ece\u800c\u4e0e\u57fa\u4e8e\u65b0\u4e16\u754c ABI \u7684\u793e\u533a\u53d1\u884c\u7248\u548c\u7528\u6237\u7fa4\u4f53\u300c\u7edd\u7f18\u300d\u3002\\n\u867d\u7136\u5728\u65e9\u5148[\u4e0a\u8bc1\u8def\u6f14\u7684\u6295\u8d44\u8005\u4e92\u52a8\u73af\u8282][sse-roadshow]\u300111 \u6708 28 \u65e5\u7684\u4ea7\u54c1\u53d1\u5e03\u4f1a\u4e0a\uff0c\\n\u9f99\u82af\u516c\u53f8\u90fd\u8868\u6001\u5c06\u5f00\u53d1\u65b0\u65e7\u4e16\u754c\u5e94\u7528\u7684\u517c\u5bb9\u65b9\u6848\uff0c\\n\u4f46\u622a\u81f3\u76ee\u524d\uff0c\u5173\u4e8e\u9f99\u82af\u65b9\u6848\u7684\u6280\u672f\u7ec6\u8282\uff0c\u6ee1\u6000\u70ed\u5ff1\u7684\u540c\u5b66\u4eec\u4ecd\u672a\u5728\u516c\u5f00\u6e20\u9053\u5f97\u5230\u6b63\u9762\u56de\u5e94\u3002\\n\u8003\u8651\u5230\u6027\u80fd\u559c\u4eba\u7684 3A6000 \u677f\u5361\u5df2\u7ecf\u9646\u7eed\u4e0a\u5e02\uff0c\u4e0d\u96be\u4f5c\u51fa\u5408\u7406\u63a8\u6d4b\uff1a\\n\u603b\u6709\u7fa4\u4f17\u7b49\u4e0d\u53ca\u4e24\u5e74\u540e\uff08\u65e0\u8bba\u5b9e\u9645\u66f4\u65e9\u6216\u66f4\u665a\uff09\u8fd9\u4e9b\u8f6f\u4ef6\u7684\u5b98\u65b9\u65b0\u4e16\u754c\u7248\u672c\uff0c\u800c**\u73b0\u5728\u5c31\u8981\u7528**\uff01\\n\\n[sse-roadshow]: https://roadshow.sseinfo.com/roadshowIndex.do?id=16536#cd-placeholder-hdjl\\n\\n[\u5b89\u540c\u5f00\u6e90\u793e\u533a\uff08AOSC\uff09][aosc]\u4f5c\u4e3a\u300c\u7262\u8bb0\u670d\u52a1\u7528\u6237\u9700\u6c42\u8fd9\u4e00\u5b97\u65e8\u300d\u7684\u4e00\u7fa4\u4eba\uff0c\u6b64\u523b\u4fbf\u7ad9\u4e86\u51fa\u6765\u3002:ta: \u4eec\u7ed9\u51fa\u7684\u7b54\u6848\u662f\\n`libLoL`: LoongArch on LoongArch\u3002\\n\\nAOSC \u5f00\u53d1\u8005[\u738b\u9088][shankerwangmiao]\u4e0e[\u5218\u5b50\u5174][liushuyu]\uff0c\\n\u5728\u5185\u6838\u5c42\u9762\u5b9e\u73b0\u4e86\u4ee5\u5916\u6302\u6a21\u5757\uff08\u4ea6\u53ef\u7406\u89e3\u4e3a\u300c\u9a71\u52a8\u300d\uff09\u65b9\u5f0f\uff0c\u52a8\u6001\u8f7d\u5165\u7684\u65e7\u4e16\u754c\u7cfb\u7edf\u8c03\u7528\u652f\u6301\u3002\\n\u738b\u9088\u4e5f\u8bbe\u8ba1\u3001\u5b9e\u73b0\u4e86\u4f4d\u4e8e\u7528\u6237\u6001\u7684\u8fd0\u884c\u65f6\u90e8\u5206\uff1a\u6253\u5305\u4e86\u65e7\u4e16\u754c\u53c2\u8003\u53d1\u884c\u7248 Loongnix® \u7684\u6838\u5fc3\u8fd0\u884c\u65f6\u5e93\uff0c\\n\u4f7f\u65e7\u4e16\u754c\u5e94\u7528\u80fd\u591f\u6709\u300c\u56de\u5bb6\u7684\u611f\u89c9\u300d\u4ece\u800c\u6b63\u5e38\u542f\u52a8\u3002\\n\u76ee\u524d AOSC OS \u5df2\u7ecf\u80fd\u591f\u8fd0\u884c WPS Office \u4e0e\u9f99\u82af\u6d4f\u89c8\u5668\u7b49\u6807\u5fd7\u6027\u7684\u65e7\u4e16\u754c\u5e94\u7528\uff0c\\n\u5982\u56fe\u6240\u793a\uff08\u70b9\u51fb\u5373\u770b\u9ad8\u6e05\u5927\u56fe\uff09\uff1a\\n\\n[![\u542f\u7528\u4e86 libLoL \u7684 AOSC \u7cfb\u7edf\u4e0a\u6210\u529f\u8fd0\u884c\u65e7\u4e16\u754c WPS \u4e0e\u9f99\u82af\u6d4f\u89c8\u5668\u7684\u622a\u56fe](./liblol-showcase@0.5x.webp)](./liblol-showcase.webp)\\n\\n[shankerwangmiao]: https://github.com/shankerwangmiao\\n[liushuyu]: https://github.com/liushuyu\\n\\n\u540e\u7eed\uff0c\u5728\u5b8c\u6210\u914d\u5957\u5185\u6838\u6a21\u5757\u7684\u8f7d\u5165\u5411\u5bfc\u540e\uff0c\u4f7f\u7528\u9f99\u67b6\u6784\u8bbe\u5907\u7684 AOSC OS \u7528\u6237\u4fbf\u53ef\u6309\u9700\u542f\u7528\u6b64\u517c\u5bb9\u65b9\u6848\u4e86\u3002AOSC \u540c\u4ec1\u4eec\u4e5f\u6b22\u8fce\u5176\u4ed6\u65b0\u4e16\u754c\u53d1\u884c\u7248\u7ef4\u62a4\u8005\u8003\u5bdf `libLoL`\uff0c\u5e76\u89c6\u81ea\u8eab\u60c5\u51b5\u548c\u9700\u6c42\u96c6\u6210\u6b64\u9879\u76ee\u7684\u6210\u679c\u3002\\n\\n12 \u6708 23 \u65e5\u53d1\u5e03\u7684 AOSC \u53cc\u5468\u62a5\u300a\u5b89\u8bb0\u51b0\u5ba4\u30fb\u5341\u4e8c\u6708\u4e0b\u300b[\u8bb0\u8f7d\u4e86](https://github.com/AOSC-Dev/newsroom/blob/2c5443a792291702438cbf6059d8d4039ca5dc85/coffee-break/20231223/zh_CN.md#%E5%B1%95%E6%9C%9B-liblol%E9%BE%99%E6%9E%B6%E6%9E%84%E6%97%A7%E4%B8%96%E7%95%8C%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E5%85%BC%E5%AE%B9%E8%BF%90%E8%A1%8C%E6%97%B6)\u8fd9\u9879\u5de5\u4f5c\u7684\u66f4\u591a\u4fe1\u606f\uff0c\u63a8\u8350\u9605\u8bfb\u3002\\n\\n## \u5f20\u8d34\u680f {#bulletin}\\n\\n\u672c\u680f\u76ee\u53ef\u4f9b\u5f20\u8d34\u516c\u76ca\u6027\u8d28\u7684\u5404\u79cd\u4fe1\u606f\u3002\\n\\n* \u53cb\u60c5\u6269\u6563\uff1a[\u5b89\u540c\u5f00\u6e90\u793e\u533a\uff08AOSC\uff09][aosc]\u7684\u9f99\u67b6\u6784\u79fb\u690d\u4e3b\u7ebf\u5316\u5de5\u4f5c\u300c\u5408\u9f99\u300d\u4ecd\u5728\u5982\u706b\u5982\u837c\u8fdb\u884c\u4e2d\uff0c\\n \u6b64\u5de5\u4f5c\u5b8c\u6210\u540e\u9f99\u67b6\u6784\u5c06\u5347\u683c\u4e3a AOSC OS \u7684 Tier 1 \u67b6\u6784\u3002\\n \u6b22\u8fce\u540c\u5b66\u4eec\u8bd5\u7528\u3001\u53cd\u9988\uff0c\u4e5f\u6b22\u8fce\u6709\u5fd7\u4e4b\u58eb\u4e00\u540c\u52a0\u5165\uff08\u6c9f\u901a\u6e20\u9053\u8be6\u89c1 AOSC \u7f51\u7ad9\u76f8\u5173\u680f\u76ee\uff09\u3002\\n* \u672c\u5468\u62a5[\u6301\u7eed\u63a5\u53d7\u7f51\u53cb\u6295\u7a3f][call-for-submissions]\u3002\u6b22\u8fce\u6765\u4e0a\u6e38\u5750\u5750\uff01\\n\\n[aosc]: https://aosc.io\\n[call-for-submissions]: https://github.com/loongson-community/areweloongyet/issues/16"},{"id":"this-week-in-loongarch-29","metadata":{"permalink":"/newsletter/this-week-in-loongarch-29","editUrl":"https://github.com/loongson-community/areweloongyet/newsletter/2023-12-18-this-week-in-loongarch-29/index.md","source":"@site/newsletter/2023-12-18-this-week-in-loongarch-29/index.md","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 29 \u671f","description":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01","date":"2023-12-18T15:30:00.000Z","formattedDate":"2023\u5e7412\u670818\u65e5","tags":[{"label":"\u6bcf\u5468\u4e00\u9f99","permalink":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99"}],"readingTime":13.645,"hasTruncateMarker":true,"authors":[{"name":"WANG Xuerui","title":"\ud83d\udc32\u9f99\u95e8\u5ba2\u6808\u6253\u6742\u7684","url":"https://github.com/xen0n","imageURL":"https://github.com/xen0n.png","key":"xen0n"}],"frontMatter":{"slug":"this-week-in-loongarch-29","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 29 \u671f","authors":["xen0n"],"date":"2023-12-18T15:30:00.000Z","tags":["\u6bcf\u5468\u4e00\u9f99"]},"unlisted":false,"prevItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 30 \u671f","permalink":"/newsletter/this-week-in-loongarch-30"},"nextItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 28 \u671f","permalink":"/newsletter/this-week-in-loongarch-28"}},"content":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01\\n\u4e0a\u5468\u7684\u8fdb\u5c55\u4e3b\u8981\u6709\u793e\u533a\u7248\u9f99\u82af SIMD \u6307\u4ee4\u6587\u6863\u30013A6000 \u793e\u533a\u7248\u8d85\u9891\u56fa\u4ef6\uff0c\u4ee5\u53ca ABI\u3002\\n\u8be6\u60c5\u70b9\u8fdb\u6765\u770b\uff01\\n\\n\x3c!-- truncate --\x3e\\n\\n\u5982\u65e0\u7279\u522b\u8bf4\u660e\uff0c\u6587\u4e2d\u63d0\u53ca\u7684\u65e5\u671f\u3001\u65f6\u95f4\u90fd\u4e3a\u5317\u4eac\u65f6\u95f4\uff08UTC+8\uff09\u3002\\n\\n## \u5148\u300c\u9a6c\u300d\u518d\u770b {#marked-projects}\\n\\n\u672c\u680f\u76ee\u7684\u5185\u5bb9\u5177\u6709\u4e00\u5b9a\u5ef6\u7eed\u6027\uff0c\u5c06\u6301\u7eed\u8ffd\u8e2a\u62a5\u9053 LoongArch® \u9886\u57df\u7684\u91cd\u8981\u6216\u957f\u671f\u9879\u76ee\uff08\u5751\uff09\u3002\\n\\n### Linux {#linux}\\n\\nLinux 6.6 LTS \u5206\u652f\u65e5\u524d[\u5411\u540e\u79fb\u690d\u4e86](https://git.kernel.org/pub/scm/linux/kernel/git/stable/stable-queue.git/diff/queue-6.6/loongarch-mark-dmw-tlb-_virt_to_page-exports-as-non-.patch?id=f5b20a28332e98771485a6ebbd97791f4031f6a5)\u653e\u5bbd\\n`{dmw,virt}_to_page` \u4e24\u4e2a\u7b26\u53f7\u7684\u8bb8\u53ef\u8bc1\u8981\u6c42\u7684\u63d0\u4ea4\u3002\\n\u8fd9\u610f\u5473\u7740 OpenZFS 2.2.x \u5c06\u53ef\u642d\u914d Linux 6.6.x \u7cfb\u5217\u4e2d\u7684 6.6.8 \u6216\u66f4\u9ad8\u7248\u672c\u4f7f\u7528\u4e86\u3002\\n\\n### \u5de5\u5177\u94fe {#toolchain}\\n\\n#### ABI {#abi}\\n\\n[\u5b89\u540c\u5f00\u6e90\u793e\u533a\uff08AOSC\uff09][aosc]\u5f00\u53d1\u8005[\u738b\u6c5f\u6d25](https://github.com/RedL0tus)\u5728\u9002\u914d JetBrains® \u5f00\u53d1\u73af\u5883\u5168\u5bb6\u6876\u65f6\uff0c\\n\u53d1\u73b0\u6709 [Java \u7ec4\u4ef6](https://github.com/JetBrains/pty4j)\u60f3\u52a8\u6001\u52a0\u8f7d `libutil.so`\uff0c\u800c\u8be5\u5171\u4eab\u5e93\u5728 LoongArch \u4e0a\u5e76\u4e0d\u5b58\u5728\u3002\\n\u5728 glibc \u7684\u5b9e\u73b0\u4e2d\uff0c\u8be5\u5171\u4eab\u5e93\u7684\u6240\u6709\u51fd\u6570\u90fd[\u5408\u5e76\u5165 `libc.so` \u4e86](https://sourceware.org/git/?p=glibc.git;a=commit;h=734c60ebb607086ad6d67b2544d6b7baba72a652)\uff1b\\n\u6b64\u4e8b\u53d1\u751f\u5728 LoongArch \u8fdb\u5165 glibc \u4e0a\u6e38\u4e4b\u524d\uff0c\u56e0\u6b64 glibc \u5728 LoongArch \u4e0a\u81ea\u59cb\u5c31\u4e0d\u63d0\u4f9b\u8be5\u5171\u4eab\u5e93\u3002\\n\u4f46\u540c\u6837\u6765\u81ea AOSC \u7684 [Icenowy](https://github.com/Icenowy) \u7ffb\u67e5\u89c4\u8303\u6587\u6863\u53d1\u73b0 [LSB \u4f3c\u4e4e\u6709\u8981\u6c42\u63d0\u4f9b\u8be5\u6587\u4ef6](https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/libutil.html)\uff0c\\n\u6545[\u5efa\u7acb\u4e86](https://github.com/loongson-community/discussions/issues/29)\u9f99\u82af\u793e\u533a\u7684\u8ddf\u8e2a\u5de5\u5355\uff0c\\n\u4ee5\u53ca\u76f8\u5e94\u7684 [glibc \u95ee\u9898\u62a5\u544a](https://sourceware.org/bugzilla/show_bug.cgi?id=31136)\u3002\\n\u6839\u636e\u76ee\u524d\u7684\u4e0a\u6e38\u53e3\u5f84\uff0c\u4f3c\u4e4e\u63d0\u4f9b\u4e00\u4e2a\u6307\u5411 `libc.so` \u7684\u7b26\u53f7\u94fe\u63a5\u5c31\u8db3\u591f\u4e86\u3002\\n\\n## \u6742\u95fb\u64ad\u62a5 {#assorted-news}\\n\\n### .net {#dotnet}\\n\\n\u9f99\u82af\u4e2d\u79d1\u7684\u5de5\u7a0b\u5e08[\u4e54\u9e4f\u7a0b](https://github.com/shushanhf)\u5728 2023 \u5e74 12 \u6708 16 \u65e5\u4e3e\u884c\u7684\\n.NET Conf China 2023 \u4ecb\u7ecd\u4e86 LoongArch .net/Mono \u76f8\u5173\u8fdb\u5c55\uff1a\\n\\n* .net 8.0 EA \u7248\u7684\u65b0\u4e16\u754c\u4e8c\u8fdb\u5236\u5df2\u7ecf\u6709\u9996\u4e2a\u53d1\u5e03\u7248\u672c\uff1a[GitHub \u9875\u9762](https://github.com/shushanhf/LoongArch64-Blog-for-.NET-Mono/releases/tag/sdk8.0.0-LA64-newABI-upstream)\\n- Mono LoongArch \u652f\u6301\u9884\u8ba1 2024Q1 \u5f00\u59cb\u63a8\u9001\u793e\u533a\uff0c\u8ba1\u5212\u5728 2024 \u5e74 7 \u6708\u4e4b\u524d\u5b8c\u6210\\n- Unity®\uff08\u56e2\u7ed3\u5f15\u64ce\uff09\u5df2\u4e0e LoongArch \u5b8c\u6210\u9002\u914d\\n\\n\u51fa\u4e8e\u5386\u53f2\u539f\u56e0\uff0c\u5f00\u6e90\u4e16\u754c\u5bf9\u4e8e .net/Mono \u7684\u5173\u6ce8\u5ea6\u5e76\u4e0d\u9ad8\uff0c\u4f46 .net/Mono \u662f Unreal\uff08\u865a\u5e7b\uff09\u3001Unity\uff08\u56e2\u7ed3\uff09\u3001Godot\\n\u7b49\u6e38\u620f\u5f15\u64ce\u7684\u6838\u5fc3\u7ec4\u4ef6\uff0c\u4e5f\u662f\u5927\u91cf\u5546\u4e1a\u516c\u53f8\u90e8\u7f72\u684c\u9762\u3001\u670d\u52a1\u7aef\u4ea7\u54c1\u7684\u91cd\u8981\u751f\u6001\u3002LoongArch .net/Mono port\\n\u63a8\u9001\u8ba1\u5212\u660e\u786e\uff0c\u5bf9\u4e8e\u666e\u901a\u684c\u9762\u7528\u6237\uff0c\u5373\u4f7f\u4e3a\u4e86\u6253\u6e38\u620f\uff0c\u90a3\u4e5f\u662f\u6781\u597d\u7684\u3002\\n\\n\x3c!-- https://github.com/loongson-community/areweloongyet/assets/5524744/cd444646-6449-40f1-a418-8ca16d307ae2 --\x3e\\n![\u4f1a\u8bae\u73b0\u573a\u56fe\u7247 1](./dotnet-1.jpg)\\n\\n\x3c!-- https://github.com/loongson-community/areweloongyet/assets/5524744/ff3b38e8-2c42-4e8d-8b70-491ca42a6bb1 --\x3e\\n![\u4f1a\u8bae\u73b0\u573a\u56fe\u7247 2](./dotnet-2.jpg)\\n\\n\u4ee5\u4e0a\u7684\u65b0\u95fb\u7531 [phorcys] \u4e3a\u60a8\u64ad\u62a5\u3002\\n\\n### Gentoo {#gentoo}\\n\\n[xen0n](https://github.com/xen0n) \u6b63\u5728 Gentoo \u63a8\u8fdb LoongArch \u7684\u5b89\u88c5 CD \u4e0e LLVM/Clang stage3 \u7684\u6784\u5efa\u5de5\u4f5c\u3002\\n\u4e3a\u6b64\u9700\u8981\u7ed9 Gentoo \u53d1\u884c\u7248\u5185\u6838\uff08dist kernel\uff09[\u589e\u52a0](https://github.com/gentoo/gentoo/pull/34291)\\nLoongArch \u652f\u6301\uff0c\u4ee5\u53ca[\u589e\u52a0](https://github.com/gentoo/gentoo/pull/34324) Clang profiles\uff1b\\n\u4ed6\u89c9\u5f97\u5728 2024 \u5230\u6765\u4e4b\u524d\u6709\u671b\u5b8c\u6210\u8fd9\u4e24\u90e8\u5206\u5de5\u4f5c\u3002\\n\\n### Ghidra {#ghidra}\\n\\n\u8fd1\u65e5\uff0c\u7f8e\u56fd\u56fd\u5bb6\u5b89\u5168\u5c40\uff08NSA\uff09\u4e3a Ghidra\\n[\u589e\u52a0\u4e86](https://github.com/NationalSecurityAgency/ghidra/commit/0f09d6fed3b1c884f1843bda5ec1bf1dfbada06c) LoongArch \u652f\u6301\uff0c\\n\u5c06\u4e8e Ghidra 10.5 \u6b63\u5f0f\u53d1\u5e03\u3002Ghidra \u662f NSA \u4e3b\u5bfc\u5f00\u53d1\u7684\u8f6f\u4ef6\u9006\u5411\u5de5\u7a0b\u6846\u67b6\uff0c\u4e3a\u8fd1\u5e74\u5168\u7403\u4fe1\u606f\u5b89\u5168\u9886\u57df\u7684\u4ece\u4e1a\u8005\u6240\u9010\u6e10\u91c7\u7528\u3002\\n\u611f\u8c22[\u6770\u54e5][jiegec]\u63d0\u4f9b\u65b0\u95fb\u7ebf\u7d22\u3002\\n\\n
\\n\u81f4\u5173\u5fc3\u6b64\u4e8b\u7684\u4e2d\u56fd\u7acb\u573a\u7f51\u53cb\u4eec\\n\\n\u5c3d\u7ba1\u672c\u7ad9\u8c08\u8bba\u6280\u672f\u8bdd\u9898\u5c3d\u91cf\u4e0d\u6d89\u53ca\u653f\u6cbb\u4e0e\u4eba\u4e8b\uff0c\u4f46\u7531\u4e8e NSA \u7684\u9690\u853d\u6218\u7ebf\u80cc\u666f\u5341\u5206\u660e\u663e\uff0c\\n\u7b14\u8005\u5408\u7406\u63a8\u6d4b\u90a3\u4e9b\u7ad9\u5728\u4e2d\u56fd\u5229\u76ca\u4e00\u8fb9\uff0c\u4f46\u4e0d\u719f\u6089\u4fe1\u606f\u5b89\u5168\u9886\u57df\u7684\u7f51\u53cb\u4eec\uff0c\u4f1a\u5bf9\u6b64\u6709\u8bf8\u591a\u7591\u8651\u3002\\n\u4ee5\u4e0b\u662f\u7b14\u8005\u7ad9\u5728\u4e2a\u4eba\u7acb\u573a\u7684\u5206\u6790\uff1a\\n\\n\u4efb\u4f55\u53d7\u5230\u5e7f\u6cdb\u652f\u6301\u7684\u67b6\u6784\uff0c\u90fd\u514d\u4e0d\u4e86\u88ab\u5b89\u5168\u7814\u7a76\u8005\u4eec\u4ed4\u7ec6\u5ba1\u89c6\u3002LoongArch \u4f5c\u4e3a\u56fd\u5185\u5916\u7684\u4ea7\u4e1a\u754c\u3001\u5f00\u6e90\u793e\u533a\u591a\u5c11\u90fd\u5728\u62e5\u62b1\u7684\u4e00\u95e8\u65b0\u5174\u67b6\u6784\uff0c\\n\u5b83\u53d7\u5230 NSA \u9879\u76ee\u7ec4\u91cd\u89c6\u5e76\u8fdb\u5165 Ghidra \u5168\u5bb6\u6876\uff0c\u662f\u5fc5\u7136\u7684\u53d1\u5c55\u3002\\n\u67d0\u79cd\u7a0b\u5ea6\u4e0a\uff0c\u8fd9\u4e5f\u80fd\u8d77\u5230\u79ef\u6781\u6548\u679c\u2014\u2014\u903c\u8feb\u9f99\u82af\u53ca\u793e\u533a\u7684\u53c2\u4e0e\u8005\u4eec\uff0c\u5fc5\u987b\u901a\u8fc7\u53ef\u516c\u5f00\u7684\u7cbe\u5fc3\u8bbe\u8ba1\u5b9e\u73b0\u8f6f\u786c\u4ef6\u7684\u6574\u4f53\u5b89\u5168\uff0c\\n\u800c\u4e0d\u80fd\u6307\u671b\u9760\u7740\u5411\u516c\u4f17\u9690\u85cf\u4ec0\u4e48\u4e1c\u897f\u6765\u6362\u53d6\u6682\u65f6\u7684\u300c\u5b89\u5168\u611f\u300d\u3002\\n\\n\u5b9e\u9645\u4e0a\uff1a\u5373\u4fbf LoongArch \u6587\u6863\u59cb\u7ec8\u4e0d\u88ab\u516c\u5f00\uff0c\u5728\u8db3\u591f\u591a\u7684\u793e\u533a\u6210\u5458\u6298\u817e\u8fc7\u540e\uff0c\u540c\u6837\u7684\u6587\u6863\u88ab\u5199\u51fa\u4e5f\u53ea\u662f\u65f6\u95f4\u95ee\u9898\u2014\u2014\u4f8b\u5982\u5728\u300a\u9f99\u82af\u67b6\u6784\u53c2\u8003\u624b\u518c\u300b\u5377\u4e00\u5c1a\u672a\u516c\u5e03\u7684\\n2021 \u5e74 3 \u6708\u521d\uff0cxen0n \u8fd8\u662f[\u80fd\u591f\u638f\u51fa](https://github.com/loongson-community/docs/pull/4)\u4fdd\u771f\u5ea6\u76f8\u5f53\u9ad8\u7684\u57fa\u7840\u6307\u4ee4\u6587\u6863\u3002\\n\u867d\u7136\u4e8b\u540e\u770b\u6765\u8fd9\u4efd\u6587\u6863\u7684\u9519\u8bef\u4e0d\u5c11\uff0c\u4f46\u8bf7\u6ce8\u610f\uff1a\u5f53\u65f6 LoongArch \u4e0d\u5149\u6ca1\u6709\u516c\u5f00\u6587\u6863\uff0c\u751a\u81f3\u5728\u516c\u5f00\u6e20\u9053\u8fde\u786c\u4ef6\u90fd\u6ca1\u6709\uff0c\\n\u800c\u8fd9\u4e9b\u4fe1\u606f\u53ea\u9700\u8981\u6709\u8db3\u91cf\u7684\u673a\u5668\u8bed\u8a00\uff0c\u9760\u8111\u5b50\u5c31\u8db3\u4ee5\u63ed\u9732\u4e86\u3002\\n\u5982\u679c\u5f53\u65f6\u80fd\u591f\u6478\u5230\u771f\u5b9e LoongArch \u786c\u4ef6\u4ee5\u5b9e\u9645\u9a8c\u8bc1\u60f3\u6cd5\uff0c\u6216\u8005\u5c06\u66f4\u591a\u673a\u5668\u8bed\u8a00\u6750\u6599\u52a0\u5165\u5206\u6790\uff0c\\n\u90a3\u4e48\u8ba9\u6587\u6863\u7684\u51c6\u786e\u7387\u8fbe\u5230 100% \u4e5f\u4e0d\u662f\u4ec0\u4e48\u96be\u4e8b\u3002\\n\\n\u8fd9\u5176\u5b9e\u610f\u5473\u7740\uff0c\u5982\u679c\u4e00\u4e2a\u67b6\u6784\u60f3\u4e0d\u88ab\u5b89\u5168\u7814\u7a76\u8005\u4eec\u76ef\u4e0a\uff0c\u53ea\u6709\u8ba9 :ta: \u4eec\u786c\u4ef6\u8f6f\u4ef6\u90fd\u62ff\u4e0d\u5230\uff1b\\n\u4f46\u8fd9\u6837\u4e00\u6765\uff0c\u4e5f\u5c31\u4e0d\u53ef\u80fd\u5c06\u6b64\u67b6\u6784\u5927\u9762\u79ef\u63a8\u5e7f\u4e86\u3002\\n\\n\uff08\u6b64\u5916\uff0c\u63a5\u4e0b\u6765\u5c06\u4e3a\u60a8\u62a5\u9053\u7684\u793e\u533a\u5236 3A6000 \u8d85\u9891\u56fa\u4ef6\uff0c\u5c31\u662f\u90a3\u4f4d\u4fe1\u606f\u5b89\u5168\u4ece\u4e1a\u8005\u4f7f\u7528 Ghidra\\n\u7814\u7a76\u3001\u64cd\u4f5c\u9f99\u82af\u56fa\u4ef6\u7684\u7ed3\u679c\u3002\\n\u8003\u8651\u5230\u300c\u771f\u6b63\u654f\u611f\u7684\u4fe1\u606f\u4e0d\u4f1a\u88ab\u516c\u5f00\u300d\u8fd9\u4e00\u70b9\uff0cNSA \u9009\u62e9\u5c06 Ghidra \u5f00\u6e90\uff0c\u53ef\u80fd\u4e5f\u662f\u5bf9\u5168\u7403\u540c\u884c\u7684\u8d21\u732e\u4e86\u3002\u2014\u2014\u7531\u4e8e\u4e2d\u56fd\u540c\u884c\u4eec\u5e76\u672a\u5c06\u81ea\u5df1\u7684\u7c7b\u4f3c\u6846\u67b6\u4e5f\u5f00\u6e90\uff0c\\n\u4e3a :ta: \u4eec\u62c5\u5fc3\u7684\u4e2d\u56fd\u7acb\u573a\u7f51\u53cb\u4eec\uff0c\u4e5f\u53ef\u4ee5\u653e\u5fc3\u4e86\u3002\uff09\\n\\n
\\n\\n## \u793e\u533a\u6574\u6d3b:\u513f: {#grins}\\n\\n\u672c\u680f\u76ee\u63a5\u53d7\u4efb\u4f55\u7f51\u53cb\u7684\u6295\u7a3f\uff0c\u53ea\u8981\u5185\u5bb9\u4e0e LoongArch® \u6709\u5173\uff0c\u5e76\u53ef\u4ee5\u4e3a\u8bfb\u8005\u5e26\u6765\u4ef7\u503c\uff0c\\n\u65e0\u8bba\u4e25\u8083\u8d21\u732e\uff08\u6574\u7684\u5927\u6d3b:\u513f:\uff09\u6216\u662f\u535a\u541b\u4e00\u7b11\u90fd\u4e00\u6982\u6b22\u8fce\uff01\\n\\n\u4e5f\u8bb8\u662f\u70ed\u5fc3\u7fa4\u4f17\u89c9\u5f97\u5feb\u5230\u5e74\u672b\u4e86\uff0c\u793e\u533a\u91cc\u65b0\u95fb\u8fd8\u4e0d\u591f\u5927\uff1b\\n\u56e0\u6b64\u5728\u5168\u56fd\u964d\u6e29\u7684\u80cc\u666f\u4e0b\uff0c\u6211\u4eec\u7684\u52c7\u58eb\u4eec\u8fd8\u662f\u633a\u8eab\u800c\u51fa\uff0c\u7528\u72e0\u6d3b:\u513f:\u52a0\u70ed\u5c4f\u5e55\u524d\u9605\u8bfb\u5468\u62a5\u7684\u60a8\\n\uff08\u548c\u60a8\u7684\u7535\u8111\u4e3b\u673a\u2014\u2014\u5982\u679c\u60a8\u770b\u5b8c\u4e4b\u540e\u4e5f\u70ed\u8840\u6cb8\u817e\uff0c\u800c\u51b3\u5b9a\u4e0a\u624b\u5e72\u70b9\u5565\u7684\u8bdd\uff09\uff01\\n\\n### 3A6000 XA61200 \u5b98\u65b9\u56fa\u4ef6\u7206\u6539\u8d85\u9891\uff01\\n\\n\u5728\u534e\u7855[\u53d1\u5e03\u4e86](https://www.bilibili.com/video/BV15u4y1A7aK) 3A6000 \u8d85\u9891\u89c6\u9891\u540e\uff0c\\n\u5bf9 3A6000 \u8d85\u9891\u7684\u5173\u6ce8\u4e00\u4e0b\u5b50\u591a\u4e86\u8d77\u6765\u3002\\n\\n\u867d\u7136\u9f99\u82af\u4e2d\u79d1\u7684\u56fa\u4ef6\u5de5\u7a0b\u5e08 [@MarsDoge] \u5df2\u7ecf\u5728\u8bc4\u8bba\u533a[\u63d0\u5230](https://github.com/loongson/Firmware/pull/79#issuecomment-1832171459)\uff0c\\n\u4f1a\u5728\u4e0b\u4e2a\u53d1\u5e03\u5468\u671f\uff082024 \u5e74 2 \u6708\uff09\u63d0\u4f9b\u56fa\u4ef6\u7684\u8d85\u9891\u9009\u9879\uff0c\u4f46\u793e\u533a\u7684\u5c0f\u4f19\u4f34\uff0c\u5df2\u7ecf\u5b8c\u5168\u7b49\u4e0d\u53ca\u4e86\u3002\\n\\nBilibili \u7528\u6237 [nywkkk]\uff08GitHub [@naivekun]\uff0918 \u65e5\u51cc\u6668[\u53d1\u5e03\u4e86](https://www.bilibili.com/video/BV11a4y1r7Qc)\u81ea\u5236\u7684\\nXA61200 \u4e3b\u677f\uff083A6000\uff09\u624b\u52a8\u81ea\u5b9a\u4e49\u8d85\u9891\u56fa\u4ef6\u3002\\n\\n[@MarsDoge]: https://github.com/MarsDoge\\n[nywkkk]: https://space.bilibili.com/25097496\\n[@naivekun]: https://github.com/naivekun\\n\\nnywkkk \u4e0a\u5468\u6839\u636e\u624b\u518c\u9006\u5411\u5e76\u4fee\u6539\u4e86\u4e3b\u677f UEFI \u56fa\u4ef6\uff0c\u901a\u8fc7\u4e8c\u8fdb\u5236\u4fee\u6539 PEI\uff08Pre-EFI Initialization\uff0cEFI \u524d\u521d\u59cb\u5316\uff09\u9636\u6bb5\\nPLL \u914d\u7f6e\uff0c\u8fbe\u6210\u4e86 3A6000 \u7684 2.7GHz \u8d85\u9891\uff1b:ta:\\n\u5c06\u6539\u597d\u7684\u56fa\u4ef6\u6587\u4ef6\u5728 GitHub \u4e0a[\u53d1\u5e03\u4e86](https://github.com/naivekun/ls3a6000-overclock-firmware)\u3002\\n\u672c\u5468 :ta: \u518d\u8fdb\u4e00\u6b65\uff0c\u7f16\u5199\u4e86\u8d85\u9891 UEFI PEI \u6a21\u5757\u5e76[\u516c\u5f00\u4e86](https://github.com/naivekun/LoongsonOverclockPkg)\u6a21\u5757\u6e90\u7801\uff1a\\n\u8be5\u6a21\u5757\u63d2\u5165\u4e3b\u677f\u56fa\u4ef6 PEI \u542f\u52a8\u94fe\u540e\uff0c\u53ef\u4ee5\u5b9e\u73b0\u5bf9\u7535\u538b\u3001\u9891\u7387\u7684\u81ea\u5b9a\u4e49\u8c03\u8282\u3002\\n\\n\u5237\u5165\u4fee\u6539\u7248\u56fa\u4ef6\u540e\uff0c\u4e5f\u53ef\u4ee5\u5728 UEFI shell \u4e2d\u901a\u8fc7\u65b0\u589e\u7684 `overclock` \u547d\u4ee4\u8c03\u8282\u5904\u7406\u5668\u7535\u538b\uff0c\u9891\u7387\uff0c\u91cd\u542f\u540e\u751f\u6548\u3002\\n\u4f46\u5982\u679c\u9891\u7387\u6216\u7535\u538b\u592a\u9ad8\uff0c\u5219\u4f1a\u53d8\u7816\uff0c\u9700\u8981\u901a\u8fc7 SPI \u7f16\u7a0b\u5668\u5237\u5199\u56fa\u4ef6\uff0c\u6216\u8005\u5207\u6362\u5230\u4e3b\u677f\u5907\u7528\u56fa\u4ef6\u540e\u91cd\u5237\u56fa\u4ef6\u6765\u89e3\u51b3\u95ee\u9898\u3002\\n\u6ca1\u6709 SPI \u7f16\u7a0b\u5668\uff08CH341A\u3001FT2232 \u6216\u7c7b\u4f3c\u65b9\u6848\uff09\u7684\u7528\u6237\u53ef\u80fd\u4f1a\u9762\u4e34\u65e0\u6cd5\u6551\u7816\u7684\u98ce\u9669\u3002\\n\\n\u4e0d\u8fc7\uff0c\u7531\u4e8e 3A6000 \u548c 7A2000 \u7684\u5404\u4e2a\u9891\u7387\u57df\u8026\u5408\u5173\u7cfb\u6bd4\u8f83\u591a\uff0c\u76ee\u524d\u4fee\u6539\u56fa\u4ef6\u53ea\u662f\u521d\u6b65\u89e3\u51b3\u4e86\u9891\u7387\u3001\u7535\u538b\u7684\u8c03\u8282\uff0c\u6ca1\u6709\u5f7b\u5e95\u89e3\u8026\u3002\\n\u63d0\u9ad8\u8fd0\u884c\u9891\u7387\u4f1a\u5bf9 HT\u3001DDR \u548c\u6865\u7247\u9891\u7387\u6709\u5f71\u54cd\uff0c\u4f46\u731c\u6d4b\u5927\u90e8\u5206 3A6000 \u53ef\u4ee5\u8f7b\u677e\u8d85\u9891\u5230 2.7~2.8GHz \u7a33\u5b9a\u8fd0\u884c\uff0c\\n\u521a\u597d\u5bf9\u5e94\u8001\u80e1\u63d0\u5230\u7684\u300c3A6000 \u6709 200MHz \u777f\u9891\u63d0\u5347\u7a7a\u95f4\u300d\u3002\\n\u548c\u5927\u591a\u6570 Intel\u3001AMD CPU \u8d85\u9891\u4e00\u6837\uff0c\u5355\u901a\u9053\u5185\u5b58\u4f1a\u51cf\u5c11\u8d85\u9891\u96be\u5ea6\u4ee5\u53ca\u589e\u52a0\u7a33\u5b9a\u6027\u3002\\n\\n:::danger\\n\u867d\u7136\u76ee\u524d\u8d85\u9891\u81f3 2.8GHz \u4f1a\u5e26\u6765 10%~15% \u7684\u6027\u80fd\u63d0\u5347\uff0c\u4f46\u4ecd\u7136\u4e0d\u63a8\u8350\u666e\u901a\u7528\u6237\u8fdb\u884c\u8d85\u9891\u3002\\n\u8d85\u9891\u6709\u53ef\u80fd\u4f1a**\u6c38\u4e45\u635f\u574f**\u4f60\u7684 CPU \u548c\u4e3b\u677f\uff0c\u6709\u65f6\u4e5f\u4f1a\u8fde\u5e26\u635f\u574f\u5185\u5b58\u3001PCIe \u8bbe\u5907\u3002\\n\u5c24\u5176\u76ee\u524d 3A6000 \u8d85\u9891\u5c5e\u4e8e\u6781\u65e9\u671f\u6d4b\u8bd5\uff0c\u5e76\u6ca1\u6709\u660e\u786e\u7684\u7535\u538b\u9891\u7387\u5b89\u5168\u533a\u95f4\u3002\\n\u56e0\u6b64**\u8bf7\u52a1\u5fc5\u786e\u4fdd\u4f60\u5df2\u7ecf\u660e\u786e\u4e0a\u8ff0\u98ce\u9669\uff0c\u5e76\u51c6\u5907\u597d\u518d\u4e70\u4e00\u5757\u4e3b\u677f\u7684\u94b1**\uff0c\u518d\u8fdb\u884c\u8d85\u9891\u3002\\n:::\\n\\nnywkkk \u8fd8\u540c\u6b65[\u5f00\u53d1\u4e86](https://github.com/naivekun/ls3a6000_freq_tool)\u7528\u6765\u67e5\u770b\u9891\u7387\u529f\u8017\u7684\u5de5\u5177\u3002\\n\u6b64\u5de5\u5177\u9700\u8981\u540d\u4e3a `devmem` \u7684\u5de5\u5177\u8f85\u52a9\uff08\u672a\u7ed9\u51fa\u6e90\u7801\uff0c\u4f46\u770b\u4e0a\u53bb\u5b9e\u73b0\u8f83\u4e3a\u7b80\u5355\uff0c\u81ea\u5df1\u5199\u4e00\u4e2a\u5373\u53ef\uff09\uff0c\u4e14\u642d\u914d 4.19 \u5185\u6838\u4f7f\u7528\u3002\\n\u4ee5\u4e0b\u662f :ta: \u5728 Bilibili \u89c6\u9891\u8bc4\u8bba\u533a\u5c55\u793a\u4e86 :ta: \u5c06 3A6000 \u8d85\u9891\u81f3 2.8GHz \u65f6\u6ee1\u8f7d\u6d4b\u8bd5\u7684\u622a\u56fe\uff1a\\n\\n\x3c!-- https://github.com/loongson-community/areweloongyet/assets/5524744/61208f01-d939-4619-a85d-180d6e855cfa --\x3e\\n![3A6000 \u8d85\u9891\u4e4b\u540e 7z benchmark \u4e0e\u540c\u65f6\u7684\u65f6\u949f\u3001\u7535\u538b\u3001\u529f\u7387\u4fe1\u606f\u663e\u793a](./3a6000-at-2.8ghz-running-7z-and-freq.jpg)\\n\\n\\n\u63a8\u8350\u611f\u5174\u8da3\u7684\u540c\u5b66\u79fb\u6b65 naivekun \u540c\u5b66\u7684\u4e2a\u4eba\u7f51\u7ad9\uff0c\u9605\u8bfb :ta: \u4eb2\u7b14\u7684[\u539f\u7406\u8bb2\u89e3\u6587\u7ae0](https://naivekun.com/2023/12/loongson-3a6000-overclock/)\u3002\\n\\n\u672c\u680f\u76ee\u7531 [phorcys] \u4e3a\u60a8\u64ad\u62a5\uff08\u6587\u5b57\u6709\u5c11\u8bb8\u7f16\u8f91\uff09\u3002\\n\\n[phorcys]: https://github.com/phorcys\\n\\n### \u9f99\u82af SIMD \u6307\u4ee4\u6587\u6863\uff1a\u73b0\u5df2\u63a8\u51fa\u793e\u533a\u7248\uff01\\n\\n\u8fd8\u5728\u4e3a\u9f99\u82af\u8fdf\u8fdf\u4e0d\u653e\u51fa\u300a\u9f99\u82af\u67b6\u6784\u53c2\u8003\u624b\u518c\u300b\u7b2c\u4e8c\u5377\uff0cSIMD \u6307\u4ee4\u660e\u660e\u653e\u5728\u773c\u524d\u5374\u4e0d\u77e5\u9053\u600e\u4e48\u7528\uff0c\u800c\u611f\u5230\u4e3a\u96be\uff1f\\n\u611f\u8c22[\u6770\u54e5][jiegec]\uff1a\u73b0\u5728\u4e0d\u7528\u7b49\u4e86\uff01\\n\\n\u300c\u5728 LoongArch \u7b2c\u4e8c\u5377\u5411\u91cf\u6307\u4ee4\u96c6\u6587\u6863\u6ca1\u6709\u653e\u51fa\u7684\u60c5\u51b5\u4e0b\uff0c\u793e\u533a\u5f00\u53d1\u8005\u5bf9\u4e00\u4e9b\u8f6f\u4ef6\u8fdb\u884c SIMD \u52a0\u901f\u7684\u79fb\u690d\u4f1a\u9762\u4e34\u5f88\u5927\u7684\u56f0\u96be\u3002\\n\u56e0\u6b64\uff0c\u6211\u5f00\u59cb\u6839\u636e\u516c\u5f00\u4ee3\u7801\uff08QEMU \u548c GCC\uff09\u6574\u7406 LSX/LASX intrinsics \u7684\u6587\u6863\uff0c\\n\u4ed3\u5e93[\u6258\u7ba1\u5728 GitHub \u4e0a](https://github.com/jiegec/unofficial-loongarch-intrinsics-guide/)\uff0c\\n\u76ee\u524d[\u90e8\u7f72\u5728\u4e2a\u4eba\u7f51\u7ad9\u4e0a](http://jia.je/unofficial-loongarch-intrinsics-guide/)\uff0c\\n\u6b22\u8fce\u8bd5\u7528\u548c\u63d0\u4ea4\u8d21\u732e\u3002\\n\\n\u300c\u76ee\u524d\u5df2\u7ecf\u5b8c\u6210\u6240\u6709\u7684 LSX \u548c LASX intrinsics\uff0c\u5e76\u4e14\u6d4b\u91cf\u4e86\u5411\u91cf\u6307\u4ee4\u5728\u4e24\u4ee3 LA \u5904\u7406\u5668\u4e0a\u7684\u5ef6\u8fdf\u548c\u541e\u5410\u3002\\n\u540c\u65f6\u4e5f\u9a8c\u8bc1\u4e86\u4e4b\u524d\u63d0\u5230\u8fc7\u7684 `vshuf/xvshuf` \u7684 LA464 \u548c LA664 \u4e0d\u4e00\u81f4\u7684\u884c\u4e3a\uff0c\\n\u5e76\u4e14\u53e6\u5916\u53d1\u73b0 `xvpermi.q` \u4e5f\u6709\u7c7b\u4f3c\u95ee\u9898\uff0c\\n\u89c1 [The Guide](http://jia.je/unofficial-loongarch-intrinsics-guide/viewer/?q=MACHINE_3C5000)\u3002\u300d\\n\\n[jiegec]: https://github.com/jiegec\\n\\n\u672c\u680f\u76ee\u7531[\u6770\u54e5][jiegec]\u4e3a\u60a8\u64ad\u62a5\uff08\u6587\u5b57\u6709\u5c11\u8bb8\u7f16\u8f91\uff09\u3002\\n\\n## \u5f20\u8d34\u680f {#bulletin}\\n\\n\u672c\u680f\u76ee\u53ef\u4f9b\u5f20\u8d34\u516c\u76ca\u6027\u8d28\u7684\u5404\u79cd\u4fe1\u606f\u3002\\n\\n* \u53cb\u60c5\u6269\u6563\uff1a[\u5b89\u540c\u5f00\u6e90\u793e\u533a\uff08AOSC\uff09][aosc]\u7684\u9f99\u67b6\u6784\u79fb\u690d\u4e3b\u7ebf\u5316\u5de5\u4f5c\u300c\u5408\u9f99\u300d\u4ecd\u5728\u5982\u706b\u5982\u837c\u8fdb\u884c\u4e2d\uff0c\\n \u6b64\u5de5\u4f5c\u5b8c\u6210\u540e\u9f99\u67b6\u6784\u5c06\u5347\u683c\u4e3a AOSC OS \u7684 Tier 1 \u67b6\u6784\u3002\\n \u6b22\u8fce\u540c\u5b66\u4eec\u8bd5\u7528\u3001\u53cd\u9988\uff0c\u4e5f\u6b22\u8fce\u6709\u5fd7\u4e4b\u58eb\u4e00\u540c\u52a0\u5165\uff08\u6c9f\u901a\u6e20\u9053\u8be6\u89c1 AOSC \u7f51\u7ad9\u76f8\u5173\u680f\u76ee\uff09\u3002\\n* \u8bf7\u5173\u6ce8[\u9f99\u82af\u793e\u533a\u7684\u8ba8\u8bba\u56ed\u5730][discussions-issues]\uff1a\u76ee\u524d\u5927\u5bb6\u7ecf\u5e38\u5728\u8fd9\u91cc\u8ffd\u8e2a\u5de5\u4f5c\u8fdb\u5ea6\u548c\u6d3e\u6d3b:\u513f:\u4e86\u3002\u884c\u6709\u4f59\u529b\u7684\u540c\u5b66\u8bf7\u6765\u62a5\u5230\uff01\\n* \u672c\u5468\u62a5[\u6301\u7eed\u63a5\u53d7\u7f51\u53cb\u6295\u7a3f][call-for-submissions]\u3002\u6b22\u8fce\u6765\u4e0a\u6e38\u5750\u5750\uff01\\n\\n[aosc]: https://aosc.io\\n[call-for-submissions]: https://github.com/loongson-community/areweloongyet/issues/16\\n[discussions-issues]: https://github.com/loongson-community/discussions/issues"},{"id":"this-week-in-loongarch-28","metadata":{"permalink":"/newsletter/this-week-in-loongarch-28","editUrl":"https://github.com/loongson-community/areweloongyet/newsletter/2023-12-11-this-week-in-loongarch-28/index.md","source":"@site/newsletter/2023-12-11-this-week-in-loongarch-28/index.md","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 28 \u671f","description":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01","date":"2023-12-11T07:45:00.000Z","formattedDate":"2023\u5e7412\u670811\u65e5","tags":[{"label":"\u6bcf\u5468\u4e00\u9f99","permalink":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99"}],"readingTime":8.805,"hasTruncateMarker":true,"authors":[{"name":"WANG Xuerui","title":"\ud83d\udc32\u9f99\u95e8\u5ba2\u6808\u6253\u6742\u7684","url":"https://github.com/xen0n","imageURL":"https://github.com/xen0n.png","key":"xen0n"}],"frontMatter":{"slug":"this-week-in-loongarch-28","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 28 \u671f","authors":["xen0n"],"date":"2023-12-11T07:45:00.000Z","tags":["\u6bcf\u5468\u4e00\u9f99"]},"unlisted":false,"prevItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 29 \u671f","permalink":"/newsletter/this-week-in-loongarch-29"},"nextItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 27 \u671f","permalink":"/newsletter/this-week-in-loongarch-27"}},"content":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01\\n\u4e0a\u5468\u7684\u8fdb\u5c55\u4e3b\u8981\u6709\u5de5\u5177\u94fe\u3001\u672c\u7ad9\u9605\u8bfb\u6750\u6599\u7684\u65b0\u589e\uff0c\u4ee5\u53ca\u8bc1\u5b9e\u4e86 3A6000 \u53ef\u4e0a\u6c34\u51b7\uff08\u4f46\u9700\u81ea\u5907\u89d2\u78e8\u673a\u7b49\u673a\u52a0\u5de5\u8bbe\u5907\uff09\u3002\\n\u8be6\u60c5\u70b9\u8fdb\u6765\u770b\uff01\\n\\n\x3c!-- truncate --\x3e\\n\\n\u5982\u65e0\u7279\u522b\u8bf4\u660e\uff0c\u6587\u4e2d\u63d0\u53ca\u7684\u65e5\u671f\u3001\u65f6\u95f4\u90fd\u4e3a\u5317\u4eac\u65f6\u95f4\uff08UTC+8\uff09\u3002\\n\\n## \u5148\u300c\u9a6c\u300d\u518d\u770b {#marked-projects}\\n\\n\u672c\u680f\u76ee\u7684\u5185\u5bb9\u5177\u6709\u4e00\u5b9a\u5ef6\u7eed\u6027\uff0c\u5c06\u6301\u7eed\u8ffd\u8e2a\u62a5\u9053 LoongArch® \u9886\u57df\u7684\u91cd\u8981\u6216\u957f\u671f\u9879\u76ee\uff08\u5751\uff09\u3002\\n\\n### Linux {#linux}\\n\\nHuacai Chen [\u53d1\u51fa\u4e86](https://lore.kernel.org/loongarch/20231209112317.1542046-1-chenhuacai@loongson.cn/)\u672c\u5f00\u53d1\u5468\u671f\u7684\u7b2c\u4e8c\u7ec4\u95ee\u9898\u4fee\u590d\uff0c\\nLinus \u5df2[\u5c06\u5176\u5408\u5e76](https://github.com/torvalds/linux/commit/b10a3ccaf6e39f6290ca29d7c24604082eacaea0)\u5165 tag `v6.7-rc5`\u3002\\n\u4e3b\u8981\u7684\u53d8\u66f4\u6709\uff1a\\n\\n* \u4fee\u590d\u4e86\u4e0a\u671f\u5468\u62a5[\u63d0\u5230\u7684](../2023-12-05-this-week-in-loongarch-27/index.md#linux)\\n BPF JIT \u9519\u8bef\u5b9e\u73b0\uff08[Hengqi Chen][chenhengqi]\uff09\uff0cTiezhu Yang \u4e5f\u4fee\u4e86\u53e6\u4e24\u4e2a\u95ee\u9898\uff1b\\n* \u4fee\u590d\u4e86[\u4e0a\u4e0a\u671f](../2023-11-27-this-week-in-loongarch-26.md#linux)\u3001\u4e0a\u671f\u5468\u62a5\u90fd\u63d0\u5230\u7684\\n `execve` \u4e4b\u540e\u4e22\u5931\u7cfb\u7edf\u8c03\u7528\u53f7\u4fe1\u606f\u7684\u95ee\u9898\uff08[Hengqi Chen][chenhengqi]\uff09\uff1b\\n* \u4fee\u590d\u4e86\u4e0a\u4e0a\u671f\u5468\u62a5\u63d0\u5230\u7684 Clang \u6784\u5efa\u7684\u538b\u7f29\u5185\u6838[\u4e0d\u80fd\u5f15\u5bfc](https://github.com/ClangBuiltLinux/linux/issues/1962)\u7684\u95ee\u9898\uff08[WANG Rui][heiher]\uff09\u3002\\n\\n[chenhengqi]: https://github.com/chenhengqi\\n[heiher]: https://github.com/heiher\\n\\n### \u5de5\u5177\u94fe {#toolchain}\\n\\n#### binutils\\n\\n[Xi Ruoyao][xry111] \u4e3a\u5171\u4eab\u5e93[\u542f\u7528\u4e86](https://sourceware.org/pipermail/binutils/2023-December/130991.html)\\n`la.got` \u5230 `la.pcrel` \u7684 relaxation \u4f18\u5316\u3002\\n\\nmengqinggang [\u610f\u56fe](https://sourceware.org/pipermail/binutils/2023-December/130993.html)\u4e3a\\nLoongArch \u6c47\u7f16\u8bed\u8a00\u589e\u52a0\u53cc\u5f15\u53f7\u62ec\u8d77\u6765\u7684\u7b26\u53f7\u540d\u548c\u5bc4\u5b58\u5668\u540d\u652f\u6301\uff0c\u4f46\u672a\u4e00\u5e76\u7ed9\u51fa\u610f\u6b32\u652f\u6301\u7684\u9700\u6c42\u573a\u666f\u3002Fangrui Song\\n\u968f\u540e\u6307\u51fa\u4e86\u5bc4\u5b58\u5668\u540d\u8fd8\u52a0\u5f15\u53f7\u6709\u70b9\u5947\u602a\uff0c\u5e94\u8be5\u662f\u4e0d\u7528\u652f\u6301\uff1b\u4f5c\u8005\u540c\u610f\u4e86\uff0c\u4f1a\u518d\u6539\u4e00\u7248\u3002\\n\\n:::info \u5f15\u53f7\u8868\u793a\u7b26\u53f7\u540d\u7684\u610f\u4e49\\n\u8fd9\u6837\u505a\u5927\u6982\u662f\u4e3a\u4e86\u652f\u6301\u5f15\u7528\u90a3\u4e9b\u5185\u542b\u5947\u7279\u5b57\u7b26\u7684\u7b26\u53f7\u3002\u4f8b\u5982\u5728 x86 \u4e0a\uff1a\\n\\n```\\nmovq $1, \\"%rax\\" ; \u5411\u540d\u4e3a %rax \u7684\u7b26\u53f7\u6307\u5411\u7684 8 \u5b57\u8282\u4f4d\u7f6e\u5199 1\\nmovq $1, %rax ; \u5411 rax \u5bc4\u5b58\u5668\u5199 1\\n```\\n\\n\u8be6\u89c1 [Xi Ruoyao][xry111] \u7684[\u89e3\u91ca\u6587\u5b57](https://github.com/loongson-community/areweloongyet/pull/105#discussion_r1417857333)\u3002\\n:::\\n\\n#### GCC {#gcc}\\n\\n[\u6770\u54e5][jiegec]\u4e09\u5929\u524d\\n\uff0812 \u6708 8 \u65e5\uff09[\u53d1\u73b0](https://github.com/loongson-community/discussions/issues/23)\\nGCC 14 \u7684 20231203 \u5feb\u7167\u7248\u672c\uff0c\u76f8\u6bd4 GCC 13.2.1 \u5c45\u7136\u52a3\u5316\u4e86 3A6000 \u7684 CoreMark \u8dd1\u5206\u9ad8\u8fbe 15%\uff01Xi Ruoyao\\n\u7acb\u5373\u52a0\u5165\u6392\u67e5\u961f\u4f0d\u3002\\n\u5927\u5bb6\u53d1\u73b0\u4e86\u81f3\u5c11 4 \u4e2a\u5f7c\u6b64\u72ec\u7acb\u7684\u95ee\u9898\uff1a\\n\\n* [PR112919]\uff1a\u5148\u524d\u5728 LA464 \u4e0a\u8bc1\u5b9e\u6700\u4f18\u7684\u4ee3\u7801\u5757\u5bf9\u9f50\u53c2\u6570\uff0c\u5bf9 LA664 \u53cd\u800c\u662f\u635f\u5bb3\uff1b\\n* [PR112935]\uff1a\u67b6\u6784\u65e0\u5173\u90e8\u5206\u53d1\u751f\u4e86\u52a3\u5316\uff0cAndrew Pinski\\n \u5df2\u7ecf[\u7ed9\u51fa](https://gcc.gnu.org/pipermail/gcc-patches/2023-December/640030.html)\u8865\u4e01\uff1b\\n* [PR112936]\uff1a\u6392\u67e5\u4e0a\u4e00\u4e2a\u95ee\u9898\u65f6\uff0c\u53d1\u73b0 LoongArch \u7684\u4e58\u9664\u6cd5\u6307\u4ee4\u6210\u672c\u5b9a\u4e49\u5f97\u975e\u5e38\u574f\uff0c\u5b8c\u5168\u4e0d\u53cd\u6620\u73b0\u5b9e\uff0cXi Ruoyao\\n \u4e5f\u5df2[\u7ed9\u51fa](https://gcc.gnu.org/pipermail/gcc-patches/2023-December/640012.html)\u8865\u4e01\uff1b\u4ee5\u53ca\\n* [PR111126] \u4e5f\u4e0e\u672c\u95ee\u9898\u5b58\u5728\u4e00\u5b9a\u5173\u7cfb\uff0c\u662f\u540e\u7eed\u53ef\u4ee5\u60e0\u53ca LoongArch\u3001RISC-V \u548c MIPS64r6 \u7684\u4e00\u9879\u6539\u8fdb\u3002\\n\\n[PR112919]: https://gcc.gnu.org/PR112919\\n[PR112935]: https://gcc.gnu.org/PR112935\\n[PR112936]: https://gcc.gnu.org/PR112936\\n[PR111126]: https://gcc.gnu.org/PR111126\\n\\nJiahao Xu \u505a\u7684 LoongArch v1.10 \u7684\u8fd1\u4f3c\u6d6e\u70b9\u5012\u6570\u6307\u4ee4 `frecipe.[sd]`\u3001\u8fd1\u4f3c\u6d6e\u70b9\u5e73\u65b9\u6839\u5012\u6570\u6307\u4ee4 `frsqrte.[sd]`\\n\u53ca\u5176 SIMD \u652f\u6301\uff0c\u5df2\u7531 chenglulu [\u5408\u5165\u4e3b\u7ebf](https://github.com/gcc-mirror/gcc/commit/61f1001f2f4ab9128e5eb6e9a4adbbb0f9f0bc75)\u3002\\n\u611f\u8c22[\u6770\u54e5][jiegec]\u63d0\u4f9b\u65b0\u95fb\u7ebf\u7d22\uff01\\n\\n[Xi Ruoyao][xry111] [\u5141\u8bb8\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-December/639748.html)\u628a `-mcmodel=extreme` \u4e0e `model` \u5c5e\u6027\uff0c\\n\u642d\u914d `-mexplicit-relocs=auto` \u4f7f\u7528\u3002\\n\\n[Yang Yujie][scylaac] [\u4fee\u590d\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-December/639651.html)\u5bf9\\n`__builtin_eh_return` \u7684\u8c03\u7528\u4f1a\u5bfc\u81f4\u540c\u4e00\u51fd\u6570\u4e2d\u5176\u4ed6\u5e38\u89c4\u8fd4\u56de\u8def\u5f84\u7684\u8fd4\u56de\u503c\u88ab\u7834\u574f\u7684\u95ee\u9898\u3002\\n\u6b64\u95ee\u9898\u88ab\u53d1\u73b0\u4f1a\u5bfc\u81f4 libgcc \u7684 `_Unwind_RaiseException` \u5728\u6781\u7aef\u60c5\u51b5\u4e0b\u8fd4\u56de\u9519\u8bef\u7ed3\u679c\u3002\\n\\n[Yang Yujie][scylaac] \u8fd8\u57fa\u4e8e AOSC \u5f00\u53d1\u8005 Zixing Liu \u5148\u524d\u5728 9 \u6708\u4efd[\u53d1\u51fa\u7684](https://gcc.gnu.org/pipermail/gcc-patches/2023-September/631260.html)\\nD \u8bed\u8a00 LoongArch \u9002\u914d\u8865\u4e01\uff0c\\n\u5c06\u5176[\u8fed\u4ee3\u5230\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-December/638912.html)\u7b2c\u4e09\u7248\u3002\\n\\n\u672c\u671f\u7684\u5927\u591a\u6570 GCC \u65b0\u95fb\u90fd\u662f [Xi Ruoyao][xry111] \u5e2e\u5fd9\u6574\u7406\uff08\u4ee5\u53ca\u81ea\u5df1\u5236\u9020\uff09\u7684\uff0c\u8ba9\u6211\u4eec\u611f\u8c22 :ta: \u7684\u5949\u732e\uff01\\n\\n[jiegec]: https://github.com/jiegec\\n[scylaac]: https://github.com/scylaac\\n[xry111]: https://github.com/xry111\\n\\n#### LLVM {#llvm}\\n\\n[wangleiat](https://github.com/wangleiat) \u6559\u4f1a\u4e86 LLVM \u505a\u5f88\u591a SIMD \u4ee3\u7801\u751f\u6210\uff1a\\n\\n* [\u6574\u6570\u5143\u7d20\u7684\u53d6\u5b8c\u6574\u4e58\u6cd5\u7ed3\u679c\u9ad8\u534a\u90e8\u5206](https://github.com/llvm/llvm-project/commit/e9cd197d15300f186a5a32092103add65fbd3f50)\uff0c\\n \u5bf9\u5e94 LLVM IR \u4e2d\u64cd\u4f5c\u5411\u91cf\u6570\u636e\u7c7b\u578b\u7684 [`mul`][llvm-langref-mul] \u968f\u540e\\n `ashr`/`lshr` \u518d `trunc` \u7684\u64cd\u4f5c\uff1b\\n* [\u6574\u6570\u5143\u7d20\u7684\u9009\u62e9](https://github.com/llvm/llvm-project/commit/de21308f78f3b0f0910638dbdac90967150d19f0)\uff0c\\n \u5bf9\u5e94 LLVM IR \u4e2d\u64cd\u4f5c\u5411\u91cf\u6570\u636e\u7c7b\u578b\u7684 [`select`][llvm-langref-select]\uff1b\\n* [\u6d6e\u70b9\u3001\u6574\u6570\u7684\u5143\u7d20\u6bd4\u8f83](https://github.com/llvm/llvm-project/pull/74700)\uff0c\\n \u5206\u522b\u5bf9\u5e94 LLVM IR \u4e2d\u64cd\u4f5c\u5411\u91cf\u6570\u636e\u7c7b\u578b\u7684 [`fcmp`][llvm-langref-fcmp]\\n \u4e0e [`icmp`][llvm-langref-icmp]\uff1b\\n* [\u6d6e\u70b9\u5f00\u5e73\u65b9\u3001\u6c42\u5012\u6570](https://github.com/llvm/llvm-project/pull/74795)\uff0c\\n \u5206\u522b\u5bf9\u5e94 LLVM IR \u4e2d\u7684 [`llvm.sqrt.*`][llvm-langref-sqrt] intrinsics\uff0c\\n \u4ee5\u53ca\u88ab\u9664\u6570\u662f 1.0 \u7684 [`fdiv`][llvm-langref-fdiv]\uff1b\\n* [\u6d6e\u70b9\u6c42\u76f8\u53cd\u6570](https://github.com/llvm/llvm-project/commit/cdc37325669c0321328a7245083c427b229e79e9),\\n \u5bf9\u5e94 LLVM IR \u4e2d\u64cd\u4f5c\u5411\u91cf\u6570\u636e\u7c7b\u578b\u7684 [`fneg`][llvm-langref-fneg]\u3002\\n\\n[llvm-langref-fcmp]: https://llvm.org/docs/LangRef.html#fcmp-instruction\\n[llvm-langref-fdiv]: https://llvm.org/docs/LangRef.html#fdiv-instruction\\n[llvm-langref-fneg]: https://llvm.org/docs/LangRef.html#fneg-instruction\\n[llvm-langref-icmp]: https://llvm.org/docs/LangRef.html#icmp-instruction\\n[llvm-langref-mul]: https://llvm.org/docs/LangRef.html#mul-instruction\\n[llvm-langref-select]: https://llvm.org/docs/LangRef.html#select-instruction\\n[llvm-langref-sqrt]: https://llvm.org/docs/LangRef.html#llvm-sqrt-intrinsic\\n\\n[SixWeining](https://github.com/SixWeining)\\n[\u540c\u6b65\u4e86](https://github.com/llvm/llvm-project/pull/73345)\\nLoongArch ELF psABI 20231102 \u7248\u672c\uff08\u6574\u4f53\u7248\u672c\u53f7 v2.20\uff09\u53d8\u66f4\u4e86\u7684\u91cd\u5b9a\u4f4d\u7c7b\u578b\u5b9a\u4e49\u3002\\n\\n## \u6742\u95fb\u64ad\u62a5 {#assorted-news}\\n\\n\u672c\u7ad9\u7684\u5176\u4ed6\u680f\u76ee\u5f97\u5230\u4e86\u4e9b\u4e45\u8fdd\u7684\u66f4\u65b0\uff1a\\n\\n* \u65b0\u589e\u4e86[\u300a\u57fa\u7840\u8bbe\u65bd\u7248\u672c\u57fa\u7ebf\u53c2\u8003\u300b](/docs/baseline-reference/)\u4e0e[\u300a\u5178\u578b\u9f99\u67b6\u6784\u914d\u7f6e\u6570\u636e\u6536\u96c6\u300b](/docs/collection-of-typical-configurations/)\u4e24\u7bc7\u9605\u8bfb\u6750\u6599\uff1b\\n* \u4e3a[\u300a\u5982\u4f55\u79f0\u547c\u9f99\u67b6\u6784\uff1f\u300b](/docs/loong-or-loongarch/)\u66f4\u65b0\u4e86\u4fe1\u606f\uff0c\\n* \u5728\u9996\u9875\u65b0\u589e\u4e86 [ALT Linux](https://en.altlinux.org/Main_Page)\u3001[\u52c7\u8c79](https://github.com/sunhaiyong1978/Yongbao)\u4e24\u79cd\u53d1\u884c\u7248\uff1b\\n* \u5728\u9996\u9875\u65b0\u589e\u4e86 Haiku\u3001ReactOS \u4e24\u79cd\u5386\u53f2\u60a0\u4e45\u7684\u5c0f\u4f17\u5185\u6838\u3002\\n\\n\u6b22\u8fce\u8bfb\u8005\u4eec[\u63d0\u51fa\u5efa\u8bae](https://github.com/loongson-community/areweloongyet/issues)\u3001[\u53c2\u4e0e\u8d21\u732e](https://github.com/loongson-community/areweloongyet/pulls)\uff01\\n\\n[Xinmudotmoe] \u5341\u6708\u4efd\u5411 ROCm \u7684 ROCR-Runtime\\n\u7ec4\u4ef6[\u63d0\u4ea4\u7684](https://github.com/ROCm/ROCR-Runtime/pull/168)\\nLoongArch \u652f\u6301\u8865\u4e01\uff0c\u5df2\u4e3a AMD \u7ef4\u62a4\u8005\u6240\u786e\u8ba4\uff1a\u5c06\u8fdb\u5165 ROCm 6.1 \u5b98\u65b9\u7248\u672c\u3002\\n\\n[Xinmudotmoe]: https://github.com/Xinmudotmoe\\n\\nAOSC \u8d21\u732e\u8005[\u5085\u5b5d\u5143](https://github.com/eatradish)\u4e3a Rust \u7684 Lua \u7ed1\u5b9a\u5e93\\nmlua [\u65b0\u589e\u4e86](https://github.com/khvzak/mlua/pull/339) LoongArch \u652f\u6301\u3002\\n\u611f\u8c22[\u767d\u94ed\u9aa2](https://github.com/MingcongBai)\u6295\u9012\u65b0\u95fb\u7ebf\u7d22\uff01\\n\\n## \u793e\u533a\u6574\u6d3b:\u513f: {#grins}\\n\\n\u672c\u680f\u76ee\u63a5\u53d7\u4efb\u4f55\u7f51\u53cb\u7684\u6295\u7a3f\uff0c\u53ea\u8981\u5185\u5bb9\u4e0e LoongArch® \u6709\u5173\uff0c\u5e76\u53ef\u4ee5\u4e3a\u8bfb\u8005\u5e26\u6765\u4ef7\u503c\uff0c\\n\u65e0\u8bba\u4e25\u8083\u8d21\u732e\uff08\u6574\u7684\u5927\u6d3b:\u513f:\uff09\u6216\u662f\u535a\u541b\u4e00\u7b11\u90fd\u4e00\u6982\u6b22\u8fce\uff01\\n\\n\u8fd1\u65e5\uff0c[Xinmudotmoe] \u5728\u89d2\u78e8\u673a\u7684\u914d\u5408\u4e0b\uff0c\u4e3a :ta: \u7684 3A6000 \u6362\u4e0a\u4e86\u6c34\u51b7\uff01\\n\u770b\u770b :ta: \u7684\u597d\u6d3b:\u513f:\uff1a\\n\\n### 3A6000 \u6c34\u51b7\u8ba1\u5212\uff01\\n\\n\u56fa\u4ef6\u7ec4[\u66f4\u65b0\u592a\u5feb](https://github.com/loongson/Firmware/pull/79)\uff0c\\n\u4f7f\u5f97\u6211\u521a\u78e8\u5f00 PCIe \u69fd\u5c31\u6709\u4e86\u66f4\u597d\u7684\u56fa\u4ef6\u3002\uff08\u767d\u5e72\uff09\\n\\n\uff08\u7f16\u8005\u6309\uff1a3A6000 \u8bc4\u4f30\u677f\u7684\u51fa\u5382\u56fa\u4ef6\u662f\u4e0d\u80fd\u70b9\u4eae RDNA \u6216\u66f4\u5f80\u540e\u7684 A \u5361\u7684\u3002\\n\u867d\u7136\u53ef\u7528[\u300c\u732e\u796d\u6d41\u300d](https://github.com/loongson/Firmware/issues/74#issuecomment-1831442404)\u7ed5\u8fc7\uff0c\\n\u4f46\u524d\u63d0\u662f\u8981\u300c\u89e3\u51b3 x8 \u69fd\u63d2 x16 \u5361\u7684\u95ee\u9898\u300d\u2014\u2014\u670b\u53cb\u7684\u89d2\u78e8\u673a\u6015\u4e0d\u662f\u5c31\u4e3a\u8fd9\u8d2d\u4e70\u7684\u2026\u2026\uff09\\n\\nXA61200 \u4e3b\u677f\u6263\u5177\u517c\u5bb9 LGA 115x \u5b54\u4f4d\uff0c\u4f46\u5904\u7406\u5668\u9ad8\u5ea6\u8fc7\u4f4e\uff0c\u4e14\u6865\u7247\u6563\u70ed\u5668\u4e0e\u5904\u7406\u5668\u4f9b\u7535\u7535\u611f\u4f4d\u7f6e\u51b2\u7a81\u3002\\n\u53ea\u5f97\u7528\u89d2\u78e8\u673a\u5bf9 115x \u6c34\u51b7\u5934\u6846\u67b6\u8fdb\u884c\u6253\u78e8\uff0c\u4f7f\u5176\u517c\u5bb9\u3002\\n\u53ef\u89c1\u6253\u78e8\u540e\u6c34\u51b7\u5934\u7684\u53d8\u5316\uff08\u70b9\u51fb\u53ef\u770b\u9ad8\u6e05\u5927\u56fe\uff0c\u4e0b\u540c\uff09\uff1a\\n\\n\x3c!-- convert reduced-frame-closeup.jpg -resize 816x459 reduced-frame-closeup@0.25x.webp --\x3e\\n[![\u89d2\u78e8\u673a\u6253\u78e8\u540e\u7684\u51b7\u5934\u6846\u67b6\u7279\u5199](./reduced-frame-closeup@0.25x.webp)](./reduced-frame-closeup.jpg)\\n\\n\u6d4b\u8bd5\u5b89\u88c5\u538b\u529b\uff1a\\n\\n\x3c!-- convert pressure-test.jpg -resize 512x230 -rotate 90 pressure-test@0.125x.webp --\x3e\\n[![\u6d4b\u8bd5\u5b89\u88c5\u538b\u529b\u7684\u6548\u679c](./pressure-test@0.125x.webp)](./pressure-test.jpg)\\n\\n\u8fd0\u884c\u6548\u679c\uff1a\\n\\n\x3c!-- convert final-effect.jpg -resize 460x460 final-effect@0.25x.webp --\x3e\\n[![\u6c34\u51b7\u7cfb\u7edf\u7684\u8fd0\u884c\u6548\u679c](./final-effect@0.25x.webp)](./final-effect.jpg)\\n\\n~~\u89d2\u78e8\u4e00\u65f6\u723d\uff0c\u6f0f\u6db2\u706b\u846c\u573a\uff01~~\\n\\n## \u5f20\u8d34\u680f {#bulletin}\\n\\n\u672c\u680f\u76ee\u53ef\u4f9b\u5f20\u8d34\u516c\u76ca\u6027\u8d28\u7684\u5404\u79cd\u4fe1\u606f\u3002\\n\\n* \u53cb\u60c5\u6269\u6563\uff1a[\u5b89\u540c\u5f00\u6e90\u793e\u533a\uff08AOSC\uff09][aosc]\u7684\u9f99\u67b6\u6784\u79fb\u690d\u4e3b\u7ebf\u5316\u5de5\u4f5c\u300c\u5408\u9f99\u300d\u4ecd\u5728\u5982\u706b\u5982\u837c\u8fdb\u884c\u4e2d\uff0c\\n \u6b64\u5de5\u4f5c\u5b8c\u6210\u540e\u9f99\u67b6\u6784\u5c06\u5347\u683c\u4e3a AOSC OS \u7684 Tier 1 \u67b6\u6784\u3002\\n \u6b22\u8fce\u540c\u5b66\u4eec\u8bd5\u7528\u3001\u53cd\u9988\uff0c\u4e5f\u6b22\u8fce\u6709\u5fd7\u4e4b\u58eb\u4e00\u540c\u52a0\u5165\uff08\u6c9f\u901a\u6e20\u9053\u8be6\u89c1 AOSC \u7f51\u7ad9\u76f8\u5173\u680f\u76ee\uff09\u3002\\n* \u65b0\u589e\u4e00\u7bc7\u82f1\u96c4\u5e16\uff1a[\u5728\u793e\u533a\u4e2d\u65b0\u589e LoongArch \u7684 SMBIOS Type 44 \u8868\u683c\u652f\u6301](https://github.com/loongson-community/discussions/issues/28)\u3002\\n \u6b22\u8fce\u6709\u5fd7\u4e4b\u58eb\u53bb\u8bc4\u8bba\u533a\u62a5\u5230\uff01\\n* \u672c\u5468\u62a5[\u6301\u7eed\u63a5\u53d7\u7f51\u53cb\u6295\u7a3f][call-for-submissions]\u3002\u6b22\u8fce\u6765\u4e0a\u6e38\u5750\u5750\uff01\\n\\n[aosc]: https://aosc.io\\n[call-for-submissions]: https://github.com/loongson-community/areweloongyet/issues/16"},{"id":"this-week-in-loongarch-27","metadata":{"permalink":"/newsletter/this-week-in-loongarch-27","editUrl":"https://github.com/loongson-community/areweloongyet/newsletter/2023-12-05-this-week-in-loongarch-27/index.md","source":"@site/newsletter/2023-12-05-this-week-in-loongarch-27/index.md","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 27 \u671f","description":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01","date":"2023-12-04T19:00:00.000Z","formattedDate":"2023\u5e7412\u67084\u65e5","tags":[{"label":"\u6bcf\u5468\u4e00\u9f99","permalink":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99"}],"readingTime":9.925,"hasTruncateMarker":true,"authors":[{"name":"WANG Xuerui","title":"\ud83d\udc32\u9f99\u95e8\u5ba2\u6808\u6253\u6742\u7684","url":"https://github.com/xen0n","imageURL":"https://github.com/xen0n.png","key":"xen0n"}],"frontMatter":{"slug":"this-week-in-loongarch-27","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 27 \u671f","authors":["xen0n"],"date":"2023-12-04T19:00:00.000Z","tags":["\u6bcf\u5468\u4e00\u9f99"]},"unlisted":false,"prevItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 28 \u671f","permalink":"/newsletter/this-week-in-loongarch-28"},"nextItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 26 \u671f","permalink":"/newsletter/this-week-in-loongarch-26"}},"content":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01\\n\u4e0a\u5468\u7684\u8fdb\u5c55\u4e3b\u8981\u6709 ABI\u3001\u5de5\u5177\u94fe\u3001Firefox\u3001\u56fa\u4ef6\u3001OpenSSL\u3002\\n\u8be6\u60c5\u70b9\u8fdb\u6765\u770b\uff01\\n\\n\x3c!-- truncate --\x3e\\n\\n\u5982\u65e0\u7279\u522b\u8bf4\u660e\uff0c\u6587\u4e2d\u63d0\u53ca\u7684\u65e5\u671f\u3001\u65f6\u95f4\u90fd\u4e3a\u5317\u4eac\u65f6\u95f4\uff08UTC+8\uff09\u3002\\n\\n\u672c\u671f\u5468\u62a5\u7684\u5b9e\u9645\u53d1\u7a3f\u65f6\u95f4\u662f\u5468\u4e8c\u51cc\u6668\uff0c\u56e0\u4e3a\u8fd9\u4e2a\u70b9\u624d\u5199\u5b8c\u2014\u2014\u767d\u5929\u90fd\u5728\u5fd9\u522b\u7684\u3002\\n\u7f51\u9875\u4e0a\u663e\u793a\u7684\u53d1\u7a3f\u65f6\u95f4\u4ecd\u7136\u662f 12 \u6708 4 \u65e5\uff1a\\n\u8fd9\u662f Docusaurus \u65e9\u671f\u4e3a\u4e86\u4fee\u590d\u4e00\u4e2a\u65f6\u533a bug \u800c[\u5bfc\u81f4\u7684](https://github.com/facebook/docusaurus/issues/4881)\u53c8\u4e00\u4e2a\u65f6\u533a bug\u3002\\n\\n## \u8981\u95fb\u901f\u9012 {#breaking-news}\\n\\n11 \u6708 28 \u65e5\uff0c\u9f99\u82af\u516c\u53f8\u5728\u56fd\u5bb6\u4f1a\u8bae\u4e2d\u5fc3\u4e3e\u529e\u4e86 2023 \u9f99\u82af\u4ea7\u54c1\u53d1\u5e03\u66a8\u7528\u6237\u5927\u4f1a\u3002\\n\u7b14\u8005\u5728\u73b0\u573a\u83b7\u5f97\u4e86\u4e00\u4e9b\u6709\u4ef7\u503c\u4fe1\u606f\uff1b\u5728\u672a\u6765\u51e0\u671f\u7684\u5468\u62a5\u4e2d\u5c06\u9646\u7eed\u4e3a\u60a8\u64ad\u62a5\u3002\\n\\n## \u5148\u300c\u9a6c\u300d\u518d\u770b {#marked-projects}\\n\\n\u672c\u680f\u76ee\u7684\u5185\u5bb9\u5177\u6709\u4e00\u5b9a\u5ef6\u7eed\u6027\uff0c\u5c06\u6301\u7eed\u8ffd\u8e2a\u62a5\u9053 LoongArch® \u9886\u57df\u7684\u91cd\u8981\u6216\u957f\u671f\u9879\u76ee\uff08\u5751\uff09\u3002\\n\\n### Linux {#linux}\\n\\nHengqi Chen \u5728\u8dd1 BPF \u81ea\u6211\u6d4b\u8bd5\u7684\u65f6\u5019\uff0c[\u53d1\u73b0](https://lore.kernel.org/loongarch/CAEyhmHT6UOryPZi7eEfw01Y_CjAqxy8NM6eKkdvdojJqB9P7eQ@mail.gmail.com/)\u5f00\u542f\\nLoongArch BPF JIT \u4e4b\u540e\uff0c\u4e00\u4e9b\u7528\u4f8b\u4f1a\u5bfc\u81f4\u5185\u6838 panic \u6216\u5bfc\u81f4 RCU \u5361\u6b7b\u3002\\n\u622a\u81f3\u53d1\u7a3f\u65f6\uff0c[\u4fee\u4e86](https://lore.kernel.org/loongarch/20231204141938.7230-1-hengqi.chen@gmail.com/)\u4e00\u79cd panic\u3002\\n\\nHengqi Chen \u7ee7\u7eed\u8fed\u4ee3 :ta: \u7684\u5c06\u7cfb\u7edf\u8c03\u7528\u53f7\u5b58\u5165 `struct thread_info` \u7684\u8865\u4e01\u7cfb\u5217\u3002\\n\u4e3a\u4e86\u89e3\u51b3 `execsnoop` \u7b49\u5de5\u5177\u4e0d\u53ef\u7528\u7684\u71c3\u7709\u4e4b\u6025\uff0c:ta: \u5355\u72ec[\u62c6\u51fa\u4e86](https://lore.kernel.org/loongarch/20231204053745.3153-1-hengqi.chen@gmail.com/)\\n`exec` \u65f6\u4e0d\u6e05\u96f6 `$a7`\uff08\u7cfb\u7edf\u8c03\u7528\u53f7\u5bc4\u5b58\u5668\uff09\u7684\u8865\u4e01\uff1b\u6b64\u8865\u4e01\u5df2\u88ab Huacai Chen \u63a5\u53d7\uff0c\\n\u5c06\u5728 Linux 6.7 \u6700\u7ec8\u53d1\u5e03\u65f6\u53ef\u7528\u3002\\n\\nTiezhu Yang [\u8d34\u51fa\u4e86](https://lore.kernel.org/loongarch/20231129130701.27744-1-yangtiezhu@loongson.cn/)\u7b2c 5 \u7248\u7684\u4e3a\\nLoongArch \u9002\u914d [ORC stack unwinder](https://lwn.net/Articles/728339/) \u7684\u8865\u4e01\u3002\\n\\n### \u5de5\u5177\u94fe {#toolchain}\\n\\n#### ABI {#abi}\\n\\n\u9f99\u82af\u56e2\u961f\u5b8c\u6210\u4e86\u521d\u7248 TLS[^tls] \u63cf\u8ff0\u7b26\uff08TLS descriptors\uff0cTLSDESC\uff09ABI \u7684\u8bbe\u8ba1\u4e0e\u5b9e\u73b0\uff1a\\n\\n[^tls]: Thread-Local Storage\uff0c\u7ebf\u7a0b\u672c\u5730\u5b58\u50a8\u3002\u6b64 TLS \u975e\u5f7c TLS\uff08Transport Layer Security\uff0c\u4f20\u8f93\u5c42\u5b89\u5168\uff09\u3002\\n\\n* [binutils](https://sourceware.org/pipermail/binutils/2023-December/130916.html)\uff08Lulu Cai\uff09\\n* [gcc](https://gcc.gnu.org/pipermail/gcc-patches/2023-December/638907.html)\uff08mengqinggang\uff09\\n* [glibc](https://sourceware.org/pipermail/libc-alpha/2023-December/153052.html)\uff08mengqinggang\uff09\\n\\nTLS \u63cf\u8ff0\u7b26\u662f\u4e00\u79cd\u7528\u6765\u4f18\u5316\u7ebf\u7a0b\u672c\u5730\u53d8\u91cf\uff08thread-local variables\uff09\u8bbf\u95ee\u901f\u5ea6\u7684\u65b9\u6848\uff0c\\n\u7531 Alexandre Oliva \u5728 2005 \u5e74\u524d\u540e\u8bbe\u8ba1\uff1b\u4f5c\u8005[\u516c\u5f00\u4e86](https://www.fsfla.org/~lxoliva/writeups/TLS/RFC-TLSDESC-x86.txt)\u8bbe\u8ba1\u6587\u6863\u3002\\n\u76ee\u524d\u5b9e\u73b0\u4e86\u6216\u5373\u5c06\u5b9e\u73b0 TLS \u63cf\u8ff0\u7b26\u7684\u67b6\u6784\u6709\u4ee5\u4e0b\u51e0\u79cd\uff1a\\n\\n* \u5bcc\u58eb\u901a FR-V\uff1a\u6700\u521d\u8bbe\u8ba1\u7684\u7075\u611f\u6765\u6e90\u548c\u76ee\u6807\u67b6\u6784\u3002\\n* x86\uff1ai386\u3001AMD64\u3002\\n* ARM\uff1aARM\u3001AArch64\u3002\\n* Andes NDS32\\n* Tensilica Xtensa\\n* RISC-V\uff1a\u6b63\u5728\u63a8\u8fdb\u4e2d\uff0c[\u5de5\u5355](https://github.com/riscv-non-isa/riscv-elf-psabi-doc/issues/94)\u3001[\u8bbe\u8ba1\u7a3f](https://github.com/riscv-non-isa/riscv-elf-psabi-doc/pull/373)\u3002\\n\\nLoongArch \u4e0d\u65e5\u4e5f\u5c06\u52a0\u5165\u5b83\u4eec\u7684\u884c\u5217\u3002\\n\u7b2c\u4e00\u7248\u4ee3\u7801\u8fd8\u6709\u4e9b\u5730\u65b9\u8981\u6539\uff0c\u8bf7\u76f4\u63a5\u53bb\u4e0a\u6e38\u56f4\u89c2\u3002\\n\u503c\u5f97\u4e00\u63d0\u7684\u662f\u539f\u4f5c\u8005\u4e5f[\u52a0\u5165\u4e86](https://sourceware.org/pipermail/binutils/2023-December/130932.html)\u8ba8\u8bba\uff0c\u5e76\u4ece\u81ea\u5df1\u7684\u7ecf\u9a8c\u7ed9\u51fa\u4e86\u5b9d\u8d35\u5efa\u8bae\uff01\\n\\n\u51e0\u4e4e\u4e0e\u6b64\u540c\u65f6\uff0c\u5e38\u4f73\u741b\u540c\u5b66\u4e5f[\u8d34\u51fa\u4e86](https://sourceware.org/pipermail/binutils/2023-December/130921.html)\u4e00\u7248\u5bf9\\nTLS LE \u64cd\u4f5c\u7684 relaxation \u652f\u6301\u3002\\n\u8fd9\u540d\u53f7\u5728\u9f99\u82af\u5708\u5b50\u662f\u5934\u4e00\u56de\u89c1\uff0c\u90ae\u7bb1\u540e\u7f00\u4e5f\u662f\u897f\u5b89\u90ae\u7535\u5927\u5b66\uff0c\u800c\u975e `loongson.cn`\u2014\u2014\u65b0\u9c9c\u8840\u6db2\u672c\u5c31\u4e0d\u591a\u89c1\uff0c\\n\u4f55\u51b5\u9996\u79c0\u5c31\u5728 ABI \u8fd9\u79cd\u786c\u6838\u9886\u57df\u3002\\n\u8ba9\u6211\u4eec\u70ed\u70c8\u6b22\u8fce :ta:\uff01\\n\\n#### binutils {#binutils}\\n\\n\u5148\u524d[\u62a5\u9053\u8fc7\u7684](../2023-10-30-this-week-in-loongarch-22.md#binutils)\\n[Jiajie Chen](https://github.com/jiegec)\\n\u5e2e\u5fd9\u52a0\u7684 LoongArch® v1.10 \u65b0\u6307\u4ee4\uff0c\u5df2\u7ecf\u8fdb\u5165\u4e3b\u7ebf\uff1a[\u8865\u4e01\u7532](https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=cd51849c90e8fd13779bec69f5d4c7aadf03a532)\u3001[\u8865\u4e01\u4e59](https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=9ff4752d0f6d46ca0f7d275ea07e05790ac8dd1d)\u3002\\n\\nmengqinggang \u7ee7\u7eed\u8ddf\u8fdb\u65b0\u7684\u4e2d\u7b49\u4ee3\u7801\u6a21\u578b\uff08medium code model\uff09\u8fc7\u7a0b\u8c03\u7528\u65b9\u5f0f `R_LARCH_CALL36`\\n\u7684\u9002\u914d\u5de5\u4f5c\uff0c\u7ed9 binutils [\u589e\u52a0\u4e86](https://sourceware.org/pipermail/binutils/2023-December/130906.html)\\n`call` \u548c `tail` \u4f2a\u6307\u4ee4\u652f\u6301\u3002\\n\u5728\u90ae\u4ef6\u5217\u8868\u5df2\u7ecf\u8fdb\u884c\u4e86\u4e00\u4e9b\u8ba8\u8bba\uff0c\u56e0\u6b64\u8fd9\u4e9b\u6307\u4ee4\u7684\u5177\u4f53\u5f62\u6001\u53ef\u80fd\u8fd8\u4f1a\u5fae\u8c03\uff0c\u4f46\u8981\u52a0\u5165\u8fd9\u4e24\u7c7b\u4f2a\u6307\u4ee4\u8fd9\u4ef6\u4e8b\u5e94\u8be5\u662f\u786e\u5b9a\u4e86\u3002\\n\u719f\u6089 RISC-V \u7684\u8bfb\u8005\u5e94\u8be5\uff08\u7ec8\u4e8e\uff09\u4f1a\u611f\u5230\u5bb6\u7684\u6e29\u6696 :wink:\\n\\n#### GCC {#gcc}\\n\\nJoern Rennecke \u4e0e Jeff Law [\u505a\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-November/638380.html)\u4e00\u7a3f\u6d88\u9664\u591a\u4f59\u7b26\u53f7\u6269\u5c55\u3001\u96f6\u6269\u5c55\u7684\u5de5\u5e8f\uff08pass\uff09\u3002\\n\u8fd9\u4e0d\u662f\u4e13\u95e8\u4e3a LoongArch \u505a\u7684\u5de5\u4f5c\uff0c\u4f46\u5305\u62ec LoongArch \u5728\u5185\u7684\u4e0d\u5c11\u67b6\u6784\u5c06\u4ece\u4e2d\u53d7\u76ca\u3002\\n\\nJiahao Xu \u6309\u7167[\u4e4b\u524d Xi Ruoyao \u7684\u6539\u6cd5](../2023-11-13-this-week-in-loongarch-24.md#gcc)\uff0c\\n\u4fee\u590d\u4e86\u5269\u4f59\u7684\u5b50\u5bc4\u5b58\u5668\uff08subreg\uff09\u8bef\u7528\uff0c\\n\u7b49\u4e8e\u6d88\u706d\u4e86\u8fd9\u4e9b\u95ee\u9898\u903b\u8f91\u5c06\u5bfc\u81f4\u7684\u7f16\u8bd1\u5668\u5d29\u6e83\uff08ICE\uff09\u3002\\n\uff08GCC \u8981\u6c42\u4e0d\u80fd\u53d6\u5b50\u5bc4\u5b58\u5668\u7684\u5b50\u5bc4\u5b58\u5668\uff0c\u5426\u5219\u5d29\u6e83\u3002\uff09\\n\\nJiahao Xu \u8fd8[\u4fee\u590d\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-November/638556.html)\\n`{v,xv}shuf` \u7684\u6d4b\u8bd5\u7528\u4f8b\u5728 LA664 \u4e0a\u5931\u8d25\u7684\u95ee\u9898\uff08bug [PR112611]\uff09\u3002\\n\u8fd9\u662f\u56e0\u4e3a\u539f\u5148\u7684\u9884\u671f\u8ba1\u7b97\u7ed3\u679c\u5c31\u662f LA464 \u4e0a\u76f8\u5e94\u6307\u4ee4\u7684\u6267\u884c\u6548\u679c\uff0c\u800c\u539f\u5148\u7684\u8f93\u5165\u6570\u636e\u4f1a\u89e6\u53d1 LA464 \u7684\u672a\u5b9a\u4e49\u884c\u4e3a\u3002\\n\\n[PR112611]: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112611\\n\\nJiahao Xu \u8fd8[\u52a0\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-November/638369.html)\\n`-mrecip` \u9009\u9879\uff0c\u7528\u6765\u63a7\u5236\u662f\u5426\u5229\u7528 LA664 \u7684\u4e24\u79cd\u6d6e\u70b9\u8fd1\u4f3c\u5012\u6570\u6307\u4ee4\u3002\u4ee3\u7801\u4ecd\u9700\u4fee\u6539\u3002\\n\\nliwei \u7528 LoongArch SIMD \u6307\u4ee4[\u4f18\u5316\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-November/638384.html)\u6807\u91cf\u7684\\n`__builtin_popcount` \u64cd\u4f5c\u3002\\n\uff08\u8fd9\u4e2a\u64cd\u4f5c\u7684\u542b\u4e49\u662f\u6c42\u6574\u6570\u7684\u4e8c\u8fdb\u5236\u8868\u793a\u4e2d `1` \u7684\u4e2a\u6570\uff1bpopulation count \u76f4\u8bd1\u662f\u300c\u4eba\u53e3\u8ba1\u6570\u300d\uff0c\u5f88\u5f62\u8c61\u3002\uff09\\n\\n:::info \u7f16\u8005\u6309\\n\u8fd9\u4e2a\u64cd\u4f5c\u6709\u5411\u91cf\u7248\uff1a`{v,xv}pcnt.[bhwd]`\uff0c\u5374\u6ca1\u6709\u6807\u91cf\u7248\uff0c\u4e0d\u5bf9\u79f0\u3002\\n\u5728\u4e00\u4e9b\u96f6\u661f\u4f7f\u7528\uff0c\u56e0\u800c\u4e0d\u503c\u5f97\u5411\u91cf\u5316\u7684\u573a\u666f\u53ef\u80fd\u5403\u4e8f\u3002\\n\u5e0c\u671b\u4ee5\u540e\u80fd\u8865\u4e0a\u8fd9\u4e00\u5757\u2026\u2026\\n:::\\n\\nliwei \u8fd8[\u4f18\u5316\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-November/638385.html)\u53d6\u5947/\u5076\u5143\u7d20\u7684\u5411\u91cf\u64cd\u4f5c\u3002\\n\\nliwei \u8fd8[\u6e05\u7406\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-November/638390.html)[\u4e0a\u6b21\u4f18\u5316\u540e](../2023-11-20-this-week-in-loongarch-25.md#CLZ_DEFINED_VALUE_AT_ZERO)\u91cd\u590d\u7684\\n`CLZ_DEFINED_VALUE_AT_ZERO` \u5b9a\u4e49\u3002\\n\\nguojie \u5728 UBSan \u7684\u6307\u5bfc\u4e0b[\u4fee\u590d\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-November/637859.html)\\nLoongArch \u540e\u7aef\u5728\u5904\u7406\u7acb\u5373\u6570\u65f6\uff0c\u53ef\u80fd\u89e6\u53d1\u7684\u4e00\u5904\u672a\u5b9a\u4e49\u884c\u4e3a\u3002\\n\\nguojie \u8fd8[\u4f18\u5316\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-November/637858.html)\u9ad8 32 \u4f4d\u4e0e\u4f4e 32 \u4f4d\u78b0\u5de7\u76f8\u540c\u7684\u7acb\u5373\u6570\u7684\u88c5\u8f7d\u3002\\n\\n\u672c\u671f\u7684 GCC \u65b0\u95fb\u90fd\u662f [Xi Ruoyao][xry111] \u5e2e\u5fd9\u6574\u7406\u7684\uff0c\u8ba9\u6211\u4eec\u611f\u8c22 :ta: \u7684\u5949\u732e\uff01\\n\\n#### LLVM {#llvm}\\n\\n[wangleiat] \u4eff\u7167\u4e24\u5e74\u524d\u7684\u4e00\u7ec4 x86 \u6539\u52a8\uff0c[\u4fee\u590d\u4e86](https://github.com/llvm/llvm-project/pull/73742)\u5728\u4ee3\u7801\u751f\u6210\u7684\u8fb9\u754c\u60c5\u51b5\u65f6\\n`fnmsub.[sd]` \u7684\u9519\u8bef\u7528\u6cd5\u3002\\n\\n[wangleiat] \u7528 SIMD \u6307\u4ee4[\u652f\u6301\u4e86](https://github.com/llvm/llvm-project/pull/73759)\\nLLVM IR \u7684 [`extractelement` \u64cd\u4f5c](https://llvm.org/docs/LangRef.html#extractelement-instruction)\uff08\u63d0\u53d6\u5143\u7d20\uff1a\u63d0\u53d6\u4f4d\u4e8e\u8f93\u5165\u5411\u91cf\u7684\u7ed9\u5b9a\u7d22\u5f15\u7684\u6807\u91cf\u5143\u7d20\uff09\u3002\\n\u8fd9\u5e94\u8be5\u662f\u6700\u65e9\u4e00\u6279\u7684 LLVM/Clang \u5411\u91cf\u652f\u6301\u4e86\uff0c\u671f\u5f85\u540e\u7eed\u7684\u66f4\u591a\u5185\u5bb9\u3002\\n\\n[SixWeining] \u8ba9 LoongArch Clang [\u652f\u6301\u4e86](https://github.com/llvm/llvm-project/pull/72514)\\n`-mcmodel=`\uff08\u4ee3\u7801\u6a21\u578b\uff09\u53c2\u6570\uff0c\u7528\u6cd5\u4e0e GCC \u7684\u8be5\u53c2\u6570\u76f8\u540c\u3002\\n\\n[heiher] \u7684 LLVM IR `code_model` \u65b0\u589e\u5de5\u4f5c[\u63a5\u8fd1\u5c3e\u58f0](https://github.com/llvm/llvm-project/pull/72077#issuecomment-1837468951)\uff1a\\n\u76ee\u524d\u6240\u6709\u4ee3\u7801\u5ba1\u67e5\u610f\u89c1\u90fd\u5904\u7406\u5b8c\u4e86\u3002\\n\\n[wangleiat]: https://github.com/wangleiat\\n[SixWeining]: https://github.com/SixWeining\\n[heiher]: https://github.com/heiher\\n\\n## \u6742\u95fb\u64ad\u62a5 {#assorted-news}\\n\\n### Firefox {#firefox}\\n\\n[\u5b89\u540c\u5f00\u6e90\u793e\u533a\uff08AOSC\uff09][aosc]\u6ce8\u91cd\u684c\u9762\u7528\u6237\u4f53\u9a8c\u4e0e\u751f\u4ea7\u529b\uff0c\u5df2\u7ecf\u5728\u5708\u5185\u5c0f\u6709\u540d\u6c14\u3002AOSC \u7684\u5f00\u53d1\u8005\u4eec\u672c\u6b21\u4e5f\u4e3a\u706b\u72d0\uff08Firefox\uff09\u6d4f\u89c8\u5668\u5728\\nLoongArch \u7684\u826f\u597d\u7528\u6237\u4f53\u9a8c\u5e2e\u4e86\u5927\u5fd9\u3002\\n\\n[\u5218\u5b50\u5174](https://github.com/liushuyu)\u6210\u529f\u9002\u914d\u4e86 WebRTC\uff0c\u5df2\u7ecf\u53ef\u4ee5\u7528 Discord \u8fde\u9ea6\u4e86\uff0c\u5176\u4ed6\u7c7b\u4f3c\u7f51\u7ad9\u8bf4\u4e0d\u5b9a\u4e5f\u80fd\u7528\uff1a\\n\\n![Firefox WebRTC on LoongArch](./firefox-webrtc.jpg)\\n\\n\u6b64\u5de5\u4f5c\u540e\u7eed\u4f1a\u63a8\u5165\u4e0a\u6e38\u3002\\n\\n[\u738b\u6c5f\u6d25](https://github.com/RedL0tus)[\u53bb\u9664\u4e86](https://phabricator.services.mozilla.com/D194320)\u89c6\u9891\u786c\u89e3\u63a5\u53e3\\nVA-API \u7684\u67b6\u6784\u653e\u884c\u540d\u5355\uff0c\u4f7f\u6240\u6709\u7684 Linux \u5e73\u53f0\u4e0d\u8bba\u67b6\u6784\uff0c\u53ea\u8981\u80fd\u6210\u529f\u52a0\u8f7d `libva`\uff0c\u5373\u53ef\u786c\u89e3\u89c6\u9891\u3002Firefox 122 \u5c06\u5305\u542b\u6b64\u6539\u8fdb\u3002\\n\\n### \u56fa\u4ef6 {#firmware}\\n\\n\u9f99\u82af\u56fa\u4ef6\u56e2\u961f[\u653e\u51fa\u4e86](https://github.com/loongson/Firmware/pull/79)\\n3A6000 \u8bc4\u4f30\u677f `EVB_XA61200` \u7684\u56fa\u4ef6\u66f4\u65b0\u3002\\n\u76f8\u6bd4\u51fa\u5382\u7248\u672c\uff0c\u4fee\u590d\u4e86\u5982\u8f83\u65b0\u578b\u53f7\u7684 AMD \u663e\u5361\u63d2\u4e0a\u5219\u65e0\u6cd5\u4eae\u673a\u3001DMI \u4fe1\u606f\u4e0d\u542b\u5185\u5b58\u5b9e\u9645\u8fd0\u884c\u9891\u7387\u7b49\u5927\u91cf\u95ee\u9898\uff0c\\n\u5efa\u8bae\u6709\u52a8\u624b\u80fd\u529b\u7684\u540c\u5b66\u8ddf\u8fdb\u66f4\u65b0\u3002\\n\u8bf7\u53bb[\u5b98\u65b9\u4ed3\u5e93\u9875\u9762](https://github.com/loongson/Firmware/tree/main/6000Series/PC/XA61200)\u67e5\u770b\u81ea\u5df1\u7684\u786c\u4ef6\u662f\u5426\u5339\u914d\uff0c\\n\u53ca\u4e0b\u8f7d\u66f4\u65b0\u6587\u4ef6\u3002\\n\u611f\u8c22 [Xi Ruoyao][xry111] \u63d0\u4f9b\u65b0\u95fb\u7ebf\u7d22\uff01\\n\\n[yetist](https://github.com/yetist) \u4e3a\u8457\u540d\u7684\u81ea\u52a8\u56fa\u4ef6\u5347\u7ea7\u5de5\u5177 fwupd \u7684 UEFI \u6a21\u5757 fwupd-efi\\n[\u589e\u52a0\u4e86](https://github.com/fwupd/fwupd-efi/pull/48) LoongArch \u652f\u6301\u3002\\n\u611f\u8c22 [Revy](https://github.com/RevySR) \u63d0\u4f9b\u65b0\u95fb\u7ebf\u7d22\uff01\\n\\n### OpenSSL {#openssl}\\n\\n\u4e0a\u671f[\u63d0\u5230\u7684](../2023-11-27-this-week-in-loongarch-26.md#assorted-news)\u522b\u540d\u5206\u6790\uff08aliasing analysis\uff09\\n\u95ee\u9898\u5df2\u88ab\u4fee\u590d\uff0c\u5e76\u5f80\u56de\u79fb\u690d\u5230 3.2.x \u5206\u652f\u4e86\uff1a\\n\u4ece OpenSSL 3.2.1 \u5f00\u59cb\uff0c\u5373\u4fbf\u542f\u7528 LTO\uff0c\u4e5f\u4e0d\u7528\u975e\u5f97\u624b\u5de5\u6307\u5b9a\u5e73\u53f0\u4e3a `linux64-loongarch64` \u4e86\u3002\\n\u611f\u8c22 [Xi Ruoyao][xry111] \u5b8c\u6210\u6b64\u5de5\u4f5c\u5e76\u63d0\u4f9b\u65b0\u95fb\u7ebf\u7d22\uff01\\n\\n[xry111]: https://github.com/xry111\\n\\n## \u5f20\u8d34\u680f {#bulletin}\\n\\n\u672c\u680f\u76ee\u53ef\u4f9b\u5f20\u8d34\u516c\u76ca\u6027\u8d28\u7684\u5404\u79cd\u4fe1\u606f\u3002\\n\\n* \u53cb\u60c5\u6269\u6563\uff1a[\u5b89\u540c\u5f00\u6e90\u793e\u533a\uff08AOSC\uff09][aosc]\u7684\u9f99\u67b6\u6784\u79fb\u690d\u4e3b\u7ebf\u5316\u5de5\u4f5c\u300c\u5408\u9f99\u300d\u4ecd\u5728\u5982\u706b\u5982\u837c\u8fdb\u884c\u4e2d\uff0c\\n \u6b64\u5de5\u4f5c\u5b8c\u6210\u540e\u9f99\u67b6\u6784\u5c06\u5347\u683c\u4e3a AOSC OS \u7684 Tier 1 \u67b6\u6784\u3002\\n \u6b22\u8fce\u540c\u5b66\u4eec\u8bd5\u7528\u3001\u53cd\u9988\uff0c\u4e5f\u6b22\u8fce\u6709\u5fd7\u4e4b\u58eb\u4e00\u540c\u52a0\u5165\uff08\u6c9f\u901a\u6e20\u9053\u8be6\u89c1 AOSC \u7f51\u7ad9\u76f8\u5173\u680f\u76ee\uff09\u3002\\n* \u672c\u5468\u62a5[\u6301\u7eed\u63a5\u53d7\u7f51\u53cb\u6295\u7a3f][call-for-submissions]\u3002\u6b22\u8fce\u6765\u4e0a\u6e38\u5750\u5750\uff01\\n\\n[aosc]: https://aosc.io\\n[call-for-submissions]: https://github.com/loongson-community/areweloongyet/issues/16"},{"id":"this-week-in-loongarch-26","metadata":{"permalink":"/newsletter/this-week-in-loongarch-26","editUrl":"https://github.com/loongson-community/areweloongyet/newsletter/2023-11-27-this-week-in-loongarch-26.md","source":"@site/newsletter/2023-11-27-this-week-in-loongarch-26.md","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 26 \u671f","description":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01","date":"2023-11-27T15:20:00.000Z","formattedDate":"2023\u5e7411\u670827\u65e5","tags":[{"label":"\u6bcf\u5468\u4e00\u9f99","permalink":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99"}],"readingTime":8.67,"hasTruncateMarker":true,"authors":[{"name":"WANG Xuerui","title":"\ud83d\udc32\u9f99\u95e8\u5ba2\u6808\u6253\u6742\u7684","url":"https://github.com/xen0n","imageURL":"https://github.com/xen0n.png","key":"xen0n"}],"frontMatter":{"slug":"this-week-in-loongarch-26","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 26 \u671f","authors":["xen0n"],"date":"2023-11-27T15:20:00.000Z","tags":["\u6bcf\u5468\u4e00\u9f99"]},"unlisted":false,"prevItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 27 \u671f","permalink":"/newsletter/this-week-in-loongarch-27"},"nextItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 25 \u671f","permalink":"/newsletter/this-week-in-loongarch-25"}},"content":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01\\n\u4e0a\u5468\u7684\u8fdb\u5c55\u4e3b\u8981\u6709 ELF psABI \u95ee\u9898\u7684\u6df1\u5165\u63a2\u8ba8\u3001Linux\uff0c\u4ee5\u53ca\u5de5\u5177\u94fe\u3002\\n\u8be6\u60c5\u70b9\u8fdb\u6765\u770b\uff01\\n\\n\x3c!-- truncate --\x3e\\n\\n\u5982\u65e0\u7279\u522b\u8bf4\u660e\uff0c\u6587\u4e2d\u63d0\u53ca\u7684\u65e5\u671f\u3001\u65f6\u95f4\u90fd\u4e3a\u5317\u4eac\u65f6\u95f4\uff08UTC+8\uff09\u3002\\n\\n## \u5148\u300c\u9a6c\u300d\u518d\u770b {#marked-projects}\\n\\n\u672c\u680f\u76ee\u7684\u5185\u5bb9\u5177\u6709\u4e00\u5b9a\u5ef6\u7eed\u6027\uff0c\u5c06\u6301\u7eed\u8ffd\u8e2a\u62a5\u9053 LoongArch® \u9886\u57df\u7684\u91cd\u8981\u6216\u957f\u671f\u9879\u76ee\uff08\u5751\uff09\u3002\\n\\n### Linux {#linux}\\n\\nWANG Rui \u672c\u5468\u72b6\u6001\u795e\u52c7\uff0c\u4e0d\u4ec5\u6253\u78e8\u4e86 `kexec` \u529f\u80fd\uff1a\\n\\n* [\u8df3\u8fc7\u4e86](https://lore.kernel.org/kexec/20231124085410.107080-1-wangrui@loongson.cn)\u4e00\u5904\u5e94\u8be5\u88ab\u8df3\u8fc7\u7684\u68c0\u67e5\uff1b\\n* [\u4fee\u590d\u4e86](https://lore.kernel.org/kexec/20231125065232.116319-1-wangrui@loongson.cn)\u65b0\u5185\u6838\u7684\u52a0\u8f7d\u5730\u5740\uff1b\\n* [\u62ac\u9ad8\u4e86](https://lore.kernel.org/kexec/20231125072643.116681-1-wangrui@loongson.cn) LZMA \u89e3\u538b\u7f29\u5668\u7684\u5185\u5b58\u9650\u5236\u3002\\n\\n`kexec` \u662f\u4e00\u79cd\u5185\u6838\u529f\u80fd\uff1a\u52a0\u8f7d\u4e00\u4e2a\u65b0\u5185\u6838\u4ee5\u66ff\u6362\u5f53\u524d\u8fd0\u884c\u7684\u5185\u6838\uff0c\u76f8\u5f53\u4e8e\u8df3\u8fc7\u786c\u4ef6\u3001\u56fa\u4ef6\u521d\u59cb\u5316\u8fc7\u7a0b\u7684\u91cd\u542f\u64cd\u4f5c\u3002\\n\u7531\u4e8e\u8fd9\u6837\u64cd\u4f5c\u4e0b\u6765\u7684\u786c\u4ef6\u72b6\u6001\u4e0e\u6b63\u5e38\u91cd\u542f\u7684\u590d\u4f4d\u72b6\u6001\u4e0d\u4e00\u5b9a\u76f8\u540c\uff0c\u56e0\u800c\u4e0d\u662f\u6240\u6709\u786c\u4ef6\u914d\u7f6e\u90fd\u80fd\u5728 `kexec` \u4e4b\u540e\u4ecd\u7136\u6b63\u5e38\u5de5\u4f5c\uff1b\\n\u4f46\u5bf9\u90a3\u4e9b\u80fd\u591f\u901a\u8fc7\u8003\u9a8c\u7684\u786c\u4ef6\uff0c`kexec` \u4fbf\u80fd\u6781\u5927\u7f29\u77ed\u7cfb\u7edf\u91cd\u542f\u6240\u5bfc\u81f4\u7684\u4e0b\u7ebf\u65f6\u95f4\u4e86\u3002\\n\\n\u800c\u4e14\u8fd8[\u4fee\u590d\u4e86](https://lore.kernel.org/loongarch/20231124035534.70432-1-wangrui@loongson.cn/)\\nLLD \u94fe\u63a5\u7684 PIE \u538b\u7f29\u5185\u6838\u4e0d\u80fd\u5f15\u5bfc\u7684\u95ee\u9898\uff0c[\u66f4\u65b0\u4e86](https://github.com/ClangBuiltLinux/linux/issues/1884)\\nClangBuiltLinux \u7684\u6a21\u5757\u652f\u6301\u5de5\u4f5c\u8fdb\u5ea6\uff0c\\n\u5e76\u4e3a LoongArch Linux \u7684 Rust \u652f\u6301[\u5efa\u7acb\u4e86](https://github.com/loongson-community/discussions/issues/15)\u8ddf\u8e2a\u5de5\u5355\u3002\\n\\n\u611f\u8c22 :ta: \u81ea\u5df1\u521b\u9020\u5e76\u63d0\u4f9b\u65b0\u95fb\u7ebf\u7d22\uff01\\n\\nXi Ruoyao [\u6e05\u7406\u4e86](https://lore.kernel.org/loongarch/20231126121727.47303-2-xry111@xry111.site/)\\n`rdtime.d` \u5305\u88c5\u51fd\u6570\u7684\u4e00\u5904\u591a\u4f59\u5bc4\u5b58\u5668\u4f7f\u7528\u3002\\n\\nHengqi Chen [\u6539\u53d8\u4e86](https://lore.kernel.org/loongarch/20231121070209.210934-1-hengqi.chen@gmail.com/)\u7cfb\u7edf\u8c03\u7528\u53f7\u7684\u5b58\u50a8\u65b9\u5f0f\uff0c\\n\u5c06\u5176\u585e\u5165 `struct thread_info`\uff0c\u636e\u8bf4\u53ef\u89e3\u51b3\u4e00\u4e9b\u8c03\u8bd5\u5de5\u5177\u6253\u4e86\u8ddf\u8e2a\u70b9\u5374\u4e0d\u89e6\u53d1\u7684\u95ee\u9898\u3002\\n\u8fd8[\u4fee\u590d\u4e86](https://lore.kernel.org/loongarch/20231124014822.7894-1-hengqi.chen@gmail.com/)\u6253\u5370\u6709\u4e9b\u6808\u4e0a\u8fc7\u7a0b\u8c03\u7528\u8bb0\u5f55\u4f1a\u6b7b\u5faa\u73af\u7684\u95ee\u9898\u3002\\n\\nBinbin Zhou [\u4fee\u590d\u4e86](https://lore.kernel.org/loongarch/cover.1700817227.git.zhoubinbin@loongson.cn/)\u9f99\u82af 2 \u53f7\u6e29\u5ea6\u5b50\u7cfb\u7edf\u9a71\u52a8 `loongson2_thermal` \u7684\u4e24\u5904\u5c0f\u95ee\u9898\u3002\\n\\n### \u5de5\u5177\u94fe {#toolchain}\\n\\n#### ABI {#abi}\\n\\n\u8fd1\u65e5\u6765\uff0c\u793e\u533a\u540c\u5b66\u4eec\u88ab LoongArch ELF psABI v2.00 \u5f15\u5165\u7684 64 \u4f4d `PCALA` \u91cd\u5b9a\u4f4d\u8ba1\u7b97\u65b9\u5f0f[\u641e\u5f97\u7126\u5934\u70c2\u989d](https://github.com/loongson-community/discussions/issues/17)\u3002\\n\\n\u8fd9\u8981\u4ece[\u4e00\u4e2a\u770b\u4f3c\u5e73\u5e38\u7684\u5ba2\u6237\u53cd\u9988\u95ee\u9898\u4fee\u590d](https://github.com/llvm/llvm-project/pull/71907)\u8bf4\u8d77\u3002\\n\u5f00\u59cb\u90fd\u4ee5\u4e3a\u53ea\u662f\u5e73\u5e38\u5bb9\u6613\u5ffd\u89c6\u7684\u6ea2\u51fa\u95ee\u9898\uff0c\u4fee\u6389\u5c31\u597d\u4e86\uff0c\u6b8a\u4e0d\u77e5\u80cc\u540e\u9690\u85cf\u7684\u662f\u5f53\u524d\u5904\u7406\u65b9\u5f0f\u7684\u6839\u672c\u7f3a\u9677\uff1a\\n\u7531\u4e8e\u9f99\u67b6\u6784\u4e0a\u62fc\u63a5\u4e00\u4e2a 64 \u4f4d PC-\u76f8\u5bf9\u5730\u5740\u7684\u56db\u6761\u6307\u4ee4\u4e0d\u9700\u8981\u8fde\u7eed\uff0c\u5bf9\u5e94\u7684\u56db\u6761\u91cd\u5b9a\u4f4d\u8bb0\u5f55\u4e4b\u95f4\u4e5f\u6ca1\u6709\u4efb\u4f55\u5173\u8054\uff0c\\n\u56e0\u6b64\u5f53\u5b83\u4eec\u8de8\u4e86 4KiB\uff08\u5bf9\u5e94 12 \u4f4d\u7acb\u5373\u6570\uff09\u8fb9\u754c\u65f6\uff0c\u5c06\u5bfc\u81f4\u9519\u8bef\u7684\u91cd\u5b9a\u4f4d\u6548\u679c\u3002\\n\\n\u8fd9\u662f\u7531\u4e8e\uff0c\u53ea\u6709\u4e00\u6761\u6307\u4ee4\u8d1f\u8d23\u8d21\u732e\u300cPC-\u76f8\u5bf9\u300d\u4e2d\u7684\u300cPC\u300d\u90e8\u5206\uff0c\u90a3\u4e48\u8d1f\u8d23\u8d21\u732e\u300c\u76f8\u5bf9\u300d\u90e8\u5206\u7684\u53e6\u5916\u4e09\u6761\u6307\u4ee4\uff0c\\n\u90fd\u5e94\u8be5\u300c\u76f8\u5bf9\u300d\u4e8e**\u90a3\u6761\u8d21\u732e\u4e86 PC \u7684\u6307\u4ee4**\u2014\u2014\u8fd9\u5728\u5f53\u524d\u7248\u672c\u7684 LoongArch ELF psABI \u4e2d\uff0c\u65e0\u6cd5\u505a\u5230\uff01\\n\u6bcf\u6761\u6307\u4ee4\u9644\u5c5e\u7684\u91cd\u5b9a\u4f4d\u8bb0\u5f55\uff0c\u90fd\u6307\u5411\u90a3\u4e2a\u76ee\u6807\u7b26\u53f7\uff0c\u800c\u76f8\u4e92\u4e4b\u95f4\u4e0d\u5b58\u5728\u5173\u8054\u3002\\n\u56e0\u6b64\u53ea\u8981\u56db\u6761\u6307\u4ee4\u4e0d\u5c5e\u4e8e\u540c\u4e00\u6bb5 4KiB \u7a7a\u95f4\uff0c\u5b9e\u9645\u4f1a\u88ab\u6267\u884c\u7684\u300c\u76f8\u5bf9\u300d\u90e8\u5206\u5c31\u4f1a\u504f\u5dee\uff1a\\n\u76ee\u524d\u53ea\u80fd\u4f7f\u7528\u6bcf\u6761\u6307\u4ee4\u81ea\u5df1\u7684 PC \u6765\u8ba1\u7b97\u91cd\u5b9a\u4f4d\u3002\\n\\n\u76ee\u524d\u8ba8\u8bba\u4f3c\u4e4e\u5b89\u9759\u4e86\u4e0b\u6765\uff1a\u5927\u6982\u7387\u8981\u7ed9 LoongArch ELF psABI \u518d\u6253\u4e00\u6b21\u8865\u4e01\uff0c\\n\u4ee5\u7c7b\u4f3c RISC-V \u7684\u505a\u6cd5\u4e3a\u95ee\u9898\u91cd\u5b9a\u4f4d\u8bb0\u5f55\u8865\u5145\u5173\u952e\u4fe1\u606f\u3002\\n\u5f53\u7136\uff0c\u8fd9\u6709\u5f88\u591a\u5177\u4f53\u5b9e\u73b0\u65b9\u5f0f\uff0c\u5404\u6709\u5229\u5f0a\uff1b\u7814\u7a76\u4e5f\u5c06\u7ee7\u7eed\uff0c\u6709\u5174\u8da3\u7684\u540c\u5b66\u53ef\u4ee5\u53bb\u4e0a\u6e38\u56f4\u89c2\u3001\u53c2\u4e0e\u3002\\n\\n\u611f\u8c22 Xi Ruoyao \u63d0\u4f9b\u65b0\u95fb\u7ebf\u7d22\uff01\\n\\n#### GCC {#gcc}\\n\\n\u7531\u4e8e GCC 14 \u7684\u65b0\u529f\u80fd\u7279\u6027\u5f00\u53d1\u9636\u6bb5\u5df2\u7ecf\u7ed3\u675f\uff0cXi Ruoyao [\u53d1\u8d77\u4e86](https://github.com/loongson-community/discussions/issues/16)\u5728 GCC 15 \u5b9e\u73b0 LoongArch 16 \u5b57\u8282\u5bbd\u5ea6\u539f\u5b50\u64cd\u4f5c\u7684\u8ba8\u8bba\u3002\\n\\nXi Ruoyao [\u4fee\u590d\u4e86](https://gcc.gnu.org/r14-5634)\u9f99\u67b6\u6784 stage1 \u4ea4\u53c9\u7f16\u8bd1\u5668\u7684\u6784\u5efa\u5931\u8d25\u95ee\u9898\uff1a\\n\u5728\u76ee\u6807 libc \u53ef\u7528\u4e4b\u524d\uff0c\u6ca1\u6709\u529e\u6cd5\u4f7f\u7528 ``\uff0c\u56e0\u6b64\u5728\u975e\u76ee\u6807\u67b6\u6784\u7684\u5e93\u4ee3\u7801\u91cc\u4e5f\u5e94\u8be5\u907f\u514d\u4f7f\u7528\u3002\\n\\nXi Ruoyao \u8fd8[\u4fee\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-November/638067.html)\u4e0e\\nLoongArch \u4e0d\u592a\u76f4\u63a5\u76f8\u5173\u7684\u4e00\u5904\u6d6e\u70b9\u4f18\u5316\u9519\u8bef\u3002\\n\\n\u7b14\u8005\u4e0a\u5468[\u6392\u67e5\u51fa\u4e86](https://github.com/loongson-community/discussions/issues/19)\\nGCC 14 \u6784\u5efa `systemd-boot` UKI stub \u4e0d\u80fd\u6b63\u5e38\u5f15\u5bfc\u5185\u6838\u7684\u95ee\u9898\u539f\u56e0\uff1a\\n\u662f\u5728\u7f16\u8bd1\u65f6\u5e26\u4e86 `-march=la464` \u6216\u5176\u4ed6\u8868\u793a\u6709 SIMD \u6269\u5c55\u7528\u7684\u7f16\u8bd1\u53c2\u6570\u65f6\uff0cGCC \u4fbf\u5728 UEFI \u4ee3\u7801\u91cc\u4f7f\u7528\u4e86 SIMD \u6307\u4ee4\uff0c\\n\u800c\u8fd9\u65f6 SIMD \u5355\u5143\u672a\u4e3a\u66f4\u65e9\u9636\u6bb5\u8fd0\u884c\u7684\u56fa\u4ef6\u4ee3\u7801\u6240\u542f\u7528\uff0c\u5bfc\u81f4\u6b7b\u6389\u3002\\n\u5728\u5c1d\u8bd5\u89e3\u51b3\u95ee\u9898\u8fc7\u7a0b\u4e2d\uff0c\u53d1\u73b0\u52a0\u4e86 `-mabi=lp64s` \u4f1a\u5bfc\u81f4\u6784\u5efa\u5931\u8d25\uff0c\u56e0\u4e3a\u60f3\u5f15\u7528\u8f6f\u6d6e\u70b9\u914d\u7f6e\u7684 glibc \u5934\u800c\u4e0d\u80fd\uff1b\\n\u6b64\u65f6 Xi Ruoyao \u53d1\u73b0 GCC \u7684 `` \u603b\u662f\u4f1a\u5f15\u7528 libc \u7684\u540c\u540d\u5934\uff0c\u800c\u5728 `-ffreestanding`\\n\u60c5\u5f62\u4e0b\u8fd9\u662f\u53ef\u4ee5\u907f\u514d\u7684\uff0c\u56e0\u800c[\u53d1\u8d77\u4e86](https://gcc.gnu.org/PR112699)\u8be5\u63d0\u8bae\u3002\\n\\n\u672c\u671f\u7684\u5927\u591a\u6570 GCC \u65b0\u95fb\u90fd\u662f Xi Ruoyao \u5e2e\u5fd9\u6574\u7406\uff08\u4ee5\u53ca\u81ea\u5df1\u5236\u9020\uff09\u7684\uff0c\u8ba9\u6211\u4eec\u611f\u8c22 :ta: \u7684\u5949\u732e\uff01\\n\\n#### Go {#golang}\\n\\n\u622a\u81f3 11 \u6708 22 \u65e5\uff0cGo 1.22 \u5f00\u53d1\u5468\u671f\u5df2\u8fdb\u5165\u529f\u80fd\u51bb\u7ed3\u9636\u6bb5\u3002Go 1.22 \u7684\u9f99\u67b6\u6784\u76f8\u5173\u53d8\u66f4\u6709\uff1a\\n\\n* \u5bc4\u5b58\u5668\u4f20\u53c2 ABI\uff08regabi\uff09\u652f\u6301\uff1b\\n* \u63d2\u4ef6\u6784\u5efa\u6a21\u5f0f\uff08`buildmode=plugin`\uff09\u652f\u6301\u3002\\n\\n\u8fd9\u4e2a\u7248\u672c\u7684 LoongArch regabi \u652f\u6301\u5904\u4e8e\u5b9e\u9a8c\u6027\u72b6\u6001\uff0c\u4e0d\u4f1a\u9ed8\u8ba4\u5f00\u542f\uff0c\u4f46\u5b9e\u9645\u4e0a\u8be5\u529f\u80fd\u5df2\u7a33\u5b9a\u8fd0\u884c\u4e00\u6bb5\u65f6\u95f4\u4e86\u3002\\n\u5f85 Go 1.22 \u6b63\u5f0f\u53d1\u5e03\u65f6\uff0c\u8bfb\u8005\u53ef\u53c2\u8003\u5b98\u65b9\u7684\u53d1\u5e03\u8bf4\u660e\u6587\u6863\u4ee5\u4e86\u89e3\u5177\u4f53\u8be5\u600e\u4e48\u7528\uff0c\u5e2e\u5fd9\u6d4b\u8bd5\u3002\\n\\nMeidan Li \u7b49\u4eba\u8fd1\u65e5\u4e5f[\u63d0\u4ea4\u4e86](https://go.dev/cl/535616) cgo \u7684\u5185\u90e8\u94fe\u63a5\u652f\u6301\uff0c\\n\u94fe\u63a5\u542b\u6709 cgo \u7684 Go \u7a0b\u5e8f\u65f6\u5c31\u4e0d\u518d\u9700\u8981\u672c\u5730\u5b58\u5728\u4e00\u5957 C \u4ea4\u53c9\u5de5\u5177\u94fe\u4e86\u3002\\n\u8fd9\u5bf9\u4e0d\u5199 C/C++ \u4f46\u4f1a\u5411 LoongArch \u4ea4\u53c9\u7f16\u8bd1\u7684\u4eba\u58eb\u4f1a\u66f4\u53cb\u597d\u3002\\n\\n## \u6742\u95fb\u64ad\u62a5 {#assorted-news}\\n\\nXi Ruoyao \u4fee\u4e86\u4e00\u5806 OpenSSL bugs\uff1a\\n\\n* [\u4fee\u590d\u4e86](https://github.com/openssl/openssl/pull/22812) `linux64-loongarch64` \u5e73\u53f0\u88ab\u81ea\u52a8\u63a2\u6d4b\u65f6\uff0c\u5f00\u542f LTO \u6784\u5efa\u4f1a\u5931\u8d25\u7684\u95ee\u9898\u3002\\n\\n \u6b64\u4fee\u590d\u4e0d\u4f1a\u88ab\u79fb\u690d\u56de OpenSSL 3.2.x \u7248\u672c\uff0c\u56e0\u6b64\u5982\u679c\u60a8\u8981\u5f00\u7740 LTO \u6784\u5efa\u8fd9\u4e9b\u7248\u672c\u7684 OpenSSL\uff0c\u8bf7\u624b\u5de5\u6307\u5b9a\u5e73\u53f0\u4e3a `linux64-loongarch64`\u3002\\n\\n* [\u5c1d\u8bd5\u89e3\u51b3\u4e86](https://github.com/openssl/openssl/pull/22816)\u4e0a\u4e2a\u95ee\u9898\u7684\u6839\u56e0\uff1a\u522b\u540d\u5206\u6790\uff08aliasing analysis\uff09\u4e0d\u5f00\u5fc3\u4e86\u3002\\n* [\u4fee\u590d\u4e86](https://github.com/openssl/openssl/pull/22817) LoongArch64 \u6c47\u7f16\u4f18\u5316\u5305\u4e2d\u7684 ChaCha20 \u7b97\u6cd5\u672a\u9075\u5b88 ABI\uff08\u8be5\u4fdd\u5b58\u7684\u6d6e\u70b9\u5bc4\u5b58\u5668\u6ca1\u4fdd\u5b58\uff09\u7684\u95ee\u9898\u3002\\n* \u7528 `rdtimel.w` \u6307\u4ee4[\u771f\u6b63\u5b9e\u73b0\u4e86](https://github.com/openssl/openssl/pull/22823) `rdtsc` \u6307\u4ee4\u7684\u6a21\u62df\uff08\u5148\u524d\u76f4\u63a5\u8fd4\u56de 0 \u4e86\uff09\u3002\\n\\n\u611f\u8c22 :ta: \u81ea\u5df1\u521b\u9020\u5e76\u63d0\u4f9b\u65b0\u95fb\u7ebf\u7d22\uff01\\n\\n## \u5f20\u8d34\u680f {#bulletin}\\n\\n\u672c\u680f\u76ee\u53ef\u4f9b\u5f20\u8d34\u516c\u76ca\u6027\u8d28\u7684\u5404\u79cd\u4fe1\u606f\u3002\\n\\n* \u53cb\u60c5\u6269\u6563\uff1a[\u5b89\u540c\u5f00\u6e90\u793e\u533a\uff08AOSC\uff09][aosc]\u7684\u9f99\u67b6\u6784\u79fb\u690d\u4e3b\u7ebf\u5316\u5de5\u4f5c\u300c\u5408\u9f99\u300d\u4ecd\u5728\u5982\u706b\u5982\u837c\u8fdb\u884c\u4e2d\uff0c\\n \u6b64\u5de5\u4f5c\u5b8c\u6210\u540e\u9f99\u67b6\u6784\u5c06\u5347\u683c\u4e3a AOSC OS \u7684 Tier 1 \u67b6\u6784\u3002\\n \u6b22\u8fce\u540c\u5b66\u4eec\u8bd5\u7528\u3001\u53cd\u9988\uff0c\u4e5f\u6b22\u8fce\u6709\u5fd7\u4e4b\u58eb\u4e00\u540c\u52a0\u5165\uff08\u6c9f\u901a\u6e20\u9053\u8be6\u89c1 AOSC \u7f51\u7ad9\u76f8\u5173\u680f\u76ee\uff09\u3002\\n* \u672c\u5468\u62a5[\u6301\u7eed\u63a5\u53d7\u7f51\u53cb\u6295\u7a3f][call-for-submissions]\u3002\u6b22\u8fce\u6765\u4e0a\u6e38\u5750\u5750\uff01\\n\\n[aosc]: https://aosc.io\\n[call-for-submissions]: https://github.com/loongson-community/areweloongyet/issues/16"},{"id":"this-week-in-loongarch-25","metadata":{"permalink":"/newsletter/this-week-in-loongarch-25","editUrl":"https://github.com/loongson-community/areweloongyet/newsletter/2023-11-20-this-week-in-loongarch-25.md","source":"@site/newsletter/2023-11-20-this-week-in-loongarch-25.md","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 25 \u671f","description":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01","date":"2023-11-20T10:50:00.000Z","formattedDate":"2023\u5e7411\u670820\u65e5","tags":[{"label":"\u6bcf\u5468\u4e00\u9f99","permalink":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99"}],"readingTime":11.515,"hasTruncateMarker":true,"authors":[{"name":"WANG Xuerui","title":"\ud83d\udc32\u9f99\u95e8\u5ba2\u6808\u6253\u6742\u7684","url":"https://github.com/xen0n","imageURL":"https://github.com/xen0n.png","key":"xen0n"}],"frontMatter":{"slug":"this-week-in-loongarch-25","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 25 \u671f","authors":["xen0n"],"date":"2023-11-20T10:50:00.000Z","tags":["\u6bcf\u5468\u4e00\u9f99"]},"unlisted":false,"prevItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 26 \u671f","permalink":"/newsletter/this-week-in-loongarch-26"},"nextItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 24 \u671f","permalink":"/newsletter/this-week-in-loongarch-24"}},"content":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01\\n\u4e0a\u5468\u7684\u8fdb\u5c55\u4e3b\u8981\u6709 Linux \u548c\u5de5\u5177\u94fe\uff08\u6709\u5f88\u591a\u6210\u679c\uff09\u3002\\n\u8be6\u60c5\u70b9\u8fdb\u6765\u770b\uff01\\n\\n\x3c!-- truncate --\x3e\\n\\n\u5982\u65e0\u7279\u522b\u8bf4\u660e\uff0c\u6587\u4e2d\u63d0\u53ca\u7684\u65e5\u671f\u3001\u65f6\u95f4\u90fd\u4e3a\u5317\u4eac\u65f6\u95f4\uff08UTC+8\uff09\u3002\\n\\n## \u5148\u300c\u9a6c\u300d\u518d\u770b\\n\\n\u672c\u680f\u76ee\u7684\u5185\u5bb9\u5177\u6709\u4e00\u5b9a\u5ef6\u7eed\u6027\uff0c\u5c06\u6301\u7eed\u8ffd\u8e2a\u62a5\u9053 LoongArch® \u9886\u57df\u7684\u91cd\u8981\u6216\u957f\u671f\u9879\u76ee\uff08\u5751\uff09\u3002\\n\\n### Linux\\n\\n11 \u6708 19 \u65e5\uff0c\u5185\u6838\u6784\u5efa\u7cfb\u7edf\u7ef4\u62a4\u8005 Masahiro Yamada [\u5e2e\u5fd9\u6dfb\u52a0\u4e86](https://lore.kernel.org/loongarch/20231119053448.2367725-1-masahiroy@kernel.org/)\u9f99\u67b6\u6784\\n`vmlinuz.efi` \u4e0e `vmlinux.efi` \u4e4b\u95f4\u9057\u6f0f\u7684\u4f9d\u8d56\u5173\u7cfb\u3002\\n\u8fd9\u4f7f\u5f97\u5e76\u884c\u6784\u5efa\u66f4\u53ef\u9760\uff1a\u4e4b\u524d\u6709\u4f4e\u6982\u7387\u4f1a\u5728\u8fd9\u4e2a\u9636\u6bb5\u5931\u8d25\u3002\\n\\n11 \u6708 18 \u65e5\uff0c\u793e\u533a\u7528\u6237 Haowu Ge \u5728\u7f16\u8bd1 OpenZFS \u65f6\uff0c[\u53d1\u73b0](https://github.com/chenhuacai/linux/issues/3)\u591a\u51fa\u4e86\u5bf9\u4fe9 GPL-only \u7b26\u53f7\u7684\u4f9d\u8d56\u3002\\n\u56e0\u4e3a\u8fd9\u4fe9\u7b26\u53f7\u662f\u7528\u6765\u5b9e\u73b0 `virt_to_page` \u8fd9\u4e00\u9884\u5904\u7406\u5668\u5b8f\u7684\uff0c\u800c\u539f\u5148\u5bf9\u6b64\u5b8f\u7684\u4f7f\u7528\u5e76\u4e0d\u6d89\u53ca GPL\uff0c\\n\u6240\u4ee5\u5c06 GPL \u9700\u6c42\u53bb\u9664\u5927\u6982\u4e5f\u5408\u60c5\u5408\u7406\uff1bHuacai Chen \u7b2c\u4e8c\u5929\u4fbf[\u8fd9\u4e48\u505a\u4e86](https://lore.kernel.org/loongarch/20231119023317.3359647-1-chenhuacai@loongson.cn/)\u3002\\n\\nWANG Rui \u5728\u6301\u7eed\u63a8\u8fdb ClangBuiltLinux \u5de5\u4f5c\uff1a11 \u6708 15 \u65e5\u9884\u9632\u6027\u5730[\u589e\u52a0\u4e86](https://lore.kernel.org/loongarch/20231115132137.178523-1-wangrui@loongson.cn/)\u7f16\u8bd1\u9009\u9879\uff0c16\\n\u65e5\u53c8[\u6539\u53d8\u4e86](https://lore.kernel.org/loongarch/20231116130331.241395-1-wangrui@loongson.cn/)\u7edd\u5bf9\u91cd\u5b9a\u4f4d\u7684\u8bb0\u5f55\u65b9\u5f0f\u4ee5\u5141\u8bb8\u7528\\nLLVM/Clang \u7f16\u8bd1\u53ef\u91cd\u5b9a\u4f4d\u5185\u6838\u3002\\n\\n11 \u6708 15 \u65e5\uff0cHuacai Chen \u53c2\u7167 RISC-V \u505a\u6cd5[\u6539\u53d8\u4e86](https://lore.kernel.org/loongarch/20231115141530.2534778-1-chenhuacai@loongson.cn/)\u5185\u6838\u53c2\u6570\\n`nokaslr` \u7684\u5904\u7406\u65b9\u5f0f\uff0c\u4f7f\u5176\u4e0d\u4f1a\u88ab\u900f\u4f20\u81f3 init \u8fdb\u7a0b\u7684\u547d\u4ee4\u884c\u53c2\u6570\u3002\\n\\n\u540c\u4e00\u5929\uff0cHuacai Chen \u8fd8[\u4fee\u590d\u4e86](https://lore.kernel.org/loongarch/20231115090735.2404866-1-chenhuacai@loongson.cn/)\\nRandy Dunlap \u524d\u4e00\u5929[\u81ea\u52a8\u5316\u53d1\u73b0\u7684](https://lore.kernel.org/loongarch/960bef74-ed09-4b6f-8ae8-b3effef6914f@infradead.org/)\\nLoongArch KVM \u6784\u5efa\u5931\u8d25\u3002\\n\u8fd9\u662f\u4e00\u5904\u672a\u8ddf\u8fdb\u7684 API \u53d8\u66f4\uff1b\u4f30\u8ba1\u662f\u539f\u4f5c\u8005[\u91cd\u6784](https://lore.kernel.org/all/20231105163040.14904-4-pbonzini@redhat.com/)\u65f6\uff0c\\n\u7531\u4e8e LoongArch KVM \u4ee3\u7801\u5f53\u65f6\u5c1a\u672a\u4e3b\u7ebf\u5316\uff0c\u56e0\u800c\u6ca1\u770b\u5230\u3001\u6539\u5230\u3002\\n\\n11 \u6708 14 \u65e5\uff0cXi Ruoyao \u5728\u65e5\u5e38\u7684\u5de5\u5177\u94fe\u7ef4\u62a4\u4e2d\uff0c\u53d1\u73b0\u5347\u7ea7\u5230 Linux v6.7-rc1 \u4e4b\u540e\uff0c\u51e0\u6761 glibc\\n\u591a\u7ebf\u7a0b\u540c\u6b65\u7684\u6d4b\u8bd5\u7528\u4f8b\u5f00\u59cb\u8d85\u65f6\u4e86\uff0c\u800c x86 \u5c45\u7136\u4e5f\u5b58\u5728\u8be5\u95ee\u9898\uff01\\n\u9042\u679c\u65ad[\u62a5\u544a\u4e86](https://lore.kernel.org/all/d69d50445284a5e0d98a64862877c1e6ec22a9a8.camel@xry111.site/T/#u)\u3002\\n\u56e0\u4e3a\u5f15\u8d77\u95ee\u9898\u7684\u63d0\u4ea4\u662f\u4e2a\u5e38\u89c4\u91cd\u6784\uff0c\u53ea\u662f\u6539\u53d8\u4e86\u51e0\u4e2a\u6807\u5fd7\u4f4d\u7684\u5177\u4f53\u53d6\u503c\uff0c\u6240\u4ee5\u4f5c\u8005 Peter Zijlstra \u4e5f\u767e\u601d\u4e0d\u5f97\u5176\u89e3\u3002\\n\u76f4\u5230 Florian Weimer \u6307\u51fa `kernel/futex/core.c` \u6709\u51e0\u5904\u4f20\u53c2\u76f4\u63a5\u5199\u4e86 `1` \u800c\u975e `FLAGS_SHARED`\uff0c\\n\u624d\u604d\u7136\u5927\u609f\uff1b\\n\u4e8e\u662f\u6b64\u95ee\u9898\u5728 v6.7-rc2 \u5df2[\u5f97\u5230\u4fee\u590d](https://github.com/torvalds/linux/commit/c9bd1568d5462f4108417518ce1af7b924acfb6f)\u3002\\n\u611f\u8c22 Xi Ruoyao \u7684\u65b0\u95fb\u7ebf\u7d22\u4ee5\u53ca :ta: \u672c\u6b21\u4e3a Linux \u7a33\u5b9a\u6027\u4f5c\u51fa\u7684\u8d21\u732e\uff01\\n\\n\\n### \u5de5\u5177\u94fe\\n\\n#### binutils\\n\\n11 \u6708 14 \u65e5\uff0cXi Ruoyao \u60f3\u7ed9 binutils \u5728\u9f99\u67b6\u6784\u4e0a\u589e\u52a0 `DT_RELR` \u652f\u6301\uff0c\u8fd9\u6837\u53ef\u4ee5\u6709\u6548\u7f29\u5c0f\u4e00\u4e9b\u5927\u8f6f\u4ef6\u7684\u4f53\u79ef\uff1b\\n\u4f46 binutils \u7684\u6e90\u7801\u5f88\u4e0d\u76f4\u89c2\uff0c\u4e0d\u597d\u6539\uff0c\u4e8e\u662f\\n:ta: [\u5efa\u7acb\u4e86](https://github.com/loongson-community/discussions/issues/12)\u534f\u8c03\u5de5\u5355\u3002\\n\u968f\u540e MaskRay \u770b\u5230\u4e86\uff0c\u53cb\u60c5\u6307\u4e86\u6761\u8def\u3002\\n\\n#### GCC\\n\\n11 \u6708 19 \u65e5\uff0cXi Ruoyao [\u4fee\u590d\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-November/637239.html)\\nLSX \u6d6e\u70b9\u5411\u91cf shuffle \u6700\u7ec8\u751f\u6210\u4ee3\u7801\u5176\u5dee\u65e0\u6bd4\u7684\u95ee\u9898\u3002\\n\\n11 \u6708 17 \u65e5\uff0c\u5728\u6392\u67e5\u4e00\u4e2a[\u6709\u6982\u7387\u53d1\u751f\u7684\u95ee\u9898](https://github.com/loongson-community/discussions/issues/7)\u65f6\uff0cXi Ruoyao\\n[\u53d1\u73b0](https://gcc.gnu.org/PR112578) GCC \u5728\u5411\u91cf\u5316 LoongArch \u6d6e\u70b9\u820d\u5165\u64cd\u4f5c\u65f6\uff0c\u5bf9\u6d6e\u70b9\u5f02\u5e38\u7684\u5904\u7406\u6709\u8bef\u3002\\n\u622a\u81f3\u53d1\u7a3f\u65f6\uff0c[\u8fed\u4ee3\u5230\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-November/637316.html)\u7b2c\u4e09\u7248\u4fee\u590d\u3002\\n\u8fd9\u4e2a\u4ee3\u7801\u751f\u6210\u95ee\u9898\u8ddf\u539f\u5148\u8981\u6392\u67e5\u7684\u95ee\u9898\u65e0\u5173\uff1b\u8fd8\u5f97\u63a5\u7740\u67e5\uff01\\n\\n\u540c\u4e00\u5929\u51cc\u6668\uff0cKevin Lee \u5728 RISC-V \u4e0a[\u53d1\u73b0\u4e86](https://gcc.gnu.org/PR107723)\u7c7b\u4f3c\u7684\u6d6e\u70b9\u5f02\u5e38\u5904\u7406\u95ee\u9898\uff1a\\n\u5373\u4fbf\u52a0\u4e86 `-fno-fp-int-builtin-inexact` \u9009\u9879\uff0c`lround`\u3001`ceil` \u4e0e `floor` \u7b49\u64cd\u4f5c\u8fd8\u662f\u4f1a\u4ea7\u751f\u53ef\u80fd\u629b\u5f02\u5e38\u7684\u6307\u4ee4\u3002\\n\u968f\u540e\u4eba\u4eec\u53d1\u73b0 x86_64\u3001AArch64 \u548c LoongArch \u4e0a\u90fd\u5b58\u5728\u8be5\u95ee\u9898\uff0c\u56e0\u4e3a\u67b6\u6784\u65e0\u5173\u90e8\u5206\u5df2\u7ecf\u628a\u4ee3\u7801\u300c\u4f18\u5316\u300d\u6210\u4e86\u9519\u8bef\u5f62\u72b6\u3002\\n\u8fd9[\u63d0\u9192\u4e86](https://gcc.gnu.org/PR107723) Andrew Pinski \u8981\u5b8c\u5584\u4e0b\u8fd9\u90e8\u5206\u6587\u6863\u3002\\n\\n11 \u6708 16 \u65e5\uff0cXi Ruoyao [\u5b8c\u6210\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-November/636795.html)\u4e00\u7248\\nLA664 \u65b0\u589e\u7279\u6027\u7684 GCC \u9002\u914d\uff0c\u53ef\u4ee5\u7528 `-march=la664` \u4e86\uff0c\\n\u4e5f\u7ed9 `-march=native` \u52a0\u4e86\u76f8\u5e94\u5904\u7406\u3002\\n\u4e0d\u5de7\u9f99\u82af\u4e5f\u505a\u4e86\u540c\u6837\u7684\u4e8b\uff0c\u649e\u8f66\u4e86\uff1bLulu Cheng\\n\u7b2c\u4e8c\u5929[\u53d1\u4e86\u51fa\u6765](https://gcc.gnu.org/pipermail/gcc-patches/2023-November/636946.html)\u3002\\n\u9f99\u82af\u7684\u8fd9\u7248\u4ee3\u7801\u53ea\u505a\u4e86\u539f\u5b50\u64cd\u4f5c\u7684\u4e00\u90e8\u5206\u4f18\u5316\uff0c\u800c\u672a\u653e\u5bbd 32 \u4f4d\u9664\u6cd5\u3001\u53d6\u4f59\u64cd\u4f5c\u7684\u5165\u53c2\u8981\u6c42\uff0c\\n\u4e5f\u672a\u53bb\u9664\u90a3\u4e9b\u5728 LA664 \u4e0a\u4e0d\u518d\u5fc5\u8981\u7684 `DBAR 0x700` \u6307\u4ee4\uff1b\\n\u56e0\u6b64 Xi Ruoyao \u4ee5\u8fd9\u4e00\u7248\u9f99\u82af\u4ee3\u7801\u4e3a\u57fa\u7840\uff0c\u53c8[\u6539\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-November/637090.html)\u4e00\u7248\u3002\\n\\n\\n\\n\u540c\u4e00\u5929\uff0cJiahao Xu [\u4fee\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-November/636792.html)\u4e00\u4e9b\\nLSX\u3001LASX \u6d4b\u8bd5\uff1bLi Wei\\n\u4e5f\u5411 GCC [\u660e\u786e\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-November/636789.html)\\nLoongArch \u7684 `clz` `ctz` \u6307\u4ee4\u53ef\u4ee5\u6b63\u786e\u5904\u7406\u8f93\u5165\u4e3a\u96f6\u7684\u60c5\u51b5\u3002\\n\\n\u8fd9\u4e00\u5929 Jiahao Xu \u8fd8\u6839\u636e SPEC2017 \u8dd1\u5206\u7ed3\u679c\uff0c\u628a\u5411\u91cf\u8bbf\u5b58\u64cd\u4f5c\u7684\u6210\u672c\u4ece 1\\n[\u5fae\u8c03\u5230\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-November/637316.html)\\n2\uff0c\u8ba9\u5b83\u4eec\u548c\u975e\u5bf9\u9f50\u8bbf\u5b58\u76f8\u540c\uff1b\\n\u7ed3\u679c[\u5f71\u54cd\u5230\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-November/637155.html)\u6d4b\u8bd5\uff0c\\n\u5f85\u4fee\u590d\u3002\\n\\n11 \u6708 14 \u65e5\uff0cLulu Cheng \u8ba9 GCC \u5728\u4e2d\u7b49\u4ee3\u7801\u6a21\u578b\uff08`-mcmodel=medium`\uff09\u4e0b\uff0c[\u6362\u4f5c](https://gcc.gnu.org/pipermail/gcc-patches/2023-November/636443.html)\u4ee5\\n`%call36` \u5f62\u5f0f\u8fdb\u884c\u8fc7\u7a0b\u8c03\u7528\u3002`call36` \u662f\u7b2c 23 \u671f[\u62a5\u9053\u8fc7\u7684](./2023-11-06-this-week-in-loongarch-23.mdx#abi)\u65b0 ABI\u3002\\n\u8fd9\u4e2a\u53d8\u66f4\u6b20\u8003\u8651\u4e86\u642d\u914d\u65e7\u6c47\u7f16\u5668\u4f7f\u7528\u7684\u60c5\u51b5\uff1bXi Ruoyao 11 \u6708 18 \u65e5[\u5e2e\u5fd9\u4fee\u590d\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-November/637153.html)\u3002\\n\\n\u540c\u4e00\u5929\uff0c\u4e0a\u6e38\u5f00\u53d1\u8005 Andrew Pinski [\u4fee\u590d\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-November/636445.html)[^author-info-for-the-uninitiated]\u4e0a\u671f\u5468\u62a5[\u63d0\u5230\u7684](./2023-11-13-this-week-in-loongarch-24.md#gcc)\u4e00\u5904\u5b9e\u9645\u4e0a\u662f\u52a3\u5316\u7684\u300c\u4f18\u5316\u300d\u3002\\n\uff08\u8fd9\u4fee\u590d\u628a PowerPC \u7684\u6d4b\u8bd5\u70b8\u4e86\uff0c\u4f46\u4e0a\u6e38\u7684\u7ed3\u8bba\u662f\u5e94\u8be5\u6539 PowerPC \u76f8\u5173\u4ee3\u7801\u3002\uff09\\n\\n[^author-info-for-the-uninitiated]: \u8be5\u4fee\u590d\u65b9\u6848\u662f Andrew Pinski \u63d0\u51fa\u7684\uff0c\u53ea\u662f Xi Ruoyao \u5e2e :ta: \u628a\u90ae\u4ef6\u53d1\u4e86\u3002\u56e0\u4e3a\u90ae\u4ef6\u6b63\u6587\u5e26\u4e86 `From:` \u5b57\u6bb5\uff0c\u56e0\u6b64 Git \u63d0\u4ea4\u4e2d\u7684\u4f5c\u8005\u4fe1\u606f\u4ecd\u7136\u662f\u6b63\u786e\u7684\u3002\\n\\n\u540c\u4e00\u5929\u51cc\u6668\uff0cXi Ruoyao \u8fd8[\u53d1\u73b0](https://gcc.gnu.org/PR112520)\u6709\u4e2a GCC \u63d2\u4ef6\u6d4b\u8bd5\u7528\u4f8b\u5728\u9f99\u67b6\u6784\u4e0a\u5e94\u8be5\u5c31\u6ca1\u8fd0\u884c\u6210\u529f\u8fc7\uff1b\u8be5\u95ee\u9898\u4ecd\u5f85\u6392\u67e5\u3002\\n\\n11 \u6708 13 \u65e5\uff0cXi Ruoyao [\u6284\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-November/636379.html)\u4e2a\\nAArch64 \u7684\u4f18\u5316\uff0c\u80fd\u4e3a\u5f62\u5982 `copysign(x, -1)` \u7684\u64cd\u4f5c\u4ea7\u751f\u9ad8\u6548\u7684\u5411\u91cf\u5316\u4ee3\u7801\uff1b\\n\u53c8[\u79fb\u690d\u4e86](https://gcc.gnu.org/r14-5432) LLVM \u7684 `DBAR` \u4f18\u5316\\n\uff08\u5468\u62a5\u7b2c 20 \u671f[\u6709\u62a5\u9053](./2023-10-16-this-week-in-loongarch-20.md#LLVM)\uff09\u3002\\n\\n\u4ee5\u4e0a\u65b0\u589e\u7684\u5927\u5757\u5185\u5bb9\u90fd\u8d76\u4e0a\u4e86 GCC 14 stage 1\uff0c\u5728\u660e\u5e74\u7684 GCC 14.1 \u6b63\u5f0f\u7248\u5c31\u80fd\u7528\u4e0a\u4e86\u3002\\n\u7b49\u4e0d\u53ca\u7684\u540c\u5b66\u4e5f\u53ef\u4ee5\u4e0b\u8f7d GCC 14 \u5feb\u7167\u81ea\u884c\u7f16\u8bd1\uff0c\u6216\u4f7f\u7528 Gentoo\uff08\u76f4\u63a5 unmask \u76f8\u5e94\u7248\u672c\u5373\u53ef\uff09\u7b49\u6eda\u52a8\u53d1\u884c\u7248\uff0c\\n\u9a6c\u4e0a\u4f53\u9a8c\u3002\\n\\n\u672c\u671f\u7684\u5927\u591a\u6570 GCC \u65b0\u95fb\u90fd\u662f Xi Ruoyao \u5e2e\u5fd9\u6574\u7406\uff08\u4ee5\u53ca\u81ea\u5df1\u5236\u9020\uff09\u7684\uff0c\u8ba9\u6211\u4eec\u611f\u8c22 :ta: \u7684\u5949\u732e\uff01\\n\\n#### LLVM\\n\\n\u4eba\u4eec\u5df2\u7ecf\u5728\u7d27\u9523\u5bc6\u9f13\u5b9e\u73b0 LoongArch ELF psABI v2.20 \u7684\u65b0\u5185\u5bb9\u4e86\u3002\\n\\n11 \u6708 14 \u65e5\uff0cMaskRay \u4eb2\u81ea[\u5e2e\u5fd9\u4fee\u590d\u4e86](https://github.com/llvm/llvm-project/pull/72221)\u4e0a\u671f\u5468\u62a5[\u63d0\u5230\u7684](./2023-11-13-this-week-in-loongarch-24.md#llvm)\\nLLVM [issue #71645](https://github.com/llvm/llvm-project/issues/71645)\u3002\\n\\n\u540c\u4e00\u5929\uff0cMQ-mengqing \u4e3a LLD [\u589e\u52a0\u4e86](https://github.com/llvm/llvm-project/pull/72190)\\n`R_LARCH_{ADD,SUB}6` \u4e24\u79cd\u91cd\u5b9a\u4f4d\u8bb0\u5f55\u7684\u652f\u6301\uff0c\\n\u53c8\u4e3a LoongArch MC [\u589e\u52a0\u4e86](https://github.com/llvm/llvm-project/pull/72191) relaxation \u652f\u6301\u3002\\n\\n11 \u6708 13 \u65e5\uff0cMQ-mengqing [\u8bd5\u56fe](https://github.com/llvm/llvm-project/pull/72095)\u4e3a\\nLoongArch MC \u589e\u52a0\u7c7b\u4f3c [GAS \u7684\u6761\u4ef6\u8df3\u8f6c\u8303\u56f4\u6269\u5c55](https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commitdiff;h=1fb3cdd87ec61715a5684925fb6d6a6cf53bb97c)\u7684\u4e00\u9053\u5de5\u5e8f\uff0c\\n\u4f46 MaskRay \u53ca\u65f6\u6307\u51fa\u5f53\u5e74 RISC-V \u505a\u76f8\u540c\u4e8b\u60c5[\u88ab\u53d1\u73b0\u7684](https://reviews.llvm.org/D108961)\u5751\uff1a\\n\u5982\u679c\u9f99\u67b6\u6784\u80fd\u907f\u514d\u8e29\u5230\u8fd9\u4e9b\u5751\uff0c\u90a3\u4e48\u4fbf\u80fd\u300c\u6bd4 RISC-V \u505a\u5f97\u66f4\u597d\u300d\u3002MQ-mengqing \u663e\u7136\u53d7\u76ca\u532a\u6d45\uff0c\u5e94\u8be5\u5728\u6539\u4ee3\u7801\u4e86\u3002\\n\\n#### Rust\\n\\n11 \u6708 17 \u65e5\uff0cheiher \u4e3a\u4e86\u8ba9 rustup 1.27.0 \u53d1\u5e03\u65f6\u80fd\u5305\u542b\u9f99\u67b6\u6784\u4e8c\u8fdb\u5236\uff0c\\n\u4e34\u65f6\u7ed9\u9f99\u67b6\u6784\u7684 rustup [\u5173\u6389\u4e86](https://github.com/rust-lang/rustup/pull/3536) OpenSSL\u3002\\n\u8fd9\u8fd8\u662f\u7b2c 10 \u671f[\u8bb2\u8fc7\u7684](./2023-07-24-this-week-in-loongarch-10.md#openssl-asm-breakage)\u9f99\u82af\u6316\u7684\u5751\u7684\u540e\u7eed\u2026\u2026\\n\\n11 \u6708 14 \u65e5\uff0cheiher \u4e3a Rust \u7684 LoongArch musl \u652f\u6301\uff08`loongarch64-unknown-linux-musl` \u6784\u5efa\u76ee\u6807\uff09\\n\u63d0\u524d[\u5efa\u7acb\u4e86](https://github.com/loongson-community/discussions/issues/13)\u534f\u8c03\u5de5\u5355\u3002\\n\\n
\\nmusl \u79fb\u690d\u7684\u4e0a\u6e38\u5316\u8fdb\u5ea6\\n\\n\u76ee\u524d\u9f99\u82af\u63a8\u8fdb\u7684 musl LoongArch \u652f\u6301\u8865\u4e01\u5df2\u7ecf[\u7ffb\u65b0\u5230\u4e86](https://www.openwall.com/lists/musl/2023/11/16/2)\u7b2c 9 \u7248\uff0c\\n\u4f46\u4f3c\u4e4e\u6bcf\u6b21\u66f4\u65b0\u90fd\u585e\u4e86\u4e00\u4e9b\u4ee3\u7801\u5ba1\u67e5\u8bc4\u8bba\u4e4b\u5916\u7684\u4fee\u6539\u3002\\n\u8fd9\u4f7f\u4e0a\u6e38\u7ef4\u62a4\u8005[\u56f0\u60d1](https://www.openwall.com/lists/musl/2023/11/17/3)\uff1a\\n\u672c\u6765\u4e0a\u4e00\u7248\u5df2\u7ecf\u6ca1\u95ee\u9898\u4e86\uff0c\u7ed3\u679c\u53c8\u585e\u4e86\u65b0\u4e1c\u897f\u3002\\n\\n\u622a\u81f3\u53d1\u7a3f\u65f6\uff0c\u770b\u4e0a\u53bb\u9f99\u82af\u7ef4\u62a4\u8005[\u5df2\u7ecf\u6062\u590d\u4e86](https://www.openwall.com/lists/musl/2023/11/20/1)\u8865\u4e01\u7b2c 8 \u7248\u53d1\u51fa\u7684\u73b0\u72b6\u2014\u2014\u8fd9\u56de\u5e94\u8be5\u80fd\u5408\u5e76\u4e86\uff01\\n
\\n\\n## \u6742\u95fb\u64ad\u62a5\\n\\n11 \u6708 18 \u65e5\uff0cshipujin [\u53d1\u5e03\u4e86](http://www.slackwarecn.cn/2023/11/18/Slackwareloong1.0live%E5%8F%91%E5%B8%83%EF%BC%81/)\\nSlackwareloong64 LTS 1.0 \u7684 Live \u955c\u50cf\u3002\u6b22\u8fce\u611f\u5174\u8da3\u7684 Slackware \u7528\u6237\u3001\u7231\u597d\u8005\u4eec\u4e0b\u8f7d\u4f53\u9a8c\u3002\\n\u611f\u8c22 :ta: \u7684\u65b0\u95fb\u7ebf\u7d22\u4ee5\u53ca\u7ef4\u62a4\u5de5\u4f5c\uff01\\n\\n11 \u6708 17 \u65e5\uff0c\u9f99\u82af\u5c06\u300a\u624b\u518c\u300b\u82f1\u6587\u7248\u7ffb\u8bd1\u7684\u4ed3\u5e93\u77ed\u6682\u89e3\u9664\u4e86\u53ea\u8bfb\u72b6\u6001\uff1b\\n\u6587\u6863\u7ef4\u62a4\u8005 Yanteng Si \u9042[\u63a8\u5165\u4e86](https://github.com/loongson/LoongArch-Documentation/commit/3f3989f658965404ee37633f1a430836124e9343)\u300a\u624b\u518c\u300bv1.10 \u7684\u90e8\u5206\u66f4\u65b0\uff0c\\n\u5e76\u76f8\u5e94\u5730[\u66f4\u65b0\u4e86](https://lore.kernel.org/loongarch/CAAhV-H7-9JL1hf8_Hs3dirJ8aqgK4BGU1PANsXDDVkSHP_fe9A@mail.gmail.com/T/#t)\\nLinux \u9f99\u67b6\u6784\u6587\u6863\u7684\u94fe\u63a5\u3002\\n\\n\u672c\u6b21\u7ffb\u8bd1\u66f4\u65b0\u662f\u4e0d\u5b8c\u6574\u7684\uff1a\u53ea\u5305\u542b\u4e86\u65b0\u589e\u6307\u4ee4\u7684\u63cf\u8ff0\uff0c\\n\u800c\u6ca1\u6709\u8986\u76d6\u7b2c 1.5 \u8282\u5173\u4e8e\u6307\u4ee4\u96c6\u6f14\u8fdb\u7684\u8bf4\u660e\u3001\\n\u7b2c 2.2.10.5 \u8282\u7684\u65b0 `CPUCFG` \u5b57\u6bb5\u63cf\u8ff0\uff0c\u6216\u8005\u7279\u6743\u67b6\u6784\u90e8\u5206\u7684\u66f4\u65b0\u3002\\n\u7ed3\u5408\u9f99\u82af\u7ef4\u62a4\u8005\u5728 binutils \u90ae\u4ef6\u5217\u8868\u4e0a\uff0c\u5bf9\u4e0a\u4e2a\u6708 LoongArch v1.10 \u6307\u4ee4\u652f\u6301\u5de5\u4f5c\\n\uff08[\u7b2c 22 \u671f](./2023-10-30-this-week-in-loongarch-22.md#binutils)\u6709\u62a5\u9053\uff09\\n\u7684[\u4e00\u5c01\u56de\u590d](https://sourceware.org/pipermail/binutils/2023-November/130594.html)\uff0c\\n\u672c\u6b21\u66f4\u65b0\u5e94\u8be5\u662f\u5b9e\u7528\u4e3b\u4e49\u7684\uff1a\u53ef\u80fd\u4ec5\u4ec5\u4e3a\u4e86\u80fd\u591f\u5feb\u901f\u63a8\u8fdb\u65b0\u6307\u4ee4\u7684\u4e0a\u6e38\u5316\uff0c\u4e34\u65f6\u53eb\u4eba\u66f4\u65b0\u4e00\u4e0b\uff0c\\n\u800c\u5e76\u975e\u4e13\u95e8\u6392\u671f\u6765\u505a\u8fd9\u4ef6\u4e8b\u2014\u2014\u5982\u679c\u662f\u540e\u4e00\u79cd\u60c5\u51b5\uff0c\u90a3\u4e48\u5e94\u8be5\u4e0d\u4f1a\u53ea\u505a\u5b8c\u4e00\u90e8\u5206\u5c31\u63d0\u4ea4\u4e86\u3002\\n\\n## \u5f20\u8d34\u680f\\n\\n\u672c\u680f\u76ee\u53ef\u4f9b\u5f20\u8d34\u516c\u76ca\u6027\u8d28\u7684\u5404\u79cd\u4fe1\u606f\u3002\\n\\n* \u53cb\u60c5\u6269\u6563\uff1a[\u5b89\u540c\u5f00\u6e90\u793e\u533a\uff08AOSC\uff09][aosc]\u7684\u9f99\u67b6\u6784\u79fb\u690d\u4e3b\u7ebf\u5316\u5de5\u4f5c\u300c\u5408\u9f99\u300d\u4ecd\u5728\u5982\u706b\u5982\u837c\u8fdb\u884c\u4e2d\uff0c\\n \u6b64\u5de5\u4f5c\u5b8c\u6210\u540e\u9f99\u67b6\u6784\u5c06\u5347\u683c\u4e3a AOSC OS \u7684 Tier 1 \u67b6\u6784\u3002\\n \u6b22\u8fce\u540c\u5b66\u4eec\u8bd5\u7528\u3001\u53cd\u9988\uff0c\u4e5f\u6b22\u8fce\u6709\u5fd7\u4e4b\u58eb\u4e00\u540c\u52a0\u5165\uff08\u6c9f\u901a\u6e20\u9053\u8be6\u89c1 AOSC \u7f51\u7ad9\u76f8\u5173\u680f\u76ee\uff09\u3002\\n* \u672c\u5468\u62a5[\u6301\u7eed\u63a5\u53d7\u7f51\u53cb\u6295\u7a3f][call-for-submissions]\u3002\u6b22\u8fce\u6765\u4e0a\u6e38\u5750\u5750\uff01\\n\\n[aosc]: https://aosc.io\\n[call-for-submissions]: https://github.com/loongson-community/areweloongyet/issues/16"},{"id":"this-week-in-loongarch-24","metadata":{"permalink":"/newsletter/this-week-in-loongarch-24","editUrl":"https://github.com/loongson-community/areweloongyet/newsletter/2023-11-13-this-week-in-loongarch-24.md","source":"@site/newsletter/2023-11-13-this-week-in-loongarch-24.md","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 24 \u671f","description":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01","date":"2023-11-13T15:50:00.000Z","formattedDate":"2023\u5e7411\u670813\u65e5","tags":[{"label":"\u6bcf\u5468\u4e00\u9f99","permalink":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99"}],"readingTime":12.565,"hasTruncateMarker":true,"authors":[{"name":"WANG Xuerui","title":"\ud83d\udc32\u9f99\u95e8\u5ba2\u6808\u6253\u6742\u7684","url":"https://github.com/xen0n","imageURL":"https://github.com/xen0n.png","key":"xen0n"}],"frontMatter":{"slug":"this-week-in-loongarch-24","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 24 \u671f","authors":["xen0n"],"date":"2023-11-13T15:50:00.000Z","tags":["\u6bcf\u5468\u4e00\u9f99"]},"unlisted":false,"prevItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 25 \u671f","permalink":"/newsletter/this-week-in-loongarch-25"},"nextItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 23 \u671f","permalink":"/newsletter/this-week-in-loongarch-23"}},"content":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01\\n\u4e0a\u5468\u7684\u8fdb\u5c55\u4e3b\u8981\u6709 Linux\u3001\u5de5\u5177\u94fe\uff0c\u4ee5\u53ca GSGPU \u9a71\u52a8\u5411\u4e3b\u7ebf\u5185\u6838\u7248\u672c\u7684\u79fb\u690d\u6210\u679c\u3002\\n\u8be6\u60c5\u70b9\u8fdb\u6765\u770b\uff01\\n\\n\x3c!-- truncate --\x3e\\n\\n\u5982\u65e0\u7279\u522b\u8bf4\u660e\uff0c\u6587\u4e2d\u63d0\u53ca\u7684\u65e5\u671f\u3001\u65f6\u95f4\u90fd\u4e3a\u5317\u4eac\u65f6\u95f4\uff08UTC+8\uff09\u3002\\n\\n## \u5148\u300c\u9a6c\u300d\u518d\u770b\\n\\n\u672c\u680f\u76ee\u7684\u5185\u5bb9\u5177\u6709\u4e00\u5b9a\u5ef6\u7eed\u6027\uff0c\u5c06\u6301\u7eed\u8ffd\u8e2a\u62a5\u9053 LoongArch® \u9886\u57df\u7684\u91cd\u8981\u6216\u957f\u671f\u9879\u76ee\uff08\u5751\uff09\u3002\\n\\n### Linux\\n\\n\u622a\u81f3\u53d1\u7a3f\u65f6\uff0cLinux v6.7-rc1 [\u5df2\u7ecf\u53d1\u5e03](https://lore.kernel.org/lkml/CAHk-=whuO0zmuxp_yorYFWdcrALpqjRPhWkmEy+7wcCnnDcPNA@mail.gmail.com/)\u3002\\n\u9f99\u67b6\u6784\u7684 PR \u662f\u5728\u6700\u540e\u4e00\u5929[\u53d1\u51fa\u7684](https://lore.kernel.org/loongarch/20231112051248.272444-1-chenhuacai@loongson.cn/)\u3002\\n\\n:::info \u4e3a\u5565\u8fd9\u6b21 PR \u8fd9\u4e48\u665a\uff1f\\n\u539f\u56e0\u636e\u8bf4\u662f\u5148\u524d\u9f99\u82af\u559c\u6b22\u6700\u540e\u65f6\u523b\u66f4\u65b0\u5206\u652f\uff0c\u5bfc\u81f4\u65b0\u4ee3\u7801\u5728 linux-next \u8eba\u5f97\u4e0d\u591f\u4e45\uff1b\\n\u4e8e\u662f\u5728\u672c\u5468\u671f\u7684 PR \u53d1\u51fa\u4e4b\u524d\uff0c\u90a3\u4e9b\u4ee3\u7801\u5c31\u8001\u8001\u5b9e\u5b9e\u8eba\u4e86 4 \u5929\u3002\\n\\n\u5bf9\u90a3\u4e9b\u7784\u51c6\u4e3b\u7ebf\u7684\u4ee3\u7801\uff0c\u786e\u5b9e\u5e94\u8be5\u5728 linux-next \u591a\u5446\u51e0\u5929\uff1a\\n\u8fd9\u6837\u8fd9\u4e9b\u4ee3\u7801\u624d\u6709\u673a\u4f1a\u89e6\u53ca\u66f4\u591a\u7684\u6d4b\u8bd5\u4eba\u5458\u548c\u81ea\u52a8\u5316\u8bbe\u65bd\uff0c\\n\u6709\u52a9\u4e8e\u53d1\u73b0\u8de8\u5b50\u7cfb\u7edf\u6216\u67b6\u6784\u4ea7\u751f\u4e0d\u826f\u5f71\u54cd\u7684\u90a3\u4e9b\u5199\u6cd5\u3002\\n\\n\u4ece\u524d\uff0c\u5728\u4e3b\u7ebf\u4e4b\u5916\u7ef4\u62a4\u9f99\u82af\u5185\u6838\u7684\u5e74\u4ee3\uff0c\u7531\u4e8e\u5916\u754c\u4e0d\u611f\u77e5\u9f99\u82af\u53d8\u66f4\uff0c\u9f99\u82af\u516c\u53f8\u4e5f\u4e0d\u6d4b\u5176\u4ed6\u67b6\u6784\uff0c\\n\u56e0\u800c\u9f99\u82af\u516c\u53f8\u4e4b\u5916\u7684\u793e\u533a\u96c6\u6210\u8005\uff08\u4f8b\u5982\u7b14\u8005\uff09\u591a\u6b21\u906d\u9047\u4e86\u9f99\u82af\u76f8\u5173\u53d8\u66f4\u70b8\u6389\u5176\u4ed6\u67b6\u6784\u7684\u60c5\u51b5\u3002\\n\u8fd9\u79cd\u60c5\u51b5\u5728\u9f99\u82af\u4e5f\u6e10\u6e10\u8f6c\u5411\u793e\u533a\u534f\u4f5c\u6a21\u5f0f\u4e4b\u540e\uff0c\u4fbf\u6e10\u6e10\u6d88\u5931\u4e86\u2014\u2014\u9f99\u82af\u5f71\u54cd\u4e86\u522b\u4eba\u9f99\u82af\u4f1a\u4fee\uff1b\u76f8\u5e94\u5730\uff0c\u522b\u4eba\u5f71\u54cd\u4e86\u9f99\u82af\u522b\u4eba\u4e5f\u4f1a\u4fee\uff0c\\n\u800c\u6bcf\u4e00\u65b9\u90fd\u53ea\u9700\u8dd1\u81ea\u5df1\u73af\u5883\u7684\u6d4b\u8bd5\u5373\u53ef\u3002\\n:::\\n\\n\u672c\u5f00\u53d1\u5468\u671f\u4e2d\uff0c\u8f83\u4e3a\u5f15\u4eba\u6ce8\u76ee\u7684\u5927\u5757\u53d8\u66f4\u6709\uff1a\\n\\n* \u5408\u5e76\u4e86 bcachefs \u7684\u652f\u6301\uff1b\\n* \u79fb\u9664\u4e86 IA-64 \u67b6\u6784\u7684\u652f\u6301\uff1b\\n* \u5f00\u6e90\u7684 NVIDIA® \u663e\u5361\u9a71\u52a8 `nouveau` \u83b7\u5f97\u4e86 GSP \u652f\u6301\u3002\\n\\n
\\n\u5565\u53eb GSP\uff1f\\n\\nGSP \u662f GPU system processor \u7684\u7f29\u5199\uff1aGPU \u7cfb\u7edf\u5904\u7406\u5668\u3002\\n\\n\u81ea\u4ece 2018 \u5e74\u9762\u4e16\u7684 Turing \u5fae\u67b6\u6784\u4ee5\u6765\uff0c\u65b0\u578b\u53f7\u7684 NVIDIA® \u663e\u5361\u90fd\u65b0\u589e\u4e86\u4e00\u5757\\nRISC-V \u5fae\u63a7\u5236\u5668\uff0c\u63a5\u7ba1\u4e86\u4ece\u524d\u7531\u64cd\u4f5c\u7cfb\u7edf\u9a71\u52a8\u63a7\u5236\u7684\u8bb8\u591a\u786c\u4ef6\u8d44\u6e90\u63a7\u5236\u804c\u8d23\u3002\\n\u8fd9\u4f7f\u5f97 NVIDIA \u5f97\u4ee5\u5f00\u6e90\u5176\u5185\u6838\u9a71\u52a8\uff1a\u8fd9\u4e2a\u9a71\u52a8\u53ea\u5269\u4e00\u4e2a C/S \u67b6\u6784\u7684\u5ba2\u6237\u7aef\u7a7a\u58f3\u5b50\u4e86\u3002\\n
\\n\\n\u9f99\u67b6\u6784\u76f8\u5173\u7684\u4e3b\u8981\u53d8\u66f4\u6709\uff1a\\n\\n* \u65b0\u589e\u4e86 KVM \u652f\u6301\uff08Tianrui Zhao\u3001Bibo Mao\u3001Huacai Chen\uff09\uff1b\\n* [\u652f\u6301\u4e86](https://git.kernel.org/torvalds/c/80c7889de7a8246e44a9632a2b7d15b41ab3fe41)\u52a8\u6001\u62a2\u5360\uff08`PREEMPT_DYNAMIC`\uff09\uff08Huacai Chen\uff09\uff1b\\n* \u5728\u4fdd\u8bc1\u6b63\u786e\u7684\u524d\u63d0\u4e0b\uff0c[\u9002\u5f53\u653e\u677e\u4e86](https://git.kernel.org/torvalds/c/affef66b65889a0ea0060e13e5f7fe569897d787)\u539f\u5b50\u64cd\u4f5c\u7684\u7ea6\u675f\uff0c\\n \u4f7f\u5f97 3A6000 \u7684 8 \u7ebf\u7a0b Unixbench \u6d4b\u8bd5\u6700\u7ec8\u5f97\u5206\u63d0\u5347\u4e86 0.47%\uff08WANG Rui\uff09\uff1b\\n* \u8ddf\u8fdb\u4e86 [BPF \u865a\u62df\u673a\u6307\u4ee4\u96c6\u7684 v4 \u65b0\u589e](https://lore.kernel.org/bpf/4bfe98be-5333-1c7e-2f6d-42486c8ec039@meta.com/)\uff0c\\n \u4e3a\u9f99\u67b6\u6784[\u589e\u52a0\u4e86](https://lore.kernel.org/loongarch/20231026184337.563801-1-hengqi.chen@gmail.com/)\u76f8\u5e94\u652f\u6301\uff08Hengqi Chen\uff09\u3002\\n\\nPhoronix \u4e5f[\u62a5\u9053\u4e86](https://www.phoronix.com/news/Linux-6.7-rc1)\u6b64\u65b0\u7248\u672c\uff0c\\n\u611f\u5174\u8da3\u7684\u8bfb\u8005\u53ef\u62d3\u5c55\u9605\u8bfb\u3002\\n\\n### \u5de5\u5177\u94fe\\n\\n#### gcc\\n\\n11 \u6708 11 \u65e5\uff0cXi Ruoyao [\u53d1\u73b0](https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112483)\u4e00\u4e9b\u6d6e\u70b9\u6570\u503c\u8ba1\u7b97\u7684\u6d4b\u8bd5\u7528\u4f8b\u7a81\u7136\u5f00\u59cb\u5931\u8d25\u4e86\uff0c\\n\u6392\u67e5\u4e0b\u6765\u662f\u67b6\u6784\u65e0\u5173\u7684\u4f18\u5316\u9519\u8bef\uff0c\u4e8e\u662f\u7b2c\u4e8c\u5929[\u53d1\u51fa\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-November/636200.html)\u4fee\u590d\u8865\u4e01\u3002\\n\u8fc7\u7a0b\u4e2d\uff0c\u987a\u5e26\u8fd8\u53d1\u73b0\u4e86\u539f\u300c\u4f18\u5316\u300d\u5728\u9f99\u67b6\u6784\u4e0a\u5176\u5b9e\u662f\u8d1f\u4f18\u5316\uff1b\u6b63\u5728\u4e0e\u4e0a\u6e38\u4e00\u540c\u60f3\u529e\u6cd5\u89e3\u51b3\u3002\\n\\n:::info \u82b1\u7d6e\\n\u5728\u6298\u817e\u8fd9\u4e2a\u95ee\u9898\u8fc7\u7a0b\u4e2d\uff0cXi Ruoyao \u53c8\u88ab[\u53e6\u4e00\u4e2a\u65b0\u9c9c\u95ee\u9898](https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112497)\u5751\u5230\uff1a\\n\u662f\u963f\u91cc\u7684\u7f16\u8bd1\u5668\u5de5\u7a0b\u5e08\u540c\u884c\u6539\u67b6\u6784\u65e0\u5173\u6d41\u6c34\u7ebf\u4f18\u5316\u4ee3\u7801\u6539\u574f\u4e86\u3002\\n\u597d\u5728\u7b2c\u4e8c\u5929 GCC \u7ef4\u62a4\u8005\u53d1\u73b0\u4e86\u95ee\u9898\uff0c\u5c06\u95ee\u9898\u8865\u4e01 revert \u6389\u4e86\uff0c\\n\u4fdd\u62a4\u4e86\u5f88\u591a\u76f8\u5173\u4eba\u58eb\u7684\u7761\u7720\u65f6\u95f4\uff08\u548c\u53d1\u91cf\uff09\u3002\\n:::\\n\\n11 \u6708 10 \u65e5\uff0c\u7b14\u8005\u5728\u65e5\u5e38\u6d4b\u8bd5 Firefox 119 \u8fc7\u7a0b\u4e2d\uff0c\u7f16\u8bd1\u5668\u5d29\u6e83\u4e86\u3002\\n\u641e\u4e86\u4e00\u665a\u4e0a\uff0c\u5c06\u89e6\u53d1\u95ee\u9898\u7684\u8fd1 3MiB \u6e90\u7801[\u7cbe\u70bc\u6210\u4e86](https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112476)\u4e0a\u6e38 bug PR112476\u3002\\n\u4e24\u5929\u540e Xi Ruoyao \u5c06\u5176[\u4fee\u590d\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-November/636156.html)\uff0c\\n\u5df2[\u8fdb\u5165\u4e3b\u7ebf](https://gcc.gnu.org/g:b88500e0bc1e9e3a396ba764f9b701d22a76818f)\u3002\\n\\n11 \u6708 7 \u65e5\uff0cchenxiaolong \u7ed9 GCC \u8865\u5145\u4e86 LSX/LASX \u7684\u4f7f\u7528\u8bf4\u660e\u6587\u6863\uff1a\\n\\n* [intrinsics](https://gcc.gnu.org/pipermail/gcc-patches/2023-November/635431.html)\uff0c\\n* [\u5185\u8054\u6c47\u7f16\u7684\u64cd\u4f5c\u6570\u4fee\u9970\u7b26](https://gcc.gnu.org/pipermail/gcc-patches/2023-November/635435.html)\u3002\\n\\n11 \u6708 6 \u65e5\uff08\u521a\u597d\u9519\u8fc7\u4e0a\u671f\uff09\uff0cXi Ruoyao \u641e\u4e86\u4e09\u4e2a\u8865\u4e01\uff1a\\n\\n* [\u5b8c\u5584\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-November/635277.html)\\n GCC \u6784\u5efa\u65f6\u5bf9 linker relaxation \u652f\u6301\u7684\u5224\u65ad\uff1a\\n \u7b80\u5355\u6765\u8bf4\uff0c\u5982\u679c\u53d1\u73b0\u642d\u914d\u7684\u6c47\u7f16\u5668\u4e0d\u652f\u6301 relax \u6761\u4ef6\u5206\u652f\u6307\u4ee4\uff0c\\n \u90a3\u4e48\u5c31\u4f7f\u5373\u5c06\u88ab\u6784\u5efa\u7684 GCC \u9ed8\u8ba4\u7981\u7528 relaxation\u3002\\n \u8fd9\u6709\u52a9\u4e8e\u89c4\u907f\u7f16\u8bd1\u5927\u578b\u8f6f\u4ef6\u65f6\u6709\u6982\u7387\u9047\u5230\u7684\u70e6\u4eba\u7684\u300c\u91cd\u5b9a\u4f4d\u6ea2\u51fa\u300d\u9519\u8bef\u3002\\n \u8fd9\u4fee\u590d\u4e86\u4e0a\u6e38 bug [PR112330](https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112330)\u3002\\n* [\u4f18\u5316\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-November/635278.html)\\n `-mexplicit-relocs=auto` \u914d\u7f6e\u4e0b\uff0c\u4ec5\u5355\u6b21\u4f7f\u7528\u7684\u5730\u5740\u4e0e `fld` `fst` \u642d\u914d\u65f6\u7684\u751f\u6210\u4ee3\u7801\u3002\\n* [\u79fb\u690d\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-November/635304.html)\\n LLVM \u7684\u4e24\u7ec4\u9f99\u67b6\u6784 LL/SC \u4ee3\u7801\u7247\u6bb5\u4f18\u5316\uff1a[\u7b2c 20 \u671f\u62a5\u9053\u8fc7\u7684](./2023-10-16-this-week-in-loongarch-20.md#llvm)\\n heiher [\u505a\u7684\u4f18\u5316](https://github.com/llvm/llvm-project/pull/6739)\uff0c\u4ee5\u53ca\\n SixWeining \u968f\u540e[\u505a\u7684\u8fdb\u4e00\u6b65\u5b8c\u5584](https://github.com/llvm/llvm-project/pull/69339)\u3002\\n\\nXi Ruoyao \u51c6\u5907\u8d76\u5728 GCC 14 stage 1 \u622a\u6b62\uff08\u7b14\u8005\u6ce8\uff1a11 \u6708 19 \u53f7\uff09\u524d\u52a0\u5165\u4e00\u6279 LA664 \u652f\u6301\uff0c\\n\u4f46\u662f\u636e\u5356\u5bb6\u8bf4 :ta: \u7684\u677f\u5b50\u8fd8\u5728\u8001\u5316\u95f4\u91cc\u3002\\n\u8ba9\u6211\u4eec\u671f\u5f85\u4ed6\u80fd\u65e9\u65e5\u62ff\u5230\u677f\u5b50\uff08\u5f53\u7136\u793e\u533a\u540c\u5b66\u5305\u62ec\u7b14\u8005\u5728\u5185\u5e94\u8be5\u4e5f\u4f1a\u51fa\u624b\u76f8\u52a9\uff09\uff01\\n\\n\u672c\u671f\u7684\u5f88\u5927\u4e00\u90e8\u5206 GCC \u65b0\u95fb\u90fd\u662f Xi Ruoyao \u63d0\u4f9b\u7684\uff0c\u611f\u8c22 :ta: \u4ece\u73b0\u573a\u53d1\u56de\u7684\u62a5\u9053\u3002\\n\\n#### LLVM {#llvm}\\n\\n\u5728[\u5468\u62a5\u7b2c 8 \u671f](./2023-07-10-this-week-in-loongarch-8.md#llvm)\u7b14\u8005\u6253\u7b97\u505a\u6389\\n`model` \u5c5e\u6027\u652f\u6301\uff0c\u5728\u4e0a\u6e38\u8ba8\u8bba\u786e\u5b9a\u4e86\u6280\u672f\u65b9\u6848\u3002\\n\u4f46\u6b64\u540e\u73b0\u5b9e\u751f\u6d3b\u56e0\u7d20\u4e0e\u5404\u79cd\u5de5\u4f5c\u4f18\u5148\u7ea7\u53d8\u5316\u53e0\u52a0\uff0c\u4f7f\u5f97\u7b14\u8005\u4e0d\u5f97\u4e0d\u5f03\u6389\u6b64\u5751\u3002\\n\u4e00\u5468\u524d heiher [\u51fa\u624b\u76f8\u52a9](https://github.com/loongson-community/discussions/issues/10)\uff0c\\n\u5c06\u6b64\u5de5\u4f5c\u51b2\u8fc7\u4e86\u7ec8\u70b9\u7ebf\u3002\\n\u622a\u81f3\u53d1\u7a3f\u65f6\uff0c\u76f8\u5e94\u7684 LLVM PRs \u5df2\u7ecf\u65b0\u9c9c\u5efa\u7acb\uff1a\\n\\n* [#72077](https://github.com/llvm/llvm-project/pull/72077)\uff1a\u6269\u5c55 LLVM IR\uff0c\u65b0\u589e `code_model` \u5168\u5c40\u91cf\u5c5e\u6027\uff0c\\n* [#72078](https://github.com/llvm/llvm-project/pull/72078)\uff1a\u4e3a Clang \u65b0\u589e `model` \u5c5e\u6027\uff0c\\n* [#72079](https://github.com/llvm/llvm-project/pull/72079)\uff1a\u5728 LoongArch \u540e\u7aef\u5229\u7528\u6b64\u4fe1\u606f\u3002\\n\\n\u975e\u5e38\u611f\u8c22\uff01\\n\\n11 \u6708 10 \u65e5\uff0cSixWeining \u62a5\u544a\u6709\u7528\u6237\u78b0\u5de7\u9047\u4e0a\u4e86 LLD \u8ba1\u7b97 page \u504f\u79fb\u91cf\u7684\u4e00\u5904\u6ea2\u51fa\\n\uff08\u53ea\u6709\u5f53\u9700\u6c42\u7684\u504f\u79fb\u91cf\u6070\u597d\u662f `-4096` \u624d\u4f1a\u89e6\u53d1\uff09\uff0c\\n\u987a\u624b[\u4fee\u590d\u4e86](https://github.com/llvm/llvm-project/pull/71907)\u3002\\n\\n11 \u6708 8 \u65e5\uff0cxry111 [\u53d1\u73b0](https://github.com/llvm/llvm-project/issues/71645)\\nClang \u5bf9\u4e8e\u975e\u4f4d\u7f6e\u65e0\u5173\u7684\u53ef\u6267\u884c\u6587\u4ef6\uff08`-fno-pie`\uff09\u6240\u7528\u7684\u9ed8\u8ba4\u914d\u7f6e\\n`-fdirect-access-external-data` \u5728 LoongArch \u4e0a\u4e0d\u80fd\u7528\uff0c\u5e76\u4e14\u4e0d\u8be5\u80fd\u7528\uff0c\\n\u5efa\u8bae\u5c06\u5176\u5728 LoongArch \u5173\u6389\uff1b11 \u6708 10 \u65e5\\nheiher [\u5c1d\u8bd5\u8fd9\u4e48\u505a\u4e86](https://github.com/llvm/llvm-project/pull/71887)\u3002\\n\\n#### Go\\n\\n10 \u6708 16 \u65e5\u524d\u540e\uff0cMeidan Li [\u63d0\u4ea4\u4e86](https://go.dev/cl/533716) Go \u5185\u90e8\u94fe\u63a5\u5668\u7684 `loong64` \u652f\u6301\uff1b\\n11 \u6708 8 \u65e5 :ta: \u6574\u4f53\u66f4\u4e86\u4e00\u7248\uff0c\u5e94\u8be5\u8fbe\u5230\u53ef\u4ee5\u6d4b\u8bd5\u3001\u8bc4\u5ba1\u7684\u72b6\u6001\u4e86\u3002\\n\\n## \u6742\u95fb\u64ad\u62a5\\n\\n\u5317\u4eac\u65f6\u95f4 11 \u6708 13 \u65e5\u6e05\u6668\uff0c\u7531 Robin Lee \u63a8\u52a8\u3001\u5b9e\u73b0\uff0c\u5386\u65f6 9 \u4e2a\u6708\uff0cFreeDesktop SDK \u7684\\n`loongarch64` \u6700\u5c0f\u5316\u865a\u62df\u673a\u7684\u6784\u5efa\u652f\u6301[\u5408\u5165\u4e0a\u6e38](https://gitlab.com/freedesktop-sdk/freedesktop-sdk/-/merge_requests/11510)\uff1a\\n\u53ef\u4ee5\u901a\u8fc7 `vm/minimal/efi.bst` \u6784\u5efa\u865a\u62df\u673a\u7cfb\u7edf\u955c\u50cf\u6587\u4ef6\u4e86\u3002\\n\u7ee7[\u5468\u62a5\u7b2c 20 \u671f](./2023-10-16-this-week-in-loongarch-20.md#freedesktop-sdk-initial-support-merged)\u4e4b\u540e\uff0c\\n\u8fd9\u662f\u5c06 Flatpak \u751f\u6001\u5e26\u5165 LoongArch \u7684\u9053\u8def\u4e0a\u7684\u53c8\u4e00\u91cd\u8981\u8fdb\u5c55\u3002\\n\u611f\u8c22 :ta: \u81ea\u5df1\u6295\u9012\u7684\u65b0\u95fb\u7ebf\u7d22\uff01\\n\\n11 \u6708 6 \u65e5 systemd [\u53d1\u5e03\u4e86](https://github.com/systemd/systemd/releases/tag/v255-rc1)\\nv255-rc1\uff0c\u65b0\u589e\u4e86 LoongArch64 \u7684 seccomp \u652f\u6301\u3002\\nseccomp \u662f\u5b9e\u73b0\u6c99\u7bb1\uff08sandbox\uff09\u529f\u80fd\u7684\u5173\u952e\u57fa\u7840\u5e93\u3002\\nPhoronix \u4e5f[\u62a5\u9053\u4e86](https://www.phoronix.com/news/systemd-255-rc1)\u6b64\u4e8b\u3002\\n\\n## \u793e\u533a\u6574\u6d3b:\u513f:\\n\\n\u672c\u680f\u76ee\u63a5\u53d7\u4efb\u4f55\u7f51\u53cb\u7684\u6295\u7a3f\uff0c\u53ea\u8981\u5185\u5bb9\u4e0e LoongArch® \u6709\u5173\uff0c\u5e76\u53ef\u4ee5\u4e3a\u8bfb\u8005\u5e26\u6765\u4ef7\u503c\uff0c\\n\u65e0\u8bba\u4e25\u8083\u8d21\u732e\uff08\u6574\u7684\u5927\u6d3b:\u513f:\uff09\u6216\u662f\u535a\u541b\u4e00\u7b11\u90fd\u4e00\u6982\u6b22\u8fce\uff01\\n\\n\u793e\u533a\u5f00\u53d1\u8005 cl91 \u4ece[\u5468\u62a5\u7b2c 18 \u671f](./2023-10-02-this-week-in-loongarch-18.md#gsgpu-for-mainline)\u5f00\u59cb\u618b\u7684\u5927\u62db\uff0c\\n\u641e\u5b9a\u4e86\uff01\\n\u9f99\u82af 7A2000 \u4e2d\u7684\u72ec\u663e[^what-does-discrete-mean]\u6a21\u5757\u7684\u5185\u6838\u9a71\u52a8 GSGPU \u5df2\u7ecf\u79fb\u690d\u5230\u4e86\u6700\u65b0\u7684 Linux v6.6\u3002\\n\\n[^what-does-discrete-mean]: \u6309\u7167\u300c\u96c6\u6210\u5728\u4e3b\u677f\u4e0a\u7684\u663e\u5361\u5c31\u662f\u96c6\u663e\u300d\u8fd9\u4e2a\u76f4\u89c2\u6d45\u663e\u7684\u5224\u65ad\u6807\u51c6\uff0c\u5f53\u524d\u7684 GSGPU \u5f53\u7136\u4e0d\u7b97\u300c\u72ec\u663e\u300d\u3002\u9f99\u82af\u5b98\u65b9\u6587\u732e\u5c06 7A2000 GPU \u79f0\u4f5c\u300c\u72ec\u663e\u300d\u7684\u53d8\u66f4\u662f\u67d0\u5929\u7a81\u7136\u53d1\u751f\u7684\uff0c\u4e14\u81f3\u4eca\u672a\u660e\u786e\u8be5\u672f\u8bed\u7684\u5168\u79f0\uff1b\u7b14\u8005\u4e2a\u4eba\u8ba4\u4e3a\u8fd9\u662f\u5ba3\u4f20\u4e0a\u538b\u4eba\u4e00\u5934\u7684\u6587\u5b57\u6e38\u620f\uff0c\u5176\u5b9e\u9645\u542b\u4e49\u4e3a\u300c\u72ec\u7acb\u663e\u5b58\u300d\u3002\u6bd5\u7adf\u867d\u7136 GSGPU \u4ecd\u7136\u53d7\u9650\u4e8e\u6838\u5fc3\u9762\u79ef\u3001\u4f9b\u7535\u7b49\u56e0\u7d20\u800c\u4e0d\u5982\u771f\u6b63\u7684\u300c\u72ec\u7acb\u663e\u5361\u300d\uff0c\u4f46\u7531\u4e8e\u72ec\u7acb\u663e\u5b58\u65b9\u6848\u80fd\u591f\u907f\u514d\u5171\u4eab\u7cfb\u7edf\u5185\u5b58\u7684\u96c6\u663e\u65b9\u6848\u5bf9\u5e38\u89c4\u5185\u5b58\u8bbf\u95ee\u7684\u5f71\u54cd\uff0c\u4ece\u800c\u4f7f\u5f97 GSGPU \u786e\u5b9e\u6709\u6f5c\u529b\u8d85\u8fc7\u8fd9\u79cd\u96c6\u663e\u7684\u6027\u80fd\u3002\uff08\u81f3\u4e8e\u4e24\u79cd\u65b9\u6848\u7684\u771f\u5b9e\u5bf9\u6bd4\uff0c\u7531\u4e8e\u9f99\u82af\u5927\u6982\u7387\u4e0d\u4f1a\u505a\u51fa\u5171\u4eab\u663e\u5b58\u7684 GSGPU \u4ee5\u4fbf\u63a7\u5236\u53d8\u91cf\uff0c\u4e5f\u5c31\u65e0\u4ece\u5b9e\u5730\u9a8c\u8bc1\u4e86\u3002\uff09\\n\\n:::info cl91 \u7684\u8bdd\\nGSGPU \u6765\u6e90\u4e8e\u9f99\u82af\u516c\u53f8\u7ef4\u62a4\u7684 v4.19 \u4e0b\u6e38\u5185\u6838\u3002\\n\u4e0e\u4e0a\u6e38\u5185\u6838 DRM \u5b50\u7cfb\u7edf\u4e2d\u7684 `loongson` \u9a71\u52a8\u76f8\u6bd4\uff0c\\nGSGPU \u5185\u6838\u6a21\u5757\u589e\u52a0\u4e86\u5b8c\u6574\u7684 3D \u786c\u4ef6\u76f8\u5173\u7684\u63a7\u5236\u4ee3\u7801\uff0c\\n\u5e76\u5411\u7528\u6237\u6001\u66b4\u9732\u4e86\u5b9e\u73b0 3D \u6e32\u67d3\u5fc5\u9700\u7684 GPU \u7f13\u51b2\u533a\u5bf9\u8c61\uff08buffer object\uff09\u63a5\u53e3\uff0c\\n\u4ee5\u53ca\u5411 GPU \u63d0\u4ea4\u6e32\u67d3\u4efb\u52a1\u7684\u76f8\u5173\u63a5\u53e3\u3002\\nGSGPU \u540c\u65f6\u8fd8\u5b9e\u73b0\u4e86\u7b14\u8bb0\u672c\u80cc\u5149\u76f8\u5173\u7684\u63a7\u5236\u63a5\u53e3\uff0c\u4e0e\u4e0a\u6e38 `loongson` DRM \u9a71\u52a8\u76f8\u6bd4\uff0c\\n\u53ef\u4ee5\u652f\u6301\u642d\u8f7d 7A2000 \u6865\u7247\u7684\u7b14\u8bb0\u672c\u7684\u80cc\u5149\u8c03\u8282\u3002\\n\\n\u5f53\u7136\u8981\u5b9e\u73b0\u9f99\u82af\u72ec\u663e\u7684 3D \u786c\u4ef6\u52a0\u901f\uff0c\u5149\u5185\u6838\u9a71\u52a8\u8fd8\u4e0d\u591f\uff0c\u8fd8\u9700\u8981\u7528\u6237\u7a7a\u95f4\u7684 mesa 3D \u9a71\u52a8\u3002\\n\u8fd9\u76ee\u524d\u8fd8\u4e0d\u5b58\u5728\u5f00\u6e90\u7684\u5b9e\u73b0\uff0c\u6240\u4ee5\u8fd8\u9700\u8981\u793e\u533a\u7684\u5171\u540c\u52aa\u529b\u3002\\n\u76ee\u524d\u4f7f\u7528\u4e0a\u6e38\u7684\u7528\u6237\u7a7a\u95f4\u9a71\u52a8\uff0c\u914d\u5408 2D \u8f6f\u4ef6\u6e32\u67d3\u53ef\u4ee5\u6b63\u5e38\u4f7f\u7528 X11 \u548c Wayland\uff08\u5f53\u7136\u4ec5\u9650\u4e8e2D\uff09\u3002\\n\u6709\u5174\u8da3\u7684\u670b\u53cb\uff0c\u7279\u522b\u662f\u5728 7A2000 \u7b14\u8bb0\u672c\u4e0a\u4f7f\u7528\u65b0\u4e16\u754c\u5185\u6838\u7684\u670b\u53cb\u4eec\u53ef\u4ee5\u5728[\u8fd9\u4e2a\u8bba\u575b\u8d34\u5b50](https://bbs.loongarch.org/d/303-gsgpu)\u627e\u5230\u66f4\u591a\u8be6\u60c5\u3002\\n:::\\n\\n## \u5f20\u8d34\u680f\\n\\n\u672c\u680f\u76ee\u53ef\u4f9b\u5f20\u8d34\u516c\u76ca\u6027\u8d28\u7684\u5404\u79cd\u4fe1\u606f\u3002\\n\\n* \u53cb\u60c5\u6269\u6563\uff1a[\u5b89\u540c\u5f00\u6e90\u793e\u533a\uff08AOSC\uff09][aosc]\u7684\u9f99\u67b6\u6784\u79fb\u690d\u4e3b\u7ebf\u5316\u5de5\u4f5c\u300c\u5408\u9f99\u300d\u4ecd\u5728\u5982\u706b\u5982\u837c\u8fdb\u884c\u4e2d\uff0c\\n \u6b64\u5de5\u4f5c\u5b8c\u6210\u540e\u9f99\u67b6\u6784\u5c06\u5347\u683c\u4e3a AOSC OS \u7684 Tier 1 \u67b6\u6784\u3002\\n \u6b22\u8fce\u540c\u5b66\u4eec\u8bd5\u7528\u3001\u53cd\u9988\uff0c\u4e5f\u6b22\u8fce\u6709\u5fd7\u4e4b\u58eb\u4e00\u540c\u52a0\u5165\uff08\u6c9f\u901a\u6e20\u9053\u8be6\u89c1 AOSC \u7f51\u7ad9\u76f8\u5173\u680f\u76ee\uff09\u3002\\n* 11 \u6708 11 \u65e5\uff0cAOSC \u7684\u65b0\u4e00\u671f\u53cc\u5468\u62a5\u300a\u5b89\u8bb0\u51b0\u5ba4\u30fb\u5341\u4e00\u6708\u4e0a\u300b[\u53d1\u5e03\u4e86](https://github.com/AOSC-Dev/newsroom/blob/b747c8e383b40695dce1fb9d7efbb19d64991d68/coffee-break/20231111/zh_CN.md)\uff0c\\n \u6b22\u8fce\u540c\u5b66\u4eec\u9605\u8bfb\u3002An English version [is also available](https://github.com/AOSC-Dev/newsroom/blob/b747c8e383b40695dce1fb9d7efbb19d64991d68/coffee-break/20231111/en.md).\\n* \u672c\u5468\u62a5[\u6301\u7eed\u63a5\u53d7\u7f51\u53cb\u6295\u7a3f][call-for-submissions]\u3002\u6b22\u8fce\u6765\u4e0a\u6e38\u5750\u5750\uff01\\n\\n[aosc]: https://aosc.io\\n[call-for-submissions]: https://github.com/loongson-community/areweloongyet/issues/16"},{"id":"this-week-in-loongarch-23","metadata":{"permalink":"/newsletter/this-week-in-loongarch-23","editUrl":"https://github.com/loongson-community/areweloongyet/newsletter/2023-11-06-this-week-in-loongarch-23.mdx","source":"@site/newsletter/2023-11-06-this-week-in-loongarch-23.mdx","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 23 \u671f","description":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01","date":"2023-11-06T10:40:00.000Z","formattedDate":"2023\u5e7411\u67086\u65e5","tags":[{"label":"\u6bcf\u5468\u4e00\u9f99","permalink":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99"}],"readingTime":12.335,"hasTruncateMarker":true,"authors":[{"name":"WANG Xuerui","title":"\ud83d\udc32\u9f99\u95e8\u5ba2\u6808\u6253\u6742\u7684","url":"https://github.com/xen0n","imageURL":"https://github.com/xen0n.png","key":"xen0n"}],"frontMatter":{"slug":"this-week-in-loongarch-23","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 23 \u671f","authors":["xen0n"],"date":"2023-11-06T10:40:00.000Z","tags":["\u6bcf\u5468\u4e00\u9f99"]},"unlisted":false,"prevItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 24 \u671f","permalink":"/newsletter/this-week-in-loongarch-24"},"nextItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 22 \u671f","permalink":"/newsletter/this-week-in-loongarch-22"}},"content":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01\\n\u4e0a\u5468\u7684\u8fdb\u5c55\u4e3b\u8981\u6709 LoongArch® ABI v2.20\u3001Linux\u3001GCC \u4ee5\u53ca LLVM\u3002\\n\u8be6\u60c5\u70b9\u8fdb\u6765\u770b\uff01\\n\\n{/* truncate */}\\n\\n\u5982\u65e0\u7279\u522b\u8bf4\u660e\uff0c\u6587\u4e2d\u63d0\u53ca\u7684\u65e5\u671f\u3001\u65f6\u95f4\u90fd\u4e3a\u5317\u4eac\u65f6\u95f4\uff08UTC+8\uff09\u3002\\n\\n## \u5148\u300c\u9a6c\u300d\u518d\u770b\\n\\n\u672c\u680f\u76ee\u7684\u5185\u5bb9\u5177\u6709\u4e00\u5b9a\u5ef6\u7eed\u6027\uff0c\u5c06\u6301\u7eed\u8ffd\u8e2a\u62a5\u9053 LoongArch® \u9886\u57df\u7684\u91cd\u8981\u6216\u957f\u671f\u9879\u76ee\uff08\u5751\uff09\u3002\\n\\n### Linux\\n\\n\u4e0a\u671f\u6211\u4eec\u7528\u8f83\u5927\u7684\u7bc7\u5e45[\u62a5\u9053\u4e86](./2023-10-30-this-week-in-loongarch-22.md#loongarch-r1p10)\\nLoongArch® v1.10 \u7684\u65b0\u589e\u7279\u6027\u3002\\n\u56e0\u6b64\u867d\u7136 Linux 6.6 \u4e5f\u5728\u4e0a\u5468\u6b63\u5f0f\u53d1\u5e03\u4e86\uff0c\u4f46\u6211\u4eec\u5e76\u672a\u9a6c\u4e0a\u8be6\u7ec6\u62a5\u9053\u3002\\n\u622a\u81f3\u76ee\u524d\uff0cLinux 6.7 \u7684\u5408\u5e76\u7a97\u53e3\u4ecd\u5728\u706b\u70ed\u5f00\u653e\u4e2d\uff0c\u800c\u9f99\u67b6\u6784\u7684\u53d8\u66f4\u76f8\u5bf9\u4e0d\u591a\uff1b\\n\u6211\u4eec\u53ef\u4ee5\u5148\u628a\u4e0a\u5468\u7684 Linux 6.6 \u5185\u5bb9\u8865\u4e0a\uff0c\u518d\u7b80\u5355\u8fc7\u4e00\u904d\u672c\u5468\u671f\u7684\u65b0\u529f\u80fd\u3002\\n\\n#### Linux 6.6\\n\\n\u6211\u4eec\u5728\u5468\u62a5\u7b2c 14 \u671f[\u6574\u7406\u8fc7\u4e86](./2023-09-04-this-week-in-loongarch-14.md#linux-6.6-loongarch-changes)\\nLinux 6.6 \u7684\u9f99\u67b6\u6784\u76f8\u5173\u53d8\u66f4\uff0c\u53ef\u65b9\u4fbf\u8df3\u8f6c\u9605\u8bfb\u3002\\n\\n\u9664\u6b64\u4e4b\u5916\u503c\u5f97\u4e00\u63d0\u7684\u662f\uff1a\u4ece\u8be5\u7248\u672c\u5f00\u59cb\uff0cLinux \u7684\u9ed8\u8ba4\u8c03\u5ea6\u7b97\u6cd5\u88ab\u91cd\u505a\u4e86\uff0c\\n\u4ece CFS\uff08completely fair scheduler\uff1b\u5b8c\u5168\u516c\u5e73\u8c03\u5ea6\u5668\uff09\\n\u53d8\u4e3a\u4e86[\u4e0a\u4e16\u7eaa\u4e5d\u5341\u5e74\u4ee3\u4e00\u7bc7\u8bba\u6587][eevdf-paper]\u63d0\u51fa\u7684\\nEEVDF\uff08earliest eligible virtual deadline first\uff1b\u6700\u65e9\u5230\u671f\u7684\u865a\u62df\u622a\u6b62\u65f6\u523b\u4f18\u5148\uff09\uff0cLWN \u5bf9\u6b64[\u505a\u4e86\u8bb2\u89e3][eevdf-lwn]\u3002\\n\u8be5\u6539\u9020\u7531\u8457\u540d Linux \u8c03\u5ea6\u5668\u7ef4\u62a4\u8005 Peter Zijlstra \u64cd\u5200\u3002\\n\\n\u7ecf\u793e\u533a\u6d4b\u8bd5\uff0cEEVDF \u8c03\u5ea6\u7b97\u6cd5\u80fd\u4ee5\u66f4\u5c11\u7684\u914d\u7f6e\u9879\uff0c\u5728\u5927\u591a\u6570\u573a\u666f\u4e0b\u5b9e\u73b0\u66f4\u9ad8\u7684\u516c\u5e73\u6027\u4e0e\u541e\u5410\uff1b\\n\u663e\u7136\uff0cCFS \u5e76\u4e0d\u300c\u5b8c\u5168\u516c\u5e73\u300d\uff0c\u5c3d\u7ba1\u5b83\u786e\u5b9e\u4e5f\u6bd4\u5b83\u7684\u524d\u4efb O(1) \u8c03\u5ea6\u5668\u66f4\u516c\u5e73\u4e9b\u3002\\n\u4f46\u4e5f\u4e0d\u6392\u9664\u4e2a\u522b\u573a\u666f\u7531\u4e8e\u53d7\u76ca\u4e8e\u5148\u524d CFS \u7b97\u6cd5\u7684\u4e0d\u516c\u5e73\uff0c\u800c\u5728\u65b0\u5185\u6838\u53cd\u800c\u6027\u80fd\u52a3\u5316\uff0c\u50cf\u662f\u53d7\u4e86 EEVDF \u60e9\u7f5a\u4e00\u6837\u3002\\n\u8bf7\u90a3\u4e9b\u9700\u8981\u6216\u8005\u5df2\u7ecf\u8feb\u8fd1\u7cfb\u7edf\u6027\u80fd\u6781\u9650\u7684\u5f00\u53d1\u8005\u548c\u7528\u6237\u4eec\u6ce8\u610f\uff1a\u5347\u7ea7\u5185\u6838\u524d\u91cd\u65b0\u8dd1\u8dd1\u538b\u6d4b\u3002\\n\\n[eevdf-paper]: https://citeseerx.ist.psu.edu/document?repid=rep1&type=pdf&doi=805acf7726282721504c8f00575d91ebfd750564\\n[eevdf-lwn]: https://lwn.net/Articles/925371/\\n\\n\u9664\u4ee5\u4e0a\u53d8\u66f4\u4e4b\u5916\uff0c\u8fd8\u6709\u8bb8\u591a\u540c\u7b49\u91cd\u8981\u7684\u7f3a\u9677\u4fee\u590d\u3001\u4ee3\u7801\u91cd\u6784\u7b49\u5de5\u4f5c\u503c\u5f97\u8912\u626c\u3002\\n\u8fd9\u4e2a\u7248\u672c\u52a8\u8fc7\u9f99\u82af\u76f8\u5173\u4ee3\u7801\u7684\u6240\u6709\u5f00\u53d1\u8005\u4eec\uff08\u6309\u5b57\u6bcd\u987a\u5e8f\u6392\u5e8f\uff0c\u4ee5 Git \u63d0\u4ea4\u8bb0\u5f55\u4e2d\u7684\u4f5c\u8005\u5b57\u6bb5\u4e3a\u51c6\uff09\uff1a\\n\\nimport ColumnedList from \'@site/src/components/ColumnedList\'\\n\\n\\n* Andy Shevchenko\\n* Aneesh Kumar K.V\\n* Baoquan He\\n* Bibo Mao\\n* Binbin Zhou\\n* Costa Shulyupin\\n* Dan Carpenter\\n* Enze Li\\n* Eric DeVolder\\n* Feiyang Chen\\n* Helge Deller\\n* Hongchen Zhang\\n* Huacai Chen\\n* Icenowy Zheng\\n* Jiri Slaby\\n* Keguang Zhang\\n* Maciej W. Rozycki\\n* Matthew Wilcox (Oracle)\\n* Mingtong Bao\\n* Nathan Chancellor\\n* Nick Desaulniers\\n* Paul E. McKenney\\n* Qi Hu\\n* Qing Zhang\\n* Russell King (Oracle)\\n* Sui Jingfeng\\n* Thomas Zimmermann\\n* Tiezhu Yang\\n* Tom Rix\\n* Vishal Moola (Oracle)\\n* WANG Xuerui\\n* Weihao Li\\n* Yanteng Si\\n* Yinbo Zhu\\n* YingKun Meng\\n* Zhangjin Wu\\n\\n\\n\u8fd9\u4e9b\u7ef4\u62a4\u5de5\u4f5c\u6db5\u76d6\u4e86 MIPS \u548c\u9f99\u67b6\u6784\u4e24\u4e2a\u65f6\u4ee3\u7684\u9f99\u82af CPU\uff0c\u4ee5\u53ca\u67b6\u6784\u65e0\u5173\u7684\u5927\u91cf\u9f99\u82af\u5e73\u53f0\u5916\u8bbe\u9a71\u52a8\u3002\\n\u5f53\u4f60\u5728\u9f99\u82af\u786c\u4ef6\u4e0a\u4f7f\u7528 Linux 6.6 \u65f6\uff0c\u522b\u5fd8\u4e86\u5411 :ta: \u4eec\u8bf4\u58f0\u8c22\u8c22\uff01\\n\\n:::info\\n\u672c\u8282\u62a5\u9053\u7684\u4fe1\u606f\u53ef\u4ee5\u901a\u8fc7\u7b80\u5355\u7684 `git` \u64cd\u4f5c\u4ece Linux \u4ed3\u5e93\u4e2d\u83b7\u53d6\uff1a\\n\\n```sh\\ngit log --no-merges -P --grep=\'(?\u8bed\u4e49\u5316\u7248\u672cSemantic Versioning](https://semver.org/lang/zh-CN/)\u3001[\u65e5\u5386\u5316\u7248\u672cCalendar Versioning](https://calver.org/overview_zhcn.html)\u7b49\u7b49\u7cbe\u786e\u5b9a\u4e49\u7684\u65b9\u6848\uff0c\u6211\u4eec\u8fd8\u662f\u5c06\u5176\u79f0\u4f5c `v1.10`\uff1a\u8fd9\u6837\u81f3\u5c11\u6b21\u7248\u672c\u53f7\uff08minor version\uff09\u5b57\u6bb5\u7684\u5bbd\u5ea6\u90fd\u4e00\u81f4\uff0c\u56e0\u800c\u80fd\u591f\u660e\u786e\u662f\u4ee5 ASCII \u6392\u5e8f\u6765\u786e\u5b9a\u7248\u672c\u5148\u540e\u6b21\u5e8f\u4e86\u3002\u81f3\u4e8e\u672a\u6765\uff0c\u53ef\u80fd\u8fd8\u662f\u8f6c\u5411\u7cbe\u786e\u7684\u7248\u672c\u53f7\u65b9\u6848\u4f1a\u8282\u7701\u4e9b\u7406\u89e3\u6c9f\u901a\u6210\u672c\uff01\\n\\n### \u53d8\u66f4\u5185\u5bb9\\n\\n\u4e3a\u65b9\u4fbf\u9605\u8bfb\uff0c\u73b0\u6458\u5f55\u300a\u9f99\u82af\u67b6\u6784\u53c2\u8003\u624b\u518c\u300b\u5377\u4e00 1.5.1 \u8282\uff08LoongArch V1.1[^\u6ce8\u4e00] \u7248\u672c\u65b0\u589e\u5185\u5bb9\uff09\u5982\u4e0b\uff1a\\n\\n1. \u65b0\u589e\u8fd1\u4f3c\u6c42\u89e3\u6d6e\u70b9\u6570\u5f00\u6839\u548c\u6d6e\u70b9\u6570\u5f00\u6839\u6c42\u5012\u6570\u6307\u4ee4\uff0c\\n \u5305\u62ec\u6807\u91cf\u8fd0\u7b97\u7684 `FRECIPE.S`\u3001`FRECIPE.D`\u3001`FRSQRTE.S`\u3001`FRSQRTE.D` \u6307\u4ee4\uff0c128\\n \u4f4d SIMD \u8fd0\u7b97\u7684 `VFRECIPE.S`\u3001`VFRECIPE.D`\u3001`VFRSQRTE.S`\u3001`VFRSQRTE.D` \u6307\u4ee4\\n \u548c 256 \u4f4d SIMD \u8fd0\u7b97\u7684 `XVFRECIPE.S`\u3001`XVFRECIPE.D`\u3001`XVFRSQRTE.S`\u3001`XVFRSQRTE.D`\\n \u6307\u4ee4\u3002\\n2. \u65b0\u589e `SC.Q` \u6307\u4ee4\u3002\\n3. \u65b0\u589e `LLACQ.W`\u3001`SCREL.W`\u3001`LLACQ.D`\u3001`SCREL.D` \u6307\u4ee4\u3002\\n4. \u65b0\u589e `AMCAS.B`\u3001`AMCAS.H`\u3001`AMCAS.W`\u3001`AMCAS.D`\u3001`AMCAS_DB.B`\u3001`AMCAS_DB.H`\u3001`AMCAS_DB.W`\u3001`AMCAS_DB.D`\u3001`AMSWAP.B`\u3001`AMSWAP.H` \u6307\u4ee4\u3002\\n5. \u65b0\u589e `AMADD.B`\u3001`AMADD.H`\u3001`AMSWAP_DB.B`\u3001`AMSWAP_DB.H`\u3001`AMADD_DB.B`\u3001`AMADD_DB.H` \u6307\u4ee4\u3002\\n6. \u589e\u52a0 `dbar` \u6307\u4ee4\u90e8\u5206\u975e\u96f6 hint \u503c\u7684\u529f\u80fd\u5b9a\u4e49\u3002\\n7. \u65b0\u589e 64 \u4f4d\u673a\u5668\u4e0a\u6267\u884c 32 \u4f4d\u6574\u6570\u9664\u6cd5\u6307\u4ee4\u662f\u5426\u53d7\u6e90\u64cd\u4f5c\u6570\u5bc4\u5b58\u5668\u9ad8 32 \u4f4d\u503c\u5f71\u54cd\u7684\u5224\u5b9a\u65b9\u5f0f\u3002\\n8. \u89c4\u8303\u76f8\u540c\u5730\u5740 load \u8bbf\u5b58\u64cd\u4f5c\u987a\u5e8f\u6267\u884c\u884c\u4e3a\u5224\u5b9a\u65b9\u5f0f\u3002\\n9. \u589e\u52a0\u6d88\u606f\u4e2d\u65ad\u7684\u5b9a\u4e49\u3002\\n10. \u5141\u8bb8\u5b9e\u73b0\u786c\u4ef6\u9875\u8868\u904d\u5386\u3002\\n\\n:::info \u7248\u6743\u5185\u5bb9\u5408\u7406\u4f7f\u7528\u58f0\u660e\\n\u300a\u624b\u518c\u300b\u660e\u786e\u4fdd\u7559\u6240\u6709\u6743\u5229\u4e14\u7981\u6b62\u975e\u7ecf\u4e66\u9762\u8bb8\u53ef\u7684\u8f6c\u8f7d\u3002\\n\u4f46\u6839\u636e[\u300a\u4e2d\u534e\u4eba\u6c11\u5171\u548c\u56fd\u8457\u4f5c\u6743\u6cd5\u300b](https://www.gov.cn/guoqing/2021-10/29/content_5647633.htm)\u7b2c\u4e8c\u5341\u56db\u6761\u7b2c\u4e00\u6b3e\u7b2c\u4e00\u9879\u3001\u7b2c\u4e8c\u9879\uff0c\\n\u6211\u4eec\u786e\u4fe1\u4ee5\u4e0a\u5bf9\u300a\u624b\u518c\u300b\u5185\u5bb9\u7684\u6458\u6284\u5c5e\u4e8e\u5408\u7406\u4f7f\u7528\u8303\u7574\uff0c\u4e0d\u53d7\u300a\u624b\u518c\u300b\u7248\u6743\u58f0\u660e\u7ea6\u675f\u3002\\n:::\\n\\n### \u4e3b\u7f16\u70b9\u8bc4\\n\\n\u6309\u7167\u539f\u6587\u5217\u8868\u7f16\u53f7\u770b\uff0c\u8bf4\u662f 10 \u6761\u53d8\u66f4\uff0c\u5176\u5b9e\u5206\u7c7b\u6709\u70b9\u592a\u8fc7\u6241\u5e73\u4e86\uff1a\\n\u6bd4\u65b9\u8bf4\u5176\u4e2d 6 \u6761\u90fd\u4e0e\u539f\u5b50\u64cd\u4f5c\u6709\u5173\uff0c\u4e14 2\u30013 \u4e24\u6761\u90fd\u5c5e\u4e8e LL/SC \u64cd\u4f5c\u8303\u7574\uff0c5\\n\u4e2d\u7684\u539f\u5b50\u4ea4\u6362\u64cd\u4f5c\u4e5f\u4e0d\u77e5\u4e3a\u4f55\u6ca1\u653e\u5165 4\u3002\\n\u90a3\u4e48\u5148\u629b\u5f00\u8fd9\u4e9b\u884c\u6587\u7ec6\u8282\uff0c\u5b8f\u89c2\u6765\u770b\uff0c\u5927\u7684\u53d8\u66f4\u4e3b\u8981\u6709\u4ee5\u4e0b\u51e0\u4e2a\u65b9\u9762\uff1a\\n\\n* \u540c\u6b65/\u539f\u5b50\u64cd\u4f5c\u80fd\u529b\uff0c\u5f97\u5230\u4e86\u4e00\u8f6e\u76f8\u5f53\u7684\u8fed\u4ee3\u3001\u4f18\u5316\uff08\u7b2c 2\u30013\u30014\u30015\u30016\u30018 \u6761\uff09\uff1b\\n* \u4ee5\u6b63\u5f0f\u6587\u5b57\u5f62\u5f0f\uff0c\u53d8\u76f8\u627f\u8ba4\u4e86\u521d\u4ee3 LoongArch® \u786c\u4ef6\u4e8b\u5b9e\u4e0a\u7684\u5947\u8469\u5751\u70b9\uff0c\u53ca\u5982\u4f55\u65b9\u4fbf\u5224\u65ad\u8be5\u5751\u662f\u5426\u5b58\u5728\uff08\u7b2c 7 \u6761\uff09\uff1b\\n* \u5728\u7279\u6743\u67b6\u6784\u65b9\u9762\uff0c\u505a\u4e86\u66f4\u591a\u6027\u80fd\u4f18\u5316\u7684\u5c1d\u8bd5\uff08\u7b2c 9\u300110 \u6761\uff09\uff1b\\n* \u53ef\u80fd\u51fa\u4e8e\u7279\u5b9a\u5e94\u7528\u573a\u666f\u9700\u8981\uff0c\u65b0\u589e\u4e86\u4e00\u5957\u66f4\u5feb\u7684\u5f00\u6839\u53f7\u3001\u5f00\u6839\u53f7\u540c\u65f6\u6c42\u5012\u6570\u7684\u64cd\u4f5c\uff08\u7b2c 1 \u6761\uff09\u3002\\n\\n\u8bf4\u5230\u539f\u5b50\u64cd\u4f5c\uff1a\u5f53\u4ee3\u8f6f\u4ef6\u5df2\u7ecf\u6df1\u5ea6\u4f9d\u8d56\u591a\u6838\u3001\u5e76\u884c\u64cd\u4f5c\uff0c\\n\u800c\u6bcf\u4e2a\u5904\u7406\u5668\u6838\u5f80\u5f80\u4e5f\u6df1\u5ea6\u4e71\u5e8f\u6267\u884c\u4ee5\u4fdd\u8bc1\u5355\u7ebf\u7a0b\u6027\u80fd\uff1b\\n\u4e3a\u5728\u8fd9\u6837\u6076\u52a3\u7684\u73af\u5883\u4e0b\u4fdd\u6301\u7a0b\u5e8f\u8bed\u4e49\u6b63\u786e\uff0c\\n\u5185\u5b58\u6a21\u578b\u2014\u2014\u53ef\u4ee5\u7b80\u5355\u7406\u89e3\u4e3a\u5177\u4f53\u7cfb\u7edf\u4e0a\u6240\u6709\u5904\u7406\u5668\u6838\u8bbf\u5b58\u526f\u4f5c\u7528\u7684\u7cbe\u786e\u63cf\u8ff0\u2014\u2014\u5176\u91cd\u8981\u6027\u52ff\u5eb8\u8d58\u8a00\u3002\\n\u8fd9\u4e9b\u4f18\u5316\u5f53\u7136\u662f LA664 \u76f8\u6bd4\u524d\u4ee3\u5fae\u67b6\u6784\u80fd\u591f\u53d6\u5f97\u6574\u4f53\u4e24\u4f4d\u6570\u767e\u5206\u6bd4\u6027\u80fd\u63d0\u5347\u7684\u91cd\u8981\u57fa\u7840\uff1a\\n\u5370\u8c61\u4e2d\u5355\u7eaf\u4e0a\u6587\u7b2c 6 \u6761\u7684\u7ec6\u7c92\u5ea6 `dbar` \u6539\u8fdb\uff0c\u5728\u5185\u6838\u9002\u914d\u540e\uff0c\u5c31\u8fbe\u6210\u4e86 10% \u8fd8\u662f 20% \u7684\u63d0\u5347\u3002\\n\u5b9e\u9645\u4e0a\uff0c\u76ee\u524d\u8fd9\u65b9\u9762\u5e94\u8be5\u4e5f\u53ea\u6709\u7b2c 6 \u6761\u88ab\u5b9e\u73b0\u4e86\uff1a\u56e0\u4e3a\u53ea\u6709\u5b83\u80fd\u591f\u5411\u4e0b\u517c\u5bb9\u8f83\u65e9\u7684\u5904\u7406\u5668\u578b\u53f7\u3002\\n\u5982\u679c\u5728\u5177\u4f53\u573a\u666f\u80fd\u591f\u4e0d\u8003\u8651\u65e7\u5904\u7406\u5668\u578b\u53f7\u800c\u751f\u6210\u673a\u5668\u8bed\u8a00\u7684\u8bdd\uff0c\u4f18\u5316\u7a0b\u5ea6\u53ea\u4f1a\u66f4\u9ad8\u3002\\n\\n\u8bf4\u5230\u7b2c 7 \u6761\u7684\u5751\uff1a\u8003\u8651\u5230\u9f99\u82af\u516c\u53f8\u7684\u56e2\u961f\u89c4\u6a21\u3001\u6295\u5165\u8d44\u91d1\u4e4b\u53ef\u601c\uff0c\u4ee5\u53ca\u521d\u4ee3\\nLoongArch® \u63a8\u51fa\u4e4b\u4ed3\u4fc3\uff0c\\n\u591a\u5c11\u634f\u51fa\u51e0\u4e2a bugs \u5176\u5b9e\u4e5f\u65e0\u53ef\u539a\u975e\uff0c\u6ca1\u4ec0\u4e48\u55b7\u70b9\uff1a\u6ca1 bug \u624d\u4e0d\u5bf9\u52b2\u5462\uff01\\n\u8fd9 `div.w` \u7cfb\u5217\u6307\u4ee4\uff08\u5377\u4e00\u7b2c 2.2.1.13 \u8282\uff09\uff0c\u4f5c\u4e3a\u4e00\u5957 32 \u4f4d\u64cd\u4f5c\uff0c\u5374\u4e0e\u6574\u4e2a LoongArch®\\n\u5176\u4f59 32 \u4f4d\u64cd\u4f5c\u884c\u4e3a\u90fd\u4e0d\u540c\uff1a\\n\u5c45\u7136\u4ecd\u7136\u4f1a\u770b\u5165\u53c2\u7684\u9ad8 32 \u4f4d\uff0c\u4e0d\u662f\u7b26\u53f7\u6269\u5c55\u5c31\u8f93\u51fa\u5783\u573e\u7ed3\u679c\u2014\u2014\u867d\u7136\u4e0d\u505a 64 \u4f4d\u8fd0\u7b97\uff0c\u4f46\u8fd8\u5f97\u7167 64 \u4f4d\u51c6\u5907\uff01\\n\u8fd9\u4f30\u8ba1\u662f\u6e90\u81ea\u6700\u65e9\u671f MIPS \u4e58\u9664\u6cd5\u5668\u4e0e\u6d41\u6c34\u7ebf\u5206\u79bb\u7684\u5386\u53f2\u5305\u88b1\uff1aMIPS \u7684 32 \u4f4d\u4e58\u9664\u6cd5\u6307\u4ee4\u90fd\u6709\u76f8\u540c\u9650\u5236\u3002\\n\u9f99\u67b6\u6784\u7684 32 \u4f4d\u4e58\u6cd5\u672a\u53d7\u5f71\u54cd\uff0c\u4f46\u9664\u6cd5\u3001\u53d6\u4f59\u7684\u5177\u4f53\u5b9e\u73b0\u4e0d\u5e78\u4e0e MIPS \u884c\u4e3a\u4e00\u81f4\u4e86\u3002\\n\u663e\u7136\u8bbe\u8ba1\u5e08\u4eec\u5e76\u4e0d\u8ba4\u4e3a\u8fd9\u5f88\u5408\u7406\u2014\u2014\u8981\u4e0d\u7136\u4e5f\u4e0d\u4f1a\u5728 LA664 \u5c31\u6539\u6389\u4e86\uff1b\\n\u4f46\u65e7\u7684\u578b\u53f7\u624d\u53d1\u552e\u6ca1\u591a\u4e45\uff0c\u8fd8\u5f97\u7ee7\u7eed\u652f\u6301\uff0c\u4e8e\u662f\u65b0\u7248\u624b\u518c\u5e76\u6ca1\u6709\u4fee\u6539\u7b2c 2.2.1.13 \u8282\u7684\u5185\u5bb9\uff0c\\n\u800c\u662f\u5728\u7b2c 2.2.10.5 \u8282 CPUCFG \u6570\u636e\u7684\u4ecb\u7ecd\u4e2d\u63d0\u4e86\u4e00\u5634\uff1a\\n\u53ef\u4ee5\u770b `CPUCFG.0x2.DIV32[bit26]` \u6765\u786e\u5b9a\u5f53\u524d\u5904\u7406\u5668\u662f\u5426\u53d7\u6b64\u5751\u5f71\u54cd\u3002\\n\\n\u7b14\u8005\u9884\u8ba1\u76f8\u5f53\u957f\u7684\u4e00\u6bb5\u65f6\u95f4\u91cc\uff0c\u4f30\u8ba1\u90fd\u53ea\u6709 JIT \u8fd0\u884c\u65f6\u80fd\u4ece\u4e2d\u53d7\u76ca\uff1a\\n\u548c\u4e0a\u6587\u7684\u539f\u5b50\u64cd\u4f5c\u65b0\u6307\u4ee4\u4e00\u6837\uff0c\u60f3\u8981\u6574\u4e2a\u7cfb\u7edf\u90fd\u7528\u4e0a\u8fd9\u51e0\u4e2a\u64cd\u4f5c\u7684\u6b63\u5e38\u3001\u5bbd\u677e\u8bed\u4e49\uff0c\\n\u5c31\u610f\u5473\u7740\u5931\u53bb\u524d\u4ee3\u4ea7\u54c1\u7684\u517c\u5bb9\u6027\u3002\\n\u56e0\u4e3a 32 \u4f4d\u9664\u6cd5\u3001\u53d6\u4f59\u64cd\u4f5c\u662f\u5982\u6b64\u7684\u57fa\u7840\uff0c\u5982\u679c\u6bcf\u7528\u4e00\u6b21\u4e4b\u524d\u90fd\u8981\u52a8\u6001\u68c0\u67e5 CPU \u7279\u6027\uff0c\\n\u90a3\u6027\u80fd\u4e0d\u582a\u8bbe\u60f3\u3002\\n\u4f46 JIT \u7f16\u8bd1\u5668\u4e0d\u4e00\u6837\uff1a\u5b83\u52a8\u6001\u751f\u6210\u7684\u4ee3\u7801\u5e76\u4e0d\u53d7\u5b83\u81ea\u8eab\u9650\u5236\uff0c\u56e0\u6b64\u5b8c\u5168\u53ef\u4ee5\u505a\u5230\u52a8\u6001\u63a2\u67e5\u4e00\u6b21\\nCPU \u7279\u6027\uff0c\u540e\u7eed\u636e\u6b64\u751f\u6210\u3001\u8fd0\u884c\u5bf9\u5f53\u524d\u7cfb\u7edf\u6700\u4f18\u5316\u7684\u673a\u5668\u8bed\u8a00\uff0c\u800c\u81ea\u8eab\u5219\u4fdd\u6301\u4e0e\u6700\u517c\u5bb9\u7684\u57fa\u7ebf\u5bf9\u9f50\u3002\\n\\n\u65e2\u7136\u63d0\u5230\u4e86\u786c\u4ef6\u7684\u5751\uff0c\u90a3\u4e48\u5176\u5b9e\u4e5f\u4e0d\u5f97\u4e0d\u5410\u69fd\u4e0b\u7b2c 10 \u6761\u8fd9\u4e2a\u786c\u4ef6\u9875\u8868\u904d\u5386\u673a\u6784\uff1a\\n\u81f3\u5c11\u5728\u7b14\u8005\u62ff\u5230\u7684\u7b2c\u4e00\u6279 3A6000 \u677f\u5b50\u4e0a\uff0c\u8fd9\u4e2a\u529f\u80fd\u4f30\u8ba1\u88ab\u56fa\u4ef6\u7981\u7528\u4e86\uff1b\\n\u76f8\u5e94\u7684 CPUCFG \u6807\u5fd7\u4f4d\u8bfb\u51fa\u6765\u662f 0\uff0c\u5185\u6838\u5b9e\u9645\u4e5f\u6ca1\u7528\u4e0a\u3002\\n\u4e0d\u6e05\u695a\u524d\u51e0\u5929\u53d1\u552e\u7684\u91cf\u4ea7\u6279\u6b21\u8fd8\u6709\u6ca1\u6709\u8fd9\u95ee\u9898\uff1a\\n\u5982\u679c\u8fd9\u4e9b\u677f\u5b50\u4e0a\u8fd9\u6807\u5fd7\u4f4d\u4e5f\u662f 0\uff0c\\n\u90a3\u4f30\u8ba1 3A6000 \u8fd9\u4e2a\u673a\u6784\u5c31\u662f\u6709\u4ec0\u4e48\u5751\uff0c\u5bfc\u81f4\u7528\u4e0d\u8d77\u6765\u4e86\u3002\\n\u4e0d\u8fc7\u4e5f\u65e0\u4f24\u5927\u96c5\uff1a\u5176\u4ed6\u65b9\u9762\u7684\u6539\u8fdb\u5b9e\u5728\u592a\u5927\u4e86\uff0c\u7455\u4e0d\u63a9\u745c\u2014\u2014\u7b49\u4e0b\u4e2a\u6279\u6b21\u6216\u8005\u4e0b\u4e00\u4ee3\u4ea7\u54c1\u5427\uff01\\n\\n\u8bf4\u56de\u7b2c 9 \u6761\uff0c\u8fd9\u4e2a\u5e94\u8be5\u6ca1\u5751\u4e86\u2014\u2014\u4e5f\u4e0d\u4e00\u5b9a\uff1b\u56e0\u4e3a\u76ee\u524d Linux \u5185\u6838\u5e76\u6ca1\u6709\u52a0\u5165\u76f8\u5173\u652f\u6301\u3002\\n\u4e0d\u8fc7\u624b\u518c\u65e2\u7136\u653e\u51fa\u4e86\uff0c\u5185\u6838\u5c42\u9762\u8fd9\u4e2a\u7279\u6027\u4e5f\u80fd\u505a\u5230\u5411\u540e\u517c\u5bb9\uff0c\u90a3\u4e48\u5c31\u671f\u5f85\u63a5\u4e0b\u6765\u4e00\u4e24\u4e2a\u5468\u671f\u5b83\u80fd\u5f97\u5230\u652f\u6301\u5427\u3002\\n\\n\u6700\u540e\u662f\u7b2c 1 \u6761\u8fd9\u4e00\u5957\u6d6e\u70b9\u8fd0\u7b97\u4f18\u5316\uff1a\\n\u7b14\u8005\u5b9e\u6d4b\u4e86 `frsqrte.s` \u6307\u4ee4\u6bd4[\u8457\u540d\u7684 *Quake III Arena*\u300a\u96f7\u795e\u4e4b\u9524 3 \u7ade\u6280\u573a\u300b \u5feb\u901f\u5e73\u65b9\u5012\u6570\u7b97\u6cd5](https://en.wikipedia.org/wiki/Fast_inverse_square_root)\u7cbe\u786e\uff0c\\n\u4e14\u4e0d\u662f\u5355\u7eaf\u5c06\u8fd9\u4e2a\u7ecf\u5178\u7b97\u6cd5\u6700\u540e\u4e00\u6b65\u7684 Newton \u8fed\u4ee3\u591a\u8dd1\u4e00\u4e24\u8f6e\u90a3\u4e48\u7b80\u5355\u3002\\n\u5177\u4f53\u7528\u7684\u5565\u7b97\u6cd5\u76ee\u524d\u4e0d\u77e5\u9053\uff0c\u6bd5\u7adf\u7b14\u8005\u6ca1\u7cbe\u529b\u5bf9\u5904\u7406\u5668\u8bbe\u8ba1\u9886\u57df\u7684\u524d\u6cbf\u8bba\u6587\u4fdd\u6301\u5173\u6ce8\uff1b\\n\u5feb\u5c31\u5b8c\u4e8b\u4e86\uff01\\n\u8fd9\u4e9b\u64cd\u4f5c\u867d\u7136\u4e0d\u5982 IEEE 754 \u89c4\u8303\u4e0a\u8981\u6c42\u7684\u90a3\u4e48\u7cbe\u786e\uff0c\u4f46\u80dc\u5728\u6267\u884c\u5feb\uff1a\u8fd9\u5bf9 3D \u6e32\u67d3\u3001\\n\u7269\u7406\u5f15\u64ce\u3001\u7c97\u6d45\u7684\u6570\u503c\u6a21\u62df\uff0c\u4e4b\u7c7b\u7cbe\u5ea6\u8981\u6c42\u4e0d\u90a3\u4e48\u9ad8\u7684\u573a\u666f\u90fd\u662f\u597d\u4e8b\u3002\\n\u4e0d\u8fc7\u9f99\u67b6\u6784\u8fd9\u4e2a\u53d1\u660e\u6bd4\u8f83\u6709\u5f00\u521b\u6027\uff0c\u4ee5\u81f3\u4e8e\u4ece\u76ee\u524d\u7684\u7f16\u7a0b\u8bed\u8a00\u90fd\u4e0d\u592a\u5bb9\u6613\u8c03\u7528\u5b83\u4eec\uff0c\\n\u975e\u5f97\u624b\u5199\u70b9\u6c47\u7f16\u4e0d\u53ef\uff1b\\n\u6709\u5174\u8da3\u7684\u540c\u5b66\u53ef\u4ee5\u770b\u770b\u80fd\u4e0d\u80fd\u7ed9\u4f60\u7231\u7528\u7684\u6570\u5b66\u3001\u56fe\u5f62\u5b66\u8f6f\u4ef6\u63d0 PR \u52a0\u652f\u6301\u4e86\uff01\\n\\n\u603b\u4e4b\uff0c\u8fd9\u6b21\u66f4\u65b0\u5bf9\u6027\u80fd\u63d0\u5347\u884c\u4e4b\u6709\u6548\uff0c\u5bf9\u7fa4\u4f17\u6298\u817e\u5341\u5206\u53cb\u597d\uff0c\u76f8\u4fe1\u5b83\u80fd\u6210\u4e3a\u4f17\u53d1\u70e7\u53cb\u591a\u5e74\u540e\u7684\u7f8e\u597d\u56de\u5fc6\uff08\u4e5f\u53ef\u80fd\u4e0d :smiling_imp:\uff09\u3002\\n\\n## \u5148\u300c\u9a6c\u300d\u518d\u770b\\n\\n\u672c\u680f\u76ee\u7684\u5185\u5bb9\u5177\u6709\u4e00\u5b9a\u5ef6\u7eed\u6027\uff0c\u5c06\u6301\u7eed\u8ffd\u8e2a\u62a5\u9053 LoongArch® \u9886\u57df\u7684\u91cd\u8981\u6216\u957f\u671f\u9879\u76ee\uff08\u5751\uff09\u3002\\n\\n### Linux\\n\\nLinux 6.6 \u6b63\u5f0f\u7248[\u5df2\u7ecf\u53d1\u5e03](https://lore.kernel.org/lkml/CAHk-=wiZuU984NWVgP4snp8sEt4Ux5Mp_pxAN5MNV9VpcGUo+A@mail.gmail.com/)\u3002\\n\u672c\u5468\u548c\u4e0b\u5468\u662f Linux 6.7 \u7684\u5408\u5e76\u7a97\u53e3\uff1b\\n\u76ee\u524d\u9f99\u67b6\u6784\u5206\u652f\u4ecd\u7136\u4fdd\u6301\u5728\u53ea\u6709 KVM \u8865\u4e01\u7684\u72b6\u6001\uff0c\u7b49\u5f85 KVM \u7ef4\u62a4\u8005\u7684\u62c9\u53d6\u3002\\n\u4e0d\u7528\u6025\uff1a\u6709\u4e24\u5468\u65f6\u95f4\uff0c\u5e76\u4e14\u672c\u8eab\u9f99\u82af\u4e5f\u4e60\u60ef\u5728\u7b2c\u4e8c\u5468\u7684\u5468\u4e94\u53d1\u51fa PR\uff0c\u4e89\u53d6\u591a\u70b9\u5b8c\u5584\u4ee3\u7801\u7684\u65f6\u95f4\u3002\\n\\n### \u5de5\u5177\u94fe\\n\\n#### binutils\\n\\nJiajie Chen [\u7814\u7a76\u5b8c](https://github.com/jiegec/la-inst) 3A6000 \u5f7c\u65f6\u5c1a\u672a\u516c\u5f00\u7684\u6307\u4ee4\u4e4b\u540e\uff0c\\n\u4e00\u770b\u5230 LoongArch v1.10 \u6b63\u5f0f\u516c\u5e03\uff0c\\n\u4e24\u5929\u540e\u7684 10 \u6708 25 \u53f7\u5c31[\u638f\u51fa\u4e86](https://sourceware.org/pipermail/binutils/2023-October/130139.html)\u7ed9\\nbinutils \u65b0\u589e\u8fd9\u4e9b\u6307\u4ee4\u6c47\u7f16\u3001\u53cd\u6c47\u7f16\u652f\u6301\u7684\u8865\u4e01\uff08\u5f53\u7136\u53ea\u505a\u4e86\u6b63\u5f0f\u89c1\u8bf8\u6587\u6863\u7684\u90a3\u90e8\u5206\uff09\u3002\\n\u6770\u54e5\u5a01\u6b66\uff01\\n\u611f\u8c22 xry111 \u63d0\u4f9b\u65b0\u95fb\u7ebf\u7d22\u3002\\n\\n#### gcc\\n\\n\u6b63\u5728\u7b14\u8005\u9f9f\u901f\u8d76\u7a3f\u4e4b\u9645\uff0cXi Ruoyao\\n[\u4fee\u590d\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-October/634687.html)\u4ea4\u53c9\u6c47\u7f16\u5668\u5c31\u7eea\u524d\uff0c\\n\u6784\u5efa\u4ea4\u53c9\u7f16\u8bd1\u5668\u4f1a\u5931\u8d25\u7684\u95ee\u9898\u3002\\n\\n#### LLVM\\n\\n[\u4e0a\u671f\u62a5\u9053\u8fc7\u7684](./2023-10-23-this-week-in-loongarch-21.md#llvm) FCC \u642c\u8fd0\u652f\u6301\u8865\u4e01\uff0c\\n10 \u6708 27 \u65e5[\u88ab\u79fb\u690d\u56de\u4e86](https://github.com/llvm/llvm-project-release-prs/pull/746) LLVM 17 \u5206\u652f\u3002\\n\\n:::tip \u82b1\u7d6e\\n\u770b\u8bc4\u8bba\u533a\uff0c\u8fd9\u4e2a bug \u662f\u4e0b\u6e38\u6709\u4eba\u7f16\u8bd1 UE4\uff08\u5927\u540d\u9f0e\u9f0e\u7684\u865a\u5e7b\u56db\u6e38\u620f\u5f15\u64ce\uff09\u53d1\u73b0\u7684\uff1b\\n\u800c LLVM 17 \u7cfb\u5217\u7684\u53d1\u7248\u7ba1\u7406\u5458\u5728 Ubisoft\uff08\u80b2\u78a7\uff09\u7684\u5de5\u5177\u94fe\u90e8\u95e8\u5de5\u4f5c\u3002\\n\u6e38\u620f\u63a8\u52a8\u5148\u8fdb\u751f\u4ea7\u529b\uff01\\n:::\\n\\n## \u6742\u95fb\u64ad\u62a5\\n\\n\u5e94\u5fae\u4fe1\u300c\u9f99\u82af\u8bfb\u8005\u4ff1\u4e50\u90e8\u300d\u7fa4\u7684\u300c\u554a\u54c8\u54c8\u300d\u7fa4\u53cb\u53cd\u9988\uff0c\u4ece\u672c\u671f\u300a\u6bcf\u5468\u4e00\u9f99\u300b\u5f00\u59cb\uff0c\\n\u7565\u5fae\u6269\u5145\u4e86\u524d\u8a00\u90e8\u5206\u3002\u611f\u8c22\u8fd9\u4f4d\u8bfb\u8005\u7684\u5efa\u8bae\uff01\\n\\n\u6765\u81ea[\u5b89\u540c\u5f00\u6e90\u793e\u533a\uff08AOSC\uff09][aosc]\u7684\u670b\u53cb[\u738b\u6c5f\u6d25](https://github.com/RedL0tus)\u4e3a Google \u7684 OpenSSL\\nfork BoringSSL [\u63d0\u4ea4\u4e86](https://boringssl-review.googlesource.com/c/boringssl/+/63565)\u9002\u914d\u4efb\u610f\u975e\u5b98\u65b9\u652f\u6301\u7684\u5c0f\u7aef\\n\uff08little-endian\uff0932 \u4f4d\u6216 64 \u4f4d\u5e73\u53f0\u7684\u8865\u4e01\u3002\\n\\nxen0n \u5728\u7ed9 Debian loong64 port \u76d1\u5de5\u7684\u8fc7\u7a0b\u4e2d\uff0c\u53d1\u73b0\\n[buildd.debian.org \u7684\u7edf\u8ba1\u56fe\u8868\u9875\u9762](https://buildd.debian.org/stats/)\u4e00\u76f4\u7f3a\u9f99\u67b6\u6784\uff0c\\n\u4e8e\u662f\u987a\u624b\u5e2e\u5fd9[\u52a0\u4e0a\u4e86](https://salsa.debian.org/wb-team/wanna-build/-/commit/1f64a552b488f2565cbc1e8336416abac0376243)\u3002\\n\u867d\u7136\u5386\u53f2\u6570\u636e\u6ca1\u6cd5\u8865\uff0c\u4f46\u4e5f\u65e0\u4f24\u5927\u96c5\u2014\u2014\u8fd9 port \u51fa\u751f\u90fd\u6ca1\u51e0\u5929\u54ea\uff01\\n\\n:::tip \u82b1\u7d6e\\nxen0n \u9009\u53d6\u4e86 R \u8bed\u8a00\u7684\u756a\u8304\u8272 `tomato` \u4e3a\u9f99\u67b6\u6784\u914d\u8272\uff0c\u539f\u56e0\u5199\u5728\u4e86\u63d0\u4ea4\u8bf4\u660e\uff1a\\n\\n* \u8ddf\u9f99\u82af\u7684 logo \u914d\u8272\u5dee\u4e0d\u591a\uff0c\u90fd\u7ea2\u4e0d\u6e9c\u79cb\u7684\uff0c\u4ee5\u53ca\\n* \u756a\u8304 :tomato: \u57fa\u672c\u4e0a\u4e5f\u597d\u5403\uff01\\n\\n\uff08\u5176\u5b9e\u5f53\u7136\u9996\u8981\u8003\u8651\u662f\u533a\u5206\u5ea6\uff1b\u8fd9\u70b9\u5012\u662f\u5fd8\u8bb0\u5728\u63d0\u4ea4\u8bf4\u660e\u5199\u4e0a\u4e86\u3002:joy:\uff09\\n:::\\n\\n## \u5f20\u8d34\u680f\\n\\n\u672c\u680f\u76ee\u53ef\u4f9b\u5f20\u8d34\u516c\u76ca\u6027\u8d28\u7684\u5404\u79cd\u4fe1\u606f\u3002\\n\\n* \u53cb\u60c5\u6269\u6563\uff1a[\u5b89\u540c\u5f00\u6e90\u793e\u533a\uff08AOSC\uff09][aosc]\u7684\u9f99\u67b6\u6784\u79fb\u690d\u4e3b\u7ebf\u5316\u5de5\u4f5c\u300c\u5408\u9f99\u300d\u4ecd\u5728\u5982\u706b\u5982\u837c\u8fdb\u884c\u4e2d\uff0c\\n \u6b64\u5de5\u4f5c\u5b8c\u6210\u540e\u9f99\u67b6\u6784\u5c06\u5347\u683c\u4e3a AOSC OS \u7684 Tier 1 \u67b6\u6784\u3002\\n \u6b22\u8fce\u540c\u5b66\u4eec\u8bd5\u7528\u3001\u53cd\u9988\uff0c\u4e5f\u6b22\u8fce\u6709\u5fd7\u4e4b\u58eb\u4e00\u540c\u52a0\u5165\uff08\u6c9f\u901a\u6e20\u9053\u8be6\u89c1 AOSC \u7f51\u7ad9\u76f8\u5173\u680f\u76ee\uff09\u3002\\n* \u7ad9\u52a1\u516c\u544a\uff1a\u5e94\u5e7f\u5927\u6c89\u9ed8\u8bfb\u8005\u7fa4\u4f53\u7684\u9700\u6c42\uff08\u4f60\u4eec\u7684\u6c89\u9ed8\u9707\u8033\u6b32\u804b\uff1bl\xf3ng \u6ca1\u6709\u53cc\u5173\uff09\uff0c\\n \u6211\u4eec\u5df2\u4e3a\u672c\u7ad9\u53d6\u5f97\u4e86\u4e2d\u56fd\u5927\u9646 ICP \u5907\u6848\uff0c\\n \u4ee5\u4fbf\u4e3a\u4e2d\u56fd\u5927\u9646\u5730\u533a\u8bfb\u8005\u63d0\u4f9b\u5176\u5883\u5185\u7684 CDN \u52a0\u901f\uff1a\\n \u60a8\u6253\u5f00\u672c\u7ad9\u5e94\u8be5\u4e0d\u5361\u4e86\u3002\\n \u8be6\u89c1[\u672c\u7ad9\u52a8\u6001](/blog/we-are-now-served-from-cn-mainland/)\u3002\\n* \u672c\u5468\u62a5[\u6301\u7eed\u63a5\u53d7\u7f51\u53cb\u6295\u7a3f][call-for-submissions]\u3002\u6b22\u8fce\u6765\u4e0a\u6e38\u5750\u5750\uff01\\n\\n[aosc]: https://aosc.io\\n[call-for-submissions]: https://github.com/loongson-community/areweloongyet/issues/16"},{"id":"this-week-in-loongarch-21","metadata":{"permalink":"/newsletter/this-week-in-loongarch-21","editUrl":"https://github.com/loongson-community/areweloongyet/newsletter/2023-10-23-this-week-in-loongarch-21.md","source":"@site/newsletter/2023-10-23-this-week-in-loongarch-21.md","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 21 \u671f","description":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01","date":"2023-10-23T00:00:00.000Z","formattedDate":"2023\u5e7410\u670823\u65e5","tags":[{"label":"\u6bcf\u5468\u4e00\u9f99","permalink":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99"}],"readingTime":3.84,"hasTruncateMarker":true,"authors":[{"name":"WANG Xuerui","title":"\ud83d\udc32\u9f99\u95e8\u5ba2\u6808\u6253\u6742\u7684","url":"https://github.com/xen0n","imageURL":"https://github.com/xen0n.png","key":"xen0n"}],"frontMatter":{"slug":"this-week-in-loongarch-21","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 21 \u671f","authors":["xen0n"],"date":"2023-10-23T00:00:00.000Z","tags":["\u6bcf\u5468\u4e00\u9f99"]},"unlisted":false,"prevItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 22 \u671f","permalink":"/newsletter/this-week-in-loongarch-22"},"nextItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 20 \u671f","permalink":"/newsletter/this-week-in-loongarch-20"}},"content":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01\\n\\n\x3c!-- truncate --\x3e\\n\\n\u5982\u65e0\u7279\u522b\u8bf4\u660e\uff0c\u6587\u4e2d\u63d0\u53ca\u7684\u65e5\u671f\u3001\u65f6\u95f4\u90fd\u4e3a\u5317\u4eac\u65f6\u95f4\uff08UTC+8\uff09\u3002\\n\\n## \u5148\u300c\u9a6c\u300d\u518d\u770b\\n\\n\u672c\u680f\u76ee\u7684\u5185\u5bb9\u5177\u6709\u4e00\u5b9a\u5ef6\u7eed\u6027\uff0c\u5c06\u6301\u7eed\u8ffd\u8e2a\u62a5\u9053 LoongArch® \u9886\u57df\u7684\u91cd\u8981\u6216\u957f\u671f\u9879\u76ee\uff08\u5751\uff09\u3002\\n\\n### Linux\\n\\n10 \u6708 19 \u65e5\uff0cHuacai Chen [\u53d1\u51fa\u4e86](https://lore.kernel.org/loongarch/169774057661.20290.11492595041951746156.pr-tracker-bot@kernel.org/T/#m9facb0821a19108af3693a87dc0f603d6d9fa26f)\\nv6.6 \u5f00\u53d1\u5468\u671f\u7684\u7b2c\u4e09\u7ec4 LoongArch \u67b6\u6784\u76f8\u5173\u4fee\u590d\uff0c\\nLinus \u5f88\u5feb\u5c06\u5176\u62c9\u5165\u4e86\u4e3b\u7ebf\u3002\\n\u8fd9\u4e9b\u5185\u5bb9\u5df2\u5728\u7f8e\u897f\u65f6\u95f4\u5468\u65e5\u4e0b\u5348\u7684 v6.6-rc7 tag \u53d1\u5e03\u4e86\u3002\\n\u5185\u5bb9\u6709\uff1a\\n\\n* \u5468\u62a5\u7b2c 19 \u671f\u62a5\u9053\u7684 Icenowy Zheng \u7684 LoongArch \u5199\u5408\u5e76\u95ee\u9898\u89c4\u907f\u65b9\u5f0f[\u4fee\u590d](https://git.kernel.org/torvalds/c/278be83601dd1725d4732241f066d528e160a39d)\uff0c\\n \u5b9e\u6d4b\u89e3\u51b3\u4e86 AMD GPU \u7cfb\u7edf\u7684\u8bb8\u591a\u7eb9\u7406\u635f\u574f\u95ee\u9898\u3002\\n* \u540c\u6837\u5728\u7b2c 19 \u671f\u62a5\u9053\u7684\u4e0a\u6e38\u5f00\u53d1\u8005 Deepak \u53d1\u73b0\u7684\u5b9e\u65f6\u5185\u6838\u76f8\u5173\u91cd\u6784\u9700\u6c42\uff0c\\n \u7531 Huacai Chen [\u5b9e\u73b0](https://git.kernel.org/torvalds/c/477a0ebec101359f49d92796e3b609857d564b52)\u3002\\n* Tiezhu Yang [\u91cd\u6784\u7684](https://git.kernel.org/torvalds/c/00c2ca84c680f64b79b5e10a482ca435fd7d98ce)\u4e00\u4e9b\u6c47\u7f16\u4ee3\u7801\u4e2d\u5bf9\u7b26\u53f7\u6027\u8d28\u7684\u6807\u6ce8\u3002\\n* Huacai Chen [\u5b9e\u73b0\u7684](https://git.kernel.org/torvalds/c/449c2756c2323c9e32b2a2fa9c8b59ce91b5819d)\u7b2c\\n 18 \u671f\u5468\u62a5\u4e2d\u53d1\u73b0\u7684\u6784\u5efa\u9519\u8bef\u4fee\u590d\u3002\\n\\n### \u5de5\u5177\u94fe\\n\\n#### gcc\\n\\n10 \u6708 19 \u65e5\uff0cXi Ruoyao \u5b8c\u6210\u4e86\u56fd\u5e86\u4ee5\u6765\u4e00\u76f4\u5728\u505a\u7684\u6307\u4ee4\u8c03\u5ea6\u4e0e linker relaxation\\n\u7684\u5e73\u8861\u53d6\u820d\u5de5\u4f5c\uff0c\u5411\u90ae\u4ef6\u5217\u8868[\u53d1\u51fa\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-October/633583.html)\u7b2c\u4e00\u7a3f\u3002\\n\uff08\u5bf9\u4e8e\u5148\u524d\u53d1\u73b0\u7684 binutils BFD \u94fe\u63a5\u5668 \u4e0d\u4f1a relax \u4efb\u4f55\u5171\u4eab\u5e93\u7684\u95ee\u9898\uff0cmengqinggang\\n[\u5199\u4e86](https://sourceware.org/pipermail/binutils/2023-October/129941.html)\u4e00\u7248\u4fee\u590d\u3002\uff09\\n\\n#### LLVM\\n\\n10 \u6708 17 \u65e5\uff0cyjijd [\u63d0\u4ea4\u4e86](https://github.com/llvm/llvm-project/pull/69313)\\n:ta: \u548c leecheechen \u5408\u4f5c\u5f00\u53d1\u7684\uff0c\u4e3a Clang \u6dfb\u52a0 LSX/LASX builtins \u652f\u6301\u7684\u8865\u4e01\u3002\\n\u6709\u8fd9\u90e8\u5206\u652f\u6301\u4e4b\u540e Clang \u5c31\u53ef\u4ee5\u7f16\u8bd1\u5411\u91cf\u4f18\u5316\u7684 C \u4ee3\u7801\uff0c\u800c\u4e0d\u7528\u4f9d\u8d56\u624b\u5199\u6c47\u7f16\u4e86\u3002\\n\\n\u540c\u4e00\u5929\uff0cwangleiat [\u6559\u4f1a\u4e86](https://github.com/llvm/llvm-project/pull/69300)\\nLLVM \u5728 LoongArch \u6d6e\u70b9\u6761\u4ef6\u7801\u5bc4\u5b58\u5668\u95f4\u642c\u8fd0\u6570\u636e\u3002\\n\u5728\u6b64\u4e4b\u540e\uff0c\u5bc4\u5b58\u5668\u5206\u914d\u5de5\u5e8f\u5c31\u53ef\u4ee5\u653e\u5f00\u624b\u811a\u968f\u610f\u4f7f\u7528\u8fd9\u90e8\u5206\u5bc4\u5b58\u5668\u4e86\u3002\\n\uff08\u503c\u5f97\u4e00\u63d0\u7684\u662f\uff0c\u5728\u4ee3\u7801\u5ba1\u67e5\u8fc7\u7a0b\u4e2d\uff0c\u5076\u7136\u53d1\u73b0\u6b64\u53d8\u66f4\u6e05\u96f6 FCC \u7684\u65b9\u5f0f\u6bd4 GCC \u5148\u524d\u4f7f\u7528\u7684\u65b9\u5f0f\u8981[\u5feb\u8bb8\u591a](https://github.com/llvm/llvm-project/pull/69300#discussion_r1361832152)\u3002\\n\u5f53\u5929 Xi Ruoyao \u4fbf\u5c06\u6b64\u4f18\u5316[\u79fb\u690d\u5230\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-October/633317.html) GCC\uff0c\\n\u7b2c\u4e8c\u5929\u5373\u5408\u5e76\u4e86\u3002\uff09\\n\\n## \u6742\u95fb\u64ad\u62a5\\n\\n\u8fd1\u65e5\uff0c\u9f99\u82af\u5f00\u53d1\u8005 zhaojunchao \u5411\u5fae\u8f6f\u516c\u53f8\u7ef4\u62a4\u7684\u8de8\u5e73\u53f0\u3001\u9ad8\u6027\u80fd\u673a\u5668\u5b66\u4e60\u63a8\u7406\u3001\u8bad\u7ec3\u52a0\u901f\u65b9\u6848\\nONNX \u8fd0\u884c\u65f6[\u63d0\u4ea4\u4e86](https://github.com/microsoft/onnxruntime/pull/17937)\\nLoongArch \u5411\u91cf\u4f18\u5316\u3002\\n\uff08\u611f\u8c22 mengqinggang \u6295\u9012\u65b0\u95fb\u7ebf\u7d22\uff01\uff09\\n\\n\u524d\u4e00\u6bb5\u65f6\u95f4\uff0cDebian \u90ae\u4ef6\u5217\u8868\u7ba1\u7406\u5458[\u5b8c\u6210\u4e86](https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1023585#87)\\nDebian LoongArch port \u90ae\u4ef6\u5217\u8868\u7684\u521b\u5efa\u64cd\u4f5c\u3002\\n\u540e\u7eed\u53ef\u4ee5\u5728[\u8fd9\u91cc](https://lists.debian.org/debian-loongarch/)\u8ba2\u9605\u3001\u770b\u90ae\u4ef6\u5f52\u6863\u4e86\u3002\\n\uff08\u611f\u8c22 [SnowNF](https://github.com/SnowNF) \u6295\u9012\u65b0\u95fb\u7ebf\u7d22\uff01\uff09\\n\\n## \u5f20\u8d34\u680f\\n\\n\u672c\u680f\u76ee\u53ef\u4f9b\u5f20\u8d34\u516c\u76ca\u6027\u8d28\u7684\u5404\u79cd\u4fe1\u606f\u3002\\n\\n* \u53cb\u60c5\u6269\u6563\uff1a[\u5b89\u540c\u5f00\u6e90\u793e\u533a\uff08AOSC\uff09][aosc]\u7684\u9f99\u67b6\u6784\u79fb\u690d\u4e3b\u7ebf\u5316\u5de5\u4f5c\u300c\u5408\u9f99\u300d\u4ecd\u5728\u5982\u706b\u5982\u837c\u8fdb\u884c\u4e2d\uff0c\\n \u6b64\u5de5\u4f5c\u5b8c\u6210\u540e\u9f99\u67b6\u6784\u5c06\u5347\u683c\u4e3a AOSC OS \u7684 Tier 1 \u67b6\u6784\u3002\\n \u6b22\u8fce\u540c\u5b66\u4eec\u8bd5\u7528\u3001\u53cd\u9988\uff0c\u4e5f\u6b22\u8fce\u6709\u5fd7\u4e4b\u58eb\u4e00\u540c\u52a0\u5165\uff08\u6c9f\u901a\u6e20\u9053\u8be6\u89c1 AOSC \u7f51\u7ad9\u76f8\u5173\u680f\u76ee\uff09\u3002\\n* \u672c\u5468\u62a5[\u6301\u7eed\u63a5\u53d7\u7f51\u53cb\u6295\u7a3f][call-for-submissions]\u3002\u6b22\u8fce\u6765\u4e0a\u6e38\u5750\u5750\uff01\\n\\n[aosc]: https://aosc.io\\n[call-for-submissions]: https://github.com/loongson-community/areweloongyet/issues/16"},{"id":"this-week-in-loongarch-20","metadata":{"permalink":"/newsletter/this-week-in-loongarch-20","editUrl":"https://github.com/loongson-community/areweloongyet/newsletter/2023-10-16-this-week-in-loongarch-20.md","source":"@site/newsletter/2023-10-16-this-week-in-loongarch-20.md","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 20 \u671f","description":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01","date":"2023-10-16T10:27:58.000Z","formattedDate":"2023\u5e7410\u670816\u65e5","tags":[{"label":"\u6bcf\u5468\u4e00\u9f99","permalink":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99"}],"readingTime":7.51,"hasTruncateMarker":true,"authors":[{"name":"WANG Xuerui","title":"\ud83d\udc32\u9f99\u95e8\u5ba2\u6808\u6253\u6742\u7684","url":"https://github.com/xen0n","imageURL":"https://github.com/xen0n.png","key":"xen0n"}],"frontMatter":{"slug":"this-week-in-loongarch-20","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 20 \u671f","authors":["xen0n"],"date":"2023-10-16T10:27:58.000Z","tags":["\u6bcf\u5468\u4e00\u9f99"]},"unlisted":false,"prevItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 21 \u671f","permalink":"/newsletter/this-week-in-loongarch-21"},"nextItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 19 \u671f","permalink":"/newsletter/this-week-in-loongarch-19"}},"content":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01\\n\\n\x3c!-- truncate --\x3e\\n\\n\u5982\u65e0\u7279\u522b\u8bf4\u660e\uff0c\u6587\u4e2d\u63d0\u53ca\u7684\u65e5\u671f\u3001\u65f6\u95f4\u90fd\u4e3a\u5317\u4eac\u65f6\u95f4\uff08UTC+8\uff09\u3002\\n\\n## \u8981\u95fb\u901f\u9012\\n\\n\u793e\u533a\u4f19\u4f34 jiegec \u5b8c\u6210\u4e86\u9f99\u82af\u4e8c\u8fdb\u5236\u7ffb\u8bd1\uff08LBT\uff09\\n\u6269\u5c55\u7684\u89e3\u6790\u5de5\u4f5c\uff0c[\u6574\u7406\u4e86\u4e00\u4efd\u53c2\u8003\u6587\u6863](https://github.com/jiegec/la-inst/blob/master/LBT.md)\uff01\\n\u7528\u5230\u7684\u5b9e\u9a8c\u4ee3\u7801\u5c31\u9644\u5728\u6587\u6863\u65c1\u8fb9\u3002\\n\u8fd9\u610f\u5473\u7740 QEMU \u7b49\u76f8\u5173\u9879\u76ee\u4e0d\u4e45\u5c31\u80fd\u7528\u4e0a LBT \u7279\u8272\u6307\u4ee4\uff0c\\n\u4e0d\u7528\u82e6\u54c8\u54c8\u7b49\u300a\u9f99\u82af\u67b6\u6784\u53c2\u8003\u624b\u518c\u300b\u5377\u4e09\u516c\u5e03\u4e86\u3002\\n\\n\u51e0\u5468\u4ee5\u6765\uff0c[\u5b89\u540c\u5f00\u6e90\u793e\u533a][aosc]\uff08AOSC\uff09\\n\u7684\u670b\u53cb\u4eec\u9646\u7eed\u62ff\u5230\u4e86 LoongArch \u786c\u4ef6\uff0c\u505a\u4e86\u8bb8\u591a\u6d4b\u8bd5\u9a8c\u8bc1\u5de5\u4f5c\uff0c\\n\u5341\u5206\u8f9b\u82e6\u3002\\n\u672c\u671f\u7684 AOSC \u793e\u520a[\u300a\u5b89\u8bb0\u51b0\u5ba4\u30fb\u5341\u6708\u4e0a\u300b](https://github.com/AOSC-Dev/newsroom/blob/76c6dc1571cba2af74673b51df70f5f3d43ed1a0/coffee-break/20231014/zh_CN.md)\u8bb0\u5f55\u4e86\\n:ta: \u4eec\u7684\u5de5\u4f5c\u6210\u679c\uff0c\u63a8\u8350\u9605\u8bfb\u3002(An English version [is also available](https://github.com/AOSC-Dev/newsroom/blob/76c6dc1571cba2af74673b51df70f5f3d43ed1a0/coffee-break/20231014/en.md).)\\n\\n\u6b64\u5916\uff0c\u300a\u54b1\u9f99\u4e86\u5417\uff1f\u300b\u540e\u7eed\u4e5f\u5c06\u4e0e AOSC \u7b49\u793e\u533a\u670b\u53cb\u4eec\u4e00\u9053\uff0c\\n\u6269\u5145\u9605\u8bfb\u6750\u6599\u3001\u4f18\u5316\u4fe1\u606f\u67b6\u6784\uff0c\u4ee5\u671f\u66f4\u597d\u670d\u52a1\u8bfb\u8005\u7fa4\u4f53\u3002\\n\u656c\u8bf7\u671f\u5f85\uff08\u4e5f[\u671f\u5f85\u60a8\u7684\u53c2\u4e0e](https://github.com/loongson-community/areweloongyet)\uff09\uff01\\n\\n## \u5148\u300c\u9a6c\u300d\u518d\u770b\\n\\n\u672c\u680f\u76ee\u7684\u5185\u5bb9\u5177\u6709\u4e00\u5b9a\u5ef6\u7eed\u6027\uff0c\u5c06\u6301\u7eed\u8ffd\u8e2a\u62a5\u9053 LoongArch® \u9886\u57df\u7684\u91cd\u8981\u6216\u957f\u671f\u9879\u76ee\uff08\u5751\uff09\u3002\\n\\n### Linux\\n\\n\u5728\u89e3\u6790 LBT \u6269\u5c55\u7684\u8fc7\u7a0b\u4e2d\uff0cjiegec [\u53d1\u73b0\u4e86](https://bugzilla.kernel.org/show_bug.cgi?id=218012)\u4e3b\u7ebf\u5185\u6838\u5bf9\\nLBT x87 \u6d6e\u70b9\u6808\u9876\u6307\u9488\u5bc4\u5b58\u5668 `FTOP` \u7684\u4fdd\u5b58\u6062\u590d\u6709\u8bef\u3002\\n\u7531\u4e8e\u76f4\u5230\u672c\u5468\u4e3a\u6b62 LBT \u90fd\u5904\u4e8e\u7f3a\u4e4f\u6587\u6863\u7684\u72b6\u6001\uff0c\u4e14\u76ee\u524d\u5df2\u77e5\u552f\u4e00\u4f1a\u5229\u7528 LBT \u7684\u5e94\u7528\u7a0b\u5e8f LATX \u5e76\u672a\u53d7\u5176\u5f71\u54cd\uff0c\u8be5\u95ee\u9898\u4e0d\u4f1a\u5f71\u54cd\u65e5\u5e38\u4f7f\u7528\uff0c\u4f46\u9884\u8ba1\u4e5f\u4f1a\u5728\u6708\u4e2d\u5f97\u5230\u6392\u67e5\u3001\u4fee\u590d\u3002\\n\\n### \u5de5\u5177\u94fe\\n\\n#### gcc\\n\\n10 \u6708 16 \u65e5\uff0cJiahao Xu [\u8d34\u51fa\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-October/633086.html)\u4e24\u7ec4\u5411\u91cf\u64cd\u4f5c\u7684\u9f99\u67b6\u6784\u652f\u6301\uff0c\\n\u4ee5\u53ca\u4e00\u7248\u65b0\u7684\u5411\u91cf\u5316\u6210\u672c\u6a21\u578b\u3002\\n\u8fd9\u4f4d\u540c\u5b66\u5728\u4e0a\u6e38\u4f3c\u4e4e\u662f\u65b0\u9762\u5b54\uff0c\u6b22\u8fce\uff01\\n\\n10 \u6708 12 \u65e5\uff0cLulu Cheng [\u4fee\u6539\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-October/632748.html)\\ngcc \u5bf9\u9f50\u6c47\u7f16\u6307\u4ee4\u7684\u65b9\u5f0f\u3002\\n\u8be5\u53d8\u66f4\u9700\u8981\u914d\u5408 binutils \u7684[\u6b64\u63d0\u4ea4](https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commitdiff;h=1fb3cdd87ec61715a5684925fb6d6a6cf53bb97c)\u624d\u80fd\u5de5\u4f5c\u3002\\n\\n10 \u6708 11 \u65e5\uff0cChenghui Pan [\u4fee\u590d\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-October/632607.html)\u4e00\u4f8b\u5411\u91cf\u5316\u9020\u6210\u7684\u5d29\u6e83\\n\uff08\u5b66\u540d ICE\uff1a\u5185\u90e8\u7f16\u8bd1\u5668\u9519\u8bef\uff09\u3002\\n\\n#### LLVM\\n\\n10 \u6708 12 \u65e5\uff0c\u793e\u533a\u7684 Xinmudotmoe \u540c\u5b66\u5728\u6298\u817e LoongArch \u4e0a ROCm \u7684\u8fc7\u7a0b\u4e2d\uff0c\\n\u7ed9 LoongArch LLVM [\u6dfb\u52a0\u4e86](https://github.com/llvm/llvm-project/pull/68851)\\n16 \u4f4d\uff08\u534a\u7cbe\u5ea6\uff09\u53ca 128 \u4f4d\uff08\u56db\u7cbe\u5ea6\uff09\u6d6e\u70b9\u64cd\u4f5c\u7684\u6a21\u62df\u652f\u6301\u3002\\n\u6309\u7167\u516c\u5f00\u4fe1\u606f\uff0c\u9f99\u67b6\u6784\u6ca1\u6709 16 \u4f4d\u6216 128 \u4f4d\u6d6e\u70b9\u64cd\u4f5c\u7684\u539f\u751f\u652f\u6301\uff1b\\n\u4e3a\u4e86\u80fd\u8dd1\u66f4\u591a\u7a0b\u5e8f\uff0c\u5373\u4fbf\u6a21\u62df\u64cd\u4f5c\u6027\u80fd\u80af\u5b9a\u4e0d\u5982\u771f\u5b9e\u786c\u4ef6\u652f\u6301\uff0c\u5bf9\u751f\u6001\u6574\u4f53\u800c\u8a00\u4e5f\u503c\u4e86\u3002\\n\\n:::info \u7b14\u8005\u731c\u6d4b\\n\u5927\u6982\u7387 LoongArch \u66fe\u7ecf\u81f3\u5c11\u652f\u6301\u8fc7\u8fd9\u4e24\u79cd\u6d6e\u70b9\u683c\u5f0f\u4e4b\u4e00\uff0c\u4f46\u5728\u516c\u5f00\u524d\u88ab\u6252\u6389\u4e86\u3002\\n\\n\u53ef\u4ee5\u4ece\u6d6e\u70b9\u6307\u4ee4\u7684\u7f16\u7801\u4e0a\u770b\u51fa\u7aef\u502a\uff1a\u8868\u793a\u6d6e\u70b9\u683c\u5f0f\u7684\u90a3\u90e8\u5206\u64cd\u4f5c\u7801\uff0c\\n\u5355\u7cbe\u5ea6\u662f `01` \u53cc\u7cbe\u5ea6\u662f `10`\uff0c\u56e0\u6b64\u8fd9\u4e2a\u4f4d\u57df\u80af\u5b9a\u5bbd 2 \u4f4d\uff1b\\n\u4f46\u76f8\u5e94\u4f4d\u53d6 `00` \u6216 `11` \u7684\u6307\u4ee4\u5c3d\u4ed8\u9619\u5982\u3002\\n\u5982\u679c\u9700\u6c42\u4e0a\u53ea\u8981\u652f\u6301 2 \u79cd\u683c\u5f0f\u5373\u53ef\uff08\u5373\u6700\u5e38\u89c1\u7684\u5355\u7cbe\u5ea6\u3001\u53cc\u7cbe\u5ea6\u6d6e\u70b9\uff09\uff0c\u591a\u7684\u683c\u5f0f\u4ee5\u540e\u4e5f\u4e0d\u8981\uff0c\\n\u90a3\u4e48\u8868\u793a\u8fd9\u4e2a\u4fe1\u606f\u53ea\u8981 1 \u4f4d\u5c31\u591f\u4e86\u3002\\n\\n\u56e0\u6b64\u5728\u300c\u62c9\u6e05\u5355\u300d\u51b3\u5b9a\u6307\u4ee4\u96c6\u5927\u65b9\u5411\u7684\u9636\u6bb5\uff0c\u8bbe\u8ba1\u5e08\u5fc5\u7136\u8003\u8651\u4e86\u5176\u4ed6\u6d6e\u70b9\u683c\u5f0f\u4e14\u4e3a\u5176\u9884\u7559\u4e86\u7f16\u7801\u7a7a\u95f4\uff0c\\n\u800c\u662f\u51fa\u4e8e\u5176\u4ed6\u539f\u56e0\u624d\u672a\u5c06\u5176\u5305\u542b\u8fdb LoongArch v1.00\u3002\\n\u8fd9\u539f\u56e0\u53ef\u80fd\u662f FP16\u3001FP128 \u76ee\u524d\u5f88\u5c11\u7528\u5230\uff0c\u4e14\u673a\u5668\u5b66\u4e60\u573a\u666f\u5f80\u5f80\u90fd\u7528 FP16\\n\u7684\u53d8\u4f53 BF16\uff0c\u56e0\u6b64\u5982\u679c\u7b2c\u4e00\u65f6\u95f4\u5ba3\u79f0\u652f\u6301\uff0c\u5c06\u9650\u5236\u540e\u7eed\u7684\u8fed\u4ee3\u7a7a\u95f4\uff1b\\n\u5982\u679c\u52a0\u5165\u4e86\u652f\u6301\u5374\u51e0\u5e74\u90fd\u635e\u4e0d\u7740\u7528\uff0c\u66f4\u662f\u5f97\u4e0d\u507f\u5931\u3002\\n\u76f8\u53cd\uff0c\u76ee\u524d\u662f\u5c06\u4e24\u79cd\u683c\u5f0f\u7f16\u7801\u6682\u65f6\u4fdd\u7559\uff1a\u5982\u679c\u6709\u671d\u4e00\u65e5\u9700\u8981\u91cd\u65b0\u52a0\u5165\u5b83\u4eec\uff08\u6216\u8005\u522b\u7684\u683c\u5f0f\uff09\uff0c\u6307\u4ee4\u7f16\u7801\u4fbf\u80fd\u7ef4\u6301\u300c\u597d\u770b\u300d\u3002\\n\u300c\u597d\u770b\u300d\u4e0d\u5149\u662f\u770b\u8d77\u6765\u8212\u670d\uff0c\u8bd1\u7801\u5668\u7684\u5b9e\u73b0\u4e5f\u80fd\u7b80\u5355\u70b9\uff1b\\n\u8fd9\u65b9\u9762\u505a\u4e2a\u300c\u989c\u63a7\u300d\u5927\u6982\u6ca1\u6bdb\u75c5\uff01\\n:::\\n\\n\u540c\u4e00\u5929\uff0cheiher \u5e2e\u7b14\u8005\u628a\u5148\u524d\u505a\u4e86\u4e00\u5927\u534a\u5374\u6ca1\u7cbe\u529b\u8ddf\u8fdb\u7684 3A6000 `DBAR`\\n\u4f18\u5316\u8865\u4e01\u5b8c\u5584\u4e86\uff0c[\u5408\u5e76\u8fdb\u4e86](https://github.com/llvm/llvm-project/pull/68787)\u4e3b\u7ebf\u3002\\n\\n10 \u6708 11 \u65e5\uff0cheiher [\u4f18\u5316\u4e86](https://github.com/llvm/llvm-project/pull/67391)\u539f\u5b50\u64cd\u4f5c\u7684\u4ee3\u7801\u751f\u6210\u3002\\n\u5177\u4f53\u6765\u8bf4\u662f\u53bb\u6389\u4e86 `LL` \u4e4b\u524d\u4ee5\u53ca `LL/SC` \u4e4b\u95f4\u4e0d\u5fc5\u8981\u7684\u5185\u5b58\u6805\u969c\uff0c\\n\u8fd8\u4fee\u590d\u4e86 acquire \u8bed\u4e49\u3002\\n\\n### \u53d1\u884c\u7248\\n\\nDebian \u4e0a\u6e38\u5de5\u4f5c\u4e5f\u6709\u6240\u8fdb\u5c55\uff1a`binutils` \u5305\u7684\u6539\u52a8[\u83b7\u5408\u5e76](https://tracker.debian.org/news/1470074/accepted-binutils-2415020231010-1-source-amd64-all-into-experimental/)\uff0c`glibc`\\n\u5305\u7684[\u6539\u52a8](https://salsa.debian.org/glibc-team/glibc/-/commit/859b3e39e09a57f0735f04514d2b574f80c3926c)\u4e5f[\u5f85\u4e0a\u4f20](https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1053717)\u3002\\n\u8fd9\u610f\u5473\u7740\u9700\u8981 LoongArch \u65b9\u9762\u5355\u72ec\u7ef4\u62a4\u3001\u624b\u5de5\u5904\u7406\u7684\u5305\u8fdb\u4e00\u6b65\u51cf\u5c11\u4e86\u3002\\n\uff08\u611f\u8c22 Revy \u6295\u9012\u65b0\u95fb\u7ebf\u7d22\u3002\uff09\\n\\n## \u6742\u95fb\u64ad\u62a5\\n\\n\\n10 \u6708 10 \u65e5\uff0c\u793e\u533a\u540c\u5b66 Robin Lee \u505a\u7684 FreeDesktop SDK \u9f99\u67b6\u6784\u521d\u6b65\u9002\u914d[\u83b7\u5408\u5e76](https://gitlab.com/freedesktop-sdk/freedesktop-sdk/-/merge_requests/12203)\u3002\\nFreeDesktop SDK \u662f Flatpak \u6253\u5305\u65b9\u6848\u7684\u57fa\u7840\u8fd0\u884c\u65f6\u3002\\n\\nAOSC \u793e\u533a\u7684 LoongArch \u540c\u597d Tianhao Chai \u8fd1\u65e5\u7ed9 Mellanox \u7f51\u5361[^\u6ce8\u4e00]\u7684\u56fa\u4ef6\u5de5\u5177 `mstflint`\\n[\u63d0\u4ea4\u4e86](https://github.com/Mellanox/mstflint/pull/836) LoongArch \u9002\u914d\u3002\\n\u8fd9\u4e9b\u786c\u4ef6\u76ee\u524d\u770b\u6765\u5728 LoongArch \u7cfb\u7edf\u4e0a\u90fd\u80fd\u826f\u597d\u5de5\u4f5c\u3002\\n\\n[^\u6ce8\u4e00]: Mellanox\u8fc8\u7edc\u601d\uff0c\u662f InfiniBand \u7f51\u5361\u7684\u4e3b\u8981\u4f9b\u5e94\u5546\u4e4b\u4e00\uff0c\\n\u51e0\u5e74\u524d\u5df2\u4e3a NVIDIA\u82f1\u4f1f\u8fbe\u6240\u6536\u8d2d\u3002\\n\u5728\u5bb6\u5ead\u9ad8\u6027\u80fd\u8ba1\u7b97\u3001NAS \u7b49\u9886\u57df\uff0c\u6709\u4e0d\u5c11\u7528\u6237\u9009\u62e9\u8d2d\u4e70\u4e8c\u624b Mellanox \u786c\u4ef6\u3002\\n\\nSlackware \u4e2d\u6587\u793e\u533a\u540c\u5b66\u3001Slackware \u9f99\u67b6\u6784\u79fb\u690d\u7ef4\u62a4\u8005 Shi Pujin \u63d0\u9192\uff1aSlackware\\n\u4e2d\u6587\u793e\u533a\u7684\u5b98\u7f51\u5730\u5740[\u53d8\u66f4\u4e86](http://www.slackwarecn.cn)\uff0c\u89c1\u94fe\u63a5\u76ee\u6807\u3002\\n\uff08\u4ece\u6258\u7ba1\u57df\u540d\u53d8\u4e3a\u72ec\u7acb\u57df\u540d\u4e86\uff0c\u4f46\u4ecd\u7136\u6258\u7ba1\u5728 GitHub Pages\u3002\uff09\\n\\n\\n## \u5f20\u8d34\u680f\\n\\n\u672c\u680f\u76ee\u53ef\u4f9b\u5f20\u8d34\u516c\u76ca\u6027\u8d28\u7684\u5404\u79cd\u4fe1\u606f\u3002\\n\\n* \u53cb\u60c5\u6269\u6563\uff1a[\u5b89\u540c\u5f00\u6e90\u793e\u533a\uff08AOSC\uff09][aosc]\u7684\u9f99\u67b6\u6784\u79fb\u690d\u4e3b\u7ebf\u5316\u5de5\u4f5c\u300c\u5408\u9f99\u300d\u4ecd\u5728\u5982\u706b\u5982\u837c\u8fdb\u884c\u4e2d\uff0c\\n \u6b64\u5de5\u4f5c\u5b8c\u6210\u540e\u9f99\u67b6\u6784\u5c06\u5347\u683c\u4e3a AOSC OS \u7684 Tier 1 \u67b6\u6784\u3002\\n \u6b22\u8fce\u540c\u5b66\u4eec\u8bd5\u7528\u3001\u53cd\u9988\uff0c\u4e5f\u6b22\u8fce\u6709\u5fd7\u4e4b\u58eb\u4e00\u540c\u52a0\u5165\u3002\\n* \u672c\u5468\u62a5[\u6301\u7eed\u63a5\u53d7\u7f51\u53cb\u6295\u7a3f][call-for-submissions]\u3002\u6b22\u8fce\u6765\u4e0a\u6e38\u5750\u5750\uff01\\n\\n[aosc]: https://aosc.io\\n[call-for-submissions]: https://github.com/loongson-community/areweloongyet/issues/16"},{"id":"this-week-in-loongarch-19","metadata":{"permalink":"/newsletter/this-week-in-loongarch-19","editUrl":"https://github.com/loongson-community/areweloongyet/newsletter/2023-10-09-this-week-in-loongarch-19.md","source":"@site/newsletter/2023-10-09-this-week-in-loongarch-19.md","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 19 \u671f","description":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01","date":"2023-10-09T09:58:10.000Z","formattedDate":"2023\u5e7410\u67089\u65e5","tags":[{"label":"\u6bcf\u5468\u4e00\u9f99","permalink":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99"}],"readingTime":7.015,"hasTruncateMarker":true,"authors":[{"name":"WANG Xuerui","title":"\ud83d\udc32\u9f99\u95e8\u5ba2\u6808\u6253\u6742\u7684","url":"https://github.com/xen0n","imageURL":"https://github.com/xen0n.png","key":"xen0n"}],"frontMatter":{"slug":"this-week-in-loongarch-19","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 19 \u671f","authors":["xen0n"],"date":"2023-10-09T09:58:10.000Z","tags":["\u6bcf\u5468\u4e00\u9f99"]},"unlisted":false,"prevItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 20 \u671f","permalink":"/newsletter/this-week-in-loongarch-20"},"nextItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 18 \u671f","permalink":"/newsletter/this-week-in-loongarch-18"}},"content":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01\\n\\n\x3c!-- truncate --\x3e\\n\\n\u5982\u65e0\u7279\u522b\u8bf4\u660e\uff0c\u6587\u4e2d\u63d0\u53ca\u7684\u65e5\u671f\u3001\u65f6\u95f4\u90fd\u4e3a\u5317\u4eac\u65f6\u95f4\uff08UTC+8\uff09\u3002\\n\\n## \u5148\u300c\u9a6c\u300d\u518d\u770b\\n\\n\u672c\u680f\u76ee\u7684\u5185\u5bb9\u5177\u6709\u4e00\u5b9a\u5ef6\u7eed\u6027\uff0c\u5c06\u6301\u7eed\u8ffd\u8e2a\u62a5\u9053 LoongArch® \u9886\u57df\u7684\u91cd\u8981\u6216\u957f\u671f\u9879\u76ee\uff08\u5751\uff09\u3002\\n\\n### Linux\\n\\n10 \u6708 8 \u65e5\uff0cAOSC \u5f00\u53d1\u8005 Icenowy Zheng \u5728\u6392\u67e5 AMD \u663e\u5361\u7a33\u5b9a\u6027\u95ee\u9898\u8fc7\u7a0b\u4e2d\uff0c\\n\u53d1\u73b0\u4ee5\u524d\u4e3a\u70b9\u4eae RDNA2 \u800c\u5bf9 3A+7A \u7cfb\u7edf\u7684\u5199\u5408\u5e76\u95ee\u9898\u89c4\u907f\u4e0d\u5b8c\u5168\uff0c\\n\u6545\u4eb2\u81ea[\u5b8c\u5584\u4e86](https://lore.kernel.org/loongarch/20231009042841.635366-1-uwu@icenowy.me/)\u8fd9\u90e8\u5206\u903b\u8f91\u3002\\n\u5b9e\u6d4b\u6253\u4e0a\u6b64\u8865\u4e01\u540e\uff0c\u76f8\u5173\u7684\u7eb9\u7406\u635f\u574f\u95ee\u9898\uff08\u90e8\u5206\u82b1\u5c4f\uff0c\u620f\u79f0\u300c\u5b57\u8282\u8df3\u52a8\u300d\uff09\u4ee5\u53ca AMD Oland \u5fae\u67b6\u6784 GPU\\n\u5728 `amdgpu` \u5185\u6838\u6a21\u5757\u9a71\u52a8\u4e0b\u7684 ring timeout \u95ee\u9898\u90fd\u89e3\u51b3\u4e86\uff0c\u7a33\u5b9a\u6027\u4e5f\u6709\u90e8\u5206\u6539\u5584\u3002\\n\u8ba9\u6211\u4eec\u6b22\u8fce :ta: \u7684\u9996\u4e2a LoongArch \u5185\u6838\u8865\u4e01\uff01\\n\\n\u540c\u4e00\u5929\uff0cBibo Mao \u628a\u4ed6\u7684 vDSO & \u6808\u5185\u5b58\u5e03\u5c40\u4f18\u5316\u8865\u4e01[\u8fed\u4ee3\u5230\u4e86](https://lore.kernel.org/loongarch/20231008012036.1415883-1-maobibo@loongson.cn/)\u7b2c 3 \u7248\u3002\\n\u4ed6\u5b66 x86 \u8ba9 vDSO \u548c\u6808\u5171\u4eab\u540c\u4e00\u6761 PMD\uff0c\u800c\u5f97\u4ee5\u4ece\u6bcf\u4e2a\u7ebf\u7a0b\u7701\u51fa\u4e00\u9875\uff1b\u8fd8\u505a\u4e86\u5176\u4ed6\u5c0f\u4f18\u5316\u3002\\n\\n10 \u6708 7 \u65e5\uff0cTianrui Zhao [\u4fee\u590d\u4e86](https://lore.kernel.org/loongarch/9f7931dd-3c0e-4bc2-988e-1fb3549e440e@infradead.org/T/#t)\u4e0a\u671f\u63d0\u5230\u7684\\nKVM \u4ee3\u7801\u5728\u7279\u5b9a\u5185\u6838\u914d\u7f6e\u4e0b\u7f16\u8bd1\u5931\u8d25\u7684\u95ee\u9898\uff0cRandy \u6d4b\u4e86\u80fd\u7528\u3002\\n\\n10 \u6708 6 \u65e5\uff0c\u4e0a\u6e38\u5f00\u53d1\u8005 Deepak R Varma \u5728\u505a\u5b9e\u65f6\u5185\u6838\u6539\u9020\uff0c[\u6765\u95ee](https://lore.kernel.org/loongarch/ZSFWa44FTi48hDyE@runicha.com/T/#t)\u4e00\u4e2a\u51fd\u6570\u6709\u6ca1\u6709\u5728\u7528\uff0c\\n\u91cc\u5934\u7684\u5185\u5b58\u6620\u5c04\u64cd\u4f5c\u80fd\u4e0d\u80fd\u6362\u6210\u65b0\u52a0\u7684\u3001\u5bf9\u5b9e\u65f6\u8c03\u5ea6\u66f4\u53cb\u597d\u7684\u79cd\u7c7b\uff1b\\n\u88ab\u95ee\u5230\u7684\u51fd\u6570 `copy_user_highpage` \u53ea\u5bf9 32 \u4f4d\u5185\u6838\u6709\u7528\uff0c\\n\u56e0\u6b64\u5982\u679c\u6ca1\u6253\u7b97\u652f\u6301\u7eaf 32 \u4f4d\u7cfb\u7edf\u90a3\u4e48\u5176\u5b9e\u6700\u597d\u628a\u5b83\u5220\u6389\u3002Huacai Chen \u56de\u590d\u8bf4\u300c\u8fd1\u671f\u300d\u5c31\u4f1a\u52a0\u5165 LA32 \u652f\u6301\uff0c\\n\u7136\u540e\u987a\u624b\u628a Deepak \u7684\u5efa\u8bae\u5199\u6210\u8865\u4e01[\u8d34\u51fa\u6765\u4e86](https://lore.kernel.org/loongarch/20231007095229.235551-1-chenhuacai@loongson.cn/)\u3002Deepak \u5bf9\u6b64\u8868\u793a\u611f\u8c22\uff0c\\n\u5e76\u4e14 :ta: \u4ecd\u7136\u6253\u7b97\u51c6\u5907\u4e00\u4e2a LoongArch \u7f16\u8bd1\u73af\u5883\u6765\u5e2e\u5fd9\u6d4b\u8bd5\u3002\\n\u6211\u4eec\u4e5f\u611f\u8c22 :ta: \u7684\u5e2e\u5fd9\uff01\\n\\n10 \u6708 5 \u65e5\uff0cHuacai Chen \u5411 KVM \u5b50\u7cfb\u7edf\u7ef4\u62a4\u8005[\u53d1\u9001\u4e86](https://lore.kernel.org/kvm/20231005091825.3207300-1-chenhuacai@loongson.cn/)\u589e\u52a0\u9f99\u67b6\u6784 KVM \u652f\u6301\u7684 PR\u62c9\u53d6\u8bf7\u6c42\u3002\\n\u8ddd\u79bb\u4e3b\u7ebf\u4e00\u6b65\u4e4b\u9065\uff01\\n\\n### \u5de5\u5177\u94fe\\n\\n#### gcc\\n\\n10 \u6708 4 \u65e5\uff0c\u6765\u81ea\u5fb7\u56fd [Ostwestfalen-Lippe](https://en.wikipedia.org/wiki/Ostwestfalen-Lippe)\\nLinux \u7528\u6237\u7ec4\u7684\u793e\u533a\u540c\u5b66 Jan-Benedict Glaw\\n[\u62a5\u544a\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-October/631933.html)\u9f99\u67b6\u6784\\ngcc \u6784\u5efa\u9519\u8bef\u7684\u95ee\u9898\u3002\\n\u7ecf\u8fc7\u4e00\u4e9b\u8ba8\u8bba\u7814\u7a76\uff0c10 \u6708 7 \u65e5 Yang Yujie\\n[\u8d34\u51fa\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-October/632210.html)\u4e00\u79cd\u4fee\u590d\u65b9\u6cd5\uff0c[\u770b\u4e0a\u53bb\u884c](https://gcc.gnu.org/pipermail/gcc-patches/2023-October/632256.html)\u3002\\n\\n10 \u6708 3 \u65e5 Xi Ruoyao \u8ddf\u8fdb\u4e86\u4e00\u9879\u4e0a\u6e38\u91cd\u6784\uff1a\\n\u5c06\u7b26\u53f7\u62f7\u8d1d\u64cd\u4f5c\u7684\u8868\u793a\u65b9\u5f0f\u4ece\u539f\u5148\u7684\u81ea\u5b9a\u4e49 RTL\u5bc4\u5b58\u5668\u4f20\u8f93\u8bed\u8a00 \u6307\u4ee4[\u6539\u4e3a\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-October/631822.html)\u65b0\u589e\u7684\u901a\u7528\u5199\u6cd5\u3002\\n\\n#### binutils\\n\\n10 \u6708 5 \u65e5\uff0cXi Ruoyao \u5728\u6298\u817e\u8fc7\u7a0b\u4e2d\uff08\u8be6\u89c1\u4e0a\u671f\uff09\u53d1\u73b0 binutils \u5f53\u524d\u7684\u9f99\u67b6\u6784\\nlinker relaxation \u5de5\u5e8f\u4e0d\u4f1a relax \u4efb\u4f55\u5171\u4eab\u5e93\u7684\u4ee3\u7801\u3002\\n\u73b0\u4ee3 Linux \u53d1\u884c\u7248\u4e2d\uff0c\u5927\u591a\u6570\u88ab\u6267\u884c\u5230\u7684\u4ee3\u7801\u90fd\u4f4d\u4e8e\u5171\u4eab\u5e93\uff0c\u56e0\u6b64\u76ee\u524d\u7684\u884c\u4e3a\u80af\u5b9a\u8ba9\\nlinker relaxation \u7684\u4f5c\u7528\u6253\u4e0a\u4e86\u76f8\u5f53\u5927\u7684\u95ee\u53f7\uff1b\\n\\n\u975e\u4f46\u5982\u6b64\uff0c\u5f53\u524d\u7684\u5b9e\u73b0\u65b9\u5f0f\u8fd8\u6709\u6b63\u786e\u6027\u95ee\u9898\uff1a\u5982 Icenowy Zheng \u5728\u540c\u4e00\u5929\u6298\u817e libglvnd\\n\u65f6[\u6240\u53d1\u73b0\u7684](https://sourceware.org/bugzilla/show_bug.cgi?id=30944)\uff0c\\n\u76ee\u524d LoongArch \u6c47\u7f16\u4e2d\u7684\u5bf9\u9f50\u6307\u793a\u5df2\u7ecf\u6539\u4e3a\u501f\u7528 relaxation \u57fa\u7840\u8bbe\u65bd\u7684\u65b9\u5f0f\u5b9e\u73b0\u4e86\\n\uff08\u4ee5 `R_LARCH_ALIGN` \u7684\u5f62\u5f0f\u5411 relaxation \u5de5\u5e8f\u4f20\u9012\u4fe1\u606f\uff09\uff1b\\n\u800c\u5982\u679c\u4e0d relax\uff08\u4f8b\u5982\uff0c\u56e0\u4e3a\u662f\u5171\u4eab\u5e93\uff09\u5219\u8fd9\u4e9b\u4e0d\u7ba1 re- \u4e0d relax\\n\u90fd\u5e94\u8be5\u9075\u5b88\u7684\u5bf9\u9f50\u6307\u793a\u5c31\u4f1a\u88ab\u9519\u8bef\u65e0\u89c6\uff0c\u4f7f\u5f97\u751f\u6210\u4ee3\u7801\u7684\u5e03\u5c40\u9519\u8bef\uff0c\\n\u6700\u7ec8\u5bfc\u81f4\u8fd0\u884c\u65f6\u5d29\u6e83\u4e4b\u7c7b\u96be\u4ee5\u6392\u67e5\u7684\u4e0d\u597d\u7ed3\u679c\u3002\\n\u7b97\u4e0a\u4e00\u4e24\u4e2a\u6708\u524d\u540c\u6837\u88ab\u5751\u5230\u4f46\u5341\u5206\u62b1\u6b49\u672a\u80fd\u53ca\u65f6\u4e00\u53e5\u8bdd\u62a5\u51fa bug \u7684\u7b14\u8005\uff0c\\n\u81f3\u5c11\u5df2\u7ecf\u6709 3 \u4eba\u5171\u8ba1\u51e0\u4e2a\u751a\u81f3\u5341\u51e0\u5c0f\u65f6\u7684\u5b9d\u8d35\u4e1a\u4f59\u65f6\u95f4\u4ea4\u5f85\u5728\u8fd9\u4e86\u3002\\n\\n\u7531\u4e8e\u62a5\u544a\u95ee\u9898\u65f6\u6b63\u503c\u5047\u671f\uff0c\u76ee\u524d\u6682\u672a\u6709\u53cd\u9988\uff0c\u4f46\u6211\u4eec\u9884\u671f\u9f99\u82af\u5de5\u5177\u94fe\u7684\u540c\u5b66\u5c06\u5f88\u5feb\u5f97\u77e5\u5e76\u7740\u624b\u914d\u5408\u4fee\u590d\u6b64\u4e8b\u3002\\n\\n## \u6742\u95fb\u64ad\u62a5\\n\\n\u5468\u62a5\u7b2c 17 \u671f\u62a5\u9053\u8fc7\u7684 D \u8bed\u8a00\u8fd0\u884c\u65f6\u9002\u914d\u5de5\u4f5c\u5df2\u7ecf\u5728 10 \u6708 5 \u65e5[\u5408\u5e76\u4e86](https://github.com/dlang/dmd/pull/15628)\u3002\\n\u606d\u559c :tada:\uff01\\n\\n\\n## \u793e\u533a\u6574\u6d3b:\u513f:\\n\\n\u672c\u680f\u76ee\u63a5\u53d7\u4efb\u4f55\u7f51\u53cb\u7684\u6295\u7a3f\uff0c\u53ea\u8981\u5185\u5bb9\u4e0e LoongArch® \u6709\u5173\uff0c\u5e76\u53ef\u4ee5\u4e3a\u8bfb\u8005\u5e26\u6765\u4ef7\u503c\uff0c\\n\u65e0\u8bba\u4e25\u8083\u8d21\u732e\uff08\u6574\u7684\u5927\u6d3b:\u513f:\uff09\u6216\u662f\u535a\u541b\u4e00\u7b11\u90fd\u4e00\u6982\u6b22\u8fce\uff01\\n\\n10 \u6708 4 \u65e5\uff0cjiegec [\u53c8\u53d1\u73b0\u4e86](https://github.com/loongson-community/loongarch-opcodes/issues/1#issuecomment-1746975991) 21 \u6761\u672a\u89c1\u4e8e\u9f99\u67b6\u6784\u624b\u518c\u7684\u795e\u5947\u6307\u4ee4\uff01\\n\u5176\u4e2d\u6709\u4e00\u4e9b\u7591\u4f3c\u662f\u6267\u884c\u66f4\u5feb\u4f46\u7cbe\u5ea6\u66f4\u4f4e\u7684\u6d6e\u70b9\u6c42\u5012\u6570\u64cd\u4f5c\uff0c\u5982\u679c\u505a\u66f4\u591a\u5b9e\u9a8c\u6bd4\u5bf9\u76f8\u5e94\u6709\u6587\u6863\u8bb0\u8f7d\u6307\u4ee4\u7684\u8f93\u51fa\uff0c\u5219\u6709\u671b\u77e5\u6653\u66f4\u591a\u7ec6\u8282\u3002\\n\\n\u6574\u4e2a\u56fd\u5e86\u5047\u671f\uff0cAOSC \u793e\u533a\u90fd\u5728\u6298\u817e AMD \u663e\u5361\u5728\u9f99\u67b6\u6784\u673a\u5668\u4e0a\u7684\u7a33\u5b9a\u6027\u95ee\u9898\uff0c\\n\u9f99\u82af\u5de5\u7a0b\u5e08\u4eec\u4e5f\u79ef\u6781\u914d\u5408\uff0c\u300c\u4e3a\u4eba\u6c11\u505a\u9f99\u82af\u300d\u3002\\n\u4e2d\u56fd\u7684\u540c\u5b66\u8fc7\u7740\u7f8e\u897f\u65f6\u533a\uff0c\u7f8e\u897f\u7684\u540c\u5b66\u8fc7\u7740\u4e2d\u56fd\u65f6\u533a\uff1b\\n\u5728\u5982\u6b64\u7684\u793e\u533a\u534f\u4f5c\u4e0b\uff0c\u76f8\u4fe1\u6b64\u95ee\u9898\u7ec8\u5c06\u5f97\u5230\u89e3\u51b3\uff08\u6216\u51dd\u56fa\u4e3a [Errata \u6587\u6863](/docs/errata)\u7684\u9996\u6279\u8bb0\u8f7d\u4e4b\u4e00 :smiling_imp:\uff09\uff01\\n\\n## \u5f20\u8d34\u680f\\n\\n\u672c\u680f\u76ee\u53ef\u4f9b\u5f20\u8d34\u516c\u76ca\u6027\u8d28\u7684\u5404\u79cd\u4fe1\u606f\u3002\\n\\n* \u53cb\u60c5\u6269\u6563\uff1a[\u5b89\u540c\u5f00\u6e90\u793e\u533a\uff08AOSC\uff09](https://aosc.io)\u7684\u9f99\u67b6\u6784\u79fb\u690d\u4e3b\u7ebf\u5316\u5de5\u4f5c\u300c\u5408\u9f99\u300d\u4ecd\u5728\u5982\u706b\u5982\u837c\u8fdb\u884c\u4e2d\uff0c\\n \u6b64\u5de5\u4f5c\u5b8c\u6210\u540e\u9f99\u67b6\u6784\u5c06\u5347\u683c\u4e3a AOSC OS \u7684 Tier 1 \u67b6\u6784\u3002\\n \u6b22\u8fce\u540c\u5b66\u4eec\u8bd5\u7528\u3001\u53cd\u9988\uff0c\u4e5f\u6b22\u8fce\u6709\u5fd7\u4e4b\u58eb\u4e00\u540c\u52a0\u5165\u3002\\n \u63a8\u8350\u9605\u8bfb[\u300a\u5b89\u8bb0\u51b0\u5ba4\u30fb\u4e5d\u6708\u4e0b\u300b](https://github.com/AOSC-Dev/newsroom/blob/bfa12c12b1f819adab0fa568e906e682e0fbc244/coffee-break/20230922/zh_CN.md)\u3002(An\\n English version [is also available](https://github.com/AOSC-Dev/newsroom/blob/bfa12c12b1f819adab0fa568e906e682e0fbc244/coffee-break/20230922/en.md).)\\n* \u672c\u5468\u62a5[\u6301\u7eed\u63a5\u53d7\u7f51\u53cb\u6295\u7a3f][call-for-submissions]\u3002\u6b22\u8fce\u6765\u4e0a\u6e38\u5750\u5750\uff01\\n\\n[call-for-submissions]: https://github.com/loongson-community/areweloongyet/issues/16"},{"id":"this-week-in-loongarch-18","metadata":{"permalink":"/newsletter/this-week-in-loongarch-18","editUrl":"https://github.com/loongson-community/areweloongyet/newsletter/2023-10-02-this-week-in-loongarch-18.md","source":"@site/newsletter/2023-10-02-this-week-in-loongarch-18.md","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 18 \u671f","description":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01","date":"2023-10-02T10:40:39.000Z","formattedDate":"2023\u5e7410\u67082\u65e5","tags":[{"label":"\u6bcf\u5468\u4e00\u9f99","permalink":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99"}],"readingTime":7.505,"hasTruncateMarker":true,"authors":[{"name":"WANG Xuerui","title":"\ud83d\udc32\u9f99\u95e8\u5ba2\u6808\u6253\u6742\u7684","url":"https://github.com/xen0n","imageURL":"https://github.com/xen0n.png","key":"xen0n"}],"frontMatter":{"slug":"this-week-in-loongarch-18","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 18 \u671f","authors":["xen0n"],"date":"2023-10-02T10:40:39.000Z","tags":["\u6bcf\u5468\u4e00\u9f99"]},"unlisted":false,"prevItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 19 \u671f","permalink":"/newsletter/this-week-in-loongarch-19"},"nextItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 17 \u671f","permalink":"/newsletter/this-week-in-loongarch-17"}},"content":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01\\n\\n\x3c!-- truncate --\x3e\\n\\n\u5982\u65e0\u7279\u522b\u8bf4\u660e\uff0c\u6587\u4e2d\u63d0\u53ca\u7684\u65e5\u671f\u3001\u65f6\u95f4\u90fd\u4e3a\u5317\u4eac\u65f6\u95f4\uff08UTC+8\uff09\u3002\\n\\n## \u5148\u300c\u9a6c\u300d\u518d\u770b\\n\\n\u672c\u680f\u76ee\u7684\u5185\u5bb9\u5177\u6709\u4e00\u5b9a\u5ef6\u7eed\u6027\uff0c\u5c06\u6301\u7eed\u8ffd\u8e2a\u62a5\u9053 LoongArch® \u9886\u57df\u7684\u91cd\u8981\u6216\u957f\u671f\u9879\u76ee\uff08\u5751\uff09\u3002\\n\\n### Linux\\n\\nLinux v6.6-rc4 \u5df2\u7ecf[\u6b63\u5f0f tagged](https://lore.kernel.org/lkml/CAHk-=wia2-4DRvD-aXz70AV64yrt+Vr50MxHiDunZ71dHATv-Q@mail.gmail.com/)\uff0c\\n\u5305\u542b\u4e86\u4e24\u5904\u9f99\u67b6\u6784\u4fee\u590d\uff0c\u8bf7\u5404\u4e0b\u6e38\u53d1\u884c\u7248\u7684\u6253\u5305\u540c\u5b66\u4eec\u6ce8\u610f\u5e76\u5c3d\u91cf backport\uff1a\\n\\n* \u4fee\u590d\u6a21\u5757\u52a0\u8f7d\u5668\u4e0d\u8ba4\u8bc6 binutils 2.41 \u6c47\u7f16\u51fa\u7684\u65b0\u91cd\u5b9a\u4f4d\u7c7b\u578b\u7684\u95ee\u9898\uff08Tiezhu Yang\uff09\uff0c\\n* \u4fee\u590d NUMA \u7cfb\u7edf\u4e0a\u7269\u7406\u5185\u5b58\u5929\u82b1\u677f\u7684\u8ba1\u7b97\u95ee\u9898\uff08Huacai Chen\uff09\u3002\\n\\n\u6b64\u5916\uff0c\u9f99\u67b6\u6784 KVM \u652f\u6301\u76ee\u524d\u5df2\u8fdb\u5165 linux-next\uff0c\\n\u53ef\u642d\u914d\u6682\u672a\u5b8c\u5168\u4e0a\u6e38\u7684[\u9f99\u82af QEMU \u5206\u652f](https://github.com/loongson/qemu/tree/kvm-loongarch)\\n\u4f9b\u540c\u5b66\u4eec\u8bd5\u7528\u4e86\u3002\\n\uff08\u76ee\u524d\u5df2\u7ecf\u5728\u4e0a\u6e38\u7684\u968f\u673a\u81ea\u52a8\u5316\u6d4b\u8bd5\u4e2d[\u88ab\u53d1\u73b0\u4e86](https://lore.kernel.org/loongarch/d5ba4268-eef0-46be-8314-fccad55f41e2@infradead.org/)\u4e00\u5904\u7f16\u7801\u4e0d\u5468\uff0c\\n\u4e0d\u8fc7\u9884\u8ba1\u5047\u671f\u7ed3\u675f\u4e4b\u540e\u5c31\u4f1a\u4fee\u6389\u3002\uff09\\n\\n### \u5de5\u5177\u94fe\\n\\n#### gcc\\n\\n\u6301\u7eed\u6709\u4e00\u6bb5\u65f6\u95f4\u7684 [PR110939](https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110939)\\n\u4e0a\u5468\u7ec8\u4e8e\u5f97\u5230\u4e86\u89e3\u51b3\u3002\\n\u9f99\u67b6\u6784\u7684\u81ea\u4e3e\uff0c\u4ee5\u53ca ARM\u3001RISC-V \u4e0a\u7684\u76f8\u5173\u6d4b\u8bd5\u5931\u8d25\u90fd\u4fee\u590d\u4e86\u3002\\n\\nxry111 [\u5728\u52aa\u529b](https://github.com/xry111/gcc/commits/xry111/explicit-relocs-auto)\u4ece\u9ed8\u8ba4\u5f00\u542f\\nlinker relaxation \u6240\u5bfc\u81f4\u7684\u6307\u4ee4\u8c03\u5ea6\u673a\u4f1a\u51cf\u5c11\u4e2d\uff0c\u62a0\u56de\u4e00\u4e9b\u6027\u80fd\uff1a\\n\u5728\u4e00\u4e9b\u300c\u660e\u6446\u7740\u4e0d\u80fd\u4f9d\u9760\u94fe\u63a5\u5668 relax \u7684\u60c5\u51b5\u4e0b\u300d\uff08\u672c\u4eba\u8bed\uff09\uff0c\u4ecd\u7136\u5982\u5148\u524d\u4e00\u6837\u751f\u6210\\nexplicit relocs\u3002\\n\u4ed6\u51c6\u5907\u5728\u5047\u671f\u7ed3\u675f\u4e4b\u540e\u5c06\u6b64\u5de5\u4f5c\u53d1\u5411\u90ae\u4ef6\u5217\u8868\uff08\u5426\u5219\u53d1\u4e86\u4e5f\u6ca1\u4eba\u770b\uff09\u3002\\n\uff08\u611f\u8c22\u4f5c\u8005\u81ea\u6211\u6295\u7a3f\uff01\uff09\\n\\n#### LLVM\\n\\nLLVM \u7684\u534f\u4f5c\u6d41\u7a0b\u5df2\u5168\u9762\u8f6c\u5411 GitHub PR\uff0cPhabricator \u4e0d\u65e5\u5c06\u8f6c\u4e3a\u53ea\u8bfb\u6a21\u5f0f\uff0c\u8bf7\u5f00\u53d1\u8005\u4eec\u6ce8\u610f\u3002\\n\u8be6\u60c5\u8bf7\u89c1[\u8fc1\u79fb\u65f6\u95f4\u8868](https://discourse.llvm.org/t/update-on-github-pull-requests/71540)\u3002\\n\\nAmi-zhang \u7ed9 LLVM \u4e2d\u7aef\u7684 `Transforms/IPO/LowerTypeTests` \u5de5\u5e8fpass[\u9002\u914d\u4e86](https://github.com/llvm/llvm-project/pull/67312)\u9f99\u67b6\u6784\u3002\\n\\n\u5468\u62a5\u7b2c 14 \u671f\u62a5\u9053\u8fc7\u7684 hev \u7684[\u539f\u5b50\u64cd\u4f5c\u4f18\u5316](https://reviews.llvm.org/D159252)\u4e0a\u5468\u4e5f\u8fdb\u5165\u4e86\u4e3b\u7ebf\u3002\\n\\n#### Rust\\n\\n\u53d1\u7a3f\u51e0\u5c0f\u65f6\u524d\uff0cRust \u751f\u6001\u4e2d\u6700\u91cd\u8981\u5bc6\u7801\u5b66\u57fa\u7840\u5e93\u4e4b\u4e00 `ring`\\n[\u5408\u5e76\u4e86](https://github.com/briansmith/ring/pull/1632)\u9f99\u67b6\u6784\u652f\u6301\u3002\\n\u65f6\u9694\u4e24\u5e74\u4e4b\u4e45\uff0c`ring 0.17.0` \u7ec8\u4e8e\u6b63\u5f0f\u53d1\u5e03\uff0c\u53ef\u4ee5\u671f\u5f85\u672a\u6765\u7684\u6570\u6708\u95f4\u66f4\u591a Rust\\n\u9879\u76ee\u80fd\u591f\u968f\u7740\u4f9d\u8d56\u7248\u672c\u5347\u7ea7\uff0c\u800c\u83b7\u5f97\u9f99\u67b6\u6784\u652f\u6301\u4e86\u3002\\n\\n9 \u6708 30 \u65e5 hev \u5c06\u9f99\u67b6\u6784\u88f8\u673a\u7684\u6784\u5efa\u76ee\u6807[\u63d0\u5347\u5230\u4e86](https://github.com/rust-lang/rust/pull/115368)\\nTier 2\u3002\\n\u4e0d\u5de7\u7684\u662f\uff0c\u8fd9\u4e2a\u63d0\u4ea4\u7684\u5408\u5e76\u4f3c\u4e4e\u6070\u597d\u9519\u8fc7\u4e86 Rust 1.74.0 \u7684\u73ed\u8f66\uff1a\\n\u76ee\u524d\u770b\u56e0\u4e3a\u5c31\u51e0\u884c\u4ee3\u7801\u548c CI \u6539\u52a8\uff0c\u585e\u8fdb\u53bb\u4e5f\u4e0d\u662f\u4e0d\u53ef\u4ee5\uff0c\u4e0d\u8fc7\u4e0d\u6025\u7684\u8bdd\u4f30\u8ba1\u7b49\u7b49\u66f4\u597d\u3002\\n\u9f99\u67b6\u6784\u7684\u76ee\u524d\u7528\u6237\u7fa4\u4f53\u91cc\uff0c\u5e94\u8be5\u6781\u5c11\u6709\u65e2\u8ddf\u8e2a\u4e0a\u6e38\u793e\u533a\u7248\u672c\uff0c\u53c8\u505a\u88f8\u673a\u5f00\u53d1\u7684\uff0c\u56e0\u6b64\u7b14\u8005\u8ba4\u4e3a\u95ee\u9898\u4e0d\u5927\u3002\\n\uff08\u611f\u8c22\u4f5c\u8005\u81ea\u6211\u6295\u7a3f\uff01\uff09\\n\\n\u540c\u4e00\u5929\uff0cxry111 \u7ed9 Rust \u8bfb\u5199\u76ee\u6807\u4ee3\u7801\u6587\u4ef6\u683c\u5f0f\u7684\u8457\u540d\u57fa\u7840\u5e93 `object`\\n[\u6dfb\u52a0\u4e86](https://github.com/gimli-rs/object/pull/578) LoongArch ELF psABI\\n20230519 \u7248\u672c\u65b0\u589e\u7684\u91cd\u5b9a\u4f4d\u7c7b\u578b\u5b9a\u4e49\u3002\\n\uff08\u611f\u8c22\u4f5c\u8005\u81ea\u6211\u6295\u7a3f\uff01\uff09\\n\\n## \u9650\u65f6\u8fd4\u573a\u4e13\u680f\uff1aQEMU\\n\\n\u6700\u8fd1 QEMU \u4e0a\u6e38\u7684\u9f99\u67b6\u6784\u6587\u4ef6\u5939\u53c8\u70ed\u95f9\u8d77\u6765\u4e86\u3002\\n\u540e\u7eed\u770b\u60c5\u51b5\u53ea\u8981\u4e00\u5468\u95f4\u7684 QEMU \u52a8\u6001\u8db3\u591f\u591a\uff0c\u8fd9\u4e2a\u4e13\u680f\u5c31\u4f1a\u51fa\u73b0\u5e76\u6536\u7eb3\u5b83\u4eec\uff0c\u5426\u5219\u8fd8\u662f\u585e\u300a\u6742\u95fb\u64ad\u62a5\u300b\u3002\\n\\n\u65e5\u524d\uff089 \u6708 21 \u65e5\uff09\uff0cQEMU \u7684\u9f99\u67b6\u6784\u6a21\u62df[\u83b7\u5f97\u4e86](https://gitlab.com/qemu-project/qemu/-/commit/55394dcbec8f0c29c30e792c102a0edd50a52bf4)\\nLASX \u652f\u6301\uff08\u4e0d\u8fc7\u5f88\u5feb[\u88ab\u53d1\u73b0\u6709\u5751](https://gitlab.com/qemu-project/qemu/-/issues/1907)\uff09\u3002\\n\uff08\u611f\u8c22 [@jiegec](https://github.com/jiegec) \u7684\u63d0\u9192\uff01\uff09\\n\\n10 \u6708 1 \u65e5\uff0cJiajie Chen \u7ed9\u9f99\u67b6\u6784\u7684 linux-user \u6a21\u62df[\u5f00\u542f\u4e86](https://patchwork.kernel.org/project/qemu-devel/patch/20231001085315.1692667-1-c@jia.je/)\\nLSX\u3001LASX \u7684 ELF HWCAP \u6807\u5fd7\u4f4d\u3002\\n\uff08\u8fd9\u6837\u88ab\u6a21\u62df\u7684\u7a0b\u5e8f\u4eec\u5c31\u4e0d\u4f1a\u770b\u7740\u6ca1 HWCAP\uff0c\\n\u4fbf\u6309\u7167[\u300a\u9f99\u67b6\u6784\u8f6f\u4ef6\u5f00\u53d1\u4e0e\u6784\u5efa\u7ea6\u5b9a\u300b\u6709\u5173\u6761\u6b3e](https://github.com/loongson/la-softdev-convention/blob/2975b325e1d31c8b52d75f9948d627343c5a454c/la-softdev-convention.adoc#91-kernel-development)\uff0c\\n\u4e3b\u52a8\u89c4\u907f\u5411\u91cf\u6307\u4ee4\u4e86\u3002\uff09\\n\\n\u540c\u4e00\u5929\uff0c\u7b14\u8005\u6d4b\u8bd5\u4e86 Richard Henderson 9 \u6708 16 \u53f7[\u7ed9\u9f99\u67b6\u6784\u505a\u7684 128 \u4f4d\u8bbf\u5b58\u4f18\u5316](https://patchwork.kernel.org/project/qemu-devel/list/?series=784972)\u6ca1\u95ee\u9898\uff0c\\n\u56de\u4e86\u5c01\u90ae\u4ef6\uff0c\u5e76\u4e14\u5341\u5206\u60ed\u6127\u8fd1\u671f\u5728 QEMU \u6c34\u7684\u8865\u4e01\u4e0d\u591f\u591a\uff1a\\n\u51c6\u5907\u4eca\u5e74\u770b\u7740\u628a LBT \u6269\u5c55\u6307\u4ee4\u591a\u5229\u7528\u8d77\u6765\u3002\\n\\n9 \u6708 30 \u65e5\uff0cRichard Henderson \u5728\u4ed6\u7ed9 linux-user [\u589e\u52a0](https://patchwork.kernel.org/project/qemu-devel/list/?series=788954)\\nvDSO \u6a21\u62df\u7684\u540c\u65f6\uff0c\\n\u987a\u624b[\u9002\u914d\u4e86](https://patchwork.kernel.org/project/qemu-devel/patch/20230930021529.987950-16-richard.henderson@linaro.org/)\u9f99\u67b6\u6784\u3002\\n\\n\u540c\u4e00\u5929\uff0cJiajie Chen [\u4fee\u590d\u4e86](https://patchwork.kernel.org/project/qemu-devel/patch/20230930112837.1871691-1-c@jia.je/)\\n\u524d\u9762\u63d0\u5230\u7684 LASX \u652f\u6301\u4ee3\u7801\u4e2d\u4e00\u5904\u6807\u5fd7\u4f4d\u5199\u9519\uff0c\u5bfc\u81f4 guest \u5185\u6838\u6216\u8fdb\u7a0b\u5d29\u6e83\uff0c\u5565\u90fd\u5e72\u4e0d\u4e86\u7684\u5de8\u5751\u3002\\n\\n9 \u6708 26 \u65e5\uff0cSong Gao [\u4fee\u4e86](https://patchwork.kernel.org/project/qemu-devel/patch/20230926075819.3602537-1-gaosong@loongson.cn/)\u9f99\u67b6\u6784\\nTCG \u7684\u4e00\u5904\u6784\u5efa\u9519\u8bef\uff0c\u53c8[\u89e3\u51b3\u4e86](https://patchwork.kernel.org/project/qemu-devel/patch/20230926071253.3601021-1-gaosong@loongson.cn/)\u4e00\u5904\u8b66\u544a\u3002\\n\\n\u540c\u4e00\u5929\uff0cXianglai Li \u7ed9\u9f99\u67b6\u6784[\u52a0\u4e86](https://patchwork.kernel.org/project/qemu-devel/list/?series=787587)\u70ed\u63d2\u62d4\u865a\u62df CPU \u7684\u80fd\u529b\u3002\\n\\n## \u6742\u95fb\u64ad\u62a5\\n\\n9 \u6708 29 \u65e5\uff0cShi Pujin \u5728 Slackware CN \u7528\u6237\u793e\u533a[\u53d1\u5e03\u4e86](http://slackwarecn.github.io/2023/09/29/Slackwareloong1.0%E5%8F%91%E5%B8%83%EF%BC%81/)\\nSlackwareloong 1.0 LTS \u7248\u672c\u3002\\n\uff08\u611f\u8c22\u4f5c\u8005\u81ea\u6211\u6295\u7a3f\uff01\uff09\\n\\n\\n## \u793e\u533a\u6574\u6d3b:\u513f:\\n\\n\u672c\u680f\u76ee\u63a5\u53d7\u4efb\u4f55\u7f51\u53cb\u7684\u6295\u7a3f\uff0c\u53ea\u8981\u5185\u5bb9\u4e0e LoongArch® \u6709\u5173\uff0c\u5e76\u53ef\u4ee5\u4e3a\u8bfb\u8005\u5e26\u6765\u4ef7\u503c\uff0c\\n\u65e0\u8bba\u4e25\u8083\u8d21\u732e\uff08\u6574\u7684\u5927\u6d3b:\u513f:\uff09\u6216\u662f\u535a\u541b\u4e00\u7b11\u90fd\u4e00\u6982\u6b22\u8fce\uff01\\n\\n\\n\\nLA UOSC \u7f51\u53cb autistic-chad\uff08GitHub [@cl91](https://github.com/cl91)\uff09[\u5728\u618b\u5927\u62db](https://bbs.loongarch.org/d/303-gsgpu)\uff1a\\n\u5c06 GSGPU \u7684\u5185\u6838\u9a71\u52a8\u4ece Loongnix 4.19 \u5185\u6838\u79fb\u690d\u5230\u4e3b\u7ebf\u7248\u672c\uff086.6+\uff09\uff01\\n\\n:::info RESPECT\\n\u8fd9\u9700\u8981\u8de8\u8d8a 5 \u5e74\u7684\u65f6\u95f4\uff0c26 \u4e2a\u6b63\u5f0f\u7248\u672c\uff0c\u6570\u4e07\u6761\u56fe\u5f62\u5b50\u7cfb\u7edf\u63d0\u4ea4\uff0c\u51e0\u5341\u751a\u81f3\u4e0a\u767e\u6b21\u5408\u5e76\u51b2\u7a81\u6216\u63a5\u53e3\u53d8\u66f4\uff1b\\n\u8fd8\u6ca1\u7b97\u4e0a GSGPU \u548c Apple M1 GPU \u60c5\u51b5\u7c7b\u4f3c\uff0c\u90fd\u5904\u4e8e 0 \u516c\u5f00\u6587\u6863\u72b6\u6001\u3002\\n\u5411\u8fd9\u4f4d\u52c7\u58eb\u81f4\u656c\uff01\\n\\n\u4e5f\u6b22\u8fce\u6709\u610f\u5411\u7684\u540c\u5b66\u5728 LA UOSC \u8bba\u575b\u4e0a\u8ff0\u7684\u8d34\u5b50\u53c2\u4e0e\u4e92\u52a8\uff1a\\n\u6709\u4e00\u4efd\u70ed\uff0c\u53d1\u4e00\u4efd\u5149\uff0c\\n\u4ee5\u4f7f\u4e0a\u6e38\u5185\u6838\u7684\u4f7f\u7528\u8005\u4eec\u80fd\u65e9\u65e5\u7528\u4e0a\u9f99\u82af\u96c6\u663e\u7684 3D \u52a0\u901f~~\u868a\u5b50\u518d\u5c0f\u4e5f\u662f\u8089~~\u3002\\n:::\\n\\n## \u5f20\u8d34\u680f\\n\\n\u672c\u680f\u76ee\u53ef\u4f9b\u5f20\u8d34\u516c\u76ca\u6027\u8d28\u7684\u5404\u79cd\u4fe1\u606f\u3002\\n\\n* \u53cb\u60c5\u6269\u6563\uff1a[\u5b89\u540c\u5f00\u6e90\u793e\u533a\uff08AOSC\uff09](https://aosc.io)\u7684\u9f99\u67b6\u6784\u79fb\u690d\u4e3b\u7ebf\u5316\u5de5\u4f5c\u300c\u5408\u9f99\u300d\u4ecd\u5728\u5982\u706b\u5982\u837c\u8fdb\u884c\u4e2d\uff0c\\n \u6b64\u5de5\u4f5c\u5b8c\u6210\u540e\u9f99\u67b6\u6784\u5c06\u5347\u683c\u4e3a AOSC OS \u7684 Tier 1 \u67b6\u6784\u3002\\n \u6b22\u8fce\u540c\u5b66\u4eec\u8bd5\u7528\u3001\u53cd\u9988\uff0c\u4e5f\u6b22\u8fce\u6709\u5fd7\u4e4b\u58eb\u4e00\u540c\u52a0\u5165\u3002\\n \u63a8\u8350\u9605\u8bfb[\u300a\u5b89\u8bb0\u51b0\u5ba4\u30fb\u4e5d\u6708\u4e0b\u300b](https://github.com/AOSC-Dev/newsroom/blob/bfa12c12b1f819adab0fa568e906e682e0fbc244/coffee-break/20230922/zh_CN.md)\u3002(An\\n English version [is also available](https://github.com/AOSC-Dev/newsroom/blob/bfa12c12b1f819adab0fa568e906e682e0fbc244/coffee-break/20230922/en.md).)\\n* \u672c\u5468\u62a5[\u6301\u7eed\u63a5\u53d7\u7f51\u53cb\u6295\u7a3f][call-for-submissions]\u3002\u6b22\u8fce\u6765\u4e0a\u6e38\u5750\u5750\uff01\\n\\n[call-for-submissions]: https://github.com/loongson-community/areweloongyet/issues/16"},{"id":"this-week-in-loongarch-17","metadata":{"permalink":"/newsletter/this-week-in-loongarch-17","editUrl":"https://github.com/loongson-community/areweloongyet/newsletter/2023-09-25-this-week-in-loongarch-17.md","source":"@site/newsletter/2023-09-25-this-week-in-loongarch-17.md","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 17 \u671f","description":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01","date":"2023-09-25T07:17:26.000Z","formattedDate":"2023\u5e749\u670825\u65e5","tags":[{"label":"\u6bcf\u5468\u4e00\u9f99","permalink":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99"}],"readingTime":7.235,"hasTruncateMarker":true,"authors":[{"name":"WANG Xuerui","title":"\ud83d\udc32\u9f99\u95e8\u5ba2\u6808\u6253\u6742\u7684","url":"https://github.com/xen0n","imageURL":"https://github.com/xen0n.png","key":"xen0n"}],"frontMatter":{"slug":"this-week-in-loongarch-17","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 17 \u671f","authors":["xen0n"],"date":"2023-09-25T07:17:26.000Z","tags":["\u6bcf\u5468\u4e00\u9f99"]},"unlisted":false,"prevItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 18 \u671f","permalink":"/newsletter/this-week-in-loongarch-18"},"nextItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 16 \u671f","permalink":"/newsletter/this-week-in-loongarch-16"}},"content":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01\\n\\n\x3c!-- truncate --\x3e\\n\\n\u5982\u65e0\u7279\u522b\u8bf4\u660e\uff0c\u6587\u4e2d\u63d0\u53ca\u7684\u65e5\u671f\u3001\u65f6\u95f4\u90fd\u4e3a\u5317\u4eac\u65f6\u95f4\uff08UTC+8\uff09\u3002\\n\\n## \u5148\u300c\u9a6c\u300d\u518d\u770b\\n\\n\u672c\u680f\u76ee\u7684\u5185\u5bb9\u5177\u6709\u4e00\u5b9a\u5ef6\u7eed\u6027\uff0c\u5c06\u6301\u7eed\u8ffd\u8e2a\u62a5\u9053 LoongArch® \u9886\u57df\u7684\u91cd\u8981\u6216\u957f\u671f\u9879\u76ee\uff08\u5751\uff09\u3002\\n\\n### Linux\\n\\n9 \u6708 23 \u65e5\uff0cHuacai Chen \u5411[\u4e2d\u56fd\u65f6\u95f4 9 \u6708 25 \u65e5\u51cc\u6668 tagged \u7684](https://lore.kernel.org/lkml/CAHk-=wjrZgxjHZuXwrGeFnng_whUmtToCWE5GQ+HORhGSeiX8g@mail.gmail.com/)\\nLinux v6.6-rc3 [\u63a8\u9001\u4e86](https://lore.kernel.org/loongarch/20230923091031.1075337-1-chenhuacai@loongson.cn/)\u4e00\u7ec4\u95ee\u9898\u4fee\u590d\u4e0e\u4ee3\u7801\u6e05\u7406\u3002\\n\u7531\u4e8e\u6b64 rc \u5305\u542b\u91cd\u8981\u7684\u4fee\u590d\u5de5\u4f5c\uff08\u89c1\u4e0b\uff09\uff0c\u5efa\u8bae\u6240\u6709\u7d27\u8ddf\u4e3b\u7ebf\u7684\u540c\u5b66\u4eec\u5c3d\u5feb\u5347\u7ea7\u6216\u8ddf\u8fdb\u6700\u65b0\u7684\\nlinux-next\uff08≥ `next-20230925`\uff09\u3002\\n\\n* [\u4fee\u590d\u4e86](https://lore.kernel.org/loongarch/CAAhV-H7r2iNVUstHuYHj8Ve=sY9c5JoMvZNX_pDaUVhL7oGWXw@mail.gmail.com/T/#m74d1c148796ffb824ced5986e3160d055778899c)\u9f99\u67b6\u6784\u4e0a\u4e00\u65e6\u542f\u7528\u5185\u6838\u914d\u7f6e\u9879\\n `CONFIG_DEFERRED_STRUCT_PAGE_INIT` \u5219\u7cfb\u7edf\u65e0\u6cd5\u6b63\u5e38\u542f\u52a8\u7684\u95ee\u9898\u3002\\n \uff08\u5bf9\u4e8e\u63d2\u4e86\u5f88\u591a\u5185\u5b58\u7684\u673a\u5668\uff0c\u6b64\u4f18\u5316\u53ef\u5c11\u8bb8\u63d0\u5347\u542f\u52a8\u901f\u5ea6\u3002\\n \u56e0\u6b64\u5185\u5b58\u63d2\u6ee1\u53c8\u559c\u6b22\u5fae\u64cd\u7684\u793e\u533a\u5f00\u53d1\u8005\u4eec\u88ab\u7b2c\u4e00\u65f6\u95f4\u5751\u5230\u4e86\uff1a\\n \u9f99\u82af\u56e2\u961f\u6781\u5c11\u6539\u52a8\u3001\u6d4b\u8bd5\u8fd9\u4e9b\u4e0d\u76f4\u63a5\u4e0e\u9f99\u82af\u82af\u7247\u3001\u8f6f\u4ef6\u3001\u51fa\u8d27\u7cfb\u7edf\u76f8\u5173\u7684\u5185\u6838\u914d\u7f6e\uff0c\\n \u6240\u4ee5\u672a\u5728[\u5f15\u53d1\u95ee\u9898\u7684\u63d0\u4ea4](https://github.com/torvalds/linux/commit/61167ad5fecdea)\u6240\u5728\u7684\\n v6.5 \u5f00\u53d1\u5468\u671f\u53d1\u73b0\u95ee\u9898\u3002\uff09\\n* \uff08\u6b64\u53d8\u66f4\u4e0e\u9f99\u67b6\u6784\u65e0\u5173\u4f46\u5341\u5206\u91cd\u8981\uff09[\u56de\u6eda\u4e86](https://www.phoronix.com/news/Linux-Revert-MG-Timestamps)\u591a\u7c92\u5ea6\u65f6\u95f4\u6233\uff08Multi-grained Timestamps\uff09\u5de5\u4f5c\u3002\\n \u6b64\u4f18\u5316\u672c\u610f\u662f\u60f3\u964d\u4f4e NFS\uff08\u7f51\u7edc\u6587\u4ef6\u7cfb\u7edf\uff09\u7684\u6027\u80fd\u5f00\u9500\uff0c\u4f46\u5b9e\u9645\u5728\u5176\u4ed6\u6587\u4ef6\u7cfb\u7edf\u4e0a\u5f15\u8d77\u4e86\u76f8\u5173\u7684\u7ec6\u5fae bugs\uff0c\\n \u56e0\u6b64\u8865\u4e01\u4f5c\u8005\u51b3\u5b9a\u63a8\u7ffb\u6b64\u65b9\u6848\u4ece\u5934\u518d\u6765\u3002\\n\\n9 \u6708 20 \u65e5\uff0cKVM \u7ef4\u62a4\u8005 Paolo [\u5728\u56de\u4fe1\u4e2d\u8868\u793a](https://lore.kernel.org/loongarch/CAAhV-H6YormmC7DC4Ar9Rwu16OHKP0G8+=7eShxkWjjQ7kq5mA@mail.gmail.com/T/#m3a0928eccdaf047b8d1365512b563a571047f6c6)\uff1a\\n\u65e2\u7136\u4f60\u4eec\u5df2\u7ecf\u5728\u51c6\u5907\u7b2c 22 \u7248\u8865\u4e01\u4e86\uff0c\u5230\u65f6\u5019\u53ef\u4ee5\u4f5c\u4e3a Pull Request \u987a\u5e26\u63d0\u4e86\u3002Huacai Chen\\n[\u56de\u590d\u8bf4](https://lore.kernel.org/loongarch/CAAhV-H6YormmC7DC4Ar9Rwu16OHKP0G8+=7eShxkWjjQ7kq5mA@mail.gmail.com/)\uff1a\\n\u5982\u679c v22 \u6ca1\u4ec0\u4e48\u66f4\u591a\u5ba1\u67e5\u610f\u89c1\u7684\u8bdd\uff0c\u7b49\u4e00\u4e24\u5468\u5c31\u53d1\u3002\\n\u770b\u4e0a\u53bb\u9f99\u67b6\u6784 KVM \u652f\u6301\u8fdb\u5165 Linux 6.7 \u6307\u65e5\u53ef\u5f85\u4e86\uff1a\\n\u786c\u4ef6\u865a\u62df\u5316\uff0c\u8bf4\u662f\u670d\u52a1\u5668\u3001\u6570\u636e\u4e2d\u5fc3\uff0c\u751a\u81f3\u5bb6\u5ead\u591a\u5408\u4e00 NAS \u573a\u666f\u7684\u6700\u57fa\u7840\u80fd\u529b\u4e5f\u4e0d\u4e3a\u8fc7\u3002\\nLinux 6.7 \u662f\u4e2a\u503c\u5f97\u671f\u5f85\u7684\u66f4\u65b0\u3002\\n\\n### \u5de5\u5177\u94fe\\n\\n#### gcc\\n\\n\u4e3a\u542f\u7528 linker relaxation\uff08\u94fe\u63a5\u5668\u677e\u5f1b\uff09\u4f18\u5316\uff0cchenglulu [\u4f7f\u5f97](https://gcc.gnu.org/pipermail/gcc-patches/2023-September/630954.html)\\ngcc \u5728\u6784\u5efa\u65f6\u5982\u679c\u53d1\u73b0\u914d\u5957\u7684\u6c47\u7f16\u5668\u6709 `-mrelax` \u652f\u6301\uff0c\u5219\u8ba9\u6210\u54c1 gcc \u9ed8\u8ba4\u5173\u95ed\\n`-mexplicit-relocs` \u9009\u9879\u3002\\n\u8fd9\u6837\u505a\u7684\u4f18\u5316\u6548\u679c\u53ef\u80fd\u5341\u5206\u53d6\u51b3\u4e8e\u88ab\u7f16\u8bd1\u7684\u5177\u4f53\u4ee3\u7801\uff0c\u6545\u7279\u522b\u63d0\u53ca\uff0c\u8bf7\u5404\u4f4d\u540c\u5b66\u5347\u7ea7 gcc\\n\u65f6\u591a\u591a\u7559\u5fc3\u5e76\u89c2\u5bdf\u4e00\u4e9b\u81ea\u5df1\u5173\u5fc3\u7684\u8f6f\u4ef6\u3001\u51fd\u6570\u7684\u6027\u80fd\u4e0e\u6c47\u7f16\u5f62\u72b6\u662f\u5426\u4ecd\u7136\u7b26\u5408\u9884\u671f\u3002\\n\\n:::info\\n\u7531\u4e8e\u6d89\u53ca\u5220\u9664\u4e00\u4e9b\u6307\u4ee4\uff0clinker relaxation \u80fd\u5de5\u4f5c\u7684\u524d\u63d0\u662f\u76f8\u5173\u6307\u4ee4\u90fd\u805a\u5728\u4e00\u8d77\uff1a\\n\u8fd9\u9879\u5de5\u4f5c\u53ea\u80fd\u5728\u94fe\u63a5\u9636\u6bb5\u5b8c\u6210\uff0c\u4e0d\u505a\u6b64\u4fdd\u8bc1\u4f1a\u8ba9\u94fe\u63a5\u5668\u7684\u590d\u6742\u5ea6\u7206\u70b8\uff0c\\n\u4f8b\u5982\u9700\u8981\u8ddf\u8e2a\u6bcf\u4e2a\u5bc4\u5b58\u5668\u7684\u4f7f\u7528\u60c5\u51b5\u4ee5\u9632\u6b62\u5220\u9664\u6307\u4ee4\u5bfc\u81f4\u7a0b\u5e8f\u8bed\u4e49\u53d8\u5316\u3002\\n\u8fd9\u8981\u6c42\u7f16\u8bd1\u5668\u5728\u751f\u6210\u4ee3\u7801\u65f6\uff0c\u53ea\u7528\u4f2a\u6307\u4ee4\u6765\u8868\u8fbe\u4ea7\u751f\u3001\u4f7f\u7528\u7b26\u53f7\u5730\u5740\u7684\u52a8\u4f5c\uff0c**\u4e0d\u80fd**\u6709\u63a7\u5236\u80cc\u540e\u5177\u4f53\u6307\u4ee4\u7684\u81ea\u7531\u5ea6\u3002\\n\u8fd9\u5c31\u4e0e `-mexplicit-relocs` \u5929\u7136\u4e0d\u5bf9\u4ed8\uff1a\\n\u6253\u5f00\u8fd9\u4e2a\u9009\u9879\u5c31\u662f\u8981\u8ba9\u7f16\u8bd1\u5668**\u80fd**\u611f\u77e5\u3001\u63a7\u5236\u8fd9\u4e9b\u5177\u4f53\u6307\u4ee4\uff0c\\n\u8fdb\u800c\u5f97\u4ee5\u5229\u7528\u66f4\u591a\u4f18\u5316\u673a\u4f1a\uff0c\u4e5f\u66f4\u6709\u52a9\u4e8e\u6307\u4ee4\u8c03\u5ea6\u3002\\n\\n\u56e0\u4e3a linker relaxation \u4e0e\u76f8\u5173\u6307\u4ee4\u7684\u66f4\u4f73\u8c03\u5ea6\u5728\u73b0\u6709\u6761\u4ef6\u4e0b\u65e0\u6cd5\u4e24\u5168\uff0c\u6240\u4ee5\u624d\u8bf4\u4e0d\u89c1\u5f97\u662f\u65e0\u6761\u4ef6\u4f18\u5316\uff0c\u9700\u8981\u5341\u5206\u7559\u5fc3\u3002\\n:::\\n\\nliwei [\u8c03\u6574\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-September/630749.html)\u4e00\u4e9b\u5411\u91cf\u4f18\u5316\u6210\u672c\u6570\u503c\u3002\\n\\nguojie [\u4f18\u5316\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-September/631062.html)\u51e0\u79cd\u5411\u91cf\u503c\u7684\u6784\u9020\u3002\\n\\nChenghui Pan [\u5728\u4fee\u6d4b\u8bd5](https://gcc.gnu.org/pipermail/gcc-patches/2023-September/630953.html)\u3002\\n\\n#### D\\n\\nAOSC \u793e\u533a\u7684[\u5218\u5b50\u5174](https://github.com/liushuyu)\u4e3a D \u8bed\u8a00\u7684\\n[GCC \u524d\u7aef](https://gcc.gnu.org/pipermail/gcc-patches/2023-September/631259.html)\u4e0e[\u8fd0\u884c\u65f6](https://github.com/dlang/dmd/pull/15628)\u6dfb\u52a0\u4e86\u9f99\u67b6\u6784\u652f\u6301\u3002\\n\u6b22\u8fce\uff01\\n\\n#### LLVM\\n\\n\u5f53\u5730\u65f6\u95f4 9 \u6708 19 \u65e5\uff0cLLVM 17 \u6b63\u5f0f\u53d1\u5e03\u3002\u6b64\u7248\u672c\u65b0\u589e\u4e86\u4e0d\u5c11\u9f99\u67b6\u6784\u4f18\u5316\uff0c\u66f4\u6709\u5b8c\u6574\u7684\\nLA64 v1.00 \u6307\u4ee4\u6c47\u7f16\u3001\u53cd\u6c47\u7f16\u652f\u6301\uff08\u5148\u524d\u5df2\u6709\u62a5\u9053\uff09\uff0c\u5efa\u8bae\u5f00\u53d1\u8005\u4eec\u53ea\u8981\u53ef\u884c\u90fd\u5347\u7ea7\u3002\\n\\n\u6700\u8fd1\u53d1\u73b0 Clang 17 \u5728\u5e26\u7740 `-march=la464` \u7f16\u8bd1\u7684\u65f6\u5019\uff0c\u53ef\u80fd\u4f1a\u60f3\u505a\u81ea\u52a8\u5411\u91cf\u5316\u7136\u540e\u4e0d\u77e5\u9053\u600e\u4e48\u751f\u6210\u4ee3\u7801\uff08\u56e0\u4e3a\u5f53\u65f6\u8fd8\u6ca1\u505a\uff1b\u73b0\u5728\u4f3c\u4e4e\u4e5f\u6ca1\uff09\uff0c\u5bfc\u81f4\u5d29\u6e83\u3002\\n\u7531\u4e8e\u7b14\u8005\u7cbe\u529b\u6709\u9650\uff0c\u6b22\u8fce\u6709\u5fd7\u4e4b\u58eb\u81ea\u544a\u594b\u52c7\uff1a\u7b14\u8005\u4f1a\u6559\u4f60\u600e\u4e48\u67e5 & \u4fee\u3002\\n\\n## \u6742\u95fb\u64ad\u62a5\\n\\n\u8fd1\u65e5\uff0c\u8457\u540d\u5de5\u5177\u94fe\u7ef4\u62a4\u8005\u4e4b\u4e00\u3001LLVM LLD \u7684\u539f\u4f5c\u8005 Rui Ueyama \u3055\u3093[\u53d1\u5e03\u4e86](https://github.com/rui314/mold/releases/tag/v2.2.0)\\nmold 2.2\u3002\\nmold \u662f\u4ed6\u57fa\u4e8e\u591a\u5e74\u7684\u94fe\u63a5\u5668\u5f00\u53d1\u7ecf\u9a8c\u91cd\u65b0\u8bbe\u8ba1\u7684\u73b0\u4ee3\u5316\u3001\u9ad8\u6027\u80fd\u94fe\u63a5\u5668\uff0c\\n\u4ece 2.1 \u7248\u672c\u8d77\u652f\u6301\u9f99\u67b6\u6784\u3002\\n\u4e3a\u63d0\u5347 `--build-id` \u8ba1\u7b97\u901f\u5ea6\uff0cmold 2.2 \u6362\u7528\u4e86\\n[BLAKE3](https://github.com/BLAKE3-team/BLAKE3) \u54c8\u5e0c\u7b97\u6cd5\uff1b\\n\u8fd9\u4e2a\u5e93[\u6709\u6c47\u7f16\u4f18\u5316\u7a7a\u95f4](https://github.com/BLAKE3-team/BLAKE3/blob/master/c/README.md)\uff01\\n\u6b22\u8fce\u6709\u5fd7\u4e4b\u58eb\u4e3a\u5176\u6dfb\u52a0 LSX/LASX \u4f18\u5316\u3002\\n\\n9 \u6708 20 \u65e5\uff0c\u7b14\u8005\u4ece\u4e00\u5c01\u6284\u9001\u5230\u81ea\u5df1\u90ae\u7bb1\u7684\u901a\u77e5\u90ae\u4ef6\u5173\u6ce8\u5230\uff1aopenEuler \u793e\u533a[\u5df2\u5728\u7740\u624b](https://gitee.com/openeuler/kernel/issues/I82GAS)\u4e3a\u5176\\n23.09 \u7cfb\u7edf\u7684\u5185\u6838\u6dfb\u52a0\u66f4\u591a\u9f99\u67b6\u6784\u652f\u6301\u3002\\n\u770b\u90ae\u7bb1\u5730\u5740\uff0c\u63a8\u8fdb\u6b64\u5de5\u4f5c\u7684 Hongchen Zhang \u662f\u9f99\u82af\u5458\u5de5\u3002[openEuler 23.09 \u7684\u5185\u6838](https://gitee.com/openeuler/kernel/tree/openEuler-23.09/)\u7248\u672c\u662f 6.4\uff0c\\n\u8fd9\u610f\u5473\u7740\u4e0a\u8ff0\u5de5\u5355\u4e2d\u63d0\u5230\u7684\u5de5\u4f5c\u4f1a\u6d89\u53ca\u8bb8\u591a\u5411\u540e\u79fb\u690d\uff08backport\uff09\uff0c\u5728\u6b64\u795d :ta: \u4eec\u5c11\u88ab\u51b2\u7a81\u5751\u5230 :smiling_imp:\\n\\n## \u5f20\u8d34\u680f\\n\\n\u672c\u680f\u76ee\u53ef\u4f9b\u5f20\u8d34\u516c\u76ca\u6027\u8d28\u7684\u5404\u79cd\u4fe1\u606f\u3002\\n\\n* \u53cb\u60c5\u6269\u6563\uff1a[\u5b89\u540c\u5f00\u6e90\u793e\u533a\uff08AOSC\uff09](https://aosc.io)\u6b63\u5728\u63a8\u8fdb\u5176\u9f99\u67b6\u6784\u79fb\u690d\u7684\u4e3b\u7ebf\u5316\u5de5\u4f5c\u300c\u5408\u9f99\u300d\uff0c\\n \u6b64\u5de5\u4f5c\u5b8c\u6210\u540e\u9f99\u67b6\u6784\u5c06\u5347\u683c\u4e3a AOSC OS \u7684 Tier 1 \u67b6\u6784\u3002\\n \u6b22\u8fce\u540c\u5b66\u4eec\u8bd5\u7528\u3001\u53cd\u9988\uff0c\u4e5f\u6b22\u8fce\u6709\u5fd7\u4e4b\u58eb\u4e00\u540c\u52a0\u5165\u3002\\n \u63a8\u8350\u9605\u8bfb[\u300a\u5b89\u8bb0\u51b0\u5ba4\u30fb\u4e5d\u6708\u4e0b\u300b](https://github.com/AOSC-Dev/newsroom/blob/bfa12c12b1f819adab0fa568e906e682e0fbc244/coffee-break/20230922/zh_CN.md)\u3002(An\\n English version [is also available](https://github.com/AOSC-Dev/newsroom/blob/bfa12c12b1f819adab0fa568e906e682e0fbc244/coffee-break/20230922/en.md).)\\n* \u672c\u5468\u62a5[\u6301\u7eed\u63a5\u53d7\u7f51\u53cb\u6295\u7a3f][call-for-submissions]\u3002\u6b22\u8fce\u6765\u4e0a\u6e38\u5750\u5750\uff01\\n\\n[call-for-submissions]: https://github.com/loongson-community/areweloongyet/issues/16"},{"id":"this-week-in-loongarch-16","metadata":{"permalink":"/newsletter/this-week-in-loongarch-16","editUrl":"https://github.com/loongson-community/areweloongyet/newsletter/2023-09-18-this-week-in-loongarch-16.md","source":"@site/newsletter/2023-09-18-this-week-in-loongarch-16.md","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 16 \u671f","description":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01","date":"2023-09-18T05:37:25.000Z","formattedDate":"2023\u5e749\u670818\u65e5","tags":[{"label":"\u6bcf\u5468\u4e00\u9f99","permalink":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99"}],"readingTime":3.135,"hasTruncateMarker":true,"authors":[{"name":"WANG Xuerui","title":"\ud83d\udc32\u9f99\u95e8\u5ba2\u6808\u6253\u6742\u7684","url":"https://github.com/xen0n","imageURL":"https://github.com/xen0n.png","key":"xen0n"}],"frontMatter":{"slug":"this-week-in-loongarch-16","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 16 \u671f","authors":["xen0n"],"date":"2023-09-18T05:37:25.000Z","tags":["\u6bcf\u5468\u4e00\u9f99"]},"unlisted":false,"prevItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 17 \u671f","permalink":"/newsletter/this-week-in-loongarch-17"},"nextItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 15 \u671f","permalink":"/newsletter/this-week-in-loongarch-15"}},"content":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01\\n\\n\x3c!-- truncate --\x3e\\n\\n\u5982\u65e0\u7279\u522b\u8bf4\u660e\uff0c\u6587\u4e2d\u63d0\u53ca\u7684\u65e5\u671f\u3001\u65f6\u95f4\u90fd\u4e3a\u5317\u4eac\u65f6\u95f4\uff08UTC+8\uff09\u3002\\n\\n## \u5148\u300c\u9a6c\u300d\u518d\u770b\\n\\n\u672c\u680f\u76ee\u7684\u5185\u5bb9\u5177\u6709\u4e00\u5b9a\u5ef6\u7eed\u6027\uff0c\u5c06\u6301\u7eed\u8ffd\u8e2a\u62a5\u9053 LoongArch® \u9886\u57df\u7684\u91cd\u8981\u6216\u957f\u671f\u9879\u76ee\uff08\u5751\uff09\u3002\\n\\n### Linux\\n\\nLoongArch KVM\u5185\u6838\u865a\u62df\u673a \u7684\u4ee3\u7801\u4ecd\u7136\u5728\u6539\uff0c\u76ee\u524d\u6539\u5230\\n[v21](https://lore.kernel.org/loongarch/20230915014949.1222777-1-zhaotianrui@loongson.cn/)\\n\u4e86\u3002\\n\\n### \u5de5\u5177\u94fe\\n\\n#### gcc\\n\\n\u4e0a\u5468\u63d0\u5230\u7684\u9664\u6cd5\u3001\u53d6\u4f59\u5904\u7406\u4fee\u590d\\n\uff08bug [PR111334](https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111334)\uff09\\n\u5df2\u7ecf[\u63a8\u5165\u4e3b\u7ebf\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-September/630223.html)\u3002\\n\u4e00\u540c\u63a8\u5165\u7684\u8fd8\u6709\\n[LSX](https://gcc.gnu.org/pipermail/gcc-patches/2023-September/630221.html)\u3001[LASX](https://gcc.gnu.org/pipermail/gcc-patches/2023-September/630222.html)\\n\u7684\u6d4b\u8bd5\u7528\u4f8b\u3002\\n\\n\u6b64\u5916 Lulu Cheng \u8fd8\uff1a\\n\\n* \u5c06\u9ed8\u8ba4\u7684\u5206\u652f\u8df3\u8f6c\u6210\u672c\u4ece 2 [\u63d0\u5347\u5230\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-September/630285.html) 6\uff0c\\n* [\u4f18\u5316\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-September/630481.html)\u6d6e\u70b9\u6761\u4ef6\u642c\u8fd0\u64cd\u4f5c\uff0c\\n* [\u79fb\u9664\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-September/630486.html)\u591a\u4f59\u7684\u5bf9\u9f50\u52a8\u4f5c\uff08\u4f1a\u5bfc\u81f4\u6700\u7ec8\u751f\u6210\u7684\u4ee3\u7801\u53cd\u800c\u4e0d\u6ee1\u8db3\u5bf9\u9f50\u8981\u6c42\uff09\u3002\\n\\n\u9694\u58c1 binutils \u7ec4\u7684 mengqinggang \u4e5f\u6765[\u8c03\u6574\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-September/630653.html)\u4f18\u5316\u5668\u6210\u672c\u6a21\u578b\u4e00\u5904\uff1a\\n\u636e\u8bf4\u6709\u5229\u4e8e\u5bc4\u5b58\u5668\u538b\u529b\u8f83\u5927\u60c5\u51b5\u4e0b\u7684\u5faa\u73af\u4f18\u5316\uff0c\u4f46\u6ca1\u6d4b\u8bd5\u7528\u4f8b\uff08\u5e94\u8be5\u5728\u8865\u4e86\uff09\u3002\\n\\n#### LLVM\\n\\n\u5173\u6ce8\u5230 7 \u6708\u5e95 Rust \u793e\u533a\u7684\u540c\u5b66[\u6765\u62a5](https://github.com/llvm/llvm-project/issues/64208)\\n`llvm.maximum.*` \u548c `llvm.minimum.*` \u4e24\u79cd intrinsics \u6ca1\u6709\u5b9e\u73b0\u7684\u95ee\u9898\uff0c\u81f3\u4eca\u672a\u80fd\u6392\u4e0a\u8bae\u4e8b\u65e5\u7a0b\uff1b\\n\u6709\u5174\u8da3\u6c34\u4e00\u4e24\u4e2a\u8865\u4e01\u7684\u540c\u5b66\u53ef\u4ee5\u53bb\u770b\u770b\u3002\\n\\n:::info\\n\u5b9e\u73b0\u8d77\u6765\u5e94\u8be5\u6bd4\u8f83\u7b80\u5355\uff1ax86 \u6216\u8005 RISC-V \u7684\u5b9e\u73b0\u5747\u53ef\u501f\u9274\u3002\\n\\nLoongArch \u7684 `fmax` `fmin` \u6307\u4ee4\uff0c\u5728\u771f\u673a\u4e0a\u89c2\u5bdf\u5176\u8bed\u4e49\uff0c\u4f3c\u4e4e\u4e0e\u8981\u7684\u4e00\u81f4\uff08\u8bf7\u52a1\u5fc5\u81ea\u5df1\u4e5f\u505a\u5b9e\u9a8c\u5c1d\u8bd5\uff1a\u7b14\u8005\u53ea\u68c0\u67e5\u4e86\u6b63\u8d1f\u96f6\u7684\u5927\u5c0f\u6bd4\u8f83\uff09\u3002\\n\u4f46\u8bf7\u5341\u5206\u6ce8\u610f\uff1a\u9f99\u67b6\u6784\u624b\u518c\u4e0a\u5bf9\u6b64\u4e24\u6761\u6307\u4ee4\u7684\u63cf\u8ff0\u662f\u300c\u9075\u5faa IEEE 754-2008\u300d\uff0c\\n\u800c\u4e24\u6761 LLVM intrinsics \u7684\u8bed\u4e49\u662f\u9075\u5faa\u300cIEEE 754-2008 \u7684**\u8349\u7a3f\u7248\u672c**\u300d\u3002\\n\u7b14\u8005\u68c0\u67e5\u4e86\u6b63\u5f0f\u7248\u7684 IEEE 754-2008\uff08\u4f7f\u7528\u641c\u7d22\u5f15\u64ce\u5e94\u80fd\u5f88\u65b9\u4fbf\u514d\u8d39\u83b7\u53d6\uff09\uff1a\\n\u5176 Section 5.3.1 \u786e\u5b9e\u4e0d\u518d\u63d0\u53ca LLVM intrinsics \u8981\u6c42\u7684\u6b63\u8d1f\u96f6\u8bed\u4e49\u3002\\n\u56e0\u6b64\u4f60\u5728\u5b9e\u73b0\u7684\u65f6\u5019\u5927\u6982\u7387\u4e5f\u8981\u53c2\u8003 x86\u3001RISC-V \u540e\u7aef\u7684\u505a\u6cd5\uff0c\u786e\u4fdd\u89c4\u8303\u5916\u8bed\u4e49\u5f97\u5230\u6b63\u786e\u5904\u7406\u4e4b\u540e\uff0c\u624d\u80fd\u8c03\u7528\u8fd9\u4fe9\u6307\u4ee4\u3002\\n:::\\n\\n## \u6742\u95fb\u64ad\u62a5\\n\\n\u4e0a\u5468\u4f3c\u4e4e\u662f\u521b\u520a\u4ee5\u6765\u6700\u5b89\u9759\u7684\u4e00\u5468\uff0c\u5404\u4e2a\u793e\u533a\u90fd\u6ca1\u6709\u4ec0\u4e48\u5927\u65b0\u95fb\u3002\\n\u5f53\u7136\uff0c\u8fd9\u4e5f\u53ef\u80fd\u4ec5\u4ec5\u662f\u7b14\u8005\u672a\u80fd\u5173\u6ce8\u5230\uff1a\u8fd9\u4fbf\u662f\u4e3a\u4f55[\u7fa4\u4f17\u6295\u7a3f][call-for-submissions]\u5982\u6b64\u5fc5\u8981\u4e86\u3002\\n\\n## \u5f20\u8d34\u680f\\n\\n\u672c\u680f\u76ee\u53ef\u4f9b\u5f20\u8d34\u516c\u76ca\u6027\u8d28\u7684\u5404\u79cd\u4fe1\u606f\u3002\\n\\n* \u672c\u5468\u62a5[\u6301\u7eed\u63a5\u53d7\u7f51\u53cb\u6295\u7a3f][call-for-submissions]\u3002\u6b22\u8fce\u6765\u4e0a\u6e38\u5750\u5750\uff01\\n\\n[call-for-submissions]: https://github.com/loongson-community/areweloongyet/issues/16"},{"id":"this-week-in-loongarch-15","metadata":{"permalink":"/newsletter/this-week-in-loongarch-15","editUrl":"https://github.com/loongson-community/areweloongyet/newsletter/2023-09-11-this-week-in-loongarch-15.md","source":"@site/newsletter/2023-09-11-this-week-in-loongarch-15.md","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 15 \u671f","description":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01","date":"2023-09-11T09:10:28.000Z","formattedDate":"2023\u5e749\u670811\u65e5","tags":[{"label":"\u6bcf\u5468\u4e00\u9f99","permalink":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99"}],"readingTime":5.685,"hasTruncateMarker":true,"authors":[{"name":"WANG Xuerui","title":"\ud83d\udc32\u9f99\u95e8\u5ba2\u6808\u6253\u6742\u7684","url":"https://github.com/xen0n","imageURL":"https://github.com/xen0n.png","key":"xen0n"}],"frontMatter":{"slug":"this-week-in-loongarch-15","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 15 \u671f","authors":["xen0n"],"date":"2023-09-11T09:10:28.000Z","tags":["\u6bcf\u5468\u4e00\u9f99"]},"unlisted":false,"prevItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 16 \u671f","permalink":"/newsletter/this-week-in-loongarch-16"},"nextItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 14 \u671f","permalink":"/newsletter/this-week-in-loongarch-14"}},"content":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01\\n\\n\x3c!-- truncate --\x3e\\n\\n\u5982\u65e0\u7279\u522b\u8bf4\u660e\uff0c\u6587\u4e2d\u63d0\u53ca\u7684\u65e5\u671f\u3001\u65f6\u95f4\u90fd\u4e3a\u5317\u4eac\u65f6\u95f4\uff08UTC+8\uff09\u3002\\n\\n## \u5148\u300c\u9a6c\u300d\u518d\u770b\\n\\n\u672c\u680f\u76ee\u7684\u5185\u5bb9\u5177\u6709\u4e00\u5b9a\u5ef6\u7eed\u6027\uff0c\u5c06\u6301\u7eed\u8ffd\u8e2a\u62a5\u9053 LoongArch® \u9886\u57df\u7684\u91cd\u8981\u6216\u957f\u671f\u9879\u76ee\uff08\u5751\uff09\u3002\\n\\n### Linux\\n\\n\u5317\u4eac\u65f6\u95f4 9 \u6708 11 \u65e5\u6e05\u6668\uff0cLinus [tagged](https://lore.kernel.org/lkml/CAHk-=wgfL1rwyvELk2VwJTtiLNpwxTFeFtStLeAQ-2rTRd34eQ@mail.gmail.com/T/#u)\\nLinux 6.6-rc1\u3002\\n\u503c\u5f97\u4e00\u63d0\u7684\u662f\uff1aLinus \u5728\u62c9\u53d6\u3001\u5ba1\u67e5\u3001\u5408\u5e76\u672c\u6b21\u7684[\u9f99\u67b6\u6784 PR](https://lore.kernel.org/loongarch/169420324840.9132.7799052693511343279.pr-tracker-bot@kernel.org/T/#eb6a9a4343868f07c867cdbae4231a8f1f86ebed0) \u65f6\uff0c\\n\u5bf9\u5176\u4e2d\u7684 KASAN \u6280\u672f\u7ec6\u8282\u4eb2\u81ea\u7ed9\u51fa\u4e86\u6307\u5bfc\uff1a\\n\u6307\u51fa\u4e86\u5176\u4e2d\u6cbf\u7528\u7684\u4e00\u79cd\u8001\u5f0f\u4ee3\u7801\u5199\u6cd5\u4e4b\u4e0d\u59a5\uff0c\u5f53\u4ee3\u4e00\u822c\u5982\u4f55\u5199\uff1b\\n\u4ee5\u53ca\u4e24\u5904\u5185\u8054\u58f0\u660e\u7684\u80cc\u540e\u539f\u56e0\uff08\u8fd9\u539f\u56e0\u5728\u9f99\u67b6\u6784\u4e0a\u65e0\u8bba\u662f\u5426\u786e\u5b9e\u5b58\u5728\uff0c\u90fd\u610f\u5473\u7740\u8981\u6539\u4ee3\u7801\uff09\u3002\\n\u622a\u81f3\u53d1\u7a3f\u65f6\uff0cHuacai Chen \u5df2\u7ecf\u628a\u91cd\u6784\u63d0\u4ea4[\u8d34\u51fa\u6765](https://lore.kernel.org/loongarch/fc0f52e0-99a7-bde7-6674-9c1c579c6bc7@xen0n.name/T/#e78ae5e0fb57c26860c7c173dcc2464ba5e70a99a)\u4e86\u3002\\n\\n\u5728\u6b64\u4e4b\u5916\uff0cBibo Mao \u5728\u7ee7\u7eed\u7740\u4ed6\u5bf9\u9f99\u67b6\u6784\u5185\u5b58\u7ba1\u7406\u4ee3\u7801\u7684\u4f18\u5316\uff1a\\n[\u8865\u4e01\u4e00](https://lore.kernel.org/loongarch/20230908012907.2994001-1-maobibo@loongson.cn/)\u3001[\u8865\u4e01\u4e8c](https://lore.kernel.org/loongarch/20230907020936.2692542-1-maobibo@loongson.cn/)\u3002\\n\\n### \u5de5\u5177\u94fe\\n\\n#### gcc\\n\\n9 \u6708 8 \u65e5\uff0cGCC 14 \u6700\u65b0\u5f00\u53d1\u7248\u672c[\u88ab\u53d1\u73b0](https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111334)\u5728\u7f16\u8bd1 Mesa \u65f6\u5d29\u6e83\u3002\\n\u95ee\u9898\u539f\u56e0\u5df2\u627e\u5230\uff0c\u8865\u4e01[\u8d34\u51fa\u6765\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-September/629749.html)\uff0c\u7b49\u5f85\u5408\u5e76\u3002\\n\\n:::info \u6240\u4ee5\u95ee\u9898\u5728\u54ea\uff1f\\nLoongArch® v1.00 \u624b\u518c\u63d0\u5230\u4e86 LA64 \u7684 32 \u4f4d\u9664\u6cd5\u3001\u53d6\u6a21\u64cd\u4f5c\u6709\u5751\uff08\u4e2d\u6587\u7248\u5377\u4e00 2.2.1.13 \u8282\uff1b\u82f1\u6587\u7248\u4e2d\u6ca1\u6709\u6ce8\u660e\u8be5\u5751\uff09\uff1a\\n\\n\u300c\u5728 LoongArch64 \u4f4d\u517c\u5bb9\u7684\u673a\u5668\u4e0a\uff0c\u6267\u884c `DIV.W[U]` \u548c `MOD.W[U]` \u6307\u4ee4\u65f6\uff0c\\n\u5982\u679c\u901a\u7528\u5bc4\u5b58\u5668 rj \u548c rk \u4e2d\u7684\u6570\u503c\u8d85\u8fc7\u4e86 32 \u4f4d\u6709\u7b26\u53f7\u6570\u7684\u6570\u503c\u8303\u56f4\uff0c\\n\u5219\u6307\u4ee4\u6267\u884c\u7ed3\u679c\u53ef\u4ee5\u4e3a\u65e0\u610f\u4e49\u7684\u4efb\u610f\u503c\u3002\u300d\\n\\n\u8fd9\u662f\u4e00\u5904 LA464 \u7684\u5b9e\u73b0\u7ec6\u8282\u66b4\u9732\uff0c\u56e0\u4e3a\u5176\u4ed6 32 \u4f4d\u64cd\u4f5c\u90fd\u7b80\u5355\u65e0\u89c6\u5bc4\u5b58\u5668\u7684\u9ad8 32 \u4f4d\u90e8\u5206\u3002\\n\u9274\u4e8e\u6b64\uff0c\u6240\u6709\u4ea7\u751f\u9f99\u67b6\u6784\u673a\u5668\u8bed\u8a00\u7684\u7f16\u8bd1\u5668\u90fd\u5fc5\u987b\u505a\u76f8\u5e94\u7684\u7279\u6b8a\u9002\u914d\uff0c\u4ee5\u786e\u4fdd\u8fd9\u4e9b\u6307\u4ee4\u7684\u6e90\u64cd\u4f5c\u6570\u90fd\u7b26\u5408\u7ea6\u675f\uff1b\\n\u4e0d\u5de7 gcc \u91cc\u8fd9\u4e2a\u53d8\u6362\u5199\u9519\u4e86\u3002\\n\\n\u6b64\u5916\uff0c\u8bc4\u8bba\u533a\u4e2d Lulu Cheng \u900f\u9732\uff0c\u6b64\u4e58\u9664\u6cd5\u64cd\u4f5c\u7684\u8bed\u4e49\u5927\u5751\u5df2\u5728 LA664 \u89e3\u51b3\u4e86\u3002\\n\u7b14\u8005\u4e5f\u5728\u624b\u4e0a\u7684 3A6000 \u673a\u5668\u8bc1\u5b9e\u4e86\u6b64\u4e8b\u3002\\n\u5f85\u591a\u5e74\u4e4b\u540e\uff0c\u91c7\u7528\u65e7\u8bed\u4e49\u7684\u5904\u7406\u5668\u578b\u53f7\u90fd\u6de1\u51fa\u5e02\u573a\uff0c\u5c31\u53ef\u4ee5\u53eb\u5927\u5bb6\u90fd\u505c\u6b62\u751f\u6210\u8fd9\u4e9b\u591a\u4f59\u7684\u7b26\u53f7\u6269\u5c55\u64cd\u4f5c\u4e86\u3002\\n:::\\n\\n\u540c\u4e00\u5929\uff0cguojie \u4e3a\u9f99\u67b6\u6784\u4e0a `-O1` \u53ca\u66f4\u9ad8\u7684\u4f18\u5316\u7ea7\u522b\u90fd[\u9ed8\u8ba4\u5f00\u542f\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-September/629647.html)\\n`-fsched-pressure` \u4f18\u5316\u5de5\u5e8f\u3002\\n\\n9 \u6708 7 \u65e5\uff0cXi Ruoyao \u4f7f\u7528\u5411\u91cf\u8bbf\u5b58\u6307\u4ee4[\u4f18\u5316\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-September/629618.html)\u5f00\u542f\u5411\u91cf\u652f\u6301\u6761\u4ef6\u4e0b\u7684\u5185\u8054\u5185\u5b58\u642c\u8fd0\u64cd\u4f5c\u3002\\n\\n9 \u6708 6 \u65e5\uff0cXi Ruoyao \u7528\u4f1f\u5927\u7684 `bstrins` \u6307\u4ee4[\u4f18\u5316\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-September/629446.html)\u4f4d\u57df\u6e05\u7a7a\u3001\u4f4d\u57df\u66ff\u6362\u64cd\u4f5c\u3002\\n\u8fd9\u89e3\u51b3\u4e86\u4e0a\u6e38 bug [PR111252](https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111252)\uff1a\u6bd4\u5982\\n`__builtin_copysignf128`\uff08\u8fd1\u671f\u6dfb\u52a0\u7684 128 \u4f4d\u6d6e\u70b9\u7c7b\u578b\u652f\u6301\u7684\u76f8\u5173\u57fa\u672c\u64cd\u4f5c\u4e4b\u4e00\uff09\u7f16\u8bd1\u7ed3\u679c\u5341\u5206\u6076\u52a3\u7684\u95ee\u9898\u3002\\n\\n9 \u6708 4 \u65e5\uff0cYang Yujie \u5411 GCC \u7684 Ada \u8bed\u8a00\u5b9e\u73b0[\u6dfb\u52a0\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-September/629184.html) \u521d\u6b65\u7684 Linux/LoongArch \u9002\u914d\u3002\\n\\n#### LLVM\\n\\n9 \u6708 8 \u65e5\uff0cNathan Chancellor \u5728\u65e5\u5e38\u7684 ClangBuiltLinux \u6d4b\u8bd5\u4e2d\uff0c\u53d1\u73b0 Clang\\n\u5728\u9f99\u67b6\u6784\u4e0a\u4f7f\u7528\u7684 mcount \u7b26\u53f7\u540d\u79f0\u6709\u8bef\uff0c\u987a\u624b[\u5e2e\u5fd9\u4fee\u590d\u4e86](https://github.com/llvm/llvm-project/pull/65657)\u3002\\n\uff08\u8fd9\u4f3c\u4e4e\u4e5f\u662f LLVM \u4ee3\u7801\u5ba1\u67e5\u5de5\u4f5c[\u6574\u4f53\u8f6c\u5411 GitHub](https://discourse.llvm.org/t/update-on-github-pull-requests/71540)\\n\u4e4b\u540e\u7684\u7b2c\u4e00\u4e2a\u9f99\u67b6\u6784\u76f8\u5173 PR\u3002\uff09\\n\\n#### Rust\\n\\n9 \u6708 7 \u65e5\uff0c\u5c06 LA64 \u88f8\u673a\u7f16\u8bd1\u76ee\u6807\u4eec\u63d0\u5347\u81f3 Tier 2 \u652f\u6301\u7ea7\u522b\u7684 MCP [\u8fdb\u5165\u4e86\u516c\u793a\u671f](https://github.com/rust-lang/compiler-team/issues/664#issuecomment-1710266066)\uff0c\u516c\u793a\u671f 10 \u5929\u3002\\n\uff08\u8fd9\u4e2a\u63d0\u6848\u662f 8 \u6708 15 \u53f7\u53d1\u51fa\u6765\u7684\uff0c\u8fd9\u4e48\u4e45\u90fd\u6ca1\u6709\u53cd\u5bf9\u610f\u89c1\uff0c\u5927\u6982\u7387\u4e4b\u540e\u4e5f\u4e0d\u4f1a\u6709\u4e86\u30029 \u6708 17 \u53f7\u5e94\u8be5\u4f1a\u81ea\u52a8\u901a\u8fc7\u3002\uff09\\n\\n## \u793e\u533a\u6574\u6d3b:\u513f:\\n\\n\u672c\u680f\u76ee\u63a5\u53d7\u4efb\u4f55\u7f51\u53cb\u7684\u6295\u7a3f\uff0c\u53ea\u8981\u5185\u5bb9\u4e0e LoongArch® \u6709\u5173\uff0c\u5e76\u53ef\u4ee5\u4e3a\u8bfb\u8005\u5e26\u6765\u4ef7\u503c\uff0c\\n\u65e0\u8bba\u4e25\u8083\u8d21\u732e\uff08\u6574\u7684\u5927\u6d3b:\u513f:\uff09\u6216\u662f\u535a\u541b\u4e00\u7b11\u90fd\u4e00\u6982\u6b22\u8fce\uff01\\n\\n\uff08\u8865\u5145\u62a5\u9053\uff099 \u6708 3 \u65e5\uff0cJiajie Chen \u5728 fuzz \u4ed6\u624b\u5934\u7684\u9f99\u67b6\u6784 CPU \u65f6\uff0c[\u627e\u51fa\u4e86](https://github.com/loongson-community/loongarch-opcodes/issues/1)\u672a\u89c1\u4e8e\u516c\u5f00\u6587\u6863\u7684\u51e0\u6761\u6307\u4ee4\uff1a\\n\\n* \u64cd\u4f5c 8 \u4f4d\u548c 16 \u4f4d\u7684 `amswap` \u4e0e `amadd` \u8865\u5145\uff08\u6587\u6863\u4e2d\u6240\u6709\u7684\u539f\u5b50\u64cd\u4f5c\u6269\u5c55\u6307\u4ee4\uff0c\u6700\u5c0f\u6570\u636e\u5355\u4f4d\u90fd\u662f 32 \u4f4d\uff09\uff0c\u4ee5\u53ca\\n* \u7c7b\u4f3c `ldx` \u4f46\u65e0\u89c6 `rk` \u69fd\u4f4d\u7684\u8f7d\u5165\u64cd\u4f5c\uff0c\u8fd9\u4f7f\u5f97 `rk` \u69fd\u4f4d\u7684\u5185\u5bb9\u50cf\u662f\u7ed9\u5185\u5b58\u5b50\u7cfb\u7edf\u7684\u4ec0\u4e48\u63d0\u793a\u3002\\n\\n\u76ee\u524d\u6682\u672a\u68c0\u67e5\u8fd9\u4e9b\u6307\u4ee4\u662f LA464 \u8fd8\u662f LA664 \u7684\uff0c\u4f46\u5b83\u4eec\u663e\u7136\u5df2\u7ecf\u6210\u4e3a\u4e86\u91cd\u70b9\u5173\u6ce8\u5bf9\u8c61 :smirk_cat:\u3002\\n\\n## \u5f20\u8d34\u680f\\n\\n\u672c\u680f\u76ee\u53ef\u4f9b\u5f20\u8d34\u516c\u76ca\u6027\u8d28\u7684\u5404\u79cd\u4fe1\u606f\u3002\\n\\n* \u672c\u5468\u62a5[\u6301\u7eed\u63a5\u53d7\u7f51\u53cb\u6295\u7a3f][call-for-submissions]\u3002\u6b22\u8fce\u6765\u4e0a\u6e38\u5750\u5750\uff01\\n\\n[call-for-submissions]: https://github.com/loongson-community/areweloongyet/issues/16"},{"id":"this-week-in-loongarch-14","metadata":{"permalink":"/newsletter/this-week-in-loongarch-14","editUrl":"https://github.com/loongson-community/areweloongyet/newsletter/2023-09-04-this-week-in-loongarch-14.md","source":"@site/newsletter/2023-09-04-this-week-in-loongarch-14.md","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 14 \u671f","description":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01","date":"2023-09-04T17:39:31.000Z","formattedDate":"2023\u5e749\u67084\u65e5","tags":[{"label":"\u6bcf\u5468\u4e00\u9f99","permalink":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99"}],"readingTime":10.09,"hasTruncateMarker":true,"authors":[{"name":"WANG Xuerui","title":"\ud83d\udc32\u9f99\u95e8\u5ba2\u6808\u6253\u6742\u7684","url":"https://github.com/xen0n","imageURL":"https://github.com/xen0n.png","key":"xen0n"}],"frontMatter":{"slug":"this-week-in-loongarch-14","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 14 \u671f","authors":["xen0n"],"date":"2023-09-04T17:39:31.000Z","tags":["\u6bcf\u5468\u4e00\u9f99"]},"unlisted":false,"prevItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 15 \u671f","permalink":"/newsletter/this-week-in-loongarch-15"},"nextItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 13 \u671f","permalink":"/newsletter/this-week-in-loongarch-13"}},"content":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01\\n\\n\x3c!-- truncate --\x3e\\n\\n\u5982\u65e0\u7279\u522b\u8bf4\u660e\uff0c\u6587\u4e2d\u63d0\u53ca\u7684\u65e5\u671f\u3001\u65f6\u95f4\u90fd\u4e3a\u5317\u4eac\u65f6\u95f4\uff08UTC+8\uff09\u3002\\n\\n## \u5148\u300c\u9a6c\u300d\u518d\u770b\\n\\n\u672c\u680f\u76ee\u7684\u5185\u5bb9\u5177\u6709\u4e00\u5b9a\u5ef6\u7eed\u6027\uff0c\u5c06\u6301\u7eed\u8ffd\u8e2a\u62a5\u9053 LoongArch® \u9886\u57df\u7684\u91cd\u8981\u6216\u957f\u671f\u9879\u76ee\uff08\u5751\uff09\u3002\\n\\n### Linux {#linux-6.6-loongarch-changes}\\n\\n\u622a\u81f3\u53d1\u7a3f\u65f6\uff0cLinux 6.6 \u7684\u5408\u5e76\u7a97\u53e3\u5de5\u4f5c\u6b63\u98ce\u751f\u6c34\u8d77\uff0c\u5b50\u7cfb\u7edf\u7ef4\u62a4\u8005\u4eec\u90fd\u5728\u5fd9\u7740\u6574\u7406\u4ee3\u7801\u3001\u63d0\u4ea4 PR\u62c9\u53d6\u8bf7\u6c42\u3002\\n\u5408\u5e76\u7a97\u53e3\u9884\u8ba1\u5728\u7f8e\u897f\u65f6\u95f4\u7684\u672c\u5468\u65e5\u4e0b\u5348\uff089 \u6708 10 \u65e5\uff1b\u4e2d\u56fd\u65f6\u95f4 9 \u6708 11 \u65e5\uff09\u5173\u95ed\uff1b\\n\u672c\u5f00\u53d1\u5468\u671f\u7684 `arch/loongarch` \u53d8\u66f4\u5df2\u7531 Huacai Chen \u6574\u7406\u5b8c\u6210\u5e76[\u6253\u597d\u4e86 tag](https://git.kernel.org/chenhuacai/linux-loongson/l/loongarch-6.6)\uff0c\\n\u4e3b\u8981\u5305\u542b\u4ee5\u4e0b\u5185\u5bb9\uff1a\\n\\n:::info arch/loongarch in Linux 6.6\\n1. \u5141\u8bb8\u5728\u5185\u6838\u6001\u4f7f\u7528 LSX\u3001LASX\uff08Huacai Chen\uff0c\u5e94\u7b14\u8005\u7684 SIMD \u4f18\u5316\u9700\u6c42\u800c\u8bbe\u8ba1\uff09\uff1b\\n2. \u6dfb\u52a0 SIMD \u4f18\u5316\u7684 RAID5/RAID6 \u4f8b\u7a0b\uff08\u7b14\u8005\uff09\uff1b\\n3. \u6dfb\u52a0\u9f99\u82af\u4e8c\u8fdb\u5236\u7ffb\u8bd1\u6269\u5c55\uff08LBT\uff09\u652f\u6301\uff08Qi Hu\u3001Huacai Chen\uff09\uff1b\\n4. \u6dfb\u52a0 KGDB\u3001KDB \u7684\u57fa\u672c\u652f\u6301\uff1b\\n * \u6846\u67b6\u3001\u6838\u5fc3\u529f\u80fd\uff1aQing Zhang\uff1b\u8be5\u540c\u5b66\u662f\u524d\u9f99\u82af\u5458\u5de5\uff0c\u5728\u9f99\u82af\u65f6\u671f\u5b8c\u6210\u4e86\u6b64\u5de5\u4f5c\u3002\\n * \u65ad\u70b9\u3001\u5355\u6b65\uff1aBinbin Zhou\u3002\\n * \u7ec6\u8282\u6539\u8fdb\u8c03\u6574\uff1aHui Li\u3002\\n * \u6784\u5efa\u9519\u8bef\u4fee\u590d\u6253\u78e8\uff1aRandy Dunlap\uff1b\u6d3b\u8dc3\u7684\u4e0a\u6e38\u793e\u533a\u5f00\u53d1\u8005\u540c\u5b66\u4e4b\u4e00\u3002\\n5. \u652f\u6301\u5f00\u542f KCov\uff08\u5185\u6838\u7684\u4ee3\u7801\u8986\u76d6\u7387\u6536\u96c6\u673a\u5236\uff09\u6784\u5efa\u5185\u6838\uff08Feiyang Chen\uff09\uff1b\\n6. \u6dfb\u52a0 KFENCE (Kernel Electric-Fence) \u652f\u6301\uff08Enze Li\uff1b\u8be5\u540c\u5b66\u662f\u9e92\u9e9f\u5458\u5de5\uff09\uff1b\\n7. \u6dfb\u52a0 KASAN (Kernel Address Sanitizer) \u652f\u6301\uff08Qing Zhang\uff09\uff1b\\n8. bug \u4fee\u590d\u4e0e\u5176\u4ed6\u8f83\u5c0f\u53d8\u66f4\uff08Bibo Mao\u3001Weihao Li\u3001Tiezhu Yang\uff09\uff1b\\n9. \u9ed8\u8ba4\u914d\u7f6e\u66f4\u65b0\u3002\\n\\n\u8be5\u4fe1\u606f\u7ffb\u8bd1\u81ea [tag \u8bf4\u660e\u6587\u5b57](https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson.git/tag/?h=loongarch-6.6)\uff0c\\n\u76f8\u5173\u4f5c\u8005\u4fe1\u606f\u7531\u7b14\u8005\u6574\u7406\u6dfb\u52a0\u3002\\n\u9664\u7b14\u8005\u5916\uff0c\u672a\u63d0\u53ca\u5de5\u4f5c\u5355\u4f4d\u4fe1\u606f\u7684\u540c\u5b66\u90fd\u662f\u9f99\u82af\u5458\u5de5\u3002\\n:::\\n\\n8 \u6708 31 \u65e5\uff0cTianrui Zhao\u3001Bibo Mao \u7b49\u540c\u5b66\u5f00\u53d1\u7684\u9f99\u67b6\u6784 KVM\u5185\u6838\u865a\u62df\u673a\\n\u8865\u4e01\u7cfb\u5217\u5df2[\u8fed\u4ee3\u81f3](https://lore.kernel.org/loongarch/20230831083020.2187109-1-zhaotianrui@loongson.cn/)\u7b2c 20 \u7248\u3002\\n\u76ee\u524d\u9884\u8ba1\u8be5\u529f\u80fd\u6b63\u5f0f\u9732\u9762\u7684\u9996\u4e2a\u4e0a\u6e38\u5185\u6838\u7248\u672c\u662f Linux 6.7\uff08\u4e0b\u4e2a\u5f00\u53d1\u5468\u671f\uff09\uff0c\\n\u4f46\u6211\u4eec\u540c\u65f6\u9884\u8ba1\u793e\u533a\u53d1\u884c\u7248\u4eec\u5c06\u8f83\u5feb\u8ddf\u8fdb\u652f\u6301\uff08\u63d0\u524d\u96c6\u6210\u8fd9\u4e9b\u8865\u4e01\uff09\u3002\\n\\n:::info \u503c\u5f97\u4e00\u63d0\u7684\u662f\\n\u968f\u7740\u4e0a\u6e38\u7684\u5185\u6838 CI\u6301\u7eed\u96c6\u6210 \u8bbe\u65bd\u7684\u9f99\u67b6\u6784\u5de5\u5177\u94fe\u5347\u7ea7\u5230\u6700\u65b0\u7248\uff0c\\n\u6b64\u5806\u4ee3\u7801\u4e2d\u5199\u6b7b\u7684\u3001\u4e0d\u5229\u4e8e\u7ef4\u62a4\u7684\u6307\u4ee4\u7f16\u7801\u7ec8\u4e8e\u6d88\u5931\u4e86\u3002\\n\u8fd9\u5c06\u4e0d\u4f1a\u5f71\u54cd\u4e0b\u6e38\u672a\u5347\u7ea7\u5de5\u5177\u94fe\u7248\u672c\u7684\u53d1\u884c\u7248\u96c6\u6210\u8be5\u529f\u80fd\uff1a\u8fd9\u4e9b\u53d1\u884c\u7248\u603b\u80fd\u4e3a\u5176\u5de5\u5177\u94fe\u5355\u72ec\u52a0\u5165\u76f8\u5173\u6307\u4ee4\u652f\u6301\u3002\\n:::\\n\\n8 \u6708 17 \u65e5\uff0clihui\\n[\u8d34\u51fa\u4e86](https://lore.kernel.org/loongarch/20230817032825.22974-1-lihui@loongson.cn/)\u7b2c 3 \u7248\u7684\u9f99\u67b6\u6784 KGDB\u5185\u6838 GDB \u652f\u6301\u8865\u4e01\uff0c\\n\u4f46 :ta: \u628a\u8865\u4e01\u539f\u4f5c\u8005\u3001\u524d\u9f99\u82af\u5458\u5de5 Qing Zhang \u7684\u4f5c\u8005\u4fe1\u606f\u66ff\u6362\u6210\u4e86 :ta: \u81ea\u5df1\u3002\\n\uff08\u5728\u8865\u4e01\u5185\u5bb9\u672c\u8eab\u5e76\u672a\u53d1\u751f\u672c\u8d28\u6539\u53d8\u7684\u524d\u63d0\u4e0b\uff0c\u4f5c\u8005\u4fe1\u606f\u4e0d\u5e94\u88ab\u66ff\u6362\uff09\u3002\\n\u8865\u4e01\u7684\u539f\u4f5c\u8005 Qing Zhang \u5728 29 \u53f7\u4f7f\u7528\u817e\u8baf\u7684\u90ae\u7bb1\u5730\u5740[\u5410\u69fd\u4e86](https://lore.kernel.org/loongarch/ea1126e8-690c-424e-ab52-ef5ebbc9707a@tencent.com/)\u8fd9\u4ef6\u4e8b\uff0c\\n\u622a\u81f3\u53d1\u7a3f\u65f6\u5c1a\u672a\u6709\u540e\u7eed\u8fdb\u5c55\u3002\\n\u672c\u5468\u62a5\u5c06\u6301\u7eed\u4e3a\u60a8\u8ffd\u8e2a\u3002\\n\\n:::info \u5410\u69fd\u7684\u5177\u4f53\u70b9\\n\u4e00\u5207\u4ece\u4e00\u4e2a\u672a\u88ab\u521d\u59cb\u5316\u5373\u88ab\u4f7f\u7528\u7684\u53d8\u91cf `cj_val` \u5f00\u59cb\uff1a\\n\u8fd9\u610f\u5473\u7740\u8fd9\u90e8\u5206\u4ee3\u7801\u7684\u4f5c\u8005\u672a\u4f5c\u4efb\u4f55\u6d4b\u8bd5\uff0c\u751a\u81f3\u8fde\u6d4b\u8bd5\u7f16\u8bd1\u90fd\u6ca1\u8fdb\u884c\uff0c\u4fbf\u63d0\u4ea4\u4e86\u4ee3\u7801\u3002\\n\u4e14\u4e0d\u8bba\u8fd9\u79cd\u884c\u4e3a\u54ea\u6015\u5728\u4efb\u4f55\u516c\u53f8\u5185\u90e8\uff0c\u6050\u6015\u4e5f\u4e0d\u53ef\u63a5\u53d7\uff0c\u9051\u8bba\u793e\u533a\u8303\u7574\uff1b\\n\u4f5c\u4e3a\u8865\u4e01\u539f\u4f5c\u8005\uff0c\u770b\u5230\u63a5\u624b\u7684\u540c\u5b66\u8fd9\u6837\u5bf9\u5f85\u81ea\u5df1\u7684\u52b3\u52a8\u6210\u679c\uff0c\u5410\u69fd\u4e24\u53e5\u4e5f\u5408\u60c5\u5408\u7406\u5427\u3002\\n\\nQing Zhang \u8fd8\u63d0\u5230\uff1a\u8865\u4e01\u7684\u672c\u4f53\u662f :ta: \u7f16\u5199\u7684\uff0c\u540e\u7eed\u4fee\u8865\u5de5\u4f5c\u4e3b\u8981\u662f Binbin Zhou \u505a\u7684\uff0c\\n\u5e76\u4e14\u300c\u4e0d\u6539\u53d8\u4f5c\u8005\u4fe1\u606f\u300d\u8fd9\u4ef6\u4e8b\u4f3c\u4e4e\u662f :ta: \u4ece\u9f99\u82af\u79bb\u804c\u524d\u4e0e lihui \u5185\u90e8\u534f\u8c03\u8fc7\u7684\u4e8b\u9879\u3002\\n\u6211\u4eec\u5728\u6ca1\u6709\u83b7\u5f97\u66f4\u591a\u6d88\u606f\u4e4b\u524d\uff0c\u76f8\u4fe1\u6c9f\u901a\u53cc\u65b9\u672c\u8d28\u4e0a\u90fd\u57fa\u4e8e\u5584\u610f\uff1a\u4e5f\u8bb8 lihui\\n\u6216\u5176\u90e8\u95e8\u6709\u4ec0\u4e48\u5176\u4ed6\u539f\u56e0\u5bfc\u81f4 :ta: \u4e0d\u80fd\u7ef4\u6301\u539f\u4f5c\u8005\u4fe1\u606f\u4e86\u3002\\n\u5e0c\u671b\u8fd9\u573a\u5c0f\u98ce\u6ce2\u80fd\u6700\u7ec8\u5e73\u7a33\u89e3\u51b3\uff01\\n:::\\n\\n### \u5de5\u5177\u94fe\\n\\n#### gcc\\n\\n9 \u6708 2 \u65e5\uff0cLulu Cheng \u4f9d\u7167 [2018 \u5e74 RISC-V \u7684\u540c\u7b49\u4f18\u5316](https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=7bbce9b50302959286381d9177818642bceaf301)\uff0c\\n\u4e5f\u7ed9\u9f99\u67b6\u6784[\u4f18\u5316\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-September/629155.html) `switch` \u8bed\u53e5\u9009\u62e9\u652f\u662f 8 \u4f4d\u91cf\u7684\u7b26\u53f7\u6269\u5c55\u7ed3\u679c\u65f6\u7684\u4ee3\u7801\u751f\u6210\u3002\\n\\n\u540c\u4e00\u5929\uff0cguojie [\u4f18\u5316\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-September/629157.html)\u5411\u5f62\u5982 `MEM[base + index]` \u7684\u4f4d\u7f6e\u5b58\u5165\u6d6e\u70b9 `0.0` \u8fd9\u79cd\u884c\u4e3a\u7684\u4ee3\u7801\u751f\u6210\u3002\\n\\n9 \u6708 1 \u65e5\uff0cLulu Cheng \u5408\u5e76\u4e86 :ta: \u548c guojie 6 \u6708 29 \u65e5\u505a\u7684\u4e00\u5904\u4ee3\u7801\u751f\u6210\u9519\u8bef\u4fee\u590d\uff08GCC bug [PR110484](https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110484)\uff0c\\n\u5728\u5f00\u542f LTO\u94fe\u63a5\u65f6\u4f18\u5316 \u7f16\u8bd1 SPEC2017 541.leela\\\\_r \u7528\u4f8b\u65f6\u53d1\u73b0\uff09\u3002\\n\\n:::info LTO \u662f\u8dd1\u5206\u4e13\u4eab\u4f18\u5316\u5417\uff1f\u6709\u7528\u5417\uff1f\u4f1a\u53cd\u800c\u9020\u6210\u6027\u80fd\u52a3\u5316\u5417\uff1f\\n\u7b80\u5355\u7684\u56de\u7b54\uff1a\u4e0d\u662f\uff1b\u6709\u7528\uff1b\u4e0d\u5927\u53ef\u80fd\uff0c\u4e0d\u5fc5\u62c5\u5fc3\u3002\\n\\n\u590d\u6742\u7684\u56de\u7b54\uff1a\u53d6\u51b3\u4e8e\u5177\u4f53\u53d1\u884c\u7248\u548c\u8f6f\u4ef6\u4f5c\u8005\u7684\u7f16\u8bd1\u53c2\u6570\u9009\u62e9\uff1b\u53d6\u51b3\u4e8e\u5177\u4f53\u4ee3\u7801\u5199\u6cd5\uff1b\u5177\u4f53\u60c5\u51b5\u5177\u4f53\u5206\u6790\u3002\\n:::\\n\\n8 \u6708 31 \u65e5\uff0cchenxiaolong [\u63d0\u4ea4\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-August/628895.html)\u7b2c 5 \u7248\u7684\\n128 \u4f4d\u6d6e\u70b9\u64cd\u4f5c\u5185\u5efa\u51fd\u6570\u652f\u6301\u3002\\n\\n\u540c\u4e00\u5929\uff0cLulu Cheng [\u4f18\u5316\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-August/628950.html)\u4ece\u5185\u5b58\u4e2d\u8f7d\u5165\u5b9a\u70b9\u6570\u5e76\u9a6c\u4e0a\u5c06\u5176\u8f6c\u4e3a\u6d6e\u70b9\u6570\u7684\u64cd\u4f5c\uff1a\\n\u6bcf\u6b21\u8fd9\u79cd\u60c5\u51b5\u90fd\u7701\u4e00\u6761\u6307\u4ee4\uff08\u4e0d\u7528\u975e\u5f97\u5148\u88c5\u8fdb GPR \u518d\u642c\u8fdb FPR\uff0c\u53ef\u4ee5\u76f4\u63a5\u88c5\u8fdb FPR \u53bb\uff09\u3002\\n\\n#### glibc\\n\\n8 \u6708 26 \u65e5\uff0cXi Ruoyao [\u6e05\u7406\u4e86](https://sourceware.org/pipermail/libc-alpha/2023-August/151146.html)\u81ea\u4ece\\nglibc \u8981\u6c42\u7684\u6700\u4f4e binutils \u7248\u672c\u62ac\u5347\u81f3 2.41 \u4e4b\u540e\u4e0d\u518d\u9700\u8981\u7684\u517c\u5bb9\u4ee3\u7801\u3002\\n\\n8 \u6708 24 \u65e5\uff0cdengjianbo [\u8d34\u51fa\u4e86](https://sourceware.org/pipermail/libc-alpha/2023-August/151091.html)\u7b2c\u4e8c\u6279 LSX\u3001LASX \u5b9e\u73b0\u7684\u5b57\u7b26\u4e32\u51fd\u6570\u3002\\n\u968f\u540e 28 \u65e5 :ta: \u53c8[\u8d34\u51fa\u4e86](https://sourceware.org/pipermail/libc-alpha/2023-August/151156.html)\u7b2c\u4e09\u6279\u3002\\n\\n\u622a\u81f3\u53d1\u7a3f\u65f6\uff0c\u4e0a\u8ff0\u6539\u8fdb\u90fd\u5df2\u8fdb\u5165\u4e3b\u7ebf\u4e86\u3002\uff08\u611f\u8c22 Xi Ruoyao \u7684\u7ebf\u7d22\u6295\u9012\u3002\uff09\\n\\n#### LLVM\\n\\n8 \u6708 31 \u65e5\uff0chev \u628a [RISC-V \u7684\u4e00\u9879\u7279\u5b9a\u6709\u7528\u539f\u5b50\u64cd\u4f5c\u4f18\u5316](https://reviews.llvm.org/D156801)\uff0c[\u79fb\u690d\u5230\u4e86](https://reviews.llvm.org/D159252)\u9f99\u67b6\u6784\u3002\\n\u8fd9\u5c06[\u6709\u5229\u4e8e Rust](https://github.com/rust-lang/rust/pull/114034) \u751f\u6210\u66f4\u597d\u7684\u4ee3\u7801\u3002\\n\\n\u540c\u4e00\u5929\uff0chev \u8fd8[\u4f18\u5316\u6389\u4e86](https://reviews.llvm.org/D159272)\u9f99\u67b6\u6784 LL/SC \u64cd\u4f5c\u5e8f\u5217\u4e2d\u4e0d\u5fc5\u8981\u7684\u6805\u969c\u52a8\u4f5c\u3001\u4fee\u590d\u4e86\u5176 acquire \u8bed\u4e49\u3002\\n\\n8 \u6708 30 \u65e5\uff0cSixWeining [\u4f18\u5316\u4e86](https://reviews.llvm.org/D159183)LLVM intrinsic `llvm.is.fpclass` \u7684\u4ee3\u7801\u751f\u6210\u3002\\n\\n#### Go\\n\\n\uff08\u8fd9\u662f\u524d\u51e0\u671f\u9057\u6f0f\u5185\u5bb9\u7684\u8865\u5145\uff098 \u6708 22 \u65e5\uff0cGuoqi Chen \u9886\u8854\u7684\u9f99\u82af Go \u56e2\u961f[\u8d34\u51fa\u4e86](https://go-review.googlesource.com/c/go/+/521790)\u9f99\u67b6\u6784\u7684 regabi\u5bc4\u5b58\u5668 ABI \u9002\u914d\u8865\u4e01\u3002\\n\u7b14\u8005\u5728\u6b64\u5de5\u4f5c\u7684\u65e9\u671f\u4ea6\u6709\u8d21\u732e\u3002\\n\u6b64\u9002\u914d\u5b8c\u6574\u5408\u5e76\u3001\u542f\u7528\u540e\uff0c\u5c06\u4e3a\u9f99\u67b6\u6784\u7684 Go \u7a0b\u5e8f\u666e\u904d\u5e26\u6765 10% \u5230 20% \u5de6\u53f3\u7684\u6027\u80fd\u4f18\u5316\u3002\\n\\n## \u6742\u95fb\u64ad\u62a5\\n\\n8 \u6708 29 \u65e5\uff0cXi Ruoyao [\u4fee\u590d\u4e86](https://sourceware.org/pipermail/elfutils-devel/2023q3/006362.html)\\nelfutils \u9879\u76ee\u5728\u9f99\u67b6\u6784 binutils 2.41 \u4e0a\u7684\u6d4b\u8bd5\u5931\u8d25\uff08\u9057\u6f0f\u4e86\u65b0\u6dfb\u52a0\u7684\u91cd\u5b9a\u4f4d\u7c7b\u578b\u5e38\u91cf\uff09\u3002\uff08\u611f\u8c22 Xi Ruoyao \u7684\u7ebf\u7d22\u6295\u9012\u3002\uff09\\n\\n8 \u6708 28 \u65e5\uff0cJiajie Chen \u4e3a QEMU TCG \u7684 LoongArch64 \u79fb\u690d\u6dfb\u52a0\u4e86\u5411\u91cf\u652f\u6301\uff1a\\n\u53ef\u4ee5\u5c06\u88ab\u6a21\u62df\u67b6\u6784\u7684\u4e00\u4e9b SIMD \u64cd\u4f5c\u6620\u5c04\u5230\u9f99\u67b6\u6784\u7684\u5bf9\u5e94 SIMD \u64cd\u4f5c\u4e86\u3002\\n\u622a\u81f3 9 \u6708 2 \u65e5\uff0c\u8be5\u8865\u4e01\u7cfb\u5217\u5df2[\u8fed\u4ee3\u81f3\u7b2c 3 \u7248](https://patchwork.ozlabs.org/project/qemu-devel/list/?series=371423)\u3002\\n\\n## \u793e\u533a\u6574\u6d3b:\u513f:\\n\\n\u672c\u680f\u76ee\u63a5\u53d7\u4efb\u4f55\u7f51\u53cb\u7684\u6295\u7a3f\uff0c\u53ea\u8981\u5185\u5bb9\u4e0e LoongArch® \u6709\u5173\uff0c\u5e76\u53ef\u4ee5\u4e3a\u8bfb\u8005\u5e26\u6765\u4ef7\u503c\uff0c\\n\u65e0\u8bba\u4e25\u8083\u8d21\u732e\uff08\u6574\u7684\u5927\u6d3b:\u513f:\uff09\u6216\u662f\u535a\u541b\u4e00\u7b11\u90fd\u4e00\u6982\u6b22\u8fce\uff01\\n\\n\u5df2\u77e5\u6709\u540c\u5b66\u5728\u8fdb\u884c AMD® ROCm® \u5957\u4ef6\u7684\u9f99\u67b6\u6784\u79fb\u690d\u5de5\u4f5c\u4e86\uff0c\\n\u4e5f\u6709\u540c\u5b66\u5728\u9f99\u67b6\u6784\u4e0a\u521d\u6b65\u8dd1\u8d77\u4e86 NixOS\u3002\\n\u671f\u5f85 :ta: \u4eec\u5e26\u7740\u6574\u7406\u597d\u7684\u4ee3\u7801\u6b63\u5f0f\u51fa\u9053\uff01:smirk_cat:\\n\\n\u7b14\u8005\u4ecd\u5728\u4e0d\uff08b\u01cei\uff09\u614c\uff08m\xe1ng\uff09\u4e0d\uff08zh\u012b\uff09\u5fd9\uff08zh\u014dng\uff09\u7ee7\u7eed 3A6000/LA664 \u7684\u6d4b\u8bd5\u5de5\u4f5c\u3002\\n\u622a\u81f3\u76ee\u524d\uff1a\\n\\n* \u8bc1\u5b9e\u5230\u4e86 LA664 \u4e8c\u8fdb\u5236\u7ffb\u8bd1\u52a0\u901f\u5355\u5143\u7684\u541e\u5410\u63d0\u5347\uff0c\\n* \u53d1\u73b0\u524d\u51e0\u671f\u63d0\u5230\u7684\u786c\u4ef6\u9875\u8868\u904d\u5386\u52a0\u901f\u5355\u5143\uff08PTW\uff09\u88ab\u56fa\u4ef6\u5173\u95ed\u4e86\uff08\u53ef\u80fd\u6709 bug \u5bfc\u81f4\u4e0d\u80fd\u7528\uff09\uff0c\\n* \u4ecd\u672a\u786e\u8ba4\u5230 LA664 \u76f8\u6bd4 LA464 \u65b0\u589e\u7684\u4efb\u4f55\u6307\u4ee4\u3002\\n\\n\u6b64\u5916\uff0cLA664 \u7684 `CPUCFG` \u6570\u636e\u4e2d\u6709\u4e0d\u5c11\u672a\u77e5\u4f4d\u57df\u88ab\u7f6e\u4e86 `1`\uff0c\u4f46\u76ee\u524d\u5e76\u65e0\u4efb\u4f55\u65b9\u6cd5\u80fd\u83b7\u77e5\u5b83\u4eec\u7684\u540d\u5b57\u4e0e\u542b\u4e49\u3002\\n\\n## \u5f20\u8d34\u680f\\n\\n\u672c\u680f\u76ee\u53ef\u4f9b\u5f20\u8d34\u516c\u76ca\u6027\u8d28\u7684\u5404\u79cd\u4fe1\u606f\u3002\\n\\n* \u672c\u5468\u62a5[\u6301\u7eed\u63a5\u53d7\u7f51\u53cb\u6295\u7a3f][call-for-submissions]\u3002\u6b22\u8fce\u6765\u4e0a\u6e38\u5750\u5750\uff01\\n\\n[call-for-submissions]: https://github.com/loongson-community/areweloongyet/issues/16"},{"id":"this-week-in-loongarch-13","metadata":{"permalink":"/newsletter/this-week-in-loongarch-13","editUrl":"https://github.com/loongson-community/areweloongyet/newsletter/2023-08-28-this-week-in-loongarch-13.mdx","source":"@site/newsletter/2023-08-28-this-week-in-loongarch-13.mdx","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 13 \u671f","description":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01","date":"2023-08-28T08:06:17.000Z","formattedDate":"2023\u5e748\u670828\u65e5","tags":[{"label":"\u6bcf\u5468\u4e00\u9f99","permalink":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99"}],"readingTime":5.43,"hasTruncateMarker":true,"authors":[{"name":"WANG Xuerui","title":"\ud83d\udc32\u9f99\u95e8\u5ba2\u6808\u6253\u6742\u7684","url":"https://github.com/xen0n","imageURL":"https://github.com/xen0n.png","key":"xen0n"}],"frontMatter":{"slug":"this-week-in-loongarch-13","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 13 \u671f","authors":["xen0n"],"date":"2023-08-28T08:06:17.000Z","tags":["\u6bcf\u5468\u4e00\u9f99"]},"unlisted":false,"prevItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 14 \u671f","permalink":"/newsletter/this-week-in-loongarch-14"},"nextItem":{"title":"\u6bcf\u5468\u4e09\u9f99\uff1a\u7b2c 12 \u671f","permalink":"/newsletter/these-weeks-in-loongarch-12"}},"content":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01\\n\\n{/* truncate */}\\n\\n\u5982\u65e0\u7279\u522b\u8bf4\u660e\uff0c\u6587\u4e2d\u63d0\u53ca\u7684\u65e5\u671f\u3001\u65f6\u95f4\u90fd\u4e3a\u5317\u4eac\u65f6\u95f4\uff08UTC+8\uff09\u3002\\n\\n## \u5148\u300c\u9a6c\u300d\u518d\u770b\\n\\n\u672c\u680f\u76ee\u7684\u5185\u5bb9\u5177\u6709\u4e00\u5b9a\u5ef6\u7eed\u6027\uff0c\u5c06\u6301\u7eed\u8ffd\u8e2a\u62a5\u9053 LoongArch® \u9886\u57df\u7684\u91cd\u8981\u6216\u957f\u671f\u9879\u76ee\uff08\u5751\uff09\u3002\\n\\n### Linux\\n\\n\u7f8e\u897f\u65f6\u95f4\u5468\u65e5\u4e0b\u5348 3 \u70b9\u4e00\u523b\uff08\u4e2d\u56fd\u65f6\u95f4\u5468\u4e00\u65e9\u6668 6 \u70b9\uff09\uff0cLinus \u53d1\u5e03\u4e86 Linux 6.5 \u6b63\u5f0f\u7248\u3002\\n\u76f8\u6bd4\u4e8e Linux 6.4\uff0c\u5bf9\u9f99\u67b6\u6784\u800c\u8a00\uff0c\u8be5\u7248\u672c\u4e3b\u8981\u5305\u542b\u4e86\u4ee5\u4e0b\u4e00\u4e9b\u529f\u80fd\u53d8\u66f4\uff1a\\n\\n* \u9f99\u82af\u4e2d\u65ad\u63a7\u5236\u5668\u7684 bug \u4fee\u590d\uff08Jianmin Lv\u3001Liu Peibao\u3001Yinbo Zhu\uff09\u4e0e DT\u8bbe\u5907\u6811 \u5f15\u5bfc\u652f\u6301\uff08Binbin Zhou\uff09\u3002\\n* LS7A \u96c6\u6210\u58f0\u5361\u652f\u6301\uff08Yanteng Si\uff09\u3002\\n* AMD RDNA2 \u663e\u5361\u652f\u6301\uff08WANG Xuerui\u3001Huacai Chen\uff09\u3002\\n* \u652f\u6301\u4ee5 LLVM/Clang \u6784\u5efa\u9f99\u67b6\u6784\u5185\u6838\u7684\u4e00\u79cd\u57fa\u672c\u914d\u7f6e\uff08WANG Xuerui\u3001WANG Rui\uff09\u3002\\n* 3A6000 \u9002\u914d\u5de5\u4f5c\uff08\u786c\u4ef6\u9875\u8868\u904d\u5386\u3001SMT\u3001\u5411\u91cf\u6269\u5c55\u6307\u4ee4\u7684\u4e0a\u4e0b\u6587\u5207\u6362\u652f\u6301\u7b49\uff09\uff08Huacai Chen\uff09\u3002\\n* \u53d1\u73b0\u5e76\u4fee\u590d\u4e86\u7f16\u8bd1\u5668\u5b89\u5168\u5f3a\u5316\u624b\u6bb5\uff08`CONFIG_FORTIFY_SOURCE`\uff09\u672a\u80fd\u5b8c\u5168\u751f\u6548\u7684\u95ee\u9898\uff08Nathan Chancellor\u3001Nick Desaulniers\u3001WANG Xuerui\uff09\u3002\\n\\nLinux \u4e0a\u6e38\u793e\u533a\u4e0d\u4ec5\u7ef4\u62a4\u5185\u6838\uff0c\u4e5f\u5305\u62ec\u8bb8\u591a Linux \u7684\u5468\u8fb9\u8f6f\u4ef6\u3001\u652f\u6301\u5e93\u7b49\u3002\\n\\n* nolibc \u7684 stack protector \u652f\u6301\uff08Thomas Wei\xdfschuh\uff09\u3002\\n* `perf` \u547d\u4ee4\u7684\u9f99\u67b6\u6784\u6c47\u7f16\u5904\u7406\u4fee\u590d\uff08WANG Rui\uff09\u4ee5\u53ca\u4e00\u4e9b\u65e5\u5e38\u6027\u8d28\u7684\u4ee3\u7801\u6574\u7406\u5de5\u4f5c\uff08Tiezhu Yang\uff09\u3002\\n\\n\u867d\u7136\u9f99\u82af\u56e2\u961f\u5bf9\u5176 MIPS \u65f6\u4ee3\u4ea7\u54c1\u7684\u4e3b\u7ebf\u7ef4\u62a4\u5de5\u4f5c\u5f3a\u5ea6\u5df2\u5927\u4e0d\u5982\u524d\\n\uff08\u5728\u9f99\u82af MIPS \u4ea7\u54c1\u7ebf\u88ab\u780d\u4e4b\u524d\uff0c\u8fd9\u4e9b\u4ea7\u54c1\u672a\u80fd\u7b49\u5230\u5b8c\u5584\u7684\u4e3b\u7ebf\u652f\u6301\u3002\\n\u56e0\u6b64\u540e\u7eed\u5373\u4fbf\u9f99\u82af\u8981\u4e3a\u5176 MIPS \u4ea7\u54c1\u63d0\u4f9b\u6280\u672f\u652f\u6301\uff0c\u4e5f\u4e0d\u5fc5\u975e\u5f97\u5c06\u8fd9\u4e9b\u6210\u679c\u5408\u5e76\u56de\u4e3b\u7ebf\u4e86\uff09\uff0c\\n\u8fd9\u4e9b\u4ea7\u54c1\u4ecd\u7136\u5728\u5f97\u5230\u793e\u533a\u3001\u9f99\u82af\u5f00\u53d1\u8005\u7684\u90e8\u5206\u652f\u6301\u3002\\n\\n* \u9f99\u82af 1 \u53f7\u7684 PWM \u5b9a\u65f6\u5668/\u65f6\u949f\u6e90\u3001\u770b\u95e8\u72d7\u652f\u6301\uff08Keguang Zhang\uff09\u3002\\n* \u4e3a\u9f99\u82af 2K1000 SoC\u3001LS7A \u6865\u7247\u7684 MIPS \u7cfb\u7edf\u542f\u7528\u677f\u8f7d RTC \u652f\u6301\uff08Binbin Zhou\uff09\u3002\\n* MIPS KVM \u7a7a\u6307\u9488\u5f15\u7528\u4fee\u590d\u3001MIPS \u9f99\u82af\u5185\u6838\u7684\u7f16\u8bd1\u9519\u8bef\u4fee\u590d\u7b49\uff08Huacai Chen\uff09\u3002\\n\\n\u9664\u4ee5\u4e0a\u53d8\u66f4\u4e4b\u5916\uff0c\u8fd8\u6709\u8bb8\u591a\u540c\u7b49\u91cd\u8981\u7684\u7f3a\u9677\u4fee\u590d\u3001\u4ee3\u7801\u91cd\u6784\u7b49\u5de5\u4f5c\u503c\u5f97\u8912\u626c\u3002\\n\u8fd9\u4e2a\u7248\u672c\u52a8\u8fc7\u9f99\u82af\u76f8\u5173\u4ee3\u7801\u7684\u6240\u6709\u5f00\u53d1\u8005\u4eec\uff08\u6309\u5b57\u6bcd\u987a\u5e8f\u6392\u5e8f\uff0c\u4ee5 Git \u63d0\u4ea4\u8bb0\u5f55\u4e2d\u7684\u4f5c\u8005\u5b57\u6bb5\u4e3a\u51c6\uff09\uff1a\\n\\nimport ColumnedList from \'@site/src/components/ColumnedList\'\\n\\n\\n* Andy Shevchenko\\n* Arnaldo Carvalho de Melo\\n* Arnd Bergmann\\n* Binbin Zhou\\n* Chao Yu\\n* Chenguang Zhao\\n* Dan Carpenter\\n* Dave Airlie\\n* Donglin Peng\\n* Eric Lin\\n* Haoran Jiang\\n* Huacai Chen\\n* Ian Rogers\\n* Javier Martinez Canillas\\n* Jianmin Lv\\n* Jonathan Corbet\\n* Keguang Zhang\\n* Kuninori Morimoto\\n* Linus Torvalds\\n* Liu Peibao\\n* Marc Zyngier\\n* Masahiro Yamada\\n* Maxime Ripard\\n* Peter Zijlstra\\n* Sui Jingfeng\\n* Thomas Gleixner\\n* Thomas Wei\xdfschuh\\n* Thomas Zimmermann\\n* Tiezhu Yang\\n* WANG Rui\\n* WANG Xuerui\\n* Xi Ruoyao\\n* Yanteng Si\\n* Yinbo Zhu\\n* Yingkun Meng\\n* YingKun Meng\\n* Youling Tang\\n* Zhihong Dong\\n\\n\\n\u5f53\u4f60\u4f7f\u7528\u9f99\u67b6\u6784 Linux 6.5 \u65f6\uff0c\u522b\u5fd8\u4e86\u5411 :ta: \u4eec\u8868\u8fbe\u4e00\u58f0\u611f\u8c22\uff01\\n\\n:::info\\n\u672c\u8282\u62a5\u9053\u7684\u4fe1\u606f\u53ef\u4ee5\u901a\u8fc7\u7b80\u5355\u7684 `git` \u64cd\u4f5c\u4ece Linux \u4ed3\u5e93\u4e2d\u83b7\u53d6\uff1a\\n\\n```sh\\ngit log --grep=\'[Ll]oong\' v6.4..v6.5\\n```\\n\\n:::\\n\\n### \u5de5\u5177\u94fe\\n\\n#### gcc\\n\\n8 \u6708 28 \u65e5\uff0cLulu Cheng \u4e3a\u9f99\u67b6\u6784 `-O2` \u53ca\u66f4\u9ad8\u7684\u4f18\u5316\u7ea7\u522b[\u9ed8\u8ba4\u5f00\u542f\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-August/628538.html)\u79fb\u9664\u975e\u5fc5\u8981\u7b26\u53f7\u6269\u5c55\u3001\u96f6\u6269\u5c55\u64cd\u4f5c\u7684\u4f18\u5316\uff0c\\n\u4e5f[\u5408\u5e76\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-August/628534.html)\\n25 \u65e5 :ta: \u81ea\u5df1\u5199\u7684\u907f\u514d `SLT` \u6307\u4ee4\u5f15\u8d77\u591a\u4f59\u7b26\u53f7\u6269\u5c55\u52a8\u4f5c\u7684\u8865\u4e01\u3002\\n\\n#### LLVM\\n\\n8 \u6708 25 \u65e5\uff0cSixWeining [\u4f18\u5316\u4e86](https://reviews.llvm.org/D158832)\u9f99\u67b6\u6784\u7684\u4f4d\u57df\u6e05\u96f6\u64cd\u4f5c\uff0c\u57fa\u672c\u4e0a\u6bcf\u5904\u53ef\u4ee5\u7701 1 \u6761\u6307\u4ee4\u3002\\n\\n8 \u6708 23 \u65e5\uff0cAmi-zhang \u4e3a MSan [\u589e\u52a0\u4e86](https://reviews.llvm.org/D158587)\u9f99\u67b6\u6784\u53ef\u53d8\u53c2\u6570\u5217\u8868\u51fd\u6570\u7684\u652f\u6301\u3002\\n\\n## \u6742\u95fb\u64ad\u62a5\\n\\n8 \u6708 24 \u65e5\uff0cSong Gao [\u53d1\u51fa\u4e86](https://patchew.org/QEMU/20230824092409.1492470-1-gaosong@loongson.cn/)\\nQEMU 8.2 \u7684\u9f99\u67b6\u6784 target \u76f8\u5173\u6539\u52a8\u7684 PR\u3002\\n\u5176\u4e2d\u5305\u542b\u4e86\uff1a\\n\\n* LA32 \u652f\u6301\uff08Jiajie Chen\uff09\uff0c\\n* \u5728\u7ffb\u8bd1\u6269\u5c55\u6307\u4ee4\u524d\u8fdb\u884c\u66f4\u5b8c\u5584\u7684\u524d\u7f6e\u6761\u4ef6\u68c0\u67e5\uff08Song Gao\uff09\uff0c\\n* \u8fb9\u6cbf\u89e6\u53d1\u4e2d\u65ad\u7684\u4fee\u590d\uff08Bibo Mao\uff09\uff0c\u4ee5\u53ca\\n* \u4e3a CSR \u5199\u64cd\u4f5c\u6dfb\u52a0\u65e5\u5fd7\uff0c\u4ee5\u53ca\u4ee3\u7801\u91cd\u6784\uff08Philippe Mathieu-Daud\xe9\uff09\u3002\\n\\n\uff08\u611f\u8c22 Jiajie Chen \u7684\u7ebf\u7d22\u6295\u9012\u3002\uff09\\n\\n\u540c\u4e00\u5929\uff0cKatyushaScarlet 7 \u6708 22 \u65e5\u4e3a google/cpufeatures \u5e93\u505a\u7684\u9f99\u67b6\u6784\u9002\u914d[\u4e5f\u8fdb\u5165\u4e86\u4e3b\u7ebf](https://github.com/google/cpu_features/pull/314)\uff0c\\n\u9884\u8ba1\u5c06\u5728\u6b64\u5e93\u7684 v0.9.0 \u7248\u672c\u53d1\u5e03\u3002\uff08\u611f\u8c22 KatyushaScarlet \u7684\u7ebf\u7d22\u6295\u9012\u3002\uff09\\n\\n## \u5f20\u8d34\u680f\\n\\n\u672c\u680f\u76ee\u53ef\u4f9b\u5f20\u8d34\u516c\u76ca\u6027\u8d28\u7684\u5404\u79cd\u4fe1\u606f\u3002\\n\\n* \u672c\u5468\u62a5[\u6301\u7eed\u63a5\u53d7\u7f51\u53cb\u6295\u7a3f][call-for-submissions]\u3002\u6b22\u8fce\u6765\u4e0a\u6e38\u5750\u5750\uff01\\n\\n[call-for-submissions]: https://github.com/loongson-community/areweloongyet/issues/16"},{"id":"these-weeks-in-loongarch-12","metadata":{"permalink":"/newsletter/these-weeks-in-loongarch-12","editUrl":"https://github.com/loongson-community/areweloongyet/newsletter/2023-08-22-these-weeks-in-loongarch-12.md","source":"@site/newsletter/2023-08-22-these-weeks-in-loongarch-12.md","title":"\u6bcf\u5468\u4e09\u9f99\uff1a\u7b2c 12 \u671f","description":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01","date":"2023-08-21T17:07:50.000Z","formattedDate":"2023\u5e748\u670821\u65e5","tags":[{"label":"\u6bcf\u5468\u4e00\u9f99","permalink":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99"}],"readingTime":4.845,"hasTruncateMarker":true,"authors":[{"name":"WANG Xuerui","title":"\ud83d\udc32\u9f99\u95e8\u5ba2\u6808\u6253\u6742\u7684","url":"https://github.com/xen0n","imageURL":"https://github.com/xen0n.png","key":"xen0n"}],"frontMatter":{"slug":"these-weeks-in-loongarch-12","title":"\u6bcf\u5468\u4e09\u9f99\uff1a\u7b2c 12 \u671f","authors":["xen0n"],"date":"2023-08-21T17:07:50.000Z","tags":["\u6bcf\u5468\u4e00\u9f99"]},"unlisted":false,"prevItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 13 \u671f","permalink":"/newsletter/this-week-in-loongarch-13"},"nextItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 11 \u671f","permalink":"/newsletter/this-week-in-loongarch-11"}},"content":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01\\n\\n\x3c!-- truncate --\x3e\\n\\n\u56e0\u4e3a\u7b14\u8005\u7684\u73b0\u5b9e\u751f\u6d3b\u51fa\u73b0\u53d8\u6545\uff0c\u672c\u671f\u6539\u4e3a\u5468\u4e8c\u66f4\u65b0\u524d\u4e09\u5468\u7684\u5185\u5bb9\uff0c\u9884\u8ba1\u4e0b\u671f\u6062\u590d\u5468\u4e00\u66f4\u65b0\u3002\\n\\n\u5982\u65e0\u7279\u522b\u8bf4\u660e\uff0c\u6587\u4e2d\u63d0\u53ca\u7684\u65e5\u671f\u3001\u65f6\u95f4\u90fd\u4e3a\u5317\u4eac\u65f6\u95f4\uff08UTC+8\uff09\u3002\\n\\n## \u5148\u300c\u9a6c\u300d\u518d\u770b\\n\\n\u672c\u680f\u76ee\u7684\u5185\u5bb9\u5177\u6709\u4e00\u5b9a\u5ef6\u7eed\u6027\uff0c\u5c06\u6301\u7eed\u8ffd\u8e2a\u62a5\u9053 LoongArch® \u9886\u57df\u7684\u91cd\u8981\u6216\u957f\u671f\u9879\u76ee\uff08\u5751\uff09\u3002\\n\\n### Linux\\n\\nxen0n \u4f7f\u7528\u9f99\u67b6\u6784\u5411\u91cf\u6269\u5c55\u505a\u7684 RAID5\u3001RAID6 \u8ba1\u7b97\u4f18\u5316\u5df2[\u88ab linux-raid \u7ef4\u62a4\u8005\u63a5\u53d7](https://lore.kernel.org/linux-raid/CAPhsuW5J_wUGmU+1tvzTqmpJSRrJicXoNmp+-ftDuHuhBcbkqA@mail.gmail.com/T/#t)\uff0c\u5df2\u5728\u6700\u65b0 linux-next \u53ef\u7528\u3002\\n\u76f8\u6bd4\u901a\u7528\u7684\u6807\u91cf\u7b97\u6cd5\uff0c\u5411\u91cf\u52a0\u901f\u53ef\u4f7f\u8fd9\u4e9b\u64cd\u4f5c\u7684\u6027\u80fd\u63d0\u5347 1~3 \u500d\u3002\\n\\n### \u5de5\u5177\u94fe\\n\\n#### gcc\\n\\n8 \u6708 15 \u65e5\uff0cChenghui Pan \u4e0e Lulu Cheng \u7b49\u4eba\u7684\u9f99\u67b6\u6784\u5411\u91cf\u6269\u5c55\u4e0a\u6e38\u8865\u4e01\u5df2\u7ecf[\u7ffb\u65b0\u5230\u4e86\u7b2c 4 \u7248](https://gcc.gnu.org/pipermail/gcc-patches/2023-August/627413.html)\u3002\\n\u4e0d\u8fc7\u4ecd\u7136\u6ca1\u6709\u5c06\u8865\u4e01\u62c6\u5f97\u66f4\u7ec6\uff0c\u4e5f\u4ecd\u7136\u6709\u4e00\u4e9b\u5c0f\u7ec6\u8282\u9700\u8981\u6253\u78e8\u3002\\n\u597d\u4e8b\u591a\u78e8\uff01\\n\\n8 \u6708 6 \u65e5\uff0cJiajie Chen [\u63d0\u4ea4\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-August/626413.html)\\n32 \u4f4d\u9f99\u67b6\u6784\uff08LA32\uff09\u7684 GCC \u652f\u6301\u8865\u4e01\u3002\\n\u8be5\u540c\u5b66\u662f\u8fd1\u4e00\u6bb5\u65f6\u95f4\u4ee5\u6765\u7684\u65b0\u9c9c\u9762\u5b54\uff0c\u4e14\u5e76\u975e\u9f99\u82af\u5458\u5de5\uff0c\u6b22\u8fce\u6b22\u8fce\uff01\\n\uff08\u611f\u8c22 xry111 \u7684\u7ebf\u7d22\u6295\u9012\uff1b\u4ed6\u8fd8\u6709\u53e5\u5410\u69fd\uff1a\u5efa\u8bae\u5927\u5bb6\u522b\u5728\u8111\u5b50\u91cc\u603b\u628a 32 \u4f4d ISA \u8ddf 32 \u4f4d ABI \u201c\u5f3a\u7ed1\u5b9a\u201d\u4e00\u8d77\u3002\uff09\\n\\n#### LLVM\\n\\n8 \u6708 21 \u65e5\uff0cwangleiat \u5c06\u9f99\u67b6\u6784\u7684\u6808\u91cd\u5bf9\u9f50\u64cd\u4f5c\u5b9e\u73b0\u65b9\u5f0f\u4ece\u4e24\u6761\u79fb\u4f4d\uff08RISC-V \u505a\u6cd5\uff09[\u4f18\u5316\u5230\u4e86](https://reviews.llvm.org/D158384)\u4e00\u6b21 `bstrins`\u3002\\n\\n8 \u6708 19 \u65e5\uff0cwangleiat \u5408\u5e76\u4e86\u4ed6\u81ea\u5df1\u505a\u7684 Clang \u9f99\u67b6\u6784\u5411\u91cf\u64cd\u4f5c intrinsics\\n\u652f\u6301\u8865\u4e01\uff08[LSX](https://reviews.llvm.org/D155829)\u3001[LASX](https://reviews.llvm.org/D155830)\uff09\\n\u4e0e leecheechen \u8865\u7684\u76f8\u5173\u6d4b\u8bd5\u7528\u4f8b\uff08[LSX](https://reviews.llvm.org/D155834)\u3001[LASX](https://reviews.llvm.org/D155835)\uff09\u3002\\n\\n8 \u6708 9 \u65e5\uff0cwangleiat \u5408\u5e76\u4e86\u4ed6\u81ea\u5df1 2 \u53f7\u505a\u7684\u4e00\u7ec4 Clang \u9f99\u67b6\u6784 intrinsics \u76f8\u5173\u7684[\u4ee3\u7801\u91cd\u6784](https://reviews.llvm.org/D156866)\u3002\\n\\n\u540c\u4e00\u5929\uff0cSixWeining \u5408\u5e76\u4e86\u4ed6\u81ea\u5df1 1 \u53f7\u4e3a LLD \u65b0\u589e\u7684 [`R_LARCH_PCREL20_S2` \u91cd\u5b9a\u4f4d\u8bb0\u5f55\u7c7b\u578b\u652f\u6301](https://reviews.llvm.org/D156772)\uff1b\\n\u8fd8\u628a\u5148\u524d\u88ab\u53d1\u73b0\u6709\u95ee\u9898\u7684 `-march=`\u3001`-mtune=` \u9009\u9879\u652f\u6301\u8865\u4e01[\u6700\u7ec8\u4fee\u597d\u4e86](https://reviews.llvm.org/D155824)\u3002\\n\\n8 \u6708 8 \u65e5\uff0cSixWeining [\u4fee\u590d\u4e86](https://reviews.llvm.org/D156116)\u9f99\u67b6\u6784 Clang \u4e0e GCC \u6240\u5b9e\u73b0\u7684 C++ ABI \u7684\u4e00\u5904\u4e0d\u4e00\u81f4\u3002\\n\\n## \u6742\u95fb\u64ad\u62a5\\n\\n8 \u6708 17 \u65e5\uff0ccaiyinyu \u5408\u5e76\u4e86 8 \u6708 4 \u65e5 dengjianbo \u5728 glibc \u90ae\u4ef6\u5217\u8868[\u8d34\u51fa\u7684](https://sourceware.org/pipermail/libc-alpha/2023-August/150671.html)\u4f7f\u7528\u9f99\u67b6\u6784\u5411\u91cf\u6307\u4ee4\u4f18\u5316\u7684\u5b57\u7b26\u4e32\u64cd\u4f5c\u5b9e\u73b0\u3002\\n\u4ece\u90ae\u7bb1\u5730\u5740\u770b\uff0c\u8fd9\u4f4d Deng \u59d3\u540c\u5b66\u662f\u9f99\u82af\u5458\u5de5\uff0c\u8fd9\u5e94\u8be5\u662f :ta: \u5728\u4e0a\u6e38\u7684\u9996\u79c0\u3002\u6b22\u8fce\u6b22\u8fce\uff01\\n\u8fd9\u4e5f\u610f\u5473\u7740\u80fd\u591f\u6784\u5efa\u9f99\u67b6\u6784 glibc 2.39 \u7684\u6700\u4f4e binutils \u7248\u672c\u4e0a\u5347\u5230\u4e86 2.41\u3002xry111 \u5bf9\u6b64\u6307\u51fa\uff1a\\n\u4e0e\u4e00\u4e9b\u5176\u4ed6\u9879\u76ee\u4e0d\u540c\uff0cglibc \u7684\u7ef4\u62a4\u8005\u4eec\u4e0d\u559c\u6b22\u68c0\u6d4b\u6c47\u7f16\u5668\u80fd\u529b\u5e76\u4ee5\u6b64\u51b3\u5b9a\u6253\u5f00\u6216\u662f\u5173\u95ed\u67d0\u4e9b\u529f\u80fd\u3002\\n\uff08\u611f\u8c22 xry111 \u7684\u7ebf\u7d22\u6295\u9012\u3002\uff09\\n\\n8 \u6708 16 \u65e5\uff0cDebian Ports \u9879\u76ee[\u6b63\u5f0f\u5c06\u9f99\u67b6\u6784\u52a0\u5165](https://lists.debian.org/debian-devel-announce/2023/08/msg00000.html)\u5176\u81ea\u52a8\u5316\u6784\u5efa\u68af\u961f\u3002\\n\u8fd9\u5929\u4e5f\u6070\u5de7\u662f Debian \u9879\u76ee\u521b\u7acb 30 \u5468\u5e74\u7684\u7eaa\u5ff5\u65e5\u3002\\n\u6b64\u4e8b\u4e5f\u5f97\u5230\u4e86\u77e5\u540d Linux \u5a92\u4f53 [Phoronix \u7684\u62a5\u9053](https://www.phoronix.com/news/Debian-Ports-LoongArch)\u3002\\n\\nLLD \u539f\u4f5c\u8005 Rui Ueyama \u5355\u98de\u540e\u521b\u7acb\u7684 mold \u9879\u76ee\uff0c\u5df2\u5728\u5176 8 \u6708 13 \u65e5\u6b63\u5f0f\u53d1\u5e03\u7684 2.1\\n\u7248\u672c\u4e2d[\u5305\u542b\u4e86](https://github.com/rui314/mold/pull/1081) Jinyang He \u57fa\u4e8e LLD\\nLoongArch port \u5199\u4f5c\u7684\u9f99\u67b6\u6784\u652f\u6301\u8865\u4e01\u3002\\nPhoronix \u4e5f[\u62a5\u9053\u4e86](https://www.phoronix.com/news/Mold-2.1-Adds-LoongArch)\u6b64\u4e8b\u3002\\n\uff08\u611f\u8c22 zhangn1985 \u7684\u7ebf\u7d22\u6295\u9012\u3002\uff09\\n\\n## \u793e\u533a\u6574\u6d3b:\u513f:\\n\\n\u672c\u680f\u76ee\u63a5\u53d7\u4efb\u4f55\u7f51\u53cb\u7684\u6295\u7a3f\uff0c\u53ea\u8981\u5185\u5bb9\u4e0e LoongArch® \u6709\u5173\uff0c\u5e76\u53ef\u4ee5\u4e3a\u8bfb\u8005\u5e26\u6765\u4ef7\u503c\uff0c\\n\u65e0\u8bba\u4e25\u8083\u8d21\u732e\uff08\u6574\u7684\u5927\u6d3b:\u513f:\uff09\u6216\u662f\u535a\u541b\u4e00\u7b11\u90fd\u4e00\u6982\u6b22\u8fce\uff01\\n\\n\u8fd9\u51e0\u5468\u6ca1\u6709\u7f51\u53cb\u6574\u5927\u6d3b\u7684\u5370\u8c61\uff0c\u53ef\u80fd\u662f\u7b14\u8005\u6ca1\u5173\u6ce8\uff0c\u4e5f\u53ef\u80fd\u786e\u5b9e\u98ce\u5e73\u6d6a\u9759\u3002\\n\u4e0d\u8fc7\u7b14\u8005\u548c\u5176\u4ed6\u5f88\u591a\u540c\u5b66\u90fd\u9646\u7eed\u62ff\u5230/\u4e70\u5230\u4e86 3A6000 \u677f\u5b50\uff0c\u9884\u8ba1\u6709\u5f88\u591a\u6298\u817e\u6210\u679c\u5c06\u4e0d\u65e5\u516c\u5e03 :wink:\u3002\\n\\n## \u5f20\u8d34\u680f\\n\\n\u672c\u680f\u76ee\u53ef\u4f9b\u5f20\u8d34\u516c\u76ca\u6027\u8d28\u7684\u5404\u79cd\u4fe1\u606f\u3002\\n\\n* \u672c\u5468\u62a5[\u6301\u7eed\u63a5\u53d7\u7f51\u53cb\u6295\u7a3f][call-for-submissions]\u3002\u6b22\u8fce\u6765\u4e0a\u6e38\u5750\u5750\uff01\\n\\n[call-for-submissions]: https://github.com/loongson-community/areweloongyet/issues/16"},{"id":"this-week-in-loongarch-11","metadata":{"permalink":"/newsletter/this-week-in-loongarch-11","editUrl":"https://github.com/loongson-community/areweloongyet/newsletter/2023-07-31-this-week-in-loongarch-11.md","source":"@site/newsletter/2023-07-31-this-week-in-loongarch-11.md","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 11 \u671f","description":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01","date":"2023-07-31T12:21:17.000Z","formattedDate":"2023\u5e747\u670831\u65e5","tags":[{"label":"\u6bcf\u5468\u4e00\u9f99","permalink":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99"}],"readingTime":3.545,"hasTruncateMarker":true,"authors":[{"name":"WANG Xuerui","title":"\ud83d\udc32\u9f99\u95e8\u5ba2\u6808\u6253\u6742\u7684","url":"https://github.com/xen0n","imageURL":"https://github.com/xen0n.png","key":"xen0n"}],"frontMatter":{"slug":"this-week-in-loongarch-11","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 11 \u671f","authors":["xen0n"],"date":"2023-07-31T12:21:17.000Z","tags":["\u6bcf\u5468\u4e00\u9f99"]},"unlisted":false,"prevItem":{"title":"\u6bcf\u5468\u4e09\u9f99\uff1a\u7b2c 12 \u671f","permalink":"/newsletter/these-weeks-in-loongarch-12"},"nextItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 10 \u671f","permalink":"/newsletter/this-week-in-loongarch-10"}},"content":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01\\n\\n\x3c!-- truncate --\x3e\\n\\n\u5982\u65e0\u7279\u522b\u8bf4\u660e\uff0c\u6587\u4e2d\u63d0\u53ca\u7684\u65e5\u671f\u3001\u65f6\u95f4\u90fd\u4e3a\u5317\u4eac\u65f6\u95f4\uff08UTC+8\uff09\u3002\\n\\n## \u5148\u300c\u9a6c\u300d\u518d\u770b\\n\\n\u672c\u680f\u76ee\u7684\u5185\u5bb9\u5177\u6709\u4e00\u5b9a\u5ef6\u7eed\u6027\uff0c\u5c06\u6301\u7eed\u8ffd\u8e2a\u62a5\u9053 LoongArch® \u9886\u57df\u7684\u91cd\u8981\u6216\u957f\u671f\u9879\u76ee\uff08\u5751\uff09\u3002\\n\\n### Linux\\n\\n7 \u6708 31 \u65e5\uff0cxen0n \u5728\u505a RAID6 \u9f99\u67b6\u6784\u5411\u91cf\u4f18\u5316\u7684\u8fc7\u7a0b\u4e2d\uff0c\\n\u987a\u5e26[\u4fee\u590d\u4e86](https://lore.kernel.org/linux-raid/20230731104911.411964-1-kernel@xen0n.name/)\u5e74\u4e45\u5931\u4fee\u7684 `raid6test` \u8c03\u8bd5\u5de5\u5177\u3002\\n\\n\u4e2d\u56fd\u65f6\u95f4 7 \u6708 31 \u65e5\u51cc\u6668\uff0cLinus [tagged](https://lore.kernel.org/lkml/CAHk-=wik9NO9Un-OU0rVeo1+dp=6vj=s=K0T=uBVEa+Aqkj66w@mail.gmail.com/) Linux v6.5-rc4\u3002\\n\u5176\u4e2d\u7684\u9f99\u67b6\u6784\u53d8\u66f4\u5305\u542b\u4e86[\u9488\u5bf9 binutils 2.41 \u7684\u6784\u5efa\u4fee\u590d\u8865\u4e01](https://github.com/torvalds/linux/commit/03c53eb90c0c61885b2175adf8675fb56df7f8db)\uff0c\\n\u6709\u9700\u8981\u7684\u540c\u5b66\u53ef\u81ea\u884c\u53d6\u7528\u3002\\n\\n### \u5de5\u5177\u94fe\\n\\n7 \u6708 30 \u65e5\u665a\u95f4\uff0cbinutils 2.41 [\u6b63\u5f0f\u53d1\u5e03](https://sourceware.org/pipermail/binutils/2023-July/128719.html)\u3002\\n\u76f8\u5173\u53d8\u66f4\u5185\u5bb9\u5df2\u5728[\u5468\u62a5\u7b2c 7 \u671f](./2023-07-03-this-week-in-loongarch-7.md)\u62a5\u9053\u3002\\n\\n7 \u6708 29 \u65e5\uff0cLLVM 17.0.0-rc1 [\u53d1\u5e03](https://discourse.llvm.org/t/llvm-17-0-0-rc1-tagged/72404)\u3002\\n\u9664\u4e86\u5df2\u5728[\u5468\u62a5\u7b2c 10 \u671f](./2023-07-24-this-week-in-loongarch-10.md)\u62a5\u9053\u7684\u53d8\u66f4\u4e4b\u5916\uff0c\u5176\u4e2d\u91cd\u8981\u7684\u9f99\u67b6\u6784\u76f8\u5173\u53d8\u66f4\u8fd8\u6709\uff1a\\n\\n* LLD \u73b0\u5df2\u652f\u6301\u9f99\u67b6\u6784\uff08by xen0n\uff09\u3002\\n \u5728 LLVM\u3001QEMU\u3001Linux \u7b49\u5927\u578b\u9879\u76ee\u4e0a\u6d4b\u8bd5\u53ef\u7528\uff0c\u4e5f\u6d4b\u8bd5\u8fc7\u53ef\u4ee5\u81ea\u4e3e Gentoo LLVM stage\u3002\\n* Clang \u5728\u9f99\u67b6\u6784\u4e0a\u652f\u6301\u4e86 `-march=` `-mtune=` \u9009\u9879\uff0c\\n \u4ee5\u53ca\u76f8\u5e94\u7684\u5185\u5efa\u9884\u5904\u7406\u5668\u7b26\u53f7 `__loongarch_arch`\u3001`__loongarch_tune`\uff08by SixWeining\uff09\u3002\\n\\n## \u6742\u95fb\u64ad\u62a5\\n\\nGNOME3 \u5df2\u5728 Gentoo/LoongArch \u4e0a\u8bc1\u5b9e\u53ef\u7528\u5e76 keyworded\u3002\\n\u76f8\u5e94\u5730\uff0cGNOME \u4e0e Plasma \u7684 desktop profiles \u4e5f\u5728\u672c\u5468\u6dfb\u52a0\u4e86\u3002\\n\u6709\u9700\u8981\u7684\u540c\u5b66\u53ef\u4ee5\u5229\u7528\u5b83\u4eec\u6765\u7ed9\u81ea\u5df1 `make.conf` \u7b49\u7b49\u914d\u7f6e\u7626\u8eab\u4e86\u3002\\n\\n## \u793e\u533a\u6574\u6d3b:\u513f:\\n\\n\u672c\u680f\u76ee\u63a5\u53d7\u4efb\u4f55\u7f51\u53cb\u7684\u6295\u7a3f\uff0c\u53ea\u8981\u5185\u5bb9\u4e0e LoongArch® \u6709\u5173\uff0c\u5e76\u53ef\u4ee5\u4e3a\u8bfb\u8005\u5e26\u6765\u4ef7\u503c\uff0c\\n\u65e0\u8bba\u4e25\u8083\u8d21\u732e\uff08\u6574\u7684\u5927\u6d3b:\u513f:\uff09\u6216\u662f\u535a\u541b\u4e00\u7b11\u90fd\u4e00\u6982\u6b22\u8fce\uff01\\n\\n7 \u6708 31 \u65e5\uff0cxen0n \u5b8c\u6210\u4e86 Linux RAID 5/6 \u8ba1\u7b97\u7684 LSX\u3001LASX \u79fb\u690d\uff08\u6027\u80fd\u4e0d\u9519\uff09\uff0c\u9884\u8ba1\u5728\u672c\u5468\u5185\u63d0\u4ea4\u4e0a\u6e38\u3001\u89c1\u8bf8\u4e0b\u671f\u5468\u62a5\u3002\\n\\n7 \u6708 26 \u65e5\u665a\u95f4\uff0cxry111 [\u6ce8\u610f\u5230](https://github.com/openssl/openssl/pull/21530)\u9f99\u82af\u5458\u5de5\u5728\u4fee\u590d\\nOpenSSL \u7684\u9f99\u67b6\u6784 AES \u6c47\u7f16\u52a0\u901f\u7684\u6b63\u786e\u6027\uff0c\u8be5\u5458\u5de5\u63f4\u5f15\u300c\u6700\u65b0\u4fee\u8ba2\u7684 LoongArch64 \u5411\u91cf\u6307\u4ee4\u624b\u518c\u300d\uff1a\\n\u300c\u5bf9\u4e8e `vshuf.b` \u7684\u63a7\u5236\u5bc4\u5b58\u5668\u4e2d\u7684\u6bcf\u4e2a\u5b57\u8282\uff0c\u5176\u672a\u5b9a\u4e49\u7684\u6700\u9ad8 3 \u4f4d\u4e0d\u5e94\u88ab\u4f7f\u7528\uff0c\\n\u5426\u5219\u6307\u4ee4\u6267\u884c\u7ed3\u679c\u4e0d\u786e\u5b9a\u3002\u300dxry111 \u636e\u6b64\u6307\u51fa\uff1a\\n\\n> \u6839\u636e LA464 \u7684\u5b9e\u73b0\u201c\u731c\u201d\u7684\u5411\u91cf\u6307\u4ee4\u884c\u4e3a\u672a\u5fc5\u53ef\u9760\u3002\\n\\n\uff08\u7f16\u8005\u6ce8\uff1a\u5f88\u9057\u61be\uff0c\u8fd9\u610f\u5473\u7740\u6839\u636e QEMU \u5b9e\u73b0\u53cd\u63a8\u7684\u6307\u4ee4\u884c\u4e3a\u4e5f\u672a\u5fc5 100% \u5339\u914d\u771f\u5b9e\u6216\u672a\u6765\u786c\u4ef6\u884c\u4e3a\uff0c\\n\u56e0\u6b64\u4e0d\u57fa\u4e8e\u5b98\u65b9\u624b\u518c\u4e8c\u6b21\u521b\u4f5c\uff08\u8fd9\u76ee\u524d\u88ab\u7981\u6b62\uff09\u7684\u6307\u4ee4\u8bf4\u660e\u6587\u6863\u603b\u4e0d\u514d\u8981\u7ecf\u53d7\u4e9b\u540e\u77e5\u540e\u89c9\u7684\u4fee\u8ba2\u3002\\n\u4f46\u6709\u8fd9\u4e48\u4e00\u4efd\u8457\u4f5c\u6743\u4e0d\u53d7\u9650\u7684\u6587\u6863\u7684\u597d\u5904\u603b\u6bd4\u574f\u5904\u591a\u3002\uff09\\n\\n## \u5f20\u8d34\u680f\\n\\n\u672c\u680f\u76ee\u53ef\u4f9b\u5f20\u8d34\u516c\u76ca\u6027\u8d28\u7684\u5404\u79cd\u4fe1\u606f\u3002\\n\\n* \u672c\u5468\u62a5[\u6301\u7eed\u63a5\u53d7\u7f51\u53cb\u6295\u7a3f][call-for-submissions]\u3002\u6b22\u8fce\u6765\u4e0a\u6e38\u5750\u5750\uff01\\n\\n[call-for-submissions]: https://github.com/loongson-community/areweloongyet/issues/16"},{"id":"this-week-in-loongarch-10","metadata":{"permalink":"/newsletter/this-week-in-loongarch-10","editUrl":"https://github.com/loongson-community/areweloongyet/newsletter/2023-07-24-this-week-in-loongarch-10.md","source":"@site/newsletter/2023-07-24-this-week-in-loongarch-10.md","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 10 \u671f","description":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01","date":"2023-07-24T05:56:50.000Z","formattedDate":"2023\u5e747\u670824\u65e5","tags":[{"label":"\u6bcf\u5468\u4e00\u9f99","permalink":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99"}],"readingTime":4.765,"hasTruncateMarker":true,"authors":[{"name":"WANG Xuerui","title":"\ud83d\udc32\u9f99\u95e8\u5ba2\u6808\u6253\u6742\u7684","url":"https://github.com/xen0n","imageURL":"https://github.com/xen0n.png","key":"xen0n"}],"frontMatter":{"slug":"this-week-in-loongarch-10","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 10 \u671f","authors":["xen0n"],"date":"2023-07-24T05:56:50.000Z","tags":["\u6bcf\u5468\u4e00\u9f99"]},"unlisted":false,"prevItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 11 \u671f","permalink":"/newsletter/this-week-in-loongarch-11"},"nextItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 9 \u671f","permalink":"/newsletter/this-week-in-loongarch-9"}},"content":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01\\n\\n\x3c!-- truncate --\x3e\\n\\n\u5982\u65e0\u7279\u522b\u8bf4\u660e\uff0c\u6587\u4e2d\u63d0\u53ca\u7684\u65e5\u671f\u3001\u65f6\u95f4\u90fd\u4e3a\u5317\u4eac\u65f6\u95f4\uff08UTC+8\uff09\u3002\\n\\n## \u5148\u300c\u9a6c\u300d\u518d\u770b\\n\\n\u672c\u680f\u76ee\u7684\u5185\u5bb9\u5177\u6709\u4e00\u5b9a\u5ef6\u7eed\u6027\uff0c\u5c06\u6301\u7eed\u8ffd\u8e2a\u62a5\u9053 LoongArch® \u9886\u57df\u7684\u91cd\u8981\u6216\u957f\u671f\u9879\u76ee\uff08\u5751\uff09\u3002\\n\\n### Linux\\n\\n* 7 \u6708 24 \u65e5\uff0cHuacai Chen [\u53d1\u51fa\u4e86](https://lore.kernel.org/loongarch/20230722072201.2677516-1-chenhuacai@loongson.cn/)\u4e00\u7248\u6d4b\u8bd5\u8865\u4e01\uff0c\\n \u4ee5\u5141\u8bb8\u5185\u6838\u81ea\u8eab\u4f7f\u7528 LSX/LASX \u4e3a\u7279\u5b9a\u64cd\u4f5c\u52a0\u901f\u3002xen0n \u5c06\u5f88\u5feb\u57fa\u4e8e\u6b64\u8865\u4e01\u4f18\u5316\u9f99\u67b6\u6784\u4e0a\u7684 RAID5/6 \u8ba1\u7b97\u6027\u80fd\u3002\\n* 7 \u6708 19 \u65e5\uff0c\u6765\u81ea\u9e92\u9e9f\u7684 Enze Li [\u8d34\u51fa\u4e86](https://lore.kernel.org/loongarch/20230719082732.2189747-1-lienze@kylinos.cn/)\u9f99\u67b6\u6784\u7684\\n [KFENCE](https://www.kernel.org/doc/html/latest/dev-tools/kfence.html) \u9002\u914d\u3002KFENCE\uff08Kernel Electric-Fence\uff0c\u201c\u5185\u6838\u7535\u5b50\u56f4\u680f\u201d\uff09\\n \u662f\u57fa\u4e8e\u91c7\u6837\u7684\u4f4e\u5f00\u9500\u5185\u5b58\u5b89\u5168\u68c0\u67e5\u5de5\u5177\uff0c\u53ef\u4ee5\u5e2e\u52a9\u68c0\u67e5\u5806\u8d8a\u754c\u8bbf\u95ee\u3001\u91ca\u653e\u540e\u4f7f\u7528use-after-free\u3001\u975e\u6cd5\u91ca\u653e\u5185\u5b58\u7b49\u5e38\u89c1\u7684\u5185\u5b58\u5b89\u5168 bug\u3002\\n* 7 \u6708 18 \u65e5\uff0c\u4e0a\u6e38\u5f00\u53d1\u8005 Dan Carpenter \u4e3a\u9f99\u82af\u96c6\u663e\u663e\u63a7\u9a71\u52a8[\u589e\u52a0\u4e86](https://lore.kernel.org/dri-devel/0da6859b-40cc-4b3e-b8b6-fed157517083@moroto.mountain/T/#u)\u4e00\u5904\u9519\u8bef\u5904\u7406\u3002\\n \u7531\u4e8e\u9f99\u82af\u7684\u4ee3\u7801\u7ef4\u62a4\u8005\u4f3c\u4e4e\u4e00\u5f00\u59cb\u5e76\u4e0d\u60f3\u63a5\u53d7\u8be5\u8865\u4e01\uff0c\u52a0\u4e4b\u4f7f\u7528\u4e86\u9519\u8bef\u7684\u82f1\u8bed\u8868\u8fbe\uff0c\u5dee\u70b9\u5435\u8d77\u6765\uff0c\u8fd8\u597d\u540e\u8fb9\u548c\u5e73\u89e3\u51b3\u4e86\u3002\\n \uff08\u7b14\u8005\u5e76\u672a\u53c2\u4e0e\u8c03\u89e3\uff0c\u4f46\u7591\u4f3c\u662f\u6709\u56fd\u4eba\u670b\u53cb\u770b\u61c2\u4e86\u4e2d\u5f0f\u82f1\u8bed\uff0c\u79c1\u804a\u544a\u77e5\u4e86 Dan \u9f99\u82af\u7ef4\u62a4\u8005\u5b9e\u9645\u60f3\u8868\u8fbe\u7684\u542b\u4e49\u3002\uff09\\n\\n### \u5de5\u5177\u94fe\\n\\n#### LLVM\\n\\n\u9884\u8ba1\u5728\u4e2d\u56fd\u65f6\u95f4 7 \u6708 25~26 \u65e5\u671f\u95f4\uff0cLLVM 17 \u5c06\u4ece\u4e3b\u7ebf\u5207\u51fa\uff0c\u5982\u65e0\u91cd\u5927\u4e8b\u4ef6\u5219\u9884\u8ba1\u5728 6 \u5468\u540e\u6b63\u5f0f\u53d1\u5e03\u3002\\n\u8be5\u7248\u672c\u5982\u540c binutils 2.41\uff0c\u4e5f\u5c06\u5305\u542b\u5b8c\u6574\u7684 LA64 v1.00 \u6307\u4ee4\u6c47\u7f16\u3001\u53cd\u6c47\u7f16\u652f\u6301\u3002LLD \u7684\u9f99\u67b6\u6784\u79fb\u690d\u9884\u8ba1\u4e0d\u4f1a\u5728\u672c\u5468\u5185\u5b8c\u6210\uff08\u5c3d\u7ba1\u8fdb\u884c\u5230\u4e86\u6700\u540e\u7684\u5fae\u8c03\u5de5\u4f5c\uff09\uff0c\\n\u4f46\u7ecf\u4e0a\u6e38\u7ef4\u62a4\u8005 MaskRay \u8bc1\u5b9e\uff0c\u4e00\u65e6\u5176\u4ee3\u7801\u901a\u8fc7\u5ba1\u67e5\uff0c\u4e5f\u5c06\u80fd\u591f\u8fdb\u5165 LLVM 17 \u53d1\u5e03\u5206\u652f\u3002\\n\\n7 \u6708 21 \u65e5\uff0cwangleiat [\u63d0\u4ea4\u4e86](https://reviews.llvm.org/D155917)\u9f99\u67b6\u6784\u865a\u62df\u5316\u6269\u5c55\uff08LVZ\uff09\\n\u4e0e\u4e8c\u8fdb\u5236\u7ffb\u8bd1\u6269\u5c55\uff08LBT\uff09\u7684\u6307\u4ee4\u6c47\u7f16\u3001\u53cd\u6c47\u7f16\u652f\u6301\uff0c\u5df2\u4e8e 7 \u6708 24 \u65e5\u8fdb\u5165\u4e3b\u7ebf\uff0c\\n\u8d76\u4e0a\u4e86 LLVM 17 \u7684\u53d1\u5e03\u8282\u594f\u3002\\n\\n7 \u6708 20 \u65e5\uff0cwangleiat \u4e3a Clang \u589e\u52a0\u4e86 [LSX](https://reviews.llvm.org/D155829)\\n\u4e0e [LASX](https://reviews.llvm.org/D155830) \u7684 intrinsics \u652f\u6301\uff0c\\n\u7b2c\u4e8c\u5929 leecheechen \u4e3a\u5b83\u4eec\u5206\u522b[\u8865\u4e0a](https://reviews.llvm.org/D155834)\u4e86[\u6d4b\u8bd5](https://reviews.llvm.org/D155835)\u3002\\n\\n7 \u6708 20 \u65e5\uff0cSixWeining \u4e5f\u4e3a Clang [\u589e\u52a0\u4e86](https://reviews.llvm.org/D155824)\\n`-march=native` \u4e0e `-mtune=` \u547d\u4ee4\u884c\u9009\u9879\u7684\u652f\u6301\u3002\\n\\n## \u6742\u95fb\u64ad\u62a5\\n\\n\\n\\n7 \u6708 21 \u65e5\uff0cxry111 \u5411 OpenSSL \u9879\u76ee\u63d0\u4ea4\u4e86[\u8fd0\u884c\u65f6\u52a8\u6001\u68c0\u6d4b\u9f99\u67b6\u6784\u5411\u91cf\u6269\u5c55\u652f\u6301](https://github.com/openssl/openssl/pull/21509)\u4e0e[\u6784\u5efa\u65f6\u6b63\u786e\u68c0\u6d4b\u9f99\u67b6\u6784](https://github.com/openssl/openssl/pull/21510)\u7684\u8865\u4e01\u3002\u8fd9\u80fd\u4fee\u590d OpenSSL 3.1.x \u7684\u9f99\u67b6\u6784\u914d\u7f6e\u4e0d\u80fd\u642d\u914d\u6ca1\u6709\u5411\u91cf\u652f\u6301\u7684\u5de5\u5177\u94fe\u4f7f\u7528\u7684\u95ee\u9898\u3002\uff08\u5148\u524d\u9f99\u82af\u8d21\u732e\u7684\u4ee3\u7801\u672a\u8003\u8651\u8fd9\u4e00\u70b9\uff0c\u90a3\u4e9b\u5de5\u7a0b\u5e08\u5927\u6982\u7387\u672a\u5728\u793e\u533a\u53d1\u884c\u7248\u7684\u73af\u5883\u4e0b\u8fdb\u884c\u6d4b\u8bd5\u3002\uff09\\n\\n7 \u6708 20 \u65e5\uff0cGentoo \u7684\u9f99\u67b6\u6784\u79fb\u690d\u4ece WD40no rust \u72b6\u6001[\u6bd5\u4e1a\u4e86](https://github.com/gentoo/gentoo/pull/31957)\u3002\\n\u5f85 LLD \u652f\u6301\u4e0a\u6e38\u540e\uff0c\u9884\u8ba1 GNOME3 \u7684 keywording \u5de5\u4f5c\u5c06\u80fd\u591f\u5f88\u5feb\u63a8\u8fdb\u4e86\u3002\\n\\n7 \u6708 19\u300120 \u65e5\uff0cKatyushaScarlet \u5411 [v2ray](https://github.com/v2fly/v2ray-core/pull/2609)\\n\u4e0e [Xray](https://github.com/XTLS/Xray-core/pull/2338) \u5206\u522b\u63d0\u4ea4\u4e86 `loong64`\\n\u7684\u9002\u914d\uff0c\u53ea\u9700\u63d0\u5347\u4e00\u4e2a\u4f9d\u8d56\u7684\u7248\u672c\u5373\u53ef\u7f16\u51fa\u9f99\u67b6\u6784\u7684\u4e8c\u8fdb\u5236\u4e86\u3002\\n\\n7 \u6708 17 \u65e5\uff0c\u9f99\u82af\u5728\u5176 GitHub \u7ec4\u7ec7\u4e0b[\u521b\u5efa\u4e86](https://github.com/loongson/la-softdev-convention)\u540d\u4e3a\\n`la-softdev-convention`\u201c\u9f99\u67b6\u6784\u8f6f\u4ef6\u5f00\u53d1\u7ea6\u5b9a\u201d\u7684\u4ed3\u5e93\uff0c\\n\u5185\u5bb9\u4e5f\u662f\u5148\u524d\u88ab\u5f52\u6863\u7684\u300a\u9f99\u67b6\u6784\u5de5\u5177\u94fe\u7ea6\u5b9a\u300b\u7b49\u6587\u6863\u7684\u5fae\u8c03\u3002\\n\u5982\u540c[\u5148\u524d\u7684 `la-abi-specs` \u4ed3\u5e93](https://github.com/loongson/la-abi-specs)\uff0c[\u5411\u8be5\u5e93\u8d21\u732e](https://github.com/loongson/la-softdev-convention/blob/master/CONTRIBUTING.md)\u4e5f\u9700\u8981\u7b7e\u7f72\u9f99\u82af CLA\u3002\\n\u76ee\u524d\u4ecd\u672a\u6709\u9f99\u82af CLA \u65b9\u9762\u7684\u516c\u5f00\u8fdb\u5ea6\uff0c\u4f46\u89c2\u5bdf\u5230 [@loongson-admin](https://github.com/loongson-admin)\\n\u8d26\u53f7\u4e0b\u51fa\u73b0\u4e86[\u4e00\u4e2a Canonical CLA \u81ea\u52a8\u5316\u6d41\u7a0b\u7684 GitHub Action \u5b9a\u4e49\u7684 fork](https://github.com/loongson-admin/has-signed-canonical-cla)\u3002\\n\\n## \u5f20\u8d34\u680f\\n\\n\u672c\u680f\u76ee\u53ef\u4f9b\u5f20\u8d34\u516c\u76ca\u6027\u8d28\u7684\u5404\u79cd\u4fe1\u606f\u3002\\n\\n* \u672c\u5468\u62a5[\u6301\u7eed\u63a5\u53d7\u7f51\u53cb\u6295\u7a3f][call-for-submissions]\u3002\u6b22\u8fce\u6765\u4e0a\u6e38\u5750\u5750\uff01\\n\\n[call-for-submissions]: https://github.com/loongson-community/areweloongyet/issues/16"},{"id":"this-week-in-loongarch-9","metadata":{"permalink":"/newsletter/this-week-in-loongarch-9","editUrl":"https://github.com/loongson-community/areweloongyet/newsletter/2023-07-17-this-week-in-loongarch-9.md","source":"@site/newsletter/2023-07-17-this-week-in-loongarch-9.md","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 9 \u671f","description":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01","date":"2023-07-17T06:28:39.000Z","formattedDate":"2023\u5e747\u670817\u65e5","tags":[{"label":"\u6bcf\u5468\u4e00\u9f99","permalink":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99"}],"readingTime":4.555,"hasTruncateMarker":true,"authors":[{"name":"WANG Xuerui","title":"\ud83d\udc32\u9f99\u95e8\u5ba2\u6808\u6253\u6742\u7684","url":"https://github.com/xen0n","imageURL":"https://github.com/xen0n.png","key":"xen0n"}],"frontMatter":{"slug":"this-week-in-loongarch-9","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 9 \u671f","authors":["xen0n"],"date":"2023-07-17T06:28:39.000Z","tags":["\u6bcf\u5468\u4e00\u9f99"]},"unlisted":false,"prevItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 10 \u671f","permalink":"/newsletter/this-week-in-loongarch-10"},"nextItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 8 \u671f","permalink":"/newsletter/this-week-in-loongarch-8"}},"content":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01\\n\\n\x3c!-- truncate --\x3e\\n\\n\u5982\u65e0\u7279\u522b\u8bf4\u660e\uff0c\u6587\u4e2d\u63d0\u53ca\u7684\u65e5\u671f\u3001\u65f6\u95f4\u90fd\u4e3a\u5317\u4eac\u65f6\u95f4\uff08UTC+8\uff09\u3002\\n\\n## \u5148\u300c\u9a6c\u300d\u518d\u770b\\n\\n\u672c\u680f\u76ee\u7684\u5185\u5bb9\u5177\u6709\u4e00\u5b9a\u5ef6\u7eed\u6027\uff0c\u5c06\u6301\u7eed\u8ffd\u8e2a\u62a5\u9053 LoongArch® \u9886\u57df\u7684\u91cd\u8981\u6216\u957f\u671f\u9879\u76ee\uff08\u5751\uff09\u3002\\n\\n### Linux\\n\\n7 \u6708 13 \u65e5\uff0chev [\u4fee\u590d\u4e86](https://lore.kernel.org/loongarch/20230713030453.7404-1-wangrui@loongson.cn/)\\n`copy_user_fast` \u548c `clear_user_fast` \u5404\u81ea\u5f02\u5e38\u5904\u7406\u8def\u5f84\u4e2d\u7684\u4e00\u5904\u4e0b\u6ea2\u3002\\n\\n7 \u6708 13 \u65e5\uff0cFreeFlyingSheep [\u8d34\u51fa\u4e86](https://lore.kernel.org/loongarch/cover.1689215889.git.chenfeiyang@loongson.cn/)\\nLS7A \u96c6\u6210\u7f51\u5361\u7684\u9a71\u52a8\u8865\u4e01\u8349\u7a3f\uff0c\u8bf7\u793e\u533a\u7ed9\u70b9\u610f\u89c1\u3002\\n\\n7 \u6708 11 \u65e5\uff0cxen0n \u5c06\u9f99\u67b6\u6784 CPU \u7a7a\u95f2\u65f6\u6267\u884c\u7684\u51fd\u6570\u540d\u5b57[\u52a0\u5165\u4e86](https://lore.kernel.org/loongarch/20230711102202.1206488-1-kernel@xen0n.name/)\\n`perf` \u5de5\u5177\u7684\u76f8\u5173\u5217\u8868\uff0c\u4ee5\u53bb\u9664 `perf` \u8f93\u51fa\u4e2d\u7684\u8fd9\u90e8\u5206\u566a\u58f0\u3002\\n\\n7 \u6708 10 \u65e5\uff0c[@specialpointcentral](https://github.com/specialpointcentral)\\n[\u8d34\u51fa\u4e86](https://lore.kernel.org/loongarch/20230710124048.153562-1-huqi@loongson.cn/)\u9f99\u82af\u4e8c\u8fdb\u5236\u7ffb\u8bd1\u6269\u5c55\uff08LBT\uff09\u7684\u5185\u6838\u9002\u914d\u3002\\n\u622a\u81f3\u53d1\u7a3f\u65f6\u8be5\u8865\u4e01[\u5df2\u8fed\u4ee3\u5230](https://lore.kernel.org/loongarch/20230714132121.107045-1-huqi@loongson.cn/)\u7b2c\u4e09\u7248\u3002\\n\\n7 \u6708 9 \u65e5\uff0c[@donmor](https://github.com/donmor) [\u5c1d\u8bd5\u4fee\u590d](https://lore.kernel.org/loongarch/MEYP282MB2597CD6E861D659E3218148DD933A@MEYP282MB2597.AUSP282.PROD.OUTLOOK.COM/)\u9f99\u67b6\u6784\u5185\u6838\u7684\u547d\u4ee4\u884c\u5904\u7406\uff0c\\n\u4f7f\u5176\u80fd\u6b63\u786e\u652f\u6301\u4ee5\u5185\u5efa\u547d\u4ee4\u884c\u6765\u6269\u5c55\u6216\u4ee3\u66ff\u5f15\u5bfc\u5668\u6240\u4f20\u7684\u547d\u4ee4\u884c\u3002\\n\u622a\u81f3\u53d1\u7a3f\u65f6\u8be5\u8865\u4e01[\u5df2\u8fed\u4ee3\u5230](https://lore.kernel.org/loongarch/MEYP282MB2597514C7A4697A72F829B78D93BA@MEYP282MB2597.AUSP282.PROD.OUTLOOK.COM/)\u7b2c\u56db\u7248\u3002\\n\\n\\n### \u5de5\u5177\u94fe\\n\\n#### LLVM\\n\\n\u4e0a\u5468 7 \u6708 11 \u65e5\u5f00\u59cb hev \u9646\u7eed\u4ea4\u4e86\u4e00\u4e32\u4ee3\u7801\u751f\u6210\u4f18\u5316\uff1a[\u8865\u4e01\u4e00](https://reviews.llvm.org/D154762)\u3001[\u8865\u4e01\u4e8c](https://reviews.llvm.org/D154811)\u3001[\u8865\u4e01\u4e09](https://reviews.llvm.org/D154819)\u3001[\u8865\u4e01\u56db](https://reviews.llvm.org/D154919)\uff0c\u4e3b\u8981\u90fd\u662f\u544a\u8bc9 LLVM \u4f18\u5316\u5668\u66f4\u591a\u76f8\u5173\u4fe1\u606f\u4ee5\u8f85\u52a9\u5176\u51b3\u7b56\u3002\\n\\n\u540c\u6837\u5728 7 \u6708 11 \u65e5\uff0cleecheechen \u4e3a Clang [\u589e\u52a0\u4e86](https://reviews.llvm.org/D154931) LSX/LASX \u7684\u5185\u8054\u6c47\u7f16\u652f\u6301\u3002\\n\\nxen0n \u4e5f\u5728\u8fd9\u4e00\u5929[\u6574\u7406\u4e86](https://reviews.llvm.org/D154916)\u9f99\u67b6\u6784\u6307\u4ee4\u5b9a\u4e49\u6587\u4ef6\u8ba9\u5b83\u6e05\u723d\u4e00\u70b9\uff0c\u4e5f\u4e3a\u63a5\u4e0b\u6765\u7684\u91cd\u6784\u4f5c\u51c6\u5907\u3002\\n\\n#### Rust\\n\\n\u4e2d\u56fd\u65f6\u95f4 7 \u6708 13 \u65e5\u665a\u95f4\uff0cRust 1.71.0 [\u6b63\u5f0f\u53d1\u5e03](https://blog.rust-lang.org/2023/07/13/Rust-1.71.0.html)\u3002\\n\u9f99\u67b6\u6784\u5728\u8be5\u7248\u672c\u9996\u6b21\u4f5c\u4e3a Tier 2 with host tools\u5e26\u5bbf\u4e3b\u5de5\u5177\u7684\u4e8c\u7ea7\u67b6\u6784 \u83b7\u5f97\u652f\u6301\u3002\\n\u5df2\u7ecf\u53ef\u4ee5\u901a\u8fc7 rustup \u88c5\u4e0a\u6807\u51c6\u5e93\uff0c\u7528\u6765\u4ea4\u53c9\u7f16\u8bd1\u4e86\uff08\u5f53\u7136\uff0c\u76ee\u524d\u4ecd\u9700\u81ea\u884c\u51c6\u5907 C/C++ \u4ea4\u53c9\u5de5\u5177\u94fe\uff09\u3002\\n\\n```sh-session\\n$ rustup target list | grep loong\\nloongarch64-unknown-linux-gnu (installed)\\n```\\n\\n\u5728\u6b64\u4e4b\u540e\uff0c\u4e3a\u4e86\u9f99\u67b6\u6784\u7535\u8111\u7528\u6237\u4e5f\u80fd\u65b9\u4fbf\u4f7f\u7528\u5b98\u65b9\u5b89\u88c5\u6e20\u9053\\n[rustup.rs](https://rustup.rs/)\uff0chev [\u63d0\u4ea4\u4e86](https://github.com/rust-lang/rustup/pull/3405)\u4e3a\u5176\u7a33\u5b9a\u5206\u652f\\n\u5f00\u542f\u9f99\u67b6\u6784\u4e8c\u8fdb\u5236\u6784\u5efa\u7684\u53d8\u66f4\u5e76\u8bf7\u6c42\u53d1\u5e03\u65b0\u7248\uff0cxen0n [\u6574\u4e86\u4e2a\u6d3b:\u513f:](https://github.com/rust-lang/rustup/pull/3404)\u8ba9\u5b89\u88c5\u811a\u672c\u53ef\u4ee5\u8bc6\u522b\u65b0\u65e7\u4e16\u754c\uff0c\u4e3a\u65e7\u4e16\u754c\u7528\u6237\u62a5\u4e2a\u53cb\u597d\u7684\u9519\u3002\\n\\n### \u6742\u9879\\n\\n\u777d\u8fdd\u4e24\u5e74\uff0cGNU GRUB \u7684 2.12-rc1 \u7248\u672c\u5728 7 \u6708 10 \u65e5[\u6b63\u5f0f\u88ab tagged](https://lists.gnu.org/archive/html/grub-devel/2023-07/msg00029.html)\u3002\\n2.12 \u6b63\u5f0f\u7248\u9884\u8ba1\u5c06\u5728\u4e00\u4e2a\u6708\u5185\u53d1\u5e03\uff0c\u5c4a\u65f6\u6240\u6709\u53d1\u884c\u7248\u90fd\u53ef\u4ee5\u4e22\u6389\u4e00\u5768\u8865\u4e01\u4e86\u3002\\n\\n## \u793e\u533a\u6574\u6d3b:\u513f:\\n\\n\u672c\u680f\u76ee\u63a5\u53d7\u4efb\u4f55\u7f51\u53cb\u7684\u6295\u7a3f\uff0c\u53ea\u8981\u5185\u5bb9\u4e0e LoongArch® \u6709\u5173\uff0c\u5e76\u53ef\u4ee5\u4e3a\u8bfb\u8005\u5e26\u6765\u4ef7\u503c\uff0c\\n\u65e0\u8bba\u4e25\u8083\u8d21\u732e\uff08\u6574\u7684\u5927\u6d3b:\u513f:\uff09\u6216\u662f\u535a\u541b\u4e00\u7b11\u90fd\u4e00\u6982\u6b22\u8fce\uff01\\n\\n\u65e5\u524d Deepin \u793e\u533a\u6280\u672f\u59d4\u5458\u4f1a\uff08TC\uff09\u5728\u4f8b\u4f1a\u4e0a[\u8ba8\u8bba\u4e86](https://www.freelists.org/post/deepin-devel/-230628)\u5408\u5e76\u9f99\u67b6\u6784\u652f\u6301\u7684\u4e00\u4e9b\u6f5c\u5728\u95ee\u9898\u7b49\u3002\\n\u4f1a\u8bae\u4e5f\u8ba8\u8bba\u4e86 RISC-V \u79fb\u690d\u7684\u7c7b\u4f3c\u95ee\u9898\u3002\uff08\u611f\u8c22 Revy \u7684\u7ebf\u7d22\u6295\u9012\u3002\uff09\\n\\nxen0n [\u6574\u4e86](https://gist.github.com/xen0n/5ee04aaa6cecc5c7794b9a0c3b65fc7f)\u4e2a\\n156 \u5b57\u8282\u7684\u65b0\u65e7\u4e16\u754c\u5185\u6838 ABI \u68c0\u6d4b\u5de5\u5177\\n\uff08\u770b\u6e90\u7801\u9700\u8981\u68af\u5b50\uff0c\u4e0d\u8fc7\u603b\u5171\u4e5f\u6ca1\u51e0\u884c\uff0c\u590d\u6742\u5ea6\u4e3b\u8981\u5728\u4e8e ELF \u5934\u9700\u8981\u624b\u5de5\u6784\u9020\uff09\u3002\\n\\nTry it yourself!\\n\\n```sh-session\\n# highlight-next-line\\n$ base64 -d > check-new-world <pull request\u62c9\u53d6\u8bf7\u6c42 \u5df2[\u88ab Linus \u5408\u5e76][linux-loongarch-6.5]\u3002\\n\u5f53\u5929\u4e0b\u5348 Xi Ruoyao [\u63d0\u8bae][jump-label]\u5c06 `CONFIG_JUMP_LABEL` \u6027\u80fd\u4f18\u5316\u9009\u9879\u9ed8\u8ba4\u5f00\u542f\u3002\\n\\n6 \u6708 29 \u65e5\uff0cTianrui Zhao [\u8d34\u51fa\u4e86][loongarch-kvm-v16]\u7b2c 16 \u7248\u7684\u9f99\u67b6\u6784 KVM\u5185\u6838\u865a\u62df\u673a \u8865\u4e01\u3002\\n\u6b22\u8fce\u540c\u5b66\u4eec\u90fd\u6765\u770b\u770b\u3002\uff08\u611f\u8c22 [@Luo-Chang](https://github.com/Luo-Chang) \u7684\u7ebf\u7d22\u6295\u9012\u3002\uff09\\n\\n6 \u6708 28 \u65e5\uff0cClangBuiltLinux \u7ef4\u62a4\u8005 Nathan Chancellor \u4e3a\u8be5\u9879\u76ee\u7684CI\u6301\u7eed\u96c6\u6210\u57fa\u7840\u8bbe\u65bd[\u63d0\u4ea4\u4e86][cbl-boot-utils-loong]\u9f99\u67b6\u6784\u7684\u5f15\u5bfc\u6d4b\u8bd5\u652f\u6301\u3002\\n\u5341\u5206\u611f\u8c22\u56fd\u9645\u53cb\u4eba\u7684\u5bc6\u5207\u914d\u5408\uff08\u5e38\u5e38\u5728\u8865\u4e01\u53d1\u5e03\u3001\u5408\u5e76\u4e0d\u5230\u4e00\u5c0f\u65f6\u540e\u5c31\u884c\u52a8\u8d77\u6765\u4e86\uff09\uff01\\n\\n[linux-loongarch-6.5]: https://lore.kernel.org/loongarch/168814584495.9404.13332741026535742055.pr-tracker-bot@kernel.org/T/#t\\n[jump-label]: https://lore.kernel.org/loongarch/20230701083247.177482-1-xry111@xry111.site/\\n[loongarch-kvm-v16]: https://lore.kernel.org/loongarch/20230629075538.4063701-1-zhaotianrui@loongson.cn/\\n[cbl-boot-utils-loong]: https://github.com/ClangBuiltLinux/boot-utils/pull/109\\n\\n### \u5de5\u5177\u94fe\\n\\n#### binutils\\n\\n\u4ee5\u4e0b\u5185\u5bb9\u5747\u5df2\u8fdb\u5165\u4e3b\u7ebf\uff0c\u9759\u5f85 binutils 2.41 \u53d1\u5e03\uff1a\\n\\n* FreeFlyingSheep [\u6dfb\u52a0\u4e86](https://sourceware.org/pipermail/binutils/2023-June/127873.html)\u4ee5 `$fcsrX` \u79f0\u547c FCSR\u6d6e\u70b9\u63a7\u5236\u72b6\u6001\u5bc4\u5b58\u5668 \u7684\u652f\u6301\u3002\\n :::info \u4ee5\u524d\u548b\u56de\u4e8b\\n \u4ee5\u524d\u8981\u7528 `$rX` \u79f0\u547c FCSR\uff0c\u4e5f\u5c31\u662f\u8bf4\uff1a\u5f53\u6210\u6574\u6570\u5bc4\u5b58\u5668\uff01\u8fd9\u663e\u7136\u4e0d\u5bf9\uff0c\u800c\u4e14\u8ddf LLVM \u4e5f\u4e0d\u517c\u5bb9\u3002\u73b0\u5728\u4e24\u79cd\u5199\u6cd5\u90fd\u652f\u6301\u4e86\uff0c\u65e7\u5199\u6cd5\u5148\u7559\u4e00\u9635\u5b50\u4e0d\u5220\uff0c\u65b9\u4fbf\u4e0b\u6e38\u8fc1\u79fb\u3002\\n :::\\n* mengqinggang \u6dfb\u52a0\u4e86 [LSX\u3001LASX]\u3001[LVZ\u3001LBT] \u7684\u6307\u4ee4\u5b9a\u4e49\u3002\\n* xen0n [\u6539\u8fdb\u4e86](https://sourceware.org/pipermail/binutils/2023-June/128082.html)\u9f99\u67b6\u6784\u6c47\u7f16\u5668\u3001\u53cd\u6c47\u7f16\u5668\u7684\u4e00\u7cfb\u5217\u884c\u4e3a\uff1a\\n - \u652f\u6301\u4ee5\u5f69\u8272\uff08\u8bed\u6cd5\u9ad8\u4eae\uff09\u663e\u793a\u53cd\u6c47\u7f16\u8f93\u51fa\u4e86\u3002\u53c2\u89c1 `--disassembler-color` \u9009\u9879\u7684\u5e2e\u52a9\u6587\u672c\u3002\\n - \u5728\u4e0d\u5f71\u54cd\u8bed\u4e49\u7684\u524d\u63d0\u4e0b\uff0c\u4f1a\u663e\u793a\u4e00\u4e9b\u4f2a\u6307\u4ee4\u4e86\u3002\\n - \u6709\u7b26\u53f7\u7acb\u5373\u6570\u540e\u8fb9\u4e0d\u4f1a\u6253\u5370\u5bf9\u5e94\u7684\u5341\u516d\u8fdb\u5236\u4f4d\u57df\u8868\u793a\u4e86\u3002\\n - \u672a\u77e5\u6307\u4ee4\u5b57\u5c06\u4f1a\u4ee5 `.word` \u4e3a\u52a9\u8bb0\u7b26\u7684\u5f62\u5f0f\u5c55\u793a\u4e86\u3002\\n - \u9075\u5faa\u89c4\u8303\u6587\u6863\uff0c\u5f03\u7528\u4e86 `$v[01]`\u3001`$fv[01]`\u3001`$x` \u51e0\u4e2a\u8fdc\u53e4\u65f6\u671f\u9057\u7559\u7684\u5bc4\u5b58\u5668\u522b\u540d\uff0c\u73b0\u5728\u4f7f\u7528\u5b83\u4eec\u5c06\u88ab\u8b66\u544a\u3002\\n :::info shenmegui\\n |\u5f03\u7528\u540d\u79f0|\u73b0\u884c\u540d\u79f0|\\n |--------|--------|\\n |`$v0`\u3001`$v1`|`$a0`\u3001`$a1`|\\n |`$fv0`\u3001`$fv1`|`$fa0`\u3001`$fa1`|\\n |`$x`|`$r21`|\\n \u663e\u7136\uff0c\u9664\u4e86\u4e0d\u89c1\u4e8e[\u6b63\u5f0f\u7248\u672c\u7684\u5bc4\u5b58\u5668\u7ea6\u5b9a][lapcs-regs]\u4e4b\u5916\uff0c\u8fd9\u4e9b\u53eb\u6cd5\u66f4\u4f1a\u4e0e\u5411\u91cf\u5bc4\u5b58\u5668\u7684\u6b63\u5f0f\u540d\u79f0 `$vrX`\u3001`$xrX` \u5f62\u6210\u4e25\u91cd\u6df7\u6dc6\u3002\\n :::\\n\\n[LSX\u3001LASX]: https://sourceware.org/pipermail/binutils/2023-June/127990.html\\n[LVZ\u3001LBT]: https://sourceware.org/pipermail/binutils/2023-June/128156.html\\n[lapcs-regs]: https://github.com/loongson/la-abi-specs/blob/release/lapcs.adoc#the-registers\\n\\n#### GCC\\n\\n6 \u6708 30 \u65e5\uff0cChenghui Pan \u4ee3 Lulu Cheng [\u63d0\u4ea4\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-June/623262.html)\\nLSX\u3001LASX \u7684\u4ee3\u7801\u751f\u6210\u652f\u6301\u3002\u8865\u4e01\u6bd4\u8f83\u5927\uff0c\u4e0d\u4fbf\u4ed4\u7ec6\u5ba1\u67e5\uff0c\u76ee\u524d\u5927\u6982\u5728\u62c6\u4e86\u3002\\n\u65e0\u8bba\u5982\u4f55\uff0c\u660e\u5e74 GCC 14.1 \u6b63\u5f0f\u53d1\u5e03\u65f6\uff0c\u8fd9\u4e9b\u652f\u6301\u5927\u6982\u7387\u90fd\u4f1a\u641e\u5b9a\u3002\\n\\n#### LLVM\\n\\n\u4e00\u5468\u95f4\u5408\u5e76\u4e86\u4ee5\u4e0b\u7684\u529f\u80fd\u6539\u8fdb\u7b49\uff1a\\n\\n* xen0n [\u4fee\u590d\u4e86](https://reviews.llvm.org/D153865) CSR/IOCSR \u64cd\u4f5c\u7684\u526f\u4f5c\u7528\u6807\u8bb0\u3002\\n* SixWeining [\u652f\u6301\u4e86](https://reviews.llvm.org/D153872) `R_LARCH_64_PCREL` \u7684\u4ea7\u751f\u3002\\n \u8be5\u652f\u6301\u662f ClangBuiltLinux `CONFIG_JUMP_LABEL` \u7684\u524d\u7f6e\u9700\u6c42\u3002\\n* Ami-zhang \u5b8c\u6210\u4e86 MSan \u5230 LoongArch \u7684\u79fb\u690d\uff08[\u8865\u4e01\u4e00](https://reviews.llvm.org/D140528)\u3001[\u8865\u4e01\u4e8c](https://reviews.llvm.org/D152692)\uff09\u3002\\n\\n\u51fa\u73b0\u4e86\u4ee5\u4e0b\u7684\u65b0\u52a8\u5411\uff1a\\n\\n* wangleiat \u63d0\u4ea4\u4e86 [LSX](https://reviews.llvm.org/D154183)\u3001[LASX](https://reviews.llvm.org/D154195) \u7684\u6307\u4ee4\u5b9a\u4e49\uff0cleecheechen [\u8ddf\u8fdb\u63d0\u4ea4\u4e86](https://reviews.llvm.org/D154197)\u6d4b\u8bd5\u7528\u4f8b\u3002\\n* hev [\u663e\u5f0f\u6807\u8bb0\u4e86](https://reviews.llvm.org/D154192)\u6240\u6709\u6307\u4ee4\u7684\u5c5e\u6027\uff0c\u76f8\u6bd4\u4e8e\u8ba9 LLVM \u731c\uff0c\u53ef\u4ee5\u83b7\u5f97\u66f4\u9ad8\u8d28\u91cf\u7684\u751f\u6210\u4ee3\u7801\u3002\\n\\n#### Rust\\n\\n7 \u6708 1 \u65e5\uff0c\u4e0a\u6e38\u5408\u5e76\u4e86 hev \u7684 LoongArch ELF flags \u4fee\u590d\u3002\u8be5\u4fee\u590d\u4f7f\u5f97\u8f6f\u6d6e\u70b9\u7684 Rust\\n\u6784\u5efa\u4ea7\u7269\u7ec8\u4e8e\u83b7\u5f97\u4e86\u6b63\u786e\u7684 ELF `e_flags` \u5b57\u6bb5\u53d6\u503c\u3002\\n\u8be5\u4fee\u590d\u5c06\u4e8e Rust 1.72.0 \u6b63\u5f0f\u53d1\u5e03\u3002\\n\\n### QEMU\\n\\n6 \u6708 30 \u65e5\uff0cSong Gao [\u63d0\u4ea4\u4e86](https://patchwork.ozlabs.org/project/qemu-devel/list/?series=361811)\\nLASX \u7684\u6307\u4ee4\u6a21\u62df\u652f\u6301\uff0c\u5185\u542b\u6240\u6709 LASX \u6307\u4ee4\u7684\u8bed\u4e49\u5efa\u6a21\u3002\\n\\n## \u793e\u533a\u6574\u6d3b:\u513f:\\n\\n\u672c\u680f\u76ee\u63a5\u53d7\u4efb\u4f55\u7f51\u53cb\u7684\u6295\u7a3f\uff0c\u53ea\u8981\u5185\u5bb9\u4e0e LoongArch® \u6709\u5173\uff0c\u5e76\u53ef\u4ee5\u4e3a\u8bfb\u8005\u5e26\u6765\u4ef7\u503c\uff0c\\n\u65e0\u8bba\u4e25\u8083\u8d21\u732e\uff08\u6574\u7684\u5927\u6d3b:\u513f:\uff09\u6216\u662f\u535a\u541b\u4e00\u7b11\u90fd\u4e00\u6982\u6b22\u8fce\uff01\\n\\n6 \u6708 29 \u65e5\uff0cyetist \u7684 IPXE \u9f99\u67b6\u6784\u79fb\u690d[\u88ab\u4e0a\u6e38\u5408\u5e76](https://github.com/ipxe/ipxe/pull/820)\u3002\\n\u8fd9\u5bf9\u9f99\u67b6\u6784\u673a\u5668\u7684\u65e0\u4eba\u503c\u5b88\u8fd0\u7ef4\u662f\u4e00\u5927\u5229\u597d\u3002\uff08\u611f\u8c22 yetist \u7684\u7ebf\u7d22\u6295\u9012\u3002\uff09\\n\\n## \u5f20\u8d34\u680f\\n\\n\u672c\u680f\u76ee\u76ee\u524d\u53ef\u4f9b\u5f20\u8d34\u516c\u76ca\u6027\u8d28\u7684\u5404\u79cd\u4fe1\u606f\u3002\\n\\n* \u672c\u5468\u62a5[\u6301\u7eed\u63a5\u53d7\u7f51\u53cb\u6295\u7a3f][call-for-submissions]\u3002\u6b22\u8fce\u6765\u4e0a\u6e38\u5750\u5750\uff01\\n\\n[call-for-submissions]: https://github.com/loongson-community/areweloongyet/issues/16\\n\\n### AOSCC 2023\uff1a7 \u6708 15 \u81f3 16 \u65e5\uff0c\u4e0a\u79d1\u5927\u89c1\uff01\\n\\n\u8ddd\u79bb\u4eca\u5e74 AOSCC \u8fd8\u6709\u4e0d\u5230\u4e00\u4e2a\u6708\uff0c\u672c\u6b21\u805a\u4f1a\u7684\u65e5\u7a0b\u7e41\u591a\uff0c\u4e0d\u4ec5\u6709\u793e\u533a\u9879\u76ee\u76f8\u5173\u7684\u5c55\u793a\u3001\u8ba8\u8bba\u548c\u6295\u7968\uff0c\u8fd8\u6709\u8bb8\u591a\u6765\u81ea\u5f00\u6e90\u4e1a\u754c\u7684\u4ee3\u8868\u95e8\u5c06\u4f1a\u5230\u573a\u5206\u4eab\u7ecf\u9a8c\uff0c\u56de\u7b54\u95ee\u9898\u3002\\n\\n\u8be6\u89c1\uff1a[\u6d3b\u52a8\u65e5\u7a0b](https://wiki.aosc.io/zh/community/aoscc/2023/)\u3002\\n\\n#### \u201c\u9f99\u82af\u4e0e\u4f60\uff1a\u4f60\u95ee\u6211\u7b54\u201d\u95ee\u9898\u5f81\u96c6\\n\\n\u8fd1\u5e74\u6765\uff0c\u7531 LoongArch \u67b6\u6784\u9a71\u52a8\u7684\u9f99\u82af 5000 \u7cfb\u5217\u5904\u7406\u5668\u5c55\u73b0\u51fa\u4e86\u76f8\u5f53\u53ef\u89c2\u7684\u6027\u80fd\u63d0\u5347\uff0c\u4ea6\u5728\u5f00\u6e90\u793e\u533a\u4e2d\u6536\u83b7\u4e86\u4e0d\u5c11\u4eba\u6c14\uff1b\u4e0e\u6b64\u540c\u65f6\uff0c\u4f01\u4e1a\u4e0e\u793e\u533a\u7684\u201c\u65b0\u65e7\u4e16\u754c\u201d\u4ea4\u66ff\u4e0e\u5728\u4e0a\u6e38\u7684\u78b0\u649e\u4e0e\u4ea4\u6d41\u4e5f\u6210\u4e3a\u4e86\u6700\u8fd1\u51e0\u5e74 LoongArch \u751f\u6001\u53c2\u4e0e\u8005\u4eec\u65f6\u523b\u5173\u6ce8\u7684\u4e8b\u60c5\u3002\u672c\u6b21 AOSCC \u6211\u4eec\u6709\u5e78\u9080\u8bf7\u5230\u4e86\u6765\u81ea LoongArch \u793e\u533a\u7684\u4e0a\u6e38\u8d21\u732e\u8005\u548c\u9f99\u82af\u4e2d\u79d1\u7684\u5de5\u7a0b\u5e08\u4eec\u6765\u4e00\u540c\u4ecb\u7ecd\u548c\u89e3\u7b54\u5404\u4f4d\u7684\u95ee\u9898\u548c\u7591\u60d1\u3002\\n\\n\u8003\u8651\u5230\u65e5\u7a0b\u5b89\u6392\u8f83\u4e3a\u7d27\u51d1\uff0c\u6211\u4eec\u51b3\u5b9a\u63d0\u524d\u6536\u96c6\u793e\u533a\u63d0\u95ee\uff0c\u8bf7[\u4f7f\u7528\u672c\u95ee\u5377](https://forms.gle/QgdzPmcXqjwitmQm7)\u63d0\u4ea4\u60a8\u5e0c\u671b\u5f97\u5230\u89e3\u7b54\u7684\u95ee\u9898\u3002\\n\\n#### \u4e0e\u4f1a\u8005\u767b\u8bb0\\n\\n\u7531\u4e8e\u672c\u6b21 AOSCC \u7ebf\u4e0b\u6d3b\u52a8\u5728\u4e0a\u6d77\u79d1\u6280\u5927\u5b66\u4e3e\u884c\uff0c\u6821\u65b9\u5b89\u4fdd\u8981\u6c42\u6765\u8bbf\u8005\u767b\u8bb0\u4e2a\u4eba\u4fe1\u606f\uff0c\u6709\u610f\u53c2\u52a0\u7ebf\u4e0b\u6d3b\u52a8\u7684\uff0c\u8bf7\u4e8e 7 \u6708 13 \u65e5\u524d[\u586b\u5199\u767b\u8bb0\u95ee\u5377](https://forms.gle/vc8sd3yah7eMNmoP7)\u3002\\n\\n:::info \u8bf4\u660e\\n\u672c\u8868\u683c\u4ec5\u7531\u793e\u533a\u4ee3\u8868\uff08\u767d\u94ed\u9aa2\uff09\u548c GeekPie \u5bf9\u63a5\u4ee3\u8868\uff08\u79e6\u6590\u7136\uff09\u67e5\u9605\uff0c\u5e76\u4ea4\u7531\u6821\u65b9\u5f55\u5165\u3002\\n:::"},{"id":"these-weeks-in-loongarch-6","metadata":{"permalink":"/newsletter/these-weeks-in-loongarch-6","editUrl":"https://github.com/loongson-community/areweloongyet/newsletter/2023-06-27-these-weeks-in-loongarch-6.md","source":"@site/newsletter/2023-06-27-these-weeks-in-loongarch-6.md","title":"\u6bcf\u5468\u4e24\u9f99\uff1a\u7b2c 6 \u671f","description":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01","date":"2023-06-27T05:57:42.000Z","formattedDate":"2023\u5e746\u670827\u65e5","tags":[{"label":"\u6bcf\u5468\u4e00\u9f99","permalink":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99"}],"readingTime":4.95,"hasTruncateMarker":true,"authors":[{"name":"WANG Xuerui","title":"\ud83d\udc32\u9f99\u95e8\u5ba2\u6808\u6253\u6742\u7684","url":"https://github.com/xen0n","imageURL":"https://github.com/xen0n.png","key":"xen0n"}],"frontMatter":{"slug":"these-weeks-in-loongarch-6","title":"\u6bcf\u5468\u4e24\u9f99\uff1a\u7b2c 6 \u671f","authors":["xen0n"],"date":"2023-06-27T05:57:42.000Z","tags":["\u6bcf\u5468\u4e00\u9f99"]},"unlisted":false,"prevItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 7 \u671f","permalink":"/newsletter/this-week-in-loongarch-7"},"nextItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 5 \u671f","permalink":"/newsletter/this-week-in-loongarch-5"}},"content":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01\\n\\n\x3c!-- truncate --\x3e\\n\\n\u56e0\u4e3a\u7b14\u8005\u4e0a\u5468:sheep:\u4e86\uff0c\u672c\u671f\u6539\u4e3a\u5468\u4e8c\u66f4\u65b0\u524d\u4e24\u5468\u7684\u5185\u5bb9\uff0c\u9884\u8ba1\u4e0b\u671f\u6062\u590d\u5468\u4e00\u66f4\u65b0\u3002\\n\\n\u5982\u65e0\u7279\u522b\u8bf4\u660e\uff0c\u6587\u4e2d\u63d0\u53ca\u7684\u65e5\u671f\u3001\u65f6\u95f4\u90fd\u4e3a\u5317\u4eac\u65f6\u95f4\uff08UTC+8\uff09\u3002\\n\\n## \u5148\u300c\u9a6c\u300d\u518d\u770b\\n\\n\u672c\u680f\u76ee\u7684\u5185\u5bb9\u5177\u6709\u4e00\u5b9a\u5ef6\u7eed\u6027\uff0c\u5c06\u6301\u7eed\u8ffd\u8e2a\u62a5\u9053 LoongArch® \u9886\u57df\u7684\u91cd\u8981\u6216\u957f\u671f\u9879\u76ee\uff08\u5751\uff09\u3002\\n\\n### ClangBuiltLinux\\n\\n[\u4e0a\u6e38\u7684\u8ddf\u8e2a issue](https://github.com/ClangBuiltLinux/linux/issues/1787)\\n\u4e5f\u4f1a\u53ca\u65f6\u53cd\u6620\u6700\u65b0\u52a8\u6001\u3002\\n\u9274\u4e8e\u8be5\u5021\u8bae\u7684\u9f99\u67b6\u6784\u90e8\u5206\u4e3b\u4f53\u5de5\u4f5c\u5df2\u7ecf\u5b8c\u6210\uff0c\u540e\u7eed\u76f8\u5173\u5de5\u4f5c\u5c06\u5728 Linux \u4e00\u8282\u5408\u5e76\u62a5\u9053\u3002\\n\\n\u611f\u8c22 [@heiher](https://github.com/heiher) \u7684\u53c2\u4e0e\uff0c\u76ee\u524d\u6253\u8fc7\u8865\u4e01\u7684 LLVM/Clang\\n\u5df2\u7ecf\u53ef\u4ee5\u6784\u5efa\u57fa\u672c\u7684 LoongArch Linux \u955c\u50cf\u4e86\u3002\\n\u622a\u81f3\u53d1\u7a3f\u65f6[\u76f8\u5173\u5185\u6838\u8865\u4e01](https://lore.kernel.org/loongarch/20230625095644.3156349-1-kernel@xen0n.name/)\u5df2\u88ab\u63a5\u53d7\uff0c\\n\u5c06\u8fdb\u5165 v6.5-rc1\uff1b\\nLLVM \u7684\u53d8\u66f4\u60c5\u51b5\u89c1 LLVM \u4e00\u8282\u3002\\n\u4e0a\u6e38\u793e\u533a[\u706b\u901f\u8ddf\u8fdb\u4e86](https://github.com/ClangBuiltLinux/boot-utils/issues/108)\u76f8\u5173\u7684\u81ea\u52a8\u5316\u5f15\u5bfc\u6d4b\u8bd5\u652f\u6301\uff0c\\n\u53d1\u73b0\u7684\u5c0f\u5751\u5c06\u5728\u672c\u5468\u5feb\u901f\u586b\u5e73\uff0c\u540e\u7eed\u7684 LLVM/Clang \u517c\u5bb9\u6027\u5c06\u7531\u8be5\u8bbe\u65bd\u81ea\u52a8\u5316\u4fdd\u8bc1\u3002\\n\\n\u76ee\u524d\u8fd8\u7f3a\u6a21\u5757\u548c\u53ef\u91cd\u5b9a\u4f4d\uff08`CONFIG_RELOCATABLE`\uff09\u652f\u6301\uff0c\u8fd9\u90e8\u5206\u9884\u8ba1\u5728\u540e\u7eed\u7684\u5f00\u53d1\u5468\u671f\u4e5f\u4f1a\u6162\u6162\u89e3\u51b3\u6389\u3002\\n\\n### Linux\\n\\n\u76ee\u524d Linux v6.5 \u7684\u5408\u5e76\u7a97\u53e3\u5df2\u7ecf\u5f00\u542f\u3002\u672c\u5468\u671f\u7684\u9f99\u67b6\u6784\u76f8\u5173\u91cd\u5927\u53d8\u66f4\u6709\uff1a\\n\\n* [\u5411\u91cf\u6269\u5c55\u652f\u6301](https://lore.kernel.org/loongarch/20230613151918.2039498-1-chenhuacai@loongson.cn/)\u3002\\n \u9700\u8981\u7f16\u8bd1\u5668\u3001\u6c47\u7f16\u5668\u652f\u6301\u5411\u91cf\u6307\u4ee4\uff0c\u624d\u80fd\u6253\u5f00\u76f8\u5e94 Kconfig \u914d\u7f6e\u9879\u3002\\n \u8fc7\u4e00\u9635\u5b50\u5e94\u8be5\u90fd\u80fd\u7528\u4e0a\u4e86\u3002\\n* 3A6000/LA664 \u7684[\u7ec6\u7c92\u5ea6\u5185\u5b58\u6805\u969c\u652f\u6301](https://lore.kernel.org/loongarch/20230516124536.535343-1-chenhuacai@loongson.cn/)\u3002\\n* 3A6000/LA664 \u7684[\u540c\u65f6\u591a\u7ebf\u7a0b\uff08SMT\uff0c\u201c\u8d85\u7ebf\u7a0b\u201d\uff09\u652f\u6301](https://lore.kernel.org/loongarch/20230614093755.88881-1-wangliupu@loongson.cn/)\u3002\\n \u8865\u4e01\u900f\u9732\u8be5\u652f\u6301\u9700\u8981\u56fa\u4ef6\u914d\u5408\uff0c\u4ee5\u6700\u521d\u7528\u4e8e AArch64 \u7684 ACPI PPTT \u8868\u7ed3\u6784\u4f20\u9012\u5904\u7406\u5668\u6838\u7684\u62d3\u6251\u4fe1\u606f\u3002\\n* 3A6000/LA664 \u7684[\u786c\u4ef6\u9875\u8868\u904d\u5386\u5355\u5143\u652f\u6301](https://lore.kernel.org/loongarch/20230516124610.535360-1-chenhuacai@loongson.cn/)\u3002\\n* \u521d\u6b65\u7684 ClangBuiltLinux \u9002\u914d\u3002\\n\\n\u8be6\u60c5\u8bf7[\u79fb\u6b65\u9f99\u67b6\u6784\u7684\u4e0a\u6e38\u96c6\u6210\u5206\u652f](https://git.kernel.org/chenhuacai/linux-loongson/l/loongarch-next)\u3002\\n\\n6 \u6708 20 \u65e5\uff0cYouling Tang \u57fa\u4e8e :ta: [4 \u6708\u4efd\u7684 libelf \u5de5\u4f5c](https://sourceware.org/pipermail/elfutils-devel/2023q2/006107.html)\uff0c\\n\u5f00\u59cb\u5c06 [ORC unwinder](https://www.kernel.org/doc/html/latest/arch/x86/orc-unwinder.html)\\n\u79fb\u690d\u5230\u9f99\u67b6\u6784\uff1a[\u53d1\u51fa\u4e86](https://lore.kernel.org/loongarch/1687247209-31676-1-git-send-email-tangyouling@loongson.cn/)\u4e00\u7248\u521d\u7a3f\u8865\u4e01\u3002\\n\uff08\u611f\u8c22 [@xry111](https://github.com/xry111) \u7684\u65b0\u95fb\u7ebf\u7d22\u3002\uff09\\n\\n### \u5de5\u5177\u94fe\\n\\n#### binutils\\n\\n6 \u6708 25 \u65e5\uff0cmengqinggang \u5411 GNU binutils \u90ae\u4ef6\u5217\u8868[\u63d0\u4ea4\u4e86](https://sourceware.org/pipermail/binutils/2023-June/127990.html) LSX/LASX \u652f\u6301\uff0c\\n\u53c8[\u6dfb\u52a0\u4e86](https://sourceware.org/pipermail/binutils/2023-June/127993.html) `R_LARCH_64_PCREL` \u652f\u6301\u3002\\n\\n#### LLVM\\n\\n\u4e24\u5468\u95f4\u5408\u5e76\u4e86\u4ee5\u4e0b\u7684\u529f\u80fd\u6539\u8fdb\u7b49\uff1a\\n\\n* SixWeining [\u5141\u8bb8\u4e86](https://reviews.llvm.org/D150196)\u5728\u4efb\u4f55\u573a\u666f\u4e0b\u4f7f\u7528\u6d6e\u70b9\u3001\u5411\u91cf\u7b49\u6269\u5c55\u6307\u4ee4\uff0c\u4ee5\u4fbf\u88f8\u673a\u8f6f\u4ef6\u3001\u5185\u6838\u7b49\u5177\u5907\u8db3\u591f\u63a7\u5236\u529b\u7684\u7a0b\u5e8f\u5728\u672c\u8eab\u4e0d\u4f7f\u7528\u8fd9\u4e9b\u6307\u4ee4\u7684\u524d\u63d0\u4e0b\uff0c\u4ecd\u7136\u80fd\u591f\u81ea\u884c\u7ba1\u7406\u76f8\u5e94\u786c\u4ef6\u8d44\u6e90\u3002\\n :::info \u8fd9\u662f\u4e3a\u5565\\n \u9f99\u67b6\u6784\u4e0b\uff0c\u7ba1\u7406\u6269\u5c55\u8d44\u6e90\u9700\u8981\u7528\u5230\u6269\u5c55\u6307\u4ee4\uff0c\u4f46\u5148\u524d\u5982\u679c\u544a\u77e5 LLVM \u4e0d\u4f7f\u7528\u8fd9\u4e9b\u6307\u4ee4\uff0c\u90a3\u4e48\u53ea\u8981\u5c1d\u8bd5\u4f7f\u7528\u90fd\u4f1a\u62a5\u9519\u3002\\n \u5373\u4fbf\u7a0b\u5e8f\u5458\u77e5\u9053\u81ea\u5df1\u5728\u505a\u4ec0\u4e48\u3001\u54ea\u4e9b\u5730\u65b9\u7684\u624b\u5199\u6c47\u7f16\u7528\u5230\u6269\u5c55\u6307\u4ee4\u4e5f\u662f\u5b89\u5168\u7684\uff0c\u4e5f\u6ca1\u6cd5\u641e\u3002\\n :::\\n* xen0n \u4e3a `llvm-objcopy` [\u6dfb\u52a0\u4e86](https://reviews.llvm.org/D153609)\u9f99\u67b6\u6784\u652f\u6301\u3002\\n* xen0n \u4f7f Clang \u5904\u7406 `-m*-float` \u53c2\u6570\u65f6[\u4e5f\u4e0d\u5fd8\u68c0\u67e5](https://reviews.llvm.org/D153707) `-mabi`\u3001`-mfpu` \u9009\u9879\u3002\\n\\n\u51fa\u73b0\u4e86\u4ee5\u4e0b\u7684\u65b0\u52a8\u5411\uff1a\\n\\n* Ami-zhang \u63a5\u8fd1\u5b8c\u6210\u4e86 MSan \u7684\u9f99\u67b6\u6784\u79fb\u690d\uff1a[D140528](https://reviews.llvm.org/D140528)\u3001[D152692](https://reviews.llvm.org/D152692)\uff0c\u4e0d\u65e5\u5c06\u5408\u5e76\u3002\\n\\n## \u793e\u533a\u6574\u6d3b:\u513f:\\n\\n\u672c\u680f\u76ee\u63a5\u53d7\u4efb\u4f55\u7f51\u53cb\u7684\u6295\u7a3f\uff0c\u53ea\u8981\u5185\u5bb9\u4e0e LoongArch® \u6709\u5173\uff0c\u5e76\u53ef\u4ee5\u4e3a\u8bfb\u8005\u5e26\u6765\u4ef7\u503c\uff0c\\n\u65e0\u8bba\u4e25\u8083\u8d21\u732e\uff08\u6574\u7684\u5927\u6d3b:\u513f:\uff09\u6216\u662f\u535a\u541b\u4e00\u7b11\u90fd\u4e00\u6982\u6b22\u8fce\uff01\\n\\n[loongarch-opcodes \u9879\u76ee](https://github.com/loongson-community/loongarch-opcodes)\u6574\u7406\u5b8c\u6210\u4e86\u6240\u6709\\nLSX\u3001LASX \u6307\u4ee4\u7f16\u7801\u4fe1\u606f\u3002\u6709\u9700\u8981\u7684\u540c\u5b66\u53ef\u4ee5\u53c2\u8003\u8d77\u6765\u4e86\u3002\\n\u5728\u9f99\u82af\u516c\u5e03\u300a\u9f99\u82af\u67b6\u6784\u53c2\u8003\u624b\u518c\u300b\u5377\u4e8c\u4e4b\u524d\uff0c\u793e\u533a\u540c\u5b66\u4e5f\u53ef\u4ee5\u6839\u636e QEMU \u6e90\u7801\uff0c\u63a8\u8fdb\u6307\u4ee4\u6587\u6863\u7684\u7f16\u64b0\u4e86\u3002\\n\\n\u8fd1\u65e5 Gentoo \u793e\u533a\u4e00\u4f4d\u56fd\u9645\u53cb\u4eba\u62ff\u5230\u4e86 7A2000 \u677f\u5b50\uff0c\u9f99\u67b6\u6784\u7684\u670b\u53cb\u9010\u6e10\u589e\u591a :sunglasses:\\n\\n## \u5f20\u8d34\u680f\\n\\n\u672c\u680f\u76ee\u76ee\u524d\u53ef\u4f9b\u5f20\u8d34\u516c\u76ca\u6027\u8d28\u7684\u5404\u79cd\u4fe1\u606f\u3002\\n\\n* \u672c\u5468\u62a5[\u6301\u7eed\u63a5\u53d7\u7f51\u53cb\u6295\u7a3f][call-for-submissions]\u3002\u6b22\u8fce\u6765\u4e0a\u6e38\u5750\u5750\uff01\\n\\n[lauosc-debian]: https://bbs.loongarch.org/d/167-lauosc-debian-12-ports\\n[call-for-submissions]: https://github.com/loongson-community/areweloongyet/issues/16"},{"id":"this-week-in-loongarch-5","metadata":{"permalink":"/newsletter/this-week-in-loongarch-5","editUrl":"https://github.com/loongson-community/areweloongyet/newsletter/2023-06-12-this-week-in-loongarch-5.md","source":"@site/newsletter/2023-06-12-this-week-in-loongarch-5.md","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 5 \u671f","description":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01","date":"2023-06-12T06:42:22.000Z","formattedDate":"2023\u5e746\u670812\u65e5","tags":[{"label":"\u6bcf\u5468\u4e00\u9f99","permalink":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99"}],"readingTime":6.82,"hasTruncateMarker":true,"authors":[{"name":"WANG Xuerui","title":"\ud83d\udc32\u9f99\u95e8\u5ba2\u6808\u6253\u6742\u7684","url":"https://github.com/xen0n","imageURL":"https://github.com/xen0n.png","key":"xen0n"}],"frontMatter":{"slug":"this-week-in-loongarch-5","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 5 \u671f","authors":["xen0n"],"date":"2023-06-12T06:42:22.000Z","tags":["\u6bcf\u5468\u4e00\u9f99"]},"unlisted":false,"prevItem":{"title":"\u6bcf\u5468\u4e24\u9f99\uff1a\u7b2c 6 \u671f","permalink":"/newsletter/these-weeks-in-loongarch-6"},"nextItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 4 \u671f","permalink":"/newsletter/this-week-in-loongarch-4"}},"content":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01\\n\\n\x3c!-- truncate --\x3e\\n\\n\u5982\u65e0\u7279\u522b\u8bf4\u660e\uff0c\u6587\u4e2d\u63d0\u53ca\u7684\u65e5\u671f\u3001\u65f6\u95f4\u90fd\u4e3a\u5317\u4eac\u65f6\u95f4\uff08UTC+8\uff09\u3002\\n\\n## \u8981\u95fb\u901f\u9012\\n\\n6 \u6708 5 \u65e5\uff0cGitHub loongson \u7ec4\u7ec7\u4e0b\u51fa\u73b0\u4e86\u65b0\u7684\u53ef\u534f\u4f5c\u7684\u6587\u6863\u5e93\uff1a[la-abi-specs](https://github.com/loongson/la-abi-specs)\u3002\\n\u8fd9\u53ef\u88ab\u89c6\u4e3a\u9f99\u82af\u516c\u53f8\u5728 [LoongArch-Documentation \u5e93](https://github.com/loongson/LoongArch-Documentation)\u88ab\u5f52\u6863\u4e4b\u540e\u7ed9\u51fa\u7684\u89e3\u51b3\u65b9\u6848\u3002\\n\\n\u6ce8\u610f\uff1a\u6b64\u6587\u6863\u5e93\u7684\u8bb8\u53ef\u8bc1\u4ecd\u7136\u4e3a CC-BY-NC-ND 4.0\uff0c\u5e76\u4e14\u6dfb\u52a0\u4e86\u5fc5\u987b\u7b7e\u7f72\u8d21\u732e\u8005\u8bb8\u53ef\u534f\u8bae\uff08CLA\uff09\u624d\u80fd\u53c2\u4e0e\u8d21\u732e\u7684\u63d0\u793a\u3002\\n\u76ee\u524d CLA \u76f8\u5173\u4e8b\u5b9c\u4ecd\u7136\u53ea\u80fd\u901a\u8fc7\u8be2\u95ee\u76f8\u5173\u4eba\u5458\u4e86\u89e3\uff1b\u7b14\u8005\u4e86\u89e3\u5230\u7684\u60c5\u51b5\u662f\uff1a\\n\\n* CLA \u5df2\u7ecf\u5b9a\u7a3f\uff0c\u4e0d\u65e5\u5c06\u4e8e\u9f99\u82af\u5b98\u7f51\u6216\u5176\u4ed6\u6e20\u9053\u516c\u5f00\u3002\\n* \u540e\u7eed\u4f1a\u63d0\u4f9b\u7f51\u9875\u7b49\u81ea\u52a8\u5316\u7684\u7b7e\u7f72\u3001\u6821\u9a8c\u65b9\u5f0f\u3002\\n* \u8be5 CLA \u4e0e Google CLA \u7c7b\u4f3c\uff0c\u4f46\u6dfb\u52a0\u4e86\u66f4\u591a\u9650\u5236\u6027\u6761\u6b3e\uff0c\u8bf7\u8d21\u732e\u8005\u4eec\u6ce8\u610f\u3002\\n\\n:::warning\\n\u7b14\u8005\u4e0d\u662f\u5f8b\u5e08\uff0c\u4ee5\u4e0b\u7684\u5206\u6790\u4e0d\u662f\u6cd5\u5f8b\u5efa\u8bae\u3002\u8bf7\u5f85\u9f99\u82af CLA \u6587\u672c\u6b63\u5f0f\u516c\u5e03\u4e4b\u540e\u81ea\u884c\u9605\u8bfb\u3001\u5224\u65ad\u3002\\n:::\\n\\n\u4e0e Google CLA \u76f8\u6bd4\uff0c\u5177\u4f53\u7684\u4e0d\u540c\u4e4b\u5904\u5305\u62ec\u4f46\u4e0d\u9650\u4e8e\uff1a\\n\\n* \u65b0\u589e\u4e86**\u5176\u4ed6\u77e5\u8bc6\u4ea7\u6743\u6743\u5229\u6388\u4e88\u6761\u6b3e**\u3002\\n\\n \u5728 Google CLA \u7b2c 3 \u6761\u4e0e\u7b2c 4 \u6761\u4e4b\u95f4\uff0c\u6dfb\u52a0\u4e86\u5173\u4e8e\u300c\u5176\u4ed6\u77e5\u8bc6\u4ea7\u6743\u6743\u5229\u300d\u5982\u5546\u6807\u6743\u3001\u6280\u672f\u79d8\u5bc6\u3001\u4e13\u6709\u6280\u672f\u7b49\u7684\u6743\u5229\u8bb8\u53ef\u6388\u4e88\u6761\u6b3e\u3002\\n\\n* \u65b0\u589e\u4e86**\u6eaf\u53ca\u65e2\u5f80\u6761\u6b3e**\u3002\\n\\n \u53ea\u8981\u7b7e\u7f72\u8be5 CLA\uff0c\u6743\u5229\u8bb8\u53ef\u5c06\u81ea\u300c\u60a8\u300d\u9996\u6b21\u5411\u9f99\u82af\u4e2d\u79d1\u63d0\u4ea4\u8d21\u732e\u4e4b\u65e5\u8d77\u751f\u6548\uff0c\u5e76\u975e\u4ece\u7b7e\u7f72\u65f6\u523b\u8d77\u3002\\n\\n :::info\\n FSF copyright assignment \u7b49\u6709\u7c7b\u4f3c\u5b89\u6392\u7684\u534f\u8bae\u4e00\u822c\u4e5f\u4f1a\u63d0\u4f9b\u4e0d\u6eaf\u53ca\u65e2\u5f80\u7684\u534f\u8bae\u6587\u672c\u7248\u672c\u3002\\n :::\\n\\n* \u65b0\u589e\u4e86**\u7ea6\u5b9a\u7ba1\u8f96\u6761\u6b3e**\u3002\\n\\n \u7ea6\u5b9a\u4f7f\u7528\u4e2d\u534e\u4eba\u6c11\u5171\u548c\u56fd\u6cd5\u5f8b\u3002\\n \u4f46\u8fdb\u4e00\u6b65\u7ea6\u5b9a\u4e86\u300c\u4efb\u4f55\u7531\u672c\u534f\u8bae\u4ea7\u751f\u7684\u6cd5\u5f8b\u8bc9\u8bbc\u6216\u7a0b\u5e8f\u5747\u5e94\u6392\u4ed6\u6027\u5730\u63d0\u4ea4\u81f3\u9f99\u82af\u4e2d\u79d1\u6240\u5728\u5730\u7684\u6cd5\u9662\u8fdb\u884c\u5ba1\u7406\u300d\u3002\\n\\n :::info\\n \u5982\u4e0d\u7ea6\u5b9a\u7ba1\u8f96\uff0c\u4e00\u573a\u6c11\u4e8b\u7ea0\u7eb7\u9ed8\u8ba4\u5e94\u7531\u88ab\u544a\u6240\u5728\u5730\u6cd5\u9662\u7ba1\u8f96\u3002\\n \u8fd9\u662f\u4e3a\u4e86\u63d0\u9ad8\u539f\u544a\u8bc9\u8bbc\u6210\u672c\uff0c\u4ee5\u4f7f\u5176\u4e0d\u6ee5\u7528\u8bc9\u6743\uff08\u5426\u5219\uff0c\u4e00\u4e2a\u672a\u4f5c\u51c6\u5907\u7684\u88ab\u544a\u8981\u4e48\u5c06\u4e0d\u5f97\u4e0d\u5954\u6ce2\u81f3\u539f\u544a\u6240\u5728\u5730\u5e94\u8bc9\uff0c\u8981\u4e48\u627f\u62c5\u4e0d\u5e94\u8bc9\u7684\u4e0d\u5229\u540e\u679c\uff1b\u7b49\u4e8e\u5b58\u5728\u8d77\u8bc9\u8005\u300c\u6298\u817e\u300d\u4ed6\u8005\u7684\u53ef\u80fd\u6027\uff09\u3002\\n \u6309\u7167\u5f53\u524d\u63aa\u8f9e\uff0c\u6b64\u4e0a\u5c42\u8bbe\u8ba1\u5931\u6548\u3002\\n :::\\n\\n* \u65b0\u589e\u4e86**\u591a\u8bed\u8a00\u7248\u672c\u6761\u6b3e**\u3002\\n\\n \u8be5 CLA \u63d0\u4f9b\u4e86\u4e2d\u82f1\u6587\u4e24\u79cd\u7248\u672c\uff0c\u5e76\u7ea6\u5b9a\u4e86\u5982\u6709\u610f\u601d\u51b2\u7a81\uff0c\u5219\u4ee5\u4e2d\u6587\u7248\u4e3a\u51c6\u3002\\n\\n* \u4e0e Google CLA \u7b2c 4 \u6761\u76f8\u6bd4\uff0c\u5173\u4e8e\u5f53\u300c\u60a8\u300d\u662f\u6cd5\u4eba\u65f6\u7684\u627f\u8bfa\u63aa\u8f9e\u6709\u8c03\u6574\u3002\\n\\n## \u5148\u300c\u9a6c\u300d\u518d\u770b\\n\\n\u672c\u680f\u76ee\u7684\u5185\u5bb9\u5177\u6709\u4e00\u5b9a\u5ef6\u7eed\u6027\uff0c\u5c06\u6301\u7eed\u8ffd\u8e2a\u62a5\u9053 LoongArch® \u9886\u57df\u7684\u91cd\u8981\u6216\u957f\u671f\u9879\u76ee\uff08\u5751\uff09\u3002\\n\\n### ClangBuiltLinux\\n\\n[\u4e0a\u6e38\u7684\u8ddf\u8e2a issue](https://github.com/ClangBuiltLinux/linux/issues/1787)\\n\u4e5f\u4f1a\u53ca\u65f6\u53cd\u6620\u6700\u65b0\u52a8\u6001\u3002\\n\\nheiher \u52a0\u5165\u4e86\u6298\u817e\u7684\u884c\u5217\uff0c\u76ee\u524d\u5df2\u7ecf\u5728\u4e00\u5b9a\u7684\u914d\u7f6e\u4e0b\u7cca\u51fa\u4e86\u4e00\u7248\u80fd\u591f\u5de5\u4f5c\u7684\u5185\u6838\u3002\\n\u4f17\u4eba\u62fe\u67f4\u706b\u7130\u9ad8\uff01\u4ed6\u5728\u6298\u817e\u8fc7\u7a0b\u4e2d\u53d1\u73b0\uff1a\\n\\n* LLVM \u4e0d\u5e94\u8be5\u628a\u90a3\u4e9b\u6ca1\u6709\u6570\u636e\u4f9d\u8d56\u7684 CSR\u3001IOCSR \u64cd\u4f5c\u4f18\u5316\u6389\u3002\\n\\n### Linux\\n\\n6 \u6708 7 \u65e5\uff0c\u4e0a\u6e38\u58f0\u97f3\u5b50\u7cfb\u7edf\u7ef4\u62a4\u8005 Takashi Iwai [\u5408\u5e76\u4e86](https://lore.kernel.org/loongarch/87mt1b1rif.wl-tiwai@suse.de/) Yanteng Si \u524d\u4e00\u9635\u8d34\u51fa\u7684 LS7A \u96c6\u6210\u58f0\u5361\u652f\u6301\u8865\u4e01\u3002\\n\\n6 \u6708 5 \u65e5\uff0cYingkun Meng [\u8d34\u51fa\u4e86](https://lore.kernel.org/loongarch/20230605120934.2306548-1-mengyingkun@loongson.cn/)\u9f99\u82af 2K \u7cfb\u5217\u3001LS7A \u7684 I2S \u63a7\u5236\u5668\u652f\u6301\u3002\u8fd9\u4e5f\u662f\u4e00\u79cd\u300c\u96c6\u6210\u58f0\u5361\u300d\u786c\u4ef6\u3002\\n\\n### \u5de5\u5177\u94fe\\n\\n#### GCC\\n\\nchenglulu \u5728\u4f18\u5316 perlbench \u8dd1\u5206\u8fc7\u7a0b\u4e2d\uff0c\u53d1\u73b0\u4e86 [PR 110136](https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110136)\\n\u8fd9\u6837\u4e00\u4e2a\u4e25\u91cd\u5f71\u54cd\u6027\u80fd\u7684\u60c5\u51b5\uff0c\\n\u9042[\u63d0\u4ea4\u4e86](https://gcc.gnu.org/pipermail/gcc-patches/2023-June/621006.html)\u76f8\u5e94\u7684\u4fee\u590d\u8865\u4e01\u3002\\n\\n:::info\\n\u6240\u6709 `jr $ra` \u90fd\u88ab\u89c6\u4e3a\u8fc7\u7a0b\u8c03\u7528\u8fd4\u56de\u3002\\n\u56e0\u6b64\u5982\u679c\u4e00\u822c\u7684\u95f4\u63a5\u8df3\u8f6c\u4e0d\u5e78\u4f7f\u7528\u4e86`$ra` \u5b58\u653e\u76ee\u6807\u5730\u5740\uff0c\\n\u90a3\u4e48\u8fc7\u7a0b\u8c03\u7528\u8fd4\u56de\u548c\u95f4\u63a5\u8df3\u8f6c\u7684\u5206\u652f\u9884\u6d4b\u90fd\u4f1a\u88ab\u7834\u574f\u3002\\n:::\\n\\n#### LLVM\\n\\n\u4e00\u5468\u95f4\u5408\u5e76\u4e86\u4ee5\u4e0b\u7684\u529f\u80fd\u6539\u8fdb\u7b49\uff1a\\n\\n* [\u9ed8\u8ba4\u53ef\u751f\u6210\u975e\u5bf9\u9f50\u8bbf\u5b58](https://reviews.llvm.org/D149946)\u3002\u8fd9\u662f\u7531\u4e8e 2K1000LA \u7b49\u4e0d\u652f\u6301\u786c\u4ef6\u975e\u5bf9\u9f50\u8bbf\u5b58\u7684\u578b\u53f7\u51e0\u4e4e\u4e0d\u89c1\u4e8e\u901a\u7528\u573a\u666f\uff0c\u4e14\u540e\u7eed\u4f1a\u8d8a\u6765\u8d8a\u5c11\uff082K2000\u30012K3000 \u8fd9\u79cd\u9884\u671f\u4f1a\u5927\u6279\u91cf\u51fa\u8d27\u7684 LA364 \u578b\u53f7\u5df2\u88ab\u8bc1\u5b9e\u652f\u6301\uff09\u3002\u6709\u9700\u8981\u9002\u914d LA264\u3001LA132 \u7b49\u578b\u53f7\u7684\u5f00\u53d1\u8005\uff0c\u9700\u81ea\u884c\u8c03\u6574\u7f16\u8bd1\u53c2\u6570\u4ee5\u7981\u7528\u6b64\u884c\u4e3a\u3002\\n* [\u6dfb\u52a0 LAELF v20230519 \u7684\u65b0\u91cd\u5b9a\u4f4d\u7c7b\u578b\u5b9a\u4e49](https://reviews.llvm.org/D152184)\u3002\\n\\n\u51fa\u73b0\u4e86\u4ee5\u4e0b\u7684\u65b0\u52a8\u5411\uff1a\\n\\n* [LLD LoongArch port](https://reviews.llvm.org/D138135) \u7684\u4ee3\u7801\u5ba1\u67e5\u6709\u4e86\u8fdb\u5c55\uff0c\u6b63\u5728\u6539\u4ee3\u7801\u3002\\n* xen0n \u4e3a `RelocationResolver` [\u9002\u914d](https://reviews.llvm.org/D152344) LAELF v20230519 \u7684\u65b0\u91cd\u5b9a\u4f4d\u7c7b\u578b\u3002\\n\\n#### Rust\\n\\n\u81ea[\u6dfb\u52a0\u88f8\u673a LoongArch \u652f\u6301](https://github.com/rust-lang/compiler-team/issues/628)\u7684\u91cd\u5927\u53d8\u66f4\u63d0\u6848Major Change Proposal\u4e8e 6 \u6708 6 \u65e5\u6700\u7ec8\u901a\u8fc7\u540e\uff0c\\nheiher \u65cb\u5373[\u63a8\u8fdb\u4e86](https://github.com/rust-lang/rust/pull/112310)\u5b9e\u73b0\u3002\\n\\n\u4ee5\u4e0b `no_std` targets \u81ea 6 \u6708 8 \u65e5\u7684 nightly \u8d77\uff0c\u5df2\u7ecf\u53ef\u4ee5\u4f7f\u7528\uff0c\u5c06\u51fa\u73b0\u4e8e 1.72.0 \u7248\u672c\uff1a\\n\\n* `loongarch64-unknown-none`\uff0cLA64 LP64D\uff08\u53cc\u7cbe\u5ea6\u786c\u6d6e\u70b9\uff09\u88f8\u673a\\n* `loongarch64-unknown-none-softfloat`\uff0cLA64 LP64S\uff08\u8f6f\u6d6e\u70b9\uff09\u88f8\u673a\\n\\n## \u793e\u533a\u6574\u6d3b:\u513f:\\n\\n\u672c\u680f\u76ee\u63a5\u53d7\u4efb\u4f55\u7f51\u53cb\u7684\u6295\u7a3f\uff0c\u53ea\u8981\u5185\u5bb9\u4e0e LoongArch® \u6709\u5173\uff0c\u5e76\u53ef\u4ee5\u4e3a\u8bfb\u8005\u5e26\u6765\u4ef7\u503c\uff0c\\n\u65e0\u8bba\u4e25\u8083\u8d21\u732e\uff08\u6574\u7684\u5927\u6d3b:\u513f:\uff09\u6216\u662f\u535a\u541b\u4e00\u7b11\u90fd\u4e00\u6982\u6b22\u8fce\uff01\\n\\nYANG Xudong [\u4f18\u5316\u4e86](https://www.postgresql.org/message-id/flat/b522a0c5-e3b2-99cc-6387-58134fb88cbe%40ymatrix.cn)\\nPostgreSQL \u5728 LoongArch \u4e0a\u7684 CRC \u8ba1\u7b97\uff0c\\n\u5e76\u5c06\u8865\u4e01[\u63d0\u4ea4\u5230\u4e86](https://commitfest.postgresql.org/43/4353/)\\nPostgreSQL Commitfest 2023-07\u3002\\n\u76ee\u524d\u5411\u793e\u533a\u548c\u5468\u520a\u8bfb\u8005\u4eec\u5bfb\u6c42 review\u3002\\n\\n## \u5f20\u8d34\u680f\\n\\n\u672c\u680f\u76ee\u76ee\u524d\u53ef\u4f9b\u5f20\u8d34\u516c\u76ca\u6027\u8d28\u7684\u5404\u79cd\u4fe1\u606f\u3002\\n\\n* \u672c\u5468\u62a5[\u6301\u7eed\u63a5\u53d7\u7f51\u53cb\u6295\u7a3f][call-for-submissions]\u3002\u6b22\u8fce\u6765\u4e0a\u6e38\u5750\u5750\uff01\\n\\n[lauosc-debian]: https://bbs.loongarch.org/d/167-lauosc-debian-12-ports\\n[call-for-submissions]: https://github.com/loongson-community/areweloongyet/issues/16"},{"id":"this-week-in-loongarch-4","metadata":{"permalink":"/newsletter/this-week-in-loongarch-4","editUrl":"https://github.com/loongson-community/areweloongyet/newsletter/2023-06-05-this-week-in-loongarch-4.md","source":"@site/newsletter/2023-06-05-this-week-in-loongarch-4.md","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 4 \u671f","description":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01","date":"2023-06-05T06:10:50.000Z","formattedDate":"2023\u5e746\u67085\u65e5","tags":[{"label":"\u6bcf\u5468\u4e00\u9f99","permalink":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99"}],"readingTime":3.48,"hasTruncateMarker":true,"authors":[{"name":"WANG Xuerui","title":"\ud83d\udc32\u9f99\u95e8\u5ba2\u6808\u6253\u6742\u7684","url":"https://github.com/xen0n","imageURL":"https://github.com/xen0n.png","key":"xen0n"}],"frontMatter":{"slug":"this-week-in-loongarch-4","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 4 \u671f","authors":["xen0n"],"date":"2023-06-05T06:10:50.000Z","tags":["\u6bcf\u5468\u4e00\u9f99"]},"unlisted":false,"prevItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 5 \u671f","permalink":"/newsletter/this-week-in-loongarch-5"},"nextItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 3 \u671f","permalink":"/newsletter/this-week-in-loongarch-3"}},"content":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01\\n\\n\x3c!-- truncate --\x3e\\n\\n\u5982\u65e0\u7279\u522b\u8bf4\u660e\uff0c\u6587\u4e2d\u63d0\u53ca\u7684\u65e5\u671f\u3001\u65f6\u95f4\u90fd\u4e3a\u5317\u4eac\u65f6\u95f4\uff08UTC+8\uff09\u3002\\n\\n## \u8981\u95fb\u901f\u9012\\n\\n\u9f99\u82af\u7684 binutils \u7ef4\u62a4\u8005 mengqinggang \u5c06\u5148\u524d\u62a5\u9053\u8fc7\u7684 LoongArch linker relaxation\\n\u4f18\u5316[\u63a8\u5165\u4e86\u4e0a\u6e38](https://sourceware.org/git/?p=binutils-gdb.git;a=commitdiff;h=57a930e3bfe4b2c7fd6463ed39311e1938513138)\u3002\\n\u4f46\u7531\u4e8e [LoongArch-Documentation \u5e93](https://github.com/loongson/LoongArch-Documentation)\u7684\u7279\u6b8a\u60c5\u51b5\u4ecd\u672a\u89e3\u9664\uff0c\\n\u4e0e\u6b64\u6539\u52a8\u914d\u5957\u7684 ELF psABI \u89c4\u8303\u6587\u6863\u66f4\u65b0\u4e5f\u4ecd\u7136\u6ca1\u6709\u53d1\u751f\u3002\\n\u5bf9\u4e8e\u8fd9\u4e9b\u65b0 relocs \u7684\u7528\u6cd5\uff0c\u76ee\u524d\u53ea\u80fd\u4ee5\u4ee3\u7801\u7684\u5177\u4f53\u884c\u4e3a\u4e3a\u51c6\u3002\\n\\nbinutils \u7684\u5176\u4ed6\u4e0a\u6e38\u7ef4\u62a4\u8005\u968f\u540e\u5e2e\u5fd9\u4fee\u590d\u4e86 LoongArch \u4ee3\u7801\u7684\u4e00\u4e9b[\u98ce\u683c\u95ee\u9898](https://sourceware.org/git/?p=binutils-gdb.git;a=commitdiff;h=a15891aaea006d06066573449efbda353dd2863e)\u4e0e\\n\u901a\u8fc7fuzzing \u53d1\u73b0\u7684[\u7f13\u51b2\u533a\u6ea2\u51fa\u95ee\u9898](https://sourceware.org/git/?p=binutils-gdb.git;a=commitdiff;h=74a965d8e09217f3d8f8295c9126b77cdd62b798)\u3001[\u6bb5\u9519\u8bef\u95ee\u9898](https://sourceware.org/git/?p=binutils-gdb.git;a=commitdiff;h=89c70cd358b8fa46b84cd100efc95495ff0160ae)\u3002\\n\\n\u5efa\u8bae\u5173\u5fc3\u9f99\u67b6\u6784\u57fa\u7840\u8bbe\u65bd\u5efa\u8bbe\u3001\u8d28\u91cf\u7684\u540c\u5b66\u4e5f\u53ef\u4ee5\u5173\u6ce8 binutils \u7b49\u4e0a\u6e38\u7684\u6c9f\u901a\u6e20\u9053\uff0c\u4e00\u8d77\u53c2\u4e0e\u9f99\u67b6\u6784\u76f8\u5173\u4ee3\u7801\u3001\u529f\u80fd\u3001\u8d28\u91cf\u7684\u5b8c\u5584\u3002\\n\\n## \u5148\u300c\u9a6c\u300d\u518d\u770b\\n\\n\u672c\u680f\u76ee\u7684\u5185\u5bb9\u5177\u6709\u4e00\u5b9a\u5ef6\u7eed\u6027\uff0c\u5c06\u6301\u7eed\u8ffd\u8e2a\u62a5\u9053 LoongArch® \u9886\u57df\u7684\u91cd\u8981\u6216\u957f\u671f\u9879\u76ee\uff08\u5751\uff09\u3002\\n\\n### \u53d1\u884c\u7248\u4eec\\n\\n* Gentoo \u4e0a\u6e38\u5df2\u5c06 [`kdeutils-meta`][kdeutils]\u3001[`kdegames-meta`][kdegames] \u4e24\u4e2a meta-packages keyworded\uff0c\u6709\u9700\u8981\u7684\u540c\u5b66\u53ef\u76f4\u63a5 `emerge` \u4e86\u3002\\n* Gentoo \u6b63\u5728\u4e3a Rust 1.71.0 \u7684\u9f99\u67b6\u6784\u652f\u6301[\u505a\u597d\u51c6\u5907](https://github.com/gentoo/gentoo/pull/31241)\u3002\u987a\u5e26\u4e5f\u5c06\u4fee\u590d\u8001\u9f99\u82af\u7cfb\u7edf\u7684 Rust \u652f\u6301\u3002\\n\\n[kdeutils]: https://packages.gentoo.org/packages/kde-apps/kdeutils-meta\\n[kdegames]: https://packages.gentoo.org/packages/kde-apps/kdegames-meta\\n\\n### ClangBuiltLinux\\n\\n[\u4e0a\u6e38\u7684\u8ddf\u8e2a issue](https://github.com/ClangBuiltLinux/linux/issues/1787)\\n\u4e5f\u4f1a\u53ca\u65f6\u53cd\u6620\u6700\u65b0\u52a8\u6001\u3002\\n\\n\u672c\u5468\u6ca1\u6709\u8fd9\u65b9\u9762\u7684\u65b0\u52a8\u5411\u3002\\n\\n### Linux\\n\\n6 \u6708 1 \u65e5\uff0c\u77e5\u540d\u79d1\u6280\u5a92\u4f53 Phoronix [\u62a5\u9053\u4e86](https://www.phoronix.com/news/Loongson-Etnaviv-PCI-Driver)\\nSui Jingfeng \u4e3a\u9f99\u82af 2K1000 \u548c LS7A1000 \u5185\u7f6e\u7684 Vivante GC1000 GPU IP\\n\u505a\u7684[\u5185\u6838\u9002\u914d](https://lore.kernel.org/lkml/20230530160126.2344425-1-suijingfeng@loongson.cn/)\u548c\\n[Mesa \u9002\u914d](https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14606)\u3002\\n\\n5 \u6708 31 \u65e5\uff0cBinbin Zhou [\u8d34\u51fa\u4e86](https://lore.kernel.org/loongarch/cover.1685448898.git.zhoubinbin@loongson.cn/)\u9f99\u82af 2 \u53f7\u7cfb\u5217\u7684 APB DMA \u5f15\u64ce\u652f\u6301\u3002\\n\\n5 \u6708 31 \u65e5\uff0cYanteng Si [\u8d34\u51fa\u4e86](https://lore.kernel.org/loongarch/cover.1685501806.git.siyanteng@loongson.cn/) LS7A \u6865\u7247\u7684\u9ad8\u89e3\u6790\u5ea6\u97f3\u9891\uff08HD Audio\uff09\u652f\u6301\u3002\\n\\n### LLVM\\n\\n\u4e0a\u5468\u5408\u5e76\u4e86\u4ee5\u4e0b\u7684\u529f\u80fd\u6539\u8fdb\u7b49\uff1a\\n\\n* Ami-zhang [\u4fee\u590d\u4e86][D151794] LLVM \u9759\u6001\u5206\u6790\u7ec4\u4ef6\u5bf9 LoongArch \u7684 `i32` \u7c7b\u578b\u53c2\u6570\u3001\u8fd4\u56de\u503c\u7684\u5904\u7406\u3002\\n\\n\u51fa\u73b0\u4e86\u4ee5\u4e0b\u7684\u65b0\u52a8\u5411\uff1a\\n\\n* xen0n \u6839\u636e\u5148\u524d\u7684 Linux \u5185\u6838\u8865\u4e01\uff0c\u4e3a LLVM [\u6dfb\u52a0\u4e86][D151655] 3A6000/LA664 \u7684\u7ec6\u7c92\u5ea6\u5185\u5b58\u6805\u969c\u652f\u6301\u3002\\n\\n[D151655]: https://reviews.llvm.org/D151655\\n[D151794]: https://reviews.llvm.org/D151794\\n\\n## \u793e\u533a\u6574\u6d3b:\u513f:\\n\\n\u672c\u680f\u76ee\u63a5\u53d7\u4efb\u4f55\u7f51\u53cb\u7684\u6295\u7a3f\uff0c\u53ea\u8981\u5185\u5bb9\u4e0e LoongArch® \u6709\u5173\uff0c\u5e76\u53ef\u4ee5\u4e3a\u8bfb\u8005\u5e26\u6765\u4ef7\u503c\uff0c\\n\u65e0\u8bba\u4e25\u8083\u8d21\u732e\uff08\u6574\u7684\u5927\u6d3b:\u513f:\uff09\u6216\u662f\u535a\u541b\u4e00\u7b11\u90fd\u4e00\u6982\u6b22\u8fce\uff01\\n\\n[KatyushaScarlet](https://github.com/KatyushaScarlet)\\n[\u5411\u5927\u5bb6\u4ecb\u7ecd](https://katyusha.net/536.html) :ta: \u57fa\u4e8e DOSBox-X \u6574\u5408\u7684\u6e38\u620f\u6a21\u62df\u5668\u3002\\n\u4e0d\u8fc7\u4f3c\u4e4e\u5728 QEMU \u6a21\u62df\u6761\u4ef6\u4e0b\u53ef\u80fd\u65e0\u6cd5\u542f\u52a8\u3002\\n\u611f\u5174\u8da3\u7684\u540c\u5b66\u53ef\u4ee5\u52a0\u5165 :ta: \u7684\u884c\u5217\u4e00\u8d77\u6298\u817e\uff01\\n\\n## \u5f20\u8d34\u680f\\n\\n\u672c\u680f\u76ee\u76ee\u524d\u53ef\u4f9b\u5f20\u8d34\u516c\u76ca\u6027\u8d28\u7684\u5404\u79cd\u4fe1\u606f\u3002\\n\\n* \u672c\u5468\u62a5[\u6301\u7eed\u63a5\u53d7\u7f51\u53cb\u6295\u7a3f][call-for-submissions]\u3002\u6b22\u8fce\u6765\u4e0a\u6e38\u5750\u5750\uff01\\n\\n[lauosc-debian]: https://bbs.loongarch.org/d/167-lauosc-debian-12-ports\\n[call-for-submissions]: https://github.com/loongson-community/areweloongyet/issues/16"},{"id":"this-week-in-loongarch-3","metadata":{"permalink":"/newsletter/this-week-in-loongarch-3","editUrl":"https://github.com/loongson-community/areweloongyet/newsletter/2023-05-29-this-week-in-loongarch-3.md","source":"@site/newsletter/2023-05-29-this-week-in-loongarch-3.md","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 3 \u671f","description":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01","date":"2023-05-29T04:57:02.000Z","formattedDate":"2023\u5e745\u670829\u65e5","tags":[{"label":"\u6bcf\u5468\u4e00\u9f99","permalink":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99"}],"readingTime":5.68,"hasTruncateMarker":true,"authors":[{"name":"WANG Xuerui","title":"\ud83d\udc32\u9f99\u95e8\u5ba2\u6808\u6253\u6742\u7684","url":"https://github.com/xen0n","imageURL":"https://github.com/xen0n.png","key":"xen0n"}],"frontMatter":{"slug":"this-week-in-loongarch-3","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 3 \u671f","authors":["xen0n"],"date":"2023-05-29T04:57:02.000Z","tags":["\u6bcf\u5468\u4e00\u9f99"]},"unlisted":false,"prevItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 4 \u671f","permalink":"/newsletter/this-week-in-loongarch-4"},"nextItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 2 \u671f","permalink":"/newsletter/this-week-in-loongarch-2"}},"content":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01\\n\\n\x3c!-- truncate --\x3e\\n\\n\u5982\u65e0\u7279\u522b\u8bf4\u660e\uff0c\u6587\u4e2d\u63d0\u53ca\u7684\u65e5\u671f\u3001\u65f6\u95f4\u90fd\u4e3a\u5317\u4eac\u65f6\u95f4\uff08UTC+8\uff09\u3002\\n\\n## \u8981\u95fb\u901f\u9012\\n\\n5 \u6708 24 \u65e5\u4e0b\u5348\uff0cRust \u8bed\u8a00\u7684 `loongarch64-unknown-linux-gnu` \u76ee\u6807[\u6210\u529f\u664b\u5347][rust-loong-tier2]\u5230\\n[Tier 2 with Host Tools]\uff08\u5e26\u5bbf\u4e3b\u5de5\u5177\u7684\u4e8c\u7ea7\u67b6\u6784[^\u6ce8\u4e00]\uff09\u3002\\n\u8be5\u652f\u6301\u5df2\u4ece 5 \u6708 25 \u65e5\u5f00\u59cb\u51fa\u73b0\u4e8e Rust 1.71.0 Nightly \u7248\u672c\uff0c\u5e76\u5c06\u5728 7 \u6708 13 \u65e5\u7a33\u5b9a\u3002\\n\\n5 \u6708 26 \u65e5\uff0cmengqinggang \u5728 binutils \u90ae\u4ef6\u5217\u8868\u8d34\u51fa\u4e86 [LoongArch linker relaxation \u4f18\u5316][binutils-loong-relax]\u7684\u8865\u4e01\u3002\\n\\n:::info \u8fd9\u5565\u73a9\u610f\uff0c\u8fd9\u4e48\u653e\u677e\uff1f\\n\\nLinker relaxation \u6682\u65e0\u5e7f\u6cdb\u91c7\u7528\u7684\u4e2d\u6587\u7ffb\u8bd1\uff0c\u62d9\u8bd1\u300c\u94fe\u63a5\u5668\u5f1b\u8c6b\u300d\u6216\u300c\u94fe\u63a5\u5668\u677e\u5f1b\u300d\uff1a\\n\u7b80\u5355\u5730\u8bf4\uff0c\u8be5\u4f18\u5316\u662f\u94fe\u63a5\u5668\u6839\u636e\u7f16\u8bd1\u5668\u3001\u6c47\u7f16\u5668\u751f\u6210\u4ee3\u7801\u65f6\u63d0\u4f9b\u7684\u989d\u5916\u4fe1\u606f\uff0c\u5c06\u53ef\u7f29\u77ed\u7684\u8f83\u957f\u5e8f\u5217\u7f29\u77ed\uff0c\\n\u4ee5\u8fbe\u5230\u51cf\u5c11\u6307\u4ee4\u6570\uff0c\u4e14\u4e0d\u7528\u5173\u5fc3 code model \u7b49\u4ee3\u7801\u751f\u6210\u7ec6\u8282\u7684\u597d\u5904\uff1b\\n\u8fd9\u7c7b\u4f3c\u6750\u6599\u79d1\u5b66\u4e2d\u7684\u300c\u5e94\u529b\u5f1b\u8c6b/\u677e\u5f1b\u300d\u73b0\u8c61\uff0c\u5de5\u7a0b\u4e0a\u4e43\u81f3\u5728\u5bb6\u63c9\u9762\u65f6\uff0c\u300c\u91ca\u653e\u5e94\u529b\u300d\u4e5f\u662f\u5fc5\u987b\u7684\u64cd\u4f5c\u6b65\u9aa4\u3002\\n\u5728 Linker relaxation \u4e2d\uff0c\u88ab\u91ca\u653e\u7684\u300c\u5e94\u529b\u300d\u5c31\u662f\u4e3a\u4e86\u5b9e\u73b0\u4e00\u5b9a\u8bed\u4e49\uff0c\u6240\u53ef\u80fd\u7528\u5230\u7684\u6700\u957f\u6307\u4ee4\u5e8f\u5217\u5566\u3002\\n\\n\u66f4\u591a\u4fe1\u606f\u53ef\u53c2\u8003 MaskRay \u7684\u4e13\u9898\u6587\u7ae0\uff1a[*The dark side of RISC-V linker relaxation*](http://maskray.me/blog/2021-03-14-the-dark-side-of-riscv-linker-relaxation)\\n\u4e0e [*RISC-V linker relaxation in lld*](http://maskray.me/blog/2022-07-10-riscv-linker-relaxation-in-lld)\u3002\\n\uff08\u4ece\u7b2c\u4e00\u7bc7\u6587\u7ae0\u7684\u6807\u9898\u53ef\u89c1\uff0c\u8fd9\u4e2a\u4f18\u5316\u5bf9\u57fa\u7840\u7ec4\u4ef6\u5f00\u53d1\u8005\u6765\u8bf4\uff0c\u4e0d\u89c1\u5f97\u5b8c\u5168\u662f\u597d\u4e8b:smirk_cat:\u3002\uff09\\n\\n\u8be5\u4f18\u5316\u80fd\u5e26\u6765\u6027\u80fd\u597d\u5904\uff0c\u4f46\u4e5f\u5c06\u8f83\u4e3a\u6df1\u523b\u5730\u5f71\u54cd LoongArch \u76ee\u6807\u4ee3\u7801\u7684\u91cd\u5b9a\u4f4d\u8bb0\u5f55\u7528\u6cd5\u3001\u7f16\u8bd1\u5668\u4ee3\u7801\u751f\u6210\uff0c\u4e43\u81f3\u7f16\u8bd1\u5668\u547d\u4ee4\u884c\u4f7f\u7528\u65b9\u5f0f[^\u6ce8\u4e8c]\u7b49\u591a\u4e2a\u65b9\u9762\uff1b\\n\u56e0\u6b64\u5efa\u8bae\u5f00\u53d1\u8005\u540c\u5b66\u4eec\u5bc6\u5207\u5173\u6ce8\u3002\\n\\n:::\\n\\n[binutils-loong-relax]: https://sourceware.org/pipermail/binutils/2023-May/127630.html\\n[rust-loong-tier2]: https://github.com/rust-lang/rust/pull/110936\\n[Tier 2 with Host Tools]: https://doc.rust-lang.org/rustc/target-tier-policy.html#tier-2-with-host-tools\\n\\n[^\u6ce8\u4e00]: \u53ea\u6709 x86\u3001AMD64 \u548c AArch64 \u8fd9\u79cd\u5e7f\u6cdb\u6d41\u884c\u67b6\u6784\u624d\u80fd\u8dfb\u8eab Tier 1\u3002\u4f5c\u4e3a\u53c2\u8003\uff0c`riscv64gc-unknown-linux-gnu` \u4e5f\u548c LA64 Linux \u4e00\u6837\u4f4d\u4e8e Tier 2 with host tools \u7ea7\u522b\u3002\\n[^\u6ce8\u4e8c]: \u7531\u4e8e linker relaxation \u53ef\u4ee5\u5220\u9664\u6307\u4ee4\uff0c\u56e0\u6b64\u53ea\u8981\u6709\u4e86 linker relaxation \u90a3\u4e48\u7f16\u8bd1\u7a0b\u5e8f\u65f6\u5c31\u5c06\u4e0d\u518d\u9700\u8981\u6709\u65f6\u624b\u5de5\u6307\u5b9a code model \u4ee5\u5bb9\u8bb8\u66f4\u5927\u7684\u8df3\u8f6c\u8303\u56f4\u7b49\u60c5\u51b5\u53d1\u751f\u4e86\u3002\u56e0\u6b64\u8fd9\u79cd\u60c5\u51b5\u4e0b\uff0c\u7edd\u5927\u90e8\u5206\u573a\u666f\u5c31\u4e0d\u518d\u9700\u8981\u5173\u5fc3\u6216\u6307\u5b9a `-mcmodel` \u8fd9\u4e2a\u9009\u9879\u4e86\u3002\\n\\n## \u5148\u300c\u9a6c\u300d\u518d\u770b\\n\\n\u672c\u680f\u76ee\u7684\u5185\u5bb9\u5177\u6709\u4e00\u5b9a\u5ef6\u7eed\u6027\uff0c\u5c06\u6301\u7eed\u8ffd\u8e2a\u62a5\u9053 LoongArch® \u9886\u57df\u7684\u91cd\u8981\u6216\u957f\u671f\u9879\u76ee\uff08\u5751\uff09\u3002\\n\\n### \u53d1\u884c\u7248\u4eec\\n\\n\uff08\u4e0a\u671f\u6ca1\u6709\u6ce8\u610f\u5230\uff095 \u6708 20 \u65e5\uff0cDebian \u4e0a\u6e38\u65b0\u5efa\u4e86 `pool-loong64` \u6587\u4ef6\u5939\u3002\\n\\n### ClangBuiltLinux\\n\\n[\u4e0a\u6e38\u7684\u8ddf\u8e2a issue](https://github.com/ClangBuiltLinux/linux/issues/1787)\\n\u4e5f\u4f1a\u53ca\u65f6\u53cd\u6620\u6700\u65b0\u52a8\u6001\u3002\\n\\n\u4e0a\u5468\u6682\u65e0\u8fdb\u5c55\uff08\u63a8\u8fdb\u8be5\u9879\u76ee\u7684\u540c\u5b66\u90fd\u5728\u5fd9\u522b\u7684\uff09\u3002\\n\\n### Linux\\n\\n5 \u6708 22 \u65e5\uff0cYinbo Zhu [\u8d34\u51fa\u4e86](https://lore.kernel.org/loongarch/20230522093156.7108-1-zhuyinbo@loongson.cn/)\u9f99\u82af 2 \u53f7\u7cfb\u5217\u7684\u7535\u6e90\u7ba1\u7406\u652f\u6301\u8865\u4e01\u3002\\n\\n5 \u6708 23 \u65e5\uff0cTiezhu Yang [\u5c1d\u8bd5\u91cd\u6784](https://lore.kernel.org/loongarch/1684837327-18203-1-git-send-email-yangtiezhu@loongson.cn/) `perf` \u5de5\u5177\u7684\u7cfb\u7edf\u8c03\u7528\u8868\u3002\\n\\n5 \u6708 25 \u65e5\uff0cBinbin Zhou [\u8d34\u51fa\u4e86](https://lore.kernel.org/loongarch/cover.1684983279.git.zhoubinbin@loongson.cn/)\u9f99\u82af RTC \u63a7\u5236\u5668\u9a71\u52a8\u7684\u7b2c 4 \u7248\u8865\u4e01\u3002\\n\\n5 \u6708 29 \u65e5\uff0cJianmin Lv [\u8d34\u51fa\u4e86](https://lore.kernel.org/loongarch/20230529010954.2678-1-lvjianmin@loongson.cn/)\u9f99\u82af\u4e2d\u65ad\u63a7\u5236\u5668\u9a71\u52a8\u7684\u4e00\u4e9b\u884c\u4e3a\u4fee\u590d\u7684\u7b2c 2 \u7248\u8865\u4e01\u3002\\n\\n### LLVM\\n\\n\u672c\u5468\u5408\u5e76\u4e86\u4ee5\u4e0b\u7684\u529f\u80fd\u6539\u8fdb\u7b49\uff1a\\n\\n* tangyouling\u3001Ami-zhang \u4e3a compiler-rt fuzzer \u7ec4\u4ef6[\u9002\u914d\u4e86][D140607]\u975e 4KiB \u9875\u7684\u7cfb\u7edf\u3002\u5f53\u7136\uff0c\u4e5f\u5305\u62ec\u9f99\u67b6\u6784\u3002\\n\\n\u51fa\u73b0\u4e86\u4ee5\u4e0b\u7684\u65b0\u52a8\u5411\uff1a\\n\\n* xen0n \u7ec8\u4e8e\u627e\u5230\u4e86\u8db3\u591f\u65f6\u95f4[\u8c03\u8bd5\u5e76\u4fee\u590d\u4e86][D138135] lld/ELF LoongArch port \u7684 TLS \u5904\u7406\u903b\u8f91\u3002\u8be5\u8865\u4e01\u7ec8\u4e8e\u79f0\u5f97\u4e0a\u300c\u5b8c\u6210\u300d\u4e86\u3002\\n\\n[D138135]: https://reviews.llvm.org/D138135\\n[D140607]: https://reviews.llvm.org/D140607\\n\\n### Rust\\n\\n[\u6dfb\u52a0\u9f99\u67b6\u6784\u88f8\u673a targets \u7684 MCP][loong-baremetal-mcp] \u6b63\u5728\u516c\u793a\u671f\u5185\u3002\u76ee\u524d\u6ca1\u6709\u53cd\u5bf9\u610f\u89c1\uff0c\u9884\u8ba1\u672c\u5468\u5c06\u83b7\u5f97\u901a\u8fc7\u3002\\n\\n\u9f99\u67b6\u6784 Rust \u7ef4\u62a4\u8005\u4eec\u4e5f\u5728\u7740\u624b\u4e3a rustup \u6dfb\u52a0\u652f\u6301\u4e86\uff1a\\n\\n* [\u5347\u7ea7\u4f9d\u8d56\u7248\u672c][rustup-pr-1]\u3001\\n* [\u4fee\u590d\u7f16\u8bd1][rustup-pr-2]\u3001\\n* [\u6dfb\u52a0 CI \u652f\u6301][rustup-pr-3]\u3002\\n\\n[loong-baremetal-mcp]: https://github.com/rust-lang/compiler-team/issues/628\\n[rustup-pr-1]: https://github.com/rust-lang/rustup/pull/3365\\n[rustup-pr-2]: https://github.com/rust-lang/rustup/pull/3364\\n[rustup-pr-3]: https://github.com/rust-lang/rustup/pull/3363\\n\\n\u622a\u81f3\u53d1\u7a3f\u65f6\uff0c\u8fd9\u4e9b PRs \u90fd\u5df2\u88ab\u5408\u5e76\u3002\\n\u9884\u8ba1\u5230 Rust 1.71.0 \u6b63\u5f0f\u53d1\u5e03\u65f6\uff0c\u9f99\u67b6\u6784 Rust \u5f00\u53d1\u8005\u5c06\u5f97\u4ee5\u4eab\u53d7\u4e0d\u900a\u5176\u4ed6\u67b6\u6784\u7684\u540c\u7b49\u5f00\u53d1\u4f53\u9a8c\u3002\\n\\n## \u793e\u533a\u6574\u6d3b:\u513f:\\n\\n\u672c\u680f\u76ee\u63a5\u53d7\u4efb\u4f55\u7f51\u53cb\u7684\u6295\u7a3f\uff0c\u53ea\u8981\u5185\u5bb9\u4e0e LoongArch® \u6709\u5173\uff0c\u5e76\u53ef\u4ee5\u4e3a\u8bfb\u8005\u5e26\u6765\u4ef7\u503c\uff0c\\n\u65e0\u8bba\u4e25\u8083\u8d21\u732e\uff08\u6574\u7684\u5927\u6d3b:\u513f:\uff09\u6216\u662f\u535a\u541b\u4e00\u7b11\u90fd\u4e00\u6982\u6b22\u8fce\uff01\\n\\n\u672c\u5468\u6ca1\u6709\u6295\u7a3f\u3002\\n\\n## \u5f20\u8d34\u680f\\n\\n\u672c\u680f\u76ee\u76ee\u524d\u53ef\u4f9b\u5f20\u8d34\u516c\u76ca\u6027\u8d28\u7684\u5404\u79cd\u4fe1\u606f\u3002\\n\\n* \u675c\u6bd4\u6b22\u8fce\u540c\u5b66\u4eec\u53bb [LA UOSC \u7684 Debian port \u9875\u9762][lauosc-debian]\u770b\u770b\u3002\\n* \u672c\u5468\u62a5[\u6301\u7eed\u63a5\u53d7\u7f51\u53cb\u6295\u7a3f][call-for-submissions]\u3002\u6b22\u8fce\u6765\u4e0a\u6e38\u5750\u5750\uff01\\n\\n[lauosc-debian]: https://bbs.loongarch.org/d/167-lauosc-debian-12-ports\\n[call-for-submissions]: https://github.com/loongson-community/areweloongyet/issues/16"},{"id":"this-week-in-loongarch-2","metadata":{"permalink":"/newsletter/this-week-in-loongarch-2","editUrl":"https://github.com/loongson-community/areweloongyet/newsletter/2023-05-22-this-week-in-loongarch-2.md","source":"@site/newsletter/2023-05-22-this-week-in-loongarch-2.md","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 2 \u671f","description":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01","date":"2023-05-22T04:05:38.000Z","formattedDate":"2023\u5e745\u670822\u65e5","tags":[{"label":"\u6bcf\u5468\u4e00\u9f99","permalink":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99"}],"readingTime":4.485,"hasTruncateMarker":true,"authors":[{"name":"WANG Xuerui","title":"\ud83d\udc32\u9f99\u95e8\u5ba2\u6808\u6253\u6742\u7684","url":"https://github.com/xen0n","imageURL":"https://github.com/xen0n.png","key":"xen0n"}],"frontMatter":{"slug":"this-week-in-loongarch-2","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 2 \u671f","authors":["xen0n"],"date":"2023-05-22T04:05:38.000Z","tags":["\u6bcf\u5468\u4e00\u9f99"]},"unlisted":false,"prevItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 3 \u671f","permalink":"/newsletter/this-week-in-loongarch-3"},"nextItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 1 \u671f","permalink":"/newsletter/this-week-in-loongarch-1"}},"content":"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01\\n\\n\x3c!-- truncate --\x3e\\n\\n\u5982\u65e0\u7279\u522b\u8bf4\u660e\uff0c\u6587\u4e2d\u63d0\u53ca\u7684\u65e5\u671f\u3001\u65f6\u95f4\u90fd\u4e3a\u5317\u4eac\u65f6\u95f4\uff08UTC+8\uff09\u3002\\n\\n## \u8981\u95fb\u901f\u9012\\n\\n\u672c\u680f\u76ee\u5e76\u975e\u6bcf\u671f\u90fd\u6709\u3002\u5982\u679c\u4f60\u770b\u5230\u4e86\uff0c\u4e00\u5b9a\u662f\u4e0a\u5468\u53d1\u751f\u4e86\u91cd\u5927\u4e8b\u4ef6\uff01\\n\\n5 \u6708 17 \u65e5\u665a\u95f4\uff0cGNU GRUB2 \u7684 LoongArch \u79fb\u690d[\u8fdb\u5165\u4e0a\u6e38][grub-msg]\uff0c\\n\u5c06\u4e8e\u8fd1\u671f\u7684 2.12 \u7248\u672c\u6b63\u5f0f\u53d1\u5e03\u3002\\n\u4ece[\u56fd\u5185 LoongArch \u793e\u533a\u6700\u65e9\u7684\u4ee3\u7801\u63d0\u4ea4\u4e0e\u5185\u90e8\u5ba1\u67e5][la64-grub-first-pr]\u4ee5\u6765\uff0c\\n\u5df2\u5c06\u8fd1\u4e24\u5e74\u65f6\u95f4\uff1b\u4ece[\u5411\u4e0a\u6e38\u6b63\u5f0f\u63d0\u4ea4\u7684\u7b2c\u4e00\u7248][grub-first-submission]\u5f00\u59cb\uff0c\\n\u4e5f\u5feb\u4e00\u5e74\u534a\u4e86\u3002\\n\\n[grub-msg]: https://lists.gnu.org/archive/html/grub-devel/2023-05/msg00089.html\\n[la64-grub-first-pr]: https://github.com/loongarch64/grub/pull/1\\n[grub-first-submission]: https://lists.gnu.org/archive/html/grub-devel/2022-01/msg00036.html\\n\\n\u8fd9\u671f\u95f4\uff0c\u4ee5\u4e0b\u540c\u5b66\u4ee5\u5404\u79cd\u5f62\u5f0f\u53c2\u4e0e\u4e86\u4ee3\u7801\u7684\u5f00\u53d1\u3001\u5ba1\u67e5\u3001\u6d4b\u8bd5\u7b49\u5de5\u4f5c\uff1a\uff08\u4ee5 ID \u4e3a\u5e8f\uff09\\n\\n* [@cnmushiba](https://github.com/cnmushiba)\\n* [@hudsonzuo](https://github.com/hudsonzuo)\\n* [@kilaterlee](https://github.com/kilaterlee)\\n* [@sdlaqz](https://github.com/sdlaqz)\\n* [@sunhaiyong1978](https://github.com/sunhaiyong1978)\\n* [@xen0n](https://github.com/xen0n)\\n* [@xry111](https://github.com/xry111)\\n* `yangqiming `\\n* [@yetist](https://github.com/yetist)\\n* [@zhangwenlong8911](https://github.com/zhangwenlong8911)\\n* [@zhuyaliang](https://github.com/zhuyaliang)\\n* [@zwaizwai](https://github.com/zwaizwai)\\n\\n\u5f53\u7136\uff0c\u9664\u4e86\u8fd9\u4e9b\u540d\u5b57\u4e4b\u5916\uff0c\u8fd8\u6709\u5176\u4ed6\u6ca1\u6709\u51fa\u73b0\u5728\u8ba8\u8bba\u4e32\u3001\u63d0\u4ea4\u5386\u53f2\u7684\u65e0\u540d\u82f1\u96c4\u3002\\n\u8ba9\u6211\u4eec\u611f\u8c22 :ta: \u4eec\u7684\u4ed8\u51fa\uff01\\n\\n## \u5148\u300c\u9a6c\u300d\u518d\u770b\\n\\n\u672c\u680f\u76ee\u7684\u5185\u5bb9\u5177\u6709\u4e00\u5b9a\u5ef6\u7eed\u6027\uff0c\u5c06\u6301\u7eed\u8ffd\u8e2a\u62a5\u9053 LoongArch® \u9886\u57df\u7684\u91cd\u8981\u6216\u957f\u671f\u9879\u76ee\uff08\u5751\uff09\u3002\\n\\n### \u53d1\u884c\u7248\u4eec\\n\\n\u4e0a\u5468\u6ca1\u6709\u53d1\u884c\u7248\u65b9\u9762\u7684\u65b0\u52a8\u5411\u3002\\n\\n### ClangBuiltLinux\\n\\n[\u4e0a\u6e38\u7684\u8ddf\u8e2a issue](https://github.com/ClangBuiltLinux/linux/issues/1787)\\n\u4e5f\u4f1a\u53ca\u65f6\u53cd\u6620\u6700\u65b0\u52a8\u6001\u3002\\n\\n\u9f99\u82af LLVM \u56e2\u961f\u4e0e xen0n \u6b63\u5728\u5bf9 LLVM \u8fdb\u884c\u5fc5\u8981\u7684\u4fee\u6539\uff0c\u4ee5\u4f7f\u5176\u8db3\u4ee5\u6784\u5efa Linux \u5185\u6838\u3002\\n\u4e0a\u4e00\u8f6e\u8fed\u4ee3\u57fa\u672c\u5b8c\u6210\uff0c\u53d1\u73b0\u4e86\u66f4\u591a\u7684\u5f85\u8ddf\u8fdb\u9879\uff0c\u5305\u62ec\u4f46\u4e0d\u9650\u4e8e\u4ee5\u4e0b\u7684\u5751\uff1a\\n\\n* \u62fc\u63a5\u6307\u4ee4\u5b57\u4f7f\u7528\u7684 `parse_r` \u8f85\u52a9\u4f8b\u7a0b\u76ee\u524d\u4e0d\u80fd\u5728 LLVM \u5904\u7406\u5f62\u5982 `$a0` \u7684\u5bc4\u5b58\u5668\u540d\u3002\\n* `` \u7528\u5230\u4e86\u4e0d\u80fd\u88ab\u6b63\u786e\u5904\u7406\u7684\u5199\u6cd5\u3002\\n* `la_abs` \u5b8f\u6240\u4f7f\u7528\u5230\u7684\u91cd\u5b9a\u4f4d\u5199\u6cd5\u6d89\u53ca\u4e86\u4e0d\u540c\u6bb5\uff08section\uff09\u95f4\u7684\u504f\u79fb\u8ba1\u7b97\uff0c\u4e0d\u88ab LLVM \u652f\u6301\uff0c\u9700\u8981\u6539\u5199\u3002\\n* `addrspace`\uff08\u5728 C \u4e00\u4fa7\uff1a`address_space(X)` \u5c5e\u6027\uff09\u4e0d\u80fd\u88ab\u7528\u4ee5\u7ed5\u8fc7\u5bf9 `model` \u5c5e\u6027\u7684\u6b63\u7ecf\u652f\u6301\uff0c`model` \u4ecd\u7136\u9700\u8981\u88ab\u5b9e\u73b0\u3002\\n\\n### Linux\\n\\n5 \u6708 16 \u65e5\uff0cHuacai Chen \u5728 Linux/LoongArch \u90ae\u4ef6\u5217\u8868\u8d34\u51fa\u4e86\u4e24\u4e2a\u9488\u5bf9\u9f99\u82af 3A6000\\n\uff08LA664 \u5fae\u67b6\u6784\uff09\u7684\u6027\u80fd\u4f18\u5316\u8865\u4e01\u3002\u8fd9\u4e5f\u662f LA664 \u5fae\u67b6\u6784\u7684\u65b0\u9c9c\u7279\u6027\u9996\u6b21\u89c1\u8bf8\u62a5\u7aef\u3002\\n\u5b83\u4eec\u5206\u522b\u662f\uff1a[\u66f4\u7ec6\u7c92\u5ea6\u7684\u5185\u5b58\u6805\u969c\u64cd\u4f5c][la664-dbar]\u4e0e[\u9875\u8868\u904d\u5386\u7684\u786c\u4ef6\u52a0\u901f\u652f\u6301][la664-ptw]\u3002\\n\\n5 \u6708 15 \u65e5\uff0cTianrui Zhao \u8d34\u51fa\u4e86 [LoongArch KVM \u7684\u7b2c 10 \u7248\u8865\u4e01][kvm-r10]\u3002\u7136\u800c\u865a\u62df\u5316\u6307\u4ee4\u96c6\u6269\u5c55\u7684\u624b\u518c\u4ecd\u7136\u6ca1\u6709\u516c\u5f00\u3002\\n\\n5 \u6708 14 \u65e5\uff0cImmad Mir [\u4fee\u590d\u4e86][fix-debugfs-init]\u975e\u5bf9\u9f50\u8bbf\u5b58\u6a21\u62df\u529f\u80fd\u7684 debugfs \u521d\u59cb\u5316\u8fc7\u7a0b\u7684\u8fd4\u56de\u503c\u5904\u7406\u3002\u8be5\u8865\u4e01\u5df2\u88ab\u63a5\u53d7\u3002\\n\\n[la664-dbar]: https://lore.kernel.org/loongarch/20230516124536.535343-1-chenhuacai@loongson.cn/\\n[la664-ptw]: https://lore.kernel.org/loongarch/20230516124610.535360-1-chenhuacai@loongson.cn/\\n[kvm-r10]: https://lore.kernel.org/loongarch/20230515021522.2445551-1-zhaotianrui@loongson.cn/\\n[fix-debugfs-init]: https://lore.kernel.org/loongarch/CY5PR12MB64558068B314942BA1B2ED2BC67B9@CY5PR12MB6455.namprd12.prod.outlook.com/\\n\\n### LLVM\\n\\n\u4e00\u5468\u95f4\u5408\u5e76\u4e86\u4ee5\u4e0b\u7684\u529f\u80fd\u6539\u8fdb\u7b49\uff1a\\n\\n* SixWeining \u4e3a LoongArch [\u6dfb\u52a0\u4e86 LP64S\uff0864 \u4f4d\u8f6f\u6d6e\u70b9\uff09ABI \u652f\u6301][D150417]\u3002\\n \u8fd9\u662f\u652f\u6301 ClangBuiltLinux \u9879\u76ee\u6240\u5fc5\u987b\u7684\u80fd\u529b\u4e4b\u4e00\u3002\\n* SixWeining \u4f7f Clang \u5728\u7f16\u8bd1\u6c47\u7f16\u8bed\u8a00\u7684\u6e90\u7801\u65f6[\u80fd\u591f\u6b63\u786e\u5411\u6c47\u7f16\u5668\u4f20\u9012 ABI \u76f8\u5173\u9009\u9879][D150537]\u3002\\n \u8fd9\u4e5f\u662f\u652f\u6301 ClangBuiltLinux \u9879\u76ee\u6240\u5fc5\u987b\u7684\u80fd\u529b\u4e4b\u4e00\u3002\\n\\n\u4e0a\u5468\u6ca1\u6709\u65b0\u7684 LoongArch \u76f8\u5173\u52a8\u5411\u3002\\n\\n[D150417]: https://reviews.llvm.org/D150417\\n[D150537]: https://reviews.llvm.org/D150537\\n\\n## \u793e\u533a\u6574\u6d3b:\u513f:\\n\\n\u672c\u680f\u76ee\u63a5\u53d7\u4efb\u4f55\u7f51\u53cb\u7684\u6295\u7a3f\uff0c\u53ea\u8981\u5185\u5bb9\u4e0e LoongArch® \u6709\u5173\uff0c\u5e76\u53ef\u4ee5\u4e3a\u8bfb\u8005\u5e26\u6765\u4ef7\u503c\uff0c\\n\u65e0\u8bba\u4e25\u8083\u8d21\u732e\uff08\u6574\u7684\u5927\u6d3b:\u513f:\uff09\u6216\u662f\u535a\u541b\u4e00\u7b11\u90fd\u4e00\u6982\u6b22\u8fce\uff01\\n\\n\u4e0a\u5468\u6ca1\u6709\u6295\u7a3f\u3002\\n\\n## \u5f20\u8d34\u680f\\n\\n\u672c\u680f\u76ee\u76ee\u524d\u53ef\u4f9b\u5f20\u8d34\u516c\u76ca\u6027\u8d28\u7684\u5404\u79cd\u4fe1\u606f\u3002\\n\\n* \u675c\u6bd4\u6b22\u8fce\u540c\u5b66\u4eec\u53bb [LA UOSC \u7684 Debian port \u9875\u9762][lauosc-debian]\u770b\u770b\u3002\\n* \u672c\u5468\u62a5[\u6301\u7eed\u63a5\u53d7\u7f51\u53cb\u6295\u7a3f][call-for-submissions]\u3002\u6b22\u8fce\u6765\u4e0a\u6e38\u5750\u5750\uff01\\n\\n[lauosc-debian]: https://bbs.loongarch.org/d/167-lauosc-debian-12-ports\\n[call-for-submissions]: https://github.com/loongson-community/areweloongyet/issues/16"},{"id":"this-week-in-loongarch-1","metadata":{"permalink":"/newsletter/this-week-in-loongarch-1","editUrl":"https://github.com/loongson-community/areweloongyet/newsletter/2023-05-15-this-week-in-loongarch-1.md","source":"@site/newsletter/2023-05-15-this-week-in-loongarch-1.md","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 1 \u671f","description":"\u7531\u5fd7\u613f\u8005\u4eec\u81ea\u53d1\u7f16\u64b0\u7684 LoongArch® \u793e\u533a\u751f\u6001\u5468\u62a5\u300a\u6bcf\u5468\u4e00\u9f99\u300b\u4e0e\u5927\u5bb6\u89c1\u9762\u4e86\uff01","date":"2023-05-15T13:49:14.000Z","formattedDate":"2023\u5e745\u670815\u65e5","tags":[{"label":"\u6bcf\u5468\u4e00\u9f99","permalink":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99"}],"readingTime":4.185,"hasTruncateMarker":true,"authors":[{"name":"WANG Xuerui","title":"\ud83d\udc32\u9f99\u95e8\u5ba2\u6808\u6253\u6742\u7684","url":"https://github.com/xen0n","imageURL":"https://github.com/xen0n.png","key":"xen0n"}],"frontMatter":{"slug":"this-week-in-loongarch-1","title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 1 \u671f","authors":["xen0n"],"date":"2023-05-15T13:49:14.000Z","tags":["\u6bcf\u5468\u4e00\u9f99"]},"unlisted":false,"prevItem":{"title":"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 2 \u671f","permalink":"/newsletter/this-week-in-loongarch-2"}},"content":"\u7531\u5fd7\u613f\u8005\u4eec\u81ea\u53d1\u7f16\u64b0\u7684 LoongArch® \u793e\u533a\u751f\u6001\u5468\u62a5\u300a\u6bcf\u5468\u4e00\u9f99\u300b\u4e0e\u5927\u5bb6\u89c1\u9762\u4e86\uff01\\n\u6bcf\u4e2a\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u5e26\u6765\u793e\u533a\u8d21\u732e\u8005\u4eec\u4ece\u6700\u524d\u7ebf\u4f20\u6765\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\u3002\\n\\n\x3c!-- truncate --\x3e\\n\\n## \u5148\u300c\u9a6c\u300d\u518d\u770b\\n\\n\u672c\u680f\u76ee\u7684\u5185\u5bb9\u5177\u6709\u4e00\u5b9a\u5ef6\u7eed\u6027\uff0c\u5c06\u6301\u7eed\u8ffd\u8e2a\u62a5\u9053 LoongArch® \u9886\u57df\u7684\u91cd\u8981\u6216\u957f\u671f\u9879\u76ee\uff08\u5751\uff09\u3002\\n\\n### \u53d1\u884c\u7248\u4eec\\n\\n* Loong Arch Linux: yetist \u53d1\u5e03\u4e86 2023.05.08 \u7248\u672c\u7684 ISO \u955c\u50cf\u3002\\n* Debian: 5 \u6708 15 \u65e5\u95f4\uff0czhangdandan \u547c\u5401\u611f\u5174\u8da3\u7684\u540c\u5b66\u53bb[\u7533\u8bf7\u521b\u5efa debian-loongarch \u90ae\u4ef6\u5217\u8868\u7684 bug][debian-loongarch] \u4e0b\u56de\u590d\u8868\u793a\u652f\u6301\u3002\\n* Deepin: \u4e2d\u56fd\u65f6\u95f4 5 \u6708 6 \u65e5\u51cc\u6668 03:59\uff0cRevy \u5728 Deepin \u793e\u533a[\u63d0\u4ea4\u4e86\u589e\u52a0\u9f99\u67b6\u6784\u652f\u6301\u7684 PR][deepin-loong]\u3002\u8f9b\u82e6\u4e86\uff01\\n\\n[loongarchlinux-isos]: https://mirrors.wsyu.edu.cn/loongarch/archlinux/iso/\\n[debian-loongarch]: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1023585\\n[deepin-loong]: https://github.com/deepin-community/rfcs/pull/2\\n\\n### ClangBuiltLinux\\n\\n[\u4e0a\u6e38\u7684\u8ddf\u8e2a issue](https://github.com/ClangBuiltLinux/linux/issues/1787)\\n\u4e5f\u4f1a\u53ca\u65f6\u53cd\u6620\u6700\u65b0\u52a8\u6001\u3002\\n\\n\u9f99\u82af LLVM \u56e2\u961f\u4e0e xen0n \u6b63\u5728\u5bf9 LLVM \u8fdb\u884c\u5fc5\u8981\u7684\u4fee\u6539\uff0c\u4ee5\u4f7f\u5176\u8db3\u4ee5\u6784\u5efa Linux \u5185\u6838\u3002\\n\\n### Linux\\n\\n* \u5317\u4eac\u65f6\u95f4 5 \u6708 11 \u65e5\uff0c`drm-next` \u5206\u652f[\u63a5\u53d7\u4e86\u4e3a DCN \u67b6\u6784 AMD \u663e\u5361\u6dfb\u52a0\u9f99\u67b6\u6784\u9002\u914d\u7684\u8865\u4e01][dc-fp-loong]\u3002\\n \u8be5\u8865\u4e01\u5df2\u8fdb\u5165 linux-next\uff0c\u53ef\u65b9\u4fbf\u8bd5\u7528\u4e86\u3002\\n\\n[dc-fp-loong]: https://gitlab.freedesktop.org/agd5f/linux/-/commit/d3295311e589a14a7496f0e14b5be6c3b5d9e134\\n\\n### LLVM\\n\\n\u4e00\u5468\u95f4\u5408\u5e76\u4e86\u4ee5\u4e0b\u7684\u529f\u80fd\u6539\u8fdb\u7b49\uff1a\\n\\n* SixWeining \u4e3a LoongArch Clang \u7684\u5185\u8054\u6c47\u7f16\uff08inline asm\uff09[\u6dfb\u52a0\u4e86][D136436]\u4e0d\u5e26 `$` \u524d\u7f00\u7684\u901a\u7528\u5bc4\u5b58\u5668\u652f\u6301\u3002\\n \u8fd9\u662f\u652f\u6301 ClangBuiltLinux \u9879\u76ee\u6240\u5fc5\u987b\u7684\u80fd\u529b\u4e4b\u4e00\u3002\\n* SixWeining \u4e3a LoongArch Clang \u7684\u5185\u8054\u6c47\u7f16[\u6dfb\u52a0\u4e86][D150089]\u5bf9\u6d6e\u70b9\u6761\u4ef6\u7801\u5bc4\u5b58\u5668 `$fccX` \u7684 clobber \u652f\u6301\u3002\\n\\n\u51fa\u73b0\u4e86\u4ee5\u4e0b\u7684\u65b0\u52a8\u5411\uff1a\\n\\n* xen0n \u5c1d\u8bd5\u4e3a LoongArch \u540e\u7aef[\u6dfb\u52a0\u5bf9 large \u4ee3\u7801\u6a21\u578b\u7684\u652f\u6301][D150522]\uff08GCC \u53eb\u8fd9\u4e2a\u6a21\u578b `extreme`\uff09\u3002\\n \u8fd9\u662f\u652f\u6301 ClangBuiltLinux \u9879\u76ee\u6240\u5fc5\u987b\u7684\u80fd\u529b\u4e4b\u4e00\u3002\\n\\n[D136436]: https://reviews.llvm.org/D136436\\n[D150089]: https://reviews.llvm.org/D150089\\n[D150522]: https://reviews.llvm.org/D150522\\n\\n## \u793e\u533a\u6574\u6d3b:\u513f:\\n\\n\u672c\u680f\u76ee\u63a5\u53d7\u4efb\u4f55\u7f51\u53cb\u7684\u6295\u7a3f\uff0c\u53ea\u8981\u5185\u5bb9\u4e0e LoongArch® \u6709\u5173\uff0c\u5e76\u53ef\u4ee5\u4e3a\u8bfb\u8005\u5e26\u6765\u4ef7\u503c\uff0c\\n\u65e0\u8bba\u4e25\u8083\u8d21\u732e\uff08\u6574\u7684\u5927\u6d3b:\u513f:\uff09\u6216\u662f\u535a\u541b\u4e00\u7b11\u90fd\u4e00\u6982\u6b22\u8fce\uff01\\n\\ndonmor \u540c\u5b66\u4f7f\u7528 QEMU \u6a21\u62df\u7684\u9f99\u67b6\u6784\u9a8c\u8bc1\u4e86\u5f88\u591a\u8f6f\u4ef6\u548c\u6e38\u620f\uff1a\\n\\n* [TheXTech SMBX](https://github.com/Wohlstand/TheXTech)\uff0c\u540c\u4eba\u9a6c\u91cc\u5965\u5f15\u64ce\u3002\\n \u4f7f\u7528 `-sw` \u53c2\u6570\u8f6f\u89e3\u53ef\u5728 QEMU \u8fd0\u884c~~\u4e00\u5e27\u7535\u7ade~~\uff0c\u636e\u7fa4\u53cb\u8bf4\u72ec\u663e\u5b9e\u673a\u53ef\u73a9\\n* [EasyRPG Player](https://easyrpg.org/player)\uff0cRPG2000/2003 \u865a\u62df\u673a\uff0c\u5728 QEMU \u53ef\u6d41\u7545\u8fd0\u884c\\n* [LTFS](https://github.com/LinearTapeFileSystem/ltfs)\uff0c\u78c1\u5e26\u673a\u7684\u9a71\u52a8\u3002\u53ef\u80fd\u9700\u8981\u7a0d\u5fae\u6539\u4e00\u4e9b\u4ee3\u7801\\n* [FRP](https://gofrp.org/)\uff0c\u5185\u7f51\u7a7f\u900f\u5de5\u5177\uff0c\u61c2\u7684\u90fd\u61c2\uff08\\n* [SpaceCadetPinball](https://github.com/k4zmu2a/SpaceCadetPinball)\uff0cWindows XP \u4e09\u7ef4\u5f39\u7403\u7684\u79fb\u690d\u7248\u3002\\n \u9700\u8981\u81ea\u884c\u83b7\u53d6\u539f\u7248\u6587\u4ef6\u653e\u5165 `~/.local/share/SpaceCadetPinball`\u3002\\n QEMU \u5e27\u6570\u611f\u4eba\\\\_(:\u0437\u300d\u2220)\\\\_\\n* [Seafile](https://www.seafile.com/)\uff0c\u5927\u540d\u9f0e\u9f0e\u7684\u7f51\u76d8\uff0c\u5728\u8bba\u575b\u4e5f\u88ab\u63d0\u8d77\u597d\u591a\u6b21\u3002\\n \u6b64\u6b21\u7f16\u8bd1\u7684\u662f\u793e\u533a\u7248 9.0.10\uff0c\u4e0d\u6392\u9664\u4e13\u4e1a\u7248\u53ef\u4ee5 LATX \u8fd0\u884c\uff08\\n \u9664\u7f51\u9875\u7aef Office \u96c6\u6210\u548c\u5ba2\u6237\u7aef OAuth\uff08\u6ca1\u8bd5\u8fc7\uff0c\u636e\u8bf4\u56e0\u4e3a\u7f3a\u5c11 qt5-webengine\uff09\u5916\uff0c\u5927\u90e8\u5206\u529f\u80fd\u5df2\u57fa\u672c\u53ef\u7528\uff0cseadrive \u9700\u6307\u5b9a\u4f7f\u7528 qt5-webkit\uff08\u5df2\u8fdb\u5165 Arch \u6e90\uff09\\n* [np2kai](http://domisan.sakura.ne.jp/article/np2kai/np2kai.html)\uff0c\u5927\u540d\u9f0e\u9f0e\u7684 PC98 \u6a21\u62df\u5668 nekoproject2 \u7684\u8de8\u5e73\u53f0\u6539\u7248\uff0c\u5df2\u7ecf\u8fdb\u5165 libretro\u3002\\n QEMU \u53ef\u542f\u52a8\uff0c\u80fd\u8fd0\u884c\u4e1c\u65b9\u65e7\u4f5c\uff0c\u7136\u800c\u5e27\u6570\u4e0d\u5230 1fps\uff08\u60b2\uff09\\n* [Onscripter-Yuri](https://github.com/YuriSizuku/OnscripterYuri)\uff0cNScripter\u865a\u62df\u673a\u3002\\n QEMU \u53ef\u542f\u52a8\uff0c\u4e5f\u6bd4\u8f83\u5361\uff0c\u4e0d\u8fc7\u8fd9\u4e5f\u662f\u4e2a\u4e0d\u4f1a\u8ba9\u4eba\u6709\u7a7a\u5173\u5fc3\u5e27\u6570\u7684\u73a9\u610f\uff08\\n \u636e\u8bf4\u53ef\u4ee5\u542f\u52a8 FSN\uff0c\u6708\u7403\u4eba\u72c2\u559c\\n\\n## \u5f20\u8d34\u680f\\n\\n\u672c\u680f\u76ee\u76ee\u524d\u53ef\u4f9b\u5f20\u8d34\u516c\u76ca\u6027\u8d28\u7684\u5404\u79cd\u4fe1\u606f\u3002\\n\\n* \u675c\u6bd4\u6b22\u8fce\u540c\u5b66\u4eec\u53bb [LA UOSC \u7684 Debian port \u9875\u9762][lauosc-debian]\u770b\u770b\u3002\\n* \u672c\u5468\u62a5[\u6301\u7eed\u63a5\u53d7\u7f51\u53cb\u6295\u7a3f][call-for-submissions]\u3002\u6b22\u8fce\u6765\u4e0a\u6e38\u5750\u5750\uff01\\n\\n[lauosc-debian]: https://bbs.loongarch.org/d/167-lauosc-debian-12-ports\\n[call-for-submissions]: https://github.com/loongson-community/areweloongyet/issues/16"}]}')}}]); \ No newline at end of file diff --git a/assets/js/cc17e890.127cefee.js b/assets/js/cc17e890.127cefee.js new file mode 100644 index 00000000..29c6e9de --- /dev/null +++ b/assets/js/cc17e890.127cefee.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkareweloongyet=self.webpackChunkareweloongyet||[]).push([[616],{6344:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>a,contentTitle:()=>c,default:()=>d,frontMatter:()=>r,metadata:()=>o,toc:()=>t});var l=s(5893),i=s(1151);const r={slug:"this-week-in-loongarch-24",title:"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 24 \u671f",authors:["xen0n"],date:new Date("2023-11-13T15:50:00.000Z"),tags:["\u6bcf\u5468\u4e00\u9f99"]},c=void 0,o={permalink:"/newsletter/this-week-in-loongarch-24",editUrl:"https://github.com/loongson-community/areweloongyet/newsletter/2023-11-13-this-week-in-loongarch-24.md",source:"@site/newsletter/2023-11-13-this-week-in-loongarch-24.md",title:"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 24 \u671f",description:"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01",date:"2023-11-13T15:50:00.000Z",formattedDate:"2023\u5e7411\u670813\u65e5",tags:[{label:"\u6bcf\u5468\u4e00\u9f99",permalink:"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99"}],readingTime:12.565,hasTruncateMarker:!0,authors:[{name:"WANG Xuerui",title:"\ud83d\udc32\u9f99\u95e8\u5ba2\u6808\u6253\u6742\u7684",url:"https://github.com/xen0n",imageURL:"https://github.com/xen0n.png",key:"xen0n"}],frontMatter:{slug:"this-week-in-loongarch-24",title:"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 24 \u671f",authors:["xen0n"],date:"2023-11-13T15:50:00.000Z",tags:["\u6bcf\u5468\u4e00\u9f99"]},unlisted:!1,prevItem:{title:"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 25 \u671f",permalink:"/newsletter/this-week-in-loongarch-25"},nextItem:{title:"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 23 \u671f",permalink:"/newsletter/this-week-in-loongarch-23"}},a={authorsImageUrls:[void 0]},t=[{value:"\u5148\u300c\u9a6c\u300d\u518d\u770b",id:"\u5148\u9a6c\u518d\u770b",level:2},{value:"Linux",id:"linux",level:3},{value:"\u5de5\u5177\u94fe",id:"\u5de5\u5177\u94fe",level:3},{value:"gcc",id:"gcc",level:4},{value:"LLVM",id:"llvm",level:4},{value:"Go",id:"go",level:4},{value:"\u6742\u95fb\u64ad\u62a5",id:"\u6742\u95fb\u64ad\u62a5",level:2},{value:"\u793e\u533a\u6574\u6d3b",id:"\u793e\u533a\u6574\u6d3b",level:2},{value:"\u5f20\u8d34\u680f",id:"\u5f20\u8d34\u680f",level:2}];function h(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",h4:"h4",li:"li",ol:"ol",p:"p",section:"section",small:"small",sup:"sup",ul:"ul",...(0,i.a)(),...e.components},{Details:s}=n;return s||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(n.p,{children:"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch\xae \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01\n\u4e0a\u5468\u7684\u8fdb\u5c55\u4e3b\u8981\u6709 Linux\u3001\u5de5\u5177\u94fe\uff0c\u4ee5\u53ca GSGPU \u9a71\u52a8\u5411\u4e3b\u7ebf\u5185\u6838\u7248\u672c\u7684\u79fb\u690d\u6210\u679c\u3002\n\u8be6\u60c5\u70b9\u8fdb\u6765\u770b\uff01"}),"\n",(0,l.jsx)(n.p,{children:"\u5982\u65e0\u7279\u522b\u8bf4\u660e\uff0c\u6587\u4e2d\u63d0\u53ca\u7684\u65e5\u671f\u3001\u65f6\u95f4\u90fd\u4e3a\u5317\u4eac\u65f6\u95f4\uff08UTC+8\uff09\u3002"}),"\n",(0,l.jsx)(n.h2,{id:"\u5148\u9a6c\u518d\u770b",children:"\u5148\u300c\u9a6c\u300d\u518d\u770b"}),"\n",(0,l.jsx)(n.p,{children:"\u672c\u680f\u76ee\u7684\u5185\u5bb9\u5177\u6709\u4e00\u5b9a\u5ef6\u7eed\u6027\uff0c\u5c06\u6301\u7eed\u8ffd\u8e2a\u62a5\u9053 LoongArch\xae \u9886\u57df\u7684\u91cd\u8981\u6216\u957f\u671f\u9879\u76ee\uff08\u5751\uff09\u3002"}),"\n",(0,l.jsx)(n.h3,{id:"linux",children:"Linux"}),"\n",(0,l.jsxs)(n.p,{children:["\u622a\u81f3\u53d1\u7a3f\u65f6\uff0cLinux v6.7-rc1 ",(0,l.jsx)(n.a,{href:"https://lore.kernel.org/lkml/CAHk-=whuO0zmuxp_yorYFWdcrALpqjRPhWkmEy+7wcCnnDcPNA@mail.gmail.com/",className:"link--overseas",children:"\u5df2\u7ecf\u53d1\u5e03"}),"\u3002\n\u9f99\u67b6\u6784\u7684 PR \u662f\u5728\u6700\u540e\u4e00\u5929",(0,l.jsx)(n.a,{href:"https://lore.kernel.org/loongarch/20231112051248.272444-1-chenhuacai@loongson.cn/",className:"link--overseas",children:"\u53d1\u51fa\u7684"}),"\u3002"]}),"\n",(0,l.jsxs)(n.admonition,{title:"\u4e3a\u5565\u8fd9\u6b21 PR \u8fd9\u4e48\u665a\uff1f",type:"info",children:[(0,l.jsx)(n.p,{children:"\u539f\u56e0\u636e\u8bf4\u662f\u5148\u524d\u9f99\u82af\u559c\u6b22\u6700\u540e\u65f6\u523b\u66f4\u65b0\u5206\u652f\uff0c\u5bfc\u81f4\u65b0\u4ee3\u7801\u5728 linux-next \u8eba\u5f97\u4e0d\u591f\u4e45\uff1b\n\u4e8e\u662f\u5728\u672c\u5468\u671f\u7684 PR \u53d1\u51fa\u4e4b\u524d\uff0c\u90a3\u4e9b\u4ee3\u7801\u5c31\u8001\u8001\u5b9e\u5b9e\u8eba\u4e86 4 \u5929\u3002"}),(0,l.jsx)(n.p,{children:"\u5bf9\u90a3\u4e9b\u7784\u51c6\u4e3b\u7ebf\u7684\u4ee3\u7801\uff0c\u786e\u5b9e\u5e94\u8be5\u5728 linux-next \u591a\u5446\u51e0\u5929\uff1a\n\u8fd9\u6837\u8fd9\u4e9b\u4ee3\u7801\u624d\u6709\u673a\u4f1a\u89e6\u53ca\u66f4\u591a\u7684\u6d4b\u8bd5\u4eba\u5458\u548c\u81ea\u52a8\u5316\u8bbe\u65bd\uff0c\n\u6709\u52a9\u4e8e\u53d1\u73b0\u8de8\u5b50\u7cfb\u7edf\u6216\u67b6\u6784\u4ea7\u751f\u4e0d\u826f\u5f71\u54cd\u7684\u90a3\u4e9b\u5199\u6cd5\u3002"}),(0,l.jsx)(n.p,{children:"\u4ece\u524d\uff0c\u5728\u4e3b\u7ebf\u4e4b\u5916\u7ef4\u62a4\u9f99\u82af\u5185\u6838\u7684\u5e74\u4ee3\uff0c\u7531\u4e8e\u5916\u754c\u4e0d\u611f\u77e5\u9f99\u82af\u53d8\u66f4\uff0c\u9f99\u82af\u516c\u53f8\u4e5f\u4e0d\u6d4b\u5176\u4ed6\u67b6\u6784\uff0c\n\u56e0\u800c\u9f99\u82af\u516c\u53f8\u4e4b\u5916\u7684\u793e\u533a\u96c6\u6210\u8005\uff08\u4f8b\u5982\u7b14\u8005\uff09\u591a\u6b21\u906d\u9047\u4e86\u9f99\u82af\u76f8\u5173\u53d8\u66f4\u70b8\u6389\u5176\u4ed6\u67b6\u6784\u7684\u60c5\u51b5\u3002\n\u8fd9\u79cd\u60c5\u51b5\u5728\u9f99\u82af\u4e5f\u6e10\u6e10\u8f6c\u5411\u793e\u533a\u534f\u4f5c\u6a21\u5f0f\u4e4b\u540e\uff0c\u4fbf\u6e10\u6e10\u6d88\u5931\u4e86\u2014\u2014\u9f99\u82af\u5f71\u54cd\u4e86\u522b\u4eba\u9f99\u82af\u4f1a\u4fee\uff1b\u76f8\u5e94\u5730\uff0c\u522b\u4eba\u5f71\u54cd\u4e86\u9f99\u82af\u522b\u4eba\u4e5f\u4f1a\u4fee\uff0c\n\u800c\u6bcf\u4e00\u65b9\u90fd\u53ea\u9700\u8dd1\u81ea\u5df1\u73af\u5883\u7684\u6d4b\u8bd5\u5373\u53ef\u3002"})]}),"\n",(0,l.jsx)(n.p,{children:"\u672c\u5f00\u53d1\u5468\u671f\u4e2d\uff0c\u8f83\u4e3a\u5f15\u4eba\u6ce8\u76ee\u7684\u5927\u5757\u53d8\u66f4\u6709\uff1a"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:"\u5408\u5e76\u4e86 bcachefs \u7684\u652f\u6301\uff1b"}),"\n",(0,l.jsx)(n.li,{children:"\u79fb\u9664\u4e86 IA-64 \u67b6\u6784\u7684\u652f\u6301\uff1b"}),"\n",(0,l.jsxs)(n.li,{children:["\u5f00\u6e90\u7684 NVIDIA\xae \u663e\u5361\u9a71\u52a8 ",(0,l.jsx)(n.code,{children:"nouveau"})," \u83b7\u5f97\u4e86 GSP \u652f\u6301\u3002"]}),"\n"]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{children:"\u5565\u53eb GSP\uff1f"}),(0,l.jsx)(n.p,{children:"GSP \u662f GPU system processor \u7684\u7f29\u5199\uff1aGPU \u7cfb\u7edf\u5904\u7406\u5668\u3002"}),(0,l.jsx)(n.p,{children:"\u81ea\u4ece 2018 \u5e74\u9762\u4e16\u7684 Turing \u5fae\u67b6\u6784\u4ee5\u6765\uff0c\u65b0\u578b\u53f7\u7684 NVIDIA\xae \u663e\u5361\u90fd\u65b0\u589e\u4e86\u4e00\u5757\nRISC-V \u5fae\u63a7\u5236\u5668\uff0c\u63a5\u7ba1\u4e86\u4ece\u524d\u7531\u64cd\u4f5c\u7cfb\u7edf\u9a71\u52a8\u63a7\u5236\u7684\u8bb8\u591a\u786c\u4ef6\u8d44\u6e90\u63a7\u5236\u804c\u8d23\u3002\n\u8fd9\u4f7f\u5f97 NVIDIA \u5f97\u4ee5\u5f00\u6e90\u5176\u5185\u6838\u9a71\u52a8\uff1a\u8fd9\u4e2a\u9a71\u52a8\u53ea\u5269\u4e00\u4e2a C/S \u67b6\u6784\u7684\u5ba2\u6237\u7aef\u7a7a\u58f3\u5b50\u4e86\u3002"})]}),"\n",(0,l.jsx)(n.p,{children:"\u9f99\u67b6\u6784\u76f8\u5173\u7684\u4e3b\u8981\u53d8\u66f4\u6709\uff1a"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:"\u65b0\u589e\u4e86 KVM \u652f\u6301\uff08Tianrui Zhao\u3001Bibo Mao\u3001Huacai Chen\uff09\uff1b"}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.a,{href:"https://git.kernel.org/torvalds/c/80c7889de7a8246e44a9632a2b7d15b41ab3fe41",className:"link--overseas",children:"\u652f\u6301\u4e86"}),"\u52a8\u6001\u62a2\u5360\uff08",(0,l.jsx)(n.code,{children:"PREEMPT_DYNAMIC"}),"\uff09\uff08Huacai Chen\uff09\uff1b"]}),"\n",(0,l.jsxs)(n.li,{children:["\u5728\u4fdd\u8bc1\u6b63\u786e\u7684\u524d\u63d0\u4e0b\uff0c",(0,l.jsx)(n.a,{href:"https://git.kernel.org/torvalds/c/affef66b65889a0ea0060e13e5f7fe569897d787",className:"link--overseas",children:"\u9002\u5f53\u653e\u677e\u4e86"}),"\u539f\u5b50\u64cd\u4f5c\u7684\u7ea6\u675f\uff0c\n\u4f7f\u5f97 3A6000 \u7684 8 \u7ebf\u7a0b Unixbench \u6d4b\u8bd5\u6700\u7ec8\u5f97\u5206\u63d0\u5347\u4e86 0.47%\uff08WANG Rui\uff09\uff1b"]}),"\n",(0,l.jsxs)(n.li,{children:["\u8ddf\u8fdb\u4e86 ",(0,l.jsx)(n.a,{href:"https://lore.kernel.org/bpf/4bfe98be-5333-1c7e-2f6d-42486c8ec039@meta.com/",className:"link--overseas",children:"BPF \u865a\u62df\u673a\u6307\u4ee4\u96c6\u7684 v4 \u65b0\u589e"}),"\uff0c\n\u4e3a\u9f99\u67b6\u6784",(0,l.jsx)(n.a,{href:"https://lore.kernel.org/loongarch/20231026184337.563801-1-hengqi.chen@gmail.com/",className:"link--overseas",children:"\u589e\u52a0\u4e86"}),"\u76f8\u5e94\u652f\u6301\uff08Hengqi Chen\uff09\u3002"]}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Phoronix \u4e5f",(0,l.jsx)(n.a,{href:"https://www.phoronix.com/news/Linux-6.7-rc1",className:"link--overseas",children:"\u62a5\u9053\u4e86"}),"\u6b64\u65b0\u7248\u672c\uff0c\n\u611f\u5174\u8da3\u7684\u8bfb\u8005\u53ef\u62d3\u5c55\u9605\u8bfb\u3002"]}),"\n",(0,l.jsx)(n.h3,{id:"\u5de5\u5177\u94fe",children:"\u5de5\u5177\u94fe"}),"\n",(0,l.jsx)(n.h4,{id:"gcc",children:"gcc"}),"\n",(0,l.jsxs)(n.p,{children:["11 \u6708 11 \u65e5\uff0cXi Ruoyao ",(0,l.jsx)(n.a,{href:"https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112483",className:"link--overseas",children:"\u53d1\u73b0"}),"\u4e00\u4e9b\u6d6e\u70b9\u6570\u503c\u8ba1\u7b97\u7684\u6d4b\u8bd5\u7528\u4f8b\u7a81\u7136\u5f00\u59cb\u5931\u8d25\u4e86\uff0c\n\u6392\u67e5\u4e0b\u6765\u662f\u67b6\u6784\u65e0\u5173\u7684\u4f18\u5316\u9519\u8bef\uff0c\u4e8e\u662f\u7b2c\u4e8c\u5929",(0,l.jsx)(n.a,{href:"https://gcc.gnu.org/pipermail/gcc-patches/2023-November/636200.html",className:"link--overseas",children:"\u53d1\u51fa\u4e86"}),"\u4fee\u590d\u8865\u4e01\u3002\n\u8fc7\u7a0b\u4e2d\uff0c\u987a\u5e26\u8fd8\u53d1\u73b0\u4e86\u539f\u300c\u4f18\u5316\u300d\u5728\u9f99\u67b6\u6784\u4e0a\u5176\u5b9e\u662f\u8d1f\u4f18\u5316\uff1b\u6b63\u5728\u4e0e\u4e0a\u6e38\u4e00\u540c\u60f3\u529e\u6cd5\u89e3\u51b3\u3002"]}),"\n",(0,l.jsx)(n.admonition,{title:"\u82b1\u7d6e",type:"info",children:(0,l.jsxs)(n.p,{children:["\u5728\u6298\u817e\u8fd9\u4e2a\u95ee\u9898\u8fc7\u7a0b\u4e2d\uff0cXi Ruoyao \u53c8\u88ab",(0,l.jsx)(n.a,{href:"https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112497",className:"link--overseas",children:"\u53e6\u4e00\u4e2a\u65b0\u9c9c\u95ee\u9898"}),"\u5751\u5230\uff1a\n\u662f\u963f\u91cc\u7684\u7f16\u8bd1\u5668\u5de5\u7a0b\u5e08\u540c\u884c\u6539\u67b6\u6784\u65e0\u5173\u6d41\u6c34\u7ebf\u4f18\u5316\u4ee3\u7801\u6539\u574f\u4e86\u3002\n\u597d\u5728\u7b2c\u4e8c\u5929 GCC \u7ef4\u62a4\u8005\u53d1\u73b0\u4e86\u95ee\u9898\uff0c\u5c06\u95ee\u9898\u8865\u4e01 revert \u6389\u4e86\uff0c\n\u4fdd\u62a4\u4e86\u5f88\u591a\u76f8\u5173\u4eba\u58eb\u7684\u7761\u7720\u65f6\u95f4\uff08\u548c\u53d1\u91cf\uff09\u3002"]})}),"\n",(0,l.jsxs)(n.p,{children:["11 \u6708 10 \u65e5\uff0c\u7b14\u8005\u5728\u65e5\u5e38\u6d4b\u8bd5 Firefox 119 \u8fc7\u7a0b\u4e2d\uff0c\u7f16\u8bd1\u5668\u5d29\u6e83\u4e86\u3002\n\u641e\u4e86\u4e00\u665a\u4e0a\uff0c\u5c06\u89e6\u53d1\u95ee\u9898\u7684\u8fd1 3MiB \u6e90\u7801",(0,l.jsx)(n.a,{href:"https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112476",className:"link--overseas",children:"\u7cbe\u70bc\u6210\u4e86"}),"\u4e0a\u6e38 bug PR112476\u3002\n\u4e24\u5929\u540e Xi Ruoyao \u5c06\u5176",(0,l.jsx)(n.a,{href:"https://gcc.gnu.org/pipermail/gcc-patches/2023-November/636156.html",className:"link--overseas",children:"\u4fee\u590d\u4e86"}),"\uff0c\n\u5df2",(0,l.jsx)(n.a,{href:"https://gcc.gnu.org/g:b88500e0bc1e9e3a396ba764f9b701d22a76818f",className:"link--overseas",children:"\u8fdb\u5165\u4e3b\u7ebf"}),"\u3002"]}),"\n",(0,l.jsx)(n.p,{children:"11 \u6708 7 \u65e5\uff0cchenxiaolong \u7ed9 GCC \u8865\u5145\u4e86 LSX/LASX \u7684\u4f7f\u7528\u8bf4\u660e\u6587\u6863\uff1a"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.a,{href:"https://gcc.gnu.org/pipermail/gcc-patches/2023-November/635431.html",className:"link--overseas",children:"intrinsics"}),"\uff0c"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.a,{href:"https://gcc.gnu.org/pipermail/gcc-patches/2023-November/635435.html",className:"link--overseas",children:"\u5185\u8054\u6c47\u7f16\u7684\u64cd\u4f5c\u6570\u4fee\u9970\u7b26"}),"\u3002"]}),"\n"]}),"\n",(0,l.jsx)(n.p,{children:"11 \u6708 6 \u65e5\uff08\u521a\u597d\u9519\u8fc7\u4e0a\u671f\uff09\uff0cXi Ruoyao \u641e\u4e86\u4e09\u4e2a\u8865\u4e01\uff1a"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.a,{href:"https://gcc.gnu.org/pipermail/gcc-patches/2023-November/635277.html",className:"link--overseas",children:"\u5b8c\u5584\u4e86"}),"\nGCC \u6784\u5efa\u65f6\u5bf9 linker relaxation \u652f\u6301\u7684\u5224\u65ad\uff1a\n\u7b80\u5355\u6765\u8bf4\uff0c\u5982\u679c\u53d1\u73b0\u642d\u914d\u7684\u6c47\u7f16\u5668\u4e0d\u652f\u6301 relax \u6761\u4ef6\u5206\u652f\u6307\u4ee4\uff0c\n\u90a3\u4e48\u5c31\u4f7f\u5373\u5c06\u88ab\u6784\u5efa\u7684 GCC \u9ed8\u8ba4\u7981\u7528 relaxation\u3002\n\u8fd9\u6709\u52a9\u4e8e\u89c4\u907f\u7f16\u8bd1\u5927\u578b\u8f6f\u4ef6\u65f6\u6709\u6982\u7387\u9047\u5230\u7684\u70e6\u4eba\u7684\u300c\u91cd\u5b9a\u4f4d\u6ea2\u51fa\u300d\u9519\u8bef\u3002\n\u8fd9\u4fee\u590d\u4e86\u4e0a\u6e38 bug ",(0,l.jsx)(n.a,{href:"https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112330",className:"link--overseas",children:"PR112330"}),"\u3002"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.a,{href:"https://gcc.gnu.org/pipermail/gcc-patches/2023-November/635278.html",className:"link--overseas",children:"\u4f18\u5316\u4e86"}),"\n",(0,l.jsx)(n.code,{children:"-mexplicit-relocs=auto"})," \u914d\u7f6e\u4e0b\uff0c\u4ec5\u5355\u6b21\u4f7f\u7528\u7684\u5730\u5740\u4e0e ",(0,l.jsx)(n.code,{children:"fld"})," ",(0,l.jsx)(n.code,{children:"fst"})," \u642d\u914d\u65f6\u7684\u751f\u6210\u4ee3\u7801\u3002"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.a,{href:"https://gcc.gnu.org/pipermail/gcc-patches/2023-November/635304.html",className:"link--overseas",children:"\u79fb\u690d\u4e86"}),"\nLLVM \u7684\u4e24\u7ec4\u9f99\u67b6\u6784 LL/SC \u4ee3\u7801\u7247\u6bb5\u4f18\u5316\uff1a",(0,l.jsx)(n.a,{href:"/newsletter/this-week-in-loongarch-20#llvm",children:"\u7b2c 20 \u671f\u62a5\u9053\u8fc7\u7684"}),"\nheiher ",(0,l.jsx)(n.a,{href:"https://github.com/llvm/llvm-project/pull/6739",className:"link--overseas",children:"\u505a\u7684\u4f18\u5316"}),"\uff0c\u4ee5\u53ca\nSixWeining \u968f\u540e",(0,l.jsx)(n.a,{href:"https://github.com/llvm/llvm-project/pull/69339",className:"link--overseas",children:"\u505a\u7684\u8fdb\u4e00\u6b65\u5b8c\u5584"}),"\u3002"]}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Xi Ruoyao \u51c6\u5907\u8d76\u5728 GCC 14 stage 1 \u622a\u6b62\uff08\u7b14\u8005\u6ce8\uff1a11 \u6708 19 \u53f7\uff09\u524d\u52a0\u5165\u4e00\u6279 LA664 \u652f\u6301\uff0c\n\u4f46\u662f\u636e\u5356\u5bb6\u8bf4 ","t\u0101"," \u7684\u677f\u5b50\u8fd8\u5728\u8001\u5316\u95f4\u91cc\u3002\n\u8ba9\u6211\u4eec\u671f\u5f85\u4ed6\u80fd\u65e9\u65e5\u62ff\u5230\u677f\u5b50\uff08\u5f53\u7136\u793e\u533a\u540c\u5b66\u5305\u62ec\u7b14\u8005\u5728\u5185\u5e94\u8be5\u4e5f\u4f1a\u51fa\u624b\u76f8\u52a9\uff09\uff01"]}),"\n",(0,l.jsxs)(n.p,{children:["\u672c\u671f\u7684\u5f88\u5927\u4e00\u90e8\u5206 GCC \u65b0\u95fb\u90fd\u662f Xi Ruoyao \u63d0\u4f9b\u7684\uff0c\u611f\u8c22 ","t\u0101"," \u4ece\u73b0\u573a\u53d1\u56de\u7684\u62a5\u9053\u3002"]}),"\n",(0,l.jsx)(n.h4,{id:"llvm",children:"LLVM"}),"\n",(0,l.jsxs)(n.p,{children:["\u5728",(0,l.jsx)(n.a,{href:"/newsletter/this-week-in-loongarch-8#llvm",children:"\u5468\u62a5\u7b2c 8 \u671f"}),"\u7b14\u8005\u6253\u7b97\u505a\u6389\n",(0,l.jsx)(n.code,{children:"model"})," \u5c5e\u6027\u652f\u6301\uff0c\u5728\u4e0a\u6e38\u8ba8\u8bba\u786e\u5b9a\u4e86\u6280\u672f\u65b9\u6848\u3002\n\u4f46\u6b64\u540e\u73b0\u5b9e\u751f\u6d3b\u56e0\u7d20\u4e0e\u5404\u79cd\u5de5\u4f5c\u4f18\u5148\u7ea7\u53d8\u5316\u53e0\u52a0\uff0c\u4f7f\u5f97\u7b14\u8005\u4e0d\u5f97\u4e0d\u5f03\u6389\u6b64\u5751\u3002\n\u4e00\u5468\u524d heiher ",(0,l.jsx)(n.a,{href:"https://github.com/loongson-community/discussions/issues/10",className:"link--overseas",children:"\u51fa\u624b\u76f8\u52a9"}),"\uff0c\n\u5c06\u6b64\u5de5\u4f5c\u51b2\u8fc7\u4e86\u7ec8\u70b9\u7ebf\u3002\n\u622a\u81f3\u53d1\u7a3f\u65f6\uff0c\u76f8\u5e94\u7684 LLVM PRs \u5df2\u7ecf\u65b0\u9c9c\u5efa\u7acb\uff1a"]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.a,{href:"https://github.com/llvm/llvm-project/pull/72077",className:"link--overseas",children:"#72077"}),"\uff1a\u6269\u5c55 LLVM IR\uff0c\u65b0\u589e ",(0,l.jsx)(n.code,{children:"code_model"})," \u5168\u5c40\u91cf\u5c5e\u6027\uff0c"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.a,{href:"https://github.com/llvm/llvm-project/pull/72078",className:"link--overseas",children:"#72078"}),"\uff1a\u4e3a Clang \u65b0\u589e ",(0,l.jsx)(n.code,{children:"model"})," \u5c5e\u6027\uff0c"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.a,{href:"https://github.com/llvm/llvm-project/pull/72079",className:"link--overseas",children:"#72079"}),"\uff1a\u5728 LoongArch \u540e\u7aef\u5229\u7528\u6b64\u4fe1\u606f\u3002"]}),"\n"]}),"\n",(0,l.jsx)(n.p,{children:"\u975e\u5e38\u611f\u8c22\uff01"}),"\n",(0,l.jsxs)(n.p,{children:["11 \u6708 10 \u65e5\uff0cSixWeining \u62a5\u544a\u6709\u7528\u6237\u78b0\u5de7\u9047\u4e0a\u4e86 LLD \u8ba1\u7b97 page \u504f\u79fb\u91cf\u7684\u4e00\u5904\u6ea2\u51fa\n\uff08\u53ea\u6709\u5f53\u9700\u6c42\u7684\u504f\u79fb\u91cf\u6070\u597d\u662f ",(0,l.jsx)(n.code,{children:"-4096"})," \u624d\u4f1a\u89e6\u53d1\uff09\uff0c\n\u987a\u624b",(0,l.jsx)(n.a,{href:"https://github.com/llvm/llvm-project/pull/71907",className:"link--overseas",children:"\u4fee\u590d\u4e86"}),"\u3002"]}),"\n",(0,l.jsxs)(n.p,{children:["11 \u6708 8 \u65e5\uff0cxry111 ",(0,l.jsx)(n.a,{href:"https://github.com/llvm/llvm-project/issues/71645",className:"link--overseas",children:"\u53d1\u73b0"}),"\nClang \u5bf9\u4e8e\u975e\u4f4d\u7f6e\u65e0\u5173\u7684\u53ef\u6267\u884c\u6587\u4ef6\uff08",(0,l.jsx)(n.code,{children:"-fno-pie"}),"\uff09\u6240\u7528\u7684\u9ed8\u8ba4\u914d\u7f6e\n",(0,l.jsx)(n.code,{children:"-fdirect-access-external-data"})," \u5728 LoongArch \u4e0a\u4e0d\u80fd\u7528\uff0c\u5e76\u4e14\u4e0d\u8be5\u80fd\u7528\uff0c\n\u5efa\u8bae\u5c06\u5176\u5728 LoongArch \u5173\u6389\uff1b11 \u6708 10 \u65e5\nheiher ",(0,l.jsx)(n.a,{href:"https://github.com/llvm/llvm-project/pull/71887",className:"link--overseas",children:"\u5c1d\u8bd5\u8fd9\u4e48\u505a\u4e86"}),"\u3002"]}),"\n",(0,l.jsx)(n.h4,{id:"go",children:"Go"}),"\n",(0,l.jsxs)(n.p,{children:["10 \u6708 16 \u65e5\u524d\u540e\uff0cMeidan Li ",(0,l.jsx)(n.a,{href:"https://go.dev/cl/533716",className:"link--overseas",children:"\u63d0\u4ea4\u4e86"})," Go \u5185\u90e8\u94fe\u63a5\u5668\u7684 ",(0,l.jsx)(n.code,{children:"loong64"})," \u652f\u6301\uff1b\n11 \u6708 8 \u65e5 ","t\u0101"," \u6574\u4f53\u66f4\u4e86\u4e00\u7248\uff0c\u5e94\u8be5\u8fbe\u5230\u53ef\u4ee5\u6d4b\u8bd5\u3001\u8bc4\u5ba1\u7684\u72b6\u6001\u4e86\u3002"]}),"\n",(0,l.jsx)(n.h2,{id:"\u6742\u95fb\u64ad\u62a5",children:"\u6742\u95fb\u64ad\u62a5"}),"\n",(0,l.jsxs)(n.p,{children:["\u5317\u4eac\u65f6\u95f4 11 \u6708 13 \u65e5\u6e05\u6668\uff0c\u7531 Robin Lee \u63a8\u52a8\u3001\u5b9e\u73b0\uff0c\u5386\u65f6 9 \u4e2a\u6708\uff0cFreeDesktop SDK \u7684\n",(0,l.jsx)(n.code,{children:"loongarch64"})," \u6700\u5c0f\u5316\u865a\u62df\u673a\u7684\u6784\u5efa\u652f\u6301",(0,l.jsx)(n.a,{href:"https://gitlab.com/freedesktop-sdk/freedesktop-sdk/-/merge_requests/11510",className:"link--overseas",children:"\u5408\u5165\u4e0a\u6e38"}),"\uff1a\n\u53ef\u4ee5\u901a\u8fc7 ",(0,l.jsx)(n.code,{children:"vm/minimal/efi.bst"})," \u6784\u5efa\u865a\u62df\u673a\u7cfb\u7edf\u955c\u50cf\u6587\u4ef6\u4e86\u3002\n\u7ee7",(0,l.jsx)(n.a,{href:"/newsletter/this-week-in-loongarch-20#freedesktop-sdk-initial-support-merged",children:"\u5468\u62a5\u7b2c 20 \u671f"}),"\u4e4b\u540e\uff0c\n\u8fd9\u662f\u5c06 Flatpak \u751f\u6001\u5e26\u5165 LoongArch \u7684\u9053\u8def\u4e0a\u7684\u53c8\u4e00\u91cd\u8981\u8fdb\u5c55\u3002\n\u611f\u8c22 ","t\u0101"," \u81ea\u5df1\u6295\u9012\u7684\u65b0\u95fb\u7ebf\u7d22\uff01"]}),"\n",(0,l.jsxs)(n.p,{children:["11 \u6708 6 \u65e5 systemd ",(0,l.jsx)(n.a,{href:"https://github.com/systemd/systemd/releases/tag/v255-rc1",className:"link--overseas",children:"\u53d1\u5e03\u4e86"}),"\nv255-rc1\uff0c\u65b0\u589e\u4e86 LoongArch64 \u7684 seccomp \u652f\u6301\u3002\nseccomp \u662f\u5b9e\u73b0\u6c99\u7bb1\uff08sandbox\uff09\u529f\u80fd\u7684\u5173\u952e\u57fa\u7840\u5e93\u3002\nPhoronix \u4e5f",(0,l.jsx)(n.a,{href:"https://www.phoronix.com/news/systemd-255-rc1",className:"link--overseas",children:"\u62a5\u9053\u4e86"}),"\u6b64\u4e8b\u3002"]}),"\n",(0,l.jsxs)(n.h2,{id:"\u793e\u533a\u6574\u6d3b",children:["\u793e\u533a\u6574\u6d3b",(0,l.jsx)(n.small,{children:"\u513f"})]}),"\n",(0,l.jsxs)(n.p,{children:["\u672c\u680f\u76ee\u63a5\u53d7\u4efb\u4f55\u7f51\u53cb\u7684\u6295\u7a3f\uff0c\u53ea\u8981\u5185\u5bb9\u4e0e LoongArch\xae \u6709\u5173\uff0c\u5e76\u53ef\u4ee5\u4e3a\u8bfb\u8005\u5e26\u6765\u4ef7\u503c\uff0c\n\u65e0\u8bba\u4e25\u8083\u8d21\u732e\uff08\u6574\u7684\u5927\u6d3b",(0,l.jsx)(n.small,{children:"\u513f"}),"\uff09\u6216\u662f\u535a\u541b\u4e00\u7b11\u90fd\u4e00\u6982\u6b22\u8fce\uff01"]}),"\n",(0,l.jsxs)(n.p,{children:["\u793e\u533a\u5f00\u53d1\u8005 cl91 \u4ece",(0,l.jsx)(n.a,{href:"/newsletter/this-week-in-loongarch-18#gsgpu-for-mainline",children:"\u5468\u62a5\u7b2c 18 \u671f"}),"\u5f00\u59cb\u618b\u7684\u5927\u62db\uff0c\n\u641e\u5b9a\u4e86\uff01\n\u9f99\u82af 7A2000 \u4e2d\u7684\u72ec\u663e",(0,l.jsx)(n.sup,{children:(0,l.jsx)(n.a,{href:"#user-content-fn-what-does-discrete-mean-1ca1ec",id:"user-content-fnref-what-does-discrete-mean-1ca1ec","data-footnote-ref":!0,"aria-describedby":"footnote-label",children:"1"})}),"\u6a21\u5757\u7684\u5185\u6838\u9a71\u52a8 GSGPU \u5df2\u7ecf\u79fb\u690d\u5230\u4e86\u6700\u65b0\u7684 Linux v6.6\u3002"]}),"\n",(0,l.jsxs)(n.admonition,{title:"cl91 \u7684\u8bdd",type:"info",children:[(0,l.jsxs)(n.p,{children:["GSGPU \u6765\u6e90\u4e8e\u9f99\u82af\u516c\u53f8\u7ef4\u62a4\u7684 v4.19 \u4e0b\u6e38\u5185\u6838\u3002\n\u4e0e\u4e0a\u6e38\u5185\u6838 DRM \u5b50\u7cfb\u7edf\u4e2d\u7684 ",(0,l.jsx)(n.code,{children:"loongson"})," \u9a71\u52a8\u76f8\u6bd4\uff0c\nGSGPU \u5185\u6838\u6a21\u5757\u589e\u52a0\u4e86\u5b8c\u6574\u7684 3D \u786c\u4ef6\u76f8\u5173\u7684\u63a7\u5236\u4ee3\u7801\uff0c\n\u5e76\u5411\u7528\u6237\u6001\u66b4\u9732\u4e86\u5b9e\u73b0 3D \u6e32\u67d3\u5fc5\u9700\u7684 GPU \u7f13\u51b2\u533a\u5bf9\u8c61\uff08buffer object\uff09\u63a5\u53e3\uff0c\n\u4ee5\u53ca\u5411 GPU \u63d0\u4ea4\u6e32\u67d3\u4efb\u52a1\u7684\u76f8\u5173\u63a5\u53e3\u3002\nGSGPU \u540c\u65f6\u8fd8\u5b9e\u73b0\u4e86\u7b14\u8bb0\u672c\u80cc\u5149\u76f8\u5173\u7684\u63a7\u5236\u63a5\u53e3\uff0c\u4e0e\u4e0a\u6e38 ",(0,l.jsx)(n.code,{children:"loongson"})," DRM \u9a71\u52a8\u76f8\u6bd4\uff0c\n\u53ef\u4ee5\u652f\u6301\u642d\u8f7d 7A2000 \u6865\u7247\u7684\u7b14\u8bb0\u672c\u7684\u80cc\u5149\u8c03\u8282\u3002"]}),(0,l.jsxs)(n.p,{children:["\u5f53\u7136\u8981\u5b9e\u73b0\u9f99\u82af\u72ec\u663e\u7684 3D \u786c\u4ef6\u52a0\u901f\uff0c\u5149\u5185\u6838\u9a71\u52a8\u8fd8\u4e0d\u591f\uff0c\u8fd8\u9700\u8981\u7528\u6237\u7a7a\u95f4\u7684 mesa 3D \u9a71\u52a8\u3002\n\u8fd9\u76ee\u524d\u8fd8\u4e0d\u5b58\u5728\u5f00\u6e90\u7684\u5b9e\u73b0\uff0c\u6240\u4ee5\u8fd8\u9700\u8981\u793e\u533a\u7684\u5171\u540c\u52aa\u529b\u3002\n\u76ee\u524d\u4f7f\u7528\u4e0a\u6e38\u7684\u7528\u6237\u7a7a\u95f4\u9a71\u52a8\uff0c\u914d\u5408 2D \u8f6f\u4ef6\u6e32\u67d3\u53ef\u4ee5\u6b63\u5e38\u4f7f\u7528 X11 \u548c Wayland\uff08\u5f53\u7136\u4ec5\u9650\u4e8e2D\uff09\u3002\n\u6709\u5174\u8da3\u7684\u670b\u53cb\uff0c\u7279\u522b\u662f\u5728 7A2000 \u7b14\u8bb0\u672c\u4e0a\u4f7f\u7528\u65b0\u4e16\u754c\u5185\u6838\u7684\u670b\u53cb\u4eec\u53ef\u4ee5\u5728",(0,l.jsx)(n.a,{href:"https://bbs.loongarch.org/d/303-gsgpu",className:"link--overseas",children:"\u8fd9\u4e2a\u8bba\u575b\u8d34\u5b50"}),"\u627e\u5230\u66f4\u591a\u8be6\u60c5\u3002"]})]}),"\n",(0,l.jsx)(n.h2,{id:"\u5f20\u8d34\u680f",children:"\u5f20\u8d34\u680f"}),"\n",(0,l.jsx)(n.p,{children:"\u672c\u680f\u76ee\u53ef\u4f9b\u5f20\u8d34\u516c\u76ca\u6027\u8d28\u7684\u5404\u79cd\u4fe1\u606f\u3002"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\u53cb\u60c5\u6269\u6563\uff1a",(0,l.jsx)(n.a,{href:"https://aosc.io",className:"link--overseas",children:"\u5b89\u540c\u5f00\u6e90\u793e\u533a\uff08AOSC\uff09"}),"\u7684\u9f99\u67b6\u6784\u79fb\u690d\u4e3b\u7ebf\u5316\u5de5\u4f5c\u300c\u5408\u9f99\u300d\u4ecd\u5728\u5982\u706b\u5982\u837c\u8fdb\u884c\u4e2d\uff0c\n\u6b64\u5de5\u4f5c\u5b8c\u6210\u540e\u9f99\u67b6\u6784\u5c06\u5347\u683c\u4e3a AOSC OS \u7684 Tier 1 \u67b6\u6784\u3002\n\u6b22\u8fce\u540c\u5b66\u4eec\u8bd5\u7528\u3001\u53cd\u9988\uff0c\u4e5f\u6b22\u8fce\u6709\u5fd7\u4e4b\u58eb\u4e00\u540c\u52a0\u5165\uff08\u6c9f\u901a\u6e20\u9053\u8be6\u89c1 AOSC \u7f51\u7ad9\u76f8\u5173\u680f\u76ee\uff09\u3002"]}),"\n",(0,l.jsxs)(n.li,{children:["11 \u6708 11 \u65e5\uff0cAOSC \u7684\u65b0\u4e00\u671f\u53cc\u5468\u62a5\u300a\u5b89\u8bb0\u51b0\u5ba4\u30fb\u5341\u4e00\u6708\u4e0a\u300b",(0,l.jsx)(n.a,{href:"https://github.com/AOSC-Dev/newsroom/blob/b747c8e383b40695dce1fb9d7efbb19d64991d68/coffee-break/20231111/zh_CN.md",className:"link--overseas",children:"\u53d1\u5e03\u4e86"}),"\uff0c\n\u6b22\u8fce\u540c\u5b66\u4eec\u9605\u8bfb\u3002An English version ",(0,l.jsx)(n.a,{href:"https://github.com/AOSC-Dev/newsroom/blob/b747c8e383b40695dce1fb9d7efbb19d64991d68/coffee-break/20231111/en.md",className:"link--overseas",children:"is also available"}),"."]}),"\n",(0,l.jsxs)(n.li,{children:["\u672c\u5468\u62a5",(0,l.jsx)(n.a,{href:"https://github.com/loongson-community/areweloongyet/issues/16",className:"link--overseas",children:"\u6301\u7eed\u63a5\u53d7\u7f51\u53cb\u6295\u7a3f"}),"\u3002\u6b22\u8fce\u6765\u4e0a\u6e38\u5750\u5750\uff01"]}),"\n"]}),"\n",(0,l.jsxs)(n.section,{"data-footnotes":!0,className:"footnotes",children:[(0,l.jsx)(n.h2,{className:"sr-only",id:"footnote-label",children:"Footnotes"}),"\n",(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{id:"user-content-fn-what-does-discrete-mean-1ca1ec",children:["\n",(0,l.jsxs)(n.p,{children:["\u6309\u7167\u300c\u96c6\u6210\u5728\u4e3b\u677f\u4e0a\u7684\u663e\u5361\u5c31\u662f\u96c6\u663e\u300d\u8fd9\u4e2a\u76f4\u89c2\u6d45\u663e\u7684\u5224\u65ad\u6807\u51c6\uff0c\u5f53\u524d\u7684 GSGPU \u5f53\u7136\u4e0d\u7b97\u300c\u72ec\u663e\u300d\u3002\u9f99\u82af\u5b98\u65b9\u6587\u732e\u5c06 7A2000 GPU \u79f0\u4f5c\u300c\u72ec\u663e\u300d\u7684\u53d8\u66f4\u662f\u67d0\u5929\u7a81\u7136\u53d1\u751f\u7684\uff0c\u4e14\u81f3\u4eca\u672a\u660e\u786e\u8be5\u672f\u8bed\u7684\u5168\u79f0\uff1b\u7b14\u8005\u4e2a\u4eba\u8ba4\u4e3a\u8fd9\u662f\u5ba3\u4f20\u4e0a\u538b\u4eba\u4e00\u5934\u7684\u6587\u5b57\u6e38\u620f\uff0c\u5176\u5b9e\u9645\u542b\u4e49\u4e3a\u300c\u72ec\u7acb\u663e\u5b58\u300d\u3002\u6bd5\u7adf\u867d\u7136 GSGPU \u4ecd\u7136\u53d7\u9650\u4e8e\u6838\u5fc3\u9762\u79ef\u3001\u4f9b\u7535\u7b49\u56e0\u7d20\u800c\u4e0d\u5982\u771f\u6b63\u7684\u300c\u72ec\u7acb\u663e\u5361\u300d\uff0c\u4f46\u7531\u4e8e\u72ec\u7acb\u663e\u5b58\u65b9\u6848\u80fd\u591f\u907f\u514d\u5171\u4eab\u7cfb\u7edf\u5185\u5b58\u7684\u96c6\u663e\u65b9\u6848\u5bf9\u5e38\u89c4\u5185\u5b58\u8bbf\u95ee\u7684\u5f71\u54cd\uff0c\u4ece\u800c\u4f7f\u5f97 GSGPU \u786e\u5b9e\u6709\u6f5c\u529b\u8d85\u8fc7\u8fd9\u79cd\u96c6\u663e\u7684\u6027\u80fd\u3002\uff08\u81f3\u4e8e\u4e24\u79cd\u65b9\u6848\u7684\u771f\u5b9e\u5bf9\u6bd4\uff0c\u7531\u4e8e\u9f99\u82af\u5927\u6982\u7387\u4e0d\u4f1a\u505a\u51fa\u5171\u4eab\u663e\u5b58\u7684 GSGPU \u4ee5\u4fbf\u63a7\u5236\u53d8\u91cf\uff0c\u4e5f\u5c31\u65e0\u4ece\u5b9e\u5730\u9a8c\u8bc1\u4e86\u3002\uff09 ",(0,l.jsx)(n.a,{href:"#user-content-fnref-what-does-discrete-mean-1ca1ec","data-footnote-backref":"","aria-label":"Back to reference 1",className:"data-footnote-backref",children:"\u21a9"})]}),"\n"]}),"\n"]}),"\n"]})]})}function d(e={}){const{wrapper:n}={...(0,i.a)(),...e.components};return n?(0,l.jsx)(n,{...e,children:(0,l.jsx)(h,{...e})}):h(e)}},1151:(e,n,s)=>{s.d(n,{Z:()=>o,a:()=>c});var l=s(7294);const i={},r=l.createContext(i);function c(e){const n=l.useContext(r);return l.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:c(e.components),l.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/cc17e890.5eef9301.js b/assets/js/cc17e890.5eef9301.js deleted file mode 100644 index 9e89d05f..00000000 --- a/assets/js/cc17e890.5eef9301.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkareweloongyet=self.webpackChunkareweloongyet||[]).push([[616],{6344:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>a,contentTitle:()=>c,default:()=>d,frontMatter:()=>r,metadata:()=>o,toc:()=>t});var l=s(5893),i=s(1151);const r={slug:"this-week-in-loongarch-24",title:"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 24 \u671f",authors:["xen0n"],date:new Date("2023-11-13T15:50:00.000Z"),tags:["\u6bcf\u5468\u4e00\u9f99"]},c=void 0,o={permalink:"/newsletter/this-week-in-loongarch-24",editUrl:"https://github.com/loongson-community/areweloongyet/newsletter/2023-11-13-this-week-in-loongarch-24.md",source:"@site/newsletter/2023-11-13-this-week-in-loongarch-24.md",title:"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 24 \u671f",description:"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch® \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01",date:"2023-11-13T15:50:00.000Z",formattedDate:"2023\u5e7411\u670813\u65e5",tags:[{label:"\u6bcf\u5468\u4e00\u9f99",permalink:"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99"}],readingTime:12.56,hasTruncateMarker:!0,authors:[{name:"WANG Xuerui",title:"\ud83d\udc32\u9f99\u95e8\u5ba2\u6808\u6253\u6742\u7684",url:"https://github.com/xen0n",imageURL:"https://github.com/xen0n.png",key:"xen0n"}],frontMatter:{slug:"this-week-in-loongarch-24",title:"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 24 \u671f",authors:["xen0n"],date:"2023-11-13T15:50:00.000Z",tags:["\u6bcf\u5468\u4e00\u9f99"]},unlisted:!1,prevItem:{title:"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 25 \u671f",permalink:"/newsletter/this-week-in-loongarch-25"},nextItem:{title:"\u6bcf\u5468\u4e00\u9f99\uff1a\u7b2c 23 \u671f",permalink:"/newsletter/this-week-in-loongarch-23"}},a={authorsImageUrls:[void 0]},t=[{value:"\u5148\u300c\u9a6c\u300d\u518d\u770b",id:"\u5148\u9a6c\u518d\u770b",level:2},{value:"Linux",id:"linux",level:3},{value:"\u5de5\u5177\u94fe",id:"\u5de5\u5177\u94fe",level:3},{value:"gcc",id:"gcc",level:4},{value:"LLVM",id:"llvm",level:4},{value:"Go",id:"go",level:4},{value:"\u6742\u95fb\u64ad\u62a5",id:"\u6742\u95fb\u64ad\u62a5",level:2},{value:"\u793e\u533a\u6574\u6d3b",id:"\u793e\u533a\u6574\u6d3b",level:2},{value:"\u5f20\u8d34\u680f",id:"\u5f20\u8d34\u680f",level:2}];function h(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",h4:"h4",li:"li",ol:"ol",p:"p",section:"section",small:"small",sup:"sup",ul:"ul",...(0,i.a)(),...e.components},{Details:s}=n;return s||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(n.p,{children:"\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch\xae \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01\n\u4e0a\u5468\u7684\u8fdb\u5c55\u4e3b\u8981\u6709 Linux\u3001\u5de5\u5177\u94fe\uff0c\u4ee5\u53ca GSGPU \u9a71\u52a8\u5411\u4e3b\u7ebf\u5185\u6838\u7248\u672c\u7684\u79fb\u690d\u6210\u679c\u3002\n\u8be6\u60c5\u70b9\u8fdb\u6765\u770b\uff01"}),"\n",(0,l.jsx)(n.p,{children:"\u5982\u65e0\u7279\u522b\u8bf4\u660e\uff0c\u6587\u4e2d\u63d0\u53ca\u7684\u65e5\u671f\u3001\u65f6\u95f4\u90fd\u4e3a\u5317\u4eac\u65f6\u95f4\uff08UTC+8\uff09\u3002"}),"\n",(0,l.jsx)(n.h2,{id:"\u5148\u9a6c\u518d\u770b",children:"\u5148\u300c\u9a6c\u300d\u518d\u770b"}),"\n",(0,l.jsx)(n.p,{children:"\u672c\u680f\u76ee\u7684\u5185\u5bb9\u5177\u6709\u4e00\u5b9a\u5ef6\u7eed\u6027\uff0c\u5c06\u6301\u7eed\u8ffd\u8e2a\u62a5\u9053 LoongArch\xae \u9886\u57df\u7684\u91cd\u8981\u6216\u957f\u671f\u9879\u76ee\uff08\u5751\uff09\u3002"}),"\n",(0,l.jsx)(n.h3,{id:"linux",children:"Linux"}),"\n",(0,l.jsxs)(n.p,{children:["\u622a\u81f3\u53d1\u7a3f\u65f6\uff0cLinux v6.7-rc1 ",(0,l.jsx)(n.a,{href:"https://lore.kernel.org/lkml/CAHk-=whuO0zmuxp_yorYFWdcrALpqjRPhWkmEy+7wcCnnDcPNA@mail.gmail.com/",className:"link--overseas",children:"\u5df2\u7ecf\u53d1\u5e03"}),"\u3002\n\u9f99\u67b6\u6784\u7684 PR \u662f\u5728\u6700\u540e\u4e00\u5929",(0,l.jsx)(n.a,{href:"https://lore.kernel.org/loongarch/20231112051248.272444-1-chenhuacai@loongson.cn/",className:"link--overseas",children:"\u53d1\u51fa\u7684"}),"\u3002"]}),"\n",(0,l.jsxs)(n.admonition,{title:"\u4e3a\u5565\u8fd9\u6b21 PR \u8fd9\u4e48\u665a\uff1f",type:"info",children:[(0,l.jsx)(n.p,{children:"\u539f\u56e0\u636e\u8bf4\u662f\u5148\u524d\u9f99\u82af\u559c\u6b22\u6700\u540e\u65f6\u523b\u66f4\u65b0\u5206\u652f\uff0c\u5bfc\u81f4\u65b0\u4ee3\u7801\u5728 linux-next \u8eba\u5f97\u4e0d\u591f\u4e45\uff1b\n\u4e8e\u662f\u5728\u672c\u5468\u671f\u7684 PR \u53d1\u51fa\u4e4b\u524d\uff0c\u90a3\u4e9b\u4ee3\u7801\u5c31\u8001\u8001\u5b9e\u5b9e\u8eba\u4e86 4 \u5929\u3002"}),(0,l.jsx)(n.p,{children:"\u5bf9\u90a3\u4e9b\u7784\u51c6\u4e3b\u7ebf\u7684\u4ee3\u7801\uff0c\u786e\u5b9e\u5e94\u8be5\u5728 linux-next \u591a\u5446\u51e0\u5929\uff1a\n\u8fd9\u6837\u8fd9\u4e9b\u4ee3\u7801\u624d\u6709\u673a\u4f1a\u89e6\u53ca\u66f4\u591a\u7684\u6d4b\u8bd5\u4eba\u5458\u548c\u81ea\u52a8\u5316\u8bbe\u65bd\uff0c\n\u6709\u52a9\u4e8e\u53d1\u73b0\u8de8\u5b50\u7cfb\u7edf\u6216\u67b6\u6784\u4ea7\u751f\u4e0d\u826f\u5f71\u54cd\u7684\u90a3\u4e9b\u5199\u6cd5\u3002"}),(0,l.jsx)(n.p,{children:"\u4ece\u524d\uff0c\u5728\u4e3b\u7ebf\u4e4b\u5916\u7ef4\u62a4\u9f99\u82af\u5185\u6838\u7684\u5e74\u4ee3\uff0c\u7531\u4e8e\u5916\u754c\u4e0d\u611f\u77e5\u9f99\u82af\u53d8\u66f4\uff0c\u9f99\u82af\u516c\u53f8\u4e5f\u4e0d\u6d4b\u5176\u4ed6\u67b6\u6784\uff0c\n\u56e0\u800c\u9f99\u82af\u516c\u53f8\u4e4b\u5916\u7684\u793e\u533a\u96c6\u6210\u8005\uff08\u4f8b\u5982\u7b14\u8005\uff09\u591a\u6b21\u906d\u9047\u4e86\u9f99\u82af\u76f8\u5173\u53d8\u66f4\u70b8\u6389\u5176\u4ed6\u67b6\u6784\u7684\u60c5\u51b5\u3002\n\u8fd9\u79cd\u60c5\u51b5\u5728\u9f99\u82af\u4e5f\u6e10\u6e10\u8f6c\u5411\u793e\u533a\u534f\u4f5c\u6a21\u5f0f\u4e4b\u540e\uff0c\u4fbf\u6e10\u6e10\u6d88\u5931\u4e86\u2014\u2014\u9f99\u82af\u5f71\u54cd\u4e86\u522b\u4eba\u9f99\u82af\u4f1a\u4fee\uff1b\u76f8\u5e94\u5730\uff0c\u522b\u4eba\u5f71\u54cd\u4e86\u9f99\u82af\u522b\u4eba\u4e5f\u4f1a\u4fee\uff0c\n\u800c\u6bcf\u4e00\u65b9\u90fd\u53ea\u9700\u8dd1\u81ea\u5df1\u73af\u5883\u7684\u6d4b\u8bd5\u5373\u53ef\u3002"})]}),"\n",(0,l.jsx)(n.p,{children:"\u672c\u5f00\u53d1\u5468\u671f\u4e2d\uff0c\u8f83\u4e3a\u5f15\u4eba\u6ce8\u76ee\u7684\u5927\u5757\u53d8\u66f4\u6709\uff1a"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:"\u5408\u5e76\u4e86 bcachefs \u7684\u652f\u6301\uff1b"}),"\n",(0,l.jsx)(n.li,{children:"\u79fb\u9664\u4e86 IA-64 \u67b6\u6784\u7684\u652f\u6301\uff1b"}),"\n",(0,l.jsxs)(n.li,{children:["\u5f00\u6e90\u7684 NVIDIA\xae \u663e\u5361\u9a71\u52a8 ",(0,l.jsx)(n.code,{children:"nouveau"})," \u83b7\u5f97\u4e86 GSP \u652f\u6301\u3002"]}),"\n"]}),"\n",(0,l.jsxs)(s,{children:[(0,l.jsx)("summary",{children:"\u5565\u53eb GSP\uff1f"}),(0,l.jsx)(n.p,{children:"GSP \u662f GPU system processor \u7684\u7f29\u5199\uff1aGPU \u7cfb\u7edf\u5904\u7406\u5668\u3002"}),(0,l.jsx)(n.p,{children:"\u81ea\u4ece 2018 \u5e74\u9762\u4e16\u7684 Turing \u5fae\u67b6\u6784\u4ee5\u6765\uff0c\u65b0\u578b\u53f7\u7684 NVIDIA\xae \u663e\u5361\u90fd\u65b0\u589e\u4e86\u4e00\u5757\nRISC-V \u5fae\u63a7\u5236\u5668\uff0c\u63a5\u7ba1\u4e86\u4ece\u524d\u7531\u64cd\u4f5c\u7cfb\u7edf\u9a71\u52a8\u63a7\u5236\u7684\u8bb8\u591a\u786c\u4ef6\u8d44\u6e90\u63a7\u5236\u804c\u8d23\u3002\n\u8fd9\u4f7f\u5f97 NVIDIA \u5f97\u4ee5\u5f00\u6e90\u5176\u5185\u6838\u9a71\u52a8\uff1a\u8fd9\u4e2a\u9a71\u52a8\u53ea\u5269\u4e00\u4e2a C/S \u67b6\u6784\u7684\u5ba2\u6237\u7aef\u7a7a\u58f3\u5b50\u4e86\u3002"})]}),"\n",(0,l.jsx)(n.p,{children:"\u9f99\u67b6\u6784\u76f8\u5173\u7684\u4e3b\u8981\u53d8\u66f4\u6709\uff1a"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:"\u65b0\u589e\u4e86 KVM \u652f\u6301\uff08Tianrui Zhao\u3001Bibo Mao\u3001Huacai Chen\uff09\uff1b"}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.a,{href:"https://git.kernel.org/torvalds/c/80c7889de7a8246e44a9632a2b7d15b41ab3fe41",className:"link--overseas",children:"\u652f\u6301\u4e86"}),"\u52a8\u6001\u62a2\u5360\uff08",(0,l.jsx)(n.code,{children:"PREEMPT_DYNAMIC"}),"\uff09\uff08Huacai Chen\uff09\uff1b"]}),"\n",(0,l.jsxs)(n.li,{children:["\u5728\u4fdd\u8bc1\u6b63\u786e\u7684\u524d\u63d0\u4e0b\uff0c",(0,l.jsx)(n.a,{href:"https://git.kernel.org/torvalds/c/affef66b65889a0ea0060e13e5f7fe569897d787",className:"link--overseas",children:"\u9002\u5f53\u653e\u677e\u4e86"}),"\u539f\u5b50\u64cd\u4f5c\u7684\u7ea6\u675f\uff0c\n\u4f7f\u5f97 3A6000 \u7684 8 \u7ebf\u7a0b Unixbench \u6d4b\u8bd5\u6700\u7ec8\u5f97\u5206\u63d0\u5347\u4e86 0.47%\uff08WANG Rui\uff09\uff1b"]}),"\n",(0,l.jsxs)(n.li,{children:["\u8ddf\u8fdb\u4e86 ",(0,l.jsx)(n.a,{href:"https://lore.kernel.org/bpf/4bfe98be-5333-1c7e-2f6d-42486c8ec039@meta.com/",className:"link--overseas",children:"BPF \u865a\u62df\u673a\u6307\u4ee4\u96c6\u7684 v4 \u65b0\u589e"}),"\uff0c\n\u4e3a\u9f99\u67b6\u6784",(0,l.jsx)(n.a,{href:"https://lore.kernel.org/loongarch/20231026184337.563801-1-hengqi.chen@gmail.com/",className:"link--overseas",children:"\u589e\u52a0\u4e86"}),"\u76f8\u5e94\u652f\u6301\uff08Hengqi Chen\uff09\u3002"]}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Phoronix \u4e5f",(0,l.jsx)(n.a,{href:"https://www.phoronix.com/news/Linux-6.7-rc1",className:"link--overseas",children:"\u62a5\u9053\u4e86"}),"\u6b64\u65b0\u7248\u672c\uff0c\n\u611f\u5174\u8da3\u7684\u8bfb\u8005\u53ef\u62d3\u5c55\u9605\u8bfb\u3002"]}),"\n",(0,l.jsx)(n.h3,{id:"\u5de5\u5177\u94fe",children:"\u5de5\u5177\u94fe"}),"\n",(0,l.jsx)(n.h4,{id:"gcc",children:"gcc"}),"\n",(0,l.jsxs)(n.p,{children:["11 \u6708 11 \u65e5\uff0cXi Ruoyao ",(0,l.jsx)(n.a,{href:"https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112483",className:"link--overseas",children:"\u53d1\u73b0"}),"\u4e00\u4e9b\u6d6e\u70b9\u6570\u503c\u8ba1\u7b97\u7684\u6d4b\u8bd5\u7528\u4f8b\u7a81\u7136\u5f00\u59cb\u5931\u8d25\u4e86\uff0c\n\u6392\u67e5\u4e0b\u6765\u662f\u67b6\u6784\u65e0\u5173\u7684\u4f18\u5316\u9519\u8bef\uff0c\u4e8e\u662f\u7b2c\u4e8c\u5929",(0,l.jsx)(n.a,{href:"https://gcc.gnu.org/pipermail/gcc-patches/2023-November/636200.html",className:"link--overseas",children:"\u53d1\u51fa\u4e86"}),"\u4fee\u590d\u8865\u4e01\u3002\n\u8fc7\u7a0b\u4e2d\uff0c\u987a\u5e26\u8fd8\u53d1\u73b0\u4e86\u539f\u300c\u4f18\u5316\u300d\u5728\u9f99\u67b6\u6784\u4e0a\u5176\u5b9e\u662f\u8d1f\u4f18\u5316\uff1b\u6b63\u5728\u4e0e\u4e0a\u6e38\u4e00\u540c\u60f3\u529e\u6cd5\u89e3\u51b3\u3002"]}),"\n",(0,l.jsx)(n.admonition,{title:"\u82b1\u7d6e",type:"info",children:(0,l.jsxs)(n.p,{children:["\u5728\u6298\u817e\u8fd9\u4e2a\u95ee\u9898\u8fc7\u7a0b\u4e2d\uff0cXi Ruoyao \u53c8\u88ab",(0,l.jsx)(n.a,{href:"https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112497",className:"link--overseas",children:"\u53e6\u4e00\u4e2a\u65b0\u9c9c\u95ee\u9898"}),"\u5751\u5230\uff1a\n\u662f\u963f\u91cc\u7684\u7f16\u8bd1\u5668\u5de5\u7a0b\u5e08\u540c\u884c\u6539\u67b6\u6784\u65e0\u5173\u6d41\u6c34\u7ebf\u4f18\u5316\u4ee3\u7801\u6539\u574f\u4e86\u3002\n\u597d\u5728\u7b2c\u4e8c\u5929 GCC \u7ef4\u62a4\u8005\u53d1\u73b0\u4e86\u95ee\u9898\uff0c\u5c06\u95ee\u9898\u8865\u4e01 revert \u6389\u4e86\uff0c\n\u4fdd\u62a4\u4e86\u5f88\u591a\u76f8\u5173\u4eba\u58eb\u7684\u7761\u7720\u65f6\u95f4\uff08\u548c\u53d1\u91cf\uff09\u3002"]})}),"\n",(0,l.jsxs)(n.p,{children:["11 \u6708 10 \u65e5\uff0c\u7b14\u8005\u5728\u65e5\u5e38\u6d4b\u8bd5 Firefox 119 \u8fc7\u7a0b\u4e2d\uff0c\u7f16\u8bd1\u5668\u5d29\u6e83\u4e86\u3002\n\u641e\u4e86\u4e00\u665a\u4e0a\uff0c\u5c06\u89e6\u53d1\u95ee\u9898\u7684\u8fd1 3MiB \u6e90\u7801",(0,l.jsx)(n.a,{href:"https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112476",className:"link--overseas",children:"\u7cbe\u70bc\u6210\u4e86"}),"\u4e0a\u6e38 bug PR112476\u3002\n\u4e24\u5929\u540e Xi Ruoyao \u5c06\u5176",(0,l.jsx)(n.a,{href:"https://gcc.gnu.org/pipermail/gcc-patches/2023-November/636156.html",className:"link--overseas",children:"\u4fee\u590d\u4e86"}),"\uff0c\n\u5df2",(0,l.jsx)(n.a,{href:"https://gcc.gnu.org/g:b88500e0bc1e9e3a396ba764f9b701d22a76818f",className:"link--overseas",children:"\u8fdb\u5165\u4e3b\u7ebf"}),"\u3002"]}),"\n",(0,l.jsx)(n.p,{children:"11 \u6708 7 \u65e5\uff0cchenxiaolong \u7ed9 GCC \u8865\u5145\u4e86 LSX/LASX \u7684\u4f7f\u7528\u8bf4\u660e\u6587\u6863\uff1a"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.a,{href:"https://gcc.gnu.org/pipermail/gcc-patches/2023-November/635431.html",className:"link--overseas",children:"intrinsics"}),"\uff0c"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.a,{href:"https://gcc.gnu.org/pipermail/gcc-patches/2023-November/635435.html",className:"link--overseas",children:"\u5185\u8054\u6c47\u7f16\u7684\u64cd\u4f5c\u6570\u4fee\u9970\u7b26"}),"\u3002"]}),"\n"]}),"\n",(0,l.jsx)(n.p,{children:"11 \u6708 6 \u65e5\uff08\u521a\u597d\u9519\u8fc7\u4e0a\u671f\uff09\uff0cXi Ruoyao \u641e\u4e86\u4e09\u4e2a\u8865\u4e01\uff1a"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.a,{href:"https://gcc.gnu.org/pipermail/gcc-patches/2023-November/635277.html",className:"link--overseas",children:"\u5b8c\u5584\u4e86"}),"\nGCC \u6784\u5efa\u65f6\u5bf9 linker relaxation \u652f\u6301\u7684\u5224\u65ad\uff1a\n\u7b80\u5355\u6765\u8bf4\uff0c\u5982\u679c\u53d1\u73b0\u642d\u914d\u7684\u6c47\u7f16\u5668\u4e0d\u652f\u6301 relax \u6761\u4ef6\u5206\u652f\u6307\u4ee4\uff0c\n\u90a3\u4e48\u5c31\u4f7f\u5373\u5c06\u88ab\u6784\u5efa\u7684 GCC \u9ed8\u8ba4\u7981\u7528 relaxation\u3002\n\u8fd9\u6709\u52a9\u4e8e\u89c4\u907f\u7f16\u8bd1\u5927\u578b\u8f6f\u4ef6\u65f6\u6709\u6982\u7387\u9047\u5230\u7684\u70e6\u4eba\u7684\u300c\u91cd\u5b9a\u4f4d\u6ea2\u51fa\u300d\u9519\u8bef\u3002\n\u8fd9\u4fee\u590d\u4e86\u4e0a\u6e38 bug ",(0,l.jsx)(n.a,{href:"https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112330",className:"link--overseas",children:"PR112330"}),"\u3002"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.a,{href:"https://gcc.gnu.org/pipermail/gcc-patches/2023-November/635278.html",className:"link--overseas",children:"\u4f18\u5316\u4e86"}),"\n",(0,l.jsx)(n.code,{children:"-mexplicit-relocs=auto"})," \u914d\u7f6e\u4e0b\uff0c\u4ec5\u5355\u6b21\u4f7f\u7528\u7684\u5730\u5740\u4e0e ",(0,l.jsx)(n.code,{children:"fld"})," ",(0,l.jsx)(n.code,{children:"fst"})," \u642d\u914d\u65f6\u7684\u751f\u6210\u4ee3\u7801\u3002"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.a,{href:"https://gcc.gnu.org/pipermail/gcc-patches/2023-November/635304.html",className:"link--overseas",children:"\u79fb\u690d\u4e86"}),"\nLLVM \u7684\u4e24\u7ec4\u9f99\u67b6\u6784 LL/SC \u4ee3\u7801\u7247\u6bb5\u4f18\u5316\uff1a",(0,l.jsx)(n.a,{href:"/newsletter/this-week-in-loongarch-20#llvm",children:"\u7b2c 20 \u671f\u62a5\u9053\u8fc7\u7684"}),"\nheiher ",(0,l.jsx)(n.a,{href:"https://github.com/llvm/llvm-project/pull/6739",className:"link--overseas",children:"\u505a\u7684\u4f18\u5316"}),"\uff0c\u4ee5\u53ca\nSixWeining \u968f\u540e",(0,l.jsx)(n.a,{href:"https://github.com/llvm/llvm-project/pull/69339",className:"link--overseas",children:"\u505a\u7684\u8fdb\u4e00\u6b65\u5b8c\u5584"}),"\u3002"]}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["Xi Ruoyao \u51c6\u5907\u8d76\u5728 GCC 14 stage 1 \u622a\u6b62\uff08\u7b14\u8005\u6ce8\uff1a11 \u6708 19 \u53f7\uff09\u524d\u52a0\u5165\u4e00\u6279 LA664 \u652f\u6301\uff0c\n\u4f46\u662f\u636e\u5356\u5bb6\u8bf4 ","t\u0101"," \u7684\u677f\u5b50\u8fd8\u5728\u8001\u5316\u95f4\u91cc\u3002\n\u8ba9\u6211\u4eec\u671f\u5f85\u4ed6\u80fd\u65e9\u65e5\u62ff\u5230\u677f\u5b50\uff08\u5f53\u7136\u793e\u533a\u540c\u5b66\u5305\u62ec\u7b14\u8005\u5728\u5185\u5e94\u8be5\u4e5f\u4f1a\u51fa\u624b\u76f8\u52a9\uff09\uff01"]}),"\n",(0,l.jsxs)(n.p,{children:["\u672c\u671f\u7684\u5f88\u5927\u4e00\u90e8\u5206 GCC \u65b0\u95fb\u90fd\u662f Xi Ruoyao \u63d0\u4f9b\u7684\uff0c\u611f\u8c22 ","t\u0101"," \u4ece\u73b0\u573a\u53d1\u56de\u7684\u62a5\u9053\u3002"]}),"\n",(0,l.jsx)(n.h4,{id:"llvm",children:"LLVM"}),"\n",(0,l.jsxs)(n.p,{children:["\u5728",(0,l.jsx)(n.a,{href:"/newsletter/this-week-in-loongarch-8#llvm",children:"\u5468\u62a5\u7b2c 8 \u671f"}),"\u7b14\u8005\u6253\u7b97\u505a\u6389\n",(0,l.jsx)(n.code,{children:"model"})," \u5c5e\u6027\u652f\u6301\uff0c\u5728\u4e0a\u6e38\u8ba8\u8bba\u786e\u5b9a\u4e86\u6280\u672f\u65b9\u6848\u3002\n\u4f46\u6b64\u540e\u73b0\u5b9e\u751f\u6d3b\u56e0\u7d20\u4e0e\u5404\u79cd\u5de5\u4f5c\u4f18\u5148\u7ea7\u53d8\u5316\u53e0\u52a0\uff0c\u4f7f\u5f97\u7b14\u8005\u4e0d\u5f97\u4e0d\u5f03\u6389\u6b64\u5751\u3002\n\u4e00\u5468\u524d heiher ",(0,l.jsx)(n.a,{href:"https://github.com/loongson-community/discussions/issues/10",className:"link--overseas",children:"\u51fa\u624b\u76f8\u52a9"}),"\uff0c\n\u5c06\u6b64\u5de5\u4f5c\u51b2\u8fc7\u4e86\u7ec8\u70b9\u7ebf\u3002\n\u622a\u81f3\u53d1\u7a3f\u65f6\uff0c\u76f8\u5e94\u7684 LLVM PRs \u5df2\u7ecf\u65b0\u9c9c\u5efa\u7acb\uff1a"]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.a,{href:"https://github.com/llvm/llvm-project/pull/72077",className:"link--overseas",children:"#72077"}),"\uff1a\u6269\u5c55 LLVM IR\uff0c\u65b0\u589e ",(0,l.jsx)(n.code,{children:"code_model"})," \u5168\u5c40\u91cf\u5c5e\u6027\uff0c"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.a,{href:"https://github.com/llvm/llvm-project/pull/72078",className:"link--overseas",children:"#72078"}),"\uff1a\u4e3a Clang \u65b0\u589e ",(0,l.jsx)(n.code,{children:"model"})," \u5c5e\u6027\uff0c"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.a,{href:"https://github.com/llvm/llvm-project/pull/72079",className:"link--overseas",children:"#72079"}),"\uff1a\u5728 LoongArch \u540e\u7aef\u5229\u7528\u6b64\u4fe1\u606f\u3002"]}),"\n"]}),"\n",(0,l.jsx)(n.p,{children:"\u975e\u5e38\u611f\u8c22\uff01"}),"\n",(0,l.jsxs)(n.p,{children:["11 \u6708 10 \u65e5\uff0cSixWeining \u62a5\u544a\u6709\u7528\u6237\u78b0\u5de7\u9047\u4e0a\u4e86 LLD \u8ba1\u7b97 page \u504f\u79fb\u91cf\u7684\u4e00\u5904\u6ea2\u51fa\n\uff08\u53ea\u6709\u5f53\u9700\u6c42\u7684\u504f\u79fb\u91cf\u6070\u597d\u662f ",(0,l.jsx)(n.code,{children:"-4096"})," \u624d\u4f1a\u89e6\u53d1\uff09\uff0c\n\u987a\u624b",(0,l.jsx)(n.a,{href:"https://github.com/llvm/llvm-project/pull/71907",className:"link--overseas",children:"\u4fee\u590d\u4e86"}),"\u3002"]}),"\n",(0,l.jsxs)(n.p,{children:["11 \u6708 8 \u65e5\uff0cxry111 ",(0,l.jsx)(n.a,{href:"https://github.com/llvm/llvm-project/issues/71645",className:"link--overseas",children:"\u53d1\u73b0"}),"\nClang \u5bf9\u4e8e\u975e\u4f4d\u7f6e\u65e0\u5173\u7684\u53ef\u6267\u884c\u6587\u4ef6\uff08",(0,l.jsx)(n.code,{children:"-fno-pie"}),"\uff09\u6240\u7528\u7684\u9ed8\u8ba4\u914d\u7f6e\n",(0,l.jsx)(n.code,{children:"-fdirect-access-external-data"})," \u5728 LoongArch \u4e0a\u4e0d\u80fd\u7528\uff0c\u5e76\u4e14\u4e0d\u8be5\u80fd\u7528\uff0c\n\u5efa\u8bae\u5c06\u5176\u5728 LoongArch \u5173\u6389\uff1b11 \u6708 10 \u65e5\nheiher ",(0,l.jsx)(n.a,{href:"https://github.com/llvm/llvm-project/pull/71887",className:"link--overseas",children:"\u5c1d\u8bd5\u8fd9\u4e48\u505a\u4e86"}),"\u3002"]}),"\n",(0,l.jsx)(n.h4,{id:"go",children:"Go"}),"\n",(0,l.jsxs)(n.p,{children:["10 \u6708 16 \u65e5\u524d\u540e\uff0cMeidan Li ",(0,l.jsx)(n.a,{href:"https://go.dev/cl/533716",className:"link--overseas",children:"\u63d0\u4ea4\u4e86"})," Go \u5185\u90e8\u94fe\u63a5\u5668\u7684 ",(0,l.jsx)(n.code,{children:"loong64"})," \u652f\u6301\uff1b\n11 \u6708 8 \u65e5 ","t\u0101"," \u6574\u4f53\u66f4\u4e86\u4e00\u7248\uff0c\u5e94\u8be5\u8fbe\u5230\u53ef\u4ee5\u6d4b\u8bd5\u3001\u8bc4\u5ba1\u7684\u72b6\u6001\u4e86\u3002"]}),"\n",(0,l.jsx)(n.h2,{id:"\u6742\u95fb\u64ad\u62a5",children:"\u6742\u95fb\u64ad\u62a5"}),"\n",(0,l.jsxs)(n.p,{children:["\u5317\u4eac\u65f6\u95f4 11 \u6708 13 \u65e5\u6e05\u6668\uff0c\u7531 Robin Lee \u63a8\u52a8\u3001\u5b9e\u73b0\uff0c\u5386\u65f6 9 \u4e2a\u6708\uff0cFreeDesktop SDK \u7684\n",(0,l.jsx)(n.code,{children:"loongarch64"})," \u6700\u5c0f\u5316\u865a\u62df\u673a\u7684\u6784\u5efa\u652f\u6301",(0,l.jsx)(n.a,{href:"https://gitlab.com/freedesktop-sdk/freedesktop-sdk/-/merge_requests/11510",className:"link--overseas",children:"\u5408\u5165\u4e0a\u6e38"}),"\uff1a\n\u53ef\u4ee5\u901a\u8fc7 ",(0,l.jsx)(n.code,{children:"vm/minimal/efi.bst"})," \u6784\u5efa\u865a\u62df\u673a\u7cfb\u7edf\u955c\u50cf\u6587\u4ef6\u4e86\u3002\n\u7ee7",(0,l.jsx)(n.a,{href:"/newsletter/this-week-in-loongarch-20#freedesktop-sdk-initial-support-merged",children:"\u5468\u62a5\u7b2c 20 \u671f"}),"\u4e4b\u540e\uff0c\n\u8fd9\u662f\u5c06 Flatpak \u751f\u6001\u5e26\u5165 LoongArch \u7684\u9053\u8def\u4e0a\u7684\u53c8\u4e00\u91cd\u8981\u8fdb\u5c55\u3002\n\u611f\u8c22 ","t\u0101"," \u81ea\u5df1\u6295\u9012\u7684\u65b0\u95fb\u7ebf\u7d22\uff01"]}),"\n",(0,l.jsxs)(n.p,{children:["11 \u6708 6 \u65e5 systemd ",(0,l.jsx)(n.a,{href:"https://github.com/systemd/systemd/releases/tag/v255-rc1",className:"link--overseas",children:"\u53d1\u5e03\u4e86"}),"\nv255-rc1\uff0c\u65b0\u589e\u4e86 LoongArch64 \u7684 seccomp \u652f\u6301\u3002\nseccomp \u662f\u5b9e\u73b0\u6c99\u7bb1\uff08sandbox\uff09\u529f\u80fd\u7684\u5173\u952e\u57fa\u7840\u5e93\u3002\nPhoronix \u4e5f",(0,l.jsx)(n.a,{href:"https://www.phoronix.com/news/systemd-255-rc1",className:"link--overseas",children:"\u62a5\u9053\u4e86"}),"\u6b64\u4e8b\u3002"]}),"\n",(0,l.jsxs)(n.h2,{id:"\u793e\u533a\u6574\u6d3b",children:["\u793e\u533a\u6574\u6d3b",(0,l.jsx)(n.small,{children:"\u513f"})]}),"\n",(0,l.jsxs)(n.p,{children:["\u672c\u680f\u76ee\u63a5\u53d7\u4efb\u4f55\u7f51\u53cb\u7684\u6295\u7a3f\uff0c\u53ea\u8981\u5185\u5bb9\u4e0e LoongArch\xae \u6709\u5173\uff0c\u5e76\u53ef\u4ee5\u4e3a\u8bfb\u8005\u5e26\u6765\u4ef7\u503c\uff0c\n\u65e0\u8bba\u4e25\u8083\u8d21\u732e\uff08\u6574\u7684\u5927\u6d3b",(0,l.jsx)(n.small,{children:"\u513f"}),"\uff09\u6216\u662f\u535a\u541b\u4e00\u7b11\u90fd\u4e00\u6982\u6b22\u8fce\uff01"]}),"\n",(0,l.jsxs)(n.p,{children:["\u793e\u533a\u5f00\u53d1\u8005 cl91 \u4ece",(0,l.jsx)(n.a,{href:"/newsletter/this-week-in-loongarch-18#gsgpu-for-mainline",children:"\u5468\u62a5\u7b2c 18 \u671f"}),"\u5f00\u59cb\u618b\u7684\u5927\u62db\uff0c\n\u641e\u5b9a\u4e86\uff01\n\u9f99\u82af 7A2000 \u4e2d\u7684\u72ec\u663e",(0,l.jsx)(n.sup,{children:(0,l.jsx)(n.a,{href:"#user-content-fn-what-does-discrete-mean-1ca1ec",id:"user-content-fnref-what-does-discrete-mean-1ca1ec","data-footnote-ref":!0,"aria-describedby":"footnote-label",children:"1"})}),"\u6a21\u5757\u7684\u5185\u6838\u9a71\u52a8 GSGPU \u5df2\u7ecf\u79fb\u690d\u5230\u4e86\u6700\u65b0\u7684 Linux v6.6\u3002"]}),"\n",(0,l.jsxs)(n.admonition,{title:"cl91 \u7684\u8bdd",type:"info",children:[(0,l.jsxs)(n.p,{children:["GSGPU \u6765\u6e90\u4e8e\u9f99\u82af\u516c\u53f8\u7ef4\u62a4\u7684 v4.19 \u4e0b\u6e38\u5185\u6838\u3002\n\u4e0e\u4e0a\u6e38\u5185\u6838 DRM \u5b50\u7cfb\u7edf\u4e2d\u7684 ",(0,l.jsx)(n.code,{children:"loongson"})," \u9a71\u52a8\u76f8\u6bd4\uff0c\nGSGPU \u5185\u6838\u6a21\u5757\u589e\u52a0\u4e86\u5b8c\u6574\u7684 3D \u786c\u4ef6\u76f8\u5173\u7684\u63a7\u5236\u4ee3\u7801\uff0c\n\u5e76\u5411\u7528\u6237\u6001\u66b4\u9732\u4e86\u5b9e\u73b0 3D \u6e32\u67d3\u5fc5\u9700\u7684 GPU \u7f13\u51b2\u533a\u5bf9\u8c61\uff08buffer object\uff09\u63a5\u53e3\uff0c\n\u4ee5\u53ca\u5411 GPU \u63d0\u4ea4\u6e32\u67d3\u4efb\u52a1\u7684\u76f8\u5173\u63a5\u53e3\u3002\nGSGPU \u540c\u65f6\u8fd8\u5b9e\u73b0\u4e86\u7b14\u8bb0\u672c\u80cc\u5149\u76f8\u5173\u7684\u63a7\u5236\u63a5\u53e3\uff0c\u4e0e\u4e0a\u6e38 ",(0,l.jsx)(n.code,{children:"loongson"})," DRM \u9a71\u52a8\u76f8\u6bd4\uff0c\n\u53ef\u4ee5\u652f\u6301\u642d\u8f7d 7A2000 \u6865\u7247\u7684\u7b14\u8bb0\u672c\u7684\u80cc\u5149\u8c03\u8282\u3002"]}),(0,l.jsxs)(n.p,{children:["\u5f53\u7136\u8981\u5b9e\u73b0\u9f99\u82af\u72ec\u663e\u7684 3D \u786c\u4ef6\u52a0\u901f\uff0c\u5149\u5185\u6838\u9a71\u52a8\u8fd8\u4e0d\u591f\uff0c\u8fd8\u9700\u8981\u7528\u6237\u7a7a\u95f4\u7684 mesa 3D \u9a71\u52a8\u3002\n\u8fd9\u76ee\u524d\u8fd8\u4e0d\u5b58\u5728\u5f00\u6e90\u7684\u5b9e\u73b0\uff0c\u6240\u4ee5\u8fd8\u9700\u8981\u793e\u533a\u7684\u5171\u540c\u52aa\u529b\u3002\n\u76ee\u524d\u4f7f\u7528\u4e0a\u6e38\u7684\u7528\u6237\u7a7a\u95f4\u9a71\u52a8\uff0c\u914d\u5408 2D \u8f6f\u4ef6\u6e32\u67d3\u53ef\u4ee5\u6b63\u5e38\u4f7f\u7528 X11 \u548c Wayland\uff08\u5f53\u7136\u4ec5\u9650\u4e8e2D\uff09\u3002\n\u6709\u5174\u8da3\u7684\u670b\u53cb\uff0c\u7279\u522b\u662f\u5728 7A2000 \u7b14\u8bb0\u672c\u4e0a\u4f7f\u7528\u65b0\u4e16\u754c\u5185\u6838\u7684\u670b\u53cb\u4eec\u53ef\u4ee5\u5728",(0,l.jsx)(n.a,{href:"https://bbs.loongarch.org/d/303-gsgpu",className:"link--overseas",children:"\u8fd9\u4e2a\u8bba\u575b\u8d34\u5b50"}),"\u627e\u5230\u66f4\u591a\u8be6\u60c5\u3002"]})]}),"\n",(0,l.jsx)(n.h2,{id:"\u5f20\u8d34\u680f",children:"\u5f20\u8d34\u680f"}),"\n",(0,l.jsx)(n.p,{children:"\u672c\u680f\u76ee\u53ef\u4f9b\u5f20\u8d34\u516c\u76ca\u6027\u8d28\u7684\u5404\u79cd\u4fe1\u606f\u3002"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\u53cb\u60c5\u6269\u6563\uff1a",(0,l.jsx)(n.a,{href:"https://aosc.io",className:"link--overseas",children:"\u5b89\u540c\u5f00\u6e90\u793e\u533a\uff08AOSC\uff09"}),"\u7684\u9f99\u67b6\u6784\u79fb\u690d\u4e3b\u7ebf\u5316\u5de5\u4f5c\u300c\u5408\u9f99\u300d\u4ecd\u5728\u5982\u706b\u5982\u837c\u8fdb\u884c\u4e2d\uff0c\n\u6b64\u5de5\u4f5c\u5b8c\u6210\u540e\u9f99\u67b6\u6784\u5c06\u5347\u683c\u4e3a AOSC OS \u7684 Tier 1 \u67b6\u6784\u3002\n\u6b22\u8fce\u540c\u5b66\u4eec\u8bd5\u7528\u3001\u53cd\u9988\uff0c\u4e5f\u6b22\u8fce\u6709\u5fd7\u4e4b\u58eb\u4e00\u540c\u52a0\u5165\uff08\u6c9f\u901a\u6e20\u9053\u8be6\u89c1 AOSC \u7f51\u7ad9\u76f8\u5173\u680f\u76ee\uff09\u3002"]}),"\n",(0,l.jsxs)(n.li,{children:["11 \u6708 11 \u65e5\uff0cAOSC \u7684\u65b0\u4e00\u671f\u53cc\u5468\u62a5\u300a\u5b89\u8bb0\u51b0\u5ba4\u30fb\u5341\u4e00\u6708\u4e0a\u300b",(0,l.jsx)(n.a,{href:"https://github.com/AOSC-Dev/newsroom/blob/b747c8e383b40695dce1fb9d7efbb19d64991d68/coffee-break/20231111/zh_CN.md",className:"link--overseas",children:"\u53d1\u5e03\u4e86"}),"\uff0c\n\u6b22\u8fce\u540c\u5b66\u4eec\u9605\u8bfb\u3002An English version ",(0,l.jsx)(n.a,{href:"https://github.com/AOSC-Dev/newsroom/blob/b747c8e383b40695dce1fb9d7efbb19d64991d68/coffee-break/20231111/en.md",className:"link--overseas",children:"is also available"}),"."]}),"\n",(0,l.jsxs)(n.li,{children:["\u672c\u5468\u62a5",(0,l.jsx)(n.a,{href:"https://github.com/loongson-community/areweloongyet/issues/16",className:"link--overseas",children:"\u6301\u7eed\u63a5\u53d7\u7f51\u53cb\u6295\u7a3f"}),"\u3002\u6b22\u8fce\u6765\u4e0a\u6e38\u5750\u5750\uff01"]}),"\n"]}),"\n",(0,l.jsxs)(n.section,{"data-footnotes":!0,className:"footnotes",children:[(0,l.jsx)(n.h2,{className:"sr-only",id:"footnote-label",children:"Footnotes"}),"\n",(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{id:"user-content-fn-what-does-discrete-mean-1ca1ec",children:["\n",(0,l.jsxs)(n.p,{children:["\u6309\u7167\u300c\u96c6\u6210\u5728\u4e3b\u677f\u4e0a\u7684\u663e\u5361\u5c31\u662f\u96c6\u663e\u300d\u8fd9\u4e2a\u76f4\u89c2\u6d45\u663e\u7684\u5224\u65ad\u6807\u51c6\uff0c\u5f53\u524d\u7684 GSGPU \u5f53\u7136\u4e0d\u7b97\u300c\u72ec\u663e\u300d\u3002\u9f99\u82af\u5b98\u65b9\u6587\u732e\u5c06 7A2000 GPU \u79f0\u4f5c\u300c\u72ec\u663e\u300d\u7684\u53d8\u66f4\u662f\u67d0\u5929\u7a81\u7136\u53d1\u751f\u7684\uff0c\u4e14\u81f3\u4eca\u672a\u660e\u786e\u8be5\u672f\u8bed\u7684\u5168\u79f0\uff1b\u7b14\u8005\u4e2a\u4eba\u8ba4\u4e3a\u8fd9\u662f\u5ba3\u4f20\u4e0a\u538b\u4eba\u4e00\u5934\u7684\u6587\u5b57\u6e38\u620f\uff0c\u5176\u5b9e\u9645\u542b\u4e49\u4e3a\u300c\u72ec\u7acb\u663e\u5b58\u300d\u3002\u6bd5\u7adf\u867d\u7136 GSGPU \u4ecd\u7136\u53d7\u9650\u4e8e\u6838\u5fc3\u9762\u79ef\u3001\u4f9b\u7535\u7b49\u56e0\u7d20\u800c\u4e0d\u5982\u771f\u6b63\u7684\u300c\u72ec\u7acb\u663e\u5361\u300d\uff0c\u4f46\u7531\u4e8e\u72ec\u7acb\u663e\u5b58\u65b9\u6848\u80fd\u591f\u907f\u514d\u5171\u4eab\u7cfb\u7edf\u5185\u5b58\u7684\u96c6\u663e\u65b9\u6848\u5bf9\u5e38\u89c4\u5185\u5b58\u8bbf\u95ee\u7684\u5f71\u54cd\uff0c\u4ece\u800c\u4f7f\u5f97 GSGPU \u786e\u5b9e\u6709\u6f5c\u529b\u8d85\u8fc7\u8fd9\u79cd\u96c6\u663e\u7684\u6027\u80fd\u3002\uff08\u81f3\u4e8e\u4e24\u79cd\u65b9\u6848\u7684\u771f\u5b9e\u5bf9\u6bd4\uff0c\u7531\u4e8e\u9f99\u82af\u5927\u6982\u7387\u4e0d\u4f1a\u505a\u51fa\u5171\u4eab\u663e\u5b58\u7684 GSGPU \u4ee5\u4fbf\u63a7\u5236\u53d8\u91cf\uff0c\u4e5f\u5c31\u65e0\u4ece\u5b9e\u5730\u9a8c\u8bc1\u4e86\u3002\uff09 ",(0,l.jsx)(n.a,{href:"#user-content-fnref-what-does-discrete-mean-1ca1ec","data-footnote-backref":"","aria-label":"Back to reference 1",className:"data-footnote-backref",children:"\u21a9"})]}),"\n"]}),"\n"]}),"\n"]})]})}function d(e={}){const{wrapper:n}={...(0,i.a)(),...e.components};return n?(0,l.jsx)(n,{...e,children:(0,l.jsx)(h,{...e})}):h(e)}},1151:(e,n,s)=>{s.d(n,{Z:()=>o,a:()=>c});var l=s(7294);const i={},r=l.createContext(i);function c(e){const n=l.useContext(r);return l.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:c(e.components),l.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/d8bb8b3a.e6e7f5f5.js b/assets/js/d8bb8b3a.fcfccbcf.js similarity index 90% rename from assets/js/d8bb8b3a.e6e7f5f5.js rename to assets/js/d8bb8b3a.fcfccbcf.js index 80baaa9b..08f0abd2 100644 --- a/assets/js/d8bb8b3a.e6e7f5f5.js +++ b/assets/js/d8bb8b3a.fcfccbcf.js @@ -1 +1 @@ -"use strict";(self.webpackChunkareweloongyet=self.webpackChunkareweloongyet||[]).push([[7756],{3553:e=>{e.exports=JSON.parse('{"permalink":"/newsletter/page/3","page":3,"postsPerPage":10,"totalPages":4,"totalCount":31,"previousPage":"/newsletter/page/2","nextPage":"/newsletter/page/4","blogDescription":"\u9f99\u67b6\u6784\xae\u65b0\u4e16\u754c\u751f\u6001\u5efa\u8bbe\u5468\u62a5\u300a\u6bcf\u5468\u4e00\u9f99\u300b\uff08This Week in LoongArch\uff09\u3002\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch\xae \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01","blogTitle":"\u6bcf\u5468\u4e00\u9f99"}')}}]); \ No newline at end of file +"use strict";(self.webpackChunkareweloongyet=self.webpackChunkareweloongyet||[]).push([[7756],{3553:e=>{e.exports=JSON.parse('{"permalink":"/newsletter/page/3","page":3,"postsPerPage":10,"totalPages":4,"totalCount":32,"previousPage":"/newsletter/page/2","nextPage":"/newsletter/page/4","blogDescription":"\u9f99\u67b6\u6784\xae\u65b0\u4e16\u754c\u751f\u6001\u5efa\u8bbe\u5468\u62a5\u300a\u6bcf\u5468\u4e00\u9f99\u300b\uff08This Week in LoongArch\uff09\u3002\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch\xae \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01","blogTitle":"\u6bcf\u5468\u4e00\u9f99"}')}}]); \ No newline at end of file diff --git a/assets/js/e1be883e.80780071.js b/assets/js/e1be883e.0bd99653.js similarity index 91% rename from assets/js/e1be883e.80780071.js rename to assets/js/e1be883e.0bd99653.js index 28f2226a..62e88178 100644 --- a/assets/js/e1be883e.80780071.js +++ b/assets/js/e1be883e.0bd99653.js @@ -1 +1 @@ -"use strict";(self.webpackChunkareweloongyet=self.webpackChunkareweloongyet||[]).push([[4511],{1068:e=>{e.exports=JSON.parse('{"permalink":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99/page/3","page":3,"postsPerPage":10,"totalPages":4,"totalCount":31,"previousPage":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99/page/2","nextPage":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99/page/4","blogDescription":"\u9f99\u67b6\u6784\xae\u65b0\u4e16\u754c\u751f\u6001\u5efa\u8bbe\u5468\u62a5\u300a\u6bcf\u5468\u4e00\u9f99\u300b\uff08This Week in LoongArch\uff09\u3002\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch\xae \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01","blogTitle":"\u6bcf\u5468\u4e00\u9f99"}')}}]); \ No newline at end of file +"use strict";(self.webpackChunkareweloongyet=self.webpackChunkareweloongyet||[]).push([[4511],{1068:e=>{e.exports=JSON.parse('{"permalink":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99/page/3","page":3,"postsPerPage":10,"totalPages":4,"totalCount":32,"previousPage":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99/page/2","nextPage":"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99/page/4","blogDescription":"\u9f99\u67b6\u6784\xae\u65b0\u4e16\u754c\u751f\u6001\u5efa\u8bbe\u5468\u62a5\u300a\u6bcf\u5468\u4e00\u9f99\u300b\uff08This Week in LoongArch\uff09\u3002\u6bcf\u5468\u4e00\u90fd\u4e3a\u5927\u5bb6\u62a5\u9053 LoongArch\xae \u793e\u533a\u6700\u524d\u7ebf\u7684\u7b2c\u4e00\u624b\u65b0\u9c9c\u8d44\u8baf\uff01","blogTitle":"\u6bcf\u5468\u4e00\u9f99"}')}}]); \ No newline at end of file diff --git a/assets/js/f05c6541.adae4b93.js b/assets/js/f05c6541.adae4b93.js new file mode 100644 index 00000000..ae3eb1ea --- /dev/null +++ b/assets/js/f05c6541.adae4b93.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkareweloongyet=self.webpackChunkareweloongyet||[]).push([[9171],{2778:e=>{e.exports=JSON.parse('{"code":"openwrt","name":"OpenWrt","homepageURL":"https://openwrt.org","repoURL":"https://github.com/openwrt","portingEfforts":[{"authors":["hackpascal"],"desc":"","link":"https://github.com/openwrt/openwrt/pull/14357","supportStatus":6,"releasedSinceVersion":"","goodSinceVersion":"","quality":1},{"authors":["phorcys"],"desc":"\u53ef\u7528\uff0c\u4f46\u4f3c\u4e4e\u65e0\u610f\u63a8\u5165\u4e0a\u6e38","link":"https://github.com/phorcys/openwrt-loongarch","supportStatus":5,"releasedSinceVersion":"","goodSinceVersion":"","quality":0}]}')}}]); \ No newline at end of file diff --git a/assets/js/main.371b7eca.js b/assets/js/main.371b7eca.js deleted file mode 100644 index 73d55f30..00000000 --- a/assets/js/main.371b7eca.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! For license information please see main.371b7eca.js.LICENSE.txt */ -(self.webpackChunkareweloongyet=self.webpackChunkareweloongyet||[]).push([[179],{723:(e,t,n)=>{"use strict";n.d(t,{Z:()=>p});n(7294);var r=n(8356),o=n.n(r),a=n(6887);const i={"01a85c17":[()=>Promise.all([n.e(532),n.e(4013)]).then(n.bind(n,1223)),"@theme/BlogTagsListPage",1223],"04cc8988":[()=>n.e(1436).then(n.bind(n,5219)),"@site/newsletter/2023-07-24-this-week-in-loongarch-10.md?truncated=true",5219],"04e9173a":[()=>n.e(1322).then(n.bind(n,3096)),"@site/newsletter/2023-10-02-this-week-in-loongarch-18.md?truncated=true",3096],"067884b2":[()=>n.e(3915).then(n.t.bind(n,8602,19)),"/home/runner/work/areweloongyet/areweloongyet/.docusaurus/awly-data-plugin/default/project.binutils.json",8602],"09be6a1b":[()=>n.e(3895).then(n.t.bind(n,5123,19)),"/home/runner/work/areweloongyet/areweloongyet/.docusaurus/awly-data-plugin/default/porter.xen0n.json",5123],"0e384e19":[()=>n.e(9671).then(n.bind(n,7876)),"@site/docs/intro.md",7876],10260071:[()=>n.e(6849).then(n.bind(n,5383)),"@site/newsletter/2023-11-20-this-week-in-loongarch-25.md",5383],"1296bf60":[()=>n.e(3338).then(n.t.bind(n,4914,19)),"/home/runner/work/areweloongyet/areweloongyet/.docusaurus/awly-data-plugin/default/project.gentoo.json",4914],"131bb4ca":[()=>n.e(996).then(n.t.bind(n,2662,19)),"/home/runner/work/areweloongyet/areweloongyet/.docusaurus/awly-asmdb-plugin/default/plugin-route-context-module-100.json",2662],"169ddf7d":[()=>n.e(2487).then(n.t.bind(n,3752,19)),"~blog/blog-newsletter/newsletter-tags-\u6bcf\u5468\u4e00\u9f99-790.json",3752],17896441:[()=>Promise.all([n.e(532),n.e(7874),n.e(7918)]).then(n.bind(n,8945)),"@theme/DocItem",8945],"18b9561e":[()=>n.e(6457).then(n.bind(n,8513)),"@site/newsletter/2023-09-18-this-week-in-loongarch-16.md?truncated=true",8513],"18bbda43":[()=>n.e(3113).then(n.t.bind(n,5532,19)),"~blog/blog-newsletter/newsletter-tags-tags-371.json",5532],"190e34ed":[()=>n.e(6918).then(n.bind(n,37)),"@site/docs/contrib/index.md",37],"1a1dfb8e":[()=>n.e(736).then(n.bind(n,6674)),"@site/newsletter/2023-09-04-this-week-in-loongarch-14.md",6674],"1a4e3797":[()=>Promise.all([n.e(532),n.e(7920)]).then(n.bind(n,1473)),"@theme/SearchPage",1473],"1a849a5f":[()=>n.e(704).then(n.t.bind(n,7083,19)),"~blog/blog-newsletter/blog-post-list-prop-blog-newsletter.json",7083],"1b656150":[()=>n.e(3914).then(n.bind(n,6458)),"@site/newsletter/2023-07-03-this-week-in-loongarch-7.md",6458],"1cbe2215":[()=>n.e(4992).then(n.bind(n,9020)),"@site/docs/collection-of-typical-configurations.md",9020],"1d0f744e":[()=>n.e(2145).then(n.t.bind(n,9167,19)),"~blog/blog-newsletter/newsletter-tags-\u6bcf\u5468\u4e00\u9f99-790-list.json",9167],"1df578fd":[()=>n.e(6378).then(n.bind(n,7500)),"@site/newsletter/2023-09-11-this-week-in-loongarch-15.md?truncated=true",7500],"1df93b7f":[()=>Promise.all([n.e(532),n.e(6486),n.e(3237)]).then(n.bind(n,8391)),"@site/src/pages/index.tsx",8391],"1e30d886":[()=>n.e(9562).then(n.t.bind(n,955,19)),"/home/runner/work/areweloongyet/areweloongyet/.docusaurus/awly-data-plugin/default/project.freebsd.json",955],"20d934e8":[()=>n.e(9892).then(n.bind(n,4174)),"@site/newsletter/2023-09-11-this-week-in-loongarch-15.md",4174],"2587bc9f":[()=>n.e(3287).then(n.bind(n,6481)),"@site/newsletter/2023-06-27-these-weeks-in-loongarch-6.md",6481],"258ac86d":[()=>n.e(5734).then(n.t.bind(n,4121,19)),"/home/runner/work/areweloongyet/areweloongyet/.docusaurus/awly-data-plugin/default/project.haiku.json",4121],"27c32937":[()=>n.e(9770).then(n.bind(n,615)),"@site/newsletter/2023-09-18-this-week-in-loongarch-16.md",615],"27c3e8d6":[()=>n.e(9050).then(n.t.bind(n,1908,19)),"/home/runner/work/areweloongyet/areweloongyet/.docusaurus/awly-data-plugin/default/project.spidermonkey.json",1908],"28c851e0":[()=>n.e(6736).then(n.bind(n,8921)),"@site/newsletter/2023-07-10-this-week-in-loongarch-8.md?truncated=true",8921],"2a96ad0c":[()=>n.e(8072).then(n.t.bind(n,4376,19)),"/home/runner/work/areweloongyet/areweloongyet/.docusaurus/awly-data-plugin/default/porter.xry111.json",4376],"2bf2970b":[()=>n.e(7096).then(n.bind(n,5437)),"@site/newsletter/2023-12-26-this-week-in-loongarch-30/index.md?truncated=true",5437],"30c6a1e4":[()=>n.e(3638).then(n.bind(n,1306)),"@site/newsletter/2023-11-20-this-week-in-loongarch-25.md?truncated=true",1306],"30fc67a5":[()=>n.e(9449).then(n.bind(n,1761)),"@site/newsletter/2023-10-23-this-week-in-loongarch-21.md",1761],"316c37ba":[()=>n.e(889).then(n.t.bind(n,9251,19)),"~blog/blog-newsletter/newsletter-page-2-1b2.json",9251],"33037dad":[()=>n.e(7894).then(n.bind(n,500)),"@site/newsletter/2023-05-29-this-week-in-loongarch-3.md?truncated=true",500],"35a1c358":[()=>n.e(3207).then(n.t.bind(n,3881,19)),"~blog/blog-newsletter/newsletter-tags-\u6bcf\u5468\u4e00\u9f99-page-2-d7d-list.json",3881],"37a7b374":[()=>n.e(6232).then(n.t.bind(n,9038,19)),"~blog/blog-newsletter/newsletter-page-4-99e.json",9038],"3838a754":[()=>n.e(9409).then(n.bind(n,7958)),"@site/newsletter/2023-05-15-this-week-in-loongarch-1.md",7958],"3ceb2b4a":[()=>n.e(9891).then(n.t.bind(n,2864,19)),"~blog/default/blog-tags-\u4e3b\u521b\u56e2\u961f\u7684\u8bdd-1c7-list.json",2864],"3dc772a5":[()=>Promise.all([n.e(532),n.e(3123)]).then(n.bind(n,1578)),"@site/newsletter/2023-08-28-this-week-in-loongarch-13.mdx",1578],"405b8d16":[()=>n.e(5133).then(n.t.bind(n,5618,19)),"/home/runner/work/areweloongyet/areweloongyet/.docusaurus/awly-data-plugin/default/project.yongbao.json",5618],"40c243ad":[()=>n.e(2976).then(n.bind(n,9834)),"@site/newsletter/2023-05-22-this-week-in-loongarch-2.md?truncated=true",9834],"4112cc1c":[()=>n.e(8887).then(n.t.bind(n,6055,19)),"/home/runner/work/areweloongyet/areweloongyet/.docusaurus/awly-data-plugin/default/project.qemu.json",6055],"41af9025":[()=>n.e(5653).then(n.t.bind(n,7247,19)),"/home/runner/work/areweloongyet/areweloongyet/.docusaurus/awly-data-plugin/default/project.clfs.json",7247],"469a9e88":[()=>n.e(6150).then(n.t.bind(n,8016,19)),"~blog/blog-newsletter/newsletter-tags-\u6bcf\u5468\u4e00\u9f99-page-3-fa7.json",8016],47159631:[()=>n.e(6882).then(n.bind(n,3318)),"@site/newsletter/2024-01-01-this-week-in-loongarch-31.md?truncated=true",3318],"4abb55cb":[()=>n.e(6054).then(n.t.bind(n,1467,19)),"/home/runner/work/areweloongyet/areweloongyet/.docusaurus/awly-data-plugin/default/project.luajit.json",1467],"4d72142f":[()=>n.e(2821).then(n.bind(n,5506)),"@site/newsletter/2023-11-13-this-week-in-loongarch-24.md?truncated=true",5506],"4d93a969":[()=>n.e(6465).then(n.bind(n,4195)),"@site/docs/old-and-new-worlds.md",4195],"50076e77":[()=>n.e(1823).then(n.bind(n,9003)),"@site/newsletter/2023-10-30-this-week-in-loongarch-22.md",9003],"50c9f306":[()=>n.e(992).then(n.bind(n,3168)),"@site/newsletter/2023-09-25-this-week-in-loongarch-17.md?truncated=true",3168],"5107e9e5":[()=>n.e(2396).then(n.t.bind(n,1390,19)),"/home/runner/work/areweloongyet/areweloongyet/.docusaurus/awly-data-plugin/default/porter.sunhaiyong1978.json",1390],"52fdc1c1":[()=>n.e(6625).then(n.t.bind(n,5305,19)),"/home/runner/work/areweloongyet/areweloongyet/.docusaurus/awly-data-plugin/default/project.dlang.json",5305],"565f64fd":[()=>n.e(810).then(n.bind(n,3273)),"@site/newsletter/2023-10-16-this-week-in-loongarch-20.md",3273],57699003:[()=>n.e(8483).then(n.t.bind(n,5745,19)),"/home/runner/work/areweloongyet/areweloongyet/.docusaurus/docusaurus-plugin-content-pages/default/plugin-route-context-module-100.json",5745],"5cc6810a":[()=>n.e(3493).then(n.t.bind(n,7516,19)),"~blog/blog-newsletter/newsletter-8a9.json",7516],"5daa9bec":[()=>n.e(744).then(n.bind(n,5958)),"@site/newsletter/2023-08-22-these-weeks-in-loongarch-12.md",5958],"5e1e6895":[()=>n.e(827).then(n.bind(n,2233)),"@site/newsletter/2024-01-01-this-week-in-loongarch-31.md",2233],"5e95c892":[()=>n.e(9661).then(n.bind(n,1892)),"@theme/DocsRoot",1892],"5e9f5e1a":[()=>Promise.resolve().then(n.bind(n,6809)),"@generated/docusaurus.config",6809],"60c936d9":[()=>n.e(7717).then(n.bind(n,4931)),"@site/blog/2023-10-27-we-are-now-served-from-cn-mainland.md?truncated=true",4931],"614884f9":[()=>n.e(4582).then(n.t.bind(n,2649,19)),"~blog/blog-newsletter/newsletter-tags-\u6bcf\u5468\u4e00\u9f99-page-4-f5b.json",2649],"6238acf3":[()=>n.e(8347).then(n.bind(n,6509)),"@site/newsletter/2023-07-10-this-week-in-loongarch-8.md",6509],"6245aafd":[()=>n.e(1991).then(n.t.bind(n,9016,19)),"~blog/blog-newsletter/newsletter-tags-\u6bcf\u5468\u4e00\u9f99-page-4-f5b-list.json",9016],"63024a3c":[()=>n.e(6260).then(n.bind(n,1362)),"@site/newsletter/2023-11-27-this-week-in-loongarch-26.md?truncated=true",1362],"67c307ab":[()=>n.e(1339).then(n.bind(n,5725)),"@site/newsletter/2023-07-17-this-week-in-loongarch-9.md",5725],"67e4ea0e":[()=>n.e(8526).then(n.t.bind(n,2319,19)),"/home/runner/work/areweloongyet/areweloongyet/.docusaurus/awly-data-plugin/default/project.mono.json",2319],"6834beab":[()=>n.e(1235).then(n.bind(n,966)),"@site/newsletter/2023-12-18-this-week-in-loongarch-29/index.md",966],"6875c492":[()=>Promise.all([n.e(532),n.e(7874),n.e(130),n.e(8610)]).then(n.bind(n,1714)),"@theme/BlogTagsPostsPage",1714],"6a1040a2":[()=>n.e(2327).then(n.t.bind(n,4717,19)),"/home/runner/work/areweloongyet/areweloongyet/.docusaurus/awly-data-plugin/default/project.slackware.json",4717],"6d3617bd":[()=>n.e(6693).then(n.t.bind(n,1641,19)),"/home/runner/work/areweloongyet/areweloongyet/.docusaurus/awly-data-plugin/default/project.gnumach.json",1641],"6ead9d48":[()=>n.e(7633).then(n.t.bind(n,7977,19)),"/home/runner/work/areweloongyet/areweloongyet/.docusaurus/awly-data-plugin/default/project.openjdk.json",7977],"6f2543d8":[()=>n.e(9431).then(n.t.bind(n,9010,19)),"/home/runner/work/areweloongyet/areweloongyet/.docusaurus/awly-data-plugin/default/project.linux.json",9010],"7204b618":[()=>n.e(7649).then(n.t.bind(n,6899,19)),"/home/runner/work/areweloongyet/areweloongyet/.docusaurus/awly-data-plugin/default/plugin-route-context-module-100.json",6899],"737e02af":[()=>n.e(2778).then(n.bind(n,5777)),"@site/newsletter/2023-12-05-this-week-in-loongarch-27/index.md",5777],"73e92b65":[()=>n.e(4996).then(n.bind(n,2304)),"@site/newsletter/2023-08-28-this-week-in-loongarch-13.mdx?truncated=true",2304],"7534df17":[()=>n.e(1289).then(n.t.bind(n,2776,19)),"/home/runner/work/areweloongyet/areweloongyet/.docusaurus/@easyops-cn/docusaurus-search-local/default/plugin-route-context-module-100.json",2776],"75a31217":[()=>n.e(1230).then(n.t.bind(n,1600,19)),"/home/runner/work/areweloongyet/areweloongyet/.docusaurus/awly-data-plugin/default/porter.loongson.json",1600],78258551:[()=>n.e(6971).then(n.t.bind(n,3681,19)),"/home/runner/work/areweloongyet/areweloongyet/.docusaurus/awly-data-plugin/default/project.jsc.json",3681],79752811:[()=>n.e(461).then(n.bind(n,1254)),"@site/blog/2023-04-01-site-faqs.md",1254],"79f6973a":[()=>n.e(2748).then(n.bind(n,2595)),"@site/newsletter/2023-06-27-these-weeks-in-loongarch-6.md?truncated=true",2595],"7a1c1b88":[()=>n.e(3201).then(n.t.bind(n,1404,19)),"/home/runner/work/areweloongyet/areweloongyet/.docusaurus/awly-data-plugin/default/porter.yetist.json",1404],"7a5c514b":[()=>n.e(4813).then(n.t.bind(n,3870,19)),"/home/runner/work/areweloongyet/areweloongyet/.docusaurus/awly-data-plugin/default/project.altlinux.json",3870],"7bcd0da8":[()=>n.e(1064).then(n.t.bind(n,4899,19)),"/home/runner/work/areweloongyet/areweloongyet/.docusaurus/awly-data-plugin/default/porter.shipujin.json",4899],"7cb6ebaf":[()=>n.e(5080).then(n.t.bind(n,8032,19)),"/home/runner/work/areweloongyet/areweloongyet/.docusaurus/awly-data-plugin/default/project.fedora.json",8032],"7ce49f2f":[()=>n.e(5446).then(n.t.bind(n,5965,19)),"/home/runner/work/areweloongyet/areweloongyet/.docusaurus/awly-data-plugin/default/project.ghc.json",5965],"7ce6a5f2":[()=>n.e(5825).then(n.t.bind(n,548,19)),"/home/runner/work/areweloongyet/areweloongyet/.docusaurus/docusaurus-plugin-content-blog/blog-newsletter/plugin-route-context-module-100.json",548],"7e22d4ac":[()=>Promise.all([n.e(532),n.e(7113)]).then(n.bind(n,5296)),"@site/src/components/ProjectPage",5296],"7e314c8c":[()=>n.e(3378).then(n.t.bind(n,5685,19)),"~blog/blog-newsletter/newsletter-tags-\u6bcf\u5468\u4e00\u9f99-page-2-d7d.json",5685],"7ed39522":[()=>n.e(5384).then(n.bind(n,3022)),"@site/blog/2023-04-01-site-faqs.md?truncated=true",3022],"8094c5b7":[()=>n.e(7083).then(n.t.bind(n,730,19)),"/home/runner/work/areweloongyet/areweloongyet/.docusaurus/awly-data-plugin/default/project.xbyak.json",730],"814f3328":[()=>n.e(2535).then(n.t.bind(n,5641,19)),"~blog/default/blog-post-list-prop-default.json",5641],"819278cf":[()=>n.e(4192).then(n.bind(n,5117)),"@site/docs/errata.md",5117],"86b3f3af":[()=>n.e(6802).then(n.bind(n,404)),"@site/newsletter/2023-06-05-this-week-in-loongarch-4.md?truncated=true",404],"8753cc1e":[()=>n.e(5386).then(n.t.bind(n,370,19)),"/home/runner/work/areweloongyet/areweloongyet/.docusaurus/awly-data-plugin/default/project.reactos.json",370],"8874af96":[()=>n.e(5707).then(n.bind(n,7842)),"@site/docs/linux-upstream-support.md",7842],"8b28af3f":[()=>n.e(1432).then(n.bind(n,8650)),"@site/newsletter/2023-05-15-this-week-in-loongarch-1.md?truncated=true",8650],"8c2ec1bf":[()=>n.e(2779).then(n.t.bind(n,6149,19)),"/home/runner/work/areweloongyet/areweloongyet/.docusaurus/awly-data-plugin/default/project.rt-thread.json",6149],"8e1ccd2b":[()=>n.e(5334).then(n.bind(n,9103)),"@site/newsletter/2023-12-18-this-week-in-loongarch-29/index.md?truncated=true",9103],"90d054f3":[()=>n.e(6052).then(n.bind(n,7323)),"@site/newsletter/2023-07-31-this-week-in-loongarch-11.md?truncated=true",7323],"935f2afb":[()=>n.e(53).then(n.t.bind(n,1109,19)),"~docs/default/version-current-metadata-prop-751.json",1109],"96160c51":[()=>n.e(4737).then(n.bind(n,9971)),"@site/newsletter/2023-10-30-this-week-in-loongarch-22.md?truncated=true",9971],"96292a75":[()=>n.e(268).then(n.bind(n,2238)),"@site/newsletter/2023-06-12-this-week-in-loongarch-5.md?truncated=true",2238],"96dad1e5":[()=>n.e(57).then(n.bind(n,8329)),"@site/docs/baseline-reference.md",8329],"97d1ca1e":[()=>n.e(8905).then(n.bind(n,7510)),"@site/newsletter/2023-12-11-this-week-in-loongarch-28/index.md?truncated=true",7510],"9835eafc":[()=>n.e(3611).then(n.t.bind(n,2973,19)),"/home/runner/work/areweloongyet/areweloongyet/.docusaurus/awly-data-plugin/default/project.lfs.json",2973],"9a12ed9d":[()=>n.e(7628).then(n.bind(n,1903)),"@site/newsletter/2023-06-12-this-week-in-loongarch-5.md",1903],"9ddceebf":[()=>n.e(8973).then(n.t.bind(n,5428,19)),"/home/runner/work/areweloongyet/areweloongyet/.docusaurus/awly-data-plugin/default/project.sljit.json",5428],"9e4087bc":[()=>n.e(3608).then(n.bind(n,3169)),"@theme/BlogArchivePage",3169],a0b33c44:[()=>n.e(4126).then(n.bind(n,410)),"@site/newsletter/2023-07-24-this-week-in-loongarch-10.md",410],a27407fd:[()=>n.e(2830).then(n.bind(n,283)),"@site/blog/2023-10-27-we-are-now-served-from-cn-mainland.md",283],a5be0c14:[()=>n.e(8617).then(n.t.bind(n,706,19)),"/home/runner/work/areweloongyet/areweloongyet/.docusaurus/awly-data-plugin/default/project.v8.json",706],a68796e0:[()=>n.e(2484).then(n.t.bind(n,4790,19)),"~blog/blog-newsletter/newsletter-archive-7cc.json",4790],a6aa9e1f:[()=>Promise.all([n.e(532),n.e(7874),n.e(130),n.e(3089)]).then(n.bind(n,46)),"@theme/BlogListPage",46],a7023ddc:[()=>n.e(1713).then(n.t.bind(n,3457,19)),"~blog/default/blog-tags-tags-4c2.json",3457],a7bd4aaa:[()=>n.e(8518).then(n.bind(n,8564)),"@theme/DocVersionRoot",8564],a94703ab:[()=>Promise.all([n.e(532),n.e(4368)]).then(n.bind(n,2674)),"@theme/DocRoot",2674],aa1af42e:[()=>n.e(4122).then(n.bind(n,3270)),"@site/blog/2023-04-01-welcome.md?truncated=true",3270],aa552299:[()=>n.e(2943).then(n.t.bind(n,5232,19)),"/home/runner/work/areweloongyet/areweloongyet/.docusaurus/awly-data-plugin/default/project.glibc.json",5232],ab52924b:[()=>n.e(5231).then(n.bind(n,3492)),"@site/docs/loong-or-loongarch.md",3492],ae05e4af:[()=>n.e(1212).then(n.t.bind(n,2923,19)),"/home/runner/work/areweloongyet/areweloongyet/.docusaurus/awly-data-plugin/default/project.dotnet.json",2923],aef3876e:[()=>n.e(8764).then(n.t.bind(n,1045,19)),"/home/runner/work/areweloongyet/areweloongyet/.docusaurus/awly-data-plugin/default/project.edk2.json",1045],b14b0e3c:[()=>Promise.all([n.e(532),n.e(7298),n.e(4041)]).then(n.bind(n,4887)),"@site/src/components/AsmDBPage",4887],b2b675dd:[()=>n.e(533).then(n.t.bind(n,8017,19)),"~blog/default/blog-c06.json",8017],b2f554cd:[()=>n.e(1477).then(n.t.bind(n,10,19)),"~blog/default/blog-archive-80c.json",10],b76a4235:[()=>n.e(1537).then(n.t.bind(n,4264,19)),"/home/runner/work/areweloongyet/areweloongyet/.docusaurus/awly-data-plugin/default/project.llvm.json",4264],b83c8be4:[()=>n.e(425).then(n.bind(n,9322)),"@site/newsletter/2023-07-03-this-week-in-loongarch-7.md?truncated=true",9322],b915be59:[()=>n.e(2405).then(n.bind(n,9872)),"@site/newsletter/2023-08-22-these-weeks-in-loongarch-12.md?truncated=true",9872],bc92d87a:[()=>n.e(7769).then(n.bind(n,8174)),"@site/newsletter/2023-07-31-this-week-in-loongarch-11.md",8174],bcec4cd1:[()=>n.e(6141).then(n.bind(n,6877)),"@site/src/components/AuthorPage",6877],bdca3c3b:[()=>n.e(5696).then(n.bind(n,3068)),"@site/newsletter/2023-09-25-this-week-in-loongarch-17.md",3068],c0dc6f3a:[()=>n.e(264).then(n.t.bind(n,6577,19)),"/home/runner/work/areweloongyet/areweloongyet/.docusaurus/awly-data-plugin/default/project.gcc.json",6577],c4812dad:[()=>n.e(4020).then(n.bind(n,3242)),"@site/newsletter/2023-05-22-this-week-in-loongarch-2.md",3242],c4f7a13b:[()=>n.e(8494).then(n.bind(n,5995)),"@site/newsletter/2023-12-05-this-week-in-loongarch-27/index.md?truncated=true",5995],c534a59e:[()=>n.e(1187).then(n.bind(n,4394)),"@site/newsletter/2023-11-06-this-week-in-loongarch-23.mdx?truncated=true",4394],c60e70f2:[()=>n.e(5792).then(n.t.bind(n,2626,19)),"/home/runner/work/areweloongyet/areweloongyet/.docusaurus/awly-data-plugin/default/project.loongarchlinux.json",2626],c8529322:[()=>n.e(9463).then(n.bind(n,4976)),"@site/newsletter/2023-12-26-this-week-in-loongarch-30/index.md",4976],c8ebe0fa:[()=>n.e(2876).then(n.t.bind(n,2343,19)),"/home/runner/work/areweloongyet/areweloongyet/.docusaurus/awly-data-plugin/default/porter.lrzlin.json",2343],cc17e890:[()=>n.e(616).then(n.bind(n,6344)),"@site/newsletter/2023-11-13-this-week-in-loongarch-24.md",6344],cc9d7752:[()=>n.e(7659).then(n.bind(n,2749)),"@site/newsletter/2023-06-05-this-week-in-loongarch-4.md",2749],ccc49370:[()=>Promise.all([n.e(532),n.e(7874),n.e(130),n.e(6103)]).then(n.bind(n,5203)),"@theme/BlogPostPage",5203],ce949e72:[()=>n.e(2645).then(n.bind(n,2938)),"@site/newsletter/2023-09-04-this-week-in-loongarch-14.md?truncated=true",2938],d08560e6:[()=>n.e(2952).then(n.bind(n,9250)),"@site/newsletter/2023-07-17-this-week-in-loongarch-9.md?truncated=true",9250],d34540e4:[()=>n.e(1904).then(n.bind(n,4159)),"@site/newsletter/2023-11-27-this-week-in-loongarch-26.md",4159],d47b3c56:[()=>n.e(7884).then(n.bind(n,8542)),"@site/docs/contrib/basics.md",8542],d88fadc1:[()=>n.e(7745).then(n.t.bind(n,9297,19)),"/home/runner/work/areweloongyet/areweloongyet/.docusaurus/awly-data-plugin/default/project.rust.json",9297],d8bb8b3a:[()=>n.e(7756).then(n.t.bind(n,3553,19)),"~blog/blog-newsletter/newsletter-page-3-4e8.json",3553],d96af6e9:[()=>n.e(2762).then(n.bind(n,1064)),"@site/newsletter/2023-12-11-this-week-in-loongarch-28/index.md",1064],db18c0bd:[()=>n.e(9939).then(n.t.bind(n,4469,19)),"/home/runner/work/areweloongyet/areweloongyet/.docusaurus/docusaurus-plugin-content-blog/default/plugin-route-context-module-100.json",4469],dcc6d3c9:[()=>n.e(3904).then(n.bind(n,1682)),"@site/newsletter/2023-10-02-this-week-in-loongarch-18.md",1682],de47541c:[()=>n.e(2331).then(n.t.bind(n,3769,19)),"/home/runner/work/areweloongyet/areweloongyet/.docusaurus/docusaurus-plugin-content-docs/default/plugin-route-context-module-100.json",3769],de9ac99d:[()=>Promise.all([n.e(532),n.e(4638)]).then(n.bind(n,8686)),"@site/newsletter/2023-11-06-this-week-in-loongarch-23.mdx",8686],e0cbf919:[()=>n.e(4207).then(n.t.bind(n,9050,19)),"/home/runner/work/areweloongyet/areweloongyet/.docusaurus/awly-data-plugin/default/project.debian.json",9050],e115f40f:[()=>n.e(8115).then(n.t.bind(n,725,19)),"/home/runner/work/areweloongyet/areweloongyet/.docusaurus/awly-data-plugin/default/porter.yushanwei.json",725],e1be883e:[()=>n.e(4511).then(n.t.bind(n,1068,19)),"~blog/blog-newsletter/newsletter-tags-\u6bcf\u5468\u4e00\u9f99-page-3-fa7-list.json",1068],e3ac5f86:[()=>n.e(2502).then(n.bind(n,7483)),"@site/newsletter/2023-05-29-this-week-in-loongarch-3.md",7483],e3c19559:[()=>n.e(8434).then(n.t.bind(n,5759,19)),"~blog/default/blog-tags-\u4e3b\u521b\u56e2\u961f\u7684\u8bdd-1c7.json",5759],e4dfda38:[()=>n.e(983).then(n.bind(n,6244)),"@site/newsletter/2023-10-09-this-week-in-loongarch-19.md",6244],e6cd5d71:[()=>n.e(9287).then(n.t.bind(n,6638,19)),"/home/runner/work/areweloongyet/areweloongyet/.docusaurus/awly-data-plugin/default/project.go.json",6638],ea4db4fc:[()=>n.e(7976).then(n.t.bind(n,2433,19)),"/home/runner/work/areweloongyet/areweloongyet/.docusaurus/awly-data-plugin/default/project.openbsd.json",2433],ec201c3d:[()=>n.e(4518).then(n.bind(n,1196)),"@site/blog/2023-04-01-welcome.md",1196],ed641ac4:[()=>n.e(7602).then(n.t.bind(n,8706,19)),"/home/runner/work/areweloongyet/areweloongyet/.docusaurus/awly-data-plugin/default/porter.liushuyu.json",8706],f1eaca13:[()=>n.e(6300).then(n.bind(n,2683)),"@site/docs/contrib/natlang-style-guide.md",2683],f4c87d9e:[()=>n.e(4461).then(n.bind(n,820)),"@site/newsletter/2023-10-23-this-week-in-loongarch-21.md?truncated=true",820],f9cd99bf:[()=>n.e(2276).then(n.t.bind(n,3286,19)),"/home/runner/work/areweloongyet/areweloongyet/.docusaurus/awly-data-plugin/default/project.aosc.json",3286],fa4933cf:[()=>n.e(3405).then(n.bind(n,7599)),"@site/newsletter/2023-10-09-this-week-in-loongarch-19.md?truncated=true",7599],fb7ddd44:[()=>n.e(6091).then(n.t.bind(n,5250,19)),"/home/runner/work/areweloongyet/areweloongyet/.docusaurus/awly-data-plugin/default/project.musl.json",5250],fcd7a3d0:[()=>n.e(4253).then(n.bind(n,8349)),"@site/newsletter/2023-10-16-this-week-in-loongarch-20.md?truncated=true",8349],fde0a181:[()=>n.e(5358).then(n.t.bind(n,2415,19)),"/home/runner/work/areweloongyet/areweloongyet/.docusaurus/awly-asmdb-plugin/default/asmdb.json",2415]};var s=n(5893);function l(e){let{error:t,retry:n,pastDelay:r}=e;return t?(0,s.jsxs)("div",{style:{textAlign:"center",color:"#fff",backgroundColor:"#fa383e",borderColor:"#fa383e",borderStyle:"solid",borderRadius:"0.25rem",borderWidth:"1px",boxSizing:"border-box",display:"block",padding:"1rem",flex:"0 0 50%",marginLeft:"25%",marginRight:"25%",marginTop:"5rem",maxWidth:"50%",width:"100%"},children:[(0,s.jsx)("p",{children:String(t)}),(0,s.jsx)("div",{children:(0,s.jsx)("button",{type:"button",onClick:n,children:"Retry"})})]}):r?(0,s.jsx)("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"},children:(0,s.jsx)("svg",{id:"loader",style:{width:128,height:110,position:"absolute",top:"calc(100vh - 64%)"},viewBox:"0 0 45 45",xmlns:"http://www.w3.org/2000/svg",stroke:"#61dafb",children:(0,s.jsxs)("g",{fill:"none",fillRule:"evenodd",transform:"translate(1 1)",strokeWidth:"2",children:[(0,s.jsxs)("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0",children:[(0,s.jsx)("animate",{attributeName:"r",begin:"1.5s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),(0,s.jsx)("animate",{attributeName:"stroke-opacity",begin:"1.5s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),(0,s.jsx)("animate",{attributeName:"stroke-width",begin:"1.5s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})]}),(0,s.jsxs)("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0",children:[(0,s.jsx)("animate",{attributeName:"r",begin:"3s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),(0,s.jsx)("animate",{attributeName:"stroke-opacity",begin:"3s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),(0,s.jsx)("animate",{attributeName:"stroke-width",begin:"3s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})]}),(0,s.jsx)("circle",{cx:"22",cy:"22",r:"8",children:(0,s.jsx)("animate",{attributeName:"r",begin:"0s",dur:"1.5s",values:"6;1;2;3;4;5;6",calcMode:"linear",repeatCount:"indefinite"})})]})})}):null}var c=n(9670),u=n(226);function d(e,t){if("*"===e)return o()({loading:l,loader:()=>n.e(1772).then(n.bind(n,1772)),modules:["@theme/NotFound"],webpack:()=>[1772],render(e,t){const n=e.default;return(0,s.jsx)(u.z,{value:{plugin:{name:"native",id:"default"}},children:(0,s.jsx)(n,{...t})})}});const r=a[`${e}-${t}`],d={},p=[],f=[],h=(0,c.Z)(r);return Object.entries(h).forEach((e=>{let[t,n]=e;const r=i[n];r&&(d[t]=r[0],p.push(r[1]),f.push(r[2]))})),o().Map({loading:l,loader:d,modules:p,webpack:()=>f,render(t,n){const o=JSON.parse(JSON.stringify(r));Object.entries(t).forEach((t=>{let[n,r]=t;const a=r.default;if(!a)throw new Error(`The page component at ${e} doesn't have a default export. This makes it impossible to render anything. Consider default-exporting a React component.`);"object"!=typeof a&&"function"!=typeof a||Object.keys(r).filter((e=>"default"!==e)).forEach((e=>{a[e]=r[e]}));let i=o;const s=n.split(".");s.slice(0,-1).forEach((e=>{i=i[e]})),i[s[s.length-1]]=a}));const a=o.__comp;delete o.__comp;const i=o.__context;return delete o.__context,(0,s.jsx)(u.z,{value:i,children:(0,s.jsx)(a,{...o,...n})})}})}const p=[{path:"/asmdb",component:d("/asmdb","28b"),exact:!0},{path:"/blog",component:d("/blog","e08"),exact:!0},{path:"/blog/archive",component:d("/blog/archive","ff1"),exact:!0},{path:"/blog/site-faqs",component:d("/blog/site-faqs","a3a"),exact:!0},{path:"/blog/tags",component:d("/blog/tags","542"),exact:!0},{path:"/blog/tags/\u4e3b\u521b\u56e2\u961f\u7684\u8bdd",component:d("/blog/tags/\u4e3b\u521b\u56e2\u961f\u7684\u8bdd","df0"),exact:!0},{path:"/blog/we-are-now-served-from-cn-mainland",component:d("/blog/we-are-now-served-from-cn-mainland","144"),exact:!0},{path:"/blog/welcome",component:d("/blog/welcome","ac8"),exact:!0},{path:"/newsletter",component:d("/newsletter","e4d"),exact:!0},{path:"/newsletter/archive",component:d("/newsletter/archive","9df"),exact:!0},{path:"/newsletter/page/2",component:d("/newsletter/page/2","98e"),exact:!0},{path:"/newsletter/page/3",component:d("/newsletter/page/3","d29"),exact:!0},{path:"/newsletter/page/4",component:d("/newsletter/page/4","4c0"),exact:!0},{path:"/newsletter/tags",component:d("/newsletter/tags","b84"),exact:!0},{path:"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99",component:d("/newsletter/tags/\u6bcf\u5468\u4e00\u9f99","991"),exact:!0},{path:"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99/page/2",component:d("/newsletter/tags/\u6bcf\u5468\u4e00\u9f99/page/2","c9f"),exact:!0},{path:"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99/page/3",component:d("/newsletter/tags/\u6bcf\u5468\u4e00\u9f99/page/3","aba"),exact:!0},{path:"/newsletter/tags/\u6bcf\u5468\u4e00\u9f99/page/4",component:d("/newsletter/tags/\u6bcf\u5468\u4e00\u9f99/page/4","265"),exact:!0},{path:"/newsletter/these-weeks-in-loongarch-12",component:d("/newsletter/these-weeks-in-loongarch-12","21b"),exact:!0},{path:"/newsletter/these-weeks-in-loongarch-6",component:d("/newsletter/these-weeks-in-loongarch-6","1cd"),exact:!0},{path:"/newsletter/this-week-in-loongarch-1",component:d("/newsletter/this-week-in-loongarch-1","253"),exact:!0},{path:"/newsletter/this-week-in-loongarch-10",component:d("/newsletter/this-week-in-loongarch-10","252"),exact:!0},{path:"/newsletter/this-week-in-loongarch-11",component:d("/newsletter/this-week-in-loongarch-11","8ab"),exact:!0},{path:"/newsletter/this-week-in-loongarch-13",component:d("/newsletter/this-week-in-loongarch-13","97c"),exact:!0},{path:"/newsletter/this-week-in-loongarch-14",component:d("/newsletter/this-week-in-loongarch-14","a59"),exact:!0},{path:"/newsletter/this-week-in-loongarch-15",component:d("/newsletter/this-week-in-loongarch-15","a2f"),exact:!0},{path:"/newsletter/this-week-in-loongarch-16",component:d("/newsletter/this-week-in-loongarch-16","e73"),exact:!0},{path:"/newsletter/this-week-in-loongarch-17",component:d("/newsletter/this-week-in-loongarch-17","ad4"),exact:!0},{path:"/newsletter/this-week-in-loongarch-18",component:d("/newsletter/this-week-in-loongarch-18","626"),exact:!0},{path:"/newsletter/this-week-in-loongarch-19",component:d("/newsletter/this-week-in-loongarch-19","06c"),exact:!0},{path:"/newsletter/this-week-in-loongarch-2",component:d("/newsletter/this-week-in-loongarch-2","4e3"),exact:!0},{path:"/newsletter/this-week-in-loongarch-20",component:d("/newsletter/this-week-in-loongarch-20","835"),exact:!0},{path:"/newsletter/this-week-in-loongarch-21",component:d("/newsletter/this-week-in-loongarch-21","0aa"),exact:!0},{path:"/newsletter/this-week-in-loongarch-22",component:d("/newsletter/this-week-in-loongarch-22","f8c"),exact:!0},{path:"/newsletter/this-week-in-loongarch-23",component:d("/newsletter/this-week-in-loongarch-23","63a"),exact:!0},{path:"/newsletter/this-week-in-loongarch-24",component:d("/newsletter/this-week-in-loongarch-24","89f"),exact:!0},{path:"/newsletter/this-week-in-loongarch-25",component:d("/newsletter/this-week-in-loongarch-25","fad"),exact:!0},{path:"/newsletter/this-week-in-loongarch-26",component:d("/newsletter/this-week-in-loongarch-26","dee"),exact:!0},{path:"/newsletter/this-week-in-loongarch-27",component:d("/newsletter/this-week-in-loongarch-27","b3e"),exact:!0},{path:"/newsletter/this-week-in-loongarch-28",component:d("/newsletter/this-week-in-loongarch-28","fb6"),exact:!0},{path:"/newsletter/this-week-in-loongarch-29",component:d("/newsletter/this-week-in-loongarch-29","5cf"),exact:!0},{path:"/newsletter/this-week-in-loongarch-3",component:d("/newsletter/this-week-in-loongarch-3","b67"),exact:!0},{path:"/newsletter/this-week-in-loongarch-30",component:d("/newsletter/this-week-in-loongarch-30","65c"),exact:!0},{path:"/newsletter/this-week-in-loongarch-31",component:d("/newsletter/this-week-in-loongarch-31","c75"),exact:!0},{path:"/newsletter/this-week-in-loongarch-4",component:d("/newsletter/this-week-in-loongarch-4","58b"),exact:!0},{path:"/newsletter/this-week-in-loongarch-5",component:d("/newsletter/this-week-in-loongarch-5","8f5"),exact:!0},{path:"/newsletter/this-week-in-loongarch-7",component:d("/newsletter/this-week-in-loongarch-7","14a"),exact:!0},{path:"/newsletter/this-week-in-loongarch-8",component:d("/newsletter/this-week-in-loongarch-8","e68"),exact:!0},{path:"/newsletter/this-week-in-loongarch-9",component:d("/newsletter/this-week-in-loongarch-9","0f6"),exact:!0},{path:"/porter/liushuyu",component:d("/porter/liushuyu","802"),exact:!0},{path:"/porter/loongson",component:d("/porter/loongson","22b"),exact:!0},{path:"/porter/lrzlin",component:d("/porter/lrzlin","92c"),exact:!0},{path:"/porter/shipujin",component:d("/porter/shipujin","445"),exact:!0},{path:"/porter/sunhaiyong1978",component:d("/porter/sunhaiyong1978","914"),exact:!0},{path:"/porter/xen0n",component:d("/porter/xen0n","689"),exact:!0},{path:"/porter/xry111",component:d("/porter/xry111","01b"),exact:!0},{path:"/porter/yetist",component:d("/porter/yetist","d97"),exact:!0},{path:"/porter/yushanwei",component:d("/porter/yushanwei","724"),exact:!0},{path:"/project/altlinux",component:d("/project/altlinux","5df"),exact:!0},{path:"/project/aosc",component:d("/project/aosc","1c1"),exact:!0},{path:"/project/binutils",component:d("/project/binutils","ef6"),exact:!0},{path:"/project/clfs",component:d("/project/clfs","300"),exact:!0},{path:"/project/debian",component:d("/project/debian","2d0"),exact:!0},{path:"/project/dlang",component:d("/project/dlang","ce4"),exact:!0},{path:"/project/dotnet",component:d("/project/dotnet","3f6"),exact:!0},{path:"/project/edk2",component:d("/project/edk2","293"),exact:!0},{path:"/project/fedora",component:d("/project/fedora","cf1"),exact:!0},{path:"/project/freebsd",component:d("/project/freebsd","edb"),exact:!0},{path:"/project/gcc",component:d("/project/gcc","58d"),exact:!0},{path:"/project/gentoo",component:d("/project/gentoo","2e6"),exact:!0},{path:"/project/ghc",component:d("/project/ghc","953"),exact:!0},{path:"/project/glibc",component:d("/project/glibc","f1e"),exact:!0},{path:"/project/gnumach",component:d("/project/gnumach","3fd"),exact:!0},{path:"/project/go",component:d("/project/go","974"),exact:!0},{path:"/project/haiku",component:d("/project/haiku","0ae"),exact:!0},{path:"/project/jsc",component:d("/project/jsc","638"),exact:!0},{path:"/project/lfs",component:d("/project/lfs","dc2"),exact:!0},{path:"/project/linux",component:d("/project/linux","e85"),exact:!0},{path:"/project/llvm",component:d("/project/llvm","5aa"),exact:!0},{path:"/project/loongarchlinux",component:d("/project/loongarchlinux","485"),exact:!0},{path:"/project/luajit",component:d("/project/luajit","3f6"),exact:!0},{path:"/project/mono",component:d("/project/mono","cb3"),exact:!0},{path:"/project/musl",component:d("/project/musl","f0d"),exact:!0},{path:"/project/openbsd",component:d("/project/openbsd","250"),exact:!0},{path:"/project/openjdk",component:d("/project/openjdk","889"),exact:!0},{path:"/project/qemu",component:d("/project/qemu","1ff"),exact:!0},{path:"/project/reactos",component:d("/project/reactos","22b"),exact:!0},{path:"/project/rt-thread",component:d("/project/rt-thread","846"),exact:!0},{path:"/project/rust",component:d("/project/rust","182"),exact:!0},{path:"/project/slackware",component:d("/project/slackware","4d6"),exact:!0},{path:"/project/sljit",component:d("/project/sljit","e8e"),exact:!0},{path:"/project/spidermonkey",component:d("/project/spidermonkey","003"),exact:!0},{path:"/project/v8",component:d("/project/v8","212"),exact:!0},{path:"/project/xbyak",component:d("/project/xbyak","fdf"),exact:!0},{path:"/project/yongbao",component:d("/project/yongbao","64e"),exact:!0},{path:"/search",component:d("/search","698"),exact:!0},{path:"/docs",component:d("/docs","2b3"),routes:[{path:"/docs",component:d("/docs","686"),routes:[{path:"/docs",component:d("/docs","1ad"),routes:[{path:"/docs/baseline-reference",component:d("/docs/baseline-reference","40b"),exact:!0,sidebar:"main"},{path:"/docs/collection-of-typical-configurations",component:d("/docs/collection-of-typical-configurations","88d"),exact:!0,sidebar:"main"},{path:"/docs/contrib/",component:d("/docs/contrib/","69e"),exact:!0,sidebar:"main"},{path:"/docs/contrib/basics",component:d("/docs/contrib/basics","b62"),exact:!0,sidebar:"main"},{path:"/docs/contrib/natlang-style-guide",component:d("/docs/contrib/natlang-style-guide","f74"),exact:!0,sidebar:"main"},{path:"/docs/errata",component:d("/docs/errata","fbd"),exact:!0,sidebar:"main"},{path:"/docs/intro",component:d("/docs/intro","985"),exact:!0,sidebar:"main"},{path:"/docs/linux-upstream-support",component:d("/docs/linux-upstream-support","c33"),exact:!0,sidebar:"main"},{path:"/docs/loong-or-loongarch",component:d("/docs/loong-or-loongarch","c38"),exact:!0,sidebar:"main"},{path:"/docs/old-and-new-worlds",component:d("/docs/old-and-new-worlds","8e9"),exact:!0,sidebar:"main"}]}]}]},{path:"/",component:d("/","f30"),exact:!0},{path:"*",component:d("*")}]},8934:(e,t,n)=>{"use strict";n.d(t,{_:()=>a,t:()=>i});var r=n(7294),o=n(5893);const a=r.createContext(!1);function i(e){let{children:t}=e;const[n,i]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{i(!0)}),[]),(0,o.jsx)(a.Provider,{value:n,children:t})}},7221:(e,t,n)=>{"use strict";var r=n(7294),o=n(745),a=n(3727),i=n(405),s=n(412);const l=[n(2497),n(3310),n(8320),n(2295)];var c=n(723),u=n(6550),d=n(8790),p=n(5893);function f(e){let{children:t}=e;return(0,p.jsx)(p.Fragment,{children:t})}var h=n(5742),g=n(2263),m=n(4996),b=n(6668),y=n(1944),v=n(4711),w=n(9727),k=n(3320),x=n(8780),S=n(197);function _(){const{i18n:{currentLocale:e,defaultLocale:t,localeConfigs:n}}=(0,g.Z)(),r=(0,v.l)(),o=n[e].htmlLang,a=e=>e.replace("-","_");return(0,p.jsxs)(h.Z,{children:[Object.entries(n).map((e=>{let[t,{htmlLang:n}]=e;return(0,p.jsx)("link",{rel:"alternate",href:r.createUrl({locale:t,fullyQualified:!0}),hrefLang:n},t)})),(0,p.jsx)("link",{rel:"alternate",href:r.createUrl({locale:t,fullyQualified:!0}),hrefLang:"x-default"}),(0,p.jsx)("meta",{property:"og:locale",content:a(o)}),Object.values(n).filter((e=>o!==e.htmlLang)).map((e=>(0,p.jsx)("meta",{property:"og:locale:alternate",content:a(e.htmlLang)},`meta-og-${e.htmlLang}`)))]})}function E(e){let{permalink:t}=e;const{siteConfig:{url:n}}=(0,g.Z)(),r=function(){const{siteConfig:{url:e,baseUrl:t,trailingSlash:n}}=(0,g.Z)(),{pathname:r}=(0,u.TH)();return e+(0,x.applyTrailingSlash)((0,m.Z)(r),{trailingSlash:n,baseUrl:t})}(),o=t?`${n}${t}`:r;return(0,p.jsxs)(h.Z,{children:[(0,p.jsx)("meta",{property:"og:url",content:o}),(0,p.jsx)("link",{rel:"canonical",href:o})]})}function C(){const{i18n:{currentLocale:e}}=(0,g.Z)(),{metadata:t,image:n}=(0,b.L)();return(0,p.jsxs)(p.Fragment,{children:[(0,p.jsxs)(h.Z,{children:[(0,p.jsx)("meta",{name:"twitter:card",content:"summary_large_image"}),(0,p.jsx)("body",{className:w.h})]}),n&&(0,p.jsx)(y.d,{image:n}),(0,p.jsx)(E,{}),(0,p.jsx)(_,{}),(0,p.jsx)(S.Z,{tag:k.HX,locale:e}),(0,p.jsx)(h.Z,{children:t.map(((e,t)=>(0,p.jsx)("meta",{...e},t)))})]})}const T=new Map;function j(e){if(T.has(e.pathname))return{...e,pathname:T.get(e.pathname)};if((0,d.f)(c.Z,e.pathname).some((e=>{let{route:t}=e;return!0===t.exact})))return T.set(e.pathname,e.pathname),e;const t=e.pathname.trim().replace(/(?:\/index)?\.html$/,"")||"/";return T.set(e.pathname,t),{...e,pathname:t}}var L=n(8934),A=n(8940),R=n(469);function P(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r{const r=t.default?.[e]??t[e];return r?.(...n)}));return()=>o.forEach((e=>e?.()))}const N=function(e){let{children:t,location:n,previousLocation:r}=e;return(0,R.Z)((()=>{r!==n&&(!function(e){let{location:t,previousLocation:n}=e;if(!n)return;const r=t.pathname===n.pathname,o=t.hash===n.hash,a=t.search===n.search;if(r&&o&&!a)return;const{hash:i}=t;if(i){const e=decodeURIComponent(i.substring(1)),t=document.getElementById(e);t?.scrollIntoView()}else window.scrollTo(0,0)}({location:n,previousLocation:r}),P("onRouteDidUpdate",{previousLocation:r,location:n}))}),[r,n]),t};function O(e){const t=Array.from(new Set([e,decodeURI(e)])).map((e=>(0,d.f)(c.Z,e))).flat();return Promise.all(t.map((e=>e.route.component.preload?.())))}class I extends r.Component{previousLocation;routeUpdateCleanupCb;constructor(e){super(e),this.previousLocation=null,this.routeUpdateCleanupCb=s.Z.canUseDOM?P("onRouteUpdate",{previousLocation:null,location:this.props.location}):()=>{},this.state={nextRouteHasLoaded:!0}}shouldComponentUpdate(e,t){if(e.location===this.props.location)return t.nextRouteHasLoaded;const n=e.location;return this.previousLocation=this.props.location,this.setState({nextRouteHasLoaded:!1}),this.routeUpdateCleanupCb=P("onRouteUpdate",{previousLocation:this.previousLocation,location:n}),O(n.pathname).then((()=>{this.routeUpdateCleanupCb(),this.setState({nextRouteHasLoaded:!0})})).catch((e=>{console.warn(e),window.location.reload()})),!1}render(){const{children:e,location:t}=this.props;return(0,p.jsx)(N,{previousLocation:this.previousLocation,location:t,children:(0,p.jsx)(u.AW,{location:t,render:()=>e})})}}const F=I,D="__docusaurus-base-url-issue-banner-container",M="__docusaurus-base-url-issue-banner",z="__docusaurus-base-url-issue-banner-suggestion-container";function B(e){return`\ndocument.addEventListener('DOMContentLoaded', function maybeInsertBanner() {\n var shouldInsert = typeof window['docusaurus'] === 'undefined';\n shouldInsert && insertBanner();\n});\n\nfunction insertBanner() {\n var bannerContainer = document.createElement('div');\n bannerContainer.id = '${D}';\n var bannerHtml = ${JSON.stringify(function(e){return`\n
\n

Your Docusaurus site did not load properly.

\n

A very common reason is a wrong site baseUrl configuration.

\n

Current configured baseUrl = ${e} ${"/"===e?" (default value)":""}

\n

We suggest trying baseUrl =

\n
\n`}(e)).replace(/{if("undefined"==typeof document)return void n();const r=document.createElement("link");r.setAttribute("rel","prefetch"),r.setAttribute("href",e),r.onload=()=>t(),r.onerror=()=>n();const o=document.getElementsByTagName("head")[0]??document.getElementsByName("script")[0]?.parentNode;o?.appendChild(r)}))}:function(e){return new Promise(((t,n)=>{const r=new XMLHttpRequest;r.open("GET",e,!0),r.withCredentials=!0,r.onload=()=>{200===r.status?t():n()},r.send(null)}))};var Y=n(9670);const K=new Set,X=new Set,J=()=>navigator.connection?.effectiveType.includes("2g")||navigator.connection?.saveData,ee={prefetch(e){if(!(e=>!J()&&!X.has(e)&&!K.has(e))(e))return!1;K.add(e);const t=(0,d.f)(c.Z,e).flatMap((e=>{return t=e.route.path,Object.entries(q).filter((e=>{let[n]=e;return n.replace(/-[^-]+$/,"")===t})).flatMap((e=>{let[,t]=e;return Object.values((0,Y.Z)(t))}));var t}));return Promise.all(t.map((e=>{const t=n.gca(e);return t&&!t.includes("undefined")?G(t).catch((()=>{})):Promise.resolve()})))},preload:e=>!!(e=>!J()&&!X.has(e))(e)&&(X.add(e),O(e))},te=Object.freeze(ee),ne=Boolean(!0);if(s.Z.canUseDOM){window.docusaurus=te;const e=document.getElementById("__docusaurus"),t=(0,p.jsx)(i.B6,{children:(0,p.jsx)(a.VK,{children:(0,p.jsx)(W,{})})}),n=(e,t)=>{console.error("Docusaurus React Root onRecoverableError:",e,t)},s=()=>{if(ne)r.startTransition((()=>{o.hydrateRoot(e,t,{onRecoverableError:n})}));else{const a=o.createRoot(e,{onRecoverableError:n});r.startTransition((()=>{a.render(t)}))}};O(window.location.pathname).then(s)}},8940:(e,t,n)=>{"use strict";n.d(t,{_:()=>d,M:()=>p});var r=n(7294),o=n(6809);const a=JSON.parse('{"awly-data-plugin":{"default":[{"name":"\u5de5\u5177\u94fe","projects":[{"code":"binutils","name":"binutils","homepageURL":"https://www.gnu.org/software/binutils/","repoURL":"https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git","portingEfforts":[{"authors":["loongson"],"desc":"","link":"","supportStatus":8,"releasedSinceVersion":"2.38","goodSinceVersion":"2.40","quality":1}]},{"code":"gcc","name":"gcc","homepageURL":"https://gcc.gnu.org","repoURL":"https://gcc.gnu.org/git/?p=gcc.git","portingEfforts":[{"authors":["loongson","xry111"],"desc":"","link":"","supportStatus":8,"releasedSinceVersion":"12.1","goodSinceVersion":"13.1","quality":1}]},{"code":"glibc","name":"glibc","homepageURL":"https://www.gnu.org/software/libc/","repoURL":"https://sourceware.org/git/gitweb.cgi?p=glibc.git","portingEfforts":[{"authors":["loongson","xry111"],"desc":"","link":"","supportStatus":8,"releasedSinceVersion":"2.36","goodSinceVersion":"2.36","quality":1}]},{"code":"llvm","name":"LLVM","homepageURL":"https://llvm.org","repoURL":"https://github.com/llvm/llvm-project","portingEfforts":[{"authors":["loongson","xen0n"],"desc":"","link":"","supportStatus":8,"releasedSinceVersion":"16.0.0","goodSinceVersion":"17.0.0","quality":1}]},{"code":"musl","name":"musl","homepageURL":"https://musl.libc.org/","repoURL":"https://git.musl-libc.org/cgit/musl","portingEfforts":[{"authors":["loongson"],"desc":"","link":"https://www.openwall.com/lists/musl/2022/11/15/1","supportStatus":6,"releasedSinceVersion":"","goodSinceVersion":"","quality":1}]}]},{"name":"\u7f16\u7a0b\u8bed\u8a00","projects":[{"code":"dlang","name":"D","homepageURL":"https://dlang.org/","repoURL":"https://github.com/dlang/dmd","portingEfforts":[{"authors":["loongson","liushuyu"],"desc":"GDC \u548c LDC \u8fd9\u4e24\u4e2a D \u8bed\u8a00\u7f16\u8bd1\u5668\u7684\u652f\u6301\u4e5f\u5728\u63a8\u8fdb","link":"https://github.com/dlang/dmd/pull/15628","supportStatus":7,"releasedSinceVersion":"2.106","goodSinceVersion":"","quality":1}]},{"code":"ghc","name":"Haskell (GHC)","homepageURL":"https://www.haskell.org/","repoURL":"https://gitlab.haskell.org/ghc/ghc","portingEfforts":[{"authors":["lrzlin"],"desc":"","link":"https://bbs.loongarch.org/d/150","supportStatus":8,"releasedSinceVersion":"9.6.1","goodSinceVersion":"9.6.1","quality":1}]},{"code":"go","name":"Go","homepageURL":"https://go.dev","repoURL":"https://github.com/golang/go","portingEfforts":[{"authors":["loongson","xen0n"],"desc":"","link":"","supportStatus":8,"releasedSinceVersion":"1.19","goodSinceVersion":"1.21","quality":1}]},{"code":"rust","name":"Rust","homepageURL":"https://www.rust-lang.org","repoURL":"https://github.com/rust-lang/rust","portingEfforts":[{"authors":["loongson","xen0n"],"desc":"","link":"https://github.com/loongarch-rs","supportStatus":8,"releasedSinceVersion":"1.71.0","goodSinceVersion":"1.71.0","quality":1}]}]},{"name":"\u5185\u6838","projects":[{"code":"freebsd","name":"FreeBSD","homepageURL":"https://www.freebsd.org","repoURL":"https://cgit.freebsd.org","portingEfforts":[{"authors":["yushanwei"],"desc":"","link":"https://gitee.com/lauosc/freebsd","supportStatus":5,"releasedSinceVersion":"","goodSinceVersion":"","quality":2}]},{"code":"gnumach","name":"GNU Mach","homepageURL":"https://www.gnu.org/software/hurd/microkernel/mach/gnumach.html","repoURL":"https://git.savannah.gnu.org/git/hurd/gnumach.git","portingEfforts":[]},{"code":"haiku","name":"Haiku","homepageURL":"https://www.haiku-os.org/","repoURL":"https://github.com/haiku","portingEfforts":[]},{"code":"linux","name":"Linux","homepageURL":"https://kernel.org","repoURL":"https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/","portingEfforts":[{"authors":["loongson","xen0n","xry111"],"desc":"","link":"","supportStatus":8,"releasedSinceVersion":"5.19","goodSinceVersion":"6.2","quality":1}]},{"code":"openbsd","name":"OpenBSD","homepageURL":"https://www.openbsd.org","repoURL":"https://github.com/openbsd","portingEfforts":[]},{"code":"reactos","name":"ReactOS","homepageURL":"https://reactos.org","repoURL":"https://github.com/reactos/reactos","portingEfforts":[]},{"code":"rt-thread","name":"RT-Thread","homepageURL":"https://www.rt-thread.io","repoURL":"https://github.com/RT-Thread/rt-thread","portingEfforts":[{"authors":[],"desc":"","link":"","supportStatus":2,"releasedSinceVersion":"","goodSinceVersion":"","quality":0}]}]},{"name":"\u56fa\u4ef6 & \u6a21\u62df\u5668","projects":[{"code":"edk2","name":"EDK II","homepageURL":"https://github.com/tianocore/tianocore.github.io/wiki/EDK-II","repoURL":"https://github.com/tianocore/edk2","portingEfforts":[{"authors":["loongson"],"desc":"","link":"","supportStatus":8,"releasedSinceVersion":"202211","goodSinceVersion":"","quality":1}]},{"code":"qemu","name":"QEMU","homepageURL":"https://www.qemu.org/","repoURL":"https://gitlab.com/qemu-project/qemu/","portingEfforts":[{"authors":["xen0n"],"desc":"TCG LoongArch64 port","link":"","supportStatus":8,"releasedSinceVersion":"7.0.0","goodSinceVersion":"7.0.0","quality":1},{"authors":["loongson"],"desc":"LoongArch target","link":"","supportStatus":8,"releasedSinceVersion":"7.1.0","goodSinceVersion":"7.2.0","quality":1}]}]},{"name":"\u57fa\u7840\u5e93","projects":[]},{"name":"JIT \u8fd0\u884c\u65f6","projects":[{"code":"dotnet","name":".NET","homepageURL":"https://dot.net","repoURL":"https://github.com/dotnet","portingEfforts":[{"authors":["loongson"],"desc":"\u5148\u524d\u4e00\u76f4\u4ee5\u4e3a .NET 7.0 \u91cc\u589e\u52a0\u7684\u90a3\u4e2a\u652f\u6301\u80fd\u7528\uff0c\u7136\u800c\u5b9e\u9645\u6d4b\u8bd5\u53d1\u73b0\u662f\u65e7\u4e16\u754c ABI\uff0c\u65b0\u4e16\u754c\u4e0a\u65e0\u6cd5\u7f16\u8bd1\u3002\u4e3b\u7ebf\u4ee3\u7801\u76f4\u5230 2023-09-20 \u624d\u5728\u65b0\u4e16\u754c\u8fbe\u5230\u53ef\u7528\uff0c\u8fd9\u610f\u5473\u7740 .NET 8.0 \u4e5f\u5df2\u7ecf\u88ab\u9519\u8fc7\u3002\u5982\u679c\u8981\u7528\uff0c\u5219\u9700 backport \u6216\u7b49 .NET 9.0\u3002","link":"https://github.com/dotnet/runtime/issues/69705","supportStatus":7,"releasedSinceVersion":"7.0","goodSinceVersion":"9.0","quality":1}]},{"code":"jsc","name":"JavaScriptCore","homepageURL":"https://webkit.org/","repoURL":"https://github.com/WebKit/WebKit","portingEfforts":[{"authors":["loongson"],"desc":"WebKit \u7684 Javascript \u5f15\u64ce\uff0c\u76ee\u524d\u5728 LoongArch \u4e0a\u80fd\u7528\uff0c\u4f46\u6ca1\u6709 JIT \u652f\u6301","link":"https://github.com/WebKit/WebKit/pull/3908","supportStatus":5,"releasedSinceVersion":"WebKit-7615.1.6, webkitgtk-2.39.1","goodSinceVersion":"?","quality":1}]},{"code":"luajit","name":"LuaJIT","homepageURL":"https://luajit.org","repoURL":"https://github.com/LuaJIT/LuaJIT","portingEfforts":[{"authors":["loongson"],"desc":"\u5728\u6ee1\u8db3\u8be5\u9879\u76ee\u7684\u4ee3\u7801\u8d28\u91cf\u4e0e\u67b6\u6784\u6210\u719f\u5ea6\u8981\u6c42\u524d\uff0c\u9884\u671f port \u4e0d\u4f1a\u88ab\u63a5\u53d7","link":"https://github.com/LuaJIT/LuaJIT/pull/875","supportStatus":1,"releasedSinceVersion":"","goodSinceVersion":"","quality":2}]},{"code":"mono","name":"Mono","homepageURL":"https://www.mono-project.com/","repoURL":"https://github.com/mono/mono","portingEfforts":[{"authors":["loongson"],"desc":"\u9f99\u82af\u4f3c\u4e4e\u5bf9 .NET \u7684\u652f\u6301\u66f4\u611f\u5174\u8da3\uff0cMono \u7684\u79fb\u690d\u76ee\u524d\u505c\u6ede","link":"https://github.com/shushanhf/mono/tree/main_loongarch64_1","supportStatus":3,"releasedSinceVersion":"","goodSinceVersion":"","quality":2}]},{"code":"openjdk","name":"OpenJDK","homepageURL":"https://openjdk.org/projects/jdk/","repoURL":"https://github.com/openjdk/jdk","portingEfforts":[{"authors":["loongson"],"desc":"","link":"","supportStatus":5,"releasedSinceVersion":"","goodSinceVersion":"","quality":0}]},{"code":"sljit","name":"sljit","homepageURL":"https://zherczeg.github.io/sljit/","repoURL":"https://github.com/zherczeg/sljit","portingEfforts":[{"authors":["Xiao-Tao","carenas"],"desc":"\u63d0\u4f9b\u5e73\u53f0\u65e0\u5173\u63a5\u53e3\u7684\u4f4e\u7ea7 JIT \u7f16\u8bd1\u5668\uff0c\u7528\u4e8e\u52a0\u901f PCRE2","link":"https://github.com/zherczeg/sljit/pull/170","supportStatus":8,"releasedSinceVersion":"?","goodSinceVersion":"?","quality":1}]},{"code":"spidermonkey","name":"SpiderMonkey","homepageURL":"https://spidermonkey.dev/","repoURL":"https://hg.mozilla.org/mozilla-central/","portingEfforts":[{"authors":["loongson"],"desc":"Mozilla \u7684 Javascript \u548c WASM \u5f15\u64ce","link":"https://bugzilla.mozilla.org/show_bug.cgi?id=1757272","supportStatus":8,"releasedSinceVersion":"99","goodSinceVersion":"107","quality":1}]},{"code":"v8","name":"V8","homepageURL":"https://v8.dev/","repoURL":"https://chromium.googlesource.com/v8/v8.git","portingEfforts":[{"authors":["loongson"],"desc":"Google \u7684\u9ad8\u6027\u80fd Javascript \u548c WASM \u5f15\u64ce\uff0c\u7528\u4e8e Chrome \u548c Node.js","link":"https://bugs.chromium.org/p/v8/issues/detail?id=12008","supportStatus":8,"releasedSinceVersion":"9.5.3","goodSinceVersion":"9.5.3","quality":1}]},{"code":"xbyak","name":"Xbyak LoongArch64","homepageURL":"https://github.com/gititgo/xbyak_loongarch64","repoURL":"https://github.com/gititgo/xbyak_loongarch64","portingEfforts":[{"authors":["loongson"],"desc":"\u4e25\u683c\u610f\u4e49\u4e0a Xbyak \u4e0a\u6e38\u4ec5\u652f\u6301 x86\uff0c\u5176\u4ed6\u67b6\u6784\u79fb\u690d\u90fd\u4e3a\u72ec\u7acb\u9879\u76ee\uff1a\u6b64\u79fb\u690d\u672c\u8eab\u5373\u4e3a\u4e0a\u6e38\u3002","link":"","supportStatus":8,"releasedSinceVersion":"","goodSinceVersion":"","quality":1}]}]},{"name":"\u53d1\u884c\u7248","projects":[{"code":"altlinux","name":"ALT Linux","homepageURL":"https://en.altlinux.org/Main_Page","repoURL":"https://git.altlinux.org","portingEfforts":[{"authors":[],"desc":"","link":"https://en.altlinux.org/Ports/loongarch64","supportStatus":5,"releasedSinceVersion":"","goodSinceVersion":"","quality":1}]},{"code":"aosc","name":"AOSC OS","homepageURL":"https://aosc.io","repoURL":"https://github.com/AOSC-Dev","portingEfforts":[{"authors":[],"desc":"","link":"","supportStatus":5,"releasedSinceVersion":"","goodSinceVersion":"","quality":1}]},{"code":"clfs","name":"CLFS for LoongArch","homepageURL":"https://github.com/sunhaiyong1978/CLFS-for-LoongArch","repoURL":"https://github.com/sunhaiyong1978/CLFS-for-LoongArch","portingEfforts":[{"authors":["sunhaiyong1978"],"desc":"\u4ec5\u4ec5\u501f\u7528\u4e86 CLFS \u7684\u8bf4\u6cd5\uff0c\u4e0e clfs.org \u7ef4\u62a4\u7684 CLFS \u624b\u518c\u6ca1\u6709\u5173\u7cfb\u3002","link":"https://github.com/sunhaiyong1978/CLFS-for-LoongArch","supportStatus":8,"releasedSinceVersion":"","goodSinceVersion":"","quality":0}]},{"code":"debian","name":"Debian","homepageURL":"https://www.debian.org","repoURL":"https://salsa.debian.org","portingEfforts":[{"authors":["loongson"],"desc":"","link":"https://wiki.debian.org/Ports/loong64","supportStatus":5,"releasedSinceVersion":"","goodSinceVersion":"","quality":2}]},{"code":"fedora","name":"Fedora","homepageURL":"https://getfedora.org","repoURL":"","portingEfforts":[{"authors":["sunhaiyong1978"],"desc":"","link":"https://github.com/fedora-remix-loongarch/releases-info","supportStatus":5,"releasedSinceVersion":"","goodSinceVersion":"","quality":0}]},{"code":"gentoo","name":"Gentoo","homepageURL":"https://gentoo.org","repoURL":"https://github.com/gentoo/gentoo","portingEfforts":[{"authors":["xen0n"],"desc":"","link":"https://wiki.gentoo.org/wiki/Project:LoongArch","supportStatus":8,"releasedSinceVersion":"","goodSinceVersion":"","quality":1}]},{"code":"lfs","name":"LFS LoongArch Edition","homepageURL":"https://www.linuxfromscratch.org/~xry111/lfs/","repoURL":"https://git.linuxfromscratch.org/lfs.git","portingEfforts":[{"authors":["xry111"],"desc":"Linux From Scratch \u4e3b\u5206\u652f\u8fd1\u671f\u65e0\u652f\u6301\u975e x86 \u67b6\u6784\u7684\u8ba1\u5212\uff0c\u5176\u4ed6\u67b6\u6784\u652f\u6301\u5747\u4e3a\u72ec\u7acb\u9879\u76ee\uff1axry111/loongarch \u5206\u652f\u672c\u8eab\u5373\u4e3a\u4e0a\u6e38","link":"https://wiki.linuxfromscratch.org/lfs/log/?rev=xry111/loongarch","supportStatus":8,"releasedSinceVersion":"12.0","goodSinceVersion":"12.0","quality":0}]},{"code":"loongarchlinux","name":"Loong Arch Linux","homepageURL":"https://loongarchlinux.org","repoURL":"https://github.com/loongarchlinux","portingEfforts":[{"authors":["yetist"],"desc":"","link":"https://bbs.loongarch.org/d/126","supportStatus":8,"releasedSinceVersion":"","goodSinceVersion":"","quality":1}]},{"code":"slackware","name":"Slackware","homepageURL":"","repoURL":"https://github.com/slackwarecn/slackware-loongarch64","portingEfforts":[{"authors":["shipujin"],"desc":"","link":"https://bbs.loongarch.org/d/95","supportStatus":8,"releasedSinceVersion":"","goodSinceVersion":"","quality":1}]},{"code":"yongbao","name":"\u52c7\u8c79 (Yongbao)","homepageURL":"https://github.com/sunhaiyong1978/Yongbao","repoURL":"https://github.com/sunhaiyong1978/Yongbao","portingEfforts":[{"authors":["sunhaiyong1978"],"desc":"CLFS for LoongArch \u4f5c\u8005\u51fa\u54c1\u7684\u4e0d\u53ef\u53d8\u53d1\u884c\u7248","link":"https://github.com/sunhaiyong1978/Yongbao","supportStatus":8,"releasedSinceVersion":"","goodSinceVersion":"","quality":1}]}]}]},"docusaurus-plugin-content-docs":{"default":{"path":"/docs","versions":[{"name":"current","label":"Next","isLast":true,"path":"/docs","mainDocId":"intro","docs":[{"id":"baseline-reference","path":"/docs/baseline-reference","sidebar":"main"},{"id":"collection-of-typical-configurations","path":"/docs/collection-of-typical-configurations","sidebar":"main"},{"id":"contrib/basics","path":"/docs/contrib/basics","sidebar":"main"},{"id":"contrib/index","path":"/docs/contrib/","sidebar":"main"},{"id":"contrib/natlang-style-guide","path":"/docs/contrib/natlang-style-guide","sidebar":"main"},{"id":"errata","path":"/docs/errata","sidebar":"main"},{"id":"intro","path":"/docs/intro","sidebar":"main"},{"id":"linux-upstream-support","path":"/docs/linux-upstream-support","sidebar":"main"},{"id":"loong-or-loongarch","path":"/docs/loong-or-loongarch","sidebar":"main"},{"id":"old-and-new-worlds","path":"/docs/old-and-new-worlds","sidebar":"main"}],"draftIds":[],"sidebars":{"main":{"link":{"path":"/docs/intro","label":"intro"}}}}],"breadcrumbs":true}}}'),i=JSON.parse('{"defaultLocale":"zh-Hans","locales":["zh-Hans"],"path":"i18n","currentLocale":"zh-Hans","localeConfigs":{"zh-Hans":{"label":"\u7b80\u4f53\u4e2d\u6587","direction":"ltr","htmlLang":"zh-Hans","calendar":"gregory","path":"zh-Hans"}}}');var s=n(7529);const l=JSON.parse('{"docusaurusVersion":"3.0.1","siteVersion":"0.0.0","pluginVersions":{"docusaurus-plugin-content-docs":{"type":"package","name":"@docusaurus/plugin-content-docs","version":"3.0.1"},"docusaurus-plugin-content-blog":{"type":"package","name":"@docusaurus/plugin-content-blog","version":"3.0.1"},"docusaurus-plugin-content-pages":{"type":"package","name":"@docusaurus/plugin-content-pages","version":"3.0.1"},"docusaurus-plugin-sitemap":{"type":"package","name":"@docusaurus/plugin-sitemap","version":"3.0.1"},"docusaurus-theme-classic":{"type":"package","name":"@docusaurus/theme-classic","version":"3.0.1"},"awly-asmdb-plugin":{"type":"local"},"awly-data-plugin":{"type":"local"},"docusaurus-plugin-client-redirects":{"type":"package","name":"@docusaurus/plugin-client-redirects","version":"3.0.1"},"@easyops-cn/docusaurus-search-local":{"type":"package","name":"@easyops-cn/docusaurus-search-local","version":"0.38.1"}}}');var c=n(5893);const u={siteConfig:o.default,siteMetadata:l,globalData:a,i18n:i,codeTranslations:s},d=r.createContext(u);function p(e){let{children:t}=e;return(0,c.jsx)(d.Provider,{value:u,children:t})}},4763:(e,t,n)=>{"use strict";n.d(t,{Z:()=>f});var r=n(7294),o=n(412),a=n(5742),i=n(8780),s=n(287),l=n(5893);function c(e){let{error:t,tryAgain:n}=e;return(0,l.jsxs)("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"flex-start",minHeight:"100vh",width:"100%",maxWidth:"80ch",fontSize:"20px",margin:"0 auto",padding:"1rem"},children:[(0,l.jsx)("h1",{style:{fontSize:"3rem"},children:"This page crashed"}),(0,l.jsx)("button",{type:"button",onClick:n,style:{margin:"1rem 0",fontSize:"2rem",cursor:"pointer",borderRadius:20,padding:"1rem"},children:"Try again"}),(0,l.jsx)(u,{error:t})]})}function u(e){let{error:t}=e;const n=(0,i.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return(0,l.jsx)("p",{style:{whiteSpace:"pre-wrap"},children:n})}function d(e){let{error:t,tryAgain:n}=e;return(0,l.jsxs)(f,{fallback:()=>(0,l.jsx)(c,{error:t,tryAgain:n}),children:[(0,l.jsx)(a.Z,{children:(0,l.jsx)("title",{children:"Page Error"})}),(0,l.jsx)(s.Z,{children:(0,l.jsx)(c,{error:t,tryAgain:n})})]})}const p=e=>(0,l.jsx)(d,{...e});class f extends r.Component{constructor(e){super(e),this.state={error:null}}componentDidCatch(e){o.Z.canUseDOM&&this.setState({error:e})}render(){const{children:e}=this.props,{error:t}=this.state;if(t){const e={error:t,tryAgain:()=>this.setState({error:null})};return(this.props.fallback??p)(e)}return e??null}}},412:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});const r="undefined"!=typeof window&&"document"in window&&"createElement"in window.document,o={canUseDOM:r,canUseEventListeners:r&&("addEventListener"in window||"attachEvent"in window),canUseIntersectionObserver:r&&"IntersectionObserver"in window,canUseViewport:r&&"screen"in window}},5742:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});n(7294);var r=n(405),o=n(5893);function a(e){return(0,o.jsx)(r.ql,{...e})}},9960:(e,t,n)=>{"use strict";n.d(t,{Z:()=>f});var r=n(7294),o=n(3727),a=n(8780),i=n(2263),s=n(3919),l=n(412),c=n(5893);const u=r.createContext({collectLink:()=>{}});var d=n(4996);function p(e,t){let{isNavLink:n,to:p,href:f,activeClassName:h,isActive:g,"data-noBrokenLinkCheck":m,autoAddBaseUrl:b=!0,...y}=e;const{siteConfig:{trailingSlash:v,baseUrl:w}}=(0,i.Z)(),{withBaseUrl:k}=(0,d.C)(),x=(0,r.useContext)(u),S=(0,r.useRef)(null);(0,r.useImperativeHandle)(t,(()=>S.current));const _=p||f;const E=(0,s.Z)(_),C=_?.replace("pathname://","");let T=void 0!==C?(j=C,b&&(e=>e.startsWith("/"))(j)?k(j):j):void 0;var j;T&&E&&(T=(0,a.applyTrailingSlash)(T,{trailingSlash:v,baseUrl:w}));const L=(0,r.useRef)(!1),A=n?o.OL:o.rU,R=l.Z.canUseIntersectionObserver,P=(0,r.useRef)(),N=()=>{L.current||null==T||(window.docusaurus.preload(T),L.current=!0)};(0,r.useEffect)((()=>(!R&&E&&null!=T&&window.docusaurus.prefetch(T),()=>{R&&P.current&&P.current.disconnect()})),[P,T,R,E]);const O=T?.startsWith("#")??!1,I=!T||!E||O;return I||m||x.collectLink(T),I?(0,c.jsx)("a",{ref:S,href:T,..._&&!E&&{target:"_blank",rel:"noopener noreferrer"},...y}):(0,c.jsx)(A,{...y,onMouseEnter:N,onTouchStart:N,innerRef:e=>{S.current=e,R&&e&&E&&(P.current=new window.IntersectionObserver((t=>{t.forEach((t=>{e===t.target&&(t.isIntersecting||t.intersectionRatio>0)&&(P.current.unobserve(e),P.current.disconnect(),null!=T&&window.docusaurus.prefetch(T))}))})),P.current.observe(e))},to:T,...n&&{isActive:g,activeClassName:h}})}const f=r.forwardRef(p)},5999:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c,I:()=>l});var r=n(7294),o=n(5893);function a(e,t){const n=e.split(/(\{\w+\})/).map(((e,n)=>{if(n%2==1){const n=t?.[e.slice(1,-1)];if(void 0!==n)return n}return e}));return n.some((e=>(0,r.isValidElement)(e)))?n.map(((e,t)=>(0,r.isValidElement)(e)?r.cloneElement(e,{key:t}):e)).filter((e=>""!==e)):n.join("")}var i=n(7529);function s(e){let{id:t,message:n}=e;if(void 0===t&&void 0===n)throw new Error("Docusaurus translation declarations must have at least a translation id or a default translation message");return i[t??n]??n??t}function l(e,t){let{message:n,id:r}=e;return a(s({message:n,id:r}),t)}function c(e){let{children:t,id:n,values:r}=e;if(t&&"string"!=typeof t)throw console.warn("Illegal children",t),new Error("The Docusaurus component only accept simple string values");const i=s({message:t,id:n});return(0,o.jsx)(o.Fragment,{children:a(i,r)})}},9935:(e,t,n)=>{"use strict";n.d(t,{m:()=>r});const r="default"},3919:(e,t,n)=>{"use strict";function r(e){return/^(?:\w*:|\/\/)/.test(e)}function o(e){return void 0!==e&&!r(e)}n.d(t,{Z:()=>o,b:()=>r})},4996:(e,t,n)=>{"use strict";n.d(t,{C:()=>i,Z:()=>s});var r=n(7294),o=n(2263),a=n(3919);function i(){const{siteConfig:{baseUrl:e,url:t}}=(0,o.Z)(),n=(0,r.useCallback)(((n,r)=>function(e,t,n,r){let{forcePrependBaseUrl:o=!1,absolute:i=!1}=void 0===r?{}:r;if(!n||n.startsWith("#")||(0,a.b)(n))return n;if(o)return t+n.replace(/^\//,"");if(n===t.replace(/\/$/,""))return t;const s=n.startsWith(t)?n:t+n.replace(/^\//,"");return i?e+s:s}(t,e,n,r)),[t,e]);return{withBaseUrl:n}}function s(e,t){void 0===t&&(t={});const{withBaseUrl:n}=i();return n(e,t)}},2263:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});var r=n(7294),o=n(8940);function a(){return(0,r.useContext)(o._)}},8084:(e,t,n)=>{"use strict";n.d(t,{OD:()=>a,eZ:()=>i});var r=n(2263),o=n(9935);function a(e,t){void 0===t&&(t={});const n=function(){const{globalData:e}=(0,r.Z)();return e}()[e];if(!n&&t.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin.`);return n}function i(e,t,n){void 0===t&&(t=o.m),void 0===n&&(n={});const r=a(e),i=r?.[t];if(!i&&n.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin with id "${t}".`);return i}},2389:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});var r=n(7294),o=n(8934);function a(){return(0,r.useContext)(o._)}},469:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7294);const o=n(412).Z.canUseDOM?r.useLayoutEffect:r.useEffect},9670:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});const r=e=>"object"==typeof e&&!!e&&Object.keys(e).length>0;function o(e){const t={};return function e(n,o){Object.entries(n).forEach((n=>{let[a,i]=n;const s=o?`${o}.${a}`:a;r(i)?e(i,s):t[s]=i}))}(e),t}},226:(e,t,n)=>{"use strict";n.d(t,{_:()=>a,z:()=>i});var r=n(7294),o=n(5893);const a=r.createContext(null);function i(e){let{children:t,value:n}=e;const i=r.useContext(a),s=(0,r.useMemo)((()=>function(e){let{parent:t,value:n}=e;if(!t){if(!n)throw new Error("Unexpected: no Docusaurus route context found");if(!("plugin"in n))throw new Error("Unexpected: Docusaurus topmost route context has no `plugin` attribute");return n}const r={...t.data,...n?.data};return{plugin:t.plugin,data:r}}({parent:i,value:n})),[i,n]);return(0,o.jsx)(a.Provider,{value:s,children:t})}},4104:(e,t,n)=>{"use strict";n.d(t,{Iw:()=>f,gA:()=>u,_r:()=>l,Jo:()=>h,zh:()=>c,yW:()=>p,gB:()=>d});var r=n(6550),o=n(8084);const a=e=>e.versions.find((e=>e.isLast));function i(e,t){const n=function(e,t){const n=a(e);return[...e.versions.filter((e=>e!==n)),n].find((e=>!!(0,r.LX)(t,{path:e.path,exact:!1,strict:!1})))}(e,t),o=n?.docs.find((e=>!!(0,r.LX)(t,{path:e.path,exact:!0,strict:!1})));return{activeVersion:n,activeDoc:o,alternateDocVersions:o?function(t){const n={};return e.versions.forEach((e=>{e.docs.forEach((r=>{r.id===t&&(n[e.name]=r)}))})),n}(o.id):{}}}const s={},l=()=>(0,o.OD)("docusaurus-plugin-content-docs")??s,c=e=>(0,o.eZ)("docusaurus-plugin-content-docs",e,{failfast:!0});function u(e){void 0===e&&(e={});const t=l(),{pathname:n}=(0,r.TH)();return function(e,t,n){void 0===n&&(n={});const o=Object.entries(e).sort(((e,t)=>t[1].path.localeCompare(e[1].path))).find((e=>{let[,n]=e;return!!(0,r.LX)(t,{path:n.path,exact:!1,strict:!1})})),a=o?{pluginId:o[0],pluginData:o[1]}:void 0;if(!a&&n.failfast)throw new Error(`Can't find active docs plugin for "${t}" pathname, while it was expected to be found. Maybe you tried to use a docs feature that can only be used on a docs-related page? Existing docs plugin paths are: ${Object.values(e).map((e=>e.path)).join(", ")}`);return a}(t,n,e)}function d(e){return c(e).versions}function p(e){const t=c(e);return a(t)}function f(e){const t=c(e),{pathname:n}=(0,r.TH)();return i(t,n)}function h(e){const t=c(e),{pathname:n}=(0,r.TH)();return function(e,t){const n=a(e);return{latestDocSuggestion:i(e,t).alternateDocVersions[n.name],latestVersionSuggestion:n}}(t,n)}},8320:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>a});var r=n(4865),o=n.n(r);o().configure({showSpinner:!1});const a={onRouteUpdate(e){let{location:t,previousLocation:n}=e;if(n&&t.pathname!==n.pathname){const e=window.setTimeout((()=>{o().start()}),200);return()=>window.clearTimeout(e)}},onRouteDidUpdate(){o().done()}}},3310:(e,t,n)=>{"use strict";n.r(t);var r=n(4965),o=n(6809);!function(e){const{themeConfig:{prism:t}}=o.default,{additionalLanguages:r}=t;globalThis.Prism=e,r.forEach((e=>{"php"===e&&n(6854),n(3929)(`./prism-${e}`)})),delete globalThis.Prism}(r.p1)},2503:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});n(7294);var r=n(6905),o=n(5999),a=n(6668),i=n(9960);const s={anchorWithStickyNavbar:"anchorWithStickyNavbar_LWe7",anchorWithHideOnScrollNavbar:"anchorWithHideOnScrollNavbar_WYt5"};var l=n(5893);function c(e){let{as:t,id:n,...c}=e;const{navbar:{hideOnScroll:u}}=(0,a.L)();if("h1"===t||!n)return(0,l.jsx)(t,{...c,id:void 0});const d=(0,o.I)({id:"theme.common.headingLinkTitle",message:"Direct link to {heading}",description:"Title for link to heading"},{heading:"string"==typeof c.children?c.children:n});return(0,l.jsxs)(t,{...c,className:(0,r.Z)("anchor",u?s.anchorWithHideOnScrollNavbar:s.anchorWithStickyNavbar,c.className),id:n,children:[c.children,(0,l.jsx)(i.Z,{className:"hash-link",to:`#${n}`,"aria-label":d,title:d,children:"\u200b"})]})}},9471:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});n(7294);const r={iconExternalLink:"iconExternalLink_nPIU"};var o=n(5893);function a(e){let{width:t=13.5,height:n=13.5}=e;return(0,o.jsx)("svg",{width:t,height:n,"aria-hidden":"true",viewBox:"0 0 24 24",className:r.iconExternalLink,children:(0,o.jsx)("path",{fill:"currentColor",d:"M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"})})}},287:(e,t,n)=>{"use strict";n.d(t,{Z:()=>Dt});var r=n(7294),o=n(6905),a=n(4763),i=n(1944),s=n(6550),l=n(5999),c=n(5936),u=n(5893);const d="__docusaurus_skipToContent_fallback";function p(e){e.setAttribute("tabindex","-1"),e.focus(),e.removeAttribute("tabindex")}function f(){const e=(0,r.useRef)(null),{action:t}=(0,s.k6)(),n=(0,r.useCallback)((e=>{e.preventDefault();const t=document.querySelector("main:first-of-type")??document.getElementById(d);t&&p(t)}),[]);return(0,c.S)((n=>{let{location:r}=n;e.current&&!r.hash&&"PUSH"===t&&p(e.current)})),{containerRef:e,onClick:n}}const h=(0,l.I)({id:"theme.common.skipToMainContent",description:"The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation",message:"Skip to main content"});function g(e){const t=e.children??h,{containerRef:n,onClick:r}=f();return(0,u.jsx)("div",{ref:n,role:"region","aria-label":h,children:(0,u.jsx)("a",{...e,href:`#${d}`,onClick:r,children:t})})}var m=n(5281),b=n(9727);const y={skipToContent:"skipToContent_fXgn"};function v(){return(0,u.jsx)(g,{className:y.skipToContent})}var w=n(6668),k=n(9689);function x(e){let{width:t=21,height:n=21,color:r="currentColor",strokeWidth:o=1.2,className:a,...i}=e;return(0,u.jsx)("svg",{viewBox:"0 0 15 15",width:t,height:n,...i,children:(0,u.jsx)("g",{stroke:r,strokeWidth:o,children:(0,u.jsx)("path",{d:"M.75.75l13.5 13.5M14.25.75L.75 14.25"})})})}const S={closeButton:"closeButton_CVFx"};function _(e){return(0,u.jsx)("button",{type:"button","aria-label":(0,l.I)({id:"theme.AnnouncementBar.closeButtonAriaLabel",message:"Close",description:"The ARIA label for close button of announcement bar"}),...e,className:(0,o.Z)("clean-btn close",S.closeButton,e.className),children:(0,u.jsx)(x,{width:14,height:14,strokeWidth:3.1})})}const E={content:"content_knG7"};function C(e){const{announcementBar:t}=(0,w.L)(),{content:n}=t;return(0,u.jsx)("div",{...e,className:(0,o.Z)(E.content,e.className),dangerouslySetInnerHTML:{__html:n}})}const T={announcementBar:"announcementBar_mb4j",announcementBarPlaceholder:"announcementBarPlaceholder_vyr4",announcementBarClose:"announcementBarClose_gvF7",announcementBarContent:"announcementBarContent_xLdY"};function j(){const{announcementBar:e}=(0,w.L)(),{isActive:t,close:n}=(0,k.nT)();if(!t)return null;const{backgroundColor:r,textColor:o,isCloseable:a}=e;return(0,u.jsxs)("div",{className:T.announcementBar,style:{backgroundColor:r,color:o},role:"banner",children:[a&&(0,u.jsx)("div",{className:T.announcementBarPlaceholder}),(0,u.jsx)(C,{className:T.announcementBarContent}),a&&(0,u.jsx)(_,{onClick:n,className:T.announcementBarClose})]})}var L=n(2961),A=n(2466);var R=n(902),P=n(3102);const N=r.createContext(null);function O(e){let{children:t}=e;const n=function(){const e=(0,L.e)(),t=(0,P.HY)(),[n,o]=(0,r.useState)(!1),a=null!==t.component,i=(0,R.D9)(a);return(0,r.useEffect)((()=>{a&&!i&&o(!0)}),[a,i]),(0,r.useEffect)((()=>{a?e.shown||o(!0):o(!1)}),[e.shown,a]),(0,r.useMemo)((()=>[n,o]),[n])}();return(0,u.jsx)(N.Provider,{value:n,children:t})}function I(e){if(e.component){const t=e.component;return(0,u.jsx)(t,{...e.props})}}function F(){const e=(0,r.useContext)(N);if(!e)throw new R.i6("NavbarSecondaryMenuDisplayProvider");const[t,n]=e,o=(0,r.useCallback)((()=>n(!1)),[n]),a=(0,P.HY)();return(0,r.useMemo)((()=>({shown:t,hide:o,content:I(a)})),[o,a,t])}function D(e){let{header:t,primaryMenu:n,secondaryMenu:r}=e;const{shown:a}=F();return(0,u.jsxs)("div",{className:"navbar-sidebar",children:[t,(0,u.jsxs)("div",{className:(0,o.Z)("navbar-sidebar__items",{"navbar-sidebar__items--show-secondary":a}),children:[(0,u.jsx)("div",{className:"navbar-sidebar__item menu",children:n}),(0,u.jsx)("div",{className:"navbar-sidebar__item menu",children:r})]})]})}var M=n(2949),z=n(2389);function B(e){return(0,u.jsx)("svg",{viewBox:"0 0 24 24",width:24,height:24,...e,children:(0,u.jsx)("path",{fill:"currentColor",d:"M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"})})}function U(e){return(0,u.jsx)("svg",{viewBox:"0 0 24 24",width:24,height:24,...e,children:(0,u.jsx)("path",{fill:"currentColor",d:"M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"})})}const $={toggle:"toggle_vylO",toggleButton:"toggleButton_gllP",darkToggleIcon:"darkToggleIcon_wfgR",lightToggleIcon:"lightToggleIcon_pyhR",toggleButtonDisabled:"toggleButtonDisabled_aARS"};function V(e){let{className:t,buttonClassName:n,value:r,onChange:a}=e;const i=(0,z.Z)(),s=(0,l.I)({message:"Switch between dark and light mode (currently {mode})",id:"theme.colorToggle.ariaLabel",description:"The ARIA label for the navbar color mode toggle"},{mode:"dark"===r?(0,l.I)({message:"dark mode",id:"theme.colorToggle.ariaLabel.mode.dark",description:"The name for the dark color mode"}):(0,l.I)({message:"light mode",id:"theme.colorToggle.ariaLabel.mode.light",description:"The name for the light color mode"})});return(0,u.jsx)("div",{className:(0,o.Z)($.toggle,t),children:(0,u.jsxs)("button",{className:(0,o.Z)("clean-btn",$.toggleButton,!i&&$.toggleButtonDisabled,n),type:"button",onClick:()=>a("dark"===r?"light":"dark"),disabled:!i,title:s,"aria-label":s,"aria-live":"polite",children:[(0,u.jsx)(B,{className:(0,o.Z)($.toggleIcon,$.lightToggleIcon)}),(0,u.jsx)(U,{className:(0,o.Z)($.toggleIcon,$.darkToggleIcon)})]})})}const H=r.memo(V),Z={darkNavbarColorModeToggle:"darkNavbarColorModeToggle_X3D1"};function Q(e){let{className:t}=e;const n=(0,w.L)().navbar.style,r=(0,w.L)().colorMode.disableSwitch,{colorMode:o,setColorMode:a}=(0,M.I)();return r?null:(0,u.jsx)(H,{className:t,buttonClassName:"dark"===n?Z.darkNavbarColorModeToggle:void 0,value:o,onChange:a})}var W=n(1327);function q(){return(0,u.jsx)(W.Z,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title text--truncate"})}function G(){const e=(0,L.e)();return(0,u.jsx)("button",{type:"button","aria-label":(0,l.I)({id:"theme.docs.sidebar.closeSidebarButtonAriaLabel",message:"Close navigation bar",description:"The ARIA label for close button of mobile sidebar"}),className:"clean-btn navbar-sidebar__close",onClick:()=>e.toggle(),children:(0,u.jsx)(x,{color:"var(--ifm-color-emphasis-600)"})})}function Y(){return(0,u.jsxs)("div",{className:"navbar-sidebar__brand",children:[(0,u.jsx)(q,{}),(0,u.jsx)(Q,{className:"margin-right--md"}),(0,u.jsx)(G,{})]})}var K=n(9960),X=n(4996),J=n(3919);function ee(e,t){return void 0!==e&&void 0!==t&&new RegExp(e,"gi").test(t)}var te=n(9471);function ne(e){let{activeBasePath:t,activeBaseRegex:n,to:r,href:o,label:a,html:i,isDropdownLink:s,prependBaseUrlToHref:l,...c}=e;const d=(0,X.Z)(r),p=(0,X.Z)(t),f=(0,X.Z)(o,{forcePrependBaseUrl:!0}),h=a&&o&&!(0,J.Z)(o),g=i?{dangerouslySetInnerHTML:{__html:i}}:{children:(0,u.jsxs)(u.Fragment,{children:[a,h&&(0,u.jsx)(te.Z,{...s&&{width:12,height:12}})]})};return o?(0,u.jsx)(K.Z,{href:l?f:o,...c,...g}):(0,u.jsx)(K.Z,{to:d,isNavLink:!0,...(t||n)&&{isActive:(e,t)=>n?ee(n,t.pathname):t.pathname.startsWith(p)},...c,...g})}function re(e){let{className:t,isDropdownItem:n=!1,...r}=e;const a=(0,u.jsx)(ne,{className:(0,o.Z)(n?"dropdown__link":"navbar__item navbar__link",t),isDropdownLink:n,...r});return n?(0,u.jsx)("li",{children:a}):a}function oe(e){let{className:t,isDropdownItem:n,...r}=e;return(0,u.jsx)("li",{className:"menu__list-item",children:(0,u.jsx)(ne,{className:(0,o.Z)("menu__link",t),...r})})}function ae(e){let{mobile:t=!1,position:n,...r}=e;const o=t?oe:re;return(0,u.jsx)(o,{...r,activeClassName:r.activeClassName??(t?"menu__link--active":"navbar__link--active")})}var ie=n(6043),se=n(8596),le=n(2263);const ce={dropdownNavbarItemMobile:"dropdownNavbarItemMobile_S0Fm"};function ue(e,t){return e.some((e=>function(e,t){return!!(0,se.Mg)(e.to,t)||!!ee(e.activeBaseRegex,t)||!(!e.activeBasePath||!t.startsWith(e.activeBasePath))}(e,t)))}function de(e){let{items:t,position:n,className:a,onClick:i,...s}=e;const l=(0,r.useRef)(null),[c,d]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{const e=e=>{l.current&&!l.current.contains(e.target)&&d(!1)};return document.addEventListener("mousedown",e),document.addEventListener("touchstart",e),document.addEventListener("focusin",e),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("touchstart",e),document.removeEventListener("focusin",e)}}),[l]),(0,u.jsxs)("div",{ref:l,className:(0,o.Z)("navbar__item","dropdown","dropdown--hoverable",{"dropdown--right":"right"===n,"dropdown--show":c}),children:[(0,u.jsx)(ne,{"aria-haspopup":"true","aria-expanded":c,role:"button",href:s.to?void 0:"#",className:(0,o.Z)("navbar__link",a),...s,onClick:s.to?void 0:e=>e.preventDefault(),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),d(!c))},children:s.children??s.label}),(0,u.jsx)("ul",{className:"dropdown__menu",children:t.map(((e,t)=>(0,r.createElement)(Qe,{isDropdownItem:!0,activeClassName:"dropdown__link--active",...e,key:t})))})]})}function pe(e){let{items:t,className:n,position:a,onClick:i,...l}=e;const c=function(){const{siteConfig:{baseUrl:e}}=(0,le.Z)(),{pathname:t}=(0,s.TH)();return t.replace(e,"/")}(),d=ue(t,c),{collapsed:p,toggleCollapsed:f,setCollapsed:h}=(0,ie.u)({initialState:()=>!d});return(0,r.useEffect)((()=>{d&&h(!d)}),[c,d,h]),(0,u.jsxs)("li",{className:(0,o.Z)("menu__list-item",{"menu__list-item--collapsed":p}),children:[(0,u.jsx)(ne,{role:"button",className:(0,o.Z)(ce.dropdownNavbarItemMobile,"menu__link menu__link--sublist menu__link--sublist-caret",n),...l,onClick:e=>{e.preventDefault(),f()},children:l.children??l.label}),(0,u.jsx)(ie.z,{lazy:!0,as:"ul",className:"menu__list",collapsed:p,children:t.map(((e,t)=>(0,r.createElement)(Qe,{mobile:!0,isDropdownItem:!0,onClick:i,activeClassName:"menu__link--active",...e,key:t})))})]})}function fe(e){let{mobile:t=!1,...n}=e;const r=t?pe:de;return(0,u.jsx)(r,{...n})}var he=n(4711);function ge(e){let{width:t=20,height:n=20,...r}=e;return(0,u.jsx)("svg",{viewBox:"0 0 24 24",width:t,height:n,"aria-hidden":!0,...r,children:(0,u.jsx)("path",{fill:"currentColor",d:"M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"})})}const me="iconLanguage_nlXk";var be=n(1029),ye=n(6010),ve=n(373),we=n(4104),ke=n(22),xe=n(8202),Se=n(3926),_e=n(1073),Ee=n(2539),Ce=n(726);const Te='',je='',Le='',Ae='',Re='',Pe='',Ne='',Oe={searchBar:"searchBar_RVTs",dropdownMenu:"dropdownMenu_qbY6",searchBarLeft:"searchBarLeft_MXDe",suggestion:"suggestion_fB_2",cursor:"cursor_eG29",hitTree:"hitTree_kk6K",hitIcon:"hitIcon_a7Zy",hitPath:"hitPath_ieM4",noResultsIcon:"noResultsIcon_EBY5",hitFooter:"hitFooter_E9YW",hitWrapper:"hitWrapper_sAK8",hitTitle:"hitTitle_vyVt",hitAction:"hitAction_NqkB",hideAction:"hideAction_vcyE",noResults:"noResults_l6Q3",searchBarContainer:"searchBarContainer_NW3z",searchBarLoadingRing:"searchBarLoadingRing_YnHq",searchClearButton:"searchClearButton_qk4g",searchIndexLoading:"searchIndexLoading_EJ1f",searchHintContainer:"searchHintContainer_Pkmr",searchHint:"searchHint_iIMx",focused:"focused_OWtg",input:"input_FOTf",hint:"hint_URu1",suggestions:"suggestions_X8XU",dataset:"dataset_QiCy",empty:"empty_eITn"};function Ie(e){let{document:t,type:n,page:r,metadata:o,tokens:a,isInterOfTree:i,isLastOfTree:s}=e;const l=0===n,c=1===n,u=[];i?u.push(Pe):s&&u.push(Ne);const d=u.map((e=>`${e}`)),p=`${l?Te:c?je:Le}`,f=[`${(0,Ce.o)(t.t,(0,_e.m)(o,"t"),a)}`];if(!i&&!s&&be.H6){const e=r?(r.b??[]).concat(r.t).concat(t.s&&t.s!==r.t?t.s:[]):t.b;f.push(`${(0,Se.e)(e??[])}`)}else l||f.push(`${(0,Ee.C)(r.t||(t.u.startsWith("/docs/api-reference/")?"API Reference":""),a)}`);const h=`${Ae}`;return[...d,p,``,...f,"",h].join("")}function Fe(){return`${Re}${(0,l.I)({id:"theme.SearchBar.noResultsText",message:"No results"})}`}var De=n(311);async function Me(){const e=await Promise.all([n.e(8443),n.e(5525)]).then(n.t.bind(n,8443,23)),t=e.default;return t.noConflict?t.noConflict():e.noConflict&&e.noConflict(),t}const ze="_highlight";const Be=function(e){let{handleSearchBarToggle:t}=e;const n=(0,z.Z)(),{siteConfig:{baseUrl:o}}=(0,le.Z)(),a=(0,we.gA)();let i=o;try{const{preferredVersion:e}=(0,ve.J)(a?.pluginId??be.gQ);e&&!e.isLast&&(i=e.path+"/")}catch(F){if(be.l9&&!(F instanceof R.i6))throw F}const c=(0,s.k6)(),d=(0,s.TH)(),p=(0,r.useRef)(null),f=(0,r.useRef)(new Map),h=(0,r.useRef)(!1),[g,m]=(0,r.useState)(!1),[b,y]=(0,r.useState)(!1),[v,w]=(0,r.useState)(""),k=(0,r.useRef)(null),x=(0,r.useRef)(""),[S,_]=(0,r.useState)("");(0,r.useEffect)((()=>{if(!Array.isArray(be.Kc))return;let e="";if(d.pathname.startsWith(i)){const t=d.pathname.substring(i.length),n=be.Kc.find((e=>t===e||t.startsWith(`${e}/`)));n&&(e=n)}x.current!==e&&(f.current.delete(e),x.current=e),_(e)}),[d.pathname,i]);const E=!!be.hG&&Array.isArray(be.Kc)&&""===S,C=(0,r.useCallback)((async()=>{if(E||f.current.get(S))return;f.current.set(S,"loading"),k.current?.autocomplete.destroy(),m(!0);const[{wrappedIndexes:e,zhDictionary:t},n]=await Promise.all([(0,ke.w)(i,S),Me()]);if(k.current=n(p.current,{hint:!1,autoselect:!0,openOnFocus:!0,cssClasses:{root:(0,ye.Z)(Oe.searchBar,{[Oe.searchBarLeft]:"left"===be.pu}),noPrefix:!0,dropdownMenu:Oe.dropdownMenu,input:Oe.input,hint:Oe.hint,suggestions:Oe.suggestions,suggestion:Oe.suggestion,cursor:Oe.cursor,dataset:Oe.dataset,empty:Oe.empty}},[{source:(0,xe.v)(e,t,be.qo),templates:{suggestion:Ie,empty:Fe,footer:e=>{let{query:t,isEmpty:n}=e;if(n&&!S)return;const r=(e=>{let{query:t,isEmpty:n}=e;const r=document.createElement("a"),a=new URLSearchParams,s=(0,l.I)({id:"theme.SearchBar.seeAll",message:"See all results"}),u=(0,l.I)({id:"theme.SearchBar.seeAllOutsideContext",message:"See results outside {context}"},{context:S}),d=(0,l.I)({id:"theme.SearchBar.searchInContext",message:"See all results in {context}"},{context:S});let p;if(a.set("q",t),p=S&&n?u:S?d:s,Array.isArray(be.Kc)&&!n&&a.set("ctx",S),i!==o){if(!i.startsWith(o))throw new Error(`Version url '${i}' does not start with base url '${o}', this is a bug of \`@easyops-cn/docusaurus-search-local\`, please report it.`);a.set("version",i.substring(o.length))}const f=`${o}search?${a.toString()}`;return r.href=f,r.textContent=p,r.addEventListener("click",(e=>{e.ctrlKey||e.metaKey||(e.preventDefault(),k.current?.autocomplete.close(),c.push(f))})),r})({query:t,isEmpty:n}),a=document.createElement("div");return a.className=Oe.hitFooter,a.appendChild(r),a}}}]).on("autocomplete:selected",(function(e,t){let{document:{u:n,h:r},tokens:o}=t;p.current?.blur();let a=n;if(be.vc&&o.length>0){const e=new URLSearchParams;for(const t of o)e.append(ze,t);a+=`?${e.toString()}`}r&&(a+=r),c.push(a)})).on("autocomplete:closed",(()=>{p.current?.blur()})),f.current.set(S,"done"),m(!1),h.current){const e=p.current;e.value&&k.current?.autocomplete.open(),e.focus()}}),[E,S,i,o,c]);(0,r.useEffect)((()=>{if(!be.vc)return;const e=n?new URLSearchParams(d.search).getAll(ze):[];setTimeout((()=>{const t=document.querySelector("article");if(!t)return;const n=new be.vc(t);n.unmark(),0!==e.length&&n.mark(e),w(e.join(" ")),k.current?.autocomplete.setVal(e.join(" "))}))}),[n,d.search,d.pathname]);const[T,j]=(0,r.useState)(!1),L=(0,r.useCallback)((()=>{h.current=!0,C(),j(!0),t?.(!0)}),[t,C]),A=(0,r.useCallback)((()=>{j(!1),t?.(!1)}),[t]),P=(0,r.useCallback)((()=>{C()}),[C]),N=(0,r.useCallback)((e=>{w(e.target.value),e.target.value&&y(!0)}),[]),O=!!n&&/mac/i.test(navigator.userAgentData?.platform??navigator.platform);(0,r.useEffect)((()=>{if(!be.AY)return;const e=e=>{!(O?e.metaKey:e.ctrlKey)||"k"!==e.key&&"K"!==e.key||(e.preventDefault(),p.current?.focus(),L())};return document.addEventListener("keydown",e),()=>{document.removeEventListener("keydown",e)}}),[O,L]);const I=(0,r.useCallback)((()=>{const e=new URLSearchParams(d.search);e.delete(ze);const t=e.toString(),n=d.pathname+(""!=t?`?${t}`:"")+d.hash;n!=d.pathname+d.search+d.hash&&c.push(n),w(""),k.current?.autocomplete.setVal("")}),[d.pathname,d.search,d.hash,c]);return(0,u.jsxs)("div",{className:(0,ye.Z)("navbar__search",Oe.searchBarContainer,{[Oe.searchIndexLoading]:g&&b,[Oe.focused]:T}),hidden:E,children:[(0,u.jsx)("input",{placeholder:(0,l.I)({id:"theme.SearchBar.label",message:"Search",description:"The ARIA label and placeholder for search button"}),"aria-label":"Search",className:"navbar__search-input",onMouseEnter:P,onFocus:L,onBlur:A,onChange:N,ref:p,value:v}),(0,u.jsx)(De.Z,{className:Oe.searchBarLoadingRing}),be.AY&&be.t_&&(""!==v?(0,u.jsx)("button",{className:Oe.searchClearButton,onClick:I,children:"\u2715"}):n&&(0,u.jsxs)("div",{className:Oe.searchHintContainer,children:[(0,u.jsx)("kbd",{className:Oe.searchHint,children:O?"\u2318":"ctrl"}),(0,u.jsx)("kbd",{className:Oe.searchHint,children:"K"})]}))]})},Ue={navbarSearchContainer:"navbarSearchContainer_Bca1"};function $e(e){let{children:t,className:n}=e;return(0,u.jsx)("div",{className:(0,o.Z)(n,Ue.navbarSearchContainer),children:t})}var Ve=n(2802);const He=e=>e.docs.find((t=>t.id===e.mainDocId));const Ze={default:ae,localeDropdown:function(e){let{mobile:t,dropdownItemsBefore:n,dropdownItemsAfter:r,queryString:o="",...a}=e;const{i18n:{currentLocale:i,locales:c,localeConfigs:d}}=(0,le.Z)(),p=(0,he.l)(),{search:f,hash:h}=(0,s.TH)(),g=[...n,...c.map((e=>{const n=`${`pathname://${p.createUrl({locale:e,fullyQualified:!1})}`}${f}${h}${o}`;return{label:d[e].label,lang:d[e].htmlLang,to:n,target:"_self",autoAddBaseUrl:!1,className:e===i?t?"menu__link--active":"dropdown__link--active":""}})),...r],m=t?(0,l.I)({message:"Languages",id:"theme.navbar.mobileLanguageDropdown.label",description:"The label for the mobile language switcher dropdown"}):d[i].label;return(0,u.jsx)(fe,{...a,mobile:t,label:(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(ge,{className:me}),m]}),items:g})},search:function(e){let{mobile:t,className:n}=e;return t?null:(0,u.jsx)($e,{className:n,children:(0,u.jsx)(Be,{})})},dropdown:fe,html:function(e){let{value:t,className:n,mobile:r=!1,isDropdownItem:a=!1}=e;const i=a?"li":"div";return(0,u.jsx)(i,{className:(0,o.Z)({navbar__item:!r&&!a,"menu__list-item":r},n),dangerouslySetInnerHTML:{__html:t}})},doc:function(e){let{docId:t,label:n,docsPluginId:r,...o}=e;const{activeDoc:a}=(0,we.Iw)(r),i=(0,Ve.vY)(t,r),s=a?.path===i?.path;return null===i||i.unlisted&&!s?null:(0,u.jsx)(ae,{exact:!0,...o,isActive:()=>s||!!a?.sidebar&&a.sidebar===i.sidebar,label:n??i.id,to:i.path})},docSidebar:function(e){let{sidebarId:t,label:n,docsPluginId:r,...o}=e;const{activeDoc:a}=(0,we.Iw)(r),i=(0,Ve.oz)(t,r).link;if(!i)throw new Error(`DocSidebarNavbarItem: Sidebar with ID "${t}" doesn't have anything to be linked to.`);return(0,u.jsx)(ae,{exact:!0,...o,isActive:()=>a?.sidebar===t,label:n??i.label,to:i.path})},docsVersion:function(e){let{label:t,to:n,docsPluginId:r,...o}=e;const a=(0,Ve.lO)(r)[0],i=t??a.label,s=n??(e=>e.docs.find((t=>t.id===e.mainDocId)))(a).path;return(0,u.jsx)(ae,{...o,label:i,to:s})},docsVersionDropdown:function(e){let{mobile:t,docsPluginId:n,dropdownActiveClassDisabled:r,dropdownItemsBefore:o,dropdownItemsAfter:a,...i}=e;const{search:c,hash:d}=(0,s.TH)(),p=(0,we.Iw)(n),f=(0,we.gB)(n),{savePreferredVersionName:h}=(0,ve.J)(n),g=[...o,...f.map((e=>{const t=p.alternateDocVersions[e.name]??He(e);return{label:e.label,to:`${t.path}${c}${d}`,isActive:()=>e===p.activeVersion,onClick:()=>h(e.name)}})),...a],m=(0,Ve.lO)(n)[0],b=t&&g.length>1?(0,l.I)({id:"theme.navbar.mobileVersionsDropdown.label",message:"Versions",description:"The label for the navbar versions dropdown on mobile view"}):m.label,y=t&&g.length>1?void 0:He(m).path;return g.length<=1?(0,u.jsx)(ae,{...i,mobile:t,label:b,to:y,isActive:r?()=>!1:void 0}):(0,u.jsx)(fe,{...i,mobile:t,label:b,to:y,items:g,isActive:r?()=>!1:void 0})}};function Qe(e){let{type:t,...n}=e;const r=function(e,t){return e&&"default"!==e?e:"items"in t?"dropdown":"default"}(t,n),o=Ze[r];if(!o)throw new Error(`No NavbarItem component found for type "${t}".`);return(0,u.jsx)(o,{...n})}function We(){const e=(0,L.e)(),t=(0,w.L)().navbar.items;return(0,u.jsx)("ul",{className:"menu__list",children:t.map(((t,n)=>(0,r.createElement)(Qe,{mobile:!0,...t,onClick:()=>e.toggle(),key:n})))})}function qe(e){return(0,u.jsx)("button",{...e,type:"button",className:"clean-btn navbar-sidebar__back",children:(0,u.jsx)(l.Z,{id:"theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel",description:"The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)",children:"\u2190 Back to main menu"})})}function Ge(){const e=0===(0,w.L)().navbar.items.length,t=F();return(0,u.jsxs)(u.Fragment,{children:[!e&&(0,u.jsx)(qe,{onClick:()=>t.hide()}),t.content]})}function Ye(){const e=(0,L.e)();var t;return void 0===(t=e.shown)&&(t=!0),(0,r.useEffect)((()=>(document.body.style.overflow=t?"hidden":"visible",()=>{document.body.style.overflow="visible"})),[t]),e.shouldRender?(0,u.jsx)(D,{header:(0,u.jsx)(Y,{}),primaryMenu:(0,u.jsx)(We,{}),secondaryMenu:(0,u.jsx)(Ge,{})}):null}const Ke={navbarHideable:"navbarHideable_m1mJ",navbarHidden:"navbarHidden_jGov"};function Xe(e){return(0,u.jsx)("div",{role:"presentation",...e,className:(0,o.Z)("navbar-sidebar__backdrop",e.className)})}function Je(e){let{children:t}=e;const{navbar:{hideOnScroll:n,style:a}}=(0,w.L)(),i=(0,L.e)(),{navbarRef:s,isNavbarVisible:d}=function(e){const[t,n]=(0,r.useState)(e),o=(0,r.useRef)(!1),a=(0,r.useRef)(0),i=(0,r.useCallback)((e=>{null!==e&&(a.current=e.getBoundingClientRect().height)}),[]);return(0,A.RF)(((t,r)=>{let{scrollY:i}=t;if(!e)return;if(i=s?n(!1):i+c{if(!e)return;const r=t.location.hash;if(r?document.getElementById(r.substring(1)):void 0)return o.current=!0,void n(!1);n(!0)})),{navbarRef:i,isNavbarVisible:t}}(n);return(0,u.jsxs)("nav",{ref:s,"aria-label":(0,l.I)({id:"theme.NavBar.navAriaLabel",message:"Main",description:"The ARIA label for the main navigation"}),className:(0,o.Z)("navbar","navbar--fixed-top",n&&[Ke.navbarHideable,!d&&Ke.navbarHidden],{"navbar--dark":"dark"===a,"navbar--primary":"primary"===a,"navbar-sidebar--show":i.shown}),children:[t,(0,u.jsx)(Xe,{onClick:i.toggle}),(0,u.jsx)(Ye,{})]})}var et=n(8780);const tt={errorBoundaryError:"errorBoundaryError_a6uf",errorBoundaryFallback:"errorBoundaryFallback_VBag"};function nt(e){return(0,u.jsx)("button",{type:"button",...e,children:(0,u.jsx)(l.Z,{id:"theme.ErrorPageContent.tryAgain",description:"The label of the button to try again rendering when the React error boundary captures an error",children:"Try again"})})}function rt(e){let{error:t}=e;const n=(0,et.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return(0,u.jsx)("p",{className:tt.errorBoundaryError,children:n})}class ot extends r.Component{componentDidCatch(e,t){throw this.props.onError(e,t)}render(){return this.props.children}}const at="right";function it(e){let{width:t=30,height:n=30,className:r,...o}=e;return(0,u.jsx)("svg",{className:r,width:t,height:n,viewBox:"0 0 30 30","aria-hidden":"true",...o,children:(0,u.jsx)("path",{stroke:"currentColor",strokeLinecap:"round",strokeMiterlimit:"10",strokeWidth:"2",d:"M4 7h22M4 15h22M4 23h22"})})}function st(){const{toggle:e,shown:t}=(0,L.e)();return(0,u.jsx)("button",{onClick:e,"aria-label":(0,l.I)({id:"theme.docs.sidebar.toggleSidebarButtonAriaLabel",message:"Toggle navigation bar",description:"The ARIA label for hamburger menu button of mobile navigation"}),"aria-expanded":t,className:"navbar__toggle clean-btn",type:"button",children:(0,u.jsx)(it,{})})}const lt={colorModeToggle:"colorModeToggle_DEke"};function ct(e){let{items:t}=e;return(0,u.jsx)(u.Fragment,{children:t.map(((e,t)=>(0,u.jsx)(ot,{onError:t=>new Error(`A theme navbar item failed to render.\nPlease double-check the following navbar item (themeConfig.navbar.items) of your Docusaurus config:\n${JSON.stringify(e,null,2)}`,{cause:t}),children:(0,u.jsx)(Qe,{...e})},t)))})}function ut(e){let{left:t,right:n}=e;return(0,u.jsxs)("div",{className:"navbar__inner",children:[(0,u.jsx)("div",{className:"navbar__items",children:t}),(0,u.jsx)("div",{className:"navbar__items navbar__items--right",children:n})]})}function dt(){const e=(0,L.e)(),t=(0,w.L)().navbar.items,[n,r]=function(e){function t(e){return"left"===(e.position??at)}return[e.filter(t),e.filter((e=>!t(e)))]}(t),o=t.find((e=>"search"===e.type));return(0,u.jsx)(ut,{left:(0,u.jsxs)(u.Fragment,{children:[!e.disabled&&(0,u.jsx)(st,{}),(0,u.jsx)(q,{}),(0,u.jsx)(ct,{items:n})]}),right:(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(ct,{items:r}),(0,u.jsx)(Q,{className:lt.colorModeToggle}),!o&&(0,u.jsx)($e,{children:(0,u.jsx)(Be,{})})]})})}function pt(){return(0,u.jsx)(Je,{children:(0,u.jsx)(dt,{})})}function ft(e){let{item:t}=e;const{to:n,href:r,label:o,prependBaseUrlToHref:a,...i}=t,s=(0,X.Z)(n),l=(0,X.Z)(r,{forcePrependBaseUrl:!0});return(0,u.jsxs)(K.Z,{className:"footer__link-item",...r?{href:a?l:r}:{to:s},...i,children:[o,r&&!(0,J.Z)(r)&&(0,u.jsx)(te.Z,{})]})}function ht(e){let{item:t}=e;return t.html?(0,u.jsx)("li",{className:"footer__item",dangerouslySetInnerHTML:{__html:t.html}}):(0,u.jsx)("li",{className:"footer__item",children:(0,u.jsx)(ft,{item:t})},t.href??t.to)}function gt(e){let{column:t}=e;return(0,u.jsxs)("div",{className:"col footer__col",children:[(0,u.jsx)("div",{className:"footer__title",children:t.title}),(0,u.jsx)("ul",{className:"footer__items clean-list",children:t.items.map(((e,t)=>(0,u.jsx)(ht,{item:e},t)))})]})}function mt(e){let{columns:t}=e;return(0,u.jsx)("div",{className:"row footer__links",children:t.map(((e,t)=>(0,u.jsx)(gt,{column:e},t)))})}function bt(){return(0,u.jsx)("span",{className:"footer__link-separator",children:"\xb7"})}function yt(e){let{item:t}=e;return t.html?(0,u.jsx)("span",{className:"footer__link-item",dangerouslySetInnerHTML:{__html:t.html}}):(0,u.jsx)(ft,{item:t})}function vt(e){let{links:t}=e;return(0,u.jsx)("div",{className:"footer__links text--center",children:(0,u.jsx)("div",{className:"footer__links",children:t.map(((e,n)=>(0,u.jsxs)(r.Fragment,{children:[(0,u.jsx)(yt,{item:e}),t.length!==n+1&&(0,u.jsx)(bt,{})]},n)))})})}function wt(e){let{links:t}=e;return function(e){return"title"in e[0]}(t)?(0,u.jsx)(mt,{columns:t}):(0,u.jsx)(vt,{links:t})}var kt=n(9965);const xt={footerLogoLink:"footerLogoLink_BH7S"};function St(e){let{logo:t}=e;const{withBaseUrl:n}=(0,X.C)(),r={light:n(t.src),dark:n(t.srcDark??t.src)};return(0,u.jsx)(kt.Z,{className:(0,o.Z)("footer__logo",t.className),alt:t.alt,sources:r,width:t.width,height:t.height,style:t.style})}function _t(e){let{logo:t}=e;return t.href?(0,u.jsx)(K.Z,{href:t.href,className:xt.footerLogoLink,target:t.target,children:(0,u.jsx)(St,{logo:t})}):(0,u.jsx)(St,{logo:t})}function Et(e){let{copyright:t}=e;return(0,u.jsx)("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:t}})}const Ct={footer__beian:"footer__beian_u63W",mpsLogo:"mpsLogo_uD3h"};function Tt(e){let{province:t,recordNumber:n,subRecordNumber:r}=e;return(0,u.jsxs)("a",{href:"https://beian.miit.gov.cn",target:"_blank",children:[t,"ICP\u5907",n,"\u53f7-",r]})}function jt(e){return(0,u.jsxs)(u.Fragment,{children:[(0,u.jsxs)("p",{children:[(0,u.jsx)("a",{className:"link--overseas",children:"\u5f62\u5982\u6b64"}),"\u7684\u94fe\u63a5\uff0c\u6216\u90e8\u5206",(0,u.jsxs)("a",{children:["\u5f62\u5982\u6b64",(0,u.jsx)(te.Z,{})]}),"\u7684\u94fe\u63a5\uff0c\u5176\u76ee\u6807\u4e3b\u673a\u53ef\u80fd\u4f4d\u4e8e\u4e2d\u56fd\u5927\u9646\u5883\u5916\u3002\u5982\u9700\u8ddf\u8fdb\u9605\u8bfb\u5374\u65e0\u6cd5\u8bbf\u95ee\uff0c\u8bf7\u81ea\u884c\u5bfb\u627e\u89e3\u51b3\u65b9\u6848\u3002"]}),(0,u.jsx)(Et,{...e}),(0,u.jsx)("ul",{className:Ct.footer__beian,children:(0,u.jsx)("li",{children:(0,u.jsx)(Tt,{province:"\u82cf",recordNumber:17027553,subRecordNumber:2})})})]})}function Lt(e){let{style:t,links:n,logo:r,copyright:a}=e;return(0,u.jsx)("footer",{className:(0,o.Z)("footer",{"footer--dark":"dark"===t}),children:(0,u.jsxs)("div",{className:"container container-fluid",children:[n,(r||a)&&(0,u.jsxs)("div",{className:"footer__bottom text--center",children:[r&&(0,u.jsx)("div",{className:"margin-bottom--sm",children:r}),a]})]})})}function At(){const{footer:e}=(0,w.L)();if(!e)return null;const{copyright:t,links:n,logo:r,style:o}=e;return(0,u.jsx)(Lt,{style:o,links:n&&n.length>0&&(0,u.jsx)(wt,{links:n}),logo:r&&(0,u.jsx)(_t,{logo:r}),copyright:t&&(0,u.jsx)(jt,{copyright:t})})}const Rt=r.memo(At),Pt=(0,R.Qc)([M.S,k.pl,A.OC,ve.L5,i.VC,function(e){let{children:t}=e;return(0,u.jsx)(P.n2,{children:(0,u.jsx)(L.M,{children:(0,u.jsx)(O,{children:t})})})}]);function Nt(e){let{children:t}=e;return(0,u.jsx)(Pt,{children:t})}var Ot=n(2503);function It(e){let{error:t,tryAgain:n}=e;return(0,u.jsx)("main",{className:"container margin-vert--xl",children:(0,u.jsx)("div",{className:"row",children:(0,u.jsxs)("div",{className:"col col--6 col--offset-3",children:[(0,u.jsx)(Ot.Z,{as:"h1",className:"hero__title",children:(0,u.jsx)(l.Z,{id:"theme.ErrorPageContent.title",description:"The title of the fallback page when the page crashed",children:"This page crashed."})}),(0,u.jsx)("div",{className:"margin-vert--lg",children:(0,u.jsx)(nt,{onClick:n,className:"button button--primary shadow--lw"})}),(0,u.jsx)("hr",{}),(0,u.jsx)("div",{className:"margin-vert--md",children:(0,u.jsx)(rt,{error:t})})]})})})}const Ft={mainWrapper:"mainWrapper_z2l0"};function Dt(e){const{children:t,noFooter:n,wrapperClassName:r,title:s,description:l}=e;return(0,b.t)(),(0,u.jsxs)(Nt,{children:[(0,u.jsx)(i.d,{title:s,description:l}),(0,u.jsx)(v,{}),(0,u.jsx)(j,{}),(0,u.jsx)(pt,{}),(0,u.jsx)("div",{id:d,className:(0,o.Z)(m.k.wrapper.main,Ft.mainWrapper,r),children:(0,u.jsx)(a.Z,{fallback:e=>(0,u.jsx)(It,{...e}),children:t})}),!n&&(0,u.jsx)(Rt,{})]})}},1327:(e,t,n)=>{"use strict";n.d(t,{Z:()=>u});n(7294);var r=n(9960),o=n(4996),a=n(2263),i=n(6668),s=n(9965),l=n(5893);function c(e){let{logo:t,alt:n,imageClassName:r}=e;const a={light:(0,o.Z)(t.src),dark:(0,o.Z)(t.srcDark||t.src)},i=(0,l.jsx)(s.Z,{className:t.className,sources:a,height:t.height,width:t.width,alt:n,style:t.style});return r?(0,l.jsx)("div",{className:r,children:i}):i}function u(e){const{siteConfig:{title:t}}=(0,a.Z)(),{navbar:{title:n,logo:s}}=(0,i.L)(),{imageClassName:u,titleClassName:d,...p}=e,f=(0,o.Z)(s?.href||"/"),h=n?"":t,g=s?.alt??h;return(0,l.jsxs)(r.Z,{to:f,...p,...s?.target&&{target:s.target},children:[s&&(0,l.jsx)(c,{logo:s,alt:g,imageClassName:u}),null!=n&&(0,l.jsx)("b",{className:d,children:n})]})}},197:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});n(7294);var r=n(5742),o=n(5893);function a(e){let{locale:t,version:n,tag:a}=e;const i=t;return(0,o.jsxs)(r.Z,{children:[t&&(0,o.jsx)("meta",{name:"docusaurus_locale",content:t}),n&&(0,o.jsx)("meta",{name:"docusaurus_version",content:n}),a&&(0,o.jsx)("meta",{name:"docusaurus_tag",content:a}),i&&(0,o.jsx)("meta",{name:"docsearch:language",content:i}),n&&(0,o.jsx)("meta",{name:"docsearch:version",content:n}),a&&(0,o.jsx)("meta",{name:"docsearch:docusaurus_tag",content:a})]})}},9965:(e,t,n)=>{"use strict";n.d(t,{Z:()=>u});var r=n(7294),o=n(788),a=n(2389),i=n(2949);const s={themedComponent:"themedComponent_mlkZ","themedComponent--light":"themedComponent--light_NVdE","themedComponent--dark":"themedComponent--dark_xIcU"};var l=n(5893);function c(e){let{className:t,children:n}=e;const c=(0,a.Z)(),{colorMode:u}=(0,i.I)();return(0,l.jsx)(l.Fragment,{children:(c?"dark"===u?["dark"]:["light"]:["light","dark"]).map((e=>{const a=n({theme:e,className:(0,o.Z)(t,s.themedComponent,s[`themedComponent--${e}`])});return(0,l.jsx)(r.Fragment,{children:a},e)}))})}function u(e){const{sources:t,className:n,alt:r,...o}=e;return(0,l.jsx)(c,{className:n,children:e=>{let{theme:n,className:a}=e;return(0,l.jsx)("img",{src:t[n],alt:r,className:a,...o})}})}},6043:(e,t,n)=>{"use strict";n.d(t,{u:()=>c,z:()=>b});var r=n(7294),o=n(412),a=n(469),i=n(1442),s=n(5893);const l="ease-in-out";function c(e){let{initialState:t}=e;const[n,o]=(0,r.useState)(t??!1),a=(0,r.useCallback)((()=>{o((e=>!e))}),[]);return{collapsed:n,setCollapsed:o,toggleCollapsed:a}}const u={display:"none",overflow:"hidden",height:"0px"},d={display:"block",overflow:"visible",height:"auto"};function p(e,t){const n=t?u:d;e.style.display=n.display,e.style.overflow=n.overflow,e.style.height=n.height}function f(e){let{collapsibleRef:t,collapsed:n,animation:o}=e;const a=(0,r.useRef)(!1);(0,r.useEffect)((()=>{const e=t.current;function r(){const t=e.scrollHeight,n=o?.duration??function(e){if((0,i.n)())return 1;const t=e/36;return Math.round(10*(4+15*t**.25+t/5))}(t);return{transition:`height ${n}ms ${o?.easing??l}`,height:`${t}px`}}function s(){const t=r();e.style.transition=t.transition,e.style.height=t.height}if(!a.current)return p(e,n),void(a.current=!0);return e.style.willChange="height",function(){const t=requestAnimationFrame((()=>{n?(s(),requestAnimationFrame((()=>{e.style.height=u.height,e.style.overflow=u.overflow}))):(e.style.display="block",requestAnimationFrame((()=>{s()})))}));return()=>cancelAnimationFrame(t)}()}),[t,n,o])}function h(e){if(!o.Z.canUseDOM)return e?u:d}function g(e){let{as:t="div",collapsed:n,children:o,animation:a,onCollapseTransitionEnd:i,className:l,disableSSRStyle:c}=e;const u=(0,r.useRef)(null);return f({collapsibleRef:u,collapsed:n,animation:a}),(0,s.jsx)(t,{ref:u,style:c?void 0:h(n),onTransitionEnd:e=>{"height"===e.propertyName&&(p(u.current,n),i?.(n))},className:l,children:o})}function m(e){let{collapsed:t,...n}=e;const[o,i]=(0,r.useState)(!t),[l,c]=(0,r.useState)(t);return(0,a.Z)((()=>{t||i(!0)}),[t]),(0,a.Z)((()=>{o&&c(t)}),[o,t]),o?(0,s.jsx)(g,{...n,collapsed:l}):null}function b(e){let{lazy:t,...n}=e;const r=t?m:g;return(0,s.jsx)(r,{...n})}},9689:(e,t,n)=>{"use strict";n.d(t,{nT:()=>g,pl:()=>h});var r=n(7294),o=n(2389),a=n(12),i=n(902),s=n(6668),l=n(5893);const c=(0,a.WA)("docusaurus.announcement.dismiss"),u=(0,a.WA)("docusaurus.announcement.id"),d=()=>"true"===c.get(),p=e=>c.set(String(e)),f=r.createContext(null);function h(e){let{children:t}=e;const n=function(){const{announcementBar:e}=(0,s.L)(),t=(0,o.Z)(),[n,a]=(0,r.useState)((()=>!!t&&d()));(0,r.useEffect)((()=>{a(d())}),[]);const i=(0,r.useCallback)((()=>{p(!0),a(!0)}),[]);return(0,r.useEffect)((()=>{if(!e)return;const{id:t}=e;let n=u.get();"annoucement-bar"===n&&(n="announcement-bar");const r=t!==n;u.set(t),r&&p(!1),!r&&d()||a(!1)}),[e]),(0,r.useMemo)((()=>({isActive:!!e&&!n,close:i})),[e,n,i])}();return(0,l.jsx)(f.Provider,{value:n,children:t})}function g(){const e=(0,r.useContext)(f);if(!e)throw new i.i6("AnnouncementBarProvider");return e}},2949:(e,t,n)=>{"use strict";n.d(t,{I:()=>b,S:()=>m});var r=n(7294),o=n(412),a=n(902),i=n(12),s=n(6668),l=n(5893);const c=r.createContext(void 0),u="theme",d=(0,i.WA)(u),p={light:"light",dark:"dark"},f=e=>e===p.dark?p.dark:p.light,h=e=>o.Z.canUseDOM?f(document.documentElement.getAttribute("data-theme")):f(e),g=e=>{d.set(f(e))};function m(e){let{children:t}=e;const n=function(){const{colorMode:{defaultMode:e,disableSwitch:t,respectPrefersColorScheme:n}}=(0,s.L)(),[o,a]=(0,r.useState)(h(e));(0,r.useEffect)((()=>{t&&d.del()}),[t]);const i=(0,r.useCallback)((function(t,r){void 0===r&&(r={});const{persist:o=!0}=r;t?(a(t),o&&g(t)):(a(n?window.matchMedia("(prefers-color-scheme: dark)").matches?p.dark:p.light:e),d.del())}),[n,e]);(0,r.useEffect)((()=>{document.documentElement.setAttribute("data-theme",f(o))}),[o]),(0,r.useEffect)((()=>{if(t)return;const e=e=>{if(e.key!==u)return;const t=d.get();null!==t&&i(f(t))};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)}),[t,i]);const l=(0,r.useRef)(!1);return(0,r.useEffect)((()=>{if(t&&!n)return;const e=window.matchMedia("(prefers-color-scheme: dark)"),r=()=>{window.matchMedia("print").matches||l.current?l.current=window.matchMedia("print").matches:i(null)};return e.addListener(r),()=>e.removeListener(r)}),[i,t,n]),(0,r.useMemo)((()=>({colorMode:o,setColorMode:i,get isDarkTheme(){return o===p.dark},setLightTheme(){i(p.light)},setDarkTheme(){i(p.dark)}})),[o,i])}();return(0,l.jsx)(c.Provider,{value:n,children:t})}function b(){const e=(0,r.useContext)(c);if(null==e)throw new a.i6("ColorModeProvider","Please see https://docusaurus.io/docs/api/themes/configuration#use-color-mode.");return e}},373:(e,t,n)=>{"use strict";n.d(t,{J:()=>v,L5:()=>b});var r=n(7294),o=n(4104),a=n(9935),i=n(6668),s=n(2802),l=n(902),c=n(12),u=n(5893);const d=e=>`docs-preferred-version-${e}`,p={save:(e,t,n)=>{(0,c.WA)(d(e),{persistence:t}).set(n)},read:(e,t)=>(0,c.WA)(d(e),{persistence:t}).get(),clear:(e,t)=>{(0,c.WA)(d(e),{persistence:t}).del()}},f=e=>Object.fromEntries(e.map((e=>[e,{preferredVersionName:null}])));const h=r.createContext(null);function g(){const e=(0,o._r)(),t=(0,i.L)().docs.versionPersistence,n=(0,r.useMemo)((()=>Object.keys(e)),[e]),[a,s]=(0,r.useState)((()=>f(n)));(0,r.useEffect)((()=>{s(function(e){let{pluginIds:t,versionPersistence:n,allDocsData:r}=e;function o(e){const t=p.read(e,n);return r[e].versions.some((e=>e.name===t))?{preferredVersionName:t}:(p.clear(e,n),{preferredVersionName:null})}return Object.fromEntries(t.map((e=>[e,o(e)])))}({allDocsData:e,versionPersistence:t,pluginIds:n}))}),[e,t,n]);return[a,(0,r.useMemo)((()=>({savePreferredVersion:function(e,n){p.save(e,t,n),s((t=>({...t,[e]:{preferredVersionName:n}})))}})),[t])]}function m(e){let{children:t}=e;const n=g();return(0,u.jsx)(h.Provider,{value:n,children:t})}function b(e){let{children:t}=e;return s.cE?(0,u.jsx)(m,{children:t}):(0,u.jsx)(u.Fragment,{children:t})}function y(){const e=(0,r.useContext)(h);if(!e)throw new l.i6("DocsPreferredVersionContextProvider");return e}function v(e){void 0===e&&(e=a.m);const t=(0,o.zh)(e),[n,i]=y(),{preferredVersionName:s}=n[e];return{preferredVersion:t.versions.find((e=>e.name===s))??null,savePreferredVersionName:(0,r.useCallback)((t=>{i.savePreferredVersion(e,t)}),[i,e])}}},1116:(e,t,n)=>{"use strict";n.d(t,{V:()=>c,b:()=>l});var r=n(7294),o=n(902),a=n(5893);const i=Symbol("EmptyContext"),s=r.createContext(i);function l(e){let{children:t,name:n,items:o}=e;const i=(0,r.useMemo)((()=>n&&o?{name:n,items:o}:null),[n,o]);return(0,a.jsx)(s.Provider,{value:i,children:t})}function c(){const e=(0,r.useContext)(s);if(e===i)throw new o.i6("DocsSidebarProvider");return e}},4477:(e,t,n)=>{"use strict";n.d(t,{E:()=>l,q:()=>s});var r=n(7294),o=n(902),a=n(5893);const i=r.createContext(null);function s(e){let{children:t,version:n}=e;return(0,a.jsx)(i.Provider,{value:n,children:t})}function l(){const e=(0,r.useContext)(i);if(null===e)throw new o.i6("DocsVersionProvider");return e}},2961:(e,t,n)=>{"use strict";n.d(t,{M:()=>f,e:()=>h});var r=n(7294),o=n(3102),a=n(7524),i=n(6550),s=n(902);function l(e){!function(e){const t=(0,i.k6)(),n=(0,s.zX)(e);(0,r.useEffect)((()=>t.block(((e,t)=>n(e,t)))),[t,n])}(((t,n)=>{if("POP"===n)return e(t,n)}))}var c=n(6668),u=n(5893);const d=r.createContext(void 0);function p(){const e=function(){const e=(0,o.HY)(),{items:t}=(0,c.L)().navbar;return 0===t.length&&!e.component}(),t=(0,a.i)(),n=!e&&"mobile"===t,[i,s]=(0,r.useState)(!1);l((()=>{if(i)return s(!1),!1}));const u=(0,r.useCallback)((()=>{s((e=>!e))}),[]);return(0,r.useEffect)((()=>{"desktop"===t&&s(!1)}),[t]),(0,r.useMemo)((()=>({disabled:e,shouldRender:n,toggle:u,shown:i})),[e,n,u,i])}function f(e){let{children:t}=e;const n=p();return(0,u.jsx)(d.Provider,{value:n,children:t})}function h(){const e=r.useContext(d);if(void 0===e)throw new s.i6("NavbarMobileSidebarProvider");return e}},3102:(e,t,n)=>{"use strict";n.d(t,{HY:()=>l,Zo:()=>c,n2:()=>s});var r=n(7294),o=n(902),a=n(5893);const i=r.createContext(null);function s(e){let{children:t}=e;const n=(0,r.useState)({component:null,props:null});return(0,a.jsx)(i.Provider,{value:n,children:t})}function l(){const e=(0,r.useContext)(i);if(!e)throw new o.i6("NavbarSecondaryMenuContentProvider");return e[0]}function c(e){let{component:t,props:n}=e;const a=(0,r.useContext)(i);if(!a)throw new o.i6("NavbarSecondaryMenuContentProvider");const[,s]=a,l=(0,o.Ql)(n);return(0,r.useEffect)((()=>{s({component:t,props:l})}),[s,t,l]),(0,r.useEffect)((()=>()=>s({component:null,props:null})),[s]),null}},9727:(e,t,n)=>{"use strict";n.d(t,{h:()=>o,t:()=>a});var r=n(7294);const o="navigation-with-keyboard";function a(){(0,r.useEffect)((()=>{function e(e){"keydown"===e.type&&"Tab"===e.key&&document.body.classList.add(o),"mousedown"===e.type&&document.body.classList.remove(o)}return document.addEventListener("keydown",e),document.addEventListener("mousedown",e),()=>{document.body.classList.remove(o),document.removeEventListener("keydown",e),document.removeEventListener("mousedown",e)}}),[])}},7524:(e,t,n)=>{"use strict";n.d(t,{i:()=>s});var r=n(7294),o=n(412);const a={desktop:"desktop",mobile:"mobile",ssr:"ssr"},i=996;function s(){const[e,t]=(0,r.useState)((()=>"ssr"));return(0,r.useEffect)((()=>{function e(){t(function(){if(!o.Z.canUseDOM)throw new Error("getWindowSize() should only be called after React hydration");return window.innerWidth>i?a.desktop:a.mobile}())}return e(),window.addEventListener("resize",e),()=>{window.removeEventListener("resize",e)}}),[]),e}},5281:(e,t,n)=>{"use strict";n.d(t,{k:()=>r});const r={page:{blogListPage:"blog-list-page",blogPostPage:"blog-post-page",blogTagsListPage:"blog-tags-list-page",blogTagPostListPage:"blog-tags-post-list-page",docsDocPage:"docs-doc-page",docsTagsListPage:"docs-tags-list-page",docsTagDocListPage:"docs-tags-doc-list-page",mdxPage:"mdx-page"},wrapper:{main:"main-wrapper",blogPages:"blog-wrapper",docsPages:"docs-wrapper",mdxPages:"mdx-wrapper"},common:{editThisPage:"theme-edit-this-page",lastUpdated:"theme-last-updated",backToTopButton:"theme-back-to-top-button",codeBlock:"theme-code-block",admonition:"theme-admonition",unlistedBanner:"theme-unlisted-banner",admonitionType:e=>`theme-admonition-${e}`},layout:{},docs:{docVersionBanner:"theme-doc-version-banner",docVersionBadge:"theme-doc-version-badge",docBreadcrumbs:"theme-doc-breadcrumbs",docMarkdown:"theme-doc-markdown",docTocMobile:"theme-doc-toc-mobile",docTocDesktop:"theme-doc-toc-desktop",docFooter:"theme-doc-footer",docFooterTagsRow:"theme-doc-footer-tags-row",docFooterEditMetaRow:"theme-doc-footer-edit-meta-row",docSidebarContainer:"theme-doc-sidebar-container",docSidebarMenu:"theme-doc-sidebar-menu",docSidebarItemCategory:"theme-doc-sidebar-item-category",docSidebarItemLink:"theme-doc-sidebar-item-link",docSidebarItemCategoryLevel:e=>`theme-doc-sidebar-item-category-level-${e}`,docSidebarItemLinkLevel:e=>`theme-doc-sidebar-item-link-level-${e}`},blog:{}}},1442:(e,t,n)=>{"use strict";function r(){return window.matchMedia("(prefers-reduced-motion: reduce)").matches}n.d(t,{n:()=>r})},2802:(e,t,n)=>{"use strict";n.d(t,{LM:()=>f,_F:()=>m,cE:()=>p,SN:()=>_,lO:()=>k,vY:()=>S,oz:()=>x,s1:()=>w,f:()=>y});var r=n(7294),o=n(6550),a=n(8790),i=n(4104),s=n(373),l=n(4477),c=n(1116);function u(e){return Array.from(new Set(e))}var d=n(8596);const p=!!i._r;function f(e){return"link"!==e.type||e.unlisted?"category"===e.type?function(e){if(e.href&&!e.linkUnlisted)return e.href;for(const t of e.items){const e=f(t);if(e)return e}}(e):void 0:e.href}const h=(e,t)=>void 0!==e&&(0,d.Mg)(e,t),g=(e,t)=>e.some((e=>m(e,t)));function m(e,t){return"link"===e.type?h(e.href,t):"category"===e.type&&(h(e.href,t)||g(e.items,t))}function b(e,t){switch(e.type){case"category":return m(e,t)||e.items.some((e=>b(e,t)));case"link":return!e.unlisted||m(e,t);default:return!0}}function y(e,t){return(0,r.useMemo)((()=>e.filter((e=>b(e,t)))),[e,t])}function v(e){let{sidebarItems:t,pathname:n,onlyCategories:r=!1}=e;const o=[];return function e(t){for(const a of t)if("category"===a.type&&((0,d.Mg)(a.href,n)||e(a.items))||"link"===a.type&&(0,d.Mg)(a.href,n)){return r&&"category"!==a.type||o.unshift(a),!0}return!1}(t),o}function w(){const e=(0,c.V)(),{pathname:t}=(0,o.TH)(),n=(0,i.gA)()?.pluginData.breadcrumbs;return!1!==n&&e?v({sidebarItems:e.items,pathname:t}):null}function k(e){const{activeVersion:t}=(0,i.Iw)(e),{preferredVersion:n}=(0,s.J)(e),o=(0,i.yW)(e);return(0,r.useMemo)((()=>u([t,n,o].filter(Boolean))),[t,n,o])}function x(e,t){const n=k(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.sidebars?Object.entries(e.sidebars):[])),r=t.find((t=>t[0]===e));if(!r)throw new Error(`Can't find any sidebar with id "${e}" in version${n.length>1?"s":""} ${n.map((e=>e.name)).join(", ")}".\nAvailable sidebar ids are:\n- ${t.map((e=>e[0])).join("\n- ")}`);return r[1]}),[e,n])}function S(e,t){const n=k(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.docs)),r=t.find((t=>t.id===e));if(!r){if(n.flatMap((e=>e.draftIds)).includes(e))return null;throw new Error(`Couldn't find any doc with id "${e}" in version${n.length>1?"s":""} "${n.map((e=>e.name)).join(", ")}".\nAvailable doc ids are:\n- ${u(t.map((e=>e.id))).join("\n- ")}`)}return r}),[e,n])}function _(e){let{route:t}=e;const n=(0,o.TH)(),r=(0,l.E)(),i=t.routes,s=i.find((e=>(0,o.LX)(n.pathname,e)));if(!s)return null;const c=s.sidebar,u=c?r.docsSidebars[c]:void 0;return{docElement:(0,a.H)(i),sidebarName:c,sidebarItems:u}}},1944:(e,t,n)=>{"use strict";n.d(t,{FG:()=>f,d:()=>d,VC:()=>h});var r=n(7294),o=n(788),a=n(5742),i=n(226);function s(){const e=r.useContext(i._);if(!e)throw new Error("Unexpected: no Docusaurus route context found");return e}var l=n(4996),c=n(2263);var u=n(5893);function d(e){let{title:t,description:n,keywords:r,image:o,children:i}=e;const s=function(e){const{siteConfig:t}=(0,c.Z)(),{title:n,titleDelimiter:r}=t;return e?.trim().length?`${e.trim()} ${r} ${n}`:n}(t),{withBaseUrl:d}=(0,l.C)(),p=o?d(o,{absolute:!0}):void 0;return(0,u.jsxs)(a.Z,{children:[t&&(0,u.jsx)("title",{children:s}),t&&(0,u.jsx)("meta",{property:"og:title",content:s}),n&&(0,u.jsx)("meta",{name:"description",content:n}),n&&(0,u.jsx)("meta",{property:"og:description",content:n}),r&&(0,u.jsx)("meta",{name:"keywords",content:Array.isArray(r)?r.join(","):r}),p&&(0,u.jsx)("meta",{property:"og:image",content:p}),p&&(0,u.jsx)("meta",{name:"twitter:image",content:p}),i]})}const p=r.createContext(void 0);function f(e){let{className:t,children:n}=e;const i=r.useContext(p),s=(0,o.Z)(i,t);return(0,u.jsxs)(p.Provider,{value:s,children:[(0,u.jsx)(a.Z,{children:(0,u.jsx)("html",{className:s})}),n]})}function h(e){let{children:t}=e;const n=s(),r=`plugin-${n.plugin.name.replace(/docusaurus-(?:plugin|theme)-(?:content-)?/gi,"")}`;const a=`plugin-id-${n.plugin.id}`;return(0,u.jsx)(f,{className:(0,o.Z)(r,a),children:t})}},902:(e,t,n)=>{"use strict";n.d(t,{D9:()=>s,Qc:()=>u,Ql:()=>c,i6:()=>l,zX:()=>i});var r=n(7294),o=n(469),a=n(5893);function i(e){const t=(0,r.useRef)(e);return(0,o.Z)((()=>{t.current=e}),[e]),(0,r.useCallback)((function(){return t.current(...arguments)}),[])}function s(e){const t=(0,r.useRef)();return(0,o.Z)((()=>{t.current=e})),t.current}class l extends Error{constructor(e,t){super(),this.name="ReactContextError",this.message=`Hook ${this.stack?.split("\n")[1]?.match(/at (?:\w+\.)?(?\w+)/)?.groups.name??""} is called outside the <${e}>. ${t??""}`}}function c(e){const t=Object.entries(e);return t.sort(((e,t)=>e[0].localeCompare(t[0]))),(0,r.useMemo)((()=>e),t.flat())}function u(e){return t=>{let{children:n}=t;return(0,a.jsx)(a.Fragment,{children:e.reduceRight(((e,t)=>(0,a.jsx)(t,{children:e})),n)})}}},8596:(e,t,n)=>{"use strict";n.d(t,{Mg:()=>i,Ns:()=>s});var r=n(7294),o=n(723),a=n(2263);function i(e,t){const n=e=>(!e||e.endsWith("/")?e:`${e}/`)?.toLowerCase();return n(e)===n(t)}function s(){const{baseUrl:e}=(0,a.Z)().siteConfig;return(0,r.useMemo)((()=>function(e){let{baseUrl:t,routes:n}=e;function r(e){return e.path===t&&!0===e.exact}function o(e){return e.path===t&&!e.exact}return function e(t){if(0===t.length)return;return t.find(r)||e(t.filter(o).flatMap((e=>e.routes??[])))}(n)}({routes:o.Z,baseUrl:e})),[e])}},2466:(e,t,n)=>{"use strict";n.d(t,{Ct:()=>f,OC:()=>c,RF:()=>p});var r=n(7294),o=n(412),a=n(2389),i=(n(469),n(902)),s=n(5893);const l=r.createContext(void 0);function c(e){let{children:t}=e;const n=function(){const e=(0,r.useRef)(!0);return(0,r.useMemo)((()=>({scrollEventsEnabledRef:e,enableScrollEvents:()=>{e.current=!0},disableScrollEvents:()=>{e.current=!1}})),[])}();return(0,s.jsx)(l.Provider,{value:n,children:t})}function u(){const e=(0,r.useContext)(l);if(null==e)throw new i.i6("ScrollControllerProvider");return e}const d=()=>o.Z.canUseDOM?{scrollX:window.pageXOffset,scrollY:window.pageYOffset}:null;function p(e,t){void 0===t&&(t=[]);const{scrollEventsEnabledRef:n}=u(),o=(0,r.useRef)(d()),a=(0,i.zX)(e);(0,r.useEffect)((()=>{const e=()=>{if(!n.current)return;const e=d();a(e,o.current),o.current=e},t={passive:!0};return e(),window.addEventListener("scroll",e,t),()=>window.removeEventListener("scroll",e,t)}),[a,n,...t])}function f(){const e=(0,r.useRef)(null),t=(0,a.Z)()&&"smooth"===getComputedStyle(document.documentElement).scrollBehavior;return{startScroll:n=>{e.current=t?function(e){return window.scrollTo({top:e,behavior:"smooth"}),()=>{}}(n):function(e){let t=null;const n=document.documentElement.scrollTop>e;return function r(){const o=document.documentElement.scrollTop;(n&&o>e||!n&&ot&&cancelAnimationFrame(t)}(n)},cancelScroll:()=>e.current?.()}}},3320:(e,t,n)=>{"use strict";n.d(t,{HX:()=>r,os:()=>o});n(2263);const r="default";function o(e,t){return`docs-${e}-${t}`}},12:(e,t,n)=>{"use strict";n.d(t,{WA:()=>l});n(7294);const r="localStorage";function o(e){let{key:t,oldValue:n,newValue:r,storage:o}=e;if(n===r)return;const a=document.createEvent("StorageEvent");a.initStorageEvent("storage",!1,!1,t,n,r,window.location.href,o),window.dispatchEvent(a)}function a(e){if(void 0===e&&(e=r),"undefined"==typeof window)throw new Error("Browser storage is not available on Node.js/Docusaurus SSR process.");if("none"===e)return null;try{return window[e]}catch(n){return t=n,i||(console.warn("Docusaurus browser storage is not available.\nPossible reasons: running Docusaurus in an iframe, in an incognito browser session, or using too strict browser privacy settings.",t),i=!0),null}var t}let i=!1;const s={get:()=>null,set:()=>{},del:()=>{},listen:()=>()=>{}};function l(e,t){if("undefined"==typeof window)return function(e){function t(){throw new Error(`Illegal storage API usage for storage key "${e}".\nDocusaurus storage APIs are not supposed to be called on the server-rendering process.\nPlease only call storage APIs in effects and event handlers.`)}return{get:t,set:t,del:t,listen:t}}(e);const n=a(t?.persistence);return null===n?s:{get:()=>{try{return n.getItem(e)}catch(t){return console.error(`Docusaurus storage error, can't get key=${e}`,t),null}},set:t=>{try{const r=n.getItem(e);n.setItem(e,t),o({key:e,oldValue:r,newValue:t,storage:n})}catch(r){console.error(`Docusaurus storage error, can't set ${e}=${t}`,r)}},del:()=>{try{const t=n.getItem(e);n.removeItem(e),o({key:e,oldValue:t,newValue:null,storage:n})}catch(t){console.error(`Docusaurus storage error, can't delete key=${e}`,t)}},listen:t=>{try{const r=r=>{r.storageArea===n&&r.key===e&&t(r)};return window.addEventListener("storage",r),()=>window.removeEventListener("storage",r)}catch(r){return console.error(`Docusaurus storage error, can't listen for changes of key=${e}`,r),()=>{}}}}}},4711:(e,t,n)=>{"use strict";n.d(t,{l:()=>i});var r=n(2263),o=n(6550),a=n(8780);function i(){const{siteConfig:{baseUrl:e,url:t,trailingSlash:n},i18n:{defaultLocale:i,currentLocale:s}}=(0,r.Z)(),{pathname:l}=(0,o.TH)(),c=(0,a.applyTrailingSlash)(l,{trailingSlash:n,baseUrl:e}),u=s===i?e:e.replace(`/${s}/`,"/"),d=c.replace(e,"");return{createUrl:function(e){let{locale:n,fullyQualified:r}=e;return`${r?t:""}${function(e){return e===i?`${u}`:`${u}${e}/`}(n)}${d}`}}}},5936:(e,t,n)=>{"use strict";n.d(t,{S:()=>i});var r=n(7294),o=n(6550),a=n(902);function i(e){const t=(0,o.TH)(),n=(0,a.D9)(t),i=(0,a.zX)(e);(0,r.useEffect)((()=>{n&&t!==n&&i({location:t,previousLocation:n})}),[i,t,n])}},6668:(e,t,n)=>{"use strict";n.d(t,{L:()=>o});var r=n(2263);function o(){return(0,r.Z)().siteConfig.themeConfig}},8802:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){const{trailingSlash:n,baseUrl:r}=t;if(e.startsWith("#"))return e;if(void 0===n)return e;const[o]=e.split(/[#?]/),a="/"===o||o===r?o:(i=o,n?function(e){return e.endsWith("/")?e:`${e}/`}(i):function(e){return e.endsWith("/")?e.slice(0,-1):e}(i));var i;return e.replace(o,a)}},4143:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=void 0,t.getErrorCausalChain=function e(t){return t.cause?[t,...e(t.cause)]:[t]}},8780:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=t.applyTrailingSlash=t.blogPostContainerID=void 0,t.blogPostContainerID="__blog-post-container";var o=n(8802);Object.defineProperty(t,"applyTrailingSlash",{enumerable:!0,get:function(){return r(o).default}});var a=n(4143);Object.defineProperty(t,"getErrorCausalChain",{enumerable:!0,get:function(){return a.getErrorCausalChain}})},311:(e,t,n)=>{"use strict";n.d(t,{Z:()=>i});n(7294);var r=n(6010);const o={loadingRing:"loadingRing_RJI3","loading-ring":"loading-ring_FB5o"};var a=n(5893);function i(e){let{className:t}=e;return(0,a.jsxs)("div",{className:(0,r.Z)(o.loadingRing,t),children:[(0,a.jsx)("div",{}),(0,a.jsx)("div",{}),(0,a.jsx)("div",{}),(0,a.jsx)("div",{})]})}},22:(e,t,n)=>{"use strict";n.d(t,{w:()=>s});var r=n(1336),o=n.n(r),a=n(1029);const i=new Map;function s(e,t){const n=`${e}${t}`;let r=i.get(n);return r||(r=async function(e,t){{const n=`${e}${a.J.replace("{dir}",t?`-${t.replace(/\//g,"-")}`:"")}`;if(new URL(n,location.origin).origin!==location.origin)throw new Error("Unexpected version url");const r=await(await fetch(n)).json(),i=r.map(((e,t)=>{let{documents:n,index:r}=e;return{type:t,documents:n,index:o().Index.load(r)}})),s=r.reduce(((e,t)=>{for(const n of t.index.invertedIndex)/\p{Unified_Ideograph}/u.test(n[0][0])&&e.add(n[0]);return e}),new Set);return{wrappedIndexes:i,zhDictionary:Array.from(s)}}return{wrappedIndexes:[],zhDictionary:[]}}(e,t),i.set(n,r)),r}},8202:(e,t,n)=>{"use strict";n.d(t,{v:()=>l});var r=n(1336),o=n.n(r);var a=n(1029);function i(e){return s(e).concat(s(e.filter((e=>{const t=e[e.length-1];return!t.trailing&&t.maybeTyping})),!0))}function s(e,t){return e.map((e=>({tokens:e.map((e=>e.value)),term:e.map((e=>({value:e.value,presence:o().Query.presence.REQUIRED,wildcard:(t?e.trailing||e.maybeTyping:e.trailing)?o().Query.wildcard.TRAILING:o().Query.wildcard.NONE})))})))}function l(e,t,n){return function(r,s){const l=function(e,t){if(1===t.length&&["ja","jp","th"].includes(t[0]))return o()[t[0]].tokenizer(e).map((e=>e.toString()));let n=/[^-\s]+/g;return t.includes("zh")&&(n=/\w+|\p{Unified_Ideograph}+/gu),e.toLowerCase().match(n)||[]}(r,a.dK);if(0===l.length)return void s([]);const c=function(e,t){const n=function(e,t){const n=[];return function e(r,o){if(0===r.length)return void n.push(o);const a=r[0];if(/\p{Unified_Ideograph}/u.test(a)){const n=function(e,t){const n=[];return function e(r,o){let a=0,i=!1;for(const s of t)if(r.substr(0,s.length)===s){const t={missed:o.missed,term:o.term.concat({value:s})};r.length>s.length?e(r.substr(s.length),t):n.push(t),i=!0}else for(let t=s.length-1;t>a;t-=1){const l=s.substr(0,t);if(r.substr(0,t)===l){a=t;const s={missed:o.missed,term:o.term.concat({value:l,trailing:!0})};r.length>t?e(r.substr(t),s):n.push(s),i=!0;break}}i||(r.length>0?e(r.substr(1),{missed:o.missed+1,term:o.term}):o.term.length>0&&n.push(o))}(e,{missed:0,term:[]}),n.sort(((e,t)=>{const n=e.missed>0?1:0,r=t.missed>0?1:0;return n!==r?n-r:e.term.length-t.term.length})).map((e=>e.term))}(a,t);for(const t of n){const n=o.concat(...t);e(r.slice(1),n)}}else{const t=o.concat({value:a});e(r.slice(1),t)}}(e,[]),n}(e,t);if(0===n.length)return[{tokens:e,term:e.map((e=>({value:e,presence:o().Query.presence.REQUIRED,wildcard:o().Query.wildcard.LEADING|o().Query.wildcard.TRAILING})))}];for(const o of n)o[o.length-1].maybeTyping=!0;const r=[];for(const i of a.dK)if("en"===i)a._k||r.unshift(o().stopWordFilter);else{const e=o()[i];e.stopWordFilter&&r.unshift(e.stopWordFilter)}let s;if(r.length>0){const e=e=>r.reduce(((e,t)=>e.filter((e=>t(e.value)))),e);s=[];const t=[];for(const r of n){const n=e(r);s.push(n),n.length0&&t.push(n)}n.push(...t)}else s=n.slice();const l=[];for(const o of s)if(o.length>2)for(let e=o.length-1;e>=0;e-=1)l.push(o.slice(0,e).concat(o.slice(e+1)));return i(n).concat(i(l))}(l,t),u=[];e:for(const{term:t,tokens:o}of c)for(const{documents:r,index:a,type:i}of e)if(u.push(...a.query((e=>{for(const n of t)e.term(n.value,{wildcard:n.wildcard,presence:n.presence})})).slice(0,n).filter((e=>!u.some((t=>t.document.i.toString()===e.ref)))).slice(0,n-u.length).map((t=>{const n=r.find((e=>e.i.toString()===t.ref));return{document:n,type:i,page:0!==i&&e[0].documents.find((e=>e.i===n.p)),metadata:t.matchData.metadata,tokens:o,score:t.score}}))),u.length>=n)break e;!function(e){e.forEach(((e,t)=>{e.index=t})),e.sort(((t,n)=>{let r=t.type>0&&t.page?e.findIndex((e=>e.document===t.page)):t.index,o=n.type>0&&n.page?e.findIndex((e=>e.document===n.page)):n.index;return-1===r&&(r=t.index),-1===o&&(o=n.index),r===o?0===t.type?-1:0===n.type?1:t.index-n.index:r-o}))}(u),function(e){e.forEach(((t,n)=>{n>0&&t.page&&e.some((e=>e.document===t.page))&&(n{"use strict";function r(e){return e.join(" \u203a ")}n.d(t,{e:()=>r})},1690:(e,t,n)=>{"use strict";function r(e){return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}n.d(t,{X:()=>r})},1073:(e,t,n)=>{"use strict";function r(e,t){const n=[];for(const r of Object.values(e))r[t]&&n.push(...r[t].position);return n.sort(((e,t)=>e[0]-t[0]||t[1]-e[1]))}n.d(t,{m:()=>r})},2539:(e,t,n)=>{"use strict";n.d(t,{C:()=>o});var r=n(1690);function o(e,t,n){const a=[];for(const i of t){const n=e.toLowerCase().indexOf(i);if(n>=0){n>0&&a.push(o(e.substr(0,n),t)),a.push(`${(0,r.X)(e.substr(n,i.length))}`);const s=n+i.length;s${(0,r.X)(e)}`:(0,r.X)(e):a.join("")}},726:(e,t,n)=>{"use strict";n.d(t,{o:()=>l});var r=n(1690),o=n(2539);const a=/\w+|\p{Unified_Ideograph}/u;function i(e){const t=[];let n=0,r=e;for(;r.length>0;){const o=r.match(a);if(!o){t.push(r);break}o.index>0&&t.push(r.substring(0,o.index)),t.push(o[0]),n+=o.index+o[0].length,r=e.substring(n)}return t}var s=n(1029);function l(e,t,n,a){void 0===a&&(a=s.Hk);const{chunkIndex:l,chunks:c}=function(e,t,n){const a=[];let s=0,l=0,c=-1;for(;sl){const t=i(e.substring(l,u)).map((e=>({html:(0,r.X)(e),textLength:e.length})));for(const e of t)a.push(e)}-1===c&&(c=a.length),l=u+d,a.push({html:(0,o.C)(e.substring(u,l),n,!0),textLength:d})}}if(l({html:(0,r.X)(e),textLength:e.length})));for(const e of t)a.push(e)}return{chunkIndex:c,chunks:a}}(e,t,n),u=c.slice(0,l),d=c[l],p=[d.html],f=c.slice(l+1);let h=d.textLength,g=0,m=0,b=!1,y=!1;for(;h0){const e=u.pop();h+e.textLength<=a?(p.unshift(e.html),g+=e.textLength,h+=e.textLength):(b=!0,u.length=0)}else{if(!(f.length>0))break;{const e=f.shift();h+e.textLength<=a?(p.push(e.html),m+=e.textLength,h+=e.textLength):(y=!0,f.length=0)}}return(b||u.length>0)&&p.unshift("\u2026"),(y||f.length>0)&&p.push("\u2026"),p.join("")}},1029:(e,t,n)=>{"use strict";n.d(t,{vc:()=>s,gQ:()=>g,H6:()=>d,hG:()=>y,l9:()=>m,dK:()=>a,_k:()=>i,pu:()=>h,AY:()=>p,t_:()=>f,Kc:()=>b,J:()=>l,Hk:()=>u,qo:()=>c,pQ:()=>v});var r=n(1336),o=n.n(r);n(892)(o()),n(1728).w(o()),n(4182)(o());const a=["en","zh"],i=!1,s=null,l="search-index{dir}-91caf89d.json",c=8,u=50,d=!1,p=!0,f=!0,h="right",g=void 0,m=!0,b=null,y=!1,v=!1},1728:(e,t,n)=>{"use strict";function r(e){const t=new RegExp("^[^"+e+"]+","u"),n=new RegExp("[^"+e+"]+$","u");return function(e){return e.update((function(e){return e.replace(t,"").replace(n,"")}))}}function o(e,t){e.trimmerSupport.generateTrimmer=r,e.zh=function(){this.pipeline.reset(),this.pipeline.add(e.zh.trimmer,e.zh.stopWordFilter),t&&(this.tokenizer=t)},t&&(e.zh.tokenizer=t),e.zh.wordCharacters="\\u3400-\\u4DBF\\u4E00-\\u9FFC\\uFA0E\\uFA0F\\uFA11\\uFA13\\uFA14\\uFA1F\\uFA21\\uFA23\\uFA24\\uFA27-\\uFA29\\u{20000}-\\u{2A6DD}\\u{2A700}-\\u{2B734}\\u{2B740}-\\u{2B81D}\\u{2B820}-\\u{2CEA1}\\u{2CEB0}-\\u{2EBE0}\\u{30000}-\\u{3134A}",e.zh.trimmer=e.trimmerSupport.generateTrimmer(e.zh.wordCharacters),e.Pipeline.registerFunction(e.zh.trimmer,"trimmer-zh"),e.zh.stopWordFilter=e.generateStopWordFilter("\u7684 \u4e00 \u4e0d \u5728 \u4eba \u6709 \u662f \u4e3a \u4ee5 \u4e8e \u4e0a \u4ed6 \u800c \u540e \u4e4b \u6765 \u53ca \u4e86 \u56e0 \u4e0b \u53ef \u5230 \u7531 \u8fd9 \u4e0e \u4e5f \u6b64 \u4f46 \u5e76 \u4e2a \u5176 \u5df2 \u65e0 \u5c0f \u6211 \u4eec \u8d77 \u6700 \u518d \u4eca \u53bb \u597d \u53ea \u53c8 \u6216 \u5f88 \u4ea6 \u67d0 \u628a \u90a3 \u4f60 \u4e43 \u5b83 \u5427 \u88ab \u6bd4 \u522b \u8d81 \u5f53 \u4ece \u5230 \u5f97 \u6253 \u51e1 \u513f \u5c14 \u8be5 \u5404 \u7ed9 \u8ddf \u548c \u4f55 \u8fd8 \u5373 \u51e0 \u65e2 \u770b \u636e \u8ddd \u9760 \u5566 \u4e86 \u53e6 \u4e48 \u6bcf \u4eec \u561b \u62ff \u54ea \u90a3 \u60a8 \u51ed \u4e14 \u5374 \u8ba9 \u4ecd \u5565 \u5982 \u82e5 \u4f7f \u8c01 \u867d \u968f \u540c \u6240 \u5979 \u54c7 \u55e1 \u5f80 \u54ea \u4e9b \u5411 \u6cbf \u54df \u7528 \u4e8e \u54b1 \u5219 \u600e \u66fe \u81f3 \u81f4 \u7740 \u8bf8 \u81ea".split(" ")),e.Pipeline.registerFunction(e.zh.stopWordFilter,"stopWordFilter-zh")}n.d(t,{w:()=>o})},6010:(e,t,n)=>{"use strict";function r(e){var t,n,o="";if("string"==typeof e||"number"==typeof e)o+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;to});const o=function(){for(var e,t,n=0,o="";n{"use strict";n.d(t,{lX:()=>w,q_:()=>C,ob:()=>f,PP:()=>j,Ep:()=>p});var r=n(7462);function o(e){return"/"===e.charAt(0)}function a(e,t){for(var n=t,r=n+1,o=e.length;r=0;p--){var f=i[p];"."===f?a(i,p):".."===f?(a(i,p),d++):d&&(a(i,p),d--)}if(!c)for(;d--;d)i.unshift("..");!c||""===i[0]||i[0]&&o(i[0])||i.unshift("");var h=i.join("/");return n&&"/"!==h.substr(-1)&&(h+="/"),h};var s=n(8776);function l(e){return"/"===e.charAt(0)?e:"/"+e}function c(e){return"/"===e.charAt(0)?e.substr(1):e}function u(e,t){return function(e,t){return 0===e.toLowerCase().indexOf(t.toLowerCase())&&-1!=="/?#".indexOf(e.charAt(t.length))}(e,t)?e.substr(t.length):e}function d(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function p(e){var t=e.pathname,n=e.search,r=e.hash,o=t||"/";return n&&"?"!==n&&(o+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(o+="#"===r.charAt(0)?r:"#"+r),o}function f(e,t,n,o){var a;"string"==typeof e?(a=function(e){var t=e||"/",n="",r="",o=t.indexOf("#");-1!==o&&(r=t.substr(o),t=t.substr(0,o));var a=t.indexOf("?");return-1!==a&&(n=t.substr(a),t=t.substr(0,a)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e),a.state=t):(void 0===(a=(0,r.Z)({},e)).pathname&&(a.pathname=""),a.search?"?"!==a.search.charAt(0)&&(a.search="?"+a.search):a.search="",a.hash?"#"!==a.hash.charAt(0)&&(a.hash="#"+a.hash):a.hash="",void 0!==t&&void 0===a.state&&(a.state=t));try{a.pathname=decodeURI(a.pathname)}catch(s){throw s instanceof URIError?new URIError('Pathname "'+a.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):s}return n&&(a.key=n),o?a.pathname?"/"!==a.pathname.charAt(0)&&(a.pathname=i(a.pathname,o.pathname)):a.pathname=o.pathname:a.pathname||(a.pathname="/"),a}function h(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,o){if(null!=e){var a="function"==typeof e?e(t,n):e;"string"==typeof a?"function"==typeof r?r(a,o):o(!0):o(!1!==a)}else o(!0)},appendListener:function(e){var n=!0;function r(){n&&e.apply(void 0,arguments)}return t.push(r),function(){n=!1,t=t.filter((function(e){return e!==r}))}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),r=0;rt?n.splice(t,n.length-t,o):n.push(o),d({action:r,location:o,index:t,entries:n})}}))},replace:function(e,t){var r="REPLACE",o=f(e,t,g(),w.location);u.confirmTransitionTo(o,r,n,(function(e){e&&(w.entries[w.index]=o,d({action:r,location:o}))}))},go:v,goBack:function(){v(-1)},goForward:function(){v(1)},canGo:function(e){var t=w.index+e;return t>=0&&t{"use strict";var r=n(9864),o={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},a={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},i={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},s={};function l(e){return r.isMemo(e)?i:s[e.$$typeof]||o}s[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},s[r.Memo]=i;var c=Object.defineProperty,u=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,p=Object.getOwnPropertyDescriptor,f=Object.getPrototypeOf,h=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(h){var o=f(n);o&&o!==h&&e(t,o,r)}var i=u(n);d&&(i=i.concat(d(n)));for(var s=l(t),g=l(n),m=0;m{"use strict";e.exports=function(e,t,n,r,o,a,i,s){if(!e){var l;if(void 0===t)l=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var c=[n,r,o,a,i,s],u=0;(l=new Error(t.replace(/%s/g,(function(){return c[u++]})))).name="Invariant Violation"}throw l.framesToPop=1,l}}},5826:e=>{e.exports=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)}},4182:function(e,t,n){var r,o;r=function(){return function(e){e.multiLanguage=function(){for(var t=Array.prototype.slice.call(arguments),n=t.join("-"),r="",o=[],a=[],i=0;i=n&&t[(o-=n)>>3]&1<<(7&o))return this.cursor++,!0}return!1},in_grouping_b:function(t,n,r){if(this.cursor>this.limit_backward){var o=e.charCodeAt(this.cursor-1);if(o<=r&&o>=n&&t[(o-=n)>>3]&1<<(7&o))return this.cursor--,!0}return!1},out_grouping:function(t,n,r){if(this.cursorr||o>3]&1<<(7&o)))return this.cursor++,!0}return!1},out_grouping_b:function(t,n,r){if(this.cursor>this.limit_backward){var o=e.charCodeAt(this.cursor-1);if(o>r||o>3]&1<<(7&o)))return this.cursor--,!0}return!1},eq_s:function(t,n){if(this.limit-this.cursor>1),d=0,p=s0||o==r||c)break;c=!0}}for(;;){if(s>=(f=t[r]).s_size){if(this.cursor=a+f.s_size,!f.method)return f.result;var g=f.method();if(this.cursor=a+f.s_size,g)return f.result}if((r=f.substring_i)<0)return 0}},find_among_b:function(t,n){for(var r=0,o=n,a=this.cursor,i=this.limit_backward,s=0,l=0,c=!1;;){for(var u=r+(o-r>>1),d=0,p=s=0;f--){if(a-p==i){d=-1;break}if(d=e.charCodeAt(a-1-p)-h.s[f])break;p++}if(d<0?(o=u,l=p):(r=u,s=p),o-r<=1){if(r>0||o==r||c)break;c=!0}}for(;;){var h;if(s>=(h=t[r]).s_size){if(this.cursor=a-h.s_size,!h.method)return h.result;var g=h.method();if(this.cursor=a-h.s_size,g)return h.result}if((r=h.substring_i)<0)return 0}},replace_s:function(t,n,r){var o=r.length-(n-t),a=e.substring(0,t),i=e.substring(n);return e=a+r+i,this.limit+=o,this.cursor>=n?this.cursor+=o:this.cursor>t&&(this.cursor=t),o},slice_check:function(){if(this.bra<0||this.bra>this.ket||this.ket>this.limit||this.limit>e.length)throw"faulty slice operation"},slice_from:function(e){this.slice_check(),this.replace_s(this.bra,this.ket,e)},slice_del:function(){this.slice_from("")},insert:function(e,t,n){var r=this.replace_s(e,t,n);e<=this.bra&&(this.bra+=r),e<=this.ket&&(this.ket+=r)},slice_to:function(){return this.slice_check(),e.substring(this.bra,this.ket)},eq_v_b:function(e){return this.eq_s_b(e.length,e)}}}},e.trimmerSupport={generateTrimmer:function(e){var t=new RegExp("^[^"+e+"]+"),n=new RegExp("[^"+e+"]+$");return function(e){return"function"==typeof e.update?e.update((function(e){return e.replace(t,"").replace(n,"")})):e.replace(t,"").replace(n,"")}}}}})?r.call(t,n,t,e):r)||(e.exports=o)},1336:(e,t,n)=>{var r,o;!function(){var a,i,s,l,c,u,d,p,f,h,g,m,b,y,v,w,k,x,S,_,E,C,T,j,L,A,R,P,N,O,I=function(e){var t=new I.Builder;return t.pipeline.add(I.trimmer,I.stopWordFilter,I.stemmer),t.searchPipeline.add(I.stemmer),e.call(t,t),t.build()};I.version="2.3.9",I.utils={},I.utils.warn=(a=this,function(e){a.console&&console.warn&&console.warn(e)}),I.utils.asString=function(e){return null==e?"":e.toString()},I.utils.clone=function(e){if(null==e)return e;for(var t=Object.create(null),n=Object.keys(e),r=0;r0){var l=I.utils.clone(t)||{};l.position=[i,s],l.index=o.length,o.push(new I.Token(n.slice(i,a),l))}i=a+1}}return o},I.tokenizer.separator=/[\s\-]+/,I.Pipeline=function(){this._stack=[]},I.Pipeline.registeredFunctions=Object.create(null),I.Pipeline.registerFunction=function(e,t){t in this.registeredFunctions&&I.utils.warn("Overwriting existing registered function: "+t),e.label=t,I.Pipeline.registeredFunctions[e.label]=e},I.Pipeline.warnIfFunctionNotRegistered=function(e){e.label&&e.label in this.registeredFunctions||I.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",e)},I.Pipeline.load=function(e){var t=new I.Pipeline;return e.forEach((function(e){var n=I.Pipeline.registeredFunctions[e];if(!n)throw new Error("Cannot load unregistered function: "+e);t.add(n)})),t},I.Pipeline.prototype.add=function(){Array.prototype.slice.call(arguments).forEach((function(e){I.Pipeline.warnIfFunctionNotRegistered(e),this._stack.push(e)}),this)},I.Pipeline.prototype.after=function(e,t){I.Pipeline.warnIfFunctionNotRegistered(t);var n=this._stack.indexOf(e);if(-1==n)throw new Error("Cannot find existingFn");n+=1,this._stack.splice(n,0,t)},I.Pipeline.prototype.before=function(e,t){I.Pipeline.warnIfFunctionNotRegistered(t);var n=this._stack.indexOf(e);if(-1==n)throw new Error("Cannot find existingFn");this._stack.splice(n,0,t)},I.Pipeline.prototype.remove=function(e){var t=this._stack.indexOf(e);-1!=t&&this._stack.splice(t,1)},I.Pipeline.prototype.run=function(e){for(var t=this._stack.length,n=0;n1&&(ae&&(n=o),a!=e);)r=n-t,o=t+Math.floor(r/2),a=this.elements[2*o];return a==e||a>e?2*o:as?c+=2:i==s&&(t+=n[l+1]*r[c+1],l+=2,c+=2);return t},I.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},I.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),t=1,n=0;t0){var a,i=o.str.charAt(0);i in o.node.edges?a=o.node.edges[i]:(a=new I.TokenSet,o.node.edges[i]=a),1==o.str.length&&(a.final=!0),r.push({node:a,editsRemaining:o.editsRemaining,str:o.str.slice(1)})}if(0!=o.editsRemaining){if("*"in o.node.edges)var s=o.node.edges["*"];else{s=new I.TokenSet;o.node.edges["*"]=s}if(0==o.str.length&&(s.final=!0),r.push({node:s,editsRemaining:o.editsRemaining-1,str:o.str}),o.str.length>1&&r.push({node:o.node,editsRemaining:o.editsRemaining-1,str:o.str.slice(1)}),1==o.str.length&&(o.node.final=!0),o.str.length>=1){if("*"in o.node.edges)var l=o.node.edges["*"];else{l=new I.TokenSet;o.node.edges["*"]=l}1==o.str.length&&(l.final=!0),r.push({node:l,editsRemaining:o.editsRemaining-1,str:o.str.slice(1)})}if(o.str.length>1){var c,u=o.str.charAt(0),d=o.str.charAt(1);d in o.node.edges?c=o.node.edges[d]:(c=new I.TokenSet,o.node.edges[d]=c),1==o.str.length&&(c.final=!0),r.push({node:c,editsRemaining:o.editsRemaining-1,str:u+o.str.slice(2)})}}}return n},I.TokenSet.fromString=function(e){for(var t=new I.TokenSet,n=t,r=0,o=e.length;r=e;t--){var n=this.uncheckedNodes[t],r=n.child.toString();r in this.minimizedNodes?n.parent.edges[n.char]=this.minimizedNodes[r]:(n.child._str=r,this.minimizedNodes[r]=n.child),this.uncheckedNodes.pop()}},I.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},I.Index.prototype.search=function(e){return this.query((function(t){new I.QueryParser(e,t).parse()}))},I.Index.prototype.query=function(e){for(var t=new I.Query(this.fields),n=Object.create(null),r=Object.create(null),o=Object.create(null),a=Object.create(null),i=Object.create(null),s=0;s1?1:e},I.Builder.prototype.k1=function(e){this._k1=e},I.Builder.prototype.add=function(e,t){var n=e[this._ref],r=Object.keys(this._fields);this._documents[n]=t||{},this.documentCount+=1;for(var o=0;o=this.length)return I.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},I.QueryLexer.prototype.width=function(){return this.pos-this.start},I.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},I.QueryLexer.prototype.backup=function(){this.pos-=1},I.QueryLexer.prototype.acceptDigitRun=function(){var e,t;do{t=(e=this.next()).charCodeAt(0)}while(t>47&&t<58);e!=I.QueryLexer.EOS&&this.backup()},I.QueryLexer.prototype.more=function(){return this.pos1&&(e.backup(),e.emit(I.QueryLexer.TERM)),e.ignore(),e.more())return I.QueryLexer.lexText},I.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(I.QueryLexer.EDIT_DISTANCE),I.QueryLexer.lexText},I.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(I.QueryLexer.BOOST),I.QueryLexer.lexText},I.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(I.QueryLexer.TERM)},I.QueryLexer.termSeparator=I.tokenizer.separator,I.QueryLexer.lexText=function(e){for(;;){var t=e.next();if(t==I.QueryLexer.EOS)return I.QueryLexer.lexEOS;if(92!=t.charCodeAt(0)){if(":"==t)return I.QueryLexer.lexField;if("~"==t)return e.backup(),e.width()>0&&e.emit(I.QueryLexer.TERM),I.QueryLexer.lexEditDistance;if("^"==t)return e.backup(),e.width()>0&&e.emit(I.QueryLexer.TERM),I.QueryLexer.lexBoost;if("+"==t&&1===e.width())return e.emit(I.QueryLexer.PRESENCE),I.QueryLexer.lexText;if("-"==t&&1===e.width())return e.emit(I.QueryLexer.PRESENCE),I.QueryLexer.lexText;if(t.match(I.QueryLexer.termSeparator))return I.QueryLexer.lexTerm}else e.escapeCharacter()}},I.QueryParser=function(e,t){this.lexer=new I.QueryLexer(e),this.query=t,this.currentClause={},this.lexemeIdx=0},I.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=I.QueryParser.parseClause;e;)e=e(this);return this.query},I.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},I.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},I.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},I.QueryParser.parseClause=function(e){var t=e.peekLexeme();if(null!=t)switch(t.type){case I.QueryLexer.PRESENCE:return I.QueryParser.parsePresence;case I.QueryLexer.FIELD:return I.QueryParser.parseField;case I.QueryLexer.TERM:return I.QueryParser.parseTerm;default:var n="expected either a field or a term, found "+t.type;throw t.str.length>=1&&(n+=" with value '"+t.str+"'"),new I.QueryParseError(n,t.start,t.end)}},I.QueryParser.parsePresence=function(e){var t=e.consumeLexeme();if(null!=t){switch(t.str){case"-":e.currentClause.presence=I.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=I.Query.presence.REQUIRED;break;default:var n="unrecognised presence operator'"+t.str+"'";throw new I.QueryParseError(n,t.start,t.end)}var r=e.peekLexeme();if(null==r){n="expecting term or field, found nothing";throw new I.QueryParseError(n,t.start,t.end)}switch(r.type){case I.QueryLexer.FIELD:return I.QueryParser.parseField;case I.QueryLexer.TERM:return I.QueryParser.parseTerm;default:n="expecting term or field, found '"+r.type+"'";throw new I.QueryParseError(n,r.start,r.end)}}},I.QueryParser.parseField=function(e){var t=e.consumeLexeme();if(null!=t){if(-1==e.query.allFields.indexOf(t.str)){var n=e.query.allFields.map((function(e){return"'"+e+"'"})).join(", "),r="unrecognised field '"+t.str+"', possible fields: "+n;throw new I.QueryParseError(r,t.start,t.end)}e.currentClause.fields=[t.str];var o=e.peekLexeme();if(null==o){r="expecting term, found nothing";throw new I.QueryParseError(r,t.start,t.end)}if(o.type===I.QueryLexer.TERM)return I.QueryParser.parseTerm;r="expecting term, found '"+o.type+"'";throw new I.QueryParseError(r,o.start,o.end)}},I.QueryParser.parseTerm=function(e){var t=e.consumeLexeme();if(null!=t){e.currentClause.term=t.str.toLowerCase(),-1!=t.str.indexOf("*")&&(e.currentClause.usePipeline=!1);var n=e.peekLexeme();if(null!=n)switch(n.type){case I.QueryLexer.TERM:return e.nextClause(),I.QueryParser.parseTerm;case I.QueryLexer.FIELD:return e.nextClause(),I.QueryParser.parseField;case I.QueryLexer.EDIT_DISTANCE:return I.QueryParser.parseEditDistance;case I.QueryLexer.BOOST:return I.QueryParser.parseBoost;case I.QueryLexer.PRESENCE:return e.nextClause(),I.QueryParser.parsePresence;default:var r="Unexpected lexeme type '"+n.type+"'";throw new I.QueryParseError(r,n.start,n.end)}else e.nextClause()}},I.QueryParser.parseEditDistance=function(e){var t=e.consumeLexeme();if(null!=t){var n=parseInt(t.str,10);if(isNaN(n)){var r="edit distance must be numeric";throw new I.QueryParseError(r,t.start,t.end)}e.currentClause.editDistance=n;var o=e.peekLexeme();if(null!=o)switch(o.type){case I.QueryLexer.TERM:return e.nextClause(),I.QueryParser.parseTerm;case I.QueryLexer.FIELD:return e.nextClause(),I.QueryParser.parseField;case I.QueryLexer.EDIT_DISTANCE:return I.QueryParser.parseEditDistance;case I.QueryLexer.BOOST:return I.QueryParser.parseBoost;case I.QueryLexer.PRESENCE:return e.nextClause(),I.QueryParser.parsePresence;default:r="Unexpected lexeme type '"+o.type+"'";throw new I.QueryParseError(r,o.start,o.end)}else e.nextClause()}},I.QueryParser.parseBoost=function(e){var t=e.consumeLexeme();if(null!=t){var n=parseInt(t.str,10);if(isNaN(n)){var r="boost must be numeric";throw new I.QueryParseError(r,t.start,t.end)}e.currentClause.boost=n;var o=e.peekLexeme();if(null!=o)switch(o.type){case I.QueryLexer.TERM:return e.nextClause(),I.QueryParser.parseTerm;case I.QueryLexer.FIELD:return e.nextClause(),I.QueryParser.parseField;case I.QueryLexer.EDIT_DISTANCE:return I.QueryParser.parseEditDistance;case I.QueryLexer.BOOST:return I.QueryParser.parseBoost;case I.QueryLexer.PRESENCE:return e.nextClause(),I.QueryParser.parsePresence;default:r="Unexpected lexeme type '"+o.type+"'";throw new I.QueryParseError(r,o.start,o.end)}else e.nextClause()}},void 0===(o="function"==typeof(r=function(){return I})?r.call(t,n,t,e):r)||(e.exports=o)}()},2497:(e,t,n)=>{"use strict";n.r(t)},2295:(e,t,n)=>{"use strict";n.r(t)},4865:function(e,t,n){var r,o;r=function(){var e,t,n={version:"0.2.0"},r=n.settings={minimum:.08,easing:"ease",positionUsing:"",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,showSpinner:!0,barSelector:'[role="bar"]',spinnerSelector:'[role="spinner"]',parent:"body",template:'
'};function o(e,t,n){return en?n:e}function a(e){return 100*(-1+e)}function i(e,t,n){var o;return(o="translate3d"===r.positionUsing?{transform:"translate3d("+a(e)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+a(e)+"%,0)"}:{"margin-left":a(e)+"%"}).transition="all "+t+"ms "+n,o}n.configure=function(e){var t,n;for(t in e)void 0!==(n=e[t])&&e.hasOwnProperty(t)&&(r[t]=n);return this},n.status=null,n.set=function(e){var t=n.isStarted();e=o(e,r.minimum,1),n.status=1===e?null:e;var a=n.render(!t),c=a.querySelector(r.barSelector),u=r.speed,d=r.easing;return a.offsetWidth,s((function(t){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),l(c,i(e,u,d)),1===e?(l(a,{transition:"none",opacity:1}),a.offsetWidth,setTimeout((function(){l(a,{transition:"all "+u+"ms linear",opacity:0}),setTimeout((function(){n.remove(),t()}),u)}),u)):setTimeout(t,u)})),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var e=function(){setTimeout((function(){n.status&&(n.trickle(),e())}),r.trickleSpeed)};return r.trickle&&e(),this},n.done=function(e){return e||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(e){var t=n.status;return t?("number"!=typeof e&&(e=(1-t)*o(Math.random()*t,.1,.95)),t=o(t+e,0,.994),n.set(t)):n.start()},n.trickle=function(){return n.inc(Math.random()*r.trickleRate)},e=0,t=0,n.promise=function(r){return r&&"resolved"!==r.state()?(0===t&&n.start(),e++,t++,r.always((function(){0==--t?(e=0,n.done()):n.set((e-t)/e)})),this):this},n.render=function(e){if(n.isRendered())return document.getElementById("nprogress");u(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=r.template;var o,i=t.querySelector(r.barSelector),s=e?"-100":a(n.status||0),c=document.querySelector(r.parent);return l(i,{transition:"all 0 linear",transform:"translate3d("+s+"%,0,0)"}),r.showSpinner||(o=t.querySelector(r.spinnerSelector))&&f(o),c!=document.body&&u(c,"nprogress-custom-parent"),c.appendChild(t),t},n.remove=function(){d(document.documentElement,"nprogress-busy"),d(document.querySelector(r.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&f(e)},n.isRendered=function(){return!!document.getElementById("nprogress")},n.getPositioningCSS=function(){var e=document.body.style,t="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return t+"Perspective"in e?"translate3d":t+"Transform"in e?"translate":"margin"};var s=function(){var e=[];function t(){var n=e.shift();n&&n(t)}return function(n){e.push(n),1==e.length&&t()}}(),l=function(){var e=["Webkit","O","Moz","ms"],t={};function n(e){return e.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,(function(e,t){return t.toUpperCase()}))}function r(t){var n=document.body.style;if(t in n)return t;for(var r,o=e.length,a=t.charAt(0).toUpperCase()+t.slice(1);o--;)if((r=e[o]+a)in n)return r;return t}function o(e){return e=n(e),t[e]||(t[e]=r(e))}function a(e,t,n){t=o(t),e.style[t]=n}return function(e,t){var n,r,o=arguments;if(2==o.length)for(n in t)void 0!==(r=t[n])&&t.hasOwnProperty(n)&&a(e,n,r);else a(e,o[1],o[2])}}();function c(e,t){return("string"==typeof e?e:p(e)).indexOf(" "+t+" ")>=0}function u(e,t){var n=p(e),r=n+t;c(n,t)||(e.className=r.substring(1))}function d(e,t){var n,r=p(e);c(e,t)&&(n=r.replace(" "+t+" "," "),e.className=n.substring(1,n.length-1))}function p(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function f(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return n},void 0===(o="function"==typeof r?r.call(t,n,t,e):r)||(e.exports=o)},7874:()=>{!function(e){var t="\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b",n={pattern:/(^(["']?)\w+\2)[ \t]+\S.*/,lookbehind:!0,alias:"punctuation",inside:null},r={bash:n,environment:{pattern:RegExp("\\$"+t),alias:"constant"},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:!0,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--|\+\+|\*\*=?|<<=?|>>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp("(\\{)"+t),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/};e.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b[\w-]+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?:\.\w+)*(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+t),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},parameter:{pattern:/(^|\s)-{1,2}(?:\w+:[+-]?)?\w+(?:\.\w+)*(?=[=\s]|$)/,alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:r},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:n}},{pattern:/(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/,lookbehind:!0,greedy:!0,inside:r},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{entity:r.entity}}],environment:{pattern:RegExp("\\$?"+t),alias:"constant"},variable:r.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cargo|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|java|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|sysctl|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:false|true)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},n.inside=e.languages.bash;for(var o=["comment","function-name","for-or-select","assign-left","parameter","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],a=r.variable[1].inside,i=0;i{!function(e){function t(e,t){return"___"+e.toUpperCase()+t+"___"}Object.defineProperties(e.languages["markup-templating"]={},{buildPlaceholders:{value:function(n,r,o,a){if(n.language===r){var i=n.tokenStack=[];n.code=n.code.replace(o,(function(e){if("function"==typeof a&&!a(e))return e;for(var o,s=i.length;-1!==n.code.indexOf(o=t(r,s));)++s;return i[s]=e,o})),n.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(n,r){if(n.language===r&&n.tokenStack){n.grammar=e.languages[r];var o=0,a=Object.keys(n.tokenStack);!function i(s){for(var l=0;l=a.length);l++){var c=s[l];if("string"==typeof c||c.content&&"string"==typeof c.content){var u=a[o],d=n.tokenStack[u],p="string"==typeof c?c:c.content,f=t(r,u),h=p.indexOf(f);if(h>-1){++o;var g=p.substring(0,h),m=new e.Token(r,e.tokenize(d,n.grammar),"language-"+r,d),b=p.substring(h+f.length),y=[];g&&y.push.apply(y,i([g])),y.push(m),b&&y.push.apply(y,i([b])),"string"==typeof c?s.splice.apply(s,[l,1].concat(y)):c.content=y}}else c.content&&i(c.content)}return s}(n.tokens)}}}})}(Prism)},2963:()=>{!function(e){var t=[/"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/.source,/'[^']*'/.source,/\$'(?:[^'\\]|\\[\s\S])*'/.source,/<<-?\s*(["']?)(\w+)\1\s[\s\S]*?[\r\n]\2/.source].join("|");e.languages["shell-session"]={command:{pattern:RegExp(/^/.source+"(?:"+/[^\s@:$#%*!/\\]+@[^\r\n@:$#%*!/\\]+(?::[^\0-\x1F$#%*?"<>:;|]+)?/.source+"|"+/[/~.][^\0-\x1F$#%*?"<>@:;|]*/.source+")?"+/[$#%](?=\s)/.source+/(?:[^\\\r\n \t'"<$]|[ \t](?:(?!#)|#.*$)|\\(?:[^\r]|\r\n?)|\$(?!')|<(?!<)|<>)+/.source.replace(/<>/g,(function(){return t})),"m"),greedy:!0,inside:{info:{pattern:/^[^#$%]+/,alias:"punctuation",inside:{user:/^[^\s@:$#%*!/\\]+@[^\r\n@:$#%*!/\\]+/,punctuation:/:/,path:/[\s\S]+/}},bash:{pattern:/(^[$#%]\s*)\S[\s\S]*/,lookbehind:!0,alias:"language-bash",inside:e.languages.bash},"shell-symbol":{pattern:/^[$#%]/,alias:"important"}}},output:/.(?:.*(?:[\r\n]|.$))*/},e.languages["sh-session"]=e.languages.shellsession=e.languages["shell-session"]}(Prism)},3929:(e,t,n)=>{var r={"./prism-bash":7874,"./prism-shell-session":2963};function o(e){var t=a(e);return n(t)}function a(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}o.keys=function(){return Object.keys(r)},o.resolve=a,e.exports=o,o.id=3929},2703:(e,t,n)=>{"use strict";var r=n(414);function o(){}function a(){}a.resetWarningCache=o,e.exports=function(){function e(e,t,n,o,a,i){if(i!==r){var s=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw s.name="Invariant Violation",s}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:a,resetWarningCache:o};return n.PropTypes=n,n}},5697:(e,t,n)=>{e.exports=n(2703)()},414:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},4448:(e,t,n)=>{"use strict";var r=n(7294),o=n(3840);function a(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n