Smalltalk Type Inference Improvement Supporting Development Tooling and Code Analysis
Vylepšení typové inference jazyka Smalltalk pro podporu vývojářských nástrojů a analýzy kódu
Authors
Supervisors
Reviewers
Editors
Other contributors
Journal Title
Journal ISSN
Volume Title
Publisher
České vysoké učení technické v Praze
Czech Technical University in Prague
Czech Technical University in Prague
Date of defense
2026-02-18
Abstract
Dynamicky typované jazyky, jako je Pharo, postrádají explicitní typové informace, což omezuje nástroje pro vývojáře například navigaci, doplňování, reverzní inženýrství a generování třídních diagramů. Tato práce navrhuje jednotný způsob, jak shromažďovat a kombinovat různé náznaky typu (statické analýzy, pozorování za běhu a lehké indicie odvozené z názvů) za jediným dotazovacím rozhraním s jasně vyjádřenými kompromisy mezi latencí a pokrytím. Přístup je realizován v rozšiřitelném rámce pro kombinování se sledováním původu, řazením kandidátů a konfigurovatelnými politikami (řetězení a fúze). Doplňuje jej datová pipeline těžící rozsáhlé pravidelnosti názevtyp z reálného kódu. Výsledky jsou předvedeny v prototypových IDE nástrojích (prezenter stromu typů, chytřejší seznamy odesilatelů/implementátorů a rozšířené doplňování) a v průzkumném generátoru UML pro dávkové zpracování. Vyhodnocení na reprezentativních balíčcích pro Pharo se zaměřuje na vhodnost pro praxi: jak se zlepšuje pokrytí v reálných časových limitech, jak profily zpřehledňují kompromisy a kde zůstávají omezení a hrozby pro validitu. Rámec i vytěžené priority jsou míněny jako znovupoužitelné stavební prvky pro tvůrce nástrojů a přenositelné do příbuzných dynamických prostředí.
Konkrétní přínosy dizertační práce jsou následující:
1) Návrh a implementace A1, rámce pro kombinování zdrojů typové informace (TypeInfoTools) s jednotným vstupním bodem, adaptérovým protokolem pro heterogenní zdroje, sledováním původu a řazením výsledků a s konfigurovatelnými politikami a profily, které činí kompromisy mezi latencí a pokrytím transparentními.
2) Vybudování A2, datové pipeline a publikovaného datasetu název-typ pro Pharo, které zachycují časté pojmenovací pravidelnosti (podpora a dominance pro názvy a jejich části) a integrují se jako lehký zdroj zvyšující včasné řazení i pokrytí v běžných časových limitech IDE.
3) Ukázka praktických nástrojů využívajících kombinované typy v IDE: prezenter s kandidáty a vysvětlením jejich původu, filtrované seznamy senders/implementors omezující šum, rozšířené doplňování a průzkumný generátor UML vhodný pro dávkové profily.
4) Účelová evaluace, která měří pokrytí a dobu běhu jednotlivých zdrojů i jejich kombinací na reprezentativních balíčcích, zkoumá vliv konfigurace (pořadí, prahy, fúze) a explicitně uvádí omezení a hrozby pro validitu u dynamických jazyků.
5) Přenositelná návrhová doporučení: vzor adaptér + vstupní bod, vodítka pro rozpočtování času a práci s profily a znovupoužitelné priority názevtyp, které snižují bariéru pro rozšiřování přístupu v Pharu i v příbuzných ekosystémech.
This dissertation thesis addresses the lack of explicit type information in Pharo (and similar dynamically typed ecosystems) that limits developer tooling such as navigation, completion, reverse engineering and classdiagram generation. The work proposes a unified way to gather and combine heterogeneous type hintsstatic analyses, runtime observations and lightweight namebased cuesbehind a single query interface with clear latencycoverage tradeoffs. The approach is implemented in an extensible combining framework with provenance, ranking and configurable policies (chaining and fusion), and is complemented by a data pipeline that mines largescale nametotype regularities from real code. The results are demonstrated in IDE prototypes (a type tree presenter, smarter sender/implementor lists and completion augmentation) and in an exploratory UML generator for batch use. Evaluation on representative Pharo packages focuses on fitness for purpose: how coverage improves under practical time budgets, how profiles make tradeoffs explicit, and where limits and threats to validity remain. The framework and mined priors are intended to be reusable by tool builders and portable to related dynamic environments. In particular, the main contributions of the dissertation thesis are as follows: 1) Design and implementation of A1, a typesource combining framework (TypeInfoTools) that offers a single entry point, an adaptor protocol for heterogeneous sources, provenance and ranking, and configurable policies with profiles that make latency/coverage tradeoffs explicit. 2) Construction of A2, a nametotype data pipeline and published dataset for Pharo that captures frequent naming regularities (support and dominance for names and name parts) and integrates as a lightweight source to lift early ranking and extend coverage within typical IDE budgets. 3) Demonstration of practical tooling that exploits combined types in the IDE: a presenter that exposes candidates and their explanations, filtered sender/implementor lists that reduce noise, completion augmentation, and an exploratory UML generator that exercises batchmode profiles. 4) A fitforpurpose evaluation that measures persource and combined coverage and run time on representative packages, studies configuration effects (orderings, thresholds, fusion), and states limitations and threats to validity relevant to dynamically typed languages. 5) Transferable design knowledge: an adaptor/entrypoint pattern, budgeting and profiling guidelines, and reusable nametotype priors that lower the barrier to extending the approach in Pharo and related ecosystems.
This dissertation thesis addresses the lack of explicit type information in Pharo (and similar dynamically typed ecosystems) that limits developer tooling such as navigation, completion, reverse engineering and classdiagram generation. The work proposes a unified way to gather and combine heterogeneous type hintsstatic analyses, runtime observations and lightweight namebased cuesbehind a single query interface with clear latencycoverage tradeoffs. The approach is implemented in an extensible combining framework with provenance, ranking and configurable policies (chaining and fusion), and is complemented by a data pipeline that mines largescale nametotype regularities from real code. The results are demonstrated in IDE prototypes (a type tree presenter, smarter sender/implementor lists and completion augmentation) and in an exploratory UML generator for batch use. Evaluation on representative Pharo packages focuses on fitness for purpose: how coverage improves under practical time budgets, how profiles make tradeoffs explicit, and where limits and threats to validity remain. The framework and mined priors are intended to be reusable by tool builders and portable to related dynamic environments. In particular, the main contributions of the dissertation thesis are as follows: 1) Design and implementation of A1, a typesource combining framework (TypeInfoTools) that offers a single entry point, an adaptor protocol for heterogeneous sources, provenance and ranking, and configurable policies with profiles that make latency/coverage tradeoffs explicit. 2) Construction of A2, a nametotype data pipeline and published dataset for Pharo that captures frequent naming regularities (support and dominance for names and name parts) and integrates as a lightweight source to lift early ranking and extend coverage within typical IDE budgets. 3) Demonstration of practical tooling that exploits combined types in the IDE: a presenter that exposes candidates and their explanations, filtered sender/implementor lists that reduce noise, completion augmentation, and an exploratory UML generator that exercises batchmode profiles. 4) A fitforpurpose evaluation that measures persource and combined coverage and run time on representative packages, studies configuration effects (orderings, thresholds, fusion), and states limitations and threats to validity relevant to dynamically typed languages. 5) Transferable design knowledge: an adaptor/entrypoint pattern, budgeting and profiling guidelines, and reusable nametotype priors that lower the barrier to extending the approach in Pharo and related ecosystems.
Description
Citation
Underlying research data set URL
Permanent link
Rights/License
Vysokoškolská závěrečná práce je dílo chráněné autorským zákonem. Je možné pořizovat z něj na své náklady a pro svoji osobní potřebu výpisy, opisy a rozmnoženiny. Jeho využití musí být v souladu s autorským zákonem v platném znění.
A university thesis is a work protected by the Copyright Act of the Czech Republic. Extracts, copies and transcripts of the thesis are allowed for personal use only and at one`s own expense. The use of thesis should be in compliance with the Copyright Act.
A university thesis is a work protected by the Copyright Act of the Czech Republic. Extracts, copies and transcripts of the thesis are allowed for personal use only and at one`s own expense. The use of thesis should be in compliance with the Copyright Act.