* [PATCH v2 0/5] docs/zh_CN: Add rust Chinese translation
@ 2022-10-18 13:04 Yanteng Si
2022-10-18 13:04 ` [PATCH v2 1/5] docs/zh_CN: Add rust/index " Yanteng Si
` (4 more replies)
0 siblings, 5 replies; 21+ messages in thread
From: Yanteng Si @ 2022-10-18 13:04 UTC (permalink / raw)
To: alexs, seakeel
Cc: Yanteng Si, corbet, ojeda, boqun.feng, wedsonaf, gary, bjorn3_gh,
rust-for-linux, bobwxc, wu.xiangcheng, chenhuacai, jiaxun.yang,
linux-doc, siyanteng01
v2:
* Modify some words under Xiangcheng's advice.
v1:
* Translate Documentation/rust/* into Chinese.
Yanteng Si (5):
docs/zh_CN: Add rust/index Chinese translation
docs/zh_CN: Add rust/quick-start Chinese translation
docs/zh_CN: Add rust/general-information Chinese translation
docs/zh_CN: Add rust/coding-guidelines Chinese translation
docs/zh_CN: Add rust/arch-support Chinese translation
Documentation/translations/zh_CN/index.rst | 1 +
.../translations/zh_CN/rust/arch-support.rst | 23 ++
.../zh_CN/rust/coding-guidelines.rst | 192 ++++++++++++++++
.../zh_CN/rust/general-information.rst | 75 +++++++
.../translations/zh_CN/rust/index.rst | 28 +++
.../translations/zh_CN/rust/quick-start.rst | 211 ++++++++++++++++++
6 files changed, 530 insertions(+)
create mode 100644 Documentation/translations/zh_CN/rust/arch-support.rst
create mode 100644 Documentation/translations/zh_CN/rust/coding-guidelines.rst
create mode 100644 Documentation/translations/zh_CN/rust/general-information.rst
create mode 100644 Documentation/translations/zh_CN/rust/index.rst
create mode 100644 Documentation/translations/zh_CN/rust/quick-start.rst
--
2.31.1
^ permalink raw reply [flat|nested] 21+ messages in thread
* [PATCH v2 1/5] docs/zh_CN: Add rust/index Chinese translation
2022-10-18 13:04 [PATCH v2 0/5] docs/zh_CN: Add rust Chinese translation Yanteng Si
@ 2022-10-18 13:04 ` Yanteng Si
2022-10-19 8:56 ` Wu XiangCheng
2022-10-24 23:13 ` Gary Guo
2022-10-18 13:04 ` [PATCH v2 2/5] docs/zh_CN: Add rust/quick-start " Yanteng Si
` (3 subsequent siblings)
4 siblings, 2 replies; 21+ messages in thread
From: Yanteng Si @ 2022-10-18 13:04 UTC (permalink / raw)
To: alexs, seakeel
Cc: Yanteng Si, corbet, ojeda, boqun.feng, wedsonaf, gary, bjorn3_gh,
rust-for-linux, bobwxc, wu.xiangcheng, chenhuacai, jiaxun.yang,
linux-doc, siyanteng01
Translate .../rust/index.rst into Chinese.
Signed-off-by: Yanteng Si <siyanteng@loongson.cn>
---
Documentation/translations/zh_CN/index.rst | 1 +
.../translations/zh_CN/rust/index.rst | 31 +++++++++++++++++++
2 files changed, 32 insertions(+)
create mode 100644 Documentation/translations/zh_CN/rust/index.rst
diff --git a/Documentation/translations/zh_CN/index.rst b/Documentation/translations/zh_CN/index.rst
index ec99ef5fe990..0b6e555feeda 100644
--- a/Documentation/translations/zh_CN/index.rst
+++ b/Documentation/translations/zh_CN/index.rst
@@ -71,6 +71,7 @@ TODOList:
dev-tools/index
dev-tools/testing-overview
kernel-hacking/index
+ rust/index
TODOList:
diff --git a/Documentation/translations/zh_CN/rust/index.rst b/Documentation/translations/zh_CN/rust/index.rst
new file mode 100644
index 000000000000..fc6a074841bc
--- /dev/null
+++ b/Documentation/translations/zh_CN/rust/index.rst
@@ -0,0 +1,31 @@
+.. SPDX-License-Identifier: GPL-2.0
+.. include:: ../disclaimer-zh_CN.rst
+
+:Original: Documentation/rust/index.rst
+
+:翻译:
+
+ 司延腾 Yanteng Si <siyanteng@loongson.cn>
+
+Rust
+====
+
+与内核中的Rust有关的文档。若要开始在内核中使用Rust,请阅读quick-start.rst指南。
+
+.. toctree::
+ :maxdepth: 1
+
+
+TODOList:
+
+* quick-start
+* general-information
+* coding-guidelines
+* arch-support
+
+.. only:: subproject and html
+
+ Indices
+ =======
+
+ * :ref:`genindex`
--
2.31.1
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH v2 2/5] docs/zh_CN: Add rust/quick-start Chinese translation
2022-10-18 13:04 [PATCH v2 0/5] docs/zh_CN: Add rust Chinese translation Yanteng Si
2022-10-18 13:04 ` [PATCH v2 1/5] docs/zh_CN: Add rust/index " Yanteng Si
@ 2022-10-18 13:04 ` Yanteng Si
2022-10-19 3:28 ` Alex Shi
` (2 more replies)
2022-10-18 13:04 ` [PATCH v2 3/5] docs/zh_CN: Add rust/general-information " Yanteng Si
` (2 subsequent siblings)
4 siblings, 3 replies; 21+ messages in thread
From: Yanteng Si @ 2022-10-18 13:04 UTC (permalink / raw)
To: alexs, seakeel
Cc: Yanteng Si, corbet, ojeda, boqun.feng, wedsonaf, gary, bjorn3_gh,
rust-for-linux, bobwxc, wu.xiangcheng, chenhuacai, jiaxun.yang,
linux-doc, siyanteng01
Translate .../rust/quick-start.rst into Chinese.
Signed-off-by: Yanteng Si <siyanteng@loongson.cn>
---
.../translations/zh_CN/rust/index.rst | 2 +-
.../translations/zh_CN/rust/quick-start.rst | 211 ++++++++++++++++++
2 files changed, 212 insertions(+), 1 deletion(-)
create mode 100644 Documentation/translations/zh_CN/rust/quick-start.rst
diff --git a/Documentation/translations/zh_CN/rust/index.rst b/Documentation/translations/zh_CN/rust/index.rst
index fc6a074841bc..fe884d1da353 100644
--- a/Documentation/translations/zh_CN/rust/index.rst
+++ b/Documentation/translations/zh_CN/rust/index.rst
@@ -15,10 +15,10 @@ Rust
.. toctree::
:maxdepth: 1
+ quick-start
TODOList:
-* quick-start
* general-information
* coding-guidelines
* arch-support
diff --git a/Documentation/translations/zh_CN/rust/quick-start.rst b/Documentation/translations/zh_CN/rust/quick-start.rst
new file mode 100644
index 000000000000..747873b1da6a
--- /dev/null
+++ b/Documentation/translations/zh_CN/rust/quick-start.rst
@@ -0,0 +1,211 @@
+.. SPDX-License-Identifier: GPL-2.0
+.. include:: ../disclaimer-zh_CN.rst
+
+:Original: Documentation/rust/quick-start.rst
+
+:翻译:
+
+ 司延腾 Yanteng Si <siyanteng@loongson.cn>
+
+
+快速入门
+========
+
+本文介绍了如何开始使用Rust进行内核开发。
+
+
+构建依赖
+--------
+
+本节描述了如何获取构建所需的工具。
+
+其中一些依赖也许可以从Linux发行版中获得,包名可能是 ``rustc`` , ``rust-src`` ,
+``rust-bindgen`` 等。然而,在写这篇文章的时候,它们很可能还不够新,除非发行版跟踪最
+新的版本。
+
+为了方便检查是否满足要求,可以使用以下目标::
+
+ make LLVM=1 rustavailable
+
+这会触发与Kconfig用来确定是否应该启用 ``RUST_IS_AVAILABLE`` 相同的逻辑;不过它也
+会列出未满足的条件。
+
+
+rustc
+*****
+
+需要一个特定版本的Rust编译器。较新的版本可能会也可能不会工作,因为就目前而言,内核依赖
+于一些不稳定的Rust特性。
+
+如果使用的是 ``rustup`` ,请进入检出的源代码目录并运行::
+
+ rustup override set $(scripts/min-tool-version.sh rustc)
+
+或者从以下网址获取一个独立的安装程序或安装 ``rustup`` :
+
+ https://www.rust-lang.org
+
+
+Rust标准库源代码
+****************
+
+Rust标准库的源代码是必需的,因为构建系统会交叉编译 ``core`` 和 ``alloc`` 。
+
+如果正在使用 ``rustup`` ,请运行::
+
+ rustup component add rust-src
+
+这些组件是按工具链安装的,因此以后升级Rust编译器版本需要重新添加组件。
+
+否则,如果使用独立的安装程序,可以将Rust仓库克隆到工具链的安装文件夹中::
+
+ git clone --recurse-submodules \
+ --branch $(scripts/min-tool-version.sh rustc) \
+ https://github.com/rust-lang/rust \
+ $(rustc --print sysroot)/lib/rustlib/src/rust
+
+在这种情况下,以后升级Rust编译器版本需要手动更新这个克隆的仓库。
+
+
+libclang
+********
+
+``bindgen`` 使用 ``libclang`` (LLVM的一部分)来理解内核中的C代码,这意味着需要安
+装LLVM;同在开启 ``CC=clang`` 或 ``LLVM=1`` 时编译内核一样。
+
+Linux发行版中可能会有合适的包,所以最好先检查一下。
+
+适用于部分系统和架构的二进制文件也可到以下网址下载:
+
+ https://releases.llvm.org/download.html
+
+或者自行构建LLVM,这需要相当长的时间,但并不是一个复杂的过程:
+
+ https://llvm.org/docs/GettingStarted.html#getting-the-source-code-and-building-llvm
+
+请参阅 Documentation/kbuild/llvm.rst 了解更多信息,以及获取预构建版本和发行包
+的进一步方法。
+
+
+bindgen
+*******
+
+内核的C端绑定是在构建时使用 ``bindgen`` 工具生成的。这需要特定的版本。
+
+通过以下方式安装它(注意,这将从源码下载并构建该工具)::
+
+ cargo install --locked --version $(scripts/min-tool-version.sh bindgen) bindgen
+
+
+开发依赖
+--------
+
+本节解释了如何获取开发所需的工具。也就是说,在构建内核时不需要这些工具。
+
+
+rustfmt
+*******
+
+``rustfmt`` 工具被用来自动格式化所有的Rust内核代码,包括生成的C绑定(详情请见
+coding-guidelines.rst )。
+
+如果使用的是 ``rustup`` ,它的 ``默认`` 配置文件已经安装了这个工具,因此不需要做什么。
+如果使用的是其他配置文件,可以手动安装该组件::
+
+ rustup component add rustfmt
+
+独立的安装程序也带有 ``rustfmt`` 。
+
+
+clippy
+******
+
+``clippy`` 是一个Rust linter。运行它可以为Rust代码提供额外的警告。它可以通过向 ``make``
+传递 ``CLIPPY=1`` 来运行(关于细节,详见 general-information.rst )。
+
+如果正在使用 ``rustup`` ,它的 ``默认`` 配置文件已经安装了这个工具,因此不需要做什么。
+如果使用的是另一个配置文件,该组件可以被手动安装::
+
+ rustup component add clippy
+
+独立的安装程序也带有 ``clippy`` 。
+
+
+cargo
+*****
+
+``cargo`` 是Rust的本地构建系统。目前需要它来运行测试,因为它被用来构建一个自定义的标准
+库,其中包含了内核中自定义 ``alloc`` 所提供的设施。测试可以使用 ``rusttest`` Make 目标
+来运行。
+
+如果使用的是 ``rustup`` ,所有的配置文件都已经安装了该工具,因此不需要再做什么。
+
+独立的安装程序也带有 ``cargo`` 。
+
+
+rustdoc
+*******
+
+``rustdoc`` 是Rust的文档工具。它为Rust代码生成漂亮的HTML文档(详情请见 general-information.rst )。
+
+``rustdoc`` 也被用来测试文档化的Rust代码中提供的例子(称为doctests或文档测试)。
+``rusttest`` 是本功能的Make目标。
+
+如果使用的是 ``rustup`` ,所有的配置文件都已经安装了这个工具,因此不需要做什么。
+
+独立的安装程序也带有 ``rustdoc`` 。
+
+
+rust-analyzer
+*************
+
+`rust-analyzer <https://rust-analyzer.github.io/>`_ 语言服务器可以和许多编辑器
+一起使用,以实现语法高亮、补全、转到定义和其他功能。
+
+``rust-analyzer`` 需要一个配置文件, ``rust-project.json``, 它可以由 ``rust-analyzer``
+Make 目标生成。
+
+
+配置
+----
+
+Rust支持(CONFIG_RUST)需要在 ``General setup`` 菜单中启用。在其他要求得到满足的情
+况下,该选项只有在找到合适的Rust工具链时才会显示(见上文)。相应的,这将使依赖Rust的其
+他选项可见。
+
+之后,进入::
+
+ Kernel hacking
+ -> Sample kernel code
+ -> Rust samples
+
+并启用一些内置或可加载的样例模块。
+
+
+构建
+----
+
+用完整的LLVM工具链构建内核是目前支持的最佳设置。即::
+
+ make LLVM=1
+
+对于不支持完整LLVM工具链的架构,使用::
+
+ make CC=clang
+
+使用GCC对某些配置也是可行的,但目前它是非常试验性的。
+
+
+折腾
+----
+
+要想深入了解,请看 ``samples/rust/`` 下的样例源代码、 ``rust/`` 下的Rust支持代码和
+``Kernel hacking`` 下的 ``Rust hacking`` 菜单。
+
+如果使用的是GDB/Binutils,而Rust符号没有被拆分,原因是工具链还不支持Rust的新v0拆分方案。
+有几个办法可以解决:
+
+ - 安装一个较新的版本(GDB >= 10.2, Binutils >= 2.36)。
+
+ - 一些版本的GDB(例如vanilla GDB 10.1)能够使用嵌入在调试信息(``CONFIG_DEBUG_INFO``)
+ 中的预先还原函数的名字。
--
2.31.1
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH v2 3/5] docs/zh_CN: Add rust/general-information Chinese translation
2022-10-18 13:04 [PATCH v2 0/5] docs/zh_CN: Add rust Chinese translation Yanteng Si
2022-10-18 13:04 ` [PATCH v2 1/5] docs/zh_CN: Add rust/index " Yanteng Si
2022-10-18 13:04 ` [PATCH v2 2/5] docs/zh_CN: Add rust/quick-start " Yanteng Si
@ 2022-10-18 13:04 ` Yanteng Si
2022-10-19 3:29 ` Alex Shi
` (2 more replies)
2022-10-18 13:07 ` [PATCH v2 4/5] docs/zh_CN: Add rust/coding-guidelines " Yanteng Si
2022-10-18 13:07 ` [PATCH v2 5/5] docs/zh_CN: Add rust/arch-support " Yanteng Si
4 siblings, 3 replies; 21+ messages in thread
From: Yanteng Si @ 2022-10-18 13:04 UTC (permalink / raw)
To: alexs, seakeel
Cc: Yanteng Si, corbet, ojeda, boqun.feng, wedsonaf, gary, bjorn3_gh,
rust-for-linux, bobwxc, wu.xiangcheng, chenhuacai, jiaxun.yang,
linux-doc, siyanteng01
Translate .../rust/general-information.rst into Chinese.
Signed-off-by: Yanteng Si <siyanteng@loongson.cn>
---
.../zh_CN/rust/general-information.rst | 75 +++++++++++++++++++
.../translations/zh_CN/rust/index.rst | 2 +-
2 files changed, 76 insertions(+), 1 deletion(-)
create mode 100644 Documentation/translations/zh_CN/rust/general-information.rst
diff --git a/Documentation/translations/zh_CN/rust/general-information.rst b/Documentation/translations/zh_CN/rust/general-information.rst
new file mode 100644
index 000000000000..6b91dfe1834a
--- /dev/null
+++ b/Documentation/translations/zh_CN/rust/general-information.rst
@@ -0,0 +1,75 @@
+.. SPDX-License-Identifier: GPL-2.0
+.. include:: ../disclaimer-zh_CN.rst
+
+:Original: Documentation/rust/general-information.rst
+
+:翻译:
+
+ 司延腾 Yanteng Si <siyanteng@loongson.cn>
+
+
+基本信息
+========
+
+本文档包含了在内核中使用Rust支持时需要了解的有用信息。
+
+
+代码文档
+--------
+
+Rust内核代码使用其内置的文档生成器 ``rustdoc`` 进行记录。
+
+生成的HTML文档包括集成搜索、链接项(如类型、函数、常量)、源代码等。它们可以在以下地址阅读
+(TODO:当在主线中时链接,与其他文档一起生成):
+
+ http://kernel.org/
+
+这些文档也可以很容易地在本地生成和阅读。这相当快(与编译代码本身的顺序相同),而且不需要特
+殊的工具或环境。这有一个额外的好处,那就是它们将根据所使用的特定内核配置进行定制。要生成它
+们,请使用 ``rustdoc`` 目标,并使用编译时使用的相同调用,例如::
+
+ make LLVM=1 rustdoc
+
+要在你的网络浏览器中本地阅读该文档,请运行如::
+
+ xdg-open rust/doc/kernel/index.html
+
+要了解如何编写文档,请看 coding-guidelines.rst 。
+
+
+额外的lints
+-----------
+
+虽然 ``rustc`` 是一个非常有用的编译器,但一些额外的lints和分析可以通过 ``clippy``
+(一个Rust linter)来实现。要启用它,请将CLIPPY=1传递到用于编译的同一调用中,例如::
+
+ make LLVM=1 CLIPPY=1
+
+请注意,Clippy可能会改变代码生成,因此在构建产品内核时不应该启用它。
+
+抽象和绑定
+----------
+
+抽象是用Rust代码包装来自C端的内核功能。
+
+为了使用来自C端的函数和类型,需要创建绑定。绑定是Rust对那些来自C端的函数和类型的声明。
+
+例如,人们可以在Rust中写一个 ``Mutex`` 抽象,它从C端包装一个 ``Mutex结构体`` ,并
+通过绑定调用其函数。
+
+抽象并不能用于所有的内核内部API和概念,但随着时间的推移,我们打算扩大覆盖范围。“Leaf”
+模块(例如,驱动程序)不应该直接使用C语言的绑定。相反,子系统应该根据需要提供尽可能安
+全的抽象。
+
+
+有条件的编译
+------------
+
+Rust代码可以访问基于内核配置的条件性编译:
+
+.. code-block:: rust
+
+ #[cfg(CONFIG_X)] // Enabled (`y` or `m`)
+ #[cfg(CONFIG_X="y")] // Enabled as a built-in (`y`)
+ #[cfg(CONFIG_X="m")] // Enabled as a module (`m`)
+ #[cfg(not(CONFIG_X))] // Disabled
diff --git a/Documentation/translations/zh_CN/rust/index.rst b/Documentation/translations/zh_CN/rust/index.rst
index fe884d1da353..c4d773a8a288 100644
--- a/Documentation/translations/zh_CN/rust/index.rst
+++ b/Documentation/translations/zh_CN/rust/index.rst
@@ -16,10 +16,10 @@ Rust
:maxdepth: 1
quick-start
+ general-information
TODOList:
-* general-information
* coding-guidelines
* arch-support
--
2.31.1
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH v2 4/5] docs/zh_CN: Add rust/coding-guidelines Chinese translation
2022-10-18 13:04 [PATCH v2 0/5] docs/zh_CN: Add rust Chinese translation Yanteng Si
` (2 preceding siblings ...)
2022-10-18 13:04 ` [PATCH v2 3/5] docs/zh_CN: Add rust/general-information " Yanteng Si
@ 2022-10-18 13:07 ` Yanteng Si
2022-10-19 3:30 ` Alex Shi
` (2 more replies)
2022-10-18 13:07 ` [PATCH v2 5/5] docs/zh_CN: Add rust/arch-support " Yanteng Si
4 siblings, 3 replies; 21+ messages in thread
From: Yanteng Si @ 2022-10-18 13:07 UTC (permalink / raw)
To: alexs, seakeel
Cc: Yanteng Si, corbet, ojeda, boqun.feng, wedsonaf, gary, bjorn3_gh,
rust-for-linux, bobwxc, wu.xiangcheng, chenhuacai, jiaxun.yang,
linux-doc, siyanteng01
Translate .../rust/coding-guidelines.rst into Chinese.
Signed-off-by: Yanteng Si <siyanteng@loongson.cn>
---
.../zh_CN/rust/coding-guidelines.rst | 192 ++++++++++++++++++
.../translations/zh_CN/rust/index.rst | 2 +-
2 files changed, 193 insertions(+), 1 deletion(-)
create mode 100644 Documentation/translations/zh_CN/rust/coding-guidelines.rst
diff --git a/Documentation/translations/zh_CN/rust/coding-guidelines.rst b/Documentation/translations/zh_CN/rust/coding-guidelines.rst
new file mode 100644
index 000000000000..6c0bdbbc5a2a
--- /dev/null
+++ b/Documentation/translations/zh_CN/rust/coding-guidelines.rst
@@ -0,0 +1,192 @@
+.. SPDX-License-Identifier: GPL-2.0
+.. include:: ../disclaimer-zh_CN.rst
+
+:Original: Documentation/rust/coding-guidelines.rst
+
+:翻译:
+
+ 司延腾 Yanteng Si <siyanteng@loongson.cn>
+
+编码指南
+========
+
+本文档描述了如何在内核中编写Rust代码。
+
+
+风格和格式化
+------------
+
+代码应该使用 ``rustfmt`` 进行格式化。这样一来,一个不时为内核做贡献的人就不需要再去学
+习和记忆一个样式指南了。更重要的是,审阅者和维护者不需要再花时间指出风格问题,这样就可以
+减少补丁落地所需的邮件往返。
+
+.. note:: ``rustfmt`` 不检查注释和文档的约定。因此,这些仍然需要照顾到。
+
+使用 ``rustfmt`` 的默认设置。这意味着遵循Rust的习惯性风格。例如,缩进时使用4个空格而
+不是制表符。
+
+在输入、保存或提交时告知编辑器/IDE进行格式化是很方便的。然而,如果因为某些原因需要在某
+个时候重新格式化整个内核Rust的源代码,可以运行以下程序::
+
+ make LLVM=1 rustfmt
+
+也可以检查所有的东西是否都是格式化的(否则就打印一个差异),例如对于一个CI,用::
+
+ make LLVM=1 rustfmtcheck
+
+像内核其他部分的 ``clang-format`` 一样, ``rustfmt`` 在单个文件上工作,并且不需要
+内核配置。有时,它甚至可以与破碎的代码一起工作。
+
+
+注释
+----
+
+“普通”注释(即以 ``//`` 开头,而不是 ``///`` 或 ``//!`` 开头的代码文档)的写法与文
+档注释相同,使用Markdown语法,尽管它们不会被渲染。这提高了一致性,简化了规则,并允许在
+这两种注释之间更容易地移动内容。比如说:
+
+.. code-block:: rust
+
+ // `object` is ready to be handled now.
+ f(object);
+
+此外,就像文档一样,注释在句子的开头要大写,并以句号结束(即使是单句)。这包括 ``// SAFETY:``,
+``// TODO:`` 和其他“标记”的注释,例如:
+
+.. code-block:: rust
+
+ // FIXME: The error should be handled properly.
+
+注释不应该被用于文档的目的:注释是为了实现细节,而不是为了用户。即使源文件的读者既是API
+的实现者又是用户,这种区分也是有用的。事实上,有时同时使用注释和文档是很有用的。例如,用
+于 ``TODO`` 列表或对文档本身的注释。对于后一种情况,注释可以插在中间;也就是说,离要注
+释的文档行更近。对于其他情况,注释会写在文档之后,例如:
+
+.. code-block:: rust
+
+ /// Returns a new [`Foo`].
+ ///
+ /// # Examples
+ ///
+ // TODO: Find a better example.
+ /// ```
+ /// let foo = f(42);
+ /// ```
+ // FIXME: Use fallible approach.
+ pub fn f(x: i32) -> Foo {
+ // ...
+ }
+
+一种特殊的注释是 ``// SAFETY:`` 注释。这些注释必须出现在每个 ``unsafe`` 块之前,它们
+解释了为什么该块内的代码是正确/健全的,即为什么它在任何情况下都不会触发未定义行为,例如:
+
+.. code-block:: rust
+
+ // SAFETY: `p` is valid by the safety requirements.
+ unsafe { *p = 0; }
+
+``// SAFETY:`` 注释不能与代码文档中的 ``# Safety`` 部分相混淆。 ``# Safety`` 部
+分指定了(函数)调用者或(特性)实现者需要遵守的契约。
+``// SAFETY:`` 注释显示了为什么一个(函数)调用者或(特性)实现者实际上尊重了
+``# Safety`` 部分或语言参考中的前提条件。
+
+
+代码文档
+--------
+
+Rust内核代码不像C内核代码那样被记录下来(即通过kernel-doc)。取而代之的是用于记录Rust
+代码的常用系统:rustdoc工具,它使用Markdown(一种轻量级的标记语言)。
+
+要学习Markdown,外面有很多指南。例如:
+
+https://commonmark.org/help/
+
+一个记录良好的Rust函数可能是这样的:
+
+.. code-block:: rust
+
+ /// Returns the contained [`Some`] value, consuming the `self` value,
+ /// without checking that the value is not [`None`].
+ ///
+ /// # Safety
+ ///
+ /// Calling this method on [`None`] is *[undefined behavior]*.
+ ///
+ /// [undefined behavior]: https://doc.rust-lang.org/reference/behavior-considered-undefined.html
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// let x = Some("air");
+ /// assert_eq!(unsafe { x.unwrap_unchecked() }, "air");
+ /// ```
+ pub unsafe fn unwrap_unchecked(self) -> T {
+ match self {
+ Some(val) => val,
+
+ // SAFETY: The safety contract must be upheld by the caller.
+ None => unsafe { hint::unreachable_unchecked() },
+ }
+ }
+
+这个例子展示了一些 ``rustdoc`` 的特性和内核中遵循的一些惯例:
+
+ - 第一段必须是一个简单的句子,简要地描述被记录的项目的作用。进一步的解释必须放在额
+ 外的段落中。
+
+ - 不安全的函数必须在 ``# Safety`` 部分记录其安全前提条件。
+
+ - 虽然这里没有显示,但如果一个函数可能会恐慌,那么必须在 ``# Panics`` 部分描述发
+ 生这种情况的条件。
+
+ 请注意,恐慌应该是非常少见的,只有在有充分理由的情况下才会使用。几乎在所有的情况下,
+ 都应该使用一个可失败的方法,通常是返回一个 ``Result``。
+
+ - 如果提供使用实例对读者有帮助的话,必须写在一个叫做``# Examples``的部分。
+
+ - Rust项目(函数、类型、常量……)必须有适当的链接(``rustdoc`` 会自动创建一个
+ 链接)。
+
+ - 任何 ``unsafe`` 的代码块都必须在前面加上一个 ``// SAFETY:`` 的注释,描述里面
+ 的代码为什么是正确的。
+
+ 虽然有时原因可能看起来微不足道,但写这些注释不仅是记录已经考虑到的问题的好方法,
+ 最重要的是,它提供了一种知道没有额外隐含约束的方法。
+
+要了解更多关于如何编写Rust和拓展功能的文档,请看看 ``rustdoc`` 这本书,网址是:
+
+ https://doc.rust-lang.org/rustdoc/how-to-write-documentation.html
+
+
+命名
+----
+
+Rust内核代码遵循通常的Rust命名空间:
+
+ https://rust-lang.github.io/api-guidelines/naming.html
+
+当现有的C语言概念(如宏、函数、对象......)被包装成Rust抽象时,应该使用尽可能接近C语
+言的名称,以避免混淆,并在C语言和Rust语言之间来回切换时提高可读性。例如,C语言中的
+``pr_info`` 这样的宏在Rust中的命名是一样的。
+
+说到这里,应该调整大小写以遵循Rust的命名惯例,模块和类型引入的命名间隔不应该在项目名称
+中重复。例如,在包装常量时,如:
+
+.. code-block:: c
+
+ #define GPIO_LINE_DIRECTION_IN 0
+ #define GPIO_LINE_DIRECTION_OUT 1
+
+在Rust中的等价物可能是这样的(忽略文档)。:
+
+.. code-block:: rust
+
+ pub mod gpio {
+ pub enum LineDirection {
+ In = bindings::GPIO_LINE_DIRECTION_IN as _,
+ Out = bindings::GPIO_LINE_DIRECTION_OUT as _,
+ }
+ }
+
+也就是说, ``GPIO_LINE_DIRECTION_IN`` 的等价物将被称为 ``gpio::LineDirection::In`` 。
+特别是,它不应该被命名为 ``gpio::gpio_line_direction::GPIO_LINE_DIRECTION_IN`` 。
diff --git a/Documentation/translations/zh_CN/rust/index.rst b/Documentation/translations/zh_CN/rust/index.rst
index c4d773a8a288..c5507ad488a1 100644
--- a/Documentation/translations/zh_CN/rust/index.rst
+++ b/Documentation/translations/zh_CN/rust/index.rst
@@ -17,10 +17,10 @@ Rust
quick-start
general-information
+ coding-guidelines
TODOList:
-* coding-guidelines
* arch-support
.. only:: subproject and html
--
2.31.1
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH v2 5/5] docs/zh_CN: Add rust/arch-support Chinese translation
2022-10-18 13:04 [PATCH v2 0/5] docs/zh_CN: Add rust Chinese translation Yanteng Si
` (3 preceding siblings ...)
2022-10-18 13:07 ` [PATCH v2 4/5] docs/zh_CN: Add rust/coding-guidelines " Yanteng Si
@ 2022-10-18 13:07 ` Yanteng Si
2022-10-19 3:30 ` Alex Shi
` (2 more replies)
4 siblings, 3 replies; 21+ messages in thread
From: Yanteng Si @ 2022-10-18 13:07 UTC (permalink / raw)
To: alexs, seakeel
Cc: Yanteng Si, corbet, ojeda, boqun.feng, wedsonaf, gary, bjorn3_gh,
rust-for-linux, bobwxc, wu.xiangcheng, chenhuacai, jiaxun.yang,
linux-doc, siyanteng01
Translate .../rust/arch-support.rst into Chinese.
Signed-off-by: Yanteng Si <siyanteng@loongson.cn>
---
.../translations/zh_CN/rust/arch-support.rst | 23 +++++++++++++++++++
.../translations/zh_CN/rust/index.rst | 5 +---
2 files changed, 24 insertions(+), 4 deletions(-)
create mode 100644 Documentation/translations/zh_CN/rust/arch-support.rst
diff --git a/Documentation/translations/zh_CN/rust/arch-support.rst b/Documentation/translations/zh_CN/rust/arch-support.rst
new file mode 100644
index 000000000000..afbd02afec45
--- /dev/null
+++ b/Documentation/translations/zh_CN/rust/arch-support.rst
@@ -0,0 +1,23 @@
+.. SPDX-License-Identifier: GPL-2.0
+.. include:: ../disclaimer-zh_CN.rst
+
+:Original: Documentation/rust/arch-support.rst
+
+:翻译:
+
+ 司延腾 Yanteng Si <siyanteng@loongson.cn>
+
+架构支持
+========
+
+目前,Rust编译器(``rustc``)使用LLVM进行代码生成,这限制了可以支持的目标架构。此外,对
+使用LLVM/Clang构建内核的支持也有所不同(请参见 Documentation/kbuild/llvm.rst )。这
+种支持对于使用 ``libclang`` 的 ``bindgen`` 来说是必需的。
+
+下面是目前可以工作的架构的一般总结。支持程度与 ``MAINTAINERS`` 文件中的``S`` 值相对应:
+
+============ ================ ==============================================
+架构 支持水平 限制因素
+============ ================ ==============================================
+``x86`` Maintained 只有 ``x86_64``
+============ ================ ==============================================
diff --git a/Documentation/translations/zh_CN/rust/index.rst b/Documentation/translations/zh_CN/rust/index.rst
index c5507ad488a1..b01f887e7167 100644
--- a/Documentation/translations/zh_CN/rust/index.rst
+++ b/Documentation/translations/zh_CN/rust/index.rst
@@ -18,10 +18,7 @@ Rust
quick-start
general-information
coding-guidelines
-
-TODOList:
-
-* arch-support
+ arch-support
.. only:: subproject and html
--
2.31.1
^ permalink raw reply related [flat|nested] 21+ messages in thread
* Re: [PATCH v2 2/5] docs/zh_CN: Add rust/quick-start Chinese translation
2022-10-18 13:04 ` [PATCH v2 2/5] docs/zh_CN: Add rust/quick-start " Yanteng Si
@ 2022-10-19 3:28 ` Alex Shi
2022-10-19 8:58 ` Wu XiangCheng
2022-10-24 23:25 ` Gary Guo
2 siblings, 0 replies; 21+ messages in thread
From: Alex Shi @ 2022-10-19 3:28 UTC (permalink / raw)
To: Yanteng Si
Cc: alexs, corbet, ojeda, boqun.feng, wedsonaf, gary, bjorn3_gh,
rust-for-linux, bobwxc, wu.xiangcheng, chenhuacai, jiaxun.yang,
linux-doc, siyanteng01
LGTM
Reviewed-by: Alex Shi <alexs@kernel.org>
On Tue, Oct 18, 2022 at 9:06 PM Yanteng Si <siyanteng@loongson.cn> wrote:
>
> Translate .../rust/quick-start.rst into Chinese.
>
> Signed-off-by: Yanteng Si <siyanteng@loongson.cn>
> ---
> .../translations/zh_CN/rust/index.rst | 2 +-
> .../translations/zh_CN/rust/quick-start.rst | 211 ++++++++++++++++++
> 2 files changed, 212 insertions(+), 1 deletion(-)
> create mode 100644 Documentation/translations/zh_CN/rust/quick-start.rst
>
> diff --git a/Documentation/translations/zh_CN/rust/index.rst b/Documentation/translations/zh_CN/rust/index.rst
> index fc6a074841bc..fe884d1da353 100644
> --- a/Documentation/translations/zh_CN/rust/index.rst
> +++ b/Documentation/translations/zh_CN/rust/index.rst
> @@ -15,10 +15,10 @@ Rust
> .. toctree::
> :maxdepth: 1
>
> + quick-start
>
> TODOList:
>
> -* quick-start
> * general-information
> * coding-guidelines
> * arch-support
> diff --git a/Documentation/translations/zh_CN/rust/quick-start.rst b/Documentation/translations/zh_CN/rust/quick-start.rst
> new file mode 100644
> index 000000000000..747873b1da6a
> --- /dev/null
> +++ b/Documentation/translations/zh_CN/rust/quick-start.rst
> @@ -0,0 +1,211 @@
> +.. SPDX-License-Identifier: GPL-2.0
> +.. include:: ../disclaimer-zh_CN.rst
> +
> +:Original: Documentation/rust/quick-start.rst
> +
> +:翻译:
> +
> + 司延腾 Yanteng Si <siyanteng@loongson.cn>
> +
> +
> +快速入门
> +========
> +
> +本文介绍了如何开始使用Rust进行内核开发。
> +
> +
> +构建依赖
> +--------
> +
> +本节描述了如何获取构建所需的工具。
> +
> +其中一些依赖也许可以从Linux发行版中获得,包名可能是 ``rustc`` , ``rust-src`` ,
> +``rust-bindgen`` 等。然而,在写这篇文章的时候,它们很可能还不够新,除非发行版跟踪最
> +新的版本。
> +
> +为了方便检查是否满足要求,可以使用以下目标::
> +
> + make LLVM=1 rustavailable
> +
> +这会触发与Kconfig用来确定是否应该启用 ``RUST_IS_AVAILABLE`` 相同的逻辑;不过它也
> +会列出未满足的条件。
> +
> +
> +rustc
> +*****
> +
> +需要一个特定版本的Rust编译器。较新的版本可能会也可能不会工作,因为就目前而言,内核依赖
> +于一些不稳定的Rust特性。
> +
> +如果使用的是 ``rustup`` ,请进入检出的源代码目录并运行::
> +
> + rustup override set $(scripts/min-tool-version.sh rustc)
> +
> +或者从以下网址获取一个独立的安装程序或安装 ``rustup`` :
> +
> + https://www.rust-lang.org
> +
> +
> +Rust标准库源代码
> +****************
> +
> +Rust标准库的源代码是必需的,因为构建系统会交叉编译 ``core`` 和 ``alloc`` 。
> +
> +如果正在使用 ``rustup`` ,请运行::
> +
> + rustup component add rust-src
> +
> +这些组件是按工具链安装的,因此以后升级Rust编译器版本需要重新添加组件。
> +
> +否则,如果使用独立的安装程序,可以将Rust仓库克隆到工具链的安装文件夹中::
> +
> + git clone --recurse-submodules \
> + --branch $(scripts/min-tool-version.sh rustc) \
> + https://github.com/rust-lang/rust \
> + $(rustc --print sysroot)/lib/rustlib/src/rust
> +
> +在这种情况下,以后升级Rust编译器版本需要手动更新这个克隆的仓库。
> +
> +
> +libclang
> +********
> +
> +``bindgen`` 使用 ``libclang`` (LLVM的一部分)来理解内核中的C代码,这意味着需要安
> +装LLVM;同在开启 ``CC=clang`` 或 ``LLVM=1`` 时编译内核一样。
> +
> +Linux发行版中可能会有合适的包,所以最好先检查一下。
> +
> +适用于部分系统和架构的二进制文件也可到以下网址下载:
> +
> + https://releases.llvm.org/download.html
> +
> +或者自行构建LLVM,这需要相当长的时间,但并不是一个复杂的过程:
> +
> + https://llvm.org/docs/GettingStarted.html#getting-the-source-code-and-building-llvm
> +
> +请参阅 Documentation/kbuild/llvm.rst 了解更多信息,以及获取预构建版本和发行包
> +的进一步方法。
> +
> +
> +bindgen
> +*******
> +
> +内核的C端绑定是在构建时使用 ``bindgen`` 工具生成的。这需要特定的版本。
> +
> +通过以下方式安装它(注意,这将从源码下载并构建该工具)::
> +
> + cargo install --locked --version $(scripts/min-tool-version.sh bindgen) bindgen
> +
> +
> +开发依赖
> +--------
> +
> +本节解释了如何获取开发所需的工具。也就是说,在构建内核时不需要这些工具。
> +
> +
> +rustfmt
> +*******
> +
> +``rustfmt`` 工具被用来自动格式化所有的Rust内核代码,包括生成的C绑定(详情请见
> +coding-guidelines.rst )。
> +
> +如果使用的是 ``rustup`` ,它的 ``默认`` 配置文件已经安装了这个工具,因此不需要做什么。
> +如果使用的是其他配置文件,可以手动安装该组件::
> +
> + rustup component add rustfmt
> +
> +独立的安装程序也带有 ``rustfmt`` 。
> +
> +
> +clippy
> +******
> +
> +``clippy`` 是一个Rust linter。运行它可以为Rust代码提供额外的警告。它可以通过向 ``make``
> +传递 ``CLIPPY=1`` 来运行(关于细节,详见 general-information.rst )。
> +
> +如果正在使用 ``rustup`` ,它的 ``默认`` 配置文件已经安装了这个工具,因此不需要做什么。
> +如果使用的是另一个配置文件,该组件可以被手动安装::
> +
> + rustup component add clippy
> +
> +独立的安装程序也带有 ``clippy`` 。
> +
> +
> +cargo
> +*****
> +
> +``cargo`` 是Rust的本地构建系统。目前需要它来运行测试,因为它被用来构建一个自定义的标准
> +库,其中包含了内核中自定义 ``alloc`` 所提供的设施。测试可以使用 ``rusttest`` Make 目标
> +来运行。
> +
> +如果使用的是 ``rustup`` ,所有的配置文件都已经安装了该工具,因此不需要再做什么。
> +
> +独立的安装程序也带有 ``cargo`` 。
> +
> +
> +rustdoc
> +*******
> +
> +``rustdoc`` 是Rust的文档工具。它为Rust代码生成漂亮的HTML文档(详情请见 general-information.rst )。
> +
> +``rustdoc`` 也被用来测试文档化的Rust代码中提供的例子(称为doctests或文档测试)。
> +``rusttest`` 是本功能的Make目标。
> +
> +如果使用的是 ``rustup`` ,所有的配置文件都已经安装了这个工具,因此不需要做什么。
> +
> +独立的安装程序也带有 ``rustdoc`` 。
> +
> +
> +rust-analyzer
> +*************
> +
> +`rust-analyzer <https://rust-analyzer.github.io/>`_ 语言服务器可以和许多编辑器
> +一起使用,以实现语法高亮、补全、转到定义和其他功能。
> +
> +``rust-analyzer`` 需要一个配置文件, ``rust-project.json``, 它可以由 ``rust-analyzer``
> +Make 目标生成。
> +
> +
> +配置
> +----
> +
> +Rust支持(CONFIG_RUST)需要在 ``General setup`` 菜单中启用。在其他要求得到满足的情
> +况下,该选项只有在找到合适的Rust工具链时才会显示(见上文)。相应的,这将使依赖Rust的其
> +他选项可见。
> +
> +之后,进入::
> +
> + Kernel hacking
> + -> Sample kernel code
> + -> Rust samples
> +
> +并启用一些内置或可加载的样例模块。
> +
> +
> +构建
> +----
> +
> +用完整的LLVM工具链构建内核是目前支持的最佳设置。即::
> +
> + make LLVM=1
> +
> +对于不支持完整LLVM工具链的架构,使用::
> +
> + make CC=clang
> +
> +使用GCC对某些配置也是可行的,但目前它是非常试验性的。
> +
> +
> +折腾
> +----
> +
> +要想深入了解,请看 ``samples/rust/`` 下的样例源代码、 ``rust/`` 下的Rust支持代码和
> +``Kernel hacking`` 下的 ``Rust hacking`` 菜单。
> +
> +如果使用的是GDB/Binutils,而Rust符号没有被拆分,原因是工具链还不支持Rust的新v0拆分方案。
> +有几个办法可以解决:
> +
> + - 安装一个较新的版本(GDB >= 10.2, Binutils >= 2.36)。
> +
> + - 一些版本的GDB(例如vanilla GDB 10.1)能够使用嵌入在调试信息(``CONFIG_DEBUG_INFO``)
> + 中的预先还原函数的名字。
> --
> 2.31.1
>
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v2 3/5] docs/zh_CN: Add rust/general-information Chinese translation
2022-10-18 13:04 ` [PATCH v2 3/5] docs/zh_CN: Add rust/general-information " Yanteng Si
@ 2022-10-19 3:29 ` Alex Shi
2022-10-19 8:58 ` Wu XiangCheng
2022-10-24 23:26 ` Gary Guo
2 siblings, 0 replies; 21+ messages in thread
From: Alex Shi @ 2022-10-19 3:29 UTC (permalink / raw)
To: Yanteng Si
Cc: alexs, corbet, ojeda, boqun.feng, wedsonaf, gary, bjorn3_gh,
rust-for-linux, bobwxc, wu.xiangcheng, chenhuacai, jiaxun.yang,
linux-doc, siyanteng01
Reviewed-by: Alex Shi <alexs@kernel.org>
On Tue, Oct 18, 2022 at 9:06 PM Yanteng Si <siyanteng@loongson.cn> wrote:
>
> Translate .../rust/general-information.rst into Chinese.
>
> Signed-off-by: Yanteng Si <siyanteng@loongson.cn>
> ---
> .../zh_CN/rust/general-information.rst | 75 +++++++++++++++++++
> .../translations/zh_CN/rust/index.rst | 2 +-
> 2 files changed, 76 insertions(+), 1 deletion(-)
> create mode 100644 Documentation/translations/zh_CN/rust/general-information.rst
>
> diff --git a/Documentation/translations/zh_CN/rust/general-information.rst b/Documentation/translations/zh_CN/rust/general-information.rst
> new file mode 100644
> index 000000000000..6b91dfe1834a
> --- /dev/null
> +++ b/Documentation/translations/zh_CN/rust/general-information.rst
> @@ -0,0 +1,75 @@
> +.. SPDX-License-Identifier: GPL-2.0
> +.. include:: ../disclaimer-zh_CN.rst
> +
> +:Original: Documentation/rust/general-information.rst
> +
> +:翻译:
> +
> + 司延腾 Yanteng Si <siyanteng@loongson.cn>
> +
> +
> +基本信息
> +========
> +
> +本文档包含了在内核中使用Rust支持时需要了解的有用信息。
> +
> +
> +代码文档
> +--------
> +
> +Rust内核代码使用其内置的文档生成器 ``rustdoc`` 进行记录。
> +
> +生成的HTML文档包括集成搜索、链接项(如类型、函数、常量)、源代码等。它们可以在以下地址阅读
> +(TODO:当在主线中时链接,与其他文档一起生成):
> +
> + http://kernel.org/
> +
> +这些文档也可以很容易地在本地生成和阅读。这相当快(与编译代码本身的顺序相同),而且不需要特
> +殊的工具或环境。这有一个额外的好处,那就是它们将根据所使用的特定内核配置进行定制。要生成它
> +们,请使用 ``rustdoc`` 目标,并使用编译时使用的相同调用,例如::
> +
> + make LLVM=1 rustdoc
> +
> +要在你的网络浏览器中本地阅读该文档,请运行如::
> +
> + xdg-open rust/doc/kernel/index.html
> +
> +要了解如何编写文档,请看 coding-guidelines.rst 。
> +
> +
> +额外的lints
> +-----------
> +
> +虽然 ``rustc`` 是一个非常有用的编译器,但一些额外的lints和分析可以通过 ``clippy``
> +(一个Rust linter)来实现。要启用它,请将CLIPPY=1传递到用于编译的同一调用中,例如::
> +
> + make LLVM=1 CLIPPY=1
> +
> +请注意,Clippy可能会改变代码生成,因此在构建产品内核时不应该启用它。
> +
> +抽象和绑定
> +----------
> +
> +抽象是用Rust代码包装来自C端的内核功能。
> +
> +为了使用来自C端的函数和类型,需要创建绑定。绑定是Rust对那些来自C端的函数和类型的声明。
> +
> +例如,人们可以在Rust中写一个 ``Mutex`` 抽象,它从C端包装一个 ``Mutex结构体`` ,并
> +通过绑定调用其函数。
> +
> +抽象并不能用于所有的内核内部API和概念,但随着时间的推移,我们打算扩大覆盖范围。“Leaf”
> +模块(例如,驱动程序)不应该直接使用C语言的绑定。相反,子系统应该根据需要提供尽可能安
> +全的抽象。
> +
> +
> +有条件的编译
> +------------
> +
> +Rust代码可以访问基于内核配置的条件性编译:
> +
> +.. code-block:: rust
> +
> + #[cfg(CONFIG_X)] // Enabled (`y` or `m`)
> + #[cfg(CONFIG_X="y")] // Enabled as a built-in (`y`)
> + #[cfg(CONFIG_X="m")] // Enabled as a module (`m`)
> + #[cfg(not(CONFIG_X))] // Disabled
> diff --git a/Documentation/translations/zh_CN/rust/index.rst b/Documentation/translations/zh_CN/rust/index.rst
> index fe884d1da353..c4d773a8a288 100644
> --- a/Documentation/translations/zh_CN/rust/index.rst
> +++ b/Documentation/translations/zh_CN/rust/index.rst
> @@ -16,10 +16,10 @@ Rust
> :maxdepth: 1
>
> quick-start
> + general-information
>
> TODOList:
>
> -* general-information
> * coding-guidelines
> * arch-support
>
> --
> 2.31.1
>
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v2 4/5] docs/zh_CN: Add rust/coding-guidelines Chinese translation
2022-10-18 13:07 ` [PATCH v2 4/5] docs/zh_CN: Add rust/coding-guidelines " Yanteng Si
@ 2022-10-19 3:30 ` Alex Shi
2022-10-19 8:59 ` Wu XiangCheng
2022-10-24 23:31 ` Gary Guo
2 siblings, 0 replies; 21+ messages in thread
From: Alex Shi @ 2022-10-19 3:30 UTC (permalink / raw)
To: Yanteng Si
Cc: alexs, corbet, ojeda, boqun.feng, wedsonaf, gary, bjorn3_gh,
rust-for-linux, bobwxc, wu.xiangcheng, chenhuacai, jiaxun.yang,
linux-doc, siyanteng01
Reviewed-by: Alex Shi <alexs@kernel.org>
On Tue, Oct 18, 2022 at 9:08 PM Yanteng Si <siyanteng@loongson.cn> wrote:
>
> Translate .../rust/coding-guidelines.rst into Chinese.
>
> Signed-off-by: Yanteng Si <siyanteng@loongson.cn>
> ---
> .../zh_CN/rust/coding-guidelines.rst | 192 ++++++++++++++++++
> .../translations/zh_CN/rust/index.rst | 2 +-
> 2 files changed, 193 insertions(+), 1 deletion(-)
> create mode 100644 Documentation/translations/zh_CN/rust/coding-guidelines.rst
>
> diff --git a/Documentation/translations/zh_CN/rust/coding-guidelines.rst b/Documentation/translations/zh_CN/rust/coding-guidelines.rst
> new file mode 100644
> index 000000000000..6c0bdbbc5a2a
> --- /dev/null
> +++ b/Documentation/translations/zh_CN/rust/coding-guidelines.rst
> @@ -0,0 +1,192 @@
> +.. SPDX-License-Identifier: GPL-2.0
> +.. include:: ../disclaimer-zh_CN.rst
> +
> +:Original: Documentation/rust/coding-guidelines.rst
> +
> +:翻译:
> +
> + 司延腾 Yanteng Si <siyanteng@loongson.cn>
> +
> +编码指南
> +========
> +
> +本文档描述了如何在内核中编写Rust代码。
> +
> +
> +风格和格式化
> +------------
> +
> +代码应该使用 ``rustfmt`` 进行格式化。这样一来,一个不时为内核做贡献的人就不需要再去学
> +习和记忆一个样式指南了。更重要的是,审阅者和维护者不需要再花时间指出风格问题,这样就可以
> +减少补丁落地所需的邮件往返。
> +
> +.. note:: ``rustfmt`` 不检查注释和文档的约定。因此,这些仍然需要照顾到。
> +
> +使用 ``rustfmt`` 的默认设置。这意味着遵循Rust的习惯性风格。例如,缩进时使用4个空格而
> +不是制表符。
> +
> +在输入、保存或提交时告知编辑器/IDE进行格式化是很方便的。然而,如果因为某些原因需要在某
> +个时候重新格式化整个内核Rust的源代码,可以运行以下程序::
> +
> + make LLVM=1 rustfmt
> +
> +也可以检查所有的东西是否都是格式化的(否则就打印一个差异),例如对于一个CI,用::
> +
> + make LLVM=1 rustfmtcheck
> +
> +像内核其他部分的 ``clang-format`` 一样, ``rustfmt`` 在单个文件上工作,并且不需要
> +内核配置。有时,它甚至可以与破碎的代码一起工作。
> +
> +
> +注释
> +----
> +
> +“普通”注释(即以 ``//`` 开头,而不是 ``///`` 或 ``//!`` 开头的代码文档)的写法与文
> +档注释相同,使用Markdown语法,尽管它们不会被渲染。这提高了一致性,简化了规则,并允许在
> +这两种注释之间更容易地移动内容。比如说:
> +
> +.. code-block:: rust
> +
> + // `object` is ready to be handled now.
> + f(object);
> +
> +此外,就像文档一样,注释在句子的开头要大写,并以句号结束(即使是单句)。这包括 ``// SAFETY:``,
> +``// TODO:`` 和其他“标记”的注释,例如:
> +
> +.. code-block:: rust
> +
> + // FIXME: The error should be handled properly.
> +
> +注释不应该被用于文档的目的:注释是为了实现细节,而不是为了用户。即使源文件的读者既是API
> +的实现者又是用户,这种区分也是有用的。事实上,有时同时使用注释和文档是很有用的。例如,用
> +于 ``TODO`` 列表或对文档本身的注释。对于后一种情况,注释可以插在中间;也就是说,离要注
> +释的文档行更近。对于其他情况,注释会写在文档之后,例如:
> +
> +.. code-block:: rust
> +
> + /// Returns a new [`Foo`].
> + ///
> + /// # Examples
> + ///
> + // TODO: Find a better example.
> + /// ```
> + /// let foo = f(42);
> + /// ```
> + // FIXME: Use fallible approach.
> + pub fn f(x: i32) -> Foo {
> + // ...
> + }
> +
> +一种特殊的注释是 ``// SAFETY:`` 注释。这些注释必须出现在每个 ``unsafe`` 块之前,它们
> +解释了为什么该块内的代码是正确/健全的,即为什么它在任何情况下都不会触发未定义行为,例如:
> +
> +.. code-block:: rust
> +
> + // SAFETY: `p` is valid by the safety requirements.
> + unsafe { *p = 0; }
> +
> +``// SAFETY:`` 注释不能与代码文档中的 ``# Safety`` 部分相混淆。 ``# Safety`` 部
> +分指定了(函数)调用者或(特性)实现者需要遵守的契约。
> +``// SAFETY:`` 注释显示了为什么一个(函数)调用者或(特性)实现者实际上尊重了
> +``# Safety`` 部分或语言参考中的前提条件。
> +
> +
> +代码文档
> +--------
> +
> +Rust内核代码不像C内核代码那样被记录下来(即通过kernel-doc)。取而代之的是用于记录Rust
> +代码的常用系统:rustdoc工具,它使用Markdown(一种轻量级的标记语言)。
> +
> +要学习Markdown,外面有很多指南。例如:
> +
> +https://commonmark.org/help/
> +
> +一个记录良好的Rust函数可能是这样的:
> +
> +.. code-block:: rust
> +
> + /// Returns the contained [`Some`] value, consuming the `self` value,
> + /// without checking that the value is not [`None`].
> + ///
> + /// # Safety
> + ///
> + /// Calling this method on [`None`] is *[undefined behavior]*.
> + ///
> + /// [undefined behavior]: https://doc.rust-lang.org/reference/behavior-considered-undefined.html
> + ///
> + /// # Examples
> + ///
> + /// ```
> + /// let x = Some("air");
> + /// assert_eq!(unsafe { x.unwrap_unchecked() }, "air");
> + /// ```
> + pub unsafe fn unwrap_unchecked(self) -> T {
> + match self {
> + Some(val) => val,
> +
> + // SAFETY: The safety contract must be upheld by the caller.
> + None => unsafe { hint::unreachable_unchecked() },
> + }
> + }
> +
> +这个例子展示了一些 ``rustdoc`` 的特性和内核中遵循的一些惯例:
> +
> + - 第一段必须是一个简单的句子,简要地描述被记录的项目的作用。进一步的解释必须放在额
> + 外的段落中。
> +
> + - 不安全的函数必须在 ``# Safety`` 部分记录其安全前提条件。
> +
> + - 虽然这里没有显示,但如果一个函数可能会恐慌,那么必须在 ``# Panics`` 部分描述发
> + 生这种情况的条件。
> +
> + 请注意,恐慌应该是非常少见的,只有在有充分理由的情况下才会使用。几乎在所有的情况下,
> + 都应该使用一个可失败的方法,通常是返回一个 ``Result``。
> +
> + - 如果提供使用实例对读者有帮助的话,必须写在一个叫做``# Examples``的部分。
> +
> + - Rust项目(函数、类型、常量……)必须有适当的链接(``rustdoc`` 会自动创建一个
> + 链接)。
> +
> + - 任何 ``unsafe`` 的代码块都必须在前面加上一个 ``// SAFETY:`` 的注释,描述里面
> + 的代码为什么是正确的。
> +
> + 虽然有时原因可能看起来微不足道,但写这些注释不仅是记录已经考虑到的问题的好方法,
> + 最重要的是,它提供了一种知道没有额外隐含约束的方法。
> +
> +要了解更多关于如何编写Rust和拓展功能的文档,请看看 ``rustdoc`` 这本书,网址是:
> +
> + https://doc.rust-lang.org/rustdoc/how-to-write-documentation.html
> +
> +
> +命名
> +----
> +
> +Rust内核代码遵循通常的Rust命名空间:
> +
> + https://rust-lang.github.io/api-guidelines/naming.html
> +
> +当现有的C语言概念(如宏、函数、对象......)被包装成Rust抽象时,应该使用尽可能接近C语
> +言的名称,以避免混淆,并在C语言和Rust语言之间来回切换时提高可读性。例如,C语言中的
> +``pr_info`` 这样的宏在Rust中的命名是一样的。
> +
> +说到这里,应该调整大小写以遵循Rust的命名惯例,模块和类型引入的命名间隔不应该在项目名称
> +中重复。例如,在包装常量时,如:
> +
> +.. code-block:: c
> +
> + #define GPIO_LINE_DIRECTION_IN 0
> + #define GPIO_LINE_DIRECTION_OUT 1
> +
> +在Rust中的等价物可能是这样的(忽略文档)。:
> +
> +.. code-block:: rust
> +
> + pub mod gpio {
> + pub enum LineDirection {
> + In = bindings::GPIO_LINE_DIRECTION_IN as _,
> + Out = bindings::GPIO_LINE_DIRECTION_OUT as _,
> + }
> + }
> +
> +也就是说, ``GPIO_LINE_DIRECTION_IN`` 的等价物将被称为 ``gpio::LineDirection::In`` 。
> +特别是,它不应该被命名为 ``gpio::gpio_line_direction::GPIO_LINE_DIRECTION_IN`` 。
> diff --git a/Documentation/translations/zh_CN/rust/index.rst b/Documentation/translations/zh_CN/rust/index.rst
> index c4d773a8a288..c5507ad488a1 100644
> --- a/Documentation/translations/zh_CN/rust/index.rst
> +++ b/Documentation/translations/zh_CN/rust/index.rst
> @@ -17,10 +17,10 @@ Rust
>
> quick-start
> general-information
> + coding-guidelines
>
> TODOList:
>
> -* coding-guidelines
> * arch-support
>
> .. only:: subproject and html
> --
> 2.31.1
>
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v2 5/5] docs/zh_CN: Add rust/arch-support Chinese translation
2022-10-18 13:07 ` [PATCH v2 5/5] docs/zh_CN: Add rust/arch-support " Yanteng Si
@ 2022-10-19 3:30 ` Alex Shi
2022-10-19 8:59 ` Wu XiangCheng
2022-10-24 23:32 ` Gary Guo
2 siblings, 0 replies; 21+ messages in thread
From: Alex Shi @ 2022-10-19 3:30 UTC (permalink / raw)
To: Yanteng Si
Cc: alexs, corbet, ojeda, boqun.feng, wedsonaf, gary, bjorn3_gh,
rust-for-linux, bobwxc, wu.xiangcheng, chenhuacai, jiaxun.yang,
linux-doc, siyanteng01
Reviewed-by: Alex Shi <alexs@kernel.org>
On Tue, Oct 18, 2022 at 9:09 PM Yanteng Si <siyanteng@loongson.cn> wrote:
>
> Translate .../rust/arch-support.rst into Chinese.
>
> Signed-off-by: Yanteng Si <siyanteng@loongson.cn>
> ---
> .../translations/zh_CN/rust/arch-support.rst | 23 +++++++++++++++++++
> .../translations/zh_CN/rust/index.rst | 5 +---
> 2 files changed, 24 insertions(+), 4 deletions(-)
> create mode 100644 Documentation/translations/zh_CN/rust/arch-support.rst
>
> diff --git a/Documentation/translations/zh_CN/rust/arch-support.rst b/Documentation/translations/zh_CN/rust/arch-support.rst
> new file mode 100644
> index 000000000000..afbd02afec45
> --- /dev/null
> +++ b/Documentation/translations/zh_CN/rust/arch-support.rst
> @@ -0,0 +1,23 @@
> +.. SPDX-License-Identifier: GPL-2.0
> +.. include:: ../disclaimer-zh_CN.rst
> +
> +:Original: Documentation/rust/arch-support.rst
> +
> +:翻译:
> +
> + 司延腾 Yanteng Si <siyanteng@loongson.cn>
> +
> +架构支持
> +========
> +
> +目前,Rust编译器(``rustc``)使用LLVM进行代码生成,这限制了可以支持的目标架构。此外,对
> +使用LLVM/Clang构建内核的支持也有所不同(请参见 Documentation/kbuild/llvm.rst )。这
> +种支持对于使用 ``libclang`` 的 ``bindgen`` 来说是必需的。
> +
> +下面是目前可以工作的架构的一般总结。支持程度与 ``MAINTAINERS`` 文件中的``S`` 值相对应:
> +
> +============ ================ ==============================================
> +架构 支持水平 限制因素
> +============ ================ ==============================================
> +``x86`` Maintained 只有 ``x86_64``
> +============ ================ ==============================================
> diff --git a/Documentation/translations/zh_CN/rust/index.rst b/Documentation/translations/zh_CN/rust/index.rst
> index c5507ad488a1..b01f887e7167 100644
> --- a/Documentation/translations/zh_CN/rust/index.rst
> +++ b/Documentation/translations/zh_CN/rust/index.rst
> @@ -18,10 +18,7 @@ Rust
> quick-start
> general-information
> coding-guidelines
> -
> -TODOList:
> -
> -* arch-support
> + arch-support
>
> .. only:: subproject and html
>
> --
> 2.31.1
>
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v2 1/5] docs/zh_CN: Add rust/index Chinese translation
2022-10-18 13:04 ` [PATCH v2 1/5] docs/zh_CN: Add rust/index " Yanteng Si
@ 2022-10-19 8:56 ` Wu XiangCheng
2022-10-24 23:13 ` Gary Guo
1 sibling, 0 replies; 21+ messages in thread
From: Wu XiangCheng @ 2022-10-19 8:56 UTC (permalink / raw)
To: Yanteng Si
Cc: alexs, seakeel, corbet, ojeda, boqun.feng, wedsonaf, gary,
bjorn3_gh, rust-for-linux, bobwxc, chenhuacai, jiaxun.yang,
linux-doc, siyanteng01
2022-10-18 (二) 21:04:21 +0800 Yanteng Si 曰:
> Translate .../rust/index.rst into Chinese.
>
> Signed-off-by: Yanteng Si <siyanteng@loongson.cn>
Reviewed-by: Wu XiangCheng <bobwxc@email.cn>
> ---
> Documentation/translations/zh_CN/index.rst | 1 +
> .../translations/zh_CN/rust/index.rst | 31 +++++++++++++++++++
> 2 files changed, 32 insertions(+)
> create mode 100644 Documentation/translations/zh_CN/rust/index.rst
--
Wu XiangCheng 0x32684A40BCA7AEA7
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v2 2/5] docs/zh_CN: Add rust/quick-start Chinese translation
2022-10-18 13:04 ` [PATCH v2 2/5] docs/zh_CN: Add rust/quick-start " Yanteng Si
2022-10-19 3:28 ` Alex Shi
@ 2022-10-19 8:58 ` Wu XiangCheng
2022-10-24 23:25 ` Gary Guo
2 siblings, 0 replies; 21+ messages in thread
From: Wu XiangCheng @ 2022-10-19 8:58 UTC (permalink / raw)
To: Yanteng Si
Cc: alexs, seakeel, corbet, ojeda, boqun.feng, wedsonaf, gary,
bjorn3_gh, rust-for-linux, bobwxc, chenhuacai, jiaxun.yang,
linux-doc, siyanteng01
2022-10-18 (二) 21:04:22 +0800 Yanteng Si 曰:
> Translate .../rust/quick-start.rst into Chinese.
>
> Signed-off-by: Yanteng Si <siyanteng@loongson.cn>
Reviewed-by: Wu XiangCheng <bobwxc@email.cn>
> ---
> .../translations/zh_CN/rust/index.rst | 2 +-
> .../translations/zh_CN/rust/quick-start.rst | 211 ++++++++++++++++++
> 2 files changed, 212 insertions(+), 1 deletion(-)
> create mode 100644 Documentation/translations/zh_CN/rust/quick-start.rst
--
Wu XiangCheng 0x32684A40BCA7AEA7
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v2 3/5] docs/zh_CN: Add rust/general-information Chinese translation
2022-10-18 13:04 ` [PATCH v2 3/5] docs/zh_CN: Add rust/general-information " Yanteng Si
2022-10-19 3:29 ` Alex Shi
@ 2022-10-19 8:58 ` Wu XiangCheng
2022-10-24 23:26 ` Gary Guo
2 siblings, 0 replies; 21+ messages in thread
From: Wu XiangCheng @ 2022-10-19 8:58 UTC (permalink / raw)
To: Yanteng Si
Cc: alexs, seakeel, corbet, ojeda, boqun.feng, wedsonaf, gary,
bjorn3_gh, rust-for-linux, bobwxc, chenhuacai, jiaxun.yang,
linux-doc, siyanteng01
2022-10-18 (二) 21:04:23 +0800 Yanteng Si 曰:
> Translate .../rust/general-information.rst into Chinese.
>
> Signed-off-by: Yanteng Si <siyanteng@loongson.cn>
Reviewed-by: Wu XiangCheng <bobwxc@email.cn>
> ---
> .../zh_CN/rust/general-information.rst | 75 +++++++++++++++++++
> .../translations/zh_CN/rust/index.rst | 2 +-
> 2 files changed, 76 insertions(+), 1 deletion(-)
> create mode 100644 Documentation/translations/zh_CN/rust/general-information.rst
--
Wu XiangCheng 0x32684A40BCA7AEA7
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v2 4/5] docs/zh_CN: Add rust/coding-guidelines Chinese translation
2022-10-18 13:07 ` [PATCH v2 4/5] docs/zh_CN: Add rust/coding-guidelines " Yanteng Si
2022-10-19 3:30 ` Alex Shi
@ 2022-10-19 8:59 ` Wu XiangCheng
2022-10-24 23:31 ` Gary Guo
2 siblings, 0 replies; 21+ messages in thread
From: Wu XiangCheng @ 2022-10-19 8:59 UTC (permalink / raw)
To: Yanteng Si
Cc: alexs, seakeel, corbet, ojeda, boqun.feng, wedsonaf, gary,
bjorn3_gh, rust-for-linux, bobwxc, chenhuacai, jiaxun.yang,
linux-doc, siyanteng01
2022-10-18 (二) 21:07:00 +0800 Yanteng Si 曰:
> Translate .../rust/coding-guidelines.rst into Chinese.
>
> Signed-off-by: Yanteng Si <siyanteng@loongson.cn>
Reviewed-by: Wu XiangCheng <bobwxc@email.cn>
> ---
> .../zh_CN/rust/coding-guidelines.rst | 192 ++++++++++++++++++
> .../translations/zh_CN/rust/index.rst | 2 +-
> 2 files changed, 193 insertions(+), 1 deletion(-)
> create mode 100644 Documentation/translations/zh_CN/rust/coding-guidelines.rst
--
Wu XiangCheng 0x32684A40BCA7AEA7
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v2 5/5] docs/zh_CN: Add rust/arch-support Chinese translation
2022-10-18 13:07 ` [PATCH v2 5/5] docs/zh_CN: Add rust/arch-support " Yanteng Si
2022-10-19 3:30 ` Alex Shi
@ 2022-10-19 8:59 ` Wu XiangCheng
2022-10-24 23:32 ` Gary Guo
2 siblings, 0 replies; 21+ messages in thread
From: Wu XiangCheng @ 2022-10-19 8:59 UTC (permalink / raw)
To: Yanteng Si
Cc: alexs, seakeel, corbet, ojeda, boqun.feng, wedsonaf, gary,
bjorn3_gh, rust-for-linux, bobwxc, chenhuacai, jiaxun.yang,
linux-doc, siyanteng01
2022-10-18 (二) 21:07:19 +0800 Yanteng Si 曰:
> Translate .../rust/arch-support.rst into Chinese.
>
> Signed-off-by: Yanteng Si <siyanteng@loongson.cn>
Reviewed-by: Wu XiangCheng <bobwxc@email.cn>
> ---
> .../translations/zh_CN/rust/arch-support.rst | 23 +++++++++++++++++++
> .../translations/zh_CN/rust/index.rst | 5 +---
> 2 files changed, 24 insertions(+), 4 deletions(-)
> create mode 100644 Documentation/translations/zh_CN/rust/arch-support.rst
--
Wu XiangCheng 0x32684A40BCA7AEA7
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v2 1/5] docs/zh_CN: Add rust/index Chinese translation
2022-10-18 13:04 ` [PATCH v2 1/5] docs/zh_CN: Add rust/index " Yanteng Si
2022-10-19 8:56 ` Wu XiangCheng
@ 2022-10-24 23:13 ` Gary Guo
1 sibling, 0 replies; 21+ messages in thread
From: Gary Guo @ 2022-10-24 23:13 UTC (permalink / raw)
To: Yanteng Si
Cc: alexs, seakeel, corbet, ojeda, boqun.feng, wedsonaf, bjorn3_gh,
rust-for-linux, bobwxc, wu.xiangcheng, chenhuacai, jiaxun.yang,
linux-doc, siyanteng01
On Tue, 18 Oct 2022 21:04:21 +0800
Yanteng Si <siyanteng@loongson.cn> wrote:
> Translate .../rust/index.rst into Chinese.
>
> Signed-off-by: Yanteng Si <siyanteng@loongson.cn>
Reviewed-by: Gary Guo <gary@garyguo.net>
> ---
> Documentation/translations/zh_CN/index.rst | 1 +
> .../translations/zh_CN/rust/index.rst | 31
> +++++++++++++++++++ 2 files changed, 32 insertions(+)
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v2 2/5] docs/zh_CN: Add rust/quick-start Chinese translation
2022-10-18 13:04 ` [PATCH v2 2/5] docs/zh_CN: Add rust/quick-start " Yanteng Si
2022-10-19 3:28 ` Alex Shi
2022-10-19 8:58 ` Wu XiangCheng
@ 2022-10-24 23:25 ` Gary Guo
2022-10-26 1:58 ` YanTeng Si
2 siblings, 1 reply; 21+ messages in thread
From: Gary Guo @ 2022-10-24 23:25 UTC (permalink / raw)
To: Yanteng Si
Cc: alexs, seakeel, corbet, ojeda, boqun.feng, wedsonaf, bjorn3_gh,
rust-for-linux, bobwxc, wu.xiangcheng, chenhuacai, jiaxun.yang,
linux-doc, siyanteng01
On Tue, 18 Oct 2022 21:04:22 +0800
Yanteng Si <siyanteng@loongson.cn> wrote:
> +这会触发与Kconfig用来确定是否应该启用 ``RUST_IS_AVAILABLE`` 相同的逻辑;不过它也
> +会列出未满足的条件。
Would "不过,如果Kconfig认为不该启用,它会列出未满足的条件。" be better?
> +折腾
> +----
> +
> +要想深入了解,请看 ``samples/rust/`` 下的样例源代码、 ``rust/`` 下的Rust支持代码和
> +``Kernel hacking`` 下的 ``Rust hacking`` 菜单。
> +
> +如果使用的是GDB/Binutils,而Rust符号没有被拆分,原因是工具链还不支持Rust的新v0拆分方案。
> +有几个办法可以解决:
I am not sure how to translate mangle/demangling in Chinese, but "拆分"
definitely sounds awkward.
> +
> + - 安装一个较新的版本(GDB >= 10.2, Binutils >= 2.36)。
> +
> + - 一些版本的GDB(例如vanilla GDB 10.1)能够使用嵌入在调试信息(``CONFIG_DEBUG_INFO``)
> + 中的预先还原函数的名字。
Demangle has been translated to "还原" here while it's "拆分" above,
which is inconsistent.
Best,
Gary
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v2 3/5] docs/zh_CN: Add rust/general-information Chinese translation
2022-10-18 13:04 ` [PATCH v2 3/5] docs/zh_CN: Add rust/general-information " Yanteng Si
2022-10-19 3:29 ` Alex Shi
2022-10-19 8:58 ` Wu XiangCheng
@ 2022-10-24 23:26 ` Gary Guo
2 siblings, 0 replies; 21+ messages in thread
From: Gary Guo @ 2022-10-24 23:26 UTC (permalink / raw)
To: Yanteng Si
Cc: alexs, seakeel, corbet, ojeda, boqun.feng, wedsonaf, bjorn3_gh,
rust-for-linux, bobwxc, wu.xiangcheng, chenhuacai, jiaxun.yang,
linux-doc, siyanteng01
On Tue, 18 Oct 2022 21:04:23 +0800
Yanteng Si <siyanteng@loongson.cn> wrote:
> Translate .../rust/general-information.rst into Chinese.
>
> Signed-off-by: Yanteng Si <siyanteng@loongson.cn>
Reviewed-by: Gary Guo <gary@garyguo.net>
> ---
> .../zh_CN/rust/general-information.rst | 75 +++++++++++++++++++
> .../translations/zh_CN/rust/index.rst | 2 +-
> 2 files changed, 76 insertions(+), 1 deletion(-)
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v2 4/5] docs/zh_CN: Add rust/coding-guidelines Chinese translation
2022-10-18 13:07 ` [PATCH v2 4/5] docs/zh_CN: Add rust/coding-guidelines " Yanteng Si
2022-10-19 3:30 ` Alex Shi
2022-10-19 8:59 ` Wu XiangCheng
@ 2022-10-24 23:31 ` Gary Guo
2 siblings, 0 replies; 21+ messages in thread
From: Gary Guo @ 2022-10-24 23:31 UTC (permalink / raw)
To: Yanteng Si
Cc: alexs, seakeel, corbet, ojeda, boqun.feng, wedsonaf, bjorn3_gh,
rust-for-linux, bobwxc, wu.xiangcheng, chenhuacai, jiaxun.yang,
linux-doc, siyanteng01
On Tue, 18 Oct 2022 21:07:00 +0800
Yanteng Si <siyanteng@loongson.cn> wrote:
> Translate .../rust/coding-guidelines.rst into Chinese.
>
> Signed-off-by: Yanteng Si <siyanteng@loongson.cn>
Reviewed-by: Gary Guo <gary@garyguo.net>
> ---
> .../zh_CN/rust/coding-guidelines.rst | 192 ++++++++++++++++++
> .../translations/zh_CN/rust/index.rst | 2 +-
> 2 files changed, 193 insertions(+), 1 deletion(-)
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v2 5/5] docs/zh_CN: Add rust/arch-support Chinese translation
2022-10-18 13:07 ` [PATCH v2 5/5] docs/zh_CN: Add rust/arch-support " Yanteng Si
2022-10-19 3:30 ` Alex Shi
2022-10-19 8:59 ` Wu XiangCheng
@ 2022-10-24 23:32 ` Gary Guo
2 siblings, 0 replies; 21+ messages in thread
From: Gary Guo @ 2022-10-24 23:32 UTC (permalink / raw)
To: Yanteng Si
Cc: alexs, seakeel, corbet, ojeda, boqun.feng, wedsonaf, bjorn3_gh,
rust-for-linux, bobwxc, wu.xiangcheng, chenhuacai, jiaxun.yang,
linux-doc, siyanteng01
On Tue, 18 Oct 2022 21:07:19 +0800
Yanteng Si <siyanteng@loongson.cn> wrote:
> Translate .../rust/arch-support.rst into Chinese.
>
> Signed-off-by: Yanteng Si <siyanteng@loongson.cn>
Reviewed-by: Gary Guo <gary@garyguo.net>
> ---
> .../translations/zh_CN/rust/arch-support.rst | 23 +++++++++++++++++++
> .../translations/zh_CN/rust/index.rst | 5 +---
> 2 files changed, 24 insertions(+), 4 deletions(-)
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v2 2/5] docs/zh_CN: Add rust/quick-start Chinese translation
2022-10-24 23:25 ` Gary Guo
@ 2022-10-26 1:58 ` YanTeng Si
0 siblings, 0 replies; 21+ messages in thread
From: YanTeng Si @ 2022-10-26 1:58 UTC (permalink / raw)
To: Gary Guo
Cc: alexs, seakeel, corbet, ojeda, boqun.feng, wedsonaf, bjorn3_gh,
rust-for-linux, bobwxc, wu.xiangcheng, chenhuacai, jiaxun.yang,
linux-doc, siyanteng01
在 2022/10/25 7:25, Gary Guo 写道:
> On Tue, 18 Oct 2022 21:04:22 +0800
> Yanteng Si <siyanteng@loongson.cn> wrote:
>
>> +这会触发与Kconfig用来确定是否应该启用 ``RUST_IS_AVAILABLE`` 相同的逻辑;不过它也
>> +会列出未满足的条件。
> Would "不过,如果Kconfig认为不该启用,它会列出未满足的条件。" be better?
Great!
>
>> +折腾
>> +----
>> +
>> +要想深入了解,请看 ``samples/rust/`` 下的样例源代码、 ``rust/`` 下的Rust支持代码和
>> +``Kernel hacking`` 下的 ``Rust hacking`` 菜单。
>> +
>> +如果使用的是GDB/Binutils,而Rust符号没有被拆分,原因是工具链还不支持Rust的新v0拆分方案。
>> +有几个办法可以解决:
> I am not sure how to translate mangle/demangling in Chinese, but "拆分"
> definitely sounds awkward.
Hmmm. let's use mangle/demangle?
>> +
>> + - 安装一个较新的版本(GDB >= 10.2, Binutils >= 2.36)。
>> +
>> + - 一些版本的GDB(例如vanilla GDB 10.1)能够使用嵌入在调试信息(``CONFIG_DEBUG_INFO``)
>> + 中的预先还原函数的名字。
> Demangle has been translated to "还原" here while it's "拆分" above,
> which is inconsistent.
ditto.
Thanks,
Yanteng
> Best,
> Gary
^ permalink raw reply [flat|nested] 21+ messages in thread
end of thread, other threads:[~2022-10-26 1:59 UTC | newest]
Thread overview: 21+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-10-18 13:04 [PATCH v2 0/5] docs/zh_CN: Add rust Chinese translation Yanteng Si
2022-10-18 13:04 ` [PATCH v2 1/5] docs/zh_CN: Add rust/index " Yanteng Si
2022-10-19 8:56 ` Wu XiangCheng
2022-10-24 23:13 ` Gary Guo
2022-10-18 13:04 ` [PATCH v2 2/5] docs/zh_CN: Add rust/quick-start " Yanteng Si
2022-10-19 3:28 ` Alex Shi
2022-10-19 8:58 ` Wu XiangCheng
2022-10-24 23:25 ` Gary Guo
2022-10-26 1:58 ` YanTeng Si
2022-10-18 13:04 ` [PATCH v2 3/5] docs/zh_CN: Add rust/general-information " Yanteng Si
2022-10-19 3:29 ` Alex Shi
2022-10-19 8:58 ` Wu XiangCheng
2022-10-24 23:26 ` Gary Guo
2022-10-18 13:07 ` [PATCH v2 4/5] docs/zh_CN: Add rust/coding-guidelines " Yanteng Si
2022-10-19 3:30 ` Alex Shi
2022-10-19 8:59 ` Wu XiangCheng
2022-10-24 23:31 ` Gary Guo
2022-10-18 13:07 ` [PATCH v2 5/5] docs/zh_CN: Add rust/arch-support " Yanteng Si
2022-10-19 3:30 ` Alex Shi
2022-10-19 8:59 ` Wu XiangCheng
2022-10-24 23:32 ` Gary Guo
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).