Now, this was a long break. I had some unfruitful discussion on LtU on purity, which led nowhere. I guess that was to be expected. A few of my colleagues, those who were interested in language theory, sometimes jokingly referred to LtU as a counter-example of professional discussion skills, and I can't say I really give a lot about the `academic opinion by common religion,' so I gave up on that.
Anyway. The language I have now has a runtime with a heap with one root which is GCed, the accompanying language is -what I would call for lack of a better definition- a `referentially transparent but impure' language. I.e., all data-structures are referentially transparent, but the side-effects to the OS may occur anywhere. Actually, I like it as it is, and I like programming in this manner.
I gave it some thought though. I don't like purity that much, and I would prefer variables which live at the module level such that you can program with normal stateful module hierarchies, even if I would prefer purity by default.
Since I am starting from scratch again, I am rewriting the runtime to be able to handle multiple roots. This goes a bit at the expense of a `nice' model where, for instance, serializing the heap with one root is good enough to give a good approximation where the full state of the running application can be recovered. So, I would need to rethink that, but, ah well, can't have it all.