国内有CPython解释器定制相关的工作么?

最近有换工作的打算,因为对这方面还比较感兴趣,但招聘网站上似乎都没有相关的工作,所以提问咨询一下国内有没有公司有这方面的工作。
关注者
139
被浏览
8669
来打个酱油。我自己并不知道国内有什么公司具体在做CPython解释器的定制。但想来抛砖引玉一下看看能不能吸引到更多知道情况的大大来回答。

我所想像的,CPython解释器可能的定制点,有下面这些例子:
  • CPython解释器的裁剪
    • Python常常被用作嵌入在别的程序里的脚本语言。但是给定一个嵌入环境,它所希望暴露的Python功能或许比较少,并不需要带有Python的batteries-included那么庞大的标准库。CPython解释器自身的某些功能或许也可以舍弃。为了限制功能/权限,或者为了减小体积,都可能需要做CPython解释器(以及标准库)的裁剪。
  • CPython解释器的混淆与逆向工程
    • 如果我们发布一个Python程序,最典型的发布方式是以源码发布,用户拿到源码之后想执行也行,想修改也行,想怎么搞难以控制。而比源码“稍微”隐秘一点的是把Python源码CPython编译生成的字节码(*.pyc / *.pyo)文件发布出去,但其实稍微了解一点CPython的同学都会知道如何反汇编/反编译CPython字节码,所以也没真的隐秘多少。但是,如果我们同时也定制了CPython解释器自身,修改了它做支持的字节码指令集(例如说修改了opcode到数值的具体映射关系),那么发布与其对应的*.pyc / *.pyo文件就没那么容易被现成的工具解读为用户容易看懂的代码。例如说,Dropbox客户端是用Python写的,里面就带有一个定制了的CPython解释器。
    • 有矛就有盾。既然能做这样的定制,自然也就会有人研究如何对这样的定制做逆向工程。上面说的Dropbox客户端里的CPython解释器自然也就被研究了,感兴趣的同学可以跳传送门:Looking inside the (Drop) box,以及一篇相关的有趣的小文章:Building an obfuscated Python interpreter: we need more opcodes
  • Python程序与CPython解释器的打包
    • 这个就不用多说了…?以Python为主的程序在发布的时候总要处理目标部署环境中是否有足够高版本的Python、是否安装了足够的库的问题。当然有各种办法可破,像是搞个Docker啥的。但传统的把Python程序作为资源跟CPython解释器打包进一个可执行文件的做法也还是大有市场吧。
  • CPython解释器的性能优化
    • 嗯这个我可以肯定国内有人在做,但我不知道具体都在哪里。求大大们来爆料
    • 人生苦短,要搞CPython解释器自身的性能优化的话,只要不纠结于一定要把修改并进上游的话,应该还是有搞头的话。如果要坚持以并进上游为目标的话就…Why I took October off from OSS volunteering
  • 其它
    • 例如现在已有的回答里提到的给Python做类型推导的事情也挺有趣,资瓷资瓷