Pages

Monday, August 13, 2012

Rawr!

So I was tossing around some ideas with one of my advisers, +Peter Schachte, and I realized: There is no programming language, that I am aware of, which has built-in versioning primitives/keywords. Personally, I think extending a language to reflect the concept of a specific version of the program, or source file, can be a useful feature. Versions help track bugs, aid application development, and can enforce security. Such a language feature could make use of certain library functionality or even use a specific version of a library based on language keywords or primitives decorating the source code. Peter is full of good ideas, and brain storming with him is quite valuable. Anyways, back to the point, extending a language to add these sprinkles is not always a trivial task. How would others make use of such features, unless compilers were built/modified to address such added functionality (rhetorical question... no question mark will follow). Anyways, what can be done; however, is use a plugin-capable compiler, and write a plugin to bolt-on such features.

Well, I did not target this concept fully, but it led me to what I thought was a decent idea. A GCC compiler plugin which automatically adds a version and timestamp to any file being compiled. This data can be extracted by looking at the binary file's read-only data section, '.rodata.' Such a plugin is simple to use: just add the proper gcc flag `-fplugin=identisaurus.so' and blammo, it's done. This, folks, is the birth of the identisaurus. You can obtain this bad boy here:
http://github.com/enferex/identisaurus/.
*RAWR!*

-Matt