Inlinec - usa ka bag-ong paagi sa paggamit sa C code sa mga script sa Python

proyekto inlinec Usa ka bag-ong pamaagi alang sa inline nga paghiusa sa C code ngadto sa mga script sa Python gisugyot. Ang mga function sa C direkta nga gihubit sa parehas nga Python code file, nga gipasiugda sa "@inlinec" nga dekorador. Ang summary script gipatuman sama sa Python interpreter ug gi-parse gamit ang mekanismo nga gihatag sa Python mga codec, nga nagpaposible sa pagkonektar sa usa ka parser aron mabag-o ang script sa dili pa kini ma-parse sa tighubad (ingon nga usa ka lagda, ang module sa codec gigamit alang sa transparent nga transcoding sa teksto, apan gitugotan ka usab nga usbon ang sulud sa script).

Ang parser konektado isip usa ka module ("gikan sa inlinec import inlinec"), nga naghimo sa inisyal nga pagproseso ug on-the-fly naghubad sa mga kahulugan sa C functions nga gipasiugda gamit ang @inlinec annotation ngadto sa ctypes bindings ug gipulihan ang lawas sa C function sa usa ka tawag niini nga mga pagbugkos. Pagkahuman sa ingon nga pagbag-o, ang tighubad sa Python makadawat sa husto nga nabag-o nga gigikanan nga teksto sa script, diin ang C function gitawag gamit ang ctypes. Ang susama nga pamaagi gigamit usab sa proyekto Pyxl4, nga nagtugot kanimo sa pagsagol sa HTML ug Python code sa usa ka file.

# coding: inlinec
gikan sa inlinec import inlinec

@inlinec
def pagsulay ():
# ilakip
walay pulos nga pagsulay() {
printf("Hello, kalibutan");
}

Ang pag-uswag sa pagkakaron gipresentar isip usa ka eksperimento nga prototype, nga adunay mga kakulangan sama sa kakulang sa suporta alang sa pagpasa sa mga pointer (gawas sa mga string) sa function, ang panginahanglan sa pagdagan.
Ang "gcc -E" alang sa preprocessing sa code, pag-save sa intermediate *.so, *.o ug *.c nga mga file sa kasamtangan nga direktoryo, dili pag-cache sa nakabig nga bersyon ug paghimo sa dili kinahanglan nga mga yugto sa pag-parse (taas nga mga paglangan sa matag higayon nga kini modagan).

Source: opennet.ru

Idugang sa usa ka comment