최상단 광고

2012년 4월 11일 수요일

Lua 언어에 대해서...



1
 소개
2 루아가 뭐지?
3 lua 소식
4 링크
5 바인딩
6 주요 확장 라이브러리
6.1 쓸만하지만 수정해서 사용할만한 것들
6.2 아주 국한적인 용도
7 IDE
8 역컴파일러
9 관련 프로젝트
10 메뉴얼
11 주요 아티클들
12 번역 및 팁
13 기타
14 patch

1 소개 #

  • "스크립트"를 임베딩하는 게임시스템 제작은 상당히 구조적이고 재활용적인 코딩을 하게 만든다는 점에서 매력이 있는 것 같습니다. (불타오르고 있는~ 활활~ 간단히 말해 재미있습니다! o^.^o

2 루아가 뭐지? #

  • lua/소개논문 - DDJ에 96년도에 실렸던 루아에 대한 소개글 번역입니다.
  • Lua vs Python - 루아와 요즘 상당히 각광받는 파이선과의 성능비교입니다. 혹시나 파이선 좋아하시는 분들은 그런가보군하고 읽어주시길...

3 lua 소식 #

  • [http]http://www.lua.org/ftp/lua-5.0.2.tar.gz - 현재 정식 버전인 lua 5.0.2. 5.0에서의 몇몇 치명적인 버그를 패치한 버전입니다.
  • lua 5.1 work6이 릴리스되었습니다. [http]http://www.lua.org/work/lua-5.1-work6.tar.gz에서 받을 수 있습니다.
    • work6에서의 두드러진 달라진 점
      • lualib.a가 lua.a로 병합되었습니다
      • "loadlib"함수가 package의 맴버로 들어갔습니다
      • 모든 타입에서 메타테이블이 가능합니다 단, 여전히 __gc는 일반 userdata에서만 가능(lightuserdata 지원 X)
      • 나머지 연산자 ('%') 추가 -> __mod 메타메소드에 대응
      • 새로운 연산자 *t 추가(테이블 t의 크기) --> __siz 메타메소드에 대응
    • 기존 5.0.2와의 차이
      1. lua_gc() API : 아직 문서화는 되어있지 않지만 아마도 가장 큰 차이일듯. GC처리량을 세부적으로 지정할 수 있도록 한 것 같습니다.
      2. 정수형 타입이 생겼네요. integer라는 별도의 타입으로 관리됩니다.
      3. 메모리 할당 함수를 별도의 함수포인터로 뽑아놓았네요. 메모리 풀링과 같이 별도의 malloc()을 만들어 처리해야할 경우 유용할 듯.
      4. luaconf.h라는 별도 설정용 헤더화일이 있습니다.
      5. luaL_setfield() / luaL_getfield() 가 생겼습니다. 테이블에서 문자열 인덱스로 지정된 값을 . 연산자를 사용해서 바로 접근할수 있도록 한 기능을 API에도 마련을 했네요. 
  • [http]http://www.lua.org/pil/ - programming in lua. 루아 관련 최초의 책이죠. 온라인으로 공개했네요.
  • [http]http://www.lua.org/ftp/refman-5.0.pdf - 레퍼런스 메뉴얼
  • [http]http://sourceforge.net/project/showfiles.php?group_id=32250 - short 레퍼런스 (루아5)
  • lua 5.0 beta의 비호환성요소들 - 메일링리스트에서 퍼왔습니다.
  • Lua/5.0.2/Note - 5.0.2버전에서의 경험담.
  • [http]lua 5 내부구조 - lua의 동작원리를 설명한 논문

4 링크 #

5 바인딩 #

  • [http]http://lua-users.org/wiki/CppBindingWithLunar - C++ 인스턴스를 바인딩하는데는 가장 간편한 방법일 듯 합니다. 버전 5.0 이상.
  • Luabind - C++ 코드를 루아로 올려주는 템플릿 라이브러리. boost.python에 영향을 받은 듯. 루아 5 전용.
  • [http]LuaPlus - C++ 바인딩 라이브러리. 표준 루아 소스를 다소 변형시켜 구현하고 있다는 것이 흠. (즉, 루아자체가 리뉴얼되면 호환성 미지수. 업글이 한박자 늦을듯.)
  • [http]http://www.tecgraf.puc-rio.br/~celes/tolua/ - C++ 바인딩 툴. 별도의 전처리과정 필요. 루아 5 지원.
  • CaLua 이야기 - C <-> 루아 바인딩 라이브러리. 꽤 사용하기 편함. LGPL 라이센스. 루아 5 전용.
  • [http]http://www.fscnation.com/users/glo/CPB/ - 괜찮은 아이디어의 C->lua바인딩 라이브러리. vc.net 전용인 것이 흠. 

6 주요 확장 라이브러리 #

6.1 쓸만하지만 수정해서 사용할만한 것들 #

6.2 아주 국한적인 용도 #

7 IDE #

  • 개인적으로는 scite가 가장 유용합니다. :)
  • [http]http://blua.sourceforge.net/ - WOW 에디팅용으로 개발된 듯한 lua IDE. 아직 화일은 정식릴리스되지 않음. java로 개발. 

8 역컴파일러 #

완벽한 역컴파일은 하지 못한다. 소스를 잃었을 경우 사용하면 좋을듯.

9 관련 프로젝트 #

  • [http]mod_lua - php와 같이 lua를 사용할 수 있도록 해주는 아파치 모듈. 

10 메뉴얼 #

  • LUA 5.0 C API 메뉴얼 번역 - Lua 5.0에서는 이전 버젼과 많이 바뀌었더군요. (덕분에 프로젝트 중에 코드를 엎고 있답니다. :( ) 그래서 번역을 해보고 있습니다. 정식이 아니라 5.0 알파버젼을 기준으로 한 것임을 밝힙니다.
  • LUA 5.0 auxlib 문서 - lua-users.org의 위키에서 퍼왔습니다. 표준 메뉴얼에는 설명이 생략되었지만 꽤 자주쓰이는 함수들이죠.
  • LUA/메타테이블이야기 - Lua 5.0에서의 메타테이블에 대한 번역입니다. 프로그래밍 레퍼런스에서 추출해 정리했습니다.
  • LUA/coroutine - 5.0beta 이후부터 사용가능한 coroutine에 대한 내용.
  • C에서 Lua호출하기 - 파연님의 강요(?)로 작성해보았습니다.
  • LUA/string라이브러리 - 문자열 관련 라이브러리 테이블인 string에 대한 부분만 정리, 번역했습니다.
  • LUA/화일입출력 - 화일 입출력에 대해 간단히 정리.
  • LUA 튜토리얼 - 자작 튜토리얼입니다. 

11 주요 아티클들 #

12 번역 및 팁 #

13 기타 #

14 patch #

  • 루아자체가 오픈소스라 일부기능을 고치면 꽤 쓸만한 부분이 있더군요. lua-user 위키에서 배껴와 정리합니다.
  • [http]http://lua-users.org/wiki/ResumableVmPatch - 기존 coroutine에 이식성을 희생하지 않고 몇가지 기능을 덧붙인 것. 표준에 포함되면 좋겠다. :) 5.1 work5 버전 전용.
  • LUA/patch/rubylikeself - ruby 스크립트의 @ 연산자 활용을 lua에 적용한 패치
  • [http]http://lua-users.org/wiki/ImprovedCoroutinesPatch - (5.0.2) coroutine의 효율을 높인 패치. 완전히 새로운 API 제시.