Port gevent to iOS

什么是gevent

gevent is a coroutine-based Python networking library that uses greenlet to provide a high-level synchronous API on top of the libevent event loop.

GoAgent local从2.x之后,用gevent重写了,一般来说gevent还是比较适合写server程序,但是GoAgent比较特殊,proxy本来也算server。用gevent好处有很多,比如改善并发的效率,减少内存使用,写起来也很顺手;坏处是gevent并非属于标准库,而且含有C的extension,所以每个平台都需要至少编译一遍,其关键依赖--greenlet的切换基本上通过寄存器保存当前执行栈的情况,这个也是和硬件、平台密切相关的。

总结起来其实还蛮简单的:

  • 在iOS设备上搭建编译环境并安装python,具体可以参考wiki:Develop Jailbreak Apps

  • git clone https://github.com/hewigovens/gevent-for-ios

    • ----这次移植的版本是1.0b4,最新的应该是rc1,看了下Changelog 改动还不少,不过还好greenlet满足要求,所以问题应该不大
  • git clone git://github.com/snaury/greenlet 然后 git checkout wip-iphone

    • ----这个是Snaury移植的greenlet 0.3.4,关键~
  • 分别python setup build

当然在Mac上cross compile也是可以的~

Pre-built binaries

Download gevent python egg

Download greenlet so

Published: November 13 2012

blog comments powered by Disqus