Totally got that. On the other time, those of us who are your intended target audience get the benefit of using a language that we can go buy a book on. It's not like we're just going to download your plugin, compile our own scripts, and go.See, my problem with all these third party libraries is, they are all a bit super potent for what we need and it takes a lot of time to study & adapt them. It's not like you download the sources, compile and go.
I'm just another programmer wondering whether I've got to learn yet another language, and I'm feeling language fatigue.
Well, there's always TinyXML; that's what a lot of xplat people with micro-sizes in mind tend to lean on. http://www.grinninglizard.com/tinyxmldocs/index.html (http://www.grinninglizard.com/tinyxmldocs/index.html)E.g. it was shocking that adding support for .aupreset on Win has more than doubled the size of the binary, using open source projects. So I left it (XML parser and some CoreFoundation stuff...) away until I have time to write my own 2kB converter, instead of 900kB of redundant instructions. Which cost me a couple of days to find out.
Sure, but now the whole VM rests on your shoulders to debug. Is this going to be one of those things that's complicated enough to work brilliantly for you while you're building it, and then cause you billions of hours of support in the wild? Will it all have been worth it if it did?And honestly, I always wanted to write my own vm.
Having shipped an awful lot of bugs in my lifetime, I just don't tend to look at things the same way anymore.
Yup, and I can totally see the value of that. If a pure internal-object-equals-external-object API isn't good enough, then you're either restricting your usage of your internal mechanisms, or requiring that you think about your internal design with a mind to how you want its API to be used externally - either of which can be limiting.For instance, for a lot of things, especially dsp stuff, it's necessary to "patch" right into the engine.
On the other hand, object-for-object bridging is pretty cheap and easy to do in most VMs; and integrating the code to bridge the divide is well documented in most of the popular runtimes.
So lock a branch, freeze it, and ship your own that doesn't shift around underneath you; you still get the benefit of standing on the shoulders of others.Stuff like that only works when you can be sure that nobody else changes anything.
I'm just playing devil's advocate, here. The reality is you're doing it because you really wanted to do it, and that's the only good reason to do anything anyways.
And it's true.That is, when you've written it yourself. If you need to upgrade a 3rd party lib, i.e. because of platform issues (Intel Macs anyone? Or 64 bit architectures?) you can be sure that you have to spend a lot of time into redoing a lot of changes. Maybe I'm paranoid here, but that's just how I see things.
Sure, that happens. But the other thing happens, too - this thing does X, and while I hadn't thought of it to start with, using that gives me Y, which is a cool thing. And I get to work on implementing Y, instead of all of the ugly guts of Y that are ultimately just mindless drudgery.
And there we have it. The reason.Last but not least, I had great fun writing the parser
So far.(Writing the VM was more like a bad joke... it's not much more than a file with 200 callbacks that consist of 3-8 lines each. It was done in 6 hours or so.)
Anyways, nice chatting. Good luck, and I hope to see a final version of the plugin soon.

