Wywołaj kod Pythona z LLVM JIT

Piszę język / parser / kompilator języka w Pythonie, który powinien działać w LLVM JIT-VM (używającllvm-py) później. Pierwsze dwa kroki są na razie całkiem proste, ale (nawet jeśli nie uruchomiłem jeszcze zadania kompilacji), widzę problem, gdy mój kod chce wywołać kod Pythona (ogólnie) lub współdziałać z lexerem Pythona / parser / kompilator (odpowiednio). Moim głównym zmartwieniem jest to, że kod powinien być w stanie dynamicznie ładować dodatkowy kod do maszyny wirtualnej w czasie wykonywania, a tym samym musi wyzwalać cały łańcuch leksera / parsera / kompilatora w Pythonie z poziomu maszyny wirtualnej.

Po pierwsze: czy jest to możliwe, czy VM jest „niezmienna” po uruchomieniu?

Jeśli tak, to obecnie widzę 3 możliwe rozwiązania (jestem otwarty na inne sugestie)

„Wyłamać” maszynę wirtualną i umożliwić bezpośrednie wywołanie funkcji Pythona głównego procesu (być może rejestrując ją jako funkcję LLVM, która w jakiś sposób przekierowuje do głównego procesu). Nic o tym nie znalazłem, a poza tym nie jestem pewien, czy to dobry pomysł (bezpieczeństwo i tak dalej).Skompiluj środowisko wykonawcze (statycznie lub dynamicznie w czasie wykonywania) do LLVM-Assembly / -IR. Wymaga to, aby kod IR był w stanie zmodyfikować maszynę wirtualną, w której działaSkompiluj środowisko wykonawcze (statycznie) do biblioteki i załaduj je bezpośrednio do maszyny wirtualnej. Ponownie musi być w stanie dodawać funkcje (itp.) Do maszyny wirtualnej, w której działa.

questionAnswers(2)

yourAnswerToTheQuestion