Inlinec - một cách mới để sử dụng mã C trong tập lệnh Python

dự án nội tuyến Một phương pháp mới để tích hợp nội tuyến mã C vào các tập lệnh Python đã được đề xuất. Các hàm C được xác định trực tiếp trong cùng một tệp mã Python, được đánh dấu bằng trình trang trí “@inlinec”. Tập lệnh tóm tắt được thực thi bởi trình thông dịch Python và được phân tích cú pháp bằng cơ chế được cung cấp trong Python codec, điều này cho phép kết nối trình phân tích cú pháp để chuyển đổi tập lệnh trước khi trình thông dịch phân tích cú pháp (theo quy định, mô-đun codec được sử dụng để chuyển mã văn bản trong suốt, nhưng nó cũng cho phép bạn tùy ý chuyển đổi nội dung của tập lệnh).

Trình phân tích cú pháp được kết nối dưới dạng một mô-đun (“from inlinec import inlinec”), thực hiện quá trình xử lý ban đầu và nhanh chóng dịch các định nghĩa của hàm C được đánh dấu bằng cách sử dụng chú thích @inlinec thành các liên kết ctypes và thay thế phần thân của hàm C bằng một cuộc gọi đến các ràng buộc này. Sau khi chuyển đổi như vậy, trình thông dịch Python sẽ nhận được văn bản nguồn được chuyển đổi chính xác của tập lệnh, trong đó các hàm C được gọi bằng cách sử dụng công ty. Một phương pháp tương tự cũng được sử dụng trong dự án Pyxl4, cho phép bạn trộn mã HTML và Python trong một tệp.

# mã hóa: nội tuyến
từ nội tuyến nhập nội tuyến

@inlinec
kiểm tra chắc chắn():
#bao gồm
kiểm tra trống () {
printf("Xin chào thế giới");
}

Sự phát triển cho đến nay vẫn được trình bày dưới dạng nguyên mẫu thử nghiệm, có những thiếu sót như thiếu hỗ trợ truyền con trỏ (trừ chuỗi) tới hàm, nhu cầu chạy
“gcc -E” để xử lý trước mã, lưu các tệp trung gian *.so, *.o và *.c trong thư mục hiện tại, không lưu phiên bản đã chuyển đổi vào bộ đệm và thực hiện các giai đoạn phân tích cú pháp không cần thiết (độ trễ kéo dài mỗi khi nó chạy).

Nguồn: opennet.ru

Thêm một lời nhận xét