bakalářská práce

Zlepšování interpretu GraalPy

Text práce 1.6 MB

Autor práce: Bc. Adam Rudolf Hrbáč

Ak. rok: 2023/2024

Vedoucí: Ing. David Kozák

Oponent: Ing. Aleš Smrčka, Ph.D.

Abstrakt:

GraalPy je implementace jazyka Python pro Java Virtual Machine (JVM), určená pro její vkládání do Java aplikací. Do existujícího kódu Javy lze takto přidávat Python balíčky třetích stran. GraalPy také, ve srovnání s CPython jako referenční implementací Pythonu, často dosahuje vyššího výkonu. Tato práce realizuje dvě významné funkce Pythonu v GraalPy. První, kterou je API pro asynchronní programování, jedna z posledních hlavních funkcí jazyka Python co v GraalPy chyběla, a která se využívá hlavně pro programování webových aplikací, kde umožňuje psaní souběžného kódu bez potřeby vláken použitím takzvaného barevného asynchronního programování, kde programátor musí explicitně anotovat možné změny toku programu. Obsahuje dvě části, knihovnu pro smyčky událostí, v případé této práce asyncio, a syntax pro anotaci změn toku. Druhou funkcí v této práci je trasovací API, tedy API CPythonu pro implementaci ladících nástrojů, nástrojů pro pokrytí kódu testy, apod. Funguje pomocí analýzy bajtkódu Pythonu při kterém se vyhodnocuje zda je spouštěn nový řádek, a pokud ano, je pro něj zavoláno nakonfigurované zpětné volání. Pokud běžící kód vrátí hodnotu, zavolá funkci nebo vyhodí výjimku, použije se znovu toto zpětné volání, což umožní ladícímu nástroji nastavit pro takovouto událost body přerušení. Obě tyto funkce jsou součástí vydané verze GraalPy a mají významný přínos pro kompatibilitu s balíčky třetích stran.

Klíčová slova:

Python, async, debugger, GraalPy

Termín obhajoby

10.06.2024

Výsledek obhajoby

obhájeno (práce byla úspěšně obhájena)

znamkaAznamka

Klasifikace

A

Průběh obhajoby

Student nejprve prezentoval výsledky, kterých dosáhl v rámci své práce. Komise se poté seznámila s hodnocením vedoucího a posudkem oponenta práce. Student následně odpověděl na otázky přítomných. Komise se na základě posudku oponenta, hodnocení vedoucího, přednesené prezentace a odpovědí studenta na položené otázky rozhodla práci hodnotit stupněm A.

Otázky k obhajobě

  1. V čem vidíte největší přidanou hodnotu vaší práce?
  2. Dalo by se vaše řešení dále zlepšit? Jakým způsobem byste postupoval?
  3. Mohl byste zhodnotit přínos vašeho řešení pro komunitu?

Jazyk práce

angličtina

Fakulta

Ústav

Studijní program

Informační technologie (BIT)

Složení komise

doc. RNDr. Milan Češka, Ph.D. (předseda)
Ing. Zbyněk Křivka, Ph.D. (člen)
doc. Ing. Peter Chudý, Ph.D., MBA (člen)
Ing. Jiří Matoušek, Ph.D. (člen)
Ing. Jaroslav Rozman, Ph.D. (člen)

Posudek vedoucího
Ing. David Kozák

Student odvedl vynikající práci. Kladně hodnotím hlavně rozsah a náročnost tématu a také kvalitu implementace. Výsledky práce jsou plně integrovány do překladače využívaného aktivně v průmyslu. Znalosti nezbytné k úspěšné realizaci této práce dalece přesahují typickou úroveň absolventa BP. Text práce a práce s literaturou též přesahuje typický rozsah BP.

Kritérium hodnocení Slovní hodnocení
Informace k zadání

Práce je realizována ve spolupráci s firmou Oracle. Svou náročností dalece přesahuje rozsah BP, student musel získat a aplikovat netriviální znalosti v oblasti implementace programovacích jazyků, konkrétně podpory pro asynchronní programovaní a debugging. Práce splnila všechny body zadání, s výsledky jsem velmi spokojen.

Práce s literaturou

Student sám aktivně vyhledával relevantní materiály, na základě kterých svoji práci realizoval.

Aktivita během řešení, konzultace, komunikace

Student pracoval aktivně, dlouhodobě a zodpovědně. Na konzultace chodil včas a dobře připravený.

Aktivita při dokončování

Student mě se svojí prací průběžně seznamoval, měl jsem dostatek času si text několikrát projít. Zpětnou vazbu student zodpovědně integroval do textu práce.

Publikační činnost, ocenění

Výsledky práce byly integrovány do open-source Python interpretu GraalPy. Práce byla prezentována na studentské konferenci Excel@FIT.

Výsledný počet bodů navržený vedoucím: 99
Zobrazit více

Známka navržená vedoucím: A

Posudek oponenta
Ing. Aleš Smrčka, Ph.D.

Technická zpráva je na výborné úrovni. Práce obsahuje všechny podstatné části a souhrně dokumentuje přínos. Implementovaná rozšíření nástroje GraalPy jsou funkční a jsou přijata komunitou. Celkový rozsah práce je nadprůměrný.

Kritérium hodnocení Slovní hodnocení Body
Náročnost zadání

Stupeň hodnocení: obtížnější zadání

Práce vyžaduje podrobnou znalost interních detailů nejen upravovaného reálného projektu GraalPy, ale také dalších technologií související s překladači a interprety (korutiny, efektivní datové struktury, trasovací technologie).

Prezentační úroveň technické zprávy

Technická zpráva má logickou strukturu a lehce se v ní naviguje.  Student uvádí čtenáře do problematiky a souvisejících technologií a navazuje na dvě hlavní kapitoly pojednávající o hlavních přínosech práce. Potenciální drobné vylepšení by mohlo být ve strukturalizované analýze požadavků a přesnějším zhodnocení dosažených výsledků.

85
Formální úprava technické zprávy

Z hlediska jazykové a typografické stránky nemám výhrady. Práce je v anglickém jazyce a je čitelná.

90
Realizační výstup

K realizačnímu výstupu nemám žádné výhrady. Student pracoval na reálném, aktivním projektu a přispěl celkem s více než 10 tis. řádky (kódu a komentářů). Jeho přínos je identifikovatelný a je již zahrnut do hlavní větve nástroje GraalPy.

95
Využitelnost výsledků

Dosažené výsledky (rozšířená podpora interpretu GraalPy) je již využívaná komunitou.

Rozsah splnění požadavků zadání

Stupeň hodnocení: zadání splněno

Student splnil zadání v plném rozsahu. V rozšíření se zaměřil právě na asynchronní programy i na zpřístupnění operací pro ladění programů.

Rozsah technické zprávy

Stupeň hodnocení: je v obvyklém rozmezí

Práce s literaturou

Práce s literaturou je bez problémů. Student se odkazuje převážně na internetové zdroje (domovské stránky) zpřízněných SW projektů, což je z ohledem na kategorii projektu pochopitelné. Cituje také odborné publikace, které s tématem souvisejí.

95
Výsledný počet bodů navržený oponentem: 93
Zobrazit více

Známka navržená oponentem: A

Odpovědnost: Mgr. et Mgr. Hana Odstrčilová