{"id":18587540,"url":"https://github.com/inanyan/loop","last_synced_at":"2025-05-16T06:35:23.970Z","repository":{"id":217702913,"uuid":"744128494","full_name":"InAnYan/loop","owner":"InAnYan","description":"Loop programming language. Compiler and VM","archived":false,"fork":false,"pushed_at":"2024-03-24T11:14:25.000Z","size":480,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-17T17:57:29.556Z","etag":null,"topics":["bytecode","compiler","programming-language","vm"],"latest_commit_sha":null,"homepage":"","language":"C","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/InAnYan.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}},"created_at":"2024-01-16T17:17:11.000Z","updated_at":"2024-02-03T15:52:18.000Z","dependencies_parsed_at":"2024-03-24T12:24:46.618Z","dependency_job_id":"9af9f740-1ac1-42f2-a053-4b7fabffd184","html_url":"https://github.com/InAnYan/loop","commit_stats":null,"previous_names":["inanyan/loop"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/InAnYan%2Floop","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/InAnYan%2Floop/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/InAnYan%2Floop/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/InAnYan%2Floop/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/InAnYan","download_url":"https://codeload.github.com/InAnYan/loop/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254484685,"owners_count":22078757,"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","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":["bytecode","compiler","programming-language","vm"],"created_at":"2024-11-07T00:39:30.117Z","updated_at":"2025-05-16T06:35:23.952Z","avatar_url":"https://github.com/InAnYan.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Loop language\n\n## Description\nLoop is a dynamically-typed programming language. It is designed similar to Python, JavaScript, and TypeScript.\nThis project is made for educational purposes.\n\nThis repository contains the Loop compiler and Loop virtual machine.\n\n## Implementation\nLoop programs are compiled into bytecode, and then the virtual machine executes this opcode.\n\n- `loopc` is the byte-code compiler written in Python.\n- `loopvm` is the VM written in C.\n\nAll Loop source files have extension `.loop`. All compiled bytecode files have extension `.code`.\nThe compiled source is located in the directory `.loop_compiled` in the directory of the source file.\n\nThe implementation was evolved from code in Crafting Interpreters by Bob Nystrom.\n\n## Language features\n- Math: integers and arithmetics.\n- Global and local variables.\n- Functions.\n- Closures.\n- Module system.\n- Exceptions.\n- Object-oriented programming.\n\n## Status\nCurrently in not active development. There is no builtins and no functions on the data structures (strings, lists, and dictionaries).\n\n## Usage\nCurrently there is no release packages and the installation is a little bit daunting.\n\n- Firstly, install the compiler: `pip install -e loop_compiler`.\n  This command will give you scripts: `loopc.py` - compiler and `looprun.py` - compiler and runner.\n- Then you need to compile from source `loopvm` project (is uses CMake and have no external dependencies, so that should be easy).\n- After all of that, you should add the `loopvm` executable to `PATH` and also add an environment variable `LOOP_PACKAGES_PATH`, that\n  should point to `packages/` directory in this repository.\n\n## In plans\n- Add builtins.\n- Add new packages.\n- Write the compiler in Loop.\n- Write a formatter and an LSP server.\n\n## Some info about spec\nNames starting with \"_\" are internal and they can be redefined. The only thing that user can create is \"_\" variable (ignore).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finanyan%2Floop","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Finanyan%2Floop","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finanyan%2Floop/lists"}