跪拜 Guibai
← All articles
Backend · Architecture

Pure Rust Photoshop Rewrite Pulls 72,000 GitHub Stars in One Month

By leo在掘金 ·
Read original on juejin.cn ↗ Google Translate ↗ Alt translation

A small team using Rust and AI-assisted coding can now reproduce the core of a product like Photoshop, which puts pressure on the pricing and moats of thirty-year-old desktop software. The same cost pressure is pushing model inference off cloud APIs and onto local hardware.

Summary

PhotoCraft is a native, 100% Rust Photoshop rewrite from the storytold/photocraft repository. It opened on September 30 and crossed 71,991 stars with 12,719 forks in under a month. It reads and writes genuine PSD files, including layers, masks, adjustment layers, layer styles, text, vectors, and brushes, with no Electron wrapper.

Four companion Rust rewrites point the same direction: PdfCraft (17.5k stars) against Acrobat, FilmCraft (15.9k) against Premiere, WordCraft (15.8k) against Word, and LightCraft (14.5k) against Lightroom, roughly 136k stars combined. The claim: a thirty-year feature moat is partly historical baggage and partly real engineering, and AI-assisted coding has already cut the baggage half down to size. Rust earns its place with no GC pauses, predictable memory for multi-gigabyte image buffers, and consistent macOS/Windows/Linux builds.

PSD compatibility is where the risk sits. The format bundles layer trees, RLE or Zip pixel data, blend modes, adjustment layers, layer styles, vector masks, editable text, and smart objects, and bidirectional compatibility means tolerating malformed data from old versions while writing files Adobe will open. Star count proves demand, not completion.

Two adjacent projects reinforce the same cost argument. Magpie is a Go menu-bar gateway that routes agent SDKs to any model provider and auto-switches accounts on quota exhaustion. Strata is a C++ engine that runs Qwen3.8-Flash-Next on consumer GPUs and exposes an OpenAI-compatible API. Budget pressure, in this telling, favors local inference and open-source tooling over pure API dependencies.

Takeaways
— PhotoCraft, from storytold/photocraft, opened September 30 and reached 71,991 stars and 12,719 forks in under a month.
— It is a native 100% Rust application, not an Electron wrapper, and can read and write PSD files with layers, masks, adjustment layers, layer styles, text, vectors, and brushes.
— Companion Rust rewrites: PdfCraft 17.5k stars, FilmCraft 15.9k, WordCraft 15.8k, LightCraft 14.5k; with PhotoCraft the set totals about 136k stars.
— Rust's selection rationale: zero GC pauses, predictable memory use, and runtime-free cross-platform builds. A single 8000x6000 RGBA8 layer is 192MB before undo stacks and caches.
— PSD's layered format combines layer trees, RLE or Zip pixel data, blend modes, adjustment layers, layer styles, vector masks, text layers, and smart objects; bidirectional compatibility is the hard part.
— Rayon's par_chunks_mut(4) parallelizes per-pixel brightness adjustment across a thread pool; a 192MB layer can complete in tens of milliseconds on 8 cores.
— Magpie is a Go local gateway that redirects Claude Code, Codex, Gemini CLI, and OpenCode to different model providers and switches accounts when quotas run out.
— Strata is a C++ inference engine for Qwen3.8-Flash-Next on consumer GPUs, with a local OpenAI/Anthropic-compatible API and image input.
— Cloud always-on agent costs can exceed a 4090 in a month, plus quotas and rate limits; local inference trades first-token latency and concurrency, which batch workloads can tolerate.
— Philadelphia Semiconductor Index fell 12% in six trading days; Meta disclosed $825B in spending commitments; Amazon CEO says AI costs must drop tenfold for enterprise adoption.
Conclusions

Star counts on this scale measure demand. The byte-level format work will decide whether PhotoCraft survives contact with real files.

Five parallel rewrites aimed at Adobe and Microsoft products make a stronger case than any single repo: the defensible part of desktop software is shifting from initial implementation to long-term maintenance and format compatibility.

Choosing trait objects for adjustment layers in a first version is a deliberate trade: dynamic dispatch costs per pixel, but it keeps the architecture flexible for a wgpu backend, and performance can be optimized later.

Magpie's move to make model choice a system-level switch removes vendor lock-in from application code; the same agent code can point at any provider without a rebuild.

Concepts & terms
PSD
Adobe Photoshop's native layered file format. A PSD bundles a layer tree, pixel data (often RLE or Zip compressed), blend modes, adjustment layers, layer styles, vector masks, editable text layers, and smart objects in one file.
Rayon
A Rust data-parallelism library. par_chunks_mut splits a mutable byte slice into chunks processed in parallel by a thread pool, with Send/Sync safety checked at compile time.
Adjustment layer
A non-destructive editing layer that stores a filter or correction as a node in a chain. Original pixels stay unchanged and the chain is applied at render time, so edits can be reordered or removed.
Local model gateway
A local reverse proxy that intercepts OpenAI- or Anthropic-compatible API calls and routes them to different model providers. It lets a developer switch models by changing environment variables instead of application code.
Source: juejin.cn ↗ Google Translate ↗ Backup ↗