ืฉื—ืจื•ืจ ื—ื‘ื™ืœืช ื”ืžื”ื“ืจ GCC 12

ืœืื—ืจ ืฉื ื” ืฉืœ ืคื™ืชื•ื—, ืฉื•ื—ืจืจื” ื—ื‘ื™ืœืช ื”ืžื”ื“ืจ ื”ื—ื™ื ืžื™ืช GCC 12.1, ื”ืžื”ื“ื•ืจื” ื”ืžืฉืžืขื•ืชื™ืช ื”ืจืืฉื•ื ื” ื‘ืขื ืฃ ื”ื—ื“ืฉ ืฉืœ GCC 12.x. ื‘ื”ืชืื ืœืกื›ื™ืžืช ืžืกืคื•ืจ ื”ืžื”ื“ื•ืจื” ื”ื—ื“ืฉื”, ื ืขืฉื” ืฉื™ืžื•ืฉ ื‘ื’ืจืกื” 12.0 ื‘ืชื”ืœื™ืš ื”ืคื™ืชื•ื—, ื•ื–ืžืŸ ืงืฆืจ ืœืคื ื™ ืฉื—ืจื•ืจื• ืฉืœ GCC 12.1, ื”ืกื ื™ืฃ ืฉืœ GCC 13.0 ื›ื‘ืจ ื”ืกืชืขืฃ, ืฉืขืœ ื‘ืกื™ืกื• ืชื”ื™ื” ื”ืžื”ื“ื•ืจื” ื”ื’ื“ื•ืœื” ื”ื‘ืื”, GCC 13.1. ืœึฐื”ึดืชึฐืจึทืงึตื. ื‘-23 ื‘ืžืื™, ื”ืคืจื•ื™ืงื˜ ื™ื—ื’ื•ื’ 35 ืฉื ื™ื ืœื”ื™ื•ื•ืกื“ื” ืฉืœ ื”ืžื”ื“ื•ืจื” ื”ืจืืฉื•ื ื” ืฉืœ GCC.

ืฉื™ื ื•ื™ื™ื ืขื™ืงืจื™ื™ื:

  • ื ื•ืกืคื” ืชืžื™ื›ื” ื‘ืคื•ืจืžื˜ ื ื™ืคื•ื™ ื”ื‘ืื’ื™ื CTF (Compact Type Format), ื”ืžืกืคืง ืื—ืกื•ืŸ ืงื•ืžืคืงื˜ื™ ืฉืœ ืžื™ื“ืข ืขืœ ืกื•ื’ื™ C, ื—ื™ื‘ื•ืจื™ื ื‘ื™ืŸ ืคื•ื ืงืฆื™ื•ืช ื•ืกืžืœื™ ื ื™ืคื•ื™ ื‘ืื’ื™ื. ื›ืืฉืจ ื”ื•ื ืžื•ื˜ื‘ืข ื‘ืื•ื‘ื™ื™ืงื˜ื™ ELF, ื”ืคื•ืจืžื˜ ืžืืคืฉืจ ืฉื™ืžื•ืฉ ื‘ื˜ื‘ืœืื•ืช ืชื•ื•ื™ื EFL ื›ื“ื™ ืœืžื ื•ืข ื›ืคื™ืœื•ืช ื ืชื•ื ื™ื.
  • ื”ืชืžื™ื›ื” ื‘ืคื•ืจืžื˜ ืื—ืกื•ืŸ ืžื™ื“ืข ื ื™ืคื•ื™ ื‘ืื’ื™ื "STABS", ืฉื ื•ืฆืจ ื‘ืฉื ื•ืช ื”-1980, ื”ื•ืฆืื” ืžืฉื™ืžื•ืฉ.
  • ื”ืขื‘ื•ื“ื” ื ืžืฉื›ืช ืœื”ืจื—ื‘ืช ื”ืชืžื™ื›ื” ื‘ืชืงื ื™ C2X ื•-C++23 ืขืชื™ื“ื™ื™ื ืขื‘ื•ืจ ืฉืคื•ืช C ื•-C++. ืœื“ื•ื’ืžื”, ื ื•ืกืคื” ืชืžื™ื›ื” ื‘ื‘ื™ื˜ื•ื™ "ืื consteval"; ืžื•ืชืจ ืœื”ืฉืชืžืฉ ื‘ืื•ื˜ื• ื‘ืืจื’ื•ืžื ื˜ื™ื ืฉืœ ืคื•ื ืงืฆื™ื” ("f(auto(g()))"); ื”ืฉื™ืžื•ืฉ ื‘ืžืฉืชื ื™ื ืœื ืžื™ืœื•ืœื™ื™ื, ื‘-goto ื•ื‘ืชื•ื•ื™ื•ืช ืžื•ืชืจ ื‘ืคื•ื ืงืฆื™ื•ืช ื”ืžื•ืฆื”ืจื•ืช ื›-constexpr; ื ื•ืกืคื” ืชืžื™ื›ื” ื‘ืžืคืขื™ืœ ืžืคืขื™ืœื™ ืื™ื ื“ืงืก ืจื‘-ืžืžื“ื™ื™ื[]; ื‘ืื, ืขื‘ื•ืจ ื•ืžืชื’, ื”ื™ื›ื•ืœื•ืช ืฉืœ ื‘ืœื•ืงื™ ืืชื—ื•ืœ ื”ื•ืจื—ื‘ื• ("for (ื‘ืืžืฆืขื•ืช T = int; T e : v)").
  • ื”ืกืคืจื™ื™ื” ื”ืกื˜ื ื“ืจื˜ื™ืช ืฉืœ C++ ืฉื™ืคืจื” ืชืžื™ื›ื” ื‘ื—ืœืงื™ื ื”ื ื™ืกื™ื•ื ื™ื™ื ืฉืœ ื”ืกื˜ื ื“ืจื˜ื™ื C++20 ื•-C++23. ื ื•ืกืคื” ืชืžื™ื›ื” ืขื‘ื•ืจ std::move_only_function, , std::basic_string::resize_and_overwrite, , ื•-std::invoke_r. ืžื•ืชืจ ืœื”ืฉืชืžืฉ ื‘-std::unique_ptr, std::vector, std::basic_string, std::optional ื•-std::variant ื‘ืคื•ื ืงืฆื™ื•ืช constexpr.
  • ื”ื—ื–ื™ืช ื”ืงื“ืžื™ืช ืฉืœ Fortran ืžืกืคืงืช ืชืžื™ื›ื” ืžืœืื” ืœืžืคืจื˜ TS 29113, ื”ืžืชืืจ ื™ื›ื•ืœื•ืช ืœื”ื‘ื˜ื—ืช ื ื™ื™ื“ื•ืช ื‘ื™ืŸ Fortran ืœืงื•ื“ C.
  • ื ื•ืกืคื” ืชืžื™ื›ื” ื‘ืชื•ืกืฃ __builtin_shufflevector(vec1, vec2, index1, index2, ...) ืฉื ื•ืกืคื” ื‘ืขื‘ืจ ืœ-Clang, ื”ืžืฆื™ืขื” ืงืจื™ืื” ื™ื—ื™ื“ื” ืœื‘ื™ืฆื•ืข ืคืขื•ืœื•ืช ืขืจื‘ื•ื‘ ื•ืขืจื‘ ื•ืงื˜ื•ืจ ื ืคื•ืฆื•ืช.
  • ื‘ืขืช ืฉื™ืžื•ืฉ ื‘ืจืžืช ื”ืื•ืคื˜ื™ืžื™ื–ืฆื™ื” "-O2", ื”ื•ื•ืงื˜ื•ืจื™ื–ืฆื™ื” ืžื•ืคืขืœืช ื›ื‘ืจื™ืจืช ืžื—ื“ืœ (ื”ืžืฆื‘ื™ื -ftree-vectorize ื•-fvect-cost-model=ืžืื•ื“-ื–ื•ืœ ืžื•ืคืขืœื™ื). ื”ืžื•ื“ืœ ื”ื–ื•ืœ ืžืื•ื“ ืžืืคืฉืจ ื•ืงื˜ื•ืจื™ื–ืฆื™ื” ืจืง โ€‹โ€‹ืื ื”ืงื•ื“ ื”ื•ื•ืงื˜ื•ืจื™ ื™ื›ื•ืœ ืœื”ื—ืœื™ืฃ ืœื—ืœื•ื˜ื™ืŸ ืืช ื”ืงื•ื“ ื”ืกืงืœืจื™ ืฉื”ื•ืงื˜ื•ืจ.
  • ื ื•ืกืฃ ืžืฆื‘ "-ftrivial-auto-var-init" ื›ื“ื™ ืœืืคืฉืจ ืืชื—ื•ืœ ืžืคื•ืจืฉ ืฉืœ ืžืฉืชื ื™ื ื‘ืขืจื™ืžื” ื›ื“ื™ ืœืขืงื•ื‘ ืื—ืจ ื‘ืขื™ื•ืช ื•ืœื—ืกื•ื ื ืงื•ื“ื•ืช ืชื•ืจืคื” ื”ืงืฉื•ืจื•ืช ืœืฉื™ืžื•ืฉ ื‘ืžืฉืชื ื™ื ืœื ืžืื•ืชื—ืœื™ื.
  • ืขื‘ื•ืจ ืฉืคื•ืช C ื•++C, ื ื•ืกืคื” ืคื•ื ืงืฆื™ื” ืžื•ื‘ื ื™ืช __builtin_dynamic_object_size ื›ื“ื™ ืœืงื‘ื•ืข ืืช ื’ื•ื“ืœื• ืฉืœ ืื•ื‘ื™ื™ืงื˜, ื”ืชื•ืืžืช ืœืคื•ื ืงืฆื™ื” ื“ื•ืžื” ืž-Clang.
  • ืขื‘ื•ืจ ืฉืคื•ืช C ื•++C, ื ื•ืกืคื” ืชืžื™ื›ื” ื‘ืชื›ื•ื ื” "ืœื ื–ืžื™ืŸ" (ืœื“ื•ื’ืžื”, ื ื™ืชืŸ ืœืกืžืŸ ืคื•ื ืงืฆื™ื•ืช ืฉื™ื™ืฆืจื• ืฉื’ื™ืื” ืื โ€‹โ€‹ืชื ืกื• ืœื”ืฉืชืžืฉ ื‘ื”ืŸ).
  • ืขื‘ื•ืจ ืฉืคื•ืช C ื•-C++, ื ื•ืกืคื” ืชืžื™ื›ื” ื‘ื”ื ื—ื™ื•ืช ืขื™ื‘ื•ื“ ืžืงื“ื™ื "#elifdef" ื•-"#elifndef".
  • ื ื•ืกืฃ ื“ื’ืœ "-Wbidi-chars" ื›ื“ื™ ืœื”ืฆื™ื’ ืื–ื”ืจื” ืื ื ืขืฉื” ืฉื™ืžื•ืฉ ืฉื’ื•ื™ ื‘ืชื•ื•ื™ UTF-8, ืฉื™ื ื•ื™ ื”ืกื“ืจ ืฉื‘ื• ืžื•ืฆื’ ื˜ืงืกื˜ ื“ื•-ื›ื™ื•ื•ื ื™.
  • ื ื•ืกืฃ ื“ื’ืœ "-Warray-compare" ื›ื“ื™ ืœื”ื–ื”ื™ืจ ื‘ืขืช ื ื™ืกื™ื•ืŸ ืœื”ืฉื•ื•ืช ืฉื ื™ ืื•ืคืจื ื“ื™ื ื”ืžืชื™ื™ื—ืกื™ื ืœืžืขืจื›ื™ื.
  • ื”ื˜ืžืขืช ืชืงื ื™ OpenMP 5.0 ื•-5.1 (Open Multi-Processing), ื”ืžื’ื“ื™ืจื™ื ืืช ื”-API ื•ืฉื™ื˜ื•ืช ืœื™ื™ืฉื•ื ืฉื™ื˜ื•ืช ืชื›ื ื•ืช ืžืงื‘ื™ืœื•ืช ืขืœ ืžืขืจื›ื•ืช ืžืจื•ื‘ื•ืช ืœื™ื‘ื•ืช ื•ื”ื™ื‘ืจื™ื“ื™ื•ืช (CPU+GPU/DSP) ืขื ื–ื™ื›ืจื•ืŸ ืžืฉื•ืชืฃ ื•ื™ื—ื™ื“ื•ืช ื•ืงื˜ื•ืจื™ื–ืฆื™ื” (SIMD) , ื”ืžืฉื™ืš.
  • ื”ื˜ืžืขื” ืžืฉื•ืคืจืช ืฉืœ ืžืคืจื˜ ื”ืชื›ื ื•ืช ื”ืžืงื‘ื™ืœื™ OpenACC 2.6, ื”ืžื’ื“ื™ืจ ื›ืœื™ื ืœื”ื•ืจื“ืช ืคืขื•ืœื•ืช ืขืœ GPUs ื•ืžืขื‘ื“ื™ื ืžื™ื•ื—ื“ื™ื ื›ื’ื•ืŸ NVIDIA PTX.
  • ืชืžื™ื›ื” ื‘ื”ื•ืจืื•ืช ืžื•ืจื—ื‘ื•ืช Intel AVX86-FP512 ื•ืกื•ื’ _Float16 ื ื•ืกืคื” ืœ-backend ืฉืœ ื™ืฆื™ืจืช ื”ืงื•ื“ ืขื‘ื•ืจ ืืจื›ื™ื˜ืงื˜ื•ืจืช x16.
  • ืขื‘ื•ืจ ืืจื›ื™ื˜ืงื˜ื•ืจืช x86, ื ื•ืกืคื” ื”ื’ื ื” ืžืคื ื™ ืคื’ื™ืขื•ื™ื•ืช ื‘ืžืขื‘ื“ื™ื ื”ื ื’ืจืžื•ืช ืžื‘ื™ืฆื•ืข ืกืคืงื•ืœื˜ื™ื‘ื™ ืฉืœ ื”ื•ืจืื•ืช ืœืื—ืจ ืคืขื•ืœื•ืช ืงืคื™ืฆื” ื‘ืœืชื™ ืžื•ืชื ื•ืช ืงื“ื™ืžื”. ื”ื‘ืขื™ื” ืžืชืจื—ืฉืช ืขืงื‘ ืขื™ื‘ื•ื“ ืžื ืข ืฉืœ ื”ื•ืจืื•ืช ืžื™ื“ ืœืื—ืจ ื”ื•ืจืืช ื”ืกื ื™ืฃ ื‘ื–ื™ื›ืจื•ืŸ (SLS, Straight Line Speculation). ื›ื“ื™ ืœืืคืฉืจ ื”ื’ื ื”, ืžื•ืฆืขืช ื”ืืคืฉืจื•ืช "-mharden-sls".
  • ื”ื•ืกื™ืฃ ื–ื™ื”ื•ื™ ืฉืœ ืฉื™ืžื•ืฉ ื‘ืžืฉืชื ื™ื ืœื ืžืื•ืชื—ืœื™ื ืœื ืชื— ื”ืกื˜ื˜ื™ ื”ื ื™ืกื™ื•ื ื™. ื ื•ืกืคื” ืชืžื™ื›ื” ืจืืฉื•ื ื™ืช ืœื ื™ืชื•ื— ืงื•ื“ ื”ืจื›ื‘ื” ื‘ืชื•ืกืคื•ืช ืžื•ื˜ื‘ืขื•ืช. ืžืขืงื‘ ื–ื™ื›ืจื•ืŸ ืžืฉื•ืคืจ. ื”ืงื•ื“ ืœืขื™ื‘ื•ื“ ื‘ื™ื˜ื•ื™ื™ ืžืชื’ ื ื›ืชื‘ ืžื—ื“ืฉ.
  • ื ื•ืกืคื• 30 ืงืจื™ืื•ืช ื—ื“ืฉื•ืช ืœ-libgccjit, ืกืคืจื™ื™ื” ืžืฉื•ืชืคืช ืœื”ื˜ืžืขืช ืžื—ื•ืœืœ ืงื•ื“ ื‘ืชื”ืœื™ื›ื™ื ืื—ืจื™ื ื•ืฉื™ืžื•ืฉ ื‘ื• ืœ-JIT ืงื•ืžืคื™ืœืฆื™ื” ืฉืœ bytecode ืœืงื•ื“ ืžื›ื•ื ื”.
  • ื ื•ืกืคื” ืชืžื™ื›ื” ื‘ืžื ื’ื ื•ืŸ CO-RE (Compile Once - Run Everywhere) ืœ-backend ืœื”ืคืงืช BPF bytecode, ื”ืžืืคืฉืจ ืœืš ืœื”ืจื›ื™ื‘ ืืช ื”ืงื•ื“ ืฉืœ ืชื•ื›ื ื™ื•ืช eBPF ืขื‘ื•ืจ ืœื™ื‘ืช ืœื™ื ื•ืงืก ืคืขื ืื—ืช ื‘ืœื‘ื“ ื•ืœื”ืฉืชืžืฉ ื‘ื˜ื•ืขืŸ ืื•ื ื™ื‘ืจืกืœื™ ืžื™ื•ื—ื“ ื”ืžืชืื™ื ืืช ืชื•ื›ื ื™ืช ืฉื ื˜ืขื ื” ืœืคื•ืจืžื˜ ื”ืงืจื ืœ ื•-BPF ื”ื ื•ื›ื—ื™). CO-RE ืคื•ืชืจ ืืช ื‘ืขื™ื™ืช ื”ื ื™ื™ื“ื•ืช ืฉืœ ืชื•ื›ื ื•ืช eBPF ืžื”ื•ืœืžื•ืช, ืฉื‘ืขื‘ืจ ื ื™ืชืŸ ื”ื™ื” ืœื”ืฉืชืžืฉ ื‘ื”ืŸ ืจืง ื‘ื’ืจืกืช ื”ืœื™ื‘ื” ืฉืขื‘ื•ืจื” ื”ืŸ ื”ื™ื“ื•ืจ, ืžื›ื™ื•ื•ืŸ ืฉื”ืžื™ืงื•ื ืฉืœ ืืœืžื ื˜ื™ื ื‘ืžื‘ื ื™ ื ืชื•ื ื™ื ืžืฉืชื ื” ืžื’ืจืกื” ืœื’ืจืกื”.
  • ื”ืงืฆื” ื”ืื—ื•ืจื™ ืฉืœ RISC-V ืžื•ืกื™ืฃ ืชืžื™ื›ื” ื‘ื”ืจื—ื‘ื•ืช ืืจื›ื™ื˜ืงื˜ื•ืจืช ืขืจื›ื•ืช ื”ื•ืจืื•ืช ื—ื“ืฉื•ืช zba, zbb, zbc ื•-zbs, ื›ืžื• ื’ื ื”ืจื—ื‘ื•ืช ISA ืขื‘ื•ืจ ืคืขื•ืœื•ืช ืงืจื™ืคื˜ื•ื’ืจืคื™ื•ืช ื•ืงื˜ื•ืจื™ื•ืช ื•ืกืงืœืจื™ื•ืช. ื›ื‘ืจื™ืจืช ืžื—ื“ืœ, ื ื™ืชื ืช ืชืžื™ื›ื” ื‘ืžืคืจื˜ RISC-V ISA 20191213. ื”ื“ื’ืœ -mtune=thead-c906 ื ื•ืกืฃ ื›ื“ื™ ืœืืคืฉืจ ืื•ืคื˜ื™ืžื™ื–ืฆื™ื•ืช ืขื‘ื•ืจ ืœื™ื‘ื•ืช T-HEAD c906.
  • ืชืžื™ื›ื” ื‘ืกื•ื’ __int128_t/integer(kind=16) ื ื•ืกืคื” ืœืงืฆื” ื”ืขื•ืจืคื™ ืฉืœ ื™ืฆื™ืจืช ื”ืงื•ื“ ืขื‘ื•ืจ GPUs ืฉืœ AMD ื”ืžื‘ื•ืกืกื™ื ืขืœ ื”ืžื™ืงืจื•-ืืจื›ื™ื˜ืงื˜ื•ืจื” ืฉืœ GCN. ื ื™ืชืŸ ืœื”ืฉืชืžืฉ ื‘ืขื“ 40 ืงื‘ื•ืฆื•ืช ืขื‘ื•ื“ื” ืœื™ื—ื™ื“ืช ืžื—ืฉื•ื‘ (CU) ื•ืขื“ 16 ื—ื–ื™ืชื•ืช ื”ื•ืจืื•ืช (wavefront, ืกื˜ ืฉืœ ืฉืจืฉื•ืจื™ื ื”ืžื‘ื•ืฆืขื™ื ื‘ืžืงื‘ื™ืœ ืขืœ ื™ื“ื™ ืžื ื•ืข ื”- SIMD) ืœืงื‘ื•ืฆื”. ื‘ืขื‘ืจ, ืจืง ืงืฆื” ื”ื•ืจืื” ืื—ื“ ืœื›ืœ CU ื”ื•ืชืจ.
  • ื”ืงืฆื” ื”ืื—ื•ืจื™ ืฉืœ NVPTX, ืฉื ื•ืขื“ ืœื™ืฆื•ืจ ืงื•ื“ ื‘ืืžืฆืขื•ืช ืืจื›ื™ื˜ืงื˜ื•ืจืช ืขืจื›ืช ื”ื”ื•ืจืื•ืช ืฉืœ NVIDIA PTX (Parallel Thread Execution), ื”ื•ืกื™ืฃ ืืช ื”ื™ื›ื•ืœืช ืœื”ืฉืชืžืฉ ื‘ื“ื’ืœื™ "-march", "-mptx" ื•-"-march-map". ืชืžื™ื›ื” ืžื™ื•ืฉืžืช ืขื‘ื•ืจ PTX ISA sm_53, sm_70, sm_75 ื•-sm_80. ืืจื›ื™ื˜ืงื˜ื•ืจืช ื‘ืจื™ืจืช ื”ืžื—ื“ืœ ื”ื™ื sm_30.
  • ื”ื˜ืžืขื•ืช ืฉืœ ืคื•ื ืงืฆื™ื•ืช ืžื•ื‘ื ื•ืช ื ื›ืชื‘ื• ืžื—ื“ืฉ ื‘-backend ืขื‘ื•ืจ ืžืขื‘ื“ื™ PowerPC/PowerPC64/RS6000. ื”ืคื•ื ืงืฆื™ื•ืช ื”ืžื•ื‘ื ื•ืช __builtin_get_texasr, __builtin_get_texasru, __builtin_get_tfhar, __builtin_get_tfiar, __builtin_set_texasr, __builtin_set_texasru, __builtin_set_iltin_set and___tfhar
  • ืชืžื™ื›ื” ืขื‘ื•ืจ Arm Ampere-64 (-mcpu/-mtune ampere1), Arm Cortex-A1 (cortex-a510), Arm Cortex-A510 (cortex-a710) ื•-Arm Cortex-X710 (cortex-x2). ื ื•ืกืคื” ืชืžื™ื›ื” ื‘ืืคืฉืจื•ื™ื•ืช ืืจื›ื™ื˜ืงื˜ื•ืจืช ARMv2 ื—ื“ืฉื•ืช ืœืฉื™ืžื•ืฉ ืขื ืืคืฉืจื•ืช "-march": armv8-a, armv8.7-a, armv8.8-a. ื”ื•ืกืคืช ื™ื™ืฉื•ื ืฉืœ ืคื•ื ืงืฆื™ื•ืช C ื”ืžื•ื‘ื ื•ืช ื‘ืงื•ืžืคื™ื™ืœืจ (Intrinsics) ืœื˜ืขื™ื ื” ืื˜ื•ืžื™ืช ื•ืฉืžื™ืจืช ื ืชื•ื ื™ื ื‘ื–ื™ื›ืจื•ืŸ, ืขืœ ื‘ืกื™ืก ืฉื™ืžื•ืฉ ื‘ื”ื•ืจืื•ืช ARM ืžื•ืจื—ื‘ื•ืช (ls9). ื ื•ืกืคื” ืชืžื™ื›ื” ืœื”ืืฆืช ืคื•ื ืงืฆื™ื•ืช memcpy, memmove ื•- memset ื‘ืืžืฆืขื•ืช ื”ืจื—ื‘ืช mopsoption ARM.
  • ื ื•ืกืฃ ืžืฆื‘ ื‘ื“ื™ืงื” ื—ื“ืฉ "-fsanitize=shadow-call-stack" (ShadowCallStack), ืฉื–ืžื™ืŸ ื›ืจื’ืข ืจืง ืขื‘ื•ืจ ืืจื›ื™ื˜ืงื˜ื•ืจืช AArch64 ื•ืขื•ื‘ื“ ื‘ืขืช ื‘ื ื™ื™ืช ืงื•ื“ ืขื ืืคืฉืจื•ืช "-ffixed-r18". ื”ืžืฆื‘ ืžืกืคืง ื”ื’ื ื” ืžืคื ื™ ื”ื—ืœืคืช ื›ืชื•ื‘ืช ื”ื”ื—ื–ืจื” ืžืคื•ื ืงืฆื™ื” ื‘ืžืงืจื” ืฉืœ ื”ืฆืคืช ืžืื’ืจ ืขืœ ื”ืžื—ืกื ื™ืช. ืžื”ื•ืช ื”ื”ื’ื ื” ื”ื™ื ืฉืžื™ืจืช ื›ืชื•ื‘ืช ื”ื”ื—ื–ืจื” ื‘ืขืจื™ืžืช "ืฆืœ" ื ืคืจื“ืช ืœืื—ืจ ื”ืขื‘ืจืช ื”ืฉืœื™ื˜ื” ืœืคื•ื ืงืฆื™ื” ื•ืื—ื–ื•ืจ ื›ืชื•ื‘ืช ื–ื• ืœืคื ื™ ื”ื™ืฆื™ืื” ืžื”ืคื•ื ืงืฆื™ื”.

ืžืงื•ืจ: OpenNet.ru

ื”ื•ืกืคืช ืชื’ื•ื‘ื”