Skip to content

Roadmap

Sewen Thy edited this page Aug 21, 2022 · 9 revisions

Understand current in-use implementations

Aug 2022 - Aug 2022

  • Gain understanding on how EM refactoring is implemented in Java/Scala or similar languages and be able to write down its formal description.
  • Understand why it won't work for Rust.
  • Understand Intellij's platform documentation on writing plugin.

Motivation Compilation

Aug 2022 - early Sept 2022

Empirical

  • Create methodology for finding Rust projects EM commits
  • Find examples of EM refactoring in real life Rust projects
  • Write up on examples
  • Find way to automate

Formal approach

  • Understand Intellij's EM refactoring in Rust Write pseudocode for Rust's EM
  • Use Intellij's EM on case study examples
  • Summary of limitations

Restrict Intellij's EM

Sept 2022

  • Make sure that EM only runs on code that it can correct extract

Literature reviews

Aug 2022 - early Sept 2022 initial focus on readings
Mainly looking into:

  • how previous implementations for rust are done
  • how implementations for other languages are done
  • how are those implementations formalized/proven

Sept 2022 onwards

  • keep reading new stuff if available or learn about more advanced techniques/tools for implementation

Build intuition and implementation

Sept 2022 - Dec 2022
The bulk of the implementation work focusing on having a working extract function refactoring function working in Rust.

  • Start with minimal working conservative solution.
  • Then incrementally build to add richer scenarios.

Formalize proofs

Dec 2022 - Feb 2022
Refactoring does not change code behaviour, more specifically, the following does not change:

  • name bindings
  • lifetimes
  • ownership

Write-up

Feb 2022 - Mar 2022

  • Finish capstone write-up.
  • Finish paper write-up.

Contribute to Intellij's plugin

Feb 2022 - March 2022

  • Make a PR for the plugin