chakra-core/ChakraCore

GitHub: chakra-core/ChakraCore

一个源自 Microsoft Edge 的开源 JavaScript 引擎,提供 C API 用于嵌入 C/C++ 项目,也适合 JavaScript 引擎安全研究和漏洞挖掘。

Stars: 9241 | Forks: 1216

# ChakraCore [![Discord 聊天](https://img.shields.io/discord/695166668967510077?label=Discord&logo=Discord)](https://discord.gg/dgRawPdNuC) [![基于 MIT 协议授权](https://img.shields.io/badge/License-MIT-blue.svg)](https://github.com/Microsoft/ChakraCore/blob/master/LICENSE.txt) [![欢迎 PR](https://img.shields.io/badge/PRs%20-welcome-brightgreen.svg)](#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, 嵌入式脚本, 开源, 微软, 数据可视化, 数据擦除, 自定义脚本, 解释器, 软件组件, 运行时环境