ರಸ್ಟ್ 1.73 ಸಾಮಾನ್ಯ-ಉದ್ದೇಶದ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಯ ಬಿಡುಗಡೆಯನ್ನು ಮೊಜಿಲ್ಲಾ ಯೋಜನೆಯಿಂದ ಸ್ಥಾಪಿಸಲಾಗಿದೆ, ಆದರೆ ಈಗ ಸ್ವತಂತ್ರ ಲಾಭೋದ್ದೇಶವಿಲ್ಲದ ಸಂಸ್ಥೆ ರಸ್ಟ್ ಫೌಂಡೇಶನ್ ಆಶ್ರಯದಲ್ಲಿ ಅಭಿವೃದ್ಧಿಪಡಿಸಲಾಗಿದೆ. ಭಾಷೆ ಮೆಮೊರಿ ಸುರಕ್ಷತೆಯ ಮೇಲೆ ಕೇಂದ್ರೀಕರಿಸುತ್ತದೆ ಮತ್ತು ಕಸ ಸಂಗ್ರಾಹಕ ಮತ್ತು ರನ್ಟೈಮ್ ಬಳಕೆಯನ್ನು ತಪ್ಪಿಸುವ ಸಂದರ್ಭದಲ್ಲಿ ಹೆಚ್ಚಿನ ಕೆಲಸದ ಸಮಾನಾಂತರತೆಯನ್ನು ಸಾಧಿಸಲು ಸಾಧನಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ (ರನ್ಟೈಮ್ ಅನ್ನು ಮೂಲ ಪ್ರಾರಂಭ ಮತ್ತು ಪ್ರಮಾಣಿತ ಗ್ರಂಥಾಲಯದ ನಿರ್ವಹಣೆಗೆ ಕಡಿಮೆ ಮಾಡಲಾಗಿದೆ).
ರಸ್ಟ್ನ ಮೆಮೊರಿ ಹ್ಯಾಂಡ್ಲಿಂಗ್ ವಿಧಾನಗಳು ಪಾಯಿಂಟರ್ಗಳನ್ನು ಮ್ಯಾನಿಪ್ಯುಲೇಟ್ ಮಾಡುವಾಗ ಡೆವಲಪರ್ ಅನ್ನು ದೋಷಗಳಿಂದ ಉಳಿಸುತ್ತದೆ ಮತ್ತು ಕಡಿಮೆ-ಹಂತದ ಮೆಮೊರಿ ಹ್ಯಾಂಡ್ಲಿಂಗ್ನಿಂದ ಉಂಟಾಗುವ ಸಮಸ್ಯೆಗಳಿಂದ ರಕ್ಷಿಸುತ್ತದೆ, ಉದಾಹರಣೆಗೆ ಮೆಮೊರಿ ಪ್ರದೇಶವನ್ನು ಮುಕ್ತಗೊಳಿಸಿದ ನಂತರ ಪ್ರವೇಶಿಸುವುದು, ಶೂನ್ಯ ಪಾಯಿಂಟರ್ಗಳನ್ನು ಡಿಫರೆನ್ಸಿಂಗ್ ಮಾಡುವುದು, ಬಫರ್ ಓವರ್ರನ್ಗಳು ಇತ್ಯಾದಿ. ಗ್ರಂಥಾಲಯಗಳನ್ನು ವಿತರಿಸಲು, ನಿರ್ಮಾಣಗಳನ್ನು ಒದಗಿಸಲು ಮತ್ತು ಅವಲಂಬನೆಗಳನ್ನು ನಿರ್ವಹಿಸಲು, ಯೋಜನೆಯು ಕಾರ್ಗೋ ಪ್ಯಾಕೇಜ್ ಮ್ಯಾನೇಜರ್ ಅನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸುತ್ತದೆ. ಲೈಬ್ರರಿಗಳನ್ನು ಹೋಸ್ಟ್ ಮಾಡಲು crates.io ರೆಪೊಸಿಟರಿಯನ್ನು ಬೆಂಬಲಿಸಲಾಗುತ್ತದೆ.
ಕಂಪೈಲ್ ಸಮಯದಲ್ಲಿ ಕಂಪೈಲ್ ಸಮಯದಲ್ಲಿ ಮೆಮೊರಿ ಸುರಕ್ಷತೆಯನ್ನು ಒದಗಿಸಲಾಗುತ್ತದೆ, ಆಬ್ಜೆಕ್ಟ್ ಮಾಲೀಕತ್ವವನ್ನು ಟ್ರ್ಯಾಕ್ ಮಾಡುವುದು, ಆಬ್ಜೆಕ್ಟ್ ಜೀವಿತಾವಧಿಯನ್ನು (ಸ್ಕೋಪ್ಗಳು) ಟ್ರ್ಯಾಕ್ ಮಾಡುವುದು ಮತ್ತು ಕೋಡ್ ಎಕ್ಸಿಕ್ಯೂಶನ್ ಸಮಯದಲ್ಲಿ ಮೆಮೊರಿ ಪ್ರವೇಶದ ಸರಿಯಾದತೆಯನ್ನು ನಿರ್ಣಯಿಸುವುದು. ರಸ್ಟ್ ಪೂರ್ಣಾಂಕದ ಉಕ್ಕಿ ಹರಿಯುವಿಕೆಯಿಂದ ರಕ್ಷಣೆ ನೀಡುತ್ತದೆ, ಬಳಕೆಗೆ ಮೊದಲು ವೇರಿಯಬಲ್ ಮೌಲ್ಯಗಳ ಕಡ್ಡಾಯ ಆರಂಭದ ಅಗತ್ಯವಿರುತ್ತದೆ, ಪ್ರಮಾಣಿತ ಗ್ರಂಥಾಲಯದಲ್ಲಿ ದೋಷಗಳನ್ನು ಉತ್ತಮವಾಗಿ ನಿರ್ವಹಿಸುತ್ತದೆ, ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ ಬದಲಾಗದ ಉಲ್ಲೇಖಗಳು ಮತ್ತು ವೇರಿಯೇಬಲ್ಗಳ ಪರಿಕಲ್ಪನೆಯನ್ನು ಅನ್ವಯಿಸುತ್ತದೆ, ತಾರ್ಕಿಕ ದೋಷಗಳನ್ನು ಕಡಿಮೆ ಮಾಡಲು ಬಲವಾದ ಸ್ಥಿರ ಟೈಪಿಂಗ್ ಅನ್ನು ನೀಡುತ್ತದೆ.
ಮುಖ್ಯ ಆವಿಷ್ಕಾರಗಳು:
- ಡೀಫಾಲ್ಟ್ ಪ್ರೋಗ್ರಾಂ ಕ್ರ್ಯಾಶ್ ಹ್ಯಾಂಡ್ಲರ್ (ಪ್ಯಾನಿಕ್) ಮೂಲಕ ನೀಡಲಾದ ಸಂದೇಶಗಳ ಸ್ವರೂಪವನ್ನು ಮರುವಿನ್ಯಾಸಗೊಳಿಸಲಾಗಿದೆ. "ಪ್ಯಾನಿಕ್!" ನಲ್ಲಿ ಪಠ್ಯವನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಲಾಗಿದೆ ಈಗ ಉದ್ಧರಣ ಚಿಹ್ನೆಗಳಿಲ್ಲದೆ ಪ್ರತ್ಯೇಕ ಸಾಲಿನಲ್ಲಿ ತೋರಿಸಲಾಗಿದೆ, ಸಂದೇಶವನ್ನು ಓದಲು ಸುಲಭಗೊಳಿಸುತ್ತದೆ ಮತ್ತು ನೆಸ್ಟೆಡ್ ಉಲ್ಲೇಖಗಳು ಇರುವಾಗ ಅಥವಾ ಬಹು ಸಾಲುಗಳಲ್ಲಿ ವಿಭಜಿಸಿದಾಗ ಗೊಂದಲವನ್ನು ನಿವಾರಿಸುತ್ತದೆ. fn ಮುಖ್ಯ() {ಲೆಟ್ ಫೈಲ್ = "ferris.txt"; ಪ್ಯಾನಿಕ್!("ಓಹ್ ಇಲ್ಲ! {ಫೈಲ್:?} ಕಂಡುಬಂದಿಲ್ಲ!"); } ಥ್ರೆಡ್ 'ಮುಖ್ಯ' ಇತ್ತು 'ಓಹ್ ಇಲ್ಲ! "ferris.txt" ಕಂಡುಬಂದಿಲ್ಲ!', src/main.rs:3:5 ಥ್ರೆಡ್ 'main' src/main.rs:3:5 ನಲ್ಲಿ ಭಯಭೀತಗೊಂಡಿದೆ: ಓಹ್ ಇಲ್ಲ! "ferris.txt" ಕಂಡುಬಂದಿಲ್ಲ!
“assert_eq” ಮತ್ತು “assert_ne” ಮ್ಯಾಕ್ರೋಗಳನ್ನು ಪ್ರಚೋದಿಸಿದಾಗ ತೋರಿಸಲಾದ ಸಂದೇಶಗಳ ಔಟ್ಪುಟ್ ಅನ್ನು ಸಹ ಮರು ಕೆಲಸ ಮಾಡಲಾಗಿದೆ. fn main() { assert_eq!("🦀", "🐟", "ferris is not a fish"); } ಪ್ರತಿಪಾದನೆ ವಿಫಲವಾದಾಗ ಥ್ರೆಡ್ 'ಮುಖ್ಯ' ಗಾಬರಿಯಾಗಿತ್ತು: `(ಎಡ == ಬಲ)` ಎಡ: `"🦀"`, ಬಲ: `"🐟"`: ಫೆರ್ರಿಸ್ ಮೀನು ಅಲ್ಲ', src/main.rs: 2 :5 ಥ್ರೆಡ್ 'ಮುಖ್ಯ' src/main.rs:2:5 ನಲ್ಲಿ ಭಯಭೀತಗೊಂಡಿದೆ: `ಎಡ == ಬಲ` ಸಮರ್ಥನೆ ವಿಫಲವಾಗಿದೆ: ಫೆರ್ರಿಸ್ ಮೀನಲ್ಲ ಉಳಿದಿದೆ: “🦀” ಬಲ: “🐟”
- RFC 3184 ಗೆ ಅನುಗುಣವಾಗಿ, ಥ್ರೆಡ್-ಲೋಕಲ್ (thread_local) LocalKey ಶೇಖರಣಾ ಕೀಗಳನ್ನು ನೇರವಾಗಿ ಕುಶಲತೆಯಿಂದ ನಿರ್ವಹಿಸುವ ಸಾಮರ್ಥ್ಯವನ್ನು ಸೇರಿಸಲಾಗಿದೆ > ಮತ್ತು ಲೋಕಲ್ಕೀ > ಗೆಟ್(), ಸೆಟ್(), ಟೇಕ್() ಮತ್ತು ರಿಪ್ಲೇಸ್() ವಿಧಾನಗಳ ಬಳಕೆಯ ಮೂಲಕ, "ವಿತ್(|ಒಳ| ...)" ಮುಚ್ಚುವಿಕೆಯನ್ನು ಬಳಸುವ ಬದಲು, ಇದು ಹೆಚ್ಚುವರಿ ಇನಿಶಿಯಲೈಸೇಶನ್ ಕೋಡ್ ಅನ್ನು ನಿರ್ವಹಿಸುವ ಅಗತ್ಯವನ್ನು ನಿವಾರಿಸುತ್ತದೆ. ಮ್ಯಾಕ್ರೋ "thread_local!" ಅನ್ನು ಬಳಸುವಾಗ ಹೊಸ ಥ್ರೆಡ್ಗಳಿಗಾಗಿ ಡೀಫಾಲ್ಟ್ ಮೌಲ್ಯಗಳನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಲಾಗಿದೆ ಥ್ರೆಡ್_ಸ್ಥಳೀಯ! {ಸ್ಥಿರ ವಿಷಯಗಳು: ಕೋಶ > = ಸೆಲ್::ಹೊಸ(Vec::new()); } fn f() { // THINGS.with(|i| i.set(vec![32, 1, 2])); // ಆಯಿತು THINGS.set(vec![3, 1, 2]); // ... // v = THINGS.with(|i| i.take()); // ಲೆಟ್ v: ವೆಕ್ ಆಯಿತು = THINGS.take(); }
- API ಯ ಹೊಸ ಭಾಗವನ್ನು ಸ್ಥಿರತೆಯ ವರ್ಗಕ್ಕೆ ಸರಿಸಲಾಗಿದೆ, ಇದರಲ್ಲಿ ವಿಧಾನಗಳು ಮತ್ತು ಗುಣಲಕ್ಷಣಗಳ ಅನುಷ್ಠಾನಗಳನ್ನು ಸ್ಥಿರಗೊಳಿಸಲಾಗಿದೆ:
- ಸಹಿ ಮಾಡದ {integer} ::div_ceil
- ಸಹಿ ಮಾಡದ {integer} ::next_multiple_of
- ಸಹಿ ಮಾಡದ {integer}::checked_next_multiple_of
- std::ffi::FromBytesUntilNulError
- std::os::unix::fs::ಚೌನ್
- std::os::unix::fs::fchown
- std::os::unix::fs::lfchown
- ಸ್ಥಳೀಯ ಕೀ:: >::ಪಡೆಯಿರಿ
- ಸ್ಥಳೀಯ ಕೀ:: >:: ಸೆಟ್
- ಸ್ಥಳೀಯ ಕೀ:: >::ತೆಗೆದುಕೊಳ್ಳಿ
- ಸ್ಥಳೀಯ ಕೀ:: >::ಬದಲಿ
- ಸ್ಥಳೀಯ ಕೀ:: >::ಸಾಲದೊಂದಿಗೆ
- ಸ್ಥಳೀಯ ಕೀ:: >::ಸಾಲದ_ಮುಟ್
- ಸ್ಥಳೀಯ ಕೀ:: >:: ಸೆಟ್
- ಸ್ಥಳೀಯ ಕೀ:: >::ತೆಗೆದುಕೊಳ್ಳಿ
- ಸ್ಥಳೀಯ ಕೀ:: >::ಬದಲಿ
- ಸ್ಥಿರಾಂಕಗಳ ಬದಲಿಗೆ ಯಾವುದೇ ಸಂದರ್ಭದಲ್ಲಿ ಅದನ್ನು ಬಳಸುವ ಸಾಧ್ಯತೆಯನ್ನು ನಿರ್ಧರಿಸುವ "const" ಗುಣಲಕ್ಷಣವನ್ನು ಕಾರ್ಯಗಳಲ್ಲಿ ಬಳಸಲಾಗುತ್ತದೆ:
- rc::ದುರ್ಬಲ::ಹೊಸ
- ಸಿಂಕ್:: ದುರ್ಬಲ::ಹೊಸ
- ಶೂನ್ಯವಲ್ಲದ:: as_ref
- GCC ಮತ್ತು ಕ್ಲಾಂಗ್ನಂತೆಯೇ ".comment" ವಿಭಾಗದಲ್ಲಿ ಕಂಪೈಲರ್ ಆವೃತ್ತಿಯ ಮಾಹಿತಿಯ ರೆಕಾರ್ಡಿಂಗ್ ಅನ್ನು ಒದಗಿಸುತ್ತದೆ.
- ಮೂರನೇ ಹಂತದ ಬೆಂಬಲವನ್ನು aarch64-unknown-teeos, csky-unknown-linux-gnuabiv2, riscv64-linux-android, riscv64gc-ಅಜ್ಞಾತ-ಹರ್ಮಿಟ್, x86_64-unikraft-linux-musl ಮತ್ತು x86_64xunknown-linuXNUMX ಪ್ಲಾಟ್ಫಾರ್ಮ್ಗಳಿಗೆ ಅಳವಡಿಸಲಾಗಿದೆ. -ಓಹೋಸ್. ಮೂರನೇ ಹಂತವು ಮೂಲಭೂತ ಬೆಂಬಲವನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ, ಆದರೆ ಸ್ವಯಂಚಾಲಿತ ಪರೀಕ್ಷೆ ಇಲ್ಲದೆ, ಅಧಿಕೃತ ನಿರ್ಮಾಣಗಳನ್ನು ಪ್ರಕಟಿಸುವುದು ಅಥವಾ ಕೋಡ್ ಅನ್ನು ನಿರ್ಮಿಸಬಹುದೇ ಎಂದು ಪರಿಶೀಲಿಸುವುದು.
- ಟಾರ್ಗೆಟ್ ಪ್ಲಾಟ್ಫಾರ್ಮ್ wasm32-wasi-preview1-threads ಗೆ ಎರಡನೇ ಹಂತದ ಬೆಂಬಲವನ್ನು ಅಳವಡಿಸಲಾಗಿದೆ. ಎರಡನೇ ಹಂತದ ಬೆಂಬಲವು ಅಸೆಂಬ್ಲಿ ಗ್ಯಾರಂಟಿಯನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ.
ಮೂಲ: opennet.ru
