Description du projet
Une nouvelle inférence de type pour répondre aux demandes futures
Dans un langage comme Java ou Scala, les différentes données d’un programme sont classées en fonction de leur type (par exemple les chaînes de caractères ou les entiers). Pour informer les compilateurs des types de données à vérifier, les programmeurs doivent annoter les programmes. Les algorithmes d’inférence de type sont nécessaires pour transférer les résultats des calculs formels aux nouveaux langages de programmation. Le projet TypeFoundry, financé par l’UE, utilisera les développements récents en matière de théorie de la preuve et de sémantique (par exemple, la théorie des types polarisés et le call-by-push-value) pour identifier la structure théorique qui sous-tend l’inférence de type. Il utilisera cette théorie pour construire une série de techniques d’inférence de types capables de s’adapter aux fonctionnalités avancées des systèmes de types dans les langages modernes et futurs.
Objectif
"Many modern programming languages, whether developed in industry, like Rust or Java, or in academia, like Haskell or Scala, are typed. All the data in a program is classified by its type (e.g. as strings or integers), and at compile-time programs are checked for consistent usage of types, in a process called type checking. Thus, the expression 3 + 4 will be accepted, since the + operator takes two numbers as arguments, but the expression 3 + ""hello"" will be rejected, as it makes no sense to add a number and a string. Though this is a simple idea, sophisticated type system can track properties like algorithmic complexity, data-race freedom, differential privacy, and data abstraction.
In general, programmers must annotate programs to tell compilers the types to check. In theoretical calculi, it is easy to demand enough annotations to trivialize typechecking, but this can make the annotation burden unbearable: often larger than the program itself! So, to transfer results from formal calculi to new programming languages, we need type inference algorithms, which reconstruct missing data from partially-annotated programs.
However, the practice of type inference has outpaced its theory. Compiler authors have implemented many type inference systems, but the algorithms are often ad-hoc or folklore, and the specifications they are meant to meet are informal or nonexistent. The makes it hard to learn how to implement type inference, hard to build alternative implementations (whether for new compilers or analysis engines for IDEs), and hard for programmers to predict if refactorings will preserve typability.
In TypeFoundry, we will use recent developments in proof theory and semantics (like polarized type theory and call-by-push-value) to identify the theoretical structure underpinning type inference, and use this theory to build a collection of techniques for type inference capable of scaling up to the advanced type system features in both modern and future languages.
"
Mots‑clés
Les mots-clés du projet tels qu’indiqués par le coordinateur du projet. À ne pas confondre avec la taxonomie EuroSciVoc (champ scientifique).
Les mots-clés du projet tels qu’indiqués par le coordinateur du projet. À ne pas confondre avec la taxonomie EuroSciVoc (champ scientifique).
Programme(s)
Programmes de financement pluriannuels qui définissent les priorités de l’UE en matière de recherche et d’innovation.
Programmes de financement pluriannuels qui définissent les priorités de l’UE en matière de recherche et d’innovation.
-
H2020-EU.1.1. - EXCELLENT SCIENCE - European Research Council (ERC)
PROGRAMME PRINCIPAL
Voir tous les projets financés dans le cadre de ce programme
Thème(s)
Les appels à propositions sont divisés en thèmes. Un thème définit un sujet ou un domaine spécifique dans le cadre duquel les candidats peuvent soumettre des propositions. La description d’un thème comprend sa portée spécifique et l’impact attendu du projet financé.
Les appels à propositions sont divisés en thèmes. Un thème définit un sujet ou un domaine spécifique dans le cadre duquel les candidats peuvent soumettre des propositions. La description d’un thème comprend sa portée spécifique et l’impact attendu du projet financé.
Régime de financement
Régime de financement (ou «type d’action») à l’intérieur d’un programme présentant des caractéristiques communes. Le régime de financement précise le champ d’application de ce qui est financé, le taux de remboursement, les critères d’évaluation spécifiques pour bénéficier du financement et les formes simplifiées de couverture des coûts, telles que les montants forfaitaires.
Régime de financement (ou «type d’action») à l’intérieur d’un programme présentant des caractéristiques communes. Le régime de financement précise le champ d’application de ce qui est financé, le taux de remboursement, les critères d’évaluation spécifiques pour bénéficier du financement et les formes simplifiées de couverture des coûts, telles que les montants forfaitaires.
ERC-COG - Consolidator Grant
Voir tous les projets financés dans le cadre de ce programme de financement
Appel à propositions
Procédure par laquelle les candidats sont invités à soumettre des propositions de projet en vue de bénéficier d’un financement de l’UE.
Procédure par laquelle les candidats sont invités à soumettre des propositions de projet en vue de bénéficier d’un financement de l’UE.
(s’ouvre dans une nouvelle fenêtre) ERC-2020-COG
Voir tous les projets financés au titre de cet appelInstitution d’accueil
La contribution financière nette de l’UE est la somme d’argent que le participant reçoit, déduite de la contribution de l’UE versée à son tiers lié. Elle prend en compte la répartition de la contribution financière de l’UE entre les bénéficiaires directs du projet et d’autres types de participants, tels que les participants tiers.
CB2 1TN CAMBRIDGE
Royaume-Uni
Les coûts totaux encourus par l’organisation concernée pour participer au projet, y compris les coûts directs et indirects. Ce montant est un sous-ensemble du budget global du projet.