{"id":15108966,"url":"https://github.com/fascinatedbox/lily","last_synced_at":"2026-03-13T01:32:21.810Z","repository":{"id":15721011,"uuid":"18459138","full_name":"FascinatedBox/lily","owner":"FascinatedBox","description":"Interpreted language focused on expressiveness and type safety.","archived":true,"fork":false,"pushed_at":"2024-08-11T05:11:34.000Z","size":11899,"stargazers_count":1081,"open_issues_count":0,"forks_count":38,"subscribers_count":32,"default_branch":"main","last_synced_at":"2024-10-29T19:17:13.378Z","etag":null,"topics":["embeddable","interpreter","language","lily","scripting-languages"],"latest_commit_sha":null,"homepage":"http://lily-lang.org","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/FascinatedBox.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"license.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-04-05T03:24:41.000Z","updated_at":"2024-10-25T15:58:08.000Z","dependencies_parsed_at":"2022-08-29T10:41:53.275Z","dependency_job_id":null,"html_url":"https://github.com/FascinatedBox/lily","commit_stats":null,"previous_names":["jesserayadkins/lily"],"tags_count":32,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FascinatedBox%2Flily","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FascinatedBox%2Flily/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FascinatedBox%2Flily/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FascinatedBox%2Flily/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/FascinatedBox","download_url":"https://codeload.github.com/FascinatedBox/lily/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":234426261,"owners_count":18830876,"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":["embeddable","interpreter","language","lily","scripting-languages"],"created_at":"2024-09-25T23:00:23.232Z","updated_at":"2025-12-16T19:14:31.428Z","avatar_url":"https://github.com/FascinatedBox.png","language":"C","readme":"\u003cdiv align=\"center\"\u003e\n  \u003cpicture\u003e\n    \u003cimg alt=\"Lily Logo\" src=\"https://lily-lang.org/assets/lily-logo.svg\"\u003e\n  \u003c/picture\u003e\n\u003c/div\u003e\n\n[![Discord](https://img.shields.io/discord/1416899236196253850)](https://discord.com/invite/yxspNFzfDv)\n[![Pipeline Status](https://gitlab.com/FascinatedBox/lily/badges/main/pipeline.svg)](https://gitlab.com/FascinatedBox/lily/-/commits/main)\n[![Windows Build](https://ci.appveyor.com/api/projects/status/gitlab/FascinatedBox/lily?svg=true)](https://ci.appveyor.com/project/FascinatedBox/lily)\n[![Coverage Report](https://gitlab.com/FascinatedBox/lily/badges/main/coverage.svg)](https://FascinatedBox.gitlab.io/lily/src/index.html)\n\n## Lily\n\nLily is a programming language focused on expressiveness and type safety.\n\n## Sample\n\n```\nscoped enum Color { Black, Blue, Cyan, Green, Magenta, Red, White, Yellow }\n\nclass Terminal(public var @foreground: Color, width_str: String)\n{\n    public var @width = width_str.parse_i().unwrap_or(80)\n\n    public define set_fg(new_color: Color) {\n        @foreground = new_color\n    }\n}\n\nvar terms = [Terminal(Color.White, \"A\"), Terminal(Color.Red, \"40\")]\n\nterms.each(|e| e.width += 20 )\n     |\u003e print\n```\n\n## Features\n\n#### Templating\n\nBy default, Lily runs in **standalone** mode where all content is code to\nexecute. But Lily can also be run in **template** mode. In **template** mode,\ncode is between `\u003c?lily ... ?\u003e` tags. When a file is imported, it's always\nloaded in **standalone** mode, so that it doesn't accidentally send headers.\nFiles that are imported are also namespaced (no 'global namespace').\n\n#### Embeddable\n\nLily may be a statically-typed language, but the reference implementation is an\ninterpreter. The interpreter as well as its API have been carefully designed\nwith sandboxing in mind. As a result, it's possible to have multiple\ninterpreters exist alongside each other.\n\n#### Shorter edit cycle\n\nAnother benefit from having the reference implementation as an interpreter is a\nshorter turn around time. The interpreter's parser is comparable in speed to\nthat of languages using an interpreter as their reference.\n\n## Building\n\nYou need a C compiler (C11+) and CMake (3.10+). There are no external dependencies.\n\nTo build Lily, execute the following in a terminal:\n\n```\ncmake .\ncmake --build .\n```\n\nNote: Windows users may need to add `-G\"Unix Makefiles\"` to the end of the cmake\ninvocation.\n\nThe above will build the `lily` executable, as well as a liblily that you can\nuse with your program. It also builds `pre-commit-tests`.\n\n## Running tests\n\nThe centerpiece of Lily's testing is `test_main.lily` in the `test` directory.\nThat file imports and invokes a large number of tests that cover a lot of Lily.\n\nThe `make` command also builds `covlib` and `pre-commit-tests`. No additional\ncommands are necessary. `covlib` is a library that tests some parts of Lily that\nnative code can't test. `pre-commit-tests` is a special runner that executes\n`test_main.lily`.\n\nTo run Lily's tests, execute `pre-commit-tests` from the directory it's in after\nbuilding Lily.\n\n## Resources\n\n* [Documentation](http://lily-lang.org)\n\n* [Builtin module reference](http://lily-lang.org/core/module.core.html)\n\n* [Try it in your browser](http://lily-lang.org/intro-sandbox.html)\n\n## Packaging\n\nThe [lily-garden](https://gitlab.com/FascinatedBox/lily-garden) repository\ncontains a package manager (Garden) that simplifies the install of Lily\npackages.\n\n## License\n\n[MIT](https://gitlab.com/FascinatedBox/lily/blob/main/license.txt)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffascinatedbox%2Flily","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffascinatedbox%2Flily","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffascinatedbox%2Flily/lists"}