A Type System for Safe Intermittent Computing
Milijana Surbatovich, Naomi Spargo, Limin Jia, Brandon Lucia
Abstract
Batteryless energy-harvesting devices enable computing in inaccessible environments, at a cost to programmability and correctness. These devices operate intermittently as energy is available, using a recovery system to save and restore state. Some program tasks must execute atomically w.r.t. power failures, re-executing if power fails before completion. Any re-execution should typically be idempotent —its behavior should match the behavior of a single execution. Thus, a key aspect of correct intermittent execution is identifying and recovering state causing undesired non-idempotence. Unfortunately, past intermittent systems take an ad-hoc approach, using unsound dataflow analyses or conservatively recovering all written state. Moreover, no prior work allows the programmer to directly specify idempotence requirements (including allowable non-idempotence). We present curricle, the first type system approach to safe intermittence, for Rust. Type level reasoning allows programmers to express requirements and retains alias information crucial for sound analyses. Curricle uses information flow and type qualifiers to reject programs causing undesired non-idempotence. We implement Curricle’s type system on top of Rust’s compiler, evaluating the prototype on benchmarks from prior work. We find that Curricle benefits application programmers by allowing them to express idempotence requirements that are checked to be satisfied, and that targeting programs checked with Curricle allows intermittent system designers to write simpler recovery systems that perform better.
Ask about this paper
Your agent reads all of it.
Lune indexed this paper to the last equation, along with the top-tier papers that cite it. Ask a question and the answer quotes them.
Your agent calls
Luneget_paper_fulltext
Free to start. No credit card required.
Terminal
Install the CLIlune papers fulltext b27603f5-8f45-4381-b1af-22073a5b103bCited by top-tier papers3
- IntOS: Persistent Embedded Operating System and Language Support for Multi-threaded Intermittent ComputingYilun Wu, Byounguk Min, Mohannad Ismail, Wenjie Xiong et al.OSDI 2024 · 16 citations
- Cocoon: Static Information Flow Control in RustAda Lamba, Max Taylor, Vincent Beardsley, Jacob Bambeck et al.OOPSLA 2024 · 9 citations
- Exploiting Sophisticated Static Analysis for VerilogQinlin Chen, Nairen Zhang, Jinpeng Wang, Jiacai Cui et al.PLDI 2026
Builds on10
- Time-sensitive Intermittent Computing Meets Legacy SoftwareVito Kortbeek, Kasim Sinan Yildirim, Abu Bakar, Jacob Sorber et al.ASPLOS 2020 · 89 citations
- Adaptive low-overhead scheduling for periodic and reactive intermittent executionKiwan Maeng, Brandon LuciaPLDI 2020 · 84 citations
- RustBelt meets relaxed memoryHoang-Hai Dang, Jacques-Henri Jourdan, Jan-Oliver Kaiser, Derek DreyerPOPL 2020 · 68 citations
- Stacked borrows: an aliasing model for RustRalf Jung, Hoang-Hai Dang, Jeehoon Kang, Derek DreyerPOPL 2020 · 67 citations
- FaceBit: Smart Face Masks PlatformAlexander Curtiss, Blaine Rothrock, Abu Bakar, Nivedita Arora et al.UbiComp 2022 · 51 citations
Related papers
- Automatically enforcing fresh and consistent inputs in intermittent systemsMilijana Surbatovich, Limin Jia, Brandon LuciaPLDI 2021 · 23 citations
- Adaptable Runtime Monitoring for Intermittent SystemsEren Yildiz, Khakim Akhunov, Lorenzo Antonio Riva, Arda Goknil et al.EuroSys 2024 · 7 citations
- NvMR: non-volatile memory renaming for intermittent computingAbhishek Bhattacharyya, Abhijith Somashekhar, Joshua San MiguelISCA 2022 · 21 citations
- Intermittent Systems at Small Scale: Execution Model and Design GuidelinesYoungbin Kim, Yoojin LimDAC 2025
- Efficient and Safe I/O Operations for Intermittent SystemsEren Yildiz, Saad Ahmed, Bashima Islam, Josiah D. Hester et al.EuroSys 2023 · 17 citations
