• entries
    743
  • comments
    1924
  • views
    580106

Om rewrite #4

Sign in to follow this  
Aardvajk

899 views

Quick post from phone.

Have decided to restart Om from scratch again. Too much unexpected things have made the current implementation feel icky. Mainly the running of object destructors but sure there are other things too.

Issues to consider from day one on this iteration are:

* decrementing a reference can run code in the current execution context
* said code can cause errors
* want to be able to precompile a module and load from a stored binary representation
* objects and arrays to be merged. Int access is array, string or dot access is object, so the entity will contain both an ID map and a vector. Tiny size cost if not used in exchange for simplification
* overhead of Om::Value to be entirely removed from internals and constructed at API boundaries
* remove all explicit support for global values. Means some things might not be intuitatuve in module writing, but can be worked round and encourages design avoiding global state

Am currently rewriting pod_vector to use two pointers for front and back, instead of a pointer and an index so that back() requires no index addition, as used often as the stack structure. This approach keeps cost of push_back() and pop_back() same as before while improving back() performance. Maybe irrelevant but may as well.

Will be approaching in a different order this time, getting minimum in place in compiler and VM to create objects with destructors, so that tricky business of this written in minimal existing context and everything else built upon that.

Hate typing on this bloody phone :)
Sign in to follow this  


0 Comments


Recommended Comments

There are no comments to display.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now