~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/Documentation/process/programming-language.rst

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /Documentation/process/programming-language.rst (Architecture m68k) and /Documentation/process/programming-language.rst (Architecture mips)


  1 .. _programming_language:                           1 .. _programming_language:
  2                                                     2 
  3 Programming Language                                3 Programming Language
  4 ====================                                4 ====================
  5                                                     5 
  6 The kernel is written in the C programming lan      6 The kernel is written in the C programming language [c-language]_.
  7 More precisely, the kernel is typically compil      7 More precisely, the kernel is typically compiled with ``gcc`` [gcc]_
  8 under ``-std=gnu11`` [gcc-c-dialect-options]_:      8 under ``-std=gnu11`` [gcc-c-dialect-options]_: the GNU dialect of ISO C11.
  9 ``clang`` [clang]_ is also supported, see docs      9 ``clang`` [clang]_ is also supported, see docs on
 10 :ref:`Building Linux with Clang/LLVM <kbuild_l     10 :ref:`Building Linux with Clang/LLVM <kbuild_llvm>`.
 11                                                    11 
 12 This dialect contains many extensions to the l     12 This dialect contains many extensions to the language [gnu-extensions]_,
 13 and many of them are used within the kernel as     13 and many of them are used within the kernel as a matter of course.
 14                                                    14 
 15 Attributes                                         15 Attributes
 16 ----------                                         16 ----------
 17                                                    17 
 18 One of the common extensions used throughout t     18 One of the common extensions used throughout the kernel are attributes
 19 [gcc-attribute-syntax]_. Attributes allow to i     19 [gcc-attribute-syntax]_. Attributes allow to introduce
 20 implementation-defined semantics to language e     20 implementation-defined semantics to language entities (like variables,
 21 functions or types) without having to make sig     21 functions or types) without having to make significant syntactic changes
 22 to the language (e.g. adding a new keyword) [n     22 to the language (e.g. adding a new keyword) [n2049]_.
 23                                                    23 
 24 In some cases, attributes are optional (i.e. a     24 In some cases, attributes are optional (i.e. a compiler not supporting them
 25 should still produce proper code, even if it i     25 should still produce proper code, even if it is slower or does not perform
 26 as many compile-time checks/diagnostics).          26 as many compile-time checks/diagnostics).
 27                                                    27 
 28 The kernel defines pseudo-keywords (e.g. ``__p     28 The kernel defines pseudo-keywords (e.g. ``__pure``) instead of using
 29 directly the GNU attribute syntax (e.g. ``__at     29 directly the GNU attribute syntax (e.g. ``__attribute__((__pure__))``)
 30 in order to feature detect which ones can be u     30 in order to feature detect which ones can be used and/or to shorten the code.
 31                                                    31 
 32 Please refer to ``include/linux/compiler_attri     32 Please refer to ``include/linux/compiler_attributes.h`` for more information.
 33                                                    33 
 34 Rust                                               34 Rust
 35 ----                                               35 ----
 36                                                    36 
 37 The kernel has experimental support for the Ru     37 The kernel has experimental support for the Rust programming language
 38 [rust-language]_ under ``CONFIG_RUST``. It is      38 [rust-language]_ under ``CONFIG_RUST``. It is compiled with ``rustc`` [rustc]_
 39 under ``--edition=2021`` [rust-editions]_. Edi     39 under ``--edition=2021`` [rust-editions]_. Editions are a way to introduce
 40 small changes to the language that are not bac     40 small changes to the language that are not backwards compatible.
 41                                                    41 
 42 On top of that, some unstable features [rust-u     42 On top of that, some unstable features [rust-unstable-features]_ are used in
 43 the kernel. Unstable features may change in th     43 the kernel. Unstable features may change in the future, thus it is an important
 44 goal to reach a point where only stable featur     44 goal to reach a point where only stable features are used.
 45                                                    45 
 46 Please refer to Documentation/rust/index.rst f     46 Please refer to Documentation/rust/index.rst for more information.
 47                                                    47 
 48 .. [c-language] http://www.open-std.org/jtc1/s     48 .. [c-language] http://www.open-std.org/jtc1/sc22/wg14/www/standards
 49 .. [gcc] https://gcc.gnu.org                       49 .. [gcc] https://gcc.gnu.org
 50 .. [clang] https://clang.llvm.org                  50 .. [clang] https://clang.llvm.org
 51 .. [gcc-c-dialect-options] https://gcc.gnu.org     51 .. [gcc-c-dialect-options] https://gcc.gnu.org/onlinedocs/gcc/C-Dialect-Options.html
 52 .. [gnu-extensions] https://gcc.gnu.org/online     52 .. [gnu-extensions] https://gcc.gnu.org/onlinedocs/gcc/C-Extensions.html
 53 .. [gcc-attribute-syntax] https://gcc.gnu.org/     53 .. [gcc-attribute-syntax] https://gcc.gnu.org/onlinedocs/gcc/Attribute-Syntax.html
 54 .. [n2049] http://www.open-std.org/jtc1/sc22/w     54 .. [n2049] http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2049.pdf
 55 .. [rust-language] https://www.rust-lang.org       55 .. [rust-language] https://www.rust-lang.org
 56 .. [rustc] https://doc.rust-lang.org/rustc/        56 .. [rustc] https://doc.rust-lang.org/rustc/
 57 .. [rust-editions] https://doc.rust-lang.org/e     57 .. [rust-editions] https://doc.rust-lang.org/edition-guide/editions/
 58 .. [rust-unstable-features] https://github.com     58 .. [rust-unstable-features] https://github.com/Rust-for-Linux/linux/issues/2
                                                      

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php