{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":488874661,"defaultBranch":"main","name":"jakt","ownerLogin":"SerenityOS","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2022-05-05T07:35:16.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/50811782?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1681427302.0","currentOid":""},"activityList":{"items":[{"before":"c1de5b67aac24d9207af5dd05aa551650f396dd5","after":"ef0d69dd8793a6b2906caf548ef8ad8385aecf03","ref":"refs/heads/main","pushedAt":"2024-07-22T12:59:09.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"alimpfard","name":"Ali Mohammad Pur","path":"/alimpfard","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/14001776?s=80&v=4"},"commit":{"message":"selfhost: Fetch prelude contents from dynamic runtime path\n\nNow Jakt does not bake the contents of prelude in the binary, instead it\nuses the provided runtime path so that prelude can be edited and\noverridden when required.\n\nSaves ~184 kB of generated C++ code, which were the contents of the\nprelude, encoded as an array of static casts.","shortMessageHtmlLink":"selfhost: Fetch prelude contents from dynamic runtime path"}},{"before":"3d10bcd06ceefb85ee63420d4bc92b2fb6e9c61a","after":"c1de5b67aac24d9207af5dd05aa551650f396dd5","ref":"refs/heads/main","pushedAt":"2024-07-21T14:47:59.000Z","pushType":"pr_merge","commitsCount":4,"pusher":{"login":"alimpfard","name":"Ali Mohammad Pur","path":"/alimpfard","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/14001776?s=80&v=4"},"commit":{"message":"typechecker: Choose broader value type when typechecking a dictionary","shortMessageHtmlLink":"typechecker: Choose broader value type when typechecking a dictionary"}},{"before":"a6d8a5e66fce047624bbcdd22f218cc0a045455a","after":"3d10bcd06ceefb85ee63420d4bc92b2fb6e9c61a","ref":"refs/heads/main","pushedAt":"2024-07-17T11:39:35.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"alimpfard","name":"Ali Mohammad Pur","path":"/alimpfard","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/14001776?s=80&v=4"},"commit":{"message":"typechecker: Support `IsEnumVariant` in `while` condition\n\nNow conditions are first processed like in `if` or `guard`, except\nthat when statements for temporaries are needed the loop is converted\nto a bare loop with an body after said statements,\nto ensure they're run in a loop.","shortMessageHtmlLink":"typechecker: Support IsEnumVariant in while condition"}},{"before":"686c3837347cc65992575d3db9b352ff6511fdb9","after":"a6d8a5e66fce047624bbcdd22f218cc0a045455a","ref":"refs/heads/main","pushedAt":"2024-07-16T17:34:54.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"alimpfard","name":"Ali Mohammad Pur","path":"/alimpfard","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/14001776?s=80&v=4"},"commit":{"message":"interpreter: Search for the main function in the main module\n\nIt previously didn't find it because prelude is not the direct parent\nscope of the main module. Also it panicked because main returned void,\nwhich is our exceptional case for comptime evaluation.","shortMessageHtmlLink":"interpreter: Search for the main function in the main module"}},{"before":"ffdc173777e0ebcb4ce7070f7d2a1b461b75414f","after":"686c3837347cc65992575d3db9b352ff6511fdb9","ref":"refs/heads/main","pushedAt":"2024-07-15T20:28:54.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"alimpfard","name":"Ali Mohammad Pur","path":"/alimpfard","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/14001776?s=80&v=4"},"commit":{"message":"typechecker: Choose broader type when wrapping var in Some()\n\nBroader between the given type hint, and the var's type.","shortMessageHtmlLink":"typechecker: Choose broader type when wrapping var in Some()"}},{"before":"173be26bbab974ca464c4d2ce07559de877d63c0","after":"ffdc173777e0ebcb4ce7070f7d2a1b461b75414f","ref":"refs/heads/main","pushedAt":"2024-07-14T20:53:49.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"alimpfard","name":"Ali Mohammad Pur","path":"/alimpfard","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/14001776?s=80&v=4"},"commit":{"message":"typechecker: Make type casts use TypeHint::CouldBe\n\nThis is what the original logic was trying to do, but its scope of\n\"ignore type errors\" was much greater, leading to miscompilations.","shortMessageHtmlLink":"typechecker: Make type casts use TypeHint::CouldBe"}},{"before":"e3f4cb2c3d63708a0fdd321934fb4178b90c0d89","after":"173be26bbab974ca464c4d2ce07559de877d63c0","ref":"refs/heads/main","pushedAt":"2024-07-14T18:30:46.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"alimpfard","name":"Ali Mohammad Pur","path":"/alimpfard","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/14001776?s=80&v=4"},"commit":{"message":"editors/vim: Fix multiline string highlight support\n\nMultiline strings were highlighted as if they were Jakt code, making the\n`appendff` format strings in codegen hard to distinguish from the\n*proper* Jakt code. Now `oneline` is not assumed and those highlight\ncorrectly.","shortMessageHtmlLink":"editors/vim: Fix multiline string highlight support"}},{"before":"f921d4adb04d4dc147073316a3f2491897334606","after":"e3f4cb2c3d63708a0fdd321934fb4178b90c0d89","ref":"refs/heads/main","pushedAt":"2024-07-14T15:55:58.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"alimpfard","name":"Ali Mohammad Pur","path":"/alimpfard","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/14001776?s=80&v=4"},"commit":{"message":"typechecker: Use the actual module name for ns imports\n\n...instead of the path used to reach it.","shortMessageHtmlLink":"typechecker: Use the actual module name for ns imports"}},{"before":"c6601e4ec641ff714b46e14dc27bb03fc299fe62","after":"f921d4adb04d4dc147073316a3f2491897334606","ref":"refs/heads/main","pushedAt":"2024-07-13T23:34:56.000Z","pushType":"pr_merge","commitsCount":5,"pusher":{"login":"alimpfard","name":"Ali Mohammad Pur","path":"/alimpfard","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/14001776?s=80&v=4"},"commit":{"message":"typechecker: Report error when yielding incompatible None from match","shortMessageHtmlLink":"typechecker: Report error when yielding incompatible None from match"}},{"before":"05348bf9a0fefe571be8a924f942d91b864e3209","after":"c6601e4ec641ff714b46e14dc27bb03fc299fe62","ref":"refs/heads/main","pushedAt":"2024-07-13T00:34:41.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"alimpfard","name":"Ali Mohammad Pur","path":"/alimpfard","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/14001776?s=80&v=4"},"commit":{"message":"typechecker: Run `IsEnumVariant` LHS only once\n\nGenerates temporary variables for `IsEnumVariant` LHS expressions and\nadds them to the previous block. This way pattern bindings use the\ncached temporary and avoid re-evaluating any potential side effects.","shortMessageHtmlLink":"typechecker: Run IsEnumVariant LHS only once"}},{"before":"1c7d47fbb09569ff15cf061439cc1d5293289f19","after":"05348bf9a0fefe571be8a924f942d91b864e3209","ref":"refs/heads/main","pushedAt":"2024-07-12T23:24:49.000Z","pushType":"pr_merge","commitsCount":4,"pusher":{"login":"alimpfard","name":"Ali Mohammad Pur","path":"/alimpfard","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/14001776?s=80&v=4"},"commit":{"message":"typechecker: Use CouldBe TypeHint for checking rhs of a binary op","shortMessageHtmlLink":"typechecker: Use CouldBe TypeHint for checking rhs of a binary op"}},{"before":"b8c7d133b5f9df5a5f153e4b1774244fc1848ecc","after":"1c7d47fbb09569ff15cf061439cc1d5293289f19","ref":"refs/heads/main","pushedAt":"2024-07-10T12:05:34.000Z","pushType":"pr_merge","commitsCount":8,"pusher":{"login":"alimpfard","name":"Ali Mohammad Pur","path":"/alimpfard","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/14001776?s=80&v=4"},"commit":{"message":"codegen: Make a couple lambdas' parameters anon\n\nI have no idea why the compiler complains about these, but the\nworkaround is simple enough :shrug:","shortMessageHtmlLink":"codegen: Make a couple lambdas' parameters anon"}},{"before":"e3d632ef70a9372155ff5eeb3b017519e3cd184f","after":"b8c7d133b5f9df5a5f153e4b1774244fc1848ecc","ref":"refs/heads/main","pushedAt":"2024-07-09T11:45:44.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"alimpfard","name":"Ali Mohammad Pur","path":"/alimpfard","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/14001776?s=80&v=4"},"commit":{"message":"codegen: Include toplevel `Jakt::` in namespace qualifiers\n\nNamespace qualifiers for Jakt types (not prelude ones) now have the\n`Jakt::` namespace prepended to them.\n\nFixes a bug where if a class A is defined in module A, then: Jakt would\nuse `A::A` in the method definition of a class, and C++ would complain\nsaying that `A::A` refers to the constructor, since the method\ndefinition is inside the class.","shortMessageHtmlLink":"codegen: Include toplevel Jakt:: in namespace qualifiers"}},{"before":"660a11abd9c9f252950d635e2d7b143018c29cbb","after":"e3d632ef70a9372155ff5eeb3b017519e3cd184f","ref":"refs/heads/main","pushedAt":"2024-07-09T10:38:36.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"alimpfard","name":"Ali Mohammad Pur","path":"/alimpfard","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/14001776?s=80&v=4"},"commit":{"message":"typechecker: Actually compare trait generics when looking for impls","shortMessageHtmlLink":"typechecker: Actually compare trait generics when looking for impls"}},{"before":"d1aea8a9d11751a8e8fef864016e34060721168e","after":"660a11abd9c9f252950d635e2d7b143018c29cbb","ref":"refs/heads/main","pushedAt":"2024-07-08T14:34:04.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"alimpfard","name":"Ali Mohammad Pur","path":"/alimpfard","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/14001776?s=80&v=4"},"commit":{"message":"selfhost: Do not conflate module namespace names with regular names\n\nA module namespace is not inherently named, that's an implementation\ndetail that should not be exposed to the user.\nPreviously `import foo { foo }` would import the module `foo`'s main\nnamespace, which was effectively the same as `import foo`; this is not a\ndesirable behaviour as any namespace called `foo` within that module\nwould effectively be shadowed by this alias.","shortMessageHtmlLink":"selfhost: Do not conflate module namespace names with regular names"}},{"before":"afd9069b8ae4582844bb0365a768dd7b0b4ae8d4","after":"d1aea8a9d11751a8e8fef864016e34060721168e","ref":"refs/heads/main","pushedAt":"2024-07-08T14:33:27.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"alimpfard","name":"Ali Mohammad Pur","path":"/alimpfard","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/14001776?s=80&v=4"},"commit":{"message":"typechecker: Try namespaces last when resolving calls\n\nFixes a bug where an imported class with the same name as its defining\nmodule/namespace would be skipped in call resolution:\n\n```\n// in tvec3.jakt\nclass tvec3 {\n thing: i32\n public fn create(...) -> tvec3 => ...\n}\n```\n\n```\n// in main.jakt\nimport tvec3 { tvec3 }\n\nfn main() {\n let t = tvec3::create(...)\n}\n```\n\nPrior to this change, Jakt will reject the `create` call in `main.jakt`\nas an `unknown function`.","shortMessageHtmlLink":"typechecker: Try namespaces last when resolving calls"}},{"before":"35fda213a040c2ec1597f7fd6f02db602afa5685","after":"afd9069b8ae4582844bb0365a768dd7b0b4ae8d4","ref":"refs/heads/main","pushedAt":"2024-07-08T14:18:49.000Z","pushType":"pr_merge","commitsCount":5,"pusher":{"login":"alimpfard","name":"Ali Mohammad Pur","path":"/alimpfard","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/14001776?s=80&v=4"},"commit":{"message":"meta: Update CI llvm to version 18","shortMessageHtmlLink":"meta: Update CI llvm to version 18"}},{"before":"09c7877b385f2e2671314312d4026be0ddad0796","after":"35fda213a040c2ec1597f7fd6f02db602afa5685","ref":"refs/heads/main","pushedAt":"2024-07-06T23:23:20.000Z","pushType":"pr_merge","commitsCount":5,"pusher":{"login":"alimpfard","name":"Ali Mohammad Pur","path":"/alimpfard","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/14001776?s=80&v=4"},"commit":{"message":"editors: Update Jakt syntax\n\nI don't know if the VSCode one is correct, but the rest should\nbe enough.","shortMessageHtmlLink":"editors: Update Jakt syntax"}},{"before":"b3d91cde6baaeb7d2631008f9a2389e7b1fda2f2","after":"09c7877b385f2e2671314312d4026be0ddad0796","ref":"refs/heads/main","pushedAt":"2024-07-06T18:49:33.000Z","pushType":"pr_merge","commitsCount":3,"pusher":{"login":"alimpfard","name":"Ali Mohammad Pur","path":"/alimpfard","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/14001776?s=80&v=4"},"commit":{"message":"codegen: Register modules through used functions too\n\nWhen generating C++ implementations, the functions from a module may be\nused without explicitly stating any of the types of said module. Modules\ncan also be comprised only by functions. Now codegen adds the function's\nmodule whenever it calls a function to make sure that the header for\nthat function is added.","shortMessageHtmlLink":"codegen: Register modules through used functions too"}},{"before":"e7fe8a1ba8756e0422140b0586112d34662a129d","after":"b3d91cde6baaeb7d2631008f9a2389e7b1fda2f2","ref":"refs/heads/main","pushedAt":"2024-06-27T16:39:43.000Z","pushType":"pr_merge","commitsCount":3,"pusher":{"login":"alimpfard","name":"Ali Mohammad Pur","path":"/alimpfard","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/14001776?s=80&v=4"},"commit":{"message":"selfhost: Convert all `append(format(` to `appendff`\n\nThis should remove quite a bit of string copying. There are still places\nto improve, like `format_value_impl`, which could take in a\nStringBuilder instead of returning a String.\n\nAlso removes a couple of spurious carriage returns '\\r' in selfhost\nfiles, likely to be caused by me, because at some point I didn't have\ngit properly configured for Windows dev. Sorry!","shortMessageHtmlLink":"selfhost: Convert all append(format( to appendff"}},{"before":"e2ebb09f46fe3d425c7df6f77fbab42421dbba0d","after":"e7fe8a1ba8756e0422140b0586112d34662a129d","ref":"refs/heads/main","pushedAt":"2024-06-24T16:46:37.000Z","pushType":"pr_merge","commitsCount":6,"pusher":{"login":"alimpfard","name":"Ali Mohammad Pur","path":"/alimpfard","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/14001776?s=80&v=4"},"commit":{"message":"codegen: Use the correct name to search for common enum members\n\nIn variant pattern arguments, the name was set to \"value\" on\nnon-StructLike enum variants, which means that the common enum member\nthat the binding might have referred to is never found, and thus the\nwrong code is emmited: `.as.#Variant.value`. The correct code to emit\nwhen we have an enum member is `.common.init_common.#member_name`.","shortMessageHtmlLink":"codegen: Use the correct name to search for common enum members"}},{"before":"82980878c8f27b28d6a4049219a763b8631584d9","after":"e2ebb09f46fe3d425c7df6f77fbab42421dbba0d","ref":"refs/heads/main","pushedAt":"2024-06-21T16:48:45.000Z","pushType":"pr_merge","commitsCount":8,"pusher":{"login":"alimpfard","name":"Ali Mohammad Pur","path":"/alimpfard","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/14001776?s=80&v=4"},"commit":{"message":"typechecker: Don't use the root namespace directly as the main file's ns\n\nThe root ns is shared between modules, using this for the main file\nmeans leaking imports and definitions to them indirectly.","shortMessageHtmlLink":"typechecker: Don't use the root namespace directly as the main file's ns"}},{"before":"2ff2c86a8e3fc66441f2848832e4a306b02640cb","after":"82980878c8f27b28d6a4049219a763b8631584d9","ref":"refs/heads/main","pushedAt":"2024-06-18T14:21:50.000Z","pushType":"pr_merge","commitsCount":10,"pusher":{"login":"alimpfard","name":"Ali Mohammad Pur","path":"/alimpfard","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/14001776?s=80&v=4"},"commit":{"message":"runtime: Recognise aarch64 windows triple","shortMessageHtmlLink":"runtime: Recognise aarch64 windows triple"}},{"before":"c316fe8a15a73a6f45edb2534cf97af65eb02cc4","after":"2ff2c86a8e3fc66441f2848832e4a306b02640cb","ref":"refs/heads/main","pushedAt":"2024-05-29T16:12:16.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"alimpfard","name":"Ali Mohammad Pur","path":"/alimpfard","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/14001776?s=80&v=4"},"commit":{"message":"meta: Add a workflow to manually populate the clang cache","shortMessageHtmlLink":"meta: Add a workflow to manually populate the clang cache"}},{"before":"309e46acba4b9dc7dc2effb02bff6cd3e15a7232","after":"c316fe8a15a73a6f45edb2534cf97af65eb02cc4","ref":"refs/heads/main","pushedAt":"2024-05-28T14:16:53.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"alimpfard","name":"Ali Mohammad Pur","path":"/alimpfard","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/14001776?s=80&v=4"},"commit":{"message":"meta: Build clang if necessary instead of manually running the build job","shortMessageHtmlLink":"meta: Build clang if necessary instead of manually running the build job"}},{"before":"6ac969f04325d3b48fd11acca73d0ce6da31e851","after":"309e46acba4b9dc7dc2effb02bff6cd3e15a7232","ref":"refs/heads/main","pushedAt":"2024-05-13T16:06:45.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"alimpfard","name":"Ali Mohammad Pur","path":"/alimpfard","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/14001776?s=80&v=4"},"commit":{"message":"Meta: Fix typo in readme","shortMessageHtmlLink":"Meta: Fix typo in readme"}},{"before":"6e3f55d4a434bd4c0206e2ff052716625d0b5e52","after":"6ac969f04325d3b48fd11acca73d0ce6da31e851","ref":"refs/heads/main","pushedAt":"2024-03-18T10:51:02.000Z","pushType":"pr_merge","commitsCount":4,"pusher":{"login":"alimpfard","name":"Ali Mohammad Pur","path":"/alimpfard","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/14001776?s=80&v=4"},"commit":{"message":"selfhost: Workaround Serenity's Clang toolchain triple parsing\n\nFor some reason our patched clang can't find all the right libc++ files\nwhen the triple is x86_64-pc-serenity-unknown, but does without the\nunknown.","shortMessageHtmlLink":"selfhost: Workaround Serenity's Clang toolchain triple parsing"}},{"before":"f7ab7725114538f0668c58973bab2cf52b8e121c","after":"6e3f55d4a434bd4c0206e2ff052716625d0b5e52","ref":"refs/heads/main","pushedAt":"2024-03-18T03:06:46.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"ADKaster","name":"Andrew Kaster","path":"/ADKaster","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8388494?s=80&v=4"},"commit":{"message":"nix: Replace basic jakt.nix with flake-based nix configuration\n\nThis allows for reproducible builds and insane ease of use.\nNow, anyone with a Linux machine with nix installed\ncan just run `nix build` and easily build or install jakt.\n\nFurther, jakt contributors can easily get a shell with all\nthe dependencies just by running `nix develop`.\n\nCo-Authored-By: RGBCube ","shortMessageHtmlLink":"nix: Replace basic jakt.nix with flake-based nix configuration"}},{"before":"4b3151a398a36c4b963f66878500a4be062498d4","after":"f7ab7725114538f0668c58973bab2cf52b8e121c","ref":"refs/heads/main","pushedAt":"2024-01-27T09:50:54.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"alimpfard","name":"Ali Mohammad Pur","path":"/alimpfard","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/14001776?s=80&v=4"},"commit":{"message":"dockerfile: Add Dockerfile, .dockerignore to jakt","shortMessageHtmlLink":"dockerfile: Add Dockerfile, .dockerignore to jakt"}},{"before":"d6ae820c62582f9e55a9968c09d18530a292ab13","after":"4b3151a398a36c4b963f66878500a4be062498d4","ref":"refs/heads/main","pushedAt":"2024-01-27T09:48:15.000Z","pushType":"pr_merge","commitsCount":3,"pusher":{"login":"alimpfard","name":"Ali Mohammad Pur","path":"/alimpfard","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/14001776?s=80&v=4"},"commit":{"message":"everywhere: Allow yielding nothing\n\nThis is almost equivalent to yielding a void returning function.","shortMessageHtmlLink":"everywhere: Allow yielding nothing"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEhcf8DgA","startCursor":null,"endCursor":null}},"title":"Activity ยท SerenityOS/jakt"}