FFI
Tài liệu này mô tả các quy tắc FFI (Giao diện hàm ngoại lai) để gọi các hàm được triển khai bên ngoài từ ngôn ngữ Wave. Thông qua FFI, các chương trình Wave có thể tương tác trực tiếp với các thư viện bản địa (native library) được viết bằng các ngôn ngữ khác.
Tóm tắt
FFI của Wave hoạt động dựa trên khai báo. Các hàm bên ngoài không được triển khai trong mã Wave và chỉ cần chỉ định ABI (Giao diện nhị phân ứng dụng) mà hàm đó tuân theo. Việc triển khai thực tế được giải quyết từ các thư viện bên ngoài trong giai đoạn liên kết.
FFI hoạt động bằng cách chỉ khai báo sự tồn tại của hàm trong thời gian biên dịch, và trong quá trình tạo tệp thực thi, linker sẽ kết nối thực tế với symbol đó.
Khai báo extern
Các hàm bên ngoài được khai báo sử dụng từ khóa extern.
Trong Wave hiện tại, yêu cầu phải chỉ định ABI và chỉ hỗ trợ extern(c).
extern(c) fun function_name(args...) -> return_type;
Chỉ định ABI
Trong khai báo extern, cần chỉ rõ ABI.
ABI hiện tại được hỗ trợ là c.
extern(c) fun printf(fmt: ptr<u8>);
Khai báo như extern(rust) có thể được phân tích cú pháp nhưng lỗi sẽ xảy ra ở giai đoạn phân tích ngữ nghĩa.
