이번에는 podcast 맛보기용으로 녹음을 한 번 해봤습니다. -O-; iTunes에 등록하실 때는 RSS URL로 http://openlook.org/blog/rss_itunes_xml 를 등록해 주세용.
아하하. 완전 어색하지만 예쁘게 봐 주세요.
==>> 파이썬 2.5 미리보기 6편: C API 청소 (아마도 처음이자 마지막회 -O-)
파이썬 2.5 미리보기 6편: C API 청소 (녹음 내용의 요약)
파이썬 2.5에서는 C API 청소가 약간 있었습니다. 그동안 문제로 지적되어 왔었던 const가 지정되지 않은 API 인터페이스의 문제들과, 크기를 지정하는 타입으로 int에서 Py_ssize_t로 바뀐 것이 대표적입니다.
const 문제는 PyString_FromString 같은 함수들이 문자열을 char *타입으로 받는데, const char*이 아니기 때문에, 일반적인 문자열 상수를 막 던지려면 경고를 피하려고 캐스팅을 해야하는 문제가 있었습니다. 물론 아예 그냥 상수로 선언을 안 하면 data 영역으로 떠서 메모리에 올라올 때 낭비도 있고요.. 그래서 이번에 const가 쫙 달려서 이제 깔끔하게 쓸 수 있게 되었습니다.
그리고, 그동안 크기를 지정하는 타입으로 int를 사용해 왔었는데, 그 때문에 문자열이나 리스트의 길이가 2^31자/개 까지로 제한되어 왔습니다. 이게 64비트 플랫폼에 가면서 문제가 됐는데, 따라서 플랫폼에 맞는 크기 지정 타입으로 내부적으로 Py_ssize_t를 선언해서 쓰기 시작하였습니다. 덕분에 대부분의 타입들이 64비트의 주소 영역을 충분히 활용하게 되었구요~
그런데, 하나 문제가 생겼습니다. API에서 주소 크기가 문제가 되는 경우, 즉 PyArg_ParseTuple 같이 가변인자를 동적으로 읽어오는 경우에 64비트가 올 자리에 32비트가 오고 그러면 포인터가 막 쭉쭉 밀려서 세그폴트가 나게 됩니다. 이 문제를 해결하기 위해서 그냥 디폴트로는 옛날처럼 int 타입하고 최대한 호환되게 남겨두고, PY_SSIZE_T_CLEAN 이라는 매크로를 Python.h가 포함되기 전에 정의가 되어 있으면 z# 같은 포맷까지도 모두 Py_ssize_t를 사용하도록 하였습니다.
파이썬 C API에서 가장 노가다성이 짙어서 과연 얼마나 심심해야 이런 것 할 시간이 날까 하고 생각하고 있었던 청소가 모두 끝난 것이라 무척 상쾌한 릴리스가 될 것 같습니다. 🙂
아하하, 첫방송(?) 잘 들었습니다.
재밌네요. 뭐랄까 처음 방송하는 라디오 MC같은 부뉘기..ㅎㅎ
담부턴 조용하게 bgm도 깔아보시면 어떨까 싶은…^^
“google광고 듣고 시작하겠습니다.” 이런 멘트도 함 날려보심이…ㅋㅋ
목소린? 색쉬~ 우헤헤^^;
하하, ending signal이 아즈망가…푸하하
아하하하 ^_^* 감사~
오늘은 가벼운 주제로…, 무거운가? 오늘은 가벼운 주제로…, 무거운가?
오 신기하네. 스트링이 복사되다니. 하여간 두번째 중복글은 “이거 듣고 엄청 웃었다”임.
이히… 재밌게 잘 들었어요~ 앞으로도 종종 하세요~
목소리 마음에 들어요~ >_
혜식이형 목소리 디게 오랜만에 듣는데요~? ㅋ
주말에는 듣지 맙시다
중독되요 ㅋㅋ
목소리 넘 친절해요~
우와. 목소리 정말 이쁘세요. 스타에서 홍진호씨랑 비슷하네요..ㅋ