| 
1 | 1 | mypyc: Mypy to Python C Extension Compiler  | 
2 | 2 | ==========================================  | 
3 | 3 | 
 
  | 
4 |  | -**NOTE: We are in the process of moving the mypyc README to the**  | 
5 |  | -**[mypyc repository](https://github.com/mypyc/mypyc)**  | 
 | 4 | +For the mypyc README, refer to the [mypyc repository](https://github.com/mypyc/mypyc). The mypyc  | 
 | 5 | +repository also contains the mypyc issue tracker. All mypyc code lives  | 
 | 6 | +here in the mypy repository.  | 
6 | 7 | 
 
  | 
7 |  | -**This may be out of date!**  | 
 | 8 | +Source code for the mypyc user documentation lives under  | 
 | 9 | +[mypyc/doc](./doc).  | 
8 | 10 | 
 
  | 
9 |  | -Mypyc is a compiler that compiles mypy-annotated, statically typed  | 
10 |  | -Python modules into CPython C extensions. Currently our primary focus  | 
11 |  | -is on making mypy faster through compilation -- the default mypy wheels  | 
12 |  | -are compiled with mypyc.  Compiled mypy is about 4x faster than  | 
13 |  | -without compilation.  | 
14 |  | - | 
15 |  | -Mypyc compiles what is essentially a Python language variant using "strict"  | 
16 |  | -semantics. This means (among some other things):  | 
17 |  | - | 
18 |  | - * Most type annotations are enforced at runtime (raising ``TypeError`` on mismatch)  | 
19 |  | - | 
20 |  | - * Classes are compiled into extension classes without ``__dict__``  | 
21 |  | -   (much, but not quite, like if they used ``__slots__``)  | 
22 |  | - | 
23 |  | - * Monkey patching doesn't work  | 
24 |  | - | 
25 |  | - * Instance attributes won't fall back to class attributes if undefined  | 
26 |  | - | 
27 |  | - * Also there are still a bunch of bad bugs and unsupported features :)  | 
28 |  | - | 
29 |  | -Compiled modules can import arbitrary Python modules, and compiled modules  | 
30 |  | -can be used from other Python modules.  Typically mypyc is used to only  | 
31 |  | -compile modules that contain performance bottlenecks.  | 
32 |  | - | 
33 |  | -You can run compiled modules also as normal, interpreted Python  | 
34 |  | -modules, since mypyc targets valid Python code. This means that  | 
35 |  | -all Python developer tools and debuggers can be used.  | 
36 |  | - | 
37 |  | -macOS Requirements  | 
38 |  | -------------------  | 
39 |  | - | 
40 |  | -* macOS Sierra or later  | 
41 |  | - | 
42 |  | -* Xcode command line tools  | 
43 |  | - | 
44 |  | -* Python 3.5+ from python.org (other versions are untested)  | 
45 |  | - | 
46 |  | -Linux Requirements  | 
47 |  | -------------------  | 
48 |  | - | 
49 |  | -* A recent enough C/C++ build environment  | 
50 |  | - | 
51 |  | -* Python 3.5+  | 
52 |  | - | 
53 |  | -Windows Requirements  | 
54 |  | ---------------------  | 
55 |  | - | 
56 |  | -* Windows has been tested with Windows 10 and MSVC 2017.  | 
57 |  | - | 
58 |  | -* Python 3.5+  | 
59 |  | - | 
60 |  | -Quick Start for Contributors  | 
61 |  | -----------------------------  | 
62 |  | - | 
63 |  | -First clone the mypy git repository:  | 
64 |  | - | 
65 |  | -    $ git clone https://github.com/python/mypy.git  | 
66 |  | -    $ cd mypy  | 
67 |  | - | 
68 |  | -Optionally create a virtualenv (recommended):  | 
69 |  | - | 
70 |  | -    $ python3 -m venv <directory>  | 
71 |  | -    $ source <directory>/bin/activate  | 
72 |  | - | 
73 |  | -Then install the dependencies:  | 
74 |  | - | 
75 |  | -    $ python3 -m pip install -r test-requirements.txt  | 
76 |  | - | 
77 |  | -Now you can run the tests:  | 
78 |  | - | 
79 |  | -    $ pytest -q mypyc  | 
80 |  | - | 
81 |  | -Look at the [issue tracker](https://github.com/mypyc/mypyc/issues)  | 
82 |  | -for things to work on. Please express your interest in working on an  | 
83 |  | -issue by adding a comment before doing any significant work, since  | 
84 |  | -there is a risk of duplicate work.  | 
85 |  | - | 
86 |  | -Note that the issue tracker is hosted on the mypyc GitHub project, not  | 
87 |  | -with mypy itself.  | 
88 |  | - | 
89 |  | -Documentation  | 
90 |  | --------------  | 
91 |  | - | 
92 |  | -We have some [developer documentation](doc/dev-intro.md).  | 
93 |  | - | 
94 |  | -Development Status and Roadmap  | 
95 |  | -------------------------------  | 
96 |  | - | 
97 |  | -These are the current planned major milestones:  | 
98 |  | - | 
99 |  | -1. [DONE] Support a smallish but useful Python subset. Focus on compiling  | 
100 |  | -   single modules, while the rest of the program is interpreted and does not  | 
101 |  | -   need to be type checked.  | 
102 |  | - | 
103 |  | -2. [DONE] Support compiling multiple modules as a single compilation unit (or  | 
104 |  | -   dynamic linking of compiled modules).  Without this inter-module  | 
105 |  | -   calls will use slower Python-level objects, wrapper functions and  | 
106 |  | -   Python namespaces.  | 
107 |  | - | 
108 |  | -3. [DONE] Mypyc can compile mypy.  | 
109 |  | - | 
110 |  | -4. [DONE] Optimize some important performance bottlenecks.  | 
111 |  | - | 
112 |  | -5. [PARTIALLY DONE] Generate useful errors for code that uses unsupported Python  | 
113 |  | -   features instead of crashing or generating bad code.  | 
114 |  | - | 
115 |  | -6. [DONE] Release a version of mypy that includes a compiled mypy.  | 
116 |  | - | 
117 |  | -7.  | 
118 |  | -    1. More feature/compatibility work. (100% compatibility with Python is distinctly  | 
119 |  | -       an anti-goal, but more than we have now is a good idea.)  | 
120 |  | -    2. [DONE] Support compiling Black, which is a prominent tool that could benefit  | 
121 |  | -       and has maintainer buy-in.  | 
122 |  | -       (Let us know if you maintain another Python tool or library and are  | 
123 |  | -       interested in working with us on this!)  | 
124 |  | -    3. More optimization! Code size reductions in particular are likely to  | 
125 |  | -       be valuable and will speed up mypyc compilation.  | 
126 |  | - | 
127 |  | -8.  We'll see! Adventure is out there!  | 
128 |  | - | 
129 |  | -Future  | 
130 |  | -------  | 
131 |  | - | 
132 |  | -We have some ideas for  | 
133 |  | -[future improvements and optimizations](doc/future.md).  | 
 | 11 | +Mypyc welcomes new contributors! Refer to our  | 
 | 12 | +[developer documentation](./doc/dev-intro.md) for more information.  | 
0 commit comments