Emscripten 3.0 ကို WebAssembly compiler မှ C/C++ ကို ရနိုင်သည်။

Emscripten 3.0 compiler ၏ထုတ်ဝေမှုကို ထုတ်ဝေလိုက်ပါပြီ၊ ကုဒ်ကို C/C++ နှင့် အခြားဘာသာစကားများဖြင့် ပေါင်းစည်းနိုင်စေမည့် LLVM-based frontends များကို universal low-level intermediate code WebAssembly သို့ နောက်ဆက်တွဲအဖြစ် JavaScript ပရောဂျက်များနှင့် ပေါင်းစည်းရန်အတွက် လုပ်ဆောင်နေပါသည်။ ဝဘ်ဘရောက်ဆာတစ်ခုတွင်၊ Node. js တွင်သုံးပါ သို့မဟုတ် wasm runtime ကိုအသုံးပြု၍ လုပ်ဆောင်သည့် stand-alone multi-platform အပလီကေးရှင်းများဖန်တီးခြင်း။ ပရောဂျက်ကုဒ်ကို MIT လိုင်စင်အောက်တွင် ဖြန့်ဝေထားသည်။ compiler သည် LLVM ပရောဂျက်မှ တိုးတက်မှုများကို အသုံးပြုပြီး Binaryen စာကြည့်တိုက်ကို WebAssembly မျိုးဆက်နှင့် ပိုမိုကောင်းမွန်အောင်ပြုလုပ်ရန်အတွက် အသုံးပြုပါသည်။

Emscripten ပရောဂျက်၏ အဓိက ရည်မှန်းချက်မှာ ကုဒ်ရေးထားသော ပရိုဂရမ်းမင်းဘာသာစကားကို မည်သို့ပင်ဖြစ်စေ ဝဘ်ပေါ်တွင် ကုဒ်ကို လုပ်ဆောင်နိုင်စေမည့် ကိရိယာတစ်ခု ဖန်တီးရန်ဖြစ်သည်။ စုစည်းထားသော အပလီကေးရှင်းများသည် ပုံမှန် C နှင့် C++ libraries (libc၊ libcxx)၊ C++ extensions၊ pthreads-based multithreading၊ POSIX APIs နှင့် multimedia libraries အများအပြားသို့ ခေါ်ဆိုမှုများကို အသုံးပြုနိုင်သည်။ Web API နှင့် JavaScript ကုဒ်တို့နှင့် ပေါင်းစည်းရန်အတွက် API များကို သီးခြားစီ ပေးထားသည်။

Emscripten သည် Canvas မှတစ်ဆင့် SDL2 စာကြည့်တိုက်၏ output ကို ထုတ်လွှင့်ခြင်းကို ပံ့ပိုးပေးကာ WebGL မှတစ်ဆင့် OpenGL နှင့် EGL အတွက် ပံ့ပိုးမှုပေးသည်၊ ၎င်းသည် သင့်အား graphical applications များနှင့် games များကို WebAssembly သို့ ပြောင်းနိုင်သည် (ဥပမာ၊ Qt toolkit ၏ port တစ်ခုရှိပြီး Unreal Engine ကို ပံ့ပိုးပေးသည် 4 နှင့် Unit game engines၊ physical Bullet engine)။ C/C++ တွင် ကုဒ်ကို စုစည်းခြင်းအပြင်၊ Lua, C#, Python, Ruby နှင့် Perl ဘာသာစကားများအတွက် ဘရောက်ဆာများတွင် စကားပြန်များနှင့် virtual machines များကို ဖွင့်နိုင်စေရန် သီးခြားစီ တီထွင်ထုတ်လုပ်ထားပါသည်။ Swift၊ Rust၊ D နှင့် Fortran ကဲ့သို့သော ဘာသာစကားများအတွက် ရရှိနိုင်သော Clang မဟုတ်သော LLVM ကိုလည်း အသုံးပြုနိုင်သည်။

Emscripten 3.0 တွင် အဓိကပြောင်းလဲမှုများ-

  • emscripten တွင်အသုံးပြုသည့် musl C စာကြည့်တိုက်ကို ဗားရှင်း 1.2.2 သို့ အပ်ဒိတ်လုပ်ပြီးပါပြီ (ဗားရှင်း 2 ကို Emscripten 1.1.15.x ဌာနခွဲတွင် အသုံးပြုထားသည်)။
  • ပရောဂျက်အတွင်း အဓိကအားဖြင့် အသုံးပြုခဲ့သည့် လုပ်ဆောင်ချက်အချို့ကို parseTools.js စာကြည့်တိုက်မှ ဖယ်ရှားလိုက်သည်- removePointing, pointingLevels, removeAllPointing, isVoidType, isStructPointerType, isArrayType, isStructType, isVectorType, isStructuralPyartTypets, get , isFunctionDef, isPossiblyFunctionType, isFunctionType, getReturnType၊ splitTokenList၊ _IntToHex၊ IEEEUnHex၊ Compiletime.isPointerType၊ Compiletime.isStructType၊ Compiletime.INT_TYPES၊ isType။
  • shell.html နှင့် shell_minimal.html တင်းပလိတ်များတွင်၊ emscripten ၏လုပ်ဆောင်မှုနှင့် stderr မှတစ်ဆင့် အပလီကေးရှင်းမှထွက်ရှိစဉ်အတွင်း ဖြစ်ပေါ်လာသည့် အမှားအယွင်းစာတိုများအထွက်ကို console.error အစား console.warn ကိုအသုံးပြုရန်အတွက် မူရင်းအတိုင်းပြောင်းထားသည်။
  • ဖိုင်အမည်များတွင် အသုံးပြုသည့် သီးခြားစာသား ကုဒ်နံပါတ်ကို သတ်မှတ်ရန် စွမ်းရည်ကို ထည့်သွင်းထားသည်။ ဖိုင်အမည်ကိုဖြတ်သန်းသည့်အခါ၊ ဥပမာ "a.rsp.utf-8" သို့မဟုတ် "a.rsp.cp1251") ဖြင့် ကုဒ်သွင်းခြင်းကို နောက်ဆက်တွဲပုံစံဖြင့် သတ်မှတ်နိုင်သည်။

source: opennet.ru

မှတ်ချက် Add