{"id":13466152,"url":"https://github.com/FascinatedBox/lily","last_synced_at":"2025-03-25T21:31:24.646Z","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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2014-04-05T03:24:41.000Z","updated_at":"2024-10-25T15:58:08.000Z","dependencies_parsed_at":"2025-01-17T20:32:11.504Z","dependency_job_id":"f1552974-2665-440c-b5d1-6c1938372b9e","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":245547368,"owners_count":20633355,"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-07-31T15:00:39.932Z","updated_at":"2025-03-25T21:31:24.290Z","avatar_url":"https://github.com/FascinatedBox.png","language":"C","readme":"[![Pipeline Status](https://gitlab.com/FascinatedBox/lily/badges/main/pipeline.svg)](https://gitlab.com/FascinatedBox/lily/-/commits/main) [![Windows Build](https://ci.appveyor.com/api/projects/status/gitlab/FascinatedBox/lily?svg=true)](https://ci.appveyor.com/project/FascinatedBox/lily) [![Coverage Report](https://gitlab.com/FascinatedBox/lily/badges/main/coverage.svg)](https://FascinatedBox.gitlab.io/lily/src/index.html)\n\n## Future\n\nA few people have asked me about the future of this language, specifically if I\nwill ever come back to it. I have some rather complicated feelings, as one might\nexpect of a project spanning a decade. Additionally, I don't think that a README\nis a good space to air those feelings out.\n\nDue to an event that happened in my life since pausing on Lily, I will not be\nproviding any further updates to it. I am going to, instead, redirect my energy\nto other projects.\n\nTo those who helped with Lily's progress: Thank you.\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 and CMake (3.0.0 +). There are no external dependencies.\n\nTo build Lily, execute the following in a terminal:\n\n```\ncmake .\n\nmake\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":["C","Compilers and Interpreters"],"sub_categories":["Serious Projects"],"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"}