{"id":22646692,"url":"https://github.com/livewareproblems/clia","last_synced_at":"2025-03-29T06:46:11.097Z","repository":{"id":174779463,"uuid":"652764649","full_name":"LivewareProblems/clia","owner":"LivewareProblems","description":"A glue language that has your back","archived":false,"fork":false,"pushed_at":"2025-02-13T09:43:07.000Z","size":223,"stargazers_count":0,"open_issues_count":17,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-13T10:33:14.897Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C","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/LivewareProblems.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":"2023-06-12T18:47:25.000Z","updated_at":"2025-02-13T09:43:10.000Z","dependencies_parsed_at":null,"dependency_job_id":"b22c3300-5521-4696-b631-754aaf322560","html_url":"https://github.com/LivewareProblems/clia","commit_stats":null,"previous_names":["livewareproblems/clia"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LivewareProblems%2Fclia","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LivewareProblems%2Fclia/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LivewareProblems%2Fclia/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LivewareProblems%2Fclia/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/LivewareProblems","download_url":"https://codeload.github.com/LivewareProblems/clia/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246150411,"owners_count":20731419,"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":[],"created_at":"2024-12-09T07:27:37.991Z","updated_at":"2025-03-29T06:46:11.056Z","avatar_url":"https://github.com/LivewareProblems.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Clia\n\nA glue language that has your back.\n\nClia is in a really early design phase. Right now, you will only see design references and research.\n\n## Design Decision\n\nClia is an all expressions language that is heavily elixir inspired. Statically typed in the future, with type inference.\nClia is an effect handler language, taking much inspiration from Effekt.\nClia uses Capabilities to make running a script easier. The design for these is still open but will probably be based on Effect Handlers.\nClia will support Polymorphism for effects and types.\nClia will target, for now, an interpreted model using the Janet interpreter as its backend. Long term, we plan to target the LLVM in a more AOT-compiled situation.\nClia tooling and compiler are written in Rust.\n\n### Open Questions\n\n- How to handle capabilities\n- What design for polymorphism, Traits, Modules, a mix ?\n- backends?\n- hygienic quotation-based macros or not?\n- structural or nominative typing?\n- Subtyping?\n- Set-Theoretic types?\n\n## Design\n\n## Design Philosophy\n\nWe want to make writing glue scripts easier and less error-prone. Running them should be easy to do and safe, and it should be easy to discover what the use of these scripts is.\n\n### Features\n\n- Ergonomic error message\n- Embedded tooling for project management, formatter, LSP, test framework, and package management\n- Package management needs to work in drop-in scripts.\n- Compilation has to be fast and snappy. We will benchmark it from the start and set a target we refuse to breach early on.\n- We must be portable on at least Linux, Windows, MacOS, and FreeBSD.\n- Pattern matching\n- Safe arithmetic\n\n### Anti features\n\n- No mutability\n- Precise binary layout\n- No garbage collection\n- No implicit type conversion\n- No support for concurrency\n\n## Hacking\n\nClia is pre 0.1 and actively but slowly being worked on. Right now there are only 2 active parts to work on.\n\n1. internal_doc, in which we are slowly coming up with a design\n2. tree-sitter-clia, in which i try to write a basic parser and come up with the design at the same time\n\nThere is a shell.nix at the root, that should let you know easily the dependencies needed, even if you do not use nix.\n\nContributions are welcome though\n\n## Licence\n\nClia is under the Apache 2.0 licence.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flivewareproblems%2Fclia","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flivewareproblems%2Fclia","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flivewareproblems%2Fclia/lists"}