Cloudflare، Mozilla او Facebook د جاواسکریپټ بارولو چټکولو لپاره BinaryAST ته وده ورکوي

د Cloudflare، Mozilla، Facebook او بلومبرګ څخه انجنیران وړاندیز شوی نوې بڼه بائنریسټ د جاواسکریپټ کوډ رسولو او پروسس کولو ګړندی کولو لپاره کله چې په براوزر کې سایټونه خلاص کړئ. BinaryAST د پارس کولو مرحله د سرور اړخ ته حرکت کوي او د دمخه رامینځته شوي خلاصې نحو ونې چمتو کوي (AST). د BinaryAST په ترلاسه کولو سره، براوزر کولی شي سمدستي د تالیف مرحلې ته لاړ شي، د جاواسکریپټ سرچینې کوډ پارس کولو سره.

د ازموینې لپاره چمتو شوی د حوالې پلي کول د MIT جواز لاندې چمتو شوي. د Node.js اجزا د پارس کولو لپاره کارول کیږي، او د اصلاح کولو او AST نسل لپاره کوډ په Rust کې لیکل شوی. د براوزر اړخ ملاتړ
BinaryAST لا دمخه شتون لري د شپې مجلس فایرفوکس. په BinaryAST کې کوډډر دواړه د پای سایټ اوزار کولو کچې کې او د پراکسي یا مینځپانګې تحویلي شبکې په اړخ کې د بهرني سایټونو بسته کولو سکریپټونو لپاره کارول کیدی شي. اوس مهال، د کاري ډلې لخوا د BinaryAST معیاري کولو پروسه لا دمخه پیل شوې ECMA TC39، له هغې وروسته به دا فارمیټ د موجوده مینځپانګې کمپریشن میتودونو سره یوځای پاتې شي ، لکه gzip او بروټلي.

Cloudflare، Mozilla او Facebook د جاواسکریپټ بارولو چټکولو لپاره BinaryAST ته وده ورکوي

Cloudflare، Mozilla او Facebook د جاواسکریپټ بارولو چټکولو لپاره BinaryAST ته وده ورکوي

کله چې جاواسکریپټ پروسس کوي، د کوډ د بارولو او پارس کولو مرحله کې د پام وړ وخت مصرف کیږي. د دې په پام کې نیولو سره چې په ډیری مشهور سایټونو کې د ډاونلوډ شوي جاواسکریپټ حجم 10 MB ته نږدې دی (د مثال په توګه، د LinkedIn لپاره - 7.2 MB، Facebook - 7.1 MB، Gmail - 3.9 MB)، د جاوا سکریپټ ابتدايي پروسس یو مهم ځنډ معرفي کوي. د براوزر اړخ کې د پارس کولو مرحله هم ورو ده په الوتنه کې د AST په بشپړ ډول جوړولو کې د ناتوانۍ له امله ځکه چې کوډ بار شوی (براؤزر باید د کوډ بلاکونو بشپړیدو ته انتظار وباسي ، لکه د فعالیتونو پای ، د ترلاسه کولو لپاره. هغه معلومات چې د اوسني عناصرو د تجزیې لپاره ورک دي).

دوی هڅه کوي د کوډ په لږ او کم فشار شوي شکل کې توزیع کولو او همدارنګه د براوزر لخوا رامینځته شوي بایټ کوډ کیچ کولو سره ستونزه په جزوي ډول حل کړي. په عصري سایټونو کې، کوډ ډیری وختونه تازه کیږي، نو د کیچ کول یوازې یو څه برخه ستونزه حل کوي. WebAssembly یو حل کیدی شي، مګر دا په کوډ کې واضح ټایپ کولو ته اړتیا لري او د موجوده جاواسکریپټ کوډ پروسس کولو چټکولو لپاره مناسب ندي.

بله لاره دا ده چې د جاواسکریپټ سکریپټونو پرځای چمتو شوي تالیف شوي بایټکوډ وړاندې کړئ، مګر د براوزر انجن جوړونکي د دې مخالف دي ځکه چې د دریمې ډلې بایټ کوډ تصدیق کول ستونزمن دي، د دې مستقیم پروسس کولی شي د ویب سټراټیفیکیشن لامل شي، اضافي امنیتي خطرونه رامینځته کیږي، او د ویب پاڼې پراختیا. یو نړیوال بایټ کوډ فارمیټ ته اړتیا ده.

BinaryAST تاسو ته اجازه درکوي د نوي بایټ کوډ رامینځته کولو یا د جاواسکریپټ ژبه بدلولو پرته ستاسو اوسني کوډ پراختیا او تحویلي ماډل کې فټ شئ. د BinaryAST بڼه کې د ډیټا اندازه د کمپریشن شوي جاواسکریپټ کوډ سره د پرتلې وړ ده، او د سرچینې متن پارس کولو پړاو له منځه وړلو سره د پروسس سرعت د پام وړ وده کوي. برسېره پردې، بڼه د بایټکوډ تالیف ته اجازه ورکوي ځکه چې BinaryAST ډک شوی، پرته له دې چې د ټولو معلوماتو بشپړولو ته انتظار وکړي. سربیره پردې ، د سرور اړخ کې پارس کول تاسو ته اجازه درکوي د بیرته راستن شوي BinaryAST نمایندګۍ څخه غیر کارول شوي افعال او غیر ضروري کوډ خارج کړئ ، کوم چې کله چې د براوزر اړخ کې تحلیل کیږي ، د غیر ضروري ترافیک تحلیل او لیږد دواړه وخت ضایع کوي.

د BinaryAST یوه ځانګړتیا د لوستلو وړ جاوا سکریپټ بیا رغولو وړتیا هم ده چې دقیقا د اصلي نسخې سره ورته نه ده، مګر په معنی سره مساوي ده او د متغیرونو او افعالونو ورته نومونه پکې شامل دي (BinaryAST نومونه خوندي کوي، مګر د پوستونو په اړه معلومات نه خوندي کوي. کوډ، بڼه او تبصرې). د سکې بل اړخ د نوي برید ویکتورونو رامینځته کول دي ، مګر د پراختیا کونکو په وینا ، دا د بدیلونو کارولو په پرتله خورا کوچني او ډیر کنټرول وړ دي ، لکه د بایټ کوډ توزیع.

د facebook.com کوډ ازموینې ښودلې چې د جاوا سکریپټ پارس کول د CPU سرچینې 10-15٪ مصرفوي او پارس کول د JIT لپاره د بایټ کوډ او لومړني کوډ تولید رامینځته کولو څخه ډیر وخت نیسي. په SpiderMonkey انجن کې، په بشپړ ډول د AST جوړولو وخت 500-800 ms ته اړتیا لري، او د BinaryAST کارولو دا شمیره 70-90٪ کمه کړې.
په عموم کې، د ډیری ویب اور وژونکو لپاره، کله چې د BinaryAST کاروئ، د جاوا سکریپټ پارس کولو وخت د اصلاح کولو پرته په موډ کې 3-10٪ کم شوی او د 90-97٪ لخوا کله چې د غیر استعمال شوي افعالونو څخه سترګې پټول فعال شوي وي.
کله چې د 1.2 MB جاوا سکریپټ ټیسټ سیټ چلول ، د BinaryAST کارولو د پیل وخت ته اجازه ورکړه چې په ډیسټاپ سیسټم (Intel i338) کې له 314 څخه تر 7 ms پورې سرعت وکړي او په ګرځنده وسیله (HTC One M2019) کې له 1455 څخه تر 8 ms پورې.

سرچینه: opennet.ru

Add a comment