{"id":30051980,"url":"https://github.com/simongoricar/vulcan","last_synced_at":"2025-08-07T16:34:35.421Z","repository":{"id":307146954,"uuid":"695493443","full_name":"simongoricar/vulcan","owner":"simongoricar","description":"A crate and GUI for pixel sorting experiments.","archived":false,"fork":false,"pushed_at":"2025-07-29T17:14:56.000Z","size":309,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-07-29T19:24:11.408Z","etag":null,"topics":["glitch-art","pixel-sorting","rust"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/simongoricar.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-09-23T11:04:24.000Z","updated_at":"2025-07-29T17:15:00.000Z","dependencies_parsed_at":"2025-07-29T19:29:08.928Z","dependency_job_id":"05b62baa-5a39-427c-b590-fa05b49b3aec","html_url":"https://github.com/simongoricar/vulcan","commit_stats":null,"previous_names":["simongoricar/vulcan"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/simongoricar/vulcan","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simongoricar%2Fvulcan","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simongoricar%2Fvulcan/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simongoricar%2Fvulcan/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simongoricar%2Fvulcan/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/simongoricar","download_url":"https://codeload.github.com/simongoricar/vulcan/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simongoricar%2Fvulcan/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":269291062,"owners_count":24392379,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-07T02:00:09.698Z","response_time":73,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["glitch-art","pixel-sorting","rust"],"created_at":"2025-08-07T16:33:06.648Z","updated_at":"2025-08-07T16:34:35.395Z","avatar_url":"https://github.com/simongoricar.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003ch1 align=\"center\"\u003evulcan\u003c/h1\u003e\n  \u003ch6 align=\"center\"\u003epixel sorting software\u003c/h6\u003e\n\u003c/div\u003e\n\n---\n\nVulcan is a small suite of tools for pixel sorting, an image glitching technique.\n\n\n# 1. Project structure\nThis Rust project is split into two crates:\n- `vulcan-core`, which is a \"headless\" pixel sorting crate, to allow you to integrate pixel sorting without depending on any of the GUI code, and\n- `vulcan-gui`, which is a graphical application built on top of `vulcan-core` and `egui`, providing a nicer user experience for pixel sorting experiments.\n\n\n# 2. Building and running\nTo compile either just the core crate or the GUI, you'll need only one thing: the [Rust toolchain](https://rustup.rs/) installed (latest stable; tested on 1.88.0).\nThe rustup installer will guide you through the entire process, including installing any kind of dependencies (e.g. on Windows, where you'll have to also install the Visual Studio Build Tools - the installer will propmt you).\n\nAfter you've installed the Rust programming language, clone this repository and move into it. Then, simply run:\n```bash\n# Compiles and runs the graphical pixel sorting app.\ncargo run --release\n\n# Alternatively: build, then run the binary. The command above does both of these at once.\ncargo build --release\n./target/release/vulcan-gui\n```\n\nThe time it takes to build depends highly on your machine, but around 4 minutes is expected.\n\n## 2.1 Optimizations\nIf you wish to apply even more optimizations than the standard release mode when compiling, you can do the following at the expense of the compilation time:\n\n### 2.1.1 `codegen-units` and `lto`\nYou may uncomment `codegen-units` and `lto` in `Cargo.toml`. This will slow down the build speed considerably, but may provide some additional speed.\n```md\n[profile.release]\n# codegen-units = 1\n# lto = \"fat\"\n```\n\n### 2.1.2 Profile-guided optimization (PGO)\nThis is a pretty time-consuming step. You will need [`cargo-pgo`](https://github.com/Kobzol/cargo-pgo), so install it before continuing (`rustup component add llvm-tools-preview`, then `cargo install cargo-pgo`).\n\nBefore continuing, modify your `.cargo/config.toml` to manually set `target-cpu=native` (see [`cargo-pgo` caveats](https://github.com/Kobzol/cargo-pgo?tab=readme-ov-file#caveats)).\n\nFor example, for the `x86_64-unknown-linux-gnu` target, add the following section to `.cargo/config.toml`:\n```toml\n[target.x86_64-unknown-linux-gnu]\nrustflags = [\"-C\", \"target-cpu=native\"]\n```\n\n(you can see your target by running `rustc -vV` and looking under the `host:` line)\n\n\nTo optimize with PGO, follow these rough steps (you may want to read more about what this does in the [`rustc` book chapter on PGO](https://doc.rust-lang.org/rustc/profile-guided-optimization.html)):\n```bash\ncargo pgo bench\ncargo pgo optimize\n```\n\n\n---\n\n\n## 2.2 Other notes\nIf you want to build more generic platform binaries, you may want to *comment out* the `rustflags` in `.cargo/config.toml`.\nThis is likely to produce slightly slower, but will not be bound to specific features available on the CPU of the build machine.\n\n```md\n[build]\nrustflags = [\"-C\", \"target-cpu=native\"]\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimongoricar%2Fvulcan","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsimongoricar%2Fvulcan","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimongoricar%2Fvulcan/lists"}