From 8c8a91f2ef7acccb99e3737913faad8d48b39571 Mon Sep 17 00:00:00 2001 From: Roberto Ierusalimschy Date: Fri, 24 Aug 2018 10:17:54 -0300 Subject: Deprecated the emulation of '__le' using '__lt' As hinted in the manual for Lua 5.3, the emulation of the metamethod for '__le' using '__le' has been deprecated. It is slow, complicates the logic, and it is easy to avoid this emulation by defining a proper '__le' function. Moreover, often this emulation was used wrongly, with a programmer assuming that an order is total when it is not (e.g., NaN in floating-point numbers). --- manual/manual.of | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) (limited to 'manual') diff --git a/manual/manual.of b/manual/manual.of index 5a8b1b2c..47a551bf 100644 --- a/manual/manual.of +++ b/manual/manual.of @@ -474,17 +474,7 @@ The result of the call is always converted to a boolean. @item{@idx{__le}| the less equal (@T{<=}) operation. -Unlike other operations, -the less-equal operation can use two different events. -First, Lua looks for the @idx{__le} metamethod in both operands, -like in the less than operation. -If it cannot find such a metamethod, -then it will try the @idx{__lt} metamethod, -assuming that @T{a <= b} is equivalent to @T{not (b < a)}. -As with the other comparison operators, -the result is always a boolean. -(This use of the @idx{__lt} event can be removed in future versions; -it is also slower than a real @idx{__le} metamethod.) +Behavior similar to the less than operation. } @item{@idx{__index}| @@ -1643,7 +1633,8 @@ all operations @emphx{wrap around}, according to the usual rules of two-complement arithmetic. (In other words, they return the unique representable integer -that is equal modulo @M{2@sp{64}} to the mathematical result.) +that is equal modulo @M{2@sp{n}} to the mathematical result, +where @M{n} is the number of bits of the integer type.) } @sect3{bitwise| @title{Bitwise Operators} @@ -8537,6 +8528,12 @@ For instance, the result of @T{"1" + "2"} now is an integer, not a float. } +@item{ +The use of the @idx{__lt} metamethod to emulate @id{__le} +has been removed. +When needed, this metamethod must be explicitly defined. +} + } } -- cgit v1.2.3-55-g6feb