Thursday, April 25, 2013

Plovdiv VM - Twenkid VM - New Virtual Machine was Born! | Announcement | Twenkid's Virtual Machine | Пловдив ВМ - българска виртуална машина

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.

Why it's called so? PLOVDIV VM?

In the name of the city of   Plovdiv, Bulgaria

It's a working title, and I like aliases. :)

Main Features

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.

Interpreter or JIT Compiler or ?...

A hybrid... An emulator... Perhaps all of the above and more....

It's aiming eventually to allow... very intersting functions, I'll tell later.

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.


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.

For now it's a proprietary baby endeavor, for in-house usage.


Обявяване на виртуалната машина "Пловдив ВМ"

Българска виртуална машина, компилатори, операционни системи, Java, JVM, CLR, .NET, байткод, машинен език,

No comments :