Název:
Interpreter a compiler pro .NET IL v Truffle: jak spustit C# v JVM
Překlad názvu:
Truffle based .NET IL interpreter and compiler: run C# on Java Virtual Machine
Autoři:
Gocník, Jan ; Šindelář, Štěpán (vedoucí práce) ; Petříček, Tomáš (oponent) Typ dokumentu: Bakalářské práce
Rok:
2022
Jazyk:
eng
Abstrakt: [eng][cze] Traditionally, to achieve high performance for executing dynamic languages, a hand-crafted Just-In-Time (JIT) compiler was necessary. Such compilers come with several disadvantages, including security issues arising from bugs in manual speculative optimizations. Our work focuses on the issue that these state-of-the- art projects can be prohibitively complicated for students, academics and hob- byists interested in programming language design and implementation. A novel project, the Truffle Language Implementation Framework, uses partial evalua- tion to convert interpreter-style code into an optimizing compiler. Authors pro- pose that the reduced complexity for implementing languages Truffle offers will allow more languages to benefit from high performance compilation. To validate this claim, we implement BACIL, a Truffle-based runtime for .NET (CLI). While built in an academic setting with inherently limited resources, its peak perfor- mance achieves under 10 times slowdown compared to .NET's official runtime. We release the implementation as open-source with the hope it can further pro- mote experimentation with programming languages.Pro dosažení vysokého výkonu při spouštění dynamických programovacích jazyků byl tradičně vyžadován ručně napsaný Just-In-Time (JIT) kompilátor. Ta- kové kompilátory však přináší spoustu nevýhod, včetně bezpečnostních nedo- statků způsobených ručně implementovanými spekulativními optimalizacemi. Naše práce se zaměřuje na fakt, že nejmodernější projekty mohou být příliš kom- plikované pro studenty, akademiky a nadšence se zájmem o návrh programova- cích jazyků a jejich implementaci. Moderní projekt nazvaný " Truffle Language Implementation Framework" používá tzv. " částečné vyhodnocení" (partial eva- luation) pro převedení kódu napsaného jako interpreter na optimizující kompi- látor. Autoři tvrdí, že snížená náročnost implementace jazyků nabízená projek- tem Truffle umožní více jazykům využívat vysoce výkonné kompilace. Abychom toto tvrzení ověřili, implementujeme BACIL: prostředí pro spouštění programů na platformě .NET (CLI) založené na projektu Truffle. I když byl BACIL vytvořen v akademickém prostředí s jeho inherentně omezenými prostředky, ve výsledku dosahuje při plném výkonu méně než desetinásobného zpomalení oproti oficiál- nímu prostředí .NET. Výslednou implementaci jsme zveřejnili jako open-source a doufáme, že poslouží další propagaci experimentování s programovacími jazyky.
Klíčová slova:
CIL|JVM|Graal|Truffle|partial evaluation; CIL|JVM|Graal|Truffle|partial evaluation