aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/doc/src/qtqml-tool-qmlsc.qdoc
blob: 5546e858f8f1ce26a07427729cd049fa5d356de3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
/****************************************************************************
**
** Copyright (C) 2022 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** 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 The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/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: https://www.gnu.org/licenses/fdl-1.3.html.
** $QT_END_LICENSE$
**
****************************************************************************/

/*!
\page qtqml-tool-qmlsc.html
\title QML Script Compiler
\brief A tool to compile functions and expressions in QML.

The QML Script Compiler will compile functions and expressions in QML files of an
application into C++ code within limitations set by the nature of JavaScript.
It replaces \e qmlcachegen, and simply generates C++ code in addition to byte
code for functions that can be exhaustively analyzed. The following flow chart
explains the compilation of \e qmlsc.

\image qmlsc-compilation-scheme.png

\section1 Limitations when compiling JavaScript

Many JavaScript constructs cannot be efficiently represented in C++. \e qmlsc
skips the C++ code generation for functions that contain such constructs and
only generates byte code to be interpreted. Although, most common QML expressions
are rather simple: value lookups on QObjects, arithmetics, simple if/else or loop
constructs. Those can easily be expressed in C++, and doing so makes your
application run faster.

\e qmlsc is available for commercial customers and some of its features are
merged into \e qmlcachegen, which continues to be available with all versions of
Qt.
*/