<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:media="http://search.yahoo.com/mrss/">
  <channel>
    <title>GitHub C++ Monthly Trending</title>
    <description>Monthly Trending of C++ in GitHub</description>
    <pubDate>Sun, 17 May 2026 01:51:55 GMT</pubDate>
    <link>http://mshibanami.github.io/GitHubTrendingRSS</link>
    
    <item>
      <title>ggml-org/llama.cpp</title>
      <link>https://github.com/ggml-org/llama.cpp</link>
      <description>&lt;p&gt;LLM inference in C/C++&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;llama.cpp&lt;/h1&gt; 
&lt;p&gt;&lt;img src=&quot;https://user-images.githubusercontent.com/1991296/230134379-7181e485-c521-4d23-a0d6-f7b3b61ba524.png&quot; alt=&quot;llama&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://opensource.org/licenses/MIT&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/license-MIT-blue.svg?sanitize=true&quot; alt=&quot;License: MIT&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/ggml-org/llama.cpp/releases&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/v/release/ggml-org/llama.cpp&quot; alt=&quot;Release&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/ggml-org/llama.cpp/actions/workflows/server.yml&quot;&gt;&lt;img src=&quot;https://github.com/ggml-org/llama.cpp/actions/workflows/server.yml/badge.svg?sanitize=true&quot; alt=&quot;Server&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/ggml-org/llama.cpp/discussions/205&quot;&gt;Manifesto&lt;/a&gt; / &lt;a href=&quot;https://github.com/ggml-org/ggml&quot;&gt;ggml&lt;/a&gt; / &lt;a href=&quot;https://github.com/ggml-org/llama.cpp/raw/master/docs/ops.md&quot;&gt;ops&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;LLM inference in C/C++&lt;/p&gt; 
&lt;h2&gt;Recent API changes&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/ggml-org/llama.cpp/issues/9289&quot;&gt;Changelog for &lt;code&gt;libllama&lt;/code&gt; API&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/ggml-org/llama.cpp/issues/9291&quot;&gt;Changelog for &lt;code&gt;llama-server&lt;/code&gt; REST API&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Hot topics&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Hugging Face cache migration: models downloaded with &lt;code&gt;-hf&lt;/code&gt; are now stored in the standard Hugging Face cache directory, enabling sharing with other HF tools.&lt;/strong&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/ggml-org/llama.cpp/discussions/16938&quot;&gt;guide : using the new WebUI of llama.cpp&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/ggml-org/llama.cpp/discussions/15396&quot;&gt;guide : running gpt-oss with llama.cpp&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/ggml-org/llama.cpp/discussions/15313&quot;&gt;[FEEDBACK] Better packaging for llama.cpp to support downstream consumers 🤗&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Support for the &lt;code&gt;gpt-oss&lt;/code&gt; model with native MXFP4 format has been added | &lt;a href=&quot;https://github.com/ggml-org/llama.cpp/pull/15091&quot;&gt;PR&lt;/a&gt; | &lt;a href=&quot;https://blogs.nvidia.com/blog/rtx-ai-garage-openai-oss&quot;&gt;Collaboration with NVIDIA&lt;/a&gt; | &lt;a href=&quot;https://github.com/ggml-org/llama.cpp/discussions/15095&quot;&gt;Comment&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Multimodal support arrived in &lt;code&gt;llama-server&lt;/code&gt;: &lt;a href=&quot;https://github.com/ggml-org/llama.cpp/pull/12898&quot;&gt;#12898&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/ggml-org/llama.cpp/master/docs/multimodal.md&quot;&gt;documentation&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;VS Code extension for FIM completions: &lt;a href=&quot;https://github.com/ggml-org/llama.vscode&quot;&gt;https://github.com/ggml-org/llama.vscode&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Vim/Neovim plugin for FIM completions: &lt;a href=&quot;https://github.com/ggml-org/llama.vim&quot;&gt;https://github.com/ggml-org/llama.vim&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Hugging Face Inference Endpoints now support GGUF out of the box! &lt;a href=&quot;https://github.com/ggml-org/llama.cpp/discussions/9669&quot;&gt;https://github.com/ggml-org/llama.cpp/discussions/9669&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Hugging Face GGUF editor: &lt;a href=&quot;https://github.com/ggml-org/llama.cpp/discussions/9268&quot;&gt;discussion&lt;/a&gt; | &lt;a href=&quot;https://huggingface.co/spaces/CISCai/gguf-editor&quot;&gt;tool&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Quick start&lt;/h2&gt; 
&lt;p&gt;Getting started with llama.cpp is straightforward. Here are several ways to install it on your machine:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Install &lt;code&gt;llama.cpp&lt;/code&gt; using &lt;a href=&quot;https://raw.githubusercontent.com/ggml-org/llama.cpp/master/docs/install.md&quot;&gt;brew, nix or winget&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Run with Docker - see our &lt;a href=&quot;https://raw.githubusercontent.com/ggml-org/llama.cpp/master/docs/docker.md&quot;&gt;Docker documentation&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Download pre-built binaries from the &lt;a href=&quot;https://github.com/ggml-org/llama.cpp/releases&quot;&gt;releases page&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Build from source by cloning this repository - check out &lt;a href=&quot;https://raw.githubusercontent.com/ggml-org/llama.cpp/master/docs/build.md&quot;&gt;our build guide&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Once installed, you&#39;ll need a model to work with. Head to the &lt;a href=&quot;https://raw.githubusercontent.com/ggml-org/llama.cpp/master/#obtaining-and-quantizing-models&quot;&gt;Obtaining and quantizing models&lt;/a&gt; section to learn more.&lt;/p&gt; 
&lt;p&gt;Example command:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;# Use a local model file
llama-cli -m my_model.gguf

# Or download and run a model directly from Hugging Face
llama-cli -hf ggml-org/gemma-3-1b-it-GGUF

# Launch OpenAI-compatible API server
llama-server -hf ggml-org/gemma-3-1b-it-GGUF
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Description&lt;/h2&gt; 
&lt;p&gt;The main goal of &lt;code&gt;llama.cpp&lt;/code&gt; is to enable LLM inference with minimal setup and state-of-the-art performance on a wide range of hardware - locally and in the cloud.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Plain C/C++ implementation without any dependencies&lt;/li&gt; 
 &lt;li&gt;Apple silicon is a first-class citizen - optimized via ARM NEON, Accelerate and Metal frameworks&lt;/li&gt; 
 &lt;li&gt;AVX, AVX2, AVX512 and AMX support for x86 architectures&lt;/li&gt; 
 &lt;li&gt;RVV, ZVFH, ZFH, ZICBOP and ZIHINTPAUSE support for RISC-V architectures&lt;/li&gt; 
 &lt;li&gt;1.5-bit, 2-bit, 3-bit, 4-bit, 5-bit, 6-bit, and 8-bit integer quantization for faster inference and reduced memory use&lt;/li&gt; 
 &lt;li&gt;Custom CUDA kernels for running LLMs on NVIDIA GPUs (support for AMD GPUs via HIP and Moore Threads GPUs via MUSA)&lt;/li&gt; 
 &lt;li&gt;Vulkan and SYCL backend support&lt;/li&gt; 
 &lt;li&gt;CPU+GPU hybrid inference to partially accelerate models larger than the total VRAM capacity&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;The &lt;code&gt;llama.cpp&lt;/code&gt; project is the main playground for developing new features for the &lt;a href=&quot;https://github.com/ggml-org/ggml&quot;&gt;ggml&lt;/a&gt; library.&lt;/p&gt; 
&lt;details&gt; 
 &lt;summary&gt;Models&lt;/summary&gt; 
 &lt;p&gt;Typically finetunes of the base models below are supported as well.&lt;/p&gt; 
 &lt;p&gt;Instructions for adding support for new models: &lt;a href=&quot;https://raw.githubusercontent.com/ggml-org/llama.cpp/master/docs/development/HOWTO-add-model.md&quot;&gt;HOWTO-add-model.md&lt;/a&gt;&lt;/p&gt; 
 &lt;h4&gt;Text-only&lt;/h4&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; LLaMA 🦙&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; LLaMA 2 🦙🦙&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; LLaMA 3 🦙🦙🦙&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; &lt;a href=&quot;https://huggingface.co/mistralai/Mistral-7B-v0.1&quot;&gt;Mistral 7B&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_4&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_4&quot;&gt; &lt;a href=&quot;https://huggingface.co/models?search=mistral-ai/Mixtral&quot;&gt;Mixtral MoE&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_5&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_5&quot;&gt; &lt;a href=&quot;https://huggingface.co/databricks/dbrx-instruct&quot;&gt;DBRX&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_6&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_6&quot;&gt; &lt;a href=&quot;https://huggingface.co/ai21labs&quot;&gt;Jamba&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_7&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_7&quot;&gt; &lt;a href=&quot;https://huggingface.co/models?search=tiiuae/falcon&quot;&gt;Falcon&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_8&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_8&quot;&gt; &lt;a href=&quot;https://github.com/ymcui/Chinese-LLaMA-Alpaca&quot;&gt;Chinese LLaMA / Alpaca&lt;/a&gt; and &lt;a href=&quot;https://github.com/ymcui/Chinese-LLaMA-Alpaca-2&quot;&gt;Chinese LLaMA-2 / Alpaca-2&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_9&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_9&quot;&gt; &lt;a href=&quot;https://github.com/bofenghuang/vigogne&quot;&gt;Vigogne (French)&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_10&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_10&quot;&gt; &lt;a href=&quot;https://github.com/ggml-org/llama.cpp/pull/5423&quot;&gt;BERT&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_11&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_11&quot;&gt; &lt;a href=&quot;https://bair.berkeley.edu/blog/2023/04/03/koala/&quot;&gt;Koala&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_12&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_12&quot;&gt; &lt;a href=&quot;https://huggingface.co/models?search=baichuan-inc/Baichuan&quot;&gt;Baichuan 1 &amp;amp; 2&lt;/a&gt; + &lt;a href=&quot;https://huggingface.co/hiyouga/baichuan-7b-sft&quot;&gt;derivations&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_13&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_13&quot;&gt; &lt;a href=&quot;https://huggingface.co/models?search=BAAI/Aquila&quot;&gt;Aquila 1 &amp;amp; 2&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_14&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_14&quot;&gt; &lt;a href=&quot;https://github.com/ggml-org/llama.cpp/pull/3187&quot;&gt;Starcoder models&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_15&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_15&quot;&gt; &lt;a href=&quot;https://huggingface.co/smallcloudai/Refact-1_6B-fim&quot;&gt;Refact&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_16&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_16&quot;&gt; &lt;a href=&quot;https://github.com/ggml-org/llama.cpp/pull/3417&quot;&gt;MPT&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_17&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_17&quot;&gt; &lt;a href=&quot;https://github.com/ggml-org/llama.cpp/pull/3553&quot;&gt;Bloom&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_18&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_18&quot;&gt; &lt;a href=&quot;https://huggingface.co/models?search=01-ai/Yi&quot;&gt;Yi models&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_19&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_19&quot;&gt; &lt;a href=&quot;https://huggingface.co/stabilityai&quot;&gt;StableLM models&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_20&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_20&quot;&gt; &lt;a href=&quot;https://huggingface.co/models?search=deepseek-ai/deepseek&quot;&gt;Deepseek models&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_21&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_21&quot;&gt; &lt;a href=&quot;https://huggingface.co/models?search=Qwen/Qwen&quot;&gt;Qwen models&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_22&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_22&quot;&gt; &lt;a href=&quot;https://github.com/ggml-org/llama.cpp/pull/3557&quot;&gt;PLaMo-13B&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_23&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_23&quot;&gt; &lt;a href=&quot;https://huggingface.co/models?search=microsoft/phi&quot;&gt;Phi models&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_24&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_24&quot;&gt; &lt;a href=&quot;https://github.com/ggml-org/llama.cpp/pull/11003&quot;&gt;PhiMoE&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_25&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_25&quot;&gt; &lt;a href=&quot;https://huggingface.co/gpt2&quot;&gt;GPT-2&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_26&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_26&quot;&gt; &lt;a href=&quot;https://github.com/ggml-org/llama.cpp/pull/5118&quot;&gt;Orion 14B&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_27&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_27&quot;&gt; &lt;a href=&quot;https://huggingface.co/models?search=internlm2&quot;&gt;InternLM2&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_28&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_28&quot;&gt; &lt;a href=&quot;https://github.com/WisdomShell/codeshell&quot;&gt;CodeShell&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_29&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_29&quot;&gt; &lt;a href=&quot;https://ai.google.dev/gemma&quot;&gt;Gemma&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_30&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_30&quot;&gt; &lt;a href=&quot;https://github.com/state-spaces/mamba&quot;&gt;Mamba&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_31&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_31&quot;&gt; &lt;a href=&quot;https://huggingface.co/keyfan/grok-1-hf&quot;&gt;Grok-1&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_32&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_32&quot;&gt; &lt;a href=&quot;https://huggingface.co/models?search=xverse&quot;&gt;Xverse&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_33&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_33&quot;&gt; &lt;a href=&quot;https://huggingface.co/models?search=CohereForAI/c4ai-command-r&quot;&gt;Command-R models&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_34&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_34&quot;&gt; &lt;a href=&quot;https://huggingface.co/models?search=sea-lion&quot;&gt;SEA-LION&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_35&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_35&quot;&gt; &lt;a href=&quot;https://huggingface.co/GritLM/GritLM-7B&quot;&gt;GritLM-7B&lt;/a&gt; + &lt;a href=&quot;https://huggingface.co/GritLM/GritLM-8x7B&quot;&gt;GritLM-8x7B&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_36&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_36&quot;&gt; &lt;a href=&quot;https://allenai.org/olmo&quot;&gt;OLMo&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_37&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_37&quot;&gt; &lt;a href=&quot;https://allenai.org/olmo&quot;&gt;OLMo 2&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_38&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_38&quot;&gt; &lt;a href=&quot;https://huggingface.co/allenai/OLMoE-1B-7B-0924&quot;&gt;OLMoE&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_39&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_39&quot;&gt; &lt;a href=&quot;https://huggingface.co/collections/ibm-granite/granite-code-models-6624c5cec322e4c148c8b330&quot;&gt;Granite models&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_40&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_40&quot;&gt; &lt;a href=&quot;https://github.com/EleutherAI/gpt-neox&quot;&gt;GPT-NeoX&lt;/a&gt; + &lt;a href=&quot;https://github.com/EleutherAI/pythia&quot;&gt;Pythia&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_41&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_41&quot;&gt; &lt;a href=&quot;https://huggingface.co/collections/Snowflake/arctic-66290090abe542894a5ac520&quot;&gt;Snowflake-Arctic MoE&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_42&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_42&quot;&gt; &lt;a href=&quot;https://huggingface.co/models?search=Smaug&quot;&gt;Smaug&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_43&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_43&quot;&gt; &lt;a href=&quot;https://huggingface.co/LumiOpen/Poro-34B&quot;&gt;Poro 34B&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_44&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_44&quot;&gt; &lt;a href=&quot;https://huggingface.co/1bitLLM&quot;&gt;Bitnet b1.58 models&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_45&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_45&quot;&gt; &lt;a href=&quot;https://huggingface.co/models?search=flan-t5&quot;&gt;Flan T5&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_46&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_46&quot;&gt; &lt;a href=&quot;https://huggingface.co/collections/apple/openelm-instruct-models-6619ad295d7ae9f868b759ca&quot;&gt;Open Elm models&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_47&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_47&quot;&gt; &lt;a href=&quot;https://huggingface.co/THUDM/chatglm3-6b&quot;&gt;ChatGLM3-6b&lt;/a&gt; + &lt;a href=&quot;https://huggingface.co/THUDM/glm-4-9b&quot;&gt;ChatGLM4-9b&lt;/a&gt; + &lt;a href=&quot;https://huggingface.co/THUDM/glm-edge-1.5b-chat&quot;&gt;GLMEdge-1.5b&lt;/a&gt; + &lt;a href=&quot;https://huggingface.co/THUDM/glm-edge-4b-chat&quot;&gt;GLMEdge-4b&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_48&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_48&quot;&gt; &lt;a href=&quot;https://huggingface.co/collections/THUDM/glm-4-0414-67f3cbcb34dd9d252707cb2e&quot;&gt;GLM-4-0414&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_49&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_49&quot;&gt; &lt;a href=&quot;https://huggingface.co/collections/HuggingFaceTB/smollm-6695016cad7167254ce15966&quot;&gt;SmolLM&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_50&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_50&quot;&gt; &lt;a href=&quot;https://huggingface.co/LGAI-EXAONE/EXAONE-3.0-7.8B-Instruct&quot;&gt;EXAONE-3.0-7.8B-Instruct&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_51&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_51&quot;&gt; &lt;a href=&quot;https://huggingface.co/collections/tiiuae/falconmamba-7b-66b9a580324dd1598b0f6d4a&quot;&gt;FalconMamba Models&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_52&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_52&quot;&gt; &lt;a href=&quot;https://huggingface.co/inceptionai/jais-13b-chat&quot;&gt;Jais&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_53&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_53&quot;&gt; &lt;a href=&quot;https://huggingface.co/collections/speakleash/bielik-11b-v23-66ee813238d9b526a072408a&quot;&gt;Bielik-11B-v2.3&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_54&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_54&quot;&gt; &lt;a href=&quot;https://huggingface.co/collections/shoumenchougou/rwkv7-gxx-gguf&quot;&gt;RWKV-7&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_55&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_55&quot;&gt; &lt;a href=&quot;https://github.com/BlinkDL/RWKV-LM&quot;&gt;RWKV-6&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_56&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_56&quot;&gt; &lt;a href=&quot;https://huggingface.co/recursal/QRWKV6-32B-Instruct-Preview-v0.1&quot;&gt;QRWKV-6&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_57&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_57&quot;&gt; &lt;a href=&quot;https://huggingface.co/ai-sage/GigaChat-20B-A3B-instruct&quot;&gt;GigaChat-20B-A3B&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_58&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_58&quot;&gt; &lt;a href=&quot;https://huggingface.co/trillionlabs/Trillion-7B-preview&quot;&gt;Trillion-7B-preview&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_59&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_59&quot;&gt; &lt;a href=&quot;https://huggingface.co/collections/inclusionAI/ling-67c51c85b34a7ea0aba94c32&quot;&gt;Ling models&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_60&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_60&quot;&gt; &lt;a href=&quot;https://huggingface.co/collections/LiquidAI/lfm2-686d721927015b2ad73eaa38&quot;&gt;LFM2 models&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_61&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_61&quot;&gt; &lt;a href=&quot;https://huggingface.co/collections/tencent/hunyuan-dense-model-6890632cda26b19119c9c5e7&quot;&gt;Hunyuan models&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_62&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_62&quot;&gt; &lt;a href=&quot;https://huggingface.co/collections/inclusionAI/ling-v2-68bf1dd2fc34c306c1fa6f86&quot;&gt;BailingMoeV2 (Ring/Ling 2.0) models&lt;/a&gt;&lt;/label&gt;&lt;/li&gt; 
 &lt;/ul&gt; 
 &lt;h4&gt;Multimodal&lt;/h4&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_63&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_63&quot;&gt; &lt;a href=&quot;https://huggingface.co/collections/liuhaotian/llava-15-653aac15d994e992e2677a7e&quot;&gt;LLaVA 1.5 models&lt;/a&gt;, &lt;a href=&quot;https://huggingface.co/collections/liuhaotian/llava-16-65b9e40155f60fd046a5ccf2&quot;&gt;LLaVA 1.6 models&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_64&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_64&quot;&gt; &lt;a href=&quot;https://huggingface.co/models?search=SkunkworksAI/Bakllava&quot;&gt;BakLLaVA&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_65&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_65&quot;&gt; &lt;a href=&quot;https://huggingface.co/NousResearch/Obsidian-3B-V0.5&quot;&gt;Obsidian&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_66&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_66&quot;&gt; &lt;a href=&quot;https://huggingface.co/models?search=Lin-Chen/ShareGPT4V&quot;&gt;ShareGPT4V&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_67&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_67&quot;&gt; &lt;a href=&quot;https://huggingface.co/models?search=mobileVLM&quot;&gt;MobileVLM 1.7B/3B models&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_68&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_68&quot;&gt; &lt;a href=&quot;https://huggingface.co/models?search=Yi-VL&quot;&gt;Yi-VL&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_69&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_69&quot;&gt; &lt;a href=&quot;https://huggingface.co/models?search=MiniCPM&quot;&gt;Mini CPM&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_70&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_70&quot;&gt; &lt;a href=&quot;https://huggingface.co/vikhyatk/moondream2&quot;&gt;Moondream&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_71&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_71&quot;&gt; &lt;a href=&quot;https://github.com/BAAI-DCAI/Bunny&quot;&gt;Bunny&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_72&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_72&quot;&gt; &lt;a href=&quot;https://huggingface.co/models?search=glm-edge&quot;&gt;GLM-EDGE&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_73&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_73&quot;&gt; &lt;a href=&quot;https://huggingface.co/collections/Qwen/qwen2-vl-66cee7455501d7126940800d&quot;&gt;Qwen2-VL&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_74&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_74&quot;&gt; &lt;a href=&quot;https://huggingface.co/collections/LiquidAI/lfm2-vl-68963bbc84a610f7638d5ffa&quot;&gt;LFM2-VL&lt;/a&gt;&lt;/label&gt;&lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;Bindings&lt;/summary&gt; 
 &lt;ul&gt; 
  &lt;li&gt;Python: &lt;a href=&quot;https://github.com/ddh0/easy-llama&quot;&gt;ddh0/easy-llama&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;Python: &lt;a href=&quot;https://github.com/abetlen/llama-cpp-python&quot;&gt;abetlen/llama-cpp-python&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;Go: &lt;a href=&quot;https://github.com/go-skynet/go-llama.cpp&quot;&gt;go-skynet/go-llama.cpp&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;Node.js: &lt;a href=&quot;https://github.com/withcatai/node-llama-cpp&quot;&gt;withcatai/node-llama-cpp&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;JS/TS (llama.cpp server client): &lt;a href=&quot;https://modelfusion.dev/integration/model-provider/llamacpp&quot;&gt;lgrammel/modelfusion&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;JS/TS (Programmable Prompt Engine CLI): &lt;a href=&quot;https://github.com/offline-ai/cli&quot;&gt;offline-ai/cli&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;JavaScript/Wasm (works in browser): &lt;a href=&quot;https://github.com/tangledgroup/llama-cpp-wasm&quot;&gt;tangledgroup/llama-cpp-wasm&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;Typescript/Wasm (nicer API, available on npm): &lt;a href=&quot;https://github.com/ngxson/wllama&quot;&gt;ngxson/wllama&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;Ruby: &lt;a href=&quot;https://github.com/yoshoku/llama_cpp.rb&quot;&gt;yoshoku/llama_cpp.rb&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;Ruby: &lt;a href=&quot;https://github.com/docusealco/rllama&quot;&gt;docusealco/rllama&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;Rust (more features): &lt;a href=&quot;https://github.com/edgenai/llama_cpp-rs&quot;&gt;edgenai/llama_cpp-rs&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;Rust (nicer API): &lt;a href=&quot;https://github.com/mdrokz/rust-llama.cpp&quot;&gt;mdrokz/rust-llama.cpp&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;Rust (more direct bindings): &lt;a href=&quot;https://github.com/utilityai/llama-cpp-rs&quot;&gt;utilityai/llama-cpp-rs&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;Rust (automated build from &lt;a href=&quot;http://crates.io&quot;&gt;crates.io&lt;/a&gt;): &lt;a href=&quot;https://github.com/ShelbyJenkins/llm_client&quot;&gt;ShelbyJenkins/llm_client&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;C#/.NET: &lt;a href=&quot;https://github.com/SciSharp/LLamaSharp&quot;&gt;SciSharp/LLamaSharp&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;C#/VB.NET (more features - community license): &lt;a href=&quot;https://docs.lm-kit.com/lm-kit-net/index.html&quot;&gt;LM-Kit.NET&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;Scala 3: &lt;a href=&quot;https://github.com/donderom/llm4s&quot;&gt;donderom/llm4s&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;Clojure: &lt;a href=&quot;https://github.com/phronmophobic/llama.clj&quot;&gt;phronmophobic/llama.clj&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;React Native: &lt;a href=&quot;https://github.com/mybigday/llama.rn&quot;&gt;mybigday/llama.rn&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;Java: &lt;a href=&quot;https://github.com/kherud/java-llama.cpp&quot;&gt;kherud/java-llama.cpp&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;Java: &lt;a href=&quot;https://github.com/QuasarByte/llama-cpp-jna&quot;&gt;QuasarByte/llama-cpp-jna&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;Zig: &lt;a href=&quot;https://github.com/Deins/llama.cpp.zig&quot;&gt;deins/llama.cpp.zig&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;Flutter/Dart: &lt;a href=&quot;https://github.com/netdur/llama_cpp_dart&quot;&gt;netdur/llama_cpp_dart&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;Flutter: &lt;a href=&quot;https://github.com/xuegao-tzx/Fllama&quot;&gt;xuegao-tzx/Fllama&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;PHP (API bindings and features built on top of llama.cpp): &lt;a href=&quot;https://github.com/distantmagic/resonance&quot;&gt;distantmagic/resonance&lt;/a&gt; &lt;a href=&quot;https://github.com/ggml-org/llama.cpp/pull/6326&quot;&gt;(more info)&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;Guile Scheme: &lt;a href=&quot;https://savannah.nongnu.org/projects/guile-llama-cpp&quot;&gt;guile_llama_cpp&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;Swift &lt;a href=&quot;https://github.com/srgtuszy/llama-cpp-swift&quot;&gt;srgtuszy/llama-cpp-swift&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;Swift &lt;a href=&quot;https://github.com/ShenghaiWang/SwiftLlama&quot;&gt;ShenghaiWang/SwiftLlama&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;Delphi &lt;a href=&quot;https://github.com/Embarcadero/llama-cpp-delphi&quot;&gt;Embarcadero/llama-cpp-delphi&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;Go (no CGo needed): &lt;a href=&quot;https://github.com/hybridgroup/yzma&quot;&gt;hybridgroup/yzma&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;Android: &lt;a href=&quot;https://raw.githubusercontent.com/ggml-org/llama.cpp/master/examples/llama.android&quot;&gt;llama.android&lt;/a&gt;&lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;UIs&lt;/summary&gt; 
 &lt;p&gt;&lt;em&gt;(to have a project listed here, it should clearly state that it depends on &lt;code&gt;llama.cpp&lt;/code&gt;)&lt;/em&gt;&lt;/p&gt; 
 &lt;ul&gt; 
  &lt;li&gt;&lt;a href=&quot;https://github.com/yaroslavyaroslav/OpenAI-sublime-text&quot;&gt;AI Sublime Text plugin&lt;/a&gt; (MIT)&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;https://apps.apple.com/us/app/bonzai-your-local-ai-agent/id6752847988&quot;&gt;BonzAI App&lt;/a&gt; (proprietary)&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;https://github.com/cztomsik/ava&quot;&gt;cztomsik/ava&lt;/a&gt; (MIT)&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;https://github.com/alexpinel/Dot&quot;&gt;Dot&lt;/a&gt; (GPL)&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;https://github.com/ylsdamxssjxxdd/eva&quot;&gt;eva&lt;/a&gt; (MIT)&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;https://github.com/iohub/coLLaMA&quot;&gt;iohub/collama&lt;/a&gt; (Apache-2.0)&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;https://github.com/janhq/jan&quot;&gt;janhq/jan&lt;/a&gt; (AGPL)&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;https://github.com/johnbean393/Sidekick&quot;&gt;johnbean393/Sidekick&lt;/a&gt; (MIT)&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;https://github.com/zhouwg/kantv?tab=readme-ov-file&quot;&gt;KanTV&lt;/a&gt; (Apache-2.0)&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;https://github.com/firatkiral/kodibot&quot;&gt;KodiBot&lt;/a&gt; (GPL)&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;https://github.com/ggml-org/llama.vim&quot;&gt;llama.vim&lt;/a&gt; (MIT)&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;https://github.com/abgulati/LARS&quot;&gt;LARS&lt;/a&gt; (AGPL)&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;https://github.com/vietanhdev/llama-assistant&quot;&gt;Llama Assistant&lt;/a&gt; (GPL)&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;https://github.com/undreamai/LlamaLib&quot;&gt;LlamaLib&lt;/a&gt; (Apache-2.0)&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;https://github.com/guinmoon/LLMFarm?tab=readme-ov-file&quot;&gt;LLMFarm&lt;/a&gt; (MIT)&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;https://github.com/undreamai/LLMUnity&quot;&gt;LLMUnity&lt;/a&gt; (MIT)&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;https://lmstudio.ai/&quot;&gt;LMStudio&lt;/a&gt; (proprietary)&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;https://github.com/mudler/LocalAI&quot;&gt;LocalAI&lt;/a&gt; (MIT)&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;https://github.com/LostRuins/koboldcpp&quot;&gt;LostRuins/koboldcpp&lt;/a&gt; (AGPL)&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;https://mindmac.app&quot;&gt;MindMac&lt;/a&gt; (proprietary)&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;https://github.com/MindWorkAI/AI-Studio&quot;&gt;MindWorkAI/AI-Studio&lt;/a&gt; (FSL-1.1-MIT)&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;https://github.com/Mobile-Artificial-Intelligence/maid&quot;&gt;Mobile-Artificial-Intelligence/maid&lt;/a&gt; (MIT)&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;https://github.com/Mozilla-Ocho/llamafile&quot;&gt;Mozilla-Ocho/llamafile&lt;/a&gt; (Apache-2.0)&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;https://github.com/nat/openplayground&quot;&gt;nat/openplayground&lt;/a&gt; (MIT)&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;https://github.com/nomic-ai/gpt4all&quot;&gt;nomic-ai/gpt4all&lt;/a&gt; (MIT)&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;https://github.com/ollama/ollama&quot;&gt;ollama/ollama&lt;/a&gt; (MIT)&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;https://github.com/oobabooga/text-generation-webui&quot;&gt;oobabooga/text-generation-webui&lt;/a&gt; (AGPL)&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;https://github.com/a-ghorbani/pocketpal-ai&quot;&gt;PocketPal AI&lt;/a&gt; (MIT)&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;https://github.com/psugihara/FreeChat&quot;&gt;psugihara/FreeChat&lt;/a&gt; (MIT)&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;https://github.com/ptsochantaris/emeltal&quot;&gt;ptsochantaris/emeltal&lt;/a&gt; (MIT)&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;https://github.com/pythops/tenere&quot;&gt;pythops/tenere&lt;/a&gt; (AGPL)&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;https://github.com/containers/ramalama&quot;&gt;ramalama&lt;/a&gt; (MIT)&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;https://github.com/semperai/amica&quot;&gt;semperai/amica&lt;/a&gt; (MIT)&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;https://github.com/withcatai/catai&quot;&gt;withcatai/catai&lt;/a&gt; (MIT)&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;https://github.com/blackhole89/autopen&quot;&gt;Autopen&lt;/a&gt; (GPL)&lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;Tools&lt;/summary&gt; 
 &lt;ul&gt; 
  &lt;li&gt;&lt;a href=&quot;https://github.com/akx/ggify&quot;&gt;akx/ggify&lt;/a&gt; – download PyTorch models from Hugging Face Hub and convert them to GGML&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;https://github.com/akx/ollama-dl&quot;&gt;akx/ollama-dl&lt;/a&gt; – download models from the Ollama library to be used directly with llama.cpp&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;https://github.com/crashr/gppm&quot;&gt;crashr/gppm&lt;/a&gt; – launch llama.cpp instances utilizing NVIDIA Tesla P40 or P100 GPUs with reduced idle power consumption&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;https://github.com/gpustack/gguf-parser-go/tree/main/cmd/gguf-parser&quot;&gt;gpustack/gguf-parser&lt;/a&gt; - review/check the GGUF file and estimate the memory usage&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;https://marketplace.unity.com/packages/tools/generative-ai/styled-lines-llama-cpp-model-292902&quot;&gt;Styled Lines&lt;/a&gt; (proprietary licensed, async wrapper of inference part for game development in Unity3d with pre-built Mobile and Web platform wrappers and a model example)&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;https://github.com/unslothai/unsloth&quot;&gt;unslothai/unsloth&lt;/a&gt; – 🦥 exports/saves fine-tuned and trained models to GGUF (Apache-2.0)&lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;Infrastructure&lt;/summary&gt; 
 &lt;ul&gt; 
  &lt;li&gt;&lt;a href=&quot;https://github.com/intentee/paddler&quot;&gt;Paddler&lt;/a&gt; - Open-source LLMOps platform for hosting and scaling AI in your own infrastructure&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;https://github.com/gpustack/gpustack&quot;&gt;GPUStack&lt;/a&gt; - Manage GPU clusters for running LLMs&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;https://github.com/onicai/llama_cpp_canister&quot;&gt;llama_cpp_canister&lt;/a&gt; - llama.cpp as a smart contract on the Internet Computer, using WebAssembly&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;https://github.com/mostlygeek/llama-swap&quot;&gt;llama-swap&lt;/a&gt; - transparent proxy that adds automatic model switching with llama-server&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;https://github.com/kalavai-net/kalavai-client&quot;&gt;Kalavai&lt;/a&gt; - Crowdsource end to end LLM deployment at any scale&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;https://github.com/InftyAI/llmaz&quot;&gt;llmaz&lt;/a&gt; - ☸️ Easy, advanced inference platform for large language models on Kubernetes.&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;https://github.com/defilantech/llmkube&quot;&gt;LLMKube&lt;/a&gt; - Kubernetes operator for llama.cpp with multi-GPU and Apple Silicon Metal support&quot;&lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;Games&lt;/summary&gt; 
 &lt;ul&gt; 
  &lt;li&gt;&lt;a href=&quot;https://github.com/MorganRO8/Lucys_Labyrinth&quot;&gt;Lucy&#39;s Labyrinth&lt;/a&gt; - A simple maze game where agents controlled by an AI model will try to trick you.&lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;h2&gt;Supported backends&lt;/h2&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Backend&lt;/th&gt; 
   &lt;th&gt;Target devices&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/ggml-org/llama.cpp/master/docs/build.md#metal-build&quot;&gt;Metal&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Apple Silicon&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/ggml-org/llama.cpp/master/docs/build.md#blas-build&quot;&gt;BLAS&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;All&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/ggml-org/llama.cpp/master/docs/backend/BLIS.md&quot;&gt;BLIS&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;All&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/ggml-org/llama.cpp/master/docs/backend/SYCL.md&quot;&gt;SYCL&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Intel and Nvidia GPU&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/ggml-org/llama.cpp/master/docs/backend/OPENVINO.md&quot;&gt;OpenVINO [In Progress]&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Intel CPUs, GPUs, and NPUs&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/ggml-org/llama.cpp/master/docs/build.md#musa&quot;&gt;MUSA&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Moore Threads GPU&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/ggml-org/llama.cpp/master/docs/build.md#cuda&quot;&gt;CUDA&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Nvidia GPU&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/ggml-org/llama.cpp/master/docs/build.md#hip&quot;&gt;HIP&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;AMD GPU&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/ggml-org/llama.cpp/master/docs/build.md#zendnn&quot;&gt;ZenDNN&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;AMD CPU&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/ggml-org/llama.cpp/master/docs/build.md#vulkan&quot;&gt;Vulkan&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;GPU&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/ggml-org/llama.cpp/master/docs/build.md#cann&quot;&gt;CANN&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Ascend NPU&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/ggml-org/llama.cpp/master/docs/backend/OPENCL.md&quot;&gt;OpenCL&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Adreno GPU&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/ggml-org/llama.cpp/master/docs/backend/zDNN.md&quot;&gt;IBM zDNN&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;IBM Z &amp;amp; LinuxONE&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/ggml-org/llama.cpp/master/docs/build.md#webgpu&quot;&gt;WebGPU [In Progress]&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;All&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/ggml-org/llama.cpp/tree/master/tools/rpc&quot;&gt;RPC&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;All&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/ggml-org/llama.cpp/master/docs/backend/snapdragon/README.md&quot;&gt;Hexagon [In Progress]&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Snapdragon&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/ggml-org/llama.cpp/master/docs/backend/VirtGPU.md&quot;&gt;VirtGPU&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;VirtGPU APIR&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h2&gt;Obtaining and quantizing models&lt;/h2&gt; 
&lt;p&gt;The &lt;a href=&quot;https://huggingface.co&quot;&gt;Hugging Face&lt;/a&gt; platform hosts a &lt;a href=&quot;https://huggingface.co/models?library=gguf&amp;amp;sort=trending&quot;&gt;number of LLMs&lt;/a&gt; compatible with &lt;code&gt;llama.cpp&lt;/code&gt;:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://huggingface.co/models?library=gguf&amp;amp;sort=trending&quot;&gt;Trending&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://huggingface.co/models?sort=trending&amp;amp;search=llama+gguf&quot;&gt;LLaMA&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;You can either manually download the GGUF file or directly use any &lt;code&gt;llama.cpp&lt;/code&gt;-compatible models from &lt;a href=&quot;https://huggingface.co/&quot;&gt;Hugging Face&lt;/a&gt; or other model hosting sites, by using this CLI argument: &lt;code&gt;-hf &amp;lt;user&amp;gt;/&amp;lt;model&amp;gt;[:quant]&lt;/code&gt;. For example:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;llama-cli -hf ggml-org/gemma-3-1b-it-GGUF
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;By default, the CLI would download from Hugging Face, you can switch to other options with the environment variable &lt;code&gt;MODEL_ENDPOINT&lt;/code&gt;. The &lt;code&gt;MODEL_ENDPOINT&lt;/code&gt; must point to a Hugging Face compatible API endpoint.&lt;/p&gt; 
&lt;p&gt;After downloading a model, use the CLI tools to run it locally - see below.&lt;/p&gt; 
&lt;p&gt;&lt;code&gt;llama.cpp&lt;/code&gt; requires the model to be stored in the &lt;a href=&quot;https://github.com/ggml-org/ggml/raw/master/docs/gguf.md&quot;&gt;GGUF&lt;/a&gt; file format. Models in other data formats can be converted to GGUF using the &lt;code&gt;convert_*.py&lt;/code&gt; Python scripts in this repo.&lt;/p&gt; 
&lt;p&gt;The Hugging Face platform provides a variety of online tools for converting, quantizing and hosting models with &lt;code&gt;llama.cpp&lt;/code&gt;:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Use the &lt;a href=&quot;https://huggingface.co/spaces/ggml-org/gguf-my-repo&quot;&gt;GGUF-my-repo space&lt;/a&gt; to convert to GGUF format and quantize model weights to smaller sizes&lt;/li&gt; 
 &lt;li&gt;Use the &lt;a href=&quot;https://huggingface.co/spaces/ggml-org/gguf-my-lora&quot;&gt;GGUF-my-LoRA space&lt;/a&gt; to convert LoRA adapters to GGUF format (more info: &lt;a href=&quot;https://github.com/ggml-org/llama.cpp/discussions/10123&quot;&gt;https://github.com/ggml-org/llama.cpp/discussions/10123&lt;/a&gt;)&lt;/li&gt; 
 &lt;li&gt;Use the &lt;a href=&quot;https://huggingface.co/spaces/CISCai/gguf-editor&quot;&gt;GGUF-editor space&lt;/a&gt; to edit GGUF meta data in the browser (more info: &lt;a href=&quot;https://github.com/ggml-org/llama.cpp/discussions/9268&quot;&gt;https://github.com/ggml-org/llama.cpp/discussions/9268&lt;/a&gt;)&lt;/li&gt; 
 &lt;li&gt;Use the &lt;a href=&quot;https://ui.endpoints.huggingface.co/&quot;&gt;Inference Endpoints&lt;/a&gt; to directly host &lt;code&gt;llama.cpp&lt;/code&gt; in the cloud (more info: &lt;a href=&quot;https://github.com/ggml-org/llama.cpp/discussions/9669&quot;&gt;https://github.com/ggml-org/llama.cpp/discussions/9669&lt;/a&gt;)&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;To learn more about model quantization, &lt;a href=&quot;https://raw.githubusercontent.com/ggml-org/llama.cpp/master/tools/quantize/README.md&quot;&gt;read this documentation&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;&lt;a href=&quot;https://raw.githubusercontent.com/ggml-org/llama.cpp/master/tools/cli&quot;&gt;&lt;code&gt;llama-cli&lt;/code&gt;&lt;/a&gt;&lt;/h2&gt; 
&lt;h4&gt;A CLI tool for accessing and experimenting with most of &lt;code&gt;llama.cpp&lt;/code&gt;&#39;s functionality.&lt;/h4&gt; 
&lt;ul&gt; 
 &lt;li&gt; 
  &lt;details open&gt; 
   &lt;summary&gt;Run in conversation mode&lt;/summary&gt; 
   &lt;p&gt;Models with a built-in chat template will automatically activate conversation mode. If this doesn&#39;t occur, you can manually enable it by adding &lt;code&gt;-cnv&lt;/code&gt; and specifying a suitable chat template with &lt;code&gt;--chat-template NAME&lt;/code&gt;&lt;/p&gt; 
   &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;llama-cli -m model.gguf

# &amp;gt; hi, who are you?
# Hi there! I&#39;m your helpful assistant! I&#39;m an AI-powered chatbot designed to assist and provide information to users like you. I&#39;m here to help answer your questions, provide guidance, and offer support on a wide range of topics. I&#39;m a friendly and knowledgeable AI, and I&#39;m always happy to help with anything you need. What&#39;s on your mind, and how can I assist you today?
#
# &amp;gt; what is 1+1?
# Easy peasy! The answer to 1+1 is... 2!
&lt;/code&gt;&lt;/pre&gt; 
  &lt;/details&gt; &lt;/li&gt; 
 &lt;li&gt; 
  &lt;details&gt; 
   &lt;summary&gt;Run in conversation mode with custom chat template&lt;/summary&gt; 
   &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# use the &quot;chatml&quot; template (use -h to see the list of supported templates)
llama-cli -m model.gguf -cnv --chat-template chatml

# use a custom template
llama-cli -m model.gguf -cnv --in-prefix &#39;User: &#39; --reverse-prompt &#39;User:&#39;
&lt;/code&gt;&lt;/pre&gt; 
  &lt;/details&gt; &lt;/li&gt; 
 &lt;li&gt; 
  &lt;details&gt; 
   &lt;summary&gt;Constrain the output with a custom grammar&lt;/summary&gt; 
   &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;llama-cli -m model.gguf -n 256 --grammar-file grammars/json.gbnf -p &#39;Request: schedule a call at 8pm; Command:&#39;

# {&quot;appointmentTime&quot;: &quot;8pm&quot;, &quot;appointmentDetails&quot;: &quot;schedule a a call&quot;}
&lt;/code&gt;&lt;/pre&gt; 
   &lt;p&gt;The &lt;a href=&quot;https://raw.githubusercontent.com/ggml-org/llama.cpp/master/grammars/&quot;&gt;grammars/&lt;/a&gt; folder contains a handful of sample grammars. To write your own, check out the &lt;a href=&quot;https://raw.githubusercontent.com/ggml-org/llama.cpp/master/grammars/README.md&quot;&gt;GBNF Guide&lt;/a&gt;.&lt;/p&gt; 
   &lt;p&gt;For authoring more complex JSON grammars, check out &lt;a href=&quot;https://grammar.intrinsiclabs.ai/&quot;&gt;https://grammar.intrinsiclabs.ai/&lt;/a&gt;&lt;/p&gt; 
  &lt;/details&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;&lt;a href=&quot;https://raw.githubusercontent.com/ggml-org/llama.cpp/master/tools/server&quot;&gt;&lt;code&gt;llama-server&lt;/code&gt;&lt;/a&gt;&lt;/h2&gt; 
&lt;h4&gt;A lightweight, &lt;a href=&quot;https://github.com/openai/openai-openapi&quot;&gt;OpenAI API&lt;/a&gt; compatible, HTTP server for serving LLMs.&lt;/h4&gt; 
&lt;ul&gt; 
 &lt;li&gt; 
  &lt;details open&gt; 
   &lt;summary&gt;Start a local HTTP server with default configuration on port 8080&lt;/summary&gt; 
   &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;llama-server -m model.gguf --port 8080

# Basic web UI can be accessed via browser: http://localhost:8080
# Chat completion endpoint: http://localhost:8080/v1/chat/completions
&lt;/code&gt;&lt;/pre&gt; 
  &lt;/details&gt; &lt;/li&gt; 
 &lt;li&gt; 
  &lt;details&gt; 
   &lt;summary&gt;Support multiple-users and parallel decoding&lt;/summary&gt; 
   &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# up to 4 concurrent requests, each with 4096 max context
llama-server -m model.gguf -c 16384 -np 4
&lt;/code&gt;&lt;/pre&gt; 
  &lt;/details&gt; &lt;/li&gt; 
 &lt;li&gt; 
  &lt;details&gt; 
   &lt;summary&gt;Enable speculative decoding&lt;/summary&gt; 
   &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# the draft.gguf model should be a small variant of the target model.gguf
llama-server -m model.gguf -md draft.gguf
&lt;/code&gt;&lt;/pre&gt; 
  &lt;/details&gt; &lt;/li&gt; 
 &lt;li&gt; 
  &lt;details&gt; 
   &lt;summary&gt;Serve an embedding model&lt;/summary&gt; 
   &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# use the /embedding endpoint
llama-server -m model.gguf --embedding --pooling cls -ub 8192
&lt;/code&gt;&lt;/pre&gt; 
  &lt;/details&gt; &lt;/li&gt; 
 &lt;li&gt; 
  &lt;details&gt; 
   &lt;summary&gt;Serve a reranking model&lt;/summary&gt; 
   &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# use the /reranking endpoint
llama-server -m model.gguf --reranking
&lt;/code&gt;&lt;/pre&gt; 
  &lt;/details&gt; &lt;/li&gt; 
 &lt;li&gt; 
  &lt;details&gt; 
   &lt;summary&gt;Constrain all outputs with a grammar&lt;/summary&gt; 
   &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# custom grammar
llama-server -m model.gguf --grammar-file grammar.gbnf

# JSON
llama-server -m model.gguf --grammar-file grammars/json.gbnf
&lt;/code&gt;&lt;/pre&gt; 
  &lt;/details&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;&lt;a href=&quot;https://raw.githubusercontent.com/ggml-org/llama.cpp/master/tools/perplexity&quot;&gt;&lt;code&gt;llama-perplexity&lt;/code&gt;&lt;/a&gt;&lt;/h2&gt; 
&lt;h4&gt;A tool for measuring the &lt;a href=&quot;https://raw.githubusercontent.com/ggml-org/llama.cpp/master/tools/perplexity/README.md&quot;&gt;perplexity&lt;/a&gt; &lt;sup class=&quot;footnote-ref&quot;&gt;&lt;a href=&quot;https://raw.githubusercontent.com/ggml-org/llama.cpp/master/#fn1&quot; id=&quot;fnref1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt; (and other quality metrics) of a model over a given text.&lt;/h4&gt; 
&lt;ul&gt; 
 &lt;li&gt; 
  &lt;details open&gt; 
   &lt;summary&gt;Measure the perplexity over a text file&lt;/summary&gt; 
   &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;llama-perplexity -m model.gguf -f file.txt

# [1]15.2701,[2]5.4007,[3]5.3073,[4]6.2965,[5]5.8940,[6]5.6096,[7]5.7942,[8]4.9297, ...
# Final estimate: PPL = 5.4007 +/- 0.67339
&lt;/code&gt;&lt;/pre&gt; 
  &lt;/details&gt; &lt;/li&gt; 
 &lt;li&gt; 
  &lt;details&gt; 
   &lt;summary&gt;Measure KL divergence&lt;/summary&gt; 
   &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# TODO
&lt;/code&gt;&lt;/pre&gt; 
  &lt;/details&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;&lt;a href=&quot;https://raw.githubusercontent.com/ggml-org/llama.cpp/master/tools/llama-bench&quot;&gt;&lt;code&gt;llama-bench&lt;/code&gt;&lt;/a&gt;&lt;/h2&gt; 
&lt;h4&gt;Benchmark the performance of the inference for various parameters.&lt;/h4&gt; 
&lt;ul&gt; 
 &lt;li&gt; 
  &lt;details open&gt; 
   &lt;summary&gt;Run default benchmark&lt;/summary&gt; 
   &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;llama-bench -m model.gguf

# Output:
# | model               |       size |     params | backend    | threads |          test |                  t/s |
# | ------------------- | ---------: | ---------: | ---------- | ------: | ------------: | -------------------: |
# | qwen2 1.5B Q4_0     | 885.97 MiB |     1.54 B | Metal,BLAS |      16 |         pp512 |      5765.41 ± 20.55 |
# | qwen2 1.5B Q4_0     | 885.97 MiB |     1.54 B | Metal,BLAS |      16 |         tg128 |        197.71 ± 0.81 |
#
# build: 3e0ba0e60 (4229)
&lt;/code&gt;&lt;/pre&gt; 
  &lt;/details&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;&lt;a href=&quot;https://raw.githubusercontent.com/ggml-org/llama.cpp/master/examples/simple&quot;&gt;&lt;code&gt;llama-simple&lt;/code&gt;&lt;/a&gt;&lt;/h2&gt; 
&lt;h4&gt;A minimal example for implementing apps with &lt;code&gt;llama.cpp&lt;/code&gt;. Useful for developers.&lt;/h4&gt; 
&lt;ul&gt; 
 &lt;li&gt; 
  &lt;details&gt; 
   &lt;summary&gt;Basic text completion&lt;/summary&gt; 
   &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;llama-simple -m model.gguf

# Hello my name is Kaitlyn and I am a 16 year old girl. I am a junior in high school and I am currently taking a class called &quot;The Art of
&lt;/code&gt;&lt;/pre&gt; 
  &lt;/details&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Contributing&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;Contributors can open PRs&lt;/li&gt; 
 &lt;li&gt;Collaborators will be invited based on contributions&lt;/li&gt; 
 &lt;li&gt;Maintainers can push to branches in the &lt;code&gt;llama.cpp&lt;/code&gt; repo and merge PRs into the &lt;code&gt;master&lt;/code&gt; branch&lt;/li&gt; 
 &lt;li&gt;Any help with managing issues, PRs and projects is very appreciated!&lt;/li&gt; 
 &lt;li&gt;See &lt;a href=&quot;https://github.com/ggml-org/llama.cpp/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22&quot;&gt;good first issues&lt;/a&gt; for tasks suitable for first contributions&lt;/li&gt; 
 &lt;li&gt;Read the &lt;a href=&quot;https://raw.githubusercontent.com/ggml-org/llama.cpp/master/CONTRIBUTING.md&quot;&gt;CONTRIBUTING.md&lt;/a&gt; for more information&lt;/li&gt; 
 &lt;li&gt;Make sure to read this: &lt;a href=&quot;https://github.com/ggml-org/llama.cpp/discussions/205&quot;&gt;Inference at the edge&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;A bit of backstory for those who are interested: &lt;a href=&quot;https://changelog.com/podcast/532&quot;&gt;Changelog podcast&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Other documentation&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/ggml-org/llama.cpp/master/tools/cli/README.md&quot;&gt;cli&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/ggml-org/llama.cpp/master/tools/completion/README.md&quot;&gt;completion&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/ggml-org/llama.cpp/master/tools/server/README.md&quot;&gt;server&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/ggml-org/llama.cpp/master/grammars/README.md&quot;&gt;GBNF grammars&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h4&gt;Development documentation&lt;/h4&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/ggml-org/llama.cpp/master/docs/build.md&quot;&gt;How to build&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/ggml-org/llama.cpp/master/docs/docker.md&quot;&gt;Running on Docker&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/ggml-org/llama.cpp/master/docs/android.md&quot;&gt;Build on Android&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/ggml-org/llama.cpp/master/docs/multi-gpu.md&quot;&gt;Multi-GPU usage&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/ggml-org/llama.cpp/master/docs/development/token_generation_performance_tips.md&quot;&gt;Performance troubleshooting&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/ggml-org/llama.cpp/wiki/GGML-Tips-&amp;amp;-Tricks&quot;&gt;GGML tips &amp;amp; tricks&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h4&gt;Seminal papers and background on the models&lt;/h4&gt; 
&lt;p&gt;If your issue is with model generation quality, then please at least scan the following links and papers to understand the limitations of LLaMA models. This is especially important when choosing an appropriate model size and appreciating both the significant and subtle differences between LLaMA models and ChatGPT:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;LLaMA: 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://ai.facebook.com/blog/large-language-model-llama-meta-ai/&quot;&gt;Introducing LLaMA: A foundational, 65-billion-parameter large language model&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://arxiv.org/abs/2302.13971&quot;&gt;LLaMA: Open and Efficient Foundation Language Models&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;GPT-3 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://arxiv.org/abs/2005.14165&quot;&gt;Language Models are Few-Shot Learners&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;GPT-3.5 / InstructGPT / ChatGPT: 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://openai.com/research/instruction-following&quot;&gt;Aligning language models to follow instructions&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://arxiv.org/abs/2203.02155&quot;&gt;Training language models to follow instructions with human feedback&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;XCFramework&lt;/h2&gt; 
&lt;p&gt;The XCFramework is a precompiled version of the library for iOS, visionOS, tvOS, and macOS. It can be used in Swift projects without the need to compile the library from source. For example:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-swift&quot;&gt;// swift-tools-version: 5.10
// The swift-tools-version declares the minimum version of Swift required to build this package.

import PackageDescription

let package = Package(
    name: &quot;MyLlamaPackage&quot;,
    targets: [
        .executableTarget(
            name: &quot;MyLlamaPackage&quot;,
            dependencies: [
                &quot;LlamaFramework&quot;
            ]),
        .binaryTarget(
            name: &quot;LlamaFramework&quot;,
            url: &quot;https://github.com/ggml-org/llama.cpp/releases/download/b5046/llama-b5046-xcframework.zip&quot;,
            checksum: &quot;c19be78b5f00d8d29a25da41042cb7afa094cbf6280a225abe614b03b20029ab&quot;
        )
    ]
)
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;The above example is using an intermediate build &lt;code&gt;b5046&lt;/code&gt; of the library. This can be modified to use a different version by changing the URL and checksum.&lt;/p&gt; 
&lt;h2&gt;Completions&lt;/h2&gt; 
&lt;p&gt;Command-line completion is available for some environments.&lt;/p&gt; 
&lt;h4&gt;Bash Completion&lt;/h4&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;$ build/bin/llama-cli --completion-bash &amp;gt; ~/.llama-completion.bash
$ source ~/.llama-completion.bash
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Optionally this can be added to your &lt;code&gt;.bashrc&lt;/code&gt; or &lt;code&gt;.bash_profile&lt;/code&gt; to load it automatically. For example:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-console&quot;&gt;$ echo &quot;source ~/.llama-completion.bash&quot; &amp;gt;&amp;gt; ~/.bashrc
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Dependencies&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/yhirose/cpp-httplib&quot;&gt;yhirose/cpp-httplib&lt;/a&gt; - Single-header HTTP server, used by &lt;code&gt;llama-server&lt;/code&gt; - MIT license&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/nothings/stb&quot;&gt;stb-image&lt;/a&gt; - Single-header image format decoder, used by multimodal subsystem - Public domain&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/nlohmann/json&quot;&gt;nlohmann/json&lt;/a&gt; - Single-header JSON library, used by various tools/examples - MIT License&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/mackron/miniaudio&quot;&gt;miniaudio.h&lt;/a&gt; - Single-header audio format decoder, used by multimodal subsystem - Public domain&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/sheredom/subprocess.h&quot;&gt;subprocess.h&lt;/a&gt; - Single-header process launching solution for C and C++ - Public domain&lt;/li&gt; 
&lt;/ul&gt; 
&lt;hr class=&quot;footnotes-sep&quot; /&gt; 
&lt;section class=&quot;footnotes&quot;&gt; 
 &lt;ol class=&quot;footnotes-list&quot;&gt; 
  &lt;li id=&quot;fn1&quot; class=&quot;footnote-item&quot;&gt;&lt;p&gt;&lt;a href=&quot;https://huggingface.co/docs/transformers/perplexity&quot;&gt;https://huggingface.co/docs/transformers/perplexity&lt;/a&gt; &lt;a href=&quot;https://raw.githubusercontent.com/ggml-org/llama.cpp/master/#fnref1&quot; class=&quot;footnote-backref&quot;&gt;↩︎&lt;/a&gt;&lt;/p&gt; &lt;/li&gt; 
 &lt;/ol&gt; 
&lt;/section&gt;</description>
      
      <media:content url="https://repository-images.githubusercontent.com/612354784/c59e3320-a236-4182-941f-ea3f1a0f50e7" medium="image" />
      
    </item>
    
    <item>
      <title>imputnet/helium</title>
      <link>https://github.com/imputnet/helium</link>
      <description>&lt;p&gt;Private, fast, and honest web browser&lt;/p&gt;&lt;hr&gt;&lt;div align=&quot;center&quot;&gt; 
 &lt;img src=&quot;https://raw.githubusercontent.com/imputnet/helium/main/resources/branding/app_icon/raw.png&quot; title=&quot;Helium&quot; alt=&quot;Helium logo&quot; width=&quot;120&quot; /&gt; 
 &lt;h1&gt;Helium&lt;/h1&gt; 
 &lt;p&gt; The Chromium-based web browser made for people, with love. &lt;br /&gt; Privacy-first with unbiased ad-blocking. No bloat and no noise. &lt;/p&gt; 
 &lt;a href=&quot;https://helium.computer/&quot;&gt; helium.computer &lt;/a&gt; 
&lt;/div&gt; 
&lt;h2&gt;Downloads&lt;/h2&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;Helium is currently in beta, so unexpected issues may occur. Please report them if they haven&#39;t already been reported.&lt;/p&gt; 
&lt;/div&gt; 
&lt;p&gt;The easiest way to download Helium is &lt;a href=&quot;https://helium.computer/&quot;&gt;helium.computer&lt;/a&gt;. It&#39;ll pick a compatible binary for your platform automatically.&lt;/p&gt; 
&lt;p&gt;The same releases can also be downloaded from source on GitHub:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/imputnet/helium-macos/releases/latest&quot;&gt;Latest macOS release&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/imputnet/helium-linux/releases/latest&quot;&gt;Latest Linux release&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/imputnet/helium-windows/releases/latest&quot;&gt;Latest Windows release&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Helium repos&lt;/h2&gt; 
&lt;p&gt;All Helium packaging, tooling, services, and components are open source and published on GitHub.&lt;/p&gt; 
&lt;h3&gt;Platform packaging and tooling&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/imputnet/helium-macos&quot;&gt;Helium for macOS&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/imputnet/helium-linux&quot;&gt;Helium for Linux&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/imputnet/helium-windows&quot;&gt;Helium for Windows&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Web services and Helium components&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/imputnet/helium-services&quot;&gt;Helium services&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/imputnet/helium-onboarding&quot;&gt;Helium onboarding&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/imputnet/uBlock&quot;&gt;Helium fork of uBlock Origin&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Development&lt;/h2&gt; 
&lt;p&gt;macOS is our primary development platform, so it&#39;s the recommended development environment for community contributions.&lt;/p&gt; 
&lt;p&gt;Linux packaging includes a similar development script, so the same guide can be applied there too.&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/imputnet/helium-macos/raw/main/docs/building.md#development-build-and-environment&quot;&gt;&amp;gt; See development docs in macOS repo&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;Contributing&lt;/h2&gt; 
&lt;p&gt;Before contributing to Helium, please read the guidelines in &lt;a href=&quot;https://raw.githubusercontent.com/imputnet/helium/main/CONTRIBUTING.md&quot;&gt;CONTRIBUTING.md&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Credits&lt;/h2&gt; 
&lt;h3&gt;The Chromium project&lt;/h3&gt; 
&lt;p&gt;&lt;a href=&quot;https://www.chromium.org/&quot;&gt;The Chromium Project&lt;/a&gt; is at the core of Helium, making it possible in the first place.&lt;/p&gt; 
&lt;h3&gt;ungoogled-chromium&lt;/h3&gt; 
&lt;p&gt;This repo is based on &lt;a href=&quot;https://github.com/ungoogled-software/ungoogled-chromium&quot;&gt;ungoogled-chromium&lt;/a&gt;, but heavily modified for Helium. Special thanks to everyone behind ungoogled-chromium, they made working with Chromium way easier.&lt;/p&gt; 
&lt;h3&gt;Other Chromium browsers&lt;/h3&gt; 
&lt;p&gt;Helium includes some patches from other open source Chromium browsers:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/gcarq/inox-patchset&quot;&gt;Inox patchset&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://tracker.debian.org/pkg/chromium-browser&quot;&gt;Debian&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/bromite/bromite&quot;&gt;Bromite&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://iridiumbrowser.de/&quot;&gt;Iridium Browser&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/brave/brave-core&quot;&gt;Brave&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;All patches are sorted by vendor in the &lt;a href=&quot;https://raw.githubusercontent.com/imputnet/helium/main/patches/&quot;&gt;patches&lt;/a&gt; directory of this repo.&lt;/p&gt; 
&lt;h2&gt;License&lt;/h2&gt; 
&lt;p&gt;All code, patches, modified portions of imported code or patches, and any other content that is unique to Helium and not imported from other repositories is licensed under GPL-3.0. See &lt;a href=&quot;https://raw.githubusercontent.com/imputnet/helium/main/LICENSE&quot;&gt;LICENSE&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;Any content imported from other projects retains its original license (for example, any original unmodified code imported from ungoogled-chromium remains licensed under their &lt;a href=&quot;https://raw.githubusercontent.com/imputnet/helium/main/LICENSE.ungoogled_chromium&quot;&gt;BSD 3-Clause license&lt;/a&gt;).&lt;/p&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/c09fd30a71fb0a6743e0784274b118ece5e076f7d7b1dafd8d63b60f9b7aa785/imputnet/helium" medium="image" />
      
    </item>
    
    <item>
      <title>ikawrakow/ik_llama.cpp</title>
      <link>https://github.com/ikawrakow/ik_llama.cpp</link>
      <description>&lt;p&gt;llama.cpp fork with additional SOTA quants and improved performance&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;ik_llama.cpp: llama.cpp fork with better CPU performance&lt;/h1&gt; 
&lt;p&gt;&lt;a href=&quot;https://opensource.org/licenses/MIT&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/license-MIT-blue.svg?sanitize=true&quot; alt=&quot;License: MIT&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;TL;DR&lt;/h2&gt; 
&lt;p&gt;This repository is a fork of &lt;a href=&quot;https://github.com/ggerganov/llama.cpp&quot;&gt;llama.cpp&lt;/a&gt; with better CPU and hybrid GPU/CPU performance, new SOTA quantization types, first-class Bitnet support, better DeepSeek performance via MLA, FlashMLA, fused MoE operations and tensor overrides for hybrid GPU/CPU inference, row-interleaved quant packing, etc.&lt;/p&gt; 
&lt;div class=&quot;markdown-alert markdown-alert-important&quot;&gt;
 &lt;p class=&quot;markdown-alert-title&quot;&gt;
  &lt;svg class=&quot;octicon octicon-report 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 1.75C0 .784.784 0 1.75 0h12.5C15.216 0 16 .784 16 1.75v9.5A1.75 1.75 0 0 1 14.25 13H8.06l-2.573 2.573A1.458 1.458 0 0 1 3 14.543V13H1.75A1.75 1.75 0 0 1 0 11.25Zm1.75-.25a.25.25 0 0 0-.25.25v9.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h6.5a.25.25 0 0 0 .25-.25v-9.5a.25.25 0 0 0-.25-.25Zm7 2.25v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 9a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z&quot;&gt;&lt;/path&gt;
  &lt;/svg&gt;Important&lt;/p&gt;
 &lt;p&gt;If you are running hybrid CPU/GPU inference for MoE models with all or some experts left on the CPU, &lt;strong&gt;do not use -rtr&lt;/strong&gt; unless you know what you are doing. The &lt;code&gt;-rtr&lt;/code&gt; option causes all tensors left in RAM to be repacked to row-interleaved format while loading the model. As not all quantization types have a CUDA implementation, this will result in matrix multiplications with these tensors to be &lt;strong&gt;always done on the CPU&lt;/strong&gt;, even when it would have been much better to offload the computation to the GPU, typically resulting in much lower prompt processing speed. Most notably, k-quants (&lt;code&gt;K2_K, Q3_K, Q4_K, Q5_K, Q6_K&lt;/code&gt;) do not have CUDA row-interleaved implementation.&lt;/p&gt; 
&lt;/div&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;The only fully functional and performant compute backends are CPU (&lt;code&gt;AVX2&lt;/code&gt; or better, &lt;code&gt;ARM_NEON&lt;/code&gt; or better) and CUDA (Turing or newer). Please do not enter issues related to ROCm, Vulkan, Metal, old Nvidia GPUs, &lt;code&gt;AVX&lt;/code&gt; CPUs, etc. They will not get resolved unless you roll up your sleeves and help bring your favorite backend up to speed. With the current regular contributors this project simply does not have the bandwidth to work on all backends available in &lt;code&gt;llama.cpp&lt;/code&gt;.&lt;/p&gt; 
&lt;/div&gt; 
&lt;div class=&quot;markdown-alert markdown-alert-important&quot;&gt;
 &lt;p class=&quot;markdown-alert-title&quot;&gt;
  &lt;svg class=&quot;octicon octicon-report 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 1.75C0 .784.784 0 1.75 0h12.5C15.216 0 16 .784 16 1.75v9.5A1.75 1.75 0 0 1 14.25 13H8.06l-2.573 2.573A1.458 1.458 0 0 1 3 14.543V13H1.75A1.75 1.75 0 0 1 0 11.25Zm1.75-.25a.25.25 0 0 0-.25.25v9.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h6.5a.25.25 0 0 0 .25-.25v-9.5a.25.25 0 0 0-.25-.25Zm7 2.25v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 9a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z&quot;&gt;&lt;/path&gt;
  &lt;/svg&gt;Important&lt;/p&gt;
 &lt;p&gt;Do not use quantized models from Unsloth that have &lt;code&gt;_XL&lt;/code&gt; in their name. These are likely to not work with &lt;code&gt;ik_llama.cpp&lt;/code&gt;.&lt;/p&gt; 
 &lt;p&gt;The above has caused some stir, so to clarify: the Unsloth &lt;code&gt;_XL&lt;/code&gt; models that are likely to not work are those that contain &lt;code&gt;f16&lt;/code&gt; tensors (which is never a good idea in the first place). All others are fine.&lt;/p&gt; 
&lt;/div&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;Some users have reported issues with graph parallel (a.k.a. split mode &lt;code&gt;graph&lt;/code&gt;) and partial GPU offload (using &lt;code&gt;--cpu-moe&lt;/code&gt; or &lt;code&gt;--n-cpu-moe&lt;/code&gt; or tensor overrides). If you are using/want to use split mode graph and observe gibberish/incoherent responses, try adding &lt;code&gt;-cuda graphs=0&lt;/code&gt; to your command line.&lt;/p&gt; 
&lt;/div&gt; 
&lt;h2&gt;Quickstart&lt;/h2&gt; 
&lt;h3&gt;Prerequisites&lt;/h3&gt; 
&lt;pre&gt;&lt;code&gt;git clone https://github.com/ikawrakow/ik_llama.cpp

cd ik_llama.cpp
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;On Debian/Ubuntu Linux, install the required packages (if using another Linux distro, you need to find the corresponding packages and adapt):&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;apt-get update &amp;amp;&amp;amp; apt-get install build-essential git libcurl4-openssl-dev curl libgomp1 cmake
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Build for CPU&lt;/h3&gt; 
&lt;pre&gt;&lt;code&gt;cmake -B build -DGGML_NATIVE=ON

cmake --build build --config Release -j$(nproc)
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;For AVX-512-capable CPUs (AMD Zen4 / Intel Sapphire Rapids+), see &lt;a href=&quot;https://raw.githubusercontent.com/ikawrakow/ik_llama.cpp/main/docs/build.md&quot;&gt;&lt;code&gt;docs/build.md&lt;/code&gt;&lt;/a&gt; section &quot;CPU build flags for AVX-512&quot; for the additional flags that activate the IQK quantized GEMM kernels (the &lt;code&gt;HAVE_FANCY_SIMD&lt;/code&gt; path). Without those flags, a vanilla &lt;code&gt;Release&lt;/code&gt; build silently falls back to the AVX2 path on this hardware.&lt;/p&gt; 
&lt;h3&gt;Build for GPU&lt;/h3&gt; 
&lt;p&gt;Install Nvidia Drivers and &lt;a href=&quot;https://developer.nvidia.com/cuda/toolkit&quot;&gt;CUDA Toolkit&lt;/a&gt;.&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;cmake -B build -DGGML_NATIVE=ON -DGGML_CUDA=ON

cmake --build build --config Release -j$(nproc)
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Step-by-step instructions for a case of a successful Windows build&lt;/h3&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/raw/main/docs/build.md&quot;&gt;https://github.com/ikawrakow/ik_llama.cpp/blob/main/docs/build.md&lt;/a&gt;&lt;/p&gt; 
&lt;h3&gt;Run&lt;/h3&gt; 
&lt;p&gt;Download &lt;code&gt;.gguf&lt;/code&gt; model files (e.g. &lt;a href=&quot;https://huggingface.co/bartowski/Qwen_Qwen3-0.6B-GGUF/blob/main/Qwen_Qwen3-0.6B-IQ4_NL.gguf&quot;&gt;bartowski/Qwen_Qwen3-0.6B-IQ4_NL.gguf&lt;/a&gt;) to your favorite directory (e.g. &lt;code&gt;/my_local_files/gguf&lt;/code&gt;).&lt;/p&gt; 
&lt;p&gt;Start the server with one of the commands (CPU or GPU):&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;./build/bin/llama-server --model /my_local_files/gguf/Qwen_Qwen3-0.6B-IQ4_NL.gguf --ctx-size 4096
&lt;/code&gt;&lt;/pre&gt; 
&lt;pre&gt;&lt;code&gt;./build/bin/llama-server --model /my_local_files/gguf/Qwen_Qwen3-0.6B-IQ4_NL.gguf --ctx-size 4096 -ngl 999
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;That&#39;s all! Open &lt;a href=&quot;http://127.0.0.1:8080&quot;&gt;http://127.0.0.1:8080&lt;/a&gt; in Browser start chatting.&lt;/p&gt; 
&lt;h3&gt;&lt;a href=&quot;https://raw.githubusercontent.com/ikawrakow/ik_llama.cpp/main/docker/README.md&quot;&gt;Step by step guide&lt;/a&gt; for ik_llama.cpp in podman/docker container including llama-swap&lt;/h3&gt; 
&lt;h3&gt;&lt;a href=&quot;https://raw.githubusercontent.com/ikawrakow/ik_llama.cpp/main/docs/parameters.md&quot;&gt;Common parameters and options&lt;/a&gt;&lt;/h3&gt; 
&lt;h2&gt;Latest News&lt;/h2&gt; 
&lt;h3&gt;Model Support&lt;/h3&gt; 
&lt;p&gt;LlaMA-3-Nemotron &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/377&quot;&gt;PR 377&lt;/a&gt;, Qwen3 &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/355&quot;&gt;PR 355&lt;/a&gt;, GLM-4 &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/344&quot;&gt;PR 344&lt;/a&gt;, Command-A &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/341&quot;&gt;PR 341&lt;/a&gt;, bitnet-b1.58-2B-4T &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/337&quot;&gt;PR 337&lt;/a&gt;, LLaMA-4 &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/321&quot;&gt;PR 321&lt;/a&gt;, Gemma3 &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/276&quot;&gt;PR 276&lt;/a&gt;, DeepSeek-V3 &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/176&quot;&gt;PR 176&lt;/a&gt;, Kimi-2 &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/609&quot;&gt;PR 609&lt;/a&gt;, dots.llm1 &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/573&quot;&gt;PR 573&lt;/a&gt;, Hunyuan &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/565&quot;&gt;PR 565&lt;/a&gt;, GLM-4.5 &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/668&quot;&gt;PR 668&lt;/a&gt; (4.5/4.6/4.7/AIR), Ernie 4.5 MOE and 0.3B &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/759&quot;&gt;PR 759&lt;/a&gt;, grok-2 &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/782&quot;&gt;PR 782&lt;/a&gt;, Ling/Ring (Bailing-MoE2) &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/833&quot;&gt;PR 833&lt;/a&gt;, Qwen3-VL &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/883&quot;&gt;PR 883&lt;/a&gt;, SmolLM3 &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/934&quot;&gt;PR 934&lt;/a&gt;, GigaChat3 &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/995&quot;&gt;PR 995&lt;/a&gt;, ministral3 &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/1030&quot;&gt;PR 1030&lt;/a&gt;, Mimo-V2-Flash &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/1096&quot;&gt;PR 1096&lt;/a&gt;, GLM-4.7-Flash &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/1168&quot;&gt;PR 1168&lt;/a&gt;, Seed-OSS &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/1218&quot;&gt;PR 1218&lt;/a&gt;, Step-3.5-Flash &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/1231&quot;&gt;PR 1231&lt;/a&gt;, GLM-5 &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/1268&quot;&gt;PR 1268&lt;/a&gt;, Qwen3-Next &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/1266&quot;&gt;PR 1266&lt;/a&gt;, Qwen3.5-MoE &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/1288&quot;&gt;PR 1288&lt;/a&gt; and dense Qwen-3.5 &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/1326&quot;&gt;1326&lt;/a&gt;, Mistral 4 &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/1450&quot;&gt;PR 1450&lt;/a&gt;, Bonsai 1-bit &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/1570&quot;&gt;PR 1570&lt;/a&gt;, Gemma4 &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/1581&quot;&gt;PR 1581&lt;/a&gt;, Mimo-2.5 &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/1723&quot;&gt;PR 1723&lt;/a&gt;&lt;/p&gt; 
&lt;h3&gt;Quantization&lt;/h3&gt; 
&lt;h4&gt;Quantization additions&lt;/h4&gt; 
&lt;h5&gt;Trellis quants (&lt;code&gt;IQ1_KT&lt;/code&gt;, &lt;code&gt;IQ2_KT&lt;/code&gt;, &lt;code&gt;IQ3_KT&lt;/code&gt;, &lt;code&gt;IQ4_KT&lt;/code&gt;)&lt;/h5&gt; 
&lt;p&gt;Information and the original CUDA implementation in &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/113&quot;&gt;PR 113&lt;/a&gt;. Additional implementations: Metal &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/475&quot;&gt;PR 475&lt;/a&gt;, Neon &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/471&quot;&gt;PR 471&lt;/a&gt;, CPU &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/441&quot;&gt;PR 441&lt;/a&gt;. &lt;code&gt;IQ1_KT&lt;/code&gt; was added more recently in &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/616&quot;&gt;PR 616&lt;/a&gt;. Note: these are base on a novel, integer-base trellis, which allows to achieve reasonable CPU performance, see &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/529&quot;&gt;PR 529&lt;/a&gt; and PRs quoted there for details.&lt;/p&gt; 
&lt;h5&gt;IQK quants&lt;/h5&gt; 
&lt;p&gt;Information can be found in &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/discussions/8&quot;&gt;Discussion 8&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;Initial implementations (Zen4, AVX2, NEON): &lt;code&gt;IQ5_KS_R4&lt;/code&gt; &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/426&quot;&gt;PR 426&lt;/a&gt;, &lt;code&gt;IQ5_KS&lt;/code&gt; &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/422&quot;&gt;PR 422&lt;/a&gt;, &lt;code&gt;IQ4_KS_R4&lt;/code&gt; &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/150&quot;&gt;PR 150&lt;/a&gt;, &lt;code&gt;IQ5_K_R4&lt;/code&gt; &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/149&quot;&gt;PR 149&lt;/a&gt;, &lt;code&gt;IQ2_K_R4&lt;/code&gt; &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/146&quot;&gt;PR 146&lt;/a&gt;, &lt;code&gt;IQ3_K_R4&lt;/code&gt; &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/145&quot;&gt;PR 145&lt;/a&gt;, &lt;code&gt;IQ4_K_R4&lt;/code&gt; &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/138&quot;&gt;PR 138&lt;/a&gt;, &lt;code&gt;IQ4_KSS&lt;/code&gt; &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/89&quot;&gt;PR 89&lt;/a&gt;, &lt;code&gt;IQ2_KS&lt;/code&gt; &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/85&quot;&gt;PR 85&lt;/a&gt;, &lt;code&gt;IQ4_KS&lt;/code&gt; &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/83&quot;&gt;PR 83&lt;/a&gt;, &lt;code&gt;IQ6_K&lt;/code&gt; &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/14&quot;&gt;PR 14&lt;/a&gt;, &lt;code&gt;IQ2_K, IQ3_K and IQ5_K&lt;/code&gt; &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/7&quot;&gt;PR 7&lt;/a&gt;, &lt;code&gt;IQ4_K&lt;/code&gt; &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/6&quot;&gt;PR 6&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;Cuda implementations: &lt;code&gt;IQ4_KS_R4&lt;/code&gt; and &lt;code&gt;IQ5_KS_R4&lt;/code&gt; &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/493&quot;&gt;PR 493&lt;/a&gt;, &lt;code&gt;IQ1_S_R4&lt;/code&gt; &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/492&quot;&gt;PR 492&lt;/a&gt;, &lt;code&gt;IQ1_M_R4&lt;/code&gt; &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/494&quot;&gt;PR 494&lt;/a&gt;. &lt;code&gt;IQ4_KS_R4&lt;/code&gt; and &lt;code&gt;IQ5_KS_R4&lt;/code&gt; &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/462&quot;&gt;PR 462&lt;/a&gt;, &lt;code&gt;IQ2_K_R4&lt;/code&gt;, &lt;code&gt;IQ3_K_R4&lt;/code&gt;, &lt;code&gt;IQ4_K_R4&lt;/code&gt;, &lt;code&gt;IQ5_K_R4&lt;/code&gt; &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/461&quot;&gt;PR 461&lt;/a&gt;, &lt;code&gt;IQ4_K, IQ5_K, IQ6_K&lt;/code&gt; &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/417&quot;&gt;PR 417&lt;/a&gt;, &lt;code&gt;IQ2_KS, IQ2_K, IQ3_K&lt;/code&gt; &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/417&quot;&gt;PR 418&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;code&gt;IQ2_KL&lt;/code&gt; is a more recent addition in &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/602&quot;&gt;PR 602&lt;/a&gt;&lt;/p&gt; 
&lt;h5&gt;Hadamard transforms for K-cache&lt;/h5&gt; 
&lt;p&gt;CPU &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/1033&quot;&gt;PR 1033&lt;/a&gt; and CUDA &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/1034&quot;&gt;PR 1034&lt;/a&gt;&lt;/p&gt; 
&lt;h5&gt;Hadamard transforms for V-cache&lt;/h5&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/1527&quot;&gt;PR 1527&lt;/a&gt;&lt;/p&gt; 
&lt;h5&gt;MXFP4 as used in gpt-oss models&lt;/h5&gt; 
&lt;p&gt;Implemented for Zen4, AVX2, ARM_NEON, Metal, CUDA &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/682&quot;&gt;PR 682&lt;/a&gt;&lt;/p&gt; 
&lt;h4&gt;Quantization improvements&lt;/h4&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;IQ1_M&lt;/code&gt; &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/327&quot;&gt;PR 327&lt;/a&gt;, &lt;code&gt;IQ2_XS&lt;/code&gt; &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/312&quot;&gt;PR 312&lt;/a&gt;, &lt;code&gt;Q2_K, Q4_K, Q5_K, Q4_1, Q5_1&lt;/code&gt; &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/302&quot;&gt;PR 302&lt;/a&gt;, &lt;code&gt;Q4_0, Q5_0, Q6_0, Q3_K, Q6_K, IQ4_XS, IQ4_NL&lt;/code&gt; &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/295&quot;&gt;PR 295&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Low perplexity &lt;code&gt;Q4_0&lt;/code&gt; KV cache &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/1547&quot;&gt;PR 1547&lt;/a&gt; &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/1556&quot;&gt;PR 1556&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h4&gt;Quantization performance improvements&lt;/h4&gt; 
&lt;ul&gt; 
 &lt;li&gt;Much faster CPU prompt processing for all non-interleaved quants. Initial idea in &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/515&quot;&gt;PR 515&lt;/a&gt; and &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/531&quot;&gt;PR 531&lt;/a&gt;, with many follow up PRs to apply to all quantization types for the 3 supported CPU platforms.&lt;/li&gt; 
 &lt;li&gt;All quantization types now have quantized matrix multiplication CUDA kernels, see &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/515&quot;&gt;PR 557&lt;/a&gt; and several others&lt;/li&gt; 
 &lt;li&gt;Faster CPU prompt processing for Trellis quants and MoE models. &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/488&quot;&gt;PR 488&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Trellis quants: faster CPU prompt processing &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/482&quot;&gt;PR 482&lt;/a&gt;.&lt;/li&gt; 
 &lt;li&gt;Minor (~2%) &lt;code&gt;iq2_ks&lt;/code&gt; TG performance improvement on CUDA &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/468&quot;&gt;PR 468&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Faster &lt;code&gt;IQ3_KT&lt;/code&gt; and &lt;code&gt;IQ4_KT&lt;/code&gt; &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/453&quot;&gt;PR 453&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Zen4: Faster PP for &lt;code&gt;IQ2_KS, IQ4_KS, IQ5_KS&lt;/code&gt; &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/428&quot;&gt;PR 428&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Fast GEMM/GEMV for &lt;code&gt;IQ1_S&lt;/code&gt; &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/212&quot;&gt;PR 212&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;AVX-VNNI optimizations &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/1446&quot;&gt;PR 1446&lt;/a&gt; &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/1455&quot;&gt;PR 1455&lt;/a&gt; &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/1467&quot;&gt;PR 1467&lt;/a&gt; &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/1474&quot;&gt;PR 1474&lt;/a&gt; &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/1482&quot;&gt;PR 1482&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Features&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;New split mode &quot;graph&quot; for multi GPU setups &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/1022&quot;&gt;PR 1022&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Fused delta-net for Qwen3-Next and Qwen3.5-MoE &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/1315&quot;&gt;PR 1315&lt;/a&gt; &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/1333&quot;&gt;PR 1333&lt;/a&gt; &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/1362&quot;&gt;PR 1362&lt;/a&gt; &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/1373&quot;&gt;PR 1373&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Hadamard transforms for K-cache and V-cache &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/1033&quot;&gt;PR 1033&lt;/a&gt; &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/1034&quot;&gt;PR 1034&lt;/a&gt; &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/1527&quot;&gt;PR 1527&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Auto-fit offloaded tensors to available VRAM (MoE and dense models) &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/1501&quot;&gt;PR 1501&lt;/a&gt; &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/1504&quot;&gt;PR 1504&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Checkpoints for recurrent models &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/1310&quot;&gt;PR 1310&lt;/a&gt; &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/1398&quot;&gt;PR 1398&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;MTP decoding support for popular models like GLM-4.x MoE &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/1270&quot;&gt;1270&lt;/a&gt;, Qwen 3.5/3.6 &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/1698&quot;&gt;1698&lt;/a&gt; &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/1745&quot;&gt;1745&lt;/a&gt;, Gemma 4 &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/1744&quot;&gt;1744&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Self speculative decoding, ngram &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/1261&quot;&gt;PR 1261&lt;/a&gt;, suffix &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/1646&quot;&gt;PR 1646&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;String ban function for all completions &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/1185&quot;&gt;PR 1185&lt;/a&gt; &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/1243&quot;&gt;PR 1243&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Expiring Logit Bias &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/1731&quot;&gt;PR 1731&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;OpenAI &lt;code&gt;/v1/responses&lt;/code&gt; API endpoint &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/1184&quot;&gt;PR 1184&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Function call support &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/628&quot;&gt;PR 628&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;jinja template support &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/677&quot;&gt;PR 677&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Webui: New Features for Conversations, Settings, and Chat Messages &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/618&quot;&gt;PR 618&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Dynamic control vector management endpoints &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/1223&quot;&gt;PR 1223&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Legacy quants conversion schemes in &lt;code&gt;convert_hf_to_gguf.py&lt;/code&gt; &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/449&quot;&gt;PR 449&lt;/a&gt;, &lt;code&gt;Q6_0&lt;/code&gt; in &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/483&quot;&gt;PR 483&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Adaptive-P Sampler &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/1100&quot;&gt;PR 1100&lt;/a&gt; implemented as designed by it&#39;s author; supported on Webui&lt;/li&gt; 
 &lt;li&gt;Multi-modal Vision support in &lt;code&gt;llama-mtmd-cli&lt;/code&gt; &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/798&quot;&gt;PR 798&lt;/a&gt; and in &lt;code&gt;llama-server&lt;/code&gt; &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/901&quot;&gt;PR 901&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;mikupad as an alternative WebUI &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/558&quot;&gt;PR 558&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;June 8 2025: Webui updated (legacy still available when &lt;code&gt;--path ./examples/server/public_legacy&lt;/code&gt; is passed) &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/481&quot;&gt;PR 481&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;June 8 2025: RPC improvements &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/480&quot;&gt;PR 480&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;June 7 2025: Add an endpoint that lists all the saved prompt caches to server &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/502&quot;&gt;PR 502&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;June 6 2025: Make prompt cache saving and restoring MLA aware &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/497&quot;&gt;PR 497&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;June 3 2025: Added samplers, XTC &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/486&quot;&gt;PR 486&lt;/a&gt;, top-n σ &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/489&quot;&gt;PR 489&lt;/a&gt;.&lt;/li&gt; 
 &lt;li&gt;May 22 2025: Refactor &lt;code&gt;iqk_mul_mat.cpp&lt;/code&gt; which speeds up compilation time significantly. &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/435&quot;&gt;PR 435&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;May 17 2025: Option to enable or disable the CPU FA kernels &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/429&quot;&gt;PR 429&lt;/a&gt;.&lt;/li&gt; 
 &lt;li&gt;May 12 2025: User can now control if/which operations with tensors held in RAM are offloaded to the GPU. See &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/405&quot;&gt;PR 405&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;May 12 2025: Compatibility issues with mainline &lt;code&gt;llama.cpp&lt;/code&gt; GGUFs for DeepSeek models with MLA enabled were resolved in &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/394&quot;&gt;PR 394&lt;/a&gt;. The lower prompt processing performance resulting from using &lt;code&gt;llama.cpp&lt;/code&gt;-style MLA GGUFs was recovered in &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/409&quot;&gt;PR 409&lt;/a&gt;.&lt;/li&gt; 
 &lt;li&gt;April 21 2025: ik_llama.cpp builds and runs successfully on Android (using termux), see &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/336&quot;&gt;PR 336&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;March 1 2025: Smart Expert Reduction for faster DeepSeek inference &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/239&quot;&gt;PR 239&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Feb 25 2025: Tensor overrides for better control where model weights are stored (GPU or CPU) &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/232&quot;&gt;PR 232&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Feb 23 2025: &lt;code&gt;sweep-bench&lt;/code&gt; - better performance benchmarking &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/225&quot;&gt;PR 225&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Feb 19 2025: &lt;code&gt;Q8_KV&lt;/code&gt; - new type for 8-bit KV-cache quantization &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/208&quot;&gt;PR 208&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;March 7 2025: Custom quantization mixes using regular expressions &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/244&quot;&gt;PR 244&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Performance improvements&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Better GPU offload strategy for MoE models when using hybrid HPU/CPU inference, see &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/520&quot;&gt;PR 520&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Much faster rng sampling &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/1187&quot;&gt;PR 1187&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;May 13 2025: Better CPU FA performance for DeepSeek-Lite. &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/410&quot;&gt;PR 410&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;May 11 2025: Slightly faster flash attention for DeepSeek models on CUDA, along with extending compatibility to Touring or newer GPUs. &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/408&quot;&gt;PR 408&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;May 4 2025: Significant token generation performance improvement on CUDA with Flash Attention for GQA models. For details and benchmarks. &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/370&quot;&gt;PR 370&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;April 17 2025: Better CPU Flash Attention token generation performance. &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/332&quot;&gt;PR 332&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;April 3 2025: Much faster MoE implementation on Metal. &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/307&quot;&gt;PR 307&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;March 25 2025: Better MoE performance on CUDA &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/283&quot;&gt;PR 283&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;March 23 2025: Better batched processing speed for DeepSeek models &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/282&quot;&gt;PR 282&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;March 18 2025: Reduce compute buffer size &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/237&quot;&gt;PR 237&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;March 10 2025: Better TG performance for MoE models on CUDA &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/248&quot;&gt;PR 248&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Feb 23 2025: Fused FFN ops for faster MoE inference &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/229&quot;&gt;PR 229&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Flash-MLA&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;May 7 2025: 🚀 FlashMLA-3 for DeepSeek models on CUDA. &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/386&quot;&gt;PR 386&lt;/a&gt;. Caveat: Ampere or newer Nvidia GPU required&lt;/li&gt; 
 &lt;li&gt;March 21 2025: 🚀 FlashMLA-3: fastest CPU-only inference for DeepSeek models &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/273&quot;&gt;PR 273&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;March 17 2025: 🚀 FlashMLA-2 performance improvements &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/253&quot;&gt;PR 253&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;March 12 2025: Allow &lt;code&gt;Q8_0&lt;/code&gt; KV cache with FlashMLA-2 on CUDA &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/265&quot;&gt;PR 265&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;March 9 2025: 🚀 FlashMLA on CUDA &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/247&quot;&gt;PR 247&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;March 8 2025: 🚀 Faster FlashMLA CPU implementation &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/243&quot;&gt;PR 243&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;March 3 2025: 🚀 Introducing FlashMLA - MLA with Flash Attention &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/240&quot;&gt;PR 240&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Feb 27 2025: MLA without transposed cache &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/235&quot;&gt;PR 235&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Feb 13 2025: Allow &lt;code&gt;Q8_0&lt;/code&gt; quantized cache with MLA &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/206&quot;&gt;PR 206&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Feb 11 2025: 🚀 Flash Attention support for DeepSeek models &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/200&quot;&gt;PR 200&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Feb 9 2025: 🚀 MLA for DeepSeek models &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/188&quot;&gt;PR 188&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Fixes&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Fix bug in MMVQ kernel &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/446&quot;&gt;PR 446&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Fix AVX2 implementation of &lt;code&gt;IQ4_K, IQ4_KS, IQ5_K, IQ6_K&lt;/code&gt; &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/427&quot;&gt;PR 427&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Fix standard attention on the CPU &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/421&quot;&gt;PR 421&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Fix imatrix calculation for MLA models &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/411&quot;&gt;PR 411&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Fix new CUDA FA on Touring &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/413&quot;&gt;PR 413&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Fix SER. CPU: &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/415&quot;&gt;PR 415&lt;/a&gt; CUDA: &lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/pull/416&quot;&gt;PR 416&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Resources&lt;/h2&gt; 
&lt;p&gt;There is no single point of reference describing all new &lt;code&gt;ik_llama.cpp&lt;/code&gt; features. Pull requests often contain detailed information, so browsing the PRs is often the best way to learn about new features and how to use them. In addition&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/wiki&quot;&gt;The Wiki page&lt;/a&gt; has performance comparisons to mainline &lt;code&gt;llama.cpp&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/discussions/258&quot;&gt;This guide&lt;/a&gt; is a good place to start if you came here because of DeepSeek models&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/discussions/266&quot;&gt;This discussion&lt;/a&gt; is about running DeepSeek-V3/R1 on a 16 x 3090 setup&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/ikawrakow/ik_llama.cpp/discussions/8&quot;&gt;This discussion&lt;/a&gt; describes the new quantization types available in &lt;code&gt;ik_llama.cpp&lt;/code&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Testing&lt;/h2&gt; 
&lt;h3&gt;Function Calls Tests&lt;/h3&gt; 
&lt;p&gt;To run the function calls test suite:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;cd build
cmake --build . --target test-function-calls
./bin/test-function-calls
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;The test suite covers parser functionality, streaming, error handling, content cleaning, and server integration. All tests should pass to ensure production readiness.&lt;/p&gt; 
&lt;h2&gt;Contributing&lt;/h2&gt; 
&lt;p&gt;Contributions in form of pull requests, issue submissions (bug reports, feature requests), or general discussions, are welcome.&lt;/p&gt; 
&lt;h2&gt;License&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/sheredom/subprocess.h&quot;&gt;subprocess.h&lt;/a&gt; - Single-header process launching solution for C and C++ - Public domain&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/ikawrakow/ik_llama.cpp/main/example/server/README.md&quot;&gt;server&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/ikawrakow/ik_llama.cpp/main/grammars/README.md&quot;&gt;GBNF grammars&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h4&gt;Development documentation&lt;/h4&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/ikawrakow/ik_llama.cpp/main/docs/build.md&quot;&gt;How to build&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/ikawrakow/ik_llama.cpp/main/docs/docker.md&quot;&gt;Running on Docker&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/ikawrakow/ik_llama.cpp/main/docs/development/token_generation_performance_tips.md&quot;&gt;Performance troubleshooting&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/ggml-org/llama.cpp/wiki/GGML-Tips-&amp;amp;-Tricks&quot;&gt;GGML tips &amp;amp; tricks&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h4&gt;Seminal papers and background on the models&lt;/h4&gt; 
&lt;p&gt;If your issue is with model generation quality, then please at least scan the following links and papers to understand the limitations of LLaMA models. This is especially important when choosing an appropriate model size and appreciating both the significant and subtle differences between LLaMA models and ChatGPT:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;LLaMA: 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://ai.facebook.com/blog/large-language-model-llama-meta-ai/&quot;&gt;Introducing LLaMA: A foundational, 65-billion-parameter large language model&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://arxiv.org/abs/2302.13971&quot;&gt;LLaMA: Open and Efficient Foundation Language Models&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;GPT-3 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://arxiv.org/abs/2005.14165&quot;&gt;Language Models are Few-Shot Learners&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;GPT-3.5 / InstructGPT / ChatGPT: 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://openai.com/research/instruction-following&quot;&gt;Aligning language models to follow instructions&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://arxiv.org/abs/2203.02155&quot;&gt;Training language models to follow instructions with human feedback&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Completions&lt;/h2&gt; 
&lt;p&gt;Command-line completion is available for some environments.&lt;/p&gt; 
&lt;h4&gt;Bash Completion&lt;/h4&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;$ build/bin/llama-cli --completion-bash &amp;gt; ~/.llama-completion.bash
$ source ~/.llama-completion.bash
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Optionally this can be added to your &lt;code&gt;.bashrc&lt;/code&gt; or &lt;code&gt;.bash_profile&lt;/code&gt; to load it automatically. For example:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-console&quot;&gt;$ echo &quot;source ~/.llama-completion.bash&quot; &amp;gt;&amp;gt; ~/.bashrc
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Dependencies&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/yhirose/cpp-httplib&quot;&gt;yhirose/cpp-httplib&lt;/a&gt; - Single-header HTTP server, used by &lt;code&gt;llama-server&lt;/code&gt; - MIT license&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/nothings/stb&quot;&gt;stb-image&lt;/a&gt; - Single-header image format decoder, used by multimodal subsystem - Public domain&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/nlohmann/json&quot;&gt;nlohmann/json&lt;/a&gt; - Single-header JSON library, used by various tools/examples - MIT License&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/mackron/miniaudio&quot;&gt;miniaudio.h&lt;/a&gt; - Single-header audio format decoder, used by multimodal subsystem - Public domain&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/sheredom/subprocess.h&quot;&gt;subprocess.h&lt;/a&gt; - Single-header process launching solution for C and C++ - Public domain&lt;/li&gt; 
&lt;/ul&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/b67c53eaea28a5885992af804287dc0006607efb868c466714d69d5fee30a3d9/ikawrakow/ik_llama.cpp" medium="image" />
      
    </item>
    
    <item>
      <title>ValveSoftware/Proton</title>
      <link>https://github.com/ValveSoftware/Proton</link>
      <description>&lt;p&gt;Compatibility tool for Steam Play based on Wine and additional components&lt;/p&gt;&lt;hr&gt;&lt;h2&gt;Introduction&lt;/h2&gt; 
&lt;p&gt;&lt;strong&gt;Proton&lt;/strong&gt; is a tool for use with the Steam client which allows games which are exclusive to Windows to run on the Linux operating system. It uses Wine to facilitate this.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Most users should use Proton provided by the Steam Client itself.&lt;/strong&gt; See &lt;a href=&quot;https://steamcommunity.com/games/221410/announcements/detail/1696055855739350561&quot;&gt;this Steam Community post&lt;/a&gt; for more details.&lt;/p&gt; 
&lt;p&gt;The source code is provided to enable advanced users the ability to alter Proton. For example, some users may wish to use a different version of Wine with a particular title.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;The changelog&lt;/strong&gt; is available on &lt;a href=&quot;https://github.com/ValveSoftware/Proton/wiki/Changelog&quot;&gt;our wiki&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Obtaining Proton sources&lt;/h2&gt; 
&lt;p&gt;Acquire Proton&#39;s source by cloning &lt;a href=&quot;https://github.com/ValveSoftware/Proton&quot;&gt;https://github.com/ValveSoftware/Proton&lt;/a&gt; and checking out the branch you desire.&lt;/p&gt; 
&lt;p&gt;You can clone the latest Proton to your system with this command:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git clone --recurse-submodules https://github.com/ValveSoftware/Proton.git proton
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Be sure to update submodules when switching between branches:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git checkout experimental_6.3
git submodule update --init --recursive
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;If you want to change any subcomponent, now is the time to do so. For example, if you wish to make changes to Wine, you would apply them to the &lt;code&gt;wine/&lt;/code&gt; directory.&lt;/p&gt; 
&lt;h2&gt;Building Proton&lt;/h2&gt; 
&lt;p&gt;Most of Proton builds inside the Proton SDK container with very few dependencies on the host side.&lt;/p&gt; 
&lt;h2&gt;Preparing the build environment&lt;/h2&gt; 
&lt;p&gt;You need either a Docker or a Podman setup which Proton&#39;s build system uses internally. You should never need to use either container engine manually unless working on those parts of build system directly.&lt;/p&gt; 
&lt;p&gt;We highly recommend &lt;a href=&quot;https://github.com/containers/podman/raw/main/docs/tutorials/rootless_tutorial.md&quot;&gt;the rootless Podman setup&lt;/a&gt;. Please refer to your distribution&#39;s documentation for setup instructions (e.g. Arch &lt;a href=&quot;https://wiki.archlinux.org/title/Podman&quot;&gt;Podman&lt;/a&gt; / &lt;a href=&quot;https://wiki.archlinux.org/title/Docker&quot;&gt;Docker&lt;/a&gt;, Debian &lt;a href=&quot;https://wiki.debian.org/Podman&quot;&gt;Podman&lt;/a&gt; / &lt;a href=&quot;https://wiki.debian.org/Docker&quot;&gt;Docker&lt;/a&gt;).&lt;/p&gt; 
&lt;h2&gt;The Easy Way&lt;/h2&gt; 
&lt;p&gt;We provide a top-level Makefile which will execute most of the build commands for you.&lt;/p&gt; 
&lt;p&gt;After checking out the repository and updating its submodules, assuming that you have a working Docker or Podman setup, you can build and install Proton with a simple:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;make install
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;If your build system is missing dependencies, it will fail quickly with a clear error message.&lt;/p&gt; 
&lt;p&gt;After the build finishes, you may need to restart the Steam client to see the new Proton tool. The tool&#39;s name in the Steam client will be based on the currently checked out branch of Proton. You can override this name using the &lt;code&gt;build_name&lt;/code&gt; variable.&lt;/p&gt; 
&lt;p&gt;See &lt;code&gt;make help&lt;/code&gt; for other build targets and options.&lt;/p&gt; 
&lt;h2&gt;Manual building&lt;/h2&gt; 
&lt;h3&gt;Configuring the build&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;mkdir ../build &amp;amp;&amp;amp; cd ../build
../proton/configure.sh --enable-ccache --build-name=my_build
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Running &lt;code&gt;configure.sh&lt;/code&gt; will create a &lt;code&gt;Makefile&lt;/code&gt; allowing you to build Proton. The scripts checks if containers are functional and prompt you if any host-side dependencies are missing. You should run the command from a directory created specifically for your build.&lt;/p&gt; 
&lt;p&gt;The configuration script tries to discover a working Docker or Podman setup to use, but you can force a compatible engine with &lt;code&gt;--container-engine=&amp;lt;executable_name&amp;gt;&lt;/code&gt;.&lt;/p&gt; 
&lt;p&gt;You can enable ccache with &lt;code&gt;--enable-cache&lt;/code&gt; flag. This will mount your &lt;code&gt;$CCACHE_DIR&lt;/code&gt; or &lt;code&gt;$HOME/.ccache&lt;/code&gt; inside the container.&lt;/p&gt; 
&lt;p&gt;&lt;code&gt;--proton-sdk-image=registry.gitlab.steamos.cloud/proton/soldier/sdk:&amp;lt;version&amp;gt;&lt;/code&gt; can be used to build with a custom version of the Proton SDK images.&lt;/p&gt; 
&lt;p&gt;Check &lt;code&gt;--help&lt;/code&gt; for other configuration options.&lt;/p&gt; 
&lt;p&gt;NOTE: If &lt;strong&gt;SELinux&lt;/strong&gt; is in use, the Proton build container may fail to access your user&#39;s files. This is caused by &lt;a href=&quot;https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/security-enhanced_linux/sect-security-enhanced_linux-working_with_selinux-selinux_contexts_labeling_files&quot;&gt;SELinux&#39;s filesystem labels&lt;/a&gt;. You may pass the &lt;code&gt;--relabel-volumes&lt;/code&gt; switch to configure to cause the &lt;a href=&quot;https://docs.docker.com/storage/bind-mounts/&quot;&gt;container engine to relabel its bind-mounts&lt;/a&gt; and allow access to those files from within the container. This can be dangerous when used with system directories. Proceed with caution and refer your container engine&#39;s manual.&lt;/p&gt; 
&lt;h3&gt;Building&lt;/h3&gt; 
&lt;pre&gt;&lt;code&gt;make
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;Important make targets:&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;&lt;code&gt;make install&lt;/code&gt; - install Proton into your user&#39;s Steam directory, see the &lt;a href=&quot;https://raw.githubusercontent.com/ValveSoftware/Proton/proton_11.0/#install-proton-locally&quot;&gt;install Proton locally&lt;/a&gt; section for details.&lt;/p&gt; 
&lt;p&gt;&lt;code&gt;make redist&lt;/code&gt; - create a redistribute build (&lt;code&gt;redist/&lt;/code&gt;) that can be copied to &lt;code&gt;~/.steam/root/compatibilitytools.d/&lt;/code&gt;.&lt;/p&gt; 
&lt;p&gt;&lt;code&gt;make deploy&lt;/code&gt; - create a deployment build (&lt;code&gt;deploy/&lt;/code&gt;). This is what we use to deploy Proton to Steam users via Steamworks.&lt;/p&gt; 
&lt;p&gt;&lt;code&gt;make module=&amp;lt;module&amp;gt; module&lt;/code&gt; - build both 32- and 64-bit versions of the specified wine module. This allows rapid iteration on one module. This target is only useful after building Proton.&lt;/p&gt; 
&lt;p&gt;&lt;code&gt;make dxvk&lt;/code&gt; / &lt;code&gt;make vkd3d-proton&lt;/code&gt; - rebuild DXVK / vkd3d-proton.&lt;/p&gt; 
&lt;h3&gt;Figuring Out What Failed To Build&lt;/h3&gt; 
&lt;p&gt;Proton build system invokes builds of many subprojects in parallel. If one subprojects fails there can be thousands of lines printed by other sub-builds before the top level exits. This can make the real reason of the build failing hard to find.&lt;/p&gt; 
&lt;p&gt;Appending &lt;code&gt;2&amp;gt;&amp;amp;1 | tee build.log&lt;/code&gt; will log the full build output to a &lt;code&gt;build.log&lt;/code&gt; file. Searching that file from the bottom up for occurrences of &lt;code&gt;Error&lt;/code&gt; should point to the right area. E.g.:&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;make 2&amp;gt;&amp;amp;1 | tee build.log
grep -n &#39;] Error [0-9]&#39; build.log
&lt;/code&gt;&lt;/pre&gt; 
&lt;pre&gt;&lt;code&gt;11220:make: *** [../Makefile.in:465: /builds/proton/proton/build-dir/.kaldi-i386-configure] Error 1
12427:make: *** [../Makefile.in:1323: deploy] Error 2
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Debug Builds&lt;/h3&gt; 
&lt;p&gt;To prevent symbol stripping add &lt;code&gt;UNSTRIPPED_BUILD=1&lt;/code&gt; to the &lt;code&gt;make&lt;/code&gt; invocation. This should be used only with a clean build directory.&lt;/p&gt; 
&lt;p&gt;E.g.:&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;mkdir ../debug-proton-build &amp;amp;&amp;amp; cd ../debug-proton-build
../proton/configure.sh --enable-ccache --build-name=debug_build
make UNSTRIPPED_BUILD=1 install
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;ARM64 Builds&lt;/h3&gt; 
&lt;p&gt;You need an ARM64 build machine and pass &lt;code&gt;--target-arch=arm64&lt;/code&gt; to &lt;code&gt;configure.sh&lt;/code&gt;.&lt;/p&gt; 
&lt;p&gt;It&#39;s not possible to use the resulting builds in x86 Steam running via FEX.&lt;/p&gt; 
&lt;h2&gt;Install Proton locally&lt;/h2&gt; 
&lt;p&gt;Steam ships with several versions of Proton, which games will use by default or that you can select in Steam Settings&#39; Steam Play page. Steam also supports running games with local builds of Proton, which you can install on your machine.&lt;/p&gt; 
&lt;p&gt;To install a local build of Proton into Steam, make a new directory in &lt;code&gt;~/.steam/root/compatibilitytools.d/&lt;/code&gt; with a tool name of your choosing and place the directory containing your redistributable build under that path.&lt;/p&gt; 
&lt;p&gt;The &lt;code&gt;make install&lt;/code&gt; target will perform this task for you, installing the Proton build into the Steam folder for the current user. You will have to restart the Steam client for it to pick up on a new tool.&lt;/p&gt; 
&lt;p&gt;A correct local tool installation should look similar to this:&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;compatibilitytools.d/my_proton/
├── compatibilitytool.vdf
├── filelock.py
├── LICENSE
├── proton
├── proton_dist.tar
├── toolmanifest.vdf
├── user_settings.sample.py
└── version
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;To enable your local build in Steam, go to the Steam Play section of the Settings window. If the build was correctly installed, you should see &quot;proton-localbuild&quot; in the drop-down list of compatibility tools.&lt;/p&gt; 
&lt;p&gt;Each component of this software is used under the terms of their licenses. See the &lt;code&gt;LICENSE&lt;/code&gt; files here, as well as the &lt;code&gt;LICENSE&lt;/code&gt;, &lt;code&gt;COPYING&lt;/code&gt;, etc files in each submodule and directory for details. If you distribute a built version of Proton to other users, you must adhere to the terms of these licenses.&lt;/p&gt; 
&lt;h2&gt;Debugging&lt;/h2&gt; 
&lt;p&gt;Proton builds have their symbols stripped by default. You can switch to &quot;debug&quot; beta branch in Steam (search for Proton in your library, Properties... -&amp;gt; BETAS -&amp;gt; select &quot;debug&quot;) or build without stripping (see &lt;a href=&quot;https://raw.githubusercontent.com/ValveSoftware/Proton/proton_11.0/#debug-builds&quot;&gt;Debug Builds section&lt;/a&gt;).&lt;/p&gt; 
&lt;p&gt;The symbols are provided through the accompanying &lt;code&gt;.debug&lt;/code&gt; files which may need to be explicitly loaded by the debugging tools. For GDB there&#39;s a helper script &lt;code&gt;wine/tools/gdbinit.py&lt;/code&gt; (source it) that provides &lt;code&gt;load-symbol-files&lt;/code&gt; (or &lt;code&gt;lsf&lt;/code&gt; for short) command which loads the symbols for all the mapped files.&lt;/p&gt; 
&lt;p&gt;For tips on debugging see &lt;a href=&quot;https://raw.githubusercontent.com/ValveSoftware/Proton/proton_11.0/docs/DEBUGGING-LINUX.md&quot;&gt;docs/DEBUGGING-LINUX.md&lt;/a&gt; and &lt;a href=&quot;https://raw.githubusercontent.com/ValveSoftware/Proton/proton_11.0/docs/DEBUGGING-WINDOWS.md&quot;&gt;docs/DEBUGGING-WINDOWS.md&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;&lt;code&gt;compile_commands.json&lt;/code&gt;&lt;/h2&gt; 
&lt;p&gt;For use with &lt;a href=&quot;https://clangd.llvm.org/&quot;&gt;clangd&lt;/a&gt; LSP server and similar tooling.&lt;/p&gt; 
&lt;p&gt;Projects built using cmake or meson (e.g. vkd3d-proton) automatically come with &lt;code&gt;compile_commands.json&lt;/code&gt;. Wine also generates the file on its own via &lt;code&gt;makedep&lt;/code&gt;.&lt;/p&gt; 
&lt;p&gt;Proton&#39;s build system collects all the &lt;code&gt;compile_commands.json&lt;/code&gt; files in a build subdirectory named &lt;code&gt;compile_commands/&lt;/code&gt;.&lt;/p&gt; 
&lt;p&gt;The paths are translated to point to the real source (i.e. not the rsynced copy). It still may depend on build directory for things like auto-generated &lt;code&gt;config.h&lt;/code&gt; though and for wine it may be beneficial to run &lt;code&gt;tools/make_requests&lt;/code&gt; in you source directories as those changes are not committed.&lt;/p&gt; 
&lt;p&gt;You can then configure your editor to use that file for clangd in a few ways:&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;directly - some editors/plugins allow you to specify the path to &lt;code&gt;compile_commands.json&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;via &lt;code&gt;.clangd&lt;/code&gt; file, e.g.&lt;/li&gt; 
&lt;/ol&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;cd src/proton/wine/
cat &amp;gt; .clangd &amp;lt;&amp;lt;EOF
CompileFlags:
  CompilationDatabase: ../build/current-dev/compile_commands/wine-x86_64/
EOF
&lt;/code&gt;&lt;/pre&gt; 
&lt;ol start=&quot;3&quot;&gt; 
 &lt;li&gt;by symlinking:&lt;/li&gt; 
&lt;/ol&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;ln -s ../build/current-dev/compile_commands/wine-x86_64/compile_commands.json .
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Runtime Config Options&lt;/h2&gt; 
&lt;p&gt;Proton can be tuned at runtime to help certain games run. The Steam client sets some options for known games using the &lt;code&gt;STEAM_COMPAT_CONFIG&lt;/code&gt; variable. You can override these options using the environment variables described below.&lt;/p&gt; 
&lt;p&gt;The best way to set these environment overrides for all games is by renaming &lt;code&gt;user_settings.sample.py&lt;/code&gt; to &lt;code&gt;user_settings.py&lt;/code&gt; and modifying it appropriately. This file is located in the Proton installation directory in your Steam library (often &lt;code&gt;~/.steam/steam/steamapps/common/Proton #.#&lt;/code&gt;).&lt;/p&gt; 
&lt;p&gt;If you want to change the runtime configuration for a specific game, you can use the &lt;code&gt;Set Launch Options&lt;/code&gt; setting in the game&#39;s &lt;code&gt;Properties&lt;/code&gt; dialog in the Steam client. Set the variable, followed by &lt;code&gt;%command%&lt;/code&gt;. For example, input &quot;&lt;code&gt;PROTON_USE_WINED3D=1 %command%&lt;/code&gt;&quot; to use the OpenGL-based wined3d renderer instead of the Vulkan-based DXVK renderer.&lt;/p&gt; 
&lt;p&gt;To enable an option, set the variable to a non-&lt;code&gt;0&lt;/code&gt; value. To disable an option, set the variable to &lt;code&gt;0&lt;/code&gt;. To use Steam&#39;s default configuration, do not specify the variable at all.&lt;/p&gt; 
&lt;p&gt;All of the below are runtime options. They do not effect permanent changes to the Wine prefix. Removing the option will revert to the previous behavior.&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Compat config string&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Environment Variable&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Description&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;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;PROTON_LOG&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Convenience method for dumping a useful debug log to &lt;code&gt;$PROTON_LOG_DIR/steam-$APPID.log&lt;/code&gt;. Set to &lt;code&gt;1&lt;/code&gt; to enable default logging, or set to a string to be appended to the default &lt;code&gt;WINEDEBUG&lt;/code&gt; channels.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;PROTON_LOG_DIR&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Output log files into the directory specified. Defaults to your home directory.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;PROTON_WAIT_ATTACH&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Wait for a debugger to attach to steam.exe before launching the game process. To attach to the game process at startup, debuggers should be set to follow child processes.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;PROTON_CRASH_REPORT_DIR&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Write crash logs into this directory. Does not clean up old logs, so may eat all your disk space eventually.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;wined3d&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;PROTON_USE_WINED3D&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Use OpenGL-based wined3d instead of Vulkan-based DXVK for d3d11, d3d10, and d3d9.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;nod3d11&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;PROTON_NO_D3D11&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Disable &lt;code&gt;d3d11.dll&lt;/code&gt;, for d3d11 games which can fall back to and run better with d3d9.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;nod3d10&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;PROTON_NO_D3D10&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Disable &lt;code&gt;d3d10.dll&lt;/code&gt; and &lt;code&gt;dxgi.dll&lt;/code&gt;, for d3d10 games which can fall back to and run better with d3d9.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;dxvkd3d8&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;PROTON_DXVK_D3D8&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Use DXVK&#39;s &lt;code&gt;d3d8.dll&lt;/code&gt;.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;nofsync&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;PROTON_NO_FSYNC&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Do not use futex-based in-process synchronization primitives. (Automatically disabled on systems with no &lt;code&gt;FUTEX_WAIT_MULTIPLE&lt;/code&gt; support.)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;PROTON_NO_NTSYNC&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Do not use ntsync.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;HOST_LC_ALL&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Set value to a locale to override all other system locale settings for a game. This variable should be used instead of &lt;code&gt;LC_ALL&lt;/code&gt;.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;disablenvapi&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;PROTON_DISABLE_NVAPI&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Disable NVIDIA&#39;s NVAPI GPU support library.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;nativevulkanloader&lt;/code&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;Use the Vulkan loader shipped with the game instead of Proton&#39;s built-in Vulkan loader. This breaks VR support, but is required by a few games.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;forcelgadd&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;PROTON_FORCE_LARGE_ADDRESS_AWARE&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Force Wine to enable the LARGE_ADDRESS_AWARE flag for all executables. Enabled by default.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;heapdelayfree&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;PROTON_HEAP_DELAY_FREE&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Delay freeing some memory, to work around application use-after-free bugs.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;gamedrive&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;PROTON_SET_GAME_DRIVE&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Create an S: drive which points to the Steam Library which contains the game.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;noforcelgadd&lt;/code&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;Disable forcelgadd. If both this and &lt;code&gt;forcelgadd&lt;/code&gt; are set, enabled wins.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;oldglstr&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;PROTON_OLD_GL_STRING&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Set some driver overrides to limit the length of the GL extension string, for old games that crash on very long extension strings.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;vkd3dfl12&lt;/code&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;Force the Direct3D 12 feature level to 12, regardless of driver support.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;vkd3dbindlesstb&lt;/code&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;Put &lt;code&gt;force_bindless_texel_buffer&lt;/code&gt; into &lt;code&gt;VKD3D_CONFIG&lt;/code&gt;.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;nomfdxgiman&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;WINE_DO_NOT_CREATE_DXGI_DEVICE_MANAGER&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Enable hack to work around video issues in some games due to incomplete IMFDXGIDeviceManager support.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;noopwr&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;WINE_DISABLE_VULKAN_OPWR&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Enable hack to disable Vulkan other process window rendering which sometimes causes issues on Wayland due to blit being one frame behind.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;hidenvgpu&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;PROTON_HIDE_NVIDIA_GPU&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Force Nvidia GPUs to always be reported as AMD GPUs. Some games require this if they depend on Windows-only Nvidia driver functionality. See also DXVK&#39;s nvapiHack config, which only affects reporting from Direct3D.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;WINE_FULLSCREEN_INTEGER_SCALING&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Enable integer scaling mode, to give sharp pixels when upscaling.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;WINE_USE_KWIN_HACKS&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Enable KDE-specific windowing hacks that may improve experience with KDE older than 6.4 on Wayland and KDE older than 6.6 on X11.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;cmdlineappend:&lt;/code&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;Append the string after the colon as an argument to the game command. May be specified more than once. Escape commas and backslashes with a backslash.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;xalia&lt;/code&gt; or &lt;code&gt;noxalia&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;PROTON_USE_XALIA&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Enable Xalia, a program that can add a gamepad UI for some keyboard/mouse interfaces, or set to 0 to disable. The default is to enable it dynamically based on window contents.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;fnad3d11&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;FNA3D_FORCE_DRIVER=D3D11&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Force FNA to use D3D11 for rendering.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;seccomp&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;PROTON_USE_SECCOMP&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;strong&gt;Note: Obsoleted in Proton 5.13.&lt;/strong&gt; In older versions, enable seccomp-bpf filter to emulate native syscalls, required for some DRM protections to work.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;d9vk&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;PROTON_USE_D9VK&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;strong&gt;Note: Obsoleted in Proton 5.0.&lt;/strong&gt; In older versions, use Vulkan-based DXVK instead of OpenGL-based wined3d for d3d9.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;noesync&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;PROTON_NO_ESYNC&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;strong&gt;Note: Obsoleted in Proton 11.0.&lt;/strong&gt; In older versions, do not use eventfd-based in-process synchronization primitives.&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;!-- Target:  GitHub Flavor Markdown.  To test locally:  pandoc -f markdown_github -t html README.md  --&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/dd2d13c0fa65c7f6934f036c4b91fbcc28c4589b6af8132ace925909ba03a7d8/ValveSoftware/Proton" medium="image" />
      
    </item>
    
    <item>
      <title>hyprwm/Hyprland</title>
      <link>https://github.com/hyprwm/Hyprland</link>
      <description>&lt;p&gt;Hyprland is an independent, highly customizable, dynamic tiling Wayland compositor that doesn&#39;t sacrifice on its looks.&lt;/p&gt;&lt;hr&gt;&lt;div align=&quot;center&quot;&gt; 
 &lt;img src=&quot;https://raw.githubusercontent.com/hyprwm/Hyprland/main/assets/header.svg?sanitize=true&quot; width=&quot;750&quot; height=&quot;300&quot; alt=&quot;banner&quot; /&gt; 
 &lt;br /&gt; 
 &lt;p&gt;&lt;a href=&quot;https://github.com/hyprwm/Hyprland/actions/workflows/ci.yaml&quot;&gt;&lt;img src=&quot;https://github.com/hyprwm/Hyprland/actions/workflows/ci.yaml/badge.svg?sanitize=true&quot; alt=&quot;Badge Workflow&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://raw.githubusercontent.com/hyprwm/Hyprland/main/LICENSE&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/license/hyprwm/Hyprland&quot; alt=&quot;Badge License&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://img.shields.io/github/languages/top/hyprwm/Hyprland&quot; alt=&quot;Badge Language&quot; /&gt; &lt;a href=&quot;https://github.com/hyprwm/Hyprland/pulls&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/issues-pr/hyprwm/Hyprland&quot; alt=&quot;Badge Pull Requests&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/hyprwm/Hyprland/issues&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/issues/hyprwm/Hyprland&quot; alt=&quot;Badge Issues&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://img.shields.io/badge/Hi-mom!-ff69b4&quot; alt=&quot;Badge Hi Mom&quot; /&gt;&lt;br /&gt;&lt;/p&gt; 
 &lt;br /&gt; 
 &lt;p&gt;Hyprland is a 100% independent, dynamic tiling Wayland compositor that doesn&#39;t sacrifice on its looks.&lt;/p&gt; 
 &lt;p&gt;It provides the latest Wayland features, is highly customizable, has all the eyecandy, the most powerful plugins, easy IPC, much more QoL stuff than other compositors and more... &lt;br /&gt; &lt;br /&gt;&lt;/p&gt; 
 &lt;hr /&gt; 
 &lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://wiki.hypr.land/Getting-Started/Installation/&quot;&gt;&lt;kbd&gt; &lt;br /&gt; Install &lt;br /&gt; &lt;/kbd&gt;&lt;/a&gt;&lt;/strong&gt;  &lt;strong&gt;&lt;a href=&quot;https://wiki.hypr.land/Getting-Started/Master-Tutorial/&quot;&gt;&lt;kbd&gt; &lt;br /&gt; Quick Start &lt;br /&gt; &lt;/kbd&gt;&lt;/a&gt;&lt;/strong&gt;  &lt;strong&gt;&lt;a href=&quot;https://wiki.hypr.land/Configuring/&quot;&gt;&lt;kbd&gt; &lt;br /&gt; Configure &lt;br /&gt; &lt;/kbd&gt;&lt;/a&gt;&lt;/strong&gt;  &lt;strong&gt;&lt;a href=&quot;https://wiki.hypr.land/Contributing-and-Debugging/&quot;&gt;&lt;kbd&gt; &lt;br /&gt; Contribute &lt;br /&gt; &lt;/kbd&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt; 
 &lt;hr /&gt; 
 &lt;br /&gt; 
&lt;/div&gt; 
&lt;h1&gt;Features&lt;/h1&gt; 
&lt;ul&gt; 
 &lt;li&gt;All of the eyecandy: gradient borders, blur, animations, shadows and much more&lt;/li&gt; 
 &lt;li&gt;A lot of customization&lt;/li&gt; 
 &lt;li&gt;100% independent, no wlroots, no libweston, no kwin, no mutter.&lt;/li&gt; 
 &lt;li&gt;Custom bezier curves for the best animations&lt;/li&gt; 
 &lt;li&gt;Powerful plugin support&lt;/li&gt; 
 &lt;li&gt;Built-in plugin manager&lt;/li&gt; 
 &lt;li&gt;Tearing support for better gaming performance&lt;/li&gt; 
 &lt;li&gt;Easily expandable and readable codebase&lt;/li&gt; 
 &lt;li&gt;Fast and active development&lt;/li&gt; 
 &lt;li&gt;Not afraid to provide bleeding-edge features&lt;/li&gt; 
 &lt;li&gt;Config reloaded instantly upon saving&lt;/li&gt; 
 &lt;li&gt;Fully dynamic workspaces&lt;/li&gt; 
 &lt;li&gt;Two built-in layouts and more available as plugins&lt;/li&gt; 
 &lt;li&gt;Global keybinds passed to your apps of choice&lt;/li&gt; 
 &lt;li&gt;Tiling/pseudotiling/floating/fullscreen windows&lt;/li&gt; 
 &lt;li&gt;Special workspaces (scratchpads)&lt;/li&gt; 
 &lt;li&gt;Window groups (tabbed mode)&lt;/li&gt; 
 &lt;li&gt;Powerful window/monitor/layer rules&lt;/li&gt; 
 &lt;li&gt;Socket-based IPC&lt;/li&gt; 
 &lt;li&gt;Native IME and Input Panels Support&lt;/li&gt; 
 &lt;li&gt;and much more...&lt;/li&gt; 
&lt;/ul&gt; 
&lt;br /&gt; 
&lt;br /&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;h1&gt;Gallery&lt;/h1&gt; 
 &lt;br /&gt; 
 &lt;p&gt;&lt;img src=&quot;https://i.ibb.co/XxFY75Mk/greerggergerhtrytghjnyhjn.png&quot; alt=&quot;Preview A&quot; /&gt;&lt;/p&gt; 
 &lt;br /&gt; 
 &lt;p&gt;&lt;img src=&quot;https://i.ibb.co/C1yTb0r/falf.png&quot; alt=&quot;Preview B&quot; /&gt;&lt;/p&gt; 
 &lt;br /&gt; 
 &lt;p&gt;&lt;img src=&quot;https://i.ibb.co/2Yc4q835/hyprland-preview-b.png&quot; alt=&quot;Preview C&quot; /&gt;&lt;/p&gt; 
 &lt;br /&gt; 
 &lt;br /&gt; 
&lt;/div&gt; 
&lt;h1&gt;Special Thanks&lt;/h1&gt; 
&lt;br /&gt; 
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://gitlab.freedesktop.org/wlroots/wlroots&quot;&gt;wlroots&lt;/a&gt;&lt;/strong&gt; - &lt;em&gt;For powering Hyprland in the past&lt;/em&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://gitlab.freedesktop.org/wlroots/wlroots/-/blob/master/tinywl/tinywl.c&quot;&gt;tinywl&lt;/a&gt;&lt;/strong&gt; - &lt;em&gt;For showing how 2 do stuff&lt;/em&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/swaywm/sway&quot;&gt;Sway&lt;/a&gt;&lt;/strong&gt; - &lt;em&gt;For showing how 2 do stuff the overkill way&lt;/em&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/inclement/vivarium&quot;&gt;Vivarium&lt;/a&gt;&lt;/strong&gt; - &lt;em&gt;For showing how 2 do stuff the simple way&lt;/em&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://codeberg.org/dwl/dwl&quot;&gt;dwl&lt;/a&gt;&lt;/strong&gt; - &lt;em&gt;For showing how 2 do stuff the hacky way&lt;/em&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/WayfireWM/wayfire&quot;&gt;Wayfire&lt;/a&gt;&lt;/strong&gt; - &lt;em&gt;For showing how 2 do some graphics stuff&lt;/em&gt;&lt;/p&gt; 
&lt;!----&gt; 
&lt;!--{ Thanks }---------------------------------&gt; 
&lt;!--{ Images }---------------------------------&gt; 
&lt;!--{ Badges }---------------------------------&gt;</description>
      
      <media:content url="https://repository-images.githubusercontent.com/470730648/62af9cdd-2851-437f-9250-05b8ae4a5bb0" medium="image" />
      
    </item>
    
    <item>
      <title>bambulab/BambuStudio</title>
      <link>https://github.com/bambulab/BambuStudio</link>
      <description>&lt;p&gt;PC Software for BambuLab and other 3D printers&lt;/p&gt;&lt;hr&gt;&lt;p&gt;&lt;img src=&quot;https://user-images.githubusercontent.com/106916061/179006347-497d24c0-9bd6-45b7-8c49-d5cc8ecfe5d7.png&quot; alt=&quot;image&quot; /&gt;&lt;/p&gt; 
&lt;h1&gt;BambuStudio&lt;/h1&gt; 
&lt;p&gt;Bambu Studio is a cutting-edge, feature-rich slicing software.&lt;br /&gt; It contains project-based workflows, systematically optimized slicing algorithms, and an easy-to-use graphic interface, bringing users an incredibly smooth printing experience.&lt;/p&gt; 
&lt;p&gt;Prebuilt Windows, macOS 64-bit and Linux releases are available through the &lt;a href=&quot;https://github.com/bambulab/BambuStudio/releases/&quot;&gt;github releases page&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;Bambu Studio is based on &lt;a href=&quot;https://github.com/prusa3d/PrusaSlicer&quot;&gt;PrusaSlicer&lt;/a&gt; by Prusa Research, which is from &lt;a href=&quot;https://github.com/Slic3r/Slic3r&quot;&gt;Slic3r&lt;/a&gt; by Alessandro Ranellucci and the RepRap community.&lt;/p&gt; 
&lt;p&gt;See the &lt;a href=&quot;https://github.com/bambulab/BambuStudio/wiki&quot;&gt;wiki&lt;/a&gt; and the &lt;a href=&quot;https://github.com/bambulab/BambuStudio/tree/master/doc&quot;&gt;documentation directory&lt;/a&gt; for more information.&lt;/p&gt; 
&lt;h1&gt;What are Bambu Studio&#39;s main features?&lt;/h1&gt; 
&lt;p&gt;Key features are:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Basic slicing features &amp;amp; GCode viewer&lt;/li&gt; 
 &lt;li&gt;Multiple plates management&lt;/li&gt; 
 &lt;li&gt;Remote control &amp;amp; monitoring&lt;/li&gt; 
 &lt;li&gt;Auto-arrange objects&lt;/li&gt; 
 &lt;li&gt;Auto-orient objects&lt;/li&gt; 
 &lt;li&gt;Hybrid/Tree/Normal support types, Customized support&lt;/li&gt; 
 &lt;li&gt;multi-material printing and rich painting tools&lt;/li&gt; 
 &lt;li&gt;multi-platform (Win/Mac/Linux) support&lt;/li&gt; 
 &lt;li&gt;Global/Object/Part level slicing parameters&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Other major features are:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Advanced cooling logic controlling fan speed and dynamic print speed&lt;/li&gt; 
 &lt;li&gt;Auto brim according to mechanical analysis&lt;/li&gt; 
 &lt;li&gt;Support arc path(G2/G3)&lt;/li&gt; 
 &lt;li&gt;Support STEP format&lt;/li&gt; 
 &lt;li&gt;Assembly &amp;amp; explosion view&lt;/li&gt; 
 &lt;li&gt;Flushing transition-filament into infill/object during filament change&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h1&gt;How to compile&lt;/h1&gt; 
&lt;p&gt;Following platforms are currently supported to compile:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Windows 64-bit, &lt;a href=&quot;https://github.com/bambulab/BambuStudio/wiki/Windows-Compile-Guide&quot;&gt;Compile Guide&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Mac 64-bit, &lt;a href=&quot;https://github.com/bambulab/BambuStudio/wiki/Mac-Compile-Guide&quot;&gt;Compile Guide&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Linux, &lt;a href=&quot;https://github.com/bambulab/BambuStudio/wiki/Linux-Compile-Guide&quot;&gt;Compile Guide&lt;/a&gt; 
  &lt;ul&gt; 
   &lt;li&gt;currently we only provide linux appimages on &lt;a href=&quot;https://github.com/bambulab/BambuStudio/releases&quot;&gt;github releases&lt;/a&gt; for Ubuntu/Fedora, and a &lt;a href=&quot;https://flathub.org/apps/com.bambulab.BambuStudio&quot;&gt;flathub version&lt;/a&gt; can be used for all the linux platforms&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;h1&gt;Report issue&lt;/h1&gt; 
&lt;p&gt;You can add an issue to the &lt;a href=&quot;https://github.com/bambulab/BambuStudio/issues&quot;&gt;github tracker&lt;/a&gt; if &lt;strong&gt;it isn&#39;t already present.&lt;/strong&gt;&lt;/p&gt; 
&lt;h1&gt;License&lt;/h1&gt; 
&lt;p&gt;Bambu Studio is licensed under the GNU Affero General Public License, version 3. Bambu Studio is based on PrusaSlicer by PrusaResearch.&lt;/p&gt; 
&lt;p&gt;PrusaSlicer is licensed under the GNU Affero General Public License, version 3. PrusaSlicer is owned by Prusa Research. PrusaSlicer is originally based on Slic3r by Alessandro Ranellucci.&lt;/p&gt; 
&lt;p&gt;Slic3r is licensed under the GNU Affero General Public License, version 3. Slic3r was created by Alessandro Ranellucci with the help of many other contributors.&lt;/p&gt; 
&lt;p&gt;The GNU Affero General Public License, version 3 ensures that if you use any part of this software in any way (even behind a web server), your software must be released under the same license.&lt;/p&gt; 
&lt;p&gt;The bambu networking plugin is based on non-free libraries. It is optional to the Bambu Studio and provides extended networking functionalities for users. By default, after installing Bambu Studio without the networking plugin, you can initiate printing through the SD card after slicing is completed.&lt;/p&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/4c89846f02545682706274ec4b6f1d5970acbf92950d8ecebca8cad69d7bb68d/bambulab/BambuStudio" medium="image" />
      
    </item>
    
    <item>
      <title>notepad-plus-plus/notepad-plus-plus</title>
      <link>https://github.com/notepad-plus-plus/notepad-plus-plus</link>
      <description>&lt;p&gt;Notepad++ official repository&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;What is Notepad++ ?&lt;/h1&gt; 
&lt;p&gt;&lt;a href=&quot;https://raw.githubusercontent.com/notepad-plus-plus/releases/latest&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/release/notepad-plus-plus/notepad-plus-plus.svg?sanitize=true&quot; alt=&quot;GitHub release&quot; /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href=&quot;https://github.com/notepad-plus-plus/notepad-plus-plus/actions/workflows/CI_build.yml&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/actions/workflow/status/notepad-plus-plus/notepad-plus-plus/CI_build.yml&quot; alt=&quot;Build Status&quot; /&gt;&lt;/a&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href=&quot;https://community.notepad-plus-plus.org/&quot;&gt;&lt;img src=&quot;https://notepad-plus-plus.org/assets/images/NppCommunityBadge.svg?sanitize=true&quot; alt=&quot;Join the discussions at https://community.notepad-plus-plus.org/&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;Notepad++ is a free (free as in both &quot;free speech&quot; and &quot;free beer&quot;) source code editor and Notepad replacement that supports several programming languages and natural languages. Running in the MS Windows environment, its use is governed by &lt;a href=&quot;https://raw.githubusercontent.com/notepad-plus-plus/notepad-plus-plus/master/LICENSE&quot;&gt;GPL License&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;See the &lt;a href=&quot;https://notepad-plus-plus.org/&quot;&gt;Notepad++ official site&lt;/a&gt; for more information.&lt;/p&gt; 
&lt;h2&gt;Notepad++ GPG Release Key&lt;/h2&gt; 
&lt;p&gt;&lt;em&gt;Since the release of version 7.6.5 Notepad++ is signed using GPG with the following key:&lt;/em&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Signer:&lt;/strong&gt; Notepad++&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;E-mail:&lt;/strong&gt; &lt;a href=&quot;mailto:don.h@free.fr&quot;&gt;don.h@free.fr&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Key ID:&lt;/strong&gt; 0x8D84F46E&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Key fingerprint:&lt;/strong&gt; 14BC E436 2749 B2B5 1F8C 7122 6C42 9F1D 8D84 F46E&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Key type:&lt;/strong&gt; RSA 4096/4096&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Created:&lt;/strong&gt; 2019-03-11&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Expires:&lt;/strong&gt; 2027-03-13&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/notepad-plus-plus/notepad-plus-plus/raw/master/nppGpgPub.asc&quot;&gt;https://github.com/notepad-plus-plus/notepad-plus-plus/blob/master/nppGpgPub.asc&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;Supported OS&lt;/h2&gt; 
&lt;p&gt;All the Windows systems still supported by Microsoft are supported by Notepad++. However, not all Notepad++ users can or want to use the newest system. Here is the &lt;a href=&quot;https://raw.githubusercontent.com/notepad-plus-plus/notepad-plus-plus/master/SUPPORTED_SYSTEM.md&quot;&gt;Supported systems information&lt;/a&gt; you may need in case you are one of them.&lt;/p&gt; 
&lt;h2&gt;Build Notepad++&lt;/h2&gt; 
&lt;p&gt;Please follow &lt;a href=&quot;https://raw.githubusercontent.com/notepad-plus-plus/notepad-plus-plus/master/BUILD.md&quot;&gt;build guide&lt;/a&gt; to build Notepad++ from source.&lt;/p&gt; 
&lt;h2&gt;Contribution&lt;/h2&gt; 
&lt;p&gt;Contributions are welcome. Be mindful of our &lt;a href=&quot;https://raw.githubusercontent.com/notepad-plus-plus/notepad-plus-plus/master/CONTRIBUTING.md&quot;&gt;Contribution Rules&lt;/a&gt; to increase the likelihood of your contribution getting accepted.&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/notepad-plus-plus/notepad-plus-plus/graphs/contributors&quot;&gt;Notepad++ Contributors&lt;/a&gt;&lt;/p&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/6944a9b5ed655b63f13e4646f9bfe56598611a7c6c74e02b9f597752216793fd/notepad-plus-plus/notepad-plus-plus" medium="image" />
      
    </item>
    
    <item>
      <title>qbittorrent/qBittorrent</title>
      <link>https://github.com/qbittorrent/qBittorrent</link>
      <description>&lt;p&gt;qBittorrent BitTorrent client&lt;/p&gt;&lt;hr&gt;&lt;h2&gt;qBittorrent - A BitTorrent client in Qt&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/qbittorrent/qBittorrent/actions&quot;&gt;&lt;img src=&quot;https://github.com/qbittorrent/qBittorrent/actions/workflows/ci_ubuntu.yaml/badge.svg?sanitize=true&quot; alt=&quot;GitHub Actions CI Status&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://scan.coverity.com/projects/5494&quot;&gt;&lt;img src=&quot;https://scan.coverity.com/projects/5494/badge.svg?sanitize=true&quot; alt=&quot;Coverity Status&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h3&gt;Description:&lt;/h3&gt; 
&lt;p&gt;qBittorrent is a bittorrent client programmed in C++ / Qt that uses libtorrent (sometimes called libtorrent-rasterbar) by Arvid Norberg.&lt;/p&gt; 
&lt;p&gt;It aims to be a good alternative to all other bittorrent clients out there. qBittorrent is fast, stable and provides unicode support as well as many features.&lt;/p&gt; 
&lt;p&gt;The free &lt;a href=&quot;https://db-ip.com/db/download/ip-to-country-lite&quot;&gt;IP to Country Lite database&lt;/a&gt; by &lt;a href=&quot;https://db-ip.com/&quot;&gt;DB-IP&lt;/a&gt; is used for resolving the countries of peers. The database is licensed under the &lt;a href=&quot;https://creativecommons.org/licenses/by/4.0/&quot;&gt;Creative Commons Attribution 4.0 International License&lt;/a&gt;.&lt;/p&gt; 
&lt;h3&gt;Installation:&lt;/h3&gt; 
&lt;p&gt;Refer to the &lt;a href=&quot;https://raw.githubusercontent.com/qbittorrent/qBittorrent/master/INSTALL&quot;&gt;INSTALL&lt;/a&gt; file.&lt;/p&gt; 
&lt;h3&gt;Public key:&lt;/h3&gt; 
&lt;p&gt;Starting from v3.3.4 all source tarballs and binaries are signed.&lt;br /&gt; The key currently used is 4096R/&lt;a href=&quot;https://pgp.mit.edu/pks/lookup?op=get&amp;amp;search=0x6E4A2D025B7CC9A2&quot;&gt;5B7CC9A2&lt;/a&gt; with fingerprint &lt;code&gt;D8F3DA77AAC6741053599C136E4A2D025B7CC9A2&lt;/code&gt;.&lt;br /&gt; You can also download it from &lt;a href=&quot;https://github.com/qbittorrent/qBittorrent/raw/master/5B7CC9A2.asc&quot;&gt;here&lt;/a&gt;.&lt;br /&gt; &lt;strong&gt;PREVIOUSLY&lt;/strong&gt; the following key was used to sign the v3.3.4 source tarballs and v3.3.4 Windows installer &lt;strong&gt;only&lt;/strong&gt;: 4096R/&lt;a href=&quot;https://pgp.mit.edu/pks/lookup?op=get&amp;amp;search=0xA1ACCAE4520EC6F6&quot;&gt;520EC6F6&lt;/a&gt; with fingerprint &lt;code&gt;F4A5FD201B117B1C2AB590E2A1ACCAE4520EC6F6&lt;/code&gt;.&lt;br /&gt;&lt;/p&gt; 
&lt;h3&gt;Misc:&lt;/h3&gt; 
&lt;p&gt;For more information please visit: &lt;a href=&quot;https://www.qbittorrent.org&quot;&gt;https://www.qbittorrent.org&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;or our wiki here: &lt;a href=&quot;https://wiki.qbittorrent.org&quot;&gt;https://wiki.qbittorrent.org&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;Use the forum for troubleshooting before reporting bugs: &lt;a href=&quot;https://forum.qbittorrent.org&quot;&gt;https://forum.qbittorrent.org&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;Please report any bug (or feature request) to: &lt;a href=&quot;https://bugs.qbittorrent.org&quot;&gt;https://bugs.qbittorrent.org&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;Official IRC channel: &lt;a href=&quot;ircs://irc.libera.chat:6697/qbittorrent&quot;&gt;#qbittorrent on irc.libera.chat&lt;/a&gt;&lt;/p&gt; 
&lt;hr /&gt; 
&lt;p&gt;sledgehammer999 &amp;lt;sledgehammer999@qbittorrent.org&amp;gt;&lt;/p&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/fae057321f78add695a45736eb7bdcb666d799888676b70b3b97416e03acb339/qbittorrent/qBittorrent" medium="image" />
      
    </item>
    
    <item>
      <title>WerWolv/ImHex</title>
      <link>https://github.com/WerWolv/ImHex</link>
      <description>&lt;p&gt;🔍 A Hex Editor for Reverse Engineers, Programmers and people who value their retinas when working at 3 AM.&lt;/p&gt;&lt;hr&gt;&lt;a href=&quot;https://imhex.werwolv.net&quot;&gt; &lt;h1 align=&quot;center&quot;&gt; 
  &lt;picture&gt; 
   &lt;img height=&quot;300px&quot; style=&quot;margin: 0; padding: 0&quot; src=&quot;https://raw.githubusercontent.com/WerWolv/ImHex/master/resources/dist/common/logo/ImHexLogoSVGBG.svg?sanitize=true&quot; /&gt; 
  &lt;/picture&gt; &lt;/h1&gt; &lt;/a&gt; 
&lt;p align=&quot;center&quot;&gt; A Hex Editor for Reverse Engineers, Programmers and people who value their retinas when working at 3 AM. &lt;br /&gt; &lt;a href=&quot;https://itinerarium.github.io/phoneme-synthesis/?w=/&#39;ˈɪmhɛks/&quot;&gt;&lt;strong&gt;/ˈɪmhɛks/&lt;/strong&gt;&lt;/a&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a title=&quot;&#39;Build&#39; workflow Status&quot; href=&quot;https://github.com/WerWolv/ImHex/actions?query=workflow%3ABuild&quot;&gt;&lt;img alt=&quot;&#39;Build&#39; workflow Status&quot; src=&quot;https://img.shields.io/github/actions/workflow/status/WerWolv/ImHex/build.yml?longCache=true&amp;amp;style=for-the-badge&amp;amp;label=Build&amp;amp;logoColor=fff&amp;amp;logo=GitHub%20Actions&amp;amp;branch=master&quot; /&gt;&lt;/a&gt; &lt;a title=&quot;Discord Server&quot; href=&quot;https://discord.gg/X63jZ36xBY&quot;&gt;&lt;img alt=&quot;Discord Server&quot; src=&quot;https://img.shields.io/discord/789833418631675954?label=Discord&amp;amp;logo=Discord&amp;amp;logoColor=fff&amp;amp;style=for-the-badge&quot; /&gt;&lt;/a&gt; &lt;a title=&quot;Total Downloads&quot; href=&quot;https://github.com/WerWolv/ImHex/releases/latest&quot;&gt;&lt;img alt=&quot;Total Downloads&quot; src=&quot;https://img.shields.io/github/downloads/WerWolv/ImHex/total?longCache=true&amp;amp;style=for-the-badge&amp;amp;label=Downloads&amp;amp;logoColor=fff&amp;amp;logo=GitHub&quot; /&gt;&lt;/a&gt; &lt;a title=&quot;Code Quality&quot; href=&quot;https://www.codefactor.io/repository/github/werwolv/imhex&quot;&gt;&lt;img alt=&quot;Code Quality&quot; src=&quot;https://img.shields.io/codefactor/grade/github/WerWolv/ImHex?longCache=true&amp;amp;style=for-the-badge&amp;amp;label=Code%20Quality&amp;amp;logoColor=fff&amp;amp;logo=CodeFactor&amp;amp;branch=master&quot; /&gt;&lt;/a&gt; &lt;a title=&quot;Translation&quot; href=&quot;https://weblate.werwolv.net/projects/imhex/&quot;&gt;&lt;img alt=&quot;Translation&quot; src=&quot;https://img.shields.io/weblate/progress/imhex?logo=weblate&amp;amp;logoColor=%23FFFFFF&amp;amp;server=https%3A%2F%2Fweblate.werwolv.net&amp;amp;style=for-the-badge&quot; /&gt;&lt;/a&gt; &lt;a title=&quot;Plugins&quot; href=&quot;https://github.com/WerWolv/ImHex/raw/master/PLUGINS.md&quot;&gt;&lt;img alt=&quot;Plugins&quot; src=&quot;https://img.shields.io/badge/Plugins-Supported-brightgreen?logo=stackedit&amp;amp;logoColor=%23FFFFFF&amp;amp;style=for-the-badge&quot; /&gt;&lt;/a&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a title=&quot;Download the latest version of ImHex&quot; href=&quot;https://imhex.download&quot;&gt;&lt;img alt=&quot;Download the latest version of ImHex!&quot; src=&quot;https://raw.githubusercontent.com/WerWolv/ImHex/master/resources/dist/common/get_release_banner.png&quot; /&gt;&lt;/a&gt; &lt;a title=&quot;Download the latest nightly pre-release version of ImHex&quot; href=&quot;https://imhex.download/#nightly&quot;&gt;&lt;img alt=&quot;Download the latest nightly pre-release version of ImHex&quot; src=&quot;https://raw.githubusercontent.com/WerWolv/ImHex/master/resources/dist/common/get_nightly_banner.png&quot; /&gt;&lt;/a&gt; &lt;a title=&quot;Use the Web version of ImHex right in your browser!&quot; href=&quot;https://web.imhex.werwolv.net&quot;&gt;&lt;img alt=&quot;Use the Web version of ImHex right in your browser!&quot; src=&quot;https://raw.githubusercontent.com/WerWolv/ImHex/master/resources/dist/common/try_online_banner.png&quot; /&gt;&lt;/a&gt; &lt;a title=&quot;Read the documentation of ImHex!&quot; href=&quot;https://docs.werwolv.net&quot;&gt;&lt;img alt=&quot;Read the documentation of ImHex!&quot; src=&quot;https://raw.githubusercontent.com/WerWolv/ImHex/master/resources/dist/common/read_docs_banner.png&quot; /&gt;&lt;/a&gt; &lt;/p&gt; 
&lt;h2&gt;Supporting&lt;/h2&gt; 
&lt;p&gt;If you like my work, please consider supporting me on GitHub Sponsors, Ko-Fi or PayPal. Thanks a lot!&lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://github.com/sponsors/WerWolv&quot;&gt;&lt;img src=&quot;https://werwolv.net/assets/github_banner.png&quot; alt=&quot;GitHub donate button&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://ko-fi.com/WerWolv&quot;&gt;&lt;img src=&quot;https://werwolv.net/assets/kofi_banner.png&quot; alt=&quot;Ko-Fi donate button&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://werwolv.net/donate&quot;&gt;&lt;img src=&quot;https://werwolv.net/assets/paypal_banner.png&quot; alt=&quot;PayPal donate button&quot; /&gt;&lt;/a&gt; &lt;/p&gt; 
&lt;h3&gt;Notable Sponsors&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th style=&quot;text-align:center&quot;&gt;&lt;/th&gt; 
   &lt;th&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;a href=&quot;https://www.jetbrains.com&quot;&gt;&lt;img src=&quot;https://avatars.githubusercontent.com/u/878437?s=48&quot; alt=&quot;JetBrains logo&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;JetBrains, providing us with free All Products Pack licenses for development&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;&lt;a href=&quot;https://signpath.io/&quot;&gt;&lt;img src=&quot;https://avatars.githubusercontent.com/u/34448643?s=48&quot; alt=&quot;SignPath logo&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;SignPath, providing us with free Code Signing Certificates for our Windows builds&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;&lt;a href=&quot;https://aws.amazon.com&quot;&gt;&lt;img src=&quot;https://avatars.githubusercontent.com/u/2232217?s=48&quot; alt=&quot;AWS logo&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Amazon, providing us with free AWS Cloud Credits for our CI&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;Would you like to appear here as well? Contact us at &lt;a href=&quot;mailto:imhex@werwolv.net&quot;&gt;imhex@werwolv.net&lt;/a&gt;!&lt;/p&gt; 
&lt;h2&gt;Screenshots&lt;/h2&gt; 
&lt;p&gt;&lt;img src=&quot;https://github.com/user-attachments/assets/902a7c4c-410d-490f-999e-14c856fec027&quot; alt=&quot;Hex editor, patterns and data information&quot; /&gt; &lt;img src=&quot;https://github.com/user-attachments/assets/58eefa1f-31c9-4bb8-a1c1-8cdd8ddbd29f&quot; alt=&quot;Bookmarks, data information, find view and data processor&quot; /&gt;&lt;/p&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;More Screenshots&lt;/strong&gt;&lt;/summary&gt; 
 &lt;p&gt;&lt;img src=&quot;https://github.com/WerWolv/ImHex/assets/10835354/d0623081-3094-4840-a8a8-647b38724db8&quot; alt=&quot;Data Processor decrypting some data and displaying it as an image&quot; /&gt; &lt;img src=&quot;https://github.com/WerWolv/ImHex/assets/10835354/62cbcd18-1c3f-4dd6-a877-2bf2bf4bb2a5&quot; alt=&quot;STL Parser written in the Pattern Language visualizing a 3D model&quot; /&gt; &lt;img src=&quot;https://github.com/WerWolv/ImHex/assets/10835354/d4706c01-c258-45c9-80b8-fe7a10d5a1de&quot; alt=&quot;Data Information view displaying various stats about the file&quot; /&gt;&lt;/p&gt; 
&lt;/details&gt; 
&lt;h2&gt;Features&lt;/h2&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Featureful hex view&lt;/strong&gt;&lt;/summary&gt; 
 &lt;ul&gt; 
  &lt;li&gt;Byte patching&lt;/li&gt; 
  &lt;li&gt;Patch management&lt;/li&gt; 
  &lt;li&gt;Infinite Undo/Redo&lt;/li&gt; 
  &lt;li&gt;&quot;Copy bytes as...&quot; 
   &lt;ul&gt; 
    &lt;li&gt;Bytes&lt;/li&gt; 
    &lt;li&gt;Hex string&lt;/li&gt; 
    &lt;li&gt;C, C++, C#, Rust, Python, Java &amp;amp; JavaScript array&lt;/li&gt; 
    &lt;li&gt;ASCII-Art hex view&lt;/li&gt; 
    &lt;li&gt;HTML self-contained div&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt;Simple string and hex search&lt;/li&gt; 
  &lt;li&gt;Goto from start, end and current cursor position&lt;/li&gt; 
  &lt;li&gt;Colorful highlighting 
   &lt;ul&gt; 
    &lt;li&gt;Configurable foreground highlighting rules&lt;/li&gt; 
    &lt;li&gt;Background highlighting using patterns, find results and bookmarks&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt;Displaying data as a list of many different types 
   &lt;ul&gt; 
    &lt;li&gt;Hexadecimal integers (8, 16, 32, 64 bit)&lt;/li&gt; 
    &lt;li&gt;Signed and unsigned decimal integers (8, 16, 32, 64 bit)&lt;/li&gt; 
    &lt;li&gt;Floats (16, 32, 64 bit)&lt;/li&gt; 
    &lt;li&gt;RGBA8 Colors&lt;/li&gt; 
    &lt;li&gt;HexII&lt;/li&gt; 
    &lt;li&gt;Binary&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt;Decoding data as ASCII and custom encodings 
   &lt;ul&gt; 
    &lt;li&gt;Built-in support for UTF-8, UTF-16, ShiftJIS, most Windows encodings and many more&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt;Paged data view&lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Custom C++-like pattern language for parsing highlighting a file&#39;s content&lt;/strong&gt;&lt;/summary&gt; 
 &lt;ul&gt; 
  &lt;li&gt;Automatic loading based on MIME types and magic values&lt;/li&gt; 
  &lt;li&gt;Arrays, pointers, structs, unions, enums, bitfields, namespaces, little and big endian support, conditionals and much more!&lt;/li&gt; 
  &lt;li&gt;Useful error messages, syntax highlighting and error marking&lt;/li&gt; 
  &lt;li&gt;Support for visualizing many different types of data 
   &lt;ul&gt; 
    &lt;li&gt;Images&lt;/li&gt; 
    &lt;li&gt;Audio&lt;/li&gt; 
    &lt;li&gt;3D Models&lt;/li&gt; 
    &lt;li&gt;Coordinates&lt;/li&gt; 
    &lt;li&gt;Time stamps&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Theming support&lt;/strong&gt;&lt;/summary&gt; 
 &lt;ul&gt; 
  &lt;li&gt;Doesn&#39;t burn out your retinas when used in late-night sessions 
   &lt;ul&gt; 
    &lt;li&gt;Dark mode by default, but a light mode is available as well&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt;Customizable colors and styles for all UI elements through shareable theme files&lt;/li&gt; 
  &lt;li&gt;Support for custom fonts&lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Importing and Exporting data&lt;/strong&gt;&lt;/summary&gt; 
 &lt;ul&gt; 
  &lt;li&gt;Base64 files&lt;/li&gt; 
  &lt;li&gt;IPS and IPS32 patches&lt;/li&gt; 
  &lt;li&gt;Markdown reports&lt;/li&gt; 
  &lt;li&gt;Binary arrays for various programming languages&lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Data Inspector&lt;/strong&gt;&lt;/summary&gt; 
 &lt;ul&gt; 
  &lt;li&gt;Interpreting data as many different types with endianness, decimal, hexadecimal and octal support and bit inversion 
   &lt;ul&gt; 
    &lt;li&gt;Unsigned and signed integers (8, 16, 24, 32, 48, 64 bit)&lt;/li&gt; 
    &lt;li&gt;Floats (16, 32, 64 bit)&lt;/li&gt; 
    &lt;li&gt;Signed and Unsigned LEB128&lt;/li&gt; 
    &lt;li&gt;ASCII, Wide and UTF-8 characters and strings&lt;/li&gt; 
    &lt;li&gt;time32_t, time64_t, DOS date and time&lt;/li&gt; 
    &lt;li&gt;GUIDs&lt;/li&gt; 
    &lt;li&gt;RGBA8 and RGB65 Colors&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt;Copying and modifying bytes through the inspector&lt;/li&gt; 
  &lt;li&gt;Adding new data types through the pattern language&lt;/li&gt; 
  &lt;li&gt;Support for hiding rows that aren&#39;t used&lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Node-based data pre-processor&lt;/strong&gt;&lt;/summary&gt; 
 &lt;ul&gt; 
  &lt;li&gt;Modify, decrypt and decode data before it&#39;s being displayed in the hex editor&lt;/li&gt; 
  &lt;li&gt;Modify data without touching the underlying source&lt;/li&gt; 
  &lt;li&gt;Support for adding custom nodes&lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Loading data from many different data sources&lt;/strong&gt;&lt;/summary&gt; 
 &lt;ul&gt; 
  &lt;li&gt;Local Files 
   &lt;ul&gt; 
    &lt;li&gt;Support for huge files with fast and efficient loading&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt;Raw Disks 
   &lt;ul&gt; 
    &lt;li&gt;Loading data from raw disks and partitions&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt;GDB Server 
   &lt;ul&gt; 
    &lt;li&gt;Access the RAM of a running process or embedded devices through GDB&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt;Intel Hex and Motorola SREC data&lt;/li&gt; 
  &lt;li&gt;Base64 encoded data&lt;/li&gt; 
  &lt;li&gt;UDP Packets 
   &lt;ul&gt; 
    &lt;li&gt;Support for displaying raw data received over UDP&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt;Process Memory 
   &lt;ul&gt; 
    &lt;li&gt;Inspect the entire address space of a running process&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt;Remote Files over SSH with SFTP 
   &lt;ul&gt; 
    &lt;li&gt;Support for loading files from remote servers using SSH and SFTP&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Data searching&lt;/strong&gt;&lt;/summary&gt; 
 &lt;ul&gt; 
  &lt;li&gt;Support for searching the entire file or only a selection&lt;/li&gt; 
  &lt;li&gt;String extraction 
   &lt;ul&gt; 
    &lt;li&gt;Option to specify minimum length and character set (lower case, upper case, digits, symbols)&lt;/li&gt; 
    &lt;li&gt;Option to specify encoding (ASCII, UTF-8, UTF-16 big and little endian)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt;Sequence search 
   &lt;ul&gt; 
    &lt;li&gt;Search for a sequence of bytes or characters&lt;/li&gt; 
    &lt;li&gt;Option to ignore character case&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt;Regex search 
   &lt;ul&gt; 
    &lt;li&gt;Search for strings using regular expressions&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt;Binary Pattern 
   &lt;ul&gt; 
    &lt;li&gt;Search for sequences of bytes with optional wildcards&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt;Numeric Value search 
   &lt;ul&gt; 
    &lt;li&gt;Search for signed/unsigned integers and floats&lt;/li&gt; 
    &lt;li&gt;Search for ranges of values&lt;/li&gt; 
    &lt;li&gt;Option to specify size and endianness&lt;/li&gt; 
    &lt;li&gt;Option to ignore unaligned values&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Data hashing support&lt;/strong&gt;&lt;/summary&gt; 
 &lt;ul&gt; 
  &lt;li&gt;Many different algorithms available 
   &lt;ul&gt; 
    &lt;li&gt;CRC8, CRC16 and CRC32 with custom initial values and polynomials 
     &lt;ul&gt; 
      &lt;li&gt;Many default polynomials available&lt;/li&gt; 
     &lt;/ul&gt; &lt;/li&gt; 
    &lt;li&gt;MD5&lt;/li&gt; 
    &lt;li&gt;SHA-1, SHA-224, SHA-256, SHA-384, SHA-512&lt;/li&gt; 
    &lt;li&gt;Adler32&lt;/li&gt; 
    &lt;li&gt;AP&lt;/li&gt; 
    &lt;li&gt;BKDR&lt;/li&gt; 
    &lt;li&gt;Bernstein, Bernstein1&lt;/li&gt; 
    &lt;li&gt;DEK, DJB, ELF, FNV1, FNV1a, JS, PJW, RS, SDBM&lt;/li&gt; 
    &lt;li&gt;OneAtTime, Rotating, ShiftAndXor, SuperFast&lt;/li&gt; 
    &lt;li&gt;Murmur2_32, MurmurHash3_x86_32, MurmurHash3_x86_128, MurmurHash3_x64_128&lt;/li&gt; 
    &lt;li&gt;SipHash64, SipHash128&lt;/li&gt; 
    &lt;li&gt;XXHash32, XXHash64&lt;/li&gt; 
    &lt;li&gt;Tiger, Tiger2&lt;/li&gt; 
    &lt;li&gt;Blake2B, Blake2S&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt;Hashing of specific regions of the loaded data&lt;/li&gt; 
  &lt;li&gt;Hashing of arbitrary strings&lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Diffing support&lt;/strong&gt;&lt;/summary&gt; 
 &lt;ul&gt; 
  &lt;li&gt;Compare data of different data sources&lt;/li&gt; 
  &lt;li&gt;Difference highlighting&lt;/li&gt; 
  &lt;li&gt;Table view of differences&lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Integrated disassembler&lt;/strong&gt;&lt;/summary&gt; 
 &lt;ul&gt; 
  &lt;li&gt;Support for all architectures supported by Capstone 
   &lt;ul&gt; 
    &lt;li&gt;ARM32 (ARM, Thumb, Cortex-M, AArch32)&lt;/li&gt; 
    &lt;li&gt;ARM64&lt;/li&gt; 
    &lt;li&gt;MIPS (MIPS32, MIPS64, MIPS32R6, Micro)&lt;/li&gt; 
    &lt;li&gt;x86 (16-bit, 32-bit, 64-bit)&lt;/li&gt; 
    &lt;li&gt;PowerPC (32-bit, 64-bit)&lt;/li&gt; 
    &lt;li&gt;SPARC&lt;/li&gt; 
    &lt;li&gt;IBM SystemZ&lt;/li&gt; 
    &lt;li&gt;xCORE&lt;/li&gt; 
    &lt;li&gt;M68K&lt;/li&gt; 
    &lt;li&gt;TMS320C64X&lt;/li&gt; 
    &lt;li&gt;M680X&lt;/li&gt; 
    &lt;li&gt;Ethereum&lt;/li&gt; 
    &lt;li&gt;RISC-V&lt;/li&gt; 
    &lt;li&gt;WebAssembly&lt;/li&gt; 
    &lt;li&gt;MOS65XX&lt;/li&gt; 
    &lt;li&gt;Berkeley Packet Filter&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt;Support for writing custom disassemblers for your own architectures&lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Bookmarks&lt;/strong&gt;&lt;/summary&gt; 
 &lt;ul&gt; 
  &lt;li&gt;Support for bookmarks with custom names and colors&lt;/li&gt; 
  &lt;li&gt;Highlighting of bookmarked region in the hex editor&lt;/li&gt; 
  &lt;li&gt;Jump to bookmarks&lt;/li&gt; 
  &lt;li&gt;Open content of bookmark in a new tab&lt;/li&gt; 
  &lt;li&gt;Add comments to bookmarks&lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Featureful data analyzer and visualizer&lt;/strong&gt;&lt;/summary&gt; 
 &lt;ul&gt; 
  &lt;li&gt;File magic-based file parser and MIME type database&lt;/li&gt; 
  &lt;li&gt;Byte type distribution graph&lt;/li&gt; 
  &lt;li&gt;Entropy graph&lt;/li&gt; 
  &lt;li&gt;Highest and average entropy&lt;/li&gt; 
  &lt;li&gt;Encrypted / Compressed file detection&lt;/li&gt; 
  &lt;li&gt;Digram and Layered distribution graphs&lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;YARA Rule support&lt;/strong&gt;&lt;/summary&gt; 
 &lt;ul&gt; 
  &lt;li&gt;Scan a file for vulnerabilities with official yara rules&lt;/li&gt; 
  &lt;li&gt;Highlight matches in the hex editor&lt;/li&gt; 
  &lt;li&gt;Jump to matches&lt;/li&gt; 
  &lt;li&gt;Apply multiple rules at once&lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Helpful tools&lt;/strong&gt;&lt;/summary&gt; 
 &lt;ul&gt; 
  &lt;li&gt;Itanium, MSVC, Rust and D-Lang demangler based on LLVM&lt;/li&gt; 
  &lt;li&gt;ASCII table&lt;/li&gt; 
  &lt;li&gt;Regex replacer&lt;/li&gt; 
  &lt;li&gt;Mathematical expression evaluator (Calculator)&lt;/li&gt; 
  &lt;li&gt;Graphing calculator&lt;/li&gt; 
  &lt;li&gt;Hexadecimal Color picker with support for many different formats&lt;/li&gt; 
  &lt;li&gt;Base converter&lt;/li&gt; 
  &lt;li&gt;Byte swapper&lt;/li&gt; 
  &lt;li&gt;UNIX Permissions calculator&lt;/li&gt; 
  &lt;li&gt;Wikipedia term definition finder&lt;/li&gt; 
  &lt;li&gt;File utilities 
   &lt;ul&gt; 
    &lt;li&gt;File splitter&lt;/li&gt; 
    &lt;li&gt;File combiner&lt;/li&gt; 
    &lt;li&gt;File shredder&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt;IEEE754 Float visualizer&lt;/li&gt; 
  &lt;li&gt;Division by invariant multiplication calculator&lt;/li&gt; 
  &lt;li&gt;TCP Client/Server&lt;/li&gt; 
  &lt;li&gt;Euclidean algorithm calculator&lt;/li&gt; 
  &lt;li&gt;HTTP Requests&lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Built-in Content updater&lt;/strong&gt;&lt;/summary&gt; 
 &lt;ul&gt; 
  &lt;li&gt;Download all files found in the database directly from within ImHex 
   &lt;ul&gt; 
    &lt;li&gt;Pattern files for decoding various file formats&lt;/li&gt; 
    &lt;li&gt;Libraries for the pattern language&lt;/li&gt; 
    &lt;li&gt;Magic files for file type detection&lt;/li&gt; 
    &lt;li&gt;Custom data processor nodes&lt;/li&gt; 
    &lt;li&gt;Custom encodings&lt;/li&gt; 
    &lt;li&gt;Custom themes&lt;/li&gt; 
    &lt;li&gt;Yara rules&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Modern Interface&lt;/strong&gt;&lt;/summary&gt; 
 &lt;ul&gt; 
  &lt;li&gt;Support for multiple workspaces&lt;/li&gt; 
  &lt;li&gt;Support for custom layouts&lt;/li&gt; 
  &lt;li&gt;Detachable windows&lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Easy to get started&lt;/strong&gt;&lt;/summary&gt; 
 &lt;ul&gt; 
  &lt;li&gt;Support for many different languages&lt;/li&gt; 
  &lt;li&gt;Simplified mode for beginners&lt;/li&gt; 
  &lt;li&gt;Extensive documentation&lt;/li&gt; 
  &lt;li&gt;Many example files available on &lt;a href=&quot;https://github.com/WerWolv/ImHex-Patterns&quot;&gt;the Database&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;Achievements guiding you through the features of ImHex&lt;/li&gt; 
  &lt;li&gt;Interactive tutorials&lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;h2&gt;Pattern Language&lt;/h2&gt; 
&lt;p&gt;The Pattern Language is the completely custom programming language developed for ImHex. It allows you to define structures and data types in a C-like syntax and then use them to parse and highlight a file&#39;s content.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Source Code: &lt;a href=&quot;https://github.com/WerWolv/PatternLanguage/&quot;&gt;Link&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Documentation: &lt;a href=&quot;https://docs.werwolv.net/pattern-language/&quot;&gt;Link&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Database&lt;/h2&gt; 
&lt;p&gt;For format patterns, libraries, magic and constant files, check out the &lt;a href=&quot;https://github.com/WerWolv/ImHex-Patterns&quot;&gt;ImHex-Patterns&lt;/a&gt; repository.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Feel free to PR your own files there as well!&lt;/strong&gt;&lt;/p&gt; 
&lt;h2&gt;Requirements&lt;/h2&gt; 
&lt;p&gt;To use ImHex, the following minimal system requirements need to be met.&lt;/p&gt; 
&lt;div class=&quot;markdown-alert markdown-alert-important&quot;&gt;
 &lt;p class=&quot;markdown-alert-title&quot;&gt;
  &lt;svg class=&quot;octicon octicon-report 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 1.75C0 .784.784 0 1.75 0h12.5C15.216 0 16 .784 16 1.75v9.5A1.75 1.75 0 0 1 14.25 13H8.06l-2.573 2.573A1.458 1.458 0 0 1 3 14.543V13H1.75A1.75 1.75 0 0 1 0 11.25Zm1.75-.25a.25.25 0 0 0-.25.25v9.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h6.5a.25.25 0 0 0 .25-.25v-9.5a.25.25 0 0 0-.25-.25Zm7 2.25v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 9a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z&quot;&gt;&lt;/path&gt;
  &lt;/svg&gt;Important&lt;/p&gt;
 &lt;p&gt;ImHex requires a GPU with OpenGL 3.0 support in general. There are releases available (with the &lt;code&gt;-NoGPU&lt;/code&gt; suffix) that are software rendered and don&#39;t require a GPU, however these can be a lot slower than the GPU accelerated versions.&lt;/p&gt; 
 &lt;p&gt;If possible at all, make ImHex use the dedicated GPU on your system instead of the integrated one. ImHex will usually run fine with integrated GPUs as well but certain Intel HD GPU drivers on Windows are known to cause graphical artifacts.&lt;/p&gt; 
&lt;/div&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;OS&lt;/strong&gt;: 
  &lt;ul&gt; 
   &lt;li&gt;&lt;strong&gt;Windows&lt;/strong&gt;: Windows 7 or higher (Windows 10/11 recommended)&lt;/li&gt; 
   &lt;li&gt;&lt;strong&gt;macOS&lt;/strong&gt;: macOS 15 (Sequoia) or higher, 
    &lt;ul&gt; 
     &lt;li&gt;Lower versions should still work too, but you&#39;ll need to compile ImHex yourself. The release binaries will NOT work due to GitHub not having any macOS 15 or lower CI runners available.&lt;/li&gt; 
     &lt;li&gt;The macOS build is not signed and will require you to manually allow them in the Security &amp;amp; Privacy settings.&lt;/li&gt; 
    &lt;/ul&gt; &lt;/li&gt; 
   &lt;li&gt;&lt;strong&gt;Linux&lt;/strong&gt;: &quot;Modern&quot; Linux. The following distributions have official releases available. Other distros are supported through the AppImage, Flatpak and Snap releases. 
    &lt;ul&gt; 
     &lt;li&gt;Ubuntu and Debian&lt;/li&gt; 
     &lt;li&gt;Fedora&lt;/li&gt; 
     &lt;li&gt;RHEL/AlmaLinux&lt;/li&gt; 
     &lt;li&gt;Arch Linux&lt;/li&gt; 
     &lt;li&gt;Basically any other distro will work as well when compiling ImHex from sources.&lt;/li&gt; 
    &lt;/ul&gt; &lt;/li&gt; 
   &lt;li&gt;&lt;strong&gt;FreeBSD&lt;/strong&gt;: Tested on FreeBSD 14.3 
    &lt;ul&gt; 
     &lt;li&gt;Other versions will most likely work too but are untested&lt;/li&gt; 
    &lt;/ul&gt; &lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;CPU&lt;/strong&gt;: Officially supported are x86, AMD64 and ARM64, though any Little Endian CPU should work.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;GPU&lt;/strong&gt;: OpenGL 3.0 or higher 
  &lt;ul&gt; 
   &lt;li&gt;Integrated Intel HD iGPUs are supported, however certain drivers are known to cause various graphical artifacts, especially on Windows. Use at your own risk.&lt;/li&gt; 
   &lt;li&gt;In case you don&#39;t have a GPU available, there are software rendered releases available for Windows and macOS&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;RAM&lt;/strong&gt;: ~50MiB, more is required for more complex analysis&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Storage&lt;/strong&gt;: ~100MiB&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Installing&lt;/h2&gt; 
&lt;p&gt;Information on how to install ImHex can be found in the &lt;a href=&quot;https://raw.githubusercontent.com/WerWolv/ImHex/master/INSTALL.md&quot;&gt;Install&lt;/a&gt; guide&lt;/p&gt; 
&lt;h2&gt;Compiling&lt;/h2&gt; 
&lt;p&gt;To compile ImHex on any platform, GCC (or Clang) is required with a version that supports C++23 or higher. Windows and Linux releases are being built using latest available GCC. MacOS releases are being built using latest available LLVM Clang.&lt;/p&gt; 
&lt;p&gt;Important to note is, the MSVC and AppleClang compilers are both &lt;strong&gt;NOT&lt;/strong&gt; supported since they&#39;re both generally severely outdated and lack features GCC and LLVM Clang have.&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;Many dependencies are bundled into the repository using submodules so make sure to clone it using the &lt;code&gt;--recurse-submodules&lt;/code&gt; option. All dependencies that aren&#39;t bundled, can be installed using the dependency installer scripts found in the &lt;code&gt;/dist&lt;/code&gt; folder.&lt;/p&gt; 
&lt;/div&gt; 
&lt;p&gt;For more information, check out the &lt;a href=&quot;https://raw.githubusercontent.com/WerWolv/ImHex/master/dist/compiling&quot;&gt;Compiling&lt;/a&gt; guide.&lt;/p&gt; 
&lt;h2&gt;Contributing&lt;/h2&gt; 
&lt;p&gt;See &lt;a href=&quot;https://raw.githubusercontent.com/WerWolv/ImHex/master/CONTRIBUTING.md&quot;&gt;Contributing&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;Plugin development&lt;/h2&gt; 
&lt;p&gt;To develop plugins for ImHex, use the following template project to get started. You then have access to the entirety of libimhex as well as the ImHex API and the Content Registry to interact with ImHex or to add new content. To build a plugin, you will need to use our SDK&lt;/p&gt; 
&lt;h3&gt;Getting the SDK locally&lt;/h3&gt; 
&lt;p&gt;You can build the SDK by compiling ImHex like this:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;cmake -G Ninja -DIMHEX_BUNDLE_PLUGIN_SDK=ON -B build&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;cd build&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;DESTDIR=install ninja install&lt;/code&gt; The SDK will then be available at &lt;code&gt;install/usr/local/share/imhex/sdk&lt;/code&gt;. You will need to set the variable &lt;code&gt;IMHEX_SDK_PATH&lt;/code&gt; to that (absolute) path.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Getting the SDK in a Github Actions CI&lt;/h3&gt; 
&lt;p&gt;You can use &lt;a href=&quot;https://github.com/WerWolv/imhex-download-sdk&quot;&gt;this action&lt;/a&gt; to automatically download the SDK to your Github Runner&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/WerWolv/ImHex-Plugin-Template&quot;&gt;ImHex Plugin Template&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Credits&lt;/h2&gt; 
&lt;h3&gt;Contributors&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/paxcut&quot;&gt;AxCut&lt;/a&gt; for a gigantic amount of contributions to the Pattern Text Editor and tons of other parts of ImHex&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/iTrooz&quot;&gt;iTrooz&lt;/a&gt; for getting ImHex onto the Web as well as hundreds of contributions in every part of the project&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/jumanji144&quot;&gt;jumanji144&lt;/a&gt; for huge contributions to the Pattern Language and ImHex&#39;s infrastructure&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/marysaka&quot;&gt;Mary&lt;/a&gt; for her immense help porting ImHex to macOS and help during development&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/Roblabla&quot;&gt;Roblabla&lt;/a&gt; for adding MSI Installer support to ImHex&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/Mailaender&quot;&gt;Mailaender&lt;/a&gt; for getting ImHex onto Flathub&lt;/li&gt; 
 &lt;li&gt;Everybody else who has reported issues on Discord or GitHub that I had great conversations with 😃&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Dependencies&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Thanks a lot to ocornut for their amazing &lt;a href=&quot;https://github.com/ocornut/imgui&quot;&gt;Dear ImGui&lt;/a&gt; which is used for building the entire interface 
  &lt;ul&gt; 
   &lt;li&gt;Thanks to epezent for &lt;a href=&quot;https://github.com/epezent/implot&quot;&gt;ImPlot&lt;/a&gt; used to plot data in various places&lt;/li&gt; 
   &lt;li&gt;Thanks to Nelarius for &lt;a href=&quot;https://github.com/Nelarius/imnodes&quot;&gt;ImNodes&lt;/a&gt; used as base for the data processor&lt;/li&gt; 
   &lt;li&gt;Thanks to BalazsJako for &lt;a href=&quot;https://github.com/BalazsJako/ImGuiColorTextEdit&quot;&gt;ImGuiColorTextEdit&lt;/a&gt; used for the pattern language syntax highlighting&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Thanks to nlohmann for their &lt;a href=&quot;https://github.com/nlohmann/json&quot;&gt;json&lt;/a&gt; library used for configuration files&lt;/li&gt; 
 &lt;li&gt;Thanks to vitaut for their &lt;a href=&quot;https://github.com/fmtlib/fmt&quot;&gt;libfmt&lt;/a&gt; library which makes formatting and logging so much better&lt;/li&gt; 
 &lt;li&gt;Thanks to btzy for &lt;a href=&quot;https://github.com/btzy/nativefiledialog-extended&quot;&gt;nativefiledialog-extended&lt;/a&gt; and their great support, used for handling file dialogs on all platforms&lt;/li&gt; 
 &lt;li&gt;Thanks to danyspin97 for &lt;a href=&quot;https://sr.ht/~danyspin97/xdgpp&quot;&gt;xdgpp&lt;/a&gt; used to handle folder paths on Linux&lt;/li&gt; 
 &lt;li&gt;Thanks to aquynh for &lt;a href=&quot;https://github.com/aquynh/capstone&quot;&gt;capstone&lt;/a&gt; which is the base of the disassembly window&lt;/li&gt; 
 &lt;li&gt;Thanks to rxi for &lt;a href=&quot;https://github.com/rxi/microtar&quot;&gt;microtar&lt;/a&gt; used for extracting downloaded store assets&lt;/li&gt; 
 &lt;li&gt;Thanks to VirusTotal for &lt;a href=&quot;https://github.com/VirusTotal/yara&quot;&gt;Yara&lt;/a&gt; used by the Yara plugin&lt;/li&gt; 
 &lt;li&gt;Thanks to Martinsos for &lt;a href=&quot;https://github.com/Martinsos/edlib&quot;&gt;edlib&lt;/a&gt; used for sequence searching in the diffing view&lt;/li&gt; 
 &lt;li&gt;Thanks to ron4fun for &lt;a href=&quot;https://github.com/ron4fun/HashLibPlus&quot;&gt;HashLibPlus&lt;/a&gt; which implements every hashing algorithm under the sun&lt;/li&gt; 
 &lt;li&gt;Thanks to mackron for &lt;a href=&quot;https://github.com/mackron/miniaudio&quot;&gt;miniaudio&lt;/a&gt; used to play audio files&lt;/li&gt; 
 &lt;li&gt;Thanks to all other groups and organizations whose libraries are used in ImHex&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;License&lt;/h3&gt; 
&lt;p&gt;The biggest part of ImHex is under the GPLv2-only license. Notable exceptions to this are the following parts which are under the LGPLv2.1 license:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;/lib/libimhex&lt;/strong&gt;: The library that allows Plugins to interact with ImHex.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;/plugins/ui&lt;/strong&gt;: The UI plugin library that contains some common UI elements that can be used by other plugins&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;The reason for this is to allow for proprietary plugins to be developed for ImHex.&lt;/p&gt; 
&lt;h3&gt;Code Signing Policy&lt;/h3&gt; 
&lt;p&gt;Free code signing provided by &lt;a href=&quot;https://about.signpath.io/&quot;&gt;SignPath.io&lt;/a&gt;, certificate by &lt;a href=&quot;https://signpath.org/&quot;&gt;SignPath Foundation&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;This program will not transfer any information to other networked systems unless specifically requested by the user or the person installing or operating it.&lt;/p&gt; 
&lt;h4&gt;People with direct push access&lt;/h4&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/WerWolv&quot;&gt;WerWolv&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/iTrooz&quot;&gt;iTrooz&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/jumanji144&quot;&gt;jumanji144&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/paxcut&quot;&gt;AxCut&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt;</description>
      
      <media:content url="https://repository-images.githubusercontent.com/311683390/33776266-4fdb-47e4-a1fd-83408f6721a4" medium="image" />
      
    </item>
    
    <item>
      <title>jarczakpawel/BMCU-C-PJARCZAK</title>
      <link>https://github.com/jarczakpawel/BMCU-C-PJARCZAK</link>
      <description>&lt;p&gt;BMCU 370C (Hall) firmware for Bambu Lab A1 / A1 mini / P1S with buffer calibration - all known issues fixed, 100% AMS-compatible behavior.&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;BMCU Firmware – Calibration and Compatibility Notes&lt;/h1&gt; 
&lt;p&gt;This BMCU firmware has been tested and verified with the latest Bambu Lab A1 firmware.&lt;/p&gt; 
&lt;p&gt;IMPORTANT: The printer must be configured as AMS, not AMS Lite. Using AMS Lite will cause incompatibility issues.&lt;/p&gt; 
&lt;h1 align=&quot;center&quot;&gt;Support&lt;/h1&gt; 
&lt;p align=&quot;center&quot;&gt; Bambu Lab continues tightening compatibility around BMCU, and there is a growing risk that BMCU may eventually become unusable in that ecosystem. &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; To prepare for that, I want to build BMCU support for open-source Klipper-based printers. &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; I am currently raising funds to buy a test printer for this work. &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; The $500 goal does not need to be reached in full. If I manage to save the remaining amount myself, I will cover the rest out of my own pocket. &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://ko-fi.com/jarczakpawel/goal?g=0&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/jarczakpawel/BMCU-C-PJARCZAK/main/banner-klipper.png&quot; alt=&quot;Want BMCU on Klipper? Click the links below to support development.&quot; width=&quot;460&quot; /&gt; &lt;/a&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://ko-fi.com/jarczakpawel/goal?g=0&quot;&gt;&lt;strong&gt;Support on Ko-fi&lt;/strong&gt;&lt;/a&gt; · &lt;a href=&quot;https://revolut.me/paweqxdkx&quot;&gt;&lt;strong&gt;Support via Revolut&lt;/strong&gt;&lt;/a&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; Direct Revolut support avoids Ko-fi fees, so more of your contribution goes directly to the project. &lt;/p&gt; 
&lt;h1&gt;❗ IMPORTANT - FIRST START (V10.3+) ❗&lt;/h1&gt; 
&lt;p&gt;At the first startup after flashing, &lt;strong&gt;all channels must be empty&lt;/strong&gt;.&lt;/p&gt; 
&lt;p&gt;From &lt;strong&gt;V10.3&lt;/strong&gt;, the firmware calibrates empty-channel detection during first boot.&lt;/p&gt; 
&lt;p&gt;If you flashed it with filament inserted:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;remove all filament&lt;/li&gt; 
 &lt;li&gt;hold any one buffer for about &lt;strong&gt;5 seconds&lt;/strong&gt; to re-calibrate&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h1&gt;❗ Warning for 2nd generation printers&lt;/h1&gt; 
&lt;p&gt;A lot of people make a mistake because the drawings are misleading, and it is not always clear from the diagrams whether they show the plug or the socket. As a result, Signal A and Signal B often get connected the wrong way around.&lt;/p&gt; 
&lt;p&gt;If your BMCU is not detected by a 2nd generation printer, try swapping Signal A and Signal B - but make sure you know exactly what you are doing.&lt;/p&gt; 
&lt;h1&gt;HMS WARNING STATUS&lt;/h1&gt; 
&lt;p&gt;This firmware version &lt;strong&gt;triggers an HMS warning immediately after printer startup&lt;/strong&gt;.&lt;/p&gt; 
&lt;p&gt;Important clarification:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;This HMS warning &lt;strong&gt;does NOT block BMCU operation&lt;/strong&gt;&lt;/li&gt; 
 &lt;li&gt;It does &lt;strong&gt;NOT require restarting the printer&lt;/strong&gt;&lt;/li&gt; 
 &lt;li&gt;It does &lt;strong&gt;NOT affect printing&lt;/strong&gt;&lt;/li&gt; 
 &lt;li&gt;The printer works normally despite the warning&lt;/li&gt; 
 &lt;li&gt;The issue is &lt;strong&gt;purely visual / informational&lt;/strong&gt; (HMS icon only)&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;At the moment, the HMS warning is known and accepted behavior in this firmware version.&lt;/p&gt; 
&lt;p&gt;If the HMS warning in Bambu Studio annoys you: I made a Bambu Studio build that bypasses this specific AMS compatibility warning, so you do not see it anymore. Other HMS warnings will still be visible (if they happen), so HMS remains useful.&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/jarczakpawel/BambuStudio-BMCU&quot;&gt;https://github.com/jarczakpawel/BambuStudio-BMCU&lt;/a&gt;&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Supported printers&lt;/h2&gt; 
&lt;p&gt;Correct operation has been confirmed on both 1st generation and 2nd generation printers.&lt;/p&gt; 
&lt;h3&gt;1st generation printers&lt;/h3&gt; 
&lt;p&gt;Support is confirmed for 1st generation printers.&lt;/p&gt; 
&lt;h3&gt;2nd generation printers&lt;/h3&gt; 
&lt;p&gt;Correct operation has been confirmed on:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Bambu Lab P2S&lt;/li&gt; 
 &lt;li&gt;Bambu Lab H2D&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;At this point, it looks like it should work on all printers from both generations.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Download&lt;/h2&gt; 
&lt;p&gt;Please download ready-to-use firmware from the &lt;strong&gt;&quot;Releases&quot;&lt;/strong&gt; section (right side of the GitHub page). All firmware variants are generated there together with &lt;strong&gt;.txt guides&lt;/strong&gt; that explain which build you should choose.&lt;/p&gt; 
&lt;p&gt;Start by selecting the correct printer mode folder first (standard(A1) or high_force_load(P1S)), then choose AUTOLOAD / RGB / slots as usual.&lt;/p&gt; 
&lt;h2&gt;Flashing&lt;/h2&gt; 
&lt;p&gt;To flash any version of the BMCU (USB or TTL) on:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Windows&lt;/li&gt; 
 &lt;li&gt;Linux&lt;/li&gt; 
 &lt;li&gt;macOS&lt;/li&gt; 
 &lt;li&gt;Android&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;use &lt;strong&gt;BMCU Flasher&lt;/strong&gt;:&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/jarczakpawel/BMCU-Flasher&quot;&gt;https://github.com/jarczakpawel/BMCU-Flasher&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;Precompiled binaries are available in the &lt;strong&gt;Releases&lt;/strong&gt; section.&lt;/p&gt; 
&lt;p&gt;The flashing process is very simple and &lt;strong&gt;does not require wchisptool&lt;/strong&gt;.&lt;/p&gt; 
&lt;p&gt;You can flash firmware in two ways:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;Online flashing&lt;/strong&gt; directly from the built-in wizard (recommended)&lt;br /&gt; → the flasher downloads the correct firmware automatically, so you &lt;strong&gt;do not need to download any .bin files manually&lt;/strong&gt;.&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;Local flashing&lt;/strong&gt; using a firmware file you downloaded yourself.&lt;/p&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;The flasher also supports &lt;strong&gt;Android&lt;/strong&gt;, so you can even flash the BMCU directly from your &lt;strong&gt;phone&lt;/strong&gt; 🙂&lt;/p&gt; 
&lt;p&gt;IMPORTANT:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Do &lt;strong&gt;NOT&lt;/strong&gt; flash the BMCU while it is connected to the printer.&lt;/li&gt; 
 &lt;li&gt;Do &lt;strong&gt;NOT&lt;/strong&gt; connect or disconnect the BMCU while the printer is powered on (risk of damaging the BMCU and/or the printer mainboard).&lt;/li&gt; 
&lt;/ul&gt; 
&lt;hr /&gt; 
&lt;h2&gt;SOLO firmware&lt;/h2&gt; 
&lt;p&gt;Example file:&lt;/p&gt; 
&lt;p&gt;solo_0.095f.bin&lt;/p&gt; 
&lt;p&gt;This firmware is intended for single BMCU (SOLO) operation.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Recommended for single-BMCU setups&lt;/li&gt; 
 &lt;li&gt;Filament retraction length: 9.5 cm&lt;/li&gt; 
&lt;/ul&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Filament retraction explanation&lt;/h2&gt; 
&lt;p&gt;Filament retraction must be calculated from the end of the AMS splitter inside the printer (the plastic AMS part where four PTFE tubes enter).&lt;/p&gt; 
&lt;p&gt;Example:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Distance from BMCU to the end of the AMS splitter: approximately 9.0 cm&lt;/li&gt; 
 &lt;li&gt;SOLO firmware retracts the filament about 0.5 cm past the splitter&lt;/li&gt; 
 &lt;li&gt;Total retraction length: 9.5 cm&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;When calculating your own retraction length:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Always measure from the end of the AMS splitter&lt;/li&gt; 
 &lt;li&gt;Add the required distance plus approximately 9 cm, depending on your setup&lt;/li&gt; 
&lt;/ul&gt; 
&lt;hr /&gt; 
&lt;h2&gt;AMS_A / AMS_B / AMS_C / AMS_D firmware&lt;/h2&gt; 
&lt;p&gt;These firmware versions are intended for:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Multi-BMCU setups&lt;/li&gt; 
 &lt;li&gt;Longer filament retraction distances&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;If you want to use SOLO mode with a longer retraction, use AMS_A instead of SOLO.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Calibration (first start)&lt;/h2&gt; 
&lt;p&gt;Correct calibration is mandatory. Without proper calibration, BMCU will not work correctly.&lt;/p&gt; 
&lt;p&gt;The calibration process is shown in the following video:&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=Hn_DNzSmhuc&quot;&gt;https://www.youtube.com/watch?v=Hn_DNzSmhuc&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;Follow the calibration steps shown in the video carefully.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Re-calibration&lt;/h2&gt; 
&lt;p&gt;You can recalibrate the BMCU at any time.&lt;/p&gt; 
&lt;p&gt;Steps:&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;Remove all filaments from all channels&lt;/li&gt; 
 &lt;li&gt;Hold any one buffer in position for approximately 5 seconds&lt;/li&gt; 
&lt;/ol&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Safety and usage notes&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;Do not flash BMCU while it is connected to the printer&lt;/li&gt; 
 &lt;li&gt;Do not disconnect BMCU while the printer is powered on&lt;/li&gt; 
 &lt;li&gt;Do not update printer firmware while BMCU is connected&lt;/li&gt; 
 &lt;li&gt;Connect/disconnect the BMCU ONLY when the printer is completely powered off (unplugged). Doing this while powered can damage the BMCU and/or the printer mainboard.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;These recommendations are based on community reports. Not all failure scenarios have been tested.&lt;/p&gt; 
&lt;p&gt;Changing the printer mode from AMS Lite to AMS while BMCU was connected did not cause issues in testing, but this is not recommended.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Disclaimer&lt;/h2&gt; 
&lt;p&gt;You are using this firmware and performing any modifications at your own risk. Make sure you understand what you are doing. I am not responsible for any damage, failed prints, hardware issues, or data loss.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Before opening a bug report&lt;/h2&gt; 
&lt;p&gt;Please verify the basics first:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Make sure you flashed the correct firmware variant and followed the flashing tutorial correctly.&lt;/li&gt; 
 &lt;li&gt;Make sure you really have &lt;strong&gt;BMCU 370C with Hall sensors&lt;/strong&gt;. 
  &lt;ul&gt; 
   &lt;li&gt;The only reliable verification is to open the module and inspect the PCB.&lt;/li&gt; 
   &lt;li&gt;Some sellers mix modules and try to get rid of older &lt;strong&gt;370x&lt;/strong&gt; boards - sometimes 1-2 modules in the set can be 370x.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;If you have printer-side issues: 
  &lt;ul&gt; 
   &lt;li&gt;confirm you are on the latest printer firmware&lt;/li&gt; 
   &lt;li&gt;do a factory reset (this often fixes weird AMS-related behavior)&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;If filament detection behaves strangely: 
  &lt;ul&gt; 
   &lt;li&gt;boot the printer once without BMCU connected&lt;/li&gt; 
   &lt;li&gt;then connect BMCU and test again&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Do a few real tests before creating a thread. Printers can have unrelated issues (rare, but happens) - some users cannot even update printer firmware automatically and must do it via SD card.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Bug reports&lt;/h2&gt; 
&lt;p&gt;If you encounter a real bug, you may report it. This firmware has undergone solid testing, and no issues are expected.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h1&gt;Changelog&lt;/h1&gt; 
&lt;h2&gt;V10.5&lt;/h2&gt; 
&lt;h3&gt;User-visible changes&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Added &lt;strong&gt;automatic filament unload when the buffer is lifted manually&lt;/strong&gt;.&lt;/li&gt; 
 &lt;li&gt;The serial is generated from the MCU hardware UID, so devices no longer share the same SN.&lt;/li&gt; 
 &lt;li&gt;Calibration now performs a &lt;strong&gt;full NVM cleanup&lt;/strong&gt;.&lt;/li&gt; 
 &lt;li&gt;Fixed the rare issue where the &lt;strong&gt;system LED could blink incorrectly&lt;/strong&gt; on some BMCU units.&lt;/li&gt; 
 &lt;li&gt;Fixed the &lt;strong&gt;external fan issue on Bambu Lab P2S&lt;/strong&gt;.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;V10.4&lt;/h2&gt; 
&lt;h3&gt;User-visible changes&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Added support for &lt;strong&gt;Bambu Lab P2S&lt;/strong&gt;. 
  &lt;ul&gt; 
   &lt;li&gt;Verified to work correctly in real tests.&lt;/li&gt; 
   &lt;li&gt;The &lt;strong&gt;H2 series&lt;/strong&gt; will most likely also work as well, because &lt;strong&gt;1st generation AMS support&lt;/strong&gt; is confirmed there.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Fixes&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;&quot;filament in use&quot;&lt;/strong&gt; flag is now cleared correctly when filament runs out during printing.&lt;/li&gt; 
 &lt;li&gt;Added support for &lt;strong&gt;retraction when the buffer is pulled up manually&lt;/strong&gt;, even when there is &lt;strong&gt;no filament inside&lt;/strong&gt;.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;V10.3&lt;/h2&gt; 
&lt;h3&gt;User-visible changes&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Added new firmware mode: &lt;strong&gt;soft_load(A1)&lt;/strong&gt;. 
  &lt;ul&gt; 
   &lt;li&gt;Intended mainly for &lt;strong&gt;A1 / A1 Mini&lt;/strong&gt; users.&lt;/li&gt; 
   &lt;li&gt;Uses lower filament loading force than &lt;strong&gt;standard(A1)&lt;/strong&gt;.&lt;/li&gt; 
   &lt;li&gt;Useful for some BMCU units with weaker lever springs, where stronger loading can cause clicking / grinding during filament load.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Improved empty-channel detection calibration. 
  &lt;ul&gt; 
   &lt;li&gt;The firmware now calibrates and stores the &quot;no filament&quot; detection point separately for each channel.&lt;/li&gt; 
   &lt;li&gt;This improves reliability on hardware variants where idle detection voltage differs between channels/modules.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Improved calibration behavior: 
  &lt;ul&gt; 
   &lt;li&gt;calibration now also detects and saves &lt;strong&gt;Hall polarity per channel&lt;/strong&gt;&lt;/li&gt; 
   &lt;li&gt;magnet polarity is automatically detected during calibration and stored, so it no longer matters which way the magnet is inserted in the buffer&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Stability and behavior improvements&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Fixed PWM timer preload configuration on all motor channels. 
  &lt;ul&gt; 
   &lt;li&gt;PWM updates are now buffered correctly before timer update events.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Improved AS5600 update timing. 
  &lt;ul&gt; 
   &lt;li&gt;Sensor polling is now rate-limited to about &lt;strong&gt;1 ms&lt;/strong&gt;&lt;/li&gt; 
   &lt;li&gt;more stable speed calculation&lt;/li&gt; 
   &lt;li&gt;lower unnecessary CPU load&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Improved internal timing paths by reusing shared tick snapshots in the main motion loop. 
  &lt;ul&gt; 
   &lt;li&gt;less timing jitter&lt;/li&gt; 
   &lt;li&gt;more consistent runtime behavior&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Improved high-load / jam timing logic during on_use. 
  &lt;ul&gt; 
   &lt;li&gt;high PWM accumulation now uses &lt;strong&gt;microsecond precision&lt;/strong&gt; instead of millisecond buckets&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Improved motion loop time-step handling. 
  &lt;ul&gt; 
   &lt;li&gt;uses wrap-safe tick delta&lt;/li&gt; 
   &lt;li&gt;clamps oversized time steps&lt;/li&gt; 
   &lt;li&gt;avoids running motor control with invalid zero-step timing&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Notes&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;soft_load(A1)&lt;/code&gt; is not meant as the default for everyone.&lt;/li&gt; 
 &lt;li&gt;If filament gets rejected because push force is too weak, switch back to &lt;code&gt;standard(A1)&lt;/code&gt; and use a stronger lever spring.&lt;/li&gt; 
 &lt;li&gt;On some A1 / A1 Mini units, &lt;code&gt;soft_load(A1)&lt;/code&gt; works very well and can be used permanently.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;V10.2&lt;/h2&gt; 
&lt;h3&gt;User-visible changes&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Fixed a problem where &lt;strong&gt;filament run-out could incorrectly trigger a jam condition&lt;/strong&gt;.&lt;br /&gt; When filament ended, the motor could run continuously and eventually enter jam protection, which blocked the &lt;strong&gt;automatic filament refill&lt;/strong&gt;.&lt;/li&gt; 
 &lt;li&gt;Reworked jam protection logic: 
  &lt;ul&gt; 
   &lt;li&gt;real filament jams are now detected separately from temporary motor stops&lt;/li&gt; 
   &lt;li&gt;high motor load alone no longer falsely triggers a jam&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Improved flash persistence system (less unnecessary flash rewriting).&lt;/li&gt; 
 &lt;li&gt;Improved ADC/DMA processing: 
  &lt;ul&gt; 
   &lt;li&gt;faster value updates&lt;/li&gt; 
   &lt;li&gt;lower CPU overhead&lt;/li&gt; 
   &lt;li&gt;smoother runtime behavior&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Various timing and stability improvements.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Technical changes&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Filament metadata flash storage redesigned.&lt;/strong&gt; 
  &lt;ul&gt; 
   &lt;li&gt;append-only journal instead of rewriting a full flash page&lt;/li&gt; 
   &lt;li&gt;each record: &lt;strong&gt;40 bytes (10 words)&lt;/strong&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;strong&gt;CRC32 validation&lt;/strong&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;strong&gt;6 records per flash page&lt;/strong&gt;&lt;/li&gt; 
   &lt;li&gt;page erase only when the page becomes full&lt;br /&gt; This significantly reduces flash wear and makes writes power-loss safe.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Loaded-channel persistence reworked into a lightweight &lt;strong&gt;slot log&lt;/strong&gt; to reduce erase cycles.&lt;/li&gt; 
 &lt;li&gt;Added &lt;strong&gt;skip-if-unchanged&lt;/strong&gt; logic to avoid unnecessary flash writes.&lt;/li&gt; 
 &lt;li&gt;Simplified and optimized &lt;strong&gt;ADC DMA update/publish path&lt;/strong&gt;.&lt;/li&gt; 
 &lt;li&gt;CRC tables moved to &lt;strong&gt;static compile-time tables&lt;/strong&gt; (no runtime generation).&lt;/li&gt; 
 &lt;li&gt;Cleanup of timing paths using &lt;strong&gt;wrap-safe 32-bit timers&lt;/strong&gt;.&lt;/li&gt; 
 &lt;li&gt;Several other smaller fixes and internal optimizations.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;V10&lt;/h2&gt; 
&lt;h3&gt;User-visible changes&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Improved spool jam handling: jam is detected immediately, the print is paused, the printer waits for you to fix the snag/tangle, then you can resume normally without ruining the print.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Flash / persistence (wear + reliability)&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;State (loaded channel) persistence reworked into an append-only slot log: 8 bytes per update, up to 192 updates before any page erase (~192x fewer erase cycles vs rewriting a whole 256B page per update).&lt;/li&gt; 
 &lt;li&gt;Filament metadata persistence reworked into a small CRC-protected log: 64B per update, 2 pages per filament (8 records) -&amp;gt; ~8x fewer erase cycles vs erasing a whole 256B page on every change.&lt;/li&gt; 
 &lt;li&gt;Per-filament saves: only the modified channel is written (reduces unnecessary flash writes).&lt;/li&gt; 
 &lt;li&gt;Power-loss safe commits: records are validated and partially-written data is ignored.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;V9&lt;/h2&gt; 
&lt;h3&gt;User-visible changes&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Increased filament loading force for improved reliability during filament insertion.&lt;/li&gt; 
 &lt;li&gt;Improved filament loading behavior on some materials (e.g. &lt;strong&gt;Sunlu PLA+&lt;/strong&gt; and similar filaments) where loading characteristics differ from standard PLA/PETG.&lt;/li&gt; 
 &lt;li&gt;Added protection against &lt;strong&gt;spool jams&lt;/strong&gt;: 
  &lt;ul&gt; 
   &lt;li&gt;Lock mode activates if the buffer drops too low during printing.&lt;/li&gt; 
   &lt;li&gt;Lock mode also activates if the motor runs at high speed continuously for ~8 seconds.&lt;/li&gt; 
   &lt;li&gt;The lock is automatically released once the buffer returns to the neutral position.&lt;/li&gt; 
   &lt;li&gt;Prevents prolonged motor overrun when filament movement is blocked.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;V8&lt;/h2&gt; 
&lt;h3&gt;User-visible changes&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Supported print resume after a printer power reset / power loss (printing can be resumed properly).&lt;/li&gt; 
 &lt;li&gt;Improved behavior for &lt;strong&gt;P1S&lt;/strong&gt; (loading problems due to long/bent PTFE path).&lt;/li&gt; 
 &lt;li&gt;Added AUTOLOAD support for &lt;strong&gt;single-switch PCB&lt;/strong&gt; boards: 
  &lt;ul&gt; 
   &lt;li&gt;Triggered by pressing the buffer (&quot;buffer tap&quot;).&lt;/li&gt; 
   &lt;li&gt;Starts filament loading exactly like the external switch trigger.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;More stable loading process overall.&lt;/li&gt; 
 &lt;li&gt;Improved support for &lt;strong&gt;low-torque BMCU&lt;/strong&gt; variants.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;V7&lt;/h2&gt; 
&lt;h3&gt;User-visible changes&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Remember loaded filaments (persistent state).&lt;/strong&gt;&lt;br /&gt; You can load filament and safely power off the printer.&lt;br /&gt; This allows you to disable the automatic unload-at-end behavior in G-code (if you often print with one filament), keeping filament loaded until you actually need to change it.&lt;br /&gt; More info here: &lt;a href=&quot;https://wiki.bambulab.com/en/ams/manual/ams-not-unloading-to-save-filament&quot;&gt;https://wiki.bambulab.com/en/ams/manual/ams-not-unloading-to-save-filament&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;100% solved filament loading problems.&lt;/strong&gt; The system is stable and consistent across hardware variants.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Filament RGB colors.&lt;/strong&gt; Modules/LEDs can display the configured filament color.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;AUTOLOAD (short)&lt;/h3&gt; 
&lt;p&gt;&lt;strong&gt;How AUTOLOAD works&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;DM (two microswitches):&lt;/strong&gt; 
  &lt;ul&gt; 
   &lt;li&gt;Touch first switch → AUTOLOAD starts (you may need a light manual push until gears grab).&lt;/li&gt; 
   &lt;li&gt;BMCU feeds filament until the second switch (behind extruder) confirms &lt;strong&gt;fully inserted&lt;/strong&gt;.&lt;/li&gt; 
   &lt;li&gt;Then it feeds 120 mm to make it print-ready.&lt;/li&gt; 
   &lt;li&gt;&lt;strong&gt;Anti-snag protection:&lt;/strong&gt; buffer position is monitored; if the filament catches on housing / PTFE edge, it retracts to safe position and retries (3 retries).&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Single-switch boards:&lt;/strong&gt; 
  &lt;ul&gt; 
   &lt;li&gt;Stage 1 is manual (no second switch to confirm fully-in).&lt;/li&gt; 
   &lt;li&gt;Once filament is fully in the extruder, Stage 2 behaves the same (incl. anti-snag protection).&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Technical changes&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;ADC_DMA upgraded (ADC1 + ADC2 in parallel):&lt;/strong&gt; 
  &lt;ul&gt; 
   &lt;li&gt;Regular simultaneous mode: ADC1+ADC2 scan channels in parallel to reduce noise and increase throughput.&lt;/li&gt; 
   &lt;li&gt;Lower noise enabled smaller filtering and faster stable readout.&lt;/li&gt; 
   &lt;li&gt;Full filtered update time: &lt;strong&gt;~5 ms instead of ~28 ms&lt;/strong&gt;.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;AS5600 reading correctness improved&lt;/strong&gt; (robustness and stability of reads).&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Timer/tick safety (wrap safety):&lt;/strong&gt; all time comparisons reviewed to be correct under wrap-around.&lt;/li&gt; 
 &lt;li&gt;Final stabilization and cleanup: overall behavior is faster and more deterministic than previous releases.&lt;/li&gt; 
 &lt;li&gt;There were more fixes in V7 as well; easiest is to check the commit history.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;strong&gt;Final note:&lt;/strong&gt; all known issues were ultimately resolved. BMCU is fully stable and significantly faster vs older firmware. At this moment I do not expect any further fixes.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;V6&lt;/h2&gt; 
&lt;h2&gt;Framework&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;Dropped Arduino Core (PlatformIO: framework = arduino) - the whole firmware was rewritten to pure CH32 (WCH SDK / noneos).&lt;/li&gt; 
 &lt;li&gt;Direct use of hardware timers, DMA and interrupts - no Arduino delays, no random timing, deterministic real-time behavior.&lt;/li&gt; 
 &lt;li&gt;Faster and correct flash operations (WCH Fast API) - stable writes, faster, without corrupting neighboring data.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;ADC_DMA&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;Separated DMA writes from CPU reads - previously reads happened while DMA was overwriting the buffer.&lt;/li&gt; 
 &lt;li&gt;Filter is computed in the background (DMA half/full), not during readout - previously &lt;code&gt;get_value()&lt;/code&gt; blocked CPU and broke timing.&lt;/li&gt; 
 &lt;li&gt;Constant CPU load - previously larger filter window slowed the system down.&lt;/li&gt; 
 &lt;li&gt;DMA error handling&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;BUS (BambuBus + AHUB)&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;Fixed RX/TX buffer race (reading and overwriting the same buffer at the same time).&lt;/li&gt; 
 &lt;li&gt;Snapshot-based parsing instead of working on a live buffer&lt;/li&gt; 
 &lt;li&gt;Deterministic frame handling timing - constant CPU cost, independent from packet length.&lt;/li&gt; 
 &lt;li&gt;Robustness against transmission errors - a bad packet does not break the whole system state.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Flash / NVM&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;Flash written page-by-page (256B) instead of erasing/programming the whole sector (4KB)&lt;/li&gt; 
 &lt;li&gt;Write only when data actually changed&lt;/li&gt; 
 &lt;li&gt;Hardware CRC for flash + verification on read&lt;/li&gt; 
 &lt;li&gt;AMS data split into separate records - changing one filament does not rewrite the whole structure.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Soft-I2C / AS5600&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;Rewritten from Arduino, removed timing bugs and Arduino &quot;magic&quot;.&lt;/li&gt; 
 &lt;li&gt;Correct ACK/NACK, START/STOP, recovery handling&lt;/li&gt; 
 &lt;li&gt;Hard isolation of channels with errors&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Motion / mechanics&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;Smoother motor control&lt;/li&gt; 
 &lt;li&gt;Added calibration buffers - filament stays in a neutral position, without unnecessary tension.&lt;/li&gt; 
 &lt;li&gt;Better state transitions - no jerks and no sudden braking.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Misc&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;CRC8 / CRC16 rewritten to simple C + lookup tables - faster, deterministic, no objects and no runtime init.&lt;/li&gt; 
 &lt;li&gt;Partially de-spaghettified includes&lt;/li&gt; 
 &lt;li&gt;and many more - firmware prepared for further development&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Final note&lt;/h2&gt; 
&lt;p&gt;This firmware started as a personal CH32 learning project. During development it grew far beyond the original scope because working on BMCU turned out to be genuinely enjoyable.&lt;/p&gt; 
&lt;p&gt;Many solutions are intentionally overengineered. Everything was implemented primarily for personal use and experimentation.&lt;/p&gt; 
&lt;p&gt;The firmware has been used extensively during development, and no practical issues were observed in real-world usage.&lt;/p&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/6baf2316030d03a0180850589372e539a1f7c5b01fa456330155b64e0dd6f8bc/jarczakpawel/BMCU-C-PJARCZAK" medium="image" />
      
    </item>
    
    <item>
      <title>ml-explore/mlx</title>
      <link>https://github.com/ml-explore/mlx</link>
      <description>&lt;p&gt;MLX: An array framework for Apple silicon&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;MLX&lt;/h1&gt; 
&lt;p&gt;&lt;a href=&quot;https://raw.githubusercontent.com/ml-explore/mlx/main/#quickstart&quot;&gt;&lt;strong&gt;Quickstart&lt;/strong&gt;&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/ml-explore/mlx/main/#installation&quot;&gt;&lt;strong&gt;Installation&lt;/strong&gt;&lt;/a&gt; | &lt;a href=&quot;https://ml-explore.github.io/mlx/build/html/index.html&quot;&gt;&lt;strong&gt;Documentation&lt;/strong&gt;&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/ml-explore/mlx/main/#examples&quot;&gt;&lt;strong&gt;Examples&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://circleci.com/gh/ml-explore/mlx&quot;&gt;&lt;img src=&quot;https://circleci.com/gh/ml-explore/mlx.svg?style=svg&quot; alt=&quot;CircleCI&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;MLX is an array framework for machine learning on Apple silicon, brought to you by Apple machine learning research.&lt;/p&gt; 
&lt;p&gt;Some key features of MLX include:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;Familiar APIs&lt;/strong&gt;: MLX has a Python API that closely follows NumPy. MLX also has fully featured C++, &lt;a href=&quot;https://github.com/ml-explore/mlx-c&quot;&gt;C&lt;/a&gt;, and &lt;a href=&quot;https://github.com/ml-explore/mlx-swift/&quot;&gt;Swift&lt;/a&gt; APIs, which closely mirror the Python API. MLX has higher-level packages like &lt;code&gt;mlx.nn&lt;/code&gt; and &lt;code&gt;mlx.optimizers&lt;/code&gt; with APIs that closely follow PyTorch to simplify building more complex models.&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;Composable function transformations&lt;/strong&gt;: MLX supports composable function transformations for automatic differentiation, automatic vectorization, and computation graph optimization.&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;Lazy computation&lt;/strong&gt;: Computations in MLX are lazy. Arrays are only materialized when needed.&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;Dynamic graph construction&lt;/strong&gt;: Computation graphs in MLX are constructed dynamically. Changing the shapes of function arguments does not trigger slow compilations, and debugging is simple and intuitive.&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;Multi-device&lt;/strong&gt;: Operations can run on any of the supported devices (currently the CPU and the GPU).&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;Unified memory&lt;/strong&gt;: A notable difference from MLX and other frameworks is the &lt;em&gt;unified memory model&lt;/em&gt;. Arrays in MLX live in shared memory. Operations on MLX arrays can be performed on any of the supported device types without transferring data.&lt;/p&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;MLX is designed by machine learning researchers for machine learning researchers. The framework is intended to be user-friendly, but still efficient to train and deploy models. The design of the framework itself is also conceptually simple. We intend to make it easy for researchers to extend and improve MLX with the goal of quickly exploring new ideas.&lt;/p&gt; 
&lt;p&gt;The design of MLX is inspired by frameworks like &lt;a href=&quot;https://numpy.org/doc/stable/index.html&quot;&gt;NumPy&lt;/a&gt;, &lt;a href=&quot;https://pytorch.org/&quot;&gt;PyTorch&lt;/a&gt;, &lt;a href=&quot;https://github.com/google/jax&quot;&gt;Jax&lt;/a&gt;, and &lt;a href=&quot;https://arrayfire.org/&quot;&gt;ArrayFire&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Examples&lt;/h2&gt; 
&lt;p&gt;The &lt;a href=&quot;https://github.com/ml-explore/mlx-examples&quot;&gt;MLX examples repo&lt;/a&gt; has a variety of examples, including:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/ml-explore/mlx-examples/tree/main/transformer_lm&quot;&gt;Transformer language model&lt;/a&gt; training.&lt;/li&gt; 
 &lt;li&gt;Large-scale text generation with &lt;a href=&quot;https://github.com/ml-explore/mlx-examples/tree/main/llms/llama&quot;&gt;LLaMA&lt;/a&gt; and finetuning with &lt;a href=&quot;https://github.com/ml-explore/mlx-examples/tree/main/lora&quot;&gt;LoRA&lt;/a&gt;.&lt;/li&gt; 
 &lt;li&gt;Generating images with &lt;a href=&quot;https://github.com/ml-explore/mlx-examples/tree/main/stable_diffusion&quot;&gt;Stable Diffusion&lt;/a&gt;.&lt;/li&gt; 
 &lt;li&gt;Speech recognition with &lt;a href=&quot;https://github.com/ml-explore/mlx-examples/tree/main/whisper&quot;&gt;OpenAI&#39;s Whisper&lt;/a&gt;.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Quickstart&lt;/h2&gt; 
&lt;p&gt;See the &lt;a href=&quot;https://ml-explore.github.io/mlx/build/html/usage/quick_start.html&quot;&gt;quick start guide&lt;/a&gt; in the documentation.&lt;/p&gt; 
&lt;h2&gt;Installation&lt;/h2&gt; 
&lt;p&gt;MLX is available on &lt;a href=&quot;https://pypi.org/project/mlx/&quot;&gt;PyPI&lt;/a&gt;. To install MLX on macOS, run:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;pip install mlx
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;To install the CUDA backend on Linux, run:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;pip install mlx[cuda]
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;To install a CPU-only Linux package, run:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;pip install mlx[cpu]
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Checkout the &lt;a href=&quot;https://ml-explore.github.io/mlx/build/html/install.html#&quot;&gt;documentation&lt;/a&gt; for more information on building the C++ and Python APIs from source.&lt;/p&gt; 
&lt;h2&gt;Contributing&lt;/h2&gt; 
&lt;p&gt;Check out the &lt;a href=&quot;https://github.com/ml-explore/mlx/tree/main/CONTRIBUTING.md&quot;&gt;contribution guidelines&lt;/a&gt; for more information on contributing to MLX. See the &lt;a href=&quot;https://ml-explore.github.io/mlx/build/html/install.html&quot;&gt;docs&lt;/a&gt; for more information on building from source, and running tests.&lt;/p&gt; 
&lt;p&gt;We are grateful for all of &lt;a href=&quot;https://github.com/ml-explore/mlx/tree/main/ACKNOWLEDGMENTS.md#Individual-Contributors&quot;&gt;our contributors&lt;/a&gt;. If you contribute to MLX and wish to be acknowledged, please add your name to the list in your pull request.&lt;/p&gt; 
&lt;h2&gt;Citing MLX&lt;/h2&gt; 
&lt;p&gt;The MLX software suite was initially developed with equal contribution by Awni Hannun, Jagrit Digani, Angelos Katharopoulos, and Ronan Collobert. If you find MLX useful in your research and wish to cite it, please use the following BibTex entry:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;@software{mlx2023,
  author = {Awni Hannun and Jagrit Digani and Angelos Katharopoulos and Ronan Collobert},
  title = {{MLX}: Efficient and flexible machine learning on Apple silicon},
  url = {https://github.com/ml-explore},
  version = {0.0},
  year = {2023},
}
&lt;/code&gt;&lt;/pre&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/a71216957e9e7b32d88e868b3e709ded8da5dd556c72825929dc791fe1b1791b/ml-explore/mlx" medium="image" />
      
    </item>
    
    <item>
      <title>MaaAssistantArknights/MaaAssistantArknights</title>
      <link>https://github.com/MaaAssistantArknights/MaaAssistantArknights</link>
      <description>&lt;p&gt;《明日方舟》小助手，全日常一键长草！| A one-click tool for the daily tasks of Arknights, supporting all clients.&lt;/p&gt;&lt;hr&gt;&lt;div align=&quot;center&quot;&gt; 
 &lt;img alt=&quot;LOGO&quot; src=&quot;https://raw.githubusercontent.com/MaaAssistantArknights/MaaAssistantArknights/dev-v2/docs/.vuepress/public/images/maa-logo_512x512.png&quot; width=&quot;256&quot; height=&quot;256&quot; /&gt; 
 &lt;h1&gt;MAA&lt;/h1&gt; 
 &lt;br /&gt; 
 &lt;div&gt; 
  &lt;img alt=&quot;C++&quot; src=&quot;https://img.shields.io/badge/C++-20-%2300599C?logo=cplusplus&quot; /&gt; 
  &lt;img alt=&quot;platform&quot; src=&quot;https://img.shields.io/badge/platform-Windows%20%7C%20Linux%20%7C%20macOS-blueviolet&quot; /&gt; 
 &lt;/div&gt; 
 &lt;div&gt; 
  &lt;img alt=&quot;license&quot; src=&quot;https://img.shields.io/github/license/MaaAssistantArknights/MaaAssistantArknights&quot; /&gt; 
  &lt;img alt=&quot;commit&quot; src=&quot;https://img.shields.io/github/commit-activity/m/MaaAssistantArknights/MaaAssistantArknights?color=%23ff69b4&quot; /&gt; 
 &lt;/div&gt; 
 &lt;div&gt; 
  &lt;img alt=&quot;stars&quot; src=&quot;https://img.shields.io/github/stars/MaaAssistantArknights/MaaAssistantArknights?style=social&quot; /&gt; 
  &lt;img alt=&quot;GitHub all releases&quot; src=&quot;https://img.shields.io/github/downloads/MaaAssistantArknights/MaaAssistantArknights/total?style=social&quot; /&gt; 
 &lt;/div&gt; 
 &lt;div&gt; 
  &lt;a href=&quot;https://deepwiki.com/MaaAssistantArknights/MaaAssistantArknights&quot;&gt;&lt;img src=&quot;https://deepwiki.com/badge.svg?sanitize=true&quot; alt=&quot;Ask DeepWiki&quot; /&gt;&lt;/a&gt; 
 &lt;/div&gt; 
 &lt;a href=&quot;https://trendshift.io/repositories/979&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;https://trendshift.io/api/badge/repositories/979&quot; alt=&quot;MaaAssistantArknights%2FMaaAssistantArknights | Trendshift&quot; width=&quot;250&quot; height=&quot;55&quot; style=&quot;width: 250px; height: 55px;&quot; /&gt;&lt;/a&gt; 
 &lt;div&gt; 
 &lt;/div&gt; 
 &lt;br /&gt; 
 &lt;!-- markdownlint-restore --&gt; 
 &lt;p&gt;&lt;a href=&quot;https://docs.maa.plus/zh-cn/&quot;&gt;简体中文&lt;/a&gt; | &lt;a href=&quot;https://docs.maa.plus/zh-tw/&quot;&gt;繁體中文&lt;/a&gt; | &lt;a href=&quot;https://docs.maa.plus/en-us/&quot;&gt;English&lt;/a&gt; | &lt;a href=&quot;https://docs.maa.plus/ja-jp/&quot;&gt;日本語&lt;/a&gt; | &lt;a href=&quot;https://docs.maa.plus/ko-kr/&quot;&gt;한국어&lt;/a&gt;&lt;/p&gt; 
 &lt;p&gt;MAA 的意思是 MAA Assistant Arknights&lt;/p&gt; 
 &lt;p&gt;一款明日方舟游戏小助手&lt;/p&gt; 
 &lt;p&gt;基于图像识别技术，一键完成全部日常任务！&lt;/p&gt; 
 &lt;p&gt;绝赞更新中 ✿✿ヽ(°▽°)ノ✿&lt;/p&gt; 
&lt;/div&gt; 
&lt;h2&gt;下载与安装&lt;/h2&gt; 
&lt;p&gt;请阅读 &lt;a href=&quot;https://docs.maa.plus/zh-cn/manual/newbie.html&quot;&gt;文档&lt;/a&gt; 后前往 &lt;a href=&quot;https://maa.plus&quot;&gt;官网&lt;/a&gt; 或 &lt;a href=&quot;https://github.com/MaaAssistantArknights/MaaAssistantArknights/releases&quot;&gt;Releases&lt;/a&gt; 下载，并参考 &lt;a href=&quot;https://docs.maa.plus/zh-cn/manual/newbie.html&quot;&gt;新手上路&lt;/a&gt; 进行安装。&lt;/p&gt; 
&lt;h2&gt;亮点功能&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;理智作战，掉落识别及上传 &lt;a href=&quot;https://penguin-stats.cn/&quot;&gt;企鹅物流&lt;/a&gt;，&lt;a href=&quot;https://ark.yituliu.cn/&quot;&gt;一图流&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;智能基建换班，自动计算干员效率，单设施内最优解；同时也支持 &lt;a href=&quot;https://docs.maa.plus/zh-cn/protocol/base-scheduling-schema.html&quot;&gt;自定义排班&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;自动公招，可选使用加急许可，一次全部刷完！公招数据自动上传 &lt;a href=&quot;https://penguin-stats.cn/result/stage/recruit/recruit&quot;&gt;企鹅物流&lt;/a&gt;，&lt;a href=&quot;https://ark.yituliu.cn/survey/maarecruitdata&quot;&gt;一图流&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;支持手动识别公招界面，方便对高星公招做出选择 &lt;s&gt;（你的这个高资回费出的是推王呢还是推王呢）&lt;/s&gt;&lt;/li&gt; 
 &lt;li&gt;支持识别干员列表，统计已有和未有干员及潜能，并在公招识别显示&lt;/li&gt; 
 &lt;li&gt;支持识别养成材料，并导出至 &lt;a href=&quot;https://penguin-stats.cn/planner&quot;&gt;企鹅物流刷图规划&lt;/a&gt;、&lt;a href=&quot;https://arkntools.app/#/material&quot;&gt;明日方舟工具箱&lt;/a&gt;、&lt;a href=&quot;https://ark-nights.com/settings&quot;&gt;ARK-NIGHTS 干员培养表&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;访问好友、收取信用及购物、领取日常奖励等，一键全日常自动长草&lt;/li&gt; 
 &lt;li&gt;肉鸽全自动刷源石锭和等级，自动烧水和凹直升，智能识别干员及练度&lt;/li&gt; 
 &lt;li&gt;选择作业 JSON 文件，自动抄作业， &lt;a href=&quot;https://www.bilibili.com/video/BV1H841177Fk/&quot;&gt;视频演示&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;支持 C, Python, Java, Rust, Golang, Java HTTP, Rust HTTP 等多种接口，方便集成调用，自定义你的 MAA！&lt;/li&gt; 
&lt;/ul&gt; 
&lt;!-- markdownlint-disable --&gt; 
&lt;details&gt;
 &lt;summary&gt;话不多说，看图！&lt;/summary&gt; 
 &lt;picture&gt; 
  &lt;source media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;./docs/.vuepress/public/images/zh-cn/readme/1-dark.png&quot; /&gt; 
  &lt;img alt=&quot;zh1&quot; src=&quot;https://raw.githubusercontent.com/MaaAssistantArknights/MaaAssistantArknights/dev-v2/docs/.vuepress/public/images/zh-cn/readme/1-light.png&quot; /&gt; 
 &lt;/picture&gt; 
 &lt;picture&gt; 
  &lt;source media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;./docs/.vuepress/public/images/zh-cn/readme/2-dark.png&quot; /&gt; 
  &lt;img alt=&quot;zh2&quot; src=&quot;https://raw.githubusercontent.com/MaaAssistantArknights/MaaAssistantArknights/dev-v2/docs/.vuepress/public/images/zh-cn/readme/2-light.png&quot; /&gt; 
 &lt;/picture&gt; 
 &lt;picture&gt; 
  &lt;source media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;./docs/.vuepress/public/images/zh-cn/readme/3-dark.png&quot; /&gt; 
  &lt;img alt=&quot;zh3&quot; src=&quot;https://raw.githubusercontent.com/MaaAssistantArknights/MaaAssistantArknights/dev-v2/docs/.vuepress/public/images/zh-cn/readme/3-light.png&quot; /&gt; 
 &lt;/picture&gt; 
 &lt;picture&gt; 
  &lt;source media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;./docs/.vuepress/public/images/zh-cn/readme/4-dark.png&quot; /&gt; 
  &lt;img alt=&quot;zh4&quot; src=&quot;https://raw.githubusercontent.com/MaaAssistantArknights/MaaAssistantArknights/dev-v2/docs/.vuepress/public/images/zh-cn/readme/4-light.png&quot; /&gt; 
 &lt;/picture&gt; 
&lt;/details&gt; 
&lt;!-- markdownlint-restore --&gt; 
&lt;h2&gt;使用说明&lt;/h2&gt; 
&lt;h3&gt;功能介绍&lt;/h3&gt; 
&lt;p&gt;请参阅 &lt;a href=&quot;https://docs.maa.plus/zh-cn/manual/&quot;&gt;用户手册&lt;/a&gt;。&lt;/p&gt; 
&lt;h3&gt;外服支持&lt;/h3&gt; 
&lt;p&gt;目前国际服（美服）、日服、韩服、繁中服的绝大部分功能均已支持。但由于外服用户较少及项目人手不足，很多功能并没有进行全面的测试，所以请自行体验。&lt;br /&gt; 若您遇到了 Bug，或对某个功能有强需求，欢迎在 &lt;a href=&quot;https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues&quot;&gt;Issues&lt;/a&gt; 和 &lt;a href=&quot;https://github.com/MaaAssistantArknights/MaaAssistantArknights/discussions&quot;&gt;讨论区&lt;/a&gt; 催更；或加入我们一起建设 MAA！请参阅 &lt;a href=&quot;https://docs.maa.plus/zh-cn/develop/overseas-client-adaptation.html&quot;&gt;外服适配教程&lt;/a&gt;&lt;/p&gt; 
&lt;h3&gt;CLI 支持&lt;/h3&gt; 
&lt;p&gt;MAA 支持命令行界面（CLI）操作，支持 Linux，macOS 和 Windows，可用于自动化脚本或在无图形界面的服务器上使用。请参阅 &lt;a href=&quot;https://docs.maa.plus/zh-cn/manual/cli/&quot;&gt;CLI 使用指南&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;加入我们&lt;/h2&gt; 
&lt;h3&gt;主要关联项目&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;全新框架：&lt;a href=&quot;https://github.com/MaaXYZ/MaaFramework&quot;&gt;MaaFramework&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://prts.plus&quot;&gt;作业站&lt;/a&gt; 前端：&lt;a href=&quot;https://github.com/ZOOT-Plus/zoot-plus-frontend&quot;&gt;zoot-plus-frontend&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://prts.plus&quot;&gt;作业站&lt;/a&gt; 后端：&lt;a href=&quot;https://github.com/ZOOT-Plus/ZootPlusBackend&quot;&gt;ZootPlusBackend&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://maa.plus&quot;&gt;官网&lt;/a&gt;：&lt;a href=&quot;https://github.com/MaaAssistantArknights/maa-website&quot;&gt;前端&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;深度学习：&lt;a href=&quot;https://github.com/MaaAssistantArknights/MaaAI&quot;&gt;MaaAI&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;多语言 (i18n)&lt;/h3&gt; 
&lt;p&gt;MAA 以中文（简体）为第一语言，翻译词条均以中文（简体）为准。&lt;/p&gt; 
&lt;h3&gt;参与开发&lt;/h3&gt; 
&lt;p&gt;请参阅 &lt;a href=&quot;https://docs.maa.plus/zh-cn/develop/development.html&quot;&gt;开发指南&lt;/a&gt;。&lt;/p&gt; 
&lt;h3&gt;API&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/MaaAssistantArknights/MaaAssistantArknights/dev-v2/include/AsstCaller.h&quot;&gt;C 接口&lt;/a&gt;：&lt;a href=&quot;https://raw.githubusercontent.com/MaaAssistantArknights/MaaAssistantArknights/dev-v2/src/Cpp/main.cpp&quot;&gt;集成示例&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/MaaAssistantArknights/MaaAssistantArknights/dev-v2/src/Python/asst/asst.py&quot;&gt;Python 接口&lt;/a&gt;：&lt;a href=&quot;https://raw.githubusercontent.com/MaaAssistantArknights/MaaAssistantArknights/dev-v2/src/Python/sample.py&quot;&gt;集成示例&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/MaaAssistantArknights/MaaAssistantArknights/dev-v2/src/Golang&quot;&gt;Golang 接口&lt;/a&gt;：&lt;a href=&quot;https://raw.githubusercontent.com/MaaAssistantArknights/MaaAssistantArknights/dev-v2/src/Golang/maa/maa.go&quot;&gt;集成示例&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/MaaAssistantArknights/MaaAssistantArknights/dev-v2/src/Dart&quot;&gt;Dart 接口&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/MaaAssistantArknights/MaaAssistantArknights/dev-v2/src/Java/src/main/java/com/iguigui/maaj/easySample/MaaCore.java&quot;&gt;Java 接口&lt;/a&gt;：&lt;a href=&quot;https://raw.githubusercontent.com/MaaAssistantArknights/MaaAssistantArknights/dev-v2/src/Java/src/main/java/com/iguigui/maaj/easySample/MaaJavaSample.java&quot;&gt;集成示例&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/MaaAssistantArknights/MaaAssistantArknights/dev-v2/src/Java/Readme.md&quot;&gt;Java HTTP 接口&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/MaaAssistantArknights/MaaAssistantArknights/dev-v2/src/Rust/src/maa_sys&quot;&gt;Rust 接口&lt;/a&gt;：&lt;a href=&quot;https://raw.githubusercontent.com/MaaAssistantArknights/MaaAssistantArknights/dev-v2/src/Rust&quot;&gt;HTTP 接口&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/MaaAssistantArknights/MaaX/tree/main/packages/main/coreLoader&quot;&gt;TypeScript 接口&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/MaaAssistantArknights/MaaAssistantArknights/dev-v2/src/Woolang/maa.wo&quot;&gt;Woolang 接口&lt;/a&gt;：&lt;a href=&quot;https://raw.githubusercontent.com/MaaAssistantArknights/MaaAssistantArknights/dev-v2/src/Woolang/demo.wo&quot;&gt;集成示例&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://docs.maa.plus/zh-cn/protocol/integration.html&quot;&gt;集成文档&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://docs.maa.plus/zh-cn/protocol/callback-schema.html&quot;&gt;回调消息协议&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://docs.maa.plus/zh-cn/protocol/task-schema.html&quot;&gt;任务流程协议&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://docs.maa.plus/zh-cn/protocol/copilot-schema.html&quot;&gt;自动抄作业协议&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;外服适配&lt;/h3&gt; 
&lt;p&gt;请参阅 &lt;a href=&quot;https://docs.maa.plus/zh-cn/develop/overseas-client-adaptation.html&quot;&gt;外服适配教程&lt;/a&gt;，对于国服已支持的功能，绝大部分的外服适配工作仅需要截图 + 简单的 JSON 修改即可。&lt;/p&gt; 
&lt;h3&gt;Issue bot&lt;/h3&gt; 
&lt;p&gt;请参阅 &lt;a href=&quot;https://docs.maa.plus/zh-cn/develop/issue-bot-usage.html&quot;&gt;Issue Bot 使用方法&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;致谢&lt;/h2&gt; 
&lt;h3&gt;开源库&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;图像识别库：&lt;a href=&quot;https://github.com/opencv/opencv.git&quot;&gt;opencv&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;s&gt;文字识别库：&lt;a href=&quot;https://github.com/DayBreak-u/chineseocr_lite.git&quot;&gt;chineseocr_lite&lt;/a&gt;&lt;/s&gt;&lt;/li&gt; 
 &lt;li&gt;文字识别库：&lt;a href=&quot;https://github.com/PaddlePaddle/PaddleOCR&quot;&gt;PaddleOCR&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;深度学习部署库：&lt;a href=&quot;https://github.com/PaddlePaddle/FastDeploy&quot;&gt;FastDeploy&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;机器学习加速器：&lt;a href=&quot;https://github.com/microsoft/onnxruntime&quot;&gt;onnxruntime&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;s&gt;关卡掉落识别：&lt;a href=&quot;https://github.com/penguin-statistics/recognizer&quot;&gt;企鹅物流识别&lt;/a&gt;&lt;/s&gt;&lt;/li&gt; 
 &lt;li&gt;地图格子识别：&lt;a href=&quot;https://github.com/yuanyan3060/Arknights-Tile-Pos&quot;&gt;Arknights-Tile-Pos&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;C++ JSON 库：&lt;a href=&quot;https://github.com/MistEO/meojson.git&quot;&gt;meojson&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;C++ 运算符解析器：&lt;a href=&quot;https://github.com/kimwalisch/calculator&quot;&gt;calculator&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;s&gt;C++ base64 编解码：&lt;a href=&quot;https://github.com/ReneNyffenegger/cpp-base64&quot;&gt;cpp-base64&lt;/a&gt;&lt;/s&gt;&lt;/li&gt; 
 &lt;li&gt;C++ 解压压缩库：&lt;a href=&quot;https://github.com/madler/zlib&quot;&gt;zlib&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;C++ Gzip 封装：&lt;a href=&quot;https://github.com/mapbox/gzip-hpp&quot;&gt;gzip-hpp&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;安卓触控事件器：&lt;a href=&quot;https://github.com/DeviceFarmer/minitouch&quot;&gt;Minitouch&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;安卓触控事件器：&lt;a href=&quot;https://github.com/MaaAssistantArknights/MaaTouch&quot;&gt;MaaTouch&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;WPF MVVM 框架：&lt;a href=&quot;https://github.com/canton7/Stylet&quot;&gt;Stylet&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;WPF 控件库：&lt;a href=&quot;https://github.com/HandyOrg/HandyControl&quot;&gt;HandyControl&lt;/a&gt; -&amp;gt; &lt;a href=&quot;https://github.com/ghost1372/HandyControls&quot;&gt;HandyControls&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;C# 日志：&lt;a href=&quot;https://github.com/serilog/serilog&quot;&gt;Serilog&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;C# JSON 库：&lt;a href=&quot;https://github.com/JamesNK/Newtonsoft.Json&quot;&gt;Newtonsoft.Json&lt;/a&gt; &amp;amp; &lt;a href=&quot;https://github.com/dotnet/runtime&quot;&gt;System.Text.Json&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;s&gt;下载器：&lt;a href=&quot;https://github.com/aria2/aria2&quot;&gt;aria2&lt;/a&gt;&lt;/s&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;数据源&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;s&gt;公开招募数据：&lt;a href=&quot;https://www.bigfun.cn/tools/aktools/hr&quot;&gt;明日方舟工具箱&lt;/a&gt;&lt;/s&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;s&gt;干员及基建数据：&lt;a href=&quot;http://prts.wiki/&quot;&gt;PRTS Wiki&lt;/a&gt;&lt;/s&gt;&lt;/li&gt; 
 &lt;li&gt;关卡数据：&lt;a href=&quot;https://penguin-stats.cn/&quot;&gt;企鹅物流数据统计&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;游戏数据及资源：&lt;a href=&quot;https://github.com/yuanyan3060/ArknightsGameResource&quot;&gt;明日方舟客户端素材&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;游戏数据：&lt;a href=&quot;https://github.com/ArknightsAssets/ArknightsGamedata&quot;&gt;《明日方舟》Yostar游戏数据&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;贡献/参与者&lt;/h3&gt; 
&lt;p&gt;感谢所有参与到开发/测试中的朋友们，是大家的帮助让 MAA 越来越好！ (*´▽｀)ノノ&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/MaaAssistantArknights/MaaAssistantArknights/graphs/contributors&quot;&gt;&lt;img src=&quot;https://contributors-img.web.app/image?repo=MaaAssistantArknights/MaaAssistantArknights&amp;amp;max=105&amp;amp;columns=15&quot; alt=&quot;Contributors&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;声明&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;本软件使用 &lt;a href=&quot;https://spdx.org/licenses/AGPL-3.0-only.html&quot;&gt;GNU Affero General Public License v3.0 only&lt;/a&gt; 开源，并附带额外 &lt;a href=&quot;https://github.com/MaaAssistantArknights/MaaAssistantArknights/raw/dev-v2/terms-of-service.md&quot;&gt;用户协议&lt;/a&gt;。&lt;/li&gt; 
 &lt;li&gt;本软件 logo 并非使用 AGPL 3.0 协议开源，&lt;a href=&quot;https://weibo.com/u/3251357314&quot;&gt;耗毛&lt;/a&gt;、vie 两位画师及软件全体开发者保留所有权利。不得以 AGPL 3.0 协议已授权为由在未经授权的情况下使用本软件 logo，不得在未经授权的情况下将本软件 logo 用于任何商业用途。&lt;/li&gt; 
 &lt;li&gt;本软件开源、免费，仅供学习交流使用。若您遇到商家使用本软件进行代练并收费，可能是设备与时间等费用，产生的问题及后果与本软件无关。&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;DirectML 支持说明&lt;/h3&gt; 
&lt;p&gt;本软件支持 GPU 加速功能，其在 Windows 平台上依赖于 Microsoft 提供的独立组件 &lt;a href=&quot;https://learn.microsoft.com/en-us/windows/ai/directml/&quot;&gt;DirectML&lt;/a&gt;。DirectML 并非本项目的开源部分，也不受 AGPL 3.0 的约束。为方便用户，我们随安装包附带了一个未经修改的 DirectML.dll 文件。如果您无需 GPU 加速功能，可安全删除该 DLL 文件，软件的核心功能仍可正常运行。&lt;/p&gt; 
&lt;h2&gt;广告&lt;/h2&gt; 
&lt;p&gt;用户交流 QQ 群：&lt;a href=&quot;https://api.maa.plus/MaaAssistantArknights/api/qqgroup/index.html&quot;&gt;MAA 使用 &amp;amp; 粥游交流 QQ 群&lt;/a&gt;&lt;br /&gt; Discord 服务器: &lt;a href=&quot;https://discord.gg/23DfZ9uA4V&quot;&gt;邀请链接&lt;/a&gt;&lt;br /&gt; 用户交流 TG 群：&lt;a href=&quot;https://t.me/+Mgc2Zngr-hs3ZjU1&quot;&gt;Telegram 群&lt;/a&gt;&lt;br /&gt; 自动战斗 JSON 作业分享：&lt;a href=&quot;https://prts.plus&quot;&gt;prts.plus&lt;/a&gt;&lt;br /&gt; Bilibili 直播间：&lt;a href=&quot;https://live.bilibili.com/2808861&quot;&gt;MrEO 直播间&lt;/a&gt; 直播敲代码 &amp;amp; &lt;a href=&quot;https://live.bilibili.com/27548877&quot;&gt;MAA-Official 直播间&lt;/a&gt; 游戏/杂谈&lt;/p&gt; 
&lt;p&gt;技术群（舟无关、禁水）：&lt;a href=&quot;https://jq.qq.com/?_wv=1027&amp;amp;k=ypbzXcA2&quot;&gt;内卷地狱！(QQ 群)&lt;/a&gt;&lt;br /&gt; 开发者群：&lt;a href=&quot;https://jq.qq.com/?_wv=1027&amp;amp;k=JM9oCk3C&quot;&gt;QQ 群&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;如果觉得软件对你有帮助，帮忙点个 Star 吧！~（网页最上方右上角的小星星），这就是对我们最大的支持了！&lt;/p&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/5f5ef3e1bb51f36d4ac300e5550c50013a97c0e92cc64bfcd6268a898a8013dc/MaaAssistantArknights/MaaAssistantArknights" medium="image" />
      
    </item>
    
    <item>
      <title>wled/WLED</title>
      <link>https://github.com/wled/WLED</link>
      <description>&lt;p&gt;Control WS2812B and many more types of digital RGB LEDs with an ESP32 over WiFi!&lt;/p&gt;&lt;hr&gt;&lt;p align=&quot;center&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/wled/WLED/main/images/wled_logo_akemi.png&quot; /&gt; &lt;a href=&quot;https://github.com/wled-dev/WLED/releases&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/release/wled-dev/WLED.svg?style=flat-square&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://raw.githubusercontent.com/wled-dev/WLED/main/LICENSE&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/license/wled-dev/wled?color=blue&amp;amp;style=flat-square&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://wled.discourse.group&quot;&gt;&lt;img src=&quot;https://img.shields.io/discourse/topics?colorB=blue&amp;amp;label=forum&amp;amp;server=https%3A%2F%2Fwled.discourse.group%2F&amp;amp;style=flat-square&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://discord.gg/QAh7wJHrRM&quot;&gt;&lt;img src=&quot;https://img.shields.io/discord/473448917040758787.svg?colorB=blue&amp;amp;label=discord&amp;amp;style=flat-square&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://kno.wled.ge&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/quick_start-wiki-blue.svg?style=flat-square&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/Aircoookie/WLED-App&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/app-wled-blue.svg?style=flat-square&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://gitpod.io/#https://github.com/wled-dev/WLED&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Gitpod-ready--to--code-blue?style=flat-square&amp;amp;logo=gitpod&quot; /&gt;&lt;/a&gt; &lt;/p&gt; 
&lt;h1&gt;Welcome to WLED! ✨&lt;/h1&gt; 
&lt;p&gt;A fast and feature-rich implementation of an ESP32 and ESP8266 webserver to control NeoPixel (WS2812B, WS2811, SK6812) LEDs or also SPI based chipsets like the WS2801 and APA102!&lt;/p&gt; 
&lt;p&gt;Originally created by &lt;a href=&quot;https://github.com/Aircoookie&quot;&gt;Aircoookie&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;⚙️ Features&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;WS2812FX library with more than 100 special effects&lt;/li&gt; 
 &lt;li&gt;FastLED noise effects and 50 palettes&lt;/li&gt; 
 &lt;li&gt;Modern UI with color, effect and segment controls&lt;/li&gt; 
 &lt;li&gt;Segments to set different effects and colors to user defined parts of the LED string&lt;/li&gt; 
 &lt;li&gt;Settings page - configuration via the network&lt;/li&gt; 
 &lt;li&gt;Access Point and station mode - automatic failsafe AP&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://kno.wled.ge/features/multi-strip/#esp32&quot;&gt;Up to 10 LED outputs&lt;/a&gt; per instance&lt;/li&gt; 
 &lt;li&gt;Support for RGBW strips&lt;/li&gt; 
 &lt;li&gt;Up to 250 user presets to save and load colors/effects easily, supports cycling through them.&lt;/li&gt; 
 &lt;li&gt;Presets can be used to automatically execute API calls&lt;/li&gt; 
 &lt;li&gt;Nightlight function (gradually dims down)&lt;/li&gt; 
 &lt;li&gt;Full OTA software updateability (HTTP + ArduinoOTA), password protectable&lt;/li&gt; 
 &lt;li&gt;Configurable analog clock (Cronixie, 7-segment and EleksTube IPS clock support via usermods)&lt;/li&gt; 
 &lt;li&gt;Configurable Auto Brightness limit for safe operation&lt;/li&gt; 
 &lt;li&gt;Filesystem-based config for easier backup of presets and settings&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;💡 Supported light control interfaces&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;WLED app for &lt;a href=&quot;https://play.google.com/store/apps/details?id=ca.cgagnier.wlednativeandroid&quot;&gt;Android&lt;/a&gt; and &lt;a href=&quot;https://apps.apple.com/gb/app/wled-native/id6446207239&quot;&gt;iOS&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;JSON and HTTP request APIs&lt;/li&gt; 
 &lt;li&gt;MQTT&lt;/li&gt; 
 &lt;li&gt;E1.31, Art-Net, DDP and &lt;a href=&quot;http://TPM2.net&quot;&gt;TPM2.net&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/diyhue/diyHue&quot;&gt;diyHue&lt;/a&gt; (Wled is supported by diyHue, including Hue Sync Entertainment under udp. Thanks to &lt;a href=&quot;https://github.com/gmallios&quot;&gt;Gregory Mallios&lt;/a&gt;)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/hyperion-project/hyperion.ng&quot;&gt;Hyperion&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;UDP realtime&lt;/li&gt; 
 &lt;li&gt;Alexa voice control (including dimming and color)&lt;/li&gt; 
 &lt;li&gt;Sync to Philips hue lights&lt;/li&gt; 
 &lt;li&gt;Adalight (PC ambilight via serial) and TPM2&lt;/li&gt; 
 &lt;li&gt;Sync color of multiple WLED devices (UDP notifier)&lt;/li&gt; 
 &lt;li&gt;Infrared remotes (24-key RGB, receiver required)&lt;/li&gt; 
 &lt;li&gt;Simple timers/schedules (time from NTP, timezones/DST supported)&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;📲 Quick start guide and documentation&lt;/h2&gt; 
&lt;p&gt;See the &lt;a href=&quot;https://kno.wled.ge&quot;&gt;documentation on our official site&lt;/a&gt;!&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://kno.wled.ge/basics/tutorials/&quot;&gt;On this page&lt;/a&gt; you can find excellent tutorials and tools to help you get your new project up and running!&lt;/p&gt; 
&lt;h2&gt;🖼️ User interface&lt;/h2&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/wled/WLED/main/images/macbook-pro-space-gray-on-the-wooden-table.jpg&quot; width=&quot;50%&quot; /&gt;&lt;img src=&quot;https://raw.githubusercontent.com/wled/WLED/main/images/walking-with-iphone-x.jpg&quot; width=&quot;50%&quot; /&gt;&lt;/p&gt; 
&lt;h2&gt;💾 Compatible hardware&lt;/h2&gt; 
&lt;p&gt;See &lt;a href=&quot;https://kno.wled.ge/basics/compatible-hardware&quot;&gt;here&lt;/a&gt;!&lt;/p&gt; 
&lt;h2&gt;✌️ Other&lt;/h2&gt; 
&lt;p&gt;Licensed under the EUPL v1.2 license&lt;br /&gt; Credits &lt;a href=&quot;https://kno.wled.ge/about/contributors/&quot;&gt;here&lt;/a&gt;! CORS proxy by &lt;a href=&quot;https://corsfix.com/&quot;&gt;Corsfix&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;Join the Discord server to discuss everything about WLED!&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://discord.gg/QAh7wJHrRM&quot;&gt;&lt;img src=&quot;https://discordapp.com/api/guilds/473448917040758787/widget.png?style=banner2&quot; width=&quot;25%&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;Check out the WLED &lt;a href=&quot;https://wled.discourse.group&quot;&gt;Discourse forum&lt;/a&gt;!&lt;/p&gt; 
&lt;p&gt;You can also send me mails to &lt;a href=&quot;mailto:dev.aircoookie@gmail.com&quot;&gt;dev.aircoookie@gmail.com&lt;/a&gt;, but please, only do so if you want to talk to me privately.&lt;/p&gt; 
&lt;p&gt;If WLED really brightens up your day, you can &lt;a href=&quot;https://paypal.me/aircoookie&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/send%20me%20a%20small%20gift-paypal-blue.svg?style=flat-square&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;em&gt;Disclaimer:&lt;/em&gt;&lt;/p&gt; 
&lt;p&gt;If you are prone to photosensitive epilepsy, we recommended you do &lt;strong&gt;not&lt;/strong&gt; use this software.&lt;br /&gt; If you still want to try, don&#39;t use strobe, lighting or noise modes or high effect speed settings.&lt;/p&gt; 
&lt;p&gt;As per the EUPL license, I assume no liability for any damage to you or any other person or equipment.&lt;/p&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/695a9f821b30c122c66db858aa94506e9a6944a4ce52c899b9033fd4602ce1dd/wled/WLED" medium="image" />
      
    </item>
    
    <item>
      <title>mozilla-ai/llamafile</title>
      <link>https://github.com/mozilla-ai/llamafile</link>
      <description>&lt;p&gt;Distribute and run LLMs with a single file.&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;llamafile&lt;/h1&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/mozilla-ai/llamafile/main/docs/images/llamafile-640x640.png&quot; width=&quot;320&quot; height=&quot;320&quot; alt=&quot;[line drawing of llama animal head in front of slightly open manilla folder filled with files]&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/mozilla-ai/llamafile/raw/main/LICENSE&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/license-Apache%202.0-blue.svg?sanitize=true&quot; alt=&quot;License&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/mozilla-ai/llamafile/actions/workflows/ci.yml&quot;&gt;&lt;img src=&quot;https://github.com/mozilla-ai/llamafile/actions/workflows/ci.yml/badge.svg?sanitize=true&quot; alt=&quot;ci status&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/ggml-org/llama.cpp/commit/7f5ee54&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/llama.cpp-7f5ee54-orange.svg?sanitize=true&quot; alt=&quot;Based on llama.cpp&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/ggml-org/whisper.cpp/commit/2eeeba5&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/whisper.cpp-2eeeba5-green.svg?sanitize=true&quot; alt=&quot;Based on whisper.cpp&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://discord.gg/YuMNeuKStr&quot;&gt;&lt;img src=&quot;https://dcbadge.limes.pink/api/server/YuMNeuKStr?style=flat&quot; alt=&quot;Discord&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://builders.mozilla.org/&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Builders-6E6E6E?logo=mozilla&amp;amp;logoColor=white&amp;amp;labelColor=4A4A4A&quot; alt=&quot;Mozilla Builders&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;llamafile lets you distribute and run LLMs with a single file.&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;llamafile is a &lt;a href=&quot;https://builders.mozilla.org/&quot;&gt;Mozilla Builders&lt;/a&gt; project (see its &lt;a href=&quot;https://hacks.mozilla.org/2023/11/introducing-llamafile/&quot;&gt;announcement blog post&lt;/a&gt;), now revamped by &lt;a href=&quot;https://www.mozilla.ai/open-tools/llamafile&quot;&gt;Mozilla.ai&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;Our goal is to make open LLMs much more accessible to both developers and end users. We&#39;re doing that by combining &lt;a href=&quot;https://github.com/ggerganov/llama.cpp&quot;&gt;llama.cpp&lt;/a&gt; with &lt;a href=&quot;https://github.com/jart/cosmopolitan&quot;&gt;Cosmopolitan Libc&lt;/a&gt; into one framework that collapses all the complexity of LLMs down to a single-file executable (called a &quot;llamafile&quot;) that runs locally on most operating systems and CPU archiectures, with no installation.&lt;/p&gt; 
&lt;p&gt;llamafile also includes &lt;strong&gt;&lt;a href=&quot;https://docs.mozilla.ai/llamafile/whisperfile&quot;&gt;whisperfile&lt;/a&gt;&lt;/strong&gt;, a single-file speech-to-text tool built on &lt;a href=&quot;https://github.com/ggerganov/whisper.cpp&quot;&gt;whisper.cpp&lt;/a&gt; and the same Cosmopolitan packaging. It supports transcription and translation of audio files across all the same platforms, with no installation required.&lt;/p&gt; 
&lt;h2&gt;v0.10.*&lt;/h2&gt; 
&lt;p&gt;&lt;strong&gt;llamafile versions starting from 0.10.0 use a new build system&lt;/strong&gt;, aimed at keeping our code more easily aligned with the latest versions of llama.cpp. This means they support more recent models and functionalities, but at the same time they might be missing some of the features you were accustomed to (check out &lt;a href=&quot;https://raw.githubusercontent.com/mozilla-ai/llamafile/main/README_0.10.0.md&quot;&gt;this doc&lt;/a&gt; for a high-level description of what has been done). If you liked the &quot;classic experience&quot; more, you will always be able to access the previous versions from our &lt;a href=&quot;https://github.com/mozilla-ai/llamafile/releases&quot;&gt;releases&lt;/a&gt; page. Our pre-built llamafiles always show which version of the server they have been bundled with (&lt;a href=&quot;https://huggingface.co/mozilla-ai/llava-v1.5-7b-llamafile&quot;&gt;0.9.* example&lt;/a&gt;, &lt;a href=&quot;https://huggingface.co/mozilla-ai/llamafile_0.10&quot;&gt;0.10.* example&lt;/a&gt;), so you will always know which version of the software you are downloading.&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;&lt;strong&gt;We want to hear from you!&lt;/strong&gt; Whether you are a new user or a long-time fan, please share what you find most valuable about llamafile and what would make it more useful for you. &lt;a href=&quot;https://blog.mozilla.ai/llamafile-returns/&quot;&gt;Read more via the blog&lt;/a&gt; and add your voice to the discussion &lt;a href=&quot;https://github.com/mozilla-ai/llamafile/discussions/809&quot;&gt;here&lt;/a&gt;.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;h2&gt;Quick Start&lt;/h2&gt; 
&lt;p&gt;Download and run your first llamafile in minutes:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;# Download an example model (Qwen3.5 0.8B)
curl -LO https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/Qwen3.5-0.8B-Q8_0.llamafile

# Make it executable (macOS/Linux/BSD)
chmod +x Qwen3.5-0.8B-Q8_0.llamafile

# Run it
./Qwen3.5-0.8B-Q8_0.llamafile
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;We chose this model because that&#39;s the smallest one we have built a llamafile for, so most likely to work out-of-the-box for you. If you have powerful hardware and/or GPUs, &lt;a href=&quot;https://docs.mozilla.ai/llamafile/getting-started/example_llamafiles&quot;&gt;feel free to choose&lt;/a&gt; larger and more expressive models which should provide more accurate responses.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Windows users:&lt;/strong&gt; Rename the file to add &lt;code&gt;.exe&lt;/code&gt; extension before running.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Note - Only executables under 4GB can run on Windows, so any llamafile above 4GB won&#39;t work. Download the &lt;a href=&quot;https://github.com/mozilla-ai/llamafile/releases&quot;&gt;llamafile&lt;/a&gt; binary and run it with any &lt;a href=&quot;https://docs.mozilla.ai/llamafile/getting-started/quickstart#using-llamafile-with-external-weights&quot;&gt;external weights/models(GGUF)&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt; 
&lt;h2&gt;Documentation&lt;/h2&gt; 
&lt;p&gt;Check the full documentation at &lt;a href=&quot;https://docs.mozilla.ai/llamafile&quot;&gt;docs.mozilla.ai/llamafile&lt;/a&gt;, or directly jump into one of the following subsections:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://docs.mozilla.ai/llamafile/getting-started/quickstart&quot;&gt;Quickstart&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://docs.mozilla.ai/llamafile/getting-started/example_llamafiles&quot;&gt;Example llamafiles&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://docs.mozilla.ai/llamafile/using-llamafile/running_llamafile&quot;&gt;Running a llamafile&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://docs.mozilla.ai/llamafile/using-llamafile/creating_llamafiles&quot;&gt;Creating llamafiles&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://docs.mozilla.ai/llamafile/using-llamafile/source_installation&quot;&gt;Source installation&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://docs.mozilla.ai/llamafile/reference/technical_details&quot;&gt;Technical details&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://docs.mozilla.ai/llamafile/reference/support&quot;&gt;Supported Systems&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://docs.mozilla.ai/llamafile/reference/troubleshooting&quot;&gt;Troubleshooting&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://docs.mozilla.ai/llamafile/whisperfile&quot;&gt;Whisperfile&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Licensing&lt;/h2&gt; 
&lt;p&gt;While the llamafile project is Apache 2.0-licensed, our changes to llama.cpp and whisper.cpp are licensed under MIT (just like the projects themselves) so as to remain compatible and upstreamable in the future, should that be desired.&lt;/p&gt; 
&lt;p&gt;The llamafile logo on this page was generated with the assistance of DALL·E 3.&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://star-history.com/#Mozilla-Ocho/llamafile&amp;amp;Date&quot;&gt;&lt;img src=&quot;https://api.star-history.com/svg?repos=Mozilla-Ocho/llamafile&amp;amp;type=Date&quot; alt=&quot;Star History Chart&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/2f8b69e7755946d5ef1833341cdb59dfd3be6997f2e1501e79bcc8460e8d0650/mozilla-ai/llamafile" medium="image" />
      
    </item>
    
    <item>
      <title>BruceDevices/firmware</title>
      <link>https://github.com/BruceDevices/firmware</link>
      <description>&lt;p&gt;Predatory ESP32 Firmware&lt;/p&gt;&lt;hr&gt;&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/BruceDevices/firmware/main/media/pictures/bruce_banner.jpg&quot; alt=&quot;Bruce Main Menu&quot; /&gt;&lt;/p&gt; 
&lt;h1&gt;🦈 Bruce&lt;/h1&gt; 
&lt;p&gt;Bruce is a versatile ESP32 firmware that supports a ton of offensive features focusing on facilitating Red Team operations. It also supports M5stack and Lilygo products and works great with Cardputer, Sticks, M5Cores, T-Decks and T-Embeds.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Check our fully open-source hardware too:&lt;/strong&gt; &lt;a href=&quot;https://bruce.computer/boards&quot;&gt;https://bruce.computer/boards&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;🏗️ How to install&lt;/h2&gt; 
&lt;h3&gt;The easiest way to install Bruce is using our official Web Flasher!&lt;/h3&gt; 
&lt;h3&gt;Check out: &lt;a href=&quot;https://bruce.computer/flasher&quot;&gt;https://bruce.computer/flasher&lt;/a&gt;&lt;/h3&gt; 
&lt;p&gt;Alternatively, you can download the latest binary from releases or actions and flash locally using &lt;a href=&quot;http://esptool.py&quot;&gt;esptool.py&lt;/a&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;esptool.py --port /dev/ttyACM0 write_flash 0x00000 Bruce-&amp;lt;device&amp;gt;.bin
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;For m5stack devices&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;If you already use M5Launcher to manage your m5stack device, you can install it with OTA&lt;/p&gt; 
&lt;p&gt;Or you can burn it directly from the &lt;a href=&quot;https://docs.m5stack.com/en/download&quot;&gt;m5burner tool&lt;/a&gt;, just search for &#39;Bruce&#39; (My official builds will be uploaded by &quot;owner&quot; and have photos.) on the device category you want to and click on burn&lt;/p&gt; 
&lt;h2&gt;⌨️ Discord Server&lt;/h2&gt; 
&lt;p&gt;Contact us in our &lt;a href=&quot;https://discord.gg/WJ9XF9czVT&quot;&gt;Discord Server&lt;/a&gt;!&lt;/p&gt; 
&lt;h2&gt;📑 Wiki&lt;/h2&gt; 
&lt;p&gt;For more information on each function supported by Bruce, &lt;a href=&quot;https://github.com/pr3y/Bruce/wiki&quot;&gt;read our wiki here&lt;/a&gt;. Also, &lt;a href=&quot;https://github.com/pr3y/Bruce/wiki/FAQ&quot;&gt;read our FAQ&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;💻 List of Features&lt;/h2&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;h2&gt;WiFi&lt;/h2&gt;&lt;/summary&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; Connect to WiFi&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; WiFi AP&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; Disconnect WiFi&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; &lt;a href=&quot;https://github.com/pr3y/Bruce/wiki/WiFi#wifi-atks&quot;&gt;WiFi Atks&lt;/a&gt;&lt;/label&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_4&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_4&quot;&gt; &lt;a href=&quot;https://github.com/pr3y/Bruce/wiki/WiFi#beacon-spam&quot;&gt;Beacon Spam&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_5&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_5&quot;&gt; &lt;a href=&quot;https://github.com/pr3y/Bruce/wiki/WiFi#target-atk&quot;&gt;Target Atk&lt;/a&gt;&lt;/label&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_6&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_6&quot;&gt; Information&lt;/label&gt;&lt;/li&gt; 
      &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_7&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_7&quot;&gt; Target Deauth&lt;/label&gt;&lt;/li&gt; 
      &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_8&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_8&quot;&gt; EvilPortal + Deauth&lt;/label&gt;&lt;/li&gt; 
     &lt;/ul&gt; &lt;/li&gt; 
    &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_9&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_9&quot;&gt; Deauth Flood (More than one target)&lt;/label&gt;&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_10&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_10&quot;&gt; &lt;a href=&quot;https://github.com/pr3y/Bruce/wiki/Wardriving&quot;&gt;Wardriving&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_11&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_11&quot;&gt; &lt;a href=&quot;https://github.com/pr3y/Bruce/wiki/WiFi#telnet&quot;&gt;TelNet&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_12&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_12&quot;&gt; &lt;a href=&quot;https://github.com/pr3y/Bruce/wiki/WiFi#ssh&quot;&gt;SSH&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_13&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_13&quot;&gt; &lt;a href=&quot;https://github.com/pr3y/Bruce/wiki/WiFi#raw-sniffer&quot;&gt;RAW Sniffer&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_14&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_14&quot;&gt; &lt;a href=&quot;https://github.com/pr3y/Bruce/wiki/WiFi#tcp-client&quot;&gt;TCP Client&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_15&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_15&quot;&gt; &lt;a href=&quot;https://github.com/pr3y/Bruce/wiki/WiFi#tcp-listener&quot;&gt;TCP Listener&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_16&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_16&quot;&gt; &lt;a href=&quot;https://github.com/pr3y/Bruce/wiki/WiFi#evil-portal&quot;&gt;Evil Portal&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_17&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_17&quot;&gt; &lt;a href=&quot;https://github.com/pr3y/Bruce/wiki/WiFi#evil-portal&quot;&gt;Scan Hosts&lt;/a&gt; (with TCP Port scanning)&lt;/label&gt;&lt;/li&gt; 
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_18&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_18&quot;&gt; &lt;a href=&quot;https://github.com/BruceDevices/firmware/wiki/WiFi#responder&quot;&gt;Responder&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_19&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_19&quot;&gt; &lt;a href=&quot;https://github.com/BruceDevices/firmware/wiki/WiFi#arp-spoofing&quot;&gt;Arp Spoofing&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_20&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_20&quot;&gt; &lt;a href=&quot;https://github.com/BruceDevices/firmware/wiki/WiFi#arp-poisoning&quot;&gt;Arp Poisoning&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_21&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_21&quot;&gt; &lt;a href=&quot;https://github.com/pr3y/Bruce/wiki/WiFi#wireguard-tunneling&quot;&gt;Wireguard Tunneling&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_22&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_22&quot;&gt; Brucegotchi&lt;/label&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_23&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_23&quot;&gt; Pwnagotchi friend&lt;/label&gt;&lt;/li&gt; 
    &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_24&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_24&quot;&gt; Pwngrid spam faces &amp;amp; names&lt;/label&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_25&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_25&quot;&gt; [Optional] DoScreen a very long name and face&lt;/label&gt;&lt;/li&gt; 
      &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_26&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_26&quot;&gt; [Optional] Flood uniq peer identifiers&lt;/label&gt;&lt;/li&gt; 
     &lt;/ul&gt; &lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;h2&gt;BLE&lt;/h2&gt;&lt;/summary&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_27&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_27&quot;&gt; &lt;a href=&quot;https://github.com/pr3y/Bruce/wiki/BLE#ble-scan&quot;&gt;BLE Scan&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_28&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_28&quot;&gt; Bad BLE - Run Ducky scripts, similar to &lt;a href=&quot;https://github.com/pr3y/Bruce/wiki/Others#badusb&quot;&gt;BadUsb&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_29&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_29&quot;&gt; BLE Keyboard - Cardputer and T-Deck Only&lt;/label&gt;&lt;/li&gt; 
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_30&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_30&quot;&gt; iOS Spam&lt;/label&gt;&lt;/li&gt; 
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_31&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_31&quot;&gt; Windows Spam&lt;/label&gt;&lt;/li&gt; 
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_32&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_32&quot;&gt; Samsung Spam&lt;/label&gt;&lt;/li&gt; 
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_33&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_33&quot;&gt; Android Spam&lt;/label&gt;&lt;/li&gt; 
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_34&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_34&quot;&gt; Spam All&lt;/label&gt;&lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;h2&gt;RF&lt;/h2&gt;&lt;/summary&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_35&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_35&quot;&gt; Scan/Copy&lt;/label&gt;&lt;/li&gt; 
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_36&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_36&quot;&gt; &lt;a href=&quot;https://github.com/pr3y/Bruce/wiki/RF#replay-payloads-like-flipper&quot;&gt;Custom SubGhz&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_37&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_37&quot;&gt; Spectrum&lt;/label&gt;&lt;/li&gt; 
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_38&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_38&quot;&gt; Jammer Full (sends a full squared wave into output)&lt;/label&gt;&lt;/li&gt; 
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_39&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_39&quot;&gt; Jammer Intermittent (sends PWM signal into output)&lt;/label&gt;&lt;/li&gt; 
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_40&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_40&quot;&gt; Config&lt;/label&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_41&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_41&quot;&gt; RF TX Pin&lt;/label&gt;&lt;/li&gt; 
    &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_42&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_42&quot;&gt; RF RX Pin&lt;/label&gt;&lt;/li&gt; 
    &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_43&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_43&quot;&gt; RF Module&lt;/label&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_44&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_44&quot;&gt; RF433 T/R M5Stack&lt;/label&gt;&lt;/li&gt; 
      &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_45&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_45&quot;&gt; &lt;a href=&quot;https://github.com/pr3y/Bruce/wiki/CC1101&quot;&gt;CC1101 (Sub-Ghz)&lt;/a&gt;&lt;/label&gt;&lt;/li&gt; 
     &lt;/ul&gt; &lt;/li&gt; 
    &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_46&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_46&quot;&gt; RF Frequency&lt;/label&gt;&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_47&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_47&quot;&gt; Replay&lt;/label&gt;&lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;h2&gt;RFID&lt;/h2&gt;&lt;/summary&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_48&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_48&quot;&gt; Read tag&lt;/label&gt;&lt;/li&gt; 
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_49&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_49&quot;&gt; Read 125kHz&lt;/label&gt;&lt;/li&gt; 
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_50&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_50&quot;&gt; Clone tag&lt;/label&gt;&lt;/li&gt; 
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_51&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_51&quot;&gt; Write NDEF records&lt;/label&gt;&lt;/li&gt; 
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_52&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_52&quot;&gt; Amiibolink&lt;/label&gt;&lt;/li&gt; 
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_53&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_53&quot;&gt; Chameleon&lt;/label&gt;&lt;/li&gt; 
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_54&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_54&quot;&gt; Write data&lt;/label&gt;&lt;/li&gt; 
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_55&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_55&quot;&gt; Erase data&lt;/label&gt;&lt;/li&gt; 
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_56&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_56&quot;&gt; Save file&lt;/label&gt;&lt;/li&gt; 
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_57&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_57&quot;&gt; Load file&lt;/label&gt;&lt;/li&gt; 
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_58&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_58&quot;&gt; Config&lt;/label&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_59&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_59&quot;&gt; &lt;a href=&quot;https://github.com/pr3y/Bruce/wiki/RFID#supported-modules&quot;&gt;RFID Module&lt;/a&gt;&lt;/label&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_60&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_60&quot;&gt; PN532&lt;/label&gt;&lt;/li&gt; 
      &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_61&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_61&quot;&gt; PN532Killer&lt;/label&gt;&lt;/li&gt; 
     &lt;/ul&gt; &lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_62&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_62&quot;&gt; Emulate tag&lt;/label&gt;&lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;h2&gt;IR&lt;/h2&gt;&lt;/summary&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_63&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_63&quot;&gt; TV-B-Gone&lt;/label&gt;&lt;/li&gt; 
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_64&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_64&quot;&gt; IR Receiver&lt;/label&gt;&lt;/li&gt; 
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_65&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_65&quot;&gt; &lt;a href=&quot;https://github.com/pr3y/Bruce/wiki/IR#replay-payloads-like-flipper&quot;&gt;Custom IR (NEC, NECext, SIRC, SIRC15, SIRC20, Samsung32, RC5, RC5X, RC6)&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_66&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_66&quot;&gt; Config&lt;/label&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_67&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_67&quot;&gt; Ir TX Pin&lt;/label&gt;&lt;/li&gt; 
    &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_68&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_68&quot;&gt; Ir RX Pin&lt;/label&gt;&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;h2&gt;FM&lt;/h2&gt;&lt;/summary&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_69&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_69&quot;&gt; &lt;a href=&quot;https://github.com/pr3y/Bruce/wiki/FM#play_or_pause_button-broadcast-standard&quot;&gt;Broadcast standard&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_70&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_70&quot;&gt; &lt;a href=&quot;https://github.com/pr3y/Bruce/wiki/FM#no_entry_sign-broadcast-rerserved&quot;&gt;Broadcast reserved&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_71&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_71&quot;&gt; &lt;a href=&quot;https://github.com/pr3y/Bruce/wiki/FM#stop_button-broadcast-stop&quot;&gt;Broadcast stop&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_72&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_72&quot;&gt; &lt;a href=&quot;https://github.com/pr3y/Bruce/wiki/FM#ocean-fm-spectrum&quot;&gt;FM Spectrum&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_73&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_73&quot;&gt; &lt;a href=&quot;https://github.com/pr3y/Bruce/wiki/FM#car-hijack-ta&quot;&gt;Hijack Traffic Announcements&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_74&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_74&quot;&gt; &lt;a href=&quot;https://github.com/pr3y/Bruce/wiki/FM#bookmark_tabs-config&quot;&gt;Config&lt;/a&gt;&lt;/label&gt;&lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;h2&gt;NRF24&lt;/h2&gt;&lt;/summary&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_75&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_75&quot;&gt; &lt;a href=&quot;https://github.com/pr3y/Bruce/wiki/BLE#nrf24-jammer&quot;&gt;NRF24 Jammer&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_76&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_76&quot;&gt; 2.4G Spectrum&lt;/label&gt;&lt;/li&gt; 
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_77&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_77&quot;&gt; Mousejack&lt;/label&gt;&lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;h2&gt;Scripts&lt;/h2&gt;&lt;/summary&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_78&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_78&quot;&gt; &lt;a href=&quot;https://github.com/pr3y/Bruce/wiki/Interpreter&quot;&gt;JavaScript Interpreter&lt;/a&gt; &lt;a href=&quot;https://github.com/justinknight93/Doolittle&quot;&gt;Credits to justinknight93&lt;/a&gt;&lt;/label&gt;&lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;h2&gt;Others&lt;/h2&gt;&lt;/summary&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_79&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_79&quot;&gt; Mic Spectrum&lt;/label&gt;&lt;/li&gt; 
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_80&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_80&quot;&gt; QRCodes&lt;/label&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_81&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_81&quot;&gt; Custom&lt;/label&gt;&lt;/li&gt; 
    &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_82&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_82&quot;&gt; PIX (Brazil bank transfer system)&lt;/label&gt;&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_83&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_83&quot;&gt; &lt;a href=&quot;https://github.com/pr3y/Bruce/wiki/Others#sd-card-mngr&quot;&gt;SD Card Mngr&lt;/a&gt;&lt;/label&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_84&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_84&quot;&gt; View image (jpg)&lt;/label&gt;&lt;/li&gt; 
    &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_85&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_85&quot;&gt; File Info&lt;/label&gt;&lt;/li&gt; 
    &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_86&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_86&quot;&gt; &lt;a href=&quot;https://github.com/pr3y/Bruce/wiki/Wardriving#how-to-upload&quot;&gt;Wigle Upload&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_87&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_87&quot;&gt; Play Audio&lt;/label&gt;&lt;/li&gt; 
    &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_88&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_88&quot;&gt; View File&lt;/label&gt;&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_89&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_89&quot;&gt; &lt;a href=&quot;https://github.com/pr3y/Bruce/wiki/Others#littlefs-mngr&quot;&gt;LittleFS Mngr&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_90&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_90&quot;&gt; &lt;a href=&quot;https://github.com/pr3y/Bruce/wiki/Others#webui&quot;&gt;WebUI&lt;/a&gt;&lt;/label&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_91&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_91&quot;&gt; Server Structure&lt;/label&gt;&lt;/li&gt; 
    &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_92&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_92&quot;&gt; Html&lt;/label&gt;&lt;/li&gt; 
    &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_93&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_93&quot;&gt; SDCard Mngr&lt;/label&gt;&lt;/li&gt; 
    &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_94&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_94&quot;&gt; Spiffs Mngr&lt;/label&gt;&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_95&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_95&quot;&gt; Megalodon&lt;/label&gt;&lt;/li&gt; 
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_96&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_96&quot;&gt; &lt;a href=&quot;https://github.com/pr3y/Bruce/wiki/Others#badusb&quot;&gt;BADUsb (New features, LittleFS and SDCard)&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_97&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_97&quot;&gt; USB Keyboard - Cardputer and T-Deck Only&lt;/label&gt;&lt;/li&gt; 
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_98&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_98&quot;&gt; &lt;a href=&quot;https://github.com/pr3y/Bruce/wiki/Others#ibutton&quot;&gt;iButton&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_99&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_99&quot;&gt; &lt;a href=&quot;https://github.com/pr3y/Bruce/wiki/Others#led-control&quot;&gt;LED Control&lt;/a&gt;&lt;/label&gt;&lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;h2&gt;Clock&lt;/h2&gt;&lt;/summary&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_100&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_100&quot;&gt; RTC 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_101&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_101&quot;&gt; NTP time adjust&lt;/label&gt;&lt;/li&gt; 
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_102&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_102&quot;&gt; Manual adjust&lt;/label&gt;&lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;h2&gt;Connect (ESPNOW)&lt;/h2&gt;&lt;/summary&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_103&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_103&quot;&gt; Send File&lt;/label&gt;&lt;/li&gt; 
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_104&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_104&quot;&gt; Receive File&lt;/label&gt;&lt;/li&gt; 
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_105&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_105&quot;&gt; Send Commands&lt;/label&gt;&lt;/li&gt; 
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_106&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_106&quot;&gt; Receive Commands&lt;/label&gt;&lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;h2&gt;Config&lt;/h2&gt;&lt;/summary&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_107&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_107&quot;&gt; Brightness&lt;/label&gt;&lt;/li&gt; 
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_108&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_108&quot;&gt; Dim Time&lt;/label&gt;&lt;/li&gt; 
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_109&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_109&quot;&gt; Orientation&lt;/label&gt;&lt;/li&gt; 
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_110&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_110&quot;&gt; UI Color&lt;/label&gt;&lt;/li&gt; 
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_111&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_111&quot;&gt; Boot Sound on/off&lt;/label&gt;&lt;/li&gt; 
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_112&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_112&quot;&gt; Clock&lt;/label&gt;&lt;/li&gt; 
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_113&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_113&quot;&gt; Sleep&lt;/label&gt;&lt;/li&gt; 
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_114&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_114&quot;&gt; Restart&lt;/label&gt;&lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;h2&gt;Specific functions per Device, the ones not mentioned here are available to all.&lt;/h2&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Device&lt;/th&gt; 
   &lt;th style=&quot;text-align:center&quot;&gt;CC1101&lt;/th&gt; 
   &lt;th style=&quot;text-align:center&quot;&gt;NRF24&lt;/th&gt; 
   &lt;th style=&quot;text-align:center&quot;&gt;FM Radio&lt;/th&gt; 
   &lt;th style=&quot;text-align:center&quot;&gt;PN532&lt;/th&gt; 
   &lt;th style=&quot;text-align:center&quot;&gt;Mic&lt;/th&gt; 
   &lt;th style=&quot;text-align:center&quot;&gt;BadUSB&lt;/th&gt; 
   &lt;th style=&quot;text-align:center&quot;&gt;RGB Led&lt;/th&gt; 
   &lt;th style=&quot;text-align:center&quot;&gt;Speaker&lt;/th&gt; 
   &lt;th style=&quot;text-align:center&quot;&gt;Fuel Guage&lt;/th&gt; 
   &lt;th style=&quot;text-align:center&quot;&gt;LITE_VERSION&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://shop.m5stack.com/products/m5stack-cardputer-kit-w-m5stamps&quot;&gt;M5Stack Cardputer&lt;/a&gt; (and ADV)&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;🆗&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;🆗&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;🆗&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;🆗&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;🆗&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;🆗&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;🆗&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;NS4168&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;❌&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;❌&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://shop.m5stack.com/products/m5stickc-plus2-esp32-mini-iot-development-kit&quot;&gt;M5Stack M5StickC PLUS2&lt;/a&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;🆗&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;🆗&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;🆗&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;🆗&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;🆗&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;🆗¹&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;❌&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;Tone&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;❌&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;❌&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://shop.m5stack.com/products/m5stickc-plus-esp32-pico-mini-iot-development-kit&quot;&gt;M5Stack M5StickC PLUS&lt;/a&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;🆗&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;🆗&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;🆗&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;🆗&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;🆗&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;🆗¹&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;❌&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;Tone&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;❌&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;❌²&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://shop.m5stack.com/products/basic-core-iot-development-kit&quot;&gt;M5Stack M5Core BASIC&lt;/a&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;🆗&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;🆗&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;🆗&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;🆗&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;🆗&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;🆗¹&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;❌&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;Tone&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;❌&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;❌&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://shop.m5stack.com/products/m5stack-core2-esp32-iot-development-kit-v1-1&quot;&gt;M5Stack M5Core2&lt;/a&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;🆗&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;🆗&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;🆗&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;🆗&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;🆗&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;🆗¹&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;❌&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;❌&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;❌&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;❌&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://shop.m5stack.com/products/m5stack-cores3-esp32s3-lotdevelopment-kit&quot;&gt;M5Stack M5CoreS3&lt;/a&gt;/&lt;a href=&quot;https://shop.m5stack.com/products/m5stack-cores3-se-iot-controller-w-o-battery-bottom&quot;&gt;SE&lt;/a&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;🆗&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;🆗&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;🆗&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;🆗&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;❌&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;🆗&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;❌&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;❌&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;❌&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;❌&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://www.aliexpress.us/item/3256804774970998.html&quot;&gt;JCZN CYD‑2432S028&lt;/a&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;🆗&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;🆗&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;🆗&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;🆗&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;❌&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;🆗¹&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;❌&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;❌&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;❌&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;❌²&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://lilygo.cc/products/t-embed-cc1101&quot;&gt;Lilygo T‑Embed CC1101&lt;/a&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;🆗&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;🆗&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;🆗&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;🆗&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;🆗&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;🆗&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;🆗&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;🆗&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;🆗&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;❌&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://lilygo.cc/products/t-embed&quot;&gt;Lilygo T‑Embed&lt;/a&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;🆗&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;🆗&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;🆗&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;🆗&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;🆗&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;🆗&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;🆗&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;🆗&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;❌&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;❌&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://lilygo.cc/products/t-display-s3&quot;&gt;Lilygo T-Display-S3&lt;/a&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;🆗&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;🆗&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;❌&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;❌&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;❌&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;🆗&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;❌&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;❌&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;❌&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;❌&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://lilygo.cc/products/t-deck&quot;&gt;Lilygo T‑Deck&lt;/a&gt; (&lt;a href=&quot;https://lilygo.cc/products/t-deck-plus-1&quot;&gt;and pro&lt;/a&gt;)&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;🆗&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;❌&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;❌&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;❌&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;❌&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;🆗&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;❌&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;❌&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;❌&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;❌&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://lilygo.cc/products/t-watch-s3&quot;&gt;Lilygo T-Watch-S3&lt;/a&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;❌&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;❌&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;❌&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;❌&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;❌&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;🆗&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;❌&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;❌&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;❌&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;❌&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://lilygo.cc/products/t-lora-pager&quot;&gt;Lilygo T-LoRa Pager&lt;/a&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;❌&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;❌&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;❌&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;❌&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;❌&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;🆗&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;❌&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;❌&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;❌&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;❌&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://www.pcbway.com/project/shareproject/Bruce_PCB_Smoochiee_d6a0284b.html&quot;&gt;Smoochiee V2&lt;/a&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;🆗&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;🆗&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;❌&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;🆗&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;❌&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;🆗&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;❌&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;❌&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;❌&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;❌&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://docs.espressif.com/projects/esp-dev-kits/en/latest/esp32c5/esp32-c5-devkitc-1/user_guide.html&quot;&gt;ESP32-C5&lt;/a&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;🆗&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;🆗&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;❌&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;🆗&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;❌&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;❌&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;❌&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;❌&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;❌&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;❌&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://www.elecrow.com/bruce-pcb-rf-reaper.html&quot;&gt;Bruce RF Reaper&lt;/a&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;🆗&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;🆗&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;❌&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;❌ but w/ ST25R3916&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;❌&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;🆗&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;🆗&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;❌&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;🆗&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;❌&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;² CYD have a LITE_VERSION version for Launcher Compatibility ¹ Core, CYD and StickCs Bad-USB: &lt;a href=&quot;https://github.com/pr3y/Bruce/wiki/Others#badusb&quot;&gt;here&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;em&gt;LITE_VERSION&lt;/em&gt;: TelNet, SSH, WireGuard, ScanHosts, RawSniffer, Brucegotchi, BLEBacon, BLEScan and Interpreter are NOT available for M5Launcher Compatibility&lt;/p&gt; 
&lt;h2&gt;✨ Why and how does it look?&lt;/h2&gt; 
&lt;p&gt;Bruce stems from a keen observation within the community focused on devices like Flipper Zero. While these devices offered a glimpse into the world of offensive security, there was a palpable sense that something more could be achieved without being that overpriced, particularly with the robust and modular hardware ecosystem provided by ESP32 Devices, Lilygo and M5Stack products.&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/BruceDevices/firmware/main/media/pictures/pic1.png&quot; alt=&quot;Bruce Main Menu&quot; /&gt; &lt;img src=&quot;https://raw.githubusercontent.com/BruceDevices/firmware/main/media/pictures/core.png&quot; alt=&quot;Bruce on M5Core&quot; /&gt; &lt;img src=&quot;https://raw.githubusercontent.com/BruceDevices/firmware/main/media/pictures/stick.png&quot; alt=&quot;Bruce on Stick&quot; /&gt; &lt;img src=&quot;https://raw.githubusercontent.com/BruceDevices/firmware/main/media/pictures/cyd.png&quot; alt=&quot;Bruce on CYD&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;Other media can be &lt;a href=&quot;https://raw.githubusercontent.com/BruceDevices/firmware/main/media/&quot;&gt;found here&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;👏 Acknowledgements&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/bmorcelli&quot;&gt;@bmorcelli&lt;/a&gt; for new core and a bunch of new features, also porting to many devices!&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/IncursioHack&quot;&gt;@IncursioHack&lt;/a&gt; for adding RF and RFID modules features.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/Luidiblu&quot;&gt;@Luidiblu&lt;/a&gt; for logo and UI design assistance.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/eadmaster&quot;&gt;@eadmaster&lt;/a&gt; for adding a lot of features.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/rennancockles&quot;&gt;@rennancockles&lt;/a&gt; for a lot of RFID code, refactoring and others features.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/7h30th3r0n3&quot;&gt;@7h30th3r0n3&lt;/a&gt; refactoring and a lot of help with WiFi attacks.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/Tawank&quot;&gt;@Tawank&lt;/a&gt; refactoring interpreter among many other things&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;&quot;&gt;@pablonymous&lt;/a&gt; new RF functions to read RAW Data&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;&quot;&gt;Smoochiee&lt;/a&gt; for Bruce PCB design.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;&quot;&gt;TH3_KR4K3N&lt;/a&gt; for Stick cplus extender PCB design.&lt;/li&gt; 
 &lt;li&gt;Everyone who contributed in some way to the project, thanks ❤️&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;🚧 Disclaimer&lt;/h2&gt; 
&lt;p&gt;Bruce is a tool for cyber offensive and red team operations, distributed under the terms of the Affero General Public License (AGPL). It is intended for legal and authorized security testing purposes only. Use of this software for any malicious or unauthorized activities is strictly prohibited. By downloading, installing, or using Bruce, you agree to comply with all applicable laws and regulations. This software is provided free of charge, and we do not accept payments for copies or modifications. The developers of Bruce assume no liability for any misuse of the software. Use at your own risk.&lt;/p&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/1a5897533abfac31989a9b3296256c2835a6a4076298937600307965fd5549aa/BruceDevices/firmware" medium="image" />
      
    </item>
    
    <item>
      <title>meshtastic/firmware</title>
      <link>https://github.com/meshtastic/firmware</link>
      <description>&lt;p&gt;The official firmware for Meshtastic, an open-source, off-grid mesh communication system.&lt;/p&gt;&lt;hr&gt;&lt;div align=&quot;center&quot; markdown=&quot;1&quot;&gt; 
 &lt;img src=&quot;https://raw.githubusercontent.com/meshtastic/firmware/develop/.github/meshtastic_logo.png&quot; alt=&quot;Meshtastic Logo&quot; width=&quot;80&quot; /&gt; 
 &lt;h1&gt;Meshtastic Firmware&lt;/h1&gt; 
 &lt;p&gt;&lt;img src=&quot;https://img.shields.io/github/downloads/meshtastic/firmware/total&quot; alt=&quot;GitHub release downloads&quot; /&gt; &lt;a href=&quot;https://github.com/meshtastic/firmware/actions/workflows/ci.yml&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/actions/workflow/status/meshtastic/firmware/main_matrix.yml?branch=master&amp;amp;label=actions&amp;amp;logo=github&amp;amp;color=yellow&quot; alt=&quot;CI&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://cla-assistant.io/meshtastic/firmware&quot;&gt;&lt;img src=&quot;https://cla-assistant.io/readme/badge/meshtastic/firmware&quot; alt=&quot;CLA assistant&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://opencollective.com/meshtastic/&quot;&gt;&lt;img src=&quot;https://opencollective.com/meshtastic/tiers/badge.svg?label=Fiscal%20Contributors&amp;amp;color=deeppink&quot; alt=&quot;Fiscal Contributors&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://vercel.com?utm_source=meshtastic&amp;amp;utm_campaign=oss&quot;&gt;&lt;img src=&quot;https://img.shields.io/static/v1?label=Powered%20by&amp;amp;message=Vercel&amp;amp;style=flat&amp;amp;logo=vercel&amp;amp;color=000000&quot; alt=&quot;Vercel&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
 &lt;p&gt;&lt;a href=&quot;https://trendshift.io/repositories/5524&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;https://trendshift.io/api/badge/repositories/5524&quot; alt=&quot;meshtastic%2Ffirmware | Trendshift&quot; style=&quot;width: 250px; height: 55px;&quot; width=&quot;250&quot; height=&quot;55&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;/div&gt;  
&lt;div align=&quot;center&quot;&gt; 
 &lt;a href=&quot;https://meshtastic.org&quot;&gt;Website&lt;/a&gt; - 
 &lt;a href=&quot;https://meshtastic.org/docs/&quot;&gt;Documentation&lt;/a&gt; 
&lt;/div&gt; 
&lt;h2&gt;Overview&lt;/h2&gt; 
&lt;p&gt;This repository contains the official device firmware for Meshtastic, an open-source LoRa mesh networking project designed for long-range, low-power communication without relying on internet or cellular infrastructure. The firmware supports various hardware platforms, including ESP32, nRF52, RP2040/RP2350, and Linux-based devices.&lt;/p&gt; 
&lt;p&gt;Meshtastic enables text messaging, location sharing, and telemetry over a decentralized mesh network, making it ideal for outdoor adventures, emergency preparedness, and remote operations.&lt;/p&gt; 
&lt;h3&gt;Get Started&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;🔧 &lt;strong&gt;&lt;a href=&quot;https://meshtastic.org/docs/development/firmware/build&quot;&gt;Building Instructions&lt;/a&gt;&lt;/strong&gt; – Learn how to compile the firmware from source.&lt;/li&gt; 
 &lt;li&gt;⚡ &lt;strong&gt;&lt;a href=&quot;https://meshtastic.org/docs/getting-started/flashing-firmware/&quot;&gt;Flashing Instructions&lt;/a&gt;&lt;/strong&gt; – Install or update the firmware on your device.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Join our community and help improve Meshtastic! 🚀&lt;/p&gt; 
&lt;h2&gt;Stats&lt;/h2&gt; 
&lt;p&gt;&lt;img src=&quot;https://repobeats.axiom.co/api/embed/8025e56c482ec63541593cc5bd322c19d5c0bdcf.svg?sanitize=true&quot; alt=&quot;Alt&quot; title=&quot;Repobeats analytics image&quot; /&gt;&lt;/p&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/32bbfc3bcb198bc89123523aac9f07580c6bfb01c6adc75b9898181b7d1d4312/meshtastic/firmware" medium="image" />
      
    </item>
    
    <item>
      <title>nlohmann/json</title>
      <link>https://github.com/nlohmann/json</link>
      <description>&lt;p&gt;JSON for Modern C++&lt;/p&gt;&lt;hr&gt;&lt;p&gt;&lt;a href=&quot;https://github.com/nlohmann/json/releases&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/nlohmann/json/develop/docs/mkdocs/docs/images/json.gif&quot; alt=&quot;JSON for Modern C++&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://ci.appveyor.com/project/nlohmann/json&quot;&gt;&lt;img src=&quot;https://ci.appveyor.com/api/projects/status/1acb366xfyg3qybk/branch/develop?svg=true&quot; alt=&quot;Build Status&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/nlohmann/json/actions?query=workflow%3AUbuntu&quot;&gt;&lt;img src=&quot;https://github.com/nlohmann/json/workflows/Ubuntu/badge.svg?sanitize=true&quot; alt=&quot;Ubuntu&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/nlohmann/json/actions?query=workflow%3AmacOS&quot;&gt;&lt;img src=&quot;https://github.com/nlohmann/json/workflows/macOS/badge.svg?sanitize=true&quot; alt=&quot;macOS&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/nlohmann/json/actions?query=workflow%3AWindows&quot;&gt;&lt;img src=&quot;https://github.com/nlohmann/json/workflows/Windows/badge.svg?sanitize=true&quot; alt=&quot;Windows&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://coveralls.io/github/nlohmann/json?branch=develop&quot;&gt;&lt;img src=&quot;https://coveralls.io/repos/github/nlohmann/json/badge.svg?branch=develop&quot; alt=&quot;Coverage Status&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://scan.coverity.com/projects/nlohmann-json&quot;&gt;&lt;img src=&quot;https://scan.coverity.com/projects/5550/badge.svg?sanitize=true&quot; alt=&quot;Coverity Scan Build Status&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://app.codacy.com/gh/nlohmann/json/dashboard?utm_source=gh&amp;amp;utm_medium=referral&amp;amp;utm_content=&amp;amp;utm_campaign=Badge_grade&quot;&gt;&lt;img src=&quot;https://app.codacy.com/project/badge/Grade/e0d1a9d5d6fd46fcb655c4cb930bb3e8&quot; alt=&quot;Codacy Badge&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://cirrus-ci.com/github/nlohmann/json&quot;&gt;&lt;img src=&quot;https://api.cirrus-ci.com/github/nlohmann/json.svg?sanitize=true&quot; alt=&quot;Cirrus CI&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://bugs.chromium.org/p/oss-fuzz/issues/list?sort=-opened&amp;amp;can=1&amp;amp;q=proj:json&quot;&gt;&lt;img src=&quot;https://oss-fuzz-build-logs.storage.googleapis.com/badges/json.svg?sanitize=true&quot; alt=&quot;Fuzzing Status&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://wandbox.org/permlink/1mp10JbaANo6FUc7&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/try-online-blue.svg?sanitize=true&quot; alt=&quot;Try online&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://json.nlohmann.me&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/docs-mkdocs-blue.svg?sanitize=true&quot; alt=&quot;Documentation&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://raw.githubusercontent.com/nlohmann/json/master/LICENSE.MIT&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/license-MIT-blue.svg?sanitize=true&quot; alt=&quot;GitHub license&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/nlohmann/json/releases&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/release/nlohmann/json.svg?sanitize=true&quot; alt=&quot;GitHub Releases&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://repology.org/project/nlohmann-json/versions&quot;&gt;&lt;img src=&quot;https://repology.org/badge/tiny-repos/nlohmann-json.svg?sanitize=true&quot; alt=&quot;Packaging status&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/nlohmann/json/releases&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/downloads/nlohmann/json/total&quot; alt=&quot;GitHub Downloads&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/nlohmann/json/issues&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/issues/nlohmann/json.svg?sanitize=true&quot; alt=&quot;GitHub Issues&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://isitmaintained.com/project/nlohmann/json&quot; title=&quot;Average time to resolve an issue&quot;&gt;&lt;img src=&quot;https://isitmaintained.com/badge/resolution/nlohmann/json.svg?sanitize=true&quot; alt=&quot;Average time to resolve an issue&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://bestpractices.coreinfrastructure.org/projects/289&quot;&gt;&lt;img src=&quot;https://bestpractices.coreinfrastructure.org/projects/289/badge&quot; alt=&quot;CII Best Practices&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://scorecard.dev/viewer/?uri=github.com/nlohmann/json&quot;&gt;&lt;img src=&quot;https://api.scorecard.dev/projects/github.com/nlohmann/json/badge&quot; alt=&quot;OpenSSF Scorecard&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://cloudback.it&quot;&gt;&lt;img src=&quot;https://app.cloudback.it/badge/nlohmann/json&quot; alt=&quot;Backup Status&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/sponsors/nlohmann&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/GitHub-Sponsors-ff69b4&quot; alt=&quot;GitHub Sponsors&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://api.reuse.software/info/github.com/nlohmann/json&quot;&gt;&lt;img src=&quot;https://api.reuse.software/badge/github.com/nlohmann/json&quot; alt=&quot;REUSE status&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://discord.gg/6mrGXKvX7y&quot;&gt;&lt;img src=&quot;https://img.shields.io/discord/1003743314341793913&quot; alt=&quot;Discord&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/nlohmann/json/develop/#design-goals&quot;&gt;Design goals&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/nlohmann/json/develop/#sponsors&quot;&gt;Sponsors&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/nlohmann/json/develop/#support&quot;&gt;Support&lt;/a&gt; (&lt;a href=&quot;https://json.nlohmann.me&quot;&gt;documentation&lt;/a&gt;, &lt;a href=&quot;https://json.nlohmann.me/home/faq/&quot;&gt;FAQ&lt;/a&gt;, &lt;a href=&quot;https://github.com/nlohmann/json/discussions&quot;&gt;discussions&lt;/a&gt;, &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/&quot;&gt;API&lt;/a&gt;, &lt;a href=&quot;https://github.com/nlohmann/json/issues&quot;&gt;bug issues&lt;/a&gt;)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/nlohmann/json/develop/#quick-reference&quot;&gt;Quick reference&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/nlohmann/json/develop/#examples&quot;&gt;Examples&lt;/a&gt; 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/nlohmann/json/develop/#read-json-from-a-file&quot;&gt;Read JSON from a file&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/nlohmann/json/develop/#creating-json-objects-from-json-literals&quot;&gt;Creating &lt;code&gt;json&lt;/code&gt; objects from JSON literals&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/nlohmann/json/develop/#json-as-a-first-class-data-type&quot;&gt;JSON as a first-class data type&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/nlohmann/json/develop/#serialization--deserialization&quot;&gt;Serialization / Deserialization&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/nlohmann/json/develop/#stl-like-access&quot;&gt;STL-like access&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/nlohmann/json/develop/#conversion-from-stl-containers&quot;&gt;Conversion from STL containers&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/nlohmann/json/develop/#json-pointer-and-json-patch&quot;&gt;JSON Pointer and JSON Patch&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/nlohmann/json/develop/#json-merge-patch&quot;&gt;JSON Merge Patch&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/nlohmann/json/develop/#implicit-conversions&quot;&gt;Implicit conversions&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/nlohmann/json/develop/#arbitrary-types-conversions&quot;&gt;Conversions to/from arbitrary types&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/nlohmann/json/develop/#specializing-enum-conversion&quot;&gt;Specializing enum conversion&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/nlohmann/json/develop/#binary-formats-bson-cbor-messagepack-ubjson-and-bjdata&quot;&gt;Binary formats (BSON, CBOR, MessagePack, UBJSON, and BJData)&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/nlohmann/json/develop/#customers&quot;&gt;Customers&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/nlohmann/json/develop/#supported-compilers&quot;&gt;Supported compilers&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/nlohmann/json/develop/#integration&quot;&gt;Integration&lt;/a&gt; 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/nlohmann/json/develop/#cmake&quot;&gt;CMake&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/nlohmann/json/develop/#package-managers&quot;&gt;Package Managers&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/nlohmann/json/develop/#pkg-config&quot;&gt;Pkg-config&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/nlohmann/json/develop/#license&quot;&gt;License&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/nlohmann/json/develop/#contact&quot;&gt;Contact&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/nlohmann/json/develop/#thanks&quot;&gt;Thanks&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/nlohmann/json/develop/#used-third-party-tools&quot;&gt;Used third-party tools&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/nlohmann/json/develop/#notes&quot;&gt;Notes&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/nlohmann/json/develop/#execute-unit-tests&quot;&gt;Execute unit tests&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Design goals&lt;/h2&gt; 
&lt;p&gt;There are myriads of &lt;a href=&quot;https://json.org&quot;&gt;JSON&lt;/a&gt; libraries out there, and each may even have its reason to exist. Our class had these design goals:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;Intuitive syntax&lt;/strong&gt;. In languages such as Python, JSON feels like a first-class data type. We used all the operator magic of modern C++ to achieve the same feeling in your code. Check out the &lt;a href=&quot;https://raw.githubusercontent.com/nlohmann/json/develop/#examples&quot;&gt;examples below&lt;/a&gt; and you&#39;ll know what I mean.&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;Trivial integration&lt;/strong&gt;. Our whole code consists of a single header file &lt;a href=&quot;https://github.com/nlohmann/json/raw/develop/single_include/nlohmann/json.hpp&quot;&gt;&lt;code&gt;json.hpp&lt;/code&gt;&lt;/a&gt;. That&#39;s it. No library, no subproject, no dependencies, no complex build system. The class is written in vanilla C++11. All in all, everything should require no adjustment of your compiler flags or project settings. The library is also included in all popular &lt;a href=&quot;https://json.nlohmann.me/integration/package_managers/&quot;&gt;package managers&lt;/a&gt;.&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;Serious testing&lt;/strong&gt;. Our code is heavily &lt;a href=&quot;https://github.com/nlohmann/json/tree/develop/tests/src&quot;&gt;unit-tested&lt;/a&gt; and covers &lt;a href=&quot;https://coveralls.io/r/nlohmann/json&quot;&gt;100%&lt;/a&gt; of the code, including all exceptional behavior. Furthermore, we checked with &lt;a href=&quot;https://valgrind.org&quot;&gt;Valgrind&lt;/a&gt; and the &lt;a href=&quot;https://clang.llvm.org/docs/index.html&quot;&gt;Clang Sanitizers&lt;/a&gt; that there are no memory leaks. &lt;a href=&quot;https://github.com/google/oss-fuzz/tree/master/projects/json&quot;&gt;Google OSS-Fuzz&lt;/a&gt; additionally runs fuzz tests against all parsers 24/7, effectively executing billions of tests so far. To maintain high quality, the project is following the &lt;a href=&quot;https://bestpractices.coreinfrastructure.org/projects/289&quot;&gt;Core Infrastructure Initiative (CII) best practices&lt;/a&gt;. See the &lt;a href=&quot;https://json.nlohmann.me/community/quality_assurance&quot;&gt;quality assurance&lt;/a&gt; overview documentation.&lt;/p&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Other aspects were not so important to us:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;Memory efficiency&lt;/strong&gt;. Each JSON object has an overhead of one pointer (the maximal size of a union) and one enumeration element (1 byte). The default generalization uses the following C++ data types: &lt;code&gt;std::string&lt;/code&gt; for strings, &lt;code&gt;int64_t&lt;/code&gt;, &lt;code&gt;uint64_t&lt;/code&gt; or &lt;code&gt;double&lt;/code&gt; for numbers, &lt;code&gt;std::map&lt;/code&gt; for objects, &lt;code&gt;std::vector&lt;/code&gt; for arrays, and &lt;code&gt;bool&lt;/code&gt; for Booleans. However, you can template the generalized class &lt;code&gt;basic_json&lt;/code&gt; to your needs.&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;Speed&lt;/strong&gt;. There are certainly &lt;a href=&quot;https://github.com/miloyip/nativejson-benchmark#parsing-time&quot;&gt;faster JSON libraries&lt;/a&gt; out there. However, if your goal is to speed up your development by adding JSON support with a single header, then this library is the way to go. If you know how to use a &lt;code&gt;std::vector&lt;/code&gt; or &lt;code&gt;std::map&lt;/code&gt;, you are already set.&lt;/p&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;See the &lt;a href=&quot;https://github.com/nlohmann/json/raw/master/.github/CONTRIBUTING.md#please-dont&quot;&gt;contribution guidelines&lt;/a&gt; for more information.&lt;/p&gt; 
&lt;h2&gt;Sponsors&lt;/h2&gt; 
&lt;p&gt;You can sponsor this library at &lt;a href=&quot;https://github.com/sponsors/nlohmann&quot;&gt;GitHub Sponsors&lt;/a&gt;.&lt;/p&gt; 
&lt;h3&gt;🙋 Priority Sponsor&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/codeclown&quot;&gt;Martti Laine&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/phrrngtn&quot;&gt;Paul Harrington&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/mercedes-benz&quot;&gt;Mercedes-Benz Group&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/mccaffers&quot;&gt;Ryan McCaffery&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;🏷️ Named Sponsors&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/reFX-Mike&quot;&gt;Michael Hartmann&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/sthagen&quot;&gt;Stefan Hagen&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/homer6&quot;&gt;Steve Sperandeo&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/eljefedelrodeodeljefe&quot;&gt;Robert Jefe Lindstädt&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/ciroque&quot;&gt;Steve Wagner&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/LionNatsu&quot;&gt;Lion Yang&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Further support&lt;/h3&gt; 
&lt;p&gt;The development of the library is further supported by JetBrains by providing free access to their IDE tools.&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://jb.gg/OpenSourceSupport&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; 
&lt;p&gt;Thanks everyone!&lt;/p&gt; 
&lt;h2&gt;Support&lt;/h2&gt; 
&lt;p&gt;❓ If you have a &lt;strong&gt;question&lt;/strong&gt;, please check if it is already answered in the &lt;a href=&quot;https://json.nlohmann.me/home/faq/&quot;&gt;&lt;strong&gt;FAQ&lt;/strong&gt;&lt;/a&gt; or the &lt;a href=&quot;https://github.com/nlohmann/json/discussions/categories/q-a&quot;&gt;&lt;strong&gt;Q&amp;amp;A&lt;/strong&gt;&lt;/a&gt; section. If not, please &lt;a href=&quot;https://github.com/nlohmann/json/discussions/new&quot;&gt;&lt;strong&gt;ask a new question&lt;/strong&gt;&lt;/a&gt; there.&lt;/p&gt; 
&lt;p&gt;📚 If you want to &lt;strong&gt;learn more&lt;/strong&gt; about how to use the library, check out the rest of the &lt;a href=&quot;https://raw.githubusercontent.com/nlohmann/json/develop/#examples&quot;&gt;&lt;strong&gt;README&lt;/strong&gt;&lt;/a&gt;, have a look at &lt;a href=&quot;https://github.com/nlohmann/json/tree/develop/docs/mkdocs/docs/examples&quot;&gt;&lt;strong&gt;code examples&lt;/strong&gt;&lt;/a&gt;, or browse through the &lt;a href=&quot;https://json.nlohmann.me&quot;&gt;&lt;strong&gt;help pages&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;🚧 If you want to understand the &lt;strong&gt;API&lt;/strong&gt; better, check out the &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/&quot;&gt;&lt;strong&gt;API Reference&lt;/strong&gt;&lt;/a&gt; or have a look at the &lt;a href=&quot;https://raw.githubusercontent.com/nlohmann/json/develop/#quick-reference&quot;&gt;quick reference&lt;/a&gt; below.&lt;/p&gt; 
&lt;p&gt;🐛 If you found a &lt;strong&gt;bug&lt;/strong&gt;, please check the &lt;a href=&quot;https://json.nlohmann.me/home/faq/&quot;&gt;&lt;strong&gt;FAQ&lt;/strong&gt;&lt;/a&gt; if it is a known issue or the result of a design decision. Please also have a look at the &lt;a href=&quot;https://github.com/nlohmann/json/issues&quot;&gt;&lt;strong&gt;issue list&lt;/strong&gt;&lt;/a&gt; before you &lt;a href=&quot;https://github.com/nlohmann/json/issues/new/choose&quot;&gt;&lt;strong&gt;create a new issue&lt;/strong&gt;&lt;/a&gt;. Please provide as much information as possible to help us understand and reproduce your issue.&lt;/p&gt; 
&lt;p&gt;There is also a &lt;a href=&quot;https://github.com/Kapeli/Dash-User-Contributions/tree/master/docsets/JSON_for_Modern_C%2B%2B&quot;&gt;&lt;strong&gt;docset&lt;/strong&gt;&lt;/a&gt; for the documentation browsers &lt;a href=&quot;https://kapeli.com/dash&quot;&gt;Dash&lt;/a&gt;, &lt;a href=&quot;https://velocity.silverlakesoftware.com&quot;&gt;Velocity&lt;/a&gt;, and &lt;a href=&quot;https://zealdocs.org&quot;&gt;Zeal&lt;/a&gt; that contains the full &lt;a href=&quot;https://json.nlohmann.me&quot;&gt;documentation&lt;/a&gt; as an offline resource.&lt;/p&gt; 
&lt;h2&gt;Quick reference&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Constructors&lt;/strong&gt; &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/basic_json&quot;&gt;basic_json&lt;/a&gt;, &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/array&quot;&gt;array&lt;/a&gt;, &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/binary&quot;&gt;binary&lt;/a&gt;, &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/object&quot;&gt;object&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Object inspection&lt;/strong&gt;: &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/type&quot;&gt;type&lt;/a&gt;, &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/operator_value_t&quot;&gt;operator value_t&lt;/a&gt;, &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/type_name&quot;&gt;type_name&lt;/a&gt;, &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/is_primitive&quot;&gt;is_primitive&lt;/a&gt;, &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/is_structured&quot;&gt;is_structured&lt;/a&gt;, &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/is_null&quot;&gt;is_null&lt;/a&gt;, &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/is_boolean&quot;&gt;is_boolean&lt;/a&gt;, &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/is_number&quot;&gt;is_number&lt;/a&gt;, &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/is_number_integer&quot;&gt;is_number_integer&lt;/a&gt;, &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/is_number_unsigned&quot;&gt;is_number_unsigned&lt;/a&gt;, &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/is_number_float&quot;&gt;is_number_float&lt;/a&gt;, &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/is_object&quot;&gt;is_object&lt;/a&gt;, &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/is_array&quot;&gt;is_array&lt;/a&gt;, &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/is_string&quot;&gt;is_string&lt;/a&gt;, &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/is_binary&quot;&gt;is_binary&lt;/a&gt;, &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/is_discarded&quot;&gt;is_discarded&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Value access&lt;/strong&gt;; &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/get&quot;&gt;get&lt;/a&gt;, &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/get_to&quot;&gt;get_to&lt;/a&gt;, &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/get_ptr&quot;&gt;get_ptr&lt;/a&gt;, &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/get_ref&quot;&gt;get_ref&lt;/a&gt;, &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/operator_ValueType&quot;&gt;operator ValueType&lt;/a&gt;, &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/get_binary&quot;&gt;get_binary&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Element access&lt;/strong&gt;: &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/at&quot;&gt;at&lt;/a&gt;, &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/operator%5B%5D&quot;&gt;operator[]&lt;/a&gt;, &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/value&quot;&gt;value&lt;/a&gt;, &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/front&quot;&gt;front&lt;/a&gt;, &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/back&quot;&gt;back&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Lookup&lt;/strong&gt;: &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/find&quot;&gt;find&lt;/a&gt;, &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/count&quot;&gt;count&lt;/a&gt;, &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/contains&quot;&gt;contains&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Iterators&lt;/strong&gt;: &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/begin&quot;&gt;begin&lt;/a&gt;, &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/cbegin&quot;&gt;cbegin&lt;/a&gt;, &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/end&quot;&gt;end&lt;/a&gt;, &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/cend&quot;&gt;cend&lt;/a&gt;, &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/rbegin&quot;&gt;rbegin&lt;/a&gt;, &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/rend&quot;&gt;rend&lt;/a&gt;, &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/crbegin&quot;&gt;crbegin&lt;/a&gt;, &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/crend&quot;&gt;crend&lt;/a&gt;, &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/items&quot;&gt;items&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Capacity&lt;/strong&gt;: &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/empty&quot;&gt;empty&lt;/a&gt;, &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/size&quot;&gt;size&lt;/a&gt;, &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/max_size&quot;&gt;max_size&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Modifiers&lt;/strong&gt;: &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/clear&quot;&gt;clear&lt;/a&gt;, &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/push_back&quot;&gt;push_back&lt;/a&gt;, &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/operator+=&quot;&gt;operator+=&lt;/a&gt;, &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/emplace_back&quot;&gt;emplace_back&lt;/a&gt;, &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/emplace&quot;&gt;emplace&lt;/a&gt;, &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/erase&quot;&gt;erase&lt;/a&gt;, &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/insert&quot;&gt;insert&lt;/a&gt;, &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/update&quot;&gt;update&lt;/a&gt;, &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/swap&quot;&gt;swap&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Lexicographical comparison operators&lt;/strong&gt;: &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/operator_eq&quot;&gt;operator==&lt;/a&gt;, &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/operator_ne&quot;&gt;operator!=&lt;/a&gt;, &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/operator_lt&quot;&gt;operator&amp;lt;&lt;/a&gt;, &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/operator_gt&quot;&gt;operator&amp;gt;&lt;/a&gt;, &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/operator_le&quot;&gt;operator&amp;lt;=&lt;/a&gt;, &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/operator_ge&quot;&gt;operator&amp;gt;=&lt;/a&gt;, &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/operator_spaceship&quot;&gt;operator&amp;lt;=&amp;gt;&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Serialization / Dumping&lt;/strong&gt;: &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/dump&quot;&gt;dump&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Deserialization / Parsing&lt;/strong&gt;: &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/parse&quot;&gt;parse&lt;/a&gt;, &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/accept&quot;&gt;accept&lt;/a&gt;, &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/sax_parse&quot;&gt;sax_parse&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;JSON Pointer functions&lt;/strong&gt;: &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/flatten&quot;&gt;flatten&lt;/a&gt;, &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/unflatten&quot;&gt;unflatten&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;JSON Patch functions&lt;/strong&gt;: &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/patch&quot;&gt;patch&lt;/a&gt;, &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/patch_inplace&quot;&gt;patch_inplace&lt;/a&gt;, &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/diff&quot;&gt;diff&lt;/a&gt;, &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/merge_patch&quot;&gt;merge_patch&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Static functions&lt;/strong&gt;: &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/meta&quot;&gt;meta&lt;/a&gt;, &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/get_allocator&quot;&gt;get_allocator&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Binary formats&lt;/strong&gt;: &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/from_bjdata&quot;&gt;from_bjdata&lt;/a&gt;, &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/from_bson&quot;&gt;from_bson&lt;/a&gt;, &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/from_cbor&quot;&gt;from_cbor&lt;/a&gt;, &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/from_msgpack&quot;&gt;from_msgpack&lt;/a&gt;, &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/from_ubjson&quot;&gt;from_ubjson&lt;/a&gt;, &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/to_bjdata&quot;&gt;to_bjdata&lt;/a&gt;, &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/to_bson&quot;&gt;to_bson&lt;/a&gt;, &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/to_cbor&quot;&gt;to_cbor&lt;/a&gt;, &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/to_msgpack&quot;&gt;to_msgpack&lt;/a&gt;, &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/to_ubjson&quot;&gt;to_ubjson&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Non-member functions&lt;/strong&gt;: &lt;a href=&quot;https://json.nlohmann.me/api/operator_ltlt/&quot;&gt;operator&amp;lt;&amp;lt;&lt;/a&gt;, &lt;a href=&quot;https://json.nlohmann.me/api/operator_gtgt/&quot;&gt;operator&amp;gt;&amp;gt;&lt;/a&gt;, &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/to_string&quot;&gt;to_string&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Literals&lt;/strong&gt;: &lt;a href=&quot;https://json.nlohmann.me/api/operator_literal_json&quot;&gt;operator&quot;&quot;_json&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Helper classes&lt;/strong&gt;: &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/std_hash&quot;&gt;std::hash&amp;lt;basic_json&amp;gt;&lt;/a&gt;, &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/std_swap&quot;&gt;std::swap&amp;lt;basic_json&amp;gt;&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;a href=&quot;https://json.nlohmann.me/api/basic_json/&quot;&gt;&lt;strong&gt;Full API documentation&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;Examples&lt;/h2&gt; 
&lt;p&gt;Here are some examples to give you an idea how to use the class.&lt;/p&gt; 
&lt;p&gt;Besides the examples below, you may want to:&lt;/p&gt; 
&lt;p&gt;→ Check the &lt;a href=&quot;https://json.nlohmann.me/&quot;&gt;documentation&lt;/a&gt;&lt;br /&gt; → Browse the &lt;a href=&quot;https://github.com/nlohmann/json/tree/develop/docs/mkdocs/docs/examples&quot;&gt;standalone example files&lt;/a&gt;&lt;br /&gt; → Read the full &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/&quot;&gt;API Documentation&lt;/a&gt; with self-contained examples for every function&lt;/p&gt; 
&lt;h3&gt;Read JSON from a file&lt;/h3&gt; 
&lt;p&gt;The &lt;code&gt;json&lt;/code&gt; class provides an API for manipulating a JSON value. To create a &lt;code&gt;json&lt;/code&gt; object by reading a JSON file:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-cpp&quot;&gt;#include &amp;lt;fstream&amp;gt;
#include &amp;lt;nlohmann/json.hpp&amp;gt;
using json = nlohmann::json;

// ...

std::ifstream f(&quot;example.json&quot;);
json data = json::parse(f);
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;If using modules (enabled with &lt;code&gt;NLOHMANN_JSON_BUILD_MODULES&lt;/code&gt;), this example becomes:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-cpp&quot;&gt;import std;
import nlohmann.json;

using json = nlohmann::json;

// ...

std::ifstream f(&quot;example.json&quot;);
json data = json::parse(f);
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Creating &lt;code&gt;json&lt;/code&gt; objects from JSON literals&lt;/h3&gt; 
&lt;p&gt;Assume you want to hard-code this literal JSON value as a &lt;code&gt;json&lt;/code&gt; object:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;{
  &quot;pi&quot;: 3.141,
  &quot;happy&quot;: true
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;There are various options:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-cpp&quot;&gt;// Using (raw) string literals and json::parse
json ex1 = json::parse(R&quot;(
  {
    &quot;pi&quot;: 3.141,
    &quot;happy&quot;: true
  }
)&quot;);

// Using user-defined (raw) string literals
using namespace nlohmann::literals;
json ex2 = R&quot;(
  {
    &quot;pi&quot;: 3.141,
    &quot;happy&quot;: true
  }
)&quot;_json;

// Using initializer lists
json ex3 = {
  {&quot;happy&quot;, true},
  {&quot;pi&quot;, 3.141},
};
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;JSON as a first-class data type&lt;/h3&gt; 
&lt;p&gt;Here are some examples to give you an idea how to use the class.&lt;/p&gt; 
&lt;p&gt;Assume you want to create the JSON object&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;{
  &quot;pi&quot;: 3.141,
  &quot;happy&quot;: true,
  &quot;name&quot;: &quot;Niels&quot;,
  &quot;nothing&quot;: null,
  &quot;answer&quot;: {
    &quot;everything&quot;: 42
  },
  &quot;list&quot;: [1, 0, 2],
  &quot;object&quot;: {
    &quot;currency&quot;: &quot;USD&quot;,
    &quot;value&quot;: 42.99
  }
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;With this library, you could write:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-cpp&quot;&gt;// create an empty structure (null)
json j;

// add a number stored as double (note the implicit conversion of j to an object)
j[&quot;pi&quot;] = 3.141;

// add a Boolean stored as bool
j[&quot;happy&quot;] = true;

// add a string stored as std::string
j[&quot;name&quot;] = &quot;Niels&quot;;

// add another null object by passing nullptr
j[&quot;nothing&quot;] = nullptr;

// add an object inside the object
j[&quot;answer&quot;][&quot;everything&quot;] = 42;

// add an array stored as std::vector (using an initializer list)
j[&quot;list&quot;] = { 1, 0, 2 };

// add another object (using an initializer list of pairs)
j[&quot;object&quot;] = { {&quot;currency&quot;, &quot;USD&quot;}, {&quot;value&quot;, 42.99} };

// instead, you could also write (which looks very similar to the JSON above)
json j2 = {
  {&quot;pi&quot;, 3.141},
  {&quot;happy&quot;, true},
  {&quot;name&quot;, &quot;Niels&quot;},
  {&quot;nothing&quot;, nullptr},
  {&quot;answer&quot;, {
    {&quot;everything&quot;, 42}
  }},
  {&quot;list&quot;, {1, 0, 2}},
  {&quot;object&quot;, {
    {&quot;currency&quot;, &quot;USD&quot;},
    {&quot;value&quot;, 42.99}
  }}
};
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Note that in all these cases, you never need to &quot;tell&quot; the compiler which JSON value type you want to use. If you want to be explicit or express some edge cases, the functions &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/array/&quot;&gt;&lt;code&gt;json::array()&lt;/code&gt;&lt;/a&gt; and &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/object/&quot;&gt;&lt;code&gt;json::object()&lt;/code&gt;&lt;/a&gt; will help:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-cpp&quot;&gt;// a way to express the empty array []
json empty_array_explicit = json::array();

// ways to express the empty object {}
json empty_object_implicit = json({});
json empty_object_explicit = json::object();

// a way to express an _array_ of key/value pairs [[&quot;currency&quot;, &quot;USD&quot;], [&quot;value&quot;, 42.99]]
json array_not_object = json::array({ {&quot;currency&quot;, &quot;USD&quot;}, {&quot;value&quot;, 42.99} });
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Serialization / Deserialization&lt;/h3&gt; 
&lt;h4&gt;To/from strings&lt;/h4&gt; 
&lt;p&gt;You can create a JSON value (deserialization) by appending &lt;code&gt;_json&lt;/code&gt; to a string literal:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-cpp&quot;&gt;// create object from string literal
json j = &quot;{ \&quot;happy\&quot;: true, \&quot;pi\&quot;: 3.141 }&quot;_json;

// or even nicer with a raw string literal
auto j2 = R&quot;(
  {
    &quot;happy&quot;: true,
    &quot;pi&quot;: 3.141
  }
)&quot;_json;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Note that without appending the &lt;code&gt;_json&lt;/code&gt; suffix, the passed string literal is not parsed, but just used as JSON string value. That is, &lt;code&gt;json j = &quot;{ \&quot;happy\&quot;: true, \&quot;pi\&quot;: 3.141 }&quot;&lt;/code&gt; would just store the string &lt;code&gt;&quot;{ &quot;happy&quot;: true, &quot;pi&quot;: 3.141 }&quot;&lt;/code&gt; rather than parsing the actual object.&lt;/p&gt; 
&lt;p&gt;The string literal should be brought into scope with &lt;code&gt;using namespace nlohmann::literals;&lt;/code&gt; (see &lt;a href=&quot;https://json.nlohmann.me/api/operator_literal_json/&quot;&gt;&lt;code&gt;json::parse()&lt;/code&gt;&lt;/a&gt;).&lt;/p&gt; 
&lt;p&gt;The above example can also be expressed explicitly using &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/parse/&quot;&gt;&lt;code&gt;json::parse()&lt;/code&gt;&lt;/a&gt;:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-cpp&quot;&gt;// parse explicitly
auto j3 = json::parse(R&quot;({&quot;happy&quot;: true, &quot;pi&quot;: 3.141})&quot;);
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;You can also get a string representation of a JSON value (serialize):&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-cpp&quot;&gt;// explicit conversion to string
std::string s = j.dump();    // {&quot;happy&quot;:true,&quot;pi&quot;:3.141}

// serialization with pretty printing
// pass in the amount of spaces to indent
std::cout &amp;lt;&amp;lt; j.dump(4) &amp;lt;&amp;lt; std::endl;
// {
//     &quot;happy&quot;: true,
//     &quot;pi&quot;: 3.141
// }
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Note the difference between serialization and assignment:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-cpp&quot;&gt;// store a string in a JSON value
json j_string = &quot;this is a string&quot;;

// retrieve the string value
auto cpp_string = j_string.get&amp;lt;std::string&amp;gt;();
// retrieve the string value (alternative when a variable already exists)
std::string cpp_string2;
j_string.get_to(cpp_string2);

// retrieve the serialized value (explicit JSON serialization)
std::string serialized_string = j_string.dump();

// output of original string
std::cout &amp;lt;&amp;lt; cpp_string &amp;lt;&amp;lt; &quot; == &quot; &amp;lt;&amp;lt; cpp_string2 &amp;lt;&amp;lt; &quot; == &quot; &amp;lt;&amp;lt; j_string.get&amp;lt;std::string&amp;gt;() &amp;lt;&amp;lt; &#39;\n&#39;;
// output of serialized value
std::cout &amp;lt;&amp;lt; j_string &amp;lt;&amp;lt; &quot; == &quot; &amp;lt;&amp;lt; serialized_string &amp;lt;&amp;lt; std::endl;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;a href=&quot;https://json.nlohmann.me/api/basic_json/dump/&quot;&gt;&lt;code&gt;.dump()&lt;/code&gt;&lt;/a&gt; returns the originally stored string value.&lt;/p&gt; 
&lt;p&gt;Note the library only supports UTF-8. When you store strings with different encodings in the library, calling &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/dump/&quot;&gt;&lt;code&gt;dump()&lt;/code&gt;&lt;/a&gt; may throw an exception unless &lt;code&gt;json::error_handler_t::replace&lt;/code&gt; or &lt;code&gt;json::error_handler_t::ignore&lt;/code&gt; are used as error handlers.&lt;/p&gt; 
&lt;h4&gt;To/from streams (e.g., files, string streams)&lt;/h4&gt; 
&lt;p&gt;You can also use streams to serialize and deserialize:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-cpp&quot;&gt;// deserialize from standard input
json j;
std::cin &amp;gt;&amp;gt; j;

// serialize to standard output
std::cout &amp;lt;&amp;lt; j;

// the setw manipulator was overloaded to set the indentation for pretty printing
std::cout &amp;lt;&amp;lt; std::setw(4) &amp;lt;&amp;lt; j &amp;lt;&amp;lt; std::endl;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;These operators work for any subclasses of &lt;code&gt;std::istream&lt;/code&gt; or &lt;code&gt;std::ostream&lt;/code&gt;. Here is the same example with files:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-cpp&quot;&gt;// read a JSON file
std::ifstream i(&quot;file.json&quot;);
json j;
i &amp;gt;&amp;gt; j;

// write prettified JSON to another file
std::ofstream o(&quot;pretty.json&quot;);
o &amp;lt;&amp;lt; std::setw(4) &amp;lt;&amp;lt; j &amp;lt;&amp;lt; std::endl;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Please note that setting the exception bit for &lt;code&gt;failbit&lt;/code&gt; is inappropriate for this use case. It will result in program termination due to the &lt;code&gt;noexcept&lt;/code&gt; specifier in use.&lt;/p&gt; 
&lt;h4&gt;Read from iterator range&lt;/h4&gt; 
&lt;p&gt;You can also parse JSON from an iterator range; that is, from any container accessible by iterators whose &lt;code&gt;value_type&lt;/code&gt; is an integral type of 1, 2, or 4 bytes, which will be interpreted as UTF-8, UTF-16, and UTF-32 respectively. For instance, a &lt;code&gt;std::vector&amp;lt;std::uint8_t&amp;gt;&lt;/code&gt;, or a &lt;code&gt;std::list&amp;lt;std::uint16_t&amp;gt;&lt;/code&gt;:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-cpp&quot;&gt;std::vector&amp;lt;std::uint8_t&amp;gt; v = {&#39;t&#39;, &#39;r&#39;, &#39;u&#39;, &#39;e&#39;};
json j = json::parse(v.begin(), v.end());
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;You may leave the iterators for the range [begin, end):&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-cpp&quot;&gt;std::vector&amp;lt;std::uint8_t&amp;gt; v = {&#39;t&#39;, &#39;r&#39;, &#39;u&#39;, &#39;e&#39;};
json j = json::parse(v);
&lt;/code&gt;&lt;/pre&gt; 
&lt;h4&gt;Custom data source&lt;/h4&gt; 
&lt;p&gt;Since the parse function accepts arbitrary iterator ranges, you can provide your own data sources by implementing the &lt;code&gt;LegacyInputIterator&lt;/code&gt; concept.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-cpp&quot;&gt;struct MyContainer {
  void advance();
  const char&amp;amp; get_current();
};

struct MyIterator {
    using difference_type = std::ptrdiff_t;
    using value_type = char;
    using pointer = const char*;
    using reference = const char&amp;amp;;
    using iterator_category = std::input_iterator_tag;

    MyIterator&amp;amp; operator++() {
        target-&amp;gt;advance();
        return *this;
    }

    bool operator!=(const MyIterator&amp;amp; rhs) const {
        return rhs.target != target;
    }

    reference operator*() const {
        return target-&amp;gt;get_current();
    }

    MyContainer* target = nullptr;
};

MyIterator begin(MyContainer&amp;amp; tgt) {
    return MyIterator{&amp;amp;tgt};
}

MyIterator end(const MyContainer&amp;amp;) {
    return {};
}

void foo() {
    MyContainer c;
    json j = json::parse(c);
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;h4&gt;SAX interface&lt;/h4&gt; 
&lt;p&gt;The library uses a SAX-like interface with the following functions:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-cpp&quot;&gt;// called when null is parsed
bool null();

// called when a boolean is parsed; value is passed
bool boolean(bool val);

// called when a signed or unsigned integer number is parsed; value is passed
bool number_integer(number_integer_t val);
bool number_unsigned(number_unsigned_t val);

// called when a floating-point number is parsed; value and original string is passed
bool number_float(number_float_t val, const string_t&amp;amp; s);

// called when a string is parsed; value is passed and can be safely moved away
bool string(string_t&amp;amp; val);
// called when a binary value is parsed; value is passed and can be safely moved away
bool binary(binary_t&amp;amp; val);

// called when an object or array begins or ends, resp. The number of elements is passed (or -1 if not known)
bool start_object(std::size_t elements);
bool end_object();
bool start_array(std::size_t elements);
bool end_array();
// called when an object key is parsed; value is passed and can be safely moved away
bool key(string_t&amp;amp; val);

// called when a parse error occurs; byte position, the last token, and an exception is passed
bool parse_error(std::size_t position, const std::string&amp;amp; last_token, const detail::exception&amp;amp; ex);
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;The return value of each function determines whether parsing should proceed.&lt;/p&gt; 
&lt;p&gt;To implement your own SAX handler, proceed as follows:&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;Implement the SAX interface in a class. You can use class &lt;code&gt;nlohmann::json_sax&amp;lt;json&amp;gt;&lt;/code&gt; as base class, but you can also use any class where the functions described above are implemented and public.&lt;/li&gt; 
 &lt;li&gt;Create an object of your SAX interface class, e.g. &lt;code&gt;my_sax&lt;/code&gt;.&lt;/li&gt; 
 &lt;li&gt;Call &lt;code&gt;bool json::sax_parse(input, &amp;amp;my_sax)&lt;/code&gt;; where the first parameter can be any input like a string or an input stream and the second parameter is a pointer to your SAX interface.&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;Note the &lt;code&gt;sax_parse&lt;/code&gt; function only returns a &lt;code&gt;bool&lt;/code&gt; indicating the result of the last executed SAX event. It does not return a &lt;code&gt;json&lt;/code&gt; value - it is up to you to decide what to do with the SAX events. Furthermore, no exceptions are thrown in case of a parse error -- it is up to you what to do with the exception object passed to your &lt;code&gt;parse_error&lt;/code&gt; implementation. Internally, the SAX interface is used for the DOM parser (class &lt;code&gt;json_sax_dom_parser&lt;/code&gt;) as well as the acceptor (&lt;code&gt;json_sax_acceptor&lt;/code&gt;), see file &lt;a href=&quot;https://github.com/nlohmann/json/raw/develop/include/nlohmann/detail/input/json_sax.hpp&quot;&gt;&lt;code&gt;json_sax.hpp&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt; 
&lt;h3&gt;STL-like access&lt;/h3&gt; 
&lt;p&gt;We designed the JSON class to behave just like an STL container. In fact, it satisfies the &lt;a href=&quot;https://en.cppreference.com/w/cpp/named_req/ReversibleContainer&quot;&gt;&lt;strong&gt;ReversibleContainer&lt;/strong&gt;&lt;/a&gt; requirement.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-cpp&quot;&gt;// create an array using push_back
json j;
j.push_back(&quot;foo&quot;);
j.push_back(1);
j.push_back(true);

// also use emplace_back
j.emplace_back(1.78);

// iterate the array
for (json::iterator it = j.begin(); it != j.end(); ++it) {
  std::cout &amp;lt;&amp;lt; *it &amp;lt;&amp;lt; &#39;\n&#39;;
}

// range-based for
for (auto&amp;amp; element : j) {
  std::cout &amp;lt;&amp;lt; element &amp;lt;&amp;lt; &#39;\n&#39;;
}

// getter/setter
const auto tmp = j[0].get&amp;lt;std::string&amp;gt;();
j[1] = 42;
bool foo = j.at(2);

// comparison
j == R&quot;([&quot;foo&quot;, 1, true, 1.78])&quot;_json;  // true

// other stuff
j.size();     // 4 entries
j.empty();    // false
j.type();     // json::value_t::array
j.clear();    // the array is empty again

// convenience type checkers
j.is_null();
j.is_boolean();
j.is_number();
j.is_object();
j.is_array();
j.is_string();

// create an object
json o;
o[&quot;foo&quot;] = 23;
o[&quot;bar&quot;] = false;
o[&quot;baz&quot;] = 3.141;

// also use emplace
o.emplace(&quot;weather&quot;, &quot;sunny&quot;);

// special iterator member functions for objects
for (json::iterator it = o.begin(); it != o.end(); ++it) {
  std::cout &amp;lt;&amp;lt; it.key() &amp;lt;&amp;lt; &quot; : &quot; &amp;lt;&amp;lt; it.value() &amp;lt;&amp;lt; &quot;\n&quot;;
}

// the same code as range for
for (auto&amp;amp; el : o.items()) {
  std::cout &amp;lt;&amp;lt; el.key() &amp;lt;&amp;lt; &quot; : &quot; &amp;lt;&amp;lt; el.value() &amp;lt;&amp;lt; &quot;\n&quot;;
}

// even easier with structured bindings (C++17)
for (auto&amp;amp; [key, value] : o.items()) {
  std::cout &amp;lt;&amp;lt; key &amp;lt;&amp;lt; &quot; : &quot; &amp;lt;&amp;lt; value &amp;lt;&amp;lt; &quot;\n&quot;;
}

// find an entry
if (o.contains(&quot;foo&quot;)) {
  // there is an entry with key &quot;foo&quot;
}

// or via find and an iterator
if (o.find(&quot;foo&quot;) != o.end()) {
  // there is an entry with key &quot;foo&quot;
}

// or simpler using count()
int foo_present = o.count(&quot;foo&quot;); // 1
int fob_present = o.count(&quot;fob&quot;); // 0

// delete an entry
o.erase(&quot;foo&quot;);
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Conversion from STL containers&lt;/h3&gt; 
&lt;p&gt;Any sequence container (&lt;code&gt;std::array&lt;/code&gt;, &lt;code&gt;std::vector&lt;/code&gt;, &lt;code&gt;std::deque&lt;/code&gt;, &lt;code&gt;std::forward_list&lt;/code&gt;, &lt;code&gt;std::list&lt;/code&gt;) whose values can be used to construct JSON values (e.g., integers, floating point numbers, Booleans, string types, or again STL containers described in this section) can be used to create a JSON array. The same holds for similar associative containers (&lt;code&gt;std::set&lt;/code&gt;, &lt;code&gt;std::multiset&lt;/code&gt;, &lt;code&gt;std::unordered_set&lt;/code&gt;, &lt;code&gt;std::unordered_multiset&lt;/code&gt;), but in these cases the order of the elements of the array depends on how the elements are ordered in the respective STL container.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-cpp&quot;&gt;std::vector&amp;lt;int&amp;gt; c_vector {1, 2, 3, 4};
json j_vec(c_vector);
// [1, 2, 3, 4]

std::deque&amp;lt;double&amp;gt; c_deque {1.2, 2.3, 3.4, 5.6};
json j_deque(c_deque);
// [1.2, 2.3, 3.4, 5.6]

std::list&amp;lt;bool&amp;gt; c_list {true, true, false, true};
json j_list(c_list);
// [true, true, false, true]

std::forward_list&amp;lt;int64_t&amp;gt; c_flist {12345678909876, 23456789098765, 34567890987654, 45678909876543};
json j_flist(c_flist);
// [12345678909876, 23456789098765, 34567890987654, 45678909876543]

std::array&amp;lt;unsigned long, 4&amp;gt; c_array {{1, 2, 3, 4}};
json j_array(c_array);
// [1, 2, 3, 4]

std::set&amp;lt;std::string&amp;gt; c_set {&quot;one&quot;, &quot;two&quot;, &quot;three&quot;, &quot;four&quot;, &quot;one&quot;};
json j_set(c_set); // only one entry for &quot;one&quot; is used
// [&quot;four&quot;, &quot;one&quot;, &quot;three&quot;, &quot;two&quot;]

std::unordered_set&amp;lt;std::string&amp;gt; c_uset {&quot;one&quot;, &quot;two&quot;, &quot;three&quot;, &quot;four&quot;, &quot;one&quot;};
json j_uset(c_uset); // only one entry for &quot;one&quot; is used
// maybe [&quot;two&quot;, &quot;three&quot;, &quot;four&quot;, &quot;one&quot;]

std::multiset&amp;lt;std::string&amp;gt; c_mset {&quot;one&quot;, &quot;two&quot;, &quot;one&quot;, &quot;four&quot;};
json j_mset(c_mset); // both entries for &quot;one&quot; are used
// maybe [&quot;one&quot;, &quot;two&quot;, &quot;one&quot;, &quot;four&quot;]

std::unordered_multiset&amp;lt;std::string&amp;gt; c_umset {&quot;one&quot;, &quot;two&quot;, &quot;one&quot;, &quot;four&quot;};
json j_umset(c_umset); // both entries for &quot;one&quot; are used
// maybe [&quot;one&quot;, &quot;two&quot;, &quot;one&quot;, &quot;four&quot;]
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Likewise, any associative key-value containers (&lt;code&gt;std::map&lt;/code&gt;, &lt;code&gt;std::multimap&lt;/code&gt;, &lt;code&gt;std::unordered_map&lt;/code&gt;, &lt;code&gt;std::unordered_multimap&lt;/code&gt;) whose keys can construct an &lt;code&gt;std::string&lt;/code&gt; and whose values can be used to construct JSON values (see examples above) can be used to create a JSON object. Note that in case of multimaps, only one key is used in the JSON object and the value depends on the internal order of the STL container.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-cpp&quot;&gt;std::map&amp;lt;std::string, int&amp;gt; c_map { {&quot;one&quot;, 1}, {&quot;two&quot;, 2}, {&quot;three&quot;, 3} };
json j_map(c_map);
// {&quot;one&quot;: 1, &quot;three&quot;: 3, &quot;two&quot;: 2 }

std::unordered_map&amp;lt;const char*, double&amp;gt; c_umap { {&quot;one&quot;, 1.2}, {&quot;two&quot;, 2.3}, {&quot;three&quot;, 3.4} };
json j_umap(c_umap);
// {&quot;one&quot;: 1.2, &quot;two&quot;: 2.3, &quot;three&quot;: 3.4}

std::multimap&amp;lt;std::string, bool&amp;gt; c_mmap { {&quot;one&quot;, true}, {&quot;two&quot;, true}, {&quot;three&quot;, false}, {&quot;three&quot;, true} };
json j_mmap(c_mmap); // only one entry for key &quot;three&quot; is used
// maybe {&quot;one&quot;: true, &quot;two&quot;: true, &quot;three&quot;: true}

std::unordered_multimap&amp;lt;std::string, bool&amp;gt; c_ummap { {&quot;one&quot;, true}, {&quot;two&quot;, true}, {&quot;three&quot;, false}, {&quot;three&quot;, true} };
json j_ummap(c_ummap); // only one entry for key &quot;three&quot; is used
// maybe {&quot;one&quot;: true, &quot;two&quot;: true, &quot;three&quot;: true}
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;JSON Pointer and JSON Patch&lt;/h3&gt; 
&lt;p&gt;The library supports &lt;strong&gt;JSON Pointer&lt;/strong&gt; (&lt;a href=&quot;https://tools.ietf.org/html/rfc6901&quot;&gt;RFC 6901&lt;/a&gt;) as an alternative means to address structured values. On top of this, &lt;strong&gt;JSON Patch&lt;/strong&gt; (&lt;a href=&quot;https://tools.ietf.org/html/rfc6902&quot;&gt;RFC 6902&lt;/a&gt;) allows describing differences between two JSON values -- effectively allowing patch and diff operations known from Unix.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-cpp&quot;&gt;// a JSON value
json j_original = R&quot;({
  &quot;baz&quot;: [&quot;one&quot;, &quot;two&quot;, &quot;three&quot;],
  &quot;foo&quot;: &quot;bar&quot;
})&quot;_json;

// access members with a JSON pointer (RFC 6901)
j_original[&quot;/baz/1&quot;_json_pointer];
// &quot;two&quot;

// a JSON patch (RFC 6902)
json j_patch = R&quot;([
  { &quot;op&quot;: &quot;replace&quot;, &quot;path&quot;: &quot;/baz&quot;, &quot;value&quot;: &quot;boo&quot; },
  { &quot;op&quot;: &quot;add&quot;, &quot;path&quot;: &quot;/hello&quot;, &quot;value&quot;: [&quot;world&quot;] },
  { &quot;op&quot;: &quot;remove&quot;, &quot;path&quot;: &quot;/foo&quot;}
])&quot;_json;

// apply the patch
json j_result = j_original.patch(j_patch);
// {
//    &quot;baz&quot;: &quot;boo&quot;,
//    &quot;hello&quot;: [&quot;world&quot;]
// }

// calculate a JSON patch from two JSON values
json::diff(j_result, j_original);
// [
//   { &quot;op&quot;:&quot; replace&quot;, &quot;path&quot;: &quot;/baz&quot;, &quot;value&quot;: [&quot;one&quot;, &quot;two&quot;, &quot;three&quot;] },
//   { &quot;op&quot;: &quot;remove&quot;,&quot;path&quot;: &quot;/hello&quot; },
//   { &quot;op&quot;: &quot;add&quot;, &quot;path&quot;: &quot;/foo&quot;, &quot;value&quot;: &quot;bar&quot; }
// ]
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;JSON Merge Patch&lt;/h3&gt; 
&lt;p&gt;The library supports &lt;strong&gt;JSON Merge Patch&lt;/strong&gt; (&lt;a href=&quot;https://tools.ietf.org/html/rfc7386&quot;&gt;RFC 7386&lt;/a&gt;) as a patch format. Instead of using JSON Pointer (see above) to specify values to be manipulated, it describes the changes using a syntax that closely mimics the document being modified.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-cpp&quot;&gt;// a JSON value
json j_document = R&quot;({
  &quot;a&quot;: &quot;b&quot;,
  &quot;c&quot;: {
    &quot;d&quot;: &quot;e&quot;,
    &quot;f&quot;: &quot;g&quot;
  }
})&quot;_json;

// a patch
json j_patch = R&quot;({
  &quot;a&quot;:&quot;z&quot;,
  &quot;c&quot;: {
    &quot;f&quot;: null
  }
})&quot;_json;

// apply the patch
j_document.merge_patch(j_patch);
// {
//  &quot;a&quot;: &quot;z&quot;,
//  &quot;c&quot;: {
//    &quot;d&quot;: &quot;e&quot;
//  }
// }
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Implicit conversions&lt;/h3&gt; 
&lt;p&gt;Supported types can be implicitly converted to JSON values.&lt;/p&gt; 
&lt;p&gt;It is recommended to &lt;strong&gt;NOT USE&lt;/strong&gt; implicit conversions &lt;strong&gt;FROM&lt;/strong&gt; a JSON value. You can find more details about this recommendation &lt;a href=&quot;https://www.github.com/nlohmann/json/issues/958&quot;&gt;here&lt;/a&gt;. You can switch off implicit conversions by defining &lt;code&gt;JSON_USE_IMPLICIT_CONVERSIONS&lt;/code&gt; to &lt;code&gt;0&lt;/code&gt; before including the &lt;code&gt;json.hpp&lt;/code&gt; header. When using CMake, you can also achieve this by setting the option &lt;code&gt;JSON_ImplicitConversions&lt;/code&gt; to &lt;code&gt;OFF&lt;/code&gt;.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-cpp&quot;&gt;// strings
std::string s1 = &quot;Hello, world!&quot;;
json js = s1;
auto s2 = js.get&amp;lt;std::string&amp;gt;();
// NOT RECOMMENDED
std::string s3 = js;
std::string s4;
s4 = js;

// Booleans
bool b1 = true;
json jb = b1;
auto b2 = jb.get&amp;lt;bool&amp;gt;();
// NOT RECOMMENDED
bool b3 = jb;
bool b4;
b4 = jb;

// numbers
int i = 42;
json jn = i;
auto f = jn.get&amp;lt;double&amp;gt;();
// NOT RECOMMENDED
double f2 = jb;
double f3;
f3 = jb;

// etc.
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Note that &lt;code&gt;char&lt;/code&gt; types are not automatically converted to JSON strings, but to integer numbers. A conversion to a string must be specified explicitly:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-cpp&quot;&gt;char ch = &#39;A&#39;;                       // ASCII value 65
json j_default = ch;                 // stores integer number 65
json j_string = std::string(1, ch);  // stores string &quot;A&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Arbitrary types conversions&lt;/h3&gt; 
&lt;p&gt;Every type can be serialized in JSON, not just STL containers and scalar types. Usually, you would do something along those lines:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-cpp&quot;&gt;namespace ns {
    // a simple struct to model a person
    struct person {
        std::string name;
        std::string address;
        int age;
    };
}

ns::person p = {&quot;Ned Flanders&quot;, &quot;744 Evergreen Terrace&quot;, 60};

// convert to JSON: copy each value into the JSON object
json j;
j[&quot;name&quot;] = p.name;
j[&quot;address&quot;] = p.address;
j[&quot;age&quot;] = p.age;

// ...

// convert from JSON: copy each value from the JSON object
ns::person p {
    j[&quot;name&quot;].get&amp;lt;std::string&amp;gt;(),
    j[&quot;address&quot;].get&amp;lt;std::string&amp;gt;(),
    j[&quot;age&quot;].get&amp;lt;int&amp;gt;()
};
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;It works, but that&#39;s quite a lot of boilerplate... Fortunately, there&#39;s a better way:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-cpp&quot;&gt;// create a person
ns::person p {&quot;Ned Flanders&quot;, &quot;744 Evergreen Terrace&quot;, 60};

// conversion: person -&amp;gt; json
json j = p;

std::cout &amp;lt;&amp;lt; j &amp;lt;&amp;lt; std::endl;
// {&quot;address&quot;:&quot;744 Evergreen Terrace&quot;,&quot;age&quot;:60,&quot;name&quot;:&quot;Ned Flanders&quot;}

// conversion: json -&amp;gt; person
auto p2 = j.get&amp;lt;ns::person&amp;gt;();

// that&#39;s it
assert(p == p2);
&lt;/code&gt;&lt;/pre&gt; 
&lt;h4&gt;Basic usage&lt;/h4&gt; 
&lt;p&gt;To make this work with one of your types, you only need to provide two functions:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-cpp&quot;&gt;using json = nlohmann::json;

namespace ns {
    void to_json(json&amp;amp; j, const person&amp;amp; p) {
        j = json{{&quot;name&quot;, p.name}, {&quot;address&quot;, p.address}, {&quot;age&quot;, p.age}};
    }

    void from_json(const json&amp;amp; j, person&amp;amp; p) {
        j.at(&quot;name&quot;).get_to(p.name);
        j.at(&quot;address&quot;).get_to(p.address);
        j.at(&quot;age&quot;).get_to(p.age);
    }
} // namespace ns
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;That&#39;s all! When calling the &lt;code&gt;json&lt;/code&gt; constructor with your type, your custom &lt;code&gt;to_json&lt;/code&gt; method will be automatically called. Likewise, when calling &lt;code&gt;get&amp;lt;your_type&amp;gt;()&lt;/code&gt; or &lt;code&gt;get_to(your_type&amp;amp;)&lt;/code&gt;, the &lt;code&gt;from_json&lt;/code&gt; method will be called.&lt;/p&gt; 
&lt;p&gt;Some important things:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Those methods &lt;strong&gt;MUST&lt;/strong&gt; be in your type&#39;s namespace (which can be the global namespace), or the library will not be able to locate them (in this example, they are in namespace &lt;code&gt;ns&lt;/code&gt;, where &lt;code&gt;person&lt;/code&gt; is defined).&lt;/li&gt; 
 &lt;li&gt;Those methods &lt;strong&gt;MUST&lt;/strong&gt; be available (e.g., proper headers must be included) everywhere you use these conversions. Look at &lt;a href=&quot;https://github.com/nlohmann/json/issues/1108&quot;&gt;issue 1108&lt;/a&gt; for errors that may occur otherwise.&lt;/li&gt; 
 &lt;li&gt;When using &lt;code&gt;get&amp;lt;your_type&amp;gt;()&lt;/code&gt;, &lt;code&gt;your_type&lt;/code&gt; &lt;strong&gt;MUST&lt;/strong&gt; be &lt;a href=&quot;https://en.cppreference.com/w/cpp/named_req/DefaultConstructible&quot;&gt;DefaultConstructible&lt;/a&gt;. (There is a way to bypass this requirement described later.)&lt;/li&gt; 
 &lt;li&gt;In function &lt;code&gt;from_json&lt;/code&gt;, use function &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/at/&quot;&gt;&lt;code&gt;at()&lt;/code&gt;&lt;/a&gt; to access the object values rather than &lt;code&gt;operator[]&lt;/code&gt;. In case a key does not exist, &lt;code&gt;at&lt;/code&gt; throws an exception that you can handle, whereas &lt;code&gt;operator[]&lt;/code&gt; exhibits undefined behavior.&lt;/li&gt; 
 &lt;li&gt;You do not need to add serializers or deserializers for STL types like &lt;code&gt;std::vector&lt;/code&gt;: the library already implements these.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h4&gt;Simplify your life with macros&lt;/h4&gt; 
&lt;p&gt;If you just want to serialize/deserialize some structs, the &lt;code&gt;to_json&lt;/code&gt;/&lt;code&gt;from_json&lt;/code&gt; functions can be a lot of boilerplate. There are &lt;a href=&quot;https://json.nlohmann.me/api/macros/#serializationdeserialization-macros&quot;&gt;&lt;strong&gt;several macros&lt;/strong&gt;&lt;/a&gt; to make your life easier as long as you want to use a JSON object as serialization.&lt;/p&gt; 
&lt;p&gt;Which macro to choose depends on whether private member variables need to be accessed, a deserialization is needed, missing values should yield an error or should be replaced by default values, and if derived classes are used. See &lt;a href=&quot;https://json.nlohmann.me/features/arbitrary_types/#simplify-your-life-with-macros&quot;&gt;this overview to choose the right one for your use case&lt;/a&gt;.&lt;/p&gt; 
&lt;h5&gt;Example usage of macros&lt;/h5&gt; 
&lt;p&gt;The &lt;code&gt;to_json&lt;/code&gt;/&lt;code&gt;from_json&lt;/code&gt; functions for the &lt;code&gt;person&lt;/code&gt; struct above can be created with &lt;a href=&quot;https://json.nlohmann.me/api/macros/nlohmann_define_type_non_intrusive/&quot;&gt;&lt;code&gt;NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE&lt;/code&gt;&lt;/a&gt;. In all macros, the first parameter is the name of the class/struct, and all remaining parameters name the members.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-cpp&quot;&gt;namespace ns {
    NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(person, name, address, age)
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;If you want to inherit the &lt;code&gt;person&lt;/code&gt; struct and add a field to it, it can be done with:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-cpp&quot;&gt;namespace ns {
    struct person_derived : person {
        std::string email;
    };
    
    NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE(person_derived, person, email)
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Here is another example with private members, where &lt;a href=&quot;https://json.nlohmann.me/api/macros/nlohmann_define_type_intrusive/&quot;&gt;&lt;code&gt;NLOHMANN_DEFINE_TYPE_INTRUSIVE&lt;/code&gt;&lt;/a&gt; is needed:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-cpp&quot;&gt;namespace ns {
    class address {
      private:
        std::string street;
        int housenumber;
        int postcode;
  
      public:
        NLOHMANN_DEFINE_TYPE_INTRUSIVE(address, street, housenumber, postcode)
    };
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Or in case if you use some naming convention that you do not want to expose to JSON:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-cpp&quot;&gt;namespace ns {
    class address {
      private:
        std::string m_street;
        int m_housenumber;
        int m_postcode;

      public:
        NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_NAMES(address, &quot;street&quot;, m_street,
                                                           &quot;housenumber&quot;, m_housenumber,
                                                           &quot;postcode&quot;, m_postcode)
    };
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;h4&gt;How do I convert third-party types?&lt;/h4&gt; 
&lt;p&gt;This requires a bit more advanced technique. But first, let&#39;s see how this conversion mechanism works:&lt;/p&gt; 
&lt;p&gt;The library uses &lt;strong&gt;JSON Serializers&lt;/strong&gt; to convert types to JSON. The default serializer for &lt;code&gt;nlohmann::json&lt;/code&gt; is &lt;code&gt;nlohmann::adl_serializer&lt;/code&gt; (ADL means &lt;a href=&quot;https://en.cppreference.com/w/cpp/language/adl&quot;&gt;Argument-Dependent Lookup&lt;/a&gt;).&lt;/p&gt; 
&lt;p&gt;It is implemented like this (simplified):&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-cpp&quot;&gt;template &amp;lt;typename T&amp;gt;
struct adl_serializer {
    static void to_json(json&amp;amp; j, const T&amp;amp; value) {
        // calls the &quot;to_json&quot; method in T&#39;s namespace
    }

    static void from_json(const json&amp;amp; j, T&amp;amp; value) {
        // same thing, but with the &quot;from_json&quot; method
    }
};
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;This serializer works fine when you have control over the type&#39;s namespace. However, what about &lt;code&gt;boost::optional&lt;/code&gt; or &lt;code&gt;std::filesystem::path&lt;/code&gt; (C++17)? Hijacking the &lt;code&gt;boost&lt;/code&gt; namespace is pretty bad, and it&#39;s illegal to add something other than template specializations to &lt;code&gt;std&lt;/code&gt;...&lt;/p&gt; 
&lt;p&gt;To solve this, you need to add a specialization of &lt;code&gt;adl_serializer&lt;/code&gt; to the &lt;code&gt;nlohmann&lt;/code&gt; namespace, here&#39;s an example:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-cpp&quot;&gt;// partial specialization (full specialization works too)
namespace nlohmann {
    template &amp;lt;typename T&amp;gt;
    struct adl_serializer&amp;lt;boost::optional&amp;lt;T&amp;gt;&amp;gt; {
        static void to_json(json&amp;amp; j, const boost::optional&amp;lt;T&amp;gt;&amp;amp; opt) {
            if (opt == boost::none) {
                j = nullptr;
            } else {
              j = *opt; // this will call adl_serializer&amp;lt;T&amp;gt;::to_json which will
                        // find the free function to_json in T&#39;s namespace!
            }
        }

        static void from_json(const json&amp;amp; j, boost::optional&amp;lt;T&amp;gt;&amp;amp; opt) {
            if (j.is_null()) {
                opt = boost::none;
            } else {
                opt = j.get&amp;lt;T&amp;gt;(); // same as above, but with
                                  // adl_serializer&amp;lt;T&amp;gt;::from_json
            }
        }
    };
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;h4&gt;How can I use &lt;code&gt;get()&lt;/code&gt; for non-default constructible/non-copyable types?&lt;/h4&gt; 
&lt;p&gt;There is a way if your type is &lt;a href=&quot;https://en.cppreference.com/w/cpp/named_req/MoveConstructible&quot;&gt;MoveConstructible&lt;/a&gt;. You will need to specialize the &lt;code&gt;adl_serializer&lt;/code&gt; as well, but with a special &lt;code&gt;from_json&lt;/code&gt; overload:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-cpp&quot;&gt;struct move_only_type {
    move_only_type() = delete;
    move_only_type(int ii): i(ii) {}
    move_only_type(const move_only_type&amp;amp;) = delete;
    move_only_type(move_only_type&amp;amp;&amp;amp;) = default;

    int i;
};

namespace nlohmann {
    template &amp;lt;&amp;gt;
    struct adl_serializer&amp;lt;move_only_type&amp;gt; {
        // note: the return type is no longer &#39;void&#39;, and the method only takes
        // one argument
        static move_only_type from_json(const json&amp;amp; j) {
            return {j.get&amp;lt;int&amp;gt;()};
        }

        // Here&#39;s the catch! You must provide a to_json method! Otherwise, you
        // will not be able to convert move_only_type to json, since you fully
        // specialized adl_serializer on that type
        static void to_json(json&amp;amp; j, move_only_type t) {
            j = t.i;
        }
    };
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;h4&gt;Can I write my own serializer? (Advanced use)&lt;/h4&gt; 
&lt;p&gt;Yes. You might want to take a look at &lt;a href=&quot;https://github.com/nlohmann/json/raw/develop/tests/src/unit-udt.cpp&quot;&gt;&lt;code&gt;unit-udt.cpp&lt;/code&gt;&lt;/a&gt; in the test suite, to see a few examples.&lt;/p&gt; 
&lt;p&gt;If you write your own serializer, you&#39;ll need to do a few things:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;use a different &lt;code&gt;basic_json&lt;/code&gt; alias than &lt;code&gt;nlohmann::json&lt;/code&gt; (the last template parameter of &lt;code&gt;basic_json&lt;/code&gt; is the &lt;code&gt;JSONSerializer&lt;/code&gt;)&lt;/li&gt; 
 &lt;li&gt;use your &lt;code&gt;basic_json&lt;/code&gt; alias (or a template parameter) in all your &lt;code&gt;to_json&lt;/code&gt;/&lt;code&gt;from_json&lt;/code&gt; methods&lt;/li&gt; 
 &lt;li&gt;use &lt;code&gt;nlohmann::to_json&lt;/code&gt; and &lt;code&gt;nlohmann::from_json&lt;/code&gt; when you need ADL&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Here is an example, without simplifications, that only accepts types with a size &amp;lt;= 32, and uses ADL.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-cpp&quot;&gt;// You should use void as a second template argument
// if you don&#39;t need compile-time checks on T
template&amp;lt;typename T, typename SFINAE = typename std::enable_if&amp;lt;sizeof(T) &amp;lt;= 32&amp;gt;::type&amp;gt;
struct less_than_32_serializer {
    template &amp;lt;typename BasicJsonType&amp;gt;
    static void to_json(BasicJsonType&amp;amp; j, T value) {
        // we want to use ADL, and call the correct to_json overload
        using nlohmann::to_json; // this method is called by adl_serializer,
                                 // this is where the magic happens
        to_json(j, value);
    }

    template &amp;lt;typename BasicJsonType&amp;gt;
    static void from_json(const BasicJsonType&amp;amp; j, T&amp;amp; value) {
        // same thing here
        using nlohmann::from_json;
        from_json(j, value);
    }
};
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Be &lt;strong&gt;very&lt;/strong&gt; careful when reimplementing your serializer, you can stack overflow if you don&#39;t pay attention:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-cpp&quot;&gt;template &amp;lt;typename T, void&amp;gt;
struct bad_serializer
{
    template &amp;lt;typename BasicJsonType&amp;gt;
    static void to_json(BasicJsonType&amp;amp; j, const T&amp;amp; value) {
      // this calls BasicJsonType::json_serializer&amp;lt;T&amp;gt;::to_json(j, value)
      // if BasicJsonType::json_serializer == bad_serializer ... oops!
      j = value;
    }

    template &amp;lt;typename BasicJsonType&amp;gt;
    static void to_json(const BasicJsonType&amp;amp; j, T&amp;amp; value) {
      // this calls BasicJsonType::json_serializer&amp;lt;T&amp;gt;::from_json(j, value)
      // if BasicJsonType::json_serializer == bad_serializer ... oops!
      value = j.get&amp;lt;T&amp;gt;(); // oops!
    }
};
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Specializing enum conversion&lt;/h3&gt; 
&lt;p&gt;By default, enum values are serialized to JSON as integers. In some cases, this could result in undesired behavior. If an enum is modified or re-ordered after data has been serialized to JSON, the later deserialized JSON data may be undefined or a different enum value than was originally intended.&lt;/p&gt; 
&lt;p&gt;It is possible to more precisely specify how a given enum is mapped to and from JSON as shown below:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-cpp&quot;&gt;// example enum type declaration
enum TaskState {
    TS_STOPPED,
    TS_RUNNING,
    TS_COMPLETED,
    TS_INVALID=-1,
};

// map TaskState values to JSON as strings
NLOHMANN_JSON_SERIALIZE_ENUM( TaskState, {
    {TS_INVALID, nullptr},
    {TS_STOPPED, &quot;stopped&quot;},
    {TS_RUNNING, &quot;running&quot;},
    {TS_COMPLETED, &quot;completed&quot;},
})
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;The &lt;code&gt;NLOHMANN_JSON_SERIALIZE_ENUM()&lt;/code&gt; macro declares a set of &lt;code&gt;to_json()&lt;/code&gt; / &lt;code&gt;from_json()&lt;/code&gt; functions for type &lt;code&gt;TaskState&lt;/code&gt; while avoiding repetition and boilerplate serialization code.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Usage:&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-cpp&quot;&gt;// enum to JSON as string
json j = TS_STOPPED;
assert(j == &quot;stopped&quot;);

// json string to enum
json j3 = &quot;running&quot;;
assert(j3.get&amp;lt;TaskState&amp;gt;() == TS_RUNNING);

// undefined json value to enum (where the first map entry above is the default)
json jPi = 3.14;
assert(jPi.get&amp;lt;TaskState&amp;gt;() == TS_INVALID);
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Just as in &lt;a href=&quot;https://raw.githubusercontent.com/nlohmann/json/develop/#arbitrary-types-conversions&quot;&gt;Arbitrary Type Conversions&lt;/a&gt; above,&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;NLOHMANN_JSON_SERIALIZE_ENUM()&lt;/code&gt; MUST be declared in your enum type&#39;s namespace (which can be the global namespace), or the library will not be able to locate it, and it will default to integer serialization.&lt;/li&gt; 
 &lt;li&gt;It MUST be available (e.g., proper headers must be included) everywhere you use the conversions.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Other Important points:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;When using &lt;code&gt;get&amp;lt;ENUM_TYPE&amp;gt;()&lt;/code&gt;, undefined JSON values will default to the first pair specified in your map. Select this default pair carefully.&lt;/li&gt; 
 &lt;li&gt;If an enum or JSON value is specified more than once in your map, the first matching occurrence from the top of the map will be returned when converting to or from JSON.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Binary formats (BSON, CBOR, MessagePack, UBJSON, and BJData)&lt;/h3&gt; 
&lt;p&gt;Though JSON is a ubiquitous data format, it is not a very compact format suitable for data exchange, for instance over a network. Hence, the library supports &lt;a href=&quot;https://bsonspec.org&quot;&gt;BSON&lt;/a&gt; (Binary JSON), &lt;a href=&quot;https://cbor.io&quot;&gt;CBOR&lt;/a&gt; (Concise Binary Object Representation), &lt;a href=&quot;https://msgpack.org&quot;&gt;MessagePack&lt;/a&gt;, &lt;a href=&quot;https://ubjson.org&quot;&gt;UBJSON&lt;/a&gt; (Universal Binary JSON Specification) and &lt;a href=&quot;https://neurojson.org/bjdata&quot;&gt;BJData&lt;/a&gt; (Binary JData) to efficiently encode JSON values to byte vectors and to decode such vectors.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-cpp&quot;&gt;// create a JSON value
json j = R&quot;({&quot;compact&quot;: true, &quot;schema&quot;: 0})&quot;_json;

// serialize to BSON
std::vector&amp;lt;std::uint8_t&amp;gt; v_bson = json::to_bson(j);

// 0x1B, 0x00, 0x00, 0x00, 0x08, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x63, 0x74, 0x00, 0x01, 0x10, 0x73, 0x63, 0x68, 0x65, 0x6D, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00

// roundtrip
json j_from_bson = json::from_bson(v_bson);

// serialize to CBOR
std::vector&amp;lt;std::uint8_t&amp;gt; v_cbor = json::to_cbor(j);

// 0xA2, 0x67, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x63, 0x74, 0xF5, 0x66, 0x73, 0x63, 0x68, 0x65, 0x6D, 0x61, 0x00

// roundtrip
json j_from_cbor = json::from_cbor(v_cbor);

// serialize to MessagePack
std::vector&amp;lt;std::uint8_t&amp;gt; v_msgpack = json::to_msgpack(j);

// 0x82, 0xA7, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x63, 0x74, 0xC3, 0xA6, 0x73, 0x63, 0x68, 0x65, 0x6D, 0x61, 0x00

// roundtrip
json j_from_msgpack = json::from_msgpack(v_msgpack);

// serialize to UBJSON
std::vector&amp;lt;std::uint8_t&amp;gt; v_ubjson = json::to_ubjson(j);

// 0x7B, 0x69, 0x07, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x63, 0x74, 0x54, 0x69, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6D, 0x61, 0x69, 0x00, 0x7D

// roundtrip
json j_from_ubjson = json::from_ubjson(v_ubjson);
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;The library also supports binary types from BSON, CBOR (byte strings), and MessagePack (bin, ext, fixext). They are stored by default as &lt;code&gt;std::vector&amp;lt;std::uint8_t&amp;gt;&lt;/code&gt; to be processed outside the library.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-cpp&quot;&gt;// CBOR byte string with payload 0xCAFE
std::vector&amp;lt;std::uint8_t&amp;gt; v = {0x42, 0xCA, 0xFE};

// read value
json j = json::from_cbor(v);

// the JSON value has type binary
j.is_binary(); // true

// get reference to stored binary value
auto&amp;amp; binary = j.get_binary();

// the binary value has no subtype (CBOR has no binary subtypes)
binary.has_subtype(); // false

// access std::vector&amp;lt;std::uint8_t&amp;gt; member functions
binary.size(); // 2
binary[0]; // 0xCA
binary[1]; // 0xFE

// set subtype to 0x10
binary.set_subtype(0x10);

// serialize to MessagePack
auto cbor = json::to_msgpack(j); // 0xD5 (fixext2), 0x10, 0xCA, 0xFE
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Customers&lt;/h2&gt; 
&lt;p&gt;The library is used in multiple projects, applications, operating systems, etc. The list below is not exhaustive, but the result of an internet search. If you know further customers of the library, please let me know, see &lt;a href=&quot;https://raw.githubusercontent.com/nlohmann/json/develop/#contact&quot;&gt;contact&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://json.nlohmann.me/home/customers/&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/nlohmann/json/develop/docs/mkdocs/docs/images/customers.png&quot; alt=&quot;logos of customers using the library&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;Supported compilers&lt;/h2&gt; 
&lt;p&gt;Though it&#39;s 2026 already, the support for C++11 is still a bit sparse. Currently, the following compilers are known to work:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;GCC 4.8 - 14.2 (and possibly later)&lt;/li&gt; 
 &lt;li&gt;Clang 3.4 - 21.0 (and possibly later)&lt;/li&gt; 
 &lt;li&gt;Apple Clang 9.1 - 16.0 (and possibly later)&lt;/li&gt; 
 &lt;li&gt;Intel C++ Compiler 17.0.2 (and possibly later)&lt;/li&gt; 
 &lt;li&gt;Nvidia CUDA Compiler 11.0.221 (and possibly later)&lt;/li&gt; 
 &lt;li&gt;Microsoft Visual C++ 2015 / Build Tools 14.0.25123.0 (and possibly later)&lt;/li&gt; 
 &lt;li&gt;Microsoft Visual C++ 2017 / Build Tools 15.5.180.51428 (and possibly later)&lt;/li&gt; 
 &lt;li&gt;Microsoft Visual C++ 2019 / Build Tools 16.3.1+1def00d3d (and possibly later)&lt;/li&gt; 
 &lt;li&gt;Microsoft Visual C++ 2022 / Build Tools 19.30.30709.0 (and possibly later)&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;I would be happy to learn about other compilers/versions.&lt;/p&gt; 
&lt;p&gt;Please note:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt; &lt;p&gt;GCC 4.8 has a bug &lt;a href=&quot;https://gcc.gnu.org/bugzilla/show_bug.cgi?id=57824&quot;&gt;57824&lt;/a&gt;: multiline raw strings cannot be the arguments to macros. Don&#39;t use multiline raw strings directly in macros with this compiler.&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Android defaults to using very old compilers and C++ libraries. To fix this, add the following to your &lt;code&gt;Application.mk&lt;/code&gt;. This will switch to the LLVM C++ library, the Clang compiler, and enable C++11 and other features disabled by default.&lt;/p&gt; &lt;pre&gt;&lt;code class=&quot;language-makefile&quot;&gt;APP_STL := c++_shared
NDK_TOOLCHAIN_VERSION := clang3.6
APP_CPPFLAGS += -frtti -fexceptions
&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;The code compiles successfully with &lt;a href=&quot;https://developer.android.com/ndk/index.html?hl=ml&quot;&gt;Android NDK&lt;/a&gt;, Revision 9 - 11 (and possibly later) and &lt;a href=&quot;https://www.crystax.net/en/android/ndk&quot;&gt;CrystaX&#39;s Android NDK&lt;/a&gt; version 10.&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;For GCC running on MinGW or Android SDK, the error &lt;code&gt;&#39;to_string&#39; is not a member of &#39;std&#39;&lt;/code&gt; (or similarly, for &lt;code&gt;strtod&lt;/code&gt; or &lt;code&gt;strtof&lt;/code&gt;) may occur. Note this is not an issue with the code, but rather with the compiler itself. On Android, see above to build with a newer environment. For MinGW, please refer to &lt;a href=&quot;https://tehsausage.com/mingw-to-string&quot;&gt;this site&lt;/a&gt; and &lt;a href=&quot;https://github.com/nlohmann/json/issues/136&quot;&gt;this discussion&lt;/a&gt; for information on how to fix this bug. For Android NDK using &lt;code&gt;APP_STL := gnustl_static&lt;/code&gt;, please refer to &lt;a href=&quot;https://github.com/nlohmann/json/issues/219&quot;&gt;this discussion&lt;/a&gt;.&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Unsupported versions of GCC and Clang are rejected by &lt;code&gt;#error&lt;/code&gt; directives. This can be switched off by defining &lt;code&gt;JSON_SKIP_UNSUPPORTED_COMPILER_CHECK&lt;/code&gt;. Note that you can expect no support in this case.&lt;/p&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;See the page &lt;a href=&quot;https://json.nlohmann.me/community/quality_assurance&quot;&gt;quality assurance&lt;/a&gt; on the compilers used to check the library in the CI.&lt;/p&gt; 
&lt;h2&gt;Integration&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/nlohmann/json/raw/develop/single_include/nlohmann/json.hpp&quot;&gt;&lt;code&gt;json.hpp&lt;/code&gt;&lt;/a&gt; is the single required file in &lt;code&gt;single_include/nlohmann&lt;/code&gt; or &lt;a href=&quot;https://github.com/nlohmann/json/releases&quot;&gt;released here&lt;/a&gt;. You need to add&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-cpp&quot;&gt;#include &amp;lt;nlohmann/json.hpp&amp;gt;

// for convenience
using json = nlohmann::json;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;to the files you want to process JSON and set the necessary switches to enable C++11 (e.g., &lt;code&gt;-std=c++11&lt;/code&gt; for GCC and Clang).&lt;/p&gt; 
&lt;p&gt;You can further use file &lt;a href=&quot;https://github.com/nlohmann/json/raw/develop/include/nlohmann/json_fwd.hpp&quot;&gt;&lt;code&gt;include/nlohmann/json_fwd.hpp&lt;/code&gt;&lt;/a&gt; for forward-declarations. The installation of &lt;code&gt;json_fwd.hpp&lt;/code&gt; (as part of cmake&#39;s install step) can be achieved by setting &lt;code&gt;-DJSON_MultipleHeaders=ON&lt;/code&gt;.&lt;/p&gt; 
&lt;h3&gt;CMake&lt;/h3&gt; 
&lt;p&gt;You can also use the &lt;code&gt;nlohmann_json::nlohmann_json&lt;/code&gt; interface target in CMake. This target populates the appropriate usage requirements for &lt;code&gt;INTERFACE_INCLUDE_DIRECTORIES&lt;/code&gt; to point to the appropriate include directories and &lt;code&gt;INTERFACE_COMPILE_FEATURES&lt;/code&gt; for the necessary C++11 flags.&lt;/p&gt; 
&lt;h4&gt;External&lt;/h4&gt; 
&lt;p&gt;To use this library from a CMake project, you can locate it directly with &lt;code&gt;find_package()&lt;/code&gt; and use the namespaced imported target from the generated package configuration:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-cmake&quot;&gt;# CMakeLists.txt
find_package(nlohmann_json 3.12.0 REQUIRED)
...
add_library(foo ...)
...
target_link_libraries(foo PRIVATE nlohmann_json::nlohmann_json)
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;The package configuration file, &lt;code&gt;nlohmann_jsonConfig.cmake&lt;/code&gt;, can be used either from an install tree or directly out of the build tree.&lt;/p&gt; 
&lt;h4&gt;Embedded&lt;/h4&gt; 
&lt;p&gt;To embed the library directly into an existing CMake project, place the entire source tree in a subdirectory and call &lt;code&gt;add_subdirectory()&lt;/code&gt; in your &lt;code&gt;CMakeLists.txt&lt;/code&gt; file:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-cmake&quot;&gt;# Typically you don&#39;t care so much for a third party library&#39;s tests to be
# run from your own project&#39;s code.
set(JSON_BuildTests OFF CACHE INTERNAL &quot;&quot;)

# If you only include this third party in PRIVATE source files, you do not
# need to install it when your main project gets installed.
# set(JSON_Install OFF CACHE INTERNAL &quot;&quot;)

# Don&#39;t use include(nlohmann_json/CMakeLists.txt) since that carries with it
# unintended consequences that will break the build.  It&#39;s generally
# discouraged (although not necessarily well documented as such) to use
# include(...) for pulling in other CMake projects anyways.
add_subdirectory(nlohmann_json)
...
add_library(foo ...)
...
target_link_libraries(foo PRIVATE nlohmann_json::nlohmann_json)
&lt;/code&gt;&lt;/pre&gt; 
&lt;h5&gt;Embedded (FetchContent)&lt;/h5&gt; 
&lt;p&gt;Since CMake v3.11, &lt;a href=&quot;https://cmake.org/cmake/help/v3.11/module/FetchContent.html&quot;&gt;FetchContent&lt;/a&gt; can be used to automatically download a release as a dependency at configure time.&lt;/p&gt; 
&lt;p&gt;Example:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-cmake&quot;&gt;include(FetchContent)

FetchContent_Declare(json URL https://github.com/nlohmann/json/releases/download/v3.12.0/json.tar.xz)
FetchContent_MakeAvailable(json)

target_link_libraries(foo PRIVATE nlohmann_json::nlohmann_json)
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: It is recommended to use the URL approach described above, which is supported as of version 3.10.0. See &lt;a href=&quot;https://json.nlohmann.me/integration/cmake/#fetchcontent&quot;&gt;https://json.nlohmann.me/integration/cmake/#fetchcontent&lt;/a&gt; for more information.&lt;/p&gt; 
&lt;h4&gt;Supporting Both&lt;/h4&gt; 
&lt;p&gt;To allow your project to support either an externally supplied or an embedded JSON library, you can use a pattern akin to the following:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-cmake&quot;&gt;# Top level CMakeLists.txt
project(FOO)
...
option(FOO_USE_EXTERNAL_JSON &quot;Use an external JSON library&quot; OFF)
...
add_subdirectory(thirdparty)
...
add_library(foo ...)
...
# Note that the namespaced target will always be available regardless of the
# import method
target_link_libraries(foo PRIVATE nlohmann_json::nlohmann_json)
&lt;/code&gt;&lt;/pre&gt; 
&lt;pre&gt;&lt;code class=&quot;language-cmake&quot;&gt;# thirdparty/CMakeLists.txt
...
if(FOO_USE_EXTERNAL_JSON)
  find_package(nlohmann_json 3.12.0 REQUIRED)
else()
  set(JSON_BuildTests OFF CACHE INTERNAL &quot;&quot;)
  add_subdirectory(nlohmann_json)
endif()
...
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;code&gt;thirdparty/nlohmann_json&lt;/code&gt; is then a complete copy of this source tree.&lt;/p&gt; 
&lt;h3&gt;Package Managers&lt;/h3&gt; 
&lt;p&gt;Use your favorite &lt;a href=&quot;https://json.nlohmann.me/integration/package_managers/&quot;&gt;&lt;strong&gt;package manager&lt;/strong&gt;&lt;/a&gt; to use the library.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;img src=&quot;https://raw.githubusercontent.com/nlohmann/json/refs/heads/develop/docs/mkdocs/docs/images/package_managers/homebrew.svg?sanitize=true&quot; height=&quot;20&quot; /&gt;&amp;nbsp;&lt;a href=&quot;https://json.nlohmann.me/integration/package_managers/#homebrew&quot;&gt;&lt;strong&gt;Homebrew&lt;/strong&gt;&lt;/a&gt; &lt;code&gt;nlohmann-json&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;img src=&quot;https://raw.githubusercontent.com/nlohmann/json/refs/heads/develop/docs/mkdocs/docs/images/package_managers/meson.svg?sanitize=true&quot; height=&quot;20&quot; /&gt;&amp;nbsp;&lt;a href=&quot;https://json.nlohmann.me/integration/package_managers/#meson&quot;&gt;&lt;strong&gt;Meson&lt;/strong&gt;&lt;/a&gt; &lt;code&gt;nlohmann_json&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;img src=&quot;https://raw.githubusercontent.com/nlohmann/json/refs/heads/develop/docs/mkdocs/docs/images/package_managers/bazel.svg?sanitize=true&quot; height=&quot;20&quot; /&gt;&amp;nbsp;&lt;a href=&quot;https://json.nlohmann.me/integration/package_managers/#bazel&quot;&gt;&lt;strong&gt;Bazel&lt;/strong&gt;&lt;/a&gt; &lt;code&gt;nlohmann_json&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;img src=&quot;https://raw.githubusercontent.com/nlohmann/json/refs/heads/develop/docs/mkdocs/docs/images/package_managers/conan.svg?sanitize=true&quot; height=&quot;20&quot; /&gt;&amp;nbsp;&lt;a href=&quot;https://json.nlohmann.me/integration/package_managers/#conan&quot;&gt;&lt;strong&gt;Conan&lt;/strong&gt;&lt;/a&gt; &lt;code&gt;nlohmann_json&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;img src=&quot;https://raw.githubusercontent.com/nlohmann/json/refs/heads/develop/docs/mkdocs/docs/images/package_managers/spack.svg?sanitize=true&quot; height=&quot;20&quot; /&gt;&amp;nbsp;&lt;a href=&quot;https://json.nlohmann.me/integration/package_managers/#spack&quot;&gt;&lt;strong&gt;Spack&lt;/strong&gt;&lt;/a&gt; &lt;code&gt;nlohmann-json&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://json.nlohmann.me/integration/package_managers/#hunter&quot;&gt;&lt;strong&gt;Hunter&lt;/strong&gt;&lt;/a&gt; &lt;code&gt;nlohmann_json&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;img src=&quot;https://raw.githubusercontent.com/nlohmann/json/refs/heads/develop/docs/mkdocs/docs/images/package_managers/vcpkg.png&quot; height=&quot;20&quot; /&gt;&amp;nbsp;&lt;a href=&quot;https://json.nlohmann.me/integration/package_managers/#vcpkg&quot;&gt;&lt;strong&gt;vcpkg&lt;/strong&gt;&lt;/a&gt; &lt;code&gt;nlohmann-json&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://json.nlohmann.me/integration/package_managers/#cget&quot;&gt;&lt;strong&gt;cget&lt;/strong&gt;&lt;/a&gt; &lt;code&gt;nlohmann/json&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;img src=&quot;https://raw.githubusercontent.com/nlohmann/json/refs/heads/develop/docs/mkdocs/docs/images/package_managers/swift.svg?sanitize=true&quot; height=&quot;20&quot; /&gt;&amp;nbsp;&lt;a href=&quot;https://json.nlohmann.me/integration/package_managers/#swift-package-manager&quot;&gt;&lt;strong&gt;Swift Package Manager&lt;/strong&gt;&lt;/a&gt; &lt;code&gt;nlohmann/json&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;img src=&quot;https://raw.githubusercontent.com/nlohmann/json/refs/heads/develop/docs/mkdocs/docs/images/package_managers/nuget.svg?sanitize=true&quot; height=&quot;20&quot; /&gt;&amp;nbsp;&lt;a href=&quot;https://json.nlohmann.me/integration/package_managers/#nuget&quot;&gt;&lt;strong&gt;Nuget&lt;/strong&gt;&lt;/a&gt; &lt;code&gt;nlohmann.json&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;img src=&quot;https://raw.githubusercontent.com/nlohmann/json/refs/heads/develop/docs/mkdocs/docs/images/package_managers/conda.svg?sanitize=true&quot; height=&quot;20&quot; /&gt;&amp;nbsp;&lt;a href=&quot;https://json.nlohmann.me/integration/package_managers/#conda&quot;&gt;&lt;strong&gt;Conda&lt;/strong&gt;&lt;/a&gt; &lt;code&gt;nlohmann_json&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;img src=&quot;https://raw.githubusercontent.com/nlohmann/json/refs/heads/develop/docs/mkdocs/docs/images/package_managers/macports.svg?sanitize=true&quot; height=&quot;20&quot; /&gt;&amp;nbsp;&lt;a href=&quot;https://json.nlohmann.me/integration/package_managers/#macports&quot;&gt;&lt;strong&gt;MacPorts&lt;/strong&gt;&lt;/a&gt; &lt;code&gt;nlohmann-json&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;img src=&quot;https://raw.githubusercontent.com/nlohmann/json/refs/heads/develop/docs/mkdocs/docs/images/package_managers/CPM.png&quot; height=&quot;20&quot; /&gt;&amp;nbsp;&lt;a href=&quot;https://json.nlohmann.me/integration/package_managers/#cpmcmake&quot;&gt;&lt;strong&gt;cpm.cmake&lt;/strong&gt;&lt;/a&gt; &lt;code&gt;gh:nlohmann/json&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;img src=&quot;https://raw.githubusercontent.com/nlohmann/json/refs/heads/develop/docs/mkdocs/docs/images/package_managers/xmake.svg?sanitize=true&quot; height=&quot;20&quot; /&gt;&amp;nbsp;&lt;a href=&quot;https://json.nlohmann.me/integration/package_managers/#xmake&quot;&gt;&lt;strong&gt;xmake&lt;/strong&gt;&lt;/a&gt; &lt;code&gt;nlohmann_json&lt;/code&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;The library is part of many package managers. See the &lt;a href=&quot;https://json.nlohmann.me/integration/package_managers/&quot;&gt;&lt;strong&gt;documentation&lt;/strong&gt;&lt;/a&gt; for detailed descriptions and examples.&lt;/p&gt; 
&lt;h3&gt;Pkg-config&lt;/h3&gt; 
&lt;p&gt;If you are using bare Makefiles, you can use &lt;code&gt;pkg-config&lt;/code&gt; to generate the include flags that point to where the library is installed:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;pkg-config nlohmann_json --cflags
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;License&lt;/h2&gt; 
&lt;img align=&quot;right&quot; src=&quot;https://149753425.v2.pressablecdn.com/wp-content/uploads/2009/06/OSIApproved_100X125.png&quot; alt=&quot;OSI approved license&quot; /&gt; 
&lt;p&gt;The class is licensed under the &lt;a href=&quot;https://opensource.org/licenses/MIT&quot;&gt;MIT License&lt;/a&gt;:&lt;/p&gt; 
&lt;p&gt;Copyright © 2013-2026 &lt;a href=&quot;https://nlohmann.me&quot;&gt;Niels Lohmann&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:&lt;/p&gt; 
&lt;p&gt;The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.&lt;/p&gt; 
&lt;p&gt;THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;ul&gt; 
 &lt;li&gt;The class contains the UTF-8 Decoder from Bjoern Hoehrmann which is licensed under the &lt;a href=&quot;https://opensource.org/licenses/MIT&quot;&gt;MIT License&lt;/a&gt; (see above). Copyright © 2008-2009 &lt;a href=&quot;https://bjoern.hoehrmann.de/&quot;&gt;Björn Hoehrmann&lt;/a&gt; &lt;a href=&quot;mailto:bjoern@hoehrmann.de&quot;&gt;bjoern@hoehrmann.de&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;The class contains a slightly modified version of the Grisu2 algorithm from Florian Loitsch which is licensed under the &lt;a href=&quot;https://opensource.org/licenses/MIT&quot;&gt;MIT License&lt;/a&gt; (see above). Copyright © 2009 &lt;a href=&quot;https://florian.loitsch.com/&quot;&gt;Florian Loitsch&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;The class contains a copy of &lt;a href=&quot;https://nemequ.github.io/hedley/&quot;&gt;Hedley&lt;/a&gt; from Evan Nemerson which is licensed as &lt;a href=&quot;https://creativecommons.org/publicdomain/zero/1.0/&quot;&gt;CC0-1.0&lt;/a&gt;.&lt;/li&gt; 
 &lt;li&gt;The class contains parts of &lt;a href=&quot;https://github.com/abseil/abseil-cpp&quot;&gt;Google Abseil&lt;/a&gt; which is licensed under the &lt;a href=&quot;https://opensource.org/licenses/Apache-2.0&quot;&gt;Apache 2.0 License&lt;/a&gt;.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;img align=&quot;right&quot; src=&quot;https://git.fsfe.org/reuse/reuse-ci/raw/branch/master/reuse-horizontal.png&quot; alt=&quot;REUSE Software&quot; /&gt; 
&lt;p&gt;The library is compliant to version 3.3 of the &lt;a href=&quot;https://reuse.software&quot;&gt;&lt;strong&gt;REUSE specification&lt;/strong&gt;&lt;/a&gt;:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Every source file contains an SPDX copyright header.&lt;/li&gt; 
 &lt;li&gt;The full text of all licenses used in the repository can be found in the &lt;code&gt;LICENSES&lt;/code&gt; folder.&lt;/li&gt; 
 &lt;li&gt;File &lt;code&gt;.reuse/dep5&lt;/code&gt; contains an overview of all files&#39; copyrights and licenses.&lt;/li&gt; 
 &lt;li&gt;Run &lt;code&gt;pipx run reuse lint&lt;/code&gt; to verify the project&#39;s REUSE compliance and &lt;code&gt;pipx run reuse spdx&lt;/code&gt; to generate a SPDX SBOM.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Contact&lt;/h2&gt; 
&lt;p&gt;If you have questions regarding the library, I would like to invite you to &lt;a href=&quot;https://github.com/nlohmann/json/issues/new/choose&quot;&gt;open an issue at GitHub&lt;/a&gt;. Please describe your request, problem, or question as detailed as possible, and also mention the version of the library you are using as well as the version of your compiler and operating system. Opening an issue at GitHub allows other users and contributors to this library to collaborate. For instance, I have little experience with MSVC, and most issues in this regard have been solved by a growing community. If you have a look at the &lt;a href=&quot;https://github.com/nlohmann/json/issues?q=is%3Aissue+is%3Aclosed&quot;&gt;closed issues&lt;/a&gt;, you will see that we react quite timely in most cases.&lt;/p&gt; 
&lt;p&gt;Only if your request would contain confidential information, please &lt;a href=&quot;mailto:mail@nlohmann.me&quot;&gt;send me an email&lt;/a&gt;. For encrypted messages, please use &lt;a href=&quot;https://keybase.io/nlohmann/pgp_keys.asc&quot;&gt;this key&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Security&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/nlohmann/json/commits&quot;&gt;Commits by Niels Lohmann&lt;/a&gt; and &lt;a href=&quot;https://github.com/nlohmann/json/releases&quot;&gt;releases&lt;/a&gt; are signed with this &lt;a href=&quot;https://keybase.io/nlohmann/pgp_keys.asc?fingerprint=797167ae41c0a6d9232e48457f3cea63ae251b69&quot;&gt;PGP Key&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Thanks&lt;/h2&gt; 
&lt;p&gt;I deeply appreciate the help of the following people.&lt;/p&gt; 
&lt;img src=&quot;https://raw.githubusercontent.com/nlohmann/json/develop/docs/avatars.png&quot; align=&quot;right&quot; alt=&quot;GitHub avatars of the contributors&quot; /&gt; 
&lt;ol&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/Teemperor&quot;&gt;Teemperor&lt;/a&gt; implemented CMake support and lcov integration, realized escape and Unicode handling in the string parser, and fixed the JSON serialization.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/elliotgoodrich&quot;&gt;elliotgoodrich&lt;/a&gt; fixed an issue with double deletion in the iterator classes.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/kirkshoop&quot;&gt;kirkshoop&lt;/a&gt; made the iterators of the class composable to other libraries.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/wanwc&quot;&gt;wancw&lt;/a&gt; fixed a bug that hindered the class to compile with Clang.&lt;/li&gt; 
 &lt;li&gt;Tomas Åblad found a bug in the iterator implementation.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/jrandall&quot;&gt;Joshua C. Randall&lt;/a&gt; fixed a bug in the floating-point serialization.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/aburgh&quot;&gt;Aaron Burghardt&lt;/a&gt; implemented code to parse streams incrementally. Furthermore, he greatly improved the parser class by allowing the definition of a filter function to discard undesired elements while parsing.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/dkopecek&quot;&gt;Daniel Kopeček&lt;/a&gt; fixed a bug in the compilation with GCC 5.0.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/Florianjw&quot;&gt;Florian Weber&lt;/a&gt; fixed a bug in and improved the performance of the comparison operators.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/EricMCornelius&quot;&gt;Eric Cornelius&lt;/a&gt; pointed out a bug in the handling with NaN and infinity values. He also improved the performance of the string escaping.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/likebeta&quot;&gt;易思龙&lt;/a&gt; implemented a conversion from anonymous enums.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/kepkin&quot;&gt;kepkin&lt;/a&gt; patiently pushed forward the support for Microsoft Visual Studio.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/gregmarr&quot;&gt;gregmarr&lt;/a&gt; simplified the implementation of reverse iterators and helped with numerous hints and improvements. In particular, he pushed forward the implementation of user-defined types.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/caiovlp&quot;&gt;Caio Luppi&lt;/a&gt; fixed a bug in the Unicode handling.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/dariomt&quot;&gt;dariomt&lt;/a&gt; fixed some typos in the examples.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/d-frey&quot;&gt;Daniel Frey&lt;/a&gt; cleaned up some pointers and implemented exception-safe memory allocation.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/ColinH&quot;&gt;Colin Hirsch&lt;/a&gt; took care of a small namespace issue.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/whoshuu&quot;&gt;Huu Nguyen&lt;/a&gt; corrected a variable name in the documentation.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/silverweed&quot;&gt;Silverweed&lt;/a&gt; overloaded &lt;code&gt;parse()&lt;/code&gt; to accept an rvalue reference.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/dariomt&quot;&gt;dariomt&lt;/a&gt; fixed a subtlety in MSVC type support and implemented the &lt;code&gt;get_ref()&lt;/code&gt; function to get a reference to stored values.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/ZahlGraf&quot;&gt;ZahlGraf&lt;/a&gt; added a workaround that allows compilation using Android NDK.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/whackashoe&quot;&gt;whackashoe&lt;/a&gt; replaced a function that was marked as unsafe by Visual Studio.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/406345&quot;&gt;406345&lt;/a&gt; fixed two small warnings.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/glenfe&quot;&gt;Glen Fernandes&lt;/a&gt; noted a potential portability problem in the &lt;code&gt;has_mapped_type&lt;/code&gt; function.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/nibroc&quot;&gt;Corbin Hughes&lt;/a&gt; fixed some typos in the contribution guidelines.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/twelsby&quot;&gt;twelsby&lt;/a&gt; fixed the array subscript operator, an issue that failed the MSVC build, and floating-point parsing/dumping. He further added support for unsigned integer numbers and implemented better roundtrip support for parsed numbers.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/vog&quot;&gt;Volker Diels-Grabsch&lt;/a&gt; fixed a link in the README file.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/msm-&quot;&gt;msm-&lt;/a&gt; added support for American Fuzzy Lop.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/Annihil&quot;&gt;Annihil&lt;/a&gt; fixed an example in the README file.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/Themercee&quot;&gt;Themercee&lt;/a&gt; noted a wrong URL in the README file.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/lv-zheng&quot;&gt;Lv Zheng&lt;/a&gt; fixed a namespace issue with &lt;code&gt;int64_t&lt;/code&gt; and &lt;code&gt;uint64_t&lt;/code&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/abc100m&quot;&gt;abc100m&lt;/a&gt; analyzed the issues with GCC 4.8 and proposed a &lt;a href=&quot;https://github.com/nlohmann/json/pull/212&quot;&gt;partial solution&lt;/a&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/zewt&quot;&gt;zewt&lt;/a&gt; added useful notes to the README file about Android.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/robertmrk&quot;&gt;Róbert Márki&lt;/a&gt; added a fix to use move iterators and improved the integration via CMake.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/ChrisKitching&quot;&gt;Chris Kitching&lt;/a&gt; cleaned up the CMake files.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/06needhamt&quot;&gt;Tom Needham&lt;/a&gt; fixed a subtle bug with MSVC 2015 which was also proposed by &lt;a href=&quot;https://github.com/Epidal&quot;&gt;Michael K.&lt;/a&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/thelostt&quot;&gt;Mário Feroldi&lt;/a&gt; fixed a small typo.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/duncanwerner&quot;&gt;duncanwerner&lt;/a&gt; found a really embarrassing performance regression in the 2.0.0 release.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/dtoma&quot;&gt;Damien&lt;/a&gt; fixed one of the last conversion warnings.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/t-b&quot;&gt;Thomas Braun&lt;/a&gt; fixed a warning in a test case and adjusted MSVC calls in the CI.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/theodelrieu&quot;&gt;Théo DELRIEU&lt;/a&gt; patiently and constructively oversaw the long way toward &lt;a href=&quot;https://github.com/nlohmann/json/issues/290&quot;&gt;iterator-range parsing&lt;/a&gt;. He also implemented the magic behind the serialization/deserialization of user-defined types and split the single header file into smaller chunks.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/5tefan&quot;&gt;Stefan&lt;/a&gt; fixed a minor issue in the documentation.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/vasild&quot;&gt;Vasil Dimov&lt;/a&gt; fixed the documentation regarding conversions from &lt;code&gt;std::multiset&lt;/code&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/ChristophJud&quot;&gt;ChristophJud&lt;/a&gt; overworked the CMake files to ease project inclusion.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/vpetrigo&quot;&gt;Vladimir Petrigo&lt;/a&gt; made a SFINAE hack more readable and added Visual Studio 17 to the build matrix.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/seeekr&quot;&gt;Denis Andrejew&lt;/a&gt; fixed a grammar issue in the README file.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/palacaze&quot;&gt;Pierre-Antoine Lacaze&lt;/a&gt; found a subtle bug in the &lt;code&gt;dump()&lt;/code&gt; function.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/TurpentineDistillery&quot;&gt;TurpentineDistillery&lt;/a&gt; pointed to &lt;a href=&quot;https://en.cppreference.com/w/cpp/locale/locale/classic&quot;&gt;&lt;code&gt;std::locale::classic()&lt;/code&gt;&lt;/a&gt; to avoid too much locale joggling, found some nice performance improvements in the parser, improved the benchmarking code, and realized locale-independent number parsing and printing.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/cgzones&quot;&gt;cgzones&lt;/a&gt; had an idea how to fix the Coverity scan.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/jaredgrubb&quot;&gt;Jared Grubb&lt;/a&gt; silenced a nasty documentation warning.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/qwename&quot;&gt;Yixin Zhang&lt;/a&gt; fixed an integer overflow check.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/Bosswestfalen&quot;&gt;Bosswestfalen&lt;/a&gt; merged two iterator classes into a smaller one.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/Daniel599&quot;&gt;Daniel599&lt;/a&gt; helped to get Travis to execute the tests with Clang&#39;s sanitizers.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/vjon&quot;&gt;Jonathan Lee&lt;/a&gt; fixed an example in the README file.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/gnzlbg&quot;&gt;gnzlbg&lt;/a&gt; supported the implementation of user-defined types.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/qis&quot;&gt;Alexej Harm&lt;/a&gt; helped to get the user-defined types working with Visual Studio.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/jaredgrubb&quot;&gt;Jared Grubb&lt;/a&gt; supported the implementation of user-defined types.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/EnricoBilla&quot;&gt;EnricoBilla&lt;/a&gt; noted a typo in an example.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/horenmar&quot;&gt;Martin Hořeňovský&lt;/a&gt; found a way for a 2x speedup for the compilation time of the test suite.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/ukhegg&quot;&gt;ukhegg&lt;/a&gt; found proposed an improvement for the examples section.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/rswanson-ihi&quot;&gt;rswanson-ihi&lt;/a&gt; noted a typo in the README.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/stanmihai4&quot;&gt;Mihai Stan&lt;/a&gt; fixed a bug in the comparison with &lt;code&gt;nullptr&lt;/code&gt;s.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/tusharpm&quot;&gt;Tushar Maheshwari&lt;/a&gt; added &lt;a href=&quot;https://github.com/sakra/cotire&quot;&gt;cotire&lt;/a&gt; support to speed up the compilation.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/TedLyngmo&quot;&gt;TedLyngmo&lt;/a&gt; noted a typo in the README, removed unnecessary bit arithmetic, and fixed some &lt;code&gt;-Weffc++&lt;/code&gt; warnings.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/krzysztofwos&quot;&gt;Krzysztof Woś&lt;/a&gt; made exceptions more visible.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/ftillier&quot;&gt;ftillier&lt;/a&gt; fixed a compiler warning.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/tinloaf&quot;&gt;tinloaf&lt;/a&gt; made sure all pushed warnings are properly popped.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/Fytch&quot;&gt;Fytch&lt;/a&gt; found a bug in the documentation.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/Type1J&quot;&gt;Jay Sistar&lt;/a&gt; implemented a Meson build description.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/HenryRLee&quot;&gt;Henry Lee&lt;/a&gt; fixed a warning in ICC and improved the iterator implementation.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/vthiery&quot;&gt;Vincent Thiery&lt;/a&gt; maintains a package for the Conan package manager.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/koemeet&quot;&gt;Steffen&lt;/a&gt; fixed a potential issue with MSVC and &lt;code&gt;std::min&lt;/code&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/Chocobo1&quot;&gt;Mike Tzou&lt;/a&gt; fixed some typos.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/amrcode&quot;&gt;amrcode&lt;/a&gt; noted misleading documentation about comparison of floats.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/olegendo&quot;&gt;Oleg Endo&lt;/a&gt; reduced the memory consumption by replacing &lt;code&gt;&amp;lt;iostream&amp;gt;&lt;/code&gt; with &lt;code&gt;&amp;lt;iosfwd&amp;gt;&lt;/code&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/dan-42&quot;&gt;dan-42&lt;/a&gt; cleaned up the CMake files to simplify including/reusing of the library.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/himikof&quot;&gt;Nikita Ofitserov&lt;/a&gt; allowed for moving values from initializer lists.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/wincent&quot;&gt;Greg Hurrell&lt;/a&gt; fixed a typo.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/DmitryKuk&quot;&gt;Dmitry Kukovinets&lt;/a&gt; fixed a typo.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/kbthomp1&quot;&gt;kbthomp1&lt;/a&gt; fixed an issue related to the Intel OSX compiler.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/daixtrose&quot;&gt;Markus Werle&lt;/a&gt; fixed a typo.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/WebProdPP&quot;&gt;WebProdPP&lt;/a&gt; fixed a subtle error in a precondition check.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/leha-bot&quot;&gt;Alex&lt;/a&gt; noted an error in a code sample.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/tdegeus&quot;&gt;Tom de Geus&lt;/a&gt; reported some warnings with ICC and helped to fix them.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/pjkundert&quot;&gt;Perry Kundert&lt;/a&gt; simplified reading from input streams.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/sonulohani&quot;&gt;Sonu Lohani&lt;/a&gt; fixed a small compilation error.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/jseward&quot;&gt;Jamie Seward&lt;/a&gt; fixed all MSVC warnings.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/eld00d&quot;&gt;Nate Vargas&lt;/a&gt; added a Doxygen tag file.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/pvleuven&quot;&gt;pvleuven&lt;/a&gt; helped to fix a warning in ICC.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/crea7or&quot;&gt;Pavel&lt;/a&gt; helped to fix some warnings in MSVC.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/jseward&quot;&gt;Jamie Seward&lt;/a&gt; avoided unnecessary string copies in &lt;code&gt;find()&lt;/code&gt; and &lt;code&gt;count()&lt;/code&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/Itja&quot;&gt;Mitja&lt;/a&gt; fixed some typos.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/jowr&quot;&gt;Jorrit Wronski&lt;/a&gt; updated the Hunter package links.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/TinyTinni&quot;&gt;Matthias Möller&lt;/a&gt; added a &lt;code&gt;.natvis&lt;/code&gt; for the MSVC debug view.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/bogemic&quot;&gt;bogemic&lt;/a&gt; fixed some C++17 deprecation warnings.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/erengy&quot;&gt;Eren Okka&lt;/a&gt; fixed some MSVC warnings.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/abolz&quot;&gt;abolz&lt;/a&gt; integrated the Grisu2 algorithm for proper floating-point formatting, allowing more roundtrip checks to succeed.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/Pipeliner&quot;&gt;Vadim Evard&lt;/a&gt; fixed a Markdown issue in the README.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/zerodefect&quot;&gt;zerodefect&lt;/a&gt; fixed a compiler warning.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/kaidokert&quot;&gt;Kert&lt;/a&gt; allowed to template the string type in the serialization and added the possibility to override the exceptional behavior.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/mark-99&quot;&gt;mark-99&lt;/a&gt; helped fix an ICC error.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/patrikhuber&quot;&gt;Patrik Huber&lt;/a&gt; fixed links in the README file.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/johnfb&quot;&gt;johnfb&lt;/a&gt; found a bug in the implementation of CBOR&#39;s indefinite length strings.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/pfultz2&quot;&gt;Paul Fultz II&lt;/a&gt; added a note on the cget package manager.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/wla80&quot;&gt;Wilson Lin&lt;/a&gt; made the integration section of the README more concise.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/ralfbielig&quot;&gt;RalfBielig&lt;/a&gt; detected and fixed a memory leak in the parser callback.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/agrianius&quot;&gt;agrianius&lt;/a&gt; allowed dumping JSON to an alternative string type.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/ktonon&quot;&gt;Kevin Tonon&lt;/a&gt; overworked the C++11 compiler checks in CMake.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/ax3l&quot;&gt;Axel Huebl&lt;/a&gt; simplified a CMake check and added support for the &lt;a href=&quot;https://spack.io&quot;&gt;Spack package manager&lt;/a&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/coryan&quot;&gt;Carlos O&#39;Ryan&lt;/a&gt; fixed a typo.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/jammehcow&quot;&gt;James Upjohn&lt;/a&gt; fixed a version number in the compilers section.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/chuckatkins&quot;&gt;Chuck Atkins&lt;/a&gt; adjusted the CMake files to the CMake packaging guidelines and provided documentation for the CMake integration.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/dns13&quot;&gt;Jan Schöppach&lt;/a&gt; fixed a typo.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/martin-mfg&quot;&gt;martin-mfg&lt;/a&gt; fixed a typo.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/TinyTinni&quot;&gt;Matthias Möller&lt;/a&gt; removed the dependency from &lt;code&gt;std::stringstream&lt;/code&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/agrianius&quot;&gt;agrianius&lt;/a&gt; added code to use alternative string implementations.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/Daniel599&quot;&gt;Daniel599&lt;/a&gt; allowed to use more algorithms with the &lt;code&gt;items()&lt;/code&gt; function.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/jrakow&quot;&gt;Julius Rakow&lt;/a&gt; fixed the Meson include directory and fixed the links to &lt;a href=&quot;https://cppreference.com&quot;&gt;cppreference.com&lt;/a&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/sonulohani&quot;&gt;Sonu Lohani&lt;/a&gt; fixed the compilation with MSVC 2015 in debug mode.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/grembo&quot;&gt;grembo&lt;/a&gt; fixed the test suite and re-enabled several test cases.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/simnalamburt&quot;&gt;Hyeon Kim&lt;/a&gt; introduced the macro &lt;code&gt;JSON_INTERNAL_CATCH&lt;/code&gt; to control the exception handling inside the library.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/thyu&quot;&gt;thyu&lt;/a&gt; fixed a compiler warning.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/LEgregius&quot;&gt;David Guthrie&lt;/a&gt; fixed a subtle compilation error with Clang 3.4.2.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/dennisfischer&quot;&gt;Dennis Fischer&lt;/a&gt; allowed to call &lt;code&gt;find_package&lt;/code&gt; without installing the library.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/simnalamburt&quot;&gt;Hyeon Kim&lt;/a&gt; fixed an issue with a double macro definition.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/rivertam&quot;&gt;Ben Berman&lt;/a&gt; made some error messages more understandable.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/zakalibit&quot;&gt;zakalibit&lt;/a&gt; fixed a compilation problem with the Intel C++ compiler.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/mandreyel&quot;&gt;mandreyel&lt;/a&gt; fixed a compilation problem.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/koponomarenko&quot;&gt;Kostiantyn Ponomarenko&lt;/a&gt; added version and license information to the Meson build file.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/henryiii&quot;&gt;Henry Schreiner&lt;/a&gt; added support for GCC 4.8.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/knilch0r&quot;&gt;knilch&lt;/a&gt; made sure the test suite does not stall when run in the wrong directory.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/antonioborondo&quot;&gt;Antonio Borondo&lt;/a&gt; fixed an MSVC 2017 warning.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/dgendreau&quot;&gt;Dan Gendreau&lt;/a&gt; implemented the &lt;code&gt;NLOHMANN_JSON_SERIALIZE_ENUM&lt;/code&gt; macro to quickly define an enum/JSON mapping.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/efp&quot;&gt;efp&lt;/a&gt; added line and column information to parse errors.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/julian-becker&quot;&gt;julian-becker&lt;/a&gt; added BSON support.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/pratikpc&quot;&gt;Pratik Chowdhury&lt;/a&gt; added support for structured bindings.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/davedissian&quot;&gt;David Avedissian&lt;/a&gt; added support for Clang 5.0.1 (PS4 version).&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/dumarjo&quot;&gt;Jonathan Dumaresq&lt;/a&gt; implemented an input adapter to read from &lt;code&gt;FILE*&lt;/code&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/kjpus&quot;&gt;kjpus&lt;/a&gt; fixed a link in the documentation.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/manu-chroma&quot;&gt;Manvendra Singh&lt;/a&gt; fixed a typo in the documentation.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/ziggurat29&quot;&gt;ziggurat29&lt;/a&gt; fixed an MSVC warning.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/SylvainCorlay&quot;&gt;Sylvain Corlay&lt;/a&gt; added code to avoid an issue with MSVC.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/mefyl&quot;&gt;mefyl&lt;/a&gt; fixed a bug when JSON was parsed from an input stream.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/mpoquet&quot;&gt;Millian Poquet&lt;/a&gt; allowed to install the library via Meson.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/moodboom&quot;&gt;Michael Behrns-Miller&lt;/a&gt; found an issue with a missing namespace.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/naszta&quot;&gt;Nasztanovics Ferenc&lt;/a&gt; fixed a compilation issue with libc 2.12.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/andreas-schwab&quot;&gt;Andreas Schwab&lt;/a&gt; fixed the endian conversion.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/Mark-Dunning&quot;&gt;Mark-Dunning&lt;/a&gt; fixed a warning in MSVC.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/garethsb-sony&quot;&gt;Gareth Sylvester-Bradley&lt;/a&gt; added &lt;code&gt;operator/&lt;/code&gt; for JSON Pointers.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/johnmarkwayve&quot;&gt;John-Mark&lt;/a&gt; noted a missing header.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/xvitaly&quot;&gt;Vitaly Zaitsev&lt;/a&gt; fixed compilation with GCC 9.0.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/stac47&quot;&gt;Laurent Stacul&lt;/a&gt; fixed compilation with GCC 9.0.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/iwanders&quot;&gt;Ivor Wanders&lt;/a&gt; helped to reduce the CMake requirement to version 3.1.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/njlr&quot;&gt;njlr&lt;/a&gt; updated the Buckaroo instructions.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/lieff&quot;&gt;Lion&lt;/a&gt; fixed a compilation issue with GCC 7 on CentOS.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/nickaein&quot;&gt;Isaac Nickaein&lt;/a&gt; improved the integer serialization performance and implemented the &lt;code&gt;contains()&lt;/code&gt; function.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/past-due&quot;&gt;past-due&lt;/a&gt; suppressed an unfixable warning.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/elvisoric&quot;&gt;Elvis Oric&lt;/a&gt; improved Meson support.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/Afforix&quot;&gt;Matěj Plch&lt;/a&gt; fixed an example in the README.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/wythe&quot;&gt;Mark Beckwith&lt;/a&gt; fixed a typo.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/scinart&quot;&gt;scinart&lt;/a&gt; fixed a bug in the serializer.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/pboettch&quot;&gt;Patrick Boettcher&lt;/a&gt; implemented &lt;code&gt;push_back()&lt;/code&gt; and &lt;code&gt;pop_back()&lt;/code&gt; for JSON Pointers.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/nicoddemus&quot;&gt;Bruno Oliveira&lt;/a&gt; added support for Conda.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/skypjack&quot;&gt;Michele Caini&lt;/a&gt; fixed links in the README.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/hnkb&quot;&gt;Hani&lt;/a&gt; documented how to install the library with NuGet.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/wythe&quot;&gt;Mark Beckwith&lt;/a&gt; fixed a typo.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/yann-morin-1998&quot;&gt;yann-morin-1998&lt;/a&gt; helped to reduce the CMake requirement to version 3.1.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/podsvirov&quot;&gt;Konstantin Podsvirov&lt;/a&gt; maintains a package for the MSYS2 software distro.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/remyabel&quot;&gt;remyabel&lt;/a&gt; added GNUInstallDirs to the CMake files.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/taylorhoward92&quot;&gt;Taylor Howard&lt;/a&gt; fixed a unit test.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/Macr0Nerd&quot;&gt;Gabe Ron&lt;/a&gt; implemented the &lt;code&gt;to_string&lt;/code&gt; method.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/heavywatal&quot;&gt;Watal M. Iwasaki&lt;/a&gt; fixed a Clang warning.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/onqtam&quot;&gt;Viktor Kirilov&lt;/a&gt; switched the unit tests from &lt;a href=&quot;https://github.com/philsquared/Catch&quot;&gt;Catch&lt;/a&gt; to &lt;a href=&quot;https://github.com/onqtam/doctest&quot;&gt;doctest&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/ejcjason&quot;&gt;Juncheng E&lt;/a&gt; fixed a typo.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/tete17&quot;&gt;tete17&lt;/a&gt; fixed a bug in the &lt;code&gt;contains&lt;/code&gt; function.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/Xav83&quot;&gt;Xav83&lt;/a&gt; fixed some cppcheck warnings.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/0xflotus&quot;&gt;0xflotus&lt;/a&gt; fixed some typos.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/chris0x44&quot;&gt;Christian Deneke&lt;/a&gt; added a const version of &lt;code&gt;json_pointer::back&lt;/code&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/crazyjul&quot;&gt;Julien Hamaide&lt;/a&gt; made the &lt;code&gt;items()&lt;/code&gt; function work with custom string types.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/nemequ&quot;&gt;Evan Nemerson&lt;/a&gt; updated fixed a bug in Hedley and updated this library accordingly.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/flopp&quot;&gt;Florian Pigorsch&lt;/a&gt; fixed a lot of typos.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/cbegue&quot;&gt;Camille Bégué&lt;/a&gt; fixed an issue in the conversion from &lt;code&gt;std::pair&lt;/code&gt; and &lt;code&gt;std::tuple&lt;/code&gt; to &lt;code&gt;json&lt;/code&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/AnthonyVH&quot;&gt;Anthony VH&lt;/a&gt; fixed a compile error in an enum deserialization.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/ua-code-dragon&quot;&gt;Yuriy Vountesmery&lt;/a&gt; noted a subtle bug in a preprocessor check.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/dota17&quot;&gt;Chen&lt;/a&gt; fixed numerous issues in the library.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/aokellermann&quot;&gt;Antony Kellermann&lt;/a&gt; added a CI step for GCC 10.1.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/gistrec&quot;&gt;Alex&lt;/a&gt; fixed an MSVC warning.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/rvjr&quot;&gt;Rainer&lt;/a&gt; proposed an improvement in the floating-point serialization in CBOR.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/FrancoisChabot&quot;&gt;Francois Chabot&lt;/a&gt; made performance improvements in the input adapters.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/ArthurSonzogni&quot;&gt;Arthur Sonzogni&lt;/a&gt; documented how the library can be included via &lt;code&gt;FetchContent&lt;/code&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/rmisev&quot;&gt;Rimas Misevičius&lt;/a&gt; fixed an error message.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/alexandermyasnikov&quot;&gt;Alexander Myasnikov&lt;/a&gt; fixed some examples and a link in the README.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/uhoreg&quot;&gt;Hubert Chathi&lt;/a&gt; made CMake&#39;s version config file architecture-independent.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/OmnipotentEntity&quot;&gt;OmnipotentEntity&lt;/a&gt; implemented the binary values for CBOR, MessagePack, BSON, and UBJSON.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/ArtemSarmini&quot;&gt;ArtemSarmini&lt;/a&gt; fixed a compilation issue with GCC 10 and fixed a leak.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/sea-kg&quot;&gt;Evgenii Sopov&lt;/a&gt; integrated the library to the wsjcpp package manager.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/linev&quot;&gt;Sergey Linev&lt;/a&gt; fixed a compiler warning.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/magamig&quot;&gt;Miguel Magalhães&lt;/a&gt; fixed the year in the copyright.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/garethsb-sony&quot;&gt;Gareth Sylvester-Bradley&lt;/a&gt; fixed a compilation issue with MSVC.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/alex-weej&quot;&gt;Alexander “weej” Jones&lt;/a&gt; fixed an example in the README.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/Coeur&quot;&gt;Antoine Cœur&lt;/a&gt; fixed some typos in the documentation.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/jothepro&quot;&gt;jothepro&lt;/a&gt; updated links to the Hunter package.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/kastiglione&quot;&gt;Dave Lee&lt;/a&gt; fixed a link in the README.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/Klaim&quot;&gt;Joël Lamotte&lt;/a&gt; added instruction for using Build2&#39;s package manager.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/pauljurczak&quot;&gt;Paul Jurczak&lt;/a&gt; fixed an example in the README.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/sonulohani&quot;&gt;Sonu Lohani&lt;/a&gt; fixed a warning.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/gocarlos&quot;&gt;Carlos Gomes Martinho&lt;/a&gt; updated the Conan package source.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/podsvirov&quot;&gt;Konstantin Podsvirov&lt;/a&gt; fixed the MSYS2 package documentation.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/Tridacnid&quot;&gt;Tridacnid&lt;/a&gt; improved the CMake tests.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/MBalszun&quot;&gt;Michael&lt;/a&gt; fixed MSVC warnings.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/quentin-dev&quot;&gt;Quentin Barbarat&lt;/a&gt; fixed an example in the documentation.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/XyFreak&quot;&gt;XyFreak&lt;/a&gt; fixed a compiler warning.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/TotalCaesar659&quot;&gt;TotalCaesar659&lt;/a&gt; fixed links in the README.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/tanuj208&quot;&gt;Tanuj Garg&lt;/a&gt; improved the fuzzer coverage for UBSAN input.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/AODQ&quot;&gt;AODQ&lt;/a&gt; fixed a compiler warning.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/jwittbrodt&quot;&gt;jwittbrodt&lt;/a&gt; made &lt;code&gt;NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE&lt;/code&gt; inline.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/pfeatherstone&quot;&gt;pfeatherstone&lt;/a&gt; improved the upper bound of arguments of the &lt;code&gt;NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE&lt;/code&gt;/&lt;code&gt;NLOHMANN_DEFINE_TYPE_INTRUSIVE&lt;/code&gt; macros.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/jprochazk&quot;&gt;Jan Procházka&lt;/a&gt; fixed a bug in the CBOR parser for binary and string values.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/T0b1-iOS&quot;&gt;T0b1-iOS&lt;/a&gt; fixed a bug in the new hash implementation.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/matthewbauer&quot;&gt;Matthew Bauer&lt;/a&gt; adjusted the CBOR writer to create tags for binary subtypes.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/gatopeich&quot;&gt;gatopeich&lt;/a&gt; implemented an ordered map container for &lt;code&gt;nlohmann::ordered_json&lt;/code&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/ericonr&quot;&gt;Érico Nogueira Rolim&lt;/a&gt; added support for pkg-config.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/KonanM&quot;&gt;KonanM&lt;/a&gt; proposed an implementation for the &lt;code&gt;NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE&lt;/code&gt;/&lt;code&gt;NLOHMANN_DEFINE_TYPE_INTRUSIVE&lt;/code&gt; macros.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/gracicot&quot;&gt;Guillaume Racicot&lt;/a&gt; implemented &lt;code&gt;string_view&lt;/code&gt; support and allowed C++20 support.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/alexreinking&quot;&gt;Alex Reinking&lt;/a&gt; improved CMake support for &lt;code&gt;FetchContent&lt;/code&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/ssbssa&quot;&gt;Hannes Domani&lt;/a&gt; provided a GDB pretty printer.&lt;/li&gt; 
 &lt;li&gt;Lars Wirzenius reviewed the README file.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/ongjunjie&quot;&gt;Jun Jie&lt;/a&gt; fixed a compiler path in the CMake scripts.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/rbuch&quot;&gt;Ronak Buch&lt;/a&gt; fixed typos in the documentation.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/karzhenkov&quot;&gt;Alexander Karzhenkov&lt;/a&gt; fixed a move constructor and the Travis builds.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/leozz37&quot;&gt;Leonardo Lima&lt;/a&gt; added CPM.Cmake support.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/jbzdarkid&quot;&gt;Joseph Blackman&lt;/a&gt; fixed a warning.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/YarikTH&quot;&gt;Yaroslav&lt;/a&gt; updated doctest and implemented unit tests.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/globberwops&quot;&gt;Martin Stump&lt;/a&gt; fixed a bug in the CMake files.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/jasujm&quot;&gt;Jaakko Moisio&lt;/a&gt; fixed a bug in the input adapters.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/bl-ue&quot;&gt;bl-ue&lt;/a&gt; fixed some Markdown issues in the README file.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/wawiesel&quot;&gt;William A. Wieselquist&lt;/a&gt; fixed an example from the README.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/abbaswasim&quot;&gt;abbaswasim&lt;/a&gt; fixed an example from the README.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/remyjette&quot;&gt;Remy Jette&lt;/a&gt; fixed a warning.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/frasermarlow&quot;&gt;Fraser&lt;/a&gt; fixed the documentation.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/musicinmybrain&quot;&gt;Ben Beasley&lt;/a&gt; updated doctest.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/doronbehar&quot;&gt;Doron Behar&lt;/a&gt; fixed pkg-config.pc.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/raduteo&quot;&gt;raduteo&lt;/a&gt; fixed a warning.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/theShmoo&quot;&gt;David Pfahler&lt;/a&gt; added the possibility to compile the library without I/O support.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/mortenfyhn&quot;&gt;Morten Fyhn Amundsen&lt;/a&gt; fixed a typo.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/jpl-mac&quot;&gt;jpl-mac&lt;/a&gt; allowed treating the library as a system header in CMake.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/jasmcaus&quot;&gt;Jason Dsouza&lt;/a&gt; fixed the indentation of the CMake file.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/offa&quot;&gt;offa&lt;/a&gt; added a link to Conan Center to the documentation.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/TotalCaesar659&quot;&gt;TotalCaesar659&lt;/a&gt; updated the links in the documentation to use HTTPS.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/grafail&quot;&gt;Rafail Giavrimis&lt;/a&gt; fixed the Google Benchmark default branch.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/ldionne&quot;&gt;Louis Dionne&lt;/a&gt; fixed a conversion operator.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/justanotheranonymoususer&quot;&gt;justanotheranonymoususer&lt;/a&gt; made the examples in the README more consistent.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/Finkman&quot;&gt;Finkman&lt;/a&gt; suppressed some &lt;code&gt;-Wfloat-equal&lt;/code&gt; warnings.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/fhuberts&quot;&gt;Ferry Huberts&lt;/a&gt; fixed &lt;code&gt;-Wswitch-enum&lt;/code&gt; warnings.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/senyai&quot;&gt;Arseniy Terekhin&lt;/a&gt; made the GDB pretty-printer robust against unset variable names.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/amirmasoudabdol&quot;&gt;Amir Masoud Abdol&lt;/a&gt; updated the Homebrew command as nlohmann/json is now in homebrew-core.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/Hallot&quot;&gt;Hallot&lt;/a&gt; fixed some &lt;code&gt;-Wextra-semi-stmt warnings&lt;/code&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/gcerretani&quot;&gt;Giovanni Cerretani&lt;/a&gt; fixed &lt;code&gt;-Wunused&lt;/code&gt; warnings on &lt;code&gt;JSON_DIAGNOSTICS&lt;/code&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/Kapeli&quot;&gt;Bogdan Popescu&lt;/a&gt; hosts the &lt;a href=&quot;https://github.com/Kapeli/Dash-User-Contributions/tree/master/docsets/JSON_for_Modern_C%2B%2B&quot;&gt;docset&lt;/a&gt; for offline documentation viewers.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/carlsmedstad&quot;&gt;Carl Smedstad&lt;/a&gt; fixed an assertion error when using &lt;code&gt;JSON_DIAGNOSTICS&lt;/code&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/miikka75&quot;&gt;miikka75&lt;/a&gt; provided an important fix to compile C++17 code with Clang 9.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/kernie&quot;&gt;Maarten Becker&lt;/a&gt; fixed a warning for shadowed variables.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/axnsan12&quot;&gt;Cristi Vîjdea&lt;/a&gt; fixed typos in the &lt;code&gt;operator[]&lt;/code&gt; documentation.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/axic&quot;&gt;Alex Beregszaszi&lt;/a&gt; fixed spelling mistakes in comments.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/striezel&quot;&gt;Dirk Stolle&lt;/a&gt; fixed typos in documentation.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/daniel-kun&quot;&gt;Daniel Albuschat&lt;/a&gt; corrected the parameter name in the &lt;code&gt;parse&lt;/code&gt; documentation.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/Prince-Mendiratta&quot;&gt;Prince Mendiratta&lt;/a&gt; fixed a link to the FAQ.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/falbrechtskirchinger&quot;&gt;Florian Albrechtskirchinger&lt;/a&gt; implemented &lt;code&gt;std::string_view&lt;/code&gt; support for object keys and made dozens of other improvements.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/fangq&quot;&gt;Qianqian Fang&lt;/a&gt; implemented the Binary JData (BJData) format.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/pketelsen&quot;&gt;pketelsen&lt;/a&gt; added macros &lt;code&gt;NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT&lt;/code&gt; and &lt;code&gt;NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT&lt;/code&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/DarkZeros&quot;&gt;DarkZeros&lt;/a&gt; adjusted to code to not clash with Arduino defines.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/flagarde&quot;&gt;flagarde&lt;/a&gt; fixed the output of &lt;code&gt;meta()&lt;/code&gt; for MSVC.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/gcerretani&quot;&gt;Giovanni Cerretani&lt;/a&gt; fixed a check for &lt;code&gt;std::filesystem&lt;/code&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/rex4539&quot;&gt;Dimitris Apostolou&lt;/a&gt; fixed a typo.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/fhuberts&quot;&gt;Ferry Huberts&lt;/a&gt; fixed a typo.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/heinemml&quot;&gt;Michael Nosthoff&lt;/a&gt; fixed a typo.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/jhnlee&quot;&gt;JungHoon Lee&lt;/a&gt; fixed a typo.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/fdiblen&quot;&gt;Faruk D.&lt;/a&gt; fixed the CITATION.CFF file.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/puffetto&quot;&gt;Andrea Cocito&lt;/a&gt; added a clarification on macro usage to the documentation.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/kkarbowiak&quot;&gt;Krzysiek Karbowiak&lt;/a&gt; refactored the tests to use &lt;code&gt;CHECK_THROWS_WITH_AS&lt;/code&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/prncoprs&quot;&gt;Chaoqi Zhang&lt;/a&gt; fixed a typo.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/ivanovmp&quot;&gt;ivanovmp&lt;/a&gt; fixed a whitespace error.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/KsaNL&quot;&gt;KsaNL&lt;/a&gt; fixed a build error when including &lt;code&gt;&amp;lt;windows.h&amp;gt;&lt;/code&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/Tachi107&quot;&gt;Andrea Pappacoda&lt;/a&gt; moved &lt;code&gt;.pc&lt;/code&gt; and &lt;code&gt;.cmake&lt;/code&gt; files to &lt;code&gt;share&lt;/code&gt; directory.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/wolfv&quot;&gt;Wolf Vollprecht&lt;/a&gt; added the &lt;code&gt;patch_inplace&lt;/code&gt; function.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/jez&quot;&gt;Jake Zimmerman&lt;/a&gt; highlighted common usage patterns in the README file.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/NN---&quot;&gt;NN&lt;/a&gt; added the Visual Studio output directory to &lt;code&gt;.gitignore&lt;/code&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/romainreignier&quot;&gt;Romain Reignier&lt;/a&gt; improved the performance of the vector output adapter.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/Mike-Leo-Smith&quot;&gt;Mike&lt;/a&gt; fixed the &lt;code&gt;std::iterator_traits&lt;/code&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/zxey&quot;&gt;Richard Hozák&lt;/a&gt; added macro &lt;code&gt;JSON_NO_ENUM&lt;/code&gt; to disable default enum conversions.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/vakokako&quot;&gt;vakokako&lt;/a&gt; fixed tests when compiling with C++20.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/alexweej&quot;&gt;Alexander “weej” Jones&lt;/a&gt; fixed an example in the README.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/eli-schwartz&quot;&gt;Eli Schwartz&lt;/a&gt; added more files to the &lt;code&gt;include.zip&lt;/code&gt; archive.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/kevinlul&quot;&gt;Kevin Lu&lt;/a&gt; fixed a compilation issue when typedefs with certain names were present.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/luxe&quot;&gt;Trevor Hickey&lt;/a&gt; improved the description of an example.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/jef&quot;&gt;Jef LeCompte&lt;/a&gt; updated the year in the README file.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/ahamez&quot;&gt;Alexandre Hamez&lt;/a&gt; fixed a warning.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/mbadhan&quot;&gt;Maninderpal Badhan&lt;/a&gt; fixed a typo.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/kevin--&quot;&gt;kevin--&lt;/a&gt; added a note to an example in the README file.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/wx257osn2&quot;&gt;I&lt;/a&gt; fixed a typo.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/Lord-Kamina&quot;&gt;Gregorio Litenstein&lt;/a&gt; fixed the Clang detection.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/andoma&quot;&gt;Andreas Smas&lt;/a&gt; added a Doozer badge.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/wancw&quot;&gt;WanCW&lt;/a&gt; fixed the string conversion with Clang.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/zhaohuaxishi&quot;&gt;zhaohuaxishi&lt;/a&gt; fixed a Doxygen error.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/emvivre&quot;&gt;emvivre&lt;/a&gt; removed an invalid parameter from CMake.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/Dobiasd&quot;&gt;Tobias Hermann&lt;/a&gt; fixed a link in the README file.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/traits&quot;&gt;Michael&lt;/a&gt; fixed a warning.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/ryanjmulder&quot;&gt;Ryan Mulder&lt;/a&gt; added &lt;code&gt;ensure_ascii&lt;/code&gt; to the &lt;code&gt;dump&lt;/code&gt; function.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/murinicanor&quot;&gt;Muri Nicanor&lt;/a&gt; fixed the &lt;code&gt;sed&lt;/code&gt; discovery in the Makefile.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/dgavedissian&quot;&gt;David Avedissian&lt;/a&gt; implemented SFINAE-friendly &lt;code&gt;iterator_traits&lt;/code&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/aqnouch&quot;&gt;AQNOUCH Mohammed&lt;/a&gt; fixed a typo in the README.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/garethsb&quot;&gt;Gareth Sylvester-Bradley&lt;/a&gt; added &lt;code&gt;operator/=&lt;/code&gt; and &lt;code&gt;operator/&lt;/code&gt; to construct JSON pointers.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/mykter&quot;&gt;Michael Macnair&lt;/a&gt; added support for afl-fuzz testing.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/berkus&quot;&gt;Berkus Decker&lt;/a&gt; fixed a typo in the README.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/effolkronium&quot;&gt;Illia Polishchuk&lt;/a&gt; improved the CMake testing.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/eltociear&quot;&gt;Ikko Ashimine&lt;/a&gt; fixed a typo.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/barcode&quot;&gt;Raphael Grimm&lt;/a&gt; added the possibility to define a custom base class.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/tocic&quot;&gt;tocic&lt;/a&gt; fixed typos in the documentation.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/Vertexwahn&quot;&gt;Vertexwahn&lt;/a&gt; added Bazel build support.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/striezel&quot;&gt;Dirk Stolle&lt;/a&gt; fixed typos in the documentation.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/DavidKorczynski&quot;&gt;DavidKorczynski&lt;/a&gt; added a CIFuzz CI GitHub action.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/Finkman&quot;&gt;Finkman&lt;/a&gt; fixed the debug pretty-printer.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/floriansegginger&quot;&gt;Florian Segginger&lt;/a&gt; bumped the years in the README.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/haadfida&quot;&gt;haadfida&lt;/a&gt; cleaned up the badges of used services.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/ArsenArsen&quot;&gt;Arsen Arsenović&lt;/a&gt; fixed a build error.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/theevilone45&quot;&gt;theevilone45&lt;/a&gt; fixed a typo in a CMake file.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/trofi&quot;&gt;Sergei Trofimovich&lt;/a&gt; fixed the custom allocator support.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/joycebrum&quot;&gt;Joyce&lt;/a&gt; fixed some security issues in the GitHub workflows.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/njakob&quot;&gt;Nicolas Jakob&lt;/a&gt; add vcpkg version badge.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/Tomerkm&quot;&gt;Tomerkm&lt;/a&gt; added tests.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/tusooa&quot;&gt;No.&lt;/a&gt; fixed the use of &lt;code&gt;get&amp;lt;&amp;gt;&lt;/code&gt; calls.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/tarolling&quot;&gt;taro&lt;/a&gt; fixed a typo in the &lt;code&gt;CODEOWNERS&lt;/code&gt; file.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/eltociear&quot;&gt;Ikko Eltociear Ashimine&lt;/a&gt; fixed a typo.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/felixonmars&quot;&gt;Felix Yan&lt;/a&gt; fixed a typo in the README.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/HO-COOH&quot;&gt;HO-COOH&lt;/a&gt; fixed a parenthesis in the documentation.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/iwanders&quot;&gt;Ivor Wanders&lt;/a&gt; fixed the examples to catch exception by &lt;code&gt;const&amp;amp;&lt;/code&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/miny1233&quot;&gt;miny1233&lt;/a&gt; fixed a parenthesis in the documentation.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/tomalakgeretkal&quot;&gt;tomalakgeretkal&lt;/a&gt; fixed a compilation error.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/ALF-ONE&quot;&gt;alferov&lt;/a&gt; fixed a compilation error.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/craigscott-crascit&quot;&gt;Craig Scott&lt;/a&gt; fixed a deprecation warning in CMake.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/ZeronSix&quot;&gt;Vyacheslav Zhdanovskiy&lt;/a&gt; added macros for serialization-only types.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/mwestphal&quot;&gt;Mathieu Westphal&lt;/a&gt; fixed typos.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/scribam&quot;&gt;scribam&lt;/a&gt; fixed the MinGW workflow.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/aleksproger&quot;&gt;Aleksei Sapitskii&lt;/a&gt; added support for Apple&#39;s Swift Package Manager.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/bebuch&quot;&gt;Benjamin Buch&lt;/a&gt; fixed the installation path in CMake.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/colbychaskell&quot;&gt;Colby Haskell&lt;/a&gt; clarified the parse error message in case a file cannot be opened.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/TheJCAB&quot;&gt;Juan Carlos Arevalo Baeza&lt;/a&gt; fixed the enum conversion.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/ALF-ONE&quot;&gt;alferov&lt;/a&gt; fixed a version in the documentation.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/serge-s&quot;&gt;ss&lt;/a&gt; fixed the amalgamation call.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/AniketDhemare&quot;&gt;AniketDhemare&lt;/a&gt; fixed a version in the documentation.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/philip-paul-mueller&quot;&gt;Philip Müller&lt;/a&gt; fixed an example.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/LeilaShcheglova&quot;&gt;Leila Shcheglova&lt;/a&gt; fixed a warning in a test.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/alexprabhat99&quot;&gt;Alex Prabhat Bara&lt;/a&gt; fixed a function name in the documentation.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/laterlaugh&quot;&gt;laterlaugh&lt;/a&gt; fixed some typos.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/MrJia1997&quot;&gt;Yuanhao Jia&lt;/a&gt; fixed the GDB pretty printer.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/Fallen-Breath&quot;&gt;Fallen_Breath&lt;/a&gt; fixed an example for JSON Pointer.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/tsnl&quot;&gt;Nikhil Idiculla&lt;/a&gt; fixed some typos.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/gmyers18&quot;&gt;Griffin Myers&lt;/a&gt; updated the Natvis file.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/thetimr&quot;&gt;thetimr&lt;/a&gt; fixed a typo in the documentation.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/zerocukor287&quot;&gt;Balazs Erseki&lt;/a&gt; fixed a URL in the contribution guidelines.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/rotolof&quot;&gt;Niccolò Iardella&lt;/a&gt; added &lt;code&gt;NLOHMANN_DEFINE_DERIVED_TYPE_*&lt;/code&gt; macros.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/iboB&quot;&gt;Borislav Stanimirov&lt;/a&gt; allowed overriding the CMake target name.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/captaincrutches&quot;&gt;Captain Crutches&lt;/a&gt; made &lt;code&gt;iterator_proxy_value&lt;/code&gt; a &lt;code&gt;std::forward_iterator&lt;/code&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/fsandhei&quot;&gt;Fredrik Sandhei&lt;/a&gt; added type conversion support for &lt;code&gt;std::optional&lt;/code&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/jordan-hoang&quot;&gt;jh96&lt;/a&gt; added exceptions when &lt;code&gt;nullptr&lt;/code&gt; is passed to &lt;code&gt;parse&lt;/code&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/StuartGorman&quot;&gt;Stuart Gorman&lt;/a&gt; fixed number parsing when &lt;code&gt;EINTR&lt;/code&gt; set in &lt;code&gt;errno&lt;/code&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/dcbaker&quot;&gt;Dylan Baker&lt;/a&gt; generated a pkg-config file that follows the pkg-config conventions.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/TianyiChen&quot;&gt;Tianyi Chen&lt;/a&gt; optimized the binary &lt;code&gt;get_number&lt;/code&gt; implementation.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/peng-wang-cn&quot;&gt;peng-wang-cn&lt;/a&gt; added type conversion support for multidimensional arrays.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/EinarsNG&quot;&gt;Einars Netlis-Galejs&lt;/a&gt; added &lt;code&gt;ONLY_SERIALIZE&lt;/code&gt; for &lt;code&gt;NLOHMANN_DEFINE_DERIVED_TYPE_*&lt;/code&gt; macros.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/mering&quot;&gt;Marcel&lt;/a&gt; removed &lt;code&gt;alwayslink=True&lt;/code&gt; Bazel flag.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/hnampally&quot;&gt;Harinath Nampally&lt;/a&gt; added diagnostic positions to exceptions.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/NissimBendanan&quot;&gt;Nissim Armand Ben Danan&lt;/a&gt; fixed &lt;code&gt;NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT&lt;/code&gt; with an empty JSON instance.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/codenut&quot;&gt;Michael Valladolid&lt;/a&gt; added support for BSON uint64 serialization/deserialization.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/nikhilreddydev&quot;&gt;Nikhil&lt;/a&gt; updated the documentation.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/nebkat&quot;&gt;Nebojša Cvetković&lt;/a&gt; added support for BJDATA optimized binary array type.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/sushshring&quot;&gt;Sushrut Shringarputale&lt;/a&gt; added support for diagnostic positions.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/kimci86&quot;&gt;kimci86&lt;/a&gt; templated to &lt;code&gt;NLOHMANN_DEFINE_TYPE&lt;/code&gt; macros to also support &lt;code&gt;ordered_json&lt;/code&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/richardtop&quot;&gt;Richard Topchii&lt;/a&gt; added support for VisionOS in the Swift Package Manager.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/Robadob&quot;&gt;Robert Chisholm&lt;/a&gt; fixed a typo.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/zjyhjqs&quot;&gt;zjyhjqs&lt;/a&gt; added CPack support.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/bitFiedler&quot;&gt;bitFiedler&lt;/a&gt; made GDB pretty printer work with Python 3.8.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/LocutusOfBorg&quot;&gt;Gianfranco Costamagna&lt;/a&gt; fixed a compiler warning.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/risa2000&quot;&gt;risa2000&lt;/a&gt; made &lt;code&gt;std::filesystem::path&lt;/code&gt; conversion to/from UTF-8 encoded string explicit.&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;Thanks a lot for helping out! Please &lt;a href=&quot;mailto:mail@nlohmann.me&quot;&gt;let me know&lt;/a&gt; if I forgot someone.&lt;/p&gt; 
&lt;h2&gt;Used third-party tools&lt;/h2&gt; 
&lt;p&gt;The library itself consists of a single header file licensed under the MIT license. However, it is built, tested, documented, and whatnot using a lot of third-party tools and services. Thanks a lot!&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/edlund/amalgamate&quot;&gt;&lt;strong&gt;amalgamate.py - Amalgamate C source and header files&lt;/strong&gt;&lt;/a&gt; to create a single header file&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://lcamtuf.coredump.cx/afl/&quot;&gt;&lt;strong&gt;American fuzzy lop&lt;/strong&gt;&lt;/a&gt; for fuzz testing&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.appveyor.com&quot;&gt;&lt;strong&gt;AppVeyor&lt;/strong&gt;&lt;/a&gt; for &lt;a href=&quot;https://ci.appveyor.com/project/nlohmann/json&quot;&gt;continuous integration&lt;/a&gt; on Windows&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;http://astyle.sourceforge.net&quot;&gt;&lt;strong&gt;Artistic Style&lt;/strong&gt;&lt;/a&gt; for automatic source code indentation&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://clang.llvm.org&quot;&gt;&lt;strong&gt;Clang&lt;/strong&gt;&lt;/a&gt; for compilation with code sanitizers&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://cmake.org&quot;&gt;&lt;strong&gt;CMake&lt;/strong&gt;&lt;/a&gt; for build automation&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.codacy.com&quot;&gt;&lt;strong&gt;Codacy&lt;/strong&gt;&lt;/a&gt; for further &lt;a href=&quot;https://app.codacy.com/gh/nlohmann/json/dashboard&quot;&gt;code analysis&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://coveralls.io&quot;&gt;&lt;strong&gt;Coveralls&lt;/strong&gt;&lt;/a&gt; to measure &lt;a href=&quot;https://coveralls.io/github/nlohmann/json&quot;&gt;code coverage&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://scan.coverity.com&quot;&gt;&lt;strong&gt;Coverity Scan&lt;/strong&gt;&lt;/a&gt; for &lt;a href=&quot;https://scan.coverity.com/projects/nlohmann-json&quot;&gt;static analysis&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;http://cppcheck.sourceforge.net&quot;&gt;&lt;strong&gt;cppcheck&lt;/strong&gt;&lt;/a&gt; for static analysis&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/onqtam/doctest&quot;&gt;&lt;strong&gt;doctest&lt;/strong&gt;&lt;/a&gt; for the unit tests&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/skywinder/github-changelog-generator&quot;&gt;&lt;strong&gt;GitHub Changelog Generator&lt;/strong&gt;&lt;/a&gt; to generate the &lt;a href=&quot;https://github.com/nlohmann/json/raw/develop/ChangeLog.md&quot;&gt;ChangeLog&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/google/benchmark&quot;&gt;&lt;strong&gt;Google Benchmark&lt;/strong&gt;&lt;/a&gt; to implement the benchmarks&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://nemequ.github.io/hedley/&quot;&gt;&lt;strong&gt;Hedley&lt;/strong&gt;&lt;/a&gt; to avoid re-inventing several compiler-agnostic feature macros&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/linux-test-project/lcov&quot;&gt;&lt;strong&gt;lcov&lt;/strong&gt;&lt;/a&gt; to process coverage information and create an HTML view&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://llvm.org/docs/LibFuzzer.html&quot;&gt;&lt;strong&gt;libFuzzer&lt;/strong&gt;&lt;/a&gt; to implement fuzz testing for OSS-Fuzz&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://squidfunk.github.io/mkdocs-material/&quot;&gt;&lt;strong&gt;Material for MkDocs&lt;/strong&gt;&lt;/a&gt; for the style of the documentation site&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.mkdocs.org&quot;&gt;&lt;strong&gt;MkDocs&lt;/strong&gt;&lt;/a&gt; for the documentation site&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/google/oss-fuzz&quot;&gt;&lt;strong&gt;OSS-Fuzz&lt;/strong&gt;&lt;/a&gt; for continuous fuzz testing of the library (&lt;a href=&quot;https://github.com/google/oss-fuzz/tree/master/projects/json&quot;&gt;project repository&lt;/a&gt;)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://probot.github.io&quot;&gt;&lt;strong&gt;Probot&lt;/strong&gt;&lt;/a&gt; for automating maintainer tasks such as closing stale issues, requesting missing information, or detecting toxic comments.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://valgrind.org&quot;&gt;&lt;strong&gt;Valgrind&lt;/strong&gt;&lt;/a&gt; to check for correct memory management&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Notes&lt;/h2&gt; 
&lt;h3&gt;Character encoding&lt;/h3&gt; 
&lt;p&gt;The library supports &lt;strong&gt;Unicode input&lt;/strong&gt; as follows:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Only &lt;strong&gt;UTF-8&lt;/strong&gt; encoded input is supported, which is the default encoding for JSON according to &lt;a href=&quot;https://tools.ietf.org/html/rfc8259.html#section-8.1&quot;&gt;RFC 8259&lt;/a&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;std::u16string&lt;/code&gt; and &lt;code&gt;std::u32string&lt;/code&gt; can be parsed, assuming UTF-16 and UTF-32 encoding, respectively. These encodings are not supported when reading from files or other input containers.&lt;/li&gt; 
 &lt;li&gt;Other encodings such as Latin-1 or ISO 8859-1 are &lt;strong&gt;not&lt;/strong&gt; supported and will yield parse or serialization errors.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.unicode.org/faq/private_use.html#nonchar1&quot;&gt;Unicode noncharacters&lt;/a&gt; will not be replaced by the library.&lt;/li&gt; 
 &lt;li&gt;Invalid surrogates (e.g., incomplete pairs such as &lt;code&gt;\uDEAD&lt;/code&gt;) will yield parse errors.&lt;/li&gt; 
 &lt;li&gt;The strings stored in the library are UTF-8 encoded. When using the default string type (&lt;code&gt;std::string&lt;/code&gt;), note that its length/size functions return the number of stored bytes rather than the number of characters or glyphs.&lt;/li&gt; 
 &lt;li&gt;When you store strings with different encodings in the library, calling &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/dump/&quot;&gt;&lt;code&gt;dump()&lt;/code&gt;&lt;/a&gt; may throw an exception unless &lt;code&gt;json::error_handler_t::replace&lt;/code&gt; or &lt;code&gt;json::error_handler_t::ignore&lt;/code&gt; are used as error handlers.&lt;/li&gt; 
 &lt;li&gt;To store wide strings (e.g., &lt;code&gt;std::wstring&lt;/code&gt;), you need to convert them to a UTF-8 encoded &lt;code&gt;std::string&lt;/code&gt; before, see &lt;a href=&quot;https://json.nlohmann.me/home/faq/#wide-string-handling&quot;&gt;an example&lt;/a&gt;.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Comments in JSON&lt;/h3&gt; 
&lt;p&gt;This library does not support comments by default. It does so for three reasons:&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt; &lt;p&gt;Comments are not part of the &lt;a href=&quot;https://tools.ietf.org/html/rfc8259&quot;&gt;JSON specification&lt;/a&gt;. You may argue that &lt;code&gt;//&lt;/code&gt; or &lt;code&gt;/* */&lt;/code&gt; are allowed in JavaScript, but JSON is not JavaScript.&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;This was not an oversight: Douglas Crockford &lt;a href=&quot;https://plus.google.com/118095276221607585885/posts/RK8qyGVaGSr&quot;&gt;wrote on this&lt;/a&gt; in May 2012:&lt;/p&gt; 
  &lt;blockquote&gt; 
   &lt;p&gt;I removed comments from JSON because I saw people were using them to hold parsing directives, a practice which would have destroyed interoperability. I know that the lack of comments makes some people sad, but it shouldn&#39;t.&lt;/p&gt; 
   &lt;p&gt;Suppose you are using JSON to keep configuration files, which you would like to annotate. Go ahead and insert all the comments you like. Then pipe it through JSMin before handing it to your JSON parser.&lt;/p&gt; 
  &lt;/blockquote&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;It is dangerous for interoperability if some libraries would add comment support while others don&#39;t. Please check &lt;a href=&quot;https://tools.ietf.org/html/draft-iab-protocol-maintenance-01&quot;&gt;The Harmful Consequences of the Robustness Principle&lt;/a&gt; on this.&lt;/p&gt; &lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;However, you can set set parameter &lt;code&gt;ignore_comments&lt;/code&gt; to true in the &lt;code&gt;parse&lt;/code&gt; function to ignore &lt;code&gt;//&lt;/code&gt; or &lt;code&gt;/* */&lt;/code&gt; comments. Comments will then be treated as whitespace.&lt;/p&gt; 
&lt;h3&gt;Trailing commas&lt;/h3&gt; 
&lt;p&gt;The JSON specification does not allow trailing commas in arrays and objects, and hence this library is treating them as parsing errors by default.&lt;/p&gt; 
&lt;p&gt;Like comments, you can set parameter &lt;code&gt;ignore_trailing_commas&lt;/code&gt; to true in the &lt;code&gt;parse&lt;/code&gt; function to ignore trailing commas in arrays and objects. Note that a single comma as the only content of the array or object (&lt;code&gt;[,]&lt;/code&gt; or &lt;code&gt;{,}&lt;/code&gt;) is not allowed, and multiple trailing commas (&lt;code&gt;[1,,]&lt;/code&gt;) are not allowed either.&lt;/p&gt; 
&lt;p&gt;This library does not add trailing commas when serializing JSON data.&lt;/p&gt; 
&lt;p&gt;For more information, see &lt;a href=&quot;https://nigeltao.github.io/blog/2021/json-with-commas-comments.html&quot;&gt;JSON With Commas and Comments (JWCC)&lt;/a&gt;.&lt;/p&gt; 
&lt;h3&gt;Order of object keys&lt;/h3&gt; 
&lt;p&gt;By default, the library does not preserve the &lt;strong&gt;insertion order of object elements&lt;/strong&gt;. This is standards-compliant, as the &lt;a href=&quot;https://tools.ietf.org/html/rfc8259.html&quot;&gt;JSON standard&lt;/a&gt; defines objects as &quot;an unordered collection of zero or more name/value pairs&quot;.&lt;/p&gt; 
&lt;p&gt;If you do want to preserve the insertion order, you can try the type &lt;a href=&quot;https://github.com/nlohmann/json/issues/2179&quot;&gt;&lt;code&gt;nlohmann::ordered_json&lt;/code&gt;&lt;/a&gt;. Alternatively, you can use a more sophisticated ordered map like &lt;a href=&quot;https://github.com/Tessil/ordered-map&quot;&gt;&lt;code&gt;tsl::ordered_map&lt;/code&gt;&lt;/a&gt; (&lt;a href=&quot;https://github.com/nlohmann/json/issues/546#issuecomment-304447518&quot;&gt;integration&lt;/a&gt;) or &lt;a href=&quot;https://github.com/nlohmann/fifo_map&quot;&gt;&lt;code&gt;nlohmann::fifo_map&lt;/code&gt;&lt;/a&gt; (&lt;a href=&quot;https://github.com/nlohmann/json/issues/485#issuecomment-333652309&quot;&gt;integration&lt;/a&gt;).&lt;/p&gt; 
&lt;p&gt;See the &lt;a href=&quot;https://json.nlohmann.me/features/object_order/&quot;&gt;&lt;strong&gt;documentation on object order&lt;/strong&gt;&lt;/a&gt; for more information.&lt;/p&gt; 
&lt;h3&gt;Memory Release&lt;/h3&gt; 
&lt;p&gt;We checked with Valgrind and the Address Sanitizer (ASAN) that there are no memory leaks.&lt;/p&gt; 
&lt;p&gt;If you find that a parsing program with this library does not release memory, please consider the following case, and it may be unrelated to this library.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Your program is compiled with glibc.&lt;/strong&gt; There is a tunable threshold that glibc uses to decide whether to actually return memory to the system or whether to cache it for later reuse. If in your program you make lots of small allocations and those small allocations are not a contiguous block and are presumably below the threshold, then they will not get returned to the OS. Here is a related issue &lt;a href=&quot;https://github.com/nlohmann/json/issues/1924&quot;&gt;#1924&lt;/a&gt;.&lt;/p&gt; 
&lt;h3&gt;Further notes&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;The code contains numerous debug &lt;strong&gt;assertions&lt;/strong&gt; which can be switched off by defining the preprocessor macro &lt;code&gt;NDEBUG&lt;/code&gt;, see the &lt;a href=&quot;https://en.cppreference.com/w/cpp/error/assert&quot;&gt;documentation of &lt;code&gt;assert&lt;/code&gt;&lt;/a&gt;. In particular, note &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/operator%5B%5D/&quot;&gt;&lt;code&gt;operator[]&lt;/code&gt;&lt;/a&gt; implements &lt;strong&gt;unchecked access&lt;/strong&gt; for const objects: If the given key is not present, the behavior is undefined (think of a dereferenced null pointer) and yields an &lt;a href=&quot;https://github.com/nlohmann/json/issues/289&quot;&gt;assertion failure&lt;/a&gt; if assertions are switched on. If you are not sure whether an element in an object exists, use checked access with the &lt;a href=&quot;https://json.nlohmann.me/api/basic_json/at/&quot;&gt;&lt;code&gt;at()&lt;/code&gt; function&lt;/a&gt;. Furthermore, you can define &lt;code&gt;JSON_ASSERT(x)&lt;/code&gt; to replace calls to &lt;code&gt;assert(x)&lt;/code&gt;. See the &lt;a href=&quot;https://json.nlohmann.me/features/assertions/&quot;&gt;&lt;strong&gt;documentation on runtime assertions&lt;/strong&gt;&lt;/a&gt; for more information.&lt;/li&gt; 
 &lt;li&gt;As the exact number type is not defined in the &lt;a href=&quot;https://tools.ietf.org/html/rfc8259.html&quot;&gt;JSON specification&lt;/a&gt;, this library tries to choose the best fitting C++ number type automatically. As a result, the type &lt;code&gt;double&lt;/code&gt; may be used to store numbers which may yield &lt;a href=&quot;https://github.com/nlohmann/json/issues/181&quot;&gt;&lt;strong&gt;floating-point exceptions&lt;/strong&gt;&lt;/a&gt; in certain rare situations if floating-point exceptions have been unmasked in the calling code. These exceptions are not caused by the library and need to be fixed in the calling code, such as by re-masking the exceptions prior to calling library functions.&lt;/li&gt; 
 &lt;li&gt;The code can be compiled without C++ &lt;strong&gt;runtime type identification&lt;/strong&gt; features; that is, you can use the &lt;code&gt;-fno-rtti&lt;/code&gt; compiler flag.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Exceptions&lt;/strong&gt; are used widely within the library. They can, however, be switched off with either using the compiler flag &lt;code&gt;-fno-exceptions&lt;/code&gt; or by defining the symbol &lt;code&gt;JSON_NOEXCEPTION&lt;/code&gt;. In this case, exceptions are replaced by &lt;code&gt;abort()&lt;/code&gt; calls. You can further control this behavior by defining &lt;code&gt;JSON_THROW_USER&lt;/code&gt; (overriding &lt;code&gt;throw&lt;/code&gt;), &lt;code&gt;JSON_TRY_USER&lt;/code&gt; (overriding &lt;code&gt;try&lt;/code&gt;), and &lt;code&gt;JSON_CATCH_USER&lt;/code&gt; (overriding &lt;code&gt;catch&lt;/code&gt;). Note that &lt;code&gt;JSON_THROW_USER&lt;/code&gt; should leave the current scope (e.g., by throwing or aborting), as continuing after it may yield undefined behavior. Note the explanatory &lt;a href=&quot;https://en.cppreference.com/w/cpp/error/exception/what&quot;&gt;&lt;code&gt;what()&lt;/code&gt;&lt;/a&gt; string of exceptions is not available for MSVC if exceptions are disabled, see &lt;a href=&quot;https://github.com/nlohmann/json/discussions/2824&quot;&gt;#2824&lt;/a&gt;. See the &lt;a href=&quot;https://json.nlohmann.me/home/exceptions/&quot;&gt;&lt;strong&gt;documentation of exceptions&lt;/strong&gt;&lt;/a&gt; for more information.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Execute unit tests&lt;/h2&gt; 
&lt;p&gt;To compile and run the tests, you need to execute&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;mkdir build
cd build
cmake .. -DJSON_BuildTests=On
cmake --build .
ctest --output-on-failure
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Note that during the &lt;code&gt;ctest&lt;/code&gt; stage, several JSON test files are downloaded from an &lt;a href=&quot;https://github.com/nlohmann/json_test_data&quot;&gt;external repository&lt;/a&gt;. If policies forbid downloading artifacts during testing, you can download the files yourself and pass the directory with the test files via &lt;code&gt;-DJSON_TestDataDirectory=path&lt;/code&gt; to CMake. Then, no Internet connectivity is required. See &lt;a href=&quot;https://github.com/nlohmann/json/issues/2189&quot;&gt;issue #2189&lt;/a&gt; for more information.&lt;/p&gt; 
&lt;p&gt;If the testdata is not found, several test suites will fail like this:&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;===============================================================================
json/tests/src/make_test_data_available.hpp:21:
TEST CASE:  check test suite is downloaded

json/tests/src/make_test_data_available.hpp:23: FATAL ERROR: REQUIRE( utils::check_testsuite_downloaded() ) is NOT correct!
  values: REQUIRE( false )
  logged: Test data not found in &#39;json/cmake-build-debug/json_test_data&#39;.
          Please execute target &#39;download_test_data&#39; before running this test suite.
          See &amp;lt;https://github.com/nlohmann/json#execute-unit-tests&amp;gt; for more information.

===============================================================================
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;In case you have downloaded the library rather than checked out the code via Git, test &lt;code&gt;cmake_fetch_content_configure&lt;/code&gt; will fail. Please execute &lt;code&gt;ctest -LE git_required&lt;/code&gt; to skip these tests. See &lt;a href=&quot;https://github.com/nlohmann/json/issues/2189&quot;&gt;issue #2189&lt;/a&gt; for more information.&lt;/p&gt; 
&lt;p&gt;Some tests are requiring network to be properly execute. They are labeled as &lt;code&gt;git_required&lt;/code&gt;. Please execute &lt;code&gt;ctest -LE git_required&lt;/code&gt; to skip these tests. See &lt;a href=&quot;https://github.com/nlohmann/json/issues/4851&quot;&gt;issue #4851&lt;/a&gt; for more information.&lt;/p&gt; 
&lt;p&gt;Some tests change the installed files and hence make the whole process not reproducible. Please execute &lt;code&gt;ctest -LE not_reproducible&lt;/code&gt; to skip these tests. See &lt;a href=&quot;https://github.com/nlohmann/json/issues/2324&quot;&gt;issue #2324&lt;/a&gt; for more information. Furthermore, assertions must be switched off to ensure reproducible builds (see &lt;a href=&quot;https://github.com/nlohmann/json/discussions/4494&quot;&gt;discussion 4494&lt;/a&gt;).&lt;/p&gt; 
&lt;p&gt;Note you need to call &lt;code&gt;cmake -LE &quot;not_reproducible|git_required&quot;&lt;/code&gt; to exclude both labels. See &lt;a href=&quot;https://github.com/nlohmann/json/issues/2596&quot;&gt;issue #2596&lt;/a&gt; for more information.&lt;/p&gt; 
&lt;p&gt;As Intel compilers use unsafe floating point optimization by default, the unit tests may fail. Use flag &lt;a href=&quot;https://www.intel.com/content/www/us/en/docs/cpp-compiler/developer-guide-reference/2021-8/fp-model-fp.html&quot;&gt;&lt;code&gt;/fp:precise&lt;/code&gt;&lt;/a&gt; then.&lt;/p&gt;</description>
      
      <media:content url="https://repository-images.githubusercontent.com/11171548/a403c600-b5f0-11e9-8db8-2d5e6ec2ac98" medium="image" />
      
    </item>
    
    <item>
      <title>organicmaps/organicmaps</title>
      <link>https://github.com/organicmaps/organicmaps</link>
      <description>&lt;p&gt;🍃 Organic Maps is a free Android &amp; iOS offline maps app for more than 6M travelers, tourists, hikers, and cyclists. It uses crowd-sourced OpenStreetMap data and is developed with love by the community. No ads, no tracking, no data collection, no crapware. Please donate to support the development!&lt;/p&gt;&lt;hr&gt;&lt;div align=&quot;center&quot;&gt; 
 &lt;img src=&quot;https://raw.githubusercontent.com/organicmaps/organicmaps/master/qt/res/logo.png&quot; height=&quot;100&quot; /&gt; 
&lt;/div&gt; 
&lt;h1 align=&quot;center&quot;&gt;Organic Maps&lt;/h1&gt; 
&lt;p&gt;&lt;strong&gt;Organic Maps&lt;/strong&gt; is a privacy-first offline maps &amp;amp; GPS app for hiking, cycling, biking, and driving. Absolutely free. No ads. No tracking. Created and maintained by MapsWithMe (&lt;a href=&quot;http://MAPS.ME&quot;&gt;MAPS.ME&lt;/a&gt;) founders, developed with love by the open-source community. Powered by &lt;a href=&quot;https://www.openstreetmap.org&quot;&gt;OpenStreetMap&lt;/a&gt; data. Installed by &lt;a href=&quot;https://organicmaps.app/news/2025-12-31/organic-maps-2025-year-in-review/&quot;&gt;over 6 million users worldwide&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://apps.apple.com/app/organic-maps/id1567437057&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/organicmaps/organicmaps/master/docs/badges/apple-appstore.png&quot; alt=&quot;App Store&quot; width=&quot;140&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://play.google.com/store/apps/details?id=app.organicmaps&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/organicmaps/organicmaps/master/docs/badges/google-play.png&quot; alt=&quot;Google Play&quot; width=&quot;140&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://appgallery.huawei.com/#/app/C104325611&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/organicmaps/organicmaps/master/docs/badges/huawei-appgallery.png&quot; alt=&quot;AppGallery&quot; width=&quot;140&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/organicmaps/organicmaps/wiki/Installing-Organic-Maps-from-GitHub-using-Obtainium&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/organicmaps/organicmaps/master/docs/badges/obtainium.png&quot; alt=&quot;Obtainium&quot; width=&quot;140&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://f-droid.org/en/packages/app.organicmaps/&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/organicmaps/organicmaps/master/docs/badges/fdroid.png&quot; alt=&quot;F-Droid&quot; width=&quot;140&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://accrescent.app/app/app.organicmaps&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/organicmaps/organicmaps/master/docs/badges/accrescent.png&quot; alt=&quot;Accrescent&quot; width=&quot;140&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p float=&quot;left&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/organicmaps/organicmaps/master/android/app/src/fdroid/play/listings/en-US/graphics/phone-screenshots/1.jpg&quot; width=&quot;400&quot; /&gt; &lt;img src=&quot;https://raw.githubusercontent.com/organicmaps/organicmaps/master/android/app/src/fdroid/play/listings/en-US/graphics/phone-screenshots/2.jpg&quot; width=&quot;400&quot; /&gt; &lt;img src=&quot;https://raw.githubusercontent.com/organicmaps/organicmaps/master/android/app/src/fdroid/play/listings/en-US/graphics/phone-screenshots/3.jpg&quot; width=&quot;400&quot; /&gt; &lt;img src=&quot;https://raw.githubusercontent.com/organicmaps/organicmaps/master/android/app/src/fdroid/play/listings/en-US/graphics/phone-screenshots/4.jpg&quot; width=&quot;400&quot; /&gt; &lt;/p&gt; 
&lt;h2&gt;Features&lt;/h2&gt; 
&lt;p&gt;Organic Maps is the ultimate companion app for travellers, tourists, hikers, and cyclists:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Detailed offline maps with places that don&#39;t exist on other maps, thanks to &lt;a href=&quot;https://openstreetmap.org&quot;&gt;OpenStreetMap&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Cycling routes, hiking trails, and walking paths&lt;/li&gt; 
 &lt;li&gt;Contour lines, elevation profiles, peaks, and slopes&lt;/li&gt; 
 &lt;li&gt;Turn-by-turn walking, cycling, and car navigation with voice guidance&lt;/li&gt; 
 &lt;li&gt;Subway maps and public transport routes&lt;/li&gt; 
 &lt;li&gt;Fast offline search on the map&lt;/li&gt; 
 &lt;li&gt;Bookmarks and tracks import and export in KML, KMZ, GPX, GeoJSON formats&lt;/li&gt; 
 &lt;li&gt;Dark Mode to protect your eyes&lt;/li&gt; 
 &lt;li&gt;Countries and regions don&#39;t take a lot of space&lt;/li&gt; 
 &lt;li&gt;Wikipedia articles for places of interest&lt;/li&gt; 
 &lt;li&gt;Free and open-source&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Why Organic?&lt;/h2&gt; 
&lt;p&gt;Organic Maps is pure and organic, made with love:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Respects your privacy&lt;/li&gt; 
 &lt;li&gt;Saves your battery&lt;/li&gt; 
 &lt;li&gt;No unexpected mobile data charges&lt;/li&gt; 
 &lt;li&gt;Offline and fast&lt;/li&gt; 
 &lt;li&gt;Open-source alternative to Google Maps, Apple Maps, and &lt;a href=&quot;http://MAPS.ME&quot;&gt;MAPS.ME&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Organic Maps is free from trackers and other bad stuff:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;No ads&lt;/li&gt; 
 &lt;li&gt;No tracking&lt;/li&gt; 
 &lt;li&gt;No data collection&lt;/li&gt; 
 &lt;li&gt;No phoning home&lt;/li&gt; 
 &lt;li&gt;No annoying registration&lt;/li&gt; 
 &lt;li&gt;No mandatory tutorials&lt;/li&gt; 
 &lt;li&gt;No noisy email spam&lt;/li&gt; 
 &lt;li&gt;No push notifications&lt;/li&gt; 
 &lt;li&gt;No crapware&lt;/li&gt; 
 &lt;li&gt;&lt;s&gt;No pesticides&lt;/s&gt; Purely organic!&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;The Android application is verified by the &lt;a href=&quot;https://reports.exodus-privacy.eu.org/en/reports/app.organicmaps/latest/&quot;&gt;Exodus Privacy Project: &lt;img src=&quot;https://raw.githubusercontent.com/organicmaps/organicmaps/master/docs/privacy/exodus.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;The iOS application is verified by &lt;a href=&quot;https://ios.trackercontrol.org/analysis/app.organicmaps&quot;&gt;TrackerControl for iOS: &lt;img src=&quot;https://raw.githubusercontent.com/organicmaps/organicmaps/master/docs/privacy/trackercontrol-ios.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;br /&gt; 
&lt;p&gt;Organic Maps doesn&#39;t request excessive permissions to spy on you:&lt;/p&gt; 
&lt;p float=&quot;left&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/organicmaps/organicmaps/master/docs/privacy/om.jpg&quot; width=&quot;400&quot; /&gt; &lt;img src=&quot;https://raw.githubusercontent.com/organicmaps/organicmaps/master/docs/privacy/mm.jpg&quot; width=&quot;400&quot; /&gt; &lt;/p&gt; 
&lt;p&gt;At Organic Maps, we believe that privacy is a fundamental human right:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Organic Maps is an indie community-driven open-source project&lt;/li&gt; 
 &lt;li&gt;We protect your privacy from Big Tech&#39;s prying eyes&lt;/li&gt; 
 &lt;li&gt;Stay safe no matter where you are&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Reject surveillance - embrace your freedom.&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://raw.githubusercontent.com/organicmaps/organicmaps/master/#install&quot;&gt;&lt;strong&gt;Give Organic Maps a try!&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;Who is paying for the development?&lt;/h2&gt; 
&lt;p&gt;The app is free for everyone, so we rely on your donations. Please donate at &lt;a href=&quot;https://organicmaps.app/donate/&quot;&gt;organicmaps.app/donate&lt;/a&gt; to support the project!&lt;/p&gt; 
&lt;p&gt;Beloved institutional sponsors below have provided targeted grants to cover some infrastructure costs and fund development of new selected features:&lt;/p&gt; 
&lt;table&gt; 
 &lt;tbody&gt;
  &lt;tr&gt; 
   &lt;td&gt; &lt;a href=&quot;https://nlnet.nl/&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/organicmaps/organicmaps/master/docs/sponsors/nlnet.svg?sanitize=true&quot; alt=&quot;The NLnet Foundation&quot; width=&quot;200px&quot; /&gt;&lt;/a&gt; &lt;/td&gt; 
   &lt;td&gt; &lt;a href=&quot;https://github.com/organicmaps/organicmaps/milestone/7&quot;&gt;The Search &amp;amp; Fonts improvement project&lt;/a&gt; has been &lt;a href=&quot;https://nlnet.nl/project/OrganicMaps/&quot;&gt;funded&lt;/a&gt; through NGI0 Entrust Fund. &lt;a href=&quot;https://nlnet.nl/entrust/&quot;&gt;NGI0 Entrust Fund&lt;/a&gt; is established by the &lt;a href=&quot;https://nlnet.nl/&quot;&gt;NLnet Foundation&lt;/a&gt; with financial support from the European Commission&#39;s &lt;a href=&quot;https://www.ngi.eu/&quot;&gt;Next Generation Internet programme&lt;/a&gt;, under the aegis of DG Communications Networks, Content and Technology under grant agreement No 101069594. &lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt; &lt;a href=&quot;https://summerofcode.withgoogle.com/&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/organicmaps/organicmaps/master/docs/sponsors/gsoc.svg?sanitize=true&quot; alt=&quot;Google Summer of Code&quot; width=&quot;200px&quot; /&gt;&lt;/a&gt; &lt;/td&gt; 
   &lt;td&gt; &lt;a href=&quot;https://summerofcode.withgoogle.com/&quot;&gt;Google&lt;/a&gt; backed 5 student&#39;s projects in the Google Summer of Code program during &lt;a href=&quot;https://summerofcode.withgoogle.com/programs/2022/organizations/organic-maps&quot;&gt;2022&lt;/a&gt; and &lt;a href=&quot;https://summerofcode.withgoogle.com/programs/2023/organizations/organic-maps&quot;&gt;2023&lt;/a&gt; programs. Noteworthy projects included Android Auto and Wikipedia Dump Extractor. &lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt; &lt;a href=&quot;https://www.mythic-beasts.com/&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/organicmaps/organicmaps/master/docs/sponsors/mythic-beasts.png&quot; alt=&quot;Mythic Beasts&quot; width=&quot;200px&quot; /&gt;&lt;/a&gt; &lt;/td&gt; 
   &lt;td&gt; &lt;a href=&quot;https://www.mythic-beasts.com/&quot;&gt;Mythic Beasts&lt;/a&gt; ISP &lt;a href=&quot;https://www.mythic-beasts.com/blog/2021/10/06/improving-the-world-bit-by-expensive-bit/&quot;&gt;provides us&lt;/a&gt; two virtual servers with 400 TB/month of free bandwidth to host and serve maps downloads and updates. &lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt; &lt;a href=&quot;https://44plus.vn&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/organicmaps/organicmaps/master/docs/sponsors/44plus.svg?sanitize=true&quot; alt=&quot;44+ Technologies&quot; width=&quot;200px&quot; /&gt;&lt;/a&gt; &lt;/td&gt; 
   &lt;td&gt; &lt;a href=&quot;https://44plus.vn&quot;&gt;44+ Technologies&lt;/a&gt; is &lt;a href=&quot;https://44plus.vn/organicmaps&quot;&gt;providing us &lt;/a&gt;with a free dedicated server worth around $12,000/year to serve maps across Vietnam &amp;amp; Southeast Asia. &lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt; &lt;a href=&quot;https://futo.org&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/organicmaps/organicmaps/master/docs/sponsors/futo.svg?sanitize=true&quot; alt=&quot;FUTO&quot; width=&quot;200px&quot; /&gt;&lt;/a&gt; &lt;/td&gt; 
   &lt;td&gt; &lt;a href=&quot;https://futo.org&quot;&gt;FUTO&lt;/a&gt; has &lt;a href=&quot;https://www.youtube.com/watch?v=fJJclgBHrEw&quot;&gt;awarded $1000 micro-grant&lt;/a&gt; to Organic Maps in February 2023. &lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt;
&lt;/table&gt; 
&lt;p&gt;The majority of all expenses have been funded by founders of the project since its inception. The project is far from achieving any sort of financial sustainability. The current level of voluntary donations falls significantly short of covering efforts needed to sustain the app. Any new developments of features are beyond the scope of possibility due to the absence of the necessary financial resources.&lt;/p&gt; 
&lt;p&gt;Please consider &lt;a href=&quot;https://organicmaps.app/donate/&quot;&gt;donating&lt;/a&gt; if you want to see this open-source project thriving, not dying. There are &lt;a href=&quot;https://raw.githubusercontent.com/organicmaps/organicmaps/master/#contributing&quot;&gt;other ways how to support the project&lt;/a&gt;. No coding skills required.&lt;/p&gt; 
&lt;h2&gt;Governance&lt;/h2&gt; 
&lt;p&gt;See &lt;a href=&quot;https://raw.githubusercontent.com/organicmaps/organicmaps/master/docs/GOVERNANCE.md&quot;&gt;docs/GOVERNANCE.md&lt;/a&gt;.&lt;/p&gt; 
&lt;a name=&quot;contributing&quot;&gt; &lt;h2&gt;Contributing&lt;/h2&gt; &lt;/a&gt;
&lt;p&gt;&lt;a name=&quot;contributing&quot;&gt;If you want to build the project, check &lt;/a&gt;&lt;a href=&quot;https://raw.githubusercontent.com/organicmaps/organicmaps/master/docs/INSTALL.md&quot;&gt;docs/INSTALL.md&lt;/a&gt;. If you want to help the project, see &lt;a href=&quot;https://raw.githubusercontent.com/organicmaps/organicmaps/master/docs/CONTRIBUTING.md&quot;&gt;docs/CONTRIBUTING.md&lt;/a&gt;. You can &lt;a href=&quot;https://organicmaps.app/support-us/&quot;&gt;help in many ways&lt;/a&gt;, the ability to code is not necessary.&lt;/p&gt; 
&lt;h2&gt;Beta&lt;/h2&gt; 
&lt;p&gt;Please join our beta program, suggest your features, and report bugs:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://testflight.apple.com/join/lrKCl08I&quot;&gt;iOS Beta (TestFlight)&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://appdistribution.firebase.dev/i/f3e918f9abc40c9c&quot;&gt;Android Beta (Firebase)&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Feedback&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Rate us on the &lt;a href=&quot;https://apps.apple.com/app/organic-maps/id1567437057&quot;&gt;App Store&lt;/a&gt; and &lt;a href=&quot;https://play.google.com/store/apps/details?id=app.organicmaps&quot;&gt;Google Play&lt;/a&gt;&lt;/strong&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Star us on Github&lt;/strong&gt;.&lt;/li&gt; 
 &lt;li&gt;Report bugs or issues to &lt;a href=&quot;https://github.com/organicmaps/organicmaps/issues&quot;&gt;the issue tracker&lt;/a&gt;.&lt;/li&gt; 
 &lt;li&gt;Subscribe to our &lt;a href=&quot;https://t.me/OrganicMapsApp&quot;&gt;Telegram Channel&lt;/a&gt; or to the &lt;a href=&quot;https://matrix.to/#/#organicmaps:matrix.org&quot;&gt;[matrix] space&lt;/a&gt; for updates.&lt;/li&gt; 
 &lt;li&gt;Join our &lt;a href=&quot;https://t.me/OrganicMaps&quot;&gt;Telegram Group&lt;/a&gt; to discuss with other users. 
  &lt;ul&gt; 
   &lt;li&gt;Присоединяйтесь к нашей &lt;a href=&quot;https://t.me/OrganicMapsRu&quot;&gt;русскоязычной группе в Telegram&lt;/a&gt; для обратной связи и помощи.&lt;/li&gt; 
   &lt;li&gt;Diğer kullanıcılarla tartışmak için &lt;a href=&quot;https://t.me/OrganicMapsTR&quot;&gt;Telegram Grubumuza&lt;/a&gt; katılın.&lt;/li&gt; 
   &lt;li&gt;Rejoignez notre groupe &lt;a href=&quot;https://t.me/OrganicMapsFR&quot;&gt;Telegram&lt;/a&gt; pour obtenir de l&#39;aide.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Contact us by &lt;a href=&quot;mailto:hello@organicmaps.app&quot;&gt;email&lt;/a&gt;.&lt;/li&gt; 
 &lt;li&gt;Follow our updates in social media: 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://fosstodon.org/@organicmaps&quot;&gt;Mastodon&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://facebook.com/OrganicMaps&quot;&gt;Facebook&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://x.com/OrganicMapsApp&quot;&gt;X (Twitter)&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://instagram.com/organicmaps.app/&quot;&gt;Instagram&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://bsky.app/profile/organicmaps.bsky.social&quot;&gt;Bluesky&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://www.threads.net/@organicmaps&quot;&gt;Threads&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://www.reddit.com/r/organicmaps/&quot;&gt;Reddit&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://www.linkedin.com/company/organic-maps/&quot;&gt;LinkedIn&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://www.tiktok.com/@organicmaps&quot;&gt;TikTok&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;The Organic Maps community abides by the CNCF &lt;a href=&quot;https://github.com/organicmaps/organicmaps/raw/master/docs/CODE_OF_CONDUCT.md&quot;&gt;code of conduct&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;License and Copyrights&lt;/h2&gt; 
&lt;p&gt;The code is Licensed under the Apache License, Version 2.0. See &lt;a href=&quot;https://raw.githubusercontent.com/organicmaps/organicmaps/master/LICENSE&quot;&gt;LICENSE&lt;/a&gt;, &lt;a href=&quot;https://raw.githubusercontent.com/organicmaps/organicmaps/master/NOTICE&quot;&gt;NOTICE&lt;/a&gt;, &lt;a href=&quot;http://htmlpreview.github.io/?https://github.com/organicmaps/organicmaps/raw/master/data/copyright.html&quot;&gt;data/copyright.html&lt;/a&gt; and &lt;a href=&quot;https://github.com/organicmaps/organicmaps/raw/master/.reuse/dep5&quot;&gt;.reuse/dep5&lt;/a&gt; for more information.&lt;/p&gt; 
&lt;p&gt;Binary data files (including, but not limited to &lt;code&gt;.mwm&lt;/code&gt; map files) are provided under a separate license. See &lt;a href=&quot;https://github.com/organicmaps/organicmaps/raw/master/DATA_LICENSE.txt&quot;&gt;DATA_LICENSE.txt&lt;/a&gt; for details.&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://api.reuse.software/info/github.com/organicmaps/organicmaps&quot;&gt;&lt;img src=&quot;https://api.reuse.software/badge/github.com/organicmaps/organicmaps&quot; alt=&quot;REUSE status&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;h3&gt;Attribution for forks and derivative apps based on Organic Maps&lt;/h3&gt; 
&lt;p&gt;If you use Organic Maps binary data (e.g. maps), source code, or its user interface in your project, include a visible, human-readable mention of the “Organic Maps Project” and a clickable link to &lt;a href=&quot;https://organicmaps.app&quot;&gt;https://organicmaps.app&lt;/a&gt;. To respect the work of all project contributors and to comply with license attribution terms, this notice should appear in user-visible locations, such as the product’s “About” and “Main Menu” screens.&lt;/p&gt; 
&lt;h3&gt;🤝 White-label&lt;/h3&gt; 
&lt;p&gt;For inquiries about white-labeling or using our servers for your products, please contact us in advance at:&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;legal@organicmaps.app&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;Thank you!&lt;/p&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/9125b25a5ab5d4e03ba047ea392299caf55683d03fd3227a12da4d625df71863/organicmaps/organicmaps" medium="image" />
      
    </item>
    
    <item>
      <title>deepseek-ai/FlashMLA</title>
      <link>https://github.com/deepseek-ai/FlashMLA</link>
      <description>&lt;p&gt;FlashMLA: Efficient Multi-head Latent Attention Kernels&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;FlashMLA&lt;/h1&gt; 
&lt;h2&gt;Introduction&lt;/h2&gt; 
&lt;p&gt;FlashMLA is DeepSeek&#39;s library of optimized attention kernels, powering the &lt;a href=&quot;https://github.com/deepseek-ai/DeepSeek-V3&quot;&gt;DeepSeek-V3&lt;/a&gt; and &lt;a href=&quot;https://github.com/deepseek-ai/DeepSeek-V3.2-Exp&quot;&gt;DeepSeek-V3.2-Exp&lt;/a&gt; models. This repository contains the following implementations:&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Sparse Attention Kernels&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;&lt;em&gt;These kernels power DeepSeek Sparse Attention (DSA), as introduced in &lt;a href=&quot;https://github.com/deepseek-ai/DeepSeek-V3.2-Exp&quot;&gt;this paper&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Token-level sparse attention for the prefill stage&lt;/li&gt; 
 &lt;li&gt;Token-level sparse attention for the decoding stage, with FP8 KV cache&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;strong&gt;Dense Attention Kernels&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Dense attention for the prefill stage&lt;/li&gt; 
 &lt;li&gt;Dense attention for the decoding stage&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;News&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;2025.09.29 Release of Sparse Attention Kernels&lt;/strong&gt;: With the launch of &lt;a href=&quot;https://github.com/deepseek-ai/DeepSeek-V3.2-Exp&quot;&gt;DeepSeek-V3.2&lt;/a&gt;, we are releasing the corresponding token-level sparse attention kernels. These kernels power the model&#39;s DeepSeek Sparse Attention (DSA) and achieve up to 640 TFlops during prefilling and 410 TFlops during decoding. We also release a deep-dive blog for our new FP8 sparse decoding kernel. Check it out &lt;a href=&quot;https://raw.githubusercontent.com/deepseek-ai/FlashMLA/main/docs/20250929-hopper-fp8-sparse-deep-dive.md&quot;&gt;here&lt;/a&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;2025.08.01 Kernels for MHA on SM100&lt;/strong&gt;: Thanks to &lt;a href=&quot;https://github.com/deepseek-ai/FlashMLA/pull/76&quot;&gt;NVIDIA&#39;s PR&lt;/a&gt; for MHA forward / backward kernels on SM100!&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;2025.04.22 Deep-Dive Blog&lt;/strong&gt;: We&#39;d love to share the technical details behind the new FlashMLA kernel! Check out our deep-dive write-up &lt;a href=&quot;https://raw.githubusercontent.com/deepseek-ai/FlashMLA/main/docs/20250422-new-kernel-deep-dive.md&quot;&gt;here&lt;/a&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;2025.04.22 Performance Update&lt;/strong&gt;: We&#39;re excited to announce the new release of Flash MLA, which delivers 5% ~ 15% performance improvement for compute-bound workloads, achieving up to 660 TFlops on NVIDIA H800 SXM5 GPUs. The interface of the new version is fully compatible with the old one. Simply upgrade to the new version for an immediate performance boost! 🚀🚀🚀&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Performance&lt;/h2&gt; 
&lt;h4&gt;Test &amp;amp; benchmark MLA decoding (Sparse &amp;amp; Dense):&lt;/h4&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;python tests/test_flash_mla_dense_decoding.py
python tests/test_flash_mla_sparse_decoding.py
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;The dense MLA decoding kernel achieves up to 3000 GB/s in memory-bound configuration and 660 TFLOPS in computation-bound configuration on H800 SXM5 with CUDA 12.8. The token-level sparse MLA decoding kernel (which uses an FP8 KV cache while performing the matrix multiplication in bfloat16) achieves 410 TFLOPS in compute-bound configuration on H800 SXM5 with CUDA 12.8, and achieves up to 350 TFlops on B200 (which is not really optimized yet).&lt;/p&gt; 
&lt;h4&gt;Test &amp;amp; benchmark MHA prefill (Dense):&lt;/h4&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;python tests/test_fmha_sm100.py
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;It achieves up to 1460 TFlops in forward and 1000 TFlops in backward computation on B200, as reported by NVIDIA.&lt;/p&gt; 
&lt;h4&gt;Test &amp;amp; benchmark MLA prefill (Sparse):&lt;/h4&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;python tests/test_flash_mla_sparse_prefill.py
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;It achieves up to 640 TFlops in forward computation on H800 SXM5 with CUDA 12.8, and achieves up to 1450 TFlops on B200, CUDA 12.9.&lt;/p&gt; 
&lt;h2&gt;Requirements&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;SM90 / SM100 (See the support matrix below)&lt;/li&gt; 
 &lt;li&gt;CUDA 12.8 and above (CUDA 12.9+ is required for SM100 kernels)&lt;/li&gt; 
 &lt;li&gt;PyTorch 2.0 and above&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Support matrix:&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th style=&quot;text-align:center&quot;&gt;Kernel&lt;/th&gt; 
   &lt;th style=&quot;text-align:center&quot;&gt;GPU Architecture&lt;/th&gt; 
   &lt;th style=&quot;text-align:center&quot;&gt;MLA Mode [2]&lt;/th&gt; 
   &lt;th style=&quot;text-align:center&quot;&gt;KVCache Format&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;Dense Decoding&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;SM90&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;MQA&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;BF16&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;Sparse Decoding&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;SM90 &amp;amp; SM100&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;MQA&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;FP8 [1]&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;Dense Prefill&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;SM100&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;MHA&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;Sparse Prefill&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;SM90 &amp;amp; SM100&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;MQA&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;[1]: For more details on using FP8 KV cache, see documents below.&lt;/p&gt; 
&lt;p&gt;[2]: Here &quot;MLA Mode&quot; refers to the mode used for MLA calculation. MQA stands for Multi-Query Attention mode (i.e. &lt;code&gt;head_dim_k&lt;/code&gt; = 576 with &lt;code&gt;head_dim_v&lt;/code&gt; = 512), while MHA stands for Multi-Head Attention mode (i.e. &lt;code&gt;head_dim_k&lt;/code&gt; = 192 / 128 with &lt;code&gt;head_dim_v&lt;/code&gt; = 128). For a detailed explanation of these modes, please refer to the appendix of &lt;a href=&quot;https://github.com/deepseek-ai/DeepSeek-V3.2-Exp&quot;&gt;DeepSeek V3.2&#39;s Paper&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Installation&lt;/h2&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git clone https://github.com/deepseek-ai/FlashMLA.git flash-mla
cd flash-mla
git submodule update --init --recursive
pip install -v .
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Usage&lt;/h2&gt; 
&lt;h3&gt;MLA Decoding&lt;/h3&gt; 
&lt;p&gt;To use the MLA decoding kernels, call get_mla_metadata once before the decoding loop to get the tile scheduler metadata. Then, call flash_mla_with_kvcache in each decoding step. For example:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-python&quot;&gt;from flash_mla import get_mla_metadata, flash_mla_with_kvcache

tile_scheduler_metadata, num_splits = get_mla_metadata(
    cache_seqlens,
    s_q * h_q // h_kv,
    h_kv,
    h_q,
    is_fp8,
    topk,
)

for i in range(num_layers):
    ...
    o_i, lse_i = flash_mla_with_kvcache(
        q_i, kvcache_i, block_table, cache_seqlens, dv,
        tile_scheduler_metadata, num_splits,
        is_causal, is_fp8_kvcache, indices,
    )
    ...
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Where&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;s_q&lt;/code&gt; is the number of q tokens per q sequence. If MTP (speculative decoding) is disabled, it should be 1.&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;h_kv&lt;/code&gt; is the number of key-value heads.&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;h_q&lt;/code&gt; is the number of query heads.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;strong&gt;FP8 KV Cache:&lt;/strong&gt; If &lt;code&gt;is_fp8_kvcache&lt;/code&gt; is set to &lt;code&gt;True&lt;/code&gt;, the kernel reads the KV cache in the &quot;FP8 with scale&quot; format (described below). It dequantizes the cache to bfloat16 and performs attention computation in bfloat16. The output is also in bfloat16.&lt;/p&gt; 
&lt;p&gt;In the &quot;FP8 with scale&quot; format, each token&#39;s KV cache is 656 Bytes, structured as:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;First 512 bytes:&lt;/strong&gt; The &quot;quantized NoPE&quot; part, containing 512 &lt;code&gt;float8_e4m3&lt;/code&gt; values.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Next 16 bytes:&lt;/strong&gt; Scale factors, containing 4 &lt;code&gt;float32&lt;/code&gt; values. The first &lt;code&gt;float32&lt;/code&gt; is the scale for the first 128 &lt;code&gt;float8_e4m3&lt;/code&gt; values, the second for the next 128, and so on.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Last 128 bytes:&lt;/strong&gt; The &quot;RoPE&quot; part, containing 64 &lt;code&gt;bfloat16&lt;/code&gt; values. This part is not quantized for accuracy.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;See &lt;code&gt;tests/quant.py&lt;/code&gt; for quantization and dequantization details.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Sparse Attention (&lt;code&gt;indices&lt;/code&gt; tensor):&lt;/strong&gt; The &lt;code&gt;indices&lt;/code&gt; tensor (if provided) enables token-level sparse attention by instructing the kernel to compute attention only for specified tokens.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Shape:&lt;/strong&gt; &lt;code&gt;indices&lt;/code&gt; should be a 3D tensor of shape &lt;code&gt;(batch_size, seq_len_q, topk)&lt;/code&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Format:&lt;/strong&gt; &lt;code&gt;indices_in_kvcache[i][j][k] = (the index of the page block where token t resides) * page_block_size + (the offset of token t within the page block)&lt;/code&gt;, where &lt;code&gt;t&lt;/code&gt; is the k-th token for the j-th query sequence in the i-th batch. Since the index of the page block has already been encoded into &lt;code&gt;indices_in_kvcache&lt;/code&gt;, the kernel does not require the &lt;code&gt;block_table&lt;/code&gt; parameter.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Invalid entries:&lt;/strong&gt; Set invalid indices to &lt;code&gt;-1&lt;/code&gt;.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;strong&gt;Return Values:&lt;/strong&gt; The kernel returns &lt;code&gt;(out, lse)&lt;/code&gt;, where:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;out&lt;/code&gt; is the attention result.&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;lse&lt;/code&gt; is the log-sum-exp value of the attention scores for each query head.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;See &lt;code&gt;tests/test_flash_mla_decoding.py&lt;/code&gt; for a complete example.&lt;/p&gt; 
&lt;h3&gt;Sparse MLA Prefill&lt;/h3&gt; 
&lt;p&gt;For the sparse MLA prefill kernel, call &lt;code&gt;flash_mla_sparse_fwd&lt;/code&gt; directly with the following parameters:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;q&lt;/code&gt;: Query tensor of shape &lt;code&gt;[s_q, h_q, d_qk]&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;kv&lt;/code&gt;: Key-Value tensor of shape &lt;code&gt;[s_kv, h_kv, d_qk]&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;indices&lt;/code&gt;: Indices tensor of shape &lt;code&gt;[s_q, h_kv, topk]&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;sm_scale&lt;/code&gt;: A scalar value&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;strong&gt;Note on batching:&lt;/strong&gt; This kernel does not support a batch dimension. For multi-batch inference, reshape the input tensors and adjust the &lt;code&gt;indices&lt;/code&gt; parameter to simulate batch processing.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Invalid indices:&lt;/strong&gt; Set invalid entries in &lt;code&gt;indices&lt;/code&gt; to &lt;code&gt;-1&lt;/code&gt; or any number &lt;code&gt;&amp;gt;= s_kv&lt;/code&gt;.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Return Values and Equivalent PyTorch Code:&lt;/strong&gt; The kernel returns &lt;code&gt;(out, max_logits, lse)&lt;/code&gt;. This is equivalent to the following PyTorch operations:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-python&quot;&gt;Q: [s_q, h_q, d_qk], bfloat16
kv: [s_kv, h_kv, d_qk], bfloat16
indices: [s_q, h_kv, topk], int32

kv = kv.squeeze(1)  # [s_kv, d_qk], h_kv must be 1
indices = indices.squeeze(1)    # [s_q, topk]
focused_kv = kv[indices]    # For the i-th sequence (s_q), the corresponding KV tokens are selected from the KV cache based on indices[i, :]. This operation results in a tensor of shape [s_q, topk, d_qk].

P = (Q @ focused_kv.transpose(-1, -2)) * sm_scale * math.log2(math.e)    # [s_q, h_q, topk]
max_logits = P.max(dim=-1) # [s_q, h_q]
lse = log2sumexp2(P, dim=-1, base=2)   # [s_q, h_q]，&quot;log2sumexp2&quot; means that the exponentiation and logarithm are base-2
S = exp2(P - lse)      # [s_q, h_q, topk]
out = S @ focused_kv  # [s_q, h_q, d_qk]

return (out, max_logits, lse)
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;See &lt;code&gt;tests/test_flash_mla_prefill.py&lt;/code&gt; for a complete example.&lt;/p&gt; 
&lt;h3&gt;Dense MHA Prefill&lt;/h3&gt; 
&lt;p&gt;This kernel implements the standard dense Multi-Head Attention (MHA) forward and backward operations. It can be called using:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;flash_attn_varlen_func&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;flash_attn_varlen_qkvpacked_func&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;flash_attn_varlen_kvpacked_func&lt;/code&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;The usage is similar to the &lt;code&gt;flash_attn&lt;/code&gt; package. See &lt;code&gt;tests/test_fmha_sm100.py&lt;/code&gt; for a complete example.&lt;/p&gt; 
&lt;h2&gt;Acknowledgement&lt;/h2&gt; 
&lt;p&gt;FlashMLA is inspired by &lt;a href=&quot;https://github.com/dao-AILab/flash-attention/&quot;&gt;FlashAttention 2&amp;amp;3&lt;/a&gt; and &lt;a href=&quot;https://github.com/nvidia/cutlass&quot;&gt;cutlass&lt;/a&gt; projects.&lt;/p&gt; 
&lt;h2&gt;Community Support&lt;/h2&gt; 
&lt;h3&gt;MetaX&lt;/h3&gt; 
&lt;p&gt;For MetaX GPUs, visit the official website: &lt;a href=&quot;https://www.metax-tech.com&quot;&gt;MetaX&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;The corresponding FlashMLA version can be found at: &lt;a href=&quot;https://github.com/MetaX-MACA/FlashMLA&quot;&gt;MetaX-MACA/FlashMLA&lt;/a&gt;&lt;/p&gt; 
&lt;h3&gt;Moore Threads&lt;/h3&gt; 
&lt;p&gt;For the Moore Threads GPU, visit the official website: &lt;a href=&quot;https://www.mthreads.com/&quot;&gt;Moore Threads&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;The corresponding FlashMLA version is available on GitHub: &lt;a href=&quot;https://github.com/MooreThreads/MT-flashMLA&quot;&gt;MooreThreads/MT-flashMLA&lt;/a&gt;.&lt;/p&gt; 
&lt;h3&gt;Hygon DCU&lt;/h3&gt; 
&lt;p&gt;For the Hygon DCU, visit the official website: &lt;a href=&quot;https://developer.sourcefind.cn/&quot;&gt;Hygon Developer&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;The corresponding FlashMLA version is available here: &lt;a href=&quot;https://developer.sourcefind.cn/codes/OpenDAS/MLAttention&quot;&gt;OpenDAS/MLAttention&lt;/a&gt;.&lt;/p&gt; 
&lt;h3&gt;Intellifusion&lt;/h3&gt; 
&lt;p&gt;For the Intellifusion NNP, visit the official website: &lt;a href=&quot;https://www.intellif.com&quot;&gt;Intellifusion&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;The corresponding FlashMLA version is available on Gitee: &lt;a href=&quot;https://gitee.com/Intellifusion_2025/tyllm/blob/master/python/tylang/flash_mla.py&quot;&gt;Intellifusion/tyllm&lt;/a&gt;.&lt;/p&gt; 
&lt;h3&gt;Iluvatar Corex&lt;/h3&gt; 
&lt;p&gt;For Iluvatar Corex GPUs, visit the official website: &lt;a href=&quot;https://www.iluvatar.com&quot;&gt;Iluvatar Corex&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;The corresponding FlashMLA version is available on GitHub: &lt;a href=&quot;https://github.com/Deep-Spark/FlashMLA/tree/iluvatar_flashmla&quot;&gt;Deep-Spark/FlashMLA&lt;/a&gt;&lt;/p&gt; 
&lt;h3&gt;AMD Instinct&lt;/h3&gt; 
&lt;p&gt;For AMD Instinct GPUs, visit the official website: &lt;a href=&quot;https://www.amd.com/en/products/accelerators/instinct.html&quot;&gt;AMD Instinct&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;The corresponding FlashMLA version can be found at: &lt;a href=&quot;https://github.com/ROCm/aiter/raw/main/aiter/mla.py&quot;&gt;AITER/MLA&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;Citation&lt;/h2&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bibtex&quot;&gt;@misc{flashmla2025,
      title={FlashMLA: Efficient Multi-head Latent Attention Kernels},
      author={Jiashi Li, Shengyu Liu},
      year={2025},
      publisher = {GitHub},
      howpublished = {\url{https://github.com/deepseek-ai/FlashMLA}},
}
&lt;/code&gt;&lt;/pre&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/2e89fe9affdcea39fd555145ccef5184de0e6f970a7e9ba6347956e4ec4fe7c2/deepseek-ai/FlashMLA" medium="image" />
      
    </item>
    
    <item>
      <title>microsoft/onnxruntime</title>
      <link>https://github.com/microsoft/onnxruntime</link>
      <description>&lt;p&gt;ONNX Runtime: cross-platform, high performance ML inferencing and training accelerator&lt;/p&gt;&lt;hr&gt;&lt;p align=&quot;center&quot;&gt;&lt;img width=&quot;50%&quot; src=&quot;https://raw.githubusercontent.com/microsoft/onnxruntime/main/docs/images/ONNX_Runtime_logo_dark.png&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;ONNX Runtime is a cross-platform inference and training machine-learning accelerator&lt;/strong&gt;.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;ONNX Runtime inference&lt;/strong&gt; can enable faster customer experiences and lower costs, supporting models from deep learning frameworks such as PyTorch and TensorFlow/Keras as well as classical machine learning libraries such as scikit-learn, LightGBM, XGBoost, etc. ONNX Runtime is compatible with different hardware, drivers, and operating systems, and provides optimal performance by leveraging hardware accelerators where applicable alongside graph optimizations and transforms. &lt;a href=&quot;https://www.onnxruntime.ai/docs/#onnx-runtime-for-inferencing&quot;&gt;Learn more →&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;ONNX Runtime training&lt;/strong&gt; can accelerate the model training time on multi-node NVIDIA GPUs for transformer models with a one-line addition for existing PyTorch training scripts. &lt;a href=&quot;https://www.onnxruntime.ai/docs/#onnx-runtime-for-training&quot;&gt;Learn more →&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;Get Started &amp;amp; Resources&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;General Information&lt;/strong&gt;: &lt;a href=&quot;https://onnxruntime.ai&quot;&gt;onnxruntime.ai&lt;/a&gt;&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;Usage documentation and tutorials&lt;/strong&gt;: &lt;a href=&quot;https://onnxruntime.ai/docs&quot;&gt;onnxruntime.ai/docs&lt;/a&gt;&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;YouTube video tutorials&lt;/strong&gt;: &lt;a href=&quot;https://www.youtube.com/@ONNXRuntime&quot;&gt;youtube.com/@ONNXRuntime&lt;/a&gt;&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;a href=&quot;https://onnxruntime.ai/roadmap&quot;&gt;&lt;strong&gt;Upcoming Release Roadmap&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;Companion sample repositories&lt;/strong&gt;:&lt;/p&gt; 
  &lt;ul&gt; 
   &lt;li&gt;ONNX Runtime Inferencing: &lt;a href=&quot;https://github.com/microsoft/onnxruntime-inference-examples&quot;&gt;microsoft/onnxruntime-inference-examples&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;ONNX Runtime Training: &lt;a href=&quot;https://github.com/microsoft/onnxruntime-training-examples&quot;&gt;microsoft/onnxruntime-training-examples&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;Plugin EP repositories&lt;/strong&gt;:&lt;/p&gt; 
  &lt;ul&gt; 
   &lt;li&gt;ONNX Runtime QNN Plugin EP: &lt;a href=&quot;https://github.com/onnxruntime/onnxruntime-qnn&quot;&gt;onnxruntime/onnxruntime-qnn&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Releases&lt;/h2&gt; 
&lt;p&gt;The current release and past releases can be found here: &lt;a href=&quot;https://github.com/microsoft/onnxruntime/releases&quot;&gt;https://github.com/microsoft/onnxruntime/releases&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;For details on the upcoming release, including release dates, announcements, features, and guidance on submitting feature requests, please visit the release roadmap: &lt;a href=&quot;https://onnxruntime.ai/roadmap&quot;&gt;https://onnxruntime.ai/roadmap&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Data/Telemetry&lt;/h2&gt; 
&lt;p&gt;Windows distributions of this project may collect usage data and send it to Microsoft to help improve our products and services. See the &lt;a href=&quot;https://raw.githubusercontent.com/microsoft/onnxruntime/main/docs/Privacy.md&quot;&gt;privacy statement&lt;/a&gt; for more details.&lt;/p&gt; 
&lt;h2&gt;Contributions and Feedback&lt;/h2&gt; 
&lt;p&gt;We welcome contributions! Please see the &lt;a href=&quot;https://raw.githubusercontent.com/microsoft/onnxruntime/main/CONTRIBUTING.md&quot;&gt;contribution guidelines&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;For feature requests or bug reports, please file a &lt;a href=&quot;https://github.com/Microsoft/onnxruntime/issues&quot;&gt;GitHub Issue&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;For general discussion or questions, please use &lt;a href=&quot;https://github.com/microsoft/onnxruntime/discussions&quot;&gt;GitHub Discussions&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Code of Conduct&lt;/h2&gt; 
&lt;p&gt;This project has adopted the &lt;a href=&quot;https://opensource.microsoft.com/codeofconduct/&quot;&gt;Microsoft Open Source Code of Conduct&lt;/a&gt;. For more information see the &lt;a href=&quot;https://opensource.microsoft.com/codeofconduct/faq/&quot;&gt;Code of Conduct FAQ&lt;/a&gt; or contact &lt;a href=&quot;mailto:opencode@microsoft.com&quot;&gt;opencode@microsoft.com&lt;/a&gt; with any additional questions or comments.&lt;/p&gt; 
&lt;h2&gt;License&lt;/h2&gt; 
&lt;p&gt;This project is licensed under the &lt;a href=&quot;https://raw.githubusercontent.com/microsoft/onnxruntime/main/LICENSE&quot;&gt;MIT License&lt;/a&gt;.&lt;/p&gt;</description>
      
      <media:content url="https://repository-images.githubusercontent.com/156939672/37b1cb00-864b-11eb-8220-76153935f7da" medium="image" />
      
    </item>
    
    <item>
      <title>azerothcore/azerothcore-wotlk</title>
      <link>https://github.com/azerothcore/azerothcore-wotlk</link>
      <description>&lt;p&gt;Complete Open Source and Modular solution for MMO&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;&lt;img src=&quot;https://raw.githubusercontent.com/azerothcore/azerothcore.github.io/master/images/logo-github.png&quot; alt=&quot;logo&quot; /&gt; AzerothCore&lt;/h1&gt; 
&lt;p&gt;&lt;a href=&quot;https://raw.githubusercontent.com/azerothcore/azerothcore-wotlk/master/CODE_OF_CONDUCT.md&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Contributor%20Covenant-2.1-4baaaa.svg?sanitize=true&quot; alt=&quot;Contributor Covenant&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://www.codefactor.io/repository/github/azerothcore/azerothcore-wotlk&quot;&gt;&lt;img src=&quot;https://www.codefactor.io/repository/github/azerothcore/azerothcore-wotlk/badge&quot; alt=&quot;CodeFactor&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://stackoverflow.com/questions/tagged/azerothcore?sort=newest&quot; title=&quot;Ask / browse questions here&quot;&gt;&lt;img src=&quot;http://img.shields.io/badge/stackoverflow-azerothcore-blue.svg?logo=stackoverflow&quot; alt=&quot;StackOverflow&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://discord.gg/gkt4y2x&quot; title=&quot;Our community hub on Discord&quot;&gt;&lt;img src=&quot;https://img.shields.io/discord/217589275766685707?logo=discord&amp;amp;logoColor=white&quot; alt=&quot;Discord&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://www.bountyhub.dev/bounties?repo=azerothcore&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Bounties-on%20BountyHub-yellow&quot; alt=&quot;Bounties on BountyHub&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;Build Status&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/azerothcore/azerothcore-wotlk/actions/workflows/core-build-nopch.yml?query=branch%3Amaster&quot;&gt;&lt;img src=&quot;https://github.com/azerothcore/azerothcore-wotlk/actions/workflows/core-build-nopch.yml/badge.svg?branch=master&quot; alt=&quot;nopch-build&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/azerothcore/azerothcore-wotlk/actions/workflows/core-build-pch.yml?query=branch%3Amaster&quot;&gt;&lt;img src=&quot;https://github.com/azerothcore/azerothcore-wotlk/actions/workflows/core-build-pch.yml/badge.svg?branch=master&quot; alt=&quot;pch-build&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/azerothcore/azerothcore-wotlk/actions/workflows/core_modules_build.yml?query=branch%3Amaster&quot;&gt;&lt;img src=&quot;https://github.com/azerothcore/azerothcore-wotlk/actions/workflows/core_modules_build.yml/badge.svg?branch=master&quot; alt=&quot;core-modules-build&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/azerothcore/azerothcore-wotlk/actions/workflows/windows_build.yml?query=branch%3Amaster&quot;&gt;&lt;img src=&quot;https://github.com/azerothcore/azerothcore-wotlk/actions/workflows/windows_build.yml/badge.svg?branch=master&quot; alt=&quot;windows-build&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/azerothcore/azerothcore-wotlk/actions/workflows/macos_build.yml?query=branch%3Amaster&quot;&gt;&lt;img src=&quot;https://github.com/azerothcore/azerothcore-wotlk/actions/workflows/macos_build.yml/badge.svg?branch=master&quot; alt=&quot;macos-build&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/azerothcore/azerothcore-wotlk/actions/workflows/docker_build.yml?query=branch%3Amaster&quot;&gt;&lt;img src=&quot;https://github.com/azerothcore/azerothcore-wotlk/actions/workflows/docker_build.yml/badge.svg?branch=master&quot; alt=&quot;docker-build&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/azerothcore/azerothcore-wotlk/actions/workflows/tools_build.yml?query=branch%3Amaster&quot;&gt;&lt;img src=&quot;https://github.com/azerothcore/azerothcore-wotlk/actions/workflows/tools_build.yml/badge.svg?branch=master&quot; alt=&quot;tools-build&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/azerothcore/azerothcore-wotlk/actions/workflows/dashboard-ci.yml?query=branch%3Amaster&quot;&gt;&lt;img src=&quot;https://github.com/azerothcore/azerothcore-wotlk/actions/workflows/dashboard-ci.yml/badge.svg?branch=master&quot; alt=&quot;dashboard-ci&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;Introduction&lt;/h2&gt; 
&lt;p&gt;AzerothCore is an open-source game server application and framework designed for hosting massively multiplayer online role-playing games (MMORPGs). It is based on the popular MMORPG World of Warcraft (WoW) and seeks to recreate the gameplay experience of the original game from patch 3.3.5a.&lt;/p&gt; 
&lt;p&gt;The original code is based on MaNGOS, TrinityCore, and SunwellCore and has since then had extensive development to improve stability, in-game mechanics, and modularity to the game. AC has also grown into a community-driven project with a significant number of contributors and developers. It is written in C++ and provides a solid foundation for creating private servers that mimic the mechanics and behavior of the official WoW servers.&lt;/p&gt; 
&lt;h2&gt;Philosophy&lt;/h2&gt; 
&lt;p&gt;Our main goal is to create a playable game server, offering a fully working in-game experience.&lt;/p&gt; 
&lt;p&gt;Here are the main points we focus on:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt; &lt;p&gt;Stability&lt;/p&gt; 
  &lt;ul&gt; 
   &lt;li&gt;We make sure all changes pass the CIs before being merged into the master branch.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Blizzlike content&lt;/p&gt; 
  &lt;ul&gt; 
   &lt;li&gt;We strive to make all in-game content to be blizzlike. Therefore we have a high standard for fixes being made.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Customization&lt;/p&gt; 
  &lt;ul&gt; 
   &lt;li&gt;It is easy to customize your experience using &lt;a href=&quot;https://raw.githubusercontent.com/azerothcore/azerothcore-wotlk/master/#modules&quot;&gt;modules&lt;/a&gt;.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Community driven&lt;/p&gt; 
  &lt;ul&gt; 
   &lt;li&gt;AzerothCore has an active community of developers, contributors, and users who collaborate, share knowledge, and provide support through forums, Discord channels, and other communication platforms.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Modules&lt;/h3&gt; 
&lt;p&gt;AzerothCore is designed to be highly modular, allowing developers to extend and customize the game to suit their preferences or create unique gameplay experiences. This flexibility enables the addition of custom features, content, and modifications.&lt;/p&gt; 
&lt;p&gt;We have a lot of modules already made by the community, many of which can be found in the &lt;a href=&quot;https://www.azerothcore.org/catalogue.html#/&quot;&gt;Module Catalogue&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Installation&lt;/h2&gt; 
&lt;p&gt;Detailed installation instructions are available &lt;a href=&quot;http://www.azerothcore.org/wiki/installation&quot;&gt;here&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Contributing&lt;/h2&gt; 
&lt;p&gt;AzerothCore can also serve as a learning resource for aspiring developers who want to understand how WoW servers work, how MMORPGs are structured, how game server emulators are created, or to improve their C++ and SQL knowledge.&lt;/p&gt; 
&lt;p&gt;If you want to contribute to the project, you will find a lot of resources that will guide you in our &lt;a href=&quot;https://www.azerothcore.org/wiki/contribute&quot;&gt;wiki&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;We also recommend you read our &lt;a href=&quot;https://github.com/azerothcore/azerothcore-wotlk/raw/master/.github/CODE_OF_CONDUCT.md&quot;&gt;Contributor Covenant Code of Conduct&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;Feel free to join our &lt;a href=&quot;https://discord.gg/gkt4y2x&quot;&gt;Discord server&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;Click on the &quot;⭐ Star&quot; button to help us gain more visibility on Github!&lt;/p&gt; 
&lt;h2&gt;Authors &amp;amp; Contributors&lt;/h2&gt; 
&lt;p&gt;The project was born in 2016 based on SunwellCore. Unfortunately, SunwellCore was published without any git history, so on git there are no credits for all the contributors before 2016.&lt;/p&gt; 
&lt;p&gt;You can check the &lt;a href=&quot;https://github.com/azerothcore/azerothcore-wotlk/raw/master/AUTHORS&quot;&gt;authors&lt;/a&gt; file for more details.&lt;/p&gt; 
&lt;h2&gt;Important Links&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.azerothcore.org/pages/doxygen/index.html&quot;&gt;Doxygen documentation&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;http://www.azerothcore.org/&quot;&gt;Website&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;http://www.azerothcore.org/catalogue.html&quot; title=&quot;Modules, tools, and other stuff for AzerothCore&quot;&gt;AzerothCore catalogue&lt;/a&gt; (modules, tools, etc...)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://discord.gg/gkt4y2x&quot;&gt;Our Discord server&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;http://www.azerothcore.org/wiki&quot; title=&quot;Easy to use and developed by AzerothCore founder&quot;&gt;Our wiki&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/azerothcore/azerothcore-wotlk/discussions/&quot;&gt;Our forum&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.facebook.com/AzerothCore/&quot;&gt;Our Facebook page&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.linkedin.com/company/azerothcore/&quot;&gt;Our LinkedIn page&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;License&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;The AzerothCore source code is released under the &lt;a href=&quot;https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html&quot;&gt;GNU GPL v2&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;It&#39;s important to note that AzerothCore is not an official Blizzard Entertainment product, and it is not affiliated with or endorsed by World of Warcraft or Blizzard Entertainment. AzerothCore does not in any case sponsor nor support illegal public servers. If you use this project to run an illegal public server and not for testing and learning it is your own personal choice.&lt;/p&gt; 
&lt;h2&gt;Special thanks&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://www.jetbrains.com/?from=AzerothCore&quot;&gt;JetBrains&lt;/a&gt; is providing free &lt;a href=&quot;https://www.jetbrains.com/community/opensource/&quot;&gt;open-source licenses&lt;/a&gt; to the AzerothCore developers.&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://jb.gg/OpenSourceSupport&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>
      
      <media:content url="https://repository-images.githubusercontent.com/61980658/81cf1300-d8ea-11ea-8db0-4c26b9e798d6" medium="image" />
      
    </item>
    
    <item>
      <title>google-deepmind/mujoco</title>
      <link>https://github.com/google-deepmind/mujoco</link>
      <description>&lt;p&gt;Multi-Joint dynamics with Contact. A general purpose physics simulator.&lt;/p&gt;&lt;hr&gt;&lt;h1&gt; &lt;a href=&quot;https://raw.githubusercontent.com/google-deepmind/mujoco/main/#&quot;&gt;&lt;img alt=&quot;MuJoCo&quot; src=&quot;https://raw.githubusercontent.com/google-deepmind/mujoco/main/banner.png&quot; width=&quot;100%&quot; /&gt;&lt;/a&gt; &lt;/h1&gt; 
&lt;p&gt; &lt;a href=&quot;https://github.com/google-deepmind/mujoco/actions/workflows/build.yml?query=branch%3Amain&quot; alt=&quot;GitHub Actions&quot;&gt; &lt;img src=&quot;https://img.shields.io/github/actions/workflow/status/google-deepmind/mujoco/build.yml?branch=main&quot; /&gt; &lt;/a&gt; &lt;a href=&quot;https://mujoco.readthedocs.io/&quot; alt=&quot;Documentation&quot;&gt; &lt;img src=&quot;https://readthedocs.org/projects/mujoco/badge/?version=latest&quot; /&gt; &lt;/a&gt; &lt;a href=&quot;https://github.com/google-deepmind/mujoco/raw/main/LICENSE&quot; alt=&quot;License&quot;&gt; &lt;img src=&quot;https://img.shields.io/github/license/google-deepmind/mujoco&quot; /&gt; &lt;/a&gt; &lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;MuJoCo&lt;/strong&gt; stands for &lt;strong&gt;Mu&lt;/strong&gt;lti-&lt;strong&gt;Jo&lt;/strong&gt;int dynamics with &lt;strong&gt;Co&lt;/strong&gt;ntact. It is a general purpose physics engine that aims to facilitate research and development in robotics, biomechanics, graphics and animation, machine learning, and other areas which demand fast and accurate simulation of articulated structures interacting with their environment.&lt;/p&gt; 
&lt;p&gt;This repository is maintained by &lt;a href=&quot;https://www.deepmind.com/&quot;&gt;Google DeepMind&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;MuJoCo has a C API and is intended for researchers and developers. The runtime simulation module is tuned to maximize performance and operates on low-level data structures that are preallocated by the built-in XML compiler. The library includes interactive visualization with a native GUI, rendered in OpenGL. MuJoCo further exposes a large number of utility functions for computing physics-related quantities.&lt;/p&gt; 
&lt;p&gt;We also provide &lt;a href=&quot;https://mujoco.readthedocs.io/en/stable/python.html#python-bindings&quot;&gt;Python bindings&lt;/a&gt; and a plug-in for the &lt;a href=&quot;https://unity.com/&quot;&gt;Unity&lt;/a&gt; game engine.&lt;/p&gt; 
&lt;h2&gt;Documentation&lt;/h2&gt; 
&lt;p&gt;MuJoCo&#39;s documentation can be found at &lt;a href=&quot;https://mujoco.readthedocs.io&quot;&gt;mujoco.readthedocs.io&lt;/a&gt;. Upcoming features due for the next release can be found in the &lt;a href=&quot;https://mujoco.readthedocs.io/en/latest/changelog.html&quot;&gt;changelog&lt;/a&gt; in the &quot;latest&quot; branch.&lt;/p&gt; 
&lt;h2&gt;Getting Started&lt;/h2&gt; 
&lt;p&gt;There are two easy ways to get started with MuJoCo:&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;Run &lt;code&gt;simulate&lt;/code&gt; on your machine.&lt;/strong&gt; &lt;a href=&quot;https://www.youtube.com/watch?v=P83tKA1iz2Y&quot;&gt;This video&lt;/a&gt; shows a screen capture of &lt;code&gt;simulate&lt;/code&gt;, MuJoCo&#39;s native interactive viewer. Follow the steps described in the &lt;a href=&quot;https://mujoco.readthedocs.io/en/latest/programming#getting-started&quot;&gt;Getting Started&lt;/a&gt; section of the documentation to get &lt;code&gt;simulate&lt;/code&gt; running on your machine.&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;Explore our online IPython notebooks.&lt;/strong&gt; If you are a Python user, you might want to start with our tutorial notebooks running on Google Colab:&lt;/p&gt; &lt;/li&gt; 
&lt;/ol&gt; 
&lt;ul&gt; 
 &lt;li&gt;The &lt;strong&gt;introductory&lt;/strong&gt; tutorial teaches MuJoCo basics: &lt;a href=&quot;https://colab.research.google.com/github/google-deepmind/mujoco/blob/main/python/tutorial.ipynb&quot;&gt;&lt;img src=&quot;https://colab.research.google.com/assets/colab-badge.svg?sanitize=true&quot; alt=&quot;Open In Colab&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;The &lt;strong&gt;Model Editing&lt;/strong&gt; tutorial shows how to create and edit models procedurally: &lt;a href=&quot;https://colab.research.google.com/github/google-deepmind/mujoco/blob/main/python/mjspec.ipynb&quot;&gt;&lt;img src=&quot;https://colab.research.google.com/assets/colab-badge.svg?sanitize=true&quot; alt=&quot;Open In Colab&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;The &lt;strong&gt;rollout&lt;/strong&gt; tutorial shows how to use the multithreaded &lt;code&gt;rollout&lt;/code&gt; module: &lt;a href=&quot;https://colab.research.google.com/github/google-deepmind/mujoco/blob/main/python/rollout.ipynb&quot;&gt;&lt;img src=&quot;https://colab.research.google.com/assets/colab-badge.svg?sanitize=true&quot; alt=&quot;Open In Colab&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;The &lt;strong&gt;LQR&lt;/strong&gt; tutorial synthesizes a linear-quadratic controller, balancing a humanoid on one leg: &lt;a href=&quot;https://colab.research.google.com/github/google-deepmind/mujoco/blob/main/python/LQR.ipynb&quot;&gt;&lt;img src=&quot;https://colab.research.google.com/assets/colab-badge.svg?sanitize=true&quot; alt=&quot;Open In Colab&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;The &lt;strong&gt;least-squares&lt;/strong&gt; tutorial explains how to use the Python-based nonlinear least-squares solver: &lt;a href=&quot;https://colab.research.google.com/github/google-deepmind/mujoco/blob/main/python/least_squares.ipynb&quot;&gt;&lt;img src=&quot;https://colab.research.google.com/assets/colab-badge.svg?sanitize=true&quot; alt=&quot;Open In Colab&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;The &lt;strong&gt;MJX&lt;/strong&gt; tutorial provides usage examples of &lt;a href=&quot;https://mujoco.readthedocs.io/en/stable/mjx.html&quot;&gt;MuJoCo XLA&lt;/a&gt;, a branch of MuJoCo written in JAX: &lt;a href=&quot;https://colab.research.google.com/github/google-deepmind/mujoco/blob/main/mjx/tutorial.ipynb&quot;&gt;&lt;img src=&quot;https://colab.research.google.com/assets/colab-badge.svg?sanitize=true&quot; alt=&quot;Open In Colab&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;The &lt;strong&gt;differentiable physics&lt;/strong&gt; tutorial trains locomotion policies with analytical gradients automatically derived from MuJoCo&#39;s physics step: &lt;a href=&quot;https://colab.research.google.com/github/google-deepmind/mujoco/blob/main/mjx/training_apg.ipynb&quot;&gt;&lt;img src=&quot;https://colab.research.google.com/assets/colab-badge.svg?sanitize=true&quot; alt=&quot;Open In Colab&quot; /&gt;&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Installation&lt;/h2&gt; 
&lt;h3&gt;Prebuilt binaries&lt;/h3&gt; 
&lt;p&gt;Versioned releases are available as precompiled binaries from the GitHub &lt;a href=&quot;https://github.com/google-deepmind/mujoco/releases&quot;&gt;releases page&lt;/a&gt;, built for Linux (x86-64 and AArch64), Windows (x86-64 only), and macOS (universal). This is the recommended way to use the software.&lt;/p&gt; 
&lt;h3&gt;Building from source&lt;/h3&gt; 
&lt;p&gt;Users who wish to build MuJoCo from source should consult the &lt;a href=&quot;https://mujoco.readthedocs.io/en/latest/programming#building-from-source&quot;&gt;build from source&lt;/a&gt; section of the documentation. However, note that the commit at the tip of the &lt;code&gt;main&lt;/code&gt; branch may be unstable.&lt;/p&gt; 
&lt;h3&gt;Python (&amp;gt;= 3.10)&lt;/h3&gt; 
&lt;p&gt;The native Python bindings, which come pre-packaged with a copy of MuJoCo, can be installed from &lt;a href=&quot;https://pypi.org/project/mujoco/&quot;&gt;PyPI&lt;/a&gt; via:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;pip install mujoco
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Note that Pre-built Linux wheels target &lt;code&gt;manylinux2014&lt;/code&gt;, see &lt;a href=&quot;https://github.com/pypa/manylinux&quot;&gt;here&lt;/a&gt; for compatible distributions. For more information such as building the bindings from source, see the &lt;a href=&quot;https://mujoco.readthedocs.io/en/stable/python.html#python-bindings&quot;&gt;Python bindings&lt;/a&gt; section of the documentation.&lt;/p&gt; 
&lt;h2&gt;Versioning&lt;/h2&gt; 
&lt;p&gt;We aim to release MuJoCo in the first week of each month. Our versioning standards changed to modified Semantic Versioning in 3.5.0, see &lt;a href=&quot;https://raw.githubusercontent.com/google-deepmind/mujoco/main/VERSIONING.md&quot;&gt;versioning&lt;/a&gt; for details.&lt;/p&gt; 
&lt;h2&gt;Contributing&lt;/h2&gt; 
&lt;p&gt;We welcome community engagement: questions, requests for help, bug reports and feature requests. To read more about bug reports, feature requests and more ambitious contributions, please see our &lt;a href=&quot;https://raw.githubusercontent.com/google-deepmind/mujoco/main/CONTRIBUTING.md&quot;&gt;contributors guide&lt;/a&gt; and &lt;a href=&quot;https://raw.githubusercontent.com/google-deepmind/mujoco/main/STYLEGUIDE.md&quot;&gt;style guide&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Asking Questions&lt;/h2&gt; 
&lt;p&gt;Questions and requests for help are welcome as a GitHub &lt;a href=&quot;https://github.com/google-deepmind/mujoco/discussions/categories/asking-for-help&quot;&gt;&quot;Asking for Help&quot; Discussion&lt;/a&gt; and should focus on a specific problem or question.&lt;/p&gt; 
&lt;h2&gt;Bug reports and feature requests&lt;/h2&gt; 
&lt;p&gt;GitHub &lt;a href=&quot;https://github.com/google-deepmind/mujoco/issues&quot;&gt;Issues&lt;/a&gt; are reserved for bug reports, feature requests and other development-related subjects.&lt;/p&gt; 
&lt;h2&gt;Related software&lt;/h2&gt; 
&lt;p&gt;MuJoCo is the backbone for numerous environment packages. Below we list several bindings and converters.&lt;/p&gt; 
&lt;h3&gt;Bindings&lt;/h3&gt; 
&lt;p&gt;These packages give users of various languages access to MuJoCo functionality:&lt;/p&gt; 
&lt;h4&gt;First-party bindings:&lt;/h4&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://mujoco.readthedocs.io/en/stable/python.html&quot;&gt;Python bindings&lt;/a&gt; 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://github.com/google-deepmind/dm_control&quot;&gt;dm_control&lt;/a&gt;, Google DeepMind&#39;s related environment stack, includes &lt;a href=&quot;https://github.com/google-deepmind/dm_control/raw/main/dm_control/mjcf/README.md&quot;&gt;PyMJCF&lt;/a&gt;, a module for procedural manipulation of MuJoCo models.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/google-deepmind/mujoco/main/wasm/README.md&quot;&gt;JavaScript bindings and WebAssembly support&lt;/a&gt; (inspired &lt;a href=&quot;https://github.com/stillonearth&quot;&gt;stillonearth&lt;/a&gt; and &lt;a href=&quot;https://github.com/zalo&quot;&gt;zalo&lt;/a&gt;&#39;s community projects; &lt;a href=&quot;https://github.com/ttktjmt/mjswan&quot;&gt;mjswan&lt;/a&gt; extends these with real-time policy control, interactive force application, and more).&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://mujoco.readthedocs.io/en/stable/unity.html&quot;&gt;C# bindings and Unity plug-in&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h4&gt;Third-party bindings:&lt;/h4&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;MATLAB Simulink&lt;/strong&gt;: &lt;a href=&quot;https://github.com/mathworks-robotics/mujoco-simulink-blockset&quot;&gt;Simulink Blockset for MuJoCo Simulator&lt;/a&gt; by &lt;a href=&quot;https://github.com/vmanoj1996&quot;&gt;Manoj Velmurugan&lt;/a&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Swift&lt;/strong&gt;: &lt;a href=&quot;https://github.com/liuliu/swift-mujoco&quot;&gt;swift-mujoco&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Java&lt;/strong&gt;: &lt;a href=&quot;https://github.com/CommonWealthRobotics/mujoco-java&quot;&gt;mujoco-java&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Julia&lt;/strong&gt;: &lt;a href=&quot;https://github.com/JamieMair/MuJoCo.jl&quot;&gt;MuJoCo.jl&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Rust&lt;/strong&gt;: &lt;a href=&quot;https://github.com/davidhozic/mujoco-rs&quot;&gt;MuJoCo-rs&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Converters&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;OpenSim&lt;/strong&gt;: &lt;a href=&quot;https://github.com/MyoHub/myoconverter&quot;&gt;MyoConverter&lt;/a&gt; converts OpenSim models to MJCF.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;SDFormat&lt;/strong&gt;: &lt;a href=&quot;https://github.com/gazebosim/gz-mujoco/&quot;&gt;gz-mujoco&lt;/a&gt; is a two-way SDFormat &amp;lt;-&amp;gt; MJCF conversion tool.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;OBJ&lt;/strong&gt;: &lt;a href=&quot;https://github.com/kevinzakka/obj2mjcf&quot;&gt;obj2mjcf&lt;/a&gt; a script for converting composite OBJ files into a loadable MJCF model.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;onshape&lt;/strong&gt;: &lt;a href=&quot;https://github.com/rhoban/onshape-to-robot&quot;&gt;Onshape to Robot&lt;/a&gt; Converts &lt;a href=&quot;https://www.onshape.com/en/&quot;&gt;onshape&lt;/a&gt; CAD assemblies to MJCF.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Citation&lt;/h2&gt; 
&lt;p&gt;If you use MuJoCo for published research, please cite:&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;@inproceedings{todorov2012mujoco,
  title={MuJoCo: A physics engine for model-based control},
  author={Todorov, Emanuel and Erez, Tom and Tassa, Yuval},
  booktitle={2012 IEEE/RSJ International Conference on Intelligent Robots and Systems},
  pages={5026--5033},
  year={2012},
  organization={IEEE},
  doi={10.1109/IROS.2012.6386109}
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;License and Disclaimer&lt;/h2&gt; 
&lt;p&gt;Copyright 2021 DeepMind Technologies Limited.&lt;/p&gt; 
&lt;p&gt;Box collision code (&lt;a href=&quot;https://github.com/google-deepmind/mujoco/raw/main/src/engine/engine_collision_box.c&quot;&gt;&lt;code&gt;engine_collision_box.c&lt;/code&gt;&lt;/a&gt;) is Copyright 2016 Svetoslav Kolev.&lt;/p&gt; 
&lt;p&gt;ReStructuredText documents, images, and videos in the &lt;code&gt;doc&lt;/code&gt; directory are made available under the terms of the Creative Commons Attribution 4.0 (CC BY 4.0) license. You may obtain a copy of the License at &lt;a href=&quot;https://creativecommons.org/licenses/by/4.0/legalcode&quot;&gt;https://creativecommons.org/licenses/by/4.0/legalcode&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;Source code is licensed under the Apache License, Version 2.0. You may obtain a copy of the License at &lt;a href=&quot;https://www.apache.org/licenses/LICENSE-2.0&quot;&gt;https://www.apache.org/licenses/LICENSE-2.0&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;This is not an officially supported Google product.&lt;/p&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/455a967405678e36935f5bb4d2db24188396ed1441234666fbc7dcd29f3e4bbd/google-deepmind/mujoco" medium="image" />
      
    </item>
    
  </channel>
</rss>
