Someone noted that my last post sounded like I would not fix bugs. I will go back and fix bugs in the virtual machine and extension code if_ someone finds them, but I am quite confident there are none. I know that sounds overconfident, but I have done plenty of testing to weed out the problems. Because Copper is a simple language, there are not many ways to trip up the virtual machine. Ironically, it does mean odd code is acceptable. You could even feed this_ entire blog post into the VM and it would all be legal code. Go ahead and try it.
Up to this point, the foreign function system did not allow using callbacks via Engine::runFunctionObject() until after Engine::execute() or Engine::run() (which calls Engine::execute()) had completed. My recent update changes that and makes recursive execution of opcodes easier.
For the second time, I’m changing the foreign function interface. (Actually, I already did.) It’s a rather sudden announcement, but since no one else besides me is using the language that I know of, I can get away with things like this.
Pointers are always a pain. I have found the only safe ways to work with them that both avoids memory leaks and segfaults. Unfortunately, there are some things lost that even ruin some expectations in Copper.