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

ರಸ್ಟ್ 1.68 ಸಾಮಾನ್ಯ-ಉದ್ದೇಶದ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಯ ಬಿಡುಗಡೆಯನ್ನು ಮೊಜಿಲ್ಲಾ ಯೋಜನೆಯಿಂದ ಸ್ಥಾಪಿಸಲಾಗಿದೆ, ಆದರೆ ಈಗ ಸ್ವತಂತ್ರ ಲಾಭೋದ್ದೇಶವಿಲ್ಲದ ಸಂಸ್ಥೆ ರಸ್ಟ್ ಫೌಂಡೇಶನ್ ಆಶ್ರಯದಲ್ಲಿ ಅಭಿವೃದ್ಧಿಪಡಿಸಲಾಗಿದೆ. ಭಾಷೆ ಮೆಮೊರಿ ಸುರಕ್ಷತೆಯ ಮೇಲೆ ಕೇಂದ್ರೀಕರಿಸುತ್ತದೆ ಮತ್ತು ಕಸ ಸಂಗ್ರಾಹಕ ಮತ್ತು ರನ್ಟೈಮ್ ಬಳಕೆಯನ್ನು ತಪ್ಪಿಸುವ ಸಂದರ್ಭದಲ್ಲಿ ಹೆಚ್ಚಿನ ಕೆಲಸದ ಸಮಾನಾಂತರತೆಯನ್ನು ಸಾಧಿಸಲು ಸಾಧನಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ (ರನ್ಟೈಮ್ ಅನ್ನು ಮೂಲ ಪ್ರಾರಂಭ ಮತ್ತು ಪ್ರಮಾಣಿತ ಗ್ರಂಥಾಲಯದ ನಿರ್ವಹಣೆಗೆ ಕಡಿಮೆ ಮಾಡಲಾಗಿದೆ).

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

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

ಮುಖ್ಯ ಆವಿಷ್ಕಾರಗಳು:

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

    ಪೂರ್ಣ ಸೂಚ್ಯಂಕವನ್ನು ಡೌನ್‌ಲೋಡ್ ಮಾಡುವುದರಿಂದ ಉಂಟಾಗುವ ವಿಳಂಬವನ್ನು ಕಡಿಮೆ ಮಾಡಲು, Git ಅನ್ನು ಬಳಸಿಕೊಂಡು ಸೂಚ್ಯಂಕವನ್ನು ಪ್ರವೇಶಿಸುವ ಬದಲು Sparse ನಿರ್ದಿಷ್ಟ ಯೋಜನೆಯ ಅವಲಂಬನೆಗಳನ್ನು ಒಳಗೊಂಡಿರುವ ಅಗತ್ಯ ಸೂಚ್ಯಂಕ ಡೇಟಾವನ್ನು ಮಾತ್ರ HTTPS ಮೂಲಕ ನೇರವಾಗಿ ಡೌನ್‌ಲೋಡ್ ಮಾಡುವುದನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ. ಹೊಸ ಸೇವೆ, index.crates.io, ಸೂಚ್ಯಂಕ ಡೇಟಾವನ್ನು ಒದಗಿಸಲು ಬಳಸಲಾಗುತ್ತದೆ. ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ, ಹೊಸ ಪ್ರೋಟೋಕಾಲ್ ಅನ್ನು ರಸ್ಟ್ 1.70 ಶಾಖೆಯಲ್ಲಿ ಬಳಸಲು ಯೋಜಿಸಲಾಗಿದೆ, ಮತ್ತು ಅದಕ್ಕೂ ಮೊದಲು, ಅದನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲು, ನೀವು ಪರಿಸರ ವೇರಿಯಬಲ್ "CARGO_REGISTRIES_CRATES_IO_PROTOCOL = ವಿರಳ" ಅನ್ನು ಹೊಂದಿಸಬಹುದು ಅಥವಾ 'ಪ್ರೋಟೋಕಾಲ್ =' ಪ್ಯಾರಾಮೀಟರ್ ಅನ್ನು "[ರಿಜಿಸ್ಟ್ರೀಸ್" ಗೆ ಸೇರಿಸಬಹುದು. crates-io]" .cargo/config.toml ಫೈಲ್‌ನ ವಿಭಾಗ 'ಸ್ಪರ್ಸ್'.

  • "ಪಿನ್!" ಮ್ಯಾಕ್ರೋ ಅನ್ನು ಸೇರಿಸಲಾಗಿದೆ, ಇದು "ಟಿ" ಎಂಬ ಅಭಿವ್ಯಕ್ತಿಯಿಂದ ಅದರ ಸ್ಥಿತಿಯ ಸ್ಥಳೀಯ ಪಿನ್ನಿಂಗ್‌ನಿಂದ ಪಿನ್ <&ಮಟ್ ಟಿ> ರಚನೆಯನ್ನು ರಚಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ (ಬಾಕ್ಸ್:: ಪಿನ್‌ನಂತೆ, ಇದು ರಾಶಿಯ ಮೇಲೆ ಮೆಮೊರಿಯನ್ನು ನಿಯೋಜಿಸುವುದಿಲ್ಲ, ಆದರೆ ಬಂಧಿಸುತ್ತದೆ ಸ್ಟಾಕ್ ಮಟ್ಟದಲ್ಲಿ).
  • ಸ್ಟ್ಯಾಂಡರ್ಡ್ ಅಲೋಕ್ ಪ್ಯಾಕೇಜ್ ಅನ್ನು ಬಳಸುವಾಗ ಡೀಫಾಲ್ಟ್ ಮೆಮೊರಿ ಹಂಚಿಕೆ ದೋಷ ಹ್ಯಾಂಡ್ಲರ್ ಅನ್ನು ಪ್ರಸ್ತಾಪಿಸಲಾಗಿದೆ. ಅಲೋಕ್ ಅನ್ನು ಮಾತ್ರ ಸಕ್ರಿಯಗೊಳಿಸುವ ಅಪ್ಲಿಕೇಶನ್‌ಗಳು (ಎಸ್‌ಟಿಡಿ ಇಲ್ಲದೆ) ಈಗ ಮೆಮೊರಿ ಹಂಚಿಕೆ ವಿಫಲವಾದಾಗ "ಪ್ಯಾನಿಕ್!" ಹ್ಯಾಂಡ್ಲರ್ ಅನ್ನು ಕರೆಯುತ್ತದೆ, ಇದನ್ನು ಐಚ್ಛಿಕವಾಗಿ "#[ಪ್ಯಾನಿಕ್_ಹ್ಯಾಂಡ್ಲರ್]" ಬಳಸಿ ತಡೆಹಿಡಿಯಬಹುದು. std ಲೈಬ್ರರಿಯನ್ನು ಬಳಸುವ ಪ್ರೋಗ್ರಾಂಗಳು ದೋಷದ ಮಾಹಿತಿಯನ್ನು stderr ಮತ್ತು ಕ್ರ್ಯಾಶ್‌ಗೆ ಮುದ್ರಿಸುವುದನ್ನು ಮುಂದುವರಿಸುತ್ತವೆ.
  • API ಯ ಹೊಸ ಭಾಗವನ್ನು ಸ್ಥಿರತೆಯ ವರ್ಗಕ್ಕೆ ಸರಿಸಲಾಗಿದೆ, ಇದರಲ್ಲಿ ವಿಧಾನಗಳು ಮತ್ತು ಗುಣಲಕ್ಷಣಗಳ ಅನುಷ್ಠಾನಗಳನ್ನು ಸ್ಥಿರಗೊಳಿಸಲಾಗಿದೆ:
    • {core,std}::pin::pin!
    • ಇಂಪ್ಲ್ ನಿಂದ {f32,f64} ಗೆ
    • std::path::MAIN_SEPARATOR_STR
    • PathBuf ಗಾಗಿ Impl DerefMut
  • ಸ್ಥಿರಾಂಕಗಳ ಬದಲಿಗೆ ಯಾವುದೇ ಸಂದರ್ಭದಲ್ಲಿ ಅದನ್ನು ಬಳಸುವ ಸಾಧ್ಯತೆಯನ್ನು ನಿರ್ಧರಿಸುವ "const" ಗುಣಲಕ್ಷಣವನ್ನು VecDeque ::ಹೊಸ ಕಾರ್ಯದಲ್ಲಿ ಬಳಸಲಾಗುತ್ತದೆ.
  • Android ಪ್ಲಾಟ್‌ಫಾರ್ಮ್‌ನಲ್ಲಿ ಕೆಲಸ ಮಾಡಲು, ಕನಿಷ್ಠ NDK r25 (API 19) ಈಗ ಅಗತ್ಯವಿದೆ, ಅಂದರೆ. ಕನಿಷ್ಠ ಬೆಂಬಲಿತ ಆಂಡ್ರಾಯ್ಡ್ ಆವೃತ್ತಿಯನ್ನು 4.4 (ಕಿಟ್‌ಕ್ಯಾಟ್) ಗೆ ಏರಿಸಲಾಗಿದೆ.
  • ಸೋನಿ ಪ್ಲೇಸ್ಟೇಷನ್ ವೀಟಾ ಪ್ಲಾಟ್‌ಫಾರ್ಮ್‌ಗಾಗಿ ಮೂರನೇ ಹಂತದ ಬೆಂಬಲವನ್ನು ಅಳವಡಿಸಲಾಗಿದೆ (armv7-sony-vita-newlibeabihf). ಮೂರನೇ ಹಂತವು ಮೂಲಭೂತ ಬೆಂಬಲವನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ, ಆದರೆ ಸ್ವಯಂಚಾಲಿತ ಪರೀಕ್ಷೆ ಇಲ್ಲದೆ, ಅಧಿಕೃತ ನಿರ್ಮಾಣಗಳನ್ನು ಪ್ರಕಟಿಸುವುದು ಅಥವಾ ಕೋಡ್ ಅನ್ನು ನಿರ್ಮಿಸಬಹುದೇ ಎಂದು ಪರಿಶೀಲಿಸುವುದು.

ಮೂಲ: opennet.ru

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