<feed xmlns='http://www.w3.org/2005/Atom'>
<title>lua/ljumptab.h, branch v5.5.1</title>
<subtitle>A mirror of https://github.com/lua/lua
</subtitle>
<id>https://git.lua4.win/lua/atom?h=v5.5.1</id>
<link rel='self' href='https://git.lua4.win/lua/atom?h=v5.5.1'/>
<link rel='alternate' type='text/html' href='https://git.lua4.win/lua/'/>
<updated>2025-11-08T14:43:42+00:00</updated>
<entry>
<title>Global initialization checks name conflict</title>
<updated>2025-11-08T14:43:42+00:00</updated>
<author>
<name>Roberto I</name>
<email>roberto@inf.puc-rio.br</email>
</author>
<published>2025-11-08T14:43:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lua4.win/lua/commit/?id=e44f3a2ffc7ced5e75cca7657aaa60ef27da89aa'/>
<id>urn:sha1:e44f3a2ffc7ced5e75cca7657aaa60ef27da89aa</id>
<content type='text'>
Initialization "global a = 10" raises an error if global 'a' is already
defined, that is, it has a non-nil value.
</content>
</entry>
<entry>
<title>Optimization for vararg tables</title>
<updated>2025-09-24T21:33:08+00:00</updated>
<author>
<name>Roberto I</name>
<email>roberto@inf.puc-rio.br</email>
</author>
<published>2025-09-24T21:33:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lua4.win/lua/commit/?id=25c54fe60e22d05cdfaa48c64372d354efa59547'/>
<id>urn:sha1:25c54fe60e22d05cdfaa48c64372d354efa59547</id>
<content type='text'>
A vararg table can be virtual. If the vararg table is used only as
a base in indexing expressions, the code does not need to create an
actual table for it. Instead, it compiles the indexing expressions
into direct accesses to the internal vararg data.
</content>
</entry>
<entry>
<title>Keep the order left-right in shifts</title>
<updated>2025-08-20T17:31:07+00:00</updated>
<author>
<name>Roberto I</name>
<email>roberto@inf.puc-rio.br</email>
</author>
<published>2025-08-20T17:31:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lua4.win/lua/commit/?id=88aa4049ad3e638571bfffcf5fd8b6a8e07c6aaf'/>
<id>urn:sha1:88aa4049ad3e638571bfffcf5fd8b6a8e07c6aaf</id>
<content type='text'>
Opcodes OP_SHLI-OP_SHRI and the cases for opcodes OP_SHL-OP_SHR were
out of order.
</content>
</entry>
<entry>
<title>Several details about 5.4.0 rc1</title>
<updated>2020-04-23T17:48:15+00:00</updated>
<author>
<name>Roberto Ierusalimschy</name>
<email>roberto@inf.puc-rio.br</email>
</author>
<published>2020-04-23T17:48:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lua4.win/lua/commit/?id=0ddc0f47bd2a03678e1afbc384550aecb55a318f'/>
<id>urn:sha1:0ddc0f47bd2a03678e1afbc384550aecb55a318f</id>
<content type='text'>
Corrected several small details: added 'const', adjusts in tabs x
spaces, removed unused #includes and #defines, misspellings, etc.
</content>
</entry>
<entry>
<title>OP_LOADFALSE broken in two instructions</title>
<updated>2020-02-11T14:12:33+00:00</updated>
<author>
<name>Roberto Ierusalimschy</name>
<email>roberto@inf.puc-rio.br</email>
</author>
<published>2020-02-11T14:12:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lua4.win/lua/commit/?id=9b7987a9d1471ba94764286b28e0998f73deb46a'/>
<id>urn:sha1:9b7987a9d1471ba94764286b28e0998f73deb46a</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Changed internal representation of booleans</title>
<updated>2020-01-06T14:38:31+00:00</updated>
<author>
<name>Roberto Ierusalimschy</name>
<email>roberto@inf.puc-rio.br</email>
</author>
<published>2020-01-06T14:38:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lua4.win/lua/commit/?id=5ff408d2189c6c24fdf8908db4a31432bbdd6f15'/>
<id>urn:sha1:5ff408d2189c6c24fdf8908db4a31432bbdd6f15</id>
<content type='text'>
Instead of an explicit value (field 'b'), true and false use different
tag variants. This avoids reading an extra field and results in more
direct code. (Most code that uses booleans needs to distinguish between
true and false anyway.)
</content>
</entry>
<entry>
<title>Removed arithmetic opcodes with immediate operand</title>
<updated>2019-09-10T16:20:03+00:00</updated>
<author>
<name>Roberto Ierusalimschy</name>
<email>roberto@inf.puc-rio.br</email>
</author>
<published>2019-09-10T16:20:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lua4.win/lua/commit/?id=91dad09f65984048ae43c8894d18acb785c7092b'/>
<id>urn:sha1:91dad09f65984048ae43c8894d18acb785c7092b</id>
<content type='text'>
The difference in performance between immediate operands and K operands
does not seem to justify all those extra opcodes. We only keep OP_ADDI,
due to its ubiquity and because the difference is a little more relevant.
(Later, OP_SUBI will be implemented by OP_ADDI, negating the constant.)
</content>
</entry>
<entry>
<title>First version of OP_MMBIN opcodes</title>
<updated>2019-08-27T16:59:39+00:00</updated>
<author>
<name>Roberto Ierusalimschy</name>
<email>roberto@inf.puc-rio.br</email>
</author>
<published>2019-08-27T16:59:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lua4.win/lua/commit/?id=df13f259487459f3a28d31d76c890aa6c2d061e0'/>
<id>urn:sha1:df13f259487459f3a28d31d76c890aa6c2d061e0</id>
<content type='text'>
In arithmetic/bitwise operators, the call to metamethods is made
in a separate opcode following the main one. (The main
opcode skips this next one when the operation succeeds.) This
change reduces slightly the size of the binary and the complexity
of the arithmetic/bitwise opcodes. It also simplfies the treatment
of errors and yeld/resume in these operations, as there are much
fewer cases to consider. (Only OP_MMBIN/OP_MMBINI/OP_MMBINK,
instead of all variants of all arithmetic/bitwise operators.)
</content>
</entry>
<entry>
<title>Keep correct type for immediate operands in comparisons</title>
<updated>2019-03-22T16:37:17+00:00</updated>
<author>
<name>Roberto Ierusalimschy</name>
<email>roberto@inf.puc-rio.br</email>
</author>
<published>2019-03-22T16:37:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lua4.win/lua/commit/?id=23e6bac8a0bbb9e5df43cbc0b7634b6d1395b0ff'/>
<id>urn:sha1:23e6bac8a0bbb9e5df43cbc0b7634b6d1395b0ff</id>
<content type='text'>
When calling metamethods for things like 'a &lt; 3.0', which generates
the opcode OP_LTI, the C register tells that the operand was
converted to an integer, so that it can be corrected to float when
calling a metamethod.

This commit also includes some other stuff:
- file 'onelua.c' added to the project
- opcode OP_PREPVARARG renamed to OP_VARARGPREP
- comparison opcodes rewritten through macros
</content>
</entry>
<entry>
<title>New semantics for the integer 'for' loop</title>
<updated>2019-03-19T13:53:18+00:00</updated>
<author>
<name>Roberto Ierusalimschy</name>
<email>roberto@inf.puc-rio.br</email>
</author>
<published>2019-03-19T13:53:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lua4.win/lua/commit/?id=9b37a4695ebf50b37b5b4fb279ae948f23b5b6a0'/>
<id>urn:sha1:9b37a4695ebf50b37b5b4fb279ae948f23b5b6a0</id>
<content type='text'>
The numerical 'for' loop over integers now uses a precomputed counter
to control its number of iteractions. This change eliminates several
weird cases caused by overflows (wrap-around) in the control variable.
(It also ensures that every integer loop halts.)

Also, the special opcodes for the usual case of step==1 were removed.
(The new code is already somewhat complex for the usual case,
but efficient.)
</content>
</entry>
</feed>
