Développement d'un compilateur AOT pour Python -QC-482

Project type: Non-research
Desired discipline(s): Engineering - computer / electrical, Engineering, Computer science, Mathematical Sciences
Company: Logiciel Lavallée
Project Length: 4 to 6 months
Preferred start date: 09/30/2021
Language requirement: Bilingual
Location(s): Montreal, QC, Canada; Canada
No. of positions: 1
Desired education level: Master's
Search across Mitacs’ international networks - check this box if you’d also like to receive profiles of researchers based outside of Canada: 
No

About the company: 

Logiciel Lavallée est une startup incubée à District 3 qui développe Flyable, un compilateur pour le langage de programmation Python. En performant des optimisations sur le code compilé, Flyable permet de diminuer le temps d’exécution des programmes écrits en Python de 20% - 98%. L’entreprise a récemment remporté la 2e place au concours Innovinc.RBC – volet concrétisez et a participé à la finale du Coopérathon 2020.

Describe the project.: 

Le projet porte sur le développement d’un compilateur ahead-of-time (AOT) pour le langage de programmation Python.

Bien que le projet soit avancé, il reste des fonctionnalités du langage Python à supporter, des irrégularités à corriger et des optimisations à implanter. L’objectif principal pour Logiciel Lavallée est donc d’obtenir un compilateur fiable, qui supporte la majorité des fonctionnalités du langage Python et qui permet à ses utilisateurs d’accélérer de manière importante leurs programmes écrits en Python.

L’innovation développée dans ce projet consiste en une meilleure implémentation d’un compilateur AOT pour le langage Python que ce qui est présentement disponible. Par meilleure nous entendons ce qui suit :

  • le compilateur développé permettra d’accélérer les programmes écrits en Python sans que le code Python doive être modifié.
  • l’infrastructure de compilateur LLVM est utilisée ce qui permet de générer des instructions machine pour différents types d’architecture.

La méthode de développement scrum sera utilisée lors du projet.

Required expertise/skills: 

  • Bonne connaissance du fonctionnement d’un compilateur
  • Bonne connaissance des langages de programmation Python et C++
  • MaConnaissance de PyCharm et GitHub
  • Connaissance de LLVM : un atout précieux

Vu les compétences requises, nous croyons qu’un étudiant aux cycles supérieurs serait le mieux outillé