{"id":15713593,"url":"https://github.com/myst-lang/myst","last_synced_at":"2025-04-14T09:42:31.526Z","repository":{"id":114760395,"uuid":"93328899","full_name":"myst-lang/myst","owner":"myst-lang","description":"A structured, dynamic, general-purpose language.","archived":false,"fork":false,"pushed_at":"2023-04-03T01:38:02.000Z","size":1258,"stargazers_count":119,"open_issues_count":16,"forks_count":17,"subscribers_count":16,"default_branch":"master","last_synced_at":"2025-03-27T23:02:48.314Z","etag":null,"topics":["crystal","dynamic","language","myst-lang","object-oriented","programming-language"],"latest_commit_sha":null,"homepage":"http://myst-lang.org","language":"Crystal","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/myst-lang.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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-06-04T17:11:03.000Z","updated_at":"2024-11-19T07:05:19.000Z","dependencies_parsed_at":null,"dependency_job_id":"28d2a9e5-50ff-474b-ba42-3801da339337","html_url":"https://github.com/myst-lang/myst","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/myst-lang%2Fmyst","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/myst-lang%2Fmyst/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/myst-lang%2Fmyst/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/myst-lang%2Fmyst/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/myst-lang","download_url":"https://codeload.github.com/myst-lang/myst/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248855961,"owners_count":21172673,"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":["crystal","dynamic","language","myst-lang","object-oriented","programming-language"],"created_at":"2024-10-03T21:32:25.831Z","updated_at":"2025-04-14T09:42:31.498Z","avatar_url":"https://github.com/myst-lang.png","language":"Crystal","funding_links":[],"categories":["Other"],"sub_categories":[],"readme":"# Myst\n\n**A structured, dynamic, general-purpose language.**\n\n```ruby\ndeftype List\n  def contains(element)\n    each(\u0026fn\n      -\u003e(\u003celement\u003e) { break true }\n      -\u003e(_)         { false }\n    end)\n  end\nend\n\n[1, 2, 3].contains(2) #=\u003e true\n```\n\nSome of the high-level features include:\n\n- **Pattern-matching everywhere.** Assignments, method parameters, rescue clauses, etc.\n- **Multiple-clause functions.** All functions can define multiple clauses to adapt functionality based on inputs.\n- **Value interpolations.** Interpolate any value anywhere (even in method parameters) with the `\u003c\u003e` syntax.\n- **Soft typing.** Optional type annotations help control functionality without cluttering your code with conditionals.\n- **Raise anything.** Any value can be raised as an Exception and pattern matched in a rescue block.\n\n\n# Installation\n\n_NOTE: Due to Crystal's current limitations with compiling on Windows, Myst\nonly works on macOS and Linux systems._\n\nThe recommended method of installing Myst is with `mtenv`, the official version manager for the Myst language. It is available [here](https://github.com/myst-lang/mtenv) and has installation instructions available in the README.\n\nFor now, you will need to have Crystal installed to be able to install Myst. See [Crystal's installation instructions](https://crystal-lang.org/docs/installation/) for how to get started. Myst currently runs on Crystal 0.27.0.\n\nOnce Crystal and `mtenv` are installed, installing Myst is as simple as running `mtenv install`:\n\n```shell\n# Make sure mtenv is properly set up\nmtenv setup\n# Install v0.6.2 of Myst\nmtenv install v0.6.2\n# Make it the active version\nmtenv use v0.6.2\n```\n\nWith that, `myst` should now be installed and ready to go!\n\nHelp with improving these installation instructions, making pre-built binaries, and/or managing releases would be greatly appreciated :)\n\n\n# Get Involved\n\nIf you have an idea for a new feature or find a bug in Myst, _please_ [file an issue for it!](https://github.com/myst-lang/myst/issues/new). Using the language and finding bugs are the best ways to help Myst improve. Any and all help here is appreciated, even if that just means trying out the language for a day.\n\nIf you just want to get involved in the community, come hang out [in our Discord server!](https://discord.gg/8FtMeac). We're a pretty small community, so there's plenty of room for anyone that would like to hang out, even if it has nothing to do with Myst!\n\nWhen I can, I try to label issues with [`help wanted`](https://github.com/myst-lang/myst/labels/help%20wanted) or [`good first issue`](https://github.com/myst-lang/myst/labels/good%20first%20issue). [`help wanted`](https://github.com/myst-lang/myst/labels/help%20wanted) is for issues that I'd _really_ like external input on, while [`good first issue`](https://github.com/myst-lang/myst/labels/good%20first%20issue) is for issues that can be implemented without too much knowledge of how the lexer/parser/interpreter works. On these issues, I try to explain as much as possible about what the solution looks like, including files that will need editing and/or methods that need implementing/changing. I hope that helps!\n\nIf you'd like to tackle something, but don't know where to start, _please_ let me know! I'd love to help you get involved, so feel free to ask in the [discord server](https://discord.gg/8FtMeac) or message me directly (faulty#7958 on discord, or email also works) and I'll do my best to get you up and running.\n\n### The Basics\n\nIf you would like to contribute to Myst's development, just:\n\n1. Fork it (https://github.com/myst-lang/myst/fork)\n2. Create your feature branch (`git checkout -b my-new-feature`)\n3. Commit your changes (`git commit -am 'Add some feature'`)\n4. Push to the branch (`git push origin my-new-feature`)\n5. Create a new Pull Request (https://github.com/myst-lang/myst/pull/new)\n\n### Owning an issue\n\nIf you have a [specific issue](https://github.com/myst-lang/myst/issues) that you'd like to tackle, be sure to add a comment saying you're working on it so that everyone is aware! (currently, github [doesn't allow for assigning issues to new contributers](https://github.com/isaacs/github/issues/100) :/)\n\nAlso, \"ownership\" is _not_ binding. It's just a way of saying \"hey, I think I can work on this!\". If you get stuck or need help moving forward, feel free to ask for help either on the issue itself, or [in the discord server](https://discord.gg/8FtMeac).\n\nMost importantly, **don't feel bad if you bite off more than you can chew**. Issues can easily end up being far more complex than they appear at the start, especially on a project of this size. But don't give up! It's always hard to get started on an existing project, but I want to help and make it as easy as possible wherever I can!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmyst-lang%2Fmyst","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmyst-lang%2Fmyst","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmyst-lang%2Fmyst/lists"}