{"id":50882365,"url":"https://github.com/heydocode/packed_dsl","last_synced_at":"2026-06-15T14:01:38.063Z","repository":{"id":362765876,"uuid":"1240636260","full_name":"heydocode/packed_dsl","owner":"heydocode","description":null,"archived":false,"fork":false,"pushed_at":"2026-06-14T11:58:59.000Z","size":85,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-14T13:24:24.878Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/heydocode.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-16T11:30:46.000Z","updated_at":"2026-06-14T11:59:03.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/heydocode/packed_dsl","commit_stats":null,"previous_names":["heydocode/packed_dsl"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/heydocode/packed_dsl","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heydocode%2Fpacked_dsl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heydocode%2Fpacked_dsl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heydocode%2Fpacked_dsl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heydocode%2Fpacked_dsl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/heydocode","download_url":"https://codeload.github.com/heydocode/packed_dsl/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heydocode%2Fpacked_dsl/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34365597,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-15T02:00:07.085Z","response_time":63,"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":[],"created_at":"2026-06-15T14:01:36.772Z","updated_at":"2026-06-15T14:01:38.054Z","avatar_url":"https://github.com/heydocode.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# packed_dsl\n\nThis project is in its planning stage and the information you can see below is\nspeculative, but it shows my thoughts  about the design and goals of `packed_dsl`.\n\n\u003cpicture\u003e\n   \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"art/header-dark.png\"\u003e\n   \u003cimg alt=\"Logo for Compact DSLs for Rust\" src=\"art/header-light.png\"\u003e\n\u003c/picture\u003e\n\n## About\n\nThis crate is made with a purpose to facilitate the creation of extremely compact and efficient mods / plugins / network protocols \nthrough custom bytecode DSLs, generated from Rust enums.\n\nThe crate's goals are:\n- minimizing disk and memory usage\n- reducing runtime overhead\n- providing deterministic and portable deserialization\n- depending only on `core`, allowing use in `no_std`, embedded, and allocator-free environments\n\nIn contrast to Lua and Wasm, `packed_dsl` is not intended for creating another general-purpose scripting language:\nit is intended for creating bytecode from high-level instructions defined by the programmer, that, once deserialized,\nare executed directly by Rust code, therefore minimizing runtime overhead even more.\n\nThe library handles:\n- DSL serialization \u0026 deserialization with a compact bytecode generation\n- automatic discriminant sizing\n- padding removal on serialization\n- compatibility check through compile-time hashes\n\nThe user remains responsible for handling the deserialized instructions. During compilation, \nthe crate computes hashes of all types used in the instruction set, then the instruction set itself.\nThe hash result is embedded into the binary, and a mod / plugin / network protocol can simply use\nthe public associated constant of the instruction enum to embed the hash into the DSL contents too.\nAt runtime, there's a negligible overhead: u64 == u64 (may be changed to u128).","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fheydocode%2Fpacked_dsl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fheydocode%2Fpacked_dsl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fheydocode%2Fpacked_dsl/lists"}