ರಸ್ಟ್ 1.47 ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಯ ಬಿಡುಗಡೆ

ಪ್ರಕಟಿಸಲಾಗಿದೆ ಸಿಸ್ಟಮ್ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಯ 1.47 ಅನ್ನು ಬಿಡುಗಡೆ ಮಾಡಿ ತುಕ್ಕು, ಮೊಜಿಲ್ಲಾ ಯೋಜನೆಯಿಂದ ಸ್ಥಾಪಿಸಲಾಗಿದೆ. ಭಾಷೆಯು ಮೆಮೊರಿ ಸುರಕ್ಷತೆಯ ಮೇಲೆ ಕೇಂದ್ರೀಕರಿಸುತ್ತದೆ, ಸ್ವಯಂಚಾಲಿತ ಮೆಮೊರಿ ನಿರ್ವಹಣೆಯನ್ನು ಒದಗಿಸುತ್ತದೆ ಮತ್ತು ಬಳಸದೆಯೇ ಹೆಚ್ಚಿನ ಕಾರ್ಯ ಸಮಾನಾಂತರತೆಯನ್ನು ಸಾಧಿಸುವ ವಿಧಾನವನ್ನು ಒದಗಿಸುತ್ತದೆ ಕಸ ಸಂಗ್ರಾಹಕ и ರನ್ಟೈಮ್ (ಪ್ರಮಾಣಿತ ಗ್ರಂಥಾಲಯದ ಮೂಲ ಪ್ರಾರಂಭ ಮತ್ತು ನಿರ್ವಹಣೆಗೆ ರನ್ಟೈಮ್ ಕುದಿಯುತ್ತದೆ).

ರಸ್ಟ್‌ನ ಸ್ವಯಂಚಾಲಿತ ಮೆಮೊರಿ ನಿರ್ವಹಣೆಯು ಪಾಯಿಂಟರ್‌ಗಳನ್ನು ನಿರ್ವಹಿಸುವಾಗ ದೋಷಗಳನ್ನು ನಿವಾರಿಸುತ್ತದೆ ಮತ್ತು ಕಡಿಮೆ ಮಟ್ಟದ ಮೆಮೊರಿ ಮ್ಯಾನಿಪ್ಯುಲೇಷನ್‌ನಿಂದ ಉಂಟಾಗುವ ಸಮಸ್ಯೆಗಳಿಂದ ರಕ್ಷಿಸುತ್ತದೆ, ಉದಾಹರಣೆಗೆ ಮೆಮೊರಿ ಪ್ರದೇಶವನ್ನು ಮುಕ್ತಗೊಳಿಸಿದ ನಂತರ ಪ್ರವೇಶಿಸುವುದು, ಶೂನ್ಯ ಪಾಯಿಂಟರ್ ಡಿರೆಫರೆನ್ಸ್, ಬಫರ್ ಓವರ್‌ರನ್‌ಗಳು ಇತ್ಯಾದಿ. ಲೈಬ್ರರಿಗಳನ್ನು ವಿತರಿಸಲು, ಜೋಡಣೆಯನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲು ಮತ್ತು ಯೋಜನೆಯ ಮೂಲಕ ಅವಲಂಬನೆಗಳನ್ನು ನಿರ್ವಹಿಸಲು ಪ್ಯಾಕೇಜ್ ಮ್ಯಾನೇಜರ್ ಅನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸಲಾಗುತ್ತಿದೆ. ಕಾರ್ಗೋ. ಲೈಬ್ರರಿಗಳನ್ನು ಹೋಸ್ಟ್ ಮಾಡಲು ರೆಪೊಸಿಟರಿಯನ್ನು ಬೆಂಬಲಿಸಲಾಗುತ್ತದೆ crates.io.

ಮುಖ್ಯ ನಾವೀನ್ಯತೆಗಳು:

  • ವಿಧಗಳಿಗೆ ಬೆಂಬಲವನ್ನು ಅಳವಡಿಸಲಾಗಿದೆ ಸರಣಿಗಳು ಅನಿಯಂತ್ರಿತ ಗಾತ್ರ. ಹಿಂದೆ, ಎಲ್ಲಾ ಪೂರ್ಣಾಂಕ ಮೌಲ್ಯಗಳಿಗೆ ಜೆನೆರಿಕ್ ಫಂಕ್ಷನ್‌ಗಳನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಲು ಅಸಮರ್ಥತೆಯಿಂದಾಗಿ, ಸ್ಟ್ಯಾಂಡರ್ಡ್ ಲೈಬ್ರರಿಯು 32 ಅಂಶಗಳ ಗಾತ್ರದವರೆಗಿನ ಸರಣಿಗಳಿಗೆ ಮಾತ್ರ ಅಂತರ್ನಿರ್ಮಿತ ಗುಣಲಕ್ಷಣ ಬೆಂಬಲವನ್ನು ಒದಗಿಸಿದೆ (ಪ್ರತಿ ಗಾತ್ರದ ಗುಣಲಕ್ಷಣಗಳನ್ನು ಸ್ಥಿರವಾಗಿ ವ್ಯಾಖ್ಯಾನಿಸಲಾಗಿದೆ). ಸ್ಥಿರವಾದ ಜೆನೆರಿಕ್ಸ್ ("ಕಾನ್ಸ್ಟ್ ಜೆನೆರಿಕ್ಸ್") ಕಾರ್ಯನಿರ್ವಹಣೆಯ ರಚನೆಗೆ ಧನ್ಯವಾದಗಳು, ಯಾವುದೇ ರಚನೆಯ ಗಾತ್ರಕ್ಕೆ ಜೆನೆರಿಕ್ ಕಾರ್ಯಗಳನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಲು ಸಾಧ್ಯವಾಯಿತು, ಆದರೆ ಅವುಗಳನ್ನು ಇನ್ನೂ ಸ್ಥಿರ ಭಾಷಾ ವೈಶಿಷ್ಟ್ಯಗಳಲ್ಲಿ ಸೇರಿಸಲಾಗಿಲ್ಲ, ಆದರೂ ಅವುಗಳನ್ನು ಕಂಪೈಲರ್‌ನಲ್ಲಿ ಅಳವಡಿಸಲಾಗಿದೆ ಮತ್ತು ಅವು ಈಗ ತೊಡಗಿಸಿಕೊಂಡಿದೆ ಯಾವುದೇ ಗಾತ್ರದ ರಚನೆಯ ಗುಣಲಕ್ಷಣಗಳಿಗಾಗಿ ಪ್ರಮಾಣಿತ ಗ್ರಂಥಾಲಯದಲ್ಲಿ.

    ಉದಾಹರಣೆಗೆ, ರಸ್ಟ್ 1.47 ನಲ್ಲಿನ ಕೆಳಗಿನ ರಚನೆಯು ರಚನೆಯ ವಿಷಯಗಳನ್ನು ಮುದ್ರಿಸುತ್ತದೆ, ಆದಾಗ್ಯೂ ಇದು ಹಿಂದೆ ದೋಷವನ್ನು ಉಂಟುಮಾಡುತ್ತದೆ:

    fn ಮುಖ್ಯ() {
    xs = [0; 34];

    println!("{:?}", xs);
    }

  • ಚಿಕ್ಕ ಕುರುಹುಗಳ ಔಟ್ಪುಟ್ (ಬ್ಯಾಕ್ಟ್ರೇಸ್), ತುರ್ತು ಸಂದರ್ಭಗಳಲ್ಲಿ ಔಟ್ಪುಟ್ ಅನ್ನು ಒದಗಿಸಲಾಗಿದೆ. ಹೆಚ್ಚಿನ ಸಂದರ್ಭಗಳಲ್ಲಿ ಆಸಕ್ತಿಯಿಲ್ಲದ ಅಂಶಗಳು, ಆದರೆ ಔಟ್ಪುಟ್ ಅನ್ನು ಅಸ್ತವ್ಯಸ್ತಗೊಳಿಸುತ್ತವೆ ಮತ್ತು ಸಮಸ್ಯೆಯ ಪ್ರಾಥಮಿಕ ಕಾರಣಗಳಿಂದ ಗಮನವನ್ನು ಬೇರೆಡೆಗೆ ಸೆಳೆಯುತ್ತವೆ, ಜಾಡಿನಿಂದ ಹೊರಗಿಡಲಾಗುತ್ತದೆ. ಪೂರ್ಣ ಜಾಡನ್ನು ಹಿಂತಿರುಗಿಸಲು, ನೀವು ಪರಿಸರ ವೇರಿಯಬಲ್ "RUST_BACKTRACE=full" ಅನ್ನು ಬಳಸಬಹುದು. ಉದಾಹರಣೆಗೆ, ಕೋಡ್ಗಾಗಿ

    fn ಮುಖ್ಯ() {
    ದಿಗಿಲು!();
    }

    ಹಿಂದೆ, ಜಾಡಿನ 23 ಹಂತಗಳಲ್ಲಿ ಔಟ್ಪುಟ್ ಆಗಿತ್ತು, ಆದರೆ ಈಗ ಅದನ್ನು ಕಡಿಮೆ ಮಾಡಲಾಗುತ್ತದೆ
    ಸಾರವನ್ನು ತಕ್ಷಣವೇ ಗ್ರಹಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುವ 3 ಹಂತಗಳು:

    ಥ್ರೆಡ್ 'ಮುಖ್ಯ' 'ಸ್ಪಷ್ಟ ಪ್ಯಾನಿಕ್' ನಲ್ಲಿ ಪ್ಯಾನಿಕ್ಡ್, src/main.rs:2:5
    ಸ್ಟಾಕ್ ಬ್ಯಾಕ್‌ಟ್ರೇಸ್:
    0: std::panicking::begin_panic
    ನಲ್ಲಿ /rustc/d…d75a/library/std/src/panicking.rs:497
    1: ಆಟದ ಮೈದಾನ::ಮುಖ್ಯ
    ./src/main.rs:2 ನಲ್ಲಿ
    2: core::ops::function::FnOnce::call_one
    ನಲ್ಲಿ /rustc/d…d75a/library/core/src/ops/function.rs:227

  • ಬಳಸಿ ನಿರ್ಮಿಸಲು rustc ಕಂಪೈಲರ್ ಅನ್ನು ನವೀಕರಿಸಲಾಗಿದೆ LLVM 11 (ತುಕ್ಕು ಉಪಯೋಗಿಸುತ್ತದೆ LLVM ಬ್ಯಾಕೆಂಡ್ ಆಗಿ ಕೋಡ್ ಉತ್ಪಾದನೆ) ಅದೇ ಸಮಯದಲ್ಲಿ, ಆವೃತ್ತಿ 8 ರವರೆಗೆ ಹಳೆಯ LLVM ಗಳೊಂದಿಗೆ ನಿರ್ಮಿಸುವ ಸಾಮರ್ಥ್ಯವನ್ನು ಉಳಿಸಿಕೊಳ್ಳಲಾಗಿದೆ, ಆದರೆ ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ (ಇನ್ rust-lang/llvm-project) ಈಗ LLVM 11 ಅನ್ನು ಬಳಸುತ್ತಿದೆ. LLVM 11 ಮುಂಬರುವ ದಿನಗಳಲ್ಲಿ ಬಿಡುಗಡೆಯಾಗುವ ನಿರೀಕ್ಷೆಯಿದೆ.
  • ವಿಂಡೋಸ್ ಪ್ಲಾಟ್‌ಫಾರ್ಮ್‌ನಲ್ಲಿ, "-C ಕಂಟ್ರೋಲ್-ಫ್ಲೋ-ಗಾರ್ಡ್" ಫ್ಲ್ಯಾಗ್ ಬಳಸಿ ಸಕ್ರಿಯಗೊಳಿಸಲಾದ ನಿಯಂತ್ರಣ ಹರಿವಿನ ಸಮಗ್ರತೆಯ ಪರಿಶೀಲನೆಗಳನ್ನು (ಕಂಟ್ರೋಲ್ ಫ್ಲೋ ಗಾರ್ಡ್) ಸಕ್ರಿಯಗೊಳಿಸಲು rustc ಕಂಪೈಲರ್ ಬೆಂಬಲವನ್ನು ಒದಗಿಸುತ್ತದೆ. ಇತರ ಪ್ಲಾಟ್‌ಫಾರ್ಮ್‌ಗಳಲ್ಲಿ ಈ ಧ್ವಜವನ್ನು ಸದ್ಯಕ್ಕೆ ನಿರ್ಲಕ್ಷಿಸಲಾಗಿದೆ.
  • API ಗಳ ಹೊಸ ಭಾಗವನ್ನು ಸ್ಥಿರಗೊಳಿಸಿದ ಸೇರಿದಂತೆ ಸ್ಥಿರ ವರ್ಗಕ್ಕೆ ವರ್ಗಾಯಿಸಲಾಗಿದೆ
    ಗುರುತು:: new_raw,
    ಶ್ರೇಣಿ::ಇಸ್_ಖಾಲಿ,
    ಶ್ರೇಣಿಯನ್ನು ಒಳಗೊಂಡಂತೆ:: is_empty,
    ಫಲಿತಾಂಶ::as_deref,
    ಫಲಿತಾಂಶ::as_deref_mut,
    Vec:: ಸೋರಿಕೆ,
    ಪಾಯಿಂಟರ್::offset_from,
    f32::TAU ಮತ್ತು
    f64::TAU.

  • ಸ್ಥಿರಾಂಕಗಳ ಬದಲಿಗೆ ಯಾವುದೇ ಸಂದರ್ಭದಲ್ಲಿ ಅದನ್ನು ಬಳಸುವ ಸಾಧ್ಯತೆಯನ್ನು ನಿರ್ಧರಿಸುವ "const" ಗುಣಲಕ್ಷಣವನ್ನು ವಿಧಾನಗಳಲ್ಲಿ ಬಳಸಲಾಗುತ್ತದೆ:
    • ಶೂನ್ಯವನ್ನು ಹೊರತುಪಡಿಸಿ ಎಲ್ಲಾ ಪೂರ್ಣಾಂಕಗಳಿಗೆ ಹೊಸದು;
    • ಚೆಕ್ಡ್_ಆಡ್, ಚೆಕ್ಡ್_ಸಬ್, ಚೆಕ್ಡ್_ಮುಲ್, ಚೆಕ್ಡ್_ನೆಗ್, ಚೆಕ್ಡ್_ಶ್ಲ್, ಚೆಕ್ಡ್_ಶ್ರ್, ಸ್ಯಾಚುರೇಟಿಂಗ್_ಆಡ್, ಸ್ಯಾಚುರೇಟಿಂಗ್_ಸಬ್ ಮತ್ತು ಸ್ಯಾಚುರೇಟಿಂಗ್_ಮುಲ್ ಎಲ್ಲಾ ಪೂರ್ಣಾಂಕಗಳಿಗೆ;
    • is_ascii_alphabetic, is_ascii_uppercase, is_ascii_loorcase, is_ascii_alphanumeric, is_ascii_digit, is_ascii_hexdigit, is_ascii_Punctuation, is_ascii_graphic, is_ascii_whitespace ಮತ್ತು 8 ವಿಧಗಳು
  • FreeBSD ಗಾಗಿ ತೊಡಗಿಸಿಕೊಂಡಿದೆ FreeBSD 11.4 ರಿಂದ ಟೂಲ್ಕಿಟ್ (FreeBSD 10 LLVM 11 ಅನ್ನು ಬೆಂಬಲಿಸುವುದಿಲ್ಲ).

ಮೂಲ: opennet.ru

ಕಾಮೆಂಟ್ ಅನ್ನು ಸೇರಿಸಿ