حدودا یک ماه از ریلیز شدن نسخه 3.0 وباسمبلی (WASM) میگذره و الان فرصت کردم درموردش بخونم، تغییرات مهمی که داشته رو پایین مینویسم.
💠 پشتیبانی از Address Space های 64 بیت
تا قبل از این نسخه، وباسمبلی محدود به آدرسهای i32 بود و نمیتونست بیشتر از 4GB رو آدرسدهی کنه، ولی پشتیبانی از i64 اضافه شده و این محدودیت عملا بینهایت شده، هرچند که همچنان مرورگرها حداکثر اجازه allocate کردن 16GB رو میدن.
💠 پشتیبانی از Memory های چندگانه
تا قبل از این نسخه، هر ماژول وباسمبلی فقط محدود به یک Memory بود و برای تفکیک باید ماژولها Split میشدند، ولی در این نسخه قابلیت داشتن Memory های متعدد برای یک ماژول اضافه شده.
💠 پشتیبانی از Garbage Collection
در این نسخه یک افزونه با عنوان wasm-gc اضافه شده که در سطوح پایین میتونه مموری رو بهصورت خودکار مدیریت کنه، کامپایلرها میتونند Struct ها و آرایهها و بعضی Integer ها رو به صورت تگ شده تعریف کنند و خود wasm وظیفه allocation و lifetime شون رو برعهده بگیره.
💠 پشتیبانی از Tail Call ها
قابلیت Tail Call به وباسمبلی اضافه شده، این ویژگی از زبانهای فانکشنال الگو گرفته، به این معنی که فانکشنها میتونند در آخرین اکشنشون یک فانکشن دیگهای رو کال کنند بدون اینکه فضایی از Stack رو اشغال کنند، این موضوع در کال های Recursive اهمیت زیادی داره.
💠 پشتیبانی از Exception ها
پشتیبانی از Exception های try و catch در وباسمبلی اضافه شده، تا قبل از این برای چنین کاری باید از JS استفاده میشد.
💠 پشتیبانی از String های جاوا اسکریپت
قابلیت رد و بدل کردن مستقیم String های جاوا اسکریپت بدون نیاز به تبدیل دو طرفه اضافه شده، میتونید مقادر String رو به صورت مستقیم بهعنوان externref پاس بدید و سمت wasm تغییرات لازم رو روش اعمال کنید و سمت JS تحویل بگیرید.
و البته کلی قابلیت دیگه که اگر دوست داشتید میتونید اینجا بخونید.
Post #78
743
