Glossary: Difference between revisions
(→R: Add RVO.) |
(→U: UB) |
||
(17 intermediate revisions by 3 users not shown) | |||
Line 36: | Line 36: | ||
There's a separate [[Qt Build System Glossary]]. | There's a separate [[Qt Build System Glossary]]. | ||
= C = | |||
== CTAD == | |||
The C++17 feature ''Class Template Argument Deduction'' (also sometimes misspelled as ''Constructor'' Template Argument Deduction). | |||
See https://en.cppreference.com/w/cpp/language/class_template_argument_deduction | |||
= D = | = D = | ||
Line 44: | Line 52: | ||
See also [[#SCARY]]. | See also [[#SCARY]]. | ||
= E = | |||
== EoP == | |||
Elements of Programming | |||
2009 book by Alex Stepanov (inventor of the STL) | |||
See http://elementsofprogramming.com/ (HTTPS doesn't work at the time of writing) | |||
= F = | = F = | ||
Line 54: | Line 72: | ||
Used as a hashtag (<tt>#ff</tt>) on Gerrit to indicate that the change should be reviewed before the next FF. | Used as a hashtag (<tt>#ff</tt>) on Gerrit to indicate that the change should be reviewed before the next FF. | ||
== FTBFS == | |||
Fails To Build From Source (also: Failure To Build From Source) | |||
Sometimes used in bug report issue names, see https://bugreports.qt.io/browse/QTBUG-128574 for an example | |||
= G = | |||
== GUTs == | |||
Good Unit Tests | |||
Term coined by Kevlin Henney to subsume some principles of "good" unit tests. | |||
See https://www.youtube.com/watch?v=azoucC_fwzw | |||
== GoF == | |||
Gang of Four | |||
Referring to the 1994 book "Design Patterns - Elements of Reusable Object-Oriented Software" by Gamma, Helm, Johnson, Vlissides (the "Gang of Four"), which defined patterns such a State/Strategy, Factory, Visitor, ... | |||
= H = | |||
= I = | |||
= J = | |||
= K = | |||
= L = | |||
== LGTM == | |||
Looks Good To Me | |||
also: Let's Get This Merged | |||
= M = | |||
= N = | = N = | ||
== NRVO == | |||
''Named'' [[#RVO]] | |||
In contrast to [[#RVO]], the direct construction of a local object into the caller-allocated return value object, if it is known at compile-time which local object will be returned. | |||
[[#QoI]] in all C++ versions. Most compilers do the optimization, but virtually all require a certain structure of the function, and are quick to disable the optimization otherwise. | |||
See https://www.fluentcpp.com/2016/11/28/return-value-optimizations/ Section "The NRVO". | |||
== NSDMI == | |||
Non-Static Data Member Initialization | |||
See https://en.cppreference.com/w/cpp/language/data_members#Member_initialization Item 2 | |||
= O = | |||
== OOM == | |||
Out Of Memory | |||
See https://en.wikipedia.org/wiki/Out_of_memory | |||
= P = | = P = | ||
== Partially-Formed == | |||
Term coined by Alex Stepanov in [[#EoP]]: | |||
<blockquote> | |||
An object is in a partially formed state if it can be assigned to or destroyed. For an object that is partially formed but not well formed, the effect of any procedure other than assignment (only on the left side) and destruction is not defined. | |||
'''Lemma 1.3''' A well-formed object is partially formed. | |||
</blockquote> | |||
One of two natural states of a moved-from object (the other being default-constructed). | |||
See | |||
# https://www.youtube.com/watch?v=9OQKZl7ha7g | |||
# https://www.kdab.com/stepanov-regularity-partially-formed-objects-vs-c-value-types/ | |||
== Pit Of Success == | == Pit Of Success == | ||
Line 70: | Line 168: | ||
Pointer-to-Member Function, e.g. &foo::bar where foo is a class and bar() a member function. | Pointer-to-Member Function, e.g. &foo::bar where foo is a class and bar() a member function. | ||
== Premature Pessimization == | |||
Term coined by Scott Meyers in contrast to Premature Optimization. | |||
Avoiding premature pessimization means to choose among equally-readable options that which is more efficient. The idiomatic example is using post-increment when pre-increment suffices: <tt>for (...; it++)</tt> -> <tt>for (...; ++it)</tt>. | |||
See <tbd> | |||
= Q = | = Q = | ||
== QoI == | |||
Quality of Implementation | |||
E.g. about an optimization that the C++ standard doesn't require, but users expect of their C++ implementation. Such as | |||
* That std::copy over pointers and built-in types becomes no more than memmove/memcpy. | |||
* That the compiler implements [[#NRVO]]. | |||
* That the std library doesn't call swap() when LHS and RHS alias each other. | |||
== qsb == | == qsb == | ||
Line 139: | Line 254: | ||
Examples: https://codereview.qt-project.org/q/message:TLC | Examples: https://codereview.qt-project.org/q/message:TLC | ||
== | == TOCTOU == | ||
[https://en.wikipedia.org/wiki/Time-of-check_to_time-of-use Time of Check / Time of Use] | |||
a class of bugs involving race conditions. | |||
The classic example is finding a filename that matches some condition and | |||
passing this name to some other code that then accesses it, | |||
by which time the filename may no longer meet the condition. | |||
Passing an open file handle, obtained in the process of finding and checking the condition, | |||
is the usual solution in this case. | |||
== TQtC == | |||
The Qt Company | The Qt Company | ||
== TTLOFIR == | == TTLOFIR == | ||
[[Things To Look Out For In Reviews]] | [[Things To Look Out For In Reviews]] | ||
= U = | |||
== UB == | |||
Undefined Behaviour. | |||
This is presumptively a bug, absent some very compelling evidence. | |||
In principle, a compiler is at liberty to compile code that exercises UB into anything it likes, | |||
including an executable that'll wipe your hard drive when run. | |||
Just because your compiler does what you hoped for, that doesn't mean any other shall. | |||
= V = | |||
= W = | |||
= X = | |||
= Y = | |||
= Z = |
Latest revision as of 08:25, 8 October 2024
This is a glossary of terms used in Qt discussions, code comments or commit messages. Feel free to add a stub entry if you run into one you can't make sense of, in hopes of someone else filling it in here.
For terms and concept names in documentation and messaging, see Qt Terms and Concepts.
A
ABI
Application Binary Interface
The part of the Qt libraries that the linker sees. The ABI is what affects #BC.
Contrast with #API.
API
Application Programming Interface
The part of the Qt libraries that the compiler sees. The API is what affects #SC.
Contrast with #ABI.
B
BC
Binary compatible or binary compatibility
Meaning the stability of #ABI.
Build System
The set of project files and tools that are used to build Qt.
There's a separate Qt Build System Glossary.
C
CTAD
The C++17 feature Class Template Argument Deduction (also sometimes misspelled as Constructor Template Argument Deduction).
See https://en.cppreference.com/w/cpp/language/class_template_argument_deduction
D
DRY
Don't Repeat Yourself. Cf. https://en.wikipedia.org/wiki/Don%27t_repeat_yourself
See also #SCARY.
E
EoP
Elements of Programming
2009 book by Alex Stepanov (inventor of the STL)
See http://elementsofprogramming.com/ (HTTPS doesn't work at the time of writing)
F
FF
Feature Freeze
A step in the Qt release cycle. See Qt Feature Freeze.
Used as a hashtag (#ff) on Gerrit to indicate that the change should be reviewed before the next FF.
FTBFS
Fails To Build From Source (also: Failure To Build From Source)
Sometimes used in bug report issue names, see https://bugreports.qt.io/browse/QTBUG-128574 for an example
G
GUTs
Good Unit Tests
Term coined by Kevlin Henney to subsume some principles of "good" unit tests.
See https://www.youtube.com/watch?v=azoucC_fwzw
GoF
Gang of Four
Referring to the 1994 book "Design Patterns - Elements of Reusable Object-Oriented Software" by Gamma, Helm, Johnson, Vlissides (the "Gang of Four"), which defined patterns such a State/Strategy, Factory, Visitor, ...
H
I
J
K
L
LGTM
Looks Good To Me
also: Let's Get This Merged
M
N
NRVO
Named #RVO
In contrast to #RVO, the direct construction of a local object into the caller-allocated return value object, if it is known at compile-time which local object will be returned.
#QoI in all C++ versions. Most compilers do the optimization, but virtually all require a certain structure of the function, and are quick to disable the optimization otherwise.
See https://www.fluentcpp.com/2016/11/28/return-value-optimizations/ Section "The NRVO".
NSDMI
Non-Static Data Member Initialization
See https://en.cppreference.com/w/cpp/language/data_members#Member_initialization Item 2
O
OOM
Out Of Memory
See https://en.wikipedia.org/wiki/Out_of_memory
P
Partially-Formed
Term coined by Alex Stepanov in #EoP:
An object is in a partially formed state if it can be assigned to or destroyed. For an object that is partially formed but not well formed, the effect of any procedure other than assignment (only on the left side) and destruction is not defined.
Lemma 1.3 A well-formed object is partially formed.
One of two natural states of a moved-from object (the other being default-constructed).
See
- https://www.youtube.com/watch?v=9OQKZl7ha7g
- https://www.kdab.com/stepanov-regularity-partially-formed-objects-vs-c-value-types/
Pit Of Success
(Falling into the Pit Of Success)
Here: designing APIs such that users do the right thing without thinking
See https://english.stackexchange.com/questions/77535/what-does-falling-into-the-pit-of-success-mean
PMF
Pointer-to-Member Function, e.g. &foo::bar where foo is a class and bar() a member function.
Premature Pessimization
Term coined by Scott Meyers in contrast to Premature Optimization.
Avoiding premature pessimization means to choose among equally-readable options that which is more efficient. The idiomatic example is using post-increment when pre-increment suffices: for (...; it++) -> for (...; ++it).
See <tbd>
Q
QoI
Quality of Implementation
E.g. about an optimization that the C++ standard doesn't require, but users expect of their C++ implementation. Such as
- That std::copy over pointers and built-in types becomes no more than memmove/memcpy.
- That the compiler implements #NRVO.
- That the std library doesn't call swap() when LHS and RHS alias each other.
qsb
Qt Shader Baker https://doc.qt.io/qt-6/qtshadertools-qsb.html
QtCS
R
RVO
Return-Value Optimization
In contrast to #NRVO, the direct construction of a temporary argument of the return expression into the caller-allocated return value object.
#QoI up to C++14, mandated from C++17 onwards.
See https://en.wikipedia.org/wiki/Copy_elision#RVO
S
SC
Source compatible or source compatibility
Meaning the stability of the #API.
SCARY
No-one can remember what the acronym stands for, not without googling, and even then it doesn't tell you much. Making a class or function template SCARY means to separate all that depends on the template arguments from all that doesn't depend on (some) template arguments, ensuring that identical code doesn't get recompiled over and over again for every instantiation of the template.
Cf. https://quuxplusone.github.io/blog/2019/08/02/the-tough-guide-to-cpp-acronyms/#scary-iterators
Originally merely coined for nested types like std::vector<T, A>::iterator (which never depends on A), it has come into use for other in-kind transformations, too, often being a special case of Extract Method or Extract Baseclass.
See also #DRY.
SEP
Someone else's problem. From Douglas Adam's Hitchhiker's Guide.
Cf. https://en.wikipedia.org/wiki/Somebody_else%27s_problem
SFINAE
Substitution Failure Is Not An Error
For details, see
- https://en.cppreference.com/w/cpp/language/sfinae
- https://quuxplusone.github.io/blog/2019/08/02/the-tough-guide-to-cpp-acronyms/#sfinae
SMF
Special Member Functions
See https://en.cppreference.com/w/cpp/language/member_functions#Special_member_functions
T
TLC
Tender Loving Care (https://www.oxfordlearnersdictionaries.com/definition/english/tlc?q=TLC)
Used to group a set of smaller unrelated changes to a piece of code together in order to bring it up to current (Qt) standards.
Examples: https://codereview.qt-project.org/q/message:TLC
TOCTOU
Time of Check / Time of Use a class of bugs involving race conditions. The classic example is finding a filename that matches some condition and passing this name to some other code that then accesses it, by which time the filename may no longer meet the condition. Passing an open file handle, obtained in the process of finding and checking the condition, is the usual solution in this case.
TQtC
The Qt Company
TTLOFIR
Things To Look Out For In Reviews
U
UB
Undefined Behaviour. This is presumptively a bug, absent some very compelling evidence. In principle, a compiler is at liberty to compile code that exercises UB into anything it likes, including an executable that'll wipe your hard drive when run. Just because your compiler does what you hoped for, that doesn't mean any other shall.