首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
V2EX  ›  JavaScript

ffmpeg 和 qemu 的作者 fabrice bellard 写了个 js 引擎 quickjs

  •  7
     
  •   plqws · 11 天前 · 5895 次点击

    https://bellard.org/quickjs/

    • 基于 C,支持一个 hello world 只需要 190KiB 大小的 x86 代码
    • 几乎完整的 ES2019 支持,包括 ES Module、异步生成器和 Proxy
    • 可以将 Js 代码编译成单个可执行文件
    • 基于引用计数的垃圾回收
    • 等等等等

    无话可说,太牛逼了

    53 回复  |  直到 2019-07-13 22:38:07 +08:00
        1
    deorth   11 天前
    虽然无关,但看到这个我就想问问 V 语言怎么样了
        2
    murmur   11 天前
    意味着以后除了 lua 还可以选 js 么
        3
    k9982874   11 天前 via iPhone
    @murmur npm 教做人
        4
    12tall   11 天前
    膜拜大神
        5
    yamedie   11 天前 via Android
    好像对我这样的 win boy 不友好,需要交叉编译
        6
    ddzzhen   11 天前 via Android
    大神啊,福气
        7
    deepdark   11 天前 via Android
    牛逼
        8
    Sasasu   11 天前 via Android   ♥ 1
    引用计数不是优点吧…
        9
    KuroNekoFan   11 天前
    用来 iot 吗
        10
    agagega   11 天前 via iPhone
    新作品?
        11
    chenqh   11 天前 via Android
    性能怎么样?
        12
    yuuko   11 天前 via Android
    牛逼
        13
    youxiachai   11 天前
    @chenqh https://bellard.org/quickjs/bench.html
    这个自己看
    这个的横向比较应该是同样的小型 js 引擎
        14
    LengthMin   11 天前 via Android
    给我的感觉就是 oj 也能用 js 来写了
        15
    BinRelay   11 天前
    萌新求教,这个能用在哪些场景呢?
        16
    youxiachai   11 天前
    @LengthMin ?现在大部分 oj 都支持 js 了吧
        17
    youxiachai   11 天前
        18
    VDimos   11 天前 via Android
    @LengthMin oj 很多都支持 js 了呀
        19
    zzlove   11 天前
    @k9982874 js:nodejs 的东西关我屁事~
        20
    zzlove   11 天前
    和 deno 比有哪些差异呢?除了一个 ts 一个 es?
        21
    vexjoe   11 天前
    Can compile Javascript sources to executables with no external dependency.
    这个太好了
        22
    plqws   11 天前
    @zzlove #20 deno 可以直接把 v8 换成这玩意,deno 和 nodejs 是一类,quickjs 和 v8 是一类,不过 quickjs 自带了一些标准库,例如读文件之类的
        23
    conanskyforce   11 天前
    牛逼,膜拜
        24
    ochatokori   11 天前 via Android
    @plqws #22 请教 miniblink 是哪一类?
        25
    meteor957   11 天前
    6
        26
    plqws   11 天前
    @ochatokori #24 miniblink 和 webkit/blink/gecko 算一类
        27
    SsuchingYu   11 天前
    牛逼
        28
    JerryCha   11 天前
    太棒了,我们可以编译成 wasm 在上面跑 js 了!
        29
    alphatoad   11 天前
    ld: symbol(s) not found for architecture i386
    clang: error: linker command failed with exit code 1 (use -v to see invocation)
    make: *** [qjsbn32] Error 1
    emmmm
        30
    iwtbauh   11 天前 via Android
    wow, awesome project!
        31
    iwtbauh   11 天前 via Android
    @alphatoad #29

    安装 32 位 multilib 工具链
        32
    iwtbauh   11 天前 via Android   ♥ 1
    @alphatoad #29

    或者编辑 Makefile 文件不编译 32 位版本
        33
    woahishui   11 天前 via Android
    现在这些东西搞得比应用软件还多,真是牛逼
        34
    tougee   11 天前
    @Sasasu 原话是这样
    Garbage collection using reference counting (to reduce memory usage and have deterministic behavior) with cycle removal.
        35
    alphatoad   11 天前
    @iwtbauh 我找到问题所在了。问题是 Mojave 的开发者工具不再支持 i386
        36
    explore365   11 天前
    用过他的 tcc,也很吊
        37
    hguandl   11 天前
    macOS 上无法编译的朋友可以尝试改一下 Makefile 去掉 32 位的编译。修改方案可以是删掉 37 行的 `CONFIG_M32=y` ;或者在 45 行前面插入一行 `CONFIG_M32=`。
        38
    zhouxuchen   11 天前
    作为只用过 ffmpeg 的菜鸡,搜了下这人的履历,跪在了电脑前
        39
    fxxkgw   11 天前
    这个就是传说中的额头锃亮的 法国大佬。。。
        40
    dabang007   11 天前
    编译了下,strip 后还是比较大的大概 650K 的 qjs qjsc 也有 330K,helloworld 的示例 strip 后也有 617720 字节,ubuntu gcc5.4.0 版本
        41
    ericgui   11 天前
    @k9982874 为了 IOT 的
        42
    ericgui   11 天前
    唯一的问题是,这哥们为嘛不用 github
        43
    dabang007   10 天前
    @dabang007 没有仔细看;./qjsc -e -fno-string-normalize -fno-map -fno-promise -fno-typedarray -fno-typedarray -fno-regexp -fno-json -fno-eval -fno-proxy -o hello.c examples/hello.js 这样生成的 hello 确实只有 190K
        44
    dabang007   10 天前
    @murmur
    @ericgui 感觉 IOT 还是 Lua 小巧,这个还是有点大,裁剪后也应该比 Lua 大些
        45
    ysc3839   10 天前 via Android
    需要给自己的程序嵌入脚本语言,之前调查过几种语言最终还是选了 Python。
    因为需要访问操作系统的功能,js 语言本身并没有这样的接口,能实现的只有 nodejs,但是 nodejs 官方似乎没提供嵌入的支持,别的语言如 lua 和 Squirrel 也有类似的问题。
        46
    nutting   10 天前
    gcc 4.8 有个 BUG:缺少 stdatomic.h,你们都编译成功了?
        47
    v23x   10 天前
    牛批.............
        48
    kaneg   10 天前 via iPhone
    一生只要有一件类似 ffmpeg,qemu,tinycc 的作品就足以在软件史扬名,而这些竟然都出自他一人之手,对于我等芸芸众生,只有顶礼膜拜的份。
        49
    yuxizhe   10 天前
    为啥不用 github 呢。。。
        50
    yulon   10 天前
    @nutting -std=c11
        51
    dosmlp   10 天前   ♥ 1
    @ysc3839 你仔细看下 node 源码的 node.h,其实是可以嵌入到自己的程序里的
        52
    ysc3839   10 天前 via Android
    @dosmlp 主要是需要相关文档,没文档的情况下我真搞不来。Python 的官方文档里就有关于嵌入的说明,但是 nodejs 的文档似乎没找到相关信息。
        53
    lxml   9 天前
    感觉要是滋瓷 typescript 就更好了,好期待 wasm 出来后,语法层面就没有历史包袱,抛掉 js 那些历史糟粕,重新搞搞( typescript 的子集语言就挺好)
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3723 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 20ms · UTC 07:13 · PVG 15:13 · LAX 00:13 · JFK 03:13
    ♥ Do have faith in what you're doing.