Analyse statique pour l'exécution de code Python haute performance avec Cython+

  • Last Update:2022-01-20
  • Version:001
  • Language:fr

Static Analysis for High Performance Python Code Execution with Cython+

  • Titre : Static Analysis for High Performance Python Code Execution with Cython+
  • Lieu : Lille ou télétravail
  • Type : à temps plein
  • Fonction : Développeur
  • Durée : Stage (3-6 mois) / Alternance / Embauche
  • Référence : Offer-2022-High-Performance.Python

Description

Cython+ est une extension expérimentale du compilateur Cython que nous développons à Nexedi dans le cadre d'un projet de recherche. Notre but est de permettre l'exécution multi-thread parallélisée sur plusieurs coeurs au sein de l'écosystème Python, aujourd'hui entravée par le GIL de Python.

Cython+ introduit:

  • un système de classes utilisable en exécution multi-coeur sans le GIL avec typage statique et comptage de références automatique, compilé en C++
  • de l'interopérabilité transparente avec Python: nos objets peuvent être vus à la fois comme des objets statiquement typés et comme des objets Python
  • un modèle d'exécution asynchrone centré autour du concept d'objet actifs (acteurs)
  • une implémentation d'un scheduler M:N inspiré par celui de Go
  • un système de types pour la thread-safety inspiré par Rust et Pony (en cours d'élaboration)

L'idée est de faciliter la migration progressive de code Python existant ou l'écriture de bibliothèques Python haute-performances avec un langage performant proche de Python.

Nous avons aujourd'hui un preuve de concept et des premiers cas d'usages prometteurs, mais il reste aussi beaucoup à faire (cf notre roadmap):

  • finaliser le système de types thread-safe
  • écrire des bibliothèques standard à partir de bibliothèques C ou C++
  • implémenter un système d'I/O asynchrone efficace
  • introduire un système de promesses pour suspendre en attendant que des tâches se terminent
  • utiliser ou écrire un allocateur mémoire multi-thread performant avec contention minimale

Nous recherchons un candidat intéressé par le design des langages de programmation, avec de l'expérience en développement Python ou C++, et une affinité avec l'Open Source / les logiciels libres. Des connaissances en exécution concurrente, language design, compilation, systèmes de types, ou analyse statique seront toujours utiles et bienvenues.

Si ces sujets t'intéressent, contacte-nous !

Responsabilités

  • Définir l'orientation d'un tout nouveau langage
  • Implémenter un runtime d'exécution concurrente
  • Écrire des bibliothèques standard similaires à celles de Python
  • Faire le lien avec la communauté des utilisateurs

Opportunités

  • Développer en Python, C++ et Cython+
  • Participer au développement d'un langage de programmation
  • Contribuer à des solutions complexes de logiciels libres et open source

À propos Nexedi

Nexedi est l'un des principaux éditeurs européens de logiciels libres et open source en Europe avec un portefeuille de solutions open source de plus de 15 millions de lignes de code. Nos solutions logicielles personnalisées sont utilisées par Airbus, Stellantis, Sanef et d'autres entreprises dans le monde entier. Nous participons à des projets de recherche de pointe, nous sommes en train de construire Rapid.Space, un fournisseur de cloud entièrement ouvert et nous faisons pression pour l'indépendance de l'Europe en ce qui concerne les technologies de cloud et de communication ainsi que l'utilisation des logiciels libres.. 

Intéressé ?

Nous serions heureux de vous connaître, envoyez-nous un message (accompagné de votre CV) à jobs(at)nexedi.com et nous vous contacterons.

Nexedi SA
147 Rue de Ballon
59110 La Madeleine
France

Phone   +33 629 02 44 25
Mail    info@nexedi.com
Web    www.nexedi.com