Zlepšování interpretu GraalPy
but.committee | 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) | cs |
but.defence | 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. | cs |
but.jazyk | angličtina (English) | |
but.program | Informační technologie | cs |
but.result | práce byla úspěšně obhájena | cs |
dc.contributor.advisor | Kozák, David | en |
dc.contributor.author | Hrbáč, Adam Rudolf | en |
dc.contributor.referee | Smrčka, Aleš | en |
dc.date.created | 2024 | cs |
dc.description.abstract | 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. | en |
dc.description.abstract | GraalPy 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.mark | A | cs |
dc.identifier.citation | HRBÁČ, A. Zlepšování interpretu GraalPy [online]. Brno: Vysoké učení technické v Brně. Fakulta informačních technologií. 2024. | cs |
dc.identifier.other | 154280 | cs |
dc.identifier.uri | http://hdl.handle.net/11012/246563 | |
dc.language.iso | en | cs |
dc.publisher | Vysoké učení technické v Brně. Fakulta informačních technologií | cs |
dc.rights | Standardní licenční smlouva - přístup k plnému textu bez omezení | cs |
dc.subject | Python | en |
dc.subject | async | en |
dc.subject | debugger | en |
dc.subject | GraalPy | en |
dc.subject | Python | cs |
dc.subject | async | cs |
dc.subject | debugger | cs |
dc.subject | GraalPy | cs |
dc.title | Zlepšování interpretu GraalPy | en |
dc.title.alternative | Improving the GraalPy interpreter | cs |
dc.type | Text | cs |
dc.type.driver | bachelorThesis | en |
dc.type.evskp | bakalářská práce | cs |
dcterms.dateAccepted | 2024-06-10 | cs |
dcterms.modified | 2024-10-04-09:34:18 | cs |
eprints.affiliatedInstitution.faculty | Fakulta informačních technologií | cs |
sync.item.dbid | 154280 | en |
sync.item.dbtype | ZP | en |
sync.item.insts | 2025.03.18 21:00:54 | en |
sync.item.modts | 2025.01.15 21:40:33 | en |
thesis.discipline | Informační technologie | cs |
thesis.grantor | Vysoké učení technické v Brně. Fakulta informačních technologií. Ústav inteligentních systémů | cs |
thesis.level | Bakalářský | cs |
thesis.name | Bc. | cs |