{"id":15034802,"url":"https://github.com/vinetwigs/vilmos","last_synced_at":"2025-07-12T06:34:10.142Z","repository":{"id":46265934,"uuid":"419005024","full_name":"Vinetwigs/vilmos","owner":"Vinetwigs","description":"Official vilmos visual language interpreter!","archived":false,"fork":false,"pushed_at":"2021-11-17T17:00:36.000Z","size":6394,"stargazers_count":35,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-09T23:05:02.792Z","etag":null,"topics":["art","cli","cli-app","esolang","esoteric-language","go","golang","golang-application","golang-cli","golang-examples","golang-library","golang-module","golang-package","image","interpreter","programming-language"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Vinetwigs.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}},"created_at":"2021-10-19T16:27:31.000Z","updated_at":"2024-08-29T06:03:24.000Z","dependencies_parsed_at":"2022-08-29T00:30:43.845Z","dependency_job_id":null,"html_url":"https://github.com/Vinetwigs/vilmos","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/Vinetwigs/vilmos","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vinetwigs%2Fvilmos","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vinetwigs%2Fvilmos/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vinetwigs%2Fvilmos/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vinetwigs%2Fvilmos/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Vinetwigs","download_url":"https://codeload.github.com/Vinetwigs/vilmos/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vinetwigs%2Fvilmos/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264951610,"owners_count":23687974,"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":["art","cli","cli-app","esolang","esoteric-language","go","golang","golang-application","golang-cli","golang-examples","golang-library","golang-module","golang-package","image","interpreter","programming-language"],"created_at":"2024-09-24T20:26:22.805Z","updated_at":"2025-07-12T06:34:10.117Z","avatar_url":"https://github.com/Vinetwigs.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n![GitHub code size in bytes](https://img.shields.io/github/languages/code-size/Vinetwigs/vilmos)\n![GitHub go.mod Go version](https://img.shields.io/github/go-mod/go-version/Vinetwigs/vilmos)\n![GitHub last commit](https://img.shields.io/github/last-commit/Vinetwigs/vilmos)\n[![stars - vilmos](https://img.shields.io/github/stars/Vinetwigs/vilmos?style=social)](https://github.com/Vinetwigs/vilmos)\n[![forks - vilmos](https://img.shields.io/github/forks/Vinetwigs/vilmos?style=social)](https://github.com/Vinetwigs/vilmos)\n[![License](https://img.shields.io/badge/License-Apache_License_2.0-orange)](#license)\n[![issues - vilmos](https://img.shields.io/github/issues/Vinetwigs/vilmos)](https://github.com/Vinetwigs/vilmos/issues)\n\n\u003ch1 align=\"center\"\u003evilmos interpreter\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n   \u003ci\u003e\n      Official \u003ca href=\"./docs/LANGUAGE.md\"\u003evilmos language\u003c/a\u003e interpreter.\n      Thanks to this application you will be able to see your paintings \n      come to life. The interpreter offers many useful tools to help your programming sessions!\n   \u003c/i\u003e\n\u003c/p\u003e\n\n## Table of Contents\n\n1. [Prerequisites](#prerequisites)\n2. [References](#references)\n3. [Installing](#installing)\n4. [How to use](#how-to-use)\n   1. [Get help](#get-help)\n   2. [Run a program](#run-a-program)\n   3. [Use bigger images](#use-bigger-images)\n   4. [Debugger](#debugger)\n   5. [Set max memory size](#set-max-memory-size)\n5. [Version](#version)\n6. [Author](#author)\n7. [Contributors](#contributors)\n8. [LICENSE](#license)\n\n\n### References\n\n* [Language Specification](./docs/LANGUAGE.md)\n* [Changelog](./docs/CHANGELOG.md)\n\n[Back to top](#table-of-contents)\n\n### Prerequisites\n\n* Make sure you have at least installed `Go v1.17` or your paintings may be blue.\n* Knowledge of [vilmos language](./docs/LANGUAGE.md)\n\n[Back to top](#table-of-contents)\n\n### Installing\n\n```\ngo install github.com/Vinetwigs/vilmos/v2\n```\n\n[Back to top](#table-of-contents)\n\n## How to use\n\n### Get help\nUse `vilmos help` command to get informations about interpreter usage.\n\n![help-gif](./docs/assets/help.gif)\n\nOptionally you can use alternative forms:\n* `vilmos -h`\n* `vilmos --help`\n\n[Back to top](#table-of-contents)\n\n### Run a program\n\n`vilmos -i \u003cFILE_PATH\u003e` is the easiest way to see your colors in action. Make sure your image is in **.png format**.\nBy default, each instruction is rapresented by a pixel.\n\nFor instance, let's try executing this vilmos program:\n\n![file-input](./docs/assets/vilmos_small.png)\n\nThis simple program, will output a cool ASCII art. Let's see it in action:\n\n![input-gif](./docs/assets/input_file.gif)\n\nAlternative forms:\n* `vilmos --input \u003cFILE_PATH\u003e` \n\n[Back to top](#table-of-contents)\n\n### Use bigger images\n\nThe program we used above is really cool in my opinion but it's kind too small.\nLet's use a bigger version of the same program to make it more appealing.\nIn this case, each instruction of our program it is no longer rapresented by a single pixel   \nbut by a 200x200px square.\n\n\u003cimg src=\"./docs/assets/vilmos_big.png\"\u003e\n\nPerfect! Now we can clearly see each instruction of our program.\n\nWhen we will run this program, we have to tell to the interpreter that the size of each instruction is a 200px per side square.\nThis is easily achievable using `-s \u003cSIZE\u003e` flag.\nFull instruction will be `vilmos -s 200 -i ./vilmos_big.png`\n\nLet's see it in action:\n\n![big-input-gif](./docs/assets/input_big.gif)\n\nAlternative forms:\n\n* `vilmos --instruction_size \u003cSIZE\u003e`\n* `vilmos --size \u003cSIZE\u003e`\n* `vilmos --is \u003cSIZE\u003e`\n\n[Back to top](#table-of-contents)\n\n### Debugger\n\nThanks to this useful tools integrated in vilmos interpreter, it is possible to execute our programs   \nstep by step printing in each step the stack content and a message explaing what the interpreter have done.   \nThis feature is useful to debug them and find \u0026 fix possible bugs.\n\nTo enable debugger mode all you need to do is using `-d` flag when running your painting.\n\nThis time we will use the following program:\n\n![counter-alt](./docs/assets/counter.png)\n\nThis charming program will simply put into the stack integers from 1 to MAX_INT without outputting anything.   \nTo see if our program works we will see the stack content through the debugger feature.\n\n![debugger-gif](./docs/assets/debugger.gif)\n\nAlternative forms:\n* `vilmos --debug`\n\n[Back to top](#table-of-contents)\n\n### Set max memory size\n\nThe problem with the above program execution is that it will run until it's manually stopped, because   \nby default there is no maximum memory size.\n\nTo specify a maximum size for the memory usable for your painting execution you have to use `vilmos -m \u003csize\u003e` flag.\nNow if you try to put in memory another element when the stack is full, an error will be launched    \nand the execution will be stopped.\n\nLet's see it in action setting the max stack size to 200 elements:\n\n![max-size-gif](./docs/assets/max_size.gif)\n\nAlternative forms:\n* `vilmos --max_size \u003cSIZE\u003e`\n\n[Back to top](#table-of-contents)\n\n### Use custom color codes\n\nThe true power of vilmos visual language is the capability of setting custom color codes for the instructions.   \nThis lets you have total control on your Art.\n\nTo achieve that, you have to compile a config.ini file provided by this repository.\nTo compile the configs, you have to specify color codes to override to the relative operation.\n\n**NOTICE:** you can see default instructions color codes in [language specification](./docs/LANGUAGE.md)\n\nThe color codes must be in the HEX format (without the #) and there are two supported formats:\n\n1. Full Hex code (a044d1)\n2. Short Hex code (fff)\n\nOnce you have chosen your favourite colors, you can set custom colors through the following flag:\n`vilmos -c \u003cCONFIG_FILE_PATH\u003e`.\n\n\nFor instance, we will override instructions to the image seen above to make it use orange pallette insteand of blue.\n\nNew version of out program will be:\n\n![config-counter-alt](./docs/assets/config_counter.png)\n\nAnd we will compile configs.ini file in the following way to match the colors we have chosen:\n\n```ini\n[Colors]\nAND=\nCYCLE=\nDIV=\nDUP=ffb732\nFILE_CLOSE=\nFILE_OPEN=\nINPUT_ASCII=\nINPUT_INT=\nLSHIFT=\nMOD=\nMUL=\nNAND=\nNOT=\nOR=\nOUTPUT=\nOUTPUT_ASCII=\nOUTPUT_INT=\nPOP=\nQUIT=\nRCYCLE=\nREVERSE=\nRND=\nRSHIFT=\nSUB=\nSUM=ffcb4b\nSWAP=\nWHILE=ffa300\nWHILE_END=ff834b\nXOR=\n```\n\nLet's see this new version in action:\n\n![configs-gif](./docs/assets/configs.gif)\n\nAlternative forms:\n* `vilmos --conf \u003cCONFIG_FILE_PATH\u003e`\n* `vilmos --config \u003cCONFIG_FILE_PATH\u003e`\n\n[Back to top](#table-of-contents)\n\n## Version\n\nTo print actual vilmos interpreter version you have different choices:\n* `vilmos version`\n* `vilmos --version`\n* `vilmos -V`\n* `vilmos -v`\n\n[Back to top](#table-of-contents)\n\n## Author\n- [Vinetwigs](https://github.com/Vinetwigs)\n\n[Back to top](#table-of-contents)\n\n## Contributors\n\u003ca href=\"https://github.com/Vinetwigs/vilmos/graphs/contributors\"\u003e\n  \u003cimg src=\"https://contrib.rocks/image?repo=Vinetwigs/vilmos\" /\u003e\n\u003c/a\u003e\n\n[Back to top](#table-of-contents)\n\n## License\n```text\n   Copyright 2021 Vinetwigs\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n```\n\n[Back to top](#table-of-contents)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvinetwigs%2Fvilmos","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvinetwigs%2Fvilmos","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvinetwigs%2Fvilmos/lists"}