mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-10-25 18:50:57 +00:00
Actually Portable Python is now outperforming the Python binaries
that come bundled with Linux distros, at things like HTTP serving.
You can now have a fully featured Python install in just one .com
file that runs on six operating systems and is about 10mb in size.
With tuning, the tiniest is ~1mb. We've got most of the libraries
working, including pysqlite, and the repl now feels very pleasant.
The things you can't do quite yet are: threads and shared objects
but that can happen in the future, if the community falls in love
with this project and wants to see it developed further. Changes:
- Add siginterrupt()
- Add sqlite3 to Python
- Add issymlink() helper
- Make GetZipCdir() faster
- Add tgamma() and finite()
- Add legacy function lutimes()
- Add readlink() and realpath()
- Use heap allocations when appropriate
- Reorganize Python into two-stage build
- Save Lua / Python shell history to dotfile
- Integrate Python Lib embedding into linkage
- Make isregularfile() and isdirectory() go faster
- Make Python shell auto-completion work perfectly
- Make crash reports work better if changed directory
- Fix Python+NT open() / access() flag overflow error
- Disable Python tests relating to \N{LONG NAME} syntax
- Have Python REPL copyright() show all notice embeddings
The biggest technical challenge at the moment is working around
when Python tries to be too clever about filenames.
|
||
|---|---|---|
| .. | ||
| libmpdec | ||
| tests | ||
| _decimal.c | ||
| docstrings.h | ||
| README.txt | ||
About ===== _decimal.c is a wrapper for the libmpdec library. libmpdec is a fast C library for correctly-rounded arbitrary precision decimal floating point arithmetic. It is a complete implementation of Mike Cowlishaw/IBM's General Decimal Arithmetic Specification. Build process for the module ============================ As usual, the build process for _decimal.so is driven by setup.py in the top level directory. setup.py autodetects the following build configurations: 1) x64 - 64-bit Python, x86_64 processor (AMD, Intel) 2) uint128 - 64-bit Python, compiler provides __uint128_t (gcc) 3) ansi64 - 64-bit Python, ANSI C 4) ppro - 32-bit Python, x86 CPU, PentiumPro or later 5) ansi32 - 32-bit Python, ANSI C 6) ansi-legacy - 32-bit Python, compiler without uint64_t 7) universal - Mac OS only (multi-arch) It is possible to override autodetection by exporting: PYTHON_DECIMAL_WITH_MACHINE=value, where value is one of the above options. NOTE ==== decimal.so is not built from a static libmpdec.a since doing so led to failures on AIX (user report) and Windows (mixing static and dynamic CRTs causes locale problems and more).