{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":545666334,"defaultBranch":"main","name":"wasminna","ownerLogin":"tomstuart","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2022-10-04T19:20:02.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/3192?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1692551910.0","currentOid":""},"activityList":{"items":[{"before":"a4e857b6f671ed983798c9a61c0d3d3df62180a1","after":null,"ref":"refs/heads/desugar-instruction-abbreviations","pushedAt":"2023-08-20T17:18:30.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"tomstuart","name":"Tom Stuart","path":"/tomstuart","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3192?s=80&v=4"}},{"before":"f9c95ac2a9b0267a1a83de9b061764854c7ae57d","after":"e5af081384c8271b92ebea5ba70f6854d66c5fa5","ref":"refs/heads/main","pushedAt":"2023-08-20T17:18:29.000Z","pushType":"pr_merge","commitsCount":29,"pusher":{"login":"tomstuart","name":"Tom Stuart","path":"/tomstuart","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3192?s=80&v=4"},"commit":{"message":"Desugar instruction abbreviations (#21)\n\nThe only abbreviations not yet desugared by the preprocessor are those\r\nrelating to individual instructions: folded instructions [0] generally,\r\noptional `else` after `if`, and various optional immediate arguments to\r\nplain instructions.\r\n\r\nThis commit desugars the remaining abbreviations and removes support for\r\nthem from the AST parser.\r\n\r\n[0] https://webassembly.github.io/spec/core/text/instructions.html#text-foldedinstr","shortMessageHtmlLink":"Desugar instruction abbreviations (#21)"}},{"before":"ca697b120558addfd0fa83a6b9d142abec6da55c","after":"a4e857b6f671ed983798c9a61c0d3d3df62180a1","ref":"refs/heads/desugar-instruction-abbreviations","pushedAt":"2023-08-20T17:13:53.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"tomstuart","name":"Tom Stuart","path":"/tomstuart","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3192?s=80&v=4"},"commit":{"message":"Remove support for missing `else` from AST parser\n\nThis is desugared by the preprocessor now.","shortMessageHtmlLink":"Remove support for missing else from AST parser"}},{"before":"642e1c4bd514d54e5909c408f265cf835f2104b3","after":null,"ref":"refs/heads/preprocess-complete-structured-instructions","pushedAt":"2023-08-20T17:12:41.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"tomstuart","name":"Tom Stuart","path":"/tomstuart","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3192?s=80&v=4"}},{"before":"91f694e7b476d5ea62acaacbbfd55e383d7d47b7","after":"f9c95ac2a9b0267a1a83de9b061764854c7ae57d","ref":"refs/heads/main","pushedAt":"2023-08-20T17:12:40.000Z","pushType":"pr_merge","commitsCount":3,"pusher":{"login":"tomstuart","name":"Tom Stuart","path":"/tomstuart","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3192?s=80&v=4"},"commit":{"message":"Read complete structured instructions in preprocessor (#20)\n\nThese changes should have been included in #19, but life’s too short to\r\nget absolutely everything right.","shortMessageHtmlLink":"Read complete structured instructions in preprocessor (#20)"}},{"before":null,"after":"642e1c4bd514d54e5909c408f265cf835f2104b3","ref":"refs/heads/preprocess-complete-structured-instructions","pushedAt":"2023-08-20T17:10:21.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"tomstuart","name":"Tom Stuart","path":"/tomstuart","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3192?s=80&v=4"},"commit":{"message":"Process complete `if` in #process_structured_instruction\n\nAs with `block` and `loop`, this means we explicitly handle the `else`\nand `end` keywords (and optional labels) instead of allowing them to be\nincorrectly treated as instructions by later calls to #read_instruction.","shortMessageHtmlLink":"Process complete if in #process_structured_instruction"}},{"before":null,"after":"ca697b120558addfd0fa83a6b9d142abec6da55c","ref":"refs/heads/desugar-instruction-abbreviations","pushedAt":"2023-08-20T17:00:17.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"tomstuart","name":"Tom Stuart","path":"/tomstuart","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3192?s=80&v=4"},"commit":{"message":"Remove support for missing `else` from AST parser\n\nThis is desugared by the preprocessor now.","shortMessageHtmlLink":"Remove support for missing else from AST parser"}},{"before":"bde10a5ece541409e83710ceee68a724acfd5340","after":null,"ref":"refs/heads/preprocess-complete-instructions","pushedAt":"2023-08-20T16:57:29.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"tomstuart","name":"Tom Stuart","path":"/tomstuart","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3192?s=80&v=4"}},{"before":"7afa97ac5de06ce41c16f2d8834b63cbe58865d6","after":"91f694e7b476d5ea62acaacbbfd55e383d7d47b7","ref":"refs/heads/main","pushedAt":"2023-08-20T16:57:28.000Z","pushType":"pr_merge","commitsCount":15,"pusher":{"login":"tomstuart","name":"Tom Stuart","path":"/tomstuart","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3192?s=80&v=4"},"commit":{"message":"Read complete instructions in preprocessor (#19)\n\nAs established in #18, the AST parser now has the ability to read\r\ncomplete instructions. In this commit we extract and reuse the\r\nparser’s #read_instructions, #read_instruction and related methods to\r\ngive the preprocessor the ability to preprocess entire instructions by\r\nreading their structures explicitly.\r\n\r\nThis approach replaces various hacks which didn’t really understand\r\ninstruction structure but incidentally worked for all of the\r\nabbreviations already implemented. Consequently, the #process_instruction\r\nmethod now really does process a single instruction instead of\r\ndelegating to #process_instructions to process as many as possible,\r\nwhich is important for the correctness of the `offset` and `item`\r\nabbreviations in element [0] and data [1] segments.\r\n\r\nNow that the preprocessor is correctly traversing the detailed structure\r\nof each kind of instruction, we’ll be able to desugar all of the\r\nremaining abbreviations in subsequent work.\r\n\r\n[0] https://webassembly.github.io/spec/core/text/modules.html#id7\r\n[1] https://webassembly.github.io/spec/core/text/modules.html#id8","shortMessageHtmlLink":"Read complete instructions in preprocessor (#19)"}},{"before":null,"after":"bde10a5ece541409e83710ceee68a724acfd5340","ref":"refs/heads/preprocess-complete-instructions","pushedAt":"2023-08-20T16:38:10.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"tomstuart","name":"Tom Stuart","path":"/tomstuart","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3192?s=80&v=4"},"commit":{"message":"Process a single instruction in #process_instruction\n\nVarious callers (e.g. #process_offset) expect this method to process\nexactly one instruction rather than arbitrarily many, and now it can.","shortMessageHtmlLink":"Process a single instruction in #process_instruction"}},{"before":"ba3792a5ddba8a0dca21c8e2145401a67327fd12","after":null,"ref":"refs/heads/read-complete-instructions","pushedAt":"2023-08-20T16:36:58.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"tomstuart","name":"Tom Stuart","path":"/tomstuart","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3192?s=80&v=4"}},{"before":"b19669ae611dc2dc7ca559cb15ea1a105d42b993","after":"7afa97ac5de06ce41c16f2d8834b63cbe58865d6","ref":"refs/heads/main","pushedAt":"2023-08-20T16:36:58.000Z","pushType":"pr_merge","commitsCount":15,"pusher":{"login":"tomstuart","name":"Tom Stuart","path":"/tomstuart","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3192?s=80&v=4"},"commit":{"message":"Read complete instructions in AST parser (#18)\n\nThe AST parser uses the #read_instructions method to read multiple\r\ninstructions when parsing a structured instruction, e.g. the body of a\r\n`loop` or the consequent of an `if`. However, #read_instructions doesn’t\r\nhave any knowledge of the structure of WebAssembly instructions beyond\r\nthe fact that structured instructions (`block`, `loop` and `if`) are\r\nterminated by `end`, so it mainly works by reading individual atoms with\r\nthe misleadingly-named #read_instruction method and concatenating them\r\nindiscriminately.\r\n\r\nThis crude approach suffices for the parser because it’s able to defer\r\nthe real work to #parse_instructions, which does know more about where\r\nindividual instructions begin and end. But we’d like to\r\nshare #read_instructions with the preprocessor so that it can desugar\r\nsome instruction-specific abbreviations, and the preprocessor doesn’t\r\nhave access to the more intelligent parsing machinery, so we\r\nneed #read_instructions itself to be smarter.\r\n\r\nThis PR enriches the implementation of #read_instruction by giving it\r\njust enough knowledge of instruction syntax to be able to read a single\r\ncomplete instruction at a time. This doesn’t meaningfully change the\r\nfunctionality of the AST parser but does make its implementation clearer\r\nand less hacky. Most importantly it also makes the instruction-reading\r\nmethods far more useful for the preprocessor, and in subsequent work\r\nwe’ll extract them and use them when desugaring instruction\r\nabbreviations.\r\n\r\n[0] https://webassembly.github.io/spec/core/text/instructions.html#control-instructions","shortMessageHtmlLink":"Read complete instructions in AST parser (#18)"}},{"before":"72f5fe5e97e4a12f1de4479a4e5aefe35afbdb8c","after":"ba3792a5ddba8a0dca21c8e2145401a67327fd12","ref":"refs/heads/read-complete-instructions","pushedAt":"2023-08-20T16:12:40.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"tomstuart","name":"Tom Stuart","path":"/tomstuart","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3192?s=80&v=4"},"commit":{"message":"Read complete `load` and `store` instructions\n\nThe various `load` and `store` instructions [0] take two optional\nimmediate arguments:\n\n `i32.load` (`offset=` u32)? (`align=` u32)?\n `i64.load` (`offset=` u32)? (`align=` u32)?\n `f32.load` (`offset=` u32)? (`align=` u32)?\n `f64.load` (`offset=` u32)? (`align=` u32)?\n `i32.load8_s` (`offset=` u32)? (`align=` u32)?\n `i32.load8_u` (`offset=` u32)? (`align=` u32)?\n ⋮\n `i32.store` (`offset=` u32)? (`align=` u32)?\n `i64.store` (`offset=` u32)? (`align=` u32)?\n `f32.store` (`offset=` u32)? (`align=` u32)?\n `f64.store` (`offset=` u32)? (`align=` u32)?\n `i32.store8` (`offset=` u32)? (`align=` u32)?\n ⋮\n\nTo read a complete `load` or `store` instruction we need to read these\narguments if present and return them verbatim.\n\nTo keep the regular expression concise I’ve assumed that any keyword\nwhich begins “i32.load…” or “i32.store…” (likewise for “i64”, “f32” and\n“f64”) indicates a `load` or `store` instruction, which may turn out to\nbe incorrect on an infinite timescale but is at least true for the\ncurrent version of WebAssembly.\n\n[0] https://webassembly.github.io/spec/core/text/instructions.html#memory-instructions","shortMessageHtmlLink":"Read complete load and store instructions"}},{"before":null,"after":"72f5fe5e97e4a12f1de4479a4e5aefe35afbdb8c","ref":"refs/heads/read-complete-instructions","pushedAt":"2023-08-20T16:02:03.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"tomstuart","name":"Tom Stuart","path":"/tomstuart","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3192?s=80&v=4"},"commit":{"message":"Process a single instruction in #process_instruction\n\nVarious callers (e.g. #process_offset) expect this method to process\nexactly one instruction rather than arbitrarily many, and now it can.","shortMessageHtmlLink":"Process a single instruction in #process_instruction"}},{"before":"af49d3bb5db28fe4cadfc667f07c1193176b2baf","after":null,"ref":"refs/heads/tidy-up-for-instruction-abbreviations","pushedAt":"2023-08-20T15:59:22.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"tomstuart","name":"Tom Stuart","path":"/tomstuart","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3192?s=80&v=4"}},{"before":"59e4f32e4307d2be805c0d813c5561791e360d11","after":"b19669ae611dc2dc7ca559cb15ea1a105d42b993","ref":"refs/heads/main","pushedAt":"2023-08-20T15:59:21.000Z","pushType":"pr_merge","commitsCount":25,"pusher":{"login":"tomstuart","name":"Tom Stuart","path":"/tomstuart","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3192?s=80&v=4"},"commit":{"message":"Tidy up preprocessor, parser and interpreter for instruction abbreviations (#17)\n\nDespite #12, the preprocessor, parser and interpreter (and their tests)\r\nwere still a little messy and inconsistent. This commit cleans them up\r\nto fix many minor annoyances in preparation for implementing instruction\r\nabbreviations.\r\n\r\nThe problems addressed are mostly related to naming and code\r\norganisation. The largest change is that all of the preprocessor tests\r\nhave been updated to no longer depend upon the remaining instruction\r\nabbreviations (i.e. folded instructions and missing `call_index` index)\r\nwhich we intend to desugar.","shortMessageHtmlLink":"Tidy up preprocessor, parser and interpreter for instruction abbrevia…"}},{"before":null,"after":"af49d3bb5db28fe4cadfc667f07c1193176b2baf","ref":"refs/heads/tidy-up-for-instruction-abbreviations","pushedAt":"2023-08-20T15:50:02.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"tomstuart","name":"Tom Stuart","path":"/tomstuart","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3192?s=80&v=4"},"commit":{"message":"Extract #read_structured_instruction from #read_instruction","shortMessageHtmlLink":"Extract #read_structured_instruction from #read_instruction"}},{"before":"a998b64d21386f18e97dc08d75fd7926daddae1e","after":null,"ref":"refs/heads/desugar-type-uses","pushedAt":"2023-07-20T16:47:52.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"tomstuart","name":"Tom Stuart","path":"/tomstuart","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3192?s=80&v=4"}},{"before":"370c28ae41811902c637633b8df96864872f5422","after":"59e4f32e4307d2be805c0d813c5561791e360d11","ref":"refs/heads/main","pushedAt":"2023-07-20T16:47:51.000Z","pushType":"pr_merge","commitsCount":17,"pusher":{"login":"tomstuart","name":"Tom Stuart","path":"/tomstuart","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3192?s=80&v=4"},"commit":{"message":"Desugar type use abbreviation (#16)\n\nAs an abbreviation [0], a type use [1] can be replaced by inline\r\nparameter and result declarations: instead of writing e.g. `(func (type\r\n$t) …)` and defining `$t` elsewhere in the module with `(type $t (func\r\n(param i32) (result i64)))`, we can write the more concise and\r\nexpressive `(func (param i32) (result i64) …)`.\r\n\r\nTo support this abbreviation, a WebAssembly implementation must\r\nautomatically insert a type index referring either to a matching type\r\ndefinition in the current module (e.g. `$t` above) or a newly-inserted\r\ntype definition if no matching one exists.\r\n\r\nThis commit implements desugaring for this abbreviation in the\r\npreprocessor and removes support for it from the AST parser. It relies\r\nupon machinery introduced in #14 and #15 which allows type definitions\r\nto be collected while preprocessing a module’s fields and then provided\r\nto the deferred result to yield the final S-expressions.\r\n\r\n[0] https://webassembly.github.io/spec/core/text/modules.html#abbreviations\r\n[1] https://webassembly.github.io/spec/core/text/modules.html#type-uses","shortMessageHtmlLink":"Desugar type use abbreviation (#16)"}},{"before":null,"after":"a998b64d21386f18e97dc08d75fd7926daddae1e","ref":"refs/heads/desugar-type-uses","pushedAt":"2023-07-20T16:24:59.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"tomstuart","name":"Tom Stuart","path":"/tomstuart","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3192?s=80&v=4"},"commit":{"message":"Remove unused #with_context method and `context` attribute from AST parser\n\nWe now pass the context around explicitly.","shortMessageHtmlLink":"Remove unused #with_context method and context attribute from AST p…"}},{"before":"a03d4f65f2f2ce45143c7e06e6409afeb6ce2a70","after":null,"ref":"refs/heads/introduce-type-definitions","pushedAt":"2023-07-20T16:05:57.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"tomstuart","name":"Tom Stuart","path":"/tomstuart","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3192?s=80&v=4"}},{"before":"046ad8426e408e4aa4eee635b3e9ee3b3bfa3eeb","after":"370c28ae41811902c637633b8df96864872f5422","ref":"refs/heads/main","pushedAt":"2023-07-20T16:05:56.000Z","pushType":"pr_merge","commitsCount":19,"pusher":{"login":"tomstuart","name":"Tom Stuart","path":"/tomstuart","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3192?s=80&v=4"},"commit":{"message":"Allow type definitions to be generated while preprocessing a module (#15)\n\nThe #process_module method is ready to provide type definitions to the\r\ndeferred results produced by preprocessing the module’s fields so that\r\nthe type use abbreviation [0] can be desugared, but we don’t currently\r\nhave any way to communicate those type definitions to #process_module.\r\nAlthough the processed fields do include type definition fields, they’re\r\nall deferred until we’re ready to provide the type definitions — another\r\nchicken-and-egg situation.\r\n\r\nThis commit adds a “list of type definitions” return value\r\nto #process_type_definition and refactors other preprocessor methods to\r\nallow that value to propagate up to #process_module. The next (and\r\nfinal!) step will be to populate it with real type definitions and use\r\nthose to desugar the type use abbreviation.\r\n\r\nThis concludes the preparatory work begun in #12, #13 and #14, and\r\ntherefore still doesn’t introduce any externally visible changes to the\r\npreprocessor’s behaviour.\r\n\r\n[0] https://webassembly.github.io/spec/core/text/modules.html#abbreviations","shortMessageHtmlLink":"Allow type definitions to be generated while preprocessing a module (#15"}},{"before":null,"after":"a03d4f65f2f2ce45143c7e06e6409afeb6ce2a70","ref":"refs/heads/introduce-type-definitions","pushedAt":"2023-07-20T15:41:24.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"tomstuart","name":"Tom Stuart","path":"/tomstuart","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3192?s=80&v=4"},"commit":{"message":"Provide type definitions when processing module fields\n\nAt this point we’ve collected all of the module’s type definitions, so\nwe can pass them into the deferred result to retrieve the fields’ final\nS-expressions.","shortMessageHtmlLink":"Provide type definitions when processing module fields"}},{"before":"c5496404afa8b419d358a3077d49fa1ade24022f","after":null,"ref":"refs/heads/introduce-deferred-results","pushedAt":"2023-07-19T17:50:18.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"tomstuart","name":"Tom Stuart","path":"/tomstuart","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3192?s=80&v=4"}},{"before":"d4348139e2e288c31888c08d4546f50100b32f94","after":"046ad8426e408e4aa4eee635b3e9ee3b3bfa3eeb","ref":"refs/heads/main","pushedAt":"2023-07-19T17:50:17.000Z","pushType":"pr_merge","commitsCount":56,"pusher":{"login":"tomstuart","name":"Tom Stuart","path":"/tomstuart","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3192?s=80&v=4"},"commit":{"message":"Allow type definitions to be provided after preprocessing a module (#14)\n\nTo desugar the type use abbreviation [0] we’ll need access to a list of\r\nall the module’s type definitions [1] when preprocessing a type use [2],\r\nbut the full list of type definitions will only be available once the\r\ncomplete module has been processed. This creates a chicken-and-egg\r\nsituation: we can’t desugar a type use until we’ve processed all of the\r\nenclosing module’s fields, but many of those fields will contain type\r\nuses which need to be desugared during processing.\r\n\r\nThis commit breaks the deadlock by refactoring the preprocessor to allow\r\nsome field-processing methods to return a “deferred result”, namely a\r\nproc which must be called with a list of type definitions in order to\r\nproduce the final S-expression. Deferred results give us the ability to\r\nprocess a module’s fields first and then provide type definitions later;\r\nthe next step will be to generate the type definitions during processing\r\nso we can make use of that ability.\r\n\r\nThis continues the preparatory work from #12 and #13. We’re still in the\r\n“make the change easy” [3] phase, so there’s no externally visible\r\ndifference in the preprocessor’s behaviour yet.\r\n\r\n[0] https://webassembly.github.io/spec/core/text/modules.html#abbreviations\r\n[1] https://webassembly.github.io/spec/core/text/modules.html#types\r\n[2] https://webassembly.github.io/spec/core/text/modules.html#type-uses\r\n[3] https://twitter.com/KentBeck/status/250733358307500032","shortMessageHtmlLink":"Allow type definitions to be provided after preprocessing a module (#14)"}},{"before":null,"after":"c5496404afa8b419d358a3077d49fa1ade24022f","ref":"refs/heads/introduce-deferred-results","pushedAt":"2023-07-19T16:57:49.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"tomstuart","name":"Tom Stuart","path":"/tomstuart","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3192?s=80&v=4"},"commit":{"message":"Provide type definitions when processing fields\n\nThis completes the removal of the dummy type definitions from everywhere\nexcept #process_module, which is where we expect to be able to generate\nthe real type definitions after all of the module’s fields have been\nprocessed.","shortMessageHtmlLink":"Provide type definitions when processing fields"}},{"before":"03cc811a0e1c1561dbc11be5815da74019045504","after":null,"ref":"refs/heads/preprocess-type-uses-in-instructions","pushedAt":"2023-07-16T15:37:29.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"tomstuart","name":"Tom Stuart","path":"/tomstuart","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3192?s=80&v=4"}},{"before":"a0534d5a6b3c2dc2ee65b4b0e676de2455abde53","after":"d4348139e2e288c31888c08d4546f50100b32f94","ref":"refs/heads/main","pushedAt":"2023-07-16T15:37:28.000Z","pushType":"pr_merge","commitsCount":11,"pusher":{"login":"tomstuart","name":"Tom Stuart","path":"/tomstuart","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3192?s=80&v=4"},"commit":{"message":"Preprocess only genuine type uses inside instructions (#13)\n\nAs described in d0f567570c3740ed84c9da881cf1652a6ccac047, type uses [0]\r\ncan appear inside a few different kinds of instruction (`block`, `loop`,\r\n`if` and `call_indirect`) so we need to find and preprocess them to make\r\nit possible to add support for the type use abbreviation [1] in future.\r\n\r\nOur previous implementation was hacky and depended upon finding every\r\nsyntactic occurrence of `param` and `result` inside an instruction and\r\ndesugaring multiple anonymous occurrences [2]. This is fine for that\r\nspecific abbreviation but unsuitable for type uses more generally\r\nbecause some occurrences of `result` aren’t type uses: a `select`\r\ninstruction uses `result` but that isn’t a type use, and a block type\r\n[3] may or may not contain a type use depending upon whether `type` and\r\n`param` appear and how many `result`s it has.\r\n\r\nThis commit refines the implementation to correctly identify and\r\npreprocess only genuine type uses, taking into account the rules for\r\nwhen a block type should be treated as a type use.\r\n\r\n[0] https://webassembly.github.io/spec/core/text/modules.html#type-uses\r\n[1] https://webassembly.github.io/spec/core/text/modules.html#abbreviations\r\n[2] https://webassembly.github.io/spec/core/text/types.html#abbreviations\r\n[3] https://webassembly.github.io/spec/core/text/instructions.html#text-blocktype","shortMessageHtmlLink":"Preprocess only genuine type uses inside instructions (#13)"}},{"before":null,"after":"03cc811a0e1c1561dbc11be5815da74019045504","ref":"refs/heads/preprocess-type-uses-in-instructions","pushedAt":"2023-07-16T15:14:57.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"tomstuart","name":"Tom Stuart","path":"/tomstuart","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3192?s=80&v=4"},"commit":{"message":"Remove catch-all type use case from #process_instructions\n\nAll legitimate type uses are now covered by instruction-specific cases,\nso we no longer need the blunt instrument of looking for them\neverywhere.","shortMessageHtmlLink":"Remove catch-all type use case from #process_instructions"}},{"before":"9042b94b60a624fdc203da3e89237590b4337918","after":null,"ref":"refs/heads/tidy-up-preprocessor-and-parser","pushedAt":"2023-07-16T15:12:07.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"tomstuart","name":"Tom Stuart","path":"/tomstuart","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3192?s=80&v=4"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAADboZ2BgA","startCursor":null,"endCursor":null}},"title":"Activity · tomstuart/wasminna"}