{"id":19030694,"url":"https://github.com/hackclub/easel","last_synced_at":"2025-08-13T11:48:25.405Z","repository":{"id":238575559,"uuid":"784272268","full_name":"hackclub/easel","owner":"hackclub","description":"Learn how to write a programming language from scratch!","archived":false,"fork":false,"pushed_at":"2024-08-04T14:03:58.000Z","size":27853,"stargazers_count":46,"open_issues_count":9,"forks_count":15,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-08-11T15:36:03.799Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://easel.hackclub.com","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hackclub.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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,"zenodo":null}},"created_at":"2024-04-09T14:23:17.000Z","updated_at":"2025-06-04T15:40:35.000Z","dependencies_parsed_at":"2024-06-05T23:02:31.718Z","dependency_job_id":"674fcd67-3f86-466e-95f3-a051f151cd20","html_url":"https://github.com/hackclub/easel","commit_stats":null,"previous_names":["hackclub/langjam","hackclub/easel"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/hackclub/easel","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hackclub%2Feasel","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hackclub%2Feasel/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hackclub%2Feasel/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hackclub%2Feasel/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hackclub","download_url":"https://codeload.github.com/hackclub/easel/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hackclub%2Feasel/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270235075,"owners_count":24550175,"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","status":"online","status_checked_at":"2025-08-13T02:00:09.904Z","response_time":66,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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-11-08T21:19:07.755Z","updated_at":"2025-08-13T11:48:25.331Z","avatar_url":"https://github.com/hackclub.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"From now until the end of the school year (June 29), we're running a [programming language jam](https://langjam.hackclub.com), where you'll have the chance to win a signed copy of [Crafting Interpreters](https://craftinginterpreters.com/).\n\nThe gist: write a programming language \u0026rarr; record a demo video and write a quick guide on how to get up and running with your programming language (including build instructions, if any!) \u0026rarr; open a PR with a link to your repo containing these three things and your name, [#ship](https://hackclub.slack.com/archives/C0M8PUPU6) a demo on [Slack](https://hackclub.com/slack). Submission forms for the jam will open separately on June 29.\n\nCheck out [#building-programming-languages](https://app.slack.com/client/T0266FRGM/C06T22ZFQGP) on the Slack to hang out with fellow teenagers hacking on programming languages.\n\n## Step zero: learn how to write a programming language!\n\n**What if you don't know how to write a programming language?** Never fear, Orpheus the dinosaur to the rescue! We've written a guide on writing a programming language from scratch that'll teach you how to write a programming language called [Easel](https://easel.hackclub.com):\n\nhttps://github.com/hackclub/easel/assets/59099858/9580bc79-933c-4c4d-b5f9-221af9adab2b\n\nBy the end of it, you'll have written a programming language and learned about how tree-walk interpreters work! Give it a spin at [https://easel.hackclub.com](https://easel.hackclub.com).\n\n## Step one: write your programming language!\n\nHere's the biggest part of the criteria:\n\n- Minimally, should have the following features: variables, looping (think: for/while loops), conditional branching (think: if/else statements) and some form of recursion (think: functions). _Why? These are what make a programming language [Turing-complete](https://stackoverflow.com/questions/7284/what-is-turing-complete)_.\n\nThat's it! During the jam, the [community](https://hackclub.com/slack) will vote on what language does the following the best, including:\n\n- Creativity and silliness! \n- Bonus points if you explain your implementation.\n\nAnd the top three will get a hard copy of [Crafting Interpreters](https://craftinginterpreters.com/) while we're running our programming jam!\n\nRead more about the criteria on [langjam.hackclub.com](https://langjam.hackclub.com).\n\n## Step two: record a demo!\n\nRecord a demo of your programming language in action, for example using [Asciinema](https://asciinema.org/). Instructions can be found [here](https://docs.asciinema.org/getting-started/) for how to install Asciinema and then record your terminal with it. After you've got a recording of you running your programming language, grab the Asciinema link, which will look something like [https://asciinema.org/a/590145](https://asciinema.org/a/590145).\n\nIf you don't want to use Asciinema, that's perfectly fine! Check out [@Amin](https://hackclub.slack.com/team/U04PW2V355M)'s [programming lang](https://github.com/duckulus/minesketch) in Minecraft:\n\nhttps://github.com/Duckulus/minesketch/assets/76813487/9075c54e-0dd9-4aa5-a6d1-a2f63ee824e3\n\nHopefully that gives you some crazy ideas.\n\n## Step three: open a PR!\n\nOpen a PR by heading over to Pull requests and opening a PR. Your PR should have the following:\n\n- [ ] A link to your repo, which should have an `examples` folder with at least one example other people can run and a README that describes how to build and run your repo and an explanation of the syntax and what makes it special.\n- [ ] A copy of your repo inside a folder inside `languages`.\n  \nA good example to take a look at is [Arson](https://github.com/hackclub/easel/tree/main/languages/arson).\n\n## Step four: get your stuff in the mail!\n\nThis one's easy. Wait for your stuff to come in the mail! \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhackclub%2Feasel","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhackclub%2Feasel","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhackclub%2Feasel/lists"}