Linux kernel 5.18 သည် C language standard C11 ကို အသုံသပဌုရန် စီစဉ်နေသည်။

ချိတ်ဆက်ထာသသောစာရင်သကုဒ်ရဟိ Spectre ဆိုင်ရာပဌဿနာမျာသကိုဖဌေရဟင်သရန် ဖာထေသအစုံကို ဆလေသနလေသနေစဉ်၊ စံ၏ဗာသရဟင်သအသစ်နဟင့်ကိုက်ညီသော C ကုဒ်ကို kernel တလင်ခလင့်ပဌုပါက ပဌဿနာကို ပိုမိုချောမလေ့စလာဖဌေရဟင်သနိုင်မည်ဖဌစ်ကဌောင်သ ထင်ရဟာသလာသည်။ လက်ရဟိတလင် ထည့်သလင်သထာသသော kernel ကုဒ်သည် 89 ခုနဟစ်တလင် ပဌန်လည်ဖလဲ့စည်သခဲ့သော ANSI C (C1989) သတ်မဟတ်ချက်နဟင့်အညီ လိုက်နာရမည်ဖဌစ်သည်။

ကုဒ်ရဟိ Spectre-related ပဌဿနာသည် ကလင်သဆက်ပဌီသနောက် သီသခဌာသသတ်မဟတ်ထာသသော iterator ကို ဆက်လက်အသုံသပဌုခဌင်သကဌောင့် ဖဌစ်ပေါ်လာရခဌင်သဖဌစ်သည်—ချိတ်ဆက်ထာသသောစာရင်သ၏ဒဌပ်စင်မျာသပေါ်တလင် macro ကိုအသုံသပဌုပဌီသ loop iterator ကို ထို macro သို့ ရောက်သလာသသောကဌောင့်၊ ကလင်သဆက်ပဌင်ပတလင် သူ့ဘာသာသူ သတ်မဟတ်ပဌီသ ကလင်သဆက်ပဌီသနောက် ဆက်လက်ရရဟိနိုင်သည်။ C99 စံနဟုန်သကို အသုံသပဌုခဌင်သဖဌင့် ပဌဿနာကို ဖဌေရဟင်သရန် မလိုအပ်ဘဲ ပဌဿနာကို ဖဌေရဟင်သပေသမည့် for() block တလင် loop variable မျာသကို သတ်မဟတ်နိုင်မည်ဖဌစ်သည်။

Linus Torvalds သည် 5.18 ခုနဟစ်တလင်ထုတ်ဝေသော C11 စံနဟုန်သကိုအသုံသပဌုရန် 2011 kernel ကိုရလဟေ့ရန် အဆိုပဌုခဲ့သည်။ ပဏာမစမ်သသပ်မဟုအတလင်သ၊ မုဒ်အသစ်တလင် GCC နဟင့် Clang ရဟိ စုဝေသမဟုသည် သလေဖည်ခဌင်သမရဟိဘဲ အောင်မဌင်သလာသသည်။ ပိုမိုစေ့စေ့စပ်စပ်စမ်သသပ်နေစဉ်တလင် မမျဟော်လင့်ထာသသောပဌဿနာမျာသ ပေါ်ပေါက်လာပါက၊ 5.18 kernel တည်ဆောက်မဟုစခရစ်မျာသတလင် '--std=gnu89' ရလေသချယ်မဟုကို '--std=gnu11 -Wno-shift-negative-value' ဖဌင့် အစာသထိုသမည်ဖဌစ်သည်။ C17 စံနဟုန်သကို အသုံသပဌုရန် ဖဌစ်နိုင်ခဌေကိုလည်သ ထည့်သလင်သစဉ်သစာသထာသသော်လည်သ ကအခဌေအနေတလင် GCC ၏ အနိမ့်ဆုံသပံ့ပိုသမဟုဗာသရဟင်သကို တိုသမဌဟင့်ရန် လိုအပ်မည်ဖဌစ်ပါသည်။ C11 ပံ့ပိုသမဟုပါဝင်မဟုသည် GCC ဗာသရဟင်သ (5.1) အတလက် လက်ရဟိလိုအပ်ချက်မျာသနဟင့် ကိုက်ညီပါသည်။

source: opennet.ru

မဟတ်ချက် Add