V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
chai2010
V2EX  ›  程序员

粗大, WebAssembly 居然可以跑 Windows 2000 了!

  •  5
     
  •   chai2010 · 2018-08-21 15:15:30 +08:00 · 18396 次点击
    这是一个创建于 2046 天前的主题,其中的信息可能已经有所发展或是发生改变。
    第 1 条附言  ·  2018-08-22 06:42:50 +08:00

    技术路线其实和以前js模拟Linux命令行差不多。 不过这次是从js换成了WebAssembly,性能有了很大提升,因此得以模拟更耗费资源的图形化的Windows 2000系统。

    2018年应该可以算是WebAssembly元年了,上个月草案1.0发布,这个月即将发布的Go1.11都开始支持WebAssembly了。 正如Ending定律所断言:所有可以用WebAssembly实现的终将会用WebAssembly实现。

    WebAssembly(wasm)资源精选: https://github.com/chai2010/awesome-wasm-zh

    对wasm技术感兴趣的同学可以关注公众号(WASM Hackers/wasm-hackers) 或 QQ群:726475047

    79 条回复    2018-08-24 11:46:55 +08:00
    slack
        1
    slack  
       2018-08-21 16:37:23 +08:00 via Android
    就是 qemu 的作者吗?厉害
    mortal
        2
    mortal  
       2018-08-21 17:07:45 +08:00
    牛批,很喜欢的操作系统
    WildCat
        3
    WildCat  
       2018-08-21 17:15:42 +08:00


    该有的都有哦
    silencefent
        4
    silencefent  
       2018-08-21 17:28:48 +08:00   ❤️ 4
    ie 模仿的很有灵性了
    到现在还没打开
    gkiwi
        5
    gkiwi  
       2018-08-21 19:14:16 +08:00
    @silencefent #4 不是模仿。。。是真的 run 起来
    lneoi
        6
    lneoi  
       2018-08-21 19:21:14 +08:00
    大神大神
    ballshapesdsd
        7
    ballshapesdsd  
       2018-08-21 19:24:25 +08:00
    牛批
    hanxiV2EX
        8
    hanxiV2EX  
       2018-08-21 19:25:04 +08:00 via Android
    厉害,手机上都能跑
    tanglangshan
        9
    tanglangshan  
       2018-08-21 19:26:11 +08:00
    是直接在浏览器模拟了整个 windows ?还是只是对服器上的 windows 进行远程控制?
    RingoTC
        10
    RingoTC  
       2018-08-21 19:27:37 +08:00 via Android   ❤️ 1
    @tanglangshan 不是模拟,是 Windows 系统实实在在地在浏览器上跑起来
    tanglangshan
        11
    tanglangshan  
       2018-08-21 19:29:33 +08:00
    @RingoTC 能在上面安装软件吗
    zhzer
        12
    zhzer  
       2018-08-21 19:29:41 +08:00
    js 天下第一
    winterbells
        13
    winterbells  
       2018-08-21 19:31:07 +08:00
    可以浏览器里跑系统跑浏览器吗(๑•̀ㅂ•́)و✧
    alexsunxl
        14
    alexsunxl  
       2018-08-21 19:35:01 +08:00   ❤️ 3
    @zhzer WebAssembly 跟 js 有一毛钱关系?
    能好好学习吗
    hahastudio
        15
    hahastudio  
       2018-08-21 19:39:05 +08:00 via Android
    解决了浏览器的兼容性问题
    lanmingyan
        16
    lanmingyan  
       2018-08-21 19:46:21 +08:00
    @WildCat 我想知道你怎么在里面配置网络的
    neilp
        17
    neilp  
       2018-08-21 19:55:36 +08:00 via iPhone
    试试
    shiny
        18
    shiny  
       2018-08-21 19:59:04 +08:00
    童年回忆啊
    cy97cool
        19
    cy97cool  
       2018-08-21 20:02:48 +08:00
    @lanmingyan 它这个的实现是提供了一个 websocket 所有流量走代理
    cy97cool
        20
    cy97cool  
       2018-08-21 20:04:23 +08:00
    https://bellard.org/jslinux/faq.html

    Can I access to the network from the virtual machine ?
    Yes it is possible. It uses the websocket VPN offered by Benjamin Burns (see his blog). The bandwidth is capped to 40 kB/s and at most two connections are allowed per public IP address. Please don't abuse the service.
    yksoft1
        21
    yksoft1  
       2018-08-21 20:15:52 +08:00
    JSLinux 主要好处是对 Firefox 友好。
    yksoft1
        22
    yksoft1  
       2018-08-21 20:21:18 +08:00
    我担心,Bellard 大把整个 Win2k 镜像塞网上不怕 M$找上门来么
    darrh00
        23
    darrh00  
       2018-08-21 20:37:45 +08:00
    WildCat
        24
    WildCat  
       2018-08-21 22:20:55 +08:00
    @lanmingyan 没有配置,直接能 run
    pityhero233
        25
    pityhero233  
       2018-08-21 22:47:58 +08:00 via Android
    @tanglangshan 这是 webassembly。
    pityhero233
        26
    pityhero233  
       2018-08-21 22:48:33 +08:00 via Android
    @zhzer ……你这不是无脑引战?
    js 和 wa 有毛关系……
    t6attack
        27
    t6attack  
       2018-08-21 22:52:46 +08:00
    @tanglangshan 这是一个在浏览器中实现的虚拟机。你可以把它等同于 vmware/virtualbox。
    caola
        28
    caola  
       2018-08-21 22:55:02 +08:00
    WebAssembly 以后会代替相当一部分服务器后端的工作,
    C、PHP,Java、Python、等等的语言都可以通过 WebAssembly 来运行
    itfanr
        29
    itfanr  
       2018-08-21 23:30:05 +08:00 via Android
    RingoTC
        30
    RingoTC  
       2018-08-21 23:35:30 +08:00 via Android
    @caola 我觉得更大的用途在于把成熟的库迁移到前端上。比如 ffmpeg,还有一些数值计算的库。某些库复杂且对性能要求高,这样的场景应该是 WebAssembly 的主场景。
    xiaqi
        31
    xiaqi  
       2018-08-21 23:44:26 +08:00 via Android
    卧槽,卧槽,竟然真的把 kernel.bin 下载下来运行起来了,卧槽,卧槽,卧槽。


    @RingoTC 还可以想象一下,,每个人的浏览器都可以运行 server 了会是什么情景?
    当然 4G 网络还有点慢,但是 5G 以后呢?
    每个人打开一个网页就运行了一个服务,...
    RingoTC
        32
    RingoTC  
       2018-08-21 23:52:33 +08:00 via Android
    @xiaqi 不过移动设备性能也是一种限制 😂 但是我认为确实 WebAssembly 是很有前景的
    tyrealgray
        33
    tyrealgray  
       2018-08-21 23:55:03 +08:00
    手机都能开,就是有点卡,不过真的有点屌。看起来前景无可限量啊
    easylee
        34
    easylee  
       2018-08-22 00:09:52 +08:00
    @alexsunxl
    @pityhero233

    我觉得那层的意思可能是说贝拉能将 js 用到出神入化......
    agagega
        35
    agagega  
       2018-08-22 00:10:08 +08:00 via iPhone
    再次给 Bellard 大神跪了...
    f2f2f
        36
    f2f2f  
       2018-08-22 00:12:46 +08:00
    除了速度慢,别的完美
    VDimos
        37
    VDimos  
       2018-08-22 00:28:34 +08:00 via Android
    跨平台开发
    mofe
        38
    mofe  
       2018-08-22 00:49:57 +08:00
    简直碉堡了,一开始看发现渲染在 canvas 上,然后一直挂着一个 websocket,以为是来搞笑的。。。

    后来发现它只是通过 websocket 模拟了网络连接

    每次打开一个应用程序都会卡一下是因为需要加载应用程序的二进制文件(模拟从硬盘中加载资源)

    打开记事本,然后把网断掉才出现了真正恐怖的事情。。这真的是一个活生生的运行在浏览器的系统。。
    tiaod
        39
    tiaod  
       2018-08-22 00:55:31 +08:00 via Android
    卧槽
    RqPS6rhmP3Nyn3Tm
        40
    RqPS6rhmP3Nyn3Tm  
       2018-08-22 01:03:05 +08:00 via iPhone
    @RingoTC ffmpeg 我试过,开了 O3 还卡的一逼。转码别想了,切个图转个音频差不多
    YvesX
        41
    YvesX  
       2018-08-22 01:33:08 +08:00
    我要吹一个月
    jessehzj
        42
    jessehzj  
       2018-08-22 01:39:08 +08:00 via Android
    bellard 怎么那么多黑科技啊?之前还搞了模拟基站
    lslqtz
        43
    lslqtz  
       2018-08-22 04:58:46 +08:00
    跪了
    按国内的网络环境,如果是远程绝对是卡的一批的
    tsui
        44
    tsui  
       2018-08-22 05:44:35 +08:00
    从 load 到启动完成一共传了 25M 的 bin,windows 2K 启动只需要读这么少的磁盘文件么
    ech0x
        45
    ech0x  
       2018-08-22 06:58:52 +08:00 via iPhone
    @RingoTC ffmpeg 已经可以被编译成 Webassembly 了.
    greed1is9good
        46
    greed1is9good  
       2018-08-22 07:01:21 +08:00
    应该只是个 pe 吧,肯定不是完整的系统。。。
    @tsui
    daigouspy
        47
    daigouspy  
       2018-08-22 07:15:11 +08:00 via Android
    @tsui windows 2000 默认启动带图形界面自占用 30m 不到的内存
    yksoft1
        48
    yksoft1  
       2018-08-22 08:06:52 +08:00
    @tsui win2k 好像仅启动系统到 explorer 真只需要读这么多文件。
    ae
        49
    ae  
       2018-08-22 08:17:47 +08:00
    能装仙剑吗
    someonedeng
        50
    someonedeng  
       2018-08-22 09:18:33 +08:00
    WA 这么 6 的吗。。。
    leoleoasd
        51
    leoleoasd  
       2018-08-22 09:43:22 +08:00
    里面装个最新 chrome 然后再跑个虚拟机试试
    deadEgg
        52
    deadEgg  
       2018-08-22 10:07:00 +08:00
    活在现代的高斯。
    hronro
        53
    hronro  
       2018-08-22 10:07:52 +08:00
    请问这个你们是怎么连上网的?
    myyou
        54
    myyou  
       2018-08-22 10:09:31 +08:00
    WebAssembly 是不是以后会逐渐把 js 给淘汰?
    Arrowing
        55
    Arrowing  
       2018-08-22 10:19:22 +08:00
    @myyou 不会,相辅相成,解释型的 js 代码依然会存在,高密集的计算才需要用 WebAssembly
    q397064399
        56
    q397064399  
       2018-08-22 10:19:24 +08:00
    @myyou #54 早得很, 垃圾回收性能怎么样? 兼容性怎么样? 还是需要很长时间
    q397064399
        57
    q397064399  
       2018-08-22 10:21:26 +08:00
    @caola #28 言之过早
    q397064399
        58
    q397064399  
       2018-08-22 10:22:17 +08:00
    @Arrowing #55 真正普及了 也就没 js 什么事情了,浏览器现在大有发展成操作系统的趋势..
    raysonx
        59
    raysonx  
       2018-08-22 10:26:59 +08:00 via Android
    没仔细看。用的好像是 asm.js 而不是 WebAssembly 吧
    joeyFuck
        60
    joeyFuck  
       2018-08-22 11:08:05 +08:00
    mark!
    L3ve
        61
    L3ve  
       2018-08-22 11:09:45 +08:00
    @raysonx 其实你可以这么理解,webassembly 是一个规范,asm 是他的一种实现
    mkeith
        62
    mkeith  
       2018-08-22 11:13:41 +08:00
    @raysonx asm.js 是用来在不支持的浏览器中运行 WebAssembly 的吧
    xuyl
        63
    xuyl  
       2018-08-22 12:07:30 +08:00
    vnc 是在浏览器远程控制的技术,wasm 则是浏览器虚拟机的技术,可以这样理解吗
    tinytin
        64
    tinytin  
       2018-08-22 12:39:40 +08:00
    真大神
    scmod
        65
    scmod  
       2018-08-22 12:55:00 +08:00   ❤️ 1
    打开里面的 ie,再访问 win2000 的地址,里面再打开个 ie,然后再访问.....
    x7395759
        66
    x7395759  
       2018-08-22 12:55:54 +08:00
    @scmod 这样你的机器就报警了
    chengluyu
        67
    chengluyu  
       2018-08-22 13:00:13 +08:00
    @xuyl #63 VNC 是一种远程控制手段。WebAssembly 不是虚拟机,只是一种在浏览器上跑的低级语言。
    a4854857
        68
    a4854857  
       2018-08-22 13:03:56 +08:00
    妈耶。神了
    choury
        69
    choury  
       2018-08-22 13:19:36 +08:00
    @scmod #65 里面那个 IE 肯定不能用 WebAssembly,然后就进行不下去了
    ShareDuck
        70
    ShareDuck  
       2018-08-22 14:41:39 +08:00
    @scmod #65 这当然是可以的,其他虚拟机也能这么干,我闲的蛋疼试过一次,第二层虚拟还是能使用的,第三层就卡成狗了。
    duck2u
        71
    duck2u  
       2018-08-22 15:46:12 +08:00
    paste here 和 upload 是干嘛用的
    zpczjl
        72
    zpczjl  
       2018-08-22 16:35:04 +08:00
    原理是什么,能解释下么?
    weizhen199
        73
    weizhen199  
       2018-08-22 16:42:33 +08:00
    这一天,第一猜想“ js 生万物” 被证明了。
    mooo
        74
    mooo  
       2018-08-22 16:57:01 +08:00
    @zpczjl 浏览器里面跑了个虚拟机
    n37r06u3
        75
    n37r06u3  
       2018-08-22 17:31:29 +08:00
    死过一
    RingoTC
        76
    RingoTC  
       2018-08-22 22:22:46 +08:00
    @weizhen199 但是,JavaScript 在这个项目里面做的事情很少
    yfgeek
        77
    yfgeek  
       2018-08-24 00:02:07 +08:00
    牛批
    seeker
        78
    seeker  
       2018-08-24 11:18:41 +08:00
    改一改,把老游戏搞成页游。
    Reznik
        79
    Reznik  
       2018-08-24 11:46:55 +08:00
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3206 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 11:36 · PVG 19:36 · LAX 04:36 · JFK 07:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.