With the Chrome 34 stable release not too far in the future and the branch for 35 already looming, it is a good time to give a small overview of the recent and upcoming v8 API changes:
* In the 34 branch, we removed basically all previously deprecated things to wipe the slate clean. * The following functions require an Isolate* as the first argument now: ObjectTemplate::New, FunctionTemplate::New, Object::New, Integer::New, Integer::NewUnsigned, String::Empty, HandleScope::NumberOfHandles. * A few tweaks were made to the CpuProfiler API, so the following methods are gone/replaced by new counterparts: CpuProfile::GetUid, CpuProfiler::GetProfileCount, CpuProfiler::GetCpuProfile, CpuProfiler::DeleteAllCpuProfiles. * We totally removed AssertNoGCScope, it was not instantiable at all. * The ExternalArrayType enum gets more spec-conformant constant names, but the previous ones are still available for some time to ease the transition. * The (pre)compilation API will change a bit in the 35 branch, because the previous one was too confusing: When you had a Script, it was totally unclear if it was bound to a context or not. We now cleanly distinguish these via Script (= context-bound) and ContextUnboundScript. You have to use BindToCurrentContext to convert the latter into the former to run it. The API in this area has a few more tweaks to prepare for better caching of (pre)compilation results in the future. We will continue to improve the whole API, especially regarding the confusing notions of "default Isolate" and "current Isolate". In the future, as a rule of thumb, an embedder should be prepared to have an explicit Isolate at hand when one is needed, and you have to care for the creation/destruction of Isolates explicitly. Magically creating a VM instance before main() and relying on thread-local storage all over the place is a constant source of bugs and confusion. Making the VM lifetime explicit and having no notion of TLS in v8 will greatly simplify and robustify things. This is how it should have been done in the first place, but given the complexity of our code and the code of our embedders, the transition is not easy and will take some time. Furthermore, we will try to make the platform dependencies (like threading etc.) more explicit. You can already see the first steps towards that goal in the Platform class in v8-platform.h, but there is definitely more to come. A constantly changing API is not nice for embedders, that's clear, but we have to improve things somehow. We try to keep the pain for embedders as low as possible, but if you have any problems or questions regarding how to update your code to work with the new API, feel free to ask on v8-users. -- -- v8-users mailing list v8-users@googlegroups.com http://groups.google.com/group/v8-users --- You received this message because you are subscribed to the Google Groups "v8-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to v8-users+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.