QuickJS

基于 C 实现的 JavaScript 引擎
授权协议 MIT
开发语言 JavaScript
所属分类 Web应用开发、 浏览器/JS引擎
软件类型 开源软件
地区 不详
投 递 者 萧远
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

QuickJS 是一个轻量且可嵌入的 JavaScript 引擎,它支持 ES2019 规范,包括 ES module、异步生成器以及 proxies。除此之外,还支持可选的数学扩展,例如大整数(BigInt)、大浮点数(BigFloat)和运算符重载。

主要特性如下

  • 轻量且方便嵌入:QuickJS 只包含一些 C 语言文件,没有额外的依赖,运行一个简单的 hello world 只需要 190 KiB 的 x86 代码
  • 拥有启动时间极短的快速解释器:在单核的台式 PC 上,运行 ECMAScript 测试套件的 56000 个测试大约在 100 秒内完成。一个 runtime 实例的完整生命周期在不到 300ms 内完成
  • 几乎完整的 ES2019 支持,包括 ES module、异步生成器和完整的 Annex B 支持(传统的 Web 兼容性)
  • 完全通过了 ECMAScript 测试套件的测试
  • 可将 JavaScript 源码编译为没有外部依赖的可执行文件
  • 基于引用计数的 GC(以减少内存使用并具有确定性行为)
  • 数学扩展:BigInt、BigFloat、运算符重载、bigint mode 和 math mode
  • 使用 Javascript 实现的具有上下文着色功能(contextual colorization)的命令行解释器
  • 包含使用 C 语言库封装的轻量级内置标准库

BTW,QuickJS 的作者是 Fabrice Bellard,知名开源项目 FFMPEG 和 QEMU 都出自他手。

  • 1 简介 QuickJS是一个小型并且可嵌入的Javascript引擎,它支持ES2020规范,包括模块,异步生成器和代理器。 它可选支持数学扩展,例如大整数 (BigInt),大浮点数 (BigFloat) 以及运算符重载。 1.1 主要功能 轻量而且易于嵌入:只需几个C文件,没有外部依赖,一个x86下的简单的“hello world”程序只要180 KiB。 具有极低启动时间的快速解释器: 在

  • 1 前言 quickjs.c有五万多行代码。我们可以通过QuickJS解析执行JS代码的过程出发来分析QuickJS源码: JSRuntime *rt = JS_NewRuntime(); JSContext *ctx = JS_NewContext(rt); js_std_add_helpers(ctx, 0, NULL); const char *scripts = "console.log

  • 过一段时间可能要用qjs,参考着github上的中文翻译再加上自己的机翻整理了一下,方便以后看 作为小白来说这东西真心看的一脸懵逼,很多地方看不懂 慢慢来吧~等变强了就看得懂了 quickJS JavaScript引擎 1. 简介 QuickJS是一个小型并且可嵌入的Javascript引擎,它支持ES2020规范,包括模块,异步生成器和代理器。 它可选支持数学扩展,例如大整数 (BigInt),

  • 原文见https://www.cnblogs.com/gaobw/p/11693876.html 在github.com/quickjs-zh/QuickJS 代码里有个例子bjson.c, test_bjson.js跟这个一样 1.1. 简介 QuickJS是一个小型的可嵌入Javascript引擎。它支持ES2020规范,包括模块、异步生成器和代理。它还支持数学扩展,比如大整数(BigInt)

  • 1. QuickJS 快速入门 (QuickJS QuickStart) 1.1. 简介 QuickJS是一个小型的可嵌入Javascript引擎。它支持ES2020规范,包括模块、异步生成器和代理。它还支持数学扩展,比如大整数(BigInt)、大浮点数(BigFloat)和操作符重载。 1.2. 安装 Linux 直接下载 源码 make && make install MacOS X 下

  • QuickJS是一个小型可嵌入的Javascript引擎。它支持 ES2019规范, 包括模块,异步生成器和代理。 它可选地支持数学扩展,例如大整数(BigInt),大浮点数(BigFloat)和运算符重载。 主要特点: 小巧且易于嵌入:只需几个C文件,无外部依赖,190 KiB的x86代码用于简单的hello world 程序。 具有极低启动时间的快速解释器:在台式PC的单核上,在大约100秒内

  • QuickJS - 操作码 字节码 QuickJS执行JavaScript代码时,先将源码解析成字节码,然后再执行字节码。而字节码由操作码和操作数组成。操作码有点类似于汇编语言的指令,决定”CPU“执行何种操作。操作数就是操作码将要操作的数据。 操作码的生成 操作码在quickjs-opcode.h中定义。 /* * QuickJS opcode definitions * * Copyr

  • quickjs是bellard大神的作品,小巧(也就1-2M的样子)易用,非常方便将javascript转换为可执行程序或c,速度有可能比v8稍微差一点。 -r--r--r-- 1 user users 1552898 Aug 17 15:04 libquickjs.a -r--r--r-- 1 user users 1169504 Aug 18 07:36 libquickjs.so -r--r

  • quickjs-android 是 QuickJS JavaScript 引擎的 Android 接口框架,整体基于面向对象设计,提供了自动GC功能,使用简单。armeabi-v7a 的大小仅 350KB,是 Google V8 不错的替代品,启动速度比 V8 快,内存占用更低,支持 ES2020。 armeabi-v7a 平台下,整体占用apk空间仅 350KB; JS对象自动GC,无需手动释放

  • JSRuntime *rt = JS_NewRuntime(); JSContext *ctx = JS_NewContext(rt); js_std_add_helpers(ctx, 0, NULL); const char *scripts = "console.log('hello quickjs')"; JS_Eval(ctx, scripts, strlen(scripts), "ma

  • 链接:https://www.jianshu.com/p/1a3128914ed5 QuickJS 是一个轻量级的 JavaScript 引擎,可以代替 V8 实现 JS 脚本的执行,如果要使用 QuickJS,必须要弄懂其垃圾回收原理,否则容易出现野指针或内存泄漏,从而导致程序崩溃,本文通过源码剖析 QuickJS 的垃圾回收原理。 引用计数法 QuickJS 是使用引用计数法来判断对象是否可以

  • 函数对象字节码信息结构体是 JSFunctionBytecode,js 函数在运行时的数据结构是 JSFunctionBytecode,创建函数就是初始化 JSFunctionBytecode 结构体,并设置里面所需的字段,这个过程就是将扫描代码生成的临时 JSFunctionDef 对应到 JSFunctionBytecode 中,由 js_create_function 函数负责处理。JSFu

  • js_create_function 函数会从 JSFunctionDef (2.2)中创建一个函数对象和子函数,然后释放 JSFunctionDef。函数体如下: /* create a function object from a function definition. The function definition is freed. All the child functions

  • JSValue是什么 在JavaScript中,变量是弱类型的。但是C是一个强类型语言。但是QuicksJS作为一个使用C语言编写的虚拟机,少不了和JavaScript代码中的变量交互。如何来解决这个问题呢? QuickJS中,使用JSValue来表示这种变量。因此,JSValue是一个JavaScript变量的代表。它既可以是基础类型也可以是一个对象。它用到了引用计数,因此,明确的对它进行复制(

 相关资料
  • 本文向大家介绍基于javascript实现的快速排序,包括了基于javascript实现的快速排序的使用技巧和注意事项,需要的朋友参考一下     "妙味课堂"的一期视频教学。 主要原理是:快速排序的原理:找基准点、建立二个数组分别存储、递归 基准点:就是找到这个数组中间的一个数; 建立二个数组分别存储:就是以这个基准点,将它的左右数值,分别存放到两个定义的新数组当中; 递归:在函数内部调用自身;

  • 本文向大家介绍基于C#实现网页爬虫,包括了基于C#实现网页爬虫的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了基于C#实现网页爬虫的详细代码,供大家参考,具体内容如下 HTTP请求工具类: 功能: 1、获取网页html 2、下载网络图片 多线程爬取网页代码: 截图: 以上就是本文的全部内容,希望对大家的学习有所帮助。

  • 本文向大家介绍JavaScript实现基于Cookie的存储类实例,包括了JavaScript实现基于Cookie的存储类实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JavaScript实现基于Cookie的存储类。分享给大家供大家参考。具体分析如下: 通过这个JS类,你可以象使用session一样使用cookie,非常简单了! 希望本文所述对大家的javascript程序设计有所

  • 本文向大家介绍基于javascript实现碰撞检测,包括了基于javascript实现碰撞检测的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了javascript实现碰撞检测的具体代码,供大家参考,具体内容如下 碰撞检测原理图如上: 我们检测碰撞时,发现两个div碰上检测比没碰上的检测要难,所以以没碰上作为检测条件。画上九宫格,当红色div在黄色div左边线或是右边线或是上边线或是下

  • 本文向大家介绍基于JavaScript实现抽奖系统,包括了基于JavaScript实现抽奖系统的使用技巧和注意事项,需要的朋友参考一下 用JavaScript实现一个简单的抽奖系统,有【开始】按钮和【停止】按钮。 功能: - 点开始按钮开始抽奖,随机出现奖品名称; - 点停止按钮即可停止抽奖; - 按下回车键可切换开始抽奖和停止抽奖。 html代码: 创建html结构,最基础的要含有显示的奖品名称

  • 本文向大家介绍JavaScript基于setTimeout实现计数的方法,包括了JavaScript基于setTimeout实现计数的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JavaScript基于setTimeout实现计数的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的javascript程序设计有所帮助。