2016/03/05

01:57

Appears the Arduino has had a troubling history associated with it. In other parts, today I have to perform my refactoring of the ZIP code so I can share it more between the 32-bit and 64-bit variants and have less code. Currently as it stands it is a bit ugly.

13:02

I should probably be more descriptive in my exceptions even though they would be english only for the most part.

14:54

My directory entries could just be map entries, that would simplify some things a bit. I can also have directory initialization based on the position of the table, so basically entries in the ZIP are a table of long values. Searching for specific entries would require linear traversal over the map however.

14:57

I could actually sub-class exceptions. Instead of a message saying whatever, I can instead just have a sub-class extension. So if a ZIP directory was not found then the exception is called with the reason. This means that I can go easier on strings a bit at the cost of adding classes.

16:40

Well my current recursive map ZIP format is a bit insane, so I need to fix that up a bit.

19:39

Ok, what I actually need next is a kind of class path element that is common to the interpreter. So essentially the interpreter engine knows about there being a class path, but internal details are a bit hidden away. Classes which extend it could use it and such. I also have to have it abstract enough so that a compiler system could be written using the pre-existing interpreter parsing of sorts.

19:50

This would also be helpful with the compiler so it can determine where packages are and such also.

19:58

I should add that this is the native compiler.

20:25

So far, I like the split off classpath stuff as it makes the code just nicer. Then for LocalEngine I can have the ZIP handling stuff actually separate and not a part of a giant mess. This also solves the problem of handling ServiceLoader since that will have to manager JARs and such.

21:44

So that is what ReferenceQueue is used for, removing all the useless junk. I can use that in my interpreter and such to handle cleaning up when things are clear. That will be a must since once the value is gone the key is not needed at all.