ওয়েব অ্যাসাব্ল্যাসেস বনাম asm.js
প্রথমে আসুন একনজরে দেখে নেওয়া যাক, নীতিগতভাবে কীভাবে ওয়েবএএসব্লিউশন asm.js থেকে আলাদা এবং বিদ্যমান জ্ঞান এবং সরঞ্জামাদি পুনরায় ব্যবহার করার সম্ভাবনা রয়েছে কি না। নিম্নলিখিতটি বেশ ভাল ওভারভিউ দেয়:
আসুন পুনরুক্তি করা যাক, ওয়েবঅ্যাসাব্ল্যাস (এমভিপি, যেমন এর রোডম্যাপে আরও রয়েছে , মোটামুটি):
- স্ট্যাটিক টাইপিং সহ এটিএসটির একটি বাইনারি ফর্ম্যাট যা বিদ্যমান জাভাস্ক্রিপ্ট ইঞ্জিনগুলি দ্বারা কার্যকর করা যেতে পারে (এবং এইভাবে জেআইটি-সক্ষম বা সংকলিত এওটি),
- এটি জাভাস্ক্রিপ্টের তুলনায় আরও 10-10% আরও কমপ্যাক্ট (জিজেপড তুলনা) এবং পরিমাপের ক্রমটি পার্স করার জন্য দ্রুত,
- এটি আরও নিম্ন-স্তরের অপারেশন প্রকাশ করতে পারে যা জাভাস্ক্রিপ্ট সিনট্যাক্সের সাথে খাপ খায় না, asm.js পড়বে (যেমন (৪-বিট পূর্ণসংখ্যা, বিশেষ সিপিইউ নির্দেশাবলী, সিমডি ইত্যাদি)
- asm.js. তে / থেকে রূপান্তরযোগ্য (কিছু পরিমাণে)
সুতরাং, বর্তমানে ওয়েবএ্যাস্পাবলটি asm.js এর উপর একটি পুনরাবৃত্তি এবং কেবলমাত্র সি / সি ++ (এবং অনুরূপ ভাষা) লক্ষ্য করে।
ওয়েবে পাইথন
দেখে মনে হচ্ছে না যে জিসি হ'ল একমাত্র জিনিস যা পাইথন কোডটিকে ওয়েবঅ্যাসাব্যাস / asm.js টার্গেট করা থেকে বিরত করে। উভয়ই নিম্ন-স্তরের স্ট্যাটিকালি টাইপড কোডটি উপস্থাপন করে, যেখানে পাইথন কোডটি (বাস্তবসম্মতভাবে) উপস্থাপন করা যায় না। যেহেতু ওয়েবএএসব্যাশন / asm.js এর বর্তমান টুলচেনটি এলএলভিএম এর উপর ভিত্তি করে, একটি ভাষা যা সহজেই এলএলভিএম আইআর দ্বারা সংকলন করা যায় তা ওয়েবঅ্যাস্পেস্পল / asm.js এ রূপান্তর করতে পারে। তবে হায়, পাইথন এটির সাথে ফিট করার পক্ষে খুব গতিশীল নয়, যেমন আনলাডেন গেলা এবং পাইপাইয়ের বিভিন্ন প্রচেষ্টা দ্বারা প্রমাণিত ।
এই asm.js উপস্থাপনায় গতিশীল ভাষার অবস্থা সম্পর্কে স্লাইড রয়েছে । এর অর্থ হ'ল বর্তমানে কেবলমাত্র সম্পূর্ণ ভিএম (সি / সি ++ তে ভাষা বাস্তবায়ন) কে ওয়েবঅ্যাসাব্যাস / asm.js এবং সংক্ষিপ্ত বিবরণ (যেখানে সম্ভব যেখানে জেআইটি সহ) মূল উত্সগুলি সংকলন করা সম্ভব। পাইথনের জন্য বেশ কয়েকটি বিদ্যমান প্রকল্প রয়েছে:
পাইপাই : পাইপাই.জেএস ( পাইকনে লেখকের আলাপ )। এখানে প্রকাশিত রেপো । প্রধান জেএস ফাইলটি, pypyjs.vm.js
13 মেগাবাইট (2MB পরে gzip -6
) + পাইথন স্টাডলিব + অন্যান্য স্টাফ।
CPython: pyodide , EmPython , CPython-Emscripten , EmCPython , ইত্যাদি empython.js
5.8 মেগাবাইট (2.1 মেগাবাইট পরে gzip -6
), কোন stdlib।
Micropython: এই কাঁটাচামচ ।
সেখানে কোনও বিল্ট জেএস ফাইল ছিল না, তাই আমি এটি trzeci/emscripten/
তৈরি এমস স্ক্রিপ্টেন টুলচেন দিয়ে তৈরি করতে সক্ষম হয়েছি । কিছুটা এইরকম:
git clone https://github.com/matthewelse/micropython.git
cd micropython
docker run --rm -it -v $(pwd):/src trzeci/emscripten bash
apt-get update && apt-get install -y python3
cd emscripten
make -j
এটি micropython.js
1.1 এমবি (225 কেবি পরে gzip -d
) উত্পাদন করে। দ্বিতীয়টি ইতিমধ্যে বিবেচনা করার মতো একটি বিষয়, যদি আপনার যদি stdlib ব্যতিরেকে কেবল খুব কমপ্লায়েন্ট বাস্তবায়ন প্রয়োজন হয়।
WebAssembly উত্পাদন করতে আপনি লাইন 13 পরিবর্তন করতে পারেন বিল্ড Makefile
করার
CC = emcc -s RESERVED_FUNCTION_POINTERS=20 -s WASM=1
তারপরে make -j
উত্পাদন করে:
113 KB micropython.js
240 KB micropython.wasm
emcc hello.c -s WASM=1 -o hello.html
এই ফাইলগুলি কীভাবে ব্যবহার করতে হয় তা দেখতে আপনি এইচটিএমএল আউটপুটটি দেখতে পারেন।
এইভাবে আপনি সম্মতিযুক্ত ব্রাউজারে আপনার পাইথন অ্যাপ্লিকেশনটি ব্যাখ্যা করার জন্য ওয়েবঅ্যাস্পেসে পিপি এবং সিপিথন সম্ভাব্যভাবে তৈরি করতে পারেন।
এখানে আরও একটি সম্ভাব্য আকর্ষণীয় জিনিস হ'ল নুইটকা , পাইথন থেকে সি ++ সংকলক। সম্ভবত আপনার পাইথন অ্যাপটি সি ++ তে তৈরি করা সম্ভব হবে এবং তারপরে এটি এমস স্ক্রিপ্টেন সহ সিপাইথন সহ সংকলন করা সম্ভব। তবে কার্যত আমি কীভাবে এটি করব সে সম্পর্কে আমার কোনও ধারণা নেই।
সমাধান
কিছু সময়ের জন্য, আপনি একটি প্রচলিত ওয়েব সাইট বা ওয়েব অ্যাপ্লিকেশন যেখানে ডাউনলোড বিভিন্ন-মেগাবাইট জাতীয় ফাইল সবে একটি বিকল্পের ঘর তৈরী করছি, পাইথন টু জাভাস্ক্রিপ্ট transpilers কটাক্ষপাত (যেমন take Transcrypt ) অথবা জাভাস্ক্রিপ্ট পাইথন বাস্তবায়নের (যেমন Brython )। অথবা জাভা স্ক্রিপ্টে সংকলিত ভাষার তালিকা থেকে অন্যদের সাথে আপনার ভাগ্য চেষ্টা করুন ।
অন্যথায়, যদি ডাউনলোডের আকার কোনও সমস্যা না হয় এবং আপনি প্রচুর রুক্ষ প্রান্ত মোকাবেলা করতে প্রস্তুত হন, তবে উপরের তিনটির মধ্যে বেছে নিন।
Q3 2020 আপডেট
জাভাস্ক্রিপ্ট পোর্টটি মাইক্রোপাইথনে একীভূত হয়েছিল। এটি
পোর্ট / জাভাস্ক্রিপ্টে থাকে ।
বন্দরটি একটি এনপিএম প্যাকেজ হিসাবে মাইক্রো পাইথন.জেএস হিসাবে উপলব্ধ । আপনি রানকিট এ চেষ্টা করে দেখতে পারেন ।
মরিচায় একটি সক্রিয়ভাবে বিকশিত পাইথন বাস্তবায়ন রয়েছে যার নাম
রুস্টপাইথন । মরিচা আনুষ্ঠানিকভাবে ওয়েব- স্পেসিকে কমপাইল লক্ষ্য হিসাবে সমর্থন করে, কারণ রিডমের শীর্ষে ডেমো লিঙ্কটি নেই surprise যদিও, এটা প্রথম। তাদের দাবি অস্বীকার।
রুস্টপাইথন একটি বিকাশের পর্যায়ে রয়েছে এবং এটি উত্পাদন বা কোনও ফল্ট অসহিষ্ণু সেটিং ব্যবহার করা উচিত নয়।
আমাদের বর্তমান বিল্ডটি পাইথন সিনট্যাক্সের কেবলমাত্র একটি উপসেটকে সমর্থন করে।