{"id":15722238,"url":"https://github.com/arturo-lang/artsembly","last_synced_at":"2025-10-10T05:19:11.598Z","repository":{"id":108161873,"uuid":"337143055","full_name":"arturo-lang/artsembly","owner":"arturo-lang","description":"Arturo VM Bytecode assembler","archived":false,"fork":false,"pushed_at":"2024-05-07T14:49:47.000Z","size":25,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-10-05T18:49:27.953Z","etag":null,"topics":["arturo","arturo-package","assembler","bytecode","bytecode-compiler","vm"],"latest_commit_sha":null,"homepage":"","language":null,"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/arturo-lang.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}},"created_at":"2021-02-08T16:47:48.000Z","updated_at":"2024-10-16T13:52:20.000Z","dependencies_parsed_at":null,"dependency_job_id":"aed0f534-6864-4a78-905a-f8101608274a","html_url":"https://github.com/arturo-lang/artsembly","commit_stats":{"total_commits":13,"total_committers":2,"mean_commits":6.5,"dds":0.3076923076923077,"last_synced_commit":"300ea54417feac1fd2bc60968b086d4b3ad00117"},"previous_names":["arturo-lang/artsembly"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/arturo-lang/artsembly","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arturo-lang%2Fartsembly","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arturo-lang%2Fartsembly/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arturo-lang%2Fartsembly/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arturo-lang%2Fartsembly/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/arturo-lang","download_url":"https://codeload.github.com/arturo-lang/artsembly/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arturo-lang%2Fartsembly/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279002884,"owners_count":26083468,"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-10-10T02:00:06.843Z","response_time":62,"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":["arturo","arturo-package","assembler","bytecode","bytecode-compiler","vm"],"created_at":"2024-10-03T22:05:35.643Z","updated_at":"2025-10-10T05:19:11.545Z","avatar_url":"https://github.com/arturo-lang.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e\n    ArtSembly\n\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n     \u003ci\u003eArturo VM Bytecode assembler for Arturo\u003c/i\u003e \n     \u003cbr\u003e\u003cbr\u003e\n     \u003cimg src=\"https://img.shields.io/github/license/arturo-lang/grafito?style=for-the-badge\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/language-Arturo-orange.svg?style=for-the-badge\"\u003e\n\u003c/p\u003e\n\n--- \n\n### What does this package do?\n\nThis package features a bytecode \"assembler\" for the Arturo programming language. In a few words, it allows to write bytecode for the Arturo VM directly, only in a friendly, Assembly-style fashion.\n\n\u003e [!WARNING]\n\u003e This package is to be considered mostly an - adventurous - experiment, highlighting what is possible and is not meant to be neither a replacement of Arturo nor a 100% functional bytecode assembler that aims to cover everything!\n\n### How do I use it?\n\nAll you have to do is `import` it and then pass a block (or text) of valid ArtSembly code. The returned value is always a Bytecode object, which means that you can either run it directly (via [`do`](https://arturo-lang.io/documentation/library/core/do/)) or manipulate it further, if you wish.\n\n#### Example \n\n```arturo\nimport \"artsembly\"!\n\ndo assemble {\n    push 0                 ; x: 0\n    store 'x\n\n    theLoop:\n        load 'x            ; print x\n        call 'print\n\n        load 'x\n        push 1\n        call 'add\n        store 'x           ; x: 1 + x\n\n        load 'x\n        push 5\n        call 'equal?       ; x = 5\n\n        jmpIf 'finished    ; if x = 5 -\u003e go to finished\n\n        goto 'theLoop      ; else -\u003e go back up\n\n    finished:\n        push \"finished!\"\n        call 'print        ; print \"finished!\"\n}\n```\n\n**Output:**\n\n```bash\n0\n1\n2\n3\n4\nfinished!\n```\n\n### Available commands\n\n| Name | Arguments | Description |\n|---|---|---|\n| `push` | :any | push a value onto the stack |\n| `store` | :literal, :string | store topmost stack item to given symbol |\n| `load` | :literal, :string | push given symbol value to stack |\n| `call` | :literal, :string | call given function by name |\n| `goto` | :literal, :string | go to given label |\n| `jmpIf` | :literal, :string | jump forward to given label if topmost stack value is true |\n| `jmpIfNot` | :literal, :string | jump forward to given label if topmost stack value is not true |\n\n\u003e [!TIP]\n\u003e As highlighted in the example above, all commands listed here are to be used solely *within* an `assemble` call.\n\n\u003chr/\u003e\n\n### License\n\nMIT License\n\nCopyright (c) 2024 Yanis Zafirópulos\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farturo-lang%2Fartsembly","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Farturo-lang%2Fartsembly","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farturo-lang%2Fartsembly/lists"}