Inlinec - Python komut dosyalarında C kodunu kullanmanın yeni bir yolu

proje satır içi C kodunun Python betiklerine satır içi entegrasyonu için yeni bir yöntem önerildi. C fonksiyonları doğrudan aynı Python kod dosyasında tanımlanır ve “@inlinec” dekoratörüyle vurgulanır. Özet komut dosyası, Python yorumlayıcısı tarafından olduğu gibi yürütülür ve Python'da sağlanan mekanizma kullanılarak ayrıştırılır. codec'ler, bu, betiği yorumlayıcı tarafından ayrıştırmadan önce dönüştürmek için bir ayrıştırıcının bağlanmasını mümkün kılar (kural olarak, codec modülü şeffaf metin kod dönüştürmesi için kullanılır, ancak aynı zamanda betiğin içeriğini isteğe bağlı olarak dönüştürmenize de olanak tanır).

Ayrıştırıcı, ilk işlemeyi gerçekleştiren ve anında @inlinec ek açıklamaları kullanılarak vurgulanan C işlevlerinin tanımlarını ctypes bağlamalarına çeviren ve C işlevinin gövdesini değiştiren bir modül olarak ("inlinec import inlinec'den") bağlanır. bu bağlamalara bir çağrı. Böyle bir dönüşümün ardından Python yorumlayıcısı, C işlevlerinin kullanılarak çağrıldığı betiğin doğru dönüştürülmüş kaynak metnini alır. tipler. Projede de benzer yöntem kullanılıyor Pyxl4HTML ve Python kodunu tek bir dosyada karıştırmanıza olanak tanır.

# kodlama: inlinec
inlinec'ten inlinec'i içe aktar

@inlinec
def testi():
#Dahil etmek
geçersiz test() {
printf("Merhaba dünya");
}

Geliştirme şu ana kadar deneysel bir prototip olarak sunuldu; bu, işleve işaretçilerin (dizeler hariç) aktarılması için destek eksikliği, çalıştırma ihtiyacı gibi eksiklikler içeriyor.
Kod ön işlemesi için “gcc -E”, ara *.so, *.o ve *.c dosyalarını geçerli dizine kaydetme, dönüştürülen sürümü önbelleğe almama ve gereksiz ayrıştırma aşamaları gerçekleştirme (her çalıştırıldığında uzun gecikmeler).

Kaynak: opennet.ru

Yorum ekle