{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":485871355,"defaultBranch":"main","name":"aiken","ownerLogin":"aiken-lang","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2022-04-26T16:47:49.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/120199160?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1718148274.0","currentOid":""},"activityList":{"items":[{"before":"2be1ede4efc426d6ed64cc129c3ca14e791ce7ce","after":"a6be3a36da6ddcad8e0cb2baad814bb28d782fe8","ref":"refs/heads/rvcas/if-is","pushedAt":"2024-06-12T00:07:48.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"rvcas","name":"Lucas","path":"/rvcas","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/12070598?s=80&v=4"},"commit":{"message":"chore: add acceptance tests for if/is","shortMessageHtmlLink":"chore: add acceptance tests for if/is"}},{"before":"6e0d98cac3598c9215f9d082640914a6f622909a","after":"2be1ede4efc426d6ed64cc129c3ca14e791ce7ce","ref":"refs/heads/rvcas/if-is","pushedAt":"2024-06-11T23:58:34.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"rvcas","name":"Lucas","path":"/rvcas","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/12070598?s=80&v=4"},"commit":{"message":"fix: no need to check exhaustiveness during if/is","shortMessageHtmlLink":"fix: no need to check exhaustiveness during if/is"}},{"before":"d8d8b36286720216f98228da2132ed8e46a285d8","after":"6e0d98cac3598c9215f9d082640914a6f622909a","ref":"refs/heads/rvcas/if-is","pushedAt":"2024-06-11T23:30:22.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"rvcas","name":"Lucas","path":"/rvcas","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/12070598?s=80&v=4"},"commit":{"message":"feat: code gen support for if/is\n\nCo-authored-by: Kasey White ","shortMessageHtmlLink":"feat: code gen support for if/is"}},{"before":null,"after":"d8d8b36286720216f98228da2132ed8e46a285d8","ref":"refs/heads/rvcas/if-is","pushedAt":"2024-06-11T23:24:34.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"rvcas","name":"Lucas","path":"/rvcas","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/12070598?s=80&v=4"},"commit":{"message":"feat: impl if/is\n\nThis commit introduces a new feature into\nthe parser, typechecker, and formatter.\nThe work for code gen will be in the next commit.\n\nI was able to leverage some existing infrastructure\nby making using of `AssignmentPattern`. A new field\n`is` was introduced into `IfBranch`. This field holds\na generic `Option` meaning a new generic has to be\nintroduced into `IfBranch`. When used in `UntypedExpr`,\n`IfBranch` must use `AssignmentPattern`. When used in\n`TypedExpr`, `IfBranch` must use `TypedPattern`.\n\nThe parser was updated such that we can support this\nkind of psuedo grammar:\n\n`if [is [: ]]`\n\nThis can be read as, when parsing an `if` expression,\nalways expect an expression after the keyword `if`. And then\noptionally there may be this `is` stuff, and within that you\nmay optionally expect a pattern followed by a colon. We will\nalways expect an annotation.\n\nThis first expression is still saved as the field\n`condition` in `IfBranch`. If `pattern` is not there\nAND `expr:condition` is `UntypedExpr::Var` we can set\nthe pattern to be `Pattern::Var` with the same name. From\nthere shadowing should allow this syntax sugar to feel\nkinda magical within the `IfBranch` block that follow.\n\nThe typechecker doesn't need to be aware of the sugar\ndescribed above. The typechecker looks at `branch.is`\nand if it's `Some(is)` then it'll use `infer_assignment`\nfor some help. Because of the way that `is` can inject\nvariables into the scope of the branch's block and since\nit's basically just like how `expect` works minus the error\nwe get to re-use that helper method.\n\nIt's important to note that in the typechecker, if `is`\nis `Some(_)` then we do not enforce that `condition` is\nof type `Bool`. This is because the bool itself will be\nwhether or not the `is` itself holds true given a PlutusData\npayload.\n\nWhen `is` is None, we do exactly what was being done\npreviously so that plain `if` expressions remain unaffected\nwith no semantic changes.\n\nThe formatter had to be made aware of the new changes with\nsome simple changes that need no further explanation.","shortMessageHtmlLink":"feat: impl if/is"}},{"before":"858dfccc823335fc1d865b3c2d461b42dd45d30b","after":null,"ref":"refs/heads/allow-complete-patterns-in-args","pushedAt":"2024-06-07T14:10:07.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"KtorZ","name":"Matthias Benkort","path":"/KtorZ","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5680256?s=80&v=4"}},{"before":"257bd2301965553f0acc8e9dc8d7c65f98b6f36a","after":"3ddd08878037837b520370ab22ca58520006bab9","ref":"refs/heads/main","pushedAt":"2024-06-07T14:10:06.000Z","pushType":"pr_merge","commitsCount":4,"pusher":{"login":"KtorZ","name":"Matthias Benkort","path":"/KtorZ","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5680256?s=80&v=4"},"commit":{"message":"Merge pull request #955 from aiken-lang/allow-complete-patterns-in-args\n\nAllow complete patterns in args","shortMessageHtmlLink":"Merge pull request #955 from aiken-lang/allow-complete-patterns-in-args"}},{"before":"98d2cb5a4e2b78e2adfbeb133467cd58b34203d4","after":"858dfccc823335fc1d865b3c2d461b42dd45d30b","ref":"refs/heads/allow-complete-patterns-in-args","pushedAt":"2024-06-07T13:42:30.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"KtorZ","name":"Matthias Benkort","path":"/KtorZ","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5680256?s=80&v=4"},"commit":{"message":"Authorize complete patterns as function args.\n\n This is mainly a syntactic trick/sugar, but it's been pretty annoying\n to me for a while that we can't simply pattern-match/destructure\n single-variant constructors directly from the args list. A classic\n example is when writing property tests:\n\n ```ak\n test foo(params via both(bytearray(), int())) {\n let (bytes, ix) = params\n ...\n }\n ```\n\n Now can be replaced simply with:\n\n ```\n test foo((bytes, ix) via both(bytearray(), int())) {\n ...\n }\n ```\n\n If feels natural, especially coming from the JavaScript, Haskell or\n Rust worlds and is mostly convenient. Behind the scene, the compiler\n does nothing more than re-writing the AST as the first form, with\n pre-generated arg names. Then, we fully rely on the existing\n type-checking capabilities and thus, works in a seamless way as if we\n were just pattern matching inline.","shortMessageHtmlLink":"Authorize complete patterns as function args."}},{"before":null,"after":"98d2cb5a4e2b78e2adfbeb133467cd58b34203d4","ref":"refs/heads/allow-complete-patterns-in-args","pushedAt":"2024-06-07T13:31:07.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"KtorZ","name":"Matthias Benkort","path":"/KtorZ","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5680256?s=80&v=4"},"commit":{"message":"Authorize complete patterns as function args.\n\n This is mainly a syntactic trick/sugar, but it's been pretty annoying\n to me for a while that we can't simply pattern-match/destructure\n single-variant constructors directly from the args list. A classic\n example is when writing property tests:\n\n ```ak\n test foo(params via both(bytearray(), int())) {\n let (bytes, ix) = params\n ...\n }\n ```\n\n Now can be replaced simply with:\n\n ```\n test foo((bytes, ix) via both(bytearray(), int())) {\n ...\n }\n ```\n\n If feels natural, especially coming from the JavaScript, Haskell or\n Rust worlds and is mostly convenient. Behind the scene, the compiler\n does nothing more than re-writing the AST as the first form, with\n pre-generated arg names. Then, we fully rely on the existing\n type-checking capabilities and thus, works in a seamless way as if we\n were just pattern matching inline.","shortMessageHtmlLink":"Authorize complete patterns as function args."}},{"before":"216dab99d4ccd261bc7f3923f4d0799d6b232c4e","after":"257bd2301965553f0acc8e9dc8d7c65f98b6f36a","ref":"refs/heads/main","pushedAt":"2024-06-06T09:21:58.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"KtorZ","name":"Matthias Benkort","path":"/KtorZ","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5680256?s=80&v=4"},"commit":{"message":"update changelog","shortMessageHtmlLink":"update changelog"}},{"before":"71ed844db04cdae609402661210d8199d8f5d427","after":"216dab99d4ccd261bc7f3923f4d0799d6b232c4e","ref":"refs/heads/main","pushedAt":"2024-06-06T09:19:46.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"KtorZ","name":"Matthias Benkort","path":"/KtorZ","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5680256?s=80&v=4"},"commit":{"message":"chore: Release","shortMessageHtmlLink":"chore: Release"}},{"before":"e22c64d3cbcaefa207f2586ca2c7c0b78ef2ccc0","after":"91c4bd8c5d2967f7e77e46bea869f3627ef0c509","ref":"refs/heads/rvcas/use_blaze_for_hello_world","pushedAt":"2024-06-05T15:57:58.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"rvcas","name":"Lucas","path":"/rvcas","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/12070598?s=80&v=4"},"commit":{"message":"chore: checkpoint some mild progress","shortMessageHtmlLink":"chore: checkpoint some mild progress"}},{"before":"d7ec2131ef8d7b6db76c291e8418aaa9537a7ba7","after":null,"ref":"refs/heads/auto-merge-imports","pushedAt":"2024-06-05T08:11:13.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"KtorZ","name":"Matthias Benkort","path":"/KtorZ","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5680256?s=80&v=4"}},{"before":"7f4ca60d9afa64c388df113f6116ea8ef84998a0","after":"71ed844db04cdae609402661210d8199d8f5d427","ref":"refs/heads/main","pushedAt":"2024-06-05T08:11:12.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"KtorZ","name":"Matthias Benkort","path":"/KtorZ","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5680256?s=80&v=4"},"commit":{"message":"Merge pull request #952 from aiken-lang/auto-merge-imports","shortMessageHtmlLink":"Merge pull request #952 from aiken-lang/auto-merge-imports"}},{"before":null,"after":"d7ec2131ef8d7b6db76c291e8418aaa9537a7ba7","ref":"refs/heads/auto-merge-imports","pushedAt":"2024-06-04T08:49:02.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"KtorZ","name":"Matthias Benkort","path":"/KtorZ","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5680256?s=80&v=4"},"commit":{"message":"Automatically merge import lines from same module.\n\n I slightly altered the way we parse import definitions to ensure we\n merge imports from the same modules (that aren't aliased) together.\n\n This prevents an annoying warning with duplicated import lines and\n makes it just more convenient overall.\n\n As a trade-off, we can no longer interleave import definitions with\n other definitions. This should be a minor setback only since the\n formatter was already ensuring that all import definitions would be\n grouped at the top.\n\n ---\n\n Note that, I originally attempted to implement this in the formatter\n instead of the parser. As it felt more appropriate there. However, the\n formatter operates on (unmutable) borrowed definitions, which makes it\n annoyingly hard to perform any AST manipulations. The `Document`\n returns by the format carries a lifetime that prevents the creation of\n intermediate local values.\n\n So instead, slightly tweaking the parser felt like the right thing to\n do.","shortMessageHtmlLink":"Automatically merge import lines from same module."}},{"before":"2d7a0a77705c711ce92cdf3f7ca2433c999cf7f8","after":"e22c64d3cbcaefa207f2586ca2c7c0b78ef2ccc0","ref":"refs/heads/rvcas/use_blaze_for_hello_world","pushedAt":"2024-06-03T16:27:53.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"rvcas","name":"Lucas","path":"/rvcas","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/12070598?s=80&v=4"},"commit":{"message":"feat: update deps and generateCredentials","shortMessageHtmlLink":"feat: update deps and generateCredentials"}},{"before":"d4614efd7ccbac92f96d64dd50637db2d1ae332f","after":"2d7a0a77705c711ce92cdf3f7ca2433c999cf7f8","ref":"refs/heads/rvcas/use_blaze_for_hello_world","pushedAt":"2024-06-03T16:27:35.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"rvcas","name":"Lucas","path":"/rvcas","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/12070598?s=80&v=4"},"commit":{"message":"feat: update deps and generateCredentials","shortMessageHtmlLink":"feat: update deps and generateCredentials"}},{"before":"00cd7ce97fad6f238ba9430f7b28f69d72ae76b1","after":"7f4ca60d9afa64c388df113f6116ea8ef84998a0","ref":"refs/heads/main","pushedAt":"2024-05-31T07:48:18.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"KtorZ","name":"Matthias Benkort","path":"/KtorZ","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5680256?s=80&v=4"},"commit":{"message":"refresh README.","shortMessageHtmlLink":"refresh README."}},{"before":"5e1908897f3b03456619af1b4a357b5fef786830","after":"00cd7ce97fad6f238ba9430f7b28f69d72ae76b1","ref":"refs/heads/main","pushedAt":"2024-05-31T07:23:49.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"KtorZ","name":"Matthias Benkort","path":"/KtorZ","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5680256?s=80&v=4"},"commit":{"message":"Update README.md","shortMessageHtmlLink":"Update README.md"}},{"before":"2070576e46a75fe8acc0302db6e58ca7b36af883","after":"5e1908897f3b03456619af1b4a357b5fef786830","ref":"refs/heads/main","pushedAt":"2024-05-31T07:22:02.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"KtorZ","name":"Matthias Benkort","path":"/KtorZ","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5680256?s=80&v=4"},"commit":{"message":"Update README.md","shortMessageHtmlLink":"Update README.md"}},{"before":"28515e70ec98d435c52e7f80a0875078120ca9a2","after":"2070576e46a75fe8acc0302db6e58ca7b36af883","ref":"refs/heads/main","pushedAt":"2024-05-30T17:30:45.000Z","pushType":"push","commitsCount":4,"pusher":{"login":"KtorZ","name":"Matthias Benkort","path":"/KtorZ","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5680256?s=80&v=4"},"commit":{"message":"New LSP quickfix for 'use let' warning.","shortMessageHtmlLink":"New LSP quickfix for 'use let' warning."}},{"before":"298302914cfe0ac535478398a6649815060603ae","after":"d4614efd7ccbac92f96d64dd50637db2d1ae332f","ref":"refs/heads/rvcas/use_blaze_for_hello_world","pushedAt":"2024-05-30T13:48:58.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"rvcas","name":"Lucas","path":"/rvcas","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/12070598?s=80&v=4"},"commit":{"message":"feat(examples): add blaze to hello world","shortMessageHtmlLink":"feat(examples): add blaze to hello world"}},{"before":"4c1bee5091943adbd4766bc4de77ed27b331db8d","after":"28515e70ec98d435c52e7f80a0875078120ca9a2","ref":"refs/heads/main","pushedAt":"2024-05-30T11:42:57.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"KtorZ","name":"Matthias Benkort","path":"/KtorZ","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5680256?s=80&v=4"},"commit":{"message":"Merge pull request #950 from hadelive/k256-error\n\nFix k256 error does not implement clone","shortMessageHtmlLink":"Merge pull request #950 from hadelive/k256-error"}},{"before":"c9a15194a0d073ea7aa4b353de89714461e8718a","after":"4c1bee5091943adbd4766bc4de77ed27b331db8d","ref":"refs/heads/main","pushedAt":"2024-05-30T11:42:45.000Z","pushType":"pr_merge","commitsCount":3,"pusher":{"login":"KtorZ","name":"Matthias Benkort","path":"/KtorZ","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5680256?s=80&v=4"},"commit":{"message":"Merge pull request #949 from hadelive/minimal-pallas-deps\n\nMinimal pallas dependencies","shortMessageHtmlLink":"Merge pull request #949 from hadelive/minimal-pallas-deps"}},{"before":"cb8f51d7a5d088057acd624e77765aad60dbc893","after":"c9a15194a0d073ea7aa4b353de89714461e8718a","ref":"refs/heads/main","pushedAt":"2024-05-24T01:38:52.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"rvcas","name":"Lucas","path":"/rvcas","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/12070598?s=80&v=4"},"commit":{"message":"chore: some dist settings","shortMessageHtmlLink":"chore: some dist settings"}},{"before":"54ba101959c2cc2515c15e66e40a71f9ffdae163","after":null,"ref":"refs/tags/v1.0.28-alpha","pushedAt":"2024-05-24T01:38:22.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"rvcas","name":"Lucas","path":"/rvcas","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/12070598?s=80&v=4"}},{"before":"2f9f554e7862b3fb82a8dd88784f9a8a9f78fceb","after":"cb8f51d7a5d088057acd624e77765aad60dbc893","ref":"refs/heads/main","pushedAt":"2024-05-24T01:27:38.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"rvcas","name":"Lucas","path":"/rvcas","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/12070598?s=80&v=4"},"commit":{"message":"chore: remove npm flow","shortMessageHtmlLink":"chore: remove npm flow"}},{"before":"cb4c01f46b13aa5841b7df3716b3f0ffbe32d19e","after":"2f9f554e7862b3fb82a8dd88784f9a8a9f78fceb","ref":"refs/heads/main","pushedAt":"2024-05-24T01:16:15.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"rvcas","name":"Lucas","path":"/rvcas","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/12070598?s=80&v=4"},"commit":{"message":"feat: npm publish flow","shortMessageHtmlLink":"feat: npm publish flow"}},{"before":"338fc0eba666a67bbd9c1c9e74c95780cf3959d4","after":"cb4c01f46b13aa5841b7df3716b3f0ffbe32d19e","ref":"refs/heads/main","pushedAt":"2024-05-24T01:07:47.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"rvcas","name":"Lucas","path":"/rvcas","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/12070598?s=80&v=4"},"commit":{"message":"chore: remove msi and update cargo dist","shortMessageHtmlLink":"chore: remove msi and update cargo dist"}},{"before":"5b2d11ca09cd37b59acac4446e67b182f91fc219","after":null,"ref":"refs/tags/v1.0.28-alpha","pushedAt":"2024-05-24T01:06:44.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"rvcas","name":"Lucas","path":"/rvcas","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/12070598?s=80&v=4"}},{"before":"2605dc6aa499e409fff6962e760a50fd125a86ce","after":"338fc0eba666a67bbd9c1c9e74c95780cf3959d4","ref":"refs/heads/main","pushedAt":"2024-05-23T20:47:02.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"rvcas","name":"Lucas","path":"/rvcas","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/12070598?s=80&v=4"},"commit":{"message":"chore: Release","shortMessageHtmlLink":"chore: Release"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEYsGergA","startCursor":null,"endCursor":null}},"title":"Activity ยท aiken-lang/aiken"}