PHP 编译器 BPC 5.0 发布了 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
heguangyu5
V2EX    PHP

PHP 编译器 BPC 5.0 发布了

  •  
  •   heguangyu5 2022-09-30 09:44:49 +08:00 4002 次点击
    这是一个创建于 1108 天前的主题,其中的信息可能已经有所发展或是发生改变。

    之所以要发个新版本,是因为开发 BPC 的初始目标要达成了!

    __

    我们是一家做 SASS 招聘管理系统的公司,主产品名叫 OurATS.

    这个领域产品不多,一个手掌就能数过来.

    大家在应聘面试过程中,说不定就曾收到过来自 OurATS 的面试邀请信.

    这几年来,由于大家数据安全意识的提高,加上 2B 项目的特殊性,本地部署的需求越来越多.

    OurATS 是用 PHP 开发的,PHP 项目本地部署说白了就是交付源码,这是我们不想要的.

    经过一番调研,我们定开发自己的 PHP 编译器.

    将 PHP 转译成 C,然后编译成二进制,这能完美解决 PHP 源码保护的问题.

    于是 BPC 就诞生了.

    在开发 BPC 的过程中,我们发现,可以通过编译器解决软件授权问题.

    这下本地部署的两个关键,源码保护和软件授权全都解决了!

    __

    经过两年的开发,到这几天,我们终于成功编译了 OurATS 及其附属支撑项目的代码.

    由于 OurATS 是有完善的 PHPUnit 测试用例保障的,所以成功编译 OurATS 也是对 BPC 的一次强有力的检验.

    __

    BPC 5.0 还有一个亮点就是引进了 ninja 构建工具,从而可以并行编译.

    当你的项目有成千上万个 PHP 文件时,并行编译能大大缩短编译时间.

    __

    截止到 BPC 5.0, 我们已经实现了以下 PHP 扩展(个别扩展只实现了部分函数和类):

    • standard
    • posix
    • date
    • pcre
    • mbstring
    • json
    • fileinfo
    • session
    • filter
    • curl
    • spl
    • pdo
    • pdo_mysql
    • pdo_sqlite
    • openssl
    • ctype
    • pcntl
    • hash
    • simplexml
    • iconv
    • gd
    • imagick
    • scws
    • sysvsem
    • tinycdb
    • zip
    • zlib

    see bpc-php-7.2.19-tests

    再列 3 个 BPC 编译的成功案例:

    欢迎大家下载试用:

    https://github.com/bob-php-compiler/bpc-release/releases/tag/v5.0

    使用指南在这里:

    https://github.com/bob-php-compiler/bpc-release/wiki/01_Install

    24 条回复    2022-10-09 12:34:51 +08:00
    bzj
        1
    bzj  
       2022-09-30 10:13:11 +08:00
    那么多人辛苦推广开源,你给这里又加密了
    zhs227
        2
    zhs227  
       2022-09-30 10:15:54 +08:00   1
    向楼主致敬,做到了 zend 们没做到的事情。
    JStone
        3
    JStone  
       2022-09-30 10:19:16 +08:00   1
    @bzj 有开源也有闭源 需求场景 看你怎么使用咯
    fournoas
        4
    fournoas  
       2022-09-30 10:27:18 +08:00
    以前有类似的收费产品,不过已经凉了好多年了
    xiaotianhu
        5
    xiaotianhu  
       2022-09-30 10:34:04 +08:00
    没需求,之前只听说过 https://business.swoole.com/compiler.html
    sadfQED2
        6
    sadfQED2  
       2022-09-30 10:41:54 +08:00
    这工作量挺大的,好奇花了多少人 /月
    leo108
        7
    leo108  
       2022-09-30 10:46:48 +08:00
    Github 里只有一个没有意义的 readme 然后就是二进制的 release 文件,wiki 写得再好,功能吹得再牛逼也没人敢用吧。
    heguangyu5
        8
    heguangyu5  
    OP
       2022-09-30 11:03:37 +08:00
    @sadfQED2 1 个人两年时间
    jhdxr
        9
    jhdxr  
       2022-09-30 11:09:32 +08:00   2
    问题在于你这个 BPC 本身并不开源,谁敢用?编译器投毒了解一下(不是说你们一定进行了投毒,这只是个信任问题)
    heguangyu5
        10
    heguangyu5  
    OP
       2022-09-30 11:14:19 +08:00
    @leo108

    这个项目目前不打算开源,只能 release 二进制了.

    看来我 wiki 写的还不错?

    不要看到编译器就想着牛逼,就是很朴素的转译,不是一步到二进制的,php 到 scheme 到 c 的代码都是可见的.

    目前由于还缺少一些关键特性比如 namespace 没实现,所以很多项目即使想用也用不起来.
    7gugu
        11
    7gugu  
       2022-09-30 11:22:29 +08:00
    @bzj OP 的需求不就是闭源交付代码么,先看看需求再评论吧
    ly841000
        12
    ly841000  
       2022-09-30 11:29:43 +08:00
    可以用这个 https://github.com/peachpiecompiler/peachpie 用 aot 发布
    sunny1688
        13
    sunny1688  
       2022-09-30 11:36:49 +08:00
    还想感谢一下为 php 生态做出的贡献,目前 php 官方要是加上编译运行的话会没有这么糟糕,结果 BPC 不开源,,那推广的意义在哪呢,谁敢用呢?
    sadfQED2
        14
    sadfQED2  
       2022-09-30 11:41:41 +08:00
    担心 2 点

    1 、bpc 本身不开源,就像楼上说的信任担忧

    2 、后续 php 版本是否后持续迭代呢,比如现在 php 已经到 8 了,编译器支持的是 php7.2 ,编译器不开源的话,社区也没法帮忙迭代优化。万一编译器有 bug ,也没法第一时间修复。
    sadfQED2
        15
    sadfQED2  
       2022-09-30 11:48:22 +08:00 via Android
    我曾经遇到过项目,也是 2B ,也是 php ,客户也是要求本地化部署。我们方案是给客户提供一个虚拟机镜像,代码都在虚拟机里面,客户自己装个虚拟机,把镜像跑起来即可。不给虚拟机密码,他也看不到源码
    heguangyu5
        16
    heguangyu5  
    OP
       2022-09-30 11:59:26 +08:00
    sunny1688
        17
    sunny1688  
       2022-09-30 12:08:58 +08:00
    @heguangyu5 #16 哎,,无话可说,顽固不化的官方
    heguangyu5
        18
    heguangyu5  
    OP
       2022-09-30 12:10:47 +08:00
    @sadfQED2

    1. 开不开源不是问题,闭源编译器有很多,另外做源码保护的 ionCube,Swoole Compiler 都是闭源的.
    2. 后续版本是否跟进不好说,目前 target 在 php7.2 是我们自己的需求,由于 bpc 完全脱离 zend,如果愿意搞,我们可以弄出一个新语言来.就像 hacklang.
    3. 本地部署不给客户服务器密码对我们来说不行,再说硬件都在客户那里,想看机器里的东西办法多了去了.
    heguangyu5
        19
    heguangyu5  
    OP
       2022-09-30 12:11:42 +08:00
    @ly841000 也可以用 kphp 把 php 转成 c++ https://github.com/VKCOM/kphp
    ly841000
        20
    ly841000  
       2022-09-30 12:29:13 +08:00
    @sunny1688 官方不支持只是没做 aot 标记, 直接把全部代码包括应该没什么问题
    sadfQED2
        21
    sadfQED2  
       2022-09-30 12:37:24 +08:00 via Android
    我觉得要么你就编译器收费,写好条款,出问题大家可以找你,要么你就直接开源,出问题大家可以自己修。这样又不收费,又不开源,真没什么人敢用
    heguangyu5
        22
    heguangyu5  
    OP
       2022-09-30 12:44:34 +08:00
    @sadfQED2 商业化还没启动,公司目前也没有明确要求,所以当前感兴趣就让试用.tar 包里是有一个 license 的,只有几天的有效期,过期后只要发邮件给我们,在明确商业化策略前,都会给短期的试用 license.

    如果你有好的想法,可以找我们公司 CEO 或者 CTO 聊聊.
    48y1951r9G8k7Zou
        23
    48y1951r9G8k7Zou  
       2022-09-30 12:51:14 +08:00
    感觉你们和 swoole 他们的公司在做类似的事情
    lyhiving
        24
    lyhiving  
       2022-10-09 12:34:51 +08:00
    @majula 好歹 swoole 还做了个 swoole ,loader 才是加密组件。楼主这个是纯粹加密
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1072 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 17:57 PVG 01:57 LAX 10:57 JFK 13:57
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86