Thursday, April 25, 2013

Let me introduce PLOVDIV VM/Twenkid VM - a new species that was born in my software infrastructure. :P

It's an incarnation of my life's long wish to create and design CPUs, computers, emulators etc. It will assist and interoperate with the upcoming thinking machine prototypes, of course.

Still in an early stage and incomplete to be used in production, but it's already a runnable virtual computer, and has all crucial instructions, RAM, stack, and can call native functions. I hope to start using it for real stuff in the upcoming weeks or a month.

Plovdiv VM is a Hybrid VM for now - its virtual CPU is both Register and Stack based. That decision was partially because it's yet a sort of a playground for me, it may fork. Actually I suspect that it may grow into a universal reconfigurable emulator or/and partial simulator of any CPU, computer or... anything - that seems to be the ultimate direction.

Initial design scope is to be easy and quick for development (in C/C++) up to the desired useful level, and to allow for quick application and seamless and easy integration and interoperability with existing software from my infrastructure and access to low-level and high-performance features.

Memory Management? Garbage Collector?

Memory management is not done yet, a part of it will be done these days perhaps. Initially it won't have a garbage collector, it will be more like C and C++ memory management with stack variables, a heap, pointers, references; in addition to some other types, for interoperability with the host machine, such as external pointers to native functions, libraries and native memory.

If you are familiar with the buffers in OpenCL or CUDA, with which the host computer exchanges data with the GPU - there will be also that kind of pointers/inter-process communication facilities.

For now it's... I don't know... What's actually running as for yesterday is a virtual computer with a CPU executing machine code/assembler, which is also able to call native functions.

I already have a small compiler developed years ago, which understood Pascal and generated CLR/.NET bytecode, I revised it recently a little and started adding some C syntax. It may turn into a partial C compiler, or again a hybrid - Pascal and C compiler/ JIT-compiler/interpreter.

The compiler will probably be tuned to generate also bytecode for PLOVDIV VM, and vice-verse -- I'll probably make a small converter that turns CLR code into my bytecode. (BTW, I know about LLVM, but haven't digged into the details etc.)

Java of course is considered. We'll see, whatever.

License?

It's far from public release yet, as well as or even further away from public interest... :-D

I'll decide for the license when the VM is good enough so that anybody cares about it.

About me

Author of the world's first interdisciplinary university course in AGI, presented in 2010 and 2011. Artificial General Intelligence (AGI) researcher & developer; contributor to the CogAlg project. A renaissance person with diverse fields of interests and activities. Filmmaker (...)
Looking for R&D and creative partners and opportunities! Contact me on twenkid at google com