Design and Implementation of Dynamic Memory Management in a Reversible Object-Oriented Programming Language

04/12/2018
by   Martin Holm Cservenka, et al.
0

The reversible object-oriented programming language (ROOPL) was presented in late 2016 and proved that object-oriented programming paradigms works in the reversible setting. The language featured simple statically scoped objects which made non-trivial programs tedious, if not impossible to write using the limited tools provided. We introduce an extension to ROOPL in form the new language ROOPL++, featuring dynamic memory management and fixed-sized arrays for increased language expressiveness. The language is a superset of ROOPL and has formally been defined by its language semantics, type system and computational universality. Considerations for reversible memory manager layouts are discussed and ultimately lead to the selection of the Buddy Memory layout. Translations of the extensions added in ROOPL++ to the reversible assembly language PISA are presented to provide garbage-free computations. The dynamic memory management extension successfully increases the expressiveness of ROOPL and as a result, shows that non-trivial reversible data structures, such as binary trees and doubly-linked lists, are feasible and do not contradict the reversible computing paradigm.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
07/25/2017

Design and Implementation of a Reversible Object-Oriented Programming Language

High-level reversible programming languages are few and far between and ...
research
08/09/2017

From Reversible Programs to Univalent Universes and Back

We establish a close connection between a reversible programming languag...
research
10/23/2019

Analyzing Trade-offs in Reversible Linear and Binary Search Algorithms

Reversible algorithms are algorithms in which each step represents a par...
research
01/09/2020

Lazy object copy as a platform for population-based probabilistic programming

This work considers dynamic memory management for population-based proba...
research
12/17/2019

Using Prolog for Transforming XML-Documents

Proponents of the programming language Prolog share the opinion Prolog i...
research
09/06/2022

Jeopardy: An Invertible Functional Programming Language

Algorithms are ways of mapping problems to solutions. An algorithm is in...
research
02/17/2020

Fractional Types: Expressive and Safe Space Management for Ancilla Bits

In reversible computing, the management of space is subject to two broad...

Please sign up or login with your details

Forgot password? Click here to reset