Compilation of Linearizable Data Structures: A Mechanised RG Logic for Semantic Refinement

Abstract : Modern programming languages provide libraries for concurrent data structures. For better performance, these are implemented with fine-grained concurrency. Still, such implementations are linearizable: the programmer can safely assume that they behave atomically. We formalize this insight in Coq as an end-to-end theorem establishing the semantic preservation of a compiler translating abstract, atomic data structures into their concrete, fine-grained concurrent implementation. This embeds the notion of linearizable data structures in a formally verified compiler. At the crux of the proof lies a generic result establishing, once and for all, a simulation relation, starting from a carefully crafted rely-guarantee specification. Inspired by the work of Vafeiadis, implementations are annotated with linearization points, which instrument programs semantics to reflect the behavior of abstract data structures. We successfully applied our generic theorem to concurrent buffers, a data structure used in the implementation of concurrent garbage collectors.
Type de document :
Rapport
[Research Report] ENS Rennes; IRISA, Inria Rennes; Université Rennes 1. 2017
Liste complète des métadonnées

Littérature citée [19 références]  Voir  Masquer  Télécharger

https://hal.archives-ouvertes.fr/hal-01538128
Contributeur : Yannick Zakowski <>
Soumis le : mardi 13 juin 2017 - 12:07:10
Dernière modification le : mercredi 16 mai 2018 - 11:24:13
Document(s) archivé(s) le : mardi 12 décembre 2017 - 17:32:56

Fichier

SimuLin.pdf
Fichiers produits par l'(les) auteur(s)

Identifiants

  • HAL Id : hal-01538128, version 1

Citation

Yannick Zakowski, David Cachera, Delphine Demange, David Pichardie. Compilation of Linearizable Data Structures: A Mechanised RG Logic for Semantic Refinement. [Research Report] ENS Rennes; IRISA, Inria Rennes; Université Rennes 1. 2017. 〈hal-01538128〉

Partager

Métriques

Consultations de la notice

608

Téléchargements de fichiers

84