liqinliqin
58.52D
V2EX  ›  PHP

刚哥开发新的编程语言 TypePHP,周三放到 Github , 3 天 star 就快 900 个了,https://github.com/swoole/typephp,大家用 AI 体验下编程

  •  
  •   liqinliqin ·
    PRO
    · Aug 29 · 4327 views
    Supplement 1  ·  Aug 29
    TypePHP 是一个 AOT ( Ahead-Of-Time ,提前编译)编译器,它把 PHP 源码翻译为 C++,再编译为原生机器码。与字节码缓存或虚拟机不同,它不会在运行时解释 opcode ,而是直接生成在 CPU 上运行的原生二进制。

    它保留熟悉的 PHP 语法,同时引入编译期类型信息,让编译器为性能热点生成快速、静态类型的 C++ 代码。动态 PHP 值、内置函数、反射和对象元数据继续通过 PHPX 与 Zend runtime 互操作;用户函数编译完成后不再以 Zend opcode 方式执行。

    TypePHP 完全由 PHP 语言编写,并且完全自举:tpc 编译器二进制就是用 TypePHP 编译编译器自身的 PHP 源码得到的。整个自举链路是纯 PHP——编译器本身没有任何 C 或 C++ 胶水代码。
    Supplement 2  ·  Aug 30




    马上过千了
    Supplement 3  ·  Aug 30
    只要一提起「把 PHP 编译成更快的程序」,几乎必然会有人联想到 Facebook 的 Hack 与 HHVM 。这个联想很自然。十几年前,Facebook 为了让 PHP 跑得更快,先做了把 PHP 翻译成 C++ 的 HPHPc ,后来又做了带 JIT 的 HHVM ,2014 年顺势发布了 Hack 语言。这套组合曾经是「 PHP 性能优化」的终极答案,也深刻地影响了整个 PHP 社区对「编译」这件事的想象。于是当 TypePHP 出现——一个 AOT 编译器,把 PHP 源码直接编译成原生二进制——很多人第一反应是:这不就是又一个 Hack 吗?完全不是。这两者的差异不是「谁更快一点」「谁的生态更大一点」这种程度问题,而是设计目标、实现路径、交付形态、参与门槛四个维度上的全面分歧。




    https://mp.weixin.qq.com/s/SAbxksaIF74yh7V7Uz08xA
    33 replies    2026-08-31 12:19:07 +08:00
    jacketma
        1
    jacketma  
       Aug 29
    大佬,这个活是不是 facebook 二十年前搞过?
    早 20 年开源的话,PHP 是世界上最好的语言😄
    liqinliqin
        2
    liqinliqin  
    OP
    PRO
       Aug 29
    20 年前的 2006 FACEBOOK 经常在北京开大会,校内、51 、偷菜了
    FrankAdler
        3
    FrankAdler  
       Aug 29
    有什么意义,不能完美替换 fpm ,为啥不直接 go ,浪费精力,真的 go 不难,随便学几天就能上手了
    x86
        4
    x86  
       Aug 29 via iPhone
    时代变了
    icyalala
        5
    icyalala  
       Aug 29
    facebook 老早就搞过 hiphop ,还是那个赵海平搞的呢,后来不也放弃了,然后去搞 HHVM 了吗
    icyalala
        6
    icyalala  
       Aug 29
    想起了当年的瓜,王垠被赵海平面试,撕了一场,然后写篇博客去嘲讽,专门喷那个 hiphop
    https://www.yinwang.org/posts/compilers
    https://www.zhihu.com/question/360622233
    liqinliqin
        7
    liqinliqin  
    OP
    PRO
       Aug 29
    @icyalala 哥们 80 年的吗
    icyalala
        8
    icyalala  
       Aug 29
    @liqinliqin 哪有那么老,只是在人人网待过
    chendy
        9
    chendy  
       Aug 29
    十几年前短暂干过一年 php
    实在想不明白 php 和 type 这俩词是咋整一起的
    liqinliqin
        10
    liqinliqin  
    OP
    PRO
       Aug 29
    @icyalala 86 的?
    vardumpabc
        11
    vardumpabc  
       Aug 30
    @FrankAdler Go 没有面向对象的 ORM ,很难用,以及不支持 Try Catch ,只能 return err ,我曾三进三出,实在接受不了,开发起来太麻烦
    liuliuliuliu
        12
    liuliuliuliu  
       Aug 30
    那个啥,为啥不用 C# ?
    FrankAdler
        13
    FrankAdler  
       Aug 30
    @vardumpabc 不管你能挑出来多少 go 的问题,go 替换 php 肯定还是收益更多,我觉得是值得的。而且你说的这几个问题都有替代方案,只是风格不一样。
    lilililili2020
        14
    lilililili2020  
       Aug 30 via Android
    看起来挺适合单文件论坛 bbs1.org
    panlatent
        15
    panlatent  
       Aug 30 via Android
    用 PHP 实现的,这点很有意思。但应该不会用的,找不到优点在哪。现在语言百花齐放,AI 的加持下,想用哪个就用哪个。

    最多就是给 PHP 一个可编译的选项,然而真正有此类需求的用户应该不多。
    iomect
        16
    iomect  
       Aug 30
    @panlatent #15 确实 有这种需求的很明显有其他更好的选择
    hikarugo
        17
    hikarugo  
       Aug 30
    属于 2014 年还在做塞班开发了
    cookiejar
        18
    cookiejar  
       Aug 30
    看了下文档,常规代码好像可以直接编译,这对于前面追求快速开发,后面开始追求性能的时候,多了一个选项。提供的特殊语法也是在需要更极致性能的时候,可以选择使用。挺赞的。
    sbhtdgg
        19
    sbhtdgg  
       Aug 30
    ai 时代换语言的成本相相当低,我一句 rust 代码都没学过,也搓了一个 rust 的软件出来,注定没有太大需求
    UEFI
        20
    UEFI  
    PRO
       Aug 30
    @liqinliqin #7 蚌埠住了
    nc
        21
    nc  
       Aug 30
    FB 当时从 HPHPc 转到 HHVM 就是因为代码库太大 AOT 编译成本过高,前人都踩过的坑了
    rb6221
        22
    rb6221  
       Aug 30
    能在多大程度上兼容 php 原来的生态? ts 能成功很大程度上还是能兼容 js 生态,这个呢?
    语法兼容只是表面上的,问题是庞大的三方库能否兼容。
    否则你要战胜 kotlin 以及 C#这俩兄弟
    liqinliqin
        23
    liqinliqin  
    OP
    PRO
       Aug 30
    @rb6221 基本全兼容
    suyuyu
        24
    suyuyu  
       Aug 30
    属于 49 年还未入国军了
    vardumpabc
        25
    vardumpabc  
       Aug 30
    @FrankAdler 我是回答你,为什么很多人不用 go 的原因,并不是在挑 go 的问题,在第一步就没有收益,就不会考虑以后的收益,起码 php 是初创公司的常用语言,切换 go 不只是切换代码风格,还有用人成本、团队整体切换的一系列问题存在,以我个人来讲,实在是不适应复杂操作的编程,也可能是无法讲自己的思路彻底转变,所以三进三出 golang ,我也知道这是好东西,但每次实际上手的时候都会质疑自己,明明 hyperf 开发出来更快,为啥要备受煎熬呢
    FarAhead
        26
    FarAhead  
       Aug 30
    https://github.com/matz/spinel
    Ruby 创始人 matz 也搞了个类似的项目,但是很多原生库还不支持,目前看来适用于一些嵌入式设备
    liqinliqin
        27
    liqinliqin  
    OP
    PRO
       Aug 30
    @vardumpabc hyperf swoole typephp
    liqinliqin
        28
    liqinliqin  
    OP
    PRO
       Aug 30
    @FarAhead php 比 ruby 方便太多了
    icyalala
        29
    icyalala  
       Aug 30
    @liqinliqin 也没那么老
    dimwoodxi27
        30
    dimwoodxi27  
       Aug 31
    感觉重复造轮子,都翻译成 c++了那为啥不用 c++开发呢,为了这点语法简洁性那为什么不直接用 go 呢,看了编译还不是和 py 一样调用了大量的 c++ lib 来实现,还有 wasm 那块强行把翻译成 c++用 Emscripten 编译,何必呢,更不说翻译过去的兼容性
    xiwangly
        31
    xiwangly  
       Aug 31
    感觉不错,如果旧的屎山 php 项目能够兼容一键转就非常牛逼了
    alsas
        32
    alsas  
       Aug 31
    不如直接用 go
    liqinliqin
        33
    liqinliqin  
    OP
    PRO
       Aug 31
    @xiwangly 可以的,建议找个项目试一下
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1032 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 56ms · UTC 18:55 · PVG 02:55 · LAX 11:55 · JFK 14:55
    ♥ Do have faith in what you're doing.