deno - 基于 V8 的 TypeScript 运行时


MIT
跨平台
TypeScript

软件简介

deno

deno 是 V8 上的安全 TypeScript 运行时。

  • 支持 TypeScript 2.8 开箱即用,使用 V8 6.8.275.3 引擎

  • 无 package.json、npm,不追求兼容 Node

  • 通过 URL 方式引入依赖而非通过本地模块,并在第一次运行的时候进行加载和缓存,并仅在代码使用--reload运行,依赖才会更新,引入方式如:

    import { test } from "https://unpkg.com/deno_testing@0.0.5/testing.ts"
    

    import { log } from ”./util.ts”

  • 可以控制文件系统和网络访问权限以运行沙盒代码,默认访问只读文件系统可访问,无网络权限。V8 和 Golang 之间的访问只能通过 protobuf 中定义的序列化消息完成;

  • 最终创建单一可执行文件

     > ls -lh deno
    

    -rwxrwxr-x 1 ryan ryan 55M May 28 23:46 deno
     > ldd deno
      linux-vdso.so.1 =>  (0x00007ffc6797a000)
      libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f104fa47000)
      libstdc.so.6 => /usr/lib/x86_64-linux-gnu/libstdc.so.6 (0x00007f104f6c5000)
      libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f104f3bc000)
      libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f104f1a6000)
      libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f104eddc000)
      /lib64/ld-linux-x86-64.so.2 (0x00007f104fc64000)

  • 发生未捕捉错误时自动终止运行

  • 支持 top-level 的 await

  • 旨在兼容浏览器

  • 可以作为库来引入,以轻松构建自己的 JavaScript runtime
    https://github.com/ry/deno/blob/master/cmd/main.go