Abstract
A relevant application of reversibility is causal-consistent reversible debugging, which allows one to explore concurrent computations backward and forward to find a bug. This approach has been put into practice in CauDEr, a causal-consistent reversible debugger for the Erlang programming language. CauDEr supports the functional, concurrent and distributed fragment of Erlang. However, Erlang also includes imperative features to manage a map (shared among all the processes of a same node) associating process identifiers to names. Here we extend CauDEr and the related theory to support such imperative features. From a theoretical point of view, the added primitives create different causal structures than those derived from the concurrent Erlang fragment previously handled in CauDEr, yet we show that the main results proved for CauDEr are still valid.
The work has been partially supported by French ANR project DCore ANR-18-CE25-0007 and by INdAM ā GNCS 2020 project Sistemi Reversibili Concorrenti: dai Modelli ai Linguaggi. We thank the anonymous referees for their helpful comments and suggestions.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Similar content being viewed by others
References
Carothers, C.D., Perumalla, K.S., Fujimoto, R.: Efficient optimistic parallel simulations using reverse computation. TOMACS 9(3), 224ā253 (1999)
CauDEr repository (2022). https://github.com/mistupv/cauder
CauDEr with imperative primitives repository (2022). https://github.com/PietroLami/cauder
Danos, V., Krivine, J.: Reversible communicating systems. In: Gardner, P., Yoshida, N. (eds.) CONCUR 2004. LNCS, vol. 3170, pp. 292ā307. Springer, Heidelberg (2004). https://doi.org/10.1007/978-3-540-28644-8_19
Erlang/OTP 24.1.5. https://www.erlang.org/doc/index.html
Fabbretti, G., Lanese, I., Stefani, J.-B.: Causal-consistent debugging of distributed erlang programs. In: Yamashita, S., Yokoyama, T. (eds.) RC 2021. LNCS, vol. 12805, pp. 79ā95. Springer, Cham (2021). https://doi.org/10.1007/978-3-030-79837-6_5
Giachino, E., Lanese, I., Mezzina, C.A.: Causal-consistent reversible debugging. In: Gnesi, S., Rensink, A. (eds.) FASE 2014. LNCS, vol. 8411, pp. 370ā384. Springer, Heidelberg (2014). https://doi.org/10.1007/978-3-642-54804-8_26
Giachino, E., Lanese, I., Mezzina, C.A., Tiezzi, F.: Causal-consistent rollback in a tuple-based language. J. Log. Algebraic Methods Program. 88, 99ā120 (2017)
GonzƔlez-Abril, J.J., Vidal, G.: A lightweight approach to computing message races with an application to causal-consistent reversible debugging. CoRR (2021)
Hewitt, C., Bishop, P.B., Steiger, R.: A universal modular ACTOR formalism for artificial intelligence. In: IJCAI, pp. 235ā245. William Kaufmann (1973)
Hoey, J., Ulidowski, I.: Reversible imperative parallel programs and debugging. In: Thomsen, M.K., Soeken, M. (eds.) RC 2019. LNCS, vol. 11497, pp. 108ā127. Springer, Cham (2019). https://doi.org/10.1007/978-3-030-21500-2_7
Lami, P., Lanese, I., Stefani, J., Sacerdoti Coen, C., Fabbretti, G.: Improving CauDEr with imperative features - Technical report (2022). https://hal.archives-ouvertes.fr/hal-03655372
Landauer, R.: Irreversibility and heat generation in the computing process. IBM J. Res. Dev. 5(3), 183ā191 (1961)
Lanese, I., Medic, D.: A general approach to derive uncontrolled reversible semantics. In: CONCUR, vol. 171. LIPIcs, pp. 33:1ā33:24. Schloss Dagstuhl - Leibniz-Zentrum fĆ¼r Informatik (2020)
Lanese, I., Mezzina, C.A., Stefani, J.: Reversibility in the higher-order \(\pi \)-calculus. Theor. Comput. Sci. 625, 25ā84 (2016)
Lanese, I., Nishida, N., Palacios, A., Vidal, G.: CauDEr: a causal-consistent reversible debugger for Erlang. In: Gallagher, J.P., Sulzmann, M. (eds.) FLOPS 2018. LNCS, vol. 10818, pp. 247ā263. Springer, Cham (2018). https://doi.org/10.1007/978-3-319-90686-7_16
Lanese, I., Nishida, N., Palacios, A., Vidal, G.: A theory of reversibility for Erlang. J. Log. Algebraic Methods Program. 100, 71ā97 (2018)
Lanese, I., Phillips, I., Ulidowski, I.: An axiomatic approach to reversible computation. In: FoSSaCS 2020. LNCS, vol. 12077, pp. 442ā461. Springer, Cham (2020). https://doi.org/10.1007/978-3-030-45231-5_23
Laursen, J.S., Schultz, U.P., Ellekilde, L.: Automatic error recovery in robot assembly operations using reverse execution. In: IROS, pp. 1785ā1792. IEEE (2015)
Phillips, I., Ulidowski, I., Yuen, S.: A reversible process calculus and the modelling of the ERK signalling pathway. In: GlĆ¼ck, R., Yokoyama, T. (eds.) RC 2012. LNCS, vol. 7581, pp. 218ā232. Springer, Heidelberg (2013). https://doi.org/10.1007/978-3-642-36315-3_18
Schordan, M., Oppelstrup, T., Jefferson, D.R., Barnes, P.D., Jr.: Generation of reversible C++ code for optimistic parallel discrete event simulation. New Gener. Comput. 36(3), 257ā280 (2018)
GonzĆ”lez-Abril, J.J., Vidal, G.: Causal-consistent reversible debugging: improving CauDEr. In: Morales, J.F., Orchard, D. (eds.) PADL 2021. LNCS, vol. 12548, pp. 145ā160. Springer, Cham (2021). https://doi.org/10.1007/978-3-030-67438-0_9
Author information
Authors and Affiliations
Corresponding authors
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
Ā© 2022 The Author(s), under exclusive license to Springer Nature Switzerland AG
About this paper
Cite this paper
Lami, P., Lanese, I., Stefani, JB., Sacerdoti Coen, C., Fabbretti, G. (2022). Reversibility in Erlang: Imperative Constructs. In: Mezzina, C.A., Podlaski, K. (eds) Reversible Computation. RC 2022. Lecture Notes in Computer Science, vol 13354. Springer, Cham. https://doi.org/10.1007/978-3-031-09005-9_13
Download citation
DOI: https://doi.org/10.1007/978-3-031-09005-9_13
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-031-09004-2
Online ISBN: 978-3-031-09005-9
eBook Packages: Computer ScienceComputer Science (R0)