گوگل اينڊرائيڊ لاءِ سونگ ماڊلر اسمبلي سسٽم تيار ڪري ٿو

گوگل هڪ تعميراتي نظام ٺاهي رهيو آهي سونگAndroid پليٽ فارم لاءِ پراڻي بلڊ اسڪرپٽس کي تبديل ڪرڻ لاءِ ٺهيل آهي، ميڪ يوٽيلٽي جي استعمال جي بنياد تي. سونگ سادي بيان ڪندڙ استعمال ڪرڻ جو مشورو ڏئي ٿو وضاحتون ماڊلز گڏ ڪرڻ جا ضابطا، ڏنو ايڪسٽينشن سان فائلن ۾ ".bp" (بليو پرنٽ). فائل فارميٽ JSON جي ويجهو آهي ۽، جيڪڏهن ممڪن هجي، اسيمبلي فائلن جي نحو ۽ سيمينٽڪس کي ورجائي ٿو ڪيڪل. ڪوڊ Go ۾ لکيل آهي ۽ Apache 2.0 لائسنس تحت ورهايو ويو آهي.

سونگ بلڊ فائلون مشروط بيانن ۽ برانچنگ ايڪسپريسز کي سپورٽ نه ٿيون ڪن، پر صرف تعمير ڪرڻ وقت استعمال ٿيندڙ منصوبي جي جوڙجڪ، ماڊلز ۽ انحصار کي بيان ڪن ٿيون. ٺاهيل فائلون ماسڪ استعمال ڪندي بيان ڪيون ويون آهن ۽ پيڪيجز ۾ گروپ ٿيل آهن، جن مان هر هڪ فائلن جو مجموعو آهي لاڳاپيل انحصار سان. متغير جي وضاحت ڪرڻ ممڪن آهي. متغير ۽ ملڪيت سختي سان ٽائپ ڪيا ويا آهن (متغير جو قسم منتخب ڪيو ويو متحرڪ طور تي پهرين تفويض تي، ۽ ملڪيتن لاء مستحڪم طور تي ماڊل جي قسم تي منحصر آهي). اسيمبليء جي منطق جي پيچيده عناصر کي سنڀاليندڙن ڏانهن منتقل ڪيو ويو آهي، لکيل گو ٻولي ۾.

سونگ هڪ وڏي منصوبي سان جڙيل آهي بلڊنگ، جنهن جي اندر هڪ ميٽا-اسمبلي سسٽم ٺاهي رهيو آهي جيڪو Android سان جڙيل ناهي، جيڪو، فائلن جي بنياد تي بيان ڪندڙ ماڊل وضاحتن سان، اسيمبلي اسڪرپٽ ٺاهي ٿو. Ninja (بنائڻ لاءِ متبادل)، بيان ڪري ٿو حڪمن کي جيڪو هلائڻ جي ضرورت آهي تعمير ڪرڻ ۽ انحصار. بلڊ منطق جي وضاحت ڪرڻ لاءِ پيچيده قاعدن يا ڊومين جي مخصوص ٻولي استعمال ڪرڻ بدران، بليو پرنٽ گو ٻولي ۾ پروجيڪٽ-مخصوص هينڊلر استعمال ڪري ٿو (Soong بنيادي طور تي Android لاءِ ساڳين هينڊلرن جو هڪ سيٽ آهي).

اهو طريقو وڏي ۽ متضاد منصوبن جي اجازت ڏئي ٿو، جهڙوڪ Android، هڪ اعلي سطحي پروگرامنگ ٻوليء ۾ ڪوڊ ۾ اسيمبليء جي منطق جي پيچيده عناصر کي لاڳو ڪرڻ جي اجازت ڏئي ٿو، جڏهن ته اسيمبلي جي جوڙجڪ ۽ منصوبي جي جوڙجڪ سان لاڳاپيل ماڊل ۾ تبديليون ڪرڻ جي صلاحيت کي برقرار رکڻ لاء سادي بياناتي نحو استعمال ڪندي. . مثال طور، سونگ ۾، مرتب ڪندڙ جھنڊن جو انتخاب هينڊلر طرفان ڪيو ويندو آهي llvm.go، ۽ هارڊويئر آرڪيٽيڪچرز لاءِ مخصوص سيٽنگن جي ايپليڪيشن کي سنڀاليندڙ طرفان ڪيو ويندو آهي art.go، پر ڪوڊ فائلن جو ڳنڍڻ ".bp" فائل ۾ ڪيو ويندو آهي.

cc_library {
...
srcs: ["generic.cpp"],
محراب: {
بازو: {
srcs: ["arm.cpp"],
},
x86: {
srcs: ["x86.cpp"],
},
},
}

جو ذريعو: opennet.ru

تبصرو شامل ڪريو