← Documents Documentation/translations/it_IT/process/programming-language.rst GitHub 원문 ↗

Linux 6.18.37 · Translations

Programming language

Linux kernel의 C11 GNU dialect, compiler attribute 관례, 실험적인 Rust 지원과 안정화 목표를 설명합니다.

Source pathDocumentation/translations/it_IT/process/programming-language.rst
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.

1. 요약·해설

원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.

요약·해설

programming-language.rst:1-68

Kernel은 ISO C11의 GNU dialect인 `-std=gnu11`을 기준으로 gcc와 clang을 지원하며, GNU language extension을 일상적으로 사용합니다. Attribute는 syntax를 크게 바꾸지 않고 variable·function·type에 구현 정의 semantics를 부여합니다.

Kernel은 `__pure` 같은 pseudo-keyword로 지원 가능한 attribute를 식별하고 표현을 줄입니다. Rust는 `CONFIG_RUST`, `rustc`, `--edition=2021` 아래에서 실험적으로 지원되며, 장기 목표는 unstable feature 의존성을 없애는 것입니다.

2. 영어 원문 전체

번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.

원문 전체 펼치기
1 .. include:: ../disclaimer-ita.rst
2
3 :Original: :ref:`Documentation/process/programming-language.rst <programming_language>`
4 :Translator: Federico Vaga <[email protected]>
5
6 .. _it_programming_language:
7
8 Linguaggio di programmazione
9 ============================
10
11 Il kernel è scritto nel linguaggio di programmazione C [it-c-language]_.
12 Più precisamente, il kernel viene compilato con ``gcc`` [it-gcc]_ usando
13 l'opzione ``-std=gnu11`` [it-gcc-c-dialect-options]_: il dialetto GNU
14 dello standard ISO C11.
15 Linux supporta anche ``clang`` [it-clang]_, leggete la documentazione
16 :ref:`Building Linux with Clang/LLVM <kbuild_llvm>`.
17
18 Questo dialetto contiene diverse estensioni al linguaggio [it-gnu-extensions]_,
19 e molte di queste vengono usate sistematicamente dal kernel.
20
21 Attributi
22 ---------
23
24 Una delle estensioni più comuni e usate nel kernel sono gli attributi
25 [it-gcc-attribute-syntax]_. Gli attributi permettono di aggiungere una semantica,
26 definita dell'implementazione, alle entità del linguaggio (come le variabili,
27 le funzioni o i tipi) senza dover fare importanti modifiche sintattiche al
28 linguaggio stesso (come l'aggiunta di nuove parole chiave) [it-n2049]_.
29
30 In alcuni casi, gli attributi sono opzionali (ovvero un compilatore che non
31 dovesse supportarli dovrebbe produrre comunque codice corretto, anche se
32 più lento o che non esegue controlli aggiuntivi durante la compilazione).
33
34 Il kernel definisce alcune pseudo parole chiave (per esempio ``__pure``)
35 in alternativa alla sintassi GNU per gli attributi (per esempio
36 ``__attribute__((__pure__))``) allo scopo di mostrare quali funzionalità si
37 possono usare e/o per accorciare il codice.
38
39 Per maggiori informazioni consultate il file d'intestazione
40 ``include/linux/compiler_attributes.h``.
41
42 Rust
43 ----
44
45 Il kernel supporta sperimentalmente il linguaggio di programmazione Rust
46 [it-rust-language]_ abilitando l'opzione di configurazione ``CONFIG_RUST``. Il
47 codice verrà compilato usando ``rustc`` [it-rustc]_ con l'opzione
48 ``--edition=2021`` [it-rust-editions]_. Le edizioni Rust sono un modo per
49 introdurre piccole modifiche senza compatibilità all'indietro._
50
51 In aggiunta, nel kernel vengono utilizzate alcune funzionalità considerate
52 instabili [it-rust-unstable-features]_. Queste funzionalità potrebbero cambiare
53 in futuro, dunque è un'obiettivo importante è quello di far uso solo di
54 funzionalità stabili.
55
56 Per maggiori informazioni fate riferimento a Documentation/rust/index.rst .
57
58 .. [it-c-language] http://www.open-std.org/jtc1/sc22/wg14/www/standards
59 .. [it-gcc] https://gcc.gnu.org
60 .. [it-clang] https://clang.llvm.org
61 .. [it-gcc-c-dialect-options] https://gcc.gnu.org/onlinedocs/gcc/C-Dialect-Options.html
62 .. [it-gnu-extensions] https://gcc.gnu.org/onlinedocs/gcc/C-Extensions.html
63 .. [it-gcc-attribute-syntax] https://gcc.gnu.org/onlinedocs/gcc/Attribute-Syntax.html
64 .. [it-n2049] http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2049.pdf
65 .. [it-rust-language] https://www.rust-lang.org
66 .. [it-rustc] https://doc.rust-lang.org/rustc/
67 .. [it-rust-editions] https://doc.rust-lang.org/edition-guide/editions/
68 .. [it-rust-unstable-features] https://github.com/Rust-for-Linux/linux/issues/2
69

3. 한국어 전문 번역

영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.

C programming language와 compiler

1-20

Kernel은 C programming language로 작성된다. 더 정확히는 일반적으로 gcc에서 -std=gnu11을 사용해 compile한다. 이는 ISO C11의 GNU dialect다. clang도 지원하며 자세한 내용은 Building Linux with Clang/LLVM 문서를 참조한다.

이 dialect에는 여러 GNU language extension이 포함되어 있으며, kernel은 그중 많은 기능을 일상적으로 사용한다.

.. include:: ../disclaimer-ita.rst

:Original: :ref:`Documentation/process/programming-language.rst <programming_language>`
:Translator: Federico Vaga <[email protected]>

.. _it_programming_language:

Linguaggio di programmazione
============================

Il kernel è scritto nel linguaggio di programmazione C [it-c-language]_.
Più precisamente, il kernel viene compilato con ``gcc`` [it-gcc]_ usando
l'opzione ``-std=gnu11`` [it-gcc-c-dialect-options]_: il dialetto GNU
dello standard ISO C11.
Linux supporta anche ``clang`` [it-clang]_, leggete la documentazione
:ref:`Building Linux with Clang/LLVM <kbuild_llvm>`.

Questo dialetto contiene diverse estensioni al linguaggio [it-gnu-extensions]_,
e molte di queste vengono usate sistematicamente dal kernel.

GNU attribute와 pseudo-keyword

21-41

Kernel 전반에서 흔히 사용하는 extension 가운데 하나가 attribute다. Attribute를 사용하면 새 keyword를 추가하는 것처럼 language syntax를 크게 바꾸지 않고도 variable, function, type 같은 language entity에 implementation-defined semantics를 부여할 수 있다.

일부 attribute는 선택 사항이다. Compiler가 이를 지원하지 않더라도 더 느리거나 compile-time check와 diagnostic이 줄어들 수는 있지만, 올바른 code를 만들어야 한다.

Kernel은 GNU attribute syntax를 직접 사용하는 대신 __pure 같은 pseudo-keyword를 정의한다. 이를 통해 사용할 수 있는 attribute를 feature detection하고 code를 더 짧게 쓸 수 있다. 자세한 내용은 include/linux/compiler_attributes.h를 참조한다.

Attributi
---------

Una delle estensioni più comuni e usate nel kernel sono gli attributi
[it-gcc-attribute-syntax]_. Gli attributi permettono di aggiungere una semantica,
definita dell'implementazione, alle entità del linguaggio (come le variabili,
le funzioni o i tipi) senza dover fare importanti modifiche sintattiche al
linguaggio stesso (come l'aggiunta di nuove parole chiave) [it-n2049]_.

In alcuni casi, gli attributi sono opzionali (ovvero un compilatore che non
dovesse supportarli dovrebbe produrre comunque codice corretto, anche se
più lento o che non esegue controlli aggiuntivi durante la compilazione).

Il kernel definisce alcune pseudo parole chiave (per esempio ``__pure``)
in alternativa alla sintassi GNU per gli attributi (per esempio
``__attribute__((__pure__))``) allo scopo di mostrare quali funzionalità si
possono usare e/o per accorciare il codice.

Per maggiori informazioni consultate il file d'intestazione
``include/linux/compiler_attributes.h``.

Rust support와 reference

42-68

Kernel은 CONFIG_RUST 아래에서 Rust programming language를 실험적으로 지원한다. rustc와 --edition=2021을 사용해 compile한다. Edition은 backward compatibility가 없는 작은 language 변경을 도입하는 방법이다.

Kernel은 일부 unstable feature도 사용한다. Unstable feature는 앞으로 변경될 수 있으므로 stable feature만 사용하는 단계에 도달하는 것이 중요한 목표다. 자세한 내용은 Documentation/rust/index.rst를 참조한다.

C 표준, GCC, Clang, GNU extension과 attribute syntax, N2049, Rust, rustc, Rust edition 및 Rust-for-Linux unstable feature의 원문 reference URL은 영어 원문의 각 footnote에 보존되어 있다.

Rust
----

Il kernel supporta sperimentalmente il linguaggio di programmazione Rust
[it-rust-language]_ abilitando l'opzione di configurazione ``CONFIG_RUST``. Il
codice verrà compilato usando ``rustc`` [it-rustc]_ con l'opzione
``--edition=2021`` [it-rust-editions]_. Le edizioni Rust sono un modo per
introdurre piccole modifiche senza compatibilità all'indietro._

In aggiunta, nel kernel vengono utilizzate alcune funzionalità considerate
instabili [it-rust-unstable-features]_. Queste funzionalità potrebbero cambiare
in futuro, dunque è un'obiettivo importante è quello di far uso solo di
funzionalità stabili.

Per maggiori informazioni fate riferimento a Documentation/rust/index.rst .

.. [it-c-language] http://www.open-std.org/jtc1/sc22/wg14/www/standards
.. [it-gcc] https://gcc.gnu.org
.. [it-clang] https://clang.llvm.org
.. [it-gcc-c-dialect-options] https://gcc.gnu.org/onlinedocs/gcc/C-Dialect-Options.html
.. [it-gnu-extensions] https://gcc.gnu.org/onlinedocs/gcc/C-Extensions.html
.. [it-gcc-attribute-syntax] https://gcc.gnu.org/onlinedocs/gcc/Attribute-Syntax.html
.. [it-n2049] http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2049.pdf
.. [it-rust-language] https://www.rust-lang.org
.. [it-rustc] https://doc.rust-lang.org/rustc/
.. [it-rust-editions] https://doc.rust-lang.org/edition-guide/editions/
.. [it-rust-unstable-features] https://github.com/Rust-for-Linux/linux/issues/2