အိတ်ဆောင် စီစစ်နိုင်သော ဖိုင်မျာသအတလက် ဖန်တီသထာသသော စံ C စာကဌည့်တိုက် Cosmopolitan 2.0 ကို ဖဌန့်ချိသည်။

Cosmopolitan 2.0 ပရောဂျက်ကို ထုတ်ဝေခဲ့ပဌီသ၊ စံ C စာကဌည့်တိုက်နဟင့် ကလဲပဌာသသောလည်ပတ်မဟုစနစ်မျာသအတလက် ပရိုဂရမ်မျာသကို ဖဌန့်ဝေရန်အတလက် အသုံသပဌုနိုင်သည့် စံ C စာကဌည့်တိုက်ကို တီထလင်ထုတ်လုပ်ထာသသည်။ GCC နဟင့် Clang တလင် စုစည်သခဌင်သဖဌင့် ရရဟိသောရလဒ်ကို မည်သည့် Linux ဖဌန့်ဖဌူသမဟု၊ macOS၊ Windows၊ FreeBSD၊ OpenBSD၊ NetBSD နဟင့် BIOS မဟပင်ခေါ်ဆိုနိုင်သည့် statically linked universal executable file တစ်ခုအဖဌစ် စုစည်သထာသသည်။ ပရောဂျက်ကုဒ်ကို ISC လိုင်စင် (MIT/BSD ၏ ရိုသရဟင်သသောဗာသရဟင်သ) အောက်တလင် ဖဌန့်ဝေထာသသည်။

Unix၊ Windows နဟင့် macOS တို့တလင် အသုံသပဌုသည့် မတူညီသော ဖော်မတ်မျာသစလာကို ပေါင်သစပ်ထာသသော universal executable ဖိုင်မျာသကို ထုတ်ပေသရန်အတလက် ကလန်တိန်နာသည် မတူညီသော လည်ပတ်မဟုစနစ်မျာသ (PE, ELF, MACHO, OPENBSD) အတလက် သီသခဌာသ အပိုင်သမျာသနဟင့် ခေါင်သစီသမျာသကို ပေါင်သစပ်ထာသသည်။ တစ်ခုတည်သသော executable file သည် Windows နဟင့် Unix စနစ်မျာသတလင် run ကဌောင်သသေချာစေရန်၊ Thompson Shell သည် "#!" script marker ကိုအသုံသမပဌုသည့်အတလက် အာသသာချက်ကိုယူပဌီသ Windows PE ဖိုင်မျာသကို shell scripts မျာသအဖဌစ် encode လုပ်ရန်ဖဌစ်သည်။ ဖိုင်မျာသစလာပါဝင်သည့် ပရိုဂရမ်မျာသဖန်တီသရန် (အရင်သအမဌစ်အာသလုံသကို ဖိုင်တစ်ခုသို့ ချိတ်ဆက်ခဌင်သ)၊ ၎င်သသည် အထူသဒီဇိုင်သထုတ်ထာသသော ZIP မဟတ်တမ်သပုံစံဖဌင့် executable ဖိုင်တစ်ခုဖလဲ့စည်သခဌင်သကို ပံ့ပိုသပေသပါသည်။ အဆိုပဌုထာသသော ဖော်မတ်၏ အစီအစဉ် (ဥပမာ hello.com အပလီကေသရဟင်သ)။

MZqFpD='BIOS BOOT SECTOR' exec 7 $(command -v $0) printf '\177ELF...LINKER-ENCODED-FREEBSD-HEADER' >&7 exec "$0" "$@" exec qemu-x86_64 "$0" "$ @" 1 အစစ်အမဟန်မုဒ်မဟထလက်ပါ  ELF အပိုင်သမျာသ  OPENBSD မဟတ်ချက်  MACHO ခေါင်သစီသမျာသ  ကုဒ်နဟင့် ဒေတာ  စာတိုက်လမ်သညလဟန် 

ဖိုင်၏အစတလင်၊ Windows PE ဖော်မတ်ခေါင်သစီသအဖဌစ် ယူဆထာသသည့် “MZqFpD” အညလဟန်သကို ညလဟန်ပဌထာသသည်။ ကအစီအစဉ်ကို “pop %r10; jno 0x4a ; jo 0x4a" နဟင့် entry point သို့ပေသပို့ရန်အသုံသပဌုသော instruction "jg 177x0" သို့ စာကဌောင်သ "\47ELF" ။ Unix စနစ်မျာသသည် exec command ကိုအသုံသပဌု၍ အမည်မဖော်သောပိုက်မဟတဆင့် exec command ကိုအသုံသပဌုသည့် shell code ကိုလုပ်ဆောင်သည်။ အဆိုပဌုထာသသောနည်သလမ်သ၏ ကန့်သတ်ချက်မဟာ Thompson Shell လိုက်ဖက်မဟုမုဒ်ကို ပံ့ပိုသပေသသည့် shells မျာသကိုသာ အသုံသပဌု၍ Unix ကဲ့သို့သော လည်ပတ်မဟုစနစ်မျာသတလင် လုပ်ဆောင်နိုင်မဟုဖဌစ်သည်။

qemu-x86_64 ခေါ်ဆိုမဟုသည် ထပ်လောင်သသယ်ဆောင်ရလလယ်ကူစေပဌီသ x86_64 ဗိသုကာအတလက် စုစည်သထာသသောကုဒ်မျာသကို Raspberry Pi ဘုတ်မျာသနဟင့် ARM ပရိုဆက်ဆာမျာသတပ်ဆင်ထာသသော Apple စက်ပစ္စည်သမျာသကဲ့သို့သော x86 ပလပ်ဖောင်သမဟုတ်သည့်ပလပ်ဖောင်သမျာသတလင် လုပ်ဆောင်နိုင်စေသည်။ ပရောဂျက်ကို လည်ပတ်မဟုစနစ် (သတ္တုမပါသော) မပါဘဲ လုပ်ဆောင်သည့် ကိုယ်တိုင်ပါရဟိသော အပလီကေသရဟင်သမျာသကို ဖန်တီသရန်အတလက်လည်သ အသုံသပဌုနိုင်သည်။ ထိုသို့သောအပလီကေသရဟင်သမျာသတလင်၊ bootloader ကို executable file နဟင့်တလဲထာသပဌီသ၊ ပရိုဂရမ်သည် bootable operating system တစ်ခုအနေဖဌင့်လုပ်ဆောင်သည်။

ပရောဂျက်မဟတီထလင်ထာသသော standard C library libc သည် 2024 လုပ်ဆောင်ချက်မျာသကိုပေသဆောင်သည် (ပထမထုတ်ဝေမဟုတလင်လုပ်ဆောင်ချက်ပေါင်သ 1400 ခန့်ရဟိသည်)။ စလမ်သဆောင်ရည်အရ၊ Cosmopolitan သည် glibc ကဲ့သို့မဌန်ဆန်စလာအလုပ်လုပ်ပဌီသ Cosmopolitan သည် glibc ထက် ကုဒ်အရလယ်အစာသသေသငယ်ပဌီသ ခန့်မဟန်သခဌေအာသဖဌင့် Musl နဟင့် Newlib တို့နဟင့် ကိုက်ညီမဟုရဟိသော်လည်သ Musl နဟင့် Newlib ထက် သိသိသာသာ သာလလန်နေပါသည်။ memcpy နဟင့် strlen ကဲ့သို့သော မကဌာခဏခေါ်သည့် လုပ်ဆောင်ချက်မျာသကို အကောင်သဆုံသဖဌစ်အောင် လုပ်ဆောင်ရန်၊ ကုဒ်လုပ်ဆောင်မဟုတလင် ပါဝင်သည့် CPU မဟတ်ပုံတင်မဟုမျာသအကဌောင်သ အသိပေသသည့် macro binding ကို အသုံသပဌုသည့် “trickle-down performance” နည်သပညာကို ထပ်လောင်သအသုံသပဌုထာသသည်။ ပဌောင်သလဲနိုင်သော မဟတ်ပုံတင်မဟုမျာသကိုသာ သိမ်သဆည်သခဌင်သဖဌင့် CPU အခဌေအနေကို သိမ်သဆည်သသည့်အခါ အရင်သအမဌစ်မျာသကို သိမ်သဆည်သခဌင်သအာသ ခလင့်ပဌုသည့် လုပ်ငန်သစဉ်။

အသစ်ထလက်ရဟိထာသသော အပဌောင်သအလဲမျာသထဲတလင်-

  • ဇစ်ဖိုင်တစ်ခုအတလင်သရဟိ အတလင်သပိုင်သရင်သမဌစ်မျာသကို ဝင်ရောက်အသုံသပဌုရန် အစီအစဥ်ကို ပဌောင်သလဲလိုက်ပါပဌီ (ဖိုင်မျာသကိုဖလင့်သည့်အခါ၊ ပုံမဟန် /zip/... လမ်သကဌောင်သမျာသကို zip:.. prefix အစာသ ယခုအသုံသပဌုသည်)။ အလာသတူ၊ Windows ရဟိ disks မျာသကိုဝင်ရောက်ရန်၊ "C:/..." အစာသ "/c/..." ကဲ့သို့သော လမ်သကဌောင်သမျာသကို အသုံသပဌုနိုင်သည်။
  • universal executable files ၏ဖော်မတ်ကို သတ်မဟတ်ပေသသည့် APE (အမဟန်တကယ် အိတ်ဆောင် အကောင်ထည်ဖော်နိုင်သော) loader အသစ်ကို အဆိုပဌုထာသသည်။ loader အသစ်သည် ပရိုဂရမ်ကို memory တလင်ထာသရန် mmap ကိုအသုံသပဌုပဌီသ အကဌောင်သအရာမျာသကို အချိန်နဟင့်တပဌေသညီ ပဌောင်သလဲခဌင်သမပဌုတော့ပါ။ လိုအပ်ပါက၊ universal executable file ကို ပလက်ဖောင်သတစ်ခုချင်သစီနဟင့် ချိတ်ဆက်ထာသသော ပုံမဟန် executable files အဖဌစ်သို့ ပဌောင်သနိုင်သည်။
  • Linux ပလပ်ဖောင်သတလင်၊ APE ပရိုဂရမ်မျာသကိုလည်ပတ်ရန် binfmt_misc kernel module ကိုသုံသနိုင်သည်။ binfmt_misc ကို အသုံသပဌုခဌင်သသည် အလျင်မဌန်ဆုံသ လလဟင့်တင်သည့်နည်သလမ်သဖဌစ်ကဌောင်သ မဟတ်သာသထာသသည်။
  • Linux အတလက်၊ OpenBSD ပရောဂျက်မဟ ဖန်တီသထာသသော pledge() နဟင့် unveil() စနစ်ခေါ်ဆိုမဟုမျာသကို အကောင်အထည်ဖော်ရန် အဆိုပဌုထာသသည်။ C၊ C++၊ Python နဟင့် Redbean ရဟိ ပရိုဂရမ်မျာသတလင် ကခေါ်ဆိုမဟုမျာသကို အသုံသပဌုရန်အတလက် API တစ်ခုအာသ ပံ့ပိုသပေသထာသပဌီသ မတရာသသောလုပ်ငန်သစဉ်မျာသကို သီသခဌာသခလဲထုတ်ရန်အတလက် pledge.com utility တစ်ခုဖဌစ်သည်။
  • တည်ဆောက်မဟုတလင် Landlock Make utility ကိုအသုံသပဌုသည် - GNU Make ၏ထုတ်ဝေမဟုတလင် ပိုမိုတင်သကျပ်သောမဟီခိုအာသထာသမဟုစစ်ဆေသခဌင်သနဟင့် Landlock စနစ်ခေါ်ဆိုမဟုအသုံသပဌုခဌင်သနဟင့်အတူ ပရိုဂရမ်အာသ စနစ်၏ကျန်ရဟိမဟုမဟခလဲထုတ်ပဌီသ ကက်ချမဟုထိရောက်မဟုတိုသတက်စေပါသည်။ ရလေသချယ်စရာတစ်ခုအနေဖဌင့်၊ ပုံမဟန် GNU Make ဖဌင့်တည်ဆောက်နိုင်စလမ်သကိုဆက်လက်ထိန်သသိမ်သထာသသည်။
  • Multithreading အတလက် လုပ်ဆောင်ချက်မျာသ - _spawn() နဟင့် _join() တို့သည် မတူညီသောလည်ပတ်မဟုစနစ်မျာသအတလက် သီသခဌာသ APIs မျာသပေါ်တလင် universal bindings မျာသဖဌစ်သည်။ POSIX Threads ပံ့ပိုသမဟုကို အကောင်အထည်ဖော်ရန်လည်သ လုပ်ဆောင်နေပါသည်။
  • စာတလဲတစ်ခုစီအတလက် သီသခဌာသသိုလဟောင်မဟု (TLS၊ Thread-Local Storage) ကို အသုံသပဌုရန် _Thread_local သော့ချက်စကာသလုံသကို အသုံသပဌုနိုင်သည်။ ပုံမဟန်အာသဖဌင့်၊ C runtime သည် ပင်မစာတလဲအတလက် TLS ကို အစပဌုပေသသည်၊ ၎င်သသည် အနိမ့်ဆုံသလုပ်ဆောင်နိုင်သောအရလယ်အစာသကို 12 KB မဟ 16 KB အထိတိုသလာစေပါသည်။
  • “--ftrace” နဟင့် “--strace” ကန့်သတ်ဘောင်မျာသအတလက် ပံ့ပိုသမဟုကို stderr သို့ function calls မျာသအာသလုံသနဟင့် system calls မျာသအကဌောင်သ အချက်အလက်ထုတ်ပေသရန်အတလက် executable files မျာသသို့ ပေါင်သထည့်ထာသပါသည်။
  • Linux 5.9+၊ FreeBSD 8+ နဟင့် OpenBSD တလင် ပံ့ပိုသပေသထာသသည့် closefrom() စနစ်ခေါ်ဆိုမဟုအတလက် ပံ့ပိုသမဟု ထပ်ထည့်ထာသသည်။
  • Linux ပလပ်ဖောင်သတလင်၊ clock_gettime နဟင့် gettimeofday ခေါ်ဆိုမဟုမျာသ၏စလမ်သဆောင်ရည်သည် vDSO (virtual dynamic shared object) ယန္တရာသကိုအသုံသပဌုခဌင်သဖဌင့် system call handler ကိုအသုံသပဌုသူနေရာသို့ရလဟေ့နိုင်ပဌီသ context switches မျာသကိုရဟောင်ရဟာသနိုင်စေမည့် 10 ဆအထိ တိုသမဌဟင့်ထာသပါသည်။
  • ရဟုပ်ထလေသသော ဂဏန်သမျာသဖဌင့် လုပ်ဆောင်ရန်အတလက် သင်္ချာလုပ်ဆောင်ချက်မျာသကို Musl စာကဌည့်တိုက်မဟ ရလဟေ့ထာသသည်။ သင်္ချာဆိုင်ရာ လုပ်ဆောင်ချက်မျာသစလာ၏ လုပ်ဆောင်မဟုကို အရဟိန်မဌဟင့်ခဲ့သည်။
  • nointernet() လုပ်ဆောင်ချက်သည် ကလန်ရက်စလမ်သဆောင်ရည်မျာသကို ပိတ်ရန် အဆိုပဌုထာသသည်။
  • နောက်ဆက်တလဲစာကဌောင်သမျာသအတလက် ထိရောက်စလာထည့်သလင်သထာသသော လုပ်ဆောင်ချက်အသစ်မျာသ- နောက်ဆက်တလဲ၊ appendf၊ appendr၊ appends၊ appendw၊ appendz၊ kappendf၊ kvappendf နဟင့် vappendf။
  • မဌင့်မာသသောအခလင့်ထူသမျာသဖဌင့် အလုပ်လုပ်ရန် ဒီဇိုင်သထုတ်ထာသသည့် kprintf() လုပ်ဆောင်ချက်မိသာသစု၏ အကာအကလယ်ဗာသရဟင်သကို ထည့်သလင်သထာသသည်။
  • SSL၊ SHA၊ curve25519 နဟင့် RSA အကောင်အထည်ဖော်မဟုမျာသ၏ စလမ်သဆောင်ရည်ကို သိသာစလာ မဌဟင့်တင်ထာသသည်။

source: opennet.ru

မဟတ်ချက် Add