pursuer 最近的时间轴更新
pursuer

pursuer

V2EX 第 358584 号会员,加入于 2018-10-25 15:17:15 +08:00
今日活跃度排名 3105
写了一个轻量的 WebAssembly JIT 运行时 PWART
  •  1   
    分享创造  •  pursuer  •  2022-11-14 19:32:22 PM  •  最后回复来自 pursuer
    2
    踩了一个 Java 编译时和运行时环境不一致导致的一个坑
    Java  •  pursuer  •  2020-10-22 23:37:05 PM  •  最后回复来自 Goooogle
    6
    视频平台之后,"游戏"平台能否成为下一个发展方向呢
    奇思妙想  •  pursuer  •  2020-07-22 11:06:28 AM  •  最后回复来自 zvil
    34
    pursuer 最近回复了
    8 天前
    回复了 keelii 创建的主题 Node.js Node.JS 作者 Ryan Dahl 的故事
    @june4
    卡住一段时间这个定义太模糊,甚至有时候设计的时候不能确定函数是否会卡住,比如 node 的 require 是同步的,实际模块加载甚至可能从网络加载这一点来看,应该被设计为一个异步操作。后来 esm 设计的 dynamic import 就成异步的了。
    async 明确切出点对并发编程和性能优化确实很友好。实际在 HTTP 服务器中考虑锁的情况相对少,但是我经常忘记写 await ,即使用了 ts 也只能部分避免这类错误。而且作为脚本语言应该追求书写简单,引入无栈协程对新手来说不是很友好。python 的 asyncio 也是有些人不爱用,Go 的无脑 goroutine 反而受欢迎。
    9 天前
    回复了 keelii 创建的主题 Node.js Node.JS 作者 Ryan Dahl 的故事
    @keelii
    学到了,不过似乎大部分 NPM 库都不发布.ts 。
    9 天前
    回复了 keelii 创建的主题 Node.js Node.JS 作者 Ryan Dahl 的故事
    @june4
    lua 的协程栈十分轻量,免去了 async/await 染色问题,只是性能较无栈的会差一些,我认为作为易用性优先的脚本语言实现有栈会更好一些,同时提供回调/无栈式 API 作为可选优化。考虑到 JS 的发展史,现在无栈设计可能是考虑到要兼容旧的 JS 单线程模型的无奈之举。
    无栈更应该是给 C++/Java/C#/Go 这种追求性能上限的语言用(虽然上述其中两个语言反而整了个有栈的实现)。

    另外 lua 可以自定义协程调度器,也带来很多便利,例如现在依然在 JS 提案阶段的[async-context]( https://github.com/tc39/proposal-async-context)在 lua 中就可以轻易实现。Node 现在似乎是通过提供一个内置的模块 async_hooks 来实现类似的功能。


    @otakustay js 很容易出现不兼容更新,node_modules 算是当时那个时间的好选择。但让包管理来处理复杂的依赖问题我觉得还是有局限性的,有的库不支持在同一个运行时环境下共存时,包管理也没辙。现在 typescript 库大量出现,在类型提示的帮助下兼容问题得到了改善,但现在 node_modules 的机制下 IDE 跳转只能跳到声明,看不到实现,对比其他包管理就成了劣势。(顺便提一个我一直在做的一个高度可扩展的多端统一的模块加载机制和包管理框架 https://www.v2ex.com/t/1104713 就是为了解决相关问题。)
    9 天前
    回复了 keelii 创建的主题 Node.js Node.JS 作者 Ryan Dahl 的故事
    要说的话,脚本语言里 Lua 支持有栈协程和自定义协程调度器,用作 IO 开发要更加合适。
    但 JS 就是靠着浏览器,通过用户积累生态,并收获更多用户的循环开始延伸到了各个领域(有意思的是 frida 这种不太相关的领域也用的 JS)。quickjs 的出现也让更多嵌入型框架开始考虑使用 js 作为支持脚本,即使其性能比不上 Lua 。
    遗憾的是 NPM/node_modules 和 GYP 真的是十分拖后腿的设计。
    @nashaofu 有点意外,倒是听说 tauri 在 linux 的 webview 很容易出问题
    tauri 用起来怎么样
    84 天前
    回复了 bf109_ 创建的主题 问与答 安卓有哪些好用的浏览器,可以安装扩展
    @bf109_ Firefox 内核一直是 Gecko 吧,还有新老内核的说法吗,要说最新内核大概说的 Servo?那个兼容性更不好说吧。
    我觉得这不能完全算是 C/C++的锅,Windows 的 COM 组件也是 C++的,但 Windows 的兼容是公认做的比较好的。再看 Linux 阵营,虽然很多库是用 C 写的,但升起来也费劲,glibc 更是重量级。
    @wudanyang 协程的作用就是协作执行,执行时间长(我假设说的 CPU 密集)还需要自动让出,那就是多线程的场景。实际多线程要考虑锁和线程安全,写线程安全代码未必比手动 await 简单。python 的线程是抢占式调度,但这个和协程无关,无论多少协程也都是跑在这个可以抢占调度的线程上的。
    第一条 python 的 await 如果写漏了,协程是不会运行的,第二条没改造的第三方库可以丢给其他线程跑,第三条和数据量大用不用协程都存在的一样的问题
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   950 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 19:37 · PVG 03:37 · LAX 12:37 · JFK 15:37
    ♥ Do have faith in what you're doing.