WebAssembly运行时系统:从沙箱隔离到分层编译的底层实现
2017年,WebAssembly正式成为W3C标准。七年后的今天,它已经从"浏览器的第四种语言"演变为跨平台运行时基础设施的核心。但WebAssembly的真正价值远不止于"比JavaScript快"——它的运行时系统设计蕴含着计算机科学中安全、性能、可移植性之间的精妙权衡。 ...
2017年,WebAssembly正式成为W3C标准。七年后的今天,它已经从"浏览器的第四种语言"演变为跨平台运行时基础设施的核心。但WebAssembly的真正价值远不止于"比JavaScript快"——它的运行时系统设计蕴含着计算机科学中安全、性能、可移植性之间的精妙权衡。 ...
打开任务管理器,你会发现一个令人困惑的现象:某些单页应用(SPA)的标签页在后台运行几小时后,内存占用从最初的 50MB 悄然攀升到 500MB 甚至更多。页面开始卡顿,滚动变得迟滞,最终浏览器可能直接弹出"Aw, Snap!“崩溃页面。 ...
2017年3月,WebAssembly在所有主流浏览器中落地。一时间,“JavaScript已死"的论调甚嚣尘上。毕竟,一个能让C++代码在浏览器中以接近原生速度运行的二进制格式,听起来像是动态语言的终结者。 ...
同一个Python程序,在标准CPython解释器下运行需要47秒,换成PyPy只需要2秒。代码完全相同,没有改动任何一行,性能却提升了23倍。这不是魔法,而是即时编译器(JIT)的功劳。 ...
2014年,Philip Roberts 在 JSConf EU 上做了一场名为"What the heck is the event loop anyway?“的演讲。这个演讲后来在 YouTube 上突破了百万播放量,成为理解 JavaScript 异步机制的入门必修课。然而,演讲中并未触及一个更深层的问题:当 setTimeout(fn, 0) 和 Promise.resolve().then(fn) 同时存在时,谁先执行? ...