{"id":13996008,"url":"https://github.com/sin-ack/zigself","last_synced_at":"2026-01-28T20:47:04.641Z","repository":{"id":44388003,"uuid":"426539570","full_name":"sin-ack/zigself","owner":"sin-ack","description":"An implementation of the Self programming language in Zig","archived":false,"fork":false,"pushed_at":"2025-10-30T11:07:48.000Z","size":1355,"stargazers_count":203,"open_issues_count":12,"forks_count":6,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-11-16T03:29:24.054Z","etag":null,"topics":["interpreter","programming-language","self-language"],"latest_commit_sha":null,"homepage":"","language":"Zig","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sin-ack.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","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":"2021-11-10T08:19:25.000Z","updated_at":"2025-10-30T11:07:52.000Z","dependencies_parsed_at":"2023-02-19T00:00:57.281Z","dependency_job_id":"9b52ebb5-072c-4f08-a728-e066aa8a9886","html_url":"https://github.com/sin-ack/zigself","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/sin-ack/zigself","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sin-ack%2Fzigself","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sin-ack%2Fzigself/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sin-ack%2Fzigself/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sin-ack%2Fzigself/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sin-ack","download_url":"https://codeload.github.com/sin-ack/zigself/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sin-ack%2Fzigself/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28851302,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-28T15:15:36.453Z","status":"ssl_error","status_checked_at":"2026-01-28T15:15:13.020Z","response_time":57,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["interpreter","programming-language","self-language"],"created_at":"2024-08-09T14:03:43.757Z","updated_at":"2026-01-28T20:47:04.633Z","avatar_url":"https://github.com/sin-ack.png","language":"Zig","funding_links":[],"categories":["Zig"],"sub_categories":[],"readme":"## zigSelf\n\n[![Discord](https://img.shields.io/discord/983578577029181440?logo=discord\u0026logoColor=white\u0026logoWidth=20\u0026labelColor=7289DA\u0026label=Discord\u0026color=119334\u0026style=plastic)](https://discord.gg/HJ62kw6yvn) [![justforfunnoreally.dev badge](https://img.shields.io/badge/justforfunnoreally-dev-9ff)](https://justforfunnoreally.dev)\n\nAn implementation of the Self programming language with an actor model.\n\n## What is Self?\n\n[Self](https://selflanguage.org/) is a programming language designed in 1986 at\nXerox PARC. It is an object-oriented programming language which uses\n_prototype-based inheritance_ as its basis and message-passing as its execution\nmethod. It is dynamically (but strongly) typed.\n\nSelf uses an image-based approach for runtime. All the objects in the system\nare stored in a _Self world_ and turned into a _snapshot_ for saving. At\nruntime, objects can be interacted with, created and destroyed without losing\nstate on other objects.\n\n## What is zigSelf?\n\nzigSelf takes the good parts of Self (the global object hierarchy, the\nimage-based workflow, the visual programming, behavior sharing with parent slots,\n...), and leaves the bad parts behind (the ancient UI, cooperative scheduling, ...).\nIt also introduces [an actor system inspired by Erlang](https://sin-ack.github.io/posts/zigself-actor/)\nto replace the cooperative scheduling of the previous version and to bring some\nstructure to the system.\n\nzigSelf does not use the world provided with the original Self distribution, but\ninstead has its own. It also has a few quality-of-life changes to the syntax\nthat I've found to be useful, such as the `;` operator that allows for easier\nchaining of keyword messages.\n\nCurrently, zigSelf doesn't have the visual programming environment nor the snapshot\nsystem, but they are planned.\n\n## Build-time requirements\n\nYou need the Zig compiler, preferably one built with the known-good version\ncommit. You can find the source code, instructions for building, and more on the\n[Zig repository](https://github.com/ziglang/zig).\n\nLatest Zig version known to work is [0.16.0-dev.627+e6e4792a5](https://github.com/ziglang/zig/commit/e6e4792a5).\nEarlier and later versions may work but there are no guarantees.\n\n## Building zigSelf\n\n1. Clone the repository: `git clone https://github.com/sin-ack/zigself`\n2. Run the code: `zig build run -- examples/fibonacci.self`\n\nThat's it! If you want to build a release version, you can build one with\n`zig build -Doptimize=ReleaseFast` and the binary will be in `zig-out/bin/`.\n\nThere is an (experimental) REPL that you can run with `zig build run -- repl.self`.\n\n## Building for Wasm\n\nZigSelf is able to run as a WebAssembly module via WASI. To build it, add the\n`wasm32-wasi` target when building: `zig build -Dtarget=wasm32-wasi`\n\nYou can then run the resulting executable at `zig-out/bin/self.wasm` with\n[Wasmtime](https://github.com/bytecodealliance/wasmtime). Currently ZigSelf does\nnot support loading Self code via stdin, so you will need to give it filesystem\naccess like so: `wasmtime --mapdir=.::. zig-out/bin/self.wasm \u003cscript name\u003e`\n\n## Contributing\n\nAll contributions are welcome! Please follow [the contribution guidelines](CONTRIBUTING.md)\nfor details.\n\n## License\n\nzigSelf is licensed under the GNU General Public License version 3, so that the\nVM implementation remains open for everyone including end-users to study, modify\nand share. See [LICENSE](LICENSE) for more details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsin-ack%2Fzigself","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsin-ack%2Fzigself","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsin-ack%2Fzigself/lists"}