liqinliqin
58.52D
V2EX  ›  PHP

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

  •  
  •   liqinliqin ·
    PRO
    · 2 days ago · 3868 views
    Supplement 1  ·  1 day ago
    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  ·  1 day ago




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

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