Memory Can't Be Empty

Until version 0.23.7 it was possible to use memory object just like this:

memory > m
m.write 42

At the first line, a copy of memory was made and then labeled as m. This was a bug in the language. The object memory must not be copied if there are no arguments provided for the copying (application) operation.

The right way since 0.23.7 is this:

memory 0 > m
m.write 42

Here, the object m is a copy of memory with a single argument, which is called an “enclosure”.

We also deleted the attribute memory.is-empty, since memory is always not empty.

The same changes were applied to the object cage.