chakra-core/ChakraCore
GitHub: chakra-core/ChakraCore
一个源自 Microsoft Edge 的开源 JavaScript 引擎,提供 C API 用于嵌入 C/C++ 项目,也适合 JavaScript 引擎安全研究和漏洞挖掘。
Stars: 9241 | Forks: 1216
# ChakraCore
[](https://discord.gg/dgRawPdNuC)
[](https://github.com/Microsoft/ChakraCore/blob/master/LICENSE.txt)
[](#contribute)
ChakraCore 是一个带有 C API 的 JavaScript 引擎,你可以用它来为任何 C 或 C 兼容项目添加 JavaScript 支持。它可以在 Linux、macOS 和 Windows 上针对 x64 处理器进行编译。而对于 Windows,还可以针对 x86 和 ARM 进行编译。支持 Linux 上的 x86 和 ARM 处理器以及 macOS 上的 ARM 是未来的目标。
## ChakraCore 的未来
正如您可能听说的,Microsoft Edge 不再使用 Chakra。Microsoft 将继续为 ChakraCore 1.11 提供安全更新,直到 2021 年 3 月 9 日,但之后不打算再提供支持。
ChakraCore 计划作为一个社区项目继续存在,主要面向嵌入式用例。我们希望发布包含新功能和增强特性的未来版本,以支持此类用例。我们也邀请任何感兴趣的各方参与此项目。有关更多详细信息,请参阅以下规划草案文档:
[总体计划](https://github.com/chakra-core/org/blob/master/ChakraCore%20Future%20Plan.md)
[版本 1.12 计划](https://github.com/chakra-core/org/blob/master/Release%201.12%20plan.md)
另请参阅 Issue [#6384](https://github.com/microsoft/ChakraCore/issues/6384) 中的讨论
如果您想联系社区团队,请提交 Issue 或加入上面链接的 Discord 聊天。
## 安全
如果您认为在 ChakraCore 1.11 中发现了安全问题,请按照 Microsoft [Security TechCenter](https://technet.microsoft.com/en-us/security/ff852094) 的指引私下与 Microsoft 分享。通过此渠道报告有助于最大限度地降低基于 ChakraCore 构建的项目风险。
如果您在 Chakracore 的 Master 分支中发现安全问题,但在 1.11 版本中没有发现,请加入我们的 Discord 服务器并私信 Core 团队成员之一。
## 文档
* [ChakraCore 架构](https://github.com/chakra-core/ChakraCore/wiki/Architecture-Overview)
* [快速入门:嵌入 ChakraCore](https://github.com/chakra-core/ChakraCore/wiki/Embedding-ChakraCore)
* [API 参考](https://github.com/chakra-core/ChakraCore/wiki/JavaScript-Runtime-%28JSRT%29-Reference)
* [贡献指南](CONTRIBUTING.md)
* [博客、演讲和其他资源](https://github.com/chakra-core/ChakraCore/wiki/Resources)
## 构建 ChakraCore
您可以在安装了 C++ 支持的 Visual Studio 2015 或 2017 的 Windows 7 SP1 或更高版本以及 Windows Server 2008 R2 或更高版本上构建 ChakraCore。安装 Visual Studio 后:
* 通过 ```git clone https://github.com/Microsoft/ChakraCore.git``` 克隆 ChakraCore
* 在 Visual Studio 中打开 `Build\Chakra.Core.sln`
* 生成解决方案
在 macOS 上,您可以使用 xcode 命令行工具和 `cmake` 构建 ChakraCore。
在 Linux 上,您可以使用 `cmake` 和 `ninja` 构建 ChakraCore。
更多详情请参阅 [构建 ChakraCore](https://github.com/chakra-core/ChakraCore/wiki/Building-ChakraCore)。
或者,参阅 [获取 ChakraCore 二进制文件](https://github.com/Microsoft/ChakraCore/wiki/Getting-ChakraCore-binaries) 以获取预构建的 ChakraCore 二进制文件。
## 使用 ChakraCore
构建完成后,您有几种使用 ChakraCore 的选择:
* 最基本的是使用应用程序 *ch.exe*(在 linux 或 macOS 上为 ch)测试引擎是否正常运行。此应用是 ChakraCore 的轻量级宿主,可用于运行小型应用程序。构建后,您可以在以下位置找到此二进制文件:
* Windows: `Build\VcBuild\bin\${platform}_${configuration}` (例如 `Build\VcBuild\bin\x64_debug`)
* macOS/Linux: `buildFolder/config/ch` (例如 `out/Release/ch`)
* 您可以在您的应用程序中[嵌入 ChakraCore](https://github.com/chakra-core/ChakraCore/wiki/Embedding-ChakraCore) - 参阅[文档](https://github.com/chakra-core/ChakraCore/wiki/Embedding-ChakraCore)和[示例](https://aka.ms/chakracoresamples)。
_关于使用 ChakraCore 的说明_:ChakraCore 是一个 JavaScript 引擎,它不包含 Web 浏览器或 Node.js 提供的外部 API。例如,像 ```document.write()``` 这样的 DOM API 是 ChakraCore 未提供的附加 API,在应用程序中嵌入 ChakraCore 时,您需要实现自己的输入和输出 API。为了进行调试,在 `ch` 中您可以使用 ```print()``` 将文本输出到终端。
另外,如果您使用 [vcpkg](https://github.com/Microsoft/vcpkg/) 依赖项管理器,则可以通过单个命令下载并安装 ChakraCore 并集成 CMake:
* vcpkg install chakracore
## 贡献
欢迎对 ChakraCore 进行贡献。您可以通过以下方式为 ChakraCore 做出贡献:
* [提交 Bug](https://github.com/chakra-core/ChakraCore/issues) 并帮助我们验证修复。
* [提交 Pull Request](https://github.com/chakra-core/ChakraCore/pulls) 用于修复 Bug 和开发新功能,并讨论现有的提案
请参阅[贡献指南](CONTRIBUTING.md)了解更多详情。
## 许可证
代码根据 [MIT 许可证](https://github.com/chakra-core/ChakraCore/blob/master/LICENSE.txt)授权。
## 联系我们
如果您对 ChakraCore 有疑问,或者想就您遇到的问题或在处理 ChakraCore Issue 时需要开发建议联系我们,可以通过以下方式联系我们:
* 提交一个 [Issue](https://github.com/chakra-core/ChakraCore/issues/new) 并在 Issue 标题前加上 [Question]。请参阅带有 [Question](https://github.com/chakra-core/ChakraCore/issues?q=label%3AQuestion) 标签的已提出问题。
* 通过上面的 Discord 链接与团队和社区讨论 ChakraCore
标签:Bash脚本, C++, Chakra, ChakraCore, C语言API, Edge遗产, JavaScript引擎, JIT编译, MIT许可, x64, 嵌入式脚本, 开源, 微软, 数据可视化, 数据擦除, 自定义脚本, 解释器, 软件组件, 运行时环境