Representing and computing with types in dynamically typed languages - TEL - Thèses en ligne Accéder directement au contenu
Thèse Année : 2018

Representing and computing with types in dynamically typed languages

Représentation et calcul avec des types dans des langages à typage dynamique

Résumé

This thesis presents code generation techniques related to run-time type checking of heterogeneous but regular sequences. We generalize traditional regular expressions to accommodate surface syntax, internal representation, computation, optimization, and serialization (code generation) of rational type expressions. We explore traditional s-expression based representation contrasted with Binary Decision Diagrams which have been enhanced to represent Boolean operations in a type lattice supporting subtyping. We introduce the Maximal Disjoint Type Decomposition, prove the existence and uniqueness of a solution, and further explore several alternative algorithms for calculating it. The Maximal Disjoint Type Decomposition is used to generate a deterministic finite automaton representing a rational type expression, after which compile-time code is generated which will perform run-time type membership checks. Such code generation risks dealing with redundant type checks. We further investigate these potential problems and again use the theory of Binary Decision Diagrams to eliminate these redundant checks to produce optimized type checking code. The techniques and algorithms introduced and discussed in this thesis explore representations and computations dealing with type based computations in dynamic programming languages.
Cette thèse présente des techniques de génération de code liées à la vérification dynamique de types de séquences hétérogènes mais régulières. Nous généralisons les expressions rationnelles classiques aux expressions rationnelles de type, en adaptant leur surface syntaxique, représentation interne, calcul, optimisation, et sérialisation (génération de code). Nous comparons la forme native basée sur des S-Expressions avec une représentation par Diagrammes de Décision Binaire, enrichis pour représenter les opérations booléennes dans un treillis de types prenant en charge le sous-typage. Nous introduisons alors la notion de Décomposition Maximale en Types Disjoints, nous prouvons l'existence et l'unicité d'une telle décomposition, et nous explorons plusieurs solutions algorithmiques pour calculer celle-ci. La Décomposition Maximale en Types Disjoints est utilisée pour générer un automate fini et déterministe représentant une expression rationnelle de type. Cet automate est utilisé à la compilation pour générer à son tour du code de vérification dynamique de type. Le code ainsi généré ne tient a priori pas compte d'éventuelles redondances dans les vérifications de type. Nous étudions donc ces problèmes plus en détail et utilisons à nouveau la théorie des Diagrammes de Décision Binaire afin d'éliminer les calculs redondants et de produire ainsi du code optimisé. Le travail présenté dans cette thèse s'attache à traiter des problèmes de représentations et de calcul sur des types dans les langages dynamiques.
Fichier principal
Vignette du fichier
these_newton_jim_2018.pdf (5.43 Mo) Télécharger le fichier
Origine : Version validée par le jury (STAR)

Dates et versions

tel-03018107 , version 1 (22-11-2020)

Identifiants

  • HAL Id : tel-03018107 , version 1

Citer

Jim Newton. Representing and computing with types in dynamically typed languages. Symbolic Computation [cs.SC]. Sorbonne Université, 2018. English. ⟨NNT : 2018SORUS440⟩. ⟨tel-03018107⟩
438 Consultations
355 Téléchargements

Partager

Gmail Facebook X LinkedIn More