Emscripten 3.0, LLVM ব্যবহার করে WebAssembly-এর জন্য একটি বিল্ড টুলচেন

সম্প্রতি Emscripten 3.0 কম্পাইলারের নতুন সংস্করণ প্রকাশের ঘোষণা করা হয়েছিল, যা নিম্ন-স্তরের সার্বজনীন মিডলওয়্যার ওয়েবঅ্যাসেম্বলিতে C/C ++ এবং অন্যান্য ভাষায় কোড কম্পাইল করার অনুমতি দিয়ে চিহ্নিত করা হয় যার জন্য LLVM-ভিত্তিক ফ্রন্টএন্ড উপলব্ধ।

এই সংকলনের প্রধান কাজ হল জাভাস্ক্রিপ্ট প্রজেক্টের সাথে পরবর্তী একীকরণ, একটি ওয়েব ব্রাউজারে চালানো, নোডে ব্যবহার করা। Js বা ক্রস-প্ল্যাটফর্ম স্বতন্ত্র অ্যাপ্লিকেশন তৈরি করুন যা wasm রানটাইমের সাথে চলে।

Emscripten সম্পর্কে

মূল লক্ষ্য এমস্ক্রিপ্টেন প্রকল্পের উন্নয়ন একটি টুল তৈরি করা যা আপনাকে ওয়েবে কোড চালানোর অনুমতি দেয়, এটি যে প্রোগ্রামিং ভাষাতে লেখা হয়েছে তা নির্বিশেষে।

কম্পাইল করা অ্যাপ্লিকেশন স্ট্যান্ডার্ড C এবং C ++ লাইব্রেরি কল ব্যবহার করতে পারে (libc, libcxx), C ++ এক্সটেনশন, pthreads-ভিত্তিক মাল্টিথ্রেডিং, POSIX API, এবং অনেক মাল্টিমিডিয়া লাইব্রেরি। ওয়েব API এবং জাভাস্ক্রিপ্ট কোডের সাথে একীকরণের জন্য APIগুলি আলাদাভাবে প্রদান করা হয়েছে৷

এমস্ক্রিপ্টেন ক্যানভাসের মাধ্যমে SDL2 লাইব্রেরি আউটপুট স্ট্রিমিং সমর্থন করে, এবং এছাড়াও WebGL এর মাধ্যমে OpenGL এবং EGL সমর্থন প্রদান করে, যা আপনাকে গ্রাফিক্স অ্যাপ্লিকেশন এবং গেমগুলিকে WebAssembly-এ রূপান্তর করতে দেয়।

কার্যত যেকোনো পোর্টেবল C বা C ++ কোড বেস Emscripten ব্যবহার করে WebAssembly-এ কম্পাইল করা যেতে পারেউচ্চ-পারফরম্যান্স গেম থেকে শুরু করে Qt-এর মতো অ্যাপ্লিকেশন ফ্রেমওয়ার্কগুলিতে গ্রাফিক্স রেন্ডার করতে, শব্দ চালাতে এবং ফাইলগুলি লোড এবং প্রক্রিয়া করতে হবে। এমস্ক্রিপ্টেন ইতিমধ্যেই অবাস্তব ইঞ্জিন 4 এবং ইউনিটি ইঞ্জিনের মতো বাণিজ্যিক কোড বেস সহ বাস্তব-বিশ্বের কোড বেসগুলির একটি খুব দীর্ঘ তালিকাকে WebAssembly-এ রূপান্তর করতে ব্যবহৃত হয়েছে।

C/C ++ কোড কম্পাইল করার পাশাপাশি, Lua, C#, Python, Ruby, এবং Perl-এর জন্য দোভাষী এবং ভার্চুয়াল মেশিন ব্রাউজারগুলিতে শুরু হয় তা নিশ্চিত করার জন্য আলাদাভাবে প্রকল্পগুলি তৈরি করা হয়। সুইফ্ট, রাস্ট, ডি এবং ফোরট্রানের মতো ভাষার জন্য উপলব্ধ এলএলভিএম-তে নন-ক্ল্যাং ইন্টারফেসগুলি প্রয়োগ করাও সম্ভব।

এটা যে লক্ষ করা উচিত নেটিভ রানটাইম এবং এমস্ক্রিপ্টেনের মধ্যে পার্থক্য রয়েছে, যার মানে সাধারণভাবে, ইনেটিভ কোডে কিছু পরিবর্তন করা প্রয়োজন. এটি বলেছে, অনেক অ্যাপ্লিকেশনকে শুধুমাত্র তাদের প্রধান লুপ সংজ্ঞায়িত করার উপায় পরিবর্তন করতে হবে এবং ব্রাউজার/জাভাস্ক্রিপ্ট সীমাবদ্ধতা মিটমাট করার জন্য তাদের ফাইল পরিচালনার পরিবর্তন করতে হবে।

এছাড়াও কিছু সীমাবদ্ধতা রয়েছে যা কিছু কোডকে স্থানান্তর করা সহজ করে তুলতে পারে - আপনাকে কোথায় আরও পরিশ্রম করতে হবে তা নির্ধারণ করতে পোর্টেবিলিটি নির্দেশিকা পড়ুন।

Emscripten 3.0 এর প্রধান নতুন বৈশিষ্ট্য

উপস্থাপিত এই নতুন সংস্করণে, emscripten-এ ব্যবহৃত musl C লাইব্রেরি সংস্করণ 1.2.2-এ আপডেট করা হয়েছে (সংস্করণ 1.1.15 Emscripten 2.x শাখায় ব্যবহৃত হয়েছিল)।

parseTools.js লাইব্রেরি থেকে ফাংশনগুলির একটি অংশ সরানো হয়েছে, যা প্রধানত প্রকল্পে ব্যবহৃত হয়: রিমুভপয়েন্টিং, পয়েন্টিং লেভেলস, রিমুভ অলপয়েন্টিং, isVoidType, isStructPointerType, isArrayType, isStructType, isVectorType, isStructuralType getStructuralTypeParts, getStructuralType _IntToHex, CompiletyTimeTpeileType,TimeType,TimeType.

যখন shell.html এবং shell_minimal.html টেমপ্লেটগুলিতে, ত্রুটি বার্তাগুলির আউটপুট যেটি এমস্ক্রিপ্টেন অপারেশনের সময় ঘটে এবং stderr এর মাধ্যমে অ্যাপ্লিকেশন দ্বারা জারি করা হয় এটি console.error এর পরিবর্তে console.warn ব্যবহার করার জন্য ডিফল্টরূপে পরিবর্তিত হয়।

এটিও হাইলাইট করা হয় ফাইলের নামগুলিতে ব্যবহৃত একটি নির্দিষ্ট পাঠ্য এনকোডিং নির্দিষ্ট করার ক্ষমতা যুক্ত করেছে। ফাইলের নাম পাস করার সময় এনকোডিং একটি প্রত্যয় হিসাবে নির্দিষ্ট করা যেতে পারে, উদাহরণস্বরূপ "a.rsp.utf-8" বা "a.rsp.cp1251")।

পরিশেষে, আপনি যদি Emscripten সম্পর্কে আরও জানতে আগ্রহী হন, তাহলে আপনি এতে প্রকল্পের বিশদ বিবরণ দেখতে পারেন সরকারী ওয়েবসাইট.

এবং একইভাবে, আপনি কীভাবে এমস্ক্রিপ্টেন ব্যবহার করবেন সে সম্পর্কে ওয়েবে ডকুমেন্টেশনের সাথে পরামর্শ করতে পারেন, একটি রেফারেন্স সাইট যা আমরা সুপারিশ করতে পারি মোজিলা বিকাশকারী ওয়েবসাইট: https://developer.mozilla.org.

এছাড়াও, এটি উল্লেখ করা গুরুত্বপূর্ণ যে প্রকল্প কোডটি MIT লাইসেন্সের অধীনে বিতরণ করা হয়। কম্পাইলার LLVM প্রকল্পের উন্নয়ন ব্যবহার করে এবং Binaryen লাইব্রেরি WebAssembly এবং অপ্টিমাইজেশন তৈরি করতে ব্যবহৃত হয়। আপনি আপনার কোড চেক করতে পারেন গিটহাবের উৎস।


আপনার মন্তব্য দিন

আপনার ইমেল ঠিকানা প্রকাশিত হবে না। প্রয়োজনীয় ক্ষেত্রগুলি দিয়ে চিহ্নিত করা *

*

*

  1. ডেটার জন্য দায়ী: AB ইন্টারনেট নেটওয়ার্ক 2008 SL
  2. ডেটার উদ্দেশ্য: নিয়ন্ত্রণ স্প্যাম, মন্তব্য পরিচালনা।
  3. আইনীকরণ: আপনার সম্মতি
  4. তথ্য যোগাযোগ: ডেটা আইনি বাধ্যবাধকতা ব্যতীত তৃতীয় পক্ষের কাছে জানানো হবে না।
  5. ডেটা স্টোরেজ: ওসেন্টাস নেটওয়ার্কস (ইইউ) দ্বারা হোস্ট করা ডেটাবেস
  6. অধিকার: যে কোনও সময় আপনি আপনার তথ্য সীমাবদ্ধ করতে, পুনরুদ্ধার করতে এবং মুছতে পারেন।