- Reserved words are missing from the parser. var import = 'x'; This should fail, but doesn't. - Compiling fails as EXIT_SUCCSESS etc. are not included. Configure line was as follows on opensuse 10.2 ./configure -qt-gif -no-exceptions -debug -no-separate-debug-info -fast \ -system-libpng -system-libjpeg -system-zlib -qdbus -prefix /usr/local/qt4 - QUiLoader makes no use of the fact it's a QObject. :-( - QApplication doesn't work with Q_SCRIPT_DECLARE_QCLASS. - It's not very clear how to use QScriptFunctionSignature. It took me ages to figure out the problem was that my function wasn't static. - It is annoying that i need to assign the functionName property in order to reuse a single C++ function for multiple JS functions. Having some sort of userdata property on the function that lets me store an id would be nice. - You can't call app.exec() as a slot. :-( - There is no API that will let you know when someone has assigned to a particular property of a JS object. This makes it impossible to implement something like the event handling code that is in kjsembed as that needs this facility in order to determine which events to filter and despatch to JS. - It would be useful to have a toQWidget() method or even a templated method like qt_cast for extracting things from QScriptValue. - It's not possible to access the prototypes for the various types of exception object. This means that you can't check the type of an exception using instanceOf() from C++. There is also no aparant way to extract information such as the method unless you parse it out of the result of converting the exception to a string. - The API should include something along the lines of the uiutils class I blogged about. Having a simple way to let people create widgets, loadui files etc. dramatically lowers the barrier for people using this stuff. That said, I don't think bindings like that should be enabled by default. Maybe a method on QScriptEngine like registerWidgets() or something be implemented. - While the code seems to have hooks for a debugger in it, there's no public interface. This obviously makes writing one a challenge! - Slots that return a QWidget* don't seem to work properly. - Lots of the Qt API fails to make methods slots that could be usefully used from scripts, perhaps with the ability to make non-slots as scriptable this can be addressed. Qt 4 is also much worse than Qt 3 at providing overloads that take simple types like QString (eg. for list widgets). This makes accessing them from scripts harder with Qt 4 than it was previously with Qt 3. - There appears to be no way from C++ to query all the properties of an object. This prevents implementing a tool that lets you navigate the objects in the interpreter (we provide such a tool in kjsembed). It also prevents you doing stuff like having a menu that is populated from the properties of a JS object. - There's no constructor for the Date object that takes a QDate or QDateTime. - What on earth does setDefaultPrototype() do? I have no idea. - QScriptEngine::uncaughtException() -> QScriptEngine::hasUncaughtException() --------------- SENT - Slots and properties don't seem to be enumerable from the script. This makes it hard to write things like doc generators that want to query what's available. - The docs don't mention that you can make quite nice APIs for JS that are decoupled from your implementation by adding a few custom functions and sticking them in JS Object. This can be done independently of the actual implementations so it can be nice way to create simple APIs. - How can an application create a non-enumerable or read-only object?