[Fikir] FFI Seam Detaylı Tasarımı — callhost İmzası ve Tip Eşleme (Marshaling) #88
Labels
No Label
cli-ux
faz-plani
felsefe-gozden-gecir
ffi-builtin
fikir
gelecek-vizyon
ir-vm
kalite-mimari
moduller-import
test-senaryosu
tip-sistemi
tooling-lsp
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: saqut/saqut-compiler#88
Loading…
Reference in New Issue
No description provided.
Delete Branch "%!s(<nil>)"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Giriş (Nedir, Neden Önemli?)
ADR-016, "host fonksiyonu çağır" (FFI — Foreign Function Interface, Yabancı Fonksiyon Arayüzü) mekanizmasının kasıtlı bir tasarım kararı olduğunu,
print'in ilk müşterisi olacağını söylüyor. Ama mekanizmanın somut hali (fonksiyon imzası, parametre/dönüş tipi eşlemesi) henüz tasarlanmadı.Gelişme (Olası Yaklaşımlar)
callhost <isim> <argüman sayısı>IR/bytecode komutu: argümanlar yığından alınır, C++ tarafındaki kayıtlı bir fonksiyon tablosuna (std::map<std::string, HostFunction>) bakılır, sonuç yığına geri konur.int/float/string/booldeğerleri C++int/double/std::string/bool'a nasıl çevrilir (marshaling) — basit primitiflerle başlamak ("önce dikey dilim"), struct/array marshaling'i ileri bir adım olarak bırakmak.panicbenzeri bir çalışma-zamanı hatası mı (yeni runtime hata kategorisi gerekebilir)?Açık Sorular
printgibi fonksiyonlar), yoksa kullanıcı kendi C++ fonksiyonunu kayıt edebilir mi (gömülü/embeddable derleyici senaryosu — "alet çantası" ruhuna çok uygun ama kapsam büyütür)?callhostIR seviyesinde mi, yoksa daha yüksek seviyeli bir AST-annotation mı (Faz 1'inExpressionNodealanlarına eklenebilir)?İmza/Yorum:
print(fibonacci(n))çalıştığı gün, bu issue'nun "v0" kapsamı fiilen tamamlanmış olacak — minimal hedef gayet net.