cosmopolitan/third_party/python/Modules/cjkcodecs
Gautham 7fe9e70117
Backporting METH_FASTCALL from Python 3.7 (#317)
* dict copy speedup

refer to bpo-31179 or python/cpython@boa7a037b8fde

* __build_class__() uses METH_FASTCALL

refer python/cpython@69de71b255
refer python/cpython@773dc6dd06

a single test related to __prepare__ fails.

* type_prepare uses METH_FASTCALL

refer python/cpython@d526cfe546
refer python/cpython@80ab22fa2c

the prepare-related test still fails.  It's just related to the error
message format though.

* separate into ParseStack and ParseStackAndKeywords

refer python/cpython@6518a93cb1
refer python/cpython@3e1fad6913
refer python/cpython@c0083fc47d

* Add _PyArg_NoStackKeywords

refer python/cpython@29d39cc8f5

* _PyStack_UnpackDict now returns int

refer python/cpython@998c20962c

* METH_FASTCALL changes to .inc files

done via python's Argument Clinic tool,
refer python/cpython@259f0e4437

* Added _PyArg_UnpackStack

refer python/cpython@fe54dda08

* Argument Clinic FASTCALL again

refer python/cpython@0c4a828ca

* Argument Clinic for ordered dictionary object

refer python/cpython@b05cbac052

* speed up getargs

refer python/cpython@1741441649

* FASTCALL for sorted, next, and getattr

refer python/cpython@5a60ecaa7a
refer python/cpython@fda6d0acf0
refer python/cpython@84b388bb80

* Optimize methoddescr_call

refer python/cpython@2a1b676d1f
refer python/cpython@c52572319c
refer python/cpython@35ecebe165
refer python/cpython@8128d5a491

* cleanup _PyMethodDef_RawFastCallDict

refer python/cpython@0a2e46835d
refer python/cpython@98ccba8344
refer python/cpython@c89ef828cf
refer python/cpython@250e4b0063

* print now uses METH_FASTCALL

refer python/cpython@c3858bd7c6
refer python/cpython@bd584f169f
refer python/cpython@06d34393c2

* _struct module now uses Argument Clinic

refer python/cpython@3f2d10132d

* make deque methods faster

refer python/cpython@dd407d5006

* recursive calls in PyObject_Call

refer python/cpython@7399a05965

only partially ported, because RawFastCallKeywords hasn't been ported

* add macros

refer python/cpython@68a001dd59

* all tests pass in MODE=dbg

* convert some internal functions to FASTCALL

__import__ might need to be changed later, if it is possible to backport
the METH_FASTCALL | METH_KEYWORDS flag distinction later.

* speed up unpickling

refer python/cpython@bee09aecc2

* added _PyMethodDef_RawFastCallKeywords

refer python/cpython@7399a05965

* PyCFunction_Call performance

refer python/cpython@12c5838dae

* avoid PyMethodObject in slots

main change in python/cpython@516b98161a
test_exceptions changed in python/cpython@331bbe6aaa
type_settattro changed in python/cpython@193f7e094f
_PyObject_CallFunctionVa changed in python/cpython@fe4ff83049

* fix refcount error found in MODE=dbg

all tests now pass in MODE=dbg
2021-11-12 15:26:57 -08:00
..
clinic Backporting METH_FASTCALL from Python 3.7 (#317) 2021-11-12 15:26:57 -08:00
__big5_decmap.c Productionize new APE loader and more 2021-10-02 08:27:03 -07:00
__big5_encmap.c Productionize new APE loader and more 2021-10-02 08:27:03 -07:00
__big5hkscs_bmp_encmap.c Productionize new APE loader and more 2021-10-02 08:27:03 -07:00
__big5hkscs_decmap.c Productionize new APE loader and more 2021-10-02 08:27:03 -07:00
__big5hkscs_nonbmp_encmap.c Productionize new APE loader and more 2021-10-02 08:27:03 -07:00
__cp932ext_decmap.c Productionize new APE loader and more 2021-10-02 08:27:03 -07:00
__cp932ext_encmap.c Productionize new APE loader and more 2021-10-02 08:27:03 -07:00
__cp949_encmap.c Productionize new APE loader and more 2021-10-02 08:27:03 -07:00
__cp949ext_decmap.c Productionize new APE loader and more 2021-10-02 08:27:03 -07:00
__cp950ext_decmap.c Productionize new APE loader and more 2021-10-02 08:27:03 -07:00
__cp950ext_encmap.c Productionize new APE loader and more 2021-10-02 08:27:03 -07:00
__gb2312_decmap.c Productionize new APE loader and more 2021-10-02 08:27:03 -07:00
__gb18030ext_decmap.c Productionize new APE loader and more 2021-10-02 08:27:03 -07:00
__gb18030ext_encmap.c Productionize new APE loader and more 2021-10-02 08:27:03 -07:00
__gbcommon_encmap.c Productionize new APE loader and more 2021-10-02 08:27:03 -07:00
__gbkext_decmap.c Productionize new APE loader and more 2021-10-02 08:27:03 -07:00
__jisx0208_decmap.c Productionize new APE loader and more 2021-10-02 08:27:03 -07:00
__jisx0212_decmap.c Productionize new APE loader and more 2021-10-02 08:27:03 -07:00
__jisx0213_1_bmp_decmap.c Productionize new APE loader and more 2021-10-02 08:27:03 -07:00
__jisx0213_1_emp_decmap.c Productionize new APE loader and more 2021-10-02 08:27:03 -07:00
__jisx0213_2_bmp_decmap.c Productionize new APE loader and more 2021-10-02 08:27:03 -07:00
__jisx0213_2_emp_decmap.c Productionize new APE loader and more 2021-10-02 08:27:03 -07:00
__jisx0213_bmp_encmap.c Productionize new APE loader and more 2021-10-02 08:27:03 -07:00
__jisx0213_emp_encmap.c Productionize new APE loader and more 2021-10-02 08:27:03 -07:00
__jisx0213_pair_decmap.c Productionize new APE loader and more 2021-10-02 08:27:03 -07:00
__jisxcommon_encmap.c Productionize new APE loader and more 2021-10-02 08:27:03 -07:00
__ksx1001_decmap.c Productionize new APE loader and more 2021-10-02 08:27:03 -07:00
_codecs_cn.c Productionize new APE loader and more 2021-10-02 08:27:03 -07:00
_codecs_hk.c Productionize new APE loader and more 2021-10-02 08:27:03 -07:00
_codecs_iso2022.c Productionize new APE loader and more 2021-10-02 08:27:03 -07:00
_codecs_jp.c Productionize new APE loader and more 2021-10-02 08:27:03 -07:00
_codecs_kr.c Productionize new APE loader and more 2021-10-02 08:27:03 -07:00
_codecs_tw.c Productionize new APE loader and more 2021-10-02 08:27:03 -07:00
alg_jisx0201.inc Perform build and magnum tuning 2021-08-10 10:26:13 -07:00
big5_decmap.c Productionize new APE loader and more 2021-10-02 08:27:03 -07:00
big5_encmap.c Productionize new APE loader and more 2021-10-02 08:27:03 -07:00
big5hkscs_bmp_encmap.c Productionize new APE loader and more 2021-10-02 08:27:03 -07:00
big5hkscs_decmap.c Productionize new APE loader and more 2021-10-02 08:27:03 -07:00
big5hkscs_nonbmp_encmap.c Productionize new APE loader and more 2021-10-02 08:27:03 -07:00
cjkcodecs.h Productionize new APE loader and more 2021-10-02 08:27:03 -07:00
cp932ext_decmap.c Productionize new APE loader and more 2021-10-02 08:27:03 -07:00
cp932ext_encmap.c Productionize new APE loader and more 2021-10-02 08:27:03 -07:00
cp949_encmap.c Productionize new APE loader and more 2021-10-02 08:27:03 -07:00
cp949ext_decmap.c Productionize new APE loader and more 2021-10-02 08:27:03 -07:00
cp950ext_decmap.c Productionize new APE loader and more 2021-10-02 08:27:03 -07:00
cp950ext_encmap.c Productionize new APE loader and more 2021-10-02 08:27:03 -07:00
emu_jisx0213_2000.inc Perform build and magnum tuning 2021-08-10 10:26:13 -07:00
gb2312_decmap.c Productionize new APE loader and more 2021-10-02 08:27:03 -07:00
gb18030ext_decmap.c Productionize new APE loader and more 2021-10-02 08:27:03 -07:00
gb18030ext_encmap.c Productionize new APE loader and more 2021-10-02 08:27:03 -07:00
gbcommon_encmap.c Productionize new APE loader and more 2021-10-02 08:27:03 -07:00
gbkext_decmap.c Productionize new APE loader and more 2021-10-02 08:27:03 -07:00
jisx0208_decmap.c Productionize new APE loader and more 2021-10-02 08:27:03 -07:00
jisx0212_decmap.c Productionize new APE loader and more 2021-10-02 08:27:03 -07:00
jisx0213_1_bmp_decmap.c Productionize new APE loader and more 2021-10-02 08:27:03 -07:00
jisx0213_1_emp_decmap.c Productionize new APE loader and more 2021-10-02 08:27:03 -07:00
jisx0213_2_bmp_decmap.c Productionize new APE loader and more 2021-10-02 08:27:03 -07:00
jisx0213_2_emp_decmap.c Productionize new APE loader and more 2021-10-02 08:27:03 -07:00
jisx0213_bmp_encmap.c Productionize new APE loader and more 2021-10-02 08:27:03 -07:00
jisx0213_emp_encmap.c Productionize new APE loader and more 2021-10-02 08:27:03 -07:00
jisx0213_pair_decmap.c Productionize new APE loader and more 2021-10-02 08:27:03 -07:00
jisx0213_pair_encmap.c Productionize new APE loader and more 2021-10-02 08:27:03 -07:00
jisxcommon_encmap.c Productionize new APE loader and more 2021-10-02 08:27:03 -07:00
ksx1001_decmap.c Productionize new APE loader and more 2021-10-02 08:27:03 -07:00
multibytecodec.c Productionize new APE loader and more 2021-10-02 08:27:03 -07:00
multibytecodec.h Undiamond Python headers 2021-08-12 14:07:40 -07:00
README python-3.6.zip added from Github 2021-08-09 05:39:42 -07:00
somanyencodings.h Productionize new APE loader and more 2021-10-02 08:27:03 -07:00

To generate or modify mapping headers
-------------------------------------
Mapping headers are imported from CJKCodecs as pre-generated form.
If you need to tweak or add something on it, please look at tools/
subdirectory of CJKCodecs' distribution.



Notes on implmentation characteristics of each codecs
-----------------------------------------------------

1) Big5 codec

  The big5 codec maps the following characters as cp950 does rather
  than conforming Unicode.org's that maps to 0xFFFD.

    BIG5        Unicode     Description

    0xA15A      0x2574      SPACING UNDERSCORE
    0xA1C3      0xFFE3      SPACING HEAVY OVERSCORE
    0xA1C5      0x02CD      SPACING HEAVY UNDERSCORE
    0xA1FE      0xFF0F      LT DIAG UP RIGHT TO LOW LEFT
    0xA240      0xFF3C      LT DIAG UP LEFT TO LOW RIGHT
    0xA2CC      0x5341      HANGZHOU NUMERAL TEN
    0xA2CE      0x5345      HANGZHOU NUMERAL THIRTY

  Because unicode 0x5341, 0x5345, 0xFF0F, 0xFF3C is mapped to another
  big5 codes already, a roundtrip compatibility is not guaranteed for
  them.


2) cp932 codec

  To conform to Windows's real mapping, cp932 codec maps the following
  codepoints in addition of the official cp932 mapping.

    CP932     Unicode     Description

    0x80      0x80        UNDEFINED
    0xA0      0xF8F0      UNDEFINED
    0xFD      0xF8F1      UNDEFINED
    0xFE      0xF8F2      UNDEFINED
    0xFF      0xF8F3      UNDEFINED


3) euc-jisx0213 codec

  The euc-jisx0213 codec maps JIS X 0213 Plane 1 code 0x2140 into
  unicode U+FF3C instead of U+005C as on unicode.org's mapping.
  Because euc-jisx0213 has REVERSE SOLIDUS on 0x5c already and A140
  is shown as a full width character, mapping to U+FF3C can make
  more sense.

  The euc-jisx0213 codec is enabled to decode JIS X 0212 codes on
  codeset 2. Because JIS X 0212 and JIS X 0213 Plane 2 don't have
  overlapped by each other, it doesn't bother standard conformations
  (and JIS X 0213 Plane 2 is intended to use so.) On encoding
  sessions, the codec will try to encode kanji characters in this
  order:

    JIS X 0213 Plane 1 -> JIS X 0213 Plane 2 -> JIS X 0212


4) euc-jp codec

  The euc-jp codec is a compatibility instance on these points:
   - U+FF3C FULLWIDTH REVERSE SOLIDUS is mapped to EUC-JP A1C0 (vice versa)
   - U+00A5 YEN SIGN is mapped to EUC-JP 0x5c. (one way)
   - U+203E OVERLINE is mapped to EUC-JP 0x7e. (one way)


5) shift-jis codec

  The shift-jis codec is mapping 0x20-0x7e area to U+20-U+7E directly
  instead of using JIS X 0201 for compatibility. The differences are:
   - U+005C REVERSE SOLIDUS is mapped to SHIFT-JIS 0x5c.
   - U+007E TILDE is mapped to SHIFT-JIS 0x7e.
   - U+FF3C FULL-WIDTH REVERSE SOLIDUS is mapped to SHIFT-JIS 815f.