Zlepšování interpretu GraalPy

but.committeedoc. 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)cs
but.defenceStudent 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.cs
but.jazykangličtina (English)
but.programInformační technologiecs
but.resultpráce byla úspěšně obhájenacs
dc.contributor.advisorKozák, Daviden
dc.contributor.authorHrbáč, Adam Rudolfen
dc.contributor.refereeSmrčka, Alešen
dc.date.created2024cs
dc.description.abstractGraalPy 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.en
dc.description.abstractGraalPy is a Python implementation for the Java Virtual Machine, designed for easy embedding into Java applications. Such embedding is primarily useful for adopting 3rd party Python packages in existing Java codebases. GraalPy also often has greater performance compared to CPython, the canonical implementation of Python. This work implements two major features. First, the async API, one of the last major missing Python features in GraalPy, used primarily for web development, allowing writing concurrent code without parallelism, using so-called colored async, where each context switch point must be explicitly annotated. It is composed of two major parts, a library providing an event loop, asyncio in this work, as well as the syntactic components of Python, providing the way with which to indicate context switches. The second feature is the tracing API, a CPython API for implementing Python debuggers, used by integrated debuggers in IDEs, coverage tools, etc. It works by analyzing the Python bytecode in order to determine whether a new line is being executed, and if so, invokes a registered callback. This callback is also used when returning a value, calling a function and raising an exception, allowing a debugger to set a breakpoint for these events. Both features are part of the GraalPy releases and have had a notable benefit to compatibility with 3rd party packages.cs
dc.description.markAcs
dc.identifier.citationHRBÁČ, A. Zlepšování interpretu GraalPy [online]. Brno: Vysoké učení technické v Brně. Fakulta informačních technologií. 2024.cs
dc.identifier.other154280cs
dc.identifier.urihttp://hdl.handle.net/11012/246563
dc.language.isoencs
dc.publisherVysoké učení technické v Brně. Fakulta informačních technologiícs
dc.rightsStandardní licenční smlouva - přístup k plnému textu bez omezenícs
dc.subjectPythonen
dc.subjectasyncen
dc.subjectdebuggeren
dc.subjectGraalPyen
dc.subjectPythoncs
dc.subjectasynccs
dc.subjectdebuggercs
dc.subjectGraalPycs
dc.titleZlepšování interpretu GraalPyen
dc.title.alternativeImproving the GraalPy interpretercs
dc.typeTextcs
dc.type.driverbachelorThesisen
dc.type.evskpbakalářská prácecs
dcterms.dateAccepted2024-06-10cs
dcterms.modified2024-10-04-09:34:18cs
eprints.affiliatedInstitution.facultyFakulta informačních technologiícs
sync.item.dbid154280en
sync.item.dbtypeZPen
sync.item.insts2025.03.18 21:00:54en
sync.item.modts2025.01.15 21:40:33en
thesis.disciplineInformační technologiecs
thesis.grantorVysoké učení technické v Brně. Fakulta informačních technologií. Ústav inteligentních systémůcs
thesis.levelBakalářskýcs
thesis.nameBc.cs
Files
Original bundle
Now showing 1 - 2 of 2
Loading...
Thumbnail Image
Name:
final-thesis.pdf
Size:
1.6 MB
Format:
Adobe Portable Document Format
Description:
file final-thesis.pdf
Loading...
Thumbnail Image
Name:
review_154280.html
Size:
8.27 KB
Format:
Hypertext Markup Language
Description:
file review_154280.html
Collections