ಲಿನಕ್ಸ್ ಕರ್ನಲ್ 5.18 ಸಿ ಭಾಷೆಯ ಪ್ರಮಾಣಿತ C11 ಬಳಕೆಯನ್ನು ಅನುಮತಿಸಲು ಯೋಜಿಸಿದೆ

ಲಿಂಕ್ ಮಾಡಲಾದ ಪಟ್ಟಿ ಕೋಡ್‌ನಲ್ಲಿ ಸ್ಪೆಕ್ಟರ್-ಸಂಬಂಧಿತ ಸಮಸ್ಯೆಗಳನ್ನು ಸರಿಪಡಿಸಲು ಪ್ಯಾಚ್‌ಗಳ ಗುಂಪನ್ನು ಚರ್ಚಿಸುವಾಗ, ಕರ್ನಲ್‌ಗೆ ಹೊಸ ಆವೃತ್ತಿಯ ಮಾನದಂಡವನ್ನು ಅನುಸರಿಸುವ C ಕೋಡ್ ಅನ್ನು ಅನುಮತಿಸಿದರೆ ಸಮಸ್ಯೆಯನ್ನು ಹೆಚ್ಚು ಆಕರ್ಷಕವಾಗಿ ಪರಿಹರಿಸಬಹುದು ಎಂಬುದು ಸ್ಪಷ್ಟವಾಯಿತು. ಪ್ರಸ್ತುತ, ಸೇರಿಸಲಾದ ಕರ್ನಲ್ ಕೋಡ್ ANSI C (C89) ವಿವರಣೆಯನ್ನು ಅನುಸರಿಸಬೇಕು, ಇದನ್ನು 1989 ರಲ್ಲಿ ರಚಿಸಲಾಗಿದೆ.

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

ಲಿನಸ್ ಟೊರ್ವಾಲ್ಡ್ಸ್ ಹೊಸ ವಿಶೇಷಣಗಳಿಗೆ ಬೆಂಬಲವನ್ನು ಅಳವಡಿಸುವ ಕಲ್ಪನೆಯನ್ನು ಒಪ್ಪಿಕೊಂಡರು ಮತ್ತು 5.18 ರಲ್ಲಿ ಪ್ರಕಟವಾದ C11 ಮಾನದಂಡವನ್ನು ಬಳಸಲು 2011 ಕರ್ನಲ್ ಅನ್ನು ಸರಿಸಲು ಪ್ರಸ್ತಾಪಿಸಿದರು. ಪ್ರಾಥಮಿಕ ಪರೀಕ್ಷೆಯ ಸಮಯದಲ್ಲಿ, ಹೊಸ ಮೋಡ್‌ನಲ್ಲಿ GCC ಮತ್ತು ಕ್ಲಾಂಗ್‌ನಲ್ಲಿ ಅಸೆಂಬ್ಲಿ ವಿಚಲನಗಳಿಲ್ಲದೆ ಅಂಗೀಕರಿಸಲ್ಪಟ್ಟಿದೆ. ಹೆಚ್ಚು ಕೂಲಂಕಷ ಪರೀಕ್ಷೆಯ ಸಮಯದಲ್ಲಿ ಯಾವುದೇ ಅನಿರೀಕ್ಷಿತ ಸಮಸ್ಯೆಗಳು ಉದ್ಭವಿಸದಿದ್ದರೆ, 5.18 ಕರ್ನಲ್ ಬಿಲ್ಡ್ ಸ್ಕ್ರಿಪ್ಟ್‌ಗಳಲ್ಲಿನ '--std=gnu89' ಆಯ್ಕೆಯನ್ನು '--std=gnu11 -Wno-shift-negative-value' ನೊಂದಿಗೆ ಬದಲಾಯಿಸಲಾಗುತ್ತದೆ. C17 ಮಾನದಂಡವನ್ನು ಬಳಸುವ ಸಾಧ್ಯತೆಯನ್ನು ಸಹ ಪರಿಗಣಿಸಲಾಗಿದೆ, ಆದರೆ ಈ ಸಂದರ್ಭದಲ್ಲಿ GCC ಯ ಕನಿಷ್ಠ ಬೆಂಬಲಿತ ಆವೃತ್ತಿಯನ್ನು ಹೆಚ್ಚಿಸುವುದು ಅಗತ್ಯವಾಗಿರುತ್ತದೆ. C11 ಬೆಂಬಲದ ಸೇರ್ಪಡೆಯು GCC ಆವೃತ್ತಿಗೆ (5.1) ಪ್ರಸ್ತುತ ಅವಶ್ಯಕತೆಗಳಿಗೆ ಸರಿಹೊಂದುತ್ತದೆ.

ಮೂಲ: opennet.ru

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