{"id":13779453,"url":"https://github.com/yasl-lang/yasl","last_synced_at":"2025-05-11T12:33:34.358Z","repository":{"id":27949374,"uuid":"115676845","full_name":"yasl-lang/yasl","owner":"yasl-lang","description":"Bytecode Interpreter for Yet Another Scripting Language (YASL).","archived":false,"fork":false,"pushed_at":"2024-07-12T03:47:04.000Z","size":3130,"stargazers_count":63,"open_issues_count":54,"forks_count":14,"subscribers_count":5,"default_branch":"master","last_synced_at":"2024-08-03T18:14:03.174Z","etag":null,"topics":["bytecode","interpreter","language","scripting-language","scripting-languages","yasl"],"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/yasl-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":"2017-12-29T02:14:45.000Z","updated_at":"2024-05-09T00:06:24.000Z","dependencies_parsed_at":"2024-01-17T00:55:13.111Z","dependency_job_id":"ebf62638-020e-4332-96f2-879eff9bd3a6","html_url":"https://github.com/yasl-lang/yasl","commit_stats":null,"previous_names":[],"tags_count":69,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yasl-lang%2Fyasl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yasl-lang%2Fyasl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yasl-lang%2Fyasl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yasl-lang%2Fyasl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yasl-lang","download_url":"https://codeload.github.com/yasl-lang/yasl/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225049053,"owners_count":17412916,"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","interpreter","language","scripting-language","scripting-languages","yasl"],"created_at":"2024-08-03T18:01:05.370Z","updated_at":"2024-11-17T14:31:26.174Z","avatar_url":"https://github.com/yasl-lang.png","language":"C","funding_links":[],"categories":["C"],"sub_categories":[],"readme":"# YASL\nBytecode Interpreter for Yet Another Scripting Language (YASL).\nAn online interpreter (that you can use to try YASL from your browser without downloading anything) can be found [here](https://yasl-lang.github.io/playground/interpreter.html), or you can view the docs [here](https://yasl-lang.github.io/docs/).\n\n## Portability\nYASL is written in C99, and compiled and tested on Windows (MinGW and MSVC), Ubuntu (GCC, G++, Clang, Clang++, TCC), and MacOS (Clang, Clang++).\nTests are run on all platforms using Azure for CI. Additional tests for the CLI are also run on all non-Windows systems.\nIf you find a C99 compiler that YASL is not compatible with, please open an issue so I can do my best to fix this.\nYASL should eventually be completely compatible with any C99 compiler on any platform.\n\n## Platform Specific Code\nThe only platform-specific code found in YASL is for dynamically loading YASL modules written in C (as opposed to including them when compiling YASL).\nThis relies on `dlopen` for POSIX systems, and the Windows API for this on Windows. If you find a platform for which either of these doesn't work, please open an issue and I'll do my best to fix this.\n\n## Dependencies\nThe only dependencies YASL has are `dlopen.h` on POSIX systems and `windows.h` on Windows.\nIf either of these is a problem on your platform, these can also be disabled (although you won't be able to dynamically load YASL modules).\n\nBesides this, YASL uses no features not found in standard C99.\n\n## Installation\nYASL can be compiled from source with the following commands:\n```bash\ngit clone https://github.com/yasl-lang/yasl.git\ncd yasl\ncmake .\ncmake --build .\n```\n\nYou should then be able to type `./yasl -V` from within the `yasl` directory, which should print out the current version of YASL. YASL is not installed on your path, although doing so is easy. \n\n`install.sh`, which is included in this repo, will install `yasl` to `/usr/local/bin`, as well as install the headers/static library needed to embed YASL in a C or C++ project. This should work on all POSIX systems.\n\n## Running YASL Code\nA YASL script can be run using `yasl filename`. A REPL can be entered by typing `yasl` without any arguments. Other options can be seen by typing `yasl -h`.\n\n## Running Tests\n\nThe following can be used to execute the tests:\n\n```bash\n$\u003e ./tests.sh\n$\u003e ./tests\n```\n\nNote that `tests.sh` requires either Bash 4 or Z Shell in order to run. By default, it runs with `bash`, but you can\nrun `zsh tests.sh` if Bash 4 isn't available on your system (MacOS for example).\n\n`tests.sh` tests the YASL interpreter itself, as it would be invoked from the terminal. `tests` tests the YASL API itself + unittests.\n\nAll tests should execute with exitcode 0. If they do not, either there's a bug or your installation was incorrect. Either way, please open an issue if you can't figure it out.\n\n## Feature Requests\nIf you find yourself desiring a feature that YASL is missing, please open an issue on this repo with the `feature-request` tag, and outline what feature you want. There's no need to provide an implementation at this stage, just explain on the issue what you want added. This doesn't guarantee that I will add it. If I do, I'll open another isssue asking for an implementation of the feature, which can then be added to YASL once it's complete.\n\nKeep in mind that YASL is meant to be small, to facilitate easy embedding. As such, I'm fairly picky about new features, especially if they involve changes to the syntax. If a feature can be implemented as a library, I'm much more receptive, since libraries can be excluded from YASL fairly easily if they're not needed, whereas syntax cannot.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyasl-lang%2Fyasl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyasl-lang%2Fyasl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyasl-lang%2Fyasl/lists"}