From: Leandro P. <le...@pr...> - 2012-04-11 21:36:55
|
Heya. As you've probably noticed, I just flooded your inbox with elev8 commits. Sorry for that, but it's for a good cause. For those that don't know, elev8 is the next gen JavaScript bindings for EFL. It is based on Google's V8 engine (hence the name), and includes a module that allows creating Elementary apps in a declarative way, greatly reducing the amount of code necessary to build the UI for your application. There is a significant amount of examples included in $REPO/data/javascript if you'd like to get the gist of it. Also of note is that we're talking with Node.js (http://nodejs.org -- essentially a popular framework to create server-side web stuff) guys in order to integrade elev8 with it. This latest batch of patches actually makes Elev8's elementary module compatible with a hacked Node.js that integrates with our main loop. Eventually this hack won't be necessary anymore. This will make it possible to reuse most of their libraries, which is awesome. For those that know what elev8 is, and are following its development: there has been substantial changes, specially in the Elementary module: - The Javascript object inheritance model is now being used, instead of the home-cooked one that was rather inefficient (both in space and time). - As a result of this, the API to declare things has changed. Please refer to the examples and each individual commit for details (or ask here, I'll be able to help). - Memory management has improved: there should be no obvious sources of memory leaks, although that's quite tricky to find in a garbage-collected environment -- but objects should release their memory when V8 GC kicks in. - HandleScope usage inside getters/setters has been reviewed. It's not necessary to declare a HandleScope anymore, the wrapper callbacks should take care of it. - Widgets that permits creating subwidgets (boxes, tables, etc) had their implementation heavily changed. Mainly, one just need to override DidRealiseElement() if there's a need to do something extra with it (like packing it into a box). Javascript users don't need to worry about this. - Also from the C++ side, make_or_get(), get(), get_object(), etc, are all dead. Better named equivalents are in place now, like GetEvasObject(), GetEvasObjectFromJavascript(), GetJSObject(), etc. These might change slightly in the near future, but this is an implementation detail and Javascript users don't need to worry as well. - Lots of widgets had their API changed as well. I'm too lazy right now to see which ones that did, but if you have any question for a particular widget, don't be afraid to ask. I'm sure I'm forgetting something -- ask/question/criticize away. Cheers, Leandro |