TS 6010: A New International Norm for the C Programming language
A technical specification for the provenance of pointers in a C program execution has recently resulted in the publication of the ISO/IEC TS 6010 standard. After more than 10 years of work by researchers from the University of Cambridge, the University of Graz and Inria/ICube, this collaborative achievement offers the C language community the opportunity to adopt a common vision for one of the most widely used programming tools.
Regularly ranked in the top three places in the Tiobe index, the C programming language remains, some fifty years after its creation, the technical basis of a large proportion of the world’s software. While one of its main strengths is to organize direct and efficient access to memory via pointers, their management can also be one of its weaknesses. “During the execution of a program, it happens that two pointer values refer to the same object in memory. In the event of a programming error, because of a lack of precision in the existing standard, this may lead to interpretation conflicts. This risk is accentuated by the absence of a consensus between platform providers and software publishers on essential aspects related to the use and behavior of these pointers” explains Jens Gustedt, research director within the CAMUS team at Inria, deputy director of the ICube* laboratory in Strasbourg, author of a reference work on the C language Modern C, and blogger blog. It is in an attempt to reduce this flaw that a formal specification for the provenance of pointers in the C language was designed and developed.
* Laboratory for engineering sciences, computer science and imagery, CNRS / Université de Strasbourg / ENGEES / INSA de Strasbourg.
The search for a compromise between programmers and compilers
À partir de 2014, Peter Sewel et Kayvan Memarian de l’Université de Cambridge, rapidement rejoints par Martin Uecker, aujourd’hui à l’Université de technologie de Graz, et Jens Gustedt, tous experts auprès de l’Organisation internationale de normalisation (ISO), engagent un important travail d’investigation auprès de la communauté du langage C. S’appuyant sur un questionnaire dans lequel les utilisateurs sont invités à décrire le résultat présumé d’un programme donné, il révèle de notables écarts entre la perception que les programmateurs peuvent avoir du langage C – ou encore leurs attentes vis-à-vis de celui-ci –, et celles des concepteurs de compilateurs. « Nous avons constaté qu’un compilateur pouvait interpréter un programme d’une façon que n’avait pas prévu le créateur de ce dernier, ce qui conduisait parfois à des bugs assez sévères. » À partir de la base de données tant technique que sociologique ainsi constituée, plusieurs solutions de résolution du problème identifié ont été modélisées. « Le but était de concevoir un outil facilement référençable qui découlerait d’un compromis entre les besoins des différentes parties prenantes. » La démarche, qui a permis dans le même temps d’alimenter les réflexions et les échanges au sein des communautés C, C++ ou Rust, a conduit à l’élaboration d’une spécification formelle (utilisant un langage mathématique précis) puis à la publication, en mai 2025, de la norme internationale ISO/IEC TS 6010.
Make information systems reliable and secure
Addressing the ambiguity of the current standard regarding the provenance of pointers, TS 6010 now provides guidance to all stakeholders so that they can converge their platforms and tools, and subsequently “contribute to making information systems more reliable and secure”. Jens Gustedt does not hide his satisfaction but also his relief at having finished a demanding job and being able to “move on”. There is no shortage of projects. “There are always things to improve: a programming language that does not evolve is doomed to disappear. C must constantly adapt, taking into account societal and technical progress, for example the evolution of microchips and the challenges of digital sobriety.”