Inlinec - Python սկրիպտներում C կոդը օգտագործելու նոր միջոց

Նախագիծ inlinec Առաջարկվել է Python-ի սկրիպտների մեջ C կոդի inline ինտեգրման նոր մեթոդ: C ֆունկցիաները սահմանվում են անմիջապես նույն Python կոդային ֆայլում, որն ընդգծված է «@inlinec» դեկորատորի կողմից: Ամփոփ սցենարը կատարվում է այնպես, ինչպես որ կա Python թարգմանչի կողմից և վերլուծվում է Python-ում նախատեսված մեխանիզմի միջոցով: կոդեկներ, ինչը հնարավորություն է տալիս միացնել վերլուծիչը՝ սցենարը փոխակերպելու համար, նախքան այն թարգմանչի կողմից վերլուծելը (որպես կանոն, կոդեկների մոդուլն օգտագործվում է տեքստի թափանցիկ տրանսկոդավորման համար, բայց այն նաև թույլ է տալիս կամայականորեն վերափոխել սցենարի բովանդակությունը)։

Վերլուծիչը միացված է որպես մոդուլ («inlinec import inlinec»), որն իրականացնում է նախնական մշակումը և անմիջապես թարգմանում է C ֆունկցիաների սահմանումները, որոնք ընդգծված են օգտագործելով @inlinec ծանոթագրությունները ctypes bindings և փոխարինում C ֆունկցիայի մարմինը կոչ այս կապանքներին: Նման փոխակերպումից հետո Python թարգմանիչը ստանում է սկրիպտի ճիշտ փոխարկված սկզբնական տեքստը, որում C ֆունկցիաները կանչվում են՝ օգտագործելով ctypes. Նմանատիպ մեթոդ կիրառվում է նաև նախագծում Pyxl4, որը թույլ է տալիս մեկ ֆայլում խառնել HTML և Python ծածկագիրը։

# կոդավորում՝ inlinec
inlinec import inlinec-ից

@inlinec
def test ():
#ներառում
void test() {
printf («Բարև, աշխարհ»);
}

Մշակումը մինչ այժմ ներկայացված է որպես փորձարարական նախատիպ, որը պարունակում է այնպիսի թերություններ, ինչպիսիք են գործառույթին ցուցիչները (բացի տողերից) փոխանցելու աջակցության բացակայությունը, գործարկման անհրաժեշտությունը:
«gcc -E» կոդի նախնական մշակման, ընթացիկ գրացուցակում միջանկյալ *.so, *.o և *.c ֆայլերը պահպանելու, փոխարկված տարբերակը չքեշավորելու և անհարկի վերլուծման փուլեր կատարելու համար (երկար ուշացումներ ամեն անգամ գործարկվելիս):

Source: opennet.ru

Добавить комментарий