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

Go 1.18 ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಯ ಬಿಡುಗಡೆಯನ್ನು ಪ್ರಸ್ತುತಪಡಿಸಲಾಗಿದೆ, ಇದನ್ನು ಹೈಬ್ರಿಡ್ ಪರಿಹಾರವಾಗಿ ಸಮುದಾಯದ ಭಾಗವಹಿಸುವಿಕೆಯೊಂದಿಗೆ Google ಅಭಿವೃದ್ಧಿಪಡಿಸುತ್ತಿದೆ, ಇದು ಕಂಪೈಲ್ ಮಾಡಿದ ಭಾಷೆಗಳ ಉನ್ನತ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಸ್ಕ್ರಿಪ್ಟಿಂಗ್ ಭಾಷೆಯ ಅನುಕೂಲಗಳೊಂದಿಗೆ ಕೋಡ್ ಬರೆಯಲು ಸುಲಭವಾಗಿದೆ. , ಅಭಿವೃದ್ಧಿಯ ವೇಗ ಮತ್ತು ದೋಷ ರಕ್ಷಣೆ. ಯೋಜನೆಯ ಕೋಡ್ ಅನ್ನು BSD ಪರವಾನಗಿ ಅಡಿಯಲ್ಲಿ ವಿತರಿಸಲಾಗಿದೆ.

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

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

ಹೊಸ ಆವೃತ್ತಿಯು ಜೆನೆರಿಕ್ ಕಾರ್ಯಗಳು ಮತ್ತು ಪ್ರಕಾರಗಳಿಗೆ (ಜೆನೆರಿಕ್ಸ್) ಬೆಂಬಲವನ್ನು ಸೇರಿಸುತ್ತದೆ, ಇದರ ಸಹಾಯದಿಂದ ಡೆವಲಪರ್ ಹಲವಾರು ಪ್ರಕಾರಗಳೊಂದಿಗೆ ಏಕಕಾಲದಲ್ಲಿ ಕೆಲಸ ಮಾಡಲು ವಿನ್ಯಾಸಗೊಳಿಸಿದ ಕಾರ್ಯಗಳನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಬಹುದು ಮತ್ತು ಬಳಸಬಹುದು. ಬಹು ಡೇಟಾ ಪ್ರಕಾರಗಳನ್ನು ವ್ಯಾಪಿಸಿರುವ ಸಂಯೋಜಿತ ಪ್ರಕಾರಗಳನ್ನು ರಚಿಸಲು ಇಂಟರ್ಫೇಸ್‌ಗಳನ್ನು ಬಳಸಲು ಸಹ ಸಾಧ್ಯವಿದೆ. ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಕೋಡ್‌ನೊಂದಿಗೆ ಹಿಂದುಳಿದ ಹೊಂದಾಣಿಕೆಯನ್ನು ಮುರಿಯದೆ ಜೆನೆರಿಕ್ಸ್‌ಗೆ ಬೆಂಬಲವನ್ನು ಅಳವಡಿಸಲಾಗಿದೆ. // ಮೊತ್ತ ಸೆಟ್ ಮೌಲ್ಯಗಳು, int64 ಮತ್ತು float64 ಪ್ರಕಾರಗಳ ಫಂಕ್ SumIntsOrFloats[K ಹೋಲಿಸಬಹುದಾದ, V int64 | float64](m map[K]V) V {var s V for _, v := range m { s += v } return s } // ಒಂದು ಸಾಮಾನ್ಯ ಪ್ರಕಾರದ ವ್ಯಾಖ್ಯಾನದೊಂದಿಗೆ ಮತ್ತೊಂದು ಆಯ್ಕೆ: ಟೈಪ್ ಸಂಖ್ಯೆ ಇಂಟರ್ಫೇಸ್ { int64 | float64 } func SumNumbers[K ಹೋಲಿಸಬಹುದಾದ, V ಸಂಖ್ಯೆ](m ನಕ್ಷೆ[K]V) V {var s V for _, v:= range m { s += v } return s }

ಇತರ ಸುಧಾರಣೆಗಳು:

  • ಫಝಿಂಗ್ ಕೋಡ್ ಪರೀಕ್ಷೆಗಾಗಿ ಉಪಯುಕ್ತತೆಗಳನ್ನು ಪ್ರಮಾಣಿತ ಟೂಲ್ಕಿಟ್ಗೆ ಸಂಯೋಜಿಸಲಾಗಿದೆ. ಅಸ್ಪಷ್ಟ ಪರೀಕ್ಷೆಯ ಸಮಯದಲ್ಲಿ, ಇನ್‌ಪುಟ್ ಡೇಟಾದ ಎಲ್ಲಾ ಸಂಭವನೀಯ ಯಾದೃಚ್ಛಿಕ ಸಂಯೋಜನೆಗಳ ಸ್ಟ್ರೀಮ್ ಅನ್ನು ರಚಿಸಲಾಗುತ್ತದೆ ಮತ್ತು ಅವುಗಳ ಪ್ರಕ್ರಿಯೆಯಲ್ಲಿ ಸಂಭವನೀಯ ವೈಫಲ್ಯಗಳನ್ನು ದಾಖಲಿಸಲಾಗುತ್ತದೆ. ಅನುಕ್ರಮವು ಕ್ರ್ಯಾಶ್ ಆಗಿದ್ದರೆ ಅಥವಾ ನಿರೀಕ್ಷಿತ ಪ್ರತಿಕ್ರಿಯೆಗೆ ಹೊಂದಿಕೆಯಾಗದಿದ್ದರೆ, ಈ ನಡವಳಿಕೆಯು ದೋಷ ಅಥವಾ ದುರ್ಬಲತೆಯನ್ನು ಸೂಚಿಸುವ ಸಾಧ್ಯತೆಯಿದೆ.
  • ಬಹು-ಮಾಡ್ಯುಲರ್ ಕಾರ್ಯಸ್ಥಳಗಳಿಗೆ ಬೆಂಬಲವನ್ನು ಸೇರಿಸಲಾಗಿದೆ, ಏಕಕಾಲದಲ್ಲಿ ಬಹು ಮಾಡ್ಯೂಲ್‌ಗಳಲ್ಲಿ ಆಜ್ಞೆಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ, ಏಕಕಾಲದಲ್ಲಿ ಅನೇಕ ಮಾಡ್ಯೂಲ್‌ಗಳಲ್ಲಿ ಕೋಡ್ ಅನ್ನು ನಿರ್ಮಿಸಲು ಮತ್ತು ರನ್ ಮಾಡಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ.
  • Apple M1, ARM64 ಮತ್ತು PowerPC64 ಪ್ರೊಸೆಸರ್‌ಗಳ ಆಧಾರದ ಮೇಲೆ ಸಿಸ್ಟಮ್‌ಗಳಿಗೆ ಗಮನಾರ್ಹ ಕಾರ್ಯಕ್ಷಮತೆಯ ಆಪ್ಟಿಮೈಸೇಶನ್‌ಗಳನ್ನು ಮಾಡಲಾಗಿದೆ. ಫಂಕ್ಷನ್‌ಗಳಿಗೆ ಆರ್ಗ್ಯುಮೆಂಟ್‌ಗಳನ್ನು ರವಾನಿಸಲು ಮತ್ತು ಫಲಿತಾಂಶವನ್ನು ಹಿಂತಿರುಗಿಸಲು ಸ್ಟಾಕ್‌ನ ಬದಲಿಗೆ ರೆಜಿಸ್ಟರ್‌ಗಳನ್ನು ಬಳಸುವ ಸಾಮರ್ಥ್ಯವನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ. ಕಂಪೈಲರ್‌ನಿಂದ ಲೂಪ್‌ಗಳ ಸುಧಾರಿತ ಇನ್‌ಲೈನ್ ಅನ್‌ರೋಲಿಂಗ್. ಕಂಪೈಲರ್‌ನಲ್ಲಿ ಟೈಪ್ ಚೆಕ್ ಅನ್ನು ಸಂಪೂರ್ಣವಾಗಿ ಮರುವಿನ್ಯಾಸಗೊಳಿಸಲಾಗಿದೆ. ಹಿಂದಿನ ಬಿಡುಗಡೆಗೆ ಹೋಲಿಸಿದರೆ ಕೆಲವು ಪರೀಕ್ಷೆಗಳು ಕೋಡ್ ಕಾರ್ಯಕ್ಷಮತೆಯಲ್ಲಿ 20% ಹೆಚ್ಚಳವನ್ನು ತೋರಿಸುತ್ತವೆ, ಆದರೆ ಸಂಕಲನವು 15% ಹೆಚ್ಚು ಸಮಯ ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ.
  • ರನ್ಟೈಮ್ನಲ್ಲಿ, ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ಗೆ ಮುಕ್ತವಾದ ಮೆಮೊರಿಯನ್ನು ಹಿಂದಿರುಗಿಸುವ ದಕ್ಷತೆಯನ್ನು ಹೆಚ್ಚಿಸಲಾಗಿದೆ ಮತ್ತು ಕಸ ಸಂಗ್ರಾಹಕನ ಕಾರ್ಯಾಚರಣೆಯನ್ನು ಸುಧಾರಿಸಲಾಗಿದೆ, ಅದರ ನಡವಳಿಕೆಯು ಹೆಚ್ಚು ಊಹಿಸಬಹುದಾದಂತಿದೆ.
  • ಹೊಸ ಪ್ಯಾಕೇಜ್‌ಗಳು net/netip ಮತ್ತು ಡೀಬಗ್/buildinfo ಅನ್ನು ಪ್ರಮಾಣಿತ ಗ್ರಂಥಾಲಯಕ್ಕೆ ಸೇರಿಸಲಾಗಿದೆ. ಕ್ಲೈಂಟ್ ಕೋಡ್‌ನಲ್ಲಿ ಡೀಫಾಲ್ಟ್ ಆಗಿ TLS 1.0 ಮತ್ತು 1.1 ಗೆ ಬೆಂಬಲವನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ. ಕ್ರಿಪ್ಟೋ/x509 ಮಾಡ್ಯೂಲ್ SHA-1 ಹ್ಯಾಶ್ ಬಳಸಿ ಸಹಿ ಮಾಡಿದ ಪ್ರಮಾಣಪತ್ರಗಳನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸುವುದನ್ನು ನಿಲ್ಲಿಸಿದೆ.
  • ಲಿನಕ್ಸ್‌ನಲ್ಲಿನ ಪರಿಸರದ ಅವಶ್ಯಕತೆಗಳನ್ನು ಹೆಚ್ಚಿಸಲಾಗಿದೆ; ಕೆಲಸ ಮಾಡಲು, ನೀವು ಈಗ ಕನಿಷ್ಠ ಆವೃತ್ತಿ 2.6.32 ರ ಲಿನಕ್ಸ್ ಕರ್ನಲ್ ಅನ್ನು ಹೊಂದಿರಬೇಕು. ಮುಂದಿನ ಬಿಡುಗಡೆಯಲ್ಲಿ, FreeBSD ಗಾಗಿ ಇದೇ ರೀತಿಯ ಬದಲಾವಣೆಗಳನ್ನು ನಿರೀಕ್ಷಿಸಲಾಗಿದೆ (FreeBSD 11.x ಶಾಖೆಗೆ ಬೆಂಬಲವನ್ನು ನಿಲ್ಲಿಸಲಾಗುತ್ತದೆ) ಮತ್ತು ಕನಿಷ್ಠ FreeBSD 12.2 ಕಾರ್ಯನಿರ್ವಹಿಸಲು ಅಗತ್ಯವಿದೆ.

ಮೂಲ: opennet.ru

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