Get started with DenoWhat is Deno ## “Deno 是基于 V8 并采用 Rust 构建的, 一个简单、现代且安全的 JavaScript 和 TypeScript 运行时环境。” Deno is a simple, modern and secure runtime for JavaScript and TypeScript that uses V8 and is built in Rust. https://deno land/ ## Deno / 基于 V8 V8 是一个由 Google 开发的开源 JavaScript 引擎,其在运行之前将 JavaScript 编译成了机器代码,而非字节码或是解释执行它,以此提升性能。更进一步,使用了如 Inline Cache 等方法来提高性能。有了这些功能,JavaScript 程序与 V8 引擎的速度媲美二进制编译。在 Deno 中,V8 引擎用于执行 JavaScript Rust 构建 Rust 是由 Mozilla 主导开发的通用、编译型编程语言。设计准则为 “安全、并发、实用”,支持函数式、并发式、过程式以及面向对象的编程风格。Deno 使用 Rust 语言来封装 V8 引擎,通过 libdeno 绑定,我们就可以在 JavaScript 中调用隔离的功能。 ## Deno / 简单 1. 天生支持 TypeScript - 使用 Deno 运行 TypeScript0 码力 | 43 页 | 1.51 MB | 2 年前3
15 Envoy Istio WebAssembly 扩展实现原理 边鹏远## Envoy/Istio WebAssembly 扩展实现原理 ... 边鹏远 (github: bianpengyuan) ## 目录 Wasm 和 V8 engine 简介 Wasm 扩展对于Envoy的意义 Wasm 扩展在 Envoy 的实现原理 Wasm 扩展在 Istio 的应用 未来工作 ## WebAssembly “WebAssembly (abbreviated 1) 当 Envoy 主线程加载带有 Wasm 扩展的 listener 时,开始创建一个 V8 Isolate,并且将 Envoy 对于 Wasm ABI 实现注入到创建的 Context 2) V8 加载,解析,编译 Wasm module 3) Envoy Wasm runtime 从 V8 Isolate 中读取扩展实现 至此,主线程完成创建 Base Wasm 实例(模板 Wasm 1.jpg) ## 性能开销 ## ☐ 内存 ☐ Wasm module 代码: 占用 xxx Kb 到 x Mb 不等 ☐ Wasm 运行时的线性内存 ☐ V8 自身运行内存:~10 Mb ## ☐ CPU ☐ V8 背景线程 ☐ C++ 到 Wasm 之间的切换 Envoy::Http::HeaderMapImpl::StaticLookupTable0 码力 | - 页 | 916.89 KB | 1 年前3
Node 的设计错误的许多异步 API 因此而严重老化 ## 遗憾:安全性 • V8 本身是一个非常好的安全沙箱。 - 如果我对如何维护某些应用程序进行更多的思考,Node 可能会拥有一些其他任何语言都无法获得的安全保证。 - 示例:您的 linter 不应该完全访问您的计算机和网络。 ## 遗憾:构建系统(GYP) • 构建系统非常困难且非常重要。 • V8(通过Chrome)开始使用GYP,并且我切换了 Node - GYP 不是一个丑陋的内部界面,它暴露给任何试图绑定到 V8 的人。 - 这对用户来说是一个可怕的经历。这是一种披着 Python 外衣的假 JSON。 ## 遗憾:构建系统(GYP) - GYP 的持续使用可能是 Node 核心最大的故障。 - 我应该提供一个核心的外部功能接口(FFI),而不是指导用户编写 C++ 来绑定到 V8 - 许多人很早就建议搬到FFI(也就是 Cantrill),遗憾的是我忽视了他们的建议。 com/ry/deno V8上一个安全的 TypeScript 运行时 ## Deno 目标:安全 - 利用 JavaScript 是一个安全沙箱的事实。 默认情况下,脚本应该在没有任何网络或文件系统写访问的情况下运行。 用户可以选择通过标志访问:--allow-net --allow-write 这允许用户运行不可信的实用程序(例如就像一个 linter) - 不允许任意本地函数绑定到V8中 所有0 码力 | 28 页 | 767.84 KB | 2 年前3
Introducing NativeScriptJavaScriptCore on iOS • V8 on Android • JavaScriptCore on Windows var time = new android.text.format.Time(); time.set(1, 0, 2015); console.log(time.format("%D")); • Runs on V8 var alert = new UIAlertView(); at build time. ## I njecting native APIs • V8/JavaScript Core have APIs to inject global variables ## v8 namespace Reference Debugger support for the V8 JavaScript engine. More... Namespaces namespace (in backward direction).|| ## I nvoking native APIs var time = new android.text.format.Time(); - V8/JavaScriptCore have C++ callbacks for JS function calls and property accesses. - The NativeScript0 码力 | 47 页 | 3.36 MB | 2 年前3
The Zig Programming Language 0.4.0 Documentationrenderscript64, pub const Arm32 = enum { v8_5a, v8_4a, v8_3a, v8_2a, v8_1a, v8, v8r, v8m_baseline, v8m_mainline, v7, v7em, v7m, v7s, v7k, v7ve v5te, v4t, }; pub const Arm64 = enum { v8_5a, v8_4a, v8_3a, v8_2a, v8_1a, v8, v8r, v8m_baseline, v8m_mainline, }; pub const Kalimba = enum { v5, v4, v3 Architectures: arm v8_4a v8_3a v8_2a v8_1a v8 v8r v8m_baseline v8m_mainline v7 v7em v7m v7s v7k v7ve v6 v6m v6k v6t2 v5 v5te v4t armeb v8_4a v8_3a v8_2a v8_1a v8 v8r v8m_baseline v8m_mainline v7 v7em0 码力 | 207 页 | 5.29 MB | 2 年前3
The Zig Programming Language 0.10.1 Documentationv8_1a 8 v8 9 v8r 10 v8m_baseline 11 v8m_mainline 12 v7 13 v7em 14 v7m 15 v7s 16 v7k 17 v7ve 18 v6 19 v6m 20 v6k 21 v6t2 22 v5 23 v5te 24 v4t 25 armeb 26 v8_4a 27 v8_3a 28 v8_2a 29 v8_1a 30 v8 31 v8r 32 49 v8_3a 50 v8_2a 51 v8_1a 52 v8 53 v8r 54 v8m_baseline 55 v8m_mainline 56 aarch64_be 57 v8_4a 58 v8_3a 59 v8_2a 60 v8_1a 61 v8 62 v8r 63 v8m_baseline 64 v8m_mainline sparc64 83 sparcel 84 s390x 85 thumb 86 v8_4a 87 v8_3a 88 v8_2a 89 v8_1a 90 v8 91 v8r 92 v8m_baseline 93 v8m_mainline 94 v7 95 v7em 96 v7m 97 v7s 98 v7k0 码力 | 239 页 | 8.03 MB | 2 年前3
NodeJS 中文文档 V0.2.3数据流或者文件时,必须要操作二进制数据流。 node 提供了一些方法来创建、操作和接收二进制数据流。 原始的数据保存在 Buffer 类的实例中。Buffer 类似于一个整数数组,不同之处在于它和在 V8 内存堆之外分配的一段内存数据相对应。Buffer 对象的大小不能调整。你可以通过 "require('buffer').Buffer" 来使用这个类。 Buffer { rss: 4935680 , vsize: 41893888 , heapTotal: 1826816 , heapUsed: 650472 } heapTotal 和 heapUsed 表示 V8 占用的内存。 ### process.nextTick(callback) 在事件循环的下一轮调用这个回调。此函数不是 setTimeout(fn, 0) 的别名,它更加高效。 process 'S' 的大小写不同),不同的是此函数是 Script 对象的方法。script.runInThisContext 函数执行对象中的代码并返回结果。执行的代码并不会访问本地作用域,但是可以访问全局作用域(v8: in actual context)。 例子:使用 script.runInThisContext 函数实现代码的一次编译多次执行。 var Script = process.binding('evals')0 码力 | 62 页 | 542.14 KB | 2 年前3
Building Desktop Applications with Electronfrom Google ## • Uses V8 • Uses Blink as layout engine • Electron uses only the Chromium Content API (codename: LIBCC) ### • Node.JS • Open-source JavaScript runtime ## • Uses V8 • Event-driven, non-blocking build • Manually using node-gyp: https://www.npmjs.com/package/node-gyp ## • Troubleshooting: • V8 headers incompatibility • 32 vs 64 bit • When in doubt run electron-rebuild ## Going native • Keytar0 码力 | 41 页 | 5.70 MB | 2 年前3
The Zig Programming Language 0.5.0 Documentationrenderscript64, pub const Arm32 = enum { v8_5a, v8_4a, v8_3a, v8_2a, v8_1a, v8, v8r, v8m_baseline, v8m_mainline, v8_1m_mainline, v7, v7em, v7m, v7s v5te, v4t, }; pub const Arm64 = enum { v8_5a, v8_4a, v8_3a, v8_2a, v8_1a, v8, v8r, v8m_baseline, v8m_mainline, }; pub const Kalimba = enum { v5, v4, }; v3 Architectures: arm v8_4a v8_3a v8_2a v8_1a v8 v8r v8m_baseline v8m_mainline v7 v7em v7m v7s v7k v7ve v6 v6m v6k v6t2 v5 v5te v4t armeb v8_4a v8_3a v8_2a v8_1a v8 v8r v8m_baseline v8m_mainline v7 v7em v7m0 码力 | 224 页 | 5.80 MB | 2 年前3
腾讯基于 Kubernetes 的企业级容器云实践-罗韩梅2018-02-09 09:35:16|| 如左图所示,对某一个实例从v7升级到v8版本。 • 2018-02-06 11:46:38 V7版本开时候运行 • 2018-02-09 09:33:02 对该实例做灰度升级,从V7版本升级到V8版本 • 2018-02-09 09:33:02 开始pull V8版本的image PS:灰度升级属于原地升级,因此不需要重新过调度,升级的效率也会提升。0 码力 | 28 页 | 3.92 MB | 2 年前3
共 94 条
- 1
- 2
- 3
- 4
- 5
- 6
- 10













