Correct tout seul, sûr à plusieurs - Inria - Institut national de recherche en sciences et technologies du numérique Access content directly
Conference Papers Year : 2024

Correct tout seul, sûr à plusieurs

Abstract

Le modèle mémoire concurrent de OCaml 5 est conçu pour garantir la sûreté du typage et la sûreté mémoire même en présence de courses critiques (data races) entre fils d'exécution. Ce choix de conception impose des choix techniques précis dans l'implémentation du compilateur et de l'environnement d'exécution du langage. Mais il impose aussi, et c'est le sujet du présent article, des changements dans la façon d'écrire les programmes utilisateurs qui utilisent des constructions non sûres comme Array.unsafe_get et Array.unsafe_set pour des raisons de performance. Même si une structure de données est conçue pour être utilisée de façon séquentielle uniquement, le documente et ne fournit aucune garantie sur un usage concurrent incorrect, elle doit faire les bons choix d'implémentation pour préserver la sûreté mémoire même dans ce cas d'usage incorrect. Des implémentations parfaitement correctes pour OCaml 4 deviennent invalides en OCaml 5. Nous présentons ici une partie de l'implémentation du module Dynarray de tableaux redimensionnables qui a été intégré à la bibliothèque standard de OCaml 5.2. Nous expliquons comment plusieurs choix d'implémentation habituels chez les utilisateurs experts du langage deviennent invalides dans un contexte concurrent. Nous présentons une façon de raisonner sur ces implémentations (≪correct tout seul, sûr à plusieurs≫), comme un modèle mental informel que nous avons utilisé pour écrire ce code, mais aussi dans une formalisation Coq utilisant la logique de séparation Iris. Nous avons développé et vérifié le noyau de Dynarray en Iris, et montrons comment organiser les spécifications pour exprimer et vérifier de façon simple et claire cette nouvelle propriété de correction.
Fichier principal
Vignette du fichier
jfla2024-paper-29.pdf (323.49 Ko) Télécharger le fichier
Origin : Files produced by the author(s)

Dates and versions

hal-04406412 , version 1 (19-01-2024)

Licence

Attribution

Identifiers

  • HAL Id : hal-04406412 , version 1

Cite

Clément Allain, Gabriel Scherer. Correct tout seul, sûr à plusieurs. 35es Journées Francophones des Langages Applicatifs (JFLA 2024), Jan 2024, Saint-Jacut-de-la-Mer, France. ⟨hal-04406412⟩
83 View
54 Download

Share

Gmail Facebook X LinkedIn More