V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
heguangyu5
V2EX  ›  PHP

PHP 编译器 BPC 5.0 发布了

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

    之所以要发个新版本,是因为开发 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 聊聊.
    majula
        23
    majula  
       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   ·   实用小工具   ·   5199 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 05:45 · PVG 13:45 · LAX 21:45 · JFK 00:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.