<div dir="ltr"><div><div><div><div>Hi, Russel,<br><br></div>I developed another "version" of the environment in my PhD thesis (it does only work on Windows) which I called Zero. It is a prototype-based programming environment, and multiplatform. You can find it all here:<br><br><a href="http://baltasarq.github.io/zero/">http://baltasarq.github.io/zero/</a><br><br></div>Specifically, the discussion about persistence support is here:<br><a href="http://baltasarq.github.io/zero/doc/persistencia.html">http://baltasarq.github.io/zero/doc/persistencia.html</a><br><br></div>The discussion is made using za and zm tools, Zero's assembler and macroassembler, though Zero does also have a high-level programming language called Prowl.<br><br></div><div>Persistence is achieved by reachability. If you create an object, then it is transient by default. If you add it to the PSRoot container (containers are just collections of objects, from the client programmer's point of view), then it is automatically reachable by the persistence root and therefore made persistent. If you add the object to a container which in turn is added to PSRoot, then it is also made persistent.<br><br></div><div>Say you create a container A and an object foo. You put foo inside A, and A inside PSRoot. You'll have a subdirectory A under PS, which will hold the A.zbj file. Inside the A.zbj, you will find the foo object.<br><br></div><div>A zbj file is the same kind of file that you create when you compile an object for its execution in the zvm (the virtual machine). This means that you can add objects to the persistent store by moving zbj files, or disassemble a zbj file using the tool zd.<br></div><div><br></div>-- baltasar<br><br></div>