/****************************************************************************
**
** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
** Contact: http://www.qt-project.org/legal
**
** This file is part of the documentation of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:FDL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and Digia.  For licensing terms and
** conditions see http://qt.digia.com/licensing.  For further information
** use the contact form at http://qt.digia.com/contact-us.
**
** GNU Free Documentation License Usage
** Alternatively, this file may be used under the terms of the GNU Free
** Documentation License version 1.3 as published by the Free Software
** Foundation and appearing in the file included in the packaging of
** this file.  Please review the following information to ensure
** the GNU Free Documentation License version 1.3 requirements
** will be met: http://www.gnu.org/copyleft/fdl.html.
** $QT_END_LICENSE$
**
****************************************************************************/

/*!
\title Qt QML Release Notes
\page qtqml-releasenotes.html

\section1 Qt QML in Qt 5.1

Qt 5.1 introduces several bug fixes and new functionalities to Qt QML. This is
a summary of the new changes:
\list
\li New QQmlApplicationEngine convenience class for QML applications.
\li New Instantiatior type for generic, dynamic object creation.
\li New properties for \l Qt.application: arguments, name, and version.
\li The 'with' statement has been deprecated and is slated for removal in a
    future version of the language.
\li New \l Qt.platform object with an os property
\li New \l qmlClearTypeRegistrations() function drops all data from qmlRegisterType() calls
\li New \l qmlRegisterType() function for registering composite types.
\endlist

\section2 New Submodule

The \l{Qt QML Models QML Types}{Qt QML Models} is a new submodule in Qt 5.1 and
provides several QML types for handling data with models and lists. These types
replace types such as \l VisualItem, \l VisualDataModel, and \l VisualDataGroup.

\list
\li \l{Qt QML Models QML Types}{Models}
\endlist

The \l{What's New in Qt 5.1} has more information about the Qt 5.1 release.

\section1 Qt QML in Qt 5.0

The \l{Qt QML} module is new in Qt 5.0. It provides the QML engine and
implements the QML language supporting infrastructure.

(Prior to Qt 5, this functionality was provided by the \l {Qt Quick 1}{QtDeclarative} module, which
has now been replaced by the new \l {Qt QML} and \l {Qt Quick} modules. See the
\l {Porting QML Applications to Qt 5} page for more information.)

\section2 QML Engine

\list
\li JavaScript engine has changed to V8.
\li Various parser and compiler optimizations have been implemented, as well as a new bindings optimizer.
\li New QQmlEngine::trimComponentCache() method safely discards unused data in the engine's component cache to free memory.
\endlist

\section2 Component and Object Creation

\list
\li QML objects can now be created asynchronously to improve application performance.
    \list
    \li New QQmlIncubator and QQmlIncubationController C++ classes can be used to create objects asynchronously.
    \li From QML code, this behavior can enabled by:
        \list
        \li Calling the new Component \l{Component::incubateObject} method
        \li Passing the \c Component.Asynchronous parameter to \c Qt.createComponent()
        \li Loading a \l Loader object asynchronously using the \l{Loader::}{asynchronous} property
        \endlist
    \endlist
\li The component returned by \c Qt.createComponent() is no longer parented to the engine.  Be sure to hold a reference, or provide a parent.
\endlist

\section2 Type System

\list
\li New \l var property type. This is a general-purpose property type which obsoletes the \l variant type.
    Properties of the \l var type may hold JavaScript references.
\li QML properties of type \l var and \l variant can now hold pixmaps. See \l {Scarce Resources in JavaScript} for more information.
\li Value type improvements:
    \list
    \li QML now supports defining properties of value type basic types within QML documents.  Supported types include
        QSizeF, QPointF and QRectF as \c size, \c point and \c rect respectively.
    \li QColor is now a value type provided by the \c QtQuick module.  The red, green, blue and alpha channels
        of a \l color property can be accessed via \c r, \c g, \c b and \c a properties.
    \li Factory functions for various value types have been added to the \c Qt object exposed to QML.
        Some of those functions require the \c QtQuick module to be imported in order to return valid values.
        See the \l {Qt Quick Release Notes} for more information about these functions.
    \endlist
\li Support for sequence types QList<int>, QList<qreal>, QList<bool>, QList<QUrl>,
    QList<QString> and QStringList has been improved. QObjects can define Q_PROPERTYs of
    these types which can be accessed transparently from JavaScript.
\endlist

\section2 Modules and Imports

\list
\li Arbitrary functionality may be provided in a namespace through a singleton type.  See qmlRegisterSingletonType() for more information.
\li JavaScript (.js) files may now import QML modules and other JavaScript files using the ".import" syntax.
\li Plugins may now use QQmlExtensionPlugin::baseUrl to get the directory from which the plugin is loaded.
    This will be useful if the plugin needs to load QML or other assets from the same directory.
\endlist

\section2 Other

\list
\li QQmlExpression can now be constructed directly (and more efficiently) from a QQmlScriptString.
\li The \l {QtQml::Qt}{Qt} global object now provides an \l{QtQml::Qt::inputMethod}{inputMethod} property to access the active
    text input method for an application.
\endlist

*/
