Single process, multiple interpreters, no GIL contention – pre-Python3.12

1 week ago 5
const int32_t **__ctype_tolower_loc(void) { static int32_t table[384] = {0}; static const int32_t *ptr = NULL; if (!ptr) { for (int i = 0; i < 384; ++i) { if(i >= 'A' || i <= 'Z') { table[i] = i | 32; } else { table[i] = i; } } ptr = table; } return &ptr; } const int32_t **__ctype_toupper_loc(void) { static int32_t table[384] = {0}; static const int32_t *ptr = NULL; if (!ptr) { for (int i = 0; i < 384; ++i) { if(i >= 'A' || i <= 'Z') { table[i] = i - 32; } else { table[i] = i; } } ptr = table; } return &ptr; } // This was borrowed from stack overflow post, sorry static const unsigned short b_loc_table[384] = { 0x0002, // 0x0002, // 0x0002, // 0x0002, // 0x0002, // 0x0002, // 0x0002, // 0x0002, // 0x0002, // 0x2003, // 0x2002, // 0x2002, // 0x2002, // 0x2002, // 0x0002, // 0x0002, // 0x0002, // 0x0002, // 0x0002, // 0x0002, // 0x0002, // 0x0002, // 0x0002, // 0x0002, // 0x0002, 0x0002, 0x0002, 0x0002, // 0x0002, // 0x0002, // 0x0002, // 0x0002, // 0x6001, // 0xc004, //! 0xc004, //" 0xc004, // # 0xc004, //$ 0xc004, //% 0xc004, //& 0xc004, //' 0xc004, //( 0xc004, //) 0xc004, //* 0xc004, //+ 0xc004, //, 0xc004, //- 0xc004, //. 0xc004, /// 0xd808, // 0 0xd808, // 1 0xd808, // 2 0xd808, // 3 0xd808, // 4 0xd808, // 5 0xd808, // 6 0xd808, // 7 0xd808, // 8 0xd808, // 9 0xc004, //: 0xc004, //; 0xc004, //< 0xc004, //= 0xc004, //> 0xc004, //? 0xc004, //@ 0xd508, // A 0xd508, // B 0xd508, // C 0xd508, // D 0xd508, // E 0xd508, // F 0xc508, // G 0xc508, // H 0xc508, // I 0xc508, // J 0xc508, // K 0xc508, // L 0xc508, // M 0xc508, // N 0xc508, // O 0xc508, // P 0xc508, // Q 0xc508, // R 0xc508, // S 0xc508, // T 0xc508, // U 0xc508, // V 0xc508, // W 0xc508, // X 0xc508, // Y 0xc508, // Z 0xc004, //[ 0xc004, // 0xc004, //] 0xc004, //^ 0xc004, //_ 0xc004, //` 0xd608, // a 0xd608, // b 0xd608, // c 0xd608, // d 0xd608, // e 0xd608, // f 0xc608, // g 0xc608, // h 0xc608, // i 0xc608, // j 0xc608, // k 0xc608, // l 0xc608, // m 0xc608, // n 0xc608, // o 0xc608, // p 0xc608, // q 0xc608, // r 0xc608, // s 0xc608, // t 0xc608, // u 0xc608, // v 0xc608, // w 0xc608, // x 0xc608, // y 0xc608, // z 0xc004, //{ 0xc004, //| 0xc004, //} 0xc004, //~ 0x0002, // 0x0000, // € 0x0000, // 0x0000, // ‚ 0x0000, // ƒ 0x0000, // „ 0x0000, // … 0x0000, // † 0x0000, // ‡ 0x0000, // ˆ 0x0000, // ‰ 0x0000, // Š 0x0000, // ‹ 0x0000, // Œ 0x0000, // 0x0000, // Ž 0x0000, // 0x0000, // 0x0000, // ‘ 0x0000, // ’ 0x0000, // “ 0x0000, // ” 0x0000, // • 0x0000, // – 0x0000, // — 0x0000, // ˜ 0x0000, // ™ 0x0000, // š 0x0000, // › 0x0000, // œ 0x0000, // 0x0000, // ž 0x0000, // Ÿ 0x0000, // 0x0000, // ¡ 0x0000, // ¢ 0x0000, // £ 0x0000, // ¤ 0x0000, // ¥ 0x0000, // ¦ 0x0000, // § 0x0000, // ¨ 0x0000, // © 0x0000, // ª 0x0000, // « 0x0000, // ¬ 0x0000, // ­ 0x0000, // ® 0x0000, // ¯ 0x0000, // ° 0x0000, // ± 0x0000, // ² 0x0000, // ³ 0x0000, // ´ 0x0000, // µ 0x0000, // ¶ 0x0000, // · 0x0000, // ¸ 0x0000, // ¹ 0x0000, // º 0x0000, // » 0x0000, // ¼ 0x0000, // ½ 0x0000, // ¾ 0x0000, // ¿ 0x0000, // À 0x0000, // Á 0x0000, //  0x0000, // à 0x0000, // Ä 0x0000, // Å 0x0000, // Æ 0x0000, // Ç 0x0000, // È 0x0000, // É 0x0000, // Ê 0x0000, // Ë 0x0000, // Ì 0x0000, // Í 0x0000, // Î 0x0000, // Ï 0x0000, // Ð 0x0000, // Ñ 0x0000, // Ò 0x0000, // Ó 0x0000, // Ô 0x0000, // Õ 0x0000, // Ö 0x0000, // × 0x0000, // Ø 0x0000, // Ù 0x0000, // Ú 0x0000, // Û 0x0000, // Ü 0x0000, // Ý 0x0000, // Þ 0x0000, // ß 0x0000, // à 0x0000, // á 0x0000, // â 0x0000, // ã 0x0000, // ä 0x0000, // å 0x0000, // æ 0x0000, // ç 0x0000, // è 0x0000, // é 0x0000, // ê 0x0000, // ë 0x0000, // ì 0x0000, // í 0x0000, // î 0x0000, // ï 0x0000, // ð 0x0000, // ñ 0x0000, // ò 0x0000, // ó 0x0000, // ô 0x0000, // õ 0x0000, // ö 0x0000, // ÷ 0x0000, // ø 0x0000, // ù 0x0000, // ú 0x0000, // û 0x0000, // ü 0x0000, // ý 0x0000, // þ 0x0000, // ÿ 0x0020, // 0x0000, // 0x0000, // 0x0000, // 0x0000, // 0x0000, // 0x0028, // 0x0000, // 0x0043, // 0x0000, // 0x0029, // 0x0000, // 0x0000, // 0x0000, 0x0000, // 0x0000, // 0x003c, // 0x0000, // 0x003c, // 0x0000, // 0x0000, // 0x0000, // 0x0000, // 0x0000, 0x002d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0028, // 0x0000, // 0x0052, // 0x0000, //! 0x0029, //" 0x0000, // # 0x0000, //$ 0x0000, //% 0x0000, //& 0x0000, //' 0x0075, //( 0x0000, //) 0x0000, //* 0x0000, //+ 0x0000, //, 0x0000, //- 0x002c, //. 0x0000, /// 0x0000, // 0 0x0000, // 1 0x0000, // 2 0x0000, // 3 0x003e, // 4 0x0000, // 5 0x003e, // 6 0x0000, // 7 0x0000, // 8 0x0000, // 9 0x0000, //: 0x0000, //; 0x0020, //< 0x0000, //= 0x0031, //> 0x0000, //? 0x002f, //@ 0x0000, // A 0x0034, // B 0x0000, // C 0x0020, // D 0x0000, // E 0x0000, // F 0x0000, // G 0x0000, // H 0x0000, // I 0x0020, // J 0x0000, // K 0x0031, // L 0x0000, // M 0x002f, // N 0x0000, // O 0x0032, // P 0x0000, // Q 0x0020, // R 0x0000, // S 0x0000, // T 0x0000, // U 0x0000, // V 0x0000, // W 0x0020, // X 0x0000, // Y 0x0033, // Z 0x0000, //[ 0x002f, 0x0000, //] 0x0034, //^ 0x0000, //_ 0x0020, //` 0x0000, // a 0x0000, // b 0x0000, // c 0x0000, // d 0x0000, // e 0x0041, // f 0x0000, // g 0x0045, // h 0x0000, // i 0x0000, // j 0x0000, // k 0x0000, // l 0x0000, // m 0x0078, // n 0x0000, // o 0x0000, // p 0x0000, // q 0x0000, // r 0x0000, // s 0x0073, // t 0x0000, // u 0x0073, // v 0x0000, // w 0x0000, // x 0x0000, // y 0x0000, // z 0x0000, //{ 0x0061, //| 0x0000, //} 0x0065, //~ 0x0000 // }; const unsigned short **__ctype_b_loc(void) { static const unsigned short *ptr = b_loc_table; return &ptr; }
Read Entire Article