Emscripten 3.0 دستیاب ہے، ایک C/C++ ٹو WebAssembly کمپائلر

Emscripten 3.0 کمپائلر کی ریلیز شائع ہو چکی ہے، جس سے آپ کو C/C++ اور دوسری زبانوں میں کوڈ مرتب کرنے کی اجازت دی گئی ہے جس کے لیے LLVM پر مبنی فرنٹ اینڈ یونیورسل لو لیول انٹرمیڈیٹ کوڈ WebAssembly میں دستیاب ہیں، جاوا اسکرپٹ پروجیکٹس کے ساتھ بعد میں انضمام کے لیے، چل رہا ہے۔ ایک ویب براؤزر میں، اور Node. js میں استعمال کریں یا اسٹینڈ اکیلے ملٹی پلیٹ فارم ایپلی کیشنز بنائیں جو wasm رن ٹائم کا استعمال کرتے ہوئے چلتی ہیں۔ پروجیکٹ کوڈ MIT لائسنس کے تحت تقسیم کیا جاتا ہے۔ کمپائلر LLVM پروجیکٹ سے پیشرفت کا استعمال کرتا ہے، اور Binaryen لائبریری کو WebAssembly جنریشن اور آپٹیمائزیشن کے لیے استعمال کیا جاتا ہے۔

Emscripten پروجیکٹ کا بنیادی مقصد ایک ایسا ٹول بنانا ہے جو آپ کو ویب پر کوڈ کو چلانے کی اجازت دیتا ہے قطع نظر اس کے کہ پروگرامنگ زبان جس میں کوڈ لکھا گیا ہو۔ مرتب کردہ ایپلی کیشنز معیاری C اور C++ لائبریریوں (libc, libcxx)، C++ ایکسٹینشنز، pthreads پر مبنی ملٹی تھریڈنگ، POSIX APIs، اور بہت سی ملٹی میڈیا لائبریریوں کو کالز کا استعمال کر سکتی ہیں۔ Web API اور JavaScript کوڈ کے ساتھ انضمام کے لیے APIs الگ سے فراہم کیے گئے ہیں۔

Emscripten SDL2 لائبریری کے آؤٹ پٹ کو Canvas کے ذریعے نشر کرنے میں معاونت کرتا ہے، اور WebGL کے ذریعے OpenGL اور EGL کے لیے بھی سپورٹ فراہم کرتا ہے، جو آپ کو گرافیکل ایپلی کیشنز اور گیمز کو WebAssembly میں تبدیل کرنے کی اجازت دیتا ہے (مثال کے طور پر، Qt ٹول کٹ کا ایک پورٹ ہے اور غیر حقیقی انجن کو سپورٹ کرتا ہے۔ 4 اور یونٹ گیم انجن، فزیکل بلٹ انجن)۔ C/C++ میں کوڈ مرتب کرنے کے علاوہ، Lua، C#، Python، Ruby اور Perl زبانوں کے لیے براؤزرز میں ترجمانوں اور ورچوئل مشینوں کے اجراء کو یقینی بنانے کے لیے الگ سے منصوبے تیار کیے جا رہے ہیں۔ LLVM پر نان کلینگ فرنٹ اینڈ کو لاگو کرنا بھی ممکن ہے، جو کہ Swift، Rust، D اور Fortran جیسی زبانوں کے لیے دستیاب ہے۔

Emscripten 3.0 میں اہم تبدیلیاں:

  • ایم اسکرپٹن میں استعمال ہونے والی مسل سی لائبریری کو ورژن 1.2.2 میں اپ ڈیٹ کر دیا گیا ہے (ورژن 2 Emscripten 1.1.15.x برانچ میں استعمال کیا گیا تھا)۔
  • فنکشنز کا ایک حصہ جو بنیادی طور پر پروجیکٹ کے اندر استعمال کیا جاتا تھا parseTools.js لائبریری سے ہٹا دیا گیا ہے: removePointing, pointingLevels, removeAllPointing, isVoidType, isStructPointerType, isArrayType, isStructType, isVectorType, getTructuralTructural, getTructuralType بٹس، isFunctionDef، isPossiblyFunctionType، isFunctionType، getReturnType، splitTokenList، _IntToHex، IEEEUnHex، Compiletime.isPointerType، Compiletime.isStructType، Compiletime.INT_TYPES، isType۔
  • shell.html اور shell_minimal.html ٹیمپلیٹس میں، ایرر میسیجز کی آؤٹ پٹ جو ایم اسکرپٹن کے آپریشن کے دوران ہوتی ہے اور جو ایپلیکیشن کے ذریعے stderr کے ذریعے آؤٹ پٹ ہوتی ہے، console.error کی بجائے console.warn استعمال کرنے کے لیے بطور ڈیفالٹ سوئچ کیا جاتا ہے۔
  • فائل کے ناموں میں استعمال ہونے والے مخصوص ٹیکسٹ انکوڈنگ کی وضاحت کرنے کی صلاحیت شامل کی گئی۔ فائل کا نام پاس کرتے وقت انکوڈنگ کو لاحقہ کی شکل میں بیان کیا جا سکتا ہے، مثال کے طور پر، "a.rsp.utf-8" یا "a.rsp.cp1251")۔

ماخذ: opennet.ru

نیا تبصرہ شامل کریں