เชฐเชธเซเชŸ 1.73 เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเชฟเช‚เช— เชฒเซ‡เช‚เช—เซเชตเซ‡เชœ เชฐเชฟเชฒเซ€เช

เชฐเชธเซเชŸ 1.73 เชธเชพเชฎเชพเชจเซเชฏ เชนเซ‡เชคเซเชตเชพเชณเซ€ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเชฟเช‚เช— เชญเชพเชทเชพเชจเซเช‚ เชชเซเชฐเช•เชพเชถเชจ, เชฎเซ‹เชเชฟเชฒเชพ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เชฆเซเชตเชพเชฐเชพ เชธเซเชฅเชพเชชเชฟเชค, เชชเชฐเช‚เชคเซ เชนเชตเซ‡ เชธเซเชตเชคเช‚เชคเซเชฐ เชฌเชฟเชจ-เชฒเชพเชญเช•เชพเชฐเซ€ เชธเช‚เชธเซเชฅเชพ เชฐเชธเซเชŸ เชซเชพเช‰เชจเซเชกเซ‡เชถเชจเชจเชพ เช†เชถเซเชฐเชฏ เชนเซ‡เช เชณ เชตเชฟเช•เชธเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เช›เซ‡, เชชเซเชฐเช•เชพเชถเชฟเชค เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เช›เซ‡. เชญเชพเชทเชพ เชฎเซ‡เชฎเชฐเซ€ เชธเชฒเชพเชฎเชคเซ€ เชชเชฐ เชงเซเชฏเชพเชจ เช•เซ‡เชจเซเชฆเซเชฐเชฟเชค เช•เชฐเซ‡ เช›เซ‡ เช…เชจเซ‡ เช—เชพเชฐเซเชฌเซ‡เชœ เช•เชฒเซ‡เช•เซเชŸเชฐ เช…เชจเซ‡ เชฐเชจเชŸเชพเชˆเชฎเชจเซ‹ เช‰เชชเชฏเซ‹เช— เชŸเชพเชณเซ€เชจเซ‡ เช‰เชšเซเชš เชœเซ‹เชฌ เชธเชฎเชพเช‚เชคเชฐเชคเชพ เชนเชพเช‚เชธเชฒ เช•เชฐเชตเชพเชจเชพ เชฎเชพเชงเซเชฏเชฎ เชชเซ‚เชฐเชพ เชชเชพเชกเซ‡ เช›เซ‡ (เชฐเชจเชŸเชพเช‡เชฎ เชฎเซ‚เชณเชญเซ‚เชค เชชเซเชฐเชพเชฐเช‚เชญ เช…เชจเซ‡ เชชเซเชฐเชฎเชพเชฃเชญเซ‚เชค เชชเซเชธเซเชคเช•เชพเชฒเชฏเชจเซ€ เชœเชพเชณเชตเชฃเซ€ เชฎเชพเชŸเซ‡ เช˜เชŸเชพเชกเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡).

เชฐเชธเซเชŸเชจเซ€ เชฎเซ‡เชฎเชฐเซ€ เชนเซ‡เชจเซเชกเชฒเชฟเช‚เช— เชชเชฆเซเชงเชคเชฟเช“ เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพเชจเซ‡ เชชเซ‹เช‡เชจเซเชŸเชฐเชจเซ€ เชนเซ‡เชฐเชซเซ‡เชฐ เช•เชฐเชคเซ€ เชตเช–เชคเซ‡ เชญเซ‚เชฒเซ‹เชฅเซ€ เชฌเชšเชพเชตเซ‡ เช›เซ‡ เช…เชจเซ‡ เชฒเซ‹-เชฒเซ‡เชตเชฒ เชฎเซ‡เชฎเชฐเซ€ เชนเซ‡เชจเซเชกเชฒเชฟเช‚เช—เชจเซ‡ เช•เชพเชฐเชฃเซ‡ เชŠเชญเซ€ เชฅเชคเซ€ เชธเชฎเชธเซเชฏเชพเช“ เชธเชพเชฎเซ‡ เชฐเช•เซเชทเชฃ เช†เชชเซ‡ เช›เซ‡, เชœเซ‡เชฎ เช•เซ‡ เชฎเซ‡เชฎเชฐเซ€ เชเชฐเชฟเชฏเชพเชจเซ‡ เชฎเซเช•เซเชค เช•เชฐเซเชฏเชพ เชชเช›เซ€ เชคเซ‡เชจเซ‡ เชเช•เซเชธเซ‡เชธ เช•เชฐเชตเซเช‚, เชจเชฒ เชชเซ‹เช‡เชจเซเชŸเชฐเชจเซ‹ เชธเช‚เชฆเชฐเซเชญ เช†เชชเชตเซ‹, เชฌเชซเชฐ เช“เชตเชฐเชฐเชจเซเชธ เชตเช—เซ‡เชฐเซ‡. เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€เช“เชจเซเช‚ เชตเชฟเชคเชฐเชฃ เช•เชฐเชตเชพ, เชฌเชฟเชฒเซเชก เชชเซเชฐเชฆเชพเชจ เช•เชฐเชตเชพ เช…เชจเซ‡ เชจเชฟเชฐเซเชญเชฐเชคเชพเช“เชจเซเช‚ เชธเช‚เชšเชพเชฒเชจ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เช•เชพเชฐเซเช—เซ‹ เชชเซ‡เช•เซ‡เชœ เชฎเซ‡เชจเซ‡เชœเชฐ เชตเชฟเช•เชธเชพเชตเซ‡ เช›เซ‡. crates.io เชฐเซ€เชชเซ‹เชเซ€เชŸเชฐเซ€ เชนเซ‹เชธเซเชŸเชฟเช‚เช— เชฒเชพเชˆเชฌเซเชฐเซ‡เชฐเซ€เช“ เชฎเชพเชŸเซ‡ เช†เชงเชพเชฐเชญเซ‚เชค เช›เซ‡.

เช•เชฎเซเชชเชพเชˆเชฒ เชธเชฎเชฏเซ‡ เชฐเชธเซเชŸเชฎเชพเช‚ เชฐเซ‡เชซเชฐเชจเซเชธ เชšเซ‡เช•เชฟเช‚เช—, เช‘เชฌเซเชœเซ‡เช•เซเชŸเชจเซ€ เชฎเชพเชฒเชฟเช•เซ€เชจเซ‹ เชŸเซเชฐเซ…เช• เชฐเชพเช–เชตเชพ, เช‘เชฌเซเชœเซ‡เช•เซเชŸ เชฒเชพเช‡เชซเชŸเชพเช‡เชฎ (เชธเซเช•เซ‹เชชเซเชธ)เชจเซ‹ เชŸเซเชฐเซ…เช• เชฐเชพเช–เชตเชพ เช…เชจเซ‡ เช•เซ‹เชก เชเช•เซเชเชฟเช•เซเชฏเซเชถเชจ เชฆเชฐเชฎเชฟเชฏเชพเชจ เชฎเซ‡เชฎเชฐเซ€ เชเช•เซเชธเซ‡เชธเชจเซ€ เชธเชพเชšเซ€เชคเชพเชจเซเช‚ เชฎเซ‚เชฒเซเชฏเชพเช‚เช•เชจ เช•เชฐเซ€เชจเซ‡ เชฎเซ‡เชฎเชฐเซ€ เชธเซเชฐเช•เซเชทเชพ เชชเซ‚เชฐเซ€ เชชเชพเชกเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เชฐเชธเซเชŸ เชชเชฃ เชชเซ‚เชฐเซเชฃเชพเช‚เช• เช“เชตเชฐเชซเซเชฒเซ‹ เชธเชพเชฎเซ‡ เชฐเช•เซเชทเชฃ เชชเซ‚เชฐเซเช‚ เชชเชพเชกเซ‡ เช›เซ‡, เช‰เชชเชฏเซ‹เช— เช•เชฐเชคเชพ เชชเชนเซ‡เชฒเชพ เชšเชฒ เชฎเซ‚เชฒเซเชฏเซ‹เชจเซ€ เชซเชฐเชœเชฟเชฏเชพเชค เชถเชฐเซ‚เช†เชคเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡, เชชเซเชฐเชฎเชพเชฃเชญเซ‚เชค เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€เชฎเชพเช‚ เชญเซ‚เชฒเซ‹เชจเซ‡ เชตเชงเซ เชธเชพเชฐเซ€ เชฐเซ€เชคเซ‡ เชนเซ‡เชจเซเชกเชฒ เช•เชฐเซ‡ เช›เซ‡, เชกเชฟเชซเซ‹เชฒเซเชŸ เชฐเซ‚เชชเซ‡ เช…เชชเชฐเชฟเชตเชฐเซเชคเชจเชถเซ€เชฒ เชธเช‚เชฆเชฐเซเชญเซ‹ เช…เชจเซ‡ เชšเชฒเซ‹เชจเซ‹ เช–เซเชฏเชพเชฒ เชฒเชพเช—เซ เช•เชฐเซ‡ เช›เซ‡, เชฒเซ‹เชœเชฟเช•เชฒ เชญเซ‚เชฒเซ‹เชจเซ‡ เช˜เชŸเชพเชกเชตเชพ เชฎเชพเชŸเซ‡ เชฎเชœเชฌเซ‚เชค เชธเซเชŸเซ‡เชŸเชฟเช• เชŸเชพเช‡เชชเชฟเช‚เช— เชชเซเชฐเชฆเชพเชจ เช•เชฐเซ‡ เช›เซ‡.

เชฎเซเช–เซเชฏ เชจเชตเซ€เชจเชคเชพเช“:

  • เชกเชฟเชซเซ‹เชฒเซเชŸ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎ เช•เซเชฐเซ‡เชถ เชนเซ‡เชจเซเชกเชฒเชฐ (เช—เชญเชฐเชพเชŸ) เชฆเซเชตเชพเชฐเชพ เชœเชพเชฐเซ€ เช•เชฐเชพเชฏเซ‡เชฒเชพ เชธเช‚เชฆเซ‡เชถเชพเช“เชจเซเช‚ เชซเซ‹เชฐเซเชฎเซ‡เชŸ เชซเชฐเซ€เชฅเซ€ เชกเชฟเชเชพเช‡เชจ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เช›เซ‡. "เช—เชญเชฐเชพเชŸ!" เชฎเซ‡เช•เซเชฐเซ‹เชฎเชพเช‚ เช‰เชฒเซเชฒเซ‡เช–เชฟเชค เชŸเซ‡เช•เซเชธเซเชŸ เชนเชตเซ‡ เช…เชตเชคเชฐเชฃ เชšเชฟเชนเซเชจเซ‹ เชตเชฟเชจเชพ เชเช• เช…เชฒเช— เชฒเชพเช‡เชจ เชชเชฐ เชฌเชคเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชœเซเชฏเชพเชฐเซ‡ เชจเซ‡เชธเซเชŸเซ‡เชก เช…เชตเชคเชฐเชฃ เชนเชพเชœเชฐ เชนเซ‹เชฏ เช…เชฅเชตเชพ เชฌเชนเซเชตเชฟเชง เชฐเซ‡เช–เชพเช“เชฎเชพเช‚ เชตเชฟเชญเชพเชœเชฟเชค เชนเซ‹เชฏ เชคเซเชฏเชพเชฐเซ‡ เชธเช‚เชฆเซ‡เชถเชจเซ‡ เชตเชพเช‚เชšเชตเชพเชฎเชพเช‚ เชธเชฐเชณ เชฌเชจเชพเชตเซ‡ เช›เซ‡ เช…เชจเซ‡ เชฎเซ‚เช‚เชเชตเชฃเชจเซ‡ เชฆเซ‚เชฐ เช•เชฐเซ‡ เช›เซ‡. fn main() { let file = "ferris.txt"; เช—เชญเชฐเชพเชŸ!("เช“เชน เชจเชพ! {เชซเชพเช‡เชฒ:?} เชฎเชณเซ€ เชจเชฅเซ€!"); } เชคเซเชฏเชพเช‚ เชฅเซเชฐเซ‡เชก 'เชฎเซเช–เซเชฏ' เช—เชญเชฐเชพเชˆเชจเซ‡ 'เช“เชน เชจเชพ! "ferris.txt" เชฎเชณเซเชฏเซเช‚ เชจเชฅเซ€!', src/main.rs:3:5 เชฅเซเชฐเซ‡เชก 'เชฎเซเช–เซเชฏ' src/main.rs:3:5 เชชเชฐ เช—เชญเชฐเชพเชˆ เช—เชฏเซ‹: เช“เชน เชจเชพ! "ferris.txt" เชฎเชณเซเชฏเซเช‚ เชจเชฅเซ€!

    เชœเซเชฏเชพเชฐเซ‡ โ€œassert_eqโ€ เช…เชจเซ‡ โ€œassert_neโ€ เชฎเซ‡เช•เซเชฐเซ‹ เชŸเซเชฐเชฟเช—เชฐ เชฅเชพเชฏ เชคเซเชฏเชพเชฐเซ‡ เชฌเชคเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ‡เชฒเชพ เชธเช‚เชฆเซ‡เชถเชพเช“เชจเซเช‚ เช†เช‰เชŸเชชเซเชŸ เชชเชฃ เชซเชฐเซ€เชฅเซ€ เช•เชพเชฎ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เช›เซ‡. fn main() { assert_eq!("๐Ÿฆ€", "๐ŸŸ", "เชซเซ‡เชฐเชฟเชธ เช เชฎเชพเช›เชฒเซ€ เชจเชฅเซ€"); } เชคเซเชฏเชพเช‚ 'เชฎเซเช–เซเชฏ' เชฅเซเชฐเซ‡เชก เช—เชญเชฐเชพเชˆเชจเซ‡ 'เชตเชฟเชงเชพเชจ เชจเชฟเชทเซเชซเชณ เชฅเชฏเซเช‚:` (เชกเชพเชฌเซ‡ == เชœเชฎเชฃเซ‡)` เชกเชพเชฌเซ‡: `"๐Ÿฆ€"`, เชœเชฎเชฃเซ‡: `"๐ŸŸ"`: เชซเซ‡เชฐเชฟเชธ เช เชฎเชพเช›เชฒเซ€ เชจเชฅเซ€', src/main.rs: 2 :5 เชฅเซเชฐเซ‡เชก 'เชฎเซเช–เซเชฏ' src/main.rs:2:5 เชชเชฐ เช—เชญเชฐเชพเชˆ เช—เชฏเซ‹: เชฆเชพเชตเซ‹ `left == right` เชจเชฟเชทเซเชซเชณ เช—เชฏเซ‹: ferris is not a fish left: โ€œ๐Ÿฆ€โ€ right: โ€œ๐ŸŸโ€

  • RFC 3184 เช…เชจเซเชธเชพเชฐ, เชฅเซเชฐเซ‡เชก-เชฒเซ‹เช•เชฒ (thread_local) LocalKey เชธเซเชŸเซ‹เชฐเซ‡เชœ เช•เซ€เชจเซ‡ เชธเซ€เชงเซ€ เชฐเซ€เชคเซ‡ เชšเชพเชฒเชพเช•เซ€ เช•เชฐเชตเชพเชจเซ€ เช•เซเชทเชฎเชคเชพ เช‰เชฎเซ‡เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เช›เซ‡. > เช…เชจเซ‡ LocalKey > "with(|inner| ...)" เช•เซเชฒเซ‹เชเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซ‡ เชฌเชฆเชฒเซ‡ get(), set(), take() เช…เชจเซ‡ เชฐเชฟเชชเซเชฒเซ‡เชธ() เชชเชฆเซเชงเชคเชฟเช“เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡, เชœเซ‡ เชฎเชพเชŸเซ‡ เชตเชงเชพเชฐเชพเชจเชพ เช‡เชจเชฟเชถเชฟเชฏเชฒเชพเชˆเชเซ‡เชถเชจ เช•เซ‹เชก เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐเชฟเชฏเชพเชคเชจเซ‡ เชฆเซ‚เชฐ เช•เชฐเซ‡ เช›เซ‡. เชฎเซ‡เช•เซเชฐเซ‹ โ€œthread_local!โ€ เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชคเซ€ เชตเช–เชคเซ‡ เชจเชตเชพ เชฅเซเชฐเซ‡เชกเซ‹ เชฎเชพเชŸเซ‡ เช‰เชฒเซเชฒเซ‡เช–เชฟเชค เชกเชฟเชซเซ‰เชฒเซเชŸ เชฎเซ‚เชฒเซเชฏเซ‹ เชฅเซเชฐเซ‡เชก_เชฒเซ‹เช•เชฒ! { เชธเซเชฅเชฟเชฐ เชตเชธเซเชคเซเช“: เช•เซ‹เชท > = เชธเซ‡เชฒ::new(Vec::new()); } fn f() { // was THINGS.with(|i| i.set(vec![32, 1, 2])); // THINGS.set(vec![3, 1, 2]); // ... // let v = THINGS.with(|i| i.take()); // เชฌเชจเซ€ เช—เชฏเซเช‚ let v: Vec = THINGS.take(); }
  • API เชจเชพ เชจเชตเชพ เชญเชพเช—เชจเซ‡ เชธเซเชฅเชฟเชฐเชจเซ€ เชถเซเชฐเซ‡เชฃเซ€เชฎเชพเช‚ เช–เชธเซ‡เชกเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซ‹ เช›เซ‡, เชœเซ‡เชฎเชพเช‚ เชฒเช•เซเชทเชฃเซ‹เชจเซ€ เชชเชฆเซเชงเชคเชฟเช“ เช…เชจเซ‡ เช…เชฎเชฒเซ€เช•เชฐเชฃเซ‹ เชธเซเชฅเชฟเชฐ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเชพ เช›เซ‡:
    • เชธเชนเซ€ เชจ เช•เชฐเซ‡เชฒ {เชชเซ‚เชฐเซเชฃเชพเช‚เช•}::div_ceil
    • เชธเชนเซ€ เชจ เช•เชฐเซ‡เชฒ {เชชเซ‚เชฐเซเชฃเชพเช‚เช•}::next_multiple_of
    • เชธเชนเซ€ เชจ เช•เชฐเซ‡เชฒ {เชชเซ‚เชฐเซเชฃเชพเช‚เช•}::checked_next_multiple_of
    • std::ffi::FromBytesUntilNulError
    • std::os::unix::fs::chown
    • std::os::unix::fs::fchown
    • std::os::unix::fs::lfchown
    • LocalKey:: >::เชฎเซ‡เชณเชตเซ‹
    • LocalKey:: >::เชธเซ‡เชŸ
    • LocalKey:: >::เชฒเซ‹
    • LocalKey:: >::เชฌเชฆเชฒเซ‹
    • LocalKey:: >::เช‰เชงเชพเชฐ เชธเชพเชฅเซ‡
    • LocalKey:: >::เชตเชฟเชฅ_เชฌเซ‹เชฐเซ‹_เชฎเชŸ
    • LocalKey:: >::เชธเซ‡เชŸ
    • LocalKey:: >::เชฒเซ‹
    • LocalKey:: >::เชฌเชฆเชฒเซ‹
  • "const" เชฒเช•เซเชทเชฃ, เชœเซ‡ เชธเซเชฅเชฟเชฐเชพเช‚เช•เซ‹เชจเซ‡ เชฌเชฆเชฒเซ‡ เช•เซ‹เชˆเชชเชฃ เชธเช‚เชฆเชฐเซเชญเชฎเชพเช‚ เชคเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซ€ เชถเช•เซเชฏเชคเชพ เชจเช•เซเช•เซ€ เช•เชฐเซ‡ เช›เซ‡, เชคเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชพเชฐเซเชฏเซ‹เชฎเชพเช‚ เชฅเชพเชฏ เช›เซ‡:
    • rc::เชจเชฌเชณเซเช‚::เชจเชตเซเช‚
    • เชธเชฎเชจเซเชตเชฏเชจ::เชจเชฌเชณเซเช‚::เชจเชตเซเช‚
    • NonNull::as_ref
  • เช•เชฎเซเชชเชพเชˆเชฒเชฐ เชœเซ€เชธเซ€เชธเซ€ เช…เชจเซ‡ เช•เซเชฒเซ‡เช‚เช—เชจเซ€ เชœเซ‡เชฎ ". เชŸเชฟเชชเซเชชเชฃเซ€" เชตเชฟเชญเชพเช—เชฎเชพเช‚ เชธเช‚เชธเซเช•เชฐเชฃ เชฎเชพเชนเชฟเชคเซ€เชจเซเช‚ เชฐเซ‡เช•เซ‹เชฐเซเชกเชฟเช‚เช— เชชเซเชฐเชฆเชพเชจ เช•เชฐเซ‡ เช›เซ‡.
  • aarch64-unknown-teeos, csky-unknown-linux-gnuabiv2, riscv64-linux-android, riscv64gc-unknown-hermit, x86_64-unikraft-linux-musl เช…เชจเซ‡ x86_64-unknown-linux เชชเซเชฒเซ‡เชŸเชซเซ‹เชฐเซเชฎเซเชธ เชฎเชพเชŸเซ‡ เชธเชฎเชฐเซเชฅเชจเชจเซเช‚ เชคเซเชฐเซ€เชœเซเช‚ เชธเซเชคเชฐ เชฒเชพเช—เซ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เช›เซ‡. -เช“เชนเซ‹. เชคเซเชฐเซ€เชœเชพ เชธเซเชคเชฐเชฎเชพเช‚ เชฎเซ‚เชณเชญเซ‚เชค เช†เชงเชพเชฐเชจเซ‹ เชธเชฎเชพเชตเซ‡เชถ เชฅเชพเชฏ เช›เซ‡, เชชเชฐเช‚เชคเซ เชธเซเชตเชฏเช‚เชธเช‚เชšเชพเชฒเชฟเชค เชชเชฐเซ€เช•เซเชทเชฃ เชตเชฟเชจเชพ, เชธเชคเซเชคเชพเชตเชพเชฐ เชฌเชฟเชฒเซเชก เชชเซเชฐเช•เชพเชถเชฟเชค เช•เชฐเชตเชพ เช…เชฅเชตเชพ เช•เซ‹เชก เชฌเชจเชพเชตเซ€ เชถเช•เชพเชฏ เช›เซ‡ เช•เซ‡ เช•เซ‡เชฎ เชคเซ‡ เชคเชชเชพเชธเซเชฏเชพ เชตเชฟเชจเชพ.
  • เชฒเช•เซเชทเซเชฏ เชชเซเชฒเซ‡เชŸเชซเซ‹เชฐเซเชฎ wasm32-wasi-preview1-threads เชฎเชพเชŸเซ‡ เชธเชฎเชฐเซเชฅเชจเชจเซเช‚ เชฌเซ€เชœเซเช‚ เชธเซเชคเชฐ เชฒเชพเช—เซ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เช›เซ‡. เชธเชชเซ‹เชฐเซเชŸเชจเชพ เชฌเซ€เชœเชพ เชธเซเชคเชฐเชฎเชพเช‚ เชเชธเซ‡เชฎเซเชฌเชฒเซ€ เช—เซ‡เชฐเช‚เชŸเซ€ เชถเชพเชฎเซ‡เชฒ เช›เซ‡.

เชธเซ‹เชฐเซเชธ: opennet.ru

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹