<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Rust on Producthunt daily</title>
        <link>https://producthunt.programnotes.cn/en/tags/rust/</link>
        <description>Recent content in Rust on Producthunt daily</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>en</language>
        <lastBuildDate>Wed, 29 Oct 2025 15:29:01 +0800</lastBuildDate><atom:link href="https://producthunt.programnotes.cn/en/tags/rust/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>gpui-component</title>
        <link>https://producthunt.programnotes.cn/en/p/gpui-component/</link>
        <pubDate>Wed, 29 Oct 2025 15:29:01 +0800</pubDate>
        
        <guid>https://producthunt.programnotes.cn/en/p/gpui-component/</guid>
        <description>&lt;img src="https://images.unsplash.com/photo-1638858896774-f8a375a0bc1e?ixid=M3w0NjAwMjJ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3NjE3MjI4OTR8&amp;ixlib=rb-4.1.0" alt="Featured image of post gpui-component" /&gt;&lt;h1 id=&#34;longbridgegpui-component&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/longbridge/gpui-component&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;longbridge/gpui-component&lt;/a&gt;
&lt;/h1&gt;&lt;h1 id=&#34;gpui-component&#34;&gt;GPUI Component
&lt;/h1&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/longbridge/gpui-component/actions/workflows/ci.yml&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://github.com/longbridge/gpui-component/actions/workflows/ci.yml/badge.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Build Status&#34;
	
	
&gt;&lt;/a&gt; &lt;a class=&#34;link&#34; href=&#34;https://docs.rs/gpui-component/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://docs.rs/gpui-component/badge.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Docs&#34;
	
	
&gt;&lt;/a&gt; &lt;a class=&#34;link&#34; href=&#34;https://crates.io/crates/gpui-component&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/crates/v/gpui-component.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Crates.io&#34;
	
	
&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;UI components for building fantastic desktop applications using &lt;a class=&#34;link&#34; href=&#34;https://gpui.rs&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GPUI&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;features&#34;&gt;Features
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Richness&lt;/strong&gt;: 60+ cross-platform desktop UI components.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Native&lt;/strong&gt;: Inspired by macOS and Windows controls, combined with shadcn/ui design for a modern experience.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ease of Use&lt;/strong&gt;: Stateless &lt;code&gt;RenderOnce&lt;/code&gt; components, simple and user-friendly.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Customizable&lt;/strong&gt;: Built-in &lt;code&gt;Theme&lt;/code&gt; and &lt;code&gt;ThemeColor&lt;/code&gt;, supporting multi-theme and variable-based configurations.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Versatile&lt;/strong&gt;: Supports sizes like &lt;code&gt;xs&lt;/code&gt;, &lt;code&gt;sm&lt;/code&gt;, &lt;code&gt;md&lt;/code&gt;, and &lt;code&gt;lg&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Flexible Layout&lt;/strong&gt;: Dock layout for panel arrangements, resizing, and freeform (Tiles) layouts.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;High Performance&lt;/strong&gt;: Virtualized Table and List components for smooth large-data rendering.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Content Rendering&lt;/strong&gt;: Native support for Markdown and simple HTML.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Charting&lt;/strong&gt;: Built-in charts for visualizing your data.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Editor&lt;/strong&gt;: High performance code editor (support up to 200K lines) with LSP (diagnostics, completion, hover, etc).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Syntax Highlighting&lt;/strong&gt;: Syntax highlighting for editor and markdown components using Tree Sitter.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;showcase&#34;&gt;Showcase
&lt;/h2&gt;&lt;p&gt;Here is the first application: &lt;a class=&#34;link&#34; href=&#34;https://longbridge.com/desktop&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Longbridge Pro&lt;/a&gt;, built using GPUI Component.&lt;/p&gt;
&lt;img width=&#34;1763&#34; alt=&#34;Image&#34; src=&#34;https://github.com/user-attachments/assets/e1ecb9c3-2dd3-431e-bd97-5a819c30e551&#34; /&gt;
&lt;p&gt;We built multi-theme support in the application. This feature is not included in GPUI Component itself, but is based on the &lt;code&gt;Theme&lt;/code&gt; feature, so it&amp;rsquo;s easy to implement.&lt;/p&gt;
&lt;h2 id=&#34;usage&#34;&gt;Usage
&lt;/h2&gt;&lt;p&gt;GPUI and GPUI Component are still in development, so you need to add dependencies by git.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-toml&#34; data-lang=&#34;toml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;gpui&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;0.2.2&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;gpui-component&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;0.3.0&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;basic-example&#34;&gt;Basic Example
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;37
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;38
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;39
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;40
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;41
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-rs&#34; data-lang=&#34;rs&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;use&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;gpui&lt;/span&gt;::&lt;span class=&#34;o&#34;&gt;*&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;use&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;gpui_component&lt;/span&gt;::&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;button&lt;/span&gt;::&lt;span class=&#34;o&#34;&gt;*&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;*&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;};&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;pub&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;struct&lt;/span&gt; &lt;span class=&#34;nc&#34;&gt;HelloWorld&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;impl&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Render&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;HelloWorld&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;fn&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;render&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;mut&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;bp&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;_&lt;/span&gt;: &lt;span class=&#34;kp&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&#34;nc&#34;&gt;mut&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Window&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;_&lt;/span&gt;: &lt;span class=&#34;kp&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&#34;nc&#34;&gt;mut&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Context&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;bp&#34;&gt;Self&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;-&amp;gt; &lt;span class=&#34;nc&#34;&gt;impl&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;IntoElement&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;div&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;            &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;v_flex&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;            &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;gap_2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;            &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;size_full&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;            &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;items_center&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;            &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;justify_center&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;            &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;child&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;Hello, World!&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;            &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;child&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;                &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Button&lt;/span&gt;::&lt;span class=&#34;n&#34;&gt;new&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;ok&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;                    &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;primary&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;                    &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;label&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;Let&amp;#39;s Go!&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;                    &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;on_click&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;|&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;_&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;_&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;_&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;|&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;fm&#34;&gt;println!&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;Clicked!&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)),&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;            &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;fn&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;main&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;app&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Application&lt;/span&gt;::&lt;span class=&#34;n&#34;&gt;new&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;app&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;run&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;move&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;|&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cx&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;|&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;// This must be called before using any GPUI Component features.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;gpui_component&lt;/span&gt;::&lt;span class=&#34;n&#34;&gt;init&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cx&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cx&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;spawn&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;async&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;move&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;|&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cx&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;|&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;            &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cx&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;open_window&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;WindowOptions&lt;/span&gt;::&lt;span class=&#34;n&#34;&gt;default&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(),&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;|&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;window&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cx&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;|&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;                &lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;view&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cx&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;new&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;|&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;_&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;|&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;HelloWorld&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;                &lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;// This first level on the window, should be a Root.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;                &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cx&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;new&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;|&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cx&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;|&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Root&lt;/span&gt;::&lt;span class=&#34;n&#34;&gt;new&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;view&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;into&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(),&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;window&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cx&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;            &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;})&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;?&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;            &lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;Ok&lt;/span&gt;::&lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;_&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;anyhow&lt;/span&gt;::&lt;span class=&#34;n&#34;&gt;Error&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(())&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;})&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;detach&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;webview&#34;&gt;WebView
&lt;/h3&gt;&lt;blockquote&gt;
&lt;p&gt;Still early and experimental; there are a lot of limitations.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;GPUI Component has a &lt;code&gt;WebView&lt;/code&gt; element based on &lt;a class=&#34;link&#34; href=&#34;https://github.com/tauri-apps/wry&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Wry&lt;/a&gt;. This is an optional feature, which you can enable with a feature flag.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-toml&#34; data-lang=&#34;toml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;gpui-component&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;version&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;0.3.0&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;features&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;webview&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;wry&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;version&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;0.53.3, package = &amp;#34;&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;lb-wry&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;More usage examples can be found in the &lt;a class=&#34;link&#34; href=&#34;https://github.com/longbridge/gpui-component/tree/main/crates/story&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;story&lt;/a&gt; directory.&lt;/p&gt;
&lt;h3 id=&#34;icons&#34;&gt;Icons
&lt;/h3&gt;&lt;p&gt;GPUI Component has an &lt;code&gt;Icon&lt;/code&gt; element, but it does not include SVG files by default.&lt;/p&gt;
&lt;p&gt;The example uses &lt;a class=&#34;link&#34; href=&#34;https://lucide.dev&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Lucide&lt;/a&gt; icons, but you can use any icons you like. Just name the SVG files as defined in &lt;a class=&#34;link&#34; href=&#34;https://github.com/longbridge/gpui-component/blob/main/crates/ui/src/icon.rs#L86&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;IconName&lt;/a&gt;. You can add any icons you need to your project.&lt;/p&gt;
&lt;h2 id=&#34;development&#34;&gt;Development
&lt;/h2&gt;&lt;p&gt;We have a gallery of applications built with GPUI Component.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cargo run
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;More examples can be found in the &lt;code&gt;examples&lt;/code&gt; directory. You can run them with &lt;code&gt;cargo run --example &amp;lt;example_name&amp;gt;&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Check out &lt;a class=&#34;link&#34; href=&#34;CONTRIBUTING.md&#34; &gt;CONTRIBUTING.md&lt;/a&gt; for more details.&lt;/p&gt;
&lt;h2 id=&#34;compare-to-others&#34;&gt;Compare to others
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Features&lt;/th&gt;
          &lt;th&gt;GPUI Component&lt;/th&gt;
          &lt;th&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/iced-rs/iced&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Iced&lt;/a&gt;&lt;/th&gt;
          &lt;th&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/emilk/egui&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;egui&lt;/a&gt;&lt;/th&gt;
          &lt;th&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.qt.io/product/qt6&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Qt 6&lt;/a&gt;&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Language&lt;/td&gt;
          &lt;td&gt;Rust&lt;/td&gt;
          &lt;td&gt;Rust&lt;/td&gt;
          &lt;td&gt;Rust&lt;/td&gt;
          &lt;td&gt;C++/QML&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Core Render&lt;/td&gt;
          &lt;td&gt;GPUI&lt;/td&gt;
          &lt;td&gt;wgpu&lt;/td&gt;
          &lt;td&gt;wgpu&lt;/td&gt;
          &lt;td&gt;QT&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;License&lt;/td&gt;
          &lt;td&gt;Apache 2.0&lt;/td&gt;
          &lt;td&gt;MIT&lt;/td&gt;
          &lt;td&gt;MIT/Apache 2.0&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.qt.io/qt-licensing&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Commercial/LGPL&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Min Binary Size &lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/td&gt;
          &lt;td&gt;12MB&lt;/td&gt;
          &lt;td&gt;11MB&lt;/td&gt;
          &lt;td&gt;5M&lt;/td&gt;
          &lt;td&gt;20MB &lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Cross-Platform&lt;/td&gt;
          &lt;td&gt;Yes&lt;/td&gt;
          &lt;td&gt;Yes&lt;/td&gt;
          &lt;td&gt;Yes&lt;/td&gt;
          &lt;td&gt;Yes&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Documentation&lt;/td&gt;
          &lt;td&gt;Simple&lt;/td&gt;
          &lt;td&gt;Simple&lt;/td&gt;
          &lt;td&gt;Simple&lt;/td&gt;
          &lt;td&gt;Good&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Web&lt;/td&gt;
          &lt;td&gt;No&lt;/td&gt;
          &lt;td&gt;Yes&lt;/td&gt;
          &lt;td&gt;Yes&lt;/td&gt;
          &lt;td&gt;Yes&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;UI Style&lt;/td&gt;
          &lt;td&gt;Modern&lt;/td&gt;
          &lt;td&gt;Basic&lt;/td&gt;
          &lt;td&gt;Basic&lt;/td&gt;
          &lt;td&gt;Basic&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;CJK Support&lt;/td&gt;
          &lt;td&gt;Yes&lt;/td&gt;
          &lt;td&gt;Yes&lt;/td&gt;
          &lt;td&gt;Bad&lt;/td&gt;
          &lt;td&gt;Yes&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Chart&lt;/td&gt;
          &lt;td&gt;Yes&lt;/td&gt;
          &lt;td&gt;No&lt;/td&gt;
          &lt;td&gt;No&lt;/td&gt;
          &lt;td&gt;Yes&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Table (Large dataset)&lt;/td&gt;
          &lt;td&gt;Yes&lt;br&gt;(Virtual Rows, Columns)&lt;/td&gt;
          &lt;td&gt;No&lt;/td&gt;
          &lt;td&gt;Yes&lt;br&gt;(Virtual Rows)&lt;/td&gt;
          &lt;td&gt;Yes&lt;br&gt;(Virtual Rows, Columns)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Table Column Resize&lt;/td&gt;
          &lt;td&gt;Yes&lt;/td&gt;
          &lt;td&gt;No&lt;/td&gt;
          &lt;td&gt;Yes&lt;/td&gt;
          &lt;td&gt;Yes&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Text base&lt;/td&gt;
          &lt;td&gt;Rope&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/pop-os/cosmic-text&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;COSMIC Text&lt;/a&gt; &lt;sup id=&#34;fnref:3&#34;&gt;&lt;a href=&#34;#fn:3&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;/td&gt;
          &lt;td&gt;trait TextBuffer &lt;sup id=&#34;fnref:4&#34;&gt;&lt;a href=&#34;#fn:4&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;4&lt;/a&gt;&lt;/sup&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://doc.qt.io/qt-6/qtextdocument.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;QTextDocument&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;CodeEditor&lt;/td&gt;
          &lt;td&gt;Simple&lt;/td&gt;
          &lt;td&gt;Simple&lt;/td&gt;
          &lt;td&gt;Simple&lt;/td&gt;
          &lt;td&gt;Basic API&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Dock Layout&lt;/td&gt;
          &lt;td&gt;Yes&lt;/td&gt;
          &lt;td&gt;Yes&lt;/td&gt;
          &lt;td&gt;Yes&lt;/td&gt;
          &lt;td&gt;Yes&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Syntax Highlight&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://tree-sitter.github.io/tree-sitter/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Tree Sitter&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/trishume/syntect&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Syntect&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/trishume/syntect&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Syntect&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://doc.qt.io/qt-6/qsyntaxhighlighter.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;QSyntaxHighlighter&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Markdown Rendering&lt;/td&gt;
          &lt;td&gt;Yes&lt;/td&gt;
          &lt;td&gt;Yes&lt;/td&gt;
          &lt;td&gt;Basic&lt;/td&gt;
          &lt;td&gt;No&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Markdown mix HTML&lt;/td&gt;
          &lt;td&gt;Yes&lt;/td&gt;
          &lt;td&gt;No&lt;/td&gt;
          &lt;td&gt;No&lt;/td&gt;
          &lt;td&gt;No&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;HTML Rendering&lt;/td&gt;
          &lt;td&gt;Basic&lt;/td&gt;
          &lt;td&gt;No&lt;/td&gt;
          &lt;td&gt;No&lt;/td&gt;
          &lt;td&gt;Basic&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Text Selection&lt;/td&gt;
          &lt;td&gt;TextView&lt;/td&gt;
          &lt;td&gt;No&lt;/td&gt;
          &lt;td&gt;Any Label&lt;/td&gt;
          &lt;td&gt;Yes&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Custom Theme&lt;/td&gt;
          &lt;td&gt;Yes&lt;/td&gt;
          &lt;td&gt;Yes&lt;/td&gt;
          &lt;td&gt;Yes&lt;/td&gt;
          &lt;td&gt;Yes&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Built Themes&lt;/td&gt;
          &lt;td&gt;Yes&lt;/td&gt;
          &lt;td&gt;No&lt;/td&gt;
          &lt;td&gt;No&lt;/td&gt;
          &lt;td&gt;No&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;I18n&lt;/td&gt;
          &lt;td&gt;Yes&lt;/td&gt;
          &lt;td&gt;Yes&lt;/td&gt;
          &lt;td&gt;Yes&lt;/td&gt;
          &lt;td&gt;Yes&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote&gt;
&lt;p&gt;Please submit an issue or PR if any mistakes or outdated are found.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;license&#34;&gt;License
&lt;/h2&gt;&lt;p&gt;Apache-2.0&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;UI design based on &lt;a class=&#34;link&#34; href=&#34;https://ui.shadcn.com&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;shadcn/ui&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Icons from &lt;a class=&#34;link&#34; href=&#34;https://lucide.dev&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Lucide&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;Release builds by use simple hello world example.&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:2&#34;&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.qt.io/blog/reducing-binary-size-of-qt-applications-part-3-more-platforms&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Reducing Binary Size of Qt Applications&lt;/a&gt;&amp;#160;&lt;a href=&#34;#fnref:2&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:3&#34;&gt;
&lt;p&gt;Iced Editor: &lt;a class=&#34;link&#34; href=&#34;https://github.com/iced-rs/iced/blob/db5a1f6353b9f8520c4f9633d1cdc90242c2afe1/graphics/src/text/editor.rs#L65-L68&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/iced-rs/iced/blob/db5a1f6353b9f8520c4f9633d1cdc90242c2afe1/graphics/src/text/editor.rs#L65-L68&lt;/a&gt;&amp;#160;&lt;a href=&#34;#fnref:3&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:4&#34;&gt;
&lt;p&gt;egui TextBuffer: &lt;a class=&#34;link&#34; href=&#34;https://github.com/emilk/egui/blob/0a81372cfd3a4deda640acdecbbaf24bf78bb6a2/crates/egui/src/widgets/text_edit/text_buffer.rs#L20&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/emilk/egui/blob/0a81372cfd3a4deda640acdecbbaf24bf78bb6a2/crates/egui/src/widgets/text_edit/text_buffer.rs#L20&lt;/a&gt;&amp;#160;&lt;a href=&#34;#fnref:4&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
</description>
        </item>
        <item>
        <title>servo</title>
        <link>https://producthunt.programnotes.cn/en/p/servo/</link>
        <pubDate>Thu, 23 Oct 2025 15:28:44 +0800</pubDate>
        
        <guid>https://producthunt.programnotes.cn/en/p/servo/</guid>
        <description>&lt;img src="https://images.unsplash.com/photo-1545584483-5568b8151c62?ixid=M3w0NjAwMjJ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3NjEyMDQ1MTB8&amp;ixlib=rb-4.1.0" alt="Featured image of post servo" /&gt;&lt;h1 id=&#34;servoservo&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/servo/servo&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;servo/servo&lt;/a&gt;
&lt;/h1&gt;&lt;h1 id=&#34;the-servo-parallel-browser-engine-project&#34;&gt;The Servo Parallel Browser Engine Project
&lt;/h1&gt;&lt;p&gt;Servo is a prototype web browser engine written in the
&lt;a class=&#34;link&#34; href=&#34;https://github.com/rust-lang/rust&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Rust&lt;/a&gt; language. It is currently developed on
64-bit macOS, 64-bit Linux, 64-bit Windows, 64-bit OpenHarmony, and Android.&lt;/p&gt;
&lt;p&gt;Servo welcomes contribution from everyone. Check out:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The &lt;a class=&#34;link&#34; href=&#34;https://book.servo.org&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Servo Book&lt;/a&gt; for documentation&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://servo.org/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;servo.org&lt;/a&gt; for news and guides&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Coordination of Servo development happens:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Here in the Github Issues&lt;/li&gt;
&lt;li&gt;On the &lt;a class=&#34;link&#34; href=&#34;https://servo.zulipchat.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Servo Zulip&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;In video calls advertised in the &lt;a class=&#34;link&#34; href=&#34;https://github.com/servo/project/issues&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Servo Project&lt;/a&gt; repo.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;getting-started&#34;&gt;Getting started
&lt;/h2&gt;&lt;p&gt;For more detailed build instructions, see the Servo book under &lt;a class=&#34;link&#34; href=&#34;https://book.servo.org/hacking/setting-up-your-environment.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Setting up your environment&lt;/a&gt;, &lt;a class=&#34;link&#34; href=&#34;https://book.servo.org/hacking/building-servo.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Building Servo&lt;/a&gt;, &lt;a class=&#34;link&#34; href=&#34;https://book.servo.org/hacking/building-for-android.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Building for Android&lt;/a&gt; and &lt;a class=&#34;link&#34; href=&#34;https://book.servo.org/hacking/building-for-openharmony.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Building for OpenHarmony&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;macos&#34;&gt;macOS
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Download and install &lt;a class=&#34;link&#34; href=&#34;https://developer.apple.com/xcode/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Xcode&lt;/a&gt; and &lt;a class=&#34;link&#34; href=&#34;https://brew.sh/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;brew&lt;/code&gt;&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Install &lt;code&gt;uv&lt;/code&gt;: &lt;code&gt;curl -LsSf https://astral.sh/uv/install.sh | sh&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Install &lt;code&gt;rustup&lt;/code&gt;: &lt;code&gt;curl --proto &#39;=https&#39; --tlsv1.2 -sSf https://sh.rustup.rs | sh&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Restart your shell to make sure &lt;code&gt;cargo&lt;/code&gt; is available&lt;/li&gt;
&lt;li&gt;Install the other dependencies: &lt;code&gt;./mach bootstrap&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Build servoshell: &lt;code&gt;./mach build&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;linux&#34;&gt;Linux
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Install &lt;code&gt;curl&lt;/code&gt;:
&lt;ul&gt;
&lt;li&gt;Arch: &lt;code&gt;sudo pacman -S --needed curl&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Debian, Ubuntu: &lt;code&gt;sudo apt install curl&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Fedora: &lt;code&gt;sudo dnf install curl&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Gentoo: &lt;code&gt;sudo emerge net-misc/curl&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Install &lt;code&gt;uv&lt;/code&gt;: &lt;code&gt;curl -LsSf https://astral.sh/uv/install.sh | sh&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Install &lt;code&gt;rustup&lt;/code&gt;: &lt;code&gt;curl --proto &#39;=https&#39; --tlsv1.2 -sSf https://sh.rustup.rs | sh&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Restart your shell to make sure &lt;code&gt;cargo&lt;/code&gt; is available&lt;/li&gt;
&lt;li&gt;Install the other dependencies: &lt;code&gt;./mach bootstrap&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Build servoshell: &lt;code&gt;./mach build&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;windows&#34;&gt;Windows
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Download &lt;a class=&#34;link&#34; href=&#34;https://docs.astral.sh/uv/getting-started/installation/#standalone-installer&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;uv&lt;/code&gt;&lt;/a&gt;, &lt;a class=&#34;link&#34; href=&#34;https://chocolatey.org/install#individual&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;choco&lt;/code&gt;&lt;/a&gt;, and &lt;a class=&#34;link&#34; href=&#34;https://win.rustup.rs/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;rustup&lt;/code&gt;&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;Be sure to select &lt;em&gt;Quick install via the Visual Studio Community installer&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;In the Visual Studio Installer, ensure the following components are installed:
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Windows 10/11 SDK (anything &amp;gt;= 10.0.19041.0)&lt;/strong&gt; (&lt;code&gt;Microsoft.VisualStudio.Component.Windows{10, 11}SDK.{&amp;gt;=19041}&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MSVC v143 - VS 2022 C++ x64/x86 build tools (Latest)&lt;/strong&gt; (&lt;code&gt;Microsoft.VisualStudio.Component.VC.Tools.x86.x64&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;C++ ATL for latest v143 build tools (x86 &amp;amp; x64)&lt;/strong&gt; (&lt;code&gt;Microsoft.VisualStudio.Component.VC.ATL&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Restart your shell to make sure &lt;code&gt;cargo&lt;/code&gt; is available&lt;/li&gt;
&lt;li&gt;Install the other dependencies: &lt;code&gt;.\mach bootstrap&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Build servoshell: &lt;code&gt;.\mach build&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;android&#34;&gt;Android
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Ensure that the following environment variables are set:
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;ANDROID_SDK_ROOT&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ANDROID_NDK_ROOT&lt;/code&gt;: &lt;code&gt;$ANDROID_SDK_ROOT/ndk/28.2.13676358/&lt;/code&gt;
&lt;code&gt;ANDROID_SDK_ROOT&lt;/code&gt; can be any directory (such as &lt;code&gt;~/android-sdk&lt;/code&gt;).
All of the Android build dependencies will be installed there.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Install the latest version of the &lt;a class=&#34;link&#34; href=&#34;https://developer.android.com/studio#command-tools&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Android command-line
tools&lt;/a&gt; to
&lt;code&gt;$ANDROID_SDK_ROOT/cmdline-tools/latest&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Run the following command to install the necessary components:
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo &lt;span class=&#34;nv&#34;&gt;$ANDROID_SDK_ROOT&lt;/span&gt;/cmdline-tools/latest/bin/sdkmanager --install &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;build-tools;34.0.0&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;emulator&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;ndk;28.2.13676358&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;platform-tools&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;platforms;android-33&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;system-images;android-33;google_apis;x86_64&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;Follow the instructions above for the platform you are building on&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;openharmony&#34;&gt;OpenHarmony
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Follow the instructions above for the platform you are building on to prepare the environment.&lt;/li&gt;
&lt;li&gt;Depending on the target distribution (e.g. &lt;code&gt;HarmonyOS NEXT&lt;/code&gt; vs pure &lt;code&gt;OpenHarmony&lt;/code&gt;) the build configuration will differ slightly.&lt;/li&gt;
&lt;li&gt;Ensure that the following environment variables are set
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;DEVECO_SDK_HOME&lt;/code&gt; (Required when targeting &lt;code&gt;HarmonyOS NEXT&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;OHOS_BASE_SDK_HOME&lt;/code&gt; (Required when targeting &lt;code&gt;OpenHarmony&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;OHOS_SDK_NATIVE&lt;/code&gt; (e.g. &lt;code&gt;${DEVECO_SDK_HOME}/default/openharmony/native&lt;/code&gt; or &lt;code&gt;${OHOS_BASE_SDK_HOME}/${API_VERSION}/native&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;SERVO_OHOS_SIGNING_CONFIG&lt;/code&gt;: Path to json file containing a valid signing configuration for the demo app.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Review the detailed instructions at &lt;a class=&#34;link&#34; href=&#34;https://book.servo.org/hacking/building-for-openharmony.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Building for OpenHarmony&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;The target distribution can be modified by passing &lt;code&gt;--flavor=&amp;lt;default|harmonyos&amp;gt;&lt;/code&gt; to &lt;code&gt;mach &amp;lt;build|package|install&amp;gt;&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>solana</title>
        <link>https://producthunt.programnotes.cn/en/p/solana/</link>
        <pubDate>Thu, 25 Sep 2025 15:29:48 +0800</pubDate>
        
        <guid>https://producthunt.programnotes.cn/en/p/solana/</guid>
        <description>&lt;img src="https://images.unsplash.com/photo-1641547827212-22eccac51a36?ixid=M3w0NjAwMjJ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3NTg3ODUyNzd8&amp;ixlib=rb-4.1.0" alt="Featured image of post solana" /&gt;&lt;h1 id=&#34;solana-labssolana&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/solana-labs/solana&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;solana-labs/solana&lt;/a&gt;
&lt;/h1&gt;&lt;h1 id=&#34;please-read-this-repo-is-now-a-public-archive&#34;&gt;PLEASE READ: This repo is now a public archive
&lt;/h1&gt;&lt;p&gt;This repo still exists in archived form, feel free to fork any reference
implementations it still contains.&lt;/p&gt;
&lt;p&gt;See Agave, the Solana validator implementation from Anza: &lt;a class=&#34;link&#34; href=&#34;https://github.com/anza-xyz/agave&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/anza-xyz/agave&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p align=&#34;center&#34;&gt;
  &lt;a href=&#34;https://solana.com&#34;&gt;
    &lt;img alt=&#34;Solana&#34; src=&#34;https://i.imgur.com/IKyzQ6T.png&#34; width=&#34;250&#34; /&gt;
  &lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://crates.io/crates/solana-core&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/crates/v/solana-core.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Solana crate&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://docs.rs/solana-core&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://docs.rs/solana-core/badge.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Solana documentation&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://buildkite.com/solana-labs/solana/builds?branch=master&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://badge.buildkite.com/8cc350de251d61483db98bdfc895b9ea0ac8ffa4a32ee850ed.svg?branch=master&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Build status&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://codecov.io/gh/solana-labs/solana&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://codecov.io/gh/solana-labs/solana/branch/master/graph/badge.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;codecov&#34;
	
	
&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h1 id=&#34;building&#34;&gt;Building
&lt;/h1&gt;&lt;h2 id=&#34;1-install-rustc-cargo-and-rustfmt&#34;&gt;&lt;strong&gt;1. Install rustc, cargo and rustfmt.&lt;/strong&gt;
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ curl https://sh.rustup.rs -sSf &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sh
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ &lt;span class=&#34;nb&#34;&gt;source&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$HOME&lt;/span&gt;/.cargo/env
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ rustup component add rustfmt
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;When building the master branch, please make sure you are using the latest stable rust version by running:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ rustup update
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;When building a specific release branch, you should check the rust version in &lt;code&gt;ci/rust-version.sh&lt;/code&gt; and if necessary, install that version by running:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ rustup install VERSION
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Note that if this is not the latest rust version on your machine, cargo commands may require an &lt;a class=&#34;link&#34; href=&#34;https://rust-lang.github.io/rustup/overrides.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;override&lt;/a&gt; in order to use the correct version.&lt;/p&gt;
&lt;p&gt;On Linux systems you may need to install libssl-dev, pkg-config, zlib1g-dev, protobuf etc.&lt;/p&gt;
&lt;p&gt;On Ubuntu:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ sudo apt-get update
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ sudo apt-get install libssl-dev libudev-dev pkg-config zlib1g-dev llvm clang cmake make libprotobuf-dev protobuf-compiler
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;On Fedora:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ sudo dnf install openssl-devel systemd-devel pkg-config zlib-devel llvm clang cmake make protobuf-devel protobuf-compiler perl-core
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;2-download-the-source-code&#34;&gt;&lt;strong&gt;2. Download the source code.&lt;/strong&gt;
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ git clone https://github.com/solana-labs/solana.git
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ &lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; solana
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;3-build&#34;&gt;&lt;strong&gt;3. Build.&lt;/strong&gt;
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ ./cargo build
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h1 id=&#34;testing&#34;&gt;Testing
&lt;/h1&gt;&lt;p&gt;&lt;strong&gt;Run the test suite:&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ ./cargo &lt;span class=&#34;nb&#34;&gt;test&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;starting-a-local-testnet&#34;&gt;Starting a local testnet
&lt;/h3&gt;&lt;p&gt;Start your own testnet locally, instructions are in the &lt;a class=&#34;link&#34; href=&#34;https://docs.solanalabs.com/clusters/benchmark&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;online docs&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;accessing-the-remote-development-cluster&#34;&gt;Accessing the remote development cluster
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;devnet&lt;/code&gt; - stable public cluster for development accessible via
devnet.solana.com. Runs 24/7. Learn more about the &lt;a class=&#34;link&#34; href=&#34;https://docs.solanalabs.com/clusters&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;public clusters&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;benchmarking&#34;&gt;Benchmarking
&lt;/h1&gt;&lt;p&gt;First, install the nightly build of rustc. &lt;code&gt;cargo bench&lt;/code&gt; requires the use of the
unstable features only available in the nightly build.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ rustup install nightly
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Run the benchmarks:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ cargo +nightly bench
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h1 id=&#34;release-process&#34;&gt;Release Process
&lt;/h1&gt;&lt;p&gt;The release process for this project is described &lt;a class=&#34;link&#34; href=&#34;RELEASE.md&#34; &gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;h1 id=&#34;code-coverage&#34;&gt;Code coverage
&lt;/h1&gt;&lt;p&gt;To generate code coverage statistics:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ scripts/coverage.sh
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ open target/cov/lcov-local/index.html
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Why coverage? While most see coverage as a code quality metric, we see it primarily as a developer
productivity metric. When a developer makes a change to the codebase, presumably it&amp;rsquo;s a &lt;em&gt;solution&lt;/em&gt; to
some problem. Our unit-test suite is how we encode the set of &lt;em&gt;problems&lt;/em&gt; the codebase solves. Running
the test suite should indicate that your change didn&amp;rsquo;t &lt;em&gt;infringe&lt;/em&gt; on anyone else&amp;rsquo;s solutions. Adding a
test &lt;em&gt;protects&lt;/em&gt; your solution from future changes. Say you don&amp;rsquo;t understand why a line of code exists,
try deleting it and running the unit-tests. The nearest test failure should tell you what problem
was solved by that code. If no test fails, go ahead and submit a Pull Request that asks, &amp;ldquo;what
problem is solved by this code?&amp;rdquo; On the other hand, if a test does fail and you can think of a
better way to solve the same problem, a Pull Request with your solution would most certainly be
welcome! Likewise, if rewriting a test can better communicate what code it&amp;rsquo;s protecting, please
send us that patch!&lt;/p&gt;
&lt;h1 id=&#34;disclaimer&#34;&gt;Disclaimer
&lt;/h1&gt;&lt;p&gt;All claims, content, designs, algorithms, estimates, roadmaps,
specifications, and performance measurements described in this project
are done with the Solana Labs, Inc. (“SL”) good faith efforts. It is up to
the reader to check and validate their accuracy and truthfulness.
Furthermore, nothing in this project constitutes a solicitation for
investment.&lt;/p&gt;
&lt;p&gt;Any content produced by SL or developer resources that SL provides are
for educational and inspirational purposes only. SL does not encourage,
induce or sanction the deployment, integration or use of any such
applications (including the code comprising the Solana blockchain
protocol) in violation of applicable laws or regulations and hereby
prohibits any such deployment, integration or use. This includes the use of
any such applications by the reader (a) in violation of export control
or sanctions laws of the United States or any other applicable
jurisdiction, (b) if the reader is located in or ordinarily resident in
a country or territory subject to comprehensive sanctions administered
by the U.S. Office of Foreign Assets Control (OFAC), or (c) if the
reader is or is working on behalf of a Specially Designated National
(SDN) or a person subject to similar blocking or denied party
prohibitions.&lt;/p&gt;
&lt;p&gt;The reader should be aware that U.S. export control and sanctions laws prohibit
U.S. persons (and other persons that are subject to such laws) from transacting
with persons in certain countries and territories or that are on the SDN list.
Accordingly, there is a risk to individuals that other persons using any of the
code contained in this repo, or a derivation thereof, may be sanctioned persons
and that transactions with such persons would be a violation of U.S. export
controls and sanctions law.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>bevy</title>
        <link>https://producthunt.programnotes.cn/en/p/bevy/</link>
        <pubDate>Tue, 23 Sep 2025 15:28:09 +0800</pubDate>
        
        <guid>https://producthunt.programnotes.cn/en/p/bevy/</guid>
        <description>&lt;img src="https://images.unsplash.com/photo-1689197736392-7116fcbacfe0?ixid=M3w0NjAwMjJ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3NTg2MTI0NzN8&amp;ixlib=rb-4.1.0" alt="Featured image of post bevy" /&gt;&lt;h1 id=&#34;bevyenginebevy&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/bevyengine/bevy&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;bevyengine/bevy&lt;/a&gt;
&lt;/h1&gt;&lt;h1 id=&#34;bevy&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://bevy.org&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://bevy.org/assets/bevy_logo_light_dark_and_dimmed.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Bevy&#34;
	
	
&gt;&lt;/a&gt;
&lt;/h1&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/bevyengine/bevy#license&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/badge/license-MIT%2FApache-blue.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;License&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://crates.io/crates/bevy&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/crates/v/bevy.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Crates.io&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://crates.io/crates/bevy&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/crates/d/bevy.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Downloads&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://docs.rs/bevy/latest/bevy/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://docs.rs/bevy/badge.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Docs&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://github.com/bevyengine/bevy/actions&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://github.com/bevyengine/bevy/workflows/CI/badge.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;CI&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://discord.gg/bevy&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/discord/691052431525675048.svg?label=&amp;amp;logo=discord&amp;amp;logoColor=ffffff&amp;amp;color=7389D8&amp;amp;labelColor=6A7EC2&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Discord&#34;
	
	
&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;what-is-bevy&#34;&gt;What is Bevy?
&lt;/h2&gt;&lt;p&gt;Bevy is a refreshingly simple data-driven game engine built in Rust. It is free and open-source forever!&lt;/p&gt;
&lt;h2 id=&#34;warning&#34;&gt;WARNING
&lt;/h2&gt;&lt;p&gt;Bevy is still in the early stages of development. Important features are missing. Documentation is sparse. A new version of Bevy containing breaking changes to the API is released &lt;a class=&#34;link&#34; href=&#34;https://bevy.org/news/bevy-0-6/#the-train-release-schedule&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;approximately once every 3 months&lt;/a&gt;. We provide &lt;a class=&#34;link&#34; href=&#34;https://bevy.org/learn/migration-guides/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;migration guides&lt;/a&gt;, but we can&amp;rsquo;t guarantee migrations will always be easy. Use only if you are willing to work in this environment.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;MSRV:&lt;/strong&gt; Bevy relies heavily on improvements in the Rust language and compiler.
As a result, the Minimum Supported Rust Version (MSRV) is generally close to &amp;ldquo;the latest stable release&amp;rdquo; of Rust.&lt;/p&gt;
&lt;h2 id=&#34;design-goals&#34;&gt;Design Goals
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Capable&lt;/strong&gt;: Offer a complete 2D and 3D feature set&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Simple&lt;/strong&gt;: Easy for newbies to pick up, but infinitely flexible for power users&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Data Focused&lt;/strong&gt;: Data-oriented architecture using the Entity Component System paradigm&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Modular&lt;/strong&gt;: Use only what you need. Replace what you don&amp;rsquo;t like&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fast&lt;/strong&gt;: App logic should run quickly, and when possible, in parallel&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Productive&lt;/strong&gt;: Changes should compile quickly &amp;hellip; waiting isn&amp;rsquo;t fun&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;about&#34;&gt;About
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;https://bevy.org&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Features&lt;/a&gt;:&lt;/strong&gt; A quick overview of Bevy&amp;rsquo;s features.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;https://bevy.org/news/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;News&lt;/a&gt;&lt;/strong&gt;: A development blog that covers our progress, plans and shiny new features.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;docs&#34;&gt;Docs
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;https://bevy.org/learn/quick-start/introduction&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Quick Start Guide&lt;/a&gt;:&lt;/strong&gt; Bevy&amp;rsquo;s official Quick Start Guide. The best place to start learning Bevy.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;https://docs.rs/bevy&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Bevy Rust API Docs&lt;/a&gt;:&lt;/strong&gt; Bevy&amp;rsquo;s Rust API docs, which are automatically generated from the doc comments in this repo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/bevyengine/bevy/tree/latest/examples&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Official Examples&lt;/a&gt;:&lt;/strong&gt; Bevy&amp;rsquo;s dedicated, runnable examples, which are great for digging into specific concepts.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;https://bevy.org/assets/#learning&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Community-Made Learning Resources&lt;/a&gt;&lt;/strong&gt;: More tutorials, documentation, and examples made by the Bevy community.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;community&#34;&gt;Community
&lt;/h2&gt;&lt;p&gt;Before contributing or participating in discussions with the community, you should familiarize yourself with our &lt;a class=&#34;link&#34; href=&#34;./CODE_OF_CONDUCT.md&#34; &gt;&lt;strong&gt;Code of Conduct&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;https://discord.gg/bevy&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Discord&lt;/a&gt;:&lt;/strong&gt; Bevy&amp;rsquo;s official discord server.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;https://reddit.com/r/bevy&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Reddit&lt;/a&gt;:&lt;/strong&gt; Bevy&amp;rsquo;s official subreddit.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/bevyengine/bevy/discussions&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GitHub Discussions&lt;/a&gt;:&lt;/strong&gt; The best place for questions about Bevy, answered right here!&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;https://bevy.org/assets/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Bevy Assets&lt;/a&gt;:&lt;/strong&gt; A collection of awesome Bevy projects, tools, plugins and learning materials.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;contributing&#34;&gt;Contributing
&lt;/h3&gt;&lt;p&gt;If you&amp;rsquo;d like to help build Bevy, check out the &lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;https://bevy.org/learn/contribute/introduction&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Contributor&amp;rsquo;s Guide&lt;/a&gt;&lt;/strong&gt;.
For simple problems, feel free to &lt;a class=&#34;link&#34; href=&#34;https://github.com/bevyengine/bevy/issues&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;open an issue&lt;/a&gt; or
&lt;a class=&#34;link&#34; href=&#34;https://github.com/bevyengine/bevy/pulls&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;PR&lt;/a&gt; and tackle it yourself!&lt;/p&gt;
&lt;p&gt;For more complex architecture decisions and experimental mad science, please open an &lt;a class=&#34;link&#34; href=&#34;https://github.com/bevyengine/rfcs&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;RFC&lt;/a&gt; (Request For Comments) so we can brainstorm together effectively!&lt;/p&gt;
&lt;h2 id=&#34;getting-started&#34;&gt;Getting Started
&lt;/h2&gt;&lt;p&gt;We recommend checking out the &lt;a class=&#34;link&#34; href=&#34;https://bevy.org/learn/quick-start/introduction&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Quick Start Guide&lt;/a&gt; for a brief introduction.&lt;/p&gt;
&lt;p&gt;Follow the &lt;a class=&#34;link&#34; href=&#34;https://bevy.org/learn/quick-start/getting-started/setup&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Setup guide&lt;/a&gt; to ensure your development environment is set up correctly.
Once set up, you can quickly try out the &lt;a class=&#34;link&#34; href=&#34;https://github.com/bevyengine/bevy/tree/latest/examples&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;examples&lt;/a&gt; by cloning this repo and running the following commands:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Switch to the correct version (latest release, default is main development branch)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git checkout latest
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Runs the &amp;#34;breakout&amp;#34; example&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cargo run --example breakout
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;To draw a window with standard functionality enabled, use:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-rust&#34; data-lang=&#34;rust&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;use&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bevy&lt;/span&gt;::&lt;span class=&#34;n&#34;&gt;prelude&lt;/span&gt;::&lt;span class=&#34;o&#34;&gt;*&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;fn&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;main&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;App&lt;/span&gt;::&lt;span class=&#34;n&#34;&gt;new&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;add_plugins&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;DefaultPlugins&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;run&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;fast-compiles&#34;&gt;Fast Compiles
&lt;/h3&gt;&lt;p&gt;Bevy can be built just fine using default configuration on stable Rust. However for really fast iterative compiles, you should enable the &amp;ldquo;fast compiles&amp;rdquo; setup by &lt;a class=&#34;link&#34; href=&#34;https://bevy.org/learn/quick-start/getting-started/setup&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;following the instructions here&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;bevy-cargo-features&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;docs/cargo_features.md&#34; &gt;Bevy Cargo Features&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;This &lt;a class=&#34;link&#34; href=&#34;docs/cargo_features.md&#34; &gt;list&lt;/a&gt; outlines the different cargo features supported by Bevy. These allow you to customize the Bevy feature set for your use-case.&lt;/p&gt;
&lt;h2 id=&#34;thanks&#34;&gt;Thanks
&lt;/h2&gt;&lt;p&gt;Bevy is the result of the hard work of many people. A huge thanks to all Bevy contributors, the many open source projects that have come before us, the &lt;a class=&#34;link&#34; href=&#34;https://arewegameyet.rs/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Rust gamedev ecosystem&lt;/a&gt;, and the many libraries we build on.&lt;/p&gt;
&lt;p&gt;A huge thanks to Bevy&amp;rsquo;s &lt;a class=&#34;link&#34; href=&#34;https://bevy.org&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;generous sponsors&lt;/a&gt;. Bevy will always be free and open source, but it isn&amp;rsquo;t free to make. Please consider &lt;a class=&#34;link&#34; href=&#34;https://bevy.org/donate/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;sponsoring our work&lt;/a&gt; if you like what we&amp;rsquo;re building.&lt;/p&gt;
&lt;!-- This next line need to stay exactly as is. It is required for BrowserStack sponsorship. --&gt;
&lt;p&gt;This project is tested with BrowserStack.&lt;/p&gt;
&lt;h2 id=&#34;license&#34;&gt;License
&lt;/h2&gt;&lt;p&gt;Bevy is free, open source and permissively licensed!
Except where noted (below and/or in individual files), all code in this repository is dual-licensed under either:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;MIT License (&lt;a class=&#34;link&#34; href=&#34;LICENSE-MIT&#34; &gt;LICENSE-MIT&lt;/a&gt; or &lt;a class=&#34;link&#34; href=&#34;http://opensource.org/licenses/MIT&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;http://opensource.org/licenses/MIT&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Apache License, Version 2.0 (&lt;a class=&#34;link&#34; href=&#34;LICENSE-APACHE&#34; &gt;LICENSE-APACHE&lt;/a&gt; or &lt;a class=&#34;link&#34; href=&#34;http://www.apache.org/licenses/LICENSE-2.0&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;http://www.apache.org/licenses/LICENSE-2.0&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;at your option.
This means you can select the license you prefer!
This dual-licensing approach is the de-facto standard in the Rust ecosystem and there are &lt;a class=&#34;link&#34; href=&#34;https://github.com/bevyengine/bevy/issues/2373&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;very good reasons&lt;/a&gt; to include both.&lt;/p&gt;
&lt;p&gt;Some of the engine&amp;rsquo;s code carries additional copyright notices and license terms due to their external origins.
These are generally BSD-like, but exact details vary by crate:
If the README of a crate contains a &amp;lsquo;License&amp;rsquo; header (or similar), the additional copyright notices and license terms applicable to that crate will be listed.
The above licensing requirement still applies to contributions to those crates, and sections of those crates will carry those license terms.
The &lt;a class=&#34;link&#34; href=&#34;https://doc.rust-lang.org/cargo/reference/manifest.html#the-license-and-license-file-fields&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;license&lt;/a&gt; field of each crate will also reflect this.&lt;/p&gt;
&lt;p&gt;The &lt;a class=&#34;link&#34; href=&#34;assets&#34; &gt;assets&lt;/a&gt; included in this repository (for our &lt;a class=&#34;link&#34; href=&#34;./examples/README.md&#34; &gt;examples&lt;/a&gt;) typically fall under different open licenses.
These will not be included in your game (unless copied in by you), and they are not distributed in the published bevy crates.
See &lt;a class=&#34;link&#34; href=&#34;CREDITS.md&#34; &gt;CREDITS.md&lt;/a&gt; for the details of the licenses of those files.&lt;/p&gt;
&lt;h3 id=&#34;your-contributions&#34;&gt;Your contributions
&lt;/h3&gt;&lt;p&gt;Unless you explicitly state otherwise,
any contribution intentionally submitted for inclusion in the work by you,
as defined in the Apache-2.0 license,
shall be dual licensed as above,
without any additional terms or conditions.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>linera-protocol</title>
        <link>https://producthunt.programnotes.cn/en/p/linera-protocol/</link>
        <pubDate>Sun, 21 Sep 2025 15:24:17 +0800</pubDate>
        
        <guid>https://producthunt.programnotes.cn/en/p/linera-protocol/</guid>
        <description>&lt;img src="https://images.unsplash.com/photo-1681394344964-04387f320e83?ixid=M3w0NjAwMjJ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3NTg0MzkzOTB8&amp;ixlib=rb-4.1.0" alt="Featured image of post linera-protocol" /&gt;&lt;h1 id=&#34;linera-iolinera-protocol&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/linera-io/linera-protocol&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;linera-io/linera-protocol&lt;/a&gt;
&lt;/h1&gt;&lt;h1 id=&#34;&#34;&gt;&lt;img src=&#34;https://github.com/linera-io/linera-protocol/assets/1105398/fe08c941-93af-4114-bb83-bcc0eaec95f9&#34; width=&#34;250&#34; height=&#34;85&#34; /&gt;
&lt;/h1&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;LICENSE&#34; &gt;&lt;img src=&#34;https://img.shields.io/github/license/linera-io/linera-protocol&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;License&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://github.com/linera-io/linera-protocol/actions/workflows/docker-compose.yml&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://github.com/linera-io/linera-protocol/actions/workflows/docker-compose.yml/badge.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Build Status for Docker&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://github.com/linera-io/linera-protocol/actions/workflows/rust.yml&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://github.com/linera-io/linera-protocol/actions/workflows/rust.yml/badge.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Build Status for Rust&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://github.com/linera-io/linera-protocol/actions/workflows/documentation.yml&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://github.com/linera-io/linera-protocol/actions/workflows/documentation.yml/badge.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Build Status for Documentation&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://x.com/linera_io&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/twitter/follow/linera_io&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Twitter&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://discord.com/invite/linera&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/discord/984941796272521226&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Discord&#34;
	
	
&gt;&lt;/a&gt;&lt;/p&gt;
&lt;!-- [![Build Status for Kubernetes](https://github.com/linera-io/linera-protocol/actions/workflows/kubernetes.yml/badge.svg)](https://github.com/linera-io/linera-protocol/actions/workflows/kubernetes.yml) --&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://linera.io&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Linera&lt;/a&gt; is a decentralized blockchain infrastructure designed for highly scalable,
secure, low-latency Web3 applications.&lt;/p&gt;
&lt;h2 id=&#34;documentation&#34;&gt;Documentation
&lt;/h2&gt;&lt;p&gt;Visit our &lt;a class=&#34;link&#34; href=&#34;https://linera.dev&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;developer page&lt;/a&gt; and read our
&lt;a class=&#34;link&#34; href=&#34;https://linera.io/whitepaper&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;whitepaper&lt;/a&gt; to learn more about the Linera protocol.&lt;/p&gt;
&lt;h2 id=&#34;repository-structure&#34;&gt;Repository Structure
&lt;/h2&gt;&lt;p&gt;The main crates and directories of this repository can be summarized as follows: (listed
from low to high levels in the dependency graph)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://linera-io.github.io/linera-protocol/linera_base/index.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;linera-base&lt;/code&gt;&lt;/a&gt; Base
definitions, including cryptography.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://linera-io.github.io/linera-protocol/linera_version/index.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;linera-version&lt;/code&gt;&lt;/a&gt;
A library to manage version info in binaries and services.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://linera-io.github.io/linera-protocol/linera_views/index.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;linera-views&lt;/code&gt;&lt;/a&gt; A
library mapping complex data structures onto a key-value store. The corresponding
procedural macros are implemented in &lt;code&gt;linera-views-derive&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://linera-io.github.io/linera-protocol/linera_execution/index.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;linera-execution&lt;/code&gt;&lt;/a&gt;
Persistent data and the corresponding logic for runtime and execution of Linera
applications.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://linera-io.github.io/linera-protocol/linera_chain/index.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;linera-chain&lt;/code&gt;&lt;/a&gt;
Persistent data and the corresponding logic for chains of blocks, certificates, and
cross-chain messaging.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://linera-io.github.io/linera-protocol/linera_storage/index.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;linera-storage&lt;/code&gt;&lt;/a&gt;
Defines the storage abstractions for the protocol on top of &lt;code&gt;linera-chain&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://linera-io.github.io/linera-protocol/linera_core/index.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;linera-core&lt;/code&gt;&lt;/a&gt; The
core Linera protocol, including client and server logic, node synchronization, etc.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://linera-io.github.io/linera-protocol/linera_rpc/index.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;linera-rpc&lt;/code&gt;&lt;/a&gt;
Defines the data-type for RPC messages (currently all client ↔ proxy ↔
chain ↔ chain interactions), and track the corresponding data schemas.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://linera-io.github.io/linera-protocol/linera_client/index.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;linera-client&lt;/code&gt;&lt;/a&gt;
Library for writing Linera clients.  Used for the command-line
client and the node service in &lt;code&gt;linera-service&lt;/code&gt;, as well as the Web
client in &lt;a class=&#34;link&#34; href=&#34;https://github.com/linera-io/linera-web/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;linera-web&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://linera-io.github.io/linera-protocol/linera_service/index.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;linera-service&lt;/code&gt;&lt;/a&gt;
Executable for clients (aka CLI wallets), proxy (aka validator frontend) and servers.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://linera-io.github.io/linera-protocol/linera_sdk/index.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;linera-sdk&lt;/code&gt;&lt;/a&gt; The
library to develop Linera applications written in Rust for the Wasm virtual machine. The
corresponding procedural macros are implemented in &lt;code&gt;linera-sdk-derive&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;./examples&#34; &gt;&lt;code&gt;examples&lt;/code&gt;&lt;/a&gt; Examples of Linera applications written in Rust.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;prerequisites&#34;&gt;Prerequisites
&lt;/h2&gt;&lt;p&gt;See &lt;a class=&#34;link&#34; href=&#34;./INSTALL.md&#34; &gt;&lt;code&gt;INSTALL.md&lt;/code&gt;&lt;/a&gt; for software requirements to develop in this repo.&lt;/p&gt;
&lt;h2 id=&#34;quickstart-with-the-linera-cli-tool&#34;&gt;Quickstart with the Linera CLI tool
&lt;/h2&gt;&lt;p&gt;The following commands set up a local test network and run some transfers between the
microchains owned by a single wallet.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;37
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;38
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;39
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;40
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;41
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;42
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;43
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;44
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;45
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;46
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;47
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;48
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;49
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;50
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;51
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;52
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;53
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;54
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;55
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;56
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;57
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Make sure to compile the Linera binaries and add them in the $PATH.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# cargo build -p linera-storage-service -p linera-service --bins&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;export&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;PATH&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$PWD&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;/target/debug:&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$PATH&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Import the optional helper function `linera_spawn`.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;source&lt;/span&gt; /dev/stdin &lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;linera net helper 2&amp;gt;/dev/null&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Run a local test network with the default parameters and a number of microchains&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# owned by the default wallet. This also defines `LINERA_TMP_DIR`.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;linera_spawn &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;linera net up --with-faucet --faucet-port &lt;span class=&#34;m&#34;&gt;8080&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Remember the URL of the faucet.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;FAUCET_URL&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;http://localhost:8080
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# If you&amp;#39;re using a testnet, start here and run this instead:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#   LINERA_TMP_DIR=$(mktemp -d)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#   FAUCET_URL=https://faucet.testnet-XXX.linera.net  # for some value XXX&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Set the path of the future wallet.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;export&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;LINERA_WALLET&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$LINERA_TMP_DIR&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;/wallet.json&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;export&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;LINERA_KEYSTORE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$LINERA_TMP_DIR&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;/keystore.json&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;export&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;LINERA_STORAGE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;rocksdb:&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$LINERA_TMP_DIR&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;/client.db&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Initialize a new user wallet.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;linera wallet init --faucet &lt;span class=&#34;nv&#34;&gt;$FAUCET_URL&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Request chains.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;INFO1&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=(&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;linera wallet request-chain --faucet &lt;span class=&#34;nv&#34;&gt;$FAUCET_URL&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;INFO2&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=(&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;linera wallet request-chain --faucet &lt;span class=&#34;nv&#34;&gt;$FAUCET_URL&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;CHAIN1&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;INFO1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[0]&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;ACCOUNT1&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;INFO1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[1]&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;CHAIN2&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;INFO2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[0]&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;ACCOUNT2&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;INFO2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[1]&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Show the different chains tracked by the wallet.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;linera wallet show
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Query the chain balance of some of the chains.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;linera query-balance &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$CHAIN1&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;linera query-balance &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$CHAIN2&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Transfer 10 units then 5 back.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;linera transfer &lt;span class=&#34;m&#34;&gt;10&lt;/span&gt; --from &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$CHAIN1&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; --to &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$CHAIN2&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;linera transfer &lt;span class=&#34;m&#34;&gt;5&lt;/span&gt; --from &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$CHAIN2&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; --to &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$CHAIN1&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Query balances again.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;linera query-balance &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$CHAIN1&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;linera query-balance &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$CHAIN2&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Now let&amp;#39;s fund the user balances.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;linera transfer &lt;span class=&#34;m&#34;&gt;5&lt;/span&gt; --from &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$CHAIN1&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; --to &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$CHAIN1&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$ACCOUNT1&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;linera transfer &lt;span class=&#34;m&#34;&gt;2&lt;/span&gt; --from &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$CHAIN1&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$ACCOUNT1&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; --to &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$CHAIN2&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$ACCOUNT2&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Query user balances again.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;linera query-balance &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$CHAIN1&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$ACCOUNT1&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;linera query-balance &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$CHAIN2&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$ACCOUNT2&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;More complex examples may be found in our &lt;a class=&#34;link&#34; href=&#34;https://linera.dev&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;developer manual&lt;/a&gt; as well
as the &lt;a class=&#34;link&#34; href=&#34;./examples&#34; &gt;example applications&lt;/a&gt; in this repository.&lt;/p&gt;
&lt;h2 id=&#34;contributing&#34;&gt;Contributing
&lt;/h2&gt;&lt;p&gt;We welcome contributions from the community! If you&amp;rsquo;d like to contribute to the Linera protocol:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Fork the repository&lt;/li&gt;
&lt;li&gt;Create a feature branch (&lt;code&gt;git checkout -b feature/amazing-feature&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Commit your changes (&lt;code&gt;git commit -m &#39;Add some amazing feature&#39;&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Push to the branch (&lt;code&gt;git push origin feature/amazing-feature&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Open a Pull Request&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;For detailed guidelines, see our &lt;a class=&#34;link&#34; href=&#34;./CONTRIBUTING.md&#34; &gt;contribution guide&lt;/a&gt;.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>coreutils</title>
        <link>https://producthunt.programnotes.cn/en/p/coreutils/</link>
        <pubDate>Tue, 09 Sep 2025 15:29:32 +0800</pubDate>
        
        <guid>https://producthunt.programnotes.cn/en/p/coreutils/</guid>
        <description>&lt;img src="https://images.unsplash.com/photo-1688890239467-c43da335fe7e?ixid=M3w0NjAwMjJ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3NTc0MDI4NTR8&amp;ixlib=rb-4.1.0" alt="Featured image of post coreutils" /&gt;&lt;h1 id=&#34;uutilscoreutils&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/uutils/coreutils&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;uutils/coreutils&lt;/a&gt;
&lt;/h1&gt;&lt;!-- markdownlint-disable MD033 MD041 MD002 --&gt;
&lt;!-- markdownlint-disable commands-show-output no-duplicate-heading --&gt;
&lt;!-- spell-checker:ignore markdownlint ; (options) DESTDIR UTILNAME manpages reimplementation oranda --&gt;
&lt;div class=&#34;oranda-hide&#34;&gt;
&lt;div align=&#34;center&#34;&gt;
&lt;p&gt;&lt;img src=&#34;https://producthunt.programnotes.cn/docs/src/logo.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;uutils logo&#34;
	
	
&gt;&lt;/p&gt;
&lt;h1 id=&#34;uutils-coreutils&#34;&gt;uutils coreutils
&lt;/h1&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://crates.io/crates/coreutils&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/crates/v/coreutils.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Crates.io&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://discord.gg/wQVJbvJ&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/badge/discord-join-7289DA.svg?logo=discord&amp;amp;longCache=true&amp;amp;style=flat&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Discord&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://github.com/uutils/coreutils/blob/main/LICENSE&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;http://img.shields.io/badge/license-MIT-blue.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;License&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://deps.rs/repo/github/uutils/coreutils&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://deps.rs/repo/github/uutils/coreutils/status.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;dependency status&#34;
	
	
&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://codecov.io/gh/uutils/coreutils&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://codecov.io/gh/uutils/coreutils/branch/master/graph/badge.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;CodeCov&#34;
	
	
&gt;&lt;/a&gt;
&lt;img src=&#34;https://img.shields.io/badge/MSRV-1.85.0-brightgreen&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;MSRV&#34;
	
	
&gt;
&lt;a class=&#34;link&#34; href=&#34;https://hosted.weblate.org/projects/rust-coreutils/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://hosted.weblate.org/widget/rust-coreutils/svg-badge.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Weblate&#34;
	
	
&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;/div&gt;
&lt;p&gt;uutils coreutils is a cross-platform reimplementation of the GNU coreutils in
&lt;a class=&#34;link&#34; href=&#34;http://www.rust-lang.org&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Rust&lt;/a&gt;. While all programs have been implemented, some
options might be missing or different behavior might be experienced.&lt;/p&gt;
&lt;div class=&#34;oranda-hide&#34;&gt;
&lt;p&gt;To install it:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cargo install coreutils
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;~/.cargo/bin/coreutils
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;!-- markdownlint-disable-next-line MD026 --&gt;
&lt;h2 id=&#34;goals&#34;&gt;Goals
&lt;/h2&gt;&lt;p&gt;uutils coreutils aims to be a drop-in replacement for the GNU utils. Differences with GNU
are treated as bugs.&lt;/p&gt;
&lt;p&gt;Our key objectives include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Matching GNU&amp;rsquo;s output (stdout and error code) exactly&lt;/li&gt;
&lt;li&gt;Better error messages&lt;/li&gt;
&lt;li&gt;Providing comprehensive internationalization support (UTF-8)&lt;/li&gt;
&lt;li&gt;Improved performances&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;docs/src/extensions.md&#34; &gt;Extensions&lt;/a&gt; when relevant (example: &amp;ndash;progress)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;uutils aims to work on as many platforms as possible, to be able to use the same
utils on Linux, macOS, Windows and other platforms. This ensures, for example,
that scripts can be easily transferred between platforms.&lt;/p&gt;
&lt;div class=&#34;oranda-hide&#34;&gt;
&lt;h2 id=&#34;documentation&#34;&gt;Documentation
&lt;/h2&gt;&lt;p&gt;uutils has both user and developer documentation available:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://uutils.github.io/coreutils/docs/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;User Manual&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://docs.rs/crate/coreutils/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Developer Documentation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Both can also be generated locally, the instructions for that can be found in
the &lt;a class=&#34;link&#34; href=&#34;https://github.com/uutils/uutils.github.io&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;coreutils docs&lt;/a&gt; repository.&lt;/p&gt;
&lt;p&gt;Use &lt;a class=&#34;link&#34; href=&#34;https://hosted.weblate.org/projects/rust-coreutils/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;weblate/rust-coreutils&lt;/a&gt; to translate the Rust coreutils into your language.&lt;/p&gt;
&lt;!-- ANCHOR: build (this mark is needed for mdbook) --&gt;
&lt;h2 id=&#34;requirements&#34;&gt;Requirements
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Rust (&lt;code&gt;cargo&lt;/code&gt;, &lt;code&gt;rustc&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;GNU Make (optional)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;rust-version&#34;&gt;Rust Version
&lt;/h3&gt;&lt;p&gt;uutils follows Rust&amp;rsquo;s release channels and is tested against stable, beta and
nightly. The current Minimum Supported Rust Version (MSRV) is &lt;code&gt;1.85.0&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&#34;building&#34;&gt;Building
&lt;/h2&gt;&lt;p&gt;There are currently two methods to build the uutils binaries: either Cargo or
GNU Make.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Building the full package, including all documentation, requires both Cargo
and GNU Make on a Unix platform.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;For either method, we first need to fetch the repository:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone https://github.com/uutils/coreutils
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; coreutils
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;cargo&#34;&gt;Cargo
&lt;/h3&gt;&lt;p&gt;Building uutils using Cargo is easy because the process is the same as for every
other Rust program:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cargo build --release
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;This command builds the most portable common core set of uutils into a multicall
(BusyBox-type) binary, named &amp;lsquo;coreutils&amp;rsquo;, on most Rust-supported platforms.&lt;/p&gt;
&lt;p&gt;Additional platform-specific uutils are often available. Building these expanded
sets of uutils for a platform (on that platform) is as simple as specifying it
as a feature:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cargo build --release --features macos
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# or ...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cargo build --release --features windows
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# or ...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cargo build --release --features unix
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;If you don&amp;rsquo;t want to build every utility available on your platform into the
final binary, you can also specify which ones you want to build manually. For
example:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cargo build --features &lt;span class=&#34;s2&#34;&gt;&amp;#34;base32 cat echo rm&amp;#34;&lt;/span&gt; --no-default-features
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;If you don&amp;rsquo;t want to build the multicall binary and would prefer to build the
utilities as individual binaries, that is also possible. Each utility is
contained in its own package within the main repository, named &amp;ldquo;uu_UTILNAME&amp;rdquo;. To
build individual utilities, use cargo to build just the specific packages (using
the &lt;code&gt;--package&lt;/code&gt; [aka &lt;code&gt;-p&lt;/code&gt;] option). For example:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cargo build -p uu_base32 -p uu_cat -p uu_echo -p uu_rm
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;gnu-make&#34;&gt;GNU Make
&lt;/h3&gt;&lt;p&gt;Building using &lt;code&gt;make&lt;/code&gt; is a simple process as well.&lt;/p&gt;
&lt;p&gt;To simply build all available utilities:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;In release mode:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make &lt;span class=&#34;nv&#34;&gt;PROFILE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;release
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;To build all but a few of the available utilities:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make &lt;span class=&#34;nv&#34;&gt;SKIP_UTILS&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;UTILITY_1 UTILITY_2&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;To build only a few of the available utilities:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make &lt;span class=&#34;nv&#34;&gt;UTILS&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;UTILITY_1 UTILITY_2&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;installation&#34;&gt;Installation
&lt;/h2&gt;&lt;h3 id=&#34;install-with-cargo&#34;&gt;Install with Cargo
&lt;/h3&gt;&lt;p&gt;Likewise, installing can simply be done using:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cargo install --path . --locked
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;This command will install uutils into Cargo&amp;rsquo;s &lt;em&gt;bin&lt;/em&gt; folder (&lt;em&gt;e.g.&lt;/em&gt;
&lt;code&gt;$HOME/.cargo/bin&lt;/code&gt;).&lt;/p&gt;
&lt;p&gt;This does not install files necessary for shell completion or manpages. For
manpages or shell completion to work, use &lt;code&gt;GNU Make&lt;/code&gt; or see
&lt;code&gt;Manually install shell completions&lt;/code&gt;/&lt;code&gt;Manually install manpages&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&#34;install-with-gnu-make&#34;&gt;Install with GNU Make
&lt;/h3&gt;&lt;p&gt;To install all available utilities:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make install
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;To install using &lt;code&gt;sudo&lt;/code&gt; switch &lt;code&gt;-E&lt;/code&gt; must be used:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo -E make install
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;To install all but a few of the available utilities:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make &lt;span class=&#34;nv&#34;&gt;SKIP_UTILS&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;UTILITY_1 UTILITY_2&amp;#39;&lt;/span&gt; install
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;To install only a few of the available utilities:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make &lt;span class=&#34;nv&#34;&gt;UTILS&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;UTILITY_1 UTILITY_2&amp;#39;&lt;/span&gt; install
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;To install every program with a prefix (e.g. uu-echo uu-cat):&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make &lt;span class=&#34;nv&#34;&gt;PROG_PREFIX&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;PREFIX_GOES_HERE install
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;To install the multicall binary:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make &lt;span class=&#34;nv&#34;&gt;MULTICALL&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;y install
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Set install parent directory (default value is /usr/local):&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# DESTDIR is also supported&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make &lt;span class=&#34;nv&#34;&gt;PREFIX&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;/my/path install
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Installing with &lt;code&gt;make&lt;/code&gt; installs shell completions for all installed utilities
for &lt;code&gt;bash&lt;/code&gt;, &lt;code&gt;fish&lt;/code&gt; and &lt;code&gt;zsh&lt;/code&gt;. Completions for &lt;code&gt;elvish&lt;/code&gt; and &lt;code&gt;powershell&lt;/code&gt; can also
be generated; See &lt;code&gt;Manually install shell completions&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;To skip installation of completions and manpages:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make &lt;span class=&#34;nv&#34;&gt;COMPLETIONS&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;n &lt;span class=&#34;nv&#34;&gt;MANPAGES&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;n install
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;manually-install-shell-completions&#34;&gt;Manually install shell completions
&lt;/h3&gt;&lt;p&gt;The &lt;code&gt;coreutils&lt;/code&gt; binary can generate completions for the &lt;code&gt;bash&lt;/code&gt;, &lt;code&gt;elvish&lt;/code&gt;,
&lt;code&gt;fish&lt;/code&gt;, &lt;code&gt;powershell&lt;/code&gt; and &lt;code&gt;zsh&lt;/code&gt; shells. It prints the result to stdout.&lt;/p&gt;
&lt;p&gt;The syntax is:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cargo run completion &amp;lt;utility&amp;gt; &amp;lt;shell&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;So, to install completions for &lt;code&gt;ls&lt;/code&gt; on &lt;code&gt;bash&lt;/code&gt; to
&lt;code&gt;/usr/local/share/bash-completion/completions/ls&lt;/code&gt;, run:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cargo run completion ls bash &amp;gt; /usr/local/share/bash-completion/completions/ls
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;manually-install-manpages&#34;&gt;Manually install manpages
&lt;/h3&gt;&lt;p&gt;To generate manpages, the syntax is:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cargo run manpage &amp;lt;utility&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;So, to install the manpage for &lt;code&gt;ls&lt;/code&gt; to &lt;code&gt;/usr/local/share/man/man1/ls.1&lt;/code&gt; run:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cargo run manpage ls &amp;gt; /usr/local/share/man/man1/ls.1
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;un-installation&#34;&gt;Un-installation
&lt;/h2&gt;&lt;p&gt;Un-installation differs depending on how you have installed uutils. If you used
Cargo to install, use Cargo to uninstall. If you used GNU Make to install, use
Make to uninstall.&lt;/p&gt;
&lt;h3 id=&#34;uninstall-with-cargo&#34;&gt;Uninstall with Cargo
&lt;/h3&gt;&lt;p&gt;To uninstall uutils:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cargo uninstall coreutils
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;uninstall-with-gnu-make&#34;&gt;Uninstall with GNU Make
&lt;/h3&gt;&lt;p&gt;To uninstall all utilities:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make uninstall
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;To uninstall every program with a set prefix:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make &lt;span class=&#34;nv&#34;&gt;PROG_PREFIX&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;PREFIX_GOES_HERE uninstall
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;To uninstall the multicall binary:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make &lt;span class=&#34;nv&#34;&gt;MULTICALL&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;y uninstall
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;To uninstall from a custom parent directory:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# DESTDIR is also supported&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make &lt;span class=&#34;nv&#34;&gt;PREFIX&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;/my/path uninstall
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;!-- ANCHOR_END: build (this mark is needed for mdbook) --&gt;
&lt;h2 id=&#34;gnu-test-suite-compatibility&#34;&gt;GNU test suite compatibility
&lt;/h2&gt;&lt;p&gt;Below is the evolution of how many GNU tests uutils passes. A more detailed
breakdown of the GNU test results of the main branch can be found
&lt;a class=&#34;link&#34; href=&#34;https://uutils.github.io/coreutils/docs/test_coverage.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;in the user manual&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;See &lt;a class=&#34;link&#34; href=&#34;https://github.com/orgs/uutils/projects/1&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/orgs/uutils/projects/1&lt;/a&gt; for the main meta bugs
(many are missing).&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://github.com/uutils/coreutils-tracking/blob/main/gnu-results.svg?raw=true&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Evolution over time&#34;
	
	
&gt;&lt;/p&gt;
&lt;/div&gt; &lt;!-- close oranda-hide div --&gt;
&lt;h2 id=&#34;contributing&#34;&gt;Contributing
&lt;/h2&gt;&lt;p&gt;To contribute to uutils, please see &lt;a class=&#34;link&#34; href=&#34;CONTRIBUTING.md&#34; &gt;CONTRIBUTING&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;license&#34;&gt;License
&lt;/h2&gt;&lt;p&gt;uutils is licensed under the MIT License - see the &lt;code&gt;LICENSE&lt;/code&gt; file for details&lt;/p&gt;
&lt;p&gt;GNU Coreutils is licensed under the GPL 3.0 or later.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>comprehensive-rust</title>
        <link>https://producthunt.programnotes.cn/en/p/comprehensive-rust/</link>
        <pubDate>Wed, 03 Sep 2025 15:27:52 +0800</pubDate>
        
        <guid>https://producthunt.programnotes.cn/en/p/comprehensive-rust/</guid>
        <description>&lt;img src="https://images.unsplash.com/photo-1542707088-7fa1c72006d8?ixid=M3w0NjAwMjJ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3NTY4ODQzNjh8&amp;ixlib=rb-4.1.0" alt="Featured image of post comprehensive-rust" /&gt;&lt;h1 id=&#34;googlecomprehensive-rust&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/google/comprehensive-rust&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;google/comprehensive-rust&lt;/a&gt;
&lt;/h1&gt;&lt;h1 id=&#34;comprehensive-rust-&#34;&gt;Comprehensive Rust 🦀
&lt;/h1&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/google/comprehensive-rust/actions/workflows/build.yml?query=branch%3Amain&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/github/actions/workflow/status/google/comprehensive-rust/build.yml?style=flat-square&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Build workflow&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://github.com/google/comprehensive-rust/graphs/contributors&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/github/contributors/google/comprehensive-rust?style=flat-square&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;GitHub contributors&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://github.com/google/comprehensive-rust/stargazers&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/github/stars/google/comprehensive-rust?style=flat-square&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;GitHub stars&#34;
	
	
&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This repository has the source code for Comprehensive Rust 🦀, a multi-day Rust
course developed by the Android team. The course covers all aspects of Rust,
from basic syntax to generics and error handling. It also includes deep dives on
&lt;a class=&#34;link&#34; href=&#34;https://google.github.io/comprehensive-rust/android.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Android&lt;/a&gt;, &lt;a class=&#34;link&#34; href=&#34;https://google.github.io/comprehensive-rust/chromium.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Chromium&lt;/a&gt;, &lt;a class=&#34;link&#34; href=&#34;https://google.github.io/comprehensive-rust/bare-metal.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;bare-metal&lt;/a&gt;, and &lt;a class=&#34;link&#34; href=&#34;https://google.github.io/comprehensive-rust/concurrency.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;concurrency&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Read the course at &lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;https://google.github.io/comprehensive-rust/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://google.github.io/comprehensive-rust/&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 id=&#34;course-format-and-target-audience&#34;&gt;Course Format and Target Audience
&lt;/h2&gt;&lt;p&gt;The course is used internally at Google when teaching Rust to experienced
software engineers. They typically have a background in C++ or Java.&lt;/p&gt;
&lt;p&gt;The course is taught in a classroom setting and we hope it will be useful for
others who want to teach Rust to their team. The course will be less useful for
self-study since you miss out on the discussions happening in the classroom. You
don&amp;rsquo;t see the questions and answers and you don&amp;rsquo;t see the compiler errors we
trigger when going through the code samples. We hope to improve on this via
&lt;a class=&#34;link&#34; href=&#34;https://github.com/google/comprehensive-rust/issues/53&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;speaker notes&lt;/a&gt; and by
&lt;a class=&#34;link&#34; href=&#34;https://github.com/google/comprehensive-rust/issues/52&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;publishing videos&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;press&#34;&gt;Press
&lt;/h2&gt;&lt;p&gt;Articles and blog posts from around the web which cover Comprehensive Rust:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;2023-09-08:
&lt;em&gt;&lt;a class=&#34;link&#34; href=&#34;https://mo8it.com/blog/teaching-rust/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Teaching Rust in 5 days&lt;/a&gt;&lt;/em&gt;.
Comprehensive Rust was used as a base for a 5-day university class on Rust.&lt;/li&gt;
&lt;li&gt;2023-09-21:
&lt;em&gt;&lt;a class=&#34;link&#34; href=&#34;https://security.googleblog.com/2023/09/scaling-rust-adoption-through-training.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Scaling Rust Adoption Through Training&lt;/a&gt;&lt;/em&gt;.
We published a blog post with details on the development of the course.&lt;/li&gt;
&lt;li&gt;2023-10-02:
&lt;em&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.darkreading.com/application-security/seeking-rust-developers-in-house-training&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;In Search of Rust Developers, Companies Turn to In-House Training&lt;/a&gt;&lt;/em&gt;.
About how Microsoft, Google, and others are training people in Rust.&lt;/li&gt;
&lt;li&gt;2024-10-18:
&lt;em&gt;&lt;a class=&#34;link&#34; href=&#34;https://youtu.be/7h5KyMqt2-Q?si=4M99HdWWxMaqN8Zr&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Rust Training at Scale | Rust Global @ RustConf 2024&lt;/a&gt;&lt;/em&gt;.
What Google learnt from teaching Comprehensive Rust for more than two years.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;setup&#34;&gt;Setup
&lt;/h2&gt;&lt;p&gt;The course is built using a few tools:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/rust-lang/mdBook&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;mdbook&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/boozook/mdbook-svgbob&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;mdbook-svgbob&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/google/mdbook-i18n-helpers&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;mdbook-i18n-helpers and i18n-report&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;mdbook-exerciser/&#34; &gt;mdbook-exerciser&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;mdbook-course/&#34; &gt;mdbook-course&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/marxin/mdbook-linkcheck2&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;mdbook-linkcheck2&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;First install Rust by following the instructions on &lt;a class=&#34;link&#34; href=&#34;https://rustup.rs/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://rustup.rs/&lt;/a&gt;. Then
clone this repository:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone https://github.com/google/comprehensive-rust/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; comprehensive-rust
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Then install these tools with:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cargo xtask install-tools
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt; We use &lt;code&gt;xtask&lt;/code&gt; for task automation within the project (e.g.
installing required tools). Xtask is not a package that you should install.
Visit &lt;a class=&#34;link&#34; href=&#34;https://github.com/matklad/cargo-xtask&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/matklad/cargo-xtask&lt;/a&gt; for more information.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;commands&#34;&gt;Commands
&lt;/h2&gt;&lt;p&gt;Here are some of the commonly used commands you can run in the project. Run
&lt;code&gt;cargo xtask&lt;/code&gt; to view all available commands.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Command&lt;/th&gt;
          &lt;th&gt;Description&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;cargo xtask install-tools&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Install all the tools the project depends on.&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;cargo xtask serve&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Start a web server with the course. You&amp;rsquo;ll find the content on http://localhost:3000. To serve any of the translated versions of the course, add the language flag (&amp;ndash;language or -l) followed by xx, where xx is the ISO 639 language code (e.g. cargo xtask serve -l da for the Danish translation).&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;cargo xtask rust-tests&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Test the included Rust snippets.&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;cargo xtask web-tests&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Run the web driver tests in the tests directory.&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;cargo xtask build&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Create a static version of the course in the &lt;code&gt;book/&lt;/code&gt; directory. Note that you have to separately build and zip exercises and add them to book/html. To build any of the translated versions of the course, add the language flag (&amp;ndash;language or -l) followed by xx, where xx is the ISO 639 language code (e.g. cargo xtask build -l da for the Danish translation). &lt;a class=&#34;link&#34; href=&#34;TRANSLATIONS.md&#34; &gt;TRANSLATIONS.md&lt;/a&gt; contains further instructions.&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt; On Windows, you need to enable symlinks
(&lt;code&gt;git config --global core.symlinks true&lt;/code&gt;) and Developer Mode.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;contributing&#34;&gt;Contributing
&lt;/h2&gt;&lt;p&gt;We would like to receive your contributions. Please see
&lt;a class=&#34;link&#34; href=&#34;CONTRIBUTING.md&#34; &gt;CONTRIBUTING.md&lt;/a&gt; for details.&lt;/p&gt;
&lt;h2 id=&#34;contact&#34;&gt;Contact
&lt;/h2&gt;&lt;p&gt;For questions or comments, please contact
&lt;a class=&#34;link&#34; href=&#34;mailto:mgeisler@google.com&#34; &gt;Martin Geisler&lt;/a&gt; or start a
&lt;a class=&#34;link&#34; href=&#34;https://github.com/google/comprehensive-rust/discussions&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;discussion on GitHub&lt;/a&gt;.
We would love to hear from you.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Pake</title>
        <link>https://producthunt.programnotes.cn/en/p/pake/</link>
        <pubDate>Wed, 27 Aug 2025 15:28:19 +0800</pubDate>
        
        <guid>https://producthunt.programnotes.cn/en/p/pake/</guid>
        <description>&lt;img src="https://images.unsplash.com/photo-1596784269480-039b2a893af0?ixid=M3w0NjAwMjJ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3NTYyNzk2MTd8&amp;ixlib=rb-4.1.0" alt="Featured image of post Pake" /&gt;&lt;h1 id=&#34;tw93pake&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/tw93/Pake&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;tw93/Pake&lt;/a&gt;
&lt;/h1&gt;&lt;h4 align=&#34;right&#34;&gt;&lt;strong&gt;English&lt;/strong&gt; | &lt;a href=&#34;https://github.com/tw93/Pake/blob/main/README_CN.md&#34;&gt;简体中文&lt;/a&gt; | &lt;a href=&#34;https://github.com/tw93/Pake/blob/main/README_JP.md&#34;&gt;日本語&lt;/a&gt;&lt;/h4&gt;
&lt;p align=&#34;center&#34;&gt;
    &lt;img src=https://gw.alipayobjects.com/zos/k/fa/logo-modified.png width=138/&gt;
&lt;/p&gt;
&lt;h1 align=&#34;center&#34;&gt;Pake&lt;/h1&gt;
&lt;p align=&#34;center&#34;&gt;&lt;strong&gt;Turn any webpage into a desktop app with Rust &lt;em&gt;with ease&lt;/em&gt;.&lt;/strong&gt;&lt;/p&gt;
&lt;div align=&#34;center&#34;&gt;
    &lt;a href=&#34;https://twitter.com/HiTw93&#34; target=&#34;_blank&#34;&gt;
    &lt;img alt=&#34;twitter&#34; src=&#34;https://img.shields.io/badge/follow-Tw93-red?style=flat-square&amp;logo=Twitter&#34;&gt;&lt;/a&gt;
    &lt;a href=&#34;https://t.me/+GclQS9ZnxyI2ODQ1&#34; target=&#34;_blank&#34;&gt;
    &lt;img alt=&#34;telegram&#34; src=&#34;https://img.shields.io/badge/chat-telegram-blueviolet?style=flat-square&amp;logo=Telegram&#34;&gt;&lt;/a&gt;
    &lt;a href=&#34;https://github.com/tw93/Pake/releases&#34; target=&#34;_blank&#34;&gt;
    &lt;img alt=&#34;GitHub downloads&#34; src=&#34;https://img.shields.io/github/downloads/tw93/Pake/total.svg?style=flat-square&#34;&gt;&lt;/a&gt;
    &lt;a href=&#34;https://github.com/tw93/Pake/commits&#34; target=&#34;_blank&#34;&gt;
    &lt;img alt=&#34;GitHub commit&#34; src=&#34;https://img.shields.io/github/commit-activity/m/tw93/Pake?style=flat-square&#34;&gt;&lt;/a&gt;
    &lt;a href=&#34;https://github.com/tw93/Pake/issues?q=is%3Aissue+is%3Aclosed&#34; target=&#34;_blank&#34;&gt;
    &lt;img alt=&#34;GitHub closed issues&#34; src=&#34;https://img.shields.io/github/issues-closed/tw93/Pake.svg?style=flat-square&#34;&gt;&lt;/a&gt;
    &lt;a href=&#34;https://colab.research.google.com/drive/1bX345znvDZ30848xjRtpgtU8eypWwXrp?usp=sharing&#34; target=&#34;_blank&#34;&gt;
    &lt;img alt=&#34;Open in Colab&#34; src=&#34;https://colab.research.google.com/assets/colab-badge.svg&#34;&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;div align=&#34;left&#34;&gt;Pake supports Mac, Windows, and Linux. Check out README for &lt;a href=&#34;#popular-packages&#34;&gt;Popular Packages&lt;/a&gt;, &lt;a href=&#34;#command-line-packaging&#34;&gt;Command-Line Packaging&lt;/a&gt;, and &lt;a href=&#34;#development&#34;&gt;Customized Development&lt;/a&gt; information. Feel free to share your suggestions in &lt;a href=https://github.com/tw93/Pake/discussions&gt;Discussions&lt;/a&gt;.&lt;/div&gt;
&lt;h2 id=&#34;features&#34;&gt;Features
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;🎐 Nearly 20 times smaller than an Electron package (around 5M!)&lt;/li&gt;
&lt;li&gt;🚀 With Rust Tauri, Pake is much more lightweight and faster than JS-based frameworks.&lt;/li&gt;
&lt;li&gt;📦 Battery-included package — shortcut pass-through, immersive windows, and minimalist customization.&lt;/li&gt;
&lt;li&gt;👻 Pake is just a simple tool — replace the old bundle approach with Tauri (though PWA is good enough).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;popular-packages&#34;&gt;Popular Packages
&lt;/h2&gt;&lt;table&gt;
    &lt;tr&gt;
        &lt;td&gt;WeRead
            &lt;a href=&#34;https://github.com/tw93/Pake/releases/latest/download/WeRead.dmg&#34;&gt;Mac&lt;/a&gt;
            &lt;a href=&#34;https://github.com/tw93/Pake/releases/latest/download/WeRead_x64.msi&#34;&gt;Windows&lt;/a&gt;
            &lt;a href=&#34;https://github.com/tw93/Pake/releases/latest/download/WeRead_x86_64.deb&#34;&gt;Linux&lt;/a&gt;
        &lt;/td&gt;
        &lt;td&gt;Twitter
            &lt;a href=&#34;https://github.com/tw93/Pake/releases/latest/download/Twitter.dmg&#34;&gt;Mac&lt;/a&gt;
            &lt;a href=&#34;https://github.com/tw93/Pake/releases/latest/download/Twitter_x64.msi&#34;&gt;Windows&lt;/a&gt;
            &lt;a href=&#34;https://github.com/tw93/Pake/releases/latest/download/Twitter_x86_64.deb&#34;&gt;Linux&lt;/a&gt;
        &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;&lt;img src=https://raw.githubusercontent.com/tw93/static/main/pake/WeRead.jpg width=600/&gt;&lt;/td&gt;
        &lt;td&gt;&lt;img src=https://raw.githubusercontent.com/tw93/static/main/pake/Twitter.jpg width=600/&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;Grok
            &lt;a href=&#34;https://github.com/tw93/Pake/releases/latest/download/Grok.dmg&#34;&gt;Mac&lt;/a&gt;
            &lt;a href=&#34;https://github.com/tw93/Pake/releases/latest/download/Grok_x64.msi&#34;&gt;Windows&lt;/a&gt;
            &lt;a href=&#34;https://github.com/tw93/Pake/releases/latest/download/Grok_x86_64.deb&#34;&gt;Linux&lt;/a&gt;
        &lt;/td&gt;
        &lt;td&gt;DeepSeek
            &lt;a href=&#34;https://github.com/tw93/Pake/releases/latest/download/DeepSeek.dmg&#34;&gt;Mac&lt;/a&gt;
            &lt;a href=&#34;https://github.com/tw93/Pake/releases/latest/download/DeepSeek_x64.msi&#34;&gt;Windows&lt;/a&gt;
            &lt;a href=&#34;https://github.com/tw93/Pake/releases/latest/download/DeepSeek_x86_64.deb&#34;&gt;Linux&lt;/a&gt;
        &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;&lt;img src=https://raw.githubusercontent.com/tw93/static/main/pake/Grok.png width=600/&gt;&lt;/td&gt;
        &lt;td&gt;&lt;img src=https://raw.githubusercontent.com/tw93/static/main/pake/DeepSeek.png width=600/&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;ChatGPT
            &lt;a href=&#34;https://github.com/tw93/Pake/releases/latest/download/ChatGPT.dmg&#34;&gt;Mac&lt;/a&gt;
            &lt;a href=&#34;https://github.com/tw93/Pake/releases/latest/download/ChatGPT_x64.msi&#34;&gt;Windows&lt;/a&gt;
            &lt;a href=&#34;https://github.com/tw93/Pake/releases/latest/download/ChatGPT_x86_64.deb&#34;&gt;Linux&lt;/a&gt;
        &lt;/td&gt;
        &lt;td&gt;Gemini
            &lt;a href=&#34;https://github.com/tw93/Pake/releases/latest/download/Gemini.dmg&#34;&gt;Mac&lt;/a&gt;
            &lt;a href=&#34;https://github.com/tw93/Pake/releases/latest/download/Gemini_x64.msi&#34;&gt;Windows&lt;/a&gt;
            &lt;a href=&#34;https://github.com/tw93/Pake/releases/latest/download/Gemini_x86_64.deb&#34;&gt;Linux&lt;/a&gt;
        &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;&lt;img src=https://raw.githubusercontent.com/tw93/static/main/pake/ChatGPT.png width=600/&gt;&lt;/td&gt;
        &lt;td&gt;&lt;img src=https://raw.githubusercontent.com/tw93/static/main/pake/Gemini.png width=600/&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;YouTube Music
            &lt;a href=&#34;https://github.com/tw93/Pake/releases/latest/download/YouTubeMusic.dmg&#34;&gt;Mac&lt;/a&gt;
            &lt;a href=&#34;https://github.com/tw93/Pake/releases/latest/download/YouTubeMusic_x64.msi&#34;&gt;Windows&lt;/a&gt;
            &lt;a href=&#34;https://github.com/tw93/Pake/releases/latest/download/YouTubeMusic_x86_64.deb&#34;&gt;Linux&lt;/a&gt;
      &lt;/td&gt;
      &lt;td&gt;YouTube
            &lt;a href=&#34;https://github.com/tw93/Pake/releases/latest/download/YouTube.dmg&#34;&gt;Mac&lt;/a&gt;
            &lt;a href=&#34;https://github.com/tw93/Pake/releases/latest/download/YouTube_x64.msi&#34;&gt;Windows&lt;/a&gt;
            &lt;a href=&#34;https://github.com/tw93/Pake/releases/latest/download/YouTube_x86_64.deb&#34;&gt;Linux&lt;/a&gt;
      &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;&lt;img src=https://raw.githubusercontent.com/tw93/static/main/pake/YouTubeMusic.png width=600 /&gt;&lt;/td&gt;
        &lt;td&gt;&lt;img src=https://raw.githubusercontent.com/tw93/static/main/pake/YouTube.jpg width=600 /&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;LiZhi
            &lt;a href=&#34;https://github.com/tw93/Pake/releases/latest/download/LiZhi.dmg&#34;&gt;Mac&lt;/a&gt;
            &lt;a href=&#34;https://github.com/tw93/Pake/releases/latest/download/LiZhi_x64.msi&#34;&gt;Windows&lt;/a&gt;
            &lt;a href=&#34;https://github.com/tw93/Pake/releases/latest/download/LiZhi_x86_64.deb&#34;&gt;Linux&lt;/a&gt;
        &lt;/td&gt;
        &lt;td&gt;ProgramMusic
            &lt;a href=&#34;https://github.com/tw93/Pake/releases/latest/download/ProgramMusic.dmg&#34;&gt;Mac&lt;/a&gt;
            &lt;a href=&#34;https://github.com/tw93/Pake/releases/latest/download/ProgramMusic_x64.msi&#34;&gt;Windows&lt;/a&gt;
            &lt;a href=&#34;https://github.com/tw93/Pake/releases/latest/download/ProgramMusic_x86_64.deb&#34;&gt;Linux&lt;/a&gt;
        &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;&lt;img src=https://raw.githubusercontent.com/tw93/static/main/pake/LiZhi.jpg width=600/&gt;&lt;/td&gt;
        &lt;td&gt;&lt;img src=https://raw.githubusercontent.com/tw93/static/main/pake/ProgramMusic.jpg width=600/&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;Excalidraw
            &lt;a href=&#34;https://github.com/tw93/Pake/releases/latest/download/Excalidraw.dmg&#34;&gt;Mac&lt;/a&gt;
            &lt;a href=&#34;https://github.com/tw93/Pake/releases/latest/download/Excalidraw_x64.msi&#34;&gt;Windows&lt;/a&gt;
            &lt;a href=&#34;https://github.com/tw93/Pake/releases/latest/download/Excalidraw_x86_64.deb&#34;&gt;Linux&lt;/a&gt;
        &lt;/td&gt;
        &lt;td&gt;XiaoHongShu
            &lt;a href=&#34;https://github.com/tw93/Pake/releases/latest/download/XiaoHongShu.dmg&#34;&gt;Mac&lt;/a&gt;
            &lt;a href=&#34;https://github.com/tw93/Pake/releases/latest/download/XiaoHongShu_x64.msi&#34;&gt;Windows&lt;/a&gt;
            &lt;a href=&#34;https://github.com/tw93/Pake/releases/latest/download/XiaoHongShu_x86_64.deb&#34;&gt;Linux&lt;/a&gt;
        &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;&lt;img src=https://raw.githubusercontent.com/tw93/static/main/pake/Excalidraw.png width=600/&gt;&lt;/td&gt;
        &lt;td&gt;&lt;img src=https://raw.githubusercontent.com/tw93/static/main/pake/XiaoHongShu.png width=600/&gt;&lt;/td&gt;
    &lt;/tr&gt;
&lt;/table&gt;
&lt;details&gt;
&lt;summary&gt;🏂 You can download more applications from &lt;a href=&#34;https://github.com/tw93/Pake/releases&#34;&gt;Releases&lt;/a&gt;. &lt;b&gt;Click here to expand the shortcuts reference!&lt;/b&gt;&lt;/summary&gt;
&lt;br/&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Mac&lt;/th&gt;
          &lt;th&gt;Windows/Linux&lt;/th&gt;
          &lt;th&gt;Function&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;kbd&gt;⌘&lt;/kbd&gt; + &lt;kbd&gt;[&lt;/kbd&gt;&lt;/td&gt;
          &lt;td&gt;&lt;kbd&gt;Ctrl&lt;/kbd&gt; + &lt;kbd&gt;←&lt;/kbd&gt;&lt;/td&gt;
          &lt;td&gt;Return to the previous page&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;kbd&gt;⌘&lt;/kbd&gt; + &lt;kbd&gt;]&lt;/kbd&gt;&lt;/td&gt;
          &lt;td&gt;&lt;kbd&gt;Ctrl&lt;/kbd&gt; + &lt;kbd&gt;→&lt;/kbd&gt;&lt;/td&gt;
          &lt;td&gt;Go to the next page&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;kbd&gt;⌘&lt;/kbd&gt; + &lt;kbd&gt;↑&lt;/kbd&gt;&lt;/td&gt;
          &lt;td&gt;&lt;kbd&gt;Ctrl&lt;/kbd&gt; + &lt;kbd&gt;↑&lt;/kbd&gt;&lt;/td&gt;
          &lt;td&gt;Auto scroll to top of page&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;kbd&gt;⌘&lt;/kbd&gt; + &lt;kbd&gt;↓&lt;/kbd&gt;&lt;/td&gt;
          &lt;td&gt;&lt;kbd&gt;Ctrl&lt;/kbd&gt; + &lt;kbd&gt;↓&lt;/kbd&gt;&lt;/td&gt;
          &lt;td&gt;Auto scroll to bottom of page&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;kbd&gt;⌘&lt;/kbd&gt; + &lt;kbd&gt;r&lt;/kbd&gt;&lt;/td&gt;
          &lt;td&gt;&lt;kbd&gt;Ctrl&lt;/kbd&gt; + &lt;kbd&gt;r&lt;/kbd&gt;&lt;/td&gt;
          &lt;td&gt;Refresh Page&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;kbd&gt;⌘&lt;/kbd&gt; + &lt;kbd&gt;w&lt;/kbd&gt;&lt;/td&gt;
          &lt;td&gt;&lt;kbd&gt;Ctrl&lt;/kbd&gt; + &lt;kbd&gt;w&lt;/kbd&gt;&lt;/td&gt;
          &lt;td&gt;Hide window, not quite&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;kbd&gt;⌘&lt;/kbd&gt; + &lt;kbd&gt;-&lt;/kbd&gt;&lt;/td&gt;
          &lt;td&gt;&lt;kbd&gt;Ctrl&lt;/kbd&gt; + &lt;kbd&gt;-&lt;/kbd&gt;&lt;/td&gt;
          &lt;td&gt;Zoom out the page&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;kbd&gt;⌘&lt;/kbd&gt; + &lt;kbd&gt;+&lt;/kbd&gt;&lt;/td&gt;
          &lt;td&gt;&lt;kbd&gt;Ctrl&lt;/kbd&gt; + &lt;kbd&gt;+&lt;/kbd&gt;&lt;/td&gt;
          &lt;td&gt;Zoom in the page&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;kbd&gt;⌘&lt;/kbd&gt; + &lt;kbd&gt;=&lt;/kbd&gt;&lt;/td&gt;
          &lt;td&gt;&lt;kbd&gt;Ctrl&lt;/kbd&gt; + &lt;kbd&gt;=&lt;/kbd&gt;&lt;/td&gt;
          &lt;td&gt;Zoom in the Page&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;kbd&gt;⌘&lt;/kbd&gt; + &lt;kbd&gt;0&lt;/kbd&gt;&lt;/td&gt;
          &lt;td&gt;&lt;kbd&gt;Ctrl&lt;/kbd&gt; + &lt;kbd&gt;0&lt;/kbd&gt;&lt;/td&gt;
          &lt;td&gt;Reset the page zoom&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;In addition, double-click the title bar to switch to full-screen mode. For Mac users, you can also use the gesture to go to the previous or next page and drag the title bar to move the window.&lt;/p&gt;
&lt;/details&gt;
&lt;h2 id=&#34;before-starting&#34;&gt;Before starting
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;For beginners&lt;/strong&gt;: Play with Popular Packages to find out Pake&amp;rsquo;s capabilities, or try to pack your application with &lt;a class=&#34;link&#34; href=&#34;https://github.com/tw93/Pake/wiki/Online-Compilation-%28used-by-ordinary-users%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GitHub Actions&lt;/a&gt;. Don&amp;rsquo;t hesitate to reach for assistance at &lt;a class=&#34;link&#34; href=&#34;https://github.com/tw93/Pake/discussions&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Discussion&lt;/a&gt;!&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;For developers&lt;/strong&gt;: “Command-Line Packaging” supports macOS fully. For Windows/Linux users, it requires some tinkering. &lt;a class=&#34;link&#34; href=&#34;https://tauri.app/start/prerequisites/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Configure your environment&lt;/a&gt; before getting started.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;For hackers&lt;/strong&gt;: For people who are good at both front-end development and Rust, how about customizing your apps&amp;rsquo; function more with the following &lt;a class=&#34;link&#34; href=&#34;#development&#34; &gt;Customized Development&lt;/a&gt;?&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;command-line-packaging&#34;&gt;Command-Line Packaging
&lt;/h2&gt;&lt;p&gt;&lt;img src=&#34;https://raw.githubusercontent.com/tw93/static/main/pake/pake.gif&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Pake&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Pake provides a command line tool, making the flow of package customization quicker and easier. See &lt;a class=&#34;link&#34; href=&#34;./bin/README.md&#34; &gt;documentation&lt;/a&gt; for more information.&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Install with npm&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm install -g pake-cli
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Command usage&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pake url &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;OPTIONS&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Feel free to play with Pake! It might take a while to prepare the environment the first time you launch Pake.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pake https://weekly.tw93.fun --name Weekly --hide-title-bar
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;If you are new to the command line, you can compile packages online with &lt;em&gt;GitHub Actions&lt;/em&gt;. See the &lt;a class=&#34;link&#34; href=&#34;https://github.com/tw93/Pake/wiki/Online-Compilation-%28used-by-ordinary-users%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Tutorial&lt;/a&gt; for more information.&lt;/p&gt;
&lt;h2 id=&#34;development&#34;&gt;Development
&lt;/h2&gt;&lt;p&gt;Prepare your environment before starting. Make sure you have Rust &lt;code&gt;&amp;gt;=1.89&lt;/code&gt; and Node &lt;code&gt;&amp;gt;=22&lt;/code&gt; (e.g., &lt;code&gt;22.11.0&lt;/code&gt;) installed on your computer. &lt;em&gt;Note: Older versions (Rust ≥1.78, Node ≥16) may also work but latest stable versions are recommended.&lt;/em&gt; For installation guidance, see &lt;a class=&#34;link&#34; href=&#34;https://tauri.app/start/prerequisites/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Tauri documentation&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If you are unfamiliar with these, it is better to try out the above tool to pack with one click.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Install Dependencies&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm i
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Local development [Right-click to open debug mode.]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm run dev
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Pack application&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm run build
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;advanced-usage&#34;&gt;Advanced Usage
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;You can refer to the &lt;a class=&#34;link&#34; href=&#34;https://github.com/tw93/Pake/wiki/Description-of-Pake%27s-code-structure&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;codebase structure&lt;/a&gt; before working on Pake, which will help you much in development.&lt;/li&gt;
&lt;li&gt;Modify the &lt;code&gt;url&lt;/code&gt; and &lt;code&gt;productName&lt;/code&gt; fields in the &lt;code&gt;pake.json&lt;/code&gt; file under the src-tauri directory, the &amp;ldquo;domain&amp;rdquo; field in the &lt;code&gt;tauri.config.json&lt;/code&gt; file needs to be modified synchronously, as well as the &lt;code&gt;icon&lt;/code&gt; and &lt;code&gt;identifier&lt;/code&gt; fields in the &lt;code&gt;tauri.xxx.conf.json&lt;/code&gt; file. You can select an &lt;code&gt;icon&lt;/code&gt; from the &lt;code&gt;icons&lt;/code&gt; directory or download one from &lt;a class=&#34;link&#34; href=&#34;https://macosicons.com/#/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;macOSicons&lt;/a&gt; to match your product needs.&lt;/li&gt;
&lt;li&gt;For configurations on window properties, you can modify the &lt;code&gt;pake.json&lt;/code&gt; file to change the value of &lt;code&gt;width&lt;/code&gt;, &lt;code&gt;height&lt;/code&gt;, &lt;code&gt;fullscreen&lt;/code&gt; (or not), &lt;code&gt;resizable&lt;/code&gt; (or not), &lt;code&gt;hide_on_close&lt;/code&gt; (hide window on close instead of exiting) of the &lt;code&gt;windows&lt;/code&gt; property. To adapt to the immersive header on Mac, change &lt;code&gt;hideTitleBar&lt;/code&gt; to &lt;code&gt;true&lt;/code&gt;, look for the &lt;code&gt;Header&lt;/code&gt; element, and add the &lt;code&gt;padding-top&lt;/code&gt; property.&lt;/li&gt;
&lt;li&gt;For advanced usages such as style rewriting, advertisement removal, JS injection, container message communication, and user-defined shortcut keys, see &lt;a class=&#34;link&#34; href=&#34;https://github.com/tw93/Pake/wiki/Advanced-Usage-of-Pake&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Advanced Usage of Pake&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;developers&#34;&gt;Developers
&lt;/h2&gt;&lt;p&gt;Pake&amp;rsquo;s development can not be without these Hackers. They contributed a lot of capabilities for Pake. Also, welcome to follow them! ❤️&lt;/p&gt;
&lt;!-- readme: contributors -start --&gt;
&lt;table&gt;
	&lt;tbody&gt;
		&lt;tr&gt;
            &lt;td align=&#34;center&#34;&gt;
                &lt;a href=&#34;https://github.com/tw93&#34;&gt;
                    &lt;img src=&#34;https://avatars.githubusercontent.com/u/8736212?v=4&#34; width=&#34;90;&#34; alt=&#34;tw93&#34;/&gt;
                    &lt;br /&gt;
                    &lt;sub&gt;&lt;b&gt;Tw93&lt;/b&gt;&lt;/sub&gt;
                &lt;/a&gt;
            &lt;/td&gt;
            &lt;td align=&#34;center&#34;&gt;
                &lt;a href=&#34;https://github.com/Tlntin&#34;&gt;
                    &lt;img src=&#34;https://avatars.githubusercontent.com/u/28218658?v=4&#34; width=&#34;90;&#34; alt=&#34;Tlntin&#34;/&gt;
                    &lt;br /&gt;
                    &lt;sub&gt;&lt;b&gt;Tlntin&lt;/b&gt;&lt;/sub&gt;
                &lt;/a&gt;
            &lt;/td&gt;
            &lt;td align=&#34;center&#34;&gt;
                &lt;a href=&#34;https://github.com/jeasonnow&#34;&gt;
                    &lt;img src=&#34;https://avatars.githubusercontent.com/u/16950207?v=4&#34; width=&#34;90;&#34; alt=&#34;jeasonnow&#34;/&gt;
                    &lt;br /&gt;
                    &lt;sub&gt;&lt;b&gt;Santree&lt;/b&gt;&lt;/sub&gt;
                &lt;/a&gt;
            &lt;/td&gt;
            &lt;td align=&#34;center&#34;&gt;
                &lt;a href=&#34;https://github.com/pan93412&#34;&gt;
                    &lt;img src=&#34;https://avatars.githubusercontent.com/u/28441561?v=4&#34; width=&#34;90;&#34; alt=&#34;pan93412&#34;/&gt;
                    &lt;br /&gt;
                    &lt;sub&gt;&lt;b&gt;Pan93412&lt;/b&gt;&lt;/sub&gt;
                &lt;/a&gt;
            &lt;/td&gt;
            &lt;td align=&#34;center&#34;&gt;
                &lt;a href=&#34;https://github.com/stone-w4tch3r&#34;&gt;
                    &lt;img src=&#34;https://avatars.githubusercontent.com/u/100294019?v=4&#34; width=&#34;90;&#34; alt=&#34;stone-w4tch3r&#34;/&gt;
                    &lt;br /&gt;
                    &lt;sub&gt;&lt;b&gt;Данил Бизимов&lt;/b&gt;&lt;/sub&gt;
                &lt;/a&gt;
            &lt;/td&gt;
            &lt;td align=&#34;center&#34;&gt;
                &lt;a href=&#34;https://github.com/wanghanzhen&#34;&gt;
                    &lt;img src=&#34;https://avatars.githubusercontent.com/u/25301012?v=4&#34; width=&#34;90;&#34; alt=&#34;wanghanzhen&#34;/&gt;
                    &lt;br /&gt;
                    &lt;sub&gt;&lt;b&gt;Volare&lt;/b&gt;&lt;/sub&gt;
                &lt;/a&gt;
            &lt;/td&gt;
            &lt;td align=&#34;center&#34;&gt;
                &lt;a href=&#34;https://github.com/liby&#34;&gt;
                    &lt;img src=&#34;https://avatars.githubusercontent.com/u/38807139?v=4&#34; width=&#34;90;&#34; alt=&#34;liby&#34;/&gt;
                    &lt;br /&gt;
                    &lt;sub&gt;&lt;b&gt;Bryan Lee&lt;/b&gt;&lt;/sub&gt;
                &lt;/a&gt;
            &lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
            &lt;td align=&#34;center&#34;&gt;
                &lt;a href=&#34;https://github.com/essesoul&#34;&gt;
                    &lt;img src=&#34;https://avatars.githubusercontent.com/u/58624474?v=4&#34; width=&#34;90;&#34; alt=&#34;essesoul&#34;/&gt;
                    &lt;br /&gt;
                    &lt;sub&gt;&lt;b&gt;Essesoul&lt;/b&gt;&lt;/sub&gt;
                &lt;/a&gt;
            &lt;/td&gt;
            &lt;td align=&#34;center&#34;&gt;
                &lt;a href=&#34;https://github.com/YangguangZhou&#34;&gt;
                    &lt;img src=&#34;https://avatars.githubusercontent.com/u/61733195?v=4&#34; width=&#34;90;&#34; alt=&#34;YangguangZhou&#34;/&gt;
                    &lt;br /&gt;
                    &lt;sub&gt;&lt;b&gt;Jerry Zhou&lt;/b&gt;&lt;/sub&gt;
                &lt;/a&gt;
            &lt;/td&gt;
            &lt;td align=&#34;center&#34;&gt;
                &lt;a href=&#34;https://github.com/AielloChan&#34;&gt;
                    &lt;img src=&#34;https://avatars.githubusercontent.com/u/7900765?v=4&#34; width=&#34;90;&#34; alt=&#34;AielloChan&#34;/&gt;
                    &lt;br /&gt;
                    &lt;sub&gt;&lt;b&gt;Aiello&lt;/b&gt;&lt;/sub&gt;
                &lt;/a&gt;
            &lt;/td&gt;
            &lt;td align=&#34;center&#34;&gt;
                &lt;a href=&#34;https://github.com/m1911star&#34;&gt;
                    &lt;img src=&#34;https://avatars.githubusercontent.com/u/4948120?v=4&#34; width=&#34;90;&#34; alt=&#34;m1911star&#34;/&gt;
                    &lt;br /&gt;
                    &lt;sub&gt;&lt;b&gt;Horus&lt;/b&gt;&lt;/sub&gt;
                &lt;/a&gt;
            &lt;/td&gt;
            &lt;td align=&#34;center&#34;&gt;
                &lt;a href=&#34;https://github.com/Pake-Actions&#34;&gt;
                    &lt;img src=&#34;https://avatars.githubusercontent.com/u/126550811?v=4&#34; width=&#34;90;&#34; alt=&#34;Pake-Actions&#34;/&gt;
                    &lt;br /&gt;
                    &lt;sub&gt;&lt;b&gt;Pake Actions&lt;/b&gt;&lt;/sub&gt;
                &lt;/a&gt;
            &lt;/td&gt;
            &lt;td align=&#34;center&#34;&gt;
                &lt;a href=&#34;https://github.com/GoodbyeNJN&#34;&gt;
                    &lt;img src=&#34;https://avatars.githubusercontent.com/u/6856639?v=4&#34; width=&#34;90;&#34; alt=&#34;GoodbyeNJN&#34;/&gt;
                    &lt;br /&gt;
                    &lt;sub&gt;&lt;b&gt;GoodbyeNJN&lt;/b&gt;&lt;/sub&gt;
                &lt;/a&gt;
            &lt;/td&gt;
            &lt;td align=&#34;center&#34;&gt;
                &lt;a href=&#34;https://github.com/kittizz&#34;&gt;
                    &lt;img src=&#34;https://avatars.githubusercontent.com/u/62899732?v=4&#34; width=&#34;90;&#34; alt=&#34;kittizz&#34;/&gt;
                    &lt;br /&gt;
                    &lt;sub&gt;&lt;b&gt;Kittizz&lt;/b&gt;&lt;/sub&gt;
                &lt;/a&gt;
            &lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
            &lt;td align=&#34;center&#34;&gt;
                &lt;a href=&#34;https://github.com/mattbajorek&#34;&gt;
                    &lt;img src=&#34;https://avatars.githubusercontent.com/u/17235301?v=4&#34; width=&#34;90;&#34; alt=&#34;mattbajorek&#34;/&gt;
                    &lt;br /&gt;
                    &lt;sub&gt;&lt;b&gt;Matt Bajorek&lt;/b&gt;&lt;/sub&gt;
                &lt;/a&gt;
            &lt;/td&gt;
            &lt;td align=&#34;center&#34;&gt;
                &lt;a href=&#34;https://github.com/vaddisrinivas&#34;&gt;
                    &lt;img src=&#34;https://avatars.githubusercontent.com/u/38348871?v=4&#34; width=&#34;90;&#34; alt=&#34;vaddisrinivas&#34;/&gt;
                    &lt;br /&gt;
                    &lt;sub&gt;&lt;b&gt;Srinivas Vaddi&lt;/b&gt;&lt;/sub&gt;
                &lt;/a&gt;
            &lt;/td&gt;
            &lt;td align=&#34;center&#34;&gt;
                &lt;a href=&#34;https://github.com/QingZ11&#34;&gt;
                    &lt;img src=&#34;https://avatars.githubusercontent.com/u/38887077?v=4&#34; width=&#34;90;&#34; alt=&#34;QingZ11&#34;/&gt;
                    &lt;br /&gt;
                    &lt;sub&gt;&lt;b&gt;Steam&lt;/b&gt;&lt;/sub&gt;
                &lt;/a&gt;
            &lt;/td&gt;
            &lt;td align=&#34;center&#34;&gt;
                &lt;a href=&#34;https://github.com/Tianj0o&#34;&gt;
                    &lt;img src=&#34;https://avatars.githubusercontent.com/u/68584284?v=4&#34; width=&#34;90;&#34; alt=&#34;Tianj0o&#34;/&gt;
                    &lt;br /&gt;
                    &lt;sub&gt;&lt;b&gt;Qitianjia&lt;/b&gt;&lt;/sub&gt;
                &lt;/a&gt;
            &lt;/td&gt;
            &lt;td align=&#34;center&#34;&gt;
                &lt;a href=&#34;https://github.com/xinyii&#34;&gt;
                    &lt;img src=&#34;https://avatars.githubusercontent.com/u/17895104?v=4&#34; width=&#34;90;&#34; alt=&#34;xinyii&#34;/&gt;
                    &lt;br /&gt;
                    &lt;sub&gt;&lt;b&gt;Yi Xin&lt;/b&gt;&lt;/sub&gt;
                &lt;/a&gt;
            &lt;/td&gt;
            &lt;td align=&#34;center&#34;&gt;
                &lt;a href=&#34;https://github.com/g1eny0ung&#34;&gt;
                    &lt;img src=&#34;https://avatars.githubusercontent.com/u/15034155?v=4&#34; width=&#34;90;&#34; alt=&#34;g1eny0ung&#34;/&gt;
                    &lt;br /&gt;
                    &lt;sub&gt;&lt;b&gt;Yue Yang&lt;/b&gt;&lt;/sub&gt;
                &lt;/a&gt;
            &lt;/td&gt;
            &lt;td align=&#34;center&#34;&gt;
                &lt;a href=&#34;https://github.com/lkieryan&#34;&gt;
                    &lt;img src=&#34;https://avatars.githubusercontent.com/u/187804088?v=4&#34; width=&#34;90;&#34; alt=&#34;lkieryan&#34;/&gt;
                    &lt;br /&gt;
                    &lt;sub&gt;&lt;b&gt;Kieran&lt;/b&gt;&lt;/sub&gt;
                &lt;/a&gt;
            &lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
            &lt;td align=&#34;center&#34;&gt;
                &lt;a href=&#34;https://github.com/exposir&#34;&gt;
                    &lt;img src=&#34;https://avatars.githubusercontent.com/u/33340988?v=4&#34; width=&#34;90;&#34; alt=&#34;exposir&#34;/&gt;
                    &lt;br /&gt;
                    &lt;sub&gt;&lt;b&gt;孟世博&lt;/b&gt;&lt;/sub&gt;
                &lt;/a&gt;
            &lt;/td&gt;
            &lt;td align=&#34;center&#34;&gt;
                &lt;a href=&#34;https://github.com/2nthony&#34;&gt;
                    &lt;img src=&#34;https://avatars.githubusercontent.com/u/19513289?v=4&#34; width=&#34;90;&#34; alt=&#34;2nthony&#34;/&gt;
                    &lt;br /&gt;
                    &lt;sub&gt;&lt;b&gt;2nthony&lt;/b&gt;&lt;/sub&gt;
                &lt;/a&gt;
            &lt;/td&gt;
            &lt;td align=&#34;center&#34;&gt;
                &lt;a href=&#34;https://github.com/ACGNnsj&#34;&gt;
                    &lt;img src=&#34;https://avatars.githubusercontent.com/u/22112141?v=4&#34; width=&#34;90;&#34; alt=&#34;ACGNnsj&#34;/&gt;
                    &lt;br /&gt;
                    &lt;sub&gt;&lt;b&gt;Null&lt;/b&gt;&lt;/sub&gt;
                &lt;/a&gt;
            &lt;/td&gt;
            &lt;td align=&#34;center&#34;&gt;
                &lt;a href=&#34;https://github.com/imabutahersiddik&#34;&gt;
                    &lt;img src=&#34;https://avatars.githubusercontent.com/u/138387257?v=4&#34; width=&#34;90;&#34; alt=&#34;imabutahersiddik&#34;/&gt;
                    &lt;br /&gt;
                    &lt;sub&gt;&lt;b&gt;Abu Taher Siddik&lt;/b&gt;&lt;/sub&gt;
                &lt;/a&gt;
            &lt;/td&gt;
            &lt;td align=&#34;center&#34;&gt;
                &lt;a href=&#34;https://github.com/kidylee&#34;&gt;
                    &lt;img src=&#34;https://avatars.githubusercontent.com/u/841310?v=4&#34; width=&#34;90;&#34; alt=&#34;kidylee&#34;/&gt;
                    &lt;br /&gt;
                    &lt;sub&gt;&lt;b&gt;An Li&lt;/b&gt;&lt;/sub&gt;
                &lt;/a&gt;
            &lt;/td&gt;
            &lt;td align=&#34;center&#34;&gt;
                &lt;a href=&#34;https://github.com/nekomeowww&#34;&gt;
                    &lt;img src=&#34;https://avatars.githubusercontent.com/u/11081491?v=4&#34; width=&#34;90;&#34; alt=&#34;nekomeowww&#34;/&gt;
                    &lt;br /&gt;
                    &lt;sub&gt;&lt;b&gt;Ayaka Neko&lt;/b&gt;&lt;/sub&gt;
                &lt;/a&gt;
            &lt;/td&gt;
            &lt;td align=&#34;center&#34;&gt;
                &lt;a href=&#34;https://github.com/turkyden&#34;&gt;
                    &lt;img src=&#34;https://avatars.githubusercontent.com/u/24560160?v=4&#34; width=&#34;90;&#34; alt=&#34;turkyden&#34;/&gt;
                    &lt;br /&gt;
                    &lt;sub&gt;&lt;b&gt;Dengju Deng&lt;/b&gt;&lt;/sub&gt;
                &lt;/a&gt;
            &lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
            &lt;td align=&#34;center&#34;&gt;
                &lt;a href=&#34;https://github.com/fvn-elmy&#34;&gt;
                    &lt;img src=&#34;https://avatars.githubusercontent.com/u/71275745?v=4&#34; width=&#34;90;&#34; alt=&#34;fvn-elmy&#34;/&gt;
                    &lt;br /&gt;
                    &lt;sub&gt;&lt;b&gt;Fabien&lt;/b&gt;&lt;/sub&gt;
                &lt;/a&gt;
            &lt;/td&gt;
            &lt;td align=&#34;center&#34;&gt;
                &lt;a href=&#34;https://github.com/Fechin&#34;&gt;
                    &lt;img src=&#34;https://avatars.githubusercontent.com/u/2541482?v=4&#34; width=&#34;90;&#34; alt=&#34;Fechin&#34;/&gt;
                    &lt;br /&gt;
                    &lt;sub&gt;&lt;b&gt;Fechin&lt;/b&gt;&lt;/sub&gt;
                &lt;/a&gt;
            &lt;/td&gt;
            &lt;td align=&#34;center&#34;&gt;
                &lt;a href=&#34;https://github.com/ImgBotApp&#34;&gt;
                    &lt;img src=&#34;https://avatars.githubusercontent.com/u/31427850?v=4&#34; width=&#34;90;&#34; alt=&#34;ImgBotApp&#34;/&gt;
                    &lt;br /&gt;
                    &lt;sub&gt;&lt;b&gt;Imgbot&lt;/b&gt;&lt;/sub&gt;
                &lt;/a&gt;
            &lt;/td&gt;
            &lt;td align=&#34;center&#34;&gt;
                &lt;a href=&#34;https://github.com/droid-Q&#34;&gt;
                    &lt;img src=&#34;https://avatars.githubusercontent.com/u/708277?v=4&#34; width=&#34;90;&#34; alt=&#34;droid-Q&#34;/&gt;
                    &lt;br /&gt;
                    &lt;sub&gt;&lt;b&gt;Jiaqi Gu&lt;/b&gt;&lt;/sub&gt;
                &lt;/a&gt;
            &lt;/td&gt;
            &lt;td align=&#34;center&#34;&gt;
                &lt;a href=&#34;https://github.com/Milo123459&#34;&gt;
                    &lt;img src=&#34;https://avatars.githubusercontent.com/u/50248166?v=4&#34; width=&#34;90;&#34; alt=&#34;Milo123459&#34;/&gt;
                    &lt;br /&gt;
                    &lt;sub&gt;&lt;b&gt;Milo&lt;/b&gt;&lt;/sub&gt;
                &lt;/a&gt;
            &lt;/td&gt;
            &lt;td align=&#34;center&#34;&gt;
                &lt;a href=&#34;https://github.com/princemaple&#34;&gt;
                    &lt;img src=&#34;https://avatars.githubusercontent.com/u/1329716?v=4&#34; width=&#34;90;&#34; alt=&#34;princemaple&#34;/&gt;
                    &lt;br /&gt;
                    &lt;sub&gt;&lt;b&gt;Po Chen&lt;/b&gt;&lt;/sub&gt;
                &lt;/a&gt;
            &lt;/td&gt;
            &lt;td align=&#34;center&#34;&gt;
                &lt;a href=&#34;https://github.com/beautifulrem&#34;&gt;
                    &lt;img src=&#34;https://avatars.githubusercontent.com/u/98527099?v=4&#34; width=&#34;90;&#34; alt=&#34;beautifulrem&#34;/&gt;
                    &lt;br /&gt;
                    &lt;sub&gt;&lt;b&gt;Xie Ruiqi&lt;/b&gt;&lt;/sub&gt;
                &lt;/a&gt;
            &lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
            &lt;td align=&#34;center&#34;&gt;
                &lt;a href=&#34;https://github.com/bocanhcam&#34;&gt;
                    &lt;img src=&#34;https://avatars.githubusercontent.com/u/35592955?v=4&#34; width=&#34;90;&#34; alt=&#34;bocanhcam&#34;/&gt;
                    &lt;br /&gt;
                    &lt;sub&gt;&lt;b&gt;Null&lt;/b&gt;&lt;/sub&gt;
                &lt;/a&gt;
            &lt;/td&gt;
            &lt;td align=&#34;center&#34;&gt;
                &lt;a href=&#34;https://github.com/geekvest&#34;&gt;
                    &lt;img src=&#34;https://avatars.githubusercontent.com/u/126322776?v=4&#34; width=&#34;90;&#34; alt=&#34;geekvest&#34;/&gt;
                    &lt;br /&gt;
                    &lt;sub&gt;&lt;b&gt;Null&lt;/b&gt;&lt;/sub&gt;
                &lt;/a&gt;
            &lt;/td&gt;
            &lt;td align=&#34;center&#34;&gt;
                &lt;a href=&#34;https://github.com/houhoz&#34;&gt;
                    &lt;img src=&#34;https://avatars.githubusercontent.com/u/19684376?v=4&#34; width=&#34;90;&#34; alt=&#34;houhoz&#34;/&gt;
                    &lt;br /&gt;
                    &lt;sub&gt;&lt;b&gt;Hyzhao&lt;/b&gt;&lt;/sub&gt;
                &lt;/a&gt;
            &lt;/td&gt;
            &lt;td align=&#34;center&#34;&gt;
                &lt;a href=&#34;https://github.com/lakca&#34;&gt;
                    &lt;img src=&#34;https://avatars.githubusercontent.com/u/16255922?v=4&#34; width=&#34;90;&#34; alt=&#34;lakca&#34;/&gt;
                    &lt;br /&gt;
                    &lt;sub&gt;&lt;b&gt;Null&lt;/b&gt;&lt;/sub&gt;
                &lt;/a&gt;
            &lt;/td&gt;
            &lt;td align=&#34;center&#34;&gt;
                &lt;a href=&#34;https://github.com/liudonghua123&#34;&gt;
                    &lt;img src=&#34;https://avatars.githubusercontent.com/u/2276718?v=4&#34; width=&#34;90;&#34; alt=&#34;liudonghua123&#34;/&gt;
                    &lt;br /&gt;
                    &lt;sub&gt;&lt;b&gt;Liudonghua&lt;/b&gt;&lt;/sub&gt;
                &lt;/a&gt;
            &lt;/td&gt;
            &lt;td align=&#34;center&#34;&gt;
                &lt;a href=&#34;https://github.com/liusishan&#34;&gt;
                    &lt;img src=&#34;https://avatars.githubusercontent.com/u/33129823?v=4&#34; width=&#34;90;&#34; alt=&#34;liusishan&#34;/&gt;
                    &lt;br /&gt;
                    &lt;sub&gt;&lt;b&gt;Liusishan&lt;/b&gt;&lt;/sub&gt;
                &lt;/a&gt;
            &lt;/td&gt;
            &lt;td align=&#34;center&#34;&gt;
                &lt;a href=&#34;https://github.com/piaoyidage&#34;&gt;
                    &lt;img src=&#34;https://avatars.githubusercontent.com/u/5135405?v=4&#34; width=&#34;90;&#34; alt=&#34;piaoyidage&#34;/&gt;
                    &lt;br /&gt;
                    &lt;sub&gt;&lt;b&gt;Ranger&lt;/b&gt;&lt;/sub&gt;
                &lt;/a&gt;
            &lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
            &lt;td align=&#34;center&#34;&gt;
                &lt;a href=&#34;https://github.com/hetz&#34;&gt;
                    &lt;img src=&#34;https://avatars.githubusercontent.com/u/820141?v=4&#34; width=&#34;90;&#34; alt=&#34;hetz&#34;/&gt;
                    &lt;br /&gt;
                    &lt;sub&gt;&lt;b&gt;贺天卓&lt;/b&gt;&lt;/sub&gt;
                &lt;/a&gt;
            &lt;/td&gt;
		&lt;/tr&gt;
	&lt;tbody&gt;
&lt;/table&gt;
&lt;!-- readme: contributors -end --&gt;
&lt;h2 id=&#34;frequently-asked-questions&#34;&gt;Frequently Asked Questions
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;Right-clicking on an image element in the page to open the menu and select download image or other events does not work (common in MacOS systems). This issue is due to the MacOS built-in webview not supporting this feature.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;support&#34;&gt;Support
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;I have two cats, TangYuan and Coke. If you think Pake delights your life, you can feed them &lt;a href=&#34;https://miaoyan.app/cats.html?name=Pake&#34; target=&#34;_blank&#34;&gt;some canned food 🥩&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;If you like Pake, you can star it on GitHub. Also, welcome to &lt;a class=&#34;link&#34; href=&#34;https://twitter.com/intent/tweet?url=https://github.com/tw93/Pake&amp;amp;text=%23Pake%20-%20A%20simple%20Rust%20packaged%20web%20pages%20to%20generate%20Mac%20App%20tool,%20compared%20to%20traditional%20Electron%20package,%20the%20size%20of%20nearly%2040%20times%20smaller,%20generally%20about%202M,%20the%20underlying%20use%20of%20Tauri,%20performance%20experience%20than%20the%20JS%20framework%20is%20much%20lighter~&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;recommend Pake&lt;/a&gt; to your friends.&lt;/li&gt;
&lt;li&gt;You can follow my &lt;a class=&#34;link&#34; href=&#34;https://twitter.com/HiTw93&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Twitter&lt;/a&gt; to get the latest news of Pake or join our &lt;a class=&#34;link&#34; href=&#34;https://t.me/&amp;#43;GclQS9ZnxyI2ODQ1&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Telegram&lt;/a&gt; chat group.&lt;/li&gt;
&lt;li&gt;I hope that you enjoy playing with it. Let us know if you find a website that would be great for a Mac App!&lt;/li&gt;
&lt;/ol&gt;
</description>
        </item>
        <item>
        <title>trippy</title>
        <link>https://producthunt.programnotes.cn/en/p/trippy/</link>
        <pubDate>Wed, 23 Jul 2025 15:35:45 +0800</pubDate>
        
        <guid>https://producthunt.programnotes.cn/en/p/trippy/</guid>
        <description>&lt;img src="https://images.unsplash.com/photo-1643938915973-bfef644ec87f?ixid=M3w0NjAwMjJ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3NTMyNTYwMTZ8&amp;ixlib=rb-4.1.0" alt="Featured image of post trippy" /&gt;&lt;h1 id=&#34;fujiapple852trippy&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/fujiapple852/trippy&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;fujiapple852/trippy&lt;/a&gt;
&lt;/h1&gt;&lt;p align=&#34;center&#34;&gt;
  &lt;img src=&#34;https://raw.githubusercontent.com/fujiapple852/trippy/master/docs/src/assets/Trippy-Vertical-DarkMode.svg#gh-dark-mode-only&#34; width=&#34;300&#34;&gt;
  &lt;img src=&#34;https://raw.githubusercontent.com/fujiapple852/trippy/master/docs/src/assets/Trippy-Vertical.svg#gh-light-mode-only&#34; width=&#34;300&#34;&gt;&lt;br&gt;
  &lt;br&gt;
  &lt;a href=&#34;https://github.com/fujiapple852/trippy/actions/workflows/ci.yml&#34;&gt;
    &lt;img src=&#34;https://github.com/fujiapple852/trippy/actions/workflows/ci.yml/badge.svg?branch=master&#34;&gt;&lt;/a&gt;
  &lt;a href=&#34;https://crates.io/crates/trippy/0.13.0&#34;&gt;
    &lt;img src=&#34;https://img.shields.io/crates/v/trippy.svg&#34;&gt;&lt;/a&gt;
  &lt;a href=&#34;https://repology.org/project/trippy/versions&#34;&gt;
    &lt;img src=&#34;https://repology.org/badge/tiny-repos/trippy.svg&#34;&gt;&lt;/a&gt;
  &lt;a href=&#34;https://trippy.zulipchat.com&#34;&gt;
    &lt;img src=&#34;https://img.shields.io/badge/zulip-join_chat-brightgreen.svg&#34;&gt;&lt;/a&gt;
  &lt;a href=&#34;https://matrix.to/#/#trippy-dev:matrix.org&#34;&gt;
    &lt;img src=&#34;https://img.shields.io/badge/matrix/trippy-dev:matrix.org-blue&#34;&gt;&lt;/a&gt;
  &lt;br&gt;
  &lt;br&gt;
  Trippy combines the functionality of traceroute and ping and is designed to assist with the analysis of networking
issues.
&lt;/p&gt;
&lt;img src=&#34;https://raw.githubusercontent.com/fujiapple852/trippy/master/assets/0.12.0/demo.gif&#34; alt=&#34;trippy&#34;/&gt;
&lt;h2 id=&#34;quick-start&#34;&gt;Quick Start
&lt;/h2&gt;&lt;p&gt;See the &lt;a class=&#34;link&#34; href=&#34;https://trippy.rs/start/getting-started&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;getting started&lt;/a&gt; guide.&lt;/p&gt;
&lt;h3 id=&#34;install&#34;&gt;Install
&lt;/h3&gt;&lt;p&gt;Trippy runs on Linux, BSD, macOS, and Windows. It can be installed from most package managers, precompiled binaries, or
source.&lt;/p&gt;
&lt;p&gt;For example, to install Trippy from &lt;code&gt;cargo&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cargo install trippy --locked
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;details&gt;
&lt;summary&gt;All package managers&lt;/summary&gt;
&lt;h3 id=&#34;cargo&#34;&gt;Cargo
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://crates.io/crates/trippy/0.13.0&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/crates/v/trippy&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Crates.io&#34;
	
	
&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cargo install trippy --locked
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;apt-debian&#34;&gt;APT (Debian)
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://tracker.debian.org/pkg/trippy&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://repology.org/badge/version-for-repo/debian_13/trippy.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Debian 13 package&#34;
	
	
&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;apt install trippy
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;ⓘ Note:&lt;/p&gt;
&lt;p&gt;Only available for Debian 13 (&lt;code&gt;trixie&lt;/code&gt;) and later.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&#34;ppa-ubuntu&#34;&gt;PPA (Ubuntu)
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://launchpad.net/~fujiapple/&amp;#43;archive/ubuntu/trippy/&amp;#43;packages&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/badge/Ubuntu%20PPA-0.13.0-brightgreen&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Ubuntu PPA&#34;
	
	
&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;add-apt-repository ppa:fujiapple/trippy
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;apt update &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; apt install trippy
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;ⓘ Note:&lt;/p&gt;
&lt;p&gt;Only available for Ubuntu 24.04 (&lt;code&gt;Noble&lt;/code&gt;) and 22.04 (&lt;code&gt;Jammy&lt;/code&gt;).&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&#34;snap-linux&#34;&gt;Snap (Linux)
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://snapcraft.io/trippy&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://snapcraft.io/trippy/badge.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;trippy&#34;
	
	
&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;snap install trippy
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;homebrew-macos&#34;&gt;Homebrew (macOS)
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://formulae.brew.sh/formula/trippy&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://repology.org/badge/version-for-repo/homebrew/trippy.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Homebrew package&#34;
	
	
&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;brew install trippy
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;winget-windows&#34;&gt;WinGet (Windows)
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/microsoft/winget-pkgs/tree/master/manifests/f/FujiApple/Trippy/0.13.0&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/badge/WinGet-0.13.0-brightgreen&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;winget package&#34;
	
	
&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;winget install trippy
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;scoop-windows&#34;&gt;Scoop (Windows)
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/ScoopInstaller/Main/blob/master/bucket/trippy.json&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/scoop/v/trippy?style=flat&amp;amp;labelColor=5c5c5c&amp;amp;color=%234dc71f&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Scoop package&#34;
	
	
&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;scoop install trippy
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;chocolatey-windows&#34;&gt;Chocolatey (Windows)
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://community.chocolatey.org/packages/trippy&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://repology.org/badge/version-for-repo/chocolatey/trippy.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Chocolatey package&#34;
	
	
&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;choco install trippy
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;netbsd&#34;&gt;NetBSD
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://pkgsrc.se/net/trippy&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://repology.org/badge/version-for-repo/pkgsrc_current/trippy.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;pkgsrc current package&#34;
	
	
&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pkgin install trippy
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;freebsd&#34;&gt;FreeBSD
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.freshports.org/net/trippy/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://repology.org/badge/version-for-repo/freebsd/trippy.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;FreeBSD port&#34;
	
	
&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pkg install trippy
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;openbsd&#34;&gt;OpenBSD
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://openports.pl/path/net/trippy&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://repology.org/badge/version-for-repo/openbsd/trippy.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;OpenBSD port&#34;
	
	
&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pkg_add trippy
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;arch-linux&#34;&gt;Arch Linux
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://archlinux.org/packages/extra/x86_64/trippy&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://repology.org/badge/version-for-repo/arch/trippy.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Arch package&#34;
	
	
&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pacman -S trippy
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;gentoo-linux&#34;&gt;Gentoo Linux
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://packages.gentoo.org/packages/net-analyzer/trippy&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://repology.org/badge/version-for-repo/gentoo/trippy.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Gentoo package&#34;
	
	
&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;emerge -av net-analyzer/trippy
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;void-linux&#34;&gt;Void Linux
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/void-linux/void-packages/tree/master/srcpkgs/trippy&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://repology.org/badge/version-for-repo/void_x86_64/trippy.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Void Linux x86_64 package&#34;
	
	
&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;xbps-install -S trippy
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;alt-sisyphus&#34;&gt;ALT Sisyphus
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://packages.altlinux.org/en/sisyphus/srpms/trippy/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://repology.org/badge/version-for-repo/altsisyphus/trippy.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;ALT Sisyphus package&#34;
	
	
&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;apt-get install trippy
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;chimera-linux&#34;&gt;Chimera Linux
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/chimera-linux/cports/tree/master/user/trippy&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://repology.org/badge/version-for-repo/chimera/trippy.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Chimera Linux package&#34;
	
	
&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;apk add trippy
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;nix&#34;&gt;Nix
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/NixOS/nixpkgs/blob/master/pkgs/by-name/tr/trippy/package.nix&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://repology.org/badge/version-for-repo/nix_unstable/trippy.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;nixpkgs unstable package&#34;
	
	
&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nix-env -iA trippy
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;docker&#34;&gt;Docker
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://hub.docker.com/r/fujiapple/trippy/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/docker/v/fujiapple/trippy&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Docker Image Version (latest by date)&#34;
	
	
&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker run -it fujiapple/trippy
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;all-repositories&#34;&gt;All Repositories
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://repology.org/project/trippy/versions&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://repology.org/badge/vertical-allrepos/trippy.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Packaging status&#34;
	
	
&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/details&gt;
&lt;p&gt;See the &lt;a class=&#34;link&#34; href=&#34;https://trippy.rs/start/installation&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;installation&lt;/a&gt; guide for details of how to install Trippy on your system.&lt;/p&gt;
&lt;h3 id=&#34;run&#34;&gt;Run
&lt;/h3&gt;&lt;p&gt;To run a basic trace to &lt;code&gt;example.com&lt;/code&gt; with default settings, use the following command:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo trip example.com
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;See the &lt;a class=&#34;link&#34; href=&#34;https://trippy.rs/guides/usage&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;usage examples&lt;/a&gt; and &lt;a class=&#34;link&#34; href=&#34;https://trippy.rs/reference/cli&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;CLI reference&lt;/a&gt; for
details of how to use Trippy. To use Trippy without elevated privileges, see
the &lt;a class=&#34;link&#34; href=&#34;https://trippy.rs/guides/privileges&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;privileges&lt;/a&gt; guide.&lt;/p&gt;
&lt;h2 id=&#34;documentation&#34;&gt;Documentation
&lt;/h2&gt;&lt;p&gt;Full documentation is available at &lt;a class=&#34;link&#34; href=&#34;https://trippy.rs&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;trippy.rs&lt;/a&gt;.&lt;/p&gt;
&lt;details&gt;
&lt;summary&gt;documentation links&lt;/summary&gt;
&lt;h2 id=&#34;getting-started&#34;&gt;Getting Started
&lt;/h2&gt;&lt;p&gt;See the &lt;a class=&#34;link&#34; href=&#34;https://trippy.rs/start/getting-started/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Getting Started&lt;/a&gt; guide.&lt;/p&gt;
&lt;h2 id=&#34;features&#34;&gt;Features
&lt;/h2&gt;&lt;p&gt;See the &lt;a class=&#34;link&#34; href=&#34;https://trippy.rs/start/features/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Features&lt;/a&gt; list.&lt;/p&gt;
&lt;h2 id=&#34;distributions&#34;&gt;Distributions
&lt;/h2&gt;&lt;p&gt;See the &lt;a class=&#34;link&#34; href=&#34;https://trippy.rs/start/installation/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Distributions&lt;/a&gt; list.&lt;/p&gt;
&lt;h2 id=&#34;privileges&#34;&gt;Privileges
&lt;/h2&gt;&lt;p&gt;See the &lt;a class=&#34;link&#34; href=&#34;https://trippy.rs/guides/privileges/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Privileges&lt;/a&gt; guide.&lt;/p&gt;
&lt;h2 id=&#34;usage-examples&#34;&gt;Usage Examples
&lt;/h2&gt;&lt;p&gt;See the &lt;a class=&#34;link&#34; href=&#34;https://trippy.rs/guides/usage/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Usage Examples&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;command-reference&#34;&gt;Command Reference
&lt;/h2&gt;&lt;p&gt;See the &lt;a class=&#34;link&#34; href=&#34;https://trippy.rs/reference/cli/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Command Reference&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;theme-reference&#34;&gt;Theme Reference
&lt;/h2&gt;&lt;p&gt;See the &lt;a class=&#34;link&#34; href=&#34;https://trippy.rs/reference/theme/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Theme Reference&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;column-reference&#34;&gt;Column Reference
&lt;/h2&gt;&lt;p&gt;See the &lt;a class=&#34;link&#34; href=&#34;https://trippy.rs/reference/column/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Column Reference&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;configuration-reference&#34;&gt;Configuration Reference
&lt;/h2&gt;&lt;p&gt;See the &lt;a class=&#34;link&#34; href=&#34;https://trippy.rs/reference/configuration/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Configuration Reference&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;locale-reference&#34;&gt;Locale Reference
&lt;/h2&gt;&lt;p&gt;See the &lt;a class=&#34;link&#34; href=&#34;https://trippy.rs/reference/locale/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Locale Reference&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;versions&#34;&gt;Versions
&lt;/h2&gt;&lt;p&gt;See the &lt;a class=&#34;link&#34; href=&#34;https://trippy.rs/reference/version/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Version Reference&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;frequently-asked-questions&#34;&gt;Frequently Asked Questions
&lt;/h2&gt;&lt;h3 id=&#34;why-does-trippy-show-awaiting-data&#34;&gt;Why does Trippy show &amp;ldquo;Awaiting data&amp;hellip;&amp;rdquo;?
&lt;/h3&gt;&lt;p&gt;See the &lt;a class=&#34;link&#34; href=&#34;https://trippy.rs/guides/faq/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Awaiting Data&lt;/a&gt; guide.&lt;/p&gt;
&lt;p&gt;&lt;a name=&#34;windows-defender&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;how-do-i-allow-incoming-icmp-traffic-in-the-windows-defender-firewall&#34;&gt;How do I allow incoming ICMP traffic in the Windows Defender firewall?
&lt;/h3&gt;&lt;p&gt;See the &lt;a class=&#34;link&#34; href=&#34;https://trippy.rs/guides/windows_firewall/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Windows Defender Firewall&lt;/a&gt; guide.&lt;/p&gt;
&lt;h3 id=&#34;what-are-the-recommended-settings-for-trippy&#34;&gt;What are the recommended settings for Trippy?
&lt;/h3&gt;&lt;p&gt;See the &lt;a class=&#34;link&#34; href=&#34;https://trippy.rs/guides/recommendation/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Recommended Tracing Settings&lt;/a&gt; guide.&lt;/p&gt;
&lt;/details&gt;
&lt;h2 id=&#34;acknowledgements&#34;&gt;Acknowledgements
&lt;/h2&gt;&lt;p&gt;Trippy is made possible by &lt;a class=&#34;link&#34; href=&#34;https://github.com/ratatui-org/ratatui&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ratatui&lt;/a&gt; (
formerly &lt;a class=&#34;link&#34; href=&#34;https://github.com/fdehau/tui-rs&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;tui-rs&lt;/a&gt;),
&lt;a class=&#34;link&#34; href=&#34;https://github.com/crossterm-rs/crossterm&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;crossterm&lt;/a&gt; as well
as &lt;a class=&#34;link&#34; href=&#34;https://github.com/fujiapple852/trippy/blob/master/Cargo.toml&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;several&lt;/a&gt; foundational Rust libraries.&lt;/p&gt;
&lt;p&gt;Trippy draws heavily from &lt;a class=&#34;link&#34; href=&#34;https://github.com/traviscross/mtr&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;mtr&lt;/a&gt; and also incorporates ideas
from both &lt;a class=&#34;link&#34; href=&#34;https://github.com/libparistraceroute/libparistraceroute&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;libparistraceroute&lt;/a&gt;
&amp;amp; &lt;a class=&#34;link&#34; href=&#34;https://github.com/insomniacslk/dublin-traceroute&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Dublin Traceroute&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The Trippy networking code is inspired by &lt;a class=&#34;link&#34; href=&#34;https://github.com/libpnet/libpnet&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;pnet&lt;/a&gt; and some elements of that codebase
are incorporated in Trippy.&lt;/p&gt;
&lt;p&gt;The &lt;a class=&#34;link&#34; href=&#34;https://en.wikipedia.org/wiki/Autonomous_system_%28Internet%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;AS&lt;/a&gt; data is retrieved from
the &lt;a class=&#34;link&#34; href=&#34;https://team-cymru.com/community-services/ip-asn-mapping/#dns&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;IP to ASN Mapping Service&lt;/a&gt; provided
by &lt;a class=&#34;link&#34; href=&#34;https://team-cymru.com&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Team Cymru&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The &lt;a class=&#34;link&#34; href=&#34;https://trippy.cli.rs&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;trippy.cli.rs&lt;/a&gt; CNAME hosting is provided by &lt;a class=&#34;link&#34; href=&#34;https://cli.rs&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;cli.rs&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The Trippy chat room is sponsored by &lt;a class=&#34;link&#34; href=&#34;https://zulip.com&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Zulip&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Trippy logo designed by &lt;a class=&#34;link&#34; href=&#34;https://www.instagram.com/harunocaksiz&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Harun Ocaksiz Design&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;license&#34;&gt;License
&lt;/h2&gt;&lt;p&gt;This project is distributed under the terms of the Apache License (Version 2.0).&lt;/p&gt;
&lt;p&gt;Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in time by you, as defined
in the Apache-2.0 license, shall be licensed as above, without any additional terms or conditions.&lt;/p&gt;
&lt;p&gt;See &lt;a class=&#34;link&#34; href=&#34;LICENSE&#34; &gt;LICENSE&lt;/a&gt; for details.&lt;/p&gt;
&lt;p&gt;Copyright 2022 &lt;a class=&#34;link&#34; href=&#34;https://github.com/fujiapple852/trippy/graphs/contributors&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Trippy Contributors&lt;/a&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>edit</title>
        <link>https://producthunt.programnotes.cn/en/p/edit/</link>
        <pubDate>Fri, 27 Jun 2025 15:29:25 +0800</pubDate>
        
        <guid>https://producthunt.programnotes.cn/en/p/edit/</guid>
        <description>&lt;img src="https://images.unsplash.com/photo-1649902241864-eeba8d1adffd?ixid=M3w0NjAwMjJ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3NTEwMDkzNTV8&amp;ixlib=rb-4.1.0" alt="Featured image of post edit" /&gt;&lt;h1 id=&#34;microsoftedit&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/microsoft/edit&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;microsoft/edit&lt;/a&gt;
&lt;/h1&gt;&lt;h1 id=&#34;edit&#34;&gt;Edit
&lt;/h1&gt;&lt;p&gt;A simple editor for simple needs.&lt;/p&gt;
&lt;p&gt;This editor pays homage to the classic &lt;a class=&#34;link&#34; href=&#34;https://en.wikipedia.org/wiki/MS-DOS_Editor&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;MS-DOS Editor&lt;/a&gt;, but with a modern interface and input controls similar to VS Code. The goal is to provide an accessible editor that even users largely unfamiliar with terminals can easily use.&lt;/p&gt;
&lt;h2 id=&#34;installation&#34;&gt;Installation
&lt;/h2&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://repology.org/project/microsoft-edit/versions&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://repology.org/badge/vertical-allrepos/microsoft-edit.svg?exclude_unsupported=1&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Packaging status&#34;
	
	
&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You can also download binaries from &lt;a class=&#34;link&#34; href=&#34;https://github.com/microsoft/edit/releases/latest&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;our Releases page&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;windows&#34;&gt;Windows
&lt;/h3&gt;&lt;p&gt;You can install the latest version with WinGet:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;winget&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;install&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Microsoft&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;Edit&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;build-instructions&#34;&gt;Build Instructions
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.rust-lang.org/tools/install&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Install Rust&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Install the nightly toolchain: &lt;code&gt;rustup install nightly&lt;/code&gt;
&lt;ul&gt;
&lt;li&gt;Alternatively, set the environment variable &lt;code&gt;RUSTC_BOOTSTRAP=1&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Clone the repository&lt;/li&gt;
&lt;li&gt;For a release build, run: &lt;code&gt;cargo build --config .cargo/release.toml --release&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;notes-to-package-maintainers&#34;&gt;Notes to Package Maintainers
&lt;/h2&gt;&lt;h3 id=&#34;package-naming&#34;&gt;Package Naming
&lt;/h3&gt;&lt;p&gt;The canonical executable name is &amp;ldquo;edit&amp;rdquo; and the alternative name is &amp;ldquo;msedit&amp;rdquo;.
We&amp;rsquo;re aware of the potential conflict of &amp;ldquo;edit&amp;rdquo; with existing commands and recommend alternatively naming packages and executables &amp;ldquo;msedit&amp;rdquo;.
Names such as &amp;ldquo;ms-edit&amp;rdquo; should be avoided.
Assigning an &amp;ldquo;edit&amp;rdquo; alias is recommended, if possible.&lt;/p&gt;
&lt;h3 id=&#34;icu-library-name-soname&#34;&gt;ICU library name (SONAME)
&lt;/h3&gt;&lt;p&gt;This project &lt;em&gt;optionally&lt;/em&gt; depends on the ICU library for its Search and Replace functionality.
By default, the project will look for a SONAME without version suffix:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Windows: &lt;code&gt;icuuc.dll&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;macOS: &lt;code&gt;libicuuc.dylib&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;UNIX, and other OS: &lt;code&gt;libicuuc.so&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If your installation uses a different SONAME, please set the following environment variable at build time:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;EDIT_CFG_ICUUC_SONAME&lt;/code&gt;:
For instance, &lt;code&gt;libicuuc.so.76&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;EDIT_CFG_ICUI18N_SONAME&lt;/code&gt;:
For instance, &lt;code&gt;libicui18n.so.76&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Additionally, this project assumes that the ICU exports are exported without &lt;code&gt;_&lt;/code&gt; prefix and without version suffix, such as &lt;code&gt;u_errorName&lt;/code&gt;.
If your installation uses versioned exports, please set:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;EDIT_CFG_ICU_CPP_EXPORTS&lt;/code&gt;:
If set to &lt;code&gt;true&lt;/code&gt;, it&amp;rsquo;ll look for C++ symbols such as &lt;code&gt;_u_errorName&lt;/code&gt;.
Enabled by default on macOS.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;EDIT_CFG_ICU_RENAMING_VERSION&lt;/code&gt;:
If set to a version number, such as &lt;code&gt;76&lt;/code&gt;, it&amp;rsquo;ll look for symbols such as &lt;code&gt;u_errorName_76&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Finally, you can set the following environment variables:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;EDIT_CFG_ICU_RENAMING_AUTO_DETECT&lt;/code&gt;:
If set to &lt;code&gt;true&lt;/code&gt;, the executable will try to detect the &lt;code&gt;EDIT_CFG_ICU_RENAMING_VERSION&lt;/code&gt; value at runtime.
The way it does this is not officially supported by ICU and as such is not recommended to be relied upon.
Enabled by default on UNIX (excluding macOS) if no other options are set.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To test your settings, run &lt;code&gt;cargo test&lt;/code&gt; again but with the &lt;code&gt;--ignored&lt;/code&gt; flag. For instance:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cargo &lt;span class=&#34;nb&#34;&gt;test&lt;/span&gt; -- --ignored
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
        </item>
        <item>
        <title>AppFlowy</title>
        <link>https://producthunt.programnotes.cn/en/p/appflowy/</link>
        <pubDate>Fri, 30 May 2025 15:29:53 +0800</pubDate>
        
        <guid>https://producthunt.programnotes.cn/en/p/appflowy/</guid>
        <description>&lt;img src="https://images.unsplash.com/photo-1681174069988-e55036dddc54?ixid=M3w0NjAwMjJ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3NDg1OTAxMDZ8&amp;ixlib=rb-4.1.0" alt="Featured image of post AppFlowy" /&gt;&lt;h1 id=&#34;appflowy-ioappflowy&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/AppFlowy-IO/AppFlowy&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;AppFlowy-IO/AppFlowy&lt;/a&gt;
&lt;/h1&gt;&lt;h1 align=&#34;center&#34; style=&#34;border-bottom: none&#34;&gt;
    &lt;b&gt;
        &lt;a href=&#34;https://www.appflowy.com&#34;&gt;AppFlowy&lt;/a&gt;&lt;br&gt;
    &lt;/b&gt;
    ⭐️  The Open Source Alternative To Notion  ⭐️ &lt;br&gt;
&lt;/h1&gt;
&lt;p align=&#34;center&#34;&gt;
AppFlowy is the AI workspace where you achieve more without losing control of your data
&lt;/p&gt;
&lt;p align=&#34;center&#34;&gt;
&lt;a href=&#34;https://discord.gg/9Q2xaN37tV&#34;&gt;&lt;img src=&#34;https://img.shields.io/badge/AppFlowy.IO-discord-orange&#34;&gt;&lt;/a&gt;
&lt;a href=&#34;https://github.com/AppFlowy-IO/appflowy&#34;&gt;&lt;img src=&#34;https://img.shields.io/github/stars/AppFlowy-IO/appflowy.svg?style=flat&amp;logo=github&amp;colorB=deeppink&amp;label=stars&#34;&gt;&lt;/a&gt;
&lt;a href=&#34;https://github.com/AppFlowy-IO/appflowy&#34;&gt;&lt;img src=&#34;https://img.shields.io/github/forks/AppFlowy-IO/appflowy.svg&#34;&gt;&lt;/a&gt;
&lt;a href=&#34;https://opensource.org/licenses/AGPL-3.0&#34;&gt;&lt;img src=&#34;https://img.shields.io/badge/license-AGPL-purple.svg&#34; alt=&#34;License: AGPL&#34;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p align=&#34;center&#34;&gt;
    &lt;a href=&#34;https://www.appflowy.com&#34;&gt;&lt;b&gt;Website&lt;/b&gt;&lt;/a&gt; •
    &lt;a href=&#34;https://forum.appflowy.io/&#34;&gt;&lt;b&gt;Forum&lt;/b&gt;&lt;/a&gt; •
    &lt;a href=&#34;https://discord.gg/9Q2xaN37tV&#34;&gt;&lt;b&gt;Discord&lt;/b&gt;&lt;/a&gt; •
    &lt;a href=&#34;https://www.reddit.com/r/AppFlowy&#34;&gt;&lt;b&gt;Reddit&lt;/b&gt;&lt;/a&gt; •
    &lt;a href=&#34;https://twitter.com/appflowy&#34;&gt;&lt;b&gt;Twitter&lt;/b&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p align=&#34;center&#34;&gt;&lt;img src=&#34;https://appflowy.com/_next/static/media/tasks.796c753e.png&#34; alt=&#34;AppFlowy Kanban Board for To-dos&#34;  /&gt;&lt;/p&gt;
&lt;p align=&#34;center&#34;&gt;&lt;img src=&#34;https://appflowy.com/_next/static/media/Grid.9e30484b.png&#34; alt=&#34;AppFlowy Databases for Tasks and Projects&#34;  /&gt;&lt;/p&gt;
&lt;p align=&#34;center&#34;&gt;&lt;img src=&#34;https://appflowy.com/_next/static/media/sites.a8d5b2b9.png&#34; alt=&#34;AppFlowy Sites for Beautiful documentation&#34;  /&gt;&lt;/p&gt;
&lt;p align=&#34;center&#34;&gt;&lt;img src=&#34;https://appflowy.com/_next/static/media/ai.e1460982.png&#34; alt=&#34;AppFlowy AI&#34; /&gt;&lt;/p&gt;
&lt;p align=&#34;center&#34;&gt;&lt;img src=&#34;https://appflowy.com/_next/static/media/template.9ea13c3b.png&#34; alt=&#34;AppFlowy Templates&#34;  /&gt;&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;/br&gt;&lt;/p&gt;
&lt;p align=&#34;center&#34; &gt;
    &lt;img src=&#34;https://github.com/user-attachments/assets/5841c491-b564-4a26-b9b6-191def430911&#34; alt=&#34;Work across devices&#34; width=&#34;1040px&#34; /&gt;&lt;/p&gt;
&lt;p align=&#34;center&#34; &gt;
    &lt;img src=&#34;https://github.com/user-attachments/assets/c2ba6bb8-746c-4743-9393-d008a669be95&#34; alt=&#34;Work across devices&#34; width=&#34;1040px&#34; /&gt;&lt;/p&gt;
&lt;p align=&#34;center&#34; &gt;
    &lt;img src=&#34;https://github.com/user-attachments/assets/e83dd1a3-4975-4d0e-91a1-9eb6e0d248cd&#34; alt=&#34;Work across devices&#34; width=&#34;1040px&#34; /&gt;&lt;/p&gt;
&lt;h2 id=&#34;user-installation&#34;&gt;User Installation
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/AppFlowy-IO/AppFlowy/releases&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Download AppFlowy Desktop (macOS, Windows, and Linux)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Other
channels: &lt;a class=&#34;link&#34; href=&#34;https://flathub.org/apps/io.appflowy.AppFlowy&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;FlatHub&lt;/a&gt;, &lt;a class=&#34;link&#34; href=&#34;https://snapcraft.io/appflowy&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Snapcraft&lt;/a&gt;, &lt;a class=&#34;link&#34; href=&#34;https://sourceforge.net/projects/appflowy/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Sourceforge&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Available on
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://apps.apple.com/app/appflowy/id6457261352&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;App Store&lt;/a&gt;: iPhone&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://play.google.com/store/apps/details?id=io.appflowy.appflowy&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Play Store&lt;/a&gt;: Android 10 or above; ARMv7 is
not supported&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://appflowy.com/docs/self-host-appflowy-overview&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Self-hosting AppFlowy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://docs.appflowy.io/docs/documentation/appflowy/from-source&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Source&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;built-with&#34;&gt;Built With
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://flutter.dev/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Flutter&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.rust-lang.org/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Rust&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;stay-up-to-date&#34;&gt;Stay Up-to-Date
&lt;/h2&gt;&lt;p align=&#34;center&#34;&gt;&lt;img src=&#34;https://github.com/AppFlowy-IO/appflowy/blob/main/doc/imgs/howtostar.gif&#34; alt=&#34;AppFlowy Github - how to star the repo&#34; width=&#34;100%&#34; /&gt;&lt;/p&gt;
&lt;h2 id=&#34;getting-started-with-development&#34;&gt;Getting Started with development
&lt;/h2&gt;&lt;p&gt;Please view the &lt;a class=&#34;link&#34; href=&#34;https://docs.appflowy.io/docs/documentation/appflowy/from-source&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;documentation&lt;/a&gt; for OS specific
development instructions&lt;/p&gt;
&lt;h2 id=&#34;roadmap&#34;&gt;Roadmap
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://docs.appflowy.io/docs/appflowy/roadmap&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;AppFlowy Roadmap ReadMe&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/orgs/AppFlowy-IO/projects/5/views/12&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;AppFlowy Public Roadmap&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you&amp;rsquo;d like to propose a feature, submit a feature
request &lt;a class=&#34;link&#34; href=&#34;https://github.com/AppFlowy-IO/AppFlowy/issues/new?assignees=&amp;amp;labels=&amp;amp;template=feature_request.yaml&amp;amp;title=%5BFR%5D&amp;#43;&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;here&lt;/a&gt; &lt;br/&gt;
If you&amp;rsquo;d like to report a bug, submit a bug
report &lt;a class=&#34;link&#34; href=&#34;https://github.com/AppFlowy-IO/AppFlowy/issues/new?assignees=&amp;amp;labels=&amp;amp;template=bug_report.yaml&amp;amp;title=%5BBug%5D&amp;#43;&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;here&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;releases&#34;&gt;&lt;strong&gt;Releases&lt;/strong&gt;
&lt;/h2&gt;&lt;p&gt;Please see the &lt;a class=&#34;link&#34; href=&#34;https://appflowy.com/what-is-new&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;changelog&lt;/a&gt; for more details about a given release.&lt;/p&gt;
&lt;h2 id=&#34;contributing&#34;&gt;Contributing
&lt;/h2&gt;&lt;p&gt;Contributions make the open-source community a fantastic place to learn, inspire, and create. Any contributions you make
are &lt;strong&gt;greatly appreciated&lt;/strong&gt;. Please look
at &lt;a class=&#34;link&#34; href=&#34;https://docs.appflowy.io/docs/documentation/software-contributions/contributing-to-appflowy&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Contributing to AppFlowy&lt;/a&gt;
for details.&lt;/p&gt;
&lt;p&gt;If your Pull Request is accepted as it fixes a bug, adds functionality, or makes AppFlowy&amp;rsquo;s codebase significantly
easier to use or understand, &lt;strong&gt;Congratulations!&lt;/strong&gt; If your administrative and managerial work behind the scenes sustains
the community, &lt;strong&gt;Congratulations!&lt;/strong&gt; You are now an official contributor to AppFlowy.&lt;/p&gt;
&lt;h2 id=&#34;translations-&#34;&gt;Translations 🌎🗺
&lt;/h2&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://inlang.com/editor/github.com/AppFlowy-IO/AppFlowy?ref=badge&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://inlang.com/badge?url=github.com/AppFlowy-IO/AppFlowy&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;translation badge&#34;
	
	
&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;To add translations, you can manually edit the JSON translation files in &lt;code&gt;/frontend/resources/translations&lt;/code&gt;, use
the &lt;a class=&#34;link&#34; href=&#34;https://inlang.com/editor/github.com/AppFlowy-IO/AppFlowy&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;inlang online editor&lt;/a&gt;, or
run &lt;code&gt;npx inlang machine translate&lt;/code&gt; to add missing translations.&lt;/p&gt;
&lt;h2 id=&#34;join-the-community-to-build-appflowy-together&#34;&gt;Join the community to build AppFlowy together
&lt;/h2&gt;&lt;a href=&#34;https://github.com/AppFlowy-IO/AppFlowy/graphs/contributors&#34;&gt;
  &lt;img src=&#34;https://contrib.rocks/image?repo=AppFlowy-IO/AppFlowy&#34; /&gt;
&lt;/a&gt;
&lt;h2 id=&#34;why-are-we-building-this&#34;&gt;Why Are We Building This?
&lt;/h2&gt;&lt;p&gt;Notion has been our favourite project and knowledge management tool in recent years because of its aesthetic appeal and
functionality. Our team uses it daily, and we are on its paid plan. However, as we all know, Notion has its limitations.
These include weak data security and poor compatibility with mobile devices. Likewise, alternative collaborative
workplace management tools also have their constraints.&lt;/p&gt;
&lt;p&gt;The limitations we encountered using these tools and our past work experience with collaborative productivity tools have
led to our firm belief that there is a glass ceiling on what&amp;rsquo;s possible for these tools in the future. This emanates
from the fact that these tools will probably struggle to scale horizontally at some point and be forced to prioritize a
proportion of customers whose needs differ from the rest. While decision-makers want a workplace OS, it is impossible to
come up with a one-size fits all solution in such a fragmented market.&lt;/p&gt;
&lt;p&gt;When a customer&amp;rsquo;s evolving core needs are not satisfied, they either switch to another or build one from the ground up,
in-house. Consequently, they either go under another ceiling or buy an expensive ticket to learn a hard lesson. This is
a requirement for many resources and expertise, building a reliable and easy-to-use collaborative tool, not to mention
the speed and native experience. The same may apply to individual users as well.&lt;/p&gt;
&lt;p&gt;All these restrictions necessitate our mission - to make it possible for anyone to create apps that suit their needs
well.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;To individuals, we would like to offer Notion&amp;rsquo;s functionality, data security, and cross-platform native experience.&lt;/li&gt;
&lt;li&gt;To enterprises and hackers, AppFlowy is dedicated to offering building blocks and collaboration infra services to
enable you to make apps on your own. Moreover, you have 100% control of your data. You can design and modify AppFlowy
your way, with a single codebase written in Flutter and Rust supporting multiple platforms armed with long-term
maintainability.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We decided to achieve this mission by upholding the three most fundamental values:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Data privacy first&lt;/li&gt;
&lt;li&gt;Reliable native experience&lt;/li&gt;
&lt;li&gt;Community-driven extensibility&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We do not claim to outperform Notion in terms of functionality and design, at least for now. Besides, our priority
doesn&amp;rsquo;t lie in more functionality at the moment. Instead, we would like to cultivate a community to democratize the
knowledge and wheels of making complex workplace management tools while enabling people and businesses to create
beautiful things on their own by equipping them with a versatile toolbox of building blocks.&lt;/p&gt;
&lt;h2 id=&#34;license&#34;&gt;License
&lt;/h2&gt;&lt;p&gt;Distributed under the AGPLv3 License. See &lt;a class=&#34;link&#34; href=&#34;https://github.com/AppFlowy-IO/AppFlowy/blob/main/LICENSE&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;LICENSE.md&lt;/code&gt;&lt;/a&gt; for
more information.&lt;/p&gt;
&lt;h2 id=&#34;acknowledgments&#34;&gt;Acknowledgments
&lt;/h2&gt;&lt;p&gt;Special thanks to these amazing projects which help power AppFlowy:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/sagiegurari/cargo-make&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;cargo-make&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://contrib.rocks&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;contrib.rocks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://pub.dev/packages/flutter_chat_ui&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;flutter_chat_ui&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>typescript-go</title>
        <link>https://producthunt.programnotes.cn/en/p/typescript-go/</link>
        <pubDate>Wed, 28 May 2025 15:29:20 +0800</pubDate>
        
        <guid>https://producthunt.programnotes.cn/en/p/typescript-go/</guid>
        <description>&lt;img src="https://images.unsplash.com/photo-1540840054964-107a689b509c?ixid=M3w0NjAwMjJ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3NDg0MTcyOTd8&amp;ixlib=rb-4.1.0" alt="Featured image of post typescript-go" /&gt;&lt;h1 id=&#34;microsofttypescript-go&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/microsoft/typescript-go&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;microsoft/typescript-go&lt;/a&gt;
&lt;/h1&gt;&lt;h1 id=&#34;typescript-7&#34;&gt;TypeScript 7
&lt;/h1&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://devblogs.microsoft.com/typescript/typescript-native-port/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Not sure what this is? Read the announcement post!&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;preview&#34;&gt;Preview
&lt;/h2&gt;&lt;p&gt;A preview build is available on npm as &lt;code&gt;@typescript/native-preview&lt;/code&gt;.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm install @typescript/native-preview
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npx tsgo &lt;span class=&#34;c1&#34;&gt;# Use this as you would tsc.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;A preview VS Code extension is &lt;a class=&#34;link&#34; href=&#34;https://marketplace.visualstudio.com/items?itemName=TypeScriptTeam.native-preview&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;available on the VS Code marketplace&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;To use this, set this in your VS Code settings:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;typescript.experimental.useTsgo&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;how-to-build-and-run&#34;&gt;How to Build and Run
&lt;/h2&gt;&lt;p&gt;This repo uses &lt;a class=&#34;link&#34; href=&#34;https://go.dev/dl/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Go 1.24 or higher&lt;/a&gt;, &lt;a class=&#34;link&#34; href=&#34;https://www.rust-lang.org/tools/install&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Rust 1.85 or higher&lt;/a&gt;, &lt;a class=&#34;link&#34; href=&#34;https://nodejs.org/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Node.js with npm&lt;/a&gt;, and &lt;a class=&#34;link&#34; href=&#34;https://www.npmjs.com/package/hereby&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;hereby&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;For tests and code generation, this repo contains a git submodule to the main TypeScript repo pointing to the commit being ported.
When cloning, you&amp;rsquo;ll want to clone with submodules:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone --recurse-submodules https://github.com/microsoft/typescript-go.git
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;If you have already cloned the repo, you can initialize the submodule with:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git submodule update --init --recursive
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;With the submodule in place and &lt;code&gt;npm ci&lt;/code&gt;, you can run tasks via &lt;code&gt;hereby&lt;/code&gt;, similar to the TypeScript repo:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;hereby build          &lt;span class=&#34;c1&#34;&gt;# Verify that the project builds&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;hereby &lt;span class=&#34;nb&#34;&gt;test&lt;/span&gt;           &lt;span class=&#34;c1&#34;&gt;# Run all tests&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;hereby install-tools  &lt;span class=&#34;c1&#34;&gt;# Install additional tools such as linters&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;hereby lint           &lt;span class=&#34;c1&#34;&gt;# Run all linters&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;hereby format         &lt;span class=&#34;c1&#34;&gt;# Format all code&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;hereby generate       &lt;span class=&#34;c1&#34;&gt;# Generate all Go code (e.g. diagnostics, committed to repo)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Additional tasks are a work in progress.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;hereby&lt;/code&gt; is not required to work on the repo; the regular &lt;code&gt;go&lt;/code&gt; tooling (e.g., &lt;code&gt;go build&lt;/code&gt;, &lt;code&gt;go test ./...&lt;/code&gt;) will work as expected.
&lt;code&gt;hereby&lt;/code&gt; tasks are provided as a convenience for those familiar with the TypeScript repo.&lt;/p&gt;
&lt;h3 id=&#34;running-tsgo&#34;&gt;Running &lt;code&gt;tsgo&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;After running &lt;code&gt;hereby build&lt;/code&gt;, you can run &lt;code&gt;built/local/tsgo&lt;/code&gt;, which behaves mostly the same as &lt;code&gt;tsc&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&#34;running-lsp-prototype&#34;&gt;Running LSP Prototype
&lt;/h3&gt;&lt;p&gt;To debug and run the VS Code extension without installing it globally:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Run VS Code in the repo workspace (&lt;code&gt;code .&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Copy &lt;code&gt;.vscode/launch.template.json&lt;/code&gt; to &lt;code&gt;.vscode/launch.json&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;kbd&gt;F5&lt;/kbd&gt; (or &lt;code&gt;Debug: Start Debugging&lt;/code&gt; from the command palette)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This will launch a new VS Code instance which uses the Corsa LS as the backend. If correctly set up, you should see &amp;ldquo;tsgo&amp;rdquo; in the status bar when a TypeScript or JavaScript file is open:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://producthunt.programnotes.cn/.github/ls-screenshot.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;LSP Prototype Screenshot&#34;
	
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;what-works-so-far&#34;&gt;What Works So Far?
&lt;/h2&gt;&lt;p&gt;This is still a work in progress and is not yet at full feature parity with TypeScript. Bugs may exist. Please check this list carefully before logging a new issue or assuming an intentional change.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Feature&lt;/th&gt;
          &lt;th&gt;Status&lt;/th&gt;
          &lt;th&gt;Notes&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Program creation&lt;/td&gt;
          &lt;td&gt;done&lt;/td&gt;
          &lt;td&gt;Same files and module resolution as TS5.8. Not all resolution modes supported yet.&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Parsing/scanning&lt;/td&gt;
          &lt;td&gt;done&lt;/td&gt;
          &lt;td&gt;Exact same syntax errors as TS5.8&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Commandline and &lt;code&gt;tsconfig.json&lt;/code&gt; parsing&lt;/td&gt;
          &lt;td&gt;mostly done&lt;/td&gt;
          &lt;td&gt;Entry point slightly different for now&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Type resolution&lt;/td&gt;
          &lt;td&gt;done&lt;/td&gt;
          &lt;td&gt;Same types as TS5.8&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Type checking&lt;/td&gt;
          &lt;td&gt;done&lt;/td&gt;
          &lt;td&gt;Same errors, locations, and messages as TS5.8. Types printback in errors may display differently (in progress)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;JavaScript-specific inference and JS Doc&lt;/td&gt;
          &lt;td&gt;not ready&lt;/td&gt;
          &lt;td&gt;-&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;JSX&lt;/td&gt;
          &lt;td&gt;done&lt;/td&gt;
          &lt;td&gt;-&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Declaration emit&lt;/td&gt;
          &lt;td&gt;not ready&lt;/td&gt;
          &lt;td&gt;Coming soon&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Emit (JS output)&lt;/td&gt;
          &lt;td&gt;in progress&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;target: esnext&lt;/code&gt; well-supported, other targets may have gaps&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Watch mode&lt;/td&gt;
          &lt;td&gt;prototype&lt;/td&gt;
          &lt;td&gt;Watches files and rebuilds, but no incremental rechecking&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Build mode / project references&lt;/td&gt;
          &lt;td&gt;not ready&lt;/td&gt;
          &lt;td&gt;-&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Incremental build&lt;/td&gt;
          &lt;td&gt;not ready&lt;/td&gt;
          &lt;td&gt;-&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Language service (LSP)&lt;/td&gt;
          &lt;td&gt;prototype&lt;/td&gt;
          &lt;td&gt;Minimal functionality (errors, hover, go to def). More features coming soon&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;API&lt;/td&gt;
          &lt;td&gt;not ready&lt;/td&gt;
          &lt;td&gt;-&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Definitions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;done&lt;/strong&gt; aka &amp;ldquo;believed done&amp;rdquo;: We&amp;rsquo;re not currently aware of any deficits or major left work to do. OK to log bugs&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;in progress&lt;/strong&gt;: currently being worked on; some features may work and some might not. OK to log panics, but nothing else please&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;prototype&lt;/strong&gt;: proof-of-concept only; do not log bugs&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;not ready&lt;/strong&gt;: either haven&amp;rsquo;t even started yet, or far enough from ready that you shouldn&amp;rsquo;t bother messing with it yet&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;other-notes&#34;&gt;Other Notes
&lt;/h2&gt;&lt;p&gt;Long-term, we expect that this repo and its contents will be merged into &lt;code&gt;microsoft/TypeScript&lt;/code&gt;.
As a result, the repo and issue tracker for typescript-go will eventually be closed, so treat discussions/issues accordingly.&lt;/p&gt;
&lt;p&gt;For a list of intentional changes with respect to TypeScript 5.7, see CHANGES.md.&lt;/p&gt;
&lt;h2 id=&#34;contributing&#34;&gt;Contributing
&lt;/h2&gt;&lt;p&gt;This project welcomes contributions and suggestions.  Most contributions require you to agree to a
Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us
the rights to use your contribution. For details, visit &lt;a class=&#34;link&#34; href=&#34;https://cla.opensource.microsoft.com&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Contributor License Agreements&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;When you submit a pull request, a CLA bot will automatically determine whether you need to provide
a CLA and decorate the PR appropriately (e.g., status check, comment). Simply follow the instructions
provided by the bot. You will only need to do this once across all repos using our CLA.&lt;/p&gt;
&lt;p&gt;This project has adopted the &lt;a class=&#34;link&#34; href=&#34;https://opensource.microsoft.com/codeofconduct/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Microsoft Open Source Code of Conduct&lt;/a&gt;.
For more information see the &lt;a class=&#34;link&#34; href=&#34;https://opensource.microsoft.com/codeofconduct/faq/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Code of Conduct FAQ&lt;/a&gt; or
contact &lt;a class=&#34;link&#34; href=&#34;mailto:opencode@microsoft.com&#34; &gt;opencode@microsoft.com&lt;/a&gt; with any additional questions or comments.&lt;/p&gt;
&lt;h2 id=&#34;trademarks&#34;&gt;Trademarks
&lt;/h2&gt;&lt;p&gt;This project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft
trademarks or logos is subject to and must follow
&lt;a class=&#34;link&#34; href=&#34;https://www.microsoft.com/legal/intellectualproperty/trademarks/usage/general&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Microsoft&amp;rsquo;s Trademark &amp;amp; Brand Guidelines&lt;/a&gt;.
Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship.
Any use of third-party trademarks or logos are subject to those third-party&amp;rsquo;s policies.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>limbo</title>
        <link>https://producthunt.programnotes.cn/en/p/limbo/</link>
        <pubDate>Mon, 19 May 2025 15:30:44 +0800</pubDate>
        
        <guid>https://producthunt.programnotes.cn/en/p/limbo/</guid>
        <description>&lt;img src="https://images.unsplash.com/photo-1566221244511-3d2bd0b2f2aa?ixid=M3w0NjAwMjJ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3NDc2Mzk3MzV8&amp;ixlib=rb-4.1.0" alt="Featured image of post limbo" /&gt;&lt;h1 id=&#34;tursodatabaselimbo&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/tursodatabase/limbo&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;tursodatabase/limbo&lt;/a&gt;
&lt;/h1&gt;&lt;p align=&#34;center&#34;&gt;
  &lt;img src=&#34;limbo.png&#34; alt=&#34;Limbo&#34; width=&#34;800&#34;/&gt;
  &lt;h1 align=&#34;center&#34;&gt;Project Limbo&lt;/h1&gt;
&lt;/p&gt;
&lt;p align=&#34;center&#34;&gt;
  &lt;i&gt;Limbo&lt;/i&gt; is a project to build the modern evolution of SQLite.
&lt;/p&gt;
&lt;p align=&#34;center&#34;&gt;
  &lt;a title=&#34;Build Status&#34; target=&#34;_blank&#34; href=&#34;https://github.com/tursodatabase/limbo/actions/workflows/rust.yml&#34;&gt;&lt;img src=&#34;https://img.shields.io/github/actions/workflow/status/tursodatabase/limbo/rust.yml?style=flat-square&#34;&gt;&lt;/a&gt;
  &lt;a title=&#34;Releases&#34; target=&#34;_blank&#34; href=&#34;https://github.com/tursodatabase/limbo/releases&#34;&gt;&lt;img src=&#34;https://img.shields.io/github/release/tursodatabase/limbo?style=flat-square&amp;color=9CF&#34;&gt;&lt;/a&gt;
  &lt;a title=&#34;Rust&#34; target=&#34;_blank&#34; href=&#34;https://crates.io/crates/limbo&#34;&gt;&lt;img alt=&#34;PyPI&#34; src=&#34;https://img.shields.io/crates/v/limbo&#34;&gt;&lt;/a&gt;
  &lt;a title=&#34;JavaScript&#34; target=&#34;_blank&#34; href=&#34;https://www.npmjs.com/package/@tursodatabase/limbo&#34;&gt;&lt;img alt=&#34;PyPI&#34; src=&#34;https://img.shields.io/npm/v/@tursodatabase/limbo&#34;&gt;&lt;/a&gt;
  &lt;a title=&#34;Python&#34; target=&#34;_blank&#34; href=&#34;https://pypi.org/project/pylimbo/&#34;&gt;&lt;img alt=&#34;PyPI&#34; src=&#34;https://img.shields.io/pypi/v/pylimbo&#34;&gt;&lt;/a&gt;
  &lt;a title=&#34;MIT&#34; target=&#34;_blank&#34; href=&#34;https://github.com/tursodatabase/limbo/blob/main/LICENSE.md&#34;&gt;&lt;img src=&#34;http://img.shields.io/badge/license-MIT-orange.svg?style=flat-square&#34;&gt;&lt;/a&gt;
  &lt;br&gt;
  &lt;a title=&#34;GitHub Pull Requests&#34; target=&#34;_blank&#34; href=&#34;https://github.com/tursodatabase/limbo/pulls&#34;&gt;&lt;img src=&#34;https://img.shields.io/github/issues-pr-closed/tursodatabase/limbo.svg?style=flat-square&amp;color=FF9966&#34;&gt;&lt;/a&gt;
  &lt;a title=&#34;GitHub Commits&#34; target=&#34;_blank&#34; href=&#34;https://github.com/tursodatabase/limbo/commits/main&#34;&gt;&lt;img src=&#34;https://img.shields.io/github/commit-activity/m/tursodatabase/limbo.svg?style=flat-square&#34;&gt;&lt;/a&gt;
  &lt;a title=&#34;Last Commit&#34; target=&#34;_blank&#34; href=&#34;https://github.com/tursodatabase/limbo/commits/main&#34;&gt;&lt;img src=&#34;https://img.shields.io/github/last-commit/tursodatabase/limbo.svg?style=flat-square&amp;color=FF9900&#34;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p align=&#34;center&#34;&gt;
  &lt;a title=&#34;Developer&#39;s Discord&#34; target=&#34;_blank&#34; href=&#34;https://discord.gg/jgjmyYgHwB&#34;&gt;&lt;img alt=&#34;Chat with developers on Discord&#34; src=&#34;https://img.shields.io/discord/1258658826257961020?label=Discord&amp;logo=Discord&amp;style=social&#34;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;features-and-roadmap&#34;&gt;Features and Roadmap
&lt;/h2&gt;&lt;p&gt;Limbo is a &lt;em&gt;work-in-progress&lt;/em&gt;, in-process OLTP database engine library written in Rust that has:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Asynchronous I/O&lt;/strong&gt; support on Linux with &lt;code&gt;io_uring&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SQLite compatibility&lt;/strong&gt; [&lt;a class=&#34;link&#34; href=&#34;COMPAT.md&#34; &gt;doc&lt;/a&gt;] for SQL dialect, file formats, and the C API&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Language bindings&lt;/strong&gt; for JavaScript/WebAssembly, Rust, Go, Python, and &lt;a class=&#34;link&#34; href=&#34;bindings/java&#34; &gt;Java&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OS support&lt;/strong&gt; for Linux, macOS, and Windows&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In the future, we will be also working on:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Integrated vector search&lt;/strong&gt; for embeddings and vector similarity.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;BEGIN CONCURRENT&lt;/code&gt;&lt;/strong&gt; for improved write throughput.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Improved schema management&lt;/strong&gt; including better &lt;code&gt;ALTER&lt;/code&gt; support and strict column types by default.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;getting-started&#34;&gt;Getting Started
&lt;/h2&gt;&lt;details&gt;
&lt;summary&gt;💻 Command Line&lt;/summary&gt;
&lt;br&gt;
You can install the latest `limbo` release with:
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl --proto &lt;span class=&#34;s1&#34;&gt;&amp;#39;=https&amp;#39;&lt;/span&gt; --tlsv1.2 -LsSf &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  https://github.com/tursodatabase/limbo/releases/latest/download/limbo_cli-installer.sh &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Then launch the shell to execute SQL statements:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-console&#34; data-lang=&#34;console&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;Limbo
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;Enter &amp;#34;.help&amp;#34; for usage hints.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;Connected to a transient in-memory database.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;Use &amp;#34;.open FILENAME&amp;#34; to reopen on a persistent database
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;limbo&amp;gt; CREATE TABLE users (id INT PRIMARY KEY, username TEXT);
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;limbo&amp;gt; INSERT INTO users VALUES (1, &amp;#39;alice&amp;#39;);
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;limbo&amp;gt; INSERT INTO users VALUES (2, &amp;#39;bob&amp;#39;);
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;limbo&amp;gt; SELECT * FROM users;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;1|alice
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;2|bob
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;You can also build and run the latest development version with:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cargo run
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/details&gt;
&lt;details&gt;
&lt;summary&gt;🦀 Rust&lt;/summary&gt;
&lt;br&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-console&#34; data-lang=&#34;console&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;cargo add limbo
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Example usage:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-rust&#34; data-lang=&#34;rust&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;db&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Builder&lt;/span&gt;::&lt;span class=&#34;n&#34;&gt;new_local&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;sqlite.db&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;).&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;build&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;().&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;await&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;?&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;conn&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;db&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;connect&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;?&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;res&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;conn&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;query&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;SELECT * FROM users&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()).&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;await&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;?&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/details&gt;
&lt;details&gt;
&lt;summary&gt;✨ JavaScript&lt;/summary&gt;
&lt;br&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-console&#34; data-lang=&#34;console&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;npm i limbo-wasm
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Example usage:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;Database&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;limbo-wasm&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;db&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;Database&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;sqlite.db&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;stmt&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;db&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;prepare&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;SELECT * FROM users&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;users&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;stmt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;all&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;console&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;log&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;users&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/details&gt;
&lt;details&gt;
&lt;summary&gt;🐍 Python&lt;/summary&gt;
&lt;br&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-console&#34; data-lang=&#34;console&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;pip install pylimbo
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Example usage:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;limbo&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;con&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;limbo&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;connect&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;sqlite.db&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;cur&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;con&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cursor&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;res&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;cur&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;execute&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;SELECT * FROM users&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;res&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;fetchone&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;())&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/details&gt;
&lt;details&gt;
&lt;summary&gt;🐹 Go&lt;/summary&gt;
&lt;br&gt;
&lt;ol&gt;
&lt;li&gt;Clone the repository&lt;/li&gt;
&lt;li&gt;Build the library and set your LD_LIBRARY_PATH to include limbo&amp;rsquo;s target directory&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-console&#34; data-lang=&#34;console&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;cargo build --package limbo-go
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;export LD_LIBRARY_PATH=/path/to/limbo/target/debug:$LD_LIBRARY_PATH
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ol start=&#34;3&#34;&gt;
&lt;li&gt;Use the driver&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-console&#34; data-lang=&#34;console&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;go get github.com/tursodatabase/limbo
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;go install github.com/tursodatabase/limbo
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Example usage:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-go&#34; data-lang=&#34;go&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;database/sql&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;_&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;github.com/tursodatabase/limbo&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;conn&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;_&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;sql&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;Open&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;sqlite3&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;sqlite.db&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;defer&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;conn&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;Close&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;stmt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;_&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;conn&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;Prepare&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;select * from users&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;defer&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;stmt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;Close&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;rows&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;_&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;stmt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;Query&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;rows&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;Next&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;var&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;id&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;var&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;username&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;_&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;rows&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;Scan&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;id&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;username&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;fmt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;Printf&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;User: ID: %d, Username: %s\n&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;id&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;username&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/details&gt;
&lt;details&gt;
&lt;summary&gt;☕️ Java&lt;/summary&gt;
&lt;br&gt;
&lt;p&gt;We integrated Limbo into JDBC. For detailed instructions on how to use Limbo with java, please refer to
the &lt;a class=&#34;link&#34; href=&#34;bindings/java/README.md&#34; &gt;README.md under bindings/java&lt;/a&gt;.&lt;/p&gt;
&lt;/details&gt;
&lt;h2 id=&#34;contributing&#34;&gt;Contributing
&lt;/h2&gt;&lt;p&gt;We&amp;rsquo;d love to have you contribute to Limbo! Please check out the &lt;a class=&#34;link&#34; href=&#34;https://github.com/tursodatabase/limbo/blob/main/CONTRIBUTING.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;contribution guide&lt;/a&gt; to get started.&lt;/p&gt;
&lt;h2 id=&#34;faq&#34;&gt;FAQ
&lt;/h2&gt;&lt;h3 id=&#34;how-is-limbo-different-from-tursos-libsql&#34;&gt;How is Limbo different from Turso&amp;rsquo;s libSQL?
&lt;/h3&gt;&lt;p&gt;Limbo is a project to build the modern evolution of SQLite in Rust, with a strong open contribution focus and features like native async support, vector search, and more. The libSQL project is also an attempt to evolve SQLite in a similar direction, but through a fork rather than a rewrite.&lt;/p&gt;
&lt;p&gt;Rewriting SQLite in Rust started as an unassuming experiment, and due to its incredible success, replaces libSQL as our intended direction. At this point, libSQL is production ready, Limbo is not - although it is evolving rapidly. As the project starts to near production readiness, we plan to rename it to just &amp;ldquo;Turso&amp;rdquo;. More details &lt;a class=&#34;link&#34; href=&#34;https://turso.tech/blog/we-will-rewrite-sqlite-and-we-are-going-all-in&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;publications&#34;&gt;Publications
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Pekka Enberg, Sasu Tarkoma, Jon Crowcroft Ashwin Rao (2024). Serverless Runtime / Database Co-Design With Asynchronous I/O. In &lt;em&gt;EdgeSys ‘24&lt;/em&gt;. &lt;a class=&#34;link&#34; href=&#34;https://penberg.org/papers/penberg-edgesys24.pdf&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;[PDF]&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Pekka Enberg, Sasu Tarkoma, and Ashwin Rao (2023). Towards Database and Serverless Runtime Co-Design. In &lt;em&gt;CoNEXT-SW ’23&lt;/em&gt;. [&lt;a class=&#34;link&#34; href=&#34;https://penberg.org/papers/penberg-conext-sw-23.pdf&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;PDF&lt;/a&gt;] [&lt;a class=&#34;link&#34; href=&#34;https://penberg.org/papers/penberg-conext-sw-23-slides.pdf&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Slides&lt;/a&gt;]&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;license&#34;&gt;License
&lt;/h2&gt;&lt;p&gt;This project is licensed under the &lt;a class=&#34;link&#34; href=&#34;https://github.com/tursodatabase/limbo/blob/main/LICENSE.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;MIT license&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;contribution&#34;&gt;Contribution
&lt;/h3&gt;&lt;p&gt;Unless you explicitly state otherwise, any contribution intentionally submitted
for inclusion in Limbo by you, shall be licensed as MIT, without any additional
terms or conditions.&lt;/p&gt;
&lt;h2 id=&#34;contributors&#34;&gt;Contributors
&lt;/h2&gt;&lt;p&gt;Thanks to all the contributors to Limbo!&lt;/p&gt;
&lt;a href=&#34;https://github.com/tursodatabase/limbo/graphs/contributors&#34;&gt;
  &lt;img src=&#34;https://contrib.rocks/image?repo=tursodatabase/limbo&#34; /&gt;
&lt;/a&gt;
</description>
        </item>
        
    </channel>
</rss>
