@@ -9,9 +9,9 @@ Our main focus is to ensure that if the operation succeeds, the resulting progra
...
@@ -9,9 +9,9 @@ Our main focus is to ensure that if the operation succeeds, the resulting progra
Supported operations :
Supported operations :
* Renaming global variables.
* Renaming global variables.
** And swapping two global variable names.
* And swapping two global variable names.
* Removing unused local variables.
* Removing unused local variables.
** And adding a local variable.
* And adding a local variable.
# Status
# Status
...
@@ -22,26 +22,31 @@ This is a proof of concept. It has the limitations given below.
...
@@ -22,26 +22,31 @@ This is a proof of concept. It has the limitations given below.
* The research report is available at https://hal.archives-ouvertes.fr/hal-01248121 : *A Correct Refactoring Operation to Rename Global Variables in C Programs* (2015)
* The research report is available at https://hal.archives-ouvertes.fr/hal-01248121 : *A Correct Refactoring Operation to Rename Global Variables in C Programs* (2015)
* An [article](http://arxiv.org/abs/1607.02226) was presented at the _4th International Workshop on Verification and Program Transformation_ (available in [Electronic Proceedings in Theoretical Computer Science](http://eptcs.web.cse.unsw.edu.au/content.cgi?VPT2016) / apr. 2016).
* An [article](http://arxiv.org/abs/1607.02226) was presented at the _4th International Workshop on Verification and Program Transformation_ (available in [Electronic Proceedings in Theoretical Computer Science](http://eptcs.web.cse.unsw.edu.au/content.cgi?VPT2016) / apr. 2016).*Renaming Global Variables in C Mechanically Proved Correct*
* Another research report : *Memory bijections: reasoning about exact memory transformations induced by refactorings in CompCert C* : https://hal.archives-ouvertes.fr/hal-02078356/ (2019)
* Another research report : *Memory bijections: reasoning about exact memory transformations induced by refactorings in CompCert C* : https://hal.archives-ouvertes.fr/hal-02078356/ (2019)
# Limitations
# Limitations
*We do not take the preprocessor into account.
*Our proofs of correctness cannot take the preprocessor into account.
*We do not take comments and layout into account.
*Our prototype cannot preserve comments, layout and preprocessing directives.
*We transform single files (we do not take the whole project into account).
*Some parts of the tool (the driver) are written directly in OCaml and cannot be taken into account by proofs of correctness.
* The proof of correctness does not cover the whole tool, only its core development in Coq.
# Development
# Development
Developped by Julien Cohen, Lina laboratory ([Ascola team](http://www.emn.fr/z-info/ascola/doku.php) and now Galinette team), University of Nantes (Polytech Nantes). Igor Zhirkov is also working on this project.
Developped by Julien Cohen, Lina laboratory (Ascola team http://www.emn.fr/z-info/ascola/doku.php), University of Nantes (Polytech Nantes).
The operation that removes an unused local variable is developped by Igor Zhirkov.
# What's new ?
# What's new ?
### Next Version
### Version 0.7 (based on CompCert 2.7.1)
* New refactoring operation : add/remove a local variable, by Igor Zhirkov.
* Proof of correctness for renaming global variables is better structured.
* Correspondences between semantic constructions in programs (contexts, continuations, states...) are now represented by relations and not by functions anymore. Proofs are easier, in particular for context transformation, which needed a painful encoding before, and for continuation transformation, which was too memory and time consuming.
* More iterators are used to ditinguish properties coming from renaming and those coming from tree traversals.