{"id":15652086,"url":"https://github.com/healeycodes/adventlang","last_synced_at":"2026-03-07T02:33:55.714Z","repository":{"id":45590598,"uuid":"427139936","full_name":"healeycodes/adventlang","owner":"healeycodes","description":"🎅 A programming language (+ code playground) for Advent of Code.","archived":false,"fork":false,"pushed_at":"2021-12-26T20:51:19.000Z","size":2715,"stargazers_count":31,"open_issues_count":0,"forks_count":3,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-30T20:07:49.050Z","etag":null,"topics":["advent-of-code","interpreter","programming-language"],"latest_commit_sha":null,"homepage":"https://healeycodes.com/designing-a-programming-language-for-advent-of-code","language":"Go","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/healeycodes.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}},"created_at":"2021-11-11T20:52:11.000Z","updated_at":"2024-06-02T10:00:28.000Z","dependencies_parsed_at":"2022-09-15T19:00:42.315Z","dependency_job_id":null,"html_url":"https://github.com/healeycodes/adventlang","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/healeycodes/adventlang","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/healeycodes%2Fadventlang","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/healeycodes%2Fadventlang/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/healeycodes%2Fadventlang/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/healeycodes%2Fadventlang/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/healeycodes","download_url":"https://codeload.github.com/healeycodes/adventlang/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/healeycodes%2Fadventlang/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30206070,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-06T19:07:06.838Z","status":"online","status_checked_at":"2026-03-07T02:00:06.765Z","response_time":53,"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":["advent-of-code","interpreter","programming-language"],"created_at":"2024-10-03T12:41:17.711Z","updated_at":"2026-03-07T02:33:55.677Z","avatar_url":"https://github.com/healeycodes.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![CI Tests](https://github.com/healeycodes/adventlang/actions/workflows/ci-tests.yml/badge.svg)](https://github.com/healeycodes/adventlang/actions/workflows/ci-tests.yml)\n\n# 🎅 Adventlang\n\n\u003e My blog posts: [Designing a Programming Language for Advent of Code](https://healeycodes.com/designing-a-programming-language-for-advent-of-code) and [Designing a Code Playground for Adventlang](https://healeycodes.com/designing-a-code-playground-for-adventlang)\n\n\u003cbr\u003e\n\nA strongly typed but highly dynamic programming language interpreter written in Go.\n\n```js\nlog(\"Hello, World!\");\n```\n\nTry it out in the [code playground](https://healeycodes.github.io/adventlang/)!\n\n### Why\n\nIn the second half of November, I designed and implemented this programming language for Advent of Code (AoC). I'll be using it to solve AoC's daily puzzles and adding to the standard library as I go. Will this language make it easier for you to solve the puzzles? No, certainly not. Here be dragons, etc. But it will increase my level of fun as I tap into the joyous energy that comes with forced-creativity-through-restriction.\n\n### Getting Started\n\nLook in the [tests](/tests) folder for examples of how to use most language features.\n\nIf you're developing, you can use `go run` and pass a file as an argument. In the root project directory:\n\n```bash\ngo run cmd/adventlang.go tests/__run_tests.adv\n```\n\n### An Example Program\n\n```js\n// An if statement\nif (true) {}\n\n// An assignment expression declaring and setting a variable\n// to an Immediately Invoked Function Expression (IIFE)\nlet result = (func(x) { return x + 1 })(4);\n\n// Implemention of a Set using a closure over a dictionary\n// `let my_set = set([]);` or `let items = set([1, 2])`\nlet set = func(list) {\n    let store = {};\n    if (type(list) == \"list\") {\n        for (let i = 0; i \u003c len(list); i = i + 1) {\n            let key = list[i];\n            store[key] = true;\n        }\n    }\n    return {\n        \"add\": func(x) { store[x] = true; },\n        \"has\": func(x) { return store[x] == true }\n    }\n};\n\n// An example of a computed key\nlet key = \"a\";\nlet f = {key: 2};\n\n// A runtime assert call, used in test programs\nassert(f.a, 2);\n```\n\n### Build\n\nBuild for common platforms:\n\n```bash\n./build.sh\n```\n\n### Run Tests\n\n```bash\n./run_tests.sh\n```\n\n### Experimental features\n\nRun Adventlang programs via WebAssembly.\n\nTry it on https://healeycodes.github.io/adventlang/\n\nOn local, you can:\n\n```bash\n./build_wasm.sh\npython docs/dev.py\n```\n\nAnd then Navigate to `http://localhost:8000`\n\n### Did You Complete AoC2021?\n\n😅 I solved nine and a half puzzles .. and got distracted building out the language, creating a code playground, and writing blog posts. \n\n### License\n\nMIT.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhealeycodes%2Fadventlang","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhealeycodes%2Fadventlang","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhealeycodes%2Fadventlang/lists"}