루아 관련 문서들을 읽고 있다. 아직 정리가 되려면 멀었고 메모 수준이다.

일단 메모한 내용을 올려두면서 하기로.


1. refman-1.1.ps(1994-05-27)

[1] Executing Lua Code `dofile( char* filename);` `dostring( char* string);` [2] Converting Values between C and Lua (`lua_Object`, 동적 타입 언어이므로 루아 변수? 가 매칭되는 자료형인듯? lua_State 인 줄 알았는데 별개로 보임.) [3] Manipulating Lua Objects(Lua State) [4] Calling Lua Functions 1) push parameters onto lua stack. 2) call `lua_call` 3) pop result. [5] C Functions [6] Error Handling 1) error occurs during Compilation or Execution 2) error routine is called 3) corresponding `lua_dofile` or `lua_dostring` is terminated returning an error condition 4)
2. refman-2.1.ps(1995-02-08) function 이 first-class value 로 취급한다는 내용이 처음으로 나옴. 기존의`lua_dofile`, `lua_dostring` 에 다음 함수들이 추가. 이 목록의 함수들에서 에러가 일어남. `lua_call`, `lua_callfunction` lua.api 에 lockign Lua Objects 에 관련된 api들도 추가되고 별도 섹션으로 설명함. lua_Object 는 volatile 함. 즉 lua script block 을 떠나면 수거대상임. 이런걸 막으려먼 lock 함수를 걸어서 리퍼런스를 받은다음 사용하고 unlock 하게 할 수 있다. `lua_lock` `lua_getlocked` `lua_pushlocekd` `lua_unlock` Lo cking Lua Ob jects As already noted lua Objects are volatile If the C co de needs to keep a lua Object outside block boundaries it has to lock the ob ject The routines to manipulate locking are the following The reference to it Whenever the locked ob ject is needed handle to it while lua pushlocked pushes the handle on the stack When a locked ob ject is no longer needed it can b e unlo cked with a call to lua unlock
3. refman-2.2.ps(1995-11-28) refman-2.1 과 크게 달라진 점은 없는듯.
4. refman-2.4.ps(1996-05-14) 클래스 개념을 사용하는 루아 객체지향 프로그래밍에 대한 내용이 처음으로 나옴. 모듈에 대한 내용도 처음으로 나오는 듯? `modulename = {}` lock 에 대한 내용이 reference 로 바뀐듯. (5.6 절 내용이 달라짐..) lock 을 걸었다면 지금은 create reference 하고 lock flag 도 1로 만든다고 하는데.. 차이점은 잘 모르겠다. (단순 용어 변경인지 구조가 변경된건지? 소스를 봐야 알듯.) 라는 새로운 절. 루아 인터프리터의 스택 정보와 호출한 함수의 정보를 알려주게 되었다는 듯.. 미리 컴파일되어있다면, local variable 들 까지 get/set 할 수 있다. `lua_getlocal`, `lua_setlocal`
5. refman-2.5.ps(1996.11.28) 절 추가. (인터프리터 실행기? lua 바이너리 그 자체)
6. refman-3.1.ps(1998.07.21) 새로 나온 단어들. Closures. upvalues. multiple context handling. 문서를 보면 이 때 루아에서 upvalue 를 get 해올때는, '%변수이름' 식으로 접근했던 것 같음. 지금은 아니지만.. 에 대한 설명 - 지금의 metamethod 의 초기 모델인 것 같다. 5절의 The Application Program Interface 에 managing states; 가 추가되었다. lua_State : Lua interpreter 의 모든 상태값이 담겨있다. (global variables, stack, tag methods..) Garbage Collection 에 관한 자세한 설명이 처음 추가되는 것 같은데..
7. refman-3.2.ps(1999.07.02) 디버거 인터페이스 관련 설명이 절로 변경되고.. 따로 라이브러리를 떼낸듯. 실행하는 함수 정보를 찍는데 좀더 자세히 찍을 수 있게 변경된듯(?)
8. refman-4.0.pdf(2000.11.07) 새로운 내용은 아니지만.. : The tag method called for any sp eci c event is selected according to the tag of the values involved in the event. 메타메소드의 원형. <5.1 States> : reentrant 하게, 전역변수를 사용하지 않게 코드가 수정됨. <5.2 The Stack and Indecies> 절이 추가된듯. (Stack 과 연관된 내용을 묶어 넣은듯)