diff --git a/README.md b/README.md index 8dfb9ba..dbea3f6 100644 --- a/README.md +++ b/README.md @@ -23,16 +23,14 @@ pype converts Python ASTs to Erg ASTs and passes them to Erg's type checker. It pype performs type inference of Python source code. Therefore, there is no need to annotate or type your Python scripts in order to use pype. You can, however, explicitly request type checks by specifying types. -Other softwares that takes the same approach as pype are pytype, pyright, etc. +There are other softwares that takes the same approach as pype, such as pytype, pyright, etc. However, pype is superior to them in the following points: -* Checking speed: pype can inspect Python scripts on average 100 times faster than pytype. This is largely due to the fact that pype is implemented in Rust, whereas pytype is implemented in Python. +* Performance: pype can inspect Python scripts on average 100 times faster than pytype. This is largely due to the fact that pype is implemented in Rust, whereas pytype is implemented in Python. +* Detailed analysis +pype can do more than the usual type testing. For example, it can detect out-of-bounds accesses to lists and accesses to nonexistent keys in dicts. -* Type checking accuracy: pytype is just a static code analysis tool in python, whereas pype appropriates the type checker of Erg, a real statically typed programming language. - - - -* Reporting quality: While pytype's error reports are frankly very crude, showing only that an error has occurred, pype shows where the error occurred and provides clear error messages. Also, pytype only displays the first error when there are multiple errors. pype enumerates as many errors as possible. +* Reporting quality: While pytype's error reports are crude, showing only that an error has occurred, pype shows where the error occurred and provides clear error messages.