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

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

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

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

  • rustc ಕಂಪೈಲರ್‌ನಲ್ಲಿ ಭದ್ರಪಡಿಸಲಾಗಿದೆ ಕೋಡ್ ಪ್ರೊಫೈಲಿಂಗ್ ಫಲಿತಾಂಶಗಳ ಆಧಾರದ ಮೇಲೆ ಆಪ್ಟಿಮೈಸೇಶನ್‌ಗೆ ಬೆಂಬಲ (PGO, ಪ್ರೊಫೈಲ್-ಗೈಡೆಡ್ ಆಪ್ಟಿಮೈಸೇಶನ್),
    ಪ್ರೋಗ್ರಾಂ ಎಕ್ಸಿಕ್ಯೂಶನ್ ಸಮಯದಲ್ಲಿ ಸಂಗ್ರಹವಾದ ಅಂಕಿಅಂಶಗಳ ವಿಶ್ಲೇಷಣೆಯ ಆಧಾರದ ಮೇಲೆ ಹೆಚ್ಚು ಸೂಕ್ತವಾದ ಕೋಡ್ ಅನ್ನು ರಚಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ. ಪ್ರೊಫೈಲ್ ಅನ್ನು ರಚಿಸಲು, “-C ಪ್ರೊಫೈಲ್-ಜನರೇಟ್” ಫ್ಲ್ಯಾಗ್ ಅನ್ನು ಒದಗಿಸಲಾಗಿದೆ ಮತ್ತು ಅಸೆಂಬ್ಲಿ ಸಮಯದಲ್ಲಿ ಪ್ರೊಫೈಲ್ ಅನ್ನು ಬಳಸಲು - “-C ಪ್ರೊಫೈಲ್-ಬಳಕೆ” (ಆರಂಭದಲ್ಲಿ, ಪ್ರೋಗ್ರಾಂ ಅನ್ನು ಮೊದಲ ಫ್ಲ್ಯಾಗ್‌ನೊಂದಿಗೆ ಜೋಡಿಸಲಾಗುತ್ತದೆ, ಸುತ್ತಲೂ ಚಲಿಸುತ್ತದೆ ಮತ್ತು ರಚಿಸಿದ ನಂತರ ಪ್ರೊಫೈಲ್, ಅದನ್ನು ಎರಡನೇ ಧ್ವಜದೊಂದಿಗೆ ಮರುಜೋಡಿಸಲಾಗಿದೆ);

  • ಕನ್ಸೋಲ್ ಅಪ್ಲಿಕೇಶನ್‌ಗಳನ್ನು ತ್ವರಿತವಾಗಿ ಪರೀಕ್ಷಿಸಲು ಬಳಸಲು ಅನುಕೂಲಕರವಾದ “ಕಾರ್ಗೋ ರನ್” ಆಜ್ಞೆಯನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುವಾಗ, ಪ್ಯಾಕೇಜ್‌ನಲ್ಲಿ ಹಲವಾರು ಕಾರ್ಯಗತಗೊಳಿಸಬಹುದಾದ ಫೈಲ್‌ಗಳಿದ್ದರೆ ಚಲಾಯಿಸಲು ಕಾರ್ಯಗತಗೊಳಿಸಬಹುದಾದ ಫೈಲ್ ಅನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಆಯ್ಕೆ ಮಾಡುವ ಸಾಮರ್ಥ್ಯವನ್ನು ಸೇರಿಸಲಾಗಿದೆ. ಎಕ್ಸಿಕ್ಯೂಟ್ ಮಾಡಬೇಕಾದ ಡೀಫಾಲ್ಟ್ ಫೈಲ್ ಅನ್ನು ಪ್ಯಾಕೇಜ್ ಪ್ಯಾರಾಮೀಟರ್‌ಗಳೊಂದಿಗೆ [ಪ್ಯಾಕೇಜ್] ವಿಭಾಗದಲ್ಲಿ ಡೀಫಾಲ್ಟ್-ರನ್ ನಿರ್ದೇಶನದ ಮೂಲಕ ನಿರ್ಧರಿಸಲಾಗುತ್ತದೆ, ಇದು ನೀವು ಪ್ರತಿ ಬಾರಿ "ಕಾರ್ಗೋ ರನ್" ಅನ್ನು ರನ್ ಮಾಡಿದಾಗ "-ಬಿನ್" ಫ್ಲ್ಯಾಗ್ ಮೂಲಕ ಫೈಲ್ ಹೆಸರನ್ನು ಸ್ಪಷ್ಟವಾಗಿ ಸೂಚಿಸುವುದನ್ನು ತಪ್ಪಿಸಲು ಅನುಮತಿಸುತ್ತದೆ;
  • "ಸರಕು ಮಾರಾಟಗಾರ" ಆಜ್ಞೆಯನ್ನು ಹಿಂದೆ ಒದಗಿಸಲಾಗಿದೆ ಪ್ರತ್ಯೇಕ ಪ್ಯಾಕೇಜ್. ಅವಲಂಬನೆಗಳ ಸ್ಥಳೀಯ ಪ್ರತಿಯೊಂದಿಗೆ ಕೆಲಸವನ್ನು ಸಂಘಟಿಸಲು ಆಜ್ಞೆಯು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ - “ಸರಕು ಮಾರಾಟಗಾರ” ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಿದ ನಂತರ, ಯೋಜನೆಯ ಅವಲಂಬನೆಗಳ ಎಲ್ಲಾ ಮೂಲ ಕೋಡ್‌ಗಳನ್ನು crates.io ನಿಂದ ಸ್ಥಳೀಯ ಡೈರೆಕ್ಟರಿಗೆ ಡೌನ್‌ಲೋಡ್ ಮಾಡಲಾಗುತ್ತದೆ, ನಂತರ ಅದನ್ನು ಕ್ರೇಟ್‌ಗಳನ್ನು ಪ್ರವೇಶಿಸದೆ ಕೆಲಸಕ್ಕಾಗಿ ಬಳಸಬಹುದು. io (ಆದೇಶವನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಿದ ನಂತರ, ಸಂರಚನೆಯನ್ನು ಬದಲಾಯಿಸುವ ಸುಳಿವನ್ನು ಬಿಲ್ಡ್‌ಗಳಿಗಾಗಿ ಡೈರೆಕ್ಟರಿಯನ್ನು ಬಳಸಲು ತೋರಿಸಲಾಗುತ್ತದೆ). ಬಿಡುಗಡೆಯೊಂದಿಗೆ ಒಂದು ಆರ್ಕೈವ್‌ನಲ್ಲಿ ಎಲ್ಲಾ ಅವಲಂಬನೆಗಳ ಪ್ಯಾಕೇಜಿಂಗ್‌ನೊಂದಿಗೆ rustc ಕಂಪೈಲರ್‌ನ ವಿತರಣೆಯನ್ನು ಸಂಘಟಿಸಲು ಈ ವೈಶಿಷ್ಟ್ಯವನ್ನು ಈಗಾಗಲೇ ಬಳಸಲಾಗುತ್ತದೆ;
  • ಟೈಪ್ ಅಲಿಯಾಸ್‌ಗಳನ್ನು ಬಳಸಿಕೊಂಡು enum ಆಯ್ಕೆಗಳಿಗೆ ಲಿಂಕ್‌ಗಳನ್ನು ರಚಿಸಲು ಈಗ ಸಾಧ್ಯವಿದೆ (ಉದಾಹರಣೆಗೆ, “fn increment_or_zero(x: ByteOption) ಕಾರ್ಯದ ದೇಹದಲ್ಲಿ ನೀವು “ByteOption::None => 0” ಅನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಬಹುದು), ಲೆಕ್ಕಾಚಾರದ ರಚನೆಗಳನ್ನು ಟೈಪ್ ಮಾಡಿ (‹ MyType‹.. ››::option => N) ಅಥವಾ ಸ್ವಯಂ ಪ್ರವೇಶಗಳು (c &self ಬ್ಲಾಕ್‌ಗಳಲ್ಲಿ ನೀವು "Self:: Quarter => 25" ಅನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಬಹುದು);
  • ಮ್ಯಾಕ್ರೋಗಳಲ್ಲಿ ಹೆಸರಿಸದ ಸ್ಥಿರಾಂಕಗಳನ್ನು ರಚಿಸುವ ಸಾಮರ್ಥ್ಯವನ್ನು ಸೇರಿಸಲಾಗಿದೆ. "const" ನಲ್ಲಿ ಅಂಶದ ಹೆಸರನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುವ ಬದಲು, ನೀವು ಇದೀಗ "_" ಅಕ್ಷರವನ್ನು ಕ್ರಿಯಾತ್ಮಕವಾಗಿ ಪುನರಾವರ್ತಿತವಲ್ಲದ ಗುರುತಿಸುವಿಕೆಯನ್ನು ಆಯ್ಕೆ ಮಾಡಲು ಬಳಸಬಹುದು, ಮ್ಯಾಕ್ರೋಗೆ ಮತ್ತೆ ಕರೆ ಮಾಡುವಾಗ ಹೆಸರು ಸಂಘರ್ಷಗಳನ್ನು ತಪ್ಪಿಸಬಹುದು;
  • "#[repr(align(N))" ಗುಣಲಕ್ಷಣವನ್ನು enums ಜೊತೆಗೆ ಒಂದು ಸಿಂಟ್ಯಾಕ್ಸ್ ಅನ್ನು ಬಳಸಿಕೊಂಡು ಒಂದು AlignN‹T› ರಚನೆಯನ್ನು ಜೋಡಣೆಯೊಂದಿಗೆ ವ್ಯಾಖ್ಯಾನಿಸುವ ಮತ್ತು ನಂತರ AlignN‹MyEnum› ಅನ್ನು ಬಳಸುವ ಸಾಮರ್ಥ್ಯವನ್ನು ಸೇರಿಸಲಾಗಿದೆ;
  • API ಯ ಹೊಸ ಭಾಗವನ್ನು ಬಫ್ ರೀಡರ್::ಬಫರ್, ಬಫ್ ರೈಟರ್::ಬಫರ್, ಮತ್ತು ಸೇರಿದಂತೆ ಸ್ಥಿರ ವರ್ಗಕ್ಕೆ ಸರಿಸಲಾಗಿದೆ
    ಕೋಶ::from_mut,
    ಕೋಶ:: ಕೋಶಗಳ_ಸ್ಲೈಸ್,
    DoubleEndedIterator :: nth_back,
    ಆಯ್ಕೆ::xor
    {i,u}{8,16,64,128,size}::reverse_bits, ರಾಪಿಂಗ್::reverse_bits ಮತ್ತು
    ಸ್ಲೈಸ್:: ನಕಲು_ಒಳಗೆ.

ಹೆಚ್ಚುವರಿಯಾಗಿ, ಇದನ್ನು ಗಮನಿಸಬಹುದು ಪರೀಕ್ಷೆಯ ಪ್ರಾರಂಭ ಯೋಜನೆ Async-std, ಇದು ರಸ್ಟ್ ಸ್ಟ್ಯಾಂಡರ್ಡ್ ಲೈಬ್ರರಿಯ ಅಸಮಕಾಲಿಕ ರೂಪಾಂತರವನ್ನು ನೀಡುತ್ತದೆ (ಎಸ್‌ಟಿಡಿ ಲೈಬ್ರರಿಯ ಪೋರ್ಟ್, ಇದರಲ್ಲಿ ಎಲ್ಲಾ ಇಂಟರ್‌ಫೇಸ್‌ಗಳನ್ನು ಅಸಿಂಕ್ ಆವೃತ್ತಿಯಲ್ಲಿ ನೀಡಲಾಗುತ್ತದೆ ಮತ್ತು ಅಸಿಂಕ್/ವೇಯ್ಟ್ ಸಿಂಟ್ಯಾಕ್ಸ್‌ನೊಂದಿಗೆ ಬಳಸಲು ಸಿದ್ಧವಾಗಿದೆ).

ಮೂಲ: opennet.ru

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