<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:media="http://search.yahoo.com/mrss/">
  <channel>
    
    <title>GitHub Lua Weekly Trending Repositories</title>
    <description>Weekly Trending Repositories of Lua on GitHub</description>
    
    <pubDate>Wed, 12 Aug 2026 04:34:34 GMT</pubDate>
    <link>https://mshibanami.github.io/GitHubTrendingRSS</link>
    
    <item>
      <title>koreader/koreader</title>
      <link>https://github.com/koreader/koreader</link>
      <description>&lt;p&gt;An ebook reader application supporting PDF, DjVu, EPUB, FB2 and many more formats, running on Cervantes, Kindle, Kobo, PocketBook and Android devices&lt;/p&gt;&lt;hr&gt;&lt;p&gt;&lt;a href=&quot;https://koreader.rocks&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/koreader/koreader.github.io/master/koreader-logo.png&quot; alt=&quot;KOReader&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;h4&gt;KOReader is a document viewer primarily aimed at e-ink readers.&lt;/h4&gt; 
&lt;p&gt;&lt;a href=&quot;https://raw.githubusercontent.com/koreader/koreader/master/COPYING&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/license/koreader/koreader&quot; alt=&quot;AGPL Licence&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/koreader/koreader/releases&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/release/koreader/koreader.svg?sanitize=true&quot; alt=&quot;Latest release&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://gitter.im/koreader/koreader&quot;&gt;&lt;img src=&quot;https://img.shields.io/gitter/room/koreader/koreader?color=red&quot; alt=&quot;Gitter&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://www.mobileread.com/forums/forumdisplay.php?f=276&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/forum-on_mobileread-lightgrey&quot; alt=&quot;Mobileread&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://circleci.com/gh/koreader/koreader&quot;&gt;&lt;img src=&quot;https://circleci.com/gh/koreader/koreader.svg?style=shield&quot; alt=&quot;Build Status&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://codecov.io/gh/koreader/koreader&quot;&gt;&lt;img src=&quot;https://codecov.io/gh/koreader/koreader/branch/master/graph/badge.svg?sanitize=true&quot; alt=&quot;Coverage Status&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://hosted.weblate.org/engage/koreader/?utm_source=widget&quot;&gt;&lt;img src=&quot;https://hosted.weblate.org/widgets/koreader/-/koreader/svg-badge.svg?sanitize=true&quot; alt=&quot;Weblate Status&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/koreader/koreader/releases&quot;&gt;Download&lt;/a&gt; • &lt;a href=&quot;http://koreader.rocks/user_guide/&quot;&gt;User guide&lt;/a&gt; • &lt;a href=&quot;https://github.com/koreader/koreader/wiki&quot;&gt;Wiki&lt;/a&gt; • &lt;a href=&quot;http://koreader.rocks/doc/&quot;&gt;Developer docs&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;Main features&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;portable&lt;/strong&gt;: runs on embedded devices (Cervantes, Kindle, Kobo, PocketBook, reMarkable), Android and Linux computers. Developers can run a KOReader emulator in Linux and MacOS.&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;multi-format documents&lt;/strong&gt;: supports fixed page formats (PDF, DjVu, CBT, CBZ) and reflowable e-book formats (EPUB, FB2, Mobi, DOC, RTF, HTML, CHM, TXT). Scanned PDF/DjVu documents can also be reflowed with the built-in K2pdfopt library. &lt;a href=&quot;https://github.com/koreader/koreader/wiki/ZIP&quot;&gt;ZIP files&lt;/a&gt; are also supported for some formats.&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;full-featured reading&lt;/strong&gt;: multi-lingual user interface with a highly customizable reader view and many typesetting options. You can set arbitrary page margins, override line spacing and choose external fonts and styles. It has multi-lingual hyphenation dictionaries bundled into the application.&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;integrated&lt;/strong&gt; with &lt;em&gt;calibre&lt;/em&gt; (search metadata, receive ebooks wirelessly, browse library via OPDS), &lt;em&gt;Wallabag&lt;/em&gt;, &lt;em&gt;Wikipedia&lt;/em&gt;, &lt;em&gt;Google Translate&lt;/em&gt; and other content providers.&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;optimized for e-ink devices&lt;/strong&gt;: custom UI without animation, with paginated menus, adjustable text contrast, and easy zoom to fit content or page in paged media.&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;extensible&lt;/strong&gt;: via plugins&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;fast&lt;/strong&gt;: on some older devices, it has been measured to have less than half the page-turn delay as the built in reading software.&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;and much more&lt;/strong&gt;: look up words with StarDict dictionaries / Wikipedia, add your own online OPDS catalogs and RSS feeds, over-the-air software updates, an FTP client, an SSH server, …&lt;/p&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Please check the &lt;a href=&quot;http://koreader.rocks/user_guide/&quot;&gt;user guide&lt;/a&gt; and the &lt;a href=&quot;https://github.com/koreader/koreader/wiki&quot;&gt;wiki&lt;/a&gt; to discover more features and to help us document them.&lt;/p&gt; 
&lt;h2&gt;Screenshots&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/koreader/koreader-artwork/raw/master/koreader-menu.png&quot;&gt;&lt;img src=&quot;https://github.com/koreader/koreader-artwork/raw/master/koreader-menu-thumbnail.png&quot; alt=&quot;&quot; width=&quot;200px&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/koreader/koreader-artwork/raw/master/koreader-footnotes.png&quot;&gt;&lt;img src=&quot;https://github.com/koreader/koreader-artwork/raw/master/koreader-footnotes-thumbnail.png&quot; alt=&quot;&quot; width=&quot;200px&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/koreader/koreader-artwork/raw/master/koreader-dictionary.png&quot;&gt;&lt;img src=&quot;https://github.com/koreader/koreader-artwork/raw/master/koreader-dictionary-thumbnail.png&quot; alt=&quot;&quot; width=&quot;200px&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;Installation&lt;/h2&gt; 
&lt;p&gt;Please follow the model specific steps for your device:&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/koreader/koreader/wiki/Installation-on-Android-devices&quot;&gt;Android&lt;/a&gt; • &lt;a href=&quot;https://github.com/koreader/koreader/wiki/Installation-on-BQ-devices&quot;&gt;Cervantes&lt;/a&gt; • &lt;a href=&quot;https://github.com/koreader/koreader/wiki/Installation-on-Kindle-devices&quot;&gt;Kindle&lt;/a&gt; • &lt;a href=&quot;https://github.com/koreader/koreader/wiki/Installation-on-Kobo-devices&quot;&gt;Kobo&lt;/a&gt; • &lt;a href=&quot;https://github.com/koreader/koreader/wiki/Installation-on-desktop-linux&quot;&gt;Linux&lt;/a&gt; • &lt;a href=&quot;https://github.com/koreader/koreader/wiki/Installation-on-PocketBook-devices&quot;&gt;Pocketbook&lt;/a&gt; • &lt;a href=&quot;https://github.com/koreader/koreader/wiki/Installation-on-Remarkable&quot;&gt;reMarkable&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;Development&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://raw.githubusercontent.com/koreader/koreader/master/doc/Building.md&quot;&gt;Setting up a build environment&lt;/a&gt; • &lt;a href=&quot;https://raw.githubusercontent.com/koreader/koreader/master/doc/Collaborating_with_Git.md&quot;&gt;Collaborating with Git&lt;/a&gt; • &lt;a href=&quot;https://raw.githubusercontent.com/koreader/koreader/master/doc/Building_targets.md&quot;&gt;Building targets&lt;/a&gt; • &lt;a href=&quot;https://raw.githubusercontent.com/koreader/koreader/master/doc/Porting.md&quot;&gt;Porting&lt;/a&gt; • &lt;a href=&quot;http://koreader.rocks/doc/&quot;&gt;Developer docs&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;Support&lt;/h2&gt; 
&lt;p&gt;KOReader is developed and supported by volunteers all around the world. There are many ways you can help:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/koreader/koreader/issues?q=is%3Aopen+is%3Aissue+label%3Abug&quot;&gt;fix bugs&lt;/a&gt; and &lt;a href=&quot;https://github.com/koreader/koreader/issues?q=is%3Aopen+is%3Aissue+label%3Aenhancement&quot;&gt;implement new features&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://hosted.weblate.org/engage/koreader/?utm_source=widget&quot;&gt;translate the program into your language&lt;/a&gt; or improve an existing translation&lt;/li&gt; 
 &lt;li&gt;document lesser-known features on the &lt;a href=&quot;https://github.com/koreader/koreader/wiki&quot;&gt;wiki&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;help others with your knowledge on the &lt;a href=&quot;http://www.mobileread.com/forums/forumdisplay.php?f=276&quot;&gt;forum&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Right now we only support &lt;a href=&quot;https://liberapay.com/KOReader&quot;&gt;liberapay&lt;/a&gt; donations.&lt;/p&gt; 
&lt;h2&gt;Contributors&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/koreader/koreader/commits/master&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/last-commit/koreader/koreader?color=orange&quot; alt=&quot;Last commit&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/koreader/koreader/pulse&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/commit-activity/m/koreader/koreader&quot; alt=&quot;Commit activity&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>amzxyz/rime-wanxiang</title>
      <link>https://github.com/amzxyz/rime-wanxiang</link>
      <description>&lt;p&gt;「万象拼音」：把算法留在幕后，把纯粹还给指尖，用更优质的数据，接管你的候选。Q群：11033572 / 11631066&lt;/p&gt;&lt;hr&gt;&lt;div align=&quot;center&quot;&gt; 
 &lt;h1&gt;🌳 万象拼音&lt;/h1&gt; 
 &lt;p&gt;&lt;strong&gt;重塑 Rime 生态，带来极致的输入体验。&lt;/strong&gt;&lt;/p&gt; 
 &lt;p&gt;&lt;a href=&quot;https://amzxyz.github.io/rime-wanxiang/&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/%F0%9F%9A%80_%E5%BF%AB%E9%80%9F%E4%B8%8A%E6%89%8B-%E6%8E%A2%E7%B4%A2%E6%96%87%E6%A1%A3-4CAF50?style=for-the-badge&quot; alt=&quot;快速上手&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/amzxyz/rime-wanxiang&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/%E2%AD%90_GitHub_%E4%BB%93%E5%BA%93-%E8%AE%BF%E9%97%AE%E4%B8%BB%E9%A1%B5-2ea44f?style=for-the-badge&quot; alt=&quot;GitHub&quot; /&gt;&lt;/a&gt; &lt;br /&gt; &lt;a href=&quot;https://creativecommons.org/licenses/by/4.0/&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/License-CC%20BY%204.0-lightgrey.svg?sanitize=true&quot; alt=&quot;License: CC BY 4.0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/amzxyz/rime-wanxiang/releases/&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/v/release/amzxyz/rime-wanxiang?filter=!nightly&quot; alt=&quot;GitHub Release&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/amzxyz/rime-wanxiang/actions/workflows/release.yml&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/actions/workflow/status/amzxyz/rime-wanxiang/release.yml&quot; alt=&quot;GitHub Actions Workflow Status&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/amzxyz/rime-wanxiang/stargazers&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/amzxyz/rime-wanxiang?style=flat&amp;amp;color=success&quot; alt=&quot;GitHub Repo stars&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;/div&gt; 
&lt;hr /&gt; 
&lt;h2&gt;🌌 万象拼音——基于深度优化的词库和语法模型&lt;/h2&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;&lt;strong&gt;💎 核心基石：&lt;/strong&gt; &lt;a href=&quot;https://github.com/amzxyz/RIME-LMDG&quot;&gt;万象词库&lt;/a&gt; 经 AI 与海量语料深度优化(目前已进入手动维护期)，是一款专为“语句流”“类大厂”打造的全方案立体词库。它将&lt;strong&gt;带调拼音标注、词组构成与精准词频&lt;/strong&gt;作为体验基石，以日常与专业词汇为主体，结合语法模型，为您带来精准、流畅的输入体验。&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;开放生态&lt;/strong&gt;：支持高度自定义，鼓励通过“词库 + 转写”打造您的专属输入方案。&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;持续打磨&lt;/strong&gt;：我们极度重视数据准确与时效，欢迎随时反馈。&lt;/li&gt; 
 &lt;li&gt;📝 &lt;strong&gt;&lt;a href=&quot;https://docs.qq.com/smartsheet/DWHZsdnZZaGh5bWJI?viewId=vUQPXH&amp;amp;tab=BB08J2&quot;&gt;万象词库问题收集反馈表&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;hr /&gt; 
&lt;h2&gt;✨ 效果预览&lt;/h2&gt; 
&lt;p&gt;&lt;img src=&quot;https://storage.deepin.org/thread/202502200358104987_%E6%95%88%E6%9E%9C.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;🧭 探索万象&lt;/h2&gt; 
&lt;table width=&quot;100%&quot; align=&quot;center&quot; border=&quot;0&quot; cellspacing=&quot;15&quot; cellpadding=&quot;0&quot;&gt; 
 &lt;tbody&gt;
  &lt;tr&gt; 
   &lt;td width=&quot;50%&quot; valign=&quot;top&quot;&gt; 
    &lt;div style=&quot;border: 1px solid #546e7a4d; border-radius: 12px; padding: 20px;&quot;&gt; 
     &lt;h3&gt;🚀 快速上手&lt;/h3&gt; 
     &lt;p&gt;从零开始，为您在 Windows、macOS 以及 iOS/Android 移动端部署万象。&lt;/p&gt; 
     &lt;a href=&quot;https://amzxyz.github.io/rime-wanxiang/doc/intro&quot;&gt;&lt;strong&gt;➡️ 立即安装&lt;/strong&gt;&lt;/a&gt; 
    &lt;/div&gt; &lt;/td&gt; 
   &lt;td width=&quot;50%&quot; valign=&quot;top&quot;&gt; 
    &lt;div style=&quot;border: 1px solid #546e7a4d; border-radius: 12px; padding: 20px;&quot;&gt; 
     &lt;h3&gt;⌨️ 核心输入体系&lt;/h3&gt; 
     &lt;p&gt;深入解析万象独特的“带调拼音标注”、强大的辅码系统（小鹤、自然码等）以及中英混输机制。&lt;/p&gt; 
     &lt;a href=&quot;https://amzxyz.github.io/rime-wanxiang/doc/aux_code&quot;&gt;&lt;strong&gt;➡️ 了解核心&lt;/strong&gt;&lt;/a&gt; 
    &lt;/div&gt; &lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td width=&quot;50%&quot; valign=&quot;top&quot;&gt; 
    &lt;div style=&quot;border: 1px solid #546e7a4d; border-radius: 12px; padding: 20px;&quot;&gt; 
     &lt;h3&gt;🪄 Lua 魔法扩展&lt;/h3&gt; 
     &lt;p&gt;计算器、超级注释、符号包裹、动态时间戳、超级符号库（按名输入数千 Unicode 符号）... 探索让 Rime 拥有“超能力”的数十种微创新脚本。&lt;/p&gt; 
     &lt;a href=&quot;https://amzxyz.github.io/rime-wanxiang/doc/shijian&quot;&gt;&lt;strong&gt;➡️ 探索魔法&lt;/strong&gt;&lt;/a&gt; 
    &lt;/div&gt; &lt;/td&gt; 
   &lt;td width=&quot;50%&quot; valign=&quot;top&quot;&gt; 
    &lt;div style=&quot;border: 1px solid #546e7a4d; border-radius: 12px; padding: 20px;&quot;&gt; 
     &lt;h3&gt;⚙️ 词库与模型&lt;/h3&gt; 
     &lt;p&gt;深度解析万象的现代数据工程。算一笔隐形的“时间账”，彻底告别低效的候选翻页，让输入如呼吸般自然。&lt;/p&gt; 
     &lt;a href=&quot;https://amzxyz.github.io/rime-wanxiang/doc/dict_gram&quot;&gt;&lt;strong&gt;➡️ 揭秘底层逻辑&lt;/strong&gt;&lt;/a&gt; 
    &lt;/div&gt; &lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt;
&lt;/table&gt; 
&lt;hr /&gt; 
&lt;h2&gt;💎 标准版 vs 增强版&lt;/h2&gt; 
&lt;p&gt;万象提供两个主要版本，请根据您的输入习惯选择。为了获得最佳体验，&lt;strong&gt;请务必了解您所选版本的特性&lt;/strong&gt;：&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;特性对比 &lt;img width=&quot;180&quot; style=&quot;display:none;&quot; /&gt;&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;🟢 标准版 (Base) &lt;img width=&quot;340&quot; style=&quot;display:none;&quot; /&gt;&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;🔵 增强版 (Pro) &lt;img width=&quot;340&quot; style=&quot;display:none;&quot; /&gt;&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;strong&gt;适用人群&lt;/strong&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;新手、全拼用户、追求省心的双拼用户&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;硬核双拼用户、重度辅码与造词需求者&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;strong&gt;方案文件&lt;/strong&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;wanxiang.schema.yaml&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;wanxiang_pro.schema.yaml&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;strong&gt;支持类型&lt;/strong&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;全拼、任意双拼&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;strong&gt;仅支持双拼&lt;/strong&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;strong&gt;自动调频&lt;/strong&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;默认开启&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;strong&gt;默认关闭&lt;/strong&gt; (精准控制)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;strong&gt;用户词记录&lt;/strong&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;自动记录，无差别积累&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;手动/无感造词，词库绝对可控&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;strong&gt;辅助码支持&lt;/strong&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;仅基于声调的辅助&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;strong&gt;8 种辅助码可选&lt;/strong&gt; + 声调辅助&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;strong&gt;全场景辅筛&lt;/strong&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;支持两分、多分、笔画、声调&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;全面支持 + 专属辅助码筛选&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;hr /&gt; 
&lt;h2&gt;生态：&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/Mintimate/oh-my-rime&quot;&gt;薄荷拼音&lt;/a&gt; :使用万象词库的综合性方案，特别是其修改的地球拼音能够继承万象的词库声调编码。&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/yuanz-12/wanxiang_yoemin&quot;&gt;鸢鸣万象&lt;/a&gt; :一个基于万象拼音生态融合李氏三拼与辅助码能力的手机用方案。&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/zhhwux/wxzhh&quot;&gt;万象虎&lt;/a&gt; : 一个基于万象生态的虎码整句方案。&lt;/p&gt; 
&lt;hr /&gt; 
&lt;div align=&quot;center&quot; style=&quot;margin-top: 3rem; margin-bottom: 2rem;&quot;&gt; 
 &lt;img alt=&quot;pay&quot; src=&quot;https://raw.githubusercontent.com/amzxyz/rime-wanxiang/wanxiang/custom/%E8%B5%9E%E8%B5%8F.jpg&quot; width=&quot;300&quot; style=&quot;width: 300px !important; max-width: 300px !important;&quot; /&gt; 
 &lt;p style=&quot;margin-top: 1.2rem; font-size: 1.1em;&quot;&gt; &lt;strong&gt;如果觉得项目好用，欢迎在 GitHub 为我们点亮 Star！&lt;/strong&gt; &lt;/p&gt; 
 &lt;p style=&quot;margin-top: 0.5rem; color: #555;&quot;&gt; &lt;/p&gt;
 &lt;p style=&quot;margin-top: 0.5rem; opacity: 0.8;&quot;&gt; &lt;i&gt;用更优质的数据，接管你的候选词。&lt;/i&gt; &lt;/p&gt; 
&lt;/div&gt;</description>
      
    </item>
    
    <item>
      <title>miscusi-peek/cheatengine-mcp-bridge</title>
      <link>https://github.com/miscusi-peek/cheatengine-mcp-bridge</link>
      <description>&lt;p&gt;Connect Cursor, Copilot &amp; Claude AI directly to Cheat Engine via MCP. Automate reverse engineering, pointer scanning, and memory analysis using natural language.&lt;/p&gt;&lt;hr&gt;&lt;p&gt;&lt;a href=&quot;https://github.com/user-attachments/assets/a184a006-f569-4b55-858a-ed80a7139035&quot;&gt;Demo&lt;/a&gt;&lt;/p&gt; 
&lt;h1&gt;Cheat Engine MCP Bridge&lt;/h1&gt; 
&lt;p&gt;&lt;strong&gt;Let multibillion $ AI datacenters analyze the program memory for you.&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;Create mods, trainers, security audits, game bots, accelerate RE, or do anything else with any program and game in a fraction of a time.&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://raw.githubusercontent.com/miscusi-peek/cheatengine-mcp-bridge/main/#&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/version-12.0.0-blue.svg?sanitize=true&quot; alt=&quot;Version&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://python.org&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/python-3.10%2B-green.svg?sanitize=true&quot; alt=&quot;Python&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;div class=&quot;markdown-alert markdown-alert-note&quot;&gt;
 &lt;p class=&quot;markdown-alert-title&quot;&gt;
  &lt;svg class=&quot;octicon octicon-info mr-2&quot; viewbox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;
   &lt;path d=&quot;M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8Zm8-6.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13ZM6.5 7.75A.75.75 0 0 1 7.25 7h1a.75.75 0 0 1 .75.75v2.75h.25a.75.75 0 0 1 0 1.5h-2a.75.75 0 0 1 0-1.5h.25v-2h-.25a.75.75 0 0 1-.75-.75ZM8 6a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z&quot;&gt;&lt;/path&gt;
  &lt;/svg&gt;Note&lt;/p&gt;
 &lt;p&gt;Thanks everyone for the stars, much appreciated! ❤️&lt;/p&gt; 
 &lt;p&gt;Specially a big thank you to all the contributors!!&lt;/p&gt; 
 &lt;p&gt;&lt;a href=&quot;https://github.com/libangli218&quot;&gt;@libangli218&lt;/a&gt;, &lt;a href=&quot;https://github.com/lauralex&quot;&gt;@lauralex&lt;/a&gt;, &lt;a href=&quot;https://github.com/iamtyroon&quot;&gt;@iamtyroon&lt;/a&gt;, &lt;a href=&quot;https://github.com/HachiroSan&quot;&gt;@HachiroSan&lt;/a&gt;, &lt;a href=&quot;https://github.com/Attacktive&quot;&gt;@Attacktive&lt;/a&gt;&lt;/p&gt; 
&lt;/div&gt; 
&lt;hr /&gt; 
&lt;h2&gt;The Problem&lt;/h2&gt; 
&lt;p&gt;You&#39;re staring at gigabytes of memory. Millions of addresses. Thousands of functions. Finding &lt;em&gt;that one pointer&lt;/em&gt;, &lt;em&gt;that one structure&lt;/em&gt; takes &lt;strong&gt;days or weeks&lt;/strong&gt; of manual work.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;What if you could just ask?&lt;/strong&gt;&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;&lt;em&gt;&quot;Find the packet decryptor hook.&quot;&lt;/em&gt;&lt;br /&gt; &lt;em&gt;&quot;Find the OPcode of character coordinates.&quot;&lt;/em&gt;&lt;br /&gt; &lt;em&gt;&quot;Find the OPcode of health values.&quot;&lt;/em&gt;&lt;br /&gt; &lt;em&gt;&quot;Find the unique AOB pattern to make my trainer reliable after game updates.&quot;&lt;/em&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;&lt;strong&gt;That&#39;s exactly what this does.&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;&lt;em&gt;- Stop clicking through hex dumps and start having conversations with the memory.&lt;/em&gt;&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;What You Get:&lt;/h2&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Before (Manual)&lt;/th&gt; 
   &lt;th&gt;After (AI Agent + MCP)&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Day 1: Find packet address&lt;/td&gt; 
   &lt;td&gt;Minute 1: &quot;Find RX packet decryption hook&quot;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Day 2: Trace what writes to it&lt;/td&gt; 
   &lt;td&gt;Minute 3: &quot;Generate unique AOB signature to make it update persistent&quot;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Day 3: Find RX hook&lt;/td&gt; 
   &lt;td&gt;Minute 6: &quot;Find movement OPcodes&quot;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Day 4: Document structure&lt;/td&gt; 
   &lt;td&gt;Minute 10: &quot;Create python interpreter of hex to plain text&quot;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Day 5: Game updates, start over&lt;/td&gt; 
   &lt;td&gt;&lt;strong&gt;Done.&lt;/strong&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;&lt;strong&gt;Your AI can now:&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Read any memory instantly (integers, floats, strings, pointers)&lt;/li&gt; 
 &lt;li&gt;Follow pointer chains: &lt;code&gt;[[base+0x10]+0x20]+0x8&lt;/code&gt; → resolved in ms&lt;/li&gt; 
 &lt;li&gt;Auto-analyze structures with field types and values&lt;/li&gt; 
 &lt;li&gt;Identify C++ objects via RTTI: &lt;em&gt;&quot;This is a CPlayer object&quot;&lt;/em&gt;&lt;/li&gt; 
 &lt;li&gt;Disassemble and analyze functions&lt;/li&gt; 
 &lt;li&gt;Debug invisibly with hardware breakpoints + Ring -1 hypervisor&lt;/li&gt; 
 &lt;li&gt;And much more!&lt;/li&gt; 
&lt;/ul&gt; 
&lt;hr /&gt; 
&lt;h2&gt;How It Works&lt;/h2&gt; 
&lt;pre&gt;&lt;code class=&quot;language-mermaid&quot;&gt;flowchart TD
    AI[AI Agent: Claude/Cursor/Copilot]
    
    AI --&amp;gt;|MCP Protocol - JSON-RPC over stdio| MCP
    
    MCP[mcp_cheatengine.py - Python MCP Server]
    
    MCP &amp;lt;--&amp;gt;|Named Pipe - Async| PIPE
    
    PIPE[&quot;\\.\\pipe\\CE_MCP_Bridge_v99&quot;]
    
    PIPE &amp;lt;--&amp;gt; CE
    
    subgraph CE[Cheat Engine - DBVM Mode]
        subgraph LUA[ce_mcp_bridge.lua]
            WORKER[Worker Thread - Blocking I/O]
            MAIN[Main Thread - GUI + CE API]
            WORKER &amp;lt;--&amp;gt;|Sync| MAIN
        end
    end
    
    MAIN --&amp;gt;|Memory Access| TARGET[Target .exe]
&lt;/code&gt;&lt;/pre&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Installation&lt;/h2&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;pip install -r MCP_Server/requirements.txt
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Or manually:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;pip install mcp pywin32
&lt;/code&gt;&lt;/pre&gt; 
&lt;div class=&quot;markdown-alert markdown-alert-note&quot;&gt;
 &lt;p class=&quot;markdown-alert-title&quot;&gt;
  &lt;svg class=&quot;octicon octicon-info mr-2&quot; viewbox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;
   &lt;path d=&quot;M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8Zm8-6.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13ZM6.5 7.75A.75.75 0 0 1 7.25 7h1a.75.75 0 0 1 .75.75v2.75h.25a.75.75 0 0 1 0 1.5h-2a.75.75 0 0 1 0-1.5h.25v-2h-.25a.75.75 0 0 1-.75-.75ZM8 6a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z&quot;&gt;&lt;/path&gt;
  &lt;/svg&gt;Note&lt;/p&gt;
 &lt;p&gt;Native pipe mode is &lt;strong&gt;Windows only&lt;/strong&gt; because it uses Named Pipes (&lt;code&gt;pywin32&lt;/code&gt;). Use TCP relay transport when the MCP server runs outside the Windows environment that hosts Cheat Engine and cannot open the named pipe directly.&lt;/p&gt; 
&lt;/div&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Quick Start&lt;/h2&gt; 
&lt;h3&gt;1. Load Bridge in Cheat Engine&lt;/h3&gt; 
&lt;ol&gt; 
 &lt;li&gt;Enable DBVM in Cheat Engine if you plan to use DBVM tools.&lt;/li&gt; 
 &lt;li&gt;Open Cheat Engine&#39;s Lua Engine or script executor. 
  &lt;ul&gt; 
   &lt;li&gt;Preferred: &lt;code&gt;File&lt;/code&gt; -&amp;gt; &lt;code&gt;Execute Script&lt;/code&gt; -&amp;gt; open &lt;code&gt;MCP_Server/ce_mcp_bridge.lua&lt;/code&gt; -&amp;gt; &lt;code&gt;Execute&lt;/code&gt;.&lt;/li&gt; 
   &lt;li&gt;If your Cheat Engine build does not show &lt;code&gt;File&lt;/code&gt; -&amp;gt; &lt;code&gt;Execute Script&lt;/code&gt;, use &lt;code&gt;Table&lt;/code&gt; -&amp;gt; &lt;code&gt;Show Cheat Table Lua Script&lt;/code&gt;, paste the &lt;code&gt;dofile(...)&lt;/code&gt; line below, and execute it:&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
&lt;/ol&gt; 
&lt;pre&gt;&lt;code class=&quot;language-lua&quot;&gt;dofile([[C:\path\to\cheatengine-mcp-bridge\MCP_Server\ce_mcp_bridge.lua]])
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Look for: &lt;code&gt;[MCP v12.0.0] MCP Server Listening on: CE_MCP_Bridge_v99&lt;/code&gt;&lt;/p&gt; 
&lt;h3&gt;2. Configure MCP Client&lt;/h3&gt; 
&lt;p&gt;Add to your MCP configuration (e.g., &lt;code&gt;mcp_config.json&lt;/code&gt;):&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;{
  &quot;servers&quot;: {
    &quot;cheatengine&quot;: {
      &quot;command&quot;: &quot;python&quot;,
      &quot;args&quot;: [&quot;C:/path/to/MCP_Server/mcp_cheatengine.py&quot;]
    }
  }
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Restart the IDE to load the MCP server config.&lt;/p&gt; 
&lt;p&gt;For Codex, add a TOML server block to &lt;code&gt;~/.codex/config.toml&lt;/code&gt;:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-toml&quot;&gt;[mcp_servers.cheatengine]
command = &quot;python&quot;
args = [&#39;C:\path\to\cheatengine-mcp-bridge\MCP_Server\mcp_cheatengine.py&#39;]
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Use single quotes for the Windows path so TOML treats backslashes literally.&lt;/p&gt; 
&lt;h4&gt;TCP relay transport&lt;/h4&gt; 
&lt;p&gt;The TCP relay lets &lt;code&gt;mcp_cheatengine.py&lt;/code&gt; talk to Cheat Engine through a TCP socket instead of opening the Windows named pipe itself. Cheat Engine and the Lua bridge still run on Windows, while the MCP server can run anywhere that can reach the relay: another Windows process, a VM, a container, a Linux host, or a remote machine. This can also be used with WSL without changing the Lua bridge.&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;On Windows, load &lt;code&gt;MCP_Server/ce_mcp_bridge.lua&lt;/code&gt; in Cheat Engine as usual.&lt;/li&gt; 
 &lt;li&gt;On Windows, start the relay:&lt;/li&gt; 
&lt;/ol&gt; 
&lt;pre&gt;&lt;code class=&quot;language-powershell&quot;&gt;python C:\path\to\cheatengine-mcp-bridge\MCP_Server\ce_tcp_relay.py --host 127.0.0.1 --port 9876
&lt;/code&gt;&lt;/pre&gt; 
&lt;ol start=&quot;3&quot;&gt; 
 &lt;li&gt;In the environment where the MCP server will run, install the MCP dependency without &lt;code&gt;pywin32&lt;/code&gt;, then run/configure the MCP server with TCP transport:&lt;/li&gt; 
&lt;/ol&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;python3 -m pip install -r MCP_Server/requirements-tcp.txt
&lt;/code&gt;&lt;/pre&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;CE_MCP_TRANSPORT=tcp \
CE_MCP_HOST=127.0.0.1 \
CE_MCP_PORT=9876 \
python3 /path/to/cheatengine-mcp-bridge/MCP_Server/mcp_cheatengine.py
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;For MCP client configs that support environment variables:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;{
  &quot;servers&quot;: {
    &quot;cheatengine&quot;: {
      &quot;command&quot;: &quot;python3&quot;,
      &quot;args&quot;: [&quot;/path/to/cheatengine-mcp-bridge/MCP_Server/mcp_cheatengine.py&quot;],
      &quot;env&quot;: {
        &quot;CE_MCP_TRANSPORT&quot;: &quot;tcp&quot;,
        &quot;CE_MCP_HOST&quot;: &quot;127.0.0.1&quot;,
        &quot;CE_MCP_PORT&quot;: &quot;9876&quot;
      }
    }
  }
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Set &lt;code&gt;--host&lt;/code&gt; on the relay and &lt;code&gt;CE_MCP_HOST&lt;/code&gt; on the MCP server to addresses that match your network setup. Keep the relay bound to trusted interfaces only, because anyone who can reach it can control the Cheat Engine bridge.&lt;/p&gt; 
&lt;h3&gt;3. Verify Connection&lt;/h3&gt; 
&lt;p&gt;Use the &lt;code&gt;ping&lt;/code&gt; tool to verify connectivity:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;{&quot;success&quot;: true, &quot;version&quot;: &quot;12.0.0&quot;, &quot;message&quot;: &quot;CE MCP Bridge Active&quot;}
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;4. Start Asking Questions&lt;/h3&gt; 
&lt;pre&gt;&lt;code&gt;&quot;What process is attached?&quot;
&quot;Read 16 bytes at the base address&quot;
&quot;Disassemble the entry point&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;hr /&gt; 
&lt;h2&gt;~180 MCP Tools Available&lt;/h2&gt; 
&lt;h3&gt;Memory&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Tool&lt;/th&gt; 
   &lt;th&gt;Description&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;read_memory&lt;/code&gt;, &lt;code&gt;read_integer&lt;/code&gt;, &lt;code&gt;read_string&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Read any data type&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;read_pointer_chain&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Follow &lt;code&gt;[[base+0x10]+0x20]&lt;/code&gt; paths&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;scan_all&lt;/code&gt;, &lt;code&gt;aob_scan&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Find values and byte patterns&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;Analysis&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Tool&lt;/th&gt; 
   &lt;th&gt;Description&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;disassemble&lt;/code&gt;, &lt;code&gt;analyze_function&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Code analysis&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;dissect_structure&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Auto-detect fields and types&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;get_rtti_classname&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Identify C++ object types&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;find_references&lt;/code&gt;, &lt;code&gt;find_call_references&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Cross-references&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;Debugging&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Tool&lt;/th&gt; 
   &lt;th&gt;Description&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;set_breakpoint&lt;/code&gt;, &lt;code&gt;set_data_breakpoint&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Hardware breakpoints&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;start_dbvm_watch&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Ring -1 invisible tracing&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;Process Lifecycle&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Tool&lt;/th&gt; 
   &lt;th&gt;Description&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;open_process&lt;/code&gt;, &lt;code&gt;get_process_list&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Attach to or enumerate running processes&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;create_process&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Launch a new process under CE&#39;s control&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;pause_process&lt;/code&gt;, &lt;code&gt;unpause_process&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Suspend / resume target execution&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;Memory Allocation&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Tool&lt;/th&gt; 
   &lt;th&gt;Description&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;allocate_memory&lt;/code&gt;, &lt;code&gt;free_memory&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Reserve and release memory in the target&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;set_memory_protection&lt;/code&gt;, &lt;code&gt;full_access&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Adjust page protection flags&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;Code Injection&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Tool&lt;/th&gt; 
   &lt;th&gt;Description&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;inject_dll&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Load a DLL into the target process&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;execute_code&lt;/code&gt;, &lt;code&gt;execute_method&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Run shellcode or CE Lua methods remotely&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;Symbol Management&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Tool&lt;/th&gt; 
   &lt;th&gt;Description&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;register_symbol&lt;/code&gt;, &lt;code&gt;get_symbol_info&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Create and query named symbols&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;enable_windows_symbols&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Enable PDB symbol resolution&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;Assembly / Compilation&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Tool&lt;/th&gt; 
   &lt;th&gt;Description&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;assemble_instruction&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Assemble a single x86/x64 instruction to bytes&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;compile_c_code&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Compile C source into injected shellcode&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;generate_api_hook_script&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Generate a CE auto-assembler API hook template&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;Window / GUI Automation&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Tool&lt;/th&gt; 
   &lt;th&gt;Description&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;find_window&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Locate a window by title or class&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;send_window_message&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Post &lt;code&gt;WM_*&lt;/code&gt; messages to a target window&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;Input Automation&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Tool&lt;/th&gt; 
   &lt;th&gt;Description&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;get_pixel&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Sample a pixel color at screen coordinates&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;is_key_pressed&lt;/code&gt;, &lt;code&gt;do_key_press&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Query and simulate keyboard input&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;Cheat Table&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Tool&lt;/th&gt; 
   &lt;th&gt;Description&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;load_table&lt;/code&gt;, &lt;code&gt;save_table&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Load / save &lt;code&gt;.CT&lt;/code&gt; cheat table files&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;get_address_list&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Enumerate entries in the active cheat table&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;Kernel Mode (DBK / DBVM)&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Tool&lt;/th&gt; 
   &lt;th&gt;Description&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;dbk_get_cr3&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Read the CR3 register for the target process&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;read_process_memory_cr3&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Read physical memory via CR3 bypass&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;And many more at &lt;code&gt;AI_Context/MCP_Bridge_Command_Reference.md&lt;/code&gt;&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Critical Configuration&lt;/h2&gt; 
&lt;h3&gt;BSOD Prevention&lt;/h3&gt; 
&lt;div class=&quot;markdown-alert markdown-alert-caution&quot;&gt;
 &lt;p class=&quot;markdown-alert-title&quot;&gt;
  &lt;svg class=&quot;octicon octicon-stop mr-2&quot; viewbox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;
   &lt;path d=&quot;M4.47.22A.749.749 0 0 1 5 0h6c.199 0 .389.079.53.22l4.25 4.25c.141.14.22.331.22.53v6a.749.749 0 0 1-.22.53l-4.25 4.25A.749.749 0 0 1 11 16H5a.749.749 0 0 1-.53-.22L.22 11.53A.749.749 0 0 1 0 11V5c0-.199.079-.389.22-.53Zm.84 1.28L1.5 5.31v5.38l3.81 3.81h5.38l3.81-3.81V5.31L10.69 1.5ZM8 4a.75.75 0 0 1 .75.75v3.5a.75.75 0 0 1-1.5 0v-3.5A.75.75 0 0 1 8 4Zm0 8a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z&quot;&gt;&lt;/path&gt;
  &lt;/svg&gt;Caution&lt;/p&gt;
 &lt;p&gt;&lt;strong&gt;You MUST disable:&lt;/strong&gt; Cheat Engine → Settings → Extra → &lt;strong&gt;&quot;Query memory region routines&quot;&lt;/strong&gt;&lt;/p&gt; 
 &lt;p&gt;Enabled: Causes &lt;code&gt;CLOCK_WATCHDOG_TIMEOUT&lt;/code&gt; BSODs due to conflicts with DBVM/Anti-Cheat when scanning protected pages.&lt;/p&gt; 
&lt;/div&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Troubleshooting&lt;/h2&gt; 
&lt;h3&gt;Cheat Engine says &quot;too many local variables&quot;&lt;/h3&gt; 
&lt;p&gt;Load the bridge from disk with &lt;code&gt;dofile(...)&lt;/code&gt; instead of pasting the full script into a cheat table script. The bridge also declares command handlers as global functions intentionally; this avoids Cheat Engine&#39;s Lua chunk limit of 200 local variables when the complete bridge is compiled at once.&lt;/p&gt; 
&lt;h3&gt;MCP client cannot connect&lt;/h3&gt; 
&lt;p&gt;Check these in order:&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;Cheat Engine is open and shows &lt;code&gt;MCP Server Listening on: CE_MCP_Bridge_v99&lt;/code&gt;.&lt;/li&gt; 
 &lt;li&gt;The MCP client was restarted after adding the server config.&lt;/li&gt; 
 &lt;li&gt;The configured &lt;code&gt;mcp_cheatengine.py&lt;/code&gt; path exists.&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;pip install -r MCP_Server/requirements.txt&lt;/code&gt; has installed both &lt;code&gt;mcp&lt;/code&gt; and &lt;code&gt;pywin32&lt;/code&gt;.&lt;/li&gt; 
 &lt;li&gt;Run the MCP &lt;code&gt;ping&lt;/code&gt; tool. A successful connection returns &lt;code&gt;success: true&lt;/code&gt; and the bridge version. &lt;code&gt;process_id: 0&lt;/code&gt; is normal until Cheat Engine is attached to a target process.&lt;/li&gt; 
&lt;/ol&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Environment Variables&lt;/h2&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Variable&lt;/th&gt; 
   &lt;th&gt;Default&lt;/th&gt; 
   &lt;th&gt;Purpose&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;CE_MCP_TIMEOUT&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;30&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Timeout (seconds) for each MCP tool call.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;CE_MCP_ALLOW_SHELL&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;em&gt;unset&lt;/em&gt;&lt;/td&gt; 
   &lt;td&gt;Set to &lt;code&gt;1&lt;/code&gt; to enable &lt;code&gt;run_command&lt;/code&gt; / &lt;code&gt;shell_execute&lt;/code&gt; tools. &lt;strong&gt;Arbitrary code execution risk&lt;/strong&gt; — leave unset by default.&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Example Workflows&lt;/h2&gt; 
&lt;p&gt;&lt;strong&gt;Finding a value:&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;You: &quot;Scan for gold: 15000&quot;  →  AI finds 47 results
You: &quot;Gold changed to 15100&quot;  →  AI filters to 3 addresses
You: &quot;What writes to the first one?&quot;  →  AI sets hardware BP
You: &quot;Disassemble that function&quot;  →  Full AddGold logic revealed
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;Understanding a structure:&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;You: &quot;What&#39;s at [[game.exe+0x1234]+0x10]?&quot;
AI: &quot;RTTI: CPlayerInventory&quot;
AI: &quot;0x00=vtable, 0x08=itemCount(int), 0x10=itemArray(ptr)...&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Project Structure&lt;/h2&gt; 
&lt;pre&gt;&lt;code&gt;CLAUDE.md                               # Claude Code agent guidance (this repo)
README.md                               # User-facing documentation

MCP_Server/
├── mcp_cheatengine.py                  # Python MCP Server (FastMCP)
├── ce_mcp_bridge.lua                   # Cheat Engine Lua Bridge
└── test_mcp.py                         # Test Suite

AI_Context/
├── BATCH_WORKER_BRIEFING.md            # Parallel-worker task specifications (v12 overhaul)
├── MCP_Bridge_Command_Reference.md     # MCP Commands reference
├── CE_LUA_Documentation.md             # Full CheatEngine 7.6 official documentation
└── AI_Guide_MCP_Server_Implementation.md  # Full technical documentation for AI agent
&lt;/code&gt;&lt;/pre&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Testing&lt;/h2&gt; 
&lt;p&gt;Running the test:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;python MCP_Server/test_mcp.py
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Expected output:&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;✅ Memory Reading: 6/6 tests passed
✅ Process Info: 4/4 tests passed  
✅ Code Analysis: 8/8 tests passed
✅ Breakpoints: 4/4 tests passed
✅ DBVM Functions: 3/3 tests passed
✅ Utility Commands: 11/11 tests passed
⏭️ Skipped: 1 test (generate_signature)
────────────────────────────────────
Total: 36/37 PASSED (100% success)
&lt;/code&gt;&lt;/pre&gt; 
&lt;hr /&gt; 
&lt;h2&gt;The Bottom Line&lt;/h2&gt; 
&lt;p&gt;You no longer need to be an expert. Just ask the right questions.&lt;/p&gt; 
&lt;p&gt;⚠️ EDUCATIONAL DISCLAIMER&lt;/p&gt; 
&lt;p&gt;This code is for educational and research purposes only. It&#39;s created to show the capabilities of the Model Context Protocol (MCP) and LLM-based debugging. I do not condone the use of these tools for malicious hacking, cheating in multiplayer games, or violating Terms of Service. This is a demonstration of software engineering automation.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>neovim/nvim-lspconfig</title>
      <link>https://github.com/neovim/nvim-lspconfig</link>
      <description>&lt;p&gt;Quickstart configs for Nvim LSP&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;nvim-lspconfig&lt;/h1&gt; 
&lt;p&gt;nvim-lspconfig is a collection of LSP server configurations for the &lt;a href=&quot;https://neovim.io/doc/user/lsp.html&quot;&gt;Nvim LSP client&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;View &lt;a href=&quot;https://raw.githubusercontent.com/neovim/nvim-lspconfig/master/doc/configs.md&quot;&gt;all configs&lt;/a&gt;, or run &lt;code&gt;:help lspconfig-all&lt;/code&gt; from Nvim.&lt;/p&gt; 
&lt;h2&gt;Important ⚠️&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;require(&#39;lspconfig&#39;)&lt;/code&gt; (the legacy &quot;framework&quot; of nvim-lspconfig) &lt;a href=&quot;https://github.com/neovim/nvim-lspconfig/issues/3693&quot;&gt;is &lt;strong&gt;deprecated&lt;/strong&gt;&lt;/a&gt; in favor of &lt;a href=&quot;https://neovim.io/doc/user/lsp.html#lsp-config&quot;&gt;vim.lsp.config&lt;/a&gt; (Nvim 0.11+). 
  &lt;ul&gt; 
   &lt;li&gt;The &lt;a href=&quot;https://raw.githubusercontent.com/neovim/nvim-lspconfig/master/lua/lspconfig.lua&quot;&gt;lspconfig.lua&lt;/a&gt; &lt;em&gt;module&lt;/em&gt; will be dropped. Calls to &lt;code&gt;require(&#39;lspconfig&#39;)&lt;/code&gt; will show a warning, which will later become an error.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;nvim-lspconfig itself is &lt;strong&gt;NOT deprecated&lt;/strong&gt;. It provides server-specific configs. 
  &lt;ul&gt; 
   &lt;li&gt;The configs live in the &lt;a href=&quot;https://raw.githubusercontent.com/neovim/nvim-lspconfig/master/lsp/&quot;&gt;lsp/&lt;/a&gt; directory. &lt;code&gt;vim.lsp.config&lt;/code&gt; automatically finds them and merges them with any local &lt;code&gt;lsp/*.lua&lt;/code&gt; configs defined by you or a plugin.&lt;/li&gt; 
   &lt;li&gt;The old configs in &lt;a href=&quot;https://raw.githubusercontent.com/neovim/nvim-lspconfig/master/lua/lspconfig/&quot;&gt;lua/lspconfig/&lt;/a&gt; are &lt;strong&gt;deprecated&lt;/strong&gt; and will be removed.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Migration instructions&lt;/h3&gt; 
&lt;ol&gt; 
 &lt;li&gt;Upgrade to Nvim 0.11+&lt;/li&gt; 
 &lt;li&gt;(Optional) Use &lt;code&gt;vim.lsp.config(&#39;…&#39;)&lt;/code&gt; (not &lt;code&gt;require&#39;lspconfig&#39;.….setup{}&lt;/code&gt;) to &lt;em&gt;customize&lt;/em&gt; or &lt;em&gt;define&lt;/em&gt; a config.&lt;/li&gt; 
 &lt;li&gt;Use &lt;code&gt;vim.lsp.enable(&#39;…&#39;)&lt;/code&gt; (not &lt;code&gt;require&#39;lspconfig&#39;.….setup{}&lt;/code&gt;) to &lt;em&gt;enable&lt;/em&gt; a config, so that it activates for its &lt;code&gt;filetypes&lt;/code&gt;.&lt;/li&gt; 
&lt;/ol&gt; 
&lt;h2&gt;Support&lt;/h2&gt; 
&lt;p&gt;These configs are &lt;strong&gt;best-effort and supported by the community (you).&lt;/strong&gt; See &lt;a href=&quot;https://raw.githubusercontent.com/neovim/nvim-lspconfig/master/#contributions&quot;&gt;contributions&lt;/a&gt;.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Ask questions on &lt;a href=&quot;https://github.com/neovim/neovim/discussions&quot;&gt;GitHub Discussions&lt;/a&gt;, not the issue tracker.&lt;/li&gt; 
 &lt;li&gt;If you found a bug in Nvim LSP (&lt;code&gt;:help lsp&lt;/code&gt;), &lt;a href=&quot;https://github.com/neovim/neovim/issues/new?assignees=&amp;amp;labels=bug%2Clsp&amp;amp;template=lsp_bug_report.yml&quot;&gt;report it to Neovim core&lt;/a&gt;. 
  &lt;ul&gt; 
   &lt;li&gt;&lt;strong&gt;Do not&lt;/strong&gt; report it here. Only configuration data lives here.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Install&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://luarocks.org/modules/neovim/nvim-lspconfig&quot;&gt;&lt;img src=&quot;https://img.shields.io/luarocks/v/neovim/nvim-lspconfig?logo=lua&amp;amp;color=purple&quot; alt=&quot;LuaRocks&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Requires Nvim 0.11.3+. 
  &lt;ul&gt; 
   &lt;li&gt;Support for Nvim 0.10 &lt;a href=&quot;https://github.com/neovim/nvim-lspconfig/issues/3693&quot;&gt;will be removed&lt;/a&gt;. Upgrade Nvim and nvim-lspconfig before reporting an issue.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;With Nvim 0.12+, you can use the builtin &lt;code&gt;vim.pack&lt;/code&gt; plugin manager:&lt;pre&gt;&lt;code class=&quot;language-lua&quot;&gt;vim.pack.add{
  { src = &#39;https://github.com/neovim/nvim-lspconfig&#39; },
}
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
 &lt;li&gt;Or install nvim-lspconfig using Vim&#39;s &quot;packages&quot; feature:&lt;pre&gt;&lt;code&gt;git clone https://github.com/neovim/nvim-lspconfig ~/.config/nvim/pack/nvim/start/nvim-lspconfig
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
 &lt;li&gt;Or use a 3rd-party plugin manager.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Quickstart&lt;/h2&gt; 
&lt;ol&gt; 
 &lt;li&gt;Install a language server, e.g. &lt;a href=&quot;https://raw.githubusercontent.com/neovim/nvim-lspconfig/master/doc/configs.md#pyright&quot;&gt;pyright&lt;/a&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;npm i -g pyright
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
 &lt;li&gt;Enable its config in your init.lua (&lt;a href=&quot;https://neovim.io/doc/user/lsp.html#lsp-quickstart&quot;&gt;:help lsp-quickstart&lt;/a&gt;).&lt;pre&gt;&lt;code class=&quot;language-lua&quot;&gt;vim.lsp.enable(&#39;pyright&#39;)
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
 &lt;li&gt;Ensure your project/workspace contains a root marker as specified in &lt;code&gt;:help lspconfig-all&lt;/code&gt;.&lt;/li&gt; 
 &lt;li&gt;Open a code file in Nvim. LSP will attach and provide diagnostics.&lt;pre&gt;&lt;code&gt;nvim main.py
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
 &lt;li&gt;Run &lt;code&gt;:checkhealth vim.lsp&lt;/code&gt; to see the status or to troubleshoot.&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;See &lt;code&gt;:help lspconfig-all&lt;/code&gt; for the full list of server-specific details. For servers not on your &lt;code&gt;$PATH&lt;/code&gt; (e.g., &lt;code&gt;jdtls&lt;/code&gt;, &lt;code&gt;elixirls&lt;/code&gt;), you must manually set the &lt;code&gt;cmd&lt;/code&gt; parameter:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-lua&quot;&gt;vim.lsp.config(&#39;jdtls&#39;, {
  cmd = { &#39;/path/to/jdtls&#39; },
})
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Commands&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;:LspInfo&lt;/code&gt; (alias to &lt;code&gt;:checkhealth vim.lsp&lt;/code&gt;) shows the status of active and configured language servers.&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;:lsp enable [&amp;lt;config_name&amp;gt;]&lt;/code&gt; (&lt;code&gt;:LspStart&lt;/code&gt; for Nvim 0.11 or older) Start the requested server name. Will only successfully start if the command detects a root directory matching the current config.&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;:lsp disable [&amp;lt;config_name&amp;gt;]&lt;/code&gt; (&lt;code&gt;:LspStop&lt;/code&gt; for Nvim 0.11 or older) Stops the given server. Defaults to stopping all servers active on the current buffer. To force stop use &lt;code&gt;:LspStop!&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;:lsp restart [&amp;lt;client_name&amp;gt;]&lt;/code&gt; (&lt;code&gt;:LspRestart&lt;/code&gt; for Nvim 0.11 or older) Restarts the given client, and attempts to reattach to all previously attached buffers. Defaults to restarting all active servers.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Configuration&lt;/h2&gt; 
&lt;p&gt;Nvim sets default options and mappings when LSP is active in a buffer:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://neovim.io/doc/user/lsp.html#lsp-defaults&quot;&gt;:help lsp-defaults&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://neovim.io/doc/user/diagnostic.html#diagnostic-defaults&quot;&gt;:help diagnostic-defaults&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;To customize, see:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://neovim.io/doc/user/lsp.html#lsp-attach&quot;&gt;:help lsp-attach&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://neovim.io/doc/user/lsp.html#lsp-buf&quot;&gt;:help lsp-buf&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Extra settings can be specified for each LSP server. With Nvim 0.11+ you can &lt;a href=&quot;https://neovim.io/doc/user/lsp.html#lsp-config&quot;&gt;extend a config&lt;/a&gt; by calling &lt;code&gt;vim.lsp.config(&#39;…&#39;, {…})&lt;/code&gt;.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-lua&quot;&gt;vim.lsp.config(&#39;rust_analyzer&#39;, {
  -- Server-specific settings. See `:help lsp-quickstart`
  settings = {
    [&#39;rust-analyzer&#39;] = {},
  },
})
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Config priority&lt;/h3&gt; 
&lt;p&gt;Configs are sourced in this order:&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;&lt;code&gt;lsp/&lt;/code&gt; in &#39;runtimepath&#39;&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;after/lsp/&lt;/code&gt; in &#39;runtimepath&#39;&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;vim.lsp.config()&lt;/code&gt;&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;If you install nvim-lspconfig or similar plugins, the order that configs are applied depends on the load order. To ensure that your own config &quot;wins&quot; and overrides the others, use &lt;code&gt;after/lsp/&lt;/code&gt; and/or &lt;code&gt;vim.lsp.config()&lt;/code&gt; to override/extend the defaults.&lt;/p&gt; 
&lt;h2&gt;Creating a config&lt;/h2&gt; 
&lt;h3&gt;As code&lt;/h3&gt; 
&lt;ol&gt; 
 &lt;li&gt;Run &lt;code&gt;:lua vim.lsp.config(&#39;foo&#39;, {cmd={&#39;true&#39;}})&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;Run &lt;code&gt;:lua vim.lsp.enable(&#39;foo&#39;)&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;Run &lt;code&gt;:checkhealth vim.lsp&lt;/code&gt;, the new config is listed under &quot;Enabled Configurations&quot;. 😎&lt;/li&gt; 
&lt;/ol&gt; 
&lt;h3&gt;As a file&lt;/h3&gt; 
&lt;ol&gt; 
 &lt;li&gt;Create a file &lt;code&gt;after/lsp/foo.lua&lt;/code&gt; somewhere on your &#39;runtimepath&#39;.&lt;pre&gt;&lt;code&gt;:exe &#39;edit&#39; stdpath(&#39;config&#39;) .. &#39;/after/lsp/foo.lua&#39;
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
 &lt;li&gt;Add this code to the file (or copy any of the examples from the &lt;a href=&quot;https://raw.githubusercontent.com/neovim/nvim-lspconfig/master/lsp/&quot;&gt;lsp/ directory&lt;/a&gt; in this repo):&lt;pre&gt;&lt;code&gt;return {
  cmd = { &#39;true&#39; },
}
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
 &lt;li&gt;Save the file (with &lt;code&gt;++p&lt;/code&gt; to ensure its parent directory is created).&lt;pre&gt;&lt;code&gt;:write ++p
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
 &lt;li&gt;Enable the config.&lt;pre&gt;&lt;code&gt;:lua vim.lsp.enable(&#39;foo&#39;)
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
 &lt;li&gt;Run &lt;code&gt;:checkhealth vim.lsp&lt;/code&gt;, the new config is listed under &quot;Enabled Configurations&quot;. 🌈&lt;/li&gt; 
&lt;/ol&gt; 
&lt;h2&gt;LSP Settings Type Annotations&lt;/h2&gt; 
&lt;p&gt;&lt;code&gt;nvim-lspconfig&lt;/code&gt; generates Lua type definitions for each supported LSP server. By manually adding annotations (e.g., &lt;code&gt;---@type lspconfig.settings.server_name&lt;/code&gt;), you enable auto-completion and diagnostics for your server settings.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-lua&quot;&gt;---@type vim.lsp.Config
local config = {
  ---@type lspconfig.settings.lua_ls
  settings = {
    Lua = {
      runtime = {
        version = &#39;LuaJIT&#39;,
      },
      workspace = {
        preloadFileSize = 10000,
        library = {
          vim.env.VIMRUNTIME,
        }
      },
    },
  },
}

vim.lsp.config(&#39;lua_ls&#39;, config)
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Troubleshooting&lt;/h2&gt; 
&lt;p&gt;Start with &lt;code&gt;:checkhealth vim.lsp&lt;/code&gt; to troubleshoot. The most common reasons a language server does not start or attach are:&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt; &lt;p&gt;Language server is not installed. nvim-lspconfig does not install language servers for you. You should be able to run the &lt;code&gt;cmd&lt;/code&gt; defined in the config from the command line and see that the language server starts. If the &lt;code&gt;cmd&lt;/code&gt; is a name instead of an absolute path, ensure it is on your &lt;code&gt;$PATH&lt;/code&gt;.&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Missing filetype plugins. Some languages are not detected by Nvim because they have not yet been added to the filetype detection system. Ensure &lt;code&gt;:set filetype?&lt;/code&gt; shows the filetype and not an empty value.&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Not triggering root detection. Some language servers require a &quot;workspace&quot;, which is found by looking for an ancestor directory that contains a &quot;root marker&quot;. The most common root marker is &lt;code&gt;.git/&lt;/code&gt;, but each config defines other &quot;root marker&quot; names. Root markers/directories are listed in &lt;code&gt;:help lspconfig-all&lt;/code&gt;.&lt;/p&gt; &lt;p&gt;You can also explicitly set a root instead of relying on automatic detection by enabling &lt;code&gt;&#39;exrc&#39;&lt;/code&gt; and adding an &lt;code&gt;.nvim.lua&lt;/code&gt; at the desired root dir with the following code:&lt;/p&gt; &lt;pre&gt;&lt;code class=&quot;language-lua&quot;&gt;vim.lsp.config(&#39;&amp;lt;client name&amp;gt;&#39;, {
  root_dir = vim.fn.fnamemodify(debug.getinfo(1, &#39;S&#39;).source:sub(2), &#39;:p:h&#39;),
})
&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;Note that prior to nvim 0.12 &lt;code&gt;exrc&lt;/code&gt; file is executed only if it&#39;s inside of a cwd where you start &lt;code&gt;nvim&lt;/code&gt;.&lt;/p&gt; &lt;/li&gt; 
&lt;/ol&gt; 
&lt;h2&gt;Bug reports&lt;/h2&gt; 
&lt;p&gt;If you found a bug with LSP functionality, &lt;a href=&quot;https://github.com/neovim/neovim/issues/new?assignees=&amp;amp;labels=bug%2Clsp&amp;amp;template=lsp_bug_report.yml&quot;&gt;report it to Neovim core&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;Before reporting a bug, check your logs and the output of &lt;code&gt;:checkhealth vim.lsp&lt;/code&gt;. Add this to your init.lua to enable verbose logging:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-lua&quot;&gt;vim.lsp.log.set_level(&#39;debug&#39;)
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Attempt to run the language server, then run &lt;code&gt;:LspLog&lt;/code&gt; to open the log. Most of the time, the reason for failure is present in the logs.&lt;/p&gt; 
&lt;h2&gt;Contributions&lt;/h2&gt; 
&lt;p&gt;If a language server is missing from &lt;a href=&quot;https://raw.githubusercontent.com/neovim/nvim-lspconfig/master/doc/configs.md&quot;&gt;configs.md&lt;/a&gt;, contributing a new configuration for it helps others, especially if the server requires special setup. Follow these steps:&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;Read &lt;a href=&quot;https://raw.githubusercontent.com/neovim/nvim-lspconfig/master/CONTRIBUTING.md&quot;&gt;CONTRIBUTING.md&lt;/a&gt;.&lt;/li&gt; 
 &lt;li&gt;Create a new file at &lt;code&gt;lsp/&amp;lt;server_name&amp;gt;.lua&lt;/code&gt;. 
  &lt;ul&gt; 
   &lt;li&gt;Copy an &lt;a href=&quot;https://github.com/neovim/nvim-lspconfig/tree/master/lsp&quot;&gt;existing config&lt;/a&gt; to get started. Most configs are simple. For an extensive example see &lt;a href=&quot;https://github.com/neovim/nvim-lspconfig/raw/master/lsp/texlab.lua&quot;&gt;texlab.lua&lt;/a&gt;.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Ask questions on &lt;a href=&quot;https://github.com/neovim/neovim/discussions&quot;&gt;GitHub Discussions&lt;/a&gt; or in the &lt;a href=&quot;https://app.element.io/#/room/%23neovim:matrix.org&quot;&gt;Neovim Matrix room&lt;/a&gt;.&lt;/li&gt; 
&lt;/ol&gt; 
&lt;h2&gt;Release process&lt;/h2&gt; 
&lt;p&gt;To publish a release:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Create and push a new &lt;a href=&quot;https://github.com/neovim/nvim-lspconfig/tags&quot;&gt;tag&lt;/a&gt;.&lt;/li&gt; 
 &lt;li&gt;After pushing the tag, a &lt;a href=&quot;https://raw.githubusercontent.com/neovim/nvim-lspconfig/master/.github/workflows/release.yml&quot;&gt;GitHub action&lt;/a&gt; will automatically package the plugin and publish the release to LuaRocks.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;License&lt;/h2&gt; 
&lt;p&gt;Copyright Neovim contributors. All rights reserved.&lt;/p&gt; 
&lt;p&gt;nvim-lspconfig is licensed under the terms of the Apache 2.0 license.&lt;/p&gt; 
&lt;p&gt;See &lt;a href=&quot;https://raw.githubusercontent.com/neovim/nvim-lspconfig/master/LICENSE.md&quot;&gt;LICENSE.md&lt;/a&gt;&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Kong/kong</title>
      <link>https://github.com/Kong/kong</link>
      <description>&lt;p&gt;🦍 The API and AI Gateway&lt;/p&gt;&lt;hr&gt;&lt;p&gt;&lt;a href=&quot;https://konghq.com/&quot;&gt;&lt;img src=&quot;https://konghq.com/wp-content/uploads/2018/05/kong-logo-github-readme.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://img.shields.io/github/stars/Kong/kong?style=flat-square&quot; alt=&quot;Stars&quot; /&gt; &lt;img src=&quot;https://img.shields.io/docker/pulls/_/kong?style=flat-square&quot; alt=&quot;GitHub commit activity&quot; /&gt; &lt;a href=&quot;https://github.com/Kong/kong/actions&quot;&gt;&lt;img src=&quot;https://github.com/Kong/kong/actions/workflows/build_and_test.yml/badge.svg?branch=master&amp;amp;event=push&quot; alt=&quot;Build Status&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://img.shields.io/github/v/release/Kong/kong?color=green&amp;amp;label=Version&amp;amp;style=flat-square&quot; alt=&quot;Version&quot; /&gt; &lt;img src=&quot;https://img.shields.io/badge/License-Apache%202.0-blue?style=flat-square&quot; alt=&quot;License&quot; /&gt; &lt;a href=&quot;https://x.com/thekonginc&quot;&gt;&lt;img src=&quot;https://img.shields.io/twitter/follow/thekonginc?style=social&quot; alt=&quot;Twitter Follow&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;Kong or Kong Gateway is a cloud-native, platform-agnostic, scalable &lt;strong&gt;API 𖧹 LLM 𖧹 MCP&lt;/strong&gt; Gateway distinguished for its high performance and extensibility via plugins. It also provides advanced AI traffic capabilities with multi-LLM support, semantic security, MCP traffic security and analytics, and more.&lt;/p&gt; 
&lt;p&gt;By providing functionality for proxying, routing, load balancing, health checking, authentication (and &lt;a href=&quot;https://raw.githubusercontent.com/Kong/kong/master/#features&quot;&gt;more&lt;/a&gt;), Kong serves as the central layer for orchestrating microservices or conventional API traffic - and agentic LLM and MCP as well - with ease.&lt;/p&gt; 
&lt;p&gt;Kong runs natively on Kubernetes thanks to its official &lt;a href=&quot;https://github.com/Kong/kubernetes-ingress-controller&quot;&gt;Kubernetes Ingress Controller&lt;/a&gt;.&lt;/p&gt; 
&lt;br /&gt; 
&lt;p&gt;&lt;a href=&quot;https://konghq.com/&quot;&gt;&lt;img src=&quot;https://assets.prd.mktg.konghq.com/images/2025/09/68cc1bfd-kong-diagram.png?v=2&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;hr /&gt; 
&lt;p&gt;&lt;a href=&quot;https://konghq.com/install/#kong-community&quot;&gt;Installation&lt;/a&gt; | &lt;a href=&quot;https://docs.konghq.com&quot;&gt;Documentation&lt;/a&gt; | &lt;a href=&quot;https://github.com/Kong/kong/discussions&quot;&gt;Discussions&lt;/a&gt; | &lt;a href=&quot;https://discuss.konghq.com&quot;&gt;Forum&lt;/a&gt; | &lt;a href=&quot;https://konghq.com/blog&quot;&gt;Blog&lt;/a&gt; | &lt;a href=&quot;https://hub.docker.com/r/kong/kong/tags&quot;&gt;Builds&lt;/a&gt; | &lt;a href=&quot;https://konghq.com/products/kong-ai-gateway&quot;&gt;AI Gateway&lt;/a&gt; | &lt;a href=&quot;https://konghq.com/kong-konnect/&quot;&gt;Cloud Hosted Kong&lt;/a&gt;&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Getting Started&lt;/h2&gt; 
&lt;p&gt;If you prefer to use a cloud-hosted Kong, you can &lt;a href=&quot;https://konghq.com/products/kong-konnect/register?utm_medium=Referral&amp;amp;utm_source=Github&amp;amp;utm_campaign=kong-gateway&amp;amp;utm_content=konnect-promo-in-gateway&amp;amp;utm_term=get-started&quot;&gt;sign up for a free trial of Kong Konnect&lt;/a&gt; and get started in minutes. If not, you can follow the instructions below to get started with Kong on your own infrastructure.&lt;/p&gt; 
&lt;p&gt;Let’s test drive Kong by adding authentication to an API in under 5 minutes.&lt;/p&gt; 
&lt;p&gt;We suggest using the docker-compose distribution via the instructions below, but there is also a &lt;a href=&quot;https://docs.konghq.com/gateway/latest/install/docker/#install-kong-gateway-in-db-less-mode&quot;&gt;docker installation&lt;/a&gt; procedure if you’d prefer to run the Kong Gateway in DB-less mode.&lt;/p&gt; 
&lt;p&gt;Whether you’re running in the cloud, on bare metal, or using containers, you can find every supported distribution on our &lt;a href=&quot;https://konghq.com/install/#kong-community&quot;&gt;official installation&lt;/a&gt; page.&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;To start, clone the Docker repository and navigate to the compose folder.&lt;/li&gt; 
&lt;/ol&gt; 
&lt;pre&gt;&lt;code class=&quot;language-cmd&quot;&gt;  $ git clone https://github.com/Kong/docker-kong
  $ cd docker-kong/compose/
&lt;/code&gt;&lt;/pre&gt; 
&lt;ol start=&quot;2&quot;&gt; 
 &lt;li&gt;Start the Gateway stack using:&lt;/li&gt; 
&lt;/ol&gt; 
&lt;pre&gt;&lt;code class=&quot;language-cmd&quot;&gt;  $ KONG_DATABASE=postgres docker-compose --profile database up
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;The Gateway is now available on the following ports on localhost:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;:8000&lt;/code&gt; - send traffic to your service via Kong&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;:8001&lt;/code&gt; - configure Kong using Admin API or via &lt;a href=&quot;https://github.com/kong/deck&quot;&gt;decK&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;:8002&lt;/code&gt; - access Kong&#39;s management Web UI (&lt;a href=&quot;https://github.com/Kong/kong-manager&quot;&gt;Kong Manager&lt;/a&gt;) on &lt;a href=&quot;http://localhost:8002&quot;&gt;localhost:8002&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Next, follow the &lt;a href=&quot;https://docs.konghq.com/gateway-oss/latest/getting-started/configuring-a-service/&quot;&gt;quick start guide&lt;/a&gt; to tour the Gateway features.&lt;/p&gt; 
&lt;h3&gt;Getting started with AI Gateway for LLM and MCP&lt;/h3&gt; 
&lt;p&gt;If you would like to get started with Kong AI Gateway capabilities including LLM and MCP features, please refer to the &lt;a href=&quot;https://developer.konghq.com/ai-gateway/&quot;&gt;official AI documentation&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Features&lt;/h2&gt; 
&lt;p&gt;By centralizing common API, AI and MCP functionality across all your organization&#39;s services, Kong Gateway creates more freedom for engineering teams to focus on the challenges that matter most.&lt;/p&gt; 
&lt;p&gt;The top Kong features include:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Advanced routing, load balancing, health checking - all configurable via a RESTful admin API or declarative configuration.&lt;/li&gt; 
 &lt;li&gt;Authentication and authorization for APIs using methods like JWT, basic auth, OAuth, ACLs and more.&lt;/li&gt; 
 &lt;li&gt;Universal LLM API to route across multiple providers like OpenAI, Anthropic, GCP Gemini, AWS Bedrock, Azure AI, Databricks, Mistral, Huggingface and more.&lt;/li&gt; 
 &lt;li&gt;MCP traffic governance, MCP security and MCP observability in addition to MCP autogeneration from any RESTful API.&lt;/li&gt; 
 &lt;li&gt;60+ AI features like AI observability, semantic security and caching, semantic routing and more.&lt;/li&gt; 
 &lt;li&gt;Proxy, SSL/TLS termination, and connectivity support for L4 or L7 traffic.&lt;/li&gt; 
 &lt;li&gt;Plugins for enforcing traffic controls, rate limiting, req/res transformations, logging, monitoring and including a plugin developer hub.&lt;/li&gt; 
 &lt;li&gt;Sophisticated deployment models like Declarative Databaseless Deployment and Hybrid Deployment (control plane/data plane separation) without any vendor lock-in.&lt;/li&gt; 
 &lt;li&gt;Native &lt;a href=&quot;https://github.com/Kong/kubernetes-ingress-controller&quot;&gt;ingress controller&lt;/a&gt; support for serving Kubernetes.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;a href=&quot;https://konghq.com/&quot;&gt;&lt;img src=&quot;https://konghq.com/wp-content/uploads/2018/05/kong-benefits-github-readme.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;h3&gt;Plugin Hub&lt;/h3&gt; 
&lt;p&gt;Plugins provide advanced functionality that extends the use of the Gateway. Many of the Kong Inc. and community-developed plugins like AWS Lambda, Correlation ID, and Response Transformer are showcased at the &lt;a href=&quot;https://docs.konghq.com/hub/&quot;&gt;Plugin Hub&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;Contribute to the Plugin Hub and ensure your next innovative idea is published and available to the broader community!&lt;/p&gt; 
&lt;h2&gt;Contributing&lt;/h2&gt; 
&lt;p&gt;We ❤️ pull requests, and we’re continually working hard to make it as easy as possible for developers to contribute. Before beginning development with the Kong Gateway, please familiarize yourself with the following developer resources:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Community Pledge (&lt;a href=&quot;https://raw.githubusercontent.com/Kong/kong/master/COMMUNITY_PLEDGE.md&quot;&gt;COMMUNITY_PLEDGE.md&lt;/a&gt;) for our pledge to interact with you, the open source community.&lt;/li&gt; 
 &lt;li&gt;Contributor Guide (&lt;a href=&quot;https://raw.githubusercontent.com/Kong/kong/master/CONTRIBUTING.md&quot;&gt;CONTRIBUTING.md&lt;/a&gt;) to learn about how to contribute to Kong.&lt;/li&gt; 
 &lt;li&gt;Development Guide (&lt;a href=&quot;https://raw.githubusercontent.com/Kong/kong/master/DEVELOPER.md&quot;&gt;DEVELOPER.md&lt;/a&gt;): Setting up your development environment.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Kong/kong/master/CODE_OF_CONDUCT.md&quot;&gt;CODE_OF_CONDUCT&lt;/a&gt; and &lt;a href=&quot;https://raw.githubusercontent.com/Kong/kong/master/COPYRIGHT&quot;&gt;COPYRIGHT&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Use the &lt;a href=&quot;https://docs.konghq.com/latest/plugin-development/&quot;&gt;Plugin Development Guide&lt;/a&gt; for building new and creative plugins, or browse the online version of Kong&#39;s source code documentation in the &lt;a href=&quot;https://docs.konghq.com/latest/pdk/&quot;&gt;Plugin Development Kit (PDK) Reference&lt;/a&gt;. Developers can build plugins in &lt;a href=&quot;https://docs.konghq.com/gateway/latest/plugin-development/&quot;&gt;Lua&lt;/a&gt;, &lt;a href=&quot;https://docs.konghq.com/gateway-oss/latest/external-plugins/#developing-go-plugins&quot;&gt;Go&lt;/a&gt; or &lt;a href=&quot;https://docs.konghq.com/gateway-oss/latest/external-plugins/#developing-javascript-plugins&quot;&gt;JavaScript&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Releases&lt;/h2&gt; 
&lt;p&gt;Please see the &lt;a href=&quot;https://raw.githubusercontent.com/Kong/kong/master/CHANGELOG.md&quot;&gt;Changelog&lt;/a&gt; for more details about a given release. The &lt;a href=&quot;https://semver.org&quot;&gt;SemVer Specification&lt;/a&gt; is followed when versioning Gateway releases.&lt;/p&gt; 
&lt;h2&gt;Join the Community&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;Check out the &lt;a href=&quot;https://docs.konghq.com/&quot;&gt;docs&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Join the &lt;a href=&quot;https://github.com/Kong/kong/discussions&quot;&gt;Kong discussions forum&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Join the Kong discussions at the Kong Nation forum: &lt;a href=&quot;https://discuss.konghq.com/&quot;&gt;https://discuss.konghq.com/&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Join our &lt;a href=&quot;http://kongcommunity.slack.com/&quot;&gt;Community Slack&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Read up on the latest happenings at our &lt;a href=&quot;https://konghq.com/blog/&quot;&gt;blog&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Follow us on &lt;a href=&quot;https://x.com/thekonginc&quot;&gt;X&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Subscribe to our &lt;a href=&quot;https://www.youtube.com/c/KongInc/videos&quot;&gt;YouTube channel&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Visit our &lt;a href=&quot;https://konghq.com/&quot;&gt;homepage&lt;/a&gt; to learn more&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Konnect Cloud&lt;/h2&gt; 
&lt;p&gt;Kong Inc. offers commercial subscriptions that enhance the Kong Gateway in a variety of ways. Customers of Kong&#39;s &lt;a href=&quot;https://konghq.com/kong-konnect/&quot;&gt;Konnect Cloud&lt;/a&gt; subscription take advantage of additional gateway functionality, commercial support, and access to Kong&#39;s managed (SaaS) control plane platform. The Konnect Cloud platform features include real-time analytics, a service catalog, developer portals, and so much more! &lt;a href=&quot;https://konghq.com/products/kong-konnect/register?utm_medium=Referral&amp;amp;utm_source=Github&amp;amp;utm_campaign=kong-gateway&amp;amp;utm_content=konnect-promo-in-gateway&amp;amp;utm_term=get-started&quot;&gt;Get started&lt;/a&gt; with Konnect Cloud.&lt;/p&gt; 
&lt;h2&gt;License&lt;/h2&gt; 
&lt;pre&gt;&lt;code&gt;Copyright 2016-2026 Kong Inc.

Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   https://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an &quot;AS IS&quot; BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
&lt;/code&gt;&lt;/pre&gt;</description>
      
    </item>
    
    <item>
      <title>PathOfBuildingCommunity/PathOfBuilding</title>
      <link>https://github.com/PathOfBuildingCommunity/PathOfBuilding</link>
      <description>&lt;p&gt;Offline build planner for Path of Exile.&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;Path of Building Community&lt;/h1&gt; 
&lt;h2&gt;Welcome to Path of Building, an offline build planner for Path of Exile!&lt;/h2&gt; 
&lt;p float=&quot;middle&quot;&gt; &lt;img alt=&quot;Tree tab&quot; src=&quot;https://github.com/user-attachments/assets/0826b7ab-84ba-440f-be52-2f216f13e75c&quot; width=&quot;48%&quot; /&gt; &lt;img alt=&quot;Items tab&quot; src=&quot;https://github.com/user-attachments/assets/e5af1326-7e22-43d8-ab12-aa5500da611a&quot; width=&quot;48%&quot; /&gt; &lt;/p&gt; 
&lt;h3&gt;Features&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Comprehensive offence + defence calculations: 
  &lt;ul&gt; 
   &lt;li&gt;Calculate your skill DPS, damage over time, life/mana/ES totals and much more!&lt;/li&gt; 
   &lt;li&gt;Can factor in auras, buffs, charges, curses, monster resistances and more, to estimate your effective DPS&lt;/li&gt; 
   &lt;li&gt;Also calculates life/mana reservations&lt;/li&gt; 
   &lt;li&gt;Shows a summary of character stats in the side bar, as well as a detailed calculations breakdown tab which can show you how the stats were derived&lt;/li&gt; 
   &lt;li&gt;Supports all skills and support gems, and most passives and item modifiers 
    &lt;ul&gt; 
     &lt;li&gt;Throughout the program, supported modifiers will show in blue and unsupported ones in red&lt;/li&gt; 
    &lt;/ul&gt; &lt;/li&gt; 
   &lt;li&gt;Full support for minions&lt;/li&gt; 
   &lt;li&gt;Support for party play and support builds&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Passive skill tree planner: 
  &lt;ul&gt; 
   &lt;li&gt;Support for jewels including most radius/conversion and timeless jewels&lt;/li&gt; 
   &lt;li&gt;Features alternate path tracing (mouse over a sequence of nodes while holding shift, then click to allocate them all)&lt;/li&gt; 
   &lt;li&gt;Fully integrated with the offence/defence calculations; see exactly how each node will affect your character!&lt;/li&gt; 
   &lt;li&gt;Can import &lt;a href=&quot;http://PathOfExile.com&quot;&gt;PathOfExile.com&lt;/a&gt; and &lt;a href=&quot;http://PoEPlanner.com&quot;&gt;PoEPlanner.com&lt;/a&gt; passive tree links; links shortened with &lt;a href=&quot;http://PoEURL.com&quot;&gt;PoEURL.com&lt;/a&gt; also work&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Skill planner: 
  &lt;ul&gt; 
   &lt;li&gt;Add any number of main or supporting skills to your build&lt;/li&gt; 
   &lt;li&gt;Supporting skills (auras, curses, buffs) can be toggled on and off&lt;/li&gt; 
   &lt;li&gt;Automatically applies Socketed Gem modifiers from the item a skill is socketed into&lt;/li&gt; 
   &lt;li&gt;Automatically applies support gems granted by items&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Item planner: 
  &lt;ul&gt; 
   &lt;li&gt;Add items from in game by copying and pasting them straight into the program!&lt;/li&gt; 
   &lt;li&gt;Automatically adds quality to non-corrupted items&lt;/li&gt; 
   &lt;li&gt;Search the trade site for the most impactful items&lt;/li&gt; 
   &lt;li&gt;Fully integrated with the offence/defence calculations; see exactly how much of an upgrade a given item is!&lt;/li&gt; 
   &lt;li&gt;Contains a searchable database of all uniques that are currently in game (and some that aren&#39;t yet!) 
    &lt;ul&gt; 
     &lt;li&gt;You can choose the modifier rolls when you add a unique to your build&lt;/li&gt; 
     &lt;li&gt;Includes all league-specific items and legacy variants&lt;/li&gt; 
    &lt;/ul&gt; &lt;/li&gt; 
   &lt;li&gt;Features an item crafting system: 
    &lt;ul&gt; 
     &lt;li&gt;You can select from any of the game&#39;s base item types&lt;/li&gt; 
     &lt;li&gt;You can select prefix/suffix modifiers from lists&lt;/li&gt; 
     &lt;li&gt;Custom modifiers can be added, with Master and Essence modifiers available&lt;/li&gt; 
    &lt;/ul&gt; &lt;/li&gt; 
   &lt;li&gt;Also contains a database of rare item templates: 
    &lt;ul&gt; 
     &lt;li&gt;Allows you to create rare items for your build to approximate the gear you will be using&lt;/li&gt; 
     &lt;li&gt;Choose which modifiers appear on each item, and the rolls for each modifier, to suit your needs&lt;/li&gt; 
     &lt;li&gt;Has templates that should cover the majority of builds&lt;/li&gt; 
    &lt;/ul&gt; &lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Other features: 
  &lt;ul&gt; 
   &lt;li&gt;You can import passive tree, items, and skills from existing characters&lt;/li&gt; 
   &lt;li&gt;Share builds with other users by generating a share code&lt;/li&gt; 
   &lt;li&gt;Automatic updating; most updates will only take a couple of seconds to apply&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Download&lt;/h2&gt; 
&lt;p&gt;Head over to the &lt;a href=&quot;https://github.com/PathOfBuildingCommunity/PathOfBuilding/releases&quot;&gt;Releases&lt;/a&gt; page to download the install wizard or portable zip.&lt;/p&gt; 
&lt;h2&gt;Changelog&lt;/h2&gt; 
&lt;p&gt;You can find the full version history &lt;a href=&quot;https://raw.githubusercontent.com/PathOfBuildingCommunity/PathOfBuilding/dev/CHANGELOG.md&quot;&gt;here&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Contribute&lt;/h2&gt; 
&lt;p&gt;You can find instructions on how to contribute code and bug reports &lt;a href=&quot;https://raw.githubusercontent.com/PathOfBuildingCommunity/PathOfBuilding/dev/CONTRIBUTING.md&quot;&gt;here&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Licence&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://opensource.org/licenses/MIT&quot;&gt;MIT&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;For 3rd-party licences, see &lt;a href=&quot;https://raw.githubusercontent.com/PathOfBuildingCommunity/PathOfBuilding/dev/LICENSE.md&quot;&gt;LICENSE&lt;/a&gt;. The licencing information is considered to be part of the documentation.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>jitsi/docker-jitsi-meet</title>
      <link>https://github.com/jitsi/docker-jitsi-meet</link>
      <description>&lt;p&gt;Jitsi Meet on Docker&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;Jitsi Meet on Docker&lt;/h1&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/jitsi/docker-jitsi-meet/master/resources/jitsi-docker.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://jitsi.org/&quot;&gt;Jitsi&lt;/a&gt; is a set of Open Source projects that allows you to easily build and deploy secure videoconferencing solutions.&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://jitsi.org/jitsi-meet/&quot;&gt;Jitsi Meet&lt;/a&gt; is a fully encrypted, 100% Open Source video conferencing solution that you can use all day, every day, for free — with no account needed.&lt;/p&gt; 
&lt;p&gt;This repository contains the necessary tools to run a Jitsi Meet stack on &lt;a href=&quot;https://www.docker.com&quot;&gt;Docker&lt;/a&gt; using &lt;a href=&quot;https://docs.docker.com/compose/&quot;&gt;Docker Compose&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;All our images are published on the &lt;a href=&quot;https://github.com/orgs/jitsi/packages&quot;&gt;GitHub Container Registry (GHCR)&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Tags&lt;/h2&gt; 
&lt;p&gt;These are the currently published tags for all our images:&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Tag&lt;/th&gt; 
   &lt;th&gt;Description&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;stable&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Points to the latest stable release&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;stable-NNNN-X&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;A stable release&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;unstable&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Points to the latest unstable release&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;unstable-YYYY-MM-DD&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Daily unstable release&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h2&gt;Installation&lt;/h2&gt; 
&lt;p&gt;The installation manual is available &lt;a href=&quot;https://jitsi.github.io/handbook/docs/devops-guide/devops-guide-docker&quot;&gt;here&lt;/a&gt;.&lt;/p&gt; 
&lt;h3&gt;Kubernetes&lt;/h3&gt; 
&lt;p&gt;If you plan to install the jitsi-meet stack on a Kubernetes cluster you can find tools and tutorials in the project &lt;a href=&quot;https://github.com/jitsi-contrib/jitsi-kubernetes&quot;&gt;Jitsi on Kubernetes&lt;/a&gt;.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>finlater/weread.koplugin</title>
      <link>https://github.com/finlater/weread.koplugin</link>
      <description>&lt;p&gt;微信读书 koreader 插件，在 koreader 里阅读微信读书里的书籍、公众号文章，支持阅读进度同步，阅读时长上报和统计，本地书籍支持获取微信读书划线和想法内容，支持Kindle、Kobo等设备。&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;WeRead KOReader Plugin&lt;/h1&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;&lt;strong&gt;免责声明&lt;/strong&gt;：本项目仅供个人学习和技术研究使用，不得用于商业用途。使用本项目所产生的一切后果（包括但不限于账号封禁、数据丢失等）由使用者自行承担，项目作者概不负责。请遵守微信读书的用户协议和相关法律法规。&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;在 KOReader 上阅读微信读书中的书籍、公众号文章的插件。支持同步进度同步，阅读时长同步和统计，查看书评、划线和想法。让Kindle、Kobo等封闭系统设备也能体验微信读书！&lt;/p&gt; 
&lt;h2&gt;其它项目推荐&lt;/h2&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;插件&lt;/th&gt; 
   &lt;th&gt;简介&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/finlater/kindlebtcontroller.koplugin&quot;&gt;kindlebtcontroller.koplugin&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;蓝牙手柄/遥控器控制 Kindle —— 翻页、调节亮度、章节跳转等 20+ 操作，按键完全可自定义。&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/finlater/one.koplugin&quot;&gt;one.koplugin&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;在 KOReader 上离线阅读「ONE · 一个」每日更新：一图、一文、一问答。&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h2&gt;功能&lt;/h2&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th style=&quot;text-align:center&quot;&gt;主菜单&lt;/th&gt; 
   &lt;th style=&quot;text-align:center&quot;&gt;书架&lt;/th&gt; 
   &lt;th style=&quot;text-align:center&quot;&gt;公众号&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/finlater/weread.koplugin/main/screenshots/main_manu.png&quot; alt=&quot;主菜单&quot; /&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/finlater/weread.koplugin/main/screenshots/bookshelf.png&quot; alt=&quot;微信读书书架&quot; /&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/finlater/weread.koplugin/main/screenshots/bookshelf_wp.png&quot; alt=&quot;公众号&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th style=&quot;text-align:center&quot;&gt;阅读时间上报&lt;/th&gt; 
   &lt;th style=&quot;text-align:center&quot;&gt;阅读统计&lt;/th&gt; 
   &lt;th style=&quot;text-align:center&quot;&gt;阅读进度同步&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/finlater/weread.koplugin/main/screenshots/read_report.png&quot; alt=&quot;阅读时间上报&quot; /&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/finlater/weread.koplugin/main/screenshots/read_stats.png&quot; alt=&quot;阅读统计&quot; /&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/finlater/weread.koplugin/main/screenshots/read_progress.png&quot; alt=&quot;阅读进度同步&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th style=&quot;text-align:center&quot;&gt;多选章节下载&lt;/th&gt; 
   &lt;th style=&quot;text-align:center&quot;&gt;章节预下载&lt;/th&gt; 
   &lt;th style=&quot;text-align:center&quot;&gt;下载全书&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/finlater/weread.koplugin/main/screenshots/download_multi_chapter.png&quot; alt=&quot;多选章节下载&quot; /&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/finlater/weread.koplugin/main/screenshots/pre_download_next_chapter.png&quot; alt=&quot;章节预下载&quot; /&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/finlater/weread.koplugin/main/screenshots/download.png&quot; alt=&quot;下载全书&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th style=&quot;text-align:center&quot;&gt;书籍详情&lt;/th&gt; 
   &lt;th style=&quot;text-align:center&quot;&gt;书评&lt;/th&gt; 
   &lt;th style=&quot;text-align:center&quot;&gt;划线和想法&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/finlater/weread.koplugin/main/screenshots/book_detail.png&quot; alt=&quot;书籍详情&quot; /&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/finlater/weread.koplugin/main/screenshots/book_review.png&quot; alt=&quot;书评&quot; /&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/finlater/weread.koplugin/main/screenshots/thought.png&quot; alt=&quot;划线和想法&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th style=&quot;text-align:center&quot;&gt;搜索书籍&lt;/th&gt; 
   &lt;th style=&quot;text-align:center&quot;&gt;快捷菜单&lt;/th&gt; 
   &lt;th style=&quot;text-align:center&quot;&gt;设置&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/finlater/weread.koplugin/main/screenshots/book_search.png&quot; alt=&quot;搜索书籍&quot; /&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/finlater/weread.koplugin/main/screenshots/quick_menu.png&quot; alt=&quot;快捷菜单&quot; /&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/finlater/weread.koplugin/main/screenshots/setting.png&quot; alt=&quot;设置&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h2&gt;安装&lt;/h2&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;⚠️ 建议使用 &lt;strong&gt;KOReader 2026.03 或更高版本&lt;/strong&gt;。旧版本可能无法正常加载或使用插件，例如「工具」菜单中找不到「微信读书」。详见 &lt;a href=&quot;https://github.com/finlater/weread.koplugin/issues/14&quot;&gt;#14&lt;/a&gt;。&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;ol&gt; 
 &lt;li&gt;前往 &lt;a href=&quot;https://github.com/finlater/weread.koplugin/releases&quot;&gt;GitHub Releases&lt;/a&gt; 下载最新的 &lt;code&gt;weread.koplugin-vX.Y.Z.zip&lt;/code&gt; 安装包。&lt;/li&gt; 
 &lt;li&gt;解压安装包，得到 &lt;code&gt;weread.koplugin&lt;/code&gt; 文件夹。&lt;/li&gt; 
 &lt;li&gt;将该文件夹复制到 KOReader 的 &lt;code&gt;plugins&lt;/code&gt; 目录：&lt;/li&gt; 
&lt;/ol&gt; 
&lt;pre&gt;&lt;code&gt;koreader/plugins/weread.koplugin/
&lt;/code&gt;&lt;/pre&gt; 
&lt;ol start=&quot;4&quot;&gt; 
 &lt;li&gt;重启 KOReader，在菜单中找到：&lt;/li&gt; 
&lt;/ol&gt; 
&lt;pre&gt;&lt;code&gt;工具 → 微信读书
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;后续更新插件可在 &lt;strong&gt;微信读书 → 设置 → 更新管理&lt;/strong&gt; 菜单中在线更新。&lt;/p&gt; 
&lt;h2&gt;登录与认证&lt;/h2&gt; 
&lt;p&gt;插件只支持微信扫码登录，扫码前需要先为账号开通微信读书 Skill：&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;手机打开&lt;strong&gt;微信读书 App&lt;/strong&gt;。&lt;/li&gt; 
 &lt;li&gt;进入 &lt;strong&gt;我 → 设置 → 微信读书 Skill&lt;/strong&gt;。&lt;/li&gt; 
 &lt;li&gt;点击 &lt;strong&gt;获取 API Key&lt;/strong&gt;，确认已经生成个人官方 API Key。&lt;/li&gt; 
 &lt;li&gt;在 KOReader 打开 &lt;strong&gt;工具 → 微信读书 → 微信扫码登录&lt;/strong&gt;。&lt;/li&gt; 
 &lt;li&gt;使用微信扫码并在手机端确认；若手机显示四位验证码，请在 KOReader 中输入。&lt;/li&gt; 
&lt;/ol&gt; 
&lt;h2&gt;SimpleUI / Zen_UI 集成&lt;/h2&gt; 
&lt;p&gt;插件提供统一的“微信读书书架”入口并支持集成到 SimpleUI和 ZenUI的快捷按钮中。(需要安装最新版 &lt;a href=&quot;https://github.com/doctorhetfield-cmd/simpleui.koplugin&quot;&gt;SimpleUI&lt;/a&gt; 和 &lt;a href=&quot;https://github.com/AnthonyGress/zen_ui.koplugin&quot;&gt;ZenUI&lt;/a&gt;插件)。&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;SimpleUI&lt;/strong&gt;：进入 &lt;code&gt;快捷操作&lt;/code&gt; 新建操作，类型选择 &lt;code&gt;插件 → 微信读书&lt;/code&gt;，再把该操作加入底部栏即可。如需使用本项目图标，将 &lt;code&gt;icons/weread-w-book.svg&lt;/code&gt; 或 &lt;code&gt;icons/weread-ink.png&lt;/code&gt; 复制到 SimpleUI 的自定义图标目录&lt;code&gt;koreader/setting/simpleui/sui_icons&lt;/code&gt;后，在快捷操作中选中它。&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Zen_UI 底栏&lt;/strong&gt;：进入 &lt;code&gt;控件 → 按钮 → ➕ → 插件 → 微信读书&lt;/code&gt;，点击后直接打开微信读书书架。注册时会把 &lt;code&gt;weread-w-book.svg&lt;/code&gt; 同步到 KOReader 用户图标目录，供 ZenUI 自动匹配或手动选择；不会自动修改、添加或启用 Tab。&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Zen_UI 首页&lt;/strong&gt;：进入 &lt;code&gt;主页 → 小组件&lt;/code&gt;，启用“微信读书”组件。组件默认关闭，可由用户自行排序。&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;原生 KOReader 的 “工具 → 微信读书” 菜单保持不变。&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th style=&quot;text-align:center&quot;&gt;SimpleUI&lt;/th&gt; 
   &lt;th style=&quot;text-align:center&quot;&gt;Zen_UI&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/finlater/weread.koplugin/main/screenshots/simpleui_quick_menu.png&quot; alt=&quot;simpleui&quot; /&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/finlater/weread.koplugin/main/screenshots/zenui_quick_menu.png&quot; alt=&quot;ZenUI&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h2&gt;菜单结构&lt;/h2&gt; 
&lt;pre&gt;&lt;code&gt;微信读书
├── 微信扫码登录 / 已经登录 · 账号名
├── 立即同步进度       （阅读微信读书缓存书籍时显示）
├── 书籍详情           （阅读微信读书缓存书籍时显示）
├── 显示划线和想法     （阅读书籍时显示，开关）
├── 书架               书籍 / 公众号 Tab；书架内搜索、离线缓存、手动更新
├── 本地书架            已下载书籍（不包含单章）的本地入口
├── 搜索               搜索微信读书
├── 阅读时间上报        后台上报阅读时长
│   ├── 启用阅读时间上报
│   ├── 仅在阅读时上报
│   ├── 选择目标书籍
│   │   ├── 自动关联微信读书书籍
│   │   └── 手动设置上报书籍
│   └── 上报状态
├── 阅读统计            阅读时长/天数/排行/偏好可视化（页内 周/月/年/总 tab 切换，可翻阅历史周期）
├── 设置
│   ├── 缓存管理
│   │   ├── 扫描并关联本地书籍
│   │   ├── 缓存清理
│   │   └── 缓存目录
│   ├── 进度管理
│   │   ├── 打开时拉取进度（默认关闭）
│   │   └── 关闭时上传进度（默认关闭）
│   ├── 下载设置
│   │   ├── 书籍图片（默认开启）
│   │   ├── 公众号文章图片（默认关闭）
│   │   └── 章节预下载
│   │       ├── 自动预下载下一章（默认关闭，开启时会确认网络卡顿风险）
│   │       ├── 预下载划线和想法（默认关闭，总开关关闭时不可操作）
│   │       └── 显示预下载提示（默认开启，总开关关闭时不可操作）
│   ├── 划线设置
│   │   ├── 划线边缘防误触（默认开启）
│   │   └── 边缘区域：20%（可调 10%–40%）
│   ├── 账号管理
│   │   ├── 账号状态
│   │   ├── 立即续期 Cookie
│   │   └── 清除账号数据
│   └── 关于
│       ├── 版本 x.y.z
│       ├── 作者：finlater
│       ├── 检查更新
│       ├── 每天自动检查一次（默认关闭）
│       └── 更新时优先使用代理（默认开启；代理失败会自动回退 GitHub）
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;贡献&lt;/h2&gt; 
&lt;p&gt;欢迎提交 issue 和 PR。提交前请阅读 &lt;a href=&quot;https://raw.githubusercontent.com/finlater/weread.koplugin/main/CONTRIBUTING.md&quot;&gt;CONTRIBUTING.md&lt;/a&gt;。&lt;/p&gt; 
&lt;h2&gt;许可证&lt;/h2&gt; 
&lt;p&gt;本项目代码采用 &lt;a href=&quot;https://raw.githubusercontent.com/finlater/weread.koplugin/main/LICENSE&quot;&gt;GNU Affero General Public License v3.0&lt;/a&gt;，SPDX 标识为 &lt;code&gt;AGPL-3.0-only&lt;/code&gt;，与 KOReader 使用的许可证保持一致。&lt;/p&gt; 
&lt;p&gt;修改、整合或再分发本项目时，必须遵守 AGPL-3.0，保留版权和许可证声明，并按许可证要求将本项目代码或其衍生作品开源。&lt;/p&gt; 
&lt;p&gt;&lt;code&gt;fonts/NotoEmoji-Regular.ttf&lt;/code&gt; 是第三方字体，采用 &lt;a href=&quot;https://raw.githubusercontent.com/finlater/weread.koplugin/main/fonts/LICENSE&quot;&gt;SIL Open Font License 1.1&lt;/a&gt;，不适用本项目的 AGPL-3.0。&lt;/p&gt; 
&lt;p&gt;Copyright © 2026 finlater and contributors.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>tarantool/tarantool</title>
      <link>https://github.com/tarantool/tarantool</link>
      <description>&lt;p&gt;Get your data in RAM. Get compute close to data. Enjoy the performance.&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;Tarantool&lt;/h1&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/tarantool/tarantool/actions&quot;&gt;&lt;img src=&quot;https://github.com/tarantool/tarantool/workflows/release/badge.svg?sanitize=true&quot; alt=&quot;Actions Status&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://coveralls.io/github/tarantool/tarantool?branch=master&quot;&gt;&lt;img src=&quot;https://coveralls.io/repos/github/tarantool/tarantool/badge.svg?branch=master&quot; alt=&quot;Code Coverage&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://oss-fuzz.com/coverage-report/job/libfuzzer_asan_tarantool/latest&quot;&gt;&lt;img src=&quot;https://oss-fuzz-build-logs.storage.googleapis.com/badges/tarantool.svg?sanitize=true&quot; alt=&quot;OSS Fuzz&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://telegram.me/tarantool&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Telegram-join%20chat-blue.svg?sanitize=true&quot; alt=&quot;Telegram&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/tarantool/tarantool/discussions&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/discussions/tarantool/tarantool&quot; alt=&quot;GitHub Discussions&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://stackoverflow.com/questions/tagged/tarantool&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/stackoverflow-tarantool-orange.svg?sanitize=true&quot; alt=&quot;Stack Overflow&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://www.tarantool.io/en/&quot;&gt;Tarantool&lt;/a&gt; is an in-memory computing platform consisting of a database and an application server.&lt;/p&gt; 
&lt;p&gt;It is distributed under &lt;a href=&quot;https://raw.githubusercontent.com/tarantool/tarantool/master/LICENSE&quot;&gt;BSD 2-Clause&lt;/a&gt; terms.&lt;/p&gt; 
&lt;p&gt;Key features of the application server:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Heavily optimized Lua interpreter with incredibly fast tracing JIT compiler, based on LuaJIT 2.1.&lt;/li&gt; 
 &lt;li&gt;Cooperative multitasking, non-blocking IO.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/tarantool/queue&quot;&gt;Persistent queues&lt;/a&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/tarantool/vshard&quot;&gt;Sharding&lt;/a&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/tarantool/cartridge&quot;&gt;Cluster and application management framework&lt;/a&gt;.&lt;/li&gt; 
 &lt;li&gt;Access to external databases such as &lt;a href=&quot;https://github.com/tarantool/mysql&quot;&gt;MySQL&lt;/a&gt; and &lt;a href=&quot;https://github.com/tarantool/pg&quot;&gt;PostgreSQL&lt;/a&gt;.&lt;/li&gt; 
 &lt;li&gt;A rich set of built-in and standalone &lt;a href=&quot;https://www.tarantool.io/en/download/rocks&quot;&gt;modules&lt;/a&gt;.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Key features of the database:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;MessagePack data format and MessagePack based client-server protocol.&lt;/li&gt; 
 &lt;li&gt;Two data engines: 100% in-memory with complete WAL-based persistence and an own implementation of LSM-tree, to use with large data sets.&lt;/li&gt; 
 &lt;li&gt;Multiple index types: HASH, TREE, RTREE, BITSET.&lt;/li&gt; 
 &lt;li&gt;Document oriented JSON path indexes.&lt;/li&gt; 
 &lt;li&gt;Asynchronous master-master replication.&lt;/li&gt; 
 &lt;li&gt;Synchronous quorum-based replication.&lt;/li&gt; 
 &lt;li&gt;RAFT-based automatic leader election for the single-leader configuration.&lt;/li&gt; 
 &lt;li&gt;Authentication and access control.&lt;/li&gt; 
 &lt;li&gt;ANSI SQL, including views, joins, referential and check constraints.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.tarantool.io/en/download/connectors&quot;&gt;Connectors&lt;/a&gt; for many programming languages.&lt;/li&gt; 
 &lt;li&gt;The database is a C extension of the application server and can be turned off.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Supported platforms are Linux (x86_64, aarch64), Mac OS X (x86_64, M1), FreeBSD (x86_64).&lt;/p&gt; 
&lt;p&gt;Tarantool is ideal for data-enriched components of scalable Web architecture: queue servers, caches, stateful Web applications.&lt;/p&gt; 
&lt;p&gt;To download and install Tarantool as a binary package for your OS or using Docker, please see the &lt;a href=&quot;https://www.tarantool.io/en/download/&quot;&gt;download instructions&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;To build Tarantool from source, see detailed &lt;a href=&quot;https://www.tarantool.io/en/doc/latest/dev_guide/building_from_source/&quot;&gt;instructions&lt;/a&gt; in the Tarantool documentation.&lt;/p&gt; 
&lt;p&gt;To find modules, connectors and tools for Tarantool, check out our &lt;a href=&quot;https://github.com/tarantool/awesome-tarantool/&quot;&gt;Awesome Tarantool&lt;/a&gt; list.&lt;/p&gt; 
&lt;p&gt;Please report bugs to our &lt;a href=&quot;https://github.com/tarantool/tarantool/issues&quot;&gt;issue tracker&lt;/a&gt;. We also warmly welcome your feedback on the &lt;a href=&quot;https://github.com/tarantool/tarantool/discussions&quot;&gt;discussions&lt;/a&gt; page and questions on &lt;a href=&quot;https://stackoverflow.com/questions/tagged/tarantool&quot;&gt;Stack Overflow&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;We accept contributions via pull requests. Check out our &lt;a href=&quot;https://raw.githubusercontent.com/tarantool/tarantool/master/CONTRIBUTING.md&quot;&gt;contributing guide&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;Thank you for your interest in Tarantool!&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>xmake-io/xmake</title>
      <link>https://github.com/xmake-io/xmake</link>
      <description>&lt;p&gt;🔥 A cross-platform build utility based on Lua&lt;/p&gt;&lt;hr&gt;&lt;div align=&quot;center&quot;&gt; 
 &lt;a href=&quot;https://xmake.io&quot;&gt; &lt;img width=&quot;160&quot; height=&quot;160&quot; src=&quot;https://xmake.io/assets/img/logo.png&quot; /&gt; &lt;/a&gt; 
 &lt;h1&gt;xmake&lt;/h1&gt; 
 &lt;div&gt; 
  &lt;a href=&quot;https://github.com/xmake-io/xmake/actions?query=workflow%3AWindows&quot;&gt; &lt;img src=&quot;https://img.shields.io/github/actions/workflow/status/xmake-io/xmake/windows.yml?branch=master&amp;amp;style=flat-square&amp;amp;logo=windows&quot; alt=&quot;github-ci&quot; /&gt; &lt;/a&gt; 
  &lt;a href=&quot;https://github.com/xmake-io/xmake/actions?query=workflow%3ALinux&quot;&gt; &lt;img src=&quot;https://img.shields.io/github/actions/workflow/status/xmake-io/xmake/linux.yml?branch=master&amp;amp;style=flat-square&amp;amp;logo=linux&quot; alt=&quot;github-ci&quot; /&gt; &lt;/a&gt; 
  &lt;a href=&quot;https://github.com/xmake-io/xmake/actions?query=workflow%3AmacOS&quot;&gt; &lt;img src=&quot;https://img.shields.io/github/actions/workflow/status/xmake-io/xmake/macos.yml?branch=master&amp;amp;style=flat-square&amp;amp;logo=apple&quot; alt=&quot;github-ci&quot; /&gt; &lt;/a&gt; 
  &lt;a href=&quot;https://github.com/xmake-io/xmake/releases&quot;&gt; &lt;img src=&quot;https://img.shields.io/github/release/xmake-io/xmake.svg?style=flat-square&quot; alt=&quot;Github All Releases&quot; /&gt; &lt;/a&gt; 
 &lt;/div&gt; 
 &lt;div&gt; 
  &lt;a href=&quot;https://github.com/xmake-io/xmake/raw/master/LICENSE.md&quot;&gt; &lt;img src=&quot;https://img.shields.io/github/license/xmake-io/xmake.svg?colorB=f48041&amp;amp;style=flat-square&quot; alt=&quot;license&quot; /&gt; &lt;/a&gt; 
  &lt;a href=&quot;https://www.reddit.com/r/xmake/&quot;&gt; &lt;img src=&quot;https://img.shields.io/badge/chat-on%20reddit-ff3f34.svg?style=flat-square&quot; alt=&quot;Reddit&quot; /&gt; &lt;/a&gt; 
  &lt;a href=&quot;https://t.me/tbooxorg&quot;&gt; &lt;img src=&quot;https://img.shields.io/badge/chat-on%20telegram-blue.svg?style=flat-square&quot; alt=&quot;Telegram&quot; /&gt; &lt;/a&gt; 
  &lt;a href=&quot;https://jq.qq.com/?_wv=1027&amp;amp;k=5hpwWFv&quot;&gt; &lt;img src=&quot;https://img.shields.io/badge/chat-on%20QQ-ff69b4.svg?style=flat-square&quot; alt=&quot;QQ&quot; /&gt; &lt;/a&gt; 
  &lt;a href=&quot;https://discord.gg/xmake&quot;&gt; &lt;img src=&quot;https://img.shields.io/badge/chat-on%20discord-7289da.svg?style=flat-square&quot; alt=&quot;Discord&quot; /&gt; &lt;/a&gt; 
  &lt;a href=&quot;https://xmake.io/about/sponsor.html&quot;&gt; &lt;img src=&quot;https://img.shields.io/badge/donate-us-orange.svg?style=flat-square&quot; alt=&quot;Donate&quot; /&gt; &lt;/a&gt; 
 &lt;/div&gt; 
 &lt;p&gt;&lt;b&gt;A cross-platform build utility based on Lua&lt;/b&gt;&lt;br /&gt; &lt;i&gt;Modern C/C++ build tool: Simple, Fast, Powerful dependency package integration&lt;/i&gt;&lt;br /&gt;&lt;/p&gt; 
&lt;/div&gt; 
&lt;h2&gt;Support this project&lt;/h2&gt; 
&lt;p&gt;Support this project by &lt;a href=&quot;https://xmake.io/about/sponsor.html&quot;&gt;becoming a sponsor&lt;/a&gt;. Your logo will show up here with a link to your website. 🙏&lt;/p&gt; 
&lt;h2&gt;Introduction (&lt;a href=&quot;https://raw.githubusercontent.com/xmake-io/xmake/dev/README_zh.md&quot;&gt;中文&lt;/a&gt;)&lt;/h2&gt; 
&lt;p&gt;What is Xmake?&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;Xmake is a cross-platform build utility based on the Lua scripting language.&lt;/li&gt; 
 &lt;li&gt;Xmake is very lightweight and has no dependencies outside of the standard library.&lt;/li&gt; 
 &lt;li&gt;Uses the &lt;code&gt;xmake.lua&lt;/code&gt; file to maintain project builds with a simple and readable syntax.&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;Xmake can be used to directly build source code (like with Make or Ninja), or it can generate project source files like CMake or Meson. It also has a &lt;em&gt;built-in&lt;/em&gt; package management system to help users integrate C/C++ dependencies.&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;Xmake = Build backend + Project Generator + Package Manager + [Remote|Distributed] Build + Cache
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Although less precise, one can still understand Xmake in the following way:&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;Xmake ≈ Make/Ninja + CMake/Meson + Vcpkg/Conan + distcc + ccache/sccache
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;If you want to know more, please refer to the &lt;a href=&quot;https://xmake.io/guide/quick-start&quot;&gt;Documentation&lt;/a&gt;, &lt;a href=&quot;https://github.com/xmake-io/xmake&quot;&gt;GitHub&lt;/a&gt; or &lt;a href=&quot;https://gitee.com/tboox/xmake&quot;&gt;Gitee&lt;/a&gt;. You are also welcome to join our &lt;a href=&quot;https://xmake.io/about/contact&quot;&gt;community&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;The official Xmake repository can be found at &lt;a href=&quot;https://github.com/xmake-io/xmake-repo&quot;&gt;xmake-io/xmake-repo&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://github.com/xmake-io/xmake-docs/raw/master/docs/public/assets/img/index/xmake-basic-render.gif&quot; alt=&quot;&quot; /&gt;&lt;/p&gt; 
&lt;h2&gt;Installation&lt;/h2&gt; 
&lt;h3&gt;With cURL&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;curl -fsSL https://xmake.io/shget.text | bash
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;With Wget&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;wget https://xmake.io/shget.text -O - | bash
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;With PowerShell&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;irm https://xmake.io/psget.text | iex
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Other installation methods&lt;/h3&gt; 
&lt;p&gt;If you don&#39;t want to use the above scripts to install Xmake, visit the &lt;a href=&quot;https://xmake.io/guide/quick-start.html#installation&quot;&gt;Installation Guide&lt;/a&gt; for other installation methods (building from source, package managers, etc.).&lt;/p&gt; 
&lt;h2&gt;Simple Project Description&lt;/h2&gt; 
&lt;pre&gt;&lt;code class=&quot;language-lua&quot;&gt;target(&quot;console&quot;)
    set_kind(&quot;binary&quot;)
    add_files(&quot;src/*.c&quot;)
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Creates a new target &lt;code&gt;console&lt;/code&gt; of kind &lt;code&gt;binary&lt;/code&gt;, and adds all the files ending in &lt;code&gt;.c&lt;/code&gt; in the &lt;code&gt;src&lt;/code&gt; directory.&lt;/p&gt; 
&lt;h2&gt;Package dependencies&lt;/h2&gt; 
&lt;pre&gt;&lt;code class=&quot;language-lua&quot;&gt;add_requires(&quot;tbox 1.6.*&quot;, &quot;zlib&quot;, &quot;libpng ~1.6&quot;)
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Adds a requirement of tbox v1.6, zlib (any version), and libpng v1.6.&lt;/p&gt; 
&lt;p&gt;The official xmake package repository exists at: &lt;a href=&quot;https://github.com/xmake-io/xmake-repo&quot;&gt;xmake-repo&lt;/a&gt;&lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;img src=&quot;https://github.com/xmake-io/xmake-docs/raw/master/assets/img/index/package.gif&quot; width=&quot;650px&quot; /&gt; &lt;/p&gt; 
&lt;h2&gt;Command line interface reference&lt;/h2&gt; 
&lt;p&gt;The below assumes you are currently in the project&#39;s root directory.&lt;/p&gt; 
&lt;h3&gt;Build a project&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;$ xmake
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Run target&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;$ xmake run console
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Debug target&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;$ xmake run -d console
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Run test&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;$ xmake test
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Configure platform&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;$ xmake f -p [windows|linux|macosx|android|iphoneos ..] -a [x86|arm64 ..] -m [debug|release]
$ xmake
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Menu configuration&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;$ xmake f --menu
&lt;/code&gt;&lt;/pre&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;img src=&quot;https://xmake.io/assets/img/index/menuconf.png&quot; width=&quot;650px&quot; /&gt; &lt;/p&gt; 
&lt;h2&gt;Supported platforms&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;Windows (x86, x64, arm, arm64, arm64ec)&lt;/li&gt; 
 &lt;li&gt;macOS (i386, x86_64, arm64)&lt;/li&gt; 
 &lt;li&gt;Linux (i386, x86_64, arm, arm64, riscv, mips, 390x, sh4 ...)&lt;/li&gt; 
 &lt;li&gt;FreeBSD (i386, x86_64)&lt;/li&gt; 
 &lt;li&gt;NetBSD (i386, x86_64)&lt;/li&gt; 
 &lt;li&gt;OpenBSD (i386, x86_64)&lt;/li&gt; 
 &lt;li&gt;DragonflyBSD (i386, x86_64)&lt;/li&gt; 
 &lt;li&gt;Solaris (i386, x86_64)&lt;/li&gt; 
 &lt;li&gt;Android (x86, x86_64, armeabi, armeabi-v7a, arm64-v8a)&lt;/li&gt; 
 &lt;li&gt;iOS (armv7, armv7s, arm64, i386, x86_64)&lt;/li&gt; 
 &lt;li&gt;WatchOS (armv7k, i386)&lt;/li&gt; 
 &lt;li&gt;AppleTVOS (armv7, arm64, i386, x86_64)&lt;/li&gt; 
 &lt;li&gt;AppleXROS (arm64, x86_64)&lt;/li&gt; 
 &lt;li&gt;MSYS (i386, x86_64)&lt;/li&gt; 
 &lt;li&gt;MinGW (i386, x86_64, arm, arm64)&lt;/li&gt; 
 &lt;li&gt;Cygwin (i386, x86_64)&lt;/li&gt; 
 &lt;li&gt;Wasm (wasm32, wasm64)&lt;/li&gt; 
 &lt;li&gt;Haiku (i386, x86_64)&lt;/li&gt; 
 &lt;li&gt;Harmony (x86_64, armeabi-v7a, arm64-v8a)&lt;/li&gt; 
 &lt;li&gt;Cross (cross-toolchains ..)&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Supported toolchains&lt;/h2&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;$ xmake show -l toolchains
xcode         Xcode IDE
msvc          Microsoft Visual C/C++ Compiler
clang-cl      LLVM Clang C/C++ Compiler compatible with msvc
yasm          The Yasm Modular Assembler
clang         A C language family frontend for LLVM
go            Go Programming Language Compiler
dlang         D Programming Language Compiler (Auto)
dmd           D Programming Language Compiler
ldc           The LLVM-based D Compiler
gdc           The GNU D Compiler (GDC)
gfortran      GNU Fortran Programming Language Compiler
flang         LLVM Fortran Compiler
zig           Zig Programming Language Compiler
zigcc         Use zig cc/c++ as C/C++ Compiler
sdcc          Small Device C Compiler
cuda          CUDA Toolkit (nvcc, nvc, nvc++, nvfortran)
ndk           Android NDK
rust          Rust Programming Language Compiler
swift         Swift Programming Language Compiler
llvm          A collection of modular and reusable compiler and toolchain technologies
cross         Common cross compilation toolchain
nasm          NASM Assembler
gcc           GNU Compiler Collection
mingw         Minimalist GNU for Windows
gnu-rm        GNU Arm Embedded Toolchain
envs          Environment variables toolchain
fasm          Flat Assembler
tinycc        Tiny C Compiler
emcc          A toolchain for compiling to asm.js and WebAssembly
icc           Intel C/C++ Compiler
ifort         Intel Fortran Compiler
ifx           Intel LLVM Fortran Compiler
muslcc        The musl-based cross-compilation toolchain
fpc           Free Pascal Programming Language Compiler
wasi          WASI-enabled WebAssembly C/C++ toolchain
nim           Nim Programming Language Compiler
dotnet        .NET SDK Toolchain
circle        A new C++20 compiler
armcc         ARM Compiler Version 5 of Keil MDK
armclang      ARM Compiler Version 6 of Keil MDK
c51           Keil development tools for the 8051 Microcontroller Architecture
icx           Intel LLVM C/C++ Compiler
dpcpp         Intel LLVM C++ Compiler for data parallel programming model based on Khronos SYCL
masm32        The MASM32 SDK
iverilog      Icarus Verilog
verilator     Verilator open-source SystemVerilog simulator and lint system
cosmocc       build-once run-anywhere
hdk           Harmony SDK
ti-c2000      TI-CGT C2000 compiler
ti-c6000      TI-CGT C6000 compiler
iararm        IAR ARM C/C++ Compiler
kotlin-native Kotlin Native Programming Language Compiler
filc          A memory safe implementation of the C and C++ programming languages (https://fil-c.org/)
ascendc       Huawei Ascend C (bisheng compiler driver)
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Supported languages&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;C and C++&lt;/li&gt; 
 &lt;li&gt;Objective-C and Objective-C++&lt;/li&gt; 
 &lt;li&gt;Swift&lt;/li&gt; 
 &lt;li&gt;Assembly&lt;/li&gt; 
 &lt;li&gt;Golang&lt;/li&gt; 
 &lt;li&gt;Rust&lt;/li&gt; 
 &lt;li&gt;Dlang&lt;/li&gt; 
 &lt;li&gt;Fortran&lt;/li&gt; 
 &lt;li&gt;Cuda&lt;/li&gt; 
 &lt;li&gt;Zig&lt;/li&gt; 
 &lt;li&gt;Vala&lt;/li&gt; 
 &lt;li&gt;Pascal&lt;/li&gt; 
 &lt;li&gt;Nim&lt;/li&gt; 
 &lt;li&gt;Verilog&lt;/li&gt; 
 &lt;li&gt;FASM&lt;/li&gt; 
 &lt;li&gt;NASM&lt;/li&gt; 
 &lt;li&gt;YASM&lt;/li&gt; 
 &lt;li&gt;MASM32&lt;/li&gt; 
 &lt;li&gt;Cppfront&lt;/li&gt; 
 &lt;li&gt;Kotlin&lt;/li&gt; 
 &lt;li&gt;C#&lt;/li&gt; 
 &lt;li&gt;Ascend C&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Features&lt;/h2&gt; 
&lt;p&gt;Xmake exhibits:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Simple yet flexible configuration grammar.&lt;/li&gt; 
 &lt;li&gt;Quick, dependency-free installation.&lt;/li&gt; 
 &lt;li&gt;Easy compilation for most all supported platforms.&lt;/li&gt; 
 &lt;li&gt;Supports cross-compilation with intelligent analysis of cross toolchain information.&lt;/li&gt; 
 &lt;li&gt;Extremely fast parallel compilation support.&lt;/li&gt; 
 &lt;li&gt;Supports C++ modules (new in C++20).&lt;/li&gt; 
 &lt;li&gt;Supports cross-platform C/C++ dependencies with built-in package manager.&lt;/li&gt; 
 &lt;li&gt;Multi-language compilation support including mixed-language projects.&lt;/li&gt; 
 &lt;li&gt;Rich plug-in support with various project generators (ex. Visual Studio/Makefiles/CMake/&lt;code&gt;compile_commands.json&lt;/code&gt;)&lt;/li&gt; 
 &lt;li&gt;REPL interactive execution support&lt;/li&gt; 
 &lt;li&gt;Incremental compilation support with automatic analysis of header files&lt;/li&gt; 
 &lt;li&gt;Built-in toolchain management&lt;/li&gt; 
 &lt;li&gt;A large number of expansion modules&lt;/li&gt; 
 &lt;li&gt;Remote compilation support&lt;/li&gt; 
 &lt;li&gt;Distributed compilation support&lt;/li&gt; 
 &lt;li&gt;Local and remote build cache support&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Supported Project Types&lt;/h2&gt; 
&lt;p&gt;Xmake supports the below types of projects:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Static libraries&lt;/li&gt; 
 &lt;li&gt;Shared libraries&lt;/li&gt; 
 &lt;li&gt;Console/CLI applications&lt;/li&gt; 
 &lt;li&gt;CUDA programs&lt;/li&gt; 
 &lt;li&gt;Qt applications&lt;/li&gt; 
 &lt;li&gt;WDK drivers (umdf/kmdf/wdm)&lt;/li&gt; 
 &lt;li&gt;WinSDK applications&lt;/li&gt; 
 &lt;li&gt;MFC applications&lt;/li&gt; 
 &lt;li&gt;Darwin applications (with metal support)&lt;/li&gt; 
 &lt;li&gt;Frameworks and bundles (in Darwin)&lt;/li&gt; 
 &lt;li&gt;SWIG modules (Lua, Python, ...)&lt;/li&gt; 
 &lt;li&gt;LuaRocks modules&lt;/li&gt; 
 &lt;li&gt;Protobuf programs&lt;/li&gt; 
 &lt;li&gt;Lex/Yacc programs&lt;/li&gt; 
 &lt;li&gt;Linux kernel modules&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Package management&lt;/h2&gt; 
&lt;h3&gt;Download and build&lt;/h3&gt; 
&lt;p&gt;Xmake can automatically fetch and install dependencies!&lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;img src=&quot;https://xmake.io/assets/img/index/package_manage.png&quot; width=&quot;650px&quot; /&gt; &lt;/p&gt; 
&lt;h3&gt;Supported package repositories&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Official package repository &lt;a href=&quot;https://github.com/xmake-io/xmake-repo&quot;&gt;xmake-repo&lt;/a&gt; (tbox &amp;gt;1.6.1)&lt;/li&gt; 
 &lt;li&gt;Official package manager &lt;a href=&quot;https://github.com/xmake-io/xrepo&quot;&gt;Xrepo&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://xmake.io/guide/package-management/using-official-packages.html#using-self-built-private-package-repository&quot;&gt;User-built repositories&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Conan (conan::openssl/1.1.1g)&lt;/li&gt; 
 &lt;li&gt;Conda (conda::libpng 1.3.67)&lt;/li&gt; 
 &lt;li&gt;Vcpkg (vcpkg:ffmpeg)&lt;/li&gt; 
 &lt;li&gt;Homebrew/Linuxbrew (brew::pcre2/libpcre2-8)&lt;/li&gt; 
 &lt;li&gt;Pacman on archlinux/msys2 (pacman::libcurl)&lt;/li&gt; 
 &lt;li&gt;Apt on ubuntu/debian (apt::zlib1g-dev)&lt;/li&gt; 
 &lt;li&gt;Clib (clib::clibs/bytes@0.0.4)&lt;/li&gt; 
 &lt;li&gt;Dub (dub::log 0.4.3)&lt;/li&gt; 
 &lt;li&gt;Portage on Gentoo/Linux (portage::libhandy)&lt;/li&gt; 
 &lt;li&gt;Nimble for nimlang (nimble::zip &amp;gt;1.3)&lt;/li&gt; 
 &lt;li&gt;Cargo for rust (cargo::base64 0.13.0)&lt;/li&gt; 
 &lt;li&gt;Zypper on openSUSE (zypper::libsfml2 2.5)&lt;/li&gt; 
 &lt;li&gt;NuGet (nuget::Humanizer.Core 2.14.1)&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Package management features&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;The official repository provides nearly 500+ packages with simple compilation on all supported platforms&lt;/li&gt; 
 &lt;li&gt;Full platform package support, support for cross-compiled dependent packages&lt;/li&gt; 
 &lt;li&gt;Support package virtual environment using &lt;code&gt;xrepo env shell&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;Precompiled package acceleration for Windows (NT)&lt;/li&gt; 
 &lt;li&gt;Support self-built package repositories and private repository deployment&lt;/li&gt; 
 &lt;li&gt;Third-party package repository support for repositories such as: vcpkg, conan, conda, etc.&lt;/li&gt; 
 &lt;li&gt;Supports automatic pulling of remote toolchains&lt;/li&gt; 
 &lt;li&gt;Supports dependency version locking&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Processing architecture&lt;/h2&gt; 
&lt;p&gt;Below is a diagram showing roughly the architecture of Xmake, and thus how it functions.&lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;img src=&quot;https://xmake.io/assets/img/index/package_arch.png&quot; width=&quot;650px&quot; /&gt; &lt;/p&gt; 
&lt;h2&gt;Distributed Compilation&lt;/h2&gt; 
&lt;ul class=&quot;task-list&quot;&gt; 
 &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_0&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_0&quot;&gt; Cross-platform support.&lt;/label&gt;&lt;/li&gt; 
 &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_1&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_1&quot;&gt; Support for MSVC, Clang, GCC and other cross-compilation toolchains.&lt;/label&gt;&lt;/li&gt; 
 &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_2&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_2&quot;&gt; Support for building for Android, Linux, Windows NT, and Darwin hosts.&lt;/label&gt;&lt;/li&gt; 
 &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_3&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_3&quot;&gt; No dependencies other than the compilation toolchain.&lt;/label&gt;&lt;/li&gt; 
 &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_4&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_4&quot;&gt; Support for build server load balancing scheduling.&lt;/label&gt;&lt;/li&gt; 
 &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_5&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_5&quot;&gt; Support for real time compressed transfer of large files (lz4).&lt;/label&gt;&lt;/li&gt; 
 &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_6&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_6&quot;&gt; Almost zero configuration cost, no shared filesystem required, for convenience and security.&lt;/label&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;For more details see: &lt;a href=&quot;https://xmake.io/guide/extras/distributed-compilation.html&quot;&gt;Distributed Compilation&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;Remote Compilation&lt;/h2&gt; 
&lt;p&gt;For more details see: &lt;a href=&quot;https://xmake.io/guide/extras/remote-compilation.html&quot;&gt;Remote Compilation&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;Local/Remote Build Cache&lt;/h2&gt; 
&lt;p&gt;For more details see: &lt;a href=&quot;https://xmake.io/guide/extras/build-cache.html&quot;&gt;Build Cache Acceleration&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;Benchmark&lt;/h2&gt; 
&lt;p&gt;Xmake&#39;s speed on is par with Ninja! The test project: &lt;a href=&quot;https://github.com/xmake-io/xmake/tree/master/core&quot;&gt;xmake-core&lt;/a&gt;&lt;/p&gt; 
&lt;h3&gt;Multi-task parallel compilation&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;buildsystem&lt;/th&gt; 
   &lt;th&gt;Termux (8core/-j12)&lt;/th&gt; 
   &lt;th&gt;buildsystem&lt;/th&gt; 
   &lt;th&gt;MacOS (8core/-j12)&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;xmake&lt;/td&gt; 
   &lt;td&gt;24.890s&lt;/td&gt; 
   &lt;td&gt;xmake&lt;/td&gt; 
   &lt;td&gt;12.264s&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;ninja&lt;/td&gt; 
   &lt;td&gt;25.682s&lt;/td&gt; 
   &lt;td&gt;ninja&lt;/td&gt; 
   &lt;td&gt;11.327s&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;cmake(gen+make)&lt;/td&gt; 
   &lt;td&gt;5.416s+28.473s&lt;/td&gt; 
   &lt;td&gt;cmake(gen+make)&lt;/td&gt; 
   &lt;td&gt;1.203s+14.030s&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;cmake(gen+ninja)&lt;/td&gt; 
   &lt;td&gt;4.458s+24.842s&lt;/td&gt; 
   &lt;td&gt;cmake(gen+ninja)&lt;/td&gt; 
   &lt;td&gt;0.988s+11.644s&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h2&gt;Single task compilation&lt;/h2&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;buildsystem&lt;/th&gt; 
   &lt;th&gt;Termux (-j1)&lt;/th&gt; 
   &lt;th&gt;buildsystem&lt;/th&gt; 
   &lt;th&gt;MacOS (-j1)&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;xmake&lt;/td&gt; 
   &lt;td&gt;1m57.707s&lt;/td&gt; 
   &lt;td&gt;xmake&lt;/td&gt; 
   &lt;td&gt;39.937s&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;ninja&lt;/td&gt; 
   &lt;td&gt;1m52.845s&lt;/td&gt; 
   &lt;td&gt;ninja&lt;/td&gt; 
   &lt;td&gt;38.995s&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;cmake(gen+make)&lt;/td&gt; 
   &lt;td&gt;5.416s+2m10.539s&lt;/td&gt; 
   &lt;td&gt;cmake(gen+make)&lt;/td&gt; 
   &lt;td&gt;1.203s+41.737s&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;cmake(gen+ninja)&lt;/td&gt; 
   &lt;td&gt;4.458s+1m54.868s&lt;/td&gt; 
   &lt;td&gt;cmake(gen+ninja)&lt;/td&gt; 
   &lt;td&gt;0.988s+38.022s&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h2&gt;More Examples&lt;/h2&gt; 
&lt;h3&gt;Debug and release profiles&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-lua&quot;&gt;add_rules(&quot;mode.debug&quot;, &quot;mode.release&quot;)

target(&quot;console&quot;)
    set_kind(&quot;binary&quot;)
    add_files(&quot;src/*.c&quot;)
    if is_mode(&quot;debug&quot;) then
        add_defines(&quot;DEBUG&quot;)
    end
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Custom scripts&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-lua&quot;&gt;target(&quot;test&quot;)
    set_kind(&quot;binary&quot;)
    add_files(&quot;src/*.c&quot;)
    after_build(function (target)
        print(&quot;hello: %s&quot;, target:name())
        os.exec(&quot;echo %s&quot;, target:targetfile())
    end)
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Automatic integration of dependent packages&lt;/h3&gt; 
&lt;p&gt;Download and use packages in &lt;a href=&quot;https://github.com/xmake-io/xmake-repo&quot;&gt;xmake-repo&lt;/a&gt; or third-party repositories:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-lua&quot;&gt;add_requires(&quot;tbox &amp;gt;1.6.1&quot;, &quot;libuv master&quot;, &quot;vcpkg::ffmpeg&quot;, &quot;brew::pcre2/libpcre2-8&quot;)
add_requires(&quot;conan::openssl/1.1.1g&quot;, {alias = &quot;openssl&quot;, optional = true, debug = true})
target(&quot;test&quot;)
    set_kind(&quot;binary&quot;)
    add_files(&quot;src/*.c&quot;)
    add_packages(&quot;tbox&quot;, &quot;libuv&quot;, &quot;vcpkg::ffmpeg&quot;, &quot;brew::pcre2/libpcre2-8&quot;, &quot;openssl&quot;)
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;In addition, we can also use the &lt;a href=&quot;https://github.com/xmake-io/xrepo&quot;&gt;xrepo&lt;/a&gt; command to quickly install dependencies.&lt;/p&gt; 
&lt;h3&gt;Qt QuickApp Program&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-lua&quot;&gt;target(&quot;test&quot;)
    add_rules(&quot;qt.quickapp&quot;)
    add_files(&quot;src/*.cpp&quot;)
    add_files(&quot;src/qml.qrc&quot;)
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Cuda Program&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-lua&quot;&gt;target(&quot;test&quot;)
    set_kind(&quot;binary&quot;)
    add_files(&quot;src/*.cu&quot;)
    add_cugencodes(&quot;native&quot;)
    add_cugencodes(&quot;compute_75&quot;)
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;WDK/UMDF Driver Program&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-lua&quot;&gt;target(&quot;echo&quot;)
    add_rules(&quot;wdk.driver&quot;, &quot;wdk.env.umdf&quot;)
    add_files(&quot;driver/*.c&quot;)
    add_files(&quot;driver/*.inx&quot;)
    add_includedirs(&quot;exe&quot;)

target(&quot;app&quot;)
    add_rules(&quot;wdk.binary&quot;, &quot;wdk.env.umdf&quot;)
    add_files(&quot;exe/*.cpp&quot;)
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;For more WDK driver examples (UMDF/KMDF/WDM), please visit &lt;a href=&quot;https://xmake.io/examples/cpp/wdk.html&quot;&gt;WDK Program Examples&lt;/a&gt;&lt;/p&gt; 
&lt;h3&gt;Darwin Applications&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-lua&quot;&gt;target(&quot;test&quot;)
    add_rules(&quot;xcode.application&quot;)
    add_files(&quot;src/*.m&quot;, &quot;src/**.storyboard&quot;, &quot;src/*.xcassets&quot;)
    add_files(&quot;src/Info.plist&quot;)
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Framework and Bundle Program (Darwin)&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-lua&quot;&gt;target(&quot;test&quot;)
    add_rules(&quot;xcode.framework&quot;) -- or xcode.bundle
    add_files(&quot;src/*.m&quot;)
    add_files(&quot;src/Info.plist&quot;)
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;OpenMP Program&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-lua&quot;&gt;add_requires(&quot;libomp&quot;, {optional = true})
target(&quot;loop&quot;)
    set_kind(&quot;binary&quot;)
    add_files(&quot;src/*.cpp&quot;)
    add_rules(&quot;c++.openmp&quot;)
    add_packages(&quot;libomp&quot;)
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Zig Program&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-lua&quot;&gt;target(&quot;test&quot;)
    set_kind(&quot;binary&quot;)
    add_files(&quot;src/main.zig&quot;)
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Automatically fetch remote toolchain&lt;/h3&gt; 
&lt;h4&gt;fetch a special version of LLVM&lt;/h4&gt; 
&lt;p&gt;Require the Clang version packaged with LLM-10 to compile a project.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-lua&quot;&gt;add_requires(&quot;llvm 10.x&quot;, {alias = &quot;llvm-10&quot;})
target(&quot;test&quot;)
    set_kind(&quot;binary&quot;)
    add_files(&quot;src/*.c&quot;)
    set_toolchains(&quot;llvm@llvm-10&quot;)
&lt;/code&gt;&lt;/pre&gt; 
&lt;h4&gt;Fetch a cross-compilation toolchain&lt;/h4&gt; 
&lt;p&gt;We can also pull a specified cross-compilation toolchain in to compile the project.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-lua&quot;&gt;add_requires(&quot;muslcc&quot;)
target(&quot;test&quot;)
    set_kind(&quot;binary&quot;)
    add_files(&quot;src/*.c&quot;)
    set_toolchains(&quot;@muslcc&quot;)
&lt;/code&gt;&lt;/pre&gt; 
&lt;h4&gt;Fetch toolchain and packages&lt;/h4&gt; 
&lt;p&gt;We can also use the specified &lt;code&gt;muslcc&lt;/code&gt; cross-compilation toolchain to compile and integrate all dependent packages.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-lua&quot;&gt;add_requires(&quot;muslcc&quot;)
add_requires(&quot;zlib&quot;, &quot;libogg&quot;, {system = false})

set_toolchains(&quot;@muslcc&quot;)

target(&quot;test&quot;)
    set_kind(&quot;binary&quot;)
    add_files(&quot;src/*.c&quot;)
    add_packages(&quot;zlib&quot;, &quot;libogg&quot;)
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Plugins&lt;/h2&gt; 
&lt;h4&gt;Generate IDE project file plugin（makefile, vs2002 - vs2026 .. ）&lt;/h4&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;$ xmake project -k vsxmake -m &quot;debug,release&quot; # New vsproj generator (Recommended)
$ xmake project -k vs -m &quot;debug,release&quot;
$ xmake project -k cmake
$ xmake project -k ninja
$ xmake project -k compile_commands
&lt;/code&gt;&lt;/pre&gt; 
&lt;h4&gt;Run a custom lua script plugin&lt;/h4&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;$ xmake l ./test.lua
$ xmake l -c &quot;print(&#39;hello xmake!&#39;)&quot;
$ xmake l lib.detect.find_tool gcc
$ xmake l
&amp;gt; print(&quot;hello xmake!&quot;)
&amp;gt; {1, 2, 3}
&amp;lt; {
    1,
    2,
    3
  }
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;To see a list of builtin plugins, please visit &lt;a href=&quot;https://xmake.io/guide/extensions/builtin-plugins.html&quot;&gt;Builtin plugins&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;Please download and install other plugins from the plugins repository &lt;a href=&quot;https://github.com/xmake-io/xmake-plugins&quot;&gt;xmake-plugins&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;IDE/Editor Integration&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/xmake-io/xmake-vscode&quot;&gt;xmake-vscode&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;img src=&quot;https://raw.githubusercontent.com/xmake-io/xmake-vscode/master/res/problem.gif&quot; width=&quot;650px&quot; /&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/xmake-io/xmake-sublime&quot;&gt;xmake-sublime&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;img src=&quot;https://raw.githubusercontent.com/xmake-io/xmake-sublime/master/res/problem.gif&quot; width=&quot;650px&quot; /&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/xmake-io/xmake-idea&quot;&gt;xmake-idea&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;img src=&quot;https://raw.githubusercontent.com/xmake-io/xmake-idea/master/res/problem.gif&quot; width=&quot;650px&quot; /&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/xmake-io/xmake-zed&quot;&gt;xmake-zed&lt;/a&gt; (thanks &lt;a href=&quot;https://github.com/jeleferai&quot;&gt;@jeleferai&lt;/a&gt;)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/luzhlon/xmake.vim&quot;&gt;xmake.vim&lt;/a&gt; (third-party, thanks &lt;a href=&quot;https://github.com/luzhlon&quot;&gt;@luzhlon&lt;/a&gt;)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/HelloWorld886/xmake-visualstudio&quot;&gt;xmake-visualstudio&lt;/a&gt; (third-party, thanks &lt;a href=&quot;https://github.com/HelloWorld886&quot;&gt;@HelloWorld886&lt;/a&gt;)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/Arthapz/xmake-project-manager&quot;&gt;xmake-qtcreator&lt;/a&gt; (third-party, thanks &lt;a href=&quot;https://github.com/Arthapz&quot;&gt;@Arthapz&lt;/a&gt;)&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Xmake Gradle Plugin (JNI)&lt;/h3&gt; 
&lt;p&gt;We can use the &lt;a href=&quot;https://github.com/xmake-io/xmake-gradle&quot;&gt;xmake-gradle&lt;/a&gt; plugin to compile JNI libraries via gradle.&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;plugins {
  id &#39;org.tboox.gradle-xmake-plugin&#39; version &#39;1.1.5&#39;
}

android {
    externalNativeBuild {
        xmake {
            path &quot;jni/xmake.lua&quot;
        }
    }
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;The &lt;code&gt;xmakeBuild&lt;/code&gt; task will be injected into the &lt;code&gt;assemble&lt;/code&gt; task automatically if the &lt;code&gt;gradle-xmake-plugin&lt;/code&gt; has been applied.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-console&quot;&gt;$ ./gradlew app:assembleDebug
&amp;gt; Task :nativelib:xmakeConfigureForArm64
&amp;gt; Task :nativelib:xmakeBuildForArm64
&amp;gt;&amp;gt; xmake build
[ 50%]: cache compiling.debug nativelib.cc
[ 75%]: linking.debug libnativelib.so
[100%]: build ok!
&amp;gt;&amp;gt; install artifacts to /Users/ruki/projects/personal/xmake-gradle/nativelib/libs/arm64-v8a
&amp;gt; Task :nativelib:xmakeConfigureForArmv7
&amp;gt; Task :nativelib:xmakeBuildForArmv7
&amp;gt;&amp;gt; xmake build
[ 50%]: cache compiling.debug nativelib.cc
[ 75%]: linking.debug libnativelib.so
[100%]: build ok!
&amp;gt;&amp;gt; install artifacts to /Users/ruki/projects/personal/xmake-gradle/nativelib/libs/armeabi-v7a
&amp;gt; Task :nativelib:preBuild
&amp;gt; Task :nativelib:assemble
&amp;gt; Task :app:assembleDebug
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;CI Integration&lt;/h2&gt; 
&lt;h3&gt;GitHub Action&lt;/h3&gt; 
&lt;p&gt;The &lt;a href=&quot;https://github.com/xmake-io/github-action-setup-xmake&quot;&gt;github-action-setup-xmake&lt;/a&gt; plugin for GitHub Actions can allow you to use Xmake with minimal efforts if you use GitHub Actions for your CI pipeline.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;uses: xmake-io/github-action-setup-xmake@v1
with:
  xmake-version: latest
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Who is using Xmake?&lt;/h2&gt; 
&lt;p&gt;The list of people and projects who are using Xmake is available &lt;a href=&quot;https://xmake.io/about/who_is_using_xmake.html&quot;&gt;here&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;If you are using Xmake, you are welcome to submit your information to the above list through a PR, so that other users and the developers can gauge interest. This also lets users use xmake more confidently and gives us motivation to continue to maintain it.&lt;/p&gt; 
&lt;p&gt;This will help the Xmake project and it&#39;s community grow stronger and expand!&lt;/p&gt; 
&lt;h2&gt;Contacts&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;Email：&lt;a href=&quot;mailto:waruqi@gmail.com&quot;&gt;waruqi@gmail.com&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Homepage：&lt;a href=&quot;https://xmake.io&quot;&gt;xmake.io&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Community 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://www.reddit.com/r/xmake/&quot;&gt;Chat on Reddit&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://t.me/tbooxorg&quot;&gt;Chat on Telegram&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://discord.gg/xmake&quot;&gt;Chat on Discord&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;Chat on QQ Group: 343118190, 662147501&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Source Code：&lt;a href=&quot;https://github.com/xmake-io/xmake&quot;&gt;GitHub&lt;/a&gt;, &lt;a href=&quot;https://gitee.com/tboox/xmake&quot;&gt;Gitee&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;WeChat Public: tboox-os&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Thanks&lt;/h2&gt; 
&lt;p&gt;This project exists thanks to all the people who have &lt;a href=&quot;https://raw.githubusercontent.com/xmake-io/xmake/dev/CONTRIBUTING.md&quot;&gt;contributed&lt;/a&gt;: &lt;a href=&quot;https://github.com/xmake-io/xmake/graphs/contributors&quot;&gt;&lt;img src=&quot;https://opencollective.com/xmake/contributors.svg?width=890&amp;amp;button=false&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/TitanSnow&quot;&gt;TitanSnow&lt;/a&gt;: Provide the xmake &lt;a href=&quot;https://github.com/TitanSnow/ts-xmake-logo&quot;&gt;logo&lt;/a&gt; and install scripts&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/uael&quot;&gt;uael&lt;/a&gt;: Provide the semantic versioning library &lt;a href=&quot;https://github.com/uael/sv&quot;&gt;sv&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/OpportunityLiu&quot;&gt;OpportunityLiu&lt;/a&gt;: Improve cuda, tests and ci&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/xq114&quot;&gt;xq144&lt;/a&gt;: Improve &lt;code&gt;xrepo env shell&lt;/code&gt;, and contribute a lot of packages to the &lt;a href=&quot;https://github.com/xmake-io/xmake-repo&quot;&gt;xmake-repo&lt;/a&gt; repository.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/star-hengxing&quot;&gt;star-hengxing&lt;/a&gt;: Contribute a lot of packages to the &lt;a href=&quot;https://github.com/xmake-io/xmake-repo&quot;&gt;xmake-repo&lt;/a&gt; repository.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/Arthapz&quot;&gt;Arthapz&lt;/a&gt;: Contribute new C++ Modules implementation.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/SirLynix&quot;&gt;SirLynix&lt;/a&gt;: Contributed many packages and let more people know about xmake.&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;enderger&lt;/code&gt;: Helped smooth out the edges on the English translation of the README&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Powered by&lt;/h3&gt; 
&lt;p&gt;&lt;a href=&quot;https://jb.gg/OpenSource&quot;&gt;&lt;img src=&quot;https://resources.jetbrains.com/storage/products/company/brand/logos/jetbrains.svg?sanitize=true&quot; alt=&quot;JetBrains logo.&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>beyond-all-reason/Beyond-All-Reason</title>
      <link>https://github.com/beyond-all-reason/Beyond-All-Reason</link>
      <description>&lt;p&gt;Main game repository for Beyond All Reason.&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;Beyond-All-Reason&lt;/h1&gt; 
&lt;p&gt;&lt;img src=&quot;https://img.shields.io/discord/225695362004811776&quot; alt=&quot;Discord&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;Open source RTS game built on top of the Recoil RTS Engine&lt;/p&gt; 
&lt;h2&gt;Where to download&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://www.beyondallreason.info/download&quot;&gt;https://www.beyondallreason.info/download&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;How to play&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://www.beyondallreason.info/guides&quot;&gt;https://www.beyondallreason.info/guides&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;Development Quick Start&lt;/h2&gt; 
&lt;p&gt;Beyond All Reason (BAR), consists of 2 primary components, the lobby (Chobby - &lt;a href=&quot;https://github.com/beyond-all-reason/BYAR-Chobby&quot;&gt;https://github.com/beyond-all-reason/BYAR-Chobby&lt;/a&gt;) and the game code itself (this repository).&lt;/p&gt; 
&lt;p&gt;The game runs on top of the Recoil engine &lt;a href=&quot;https://github.com/beyond-all-reason/spring&quot;&gt;https://github.com/beyond-all-reason/spring&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;In order to develop the game (this repository) you first need a working install of the lobby/launcher. There are 2 ways to do this:&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt; &lt;p&gt;&lt;a href=&quot;https://www.beyondallreason.info/download#How-To-Install&quot;&gt;Download the full BAR application&lt;/a&gt; from the website and run it. This is probably what you will have done if you have previously installed and played the game.&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;OR if you want to develop the lobby client, follow &lt;a href=&quot;https://github.com/beyond-all-reason/BYAR-Chobby#developing-the-lobby&quot;&gt;the guide in the Chobby README&lt;/a&gt;. First download a &lt;a href=&quot;https://github.com/beyond-all-reason/BYAR-Chobby/releases&quot;&gt;release of Chobby&lt;/a&gt; and then launch Chobby, this will automatically download and install the engine and other dependencies.&lt;/p&gt; &lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;Once you have a working install of BAR you need a local development copy of the game code to work with. This code will live in the BAR install directory.&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt; &lt;p&gt;To find the BAR install directory simply open the launcher (not full game) and click the &quot;Open install directory&quot; button. This is one of the 3 buttons (&lt;code&gt;Toggle log&lt;/code&gt; and &lt;code&gt;Upload log&lt;/code&gt; are the other 2). For Windows installs this might be your user&#39;s &lt;code&gt;AppData/Local/Programs/Beyond-All-Reason/data&lt;/code&gt; directory, for Linux it might be your user&#39;s &lt;code&gt;.local/state/Beyond All Reason/&lt;/code&gt; directory.&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;In the BAR install directory create the empty file &lt;code&gt;devmode.txt&lt;/code&gt;. E.g: &lt;code&gt;AppData/Local/Programs/Beyond-All-Reason/data/devmode.txt&lt;/code&gt; or &lt;code&gt;.local/state/Beyond All Reason/devmode.txt&lt;/code&gt;.&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;In the BAR install directory (inside the &lt;code&gt;data&lt;/code&gt; folder on Windows) in the &lt;code&gt;games&lt;/code&gt; sub-directory (create &lt;code&gt;games&lt;/code&gt; if it doesn&#39;t exist) clone the code for this repository into a directory with a name ending in &lt;code&gt;.sdd&lt;/code&gt;. For example:&lt;/p&gt; &lt;/li&gt; 
&lt;/ol&gt; 
&lt;pre&gt;&lt;code&gt;git clone --recurse-submodules https://github.com/beyond-all-reason/Beyond-All-Reason.git BAR.sdd
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Ensure that you have the correct path by looking for the file &lt;code&gt;Beyond-All-Reason/data/games/BAR.sdd/modinfo.lua&lt;/code&gt; on Windows, or &lt;code&gt;.local/state/Beyond All Reason/games/BAR.sdd/modinfo.lua&lt;/code&gt; on Linux.&lt;/p&gt; 
&lt;ol start=&quot;4&quot;&gt; 
 &lt;li&gt; &lt;p&gt;Now you have the game code launch the full game from the launcher as normal. Then go to &lt;code&gt;Settings &amp;gt; Developer &amp;gt; Singleplayer&lt;/code&gt; and select &lt;code&gt;Beyond All Reason Dev&lt;/code&gt;.&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Now you can launch a match normally through the game UI. This match will use the dev copy of the LUA code which is in &lt;code&gt;BAR-install-directory/data/games/BAR.sdd&lt;/code&gt;.&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;If developing Chobby also clone the code into the &lt;code&gt;games&lt;/code&gt; directory. Follow the guide in the &lt;a href=&quot;https://github.com/beyond-all-reason/BYAR-Chobby#developing-the-lobby&quot;&gt;Chobby README&lt;/a&gt;.&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;(Optional, Advanced) If you want to run automated integration tests, see the &lt;a href=&quot;https://raw.githubusercontent.com/beyond-all-reason/Beyond-All-Reason/master/tools/headless_testing/README.md&quot;&gt;testing documentation&lt;/a&gt;&lt;/p&gt; &lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;More on the &lt;code&gt;.sdd&lt;/code&gt; directory to run raw LUA and the structure expected by Spring Engine is &lt;a href=&quot;https://springrts.com/wiki/Gamedev:Structure&quot;&gt;documented here&lt;/a&gt;.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Automated Testing&lt;/h2&gt; 
&lt;h3&gt;Prereqs&lt;/h3&gt; 
&lt;p&gt;&lt;strong&gt;Lua 5.1&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;&lt;em&gt;debian/linux&lt;/em&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-zsh&quot;&gt;sudo apt install -y lua5.1
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;em&gt;windows&lt;/em&gt; (MSYS2 UCRT64)&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-zsh&quot;&gt;pacman -S --needed mingw-w64-ucrt-x86_64-lua51
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;em&gt;macOS&lt;/em&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-zsh&quot;&gt;brew install lua@5.1
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;Lux Package Manager&lt;/strong&gt; Follow the &lt;a href=&quot;https://lux.lumen-labs.org/tutorial/getting-started/&quot;&gt;Lux Getting Started Guide&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;Or follow the Cargo instructions to manually build &lt;a href=&quot;https://github.com/lumen-oss/lux?tab=readme-ov-file#wrench-building-from-source&quot;&gt;on the Lux Github&lt;/a&gt;&lt;/p&gt; 
&lt;h3&gt;Install Project Packages&lt;/h3&gt; 
&lt;p&gt;From the repo root (where &lt;code&gt;lux.toml&lt;/code&gt; lives):&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-zsh&quot;&gt;lux --max-jobs=2 update
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Note: in my testing &lt;code&gt;--max-jobs&lt;/code&gt; was super specific to my machine and anything above that number would sometimes cause deadlocks.&lt;/p&gt; 
&lt;h3&gt;Running Tests&lt;/h3&gt; 
&lt;p&gt;Run the full suite (via &lt;a href=&quot;https://lunarmodules.github.io/busted/&quot;&gt;Busted&lt;/a&gt;):&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-zsh&quot;&gt;# preferred for predictable CLI behavior
busted
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Filter by tag:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-zsh&quot;&gt;busted -t focus
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Optionally, run through Lux’s wrapper:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-zsh&quot;&gt;lx test
# run the emmylua type check
lx check
# or to drop into a shell so you can run `busted` manually
lx shell --test
busted
8 successes / 0 failures / 0 errors / 0 pending : 0.246881 seconds
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;See Lux &lt;a href=&quot;https://lux.lumen-labs.org/guides/formatting-linting&quot;&gt;Guides&lt;/a&gt; for more information.&lt;/p&gt; 
&lt;p&gt;Inspect objects inline while debugging:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-lua&quot;&gt;print(VFS.Include(&quot;inspect.lua&quot;)(someObject))
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;VS Code Test Switcher (optional)&lt;/h3&gt; 
&lt;p&gt;This handy plugin lets you switch between the test and the code-being-tested just by tapping &lt;code&gt;Cmd+Shift+Y&lt;/code&gt;.&lt;/p&gt; 
&lt;p&gt;VSCode Plugin: &lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=bmalehorn.test-switcher&quot;&gt;https://marketplace.visualstudio.com/items?itemName=bmalehorn.test-switcher&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;Then open &lt;strong&gt;User Settings (JSON)&lt;/strong&gt; and add:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;&quot;test-switcher.rules&quot;: [
    {
        &quot;pattern&quot;: &quot;spec/(.*)_spec\\.lua&quot;,
        &quot;replacement&quot;: &quot;$1.lua&quot;
    },
    {
        &quot;pattern&quot;: &quot;spec/builder_specs/(.*)_spec\\.lua&quot;,
        &quot;replacement&quot;: &quot;spec/builders/$1.lua&quot;
    },
    {
        &quot;pattern&quot;: &quot;spec/builders/(.*)\\.lua&quot;,
        &quot;replacement&quot;: &quot;spec/builder_specs/$1_spec.lua&quot;
    },
    {
        &quot;pattern&quot;: &quot;(luarules|common|luaui|gamedata)/(.*)\\.lua&quot;,
        &quot;replacement&quot;: &quot;spec/$1/$2_spec.lua&quot;
    }
],
&lt;/code&gt;&lt;/pre&gt;</description>
      
    </item>
    
    <item>
      <title>Footagesus/WindUI</title>
      <link>https://github.com/Footagesus/WindUI</link>
      <description>&lt;p&gt;WindUI is a open source UI library for Roblox Script Hubs&lt;/p&gt;&lt;hr&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Footagesus/WindUI/main/docs/WindUI%20%E2%80%93%20Themes.png&quot; alt=&quot;WindUI Banner&quot; /&gt; 
&lt;p&gt;&lt;a href=&quot;https://uibin.orqan.xyz/library/341a345c-b3c9-42fe-a45c-eb296580ce61&quot;&gt;&lt;img src=&quot;https://uibin.orqan.xyz/api/card?id=341a345c-b3c9-42fe-a45c-eb296580ce61&amp;amp;theme=green&quot; alt=&quot;Wind Ui&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;div class=&quot;markdown-alert markdown-alert-warning&quot;&gt;
 &lt;p class=&quot;markdown-alert-title&quot;&gt;
  &lt;svg class=&quot;octicon octicon-alert mr-2&quot; viewbox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;
   &lt;path d=&quot;M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z&quot;&gt;&lt;/path&gt;
  &lt;/svg&gt;Warning&lt;/p&gt;
 &lt;p&gt;This WindUI was not inspired by, and the name has nothing to do with UI Frameworks&lt;/p&gt; 
&lt;/div&gt; 
&lt;div class=&quot;markdown-alert markdown-alert-warning&quot;&gt;
 &lt;p class=&quot;markdown-alert-title&quot;&gt;
  &lt;svg class=&quot;octicon octicon-alert mr-2&quot; viewbox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;
   &lt;path d=&quot;M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z&quot;&gt;&lt;/path&gt;
  &lt;/svg&gt;Warning&lt;/p&gt;
 &lt;p&gt;WindUI is currently in Beta. This project is still under active development. Bugs, issues, and unstable features may occur. We’re constantly working on improvements, so please be patient and report any problems you encounter.&lt;/p&gt; 
&lt;/div&gt; 
&lt;h2&gt;Credits&lt;/h2&gt; 
&lt;h4&gt;Icons (&lt;a href=&quot;https://github.com/Footagesus/Icons&quot;&gt;https://github.com/Footagesus/Icons&lt;/a&gt;)&lt;/h4&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/lucide-icons/lucide&quot;&gt;Lucide-Icons&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.figma.com/community/file/1415718327120418204&quot;&gt;Craft Icons&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://vercel.com/geist/icons&quot;&gt;Geist Icons&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://icones.js.org/collection/solar&quot;&gt;Solar Icons&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://sf-symbols-one.vercel.app/&quot;&gt;SF Symbols&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Links&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://discord.gg/ftgs-development-hub-1300692552005189632&quot;&gt;Discord Server&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://footagesus.github.io/treehub-web/docs/windui&quot;&gt;Documentation&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://footagesus.github.io/WindUI-Docs/docs/installation&quot;&gt;Installation&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/Footagesus/WindUI/main/main_example.lua&quot;&gt;Example&lt;/a&gt; (wip)&lt;pre&gt;&lt;code class=&quot;language-luau&quot;&gt;loadstring(game:HttpGet(&#39;https://raw.githubusercontent.com/Footagesus/WindUI/refs/heads/main/main_example.lua&#39;))()
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
&lt;/ul&gt;</description>
      
    </item>
    
    <item>
      <title>saghen/blink.lib</title>
      <link>https://github.com/saghen/blink.lib</link>
      <description>&lt;p&gt;Shared library for blink.* neovim plugins&lt;/p&gt;&lt;hr&gt;&lt;p align=&quot;center&quot;&gt; &lt;/p&gt;
&lt;h2 align=&quot;center&quot;&gt;Blink Lib (blink.lib)&lt;/h2&gt; 
&lt;p&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;blink.lib&lt;/strong&gt; provides generic utilities for all other blink plugins and looks to fill the gaps in the neovim standard library, particularly around async, config, native libraries, git, regex and so on.&lt;/p&gt; 
&lt;h2&gt;Installation&lt;/h2&gt; 
&lt;pre&gt;&lt;code class=&quot;language-lua&quot;&gt;-- lazy.nvim
{ &#39;saghen/blink.lib&#39; }

-- vim.pack
vim.pack.add({ &#39;https://github.com/saghen/blink.lib&#39; })
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Modules&lt;/h2&gt; 
&lt;p&gt;All APIs are unstable until v1!&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/saghen/blink.lib/main/#blinklib&quot;&gt;&lt;code&gt;blink.lib&lt;/code&gt;&lt;/a&gt;: Utilities and lazy export of top level modules&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/saghen/blink.lib/main/#blinklibconfig&quot;&gt;&lt;code&gt;blink.lib.config&lt;/code&gt;&lt;/a&gt;: Schema based config validation with dynamic per-mode/buffer lookup (merge &lt;code&gt;vim.g/vim.b/config({}, { mode = &#39;cmdline&#39; })/setup()&lt;/code&gt;)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/saghen/blink.lib/main/#blinklibnative&quot;&gt;&lt;code&gt;blink.lib.native&lt;/code&gt;&lt;/a&gt;: Build and download APIs for native libraries&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/saghen/blink.lib/main/#blinklibtask&quot;&gt;&lt;code&gt;blink.lib.task&lt;/code&gt;&lt;/a&gt;: Async task API with support for cancellation&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/saghen/blink.lib/main/#blinklibfs&quot;&gt;&lt;code&gt;blink.lib.fs&lt;/code&gt;&lt;/a&gt;: Filesystem APIs using &lt;code&gt;blink.lib.task&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/saghen/blink.lib/main/#blinkliblog&quot;&gt;&lt;code&gt;blink.lib.log&lt;/code&gt;&lt;/a&gt;: Notifications and logging to file and/or console&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/saghen/blink.lib/main/#blinklibnvim&quot;&gt;&lt;code&gt;blink.lib.nvim&lt;/code&gt;&lt;/a&gt;: Re-exported nvim APIs (&lt;code&gt;nvim.create_buf(...)&lt;/code&gt;)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/saghen/blink.lib/main/#blinklibtimer&quot;&gt;&lt;code&gt;blink.lib.timer&lt;/code&gt;&lt;/a&gt;: Timers with automatically schedule callbacks with support for cancellation, without racing&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/saghen/blink.lib/main/#blinklibbench&quot;&gt;&lt;code&gt;blink.lib.bench&lt;/code&gt;&lt;/a&gt;: Statistics-driven micro-benchmarking API (see &lt;code&gt;benches/**/*.lua&lt;/code&gt;)&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Roadmap&lt;/h3&gt; 
&lt;p&gt;Modules that are planned but not yet implemented:&lt;/p&gt; 
&lt;ul class=&quot;task-list&quot;&gt; 
 &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_0&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_0&quot;&gt; &lt;code&gt;blink.lib.lsp&lt;/code&gt;: In-process LSP client wrapper&lt;/label&gt;&lt;/li&gt; 
 &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_1&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_1&quot;&gt; &lt;code&gt;blink.lib.git&lt;/code&gt;: Git APIs using &lt;a href=&quot;https://github.com/Byron/gitoxide&quot;&gt;&lt;code&gt;gix&lt;/code&gt;&lt;/a&gt;&lt;/label&gt;&lt;/li&gt; 
 &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_2&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_2&quot;&gt; &lt;code&gt;blink.lib.regex&lt;/code&gt;: Regex using &lt;a href=&quot;https://docs.rs/regex/latest/regex/&quot;&gt;&lt;code&gt;regex&lt;/code&gt;&lt;/a&gt;&lt;/label&gt;&lt;/li&gt; 
 &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_3&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_3&quot;&gt; &lt;code&gt;blink.lib.persist&lt;/code&gt;: KV store with namespaces&lt;/label&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;&lt;code&gt;blink.lib&lt;/code&gt;&lt;/h3&gt; 
&lt;p&gt;Utilities and lazy export of top level modules&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-lua&quot;&gt;-- all modules re-exported
lib.config
lib.fs
lib.log
lib.nvim
lib.task
lib.timer

-- lazy require
local require = lib.require -- rename to `require` to trick the LSP into thinking it&#39;s the real `require`
-- or
local require = require(&#39;blink.lib.lazy_require&#39;)
local some_module = require(&#39;some_module&#39;) -- lazily required on first use

-- table/list utils
lib.list.dedup({ 1, 2, 3, 2 }) -- { 1, 2, 3 }
lib.list.reverse({ 1, 2, 3 }) -- { 3, 2, 1 }
lib.list.equal({ 1, 2, 3 }, { 1, 2, 3 }) -- true
lib.list.filter_map({ 1, 2, 3 }, function(v) return v &amp;gt; 1 and v + 10 end) -- { 12, 13 }
-- ...

lib.tbl.equal({ a = 1, b = 2 }, { a = 1, b = 2 }) -- true
lib.tbl.pick({ a = 1, b = 2, c = 3 }, { &#39;a&#39;, &#39;c&#39; }) -- { a = 1, c = 3 }
lib.tbl.omit({ a = 1, b = 2, c = 3 }, { &#39;a&#39;, &#39;c&#39; }) -- { b = 2 }
-- ...
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;&lt;code&gt;blink.lib.config&lt;/code&gt;&lt;/h3&gt; 
&lt;p&gt;Schema based config validation with dynamic per-mode/buffer lookup. Merges &lt;code&gt;vim.g[module]&lt;/code&gt;, &lt;code&gt;vim.b[module]&lt;/code&gt;, per-mode/bufnr configs and top level config.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-lua&quot;&gt;local types = require(&#39;blink.lib.config&#39;).types
local config = require(&#39;blink.lib.config&#39;).new(&#39;my_plugin&#39;, {
  enabled = { true, &#39;boolean&#39; },
  some_setting = { &#39;foo&#39;, types.enum({ &#39;foo&#39;, &#39;bar&#39; }) },
  other_setting = { { 1, 2, &#39;bar&#39; }, types.list({ &#39;number&#39;, types.enum({ &#39;foo&#39;, &#39;bar&#39; }) })}
  nested = {
    setting = { nil, { &#39;function&#39;, &#39;nil&#39; } },
  }
})

-- per buffer config, `vim.g` also works
vim.b.my_plugin = { some_setting = &#39;bar&#39; }
config({ nested = { setting = function() end } }, { bufnr = 0 })

-- per mode config
config({ enabled = false }, { mode = &#39;cmdline&#39; })

-- global config
config({ other_setting = { 3, &#39;foo&#39; }})

-- access values in the config
print(config.enabled) -- true (would be `false` if `mode` was `c`)
print(config.some_setting) -- &#39;bar&#39; (from vim.b.my_plugin)
print(config.other_setting) -- { 3, &#39;foo&#39; } (from config(...))
print(config.nested.setting) -- function (from config(..., { bufnr = 0 }))
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;&lt;code&gt;blink.lib.native&lt;/code&gt;&lt;/h3&gt; 
&lt;p&gt;Most blink plugins use native libraries which are fetched from github releases when on a git tag (versioned release) or built on the user&#39;s device. This module provides utilities for resolving/downloading/building/loading libraries, fetching platform information and reading git commit/tags.&lt;/p&gt; 
&lt;p&gt;You may either use the &lt;code&gt;blink.lib.native.managed&lt;/code&gt; module, an opinionated setup used in &lt;code&gt;blink.*&lt;/code&gt; plugins, or the low level APIs directly (&lt;code&gt;blink.lib.native&lt;/code&gt;).&lt;/p&gt; 
&lt;h4&gt;&lt;code&gt;blink.lib.native.managed&lt;/code&gt;&lt;/h4&gt; 
&lt;p&gt;An example from &lt;a href=&quot;https://github.com/saghen/blink.pairs&quot;&gt;&lt;code&gt;blink.pairs&lt;/code&gt;&lt;/a&gt;:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-lua&quot;&gt;local logger = require(&#39;blink.lib.log&#39;).new({ module = &#39;blink.pairs&#39; })
local native = require(&#39;blink.lib.native.managed&#39;).new({
  module_name = &#39;blink.pairs&#39;,
  library_name = &#39;blink_pairs_parser&#39;,
  current_file_path = debug.getinfo(1, &#39;S&#39;).source:sub(2),
  logger = logger,
})

local pairs = {}

function pairs.setup()
  if not pairs.library_available() then
    return logger:notify(vim.log.levels.ERROR, {
      { &#39;Please add &#39; },
      { &quot; build = function() require(&#39;blink.pairs&#39;).build():pwait(60000) end &quot;, &#39;DiagnosticVirtualTextInfo&#39; },
      { &#39; OR &#39; },
      { &quot; build = function() require(&#39;blink.pairs&#39;).download():pwait(60000) end &quot;, &#39;DiagnosticVirtualTextInfo&#39; },
      { &#39; to your lazy.nvim config. For vim.pack, simply call either function before calling setup().&#39; },
    })
  end

  -- plugin setup
end

function pairs.library_available() return native:library_available() end

--- Builds the precompiled library if it&#39;s not already available
--- @param opts? { force?: boolean, dev?: boolean }
--- @return blink.lib.Task
function pairs.build(opts)
  return native:build(
    { &#39;cargo&#39;, &#39;build&#39;, &#39;--release&#39; },
    function(repo_root, platform)
      return {
        repo_root .. &#39;/target/release/libblink_pairs_parser&#39; .. platform.lib_extension,
        repo_root .. &#39;/target/release/blink_pairs_parser&#39; .. platform.lib_extension,
      }
    end,
    opts
  )
end

--- Downloads the precompiled library if it&#39;s not already available
--- @param opts? { force?: boolean, dev?: boolean }
--- @return blink.lib.Task
function pairs.download(opts)
  return native:download(
    function(git_tag, platform)
      return &#39;https://github.com/saghen/blink.pairs/releases/download/&#39;
        .. git_tag
        .. &#39;/&#39;
        .. platform.triple
        .. platform.lib_extension
    end,
    opts
  )
end
&lt;/code&gt;&lt;/pre&gt; 
&lt;h4&gt;&lt;code&gt;blink.lib.native&lt;/code&gt; low level APIs&lt;/h4&gt; 
&lt;p&gt;Must more control allows for building with just about any build system.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-lua&quot;&gt;local native = require(&#39;blink.lib.native&#39;)
local logger = require(&#39;blink.lib.log&#39;).new({ module = &#39;my_module&#39; })

local current_file = debug.getinfo(1, &#39;S&#39;).source:sub(2)
local lib_name = &#39;some_library&#39;
local your_repo = &#39;foobar/some_repo&#39;

function load()
  return native.load(lib_name, native.try_git_commit(current_file))
end

function library_available()
  return native.resolve(lib_name, native.try_git_commit(current_file)) ~= nil
end

function build(opts)
  local platform = native.platform()
  local repo_root = native.git_repo_root(current_file)
  if repo_root == nil then error(&#39;Missing git repo root, did you install via a package manager?&#39;) end

  local system = native.exec_async(repo_root, { &#39;cargo&#39;, &#39;build&#39;, &#39;--release&#39; }, logger, callback):wait(60000)
  native.mv(repo_root .. &#39;/target/release/lib&#39; .. lib_name .. platform.lib_extension, native.library_path(lib_name))

  if not lib.native.load(&#39;blink_cmp_fuzzy&#39;, lib.native.git_commit(current_file)) then
    error(&#39;Failed to load built blink.cmp native library&#39;)
  end
end

--- Downloads the precompiled library if it&#39;s not already available
--- @param opts? { force?: boolean }
--- @return blink.lib.Task
function download(opts)
  local git_tag = native.git_tag(current_file)
  if git_tag == nil then error(&quot;Missing git tag, have you pinned the version? Set `version = &#39;*&#39;` for lazy.nvim or `version = vim.version.range(&#39;*&#39;)` for vim.pack&quot;) end

  local platform = native.platform()
  if platform.triple == nil then
    error(string.format(&#39;Unknown platform (os: %s, arch: %s)&#39;, platform.os, platform.arch))
  end

  local url = &#39;https://github.com/ &#39; .. your_repo .. &#39;/releases/download/&#39;
    .. git_tag
    .. &#39;/&#39;
    .. platform.triple
    .. platform.lib_extension
  local library_path = native.library_path(&#39;blink_cmp_fuzzy&#39;, native.git_commit(current_file))
  native.download_async(url, library_path):wait(30000)

  if not native.load(lib_name, native.git_commit(current_file)) then
    error(&#39;Failed to load downloaded blink.cmp precompiled library&#39;)
  end
end
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;&lt;code&gt;blink.lib.task&lt;/code&gt;&lt;/h3&gt; 
&lt;p&gt;Allows chaining of cancellable async operations without callback hell. You may want to use &lt;a href=&quot;https://github.com/lewis6991/async.nvim&quot;&gt;lewis&#39;s async.nvim&lt;/a&gt; instead which will likely be adopted into the core.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-lua&quot;&gt;local lib = require(&#39;blink.lib&#39;)

lib.task.wrap(function(callback) vim.uv.fs_readdir(vim.uv.cwd(), callback) end)
  :map(function(entries) return lib.tbl.map(function(entry) return entry.name end, entries) end)
  :catch(function(err) vim.print(&#39;failed to read directory: &#39; .. err) end)

local tag = lib.task.new(function(resolve, reject)
  vim.system({ &#39;git&#39;, &#39;describe&#39;, &#39;--tags&#39;, &#39;--exact-match&#39; }, { cwd = root_dir }, function(out)
    if out.code == 128 then return resolve({}) end
    if out.code ~= 0 then
      return reject(&#39;While getting git tag, git exited with code &#39; .. out.code .. &#39;: &#39; .. out.stderr)
    end

    local lines = vim.split(out.stdout, &#39;\n&#39;)
    if not lines[1] then return reject(&#39;Expected atleast 1 line of output from git describe&#39;) end
    return resolve({ tag = lines[1] })
  end)
end):wait(1000)
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Note that lua language server cannot infer the type of the task from the &lt;code&gt;resolve&lt;/code&gt; call. You may need to add the type annotation explicitly via an &lt;code&gt;@return&lt;/code&gt; annotation on a function returning the task, or via the &lt;code&gt;@cast/@type&lt;/code&gt; annotations on the task variable.&lt;/p&gt; 
&lt;h3&gt;&lt;code&gt;blink.lib.fs&lt;/code&gt;&lt;/h3&gt; 
&lt;p&gt;Filesystem APIs using &lt;code&gt;blink.lib.task&lt;/code&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-lua&quot;&gt;fs.list_dir(path, max_entries)
fs.read(path, size, offset)
fs.write(path, data, offset)
fs.rm(path)
fs.exists(path)
fs.stat(path)
fs.mkdir(path, mode)
fs.mkdirp(path, mode)
fs.rename(old_path, new_path)

-- path utilities
fs.basename(path)
fs.dirname(path)
fs.abspath(path)
fs.ext(path)
fs.join_path(path1, path2)
fs.normalize(path)
fs.parents(path)
fs.relpath(path1, path2)
fs.root(path)
fs.ensure_trailing_slash(path)
fs.remove_leading_slash(path)
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;&lt;code&gt;blink.lib.log&lt;/code&gt;&lt;/h3&gt; 
&lt;p&gt;Notifications and logging to file and/or console. Waits for UIEnter event to ensure the user sees messages.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-lua&quot;&gt;local logger = require(&#39;blink.lib.log&#39;).new({
  module = &#39;my_module&#39;,
  -- defaults
  console = { enabled = true, min_log_level = vim.log.levels.INFO },
  file = { enabled = true, min_log_level = vim.log.levels.INFO, path = vim.fn.stdpath(&#39;log&#39;) .. &#39;/my_module.log&#39; },
})

logger:notify(vim.log.levels.INFO, { { &#39;message&#39; } }) -- same api as `vim.api.nvim_echo`
logger:info(&#39;message %s&#39;, { foo = true }) -- &quot;message { foo = true }&quot;
logger:write_to_file(&#39;message\n&#39;)
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;&lt;code&gt;blink.lib.nvim&lt;/code&gt;&lt;/h3&gt; 
&lt;p&gt;Re-exported nvim APIs (&lt;code&gt;%s/vim.api.nvim_/nvim./g&lt;/code&gt;)&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-lua&quot;&gt;nvim.create_buf(name, options)
nvim.open_win(bufnr, enter, config)
nvim.get_current_buf()
nvim.get_current_line()
-- ...
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;&lt;code&gt;blink.lib.timer&lt;/code&gt;&lt;/h3&gt; 
&lt;p&gt;Timers with automatically schedule callbacks with support for cancellation, without racing. Same API as &lt;code&gt;vim.uv.new_timer()&lt;/code&gt;.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-lua&quot;&gt;local old_timer = vim.uv.new_timer()
old_timer:start(0, 0, vim.schedule_wrap(function() print(&#39;hello&#39;) end))
old_timer:stop()
-- timer stopped but callback already scheduled, races

local new_timer = require(&#39;blink.lib.timer&#39;).new()
new_timer:start(0, 0, function() print(&#39;hello&#39;) end)
new_timer:stop()
-- timer stopped and scheduled callback cancelled
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;&lt;code&gt;blink.lib.bench&lt;/code&gt;&lt;/h3&gt; 
&lt;p&gt;Statistics-driven micro-benchmarking API inspired by &lt;a href=&quot;https://criterion-rs.github.io/book/criterion_rs.html&quot;&gt;criterion&lt;/a&gt;. Bench files live in &lt;code&gt;benches/**/*.lua&lt;/code&gt; and are run in a clean headless Neovim instance with manual GC and JIT.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;:BlinkBench [filter]&lt;/code&gt;: run all &lt;code&gt;benches/**/*.lua&lt;/code&gt; files (optionally filtered by substring) in a terminal split to the right&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;require(&#39;blink.lib.bench&#39;).setup()&lt;/code&gt;: register the &lt;code&gt;:BlinkBench&lt;/code&gt; command&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;require(&#39;blink.lib.bench&#39;).run_file()&lt;/code&gt;: run benches for the current file only&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;require(&#39;blink.lib.bench&#39;).run_files(filter)&lt;/code&gt;: run all &lt;code&gt;benches/**/*.lua&lt;/code&gt; files programmatically&lt;/li&gt; 
&lt;/ul&gt; 
&lt;pre&gt;&lt;code class=&quot;language-lua&quot;&gt;local b = require(&#39;blink.lib.bench&#39;)

b.run(&#39;my bench&#39;, function()
  -- code to measure
end)
b.run(&#39;customized bench&#39;, function()
  -- code to measure
end, { warmup = &#39;100ms&#39;, measurement = &#39;1s&#39;, output = &#39;verbose&#39;, save = false })

-- receive a report and comapre two runs
local fast_report = b.run(&#39;fast bench&#39;, function() end)
local slow_report = b.run(&#39;slow bench&#39;, function() end)
fast_report:compare(slow_report)

-- groups (can set options for all nested benches)
local group = b.group(&#39;table insertion&#39;)
-- local group = b.group(&#39;table insertion&#39;, { warmup = &#39;500ms&#39;, measurement = &#39;5s&#39;, output = &#39;verbose&#39;, save = false })
group.run(&#39;tbl[#tbl + 1] = val&#39;, function()
  local tbl = {}
  for i = 1, 100 do tbl[#tbl + 1] = i end
end)
group.run(&#39;table.insert&#39;, function()
  local tbl = {}
  for i = 1, 100 do table.insert(tbl, i) end
end)
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Results are saved to &lt;code&gt;{stdpath(&#39;state&#39;)}/blink/bench/{module}/{group}.{name}.json&lt;/code&gt; and compared against the previous run automatically. Set &lt;code&gt;save = false&lt;/code&gt; to disable this behavior.&lt;/p&gt;</description>
      
    </item>
    
  </channel>
</rss>
