Upgrade to Pro — share decks privately, control downloads, hide ads and more …

C拡張と共に乗り切るPython 2→3移行術

Takumi Sueda
September 18, 2018

C拡張と共に乗り切るPython 2→3移行術

PyCon JP 2018 Conference Day 2 15:45~

Takumi Sueda

September 18, 2018
Tweet

More Decks by Takumi Sueda

Other Decks in Technology

Transcript

  1. 荈䊹稱➜ 2 • 爡ⰻדכ-JOVYװ'1("הְ׏׋⡚ٖ؎َ٦׾䬐䔲 • չת׌1ZUIPO⢪׏ג׷׿דַׅպה鎉ֲ⤘ • 1ZUIPO娖䎃 1ZUIPOדⰅꟌ •

    䪮遭鐰锷爡8&# %#13&447PMחג1ZUIPO暴꧊㛁瘗 1ZUIPOד״ֻ剅ֻֿה٥䖤䠐זذ٦و • ⤑ⵃ麣Ⱗ⡲׶ • 鎉铂堣腉׾崞欽׃׋1ZUIPOٌآُ٦ٕ⡲׶ • ًةفؚٗٓىؚٝ @puhitaku 劣歊⼾䊻ִׅ׌׋ֻ׫ (3007&9吳䒭⠓爡䨽㾩
  2. 1ZUIPO儗➿ך穄提 ְא穄׻׷ ˖ 䎃剢傈 ˖ デ濼䔲ⴱכ傈➰ָ寸ת׏גְזַ׏׋ָծ➙䎃剢ח然㹀 ˖ https://github.com/python/devguide/pull/344 ׍ז׫ח˘ ˖

    1ZUIPOPSHה׃גך؟ه٦زכ穄׻׏ג׮ծ04ر؍أزٔؽُ٦ ءّٝח״׏גכ䲿⣘ׁ׸竲ֽ׷׮ך׮ ˖ ⢽6CVOUV-54䎃剢 ‣ ؟ه٦ز㼎韋ךANBJOAٔهآزٔחָ֮׷ ˖ ⢽3)&-䎃剢 ‣ 植遤ךדEFQSFDBUF ד嶊ִ׷ 6
  3. (3007&9爡ⰻדכ˘ Ⱏ剣ًٌٌٔآُ٦ٕ TIN הכ 13 ӹ إٝ؟װو؎؝ٝהװ׶ה׶ׅ׷⦼׾呓秛׃׋Ⱏ剣ًٌٔח،ؙإأׅ׷ ٌآُ٦ٕ ӹ نزٕطحؙחז׷ה䚍腉ח湫䷼ׅ׷ךד㢳㼰؝٦سָꨇ׃ֻז׏גד׮

    鸞ֻ׃׋ְծ瘝ך椚歋ח״׶$"1* ぐ鎉铂ぢֽغ؎ٝر؍ؚٝ׾䱰欽 ӹ ٗنحزךⵖ䖴ח♶〳妀זךד㢳ֻך،فָٔ⣛㶷 3". TINٌآُ٦ٕ 104*9Ⱏ剣ًٌٔ 1ZUIPO ،فٔ TZOD
 EBFNPO TINٌآُ٦ٕ 1ZUIPO ،فٔ 1): 
 41* *$  و؎؝ٝ
  4. (3007&9爡ⰻדכ˘ TINٌآُ٦ٕך⚥魦 ˖ TIN⡲䧭װ䱖➭ⵖ䖴 QUISFBENVUFY ׾$ד㹋鄲׃׋$"1* ˖ $"1*פך،ؙإأ׾䲿⣘ׅ׷$ ٥(P٥1ZUIPOغ؎ٝر؍ؚٝ $BMMTUBDL

    ⢽PQFO 14 1ZUIPO 1ZUIPOغ؎ٝر؍ؚٝ$䭁䓸ٌآُ٦ٕ liblovot_shm_py.so $"1* lovot_shm_py_open(PyObject* self, PyObject* args) lovot_shm_open(char* path) uint64_t PyObject*
  5. ✼䳔⻉׃״ֲ 58 ൜ਓ͸ Py_BuildValue鵤׶⦼ךةفٕ׾⡲׷ꟼ侧 • "s#"٥٥٥char*ךꞿׁ׾䭷㹀׃ג1ZUIPOךstrח׃ג鵤ׅ • bin٥٥٥(unsigned char*) 0xfeedcafe

    • sizeof(bin)٥٥٥binךꞿׁɺͭ·Γ 4 1ZUIPOדךTUSכײ׷ס׻غ؎ز⴨ 1ZUIPOדךTUSכ6OJDPEF俑㶵⴨ Y'&ך儗挿ד6OJDPEFה׃ג鍑ꅸדֹזְ׋׭ؒٓ٦חז׷