summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Detailsv5.4.0Roberto Ierusalimschy2020-06-182-2/+13
| | | | Added as incompatibility, in the manual, the extra return of 'io.lines'.
* Detail in 'lua_resetthread'Roberto Ierusalimschy2020-06-171-5/+4
| | | | | | 'lua_resetthread' should reset the CallInfo list before calling 'luaF_close'. luaF_close can call functions, and those functions should not run with dead functions still in the CallInfo list.
* Fixed missing GC barriers in compiler and undumpRoberto Ierusalimschy2020-06-162-14/+22
| | | | | While building a new prototype, the GC needs barriers for every object (strings and nested prototypes) that is attached to the new prototype.
* In 'lua_checkmemory', userdata can be gray, tooRoberto Ierusalimschy2020-06-151-0/+4
| | | | | Since commit ca6fe7449a74, userdata with uservalues can be gray and can belong to gray lists ('gclist').
* 'luaE_shrinkCI' shouldn't remove first free CallInfoRoberto Ierusalimschy2020-06-151-8/+14
| | | | | Due to emergency collections, 'luaE_shrinkCI' can be called while Lua is building a new CallInfo, which for a while is still a free CallInfo.
* DetailsRoberto Ierusalimschy2020-06-102-4/+3
|
* Avoid calling 'fprintf' with NULLRoberto Ierusalimschy2020-06-093-3/+7
| | | | | | Avoid undefined behavior in calls like «fprintf("%s", NULL)». ('lua_writestringerror' is implemented as 'fprintf', and 'lua_tostring' can return NULL if object is not a string.)
* Fixed two bugs in to-be-closed variables x constantsRoberto Ierusalimschy2020-06-013-30/+75
| | | | | | | | | | The parser were mixing compiler indices of variables with stack indices, so that when a to-be-closed variable was used inside the scope of compile-time constants (which may be optimized away), it might be closed in the wrong place. (See new tests for examples.) Besides fixing the bugs, this commit also changed comments and variable names to avoid that kind of confusion and added tests.
* Improvements in the manualRoberto Ierusalimschy2020-05-291-45/+86
| | | | | | | | - more consistent nomenclature for error handling - more precise definition for dead objects - added algorithm used by 'math.random' - added luaL_pushfail - some other minor changes
* Details (more uniformity in error messages)Roberto Ierusalimschy2020-05-273-15/+15
|
* 'luaL_execresult' does not assume -1 status as errorRoberto Ierusalimschy2020-05-223-3/+6
| | | | | | | | | | | ISO C is silent about the return of 'system'. Windows sets 'errno' in case of errors. Linux has several different error cases, with different return values. ISO C allows 'system' to set 'errno' even if there are no errors. Here we assume that a status==0 is success (which is the case on several platforms), otherwise it is an error. If there is an error number, gives the error based on it. (The worst a spurious 'errno' can do is to generate a bad error message.) Otherwise uses the normal results.
* Improvements in the handling of signalsRoberto Ierusalimschy2020-05-225-21/+25
| | | | Added 'volatile' to 'l_signalT' variables plus some minor changes.
* Cleaner definition for 'TString'Roberto Ierusalimschy2020-05-192-5/+8
| | | | | Use a variable-sized array to store string contents at the end of a structure 'TString', instead of raw memory.
* Details in commentsRoberto Ierusalimschy2020-05-072-2/+2
|
* Back to old encoding of versions in binary filesRoberto Ierusalimschy2020-05-065-6/+11
| | | | | | (Undoing part of commit f53eabeed8.) It is better to keep this encoding stable, so that all Lua versions can read at least the version of a binary file.
* C-Stack test does not assume minimum of 400 slotsRoberto Ierusalimschy2020-05-041-17/+26
|
* DetailsRoberto Ierusalimschy2020-04-301-5/+9
| | | | | When in test mode (#include "tests.h"), force Lua to use its own implementation of 'lua_strx2number' and 'lua_number2strx' to test them.
* Fixed warning about casts between function pointersRoberto Ierusalimschy2020-04-291-1/+8
| | | | | | gcc now warns (with -Wextra) about casts between pointers to different function types. The type 'void(*)(void)' works as a 'void*' for function pointers, cleaning the warning.
* Several details about 5.4.0 rc1Roberto Ierusalimschy2020-04-2312-24/+22
| | | | | Corrected several small details: added 'const', adjusts in tabs x spaces, removed unused #includes and #defines, misspellings, etc.
* Small issue in 'exprstat'Roberto Ierusalimschy2020-04-231-1/+2
| | | | | | | The code should not compute an instruction address before checking that it exists. (Virtually no machine complains of computing an invalid address, as long as the address is not used, but for ISO C that is undefined behavior.)
* Added 'simplesect' sections to the manualRoberto Ierusalimschy2020-04-135-6/+56
| | | | | | | 'simplesect' encloses the introductory text of sections with subsections, so that each section either is all text or is all subsections. (This commit also corrects a small brace error in the manual and extra spaces/tabs in some other files.)
* Improvements in the manualRoberto Ierusalimschy2020-04-101-46/+64
| | | | | Several small improvements, in particular a new subsection consolidating all status codes in the API.
* Short strings always use all bytes in the hashRoberto Ierusalimschy2020-04-013-7/+10
| | | | | | Collisions in short strings occurr just by their existence, when internalizing them. (Collisions in long strings is caused/controlled by the program, when adding them as keys to the same table.)
* Fixed bug in 'string.format("%p")'Roberto Ierusalimschy2020-03-163-8/+19
| | | | | The string "(null)" used for non-collectable values must be printed as a string, not as a pointer. (Bug introduced in commit e0cbaa50fa7).
* Fixed "conceptual" bug in 'luaK_setreturns'Roberto Ierusalimschy2020-03-022-5/+5
| | | | | | | | This function was computing invalid instruction addresses when the expression was not a multi-return instruction. (Virtually all machines don't raise errors when computing an invalid address, as long as the address is not accessed, but this computation is undefined behavior in ISO C.)
* Corrected direct use of 'snprintf' in 'lstrlib.c'Roberto Ierusalimschy2020-02-281-1/+1
|
* Code style in 'ldump'/'lundump'.Roberto Ierusalimschy2020-02-272-149/+149
| | | | | - function names start with lower case; - state is always the first parameter.
* DetailsRoberto Ierusalimschy2020-02-2713-45/+52
| | | | | Several details in code (e.g., moving a variable to the most inner scope that encloses its uses), comments, parameter names, extra tests.
* OP_LOADFALSE broken in two instructionsRoberto Ierusalimschy2020-02-116-6/+14
|
* Tag values don't need to be different from type valuesRoberto Ierusalimschy2020-01-311-18/+19
| | | | Variants can use zero for first variant.
* Clearer distinction between types and tagsRoberto Ierusalimschy2020-01-3122-212/+230
| | | | | LUA_T* represents only types; tags (types + Variants) are represented by LUA_V* constants.
* New macro 'makevariant' to codify variant tagsRoberto Ierusalimschy2020-01-061-11/+14
|
* Changed internal representation of booleansRoberto Ierusalimschy2020-01-0614-52/+87
| | | | | | | 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.)
* Fixed bug in 'aux_rawset'Roberto Ierusalimschy2019-12-301-1/+1
| | | | | In 'aux_rawset', top must be decremented after the barrier, which refers to top-1. (Bug introduced in commit c646e57fd.)
* Comments (mosty typos)Roberto Ierusalimschy2019-12-3015-21/+28
|
* Copyright year changed to 2020Roberto Ierusalimschy2019-12-272-3/+3
|
* Joined common code in 'lua_rawset' and 'lua_rawsetp'Roberto Ierusalimschy2019-12-173-21/+23
|
* Easy way to allow Unicode characters in identifiersRoberto Ierusalimschy2019-12-171-16/+25
| | | | For those that want to try it...
* Added test for NULL in string.format("%p")Roberto Ierusalimschy2019-12-171-0/+2
| | | | | | ISO C states that standard library functions should not be called with NULL arguments, unless stated otherwise. 'sprintf' does not state otherwise, and it doesn't hurt to be on the safe side.
* Small correction in assertionRoberto Ierusalimschy2019-12-132-2/+2
|
* Comment about LUA_COMPAT_LT_LE moved to proper placeRoberto Ierusalimschy2019-12-102-6/+12
|
* Simplifications in 'op_arith*' family of macrosRoberto Ierusalimschy2019-12-051-47/+27
|
* Using an enumeration for float->integer coercion modesRoberto Ierusalimschy2019-12-054-22/+30
|
* 'l_mathlim' renamed to 'l_floatatt'Roberto Ierusalimschy2019-12-054-8/+8
| | | | That macro is applied to float attributes, not to limits.
* Better comments about the use of 'k' in opcodesRoberto Ierusalimschy2019-12-052-30/+34
|
* Manual a little more clear about string->number coersionsRoberto Ierusalimschy2019-12-051-16/+25
|
* Code reorganization for opcodes OP_FORPREP and OP_FORLOOPRoberto Ierusalimschy2019-12-041-75/+116
| | | | | Parts of the code for opcodes OP_FORPREP and OP_FORLOOP were moved to functions outside the interpreter loop.
* Removed some wrong commentsRoberto Ierusalimschy2019-11-281-8/+6
| | | | | Both 'tonumber' and 'tointeger' cannot change the out parameter when the conversion fails.
* More generic pattern when testing 'string.format'Roberto Ierusalimschy2019-11-221-2/+2
| | | | | The result of 'string.format("%a", 0.0)' can have multiple zeros after the dot.
* DetailsRoberto Ierusalimschy2019-11-186-15/+16
|