diff --git a/lapi.h b/lapi.h
index f48d14f..41216b2 100644
--- a/lapi.h
+++ b/lapi.h
@@ -19,7 +19,7 @@
 
 /*
 ** If a call returns too many multiple returns, the callee may not have
-** stack space to accomodate all results. In this case, this macro
+** stack space to accommodate all results. In this case, this macro
 ** increases its stack space ('L->ci->top').
 */
 #define adjustresults(L,nres) \
diff --git a/lcode.c b/lcode.c
index 25ddfb7..4fc97e2 100644
--- a/lcode.c
+++ b/lcode.c
@@ -1509,7 +1509,7 @@
     lua_assert(e1->k == VK || e1->k == VKINT || e1->k == VKFLT);
     swapexps(e1, e2);
   }
-  r1 = luaK_exp2anyreg(fs, e1);  /* 1nd expression must be in register */
+  r1 = luaK_exp2anyreg(fs, e1);  /* 1st expression must be in register */
   if (isSCnumber(e2, &im, &isfloat)) {
     op = OP_EQI;
     r2 = im;  /* immediate operand */
diff --git a/lfunc.c b/lfunc.c
index 0ef7328..60689a7 100644
--- a/lfunc.c
+++ b/lfunc.c
@@ -165,7 +165,7 @@
       if (newstatus != LUA_OK && status == CLOSEPROTECT)  /* first error? */
         status = newstatus;  /* this will be the new error */
       else {
-        if (newstatus != LUA_OK)  /* supressed error? */
+        if (newstatus != LUA_OK)  /* suppressed error? */
           luaE_warnerror(L, "__close metamethod");
         /* leave original error (or nil) on top */
         L->top = restorestack(L, oldtop);
diff --git a/lmem.c b/lmem.c
index b1d646a..65bfa52 100644
--- a/lmem.c
+++ b/lmem.c
@@ -26,7 +26,7 @@
 /*
 ** First allocation will fail whenever not building initial state
 ** and not shrinking a block. (This fail will trigger 'tryagain' and
-** a full GC cycle at every alocation.)
+** a full GC cycle at every allocation.)
 */
 static void *firsttry (global_State *g, void *block, size_t os, size_t ns) {
   if (ttisnil(&g->nilvalue) && ns > os)
diff --git a/loslib.c b/loslib.c
index 7812d29..29449e4 100644
--- a/loslib.c
+++ b/loslib.c
@@ -196,7 +196,7 @@
 */
 
 /*
-** About the overflow check: an overflow cannot occurr when time
+** About the overflow check: an overflow cannot occur when time
 ** is represented by a lua_Integer, because either lua_Integer is
 ** large enough to represent all int fields or it is not large enough
 ** to represent a time that cause a field to overflow.  However, if
diff --git a/ltests.c b/ltests.c
index bb5dad5..e9b28b1 100644
--- a/ltests.c
+++ b/ltests.c
@@ -476,7 +476,7 @@
 /*
 ** Check consistency of an object:
 ** - Dead objects can only happen in the 'allgc' list during a sweep
-** phase (controled by the caller through 'maybedead').
+** phase (controlled by the caller through 'maybedead').
 ** - During pause, all objects must be white.
 ** - In generational mode:
 **   * objects must be old enough for their lists ('listage').
@@ -783,7 +783,7 @@
         return 1;
       }
     }
-    return luaL_error(L, "unkown type '%s'", t);
+    return luaL_error(L, "unknown type '%s'", t);
   }
 }
 
diff --git a/testes/api.lua b/testes/api.lua
index b565741..9447e42 100644
--- a/testes/api.lua
+++ b/testes/api.lua
@@ -805,7 +805,7 @@
   if A ~= nil then
     assert(type(A) == "userdata")
     assert(T.udataval(A) == B)
-    debug.getmetatable(A)    -- just acess it
+    debug.getmetatable(A)    -- just access it
   end
   A = x   -- ressucita userdata
   B = udval
@@ -1112,7 +1112,7 @@
   -- non-closable value
   local a, b = pcall(T.makeCfunc[[
     newtable   # create non-closable object
-    toclose -1 # mark it to be closed (shoud raise an error)
+    toclose -1 # mark it to be closed (should raise an error)
     abort  # will not be executed
   ]])
   assert(a == false and
diff --git a/testes/attrib.lua b/testes/attrib.lua
index 76a447c..b1076c7 100644
--- a/testes/attrib.lua
+++ b/testes/attrib.lua
@@ -28,7 +28,7 @@
   local path = table.concat(t, ";")
   -- use that path in a search
   local s, err = package.searchpath("xuxu", path)
-  -- search fails; check that message has an occurence of
+  -- search fails; check that message has an occurrence of
   -- '??????????' with ? replaced by xuxu and at least 'max' lines
   assert(not s and
          string.find(err, string.rep("xuxu", 10)) and
diff --git a/testes/big.lua b/testes/big.lua
index 150d15d..39e293e 100644
--- a/testes/big.lua
+++ b/testes/big.lua
@@ -66,7 +66,7 @@
 
 local longs = string.rep("\0", ssize)   -- create one long string
 
--- create function to concatentate 'repstrings' copies of its argument
+-- create function to concatenate 'repstrings' copies of its argument
 local rep = assert(load(
   "local a = ...; return " .. string.rep("a", repstrings, "..")))
 
diff --git a/testes/coroutine.lua b/testes/coroutine.lua
index 81d848a..73333c1 100644
--- a/testes/coroutine.lua
+++ b/testes/coroutine.lua
@@ -763,7 +763,7 @@
        {"concat", "concat", "concat"}) == "ab10chello12x")
 
 
-do   -- a few more tests for comparsion operators
+do   -- a few more tests for comparison operators
   local mt1 = {
     __le = function (a,b)
       coroutine.yield(10)
diff --git a/testes/cstack.lua b/testes/cstack.lua
index 486abc1..cd74fd2 100644
--- a/testes/cstack.lua
+++ b/testes/cstack.lua
@@ -4,7 +4,7 @@
 local debug = require "debug"
 
 print"testing C-stack overflow detection"
-print"If this test craches, see its file ('cstack.lua')"
+print"If this test crashes, see its file ('cstack.lua')"
 
 -- Segmentation faults in these tests probably result from a C-stack
 -- overflow. To avoid these errors, you can use the function
@@ -19,10 +19,13 @@
 -- higher than 2_000.
 
 
+-- get and print original limit
 local origlimit = debug.setcstacklimit(400)
 print("default stack limit: " .. origlimit)
 
--- change this value for different limits for this test suite
+-- Do the tests using the original limit. Or else you may want to change
+-- 'currentlimit' to lower values to avoid a seg. fault or to higher
+-- values to check whether they are reliable.
 local currentlimit = origlimit
 debug.setcstacklimit(currentlimit)
 print("current stack limit: " .. currentlimit)
@@ -33,12 +36,14 @@
   assert(not s and string.find(err, msg))
 end
 
+-- auxiliary function to keep 'count' on the screen even if the program
+-- crashes.
 local count
 local back = string.rep("\b", 8)
 local function progress ()
   count = count + 1
   local n = string.format("%-8d", count)
-  io.stderr:write(back, n)
+  io.stderr:write(back, n)   -- erase previous value and write new one
 end
 
 
@@ -46,7 +51,7 @@
   count = 0
   local function foo ()
     progress()
-    foo()
+    foo()   -- do recursive calls until a stack error (or crash)
   end
   checkerror("stack overflow", foo)
   print("\tfinal count: ", count)
@@ -118,9 +123,11 @@
     return n
   end
 
+  -- set limit to 400
   assert(debug.setcstacklimit(400) == currentlimit)
   local lim400 = check()
-  -- a very low limit (given that the several calls to arive here)
+  -- set a very low limit (given that there are already several active
+  -- calls to arrive here)
   local lowlimit = 38
   assert(debug.setcstacklimit(lowlimit) == 400)
   assert(check() < lowlimit - 30)
diff --git a/testes/events.lua b/testes/events.lua
index 7fb54c9..d0abe1d 100644
--- a/testes/events.lua
+++ b/testes/events.lua
@@ -182,7 +182,7 @@
 assert(a << 3 == a); checkcap{"shl", a, 3}
 assert(1.5 >> a == 1.5); checkcap{"shr", 1.5, a}
 
--- for comparsion operators, all results are true
+-- for comparison operators, all results are true
 assert(5.0 > a); checkcap{"lt", a, 5.0}
 assert(a >= 10); checkcap{"le", 10, a}
 assert(a <= -10.0); checkcap{"le", a, -10.0}
diff --git a/testes/gc.lua b/testes/gc.lua
index bb4e349..91915c0 100644
--- a/testes/gc.lua
+++ b/testes/gc.lua
@@ -640,7 +640,7 @@
     assert(getmetatable(o) == tt)
     -- create new objects during GC
     local a = 'xuxu'..(10+3)..'joao', {}
-    ___Glob = o  -- ressurect object!
+    ___Glob = o  -- ressurrect object!
     setmetatable({}, tt)  -- creates a new one with same metatable
     print(">>> closing state " .. "<<<\n")
   end
diff --git a/testes/locals.lua b/testes/locals.lua
index b769575..4f103be 100644
--- a/testes/locals.lua
+++ b/testes/locals.lua
@@ -114,7 +114,7 @@
   local t = T.querytab(a)
 
   for k,_ in pairs(a) do a[k] = undef end
-  collectgarbage()   -- restore GC and collect dead fiels in `a'
+  collectgarbage()   -- restore GC and collect dead fields in 'a'
   for i=0,t-1 do
     local k = querytab(a, i)
     assert(k == nil or type(k) == 'number' or k == 'alo')
diff --git a/testes/math.lua b/testes/math.lua
index c7dc828..7248787 100644
--- a/testes/math.lua
+++ b/testes/math.lua
@@ -758,7 +758,7 @@
   assert(eqT(math.min(maxint, maxint - 1), maxint - 1))
   assert(eqT(math.min(maxint - 2, maxint, maxint - 1), maxint - 2))
 end
--- testing implicit convertions
+-- testing implicit conversions
 
 local a,b = '10', '20'
 assert(a*b == 200 and a+b == 30 and a-b == -10 and a/b == 0.5 and -b == -20)
