{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":101767772,"defaultBranch":"main","name":"wasmtime","ownerLogin":"bytecodealliance","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2017-08-29T14:01:55.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/54038801?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1716164048.0","currentOid":""},"activityList":{"items":[{"before":null,"after":"ead1da2031722dcca57e253f85f3fd5cbc3eced7","ref":"refs/heads/ci/release-21.0.0","pushedAt":"2024-05-20T00:14:08.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"github-actions[bot]","name":null,"path":"/apps/github-actions","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/15368?s=80&v=4"},"commit":{"message":"Release Wasmtime 21.0.0\n\n[automatically-tag-and-release-this-commit]","shortMessageHtmlLink":"Release Wasmtime 21.0.0"}},{"before":null,"after":"c5427095657840a4de2ee290857096368387afe1","ref":"refs/heads/ci/release-date-for-21.0.0","pushedAt":"2024-05-20T00:14:06.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"github-actions[bot]","name":null,"path":"/apps/github-actions","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/15368?s=80&v=4"},"commit":{"message":"Update release date of Wasmtime 21.0.0","shortMessageHtmlLink":"Update release date of Wasmtime 21.0.0"}},{"before":"bda20ef6a04da0a24baeeb5ba92dbed39e4ed0cc","after":"e63366b918f11c303df476b37b52876e09f5e2c5","ref":"refs/heads/gh-pages","pushedAt":"2024-05-17T21:11:00.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"github-actions[bot]","name":null,"path":"/apps/github-actions","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/15368?s=80&v=4"},"commit":{"message":"Deploying to gh-pages from @ bytecodealliance/wasmtime@a77e87732e4e94ab6a2cee65bd5d74670bafe4ad ๐Ÿš€","shortMessageHtmlLink":"Deploying to gh-pages from @ a77e877 ๐Ÿš€"}},{"before":"a77e87732e4e94ab6a2cee65bd5d74670bafe4ad","after":null,"ref":"refs/heads/gh-readonly-queue/main/pr-8646-7e8abe388e7bd6ae28d4335a3cd89c8692c5c98f","pushedAt":"2024-05-17T21:07:33.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"github-merge-queue[bot]","name":null,"path":"/apps/github-merge-queue","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9919?s=80&v=4"}},{"before":"7e8abe388e7bd6ae28d4335a3cd89c8692c5c98f","after":"a77e87732e4e94ab6a2cee65bd5d74670bafe4ad","ref":"refs/heads/main","pushedAt":"2024-05-17T21:07:32.000Z","pushType":"merge_queue_merge","commitsCount":1,"pusher":{"login":"github-merge-queue[bot]","name":null,"path":"/apps/github-merge-queue","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9919?s=80&v=4"},"commit":{"message":"Un-gate `Func::new` on compiler features (#8646)\n\nThis commit enables the `Func::new` constructor and related other\nfunctions when `cranelift` and `winch` features are both disabled,\nmeaning this is now available in compiler-less builds. This builds on\nthe support of #8629.","shortMessageHtmlLink":"Un-gate Func::new on compiler features (#8646)"}},{"before":null,"after":"a77e87732e4e94ab6a2cee65bd5d74670bafe4ad","ref":"refs/heads/gh-readonly-queue/main/pr-8646-7e8abe388e7bd6ae28d4335a3cd89c8692c5c98f","pushedAt":"2024-05-17T20:54:39.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"github-merge-queue[bot]","name":null,"path":"/apps/github-merge-queue","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9919?s=80&v=4"},"commit":{"message":"Un-gate `Func::new` on compiler features (#8646)\n\nThis commit enables the `Func::new` constructor and related other\nfunctions when `cranelift` and `winch` features are both disabled,\nmeaning this is now available in compiler-less builds. This builds on\nthe support of #8629.","shortMessageHtmlLink":"Un-gate Func::new on compiler features (#8646)"}},{"before":"74911bc2f66fa1f982c3f1b06721345d2ffe6387","after":"bda20ef6a04da0a24baeeb5ba92dbed39e4ed0cc","ref":"refs/heads/gh-pages","pushedAt":"2024-05-17T17:20:35.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"github-actions[bot]","name":null,"path":"/apps/github-actions","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/15368?s=80&v=4"},"commit":{"message":"Deploying to gh-pages from @ bytecodealliance/wasmtime@7e8abe388e7bd6ae28d4335a3cd89c8692c5c98f ๐Ÿš€","shortMessageHtmlLink":"Deploying to gh-pages from @ 7e8abe3 ๐Ÿš€"}},{"before":"7e8abe388e7bd6ae28d4335a3cd89c8692c5c98f","after":null,"ref":"refs/heads/gh-readonly-queue/main/pr-8647-45a12a1c0a50491b7490c120863c203c5d2f3d70","pushedAt":"2024-05-17T17:17:00.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"github-merge-queue[bot]","name":null,"path":"/apps/github-merge-queue","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9919?s=80&v=4"}},{"before":"45a12a1c0a50491b7490c120863c203c5d2f3d70","after":"7e8abe388e7bd6ae28d4335a3cd89c8692c5c98f","ref":"refs/heads/main","pushedAt":"2024-05-17T17:16:58.000Z","pushType":"merge_queue_merge","commitsCount":1,"pusher":{"login":"github-merge-queue[bot]","name":null,"path":"/apps/github-merge-queue","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9919?s=80&v=4"},"commit":{"message":"Fix some fuzz memory configuration issues (#8647)\n\n* Fix some fuzz memory configuration issues\n\nFallout from #8628 that I forgot to handle.\n\n* More fuzz tweaks\n\n* More tweaks for more bugs","shortMessageHtmlLink":"Fix some fuzz memory configuration issues (#8647)"}},{"before":null,"after":"7e8abe388e7bd6ae28d4335a3cd89c8692c5c98f","ref":"refs/heads/gh-readonly-queue/main/pr-8647-45a12a1c0a50491b7490c120863c203c5d2f3d70","pushedAt":"2024-05-17T17:03:55.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"github-merge-queue[bot]","name":null,"path":"/apps/github-merge-queue","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9919?s=80&v=4"},"commit":{"message":"Fix some fuzz memory configuration issues (#8647)\n\n* Fix some fuzz memory configuration issues\n\nFallout from #8628 that I forgot to handle.\n\n* More fuzz tweaks\n\n* More tweaks for more bugs","shortMessageHtmlLink":"Fix some fuzz memory configuration issues (#8647)"}},{"before":"a91e12f464068956ae745b60e739d8c130687d1b","after":"74911bc2f66fa1f982c3f1b06721345d2ffe6387","ref":"refs/heads/gh-pages","pushedAt":"2024-05-17T16:16:22.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"github-actions[bot]","name":null,"path":"/apps/github-actions","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/15368?s=80&v=4"},"commit":{"message":"Deploying to gh-pages from @ bytecodealliance/wasmtime@45a12a1c0a50491b7490c120863c203c5d2f3d70 ๐Ÿš€","shortMessageHtmlLink":"Deploying to gh-pages from @ 45a12a1 ๐Ÿš€"}},{"before":"45a12a1c0a50491b7490c120863c203c5d2f3d70","after":null,"ref":"refs/heads/gh-readonly-queue/main/pr-8633-e165106b1ae746135a15221b150dffbe62e0a3c6","pushedAt":"2024-05-17T16:12:59.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"github-merge-queue[bot]","name":null,"path":"/apps/github-merge-queue","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9919?s=80&v=4"}},{"before":"e165106b1ae746135a15221b150dffbe62e0a3c6","after":"45a12a1c0a50491b7490c120863c203c5d2f3d70","ref":"refs/heads/main","pushedAt":"2024-05-17T16:12:59.000Z","pushType":"merge_queue_merge","commitsCount":1,"pusher":{"login":"github-merge-queue[bot]","name":null,"path":"/apps/github-merge-queue","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9919?s=80&v=4"},"commit":{"message":"Change the function alignment of x86 to 32-bytes (#8633)\n\n* change the function alignment of x86 to 32-bytes\n\n* Update disassembly tests\n\n---------\n\nCo-authored-by: ringz ","shortMessageHtmlLink":"Change the function alignment of x86 to 32-bytes (#8633)"}},{"before":null,"after":"45a12a1c0a50491b7490c120863c203c5d2f3d70","ref":"refs/heads/gh-readonly-queue/main/pr-8633-e165106b1ae746135a15221b150dffbe62e0a3c6","pushedAt":"2024-05-17T15:59:55.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"github-merge-queue[bot]","name":null,"path":"/apps/github-merge-queue","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9919?s=80&v=4"},"commit":{"message":"Change the function alignment of x86 to 32-bytes (#8633)\n\n* change the function alignment of x86 to 32-bytes\n\n* Update disassembly tests\n\n---------\n\nCo-authored-by: ringz ","shortMessageHtmlLink":"Change the function alignment of x86 to 32-bytes (#8633)"}},{"before":"683647bcbe4f464d743df2a8cd13b3acd217576f","after":"a91e12f464068956ae745b60e739d8c130687d1b","ref":"refs/heads/gh-pages","pushedAt":"2024-05-17T13:54:43.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"github-actions[bot]","name":null,"path":"/apps/github-actions","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/15368?s=80&v=4"},"commit":{"message":"Deploying to gh-pages from @ bytecodealliance/wasmtime@e165106b1ae746135a15221b150dffbe62e0a3c6 ๐Ÿš€","shortMessageHtmlLink":"Deploying to gh-pages from @ e165106 ๐Ÿš€"}},{"before":"f1579d6c35f600edbb5cbe4f94730d807efa3e74","after":"683647bcbe4f464d743df2a8cd13b3acd217576f","ref":"refs/heads/gh-pages","pushedAt":"2024-05-17T13:51:59.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"github-actions[bot]","name":null,"path":"/apps/github-actions","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/15368?s=80&v=4"},"commit":{"message":"Deploying to gh-pages from @ bytecodealliance/wasmtime@4e62cfdc33127082c083c00269eaecd437ea3441 ๐Ÿš€","shortMessageHtmlLink":"Deploying to gh-pages from @ 4e62cfd ๐Ÿš€"}},{"before":"e165106b1ae746135a15221b150dffbe62e0a3c6","after":null,"ref":"refs/heads/gh-readonly-queue/main/pr-8643-4e62cfdc33127082c083c00269eaecd437ea3441","pushedAt":"2024-05-17T13:51:23.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"github-merge-queue[bot]","name":null,"path":"/apps/github-merge-queue","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9919?s=80&v=4"}},{"before":"4e62cfdc33127082c083c00269eaecd437ea3441","after":"e165106b1ae746135a15221b150dffbe62e0a3c6","ref":"refs/heads/main","pushedAt":"2024-05-17T13:51:22.000Z","pushType":"merge_queue_merge","commitsCount":1,"pusher":{"login":"github-merge-queue[bot]","name":null,"path":"/apps/github-merge-queue","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9919?s=80&v=4"},"commit":{"message":"cranelift: Remove nominal-sp (#8643)\n\n* Update the frame layout comment\n\n* Remove more references to nominal SP\n\n* Remove the nominal_sp_offset from backend emit states\n\n* Continue removing references to the nominal sp\n\n* Remove nominal-sp from the aarch64 backend\n\n* Remove nominal-sp from the s390x backend\n\n* Remove nominal-sp from the riscv64 backend\n\n* Remove old comment","shortMessageHtmlLink":"cranelift: Remove nominal-sp (#8643)"}},{"before":"4e62cfdc33127082c083c00269eaecd437ea3441","after":null,"ref":"refs/heads/gh-readonly-queue/main/pr-8644-1d11b265f98495f4e933bc82ea4332663f47788f","pushedAt":"2024-05-17T13:44:48.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"github-merge-queue[bot]","name":null,"path":"/apps/github-merge-queue","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9919?s=80&v=4"}},{"before":"1d11b265f98495f4e933bc82ea4332663f47788f","after":"4e62cfdc33127082c083c00269eaecd437ea3441","ref":"refs/heads/main","pushedAt":"2024-05-17T13:44:47.000Z","pushType":"merge_queue_merge","commitsCount":1,"pusher":{"login":"github-merge-queue[bot]","name":null,"path":"/apps/github-merge-queue","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9919?s=80&v=4"},"commit":{"message":"Add wasmtime-platform.h to release artifacts (#8644)\n\nThis fixes a bug from #8555 where the header was uploaded to CI but\ndidn't make its way to the release itself.","shortMessageHtmlLink":"Add wasmtime-platform.h to release artifacts (#8644)"}},{"before":null,"after":"e165106b1ae746135a15221b150dffbe62e0a3c6","ref":"refs/heads/gh-readonly-queue/main/pr-8643-4e62cfdc33127082c083c00269eaecd437ea3441","pushedAt":"2024-05-17T13:37:59.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"github-merge-queue[bot]","name":null,"path":"/apps/github-merge-queue","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9919?s=80&v=4"},"commit":{"message":"cranelift: Remove nominal-sp (#8643)\n\n* Update the frame layout comment\n\n* Remove more references to nominal SP\n\n* Remove the nominal_sp_offset from backend emit states\n\n* Continue removing references to the nominal sp\n\n* Remove nominal-sp from the aarch64 backend\n\n* Remove nominal-sp from the s390x backend\n\n* Remove nominal-sp from the riscv64 backend\n\n* Remove old comment","shortMessageHtmlLink":"cranelift: Remove nominal-sp (#8643)"}},{"before":null,"after":"4e62cfdc33127082c083c00269eaecd437ea3441","ref":"refs/heads/gh-readonly-queue/main/pr-8644-1d11b265f98495f4e933bc82ea4332663f47788f","pushedAt":"2024-05-17T13:31:38.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"github-merge-queue[bot]","name":null,"path":"/apps/github-merge-queue","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9919?s=80&v=4"},"commit":{"message":"Add wasmtime-platform.h to release artifacts (#8644)\n\nThis fixes a bug from #8555 where the header was uploaded to CI but\ndidn't make its way to the release itself.","shortMessageHtmlLink":"Add wasmtime-platform.h to release artifacts (#8644)"}},{"before":"5e0d89e98e19e81e7ab3adca3e4cf27bb1b9b8fe","after":"f1579d6c35f600edbb5cbe4f94730d807efa3e74","ref":"refs/heads/gh-pages","pushedAt":"2024-05-17T04:46:41.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"github-actions[bot]","name":null,"path":"/apps/github-actions","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/15368?s=80&v=4"},"commit":{"message":"Deploying to gh-pages from @ bytecodealliance/wasmtime@1d11b265f98495f4e933bc82ea4332663f47788f ๐Ÿš€","shortMessageHtmlLink":"Deploying to gh-pages from @ 1d11b26 ๐Ÿš€"}},{"before":"1d11b265f98495f4e933bc82ea4332663f47788f","after":null,"ref":"refs/heads/gh-readonly-queue/main/pr-8629-906ea01734cee6e611ffc37d7e227c351b4cc1d2","pushedAt":"2024-05-17T04:42:04.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"github-merge-queue[bot]","name":null,"path":"/apps/github-merge-queue","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9919?s=80&v=4"}},{"before":"906ea01734cee6e611ffc37d7e227c351b4cc1d2","after":"1d11b265f98495f4e933bc82ea4332663f47788f","ref":"refs/heads/main","pushedAt":"2024-05-17T04:42:03.000Z","pushType":"merge_queue_merge","commitsCount":1,"pusher":{"login":"github-merge-queue[bot]","name":null,"path":"/apps/github-merge-queue","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9919?s=80&v=4"},"commit":{"message":"Remove the native ABI calling convention from Wasmtime (#8629)\n\n* Remove the native ABI calling convention from Wasmtime\n\nThis commit proposes removing the \"native abi\" calling convention used\nin Wasmtime. For background this ABI dates back to the origins of\nWasmtime. Originally Wasmtime only had `Func::call` and eventually I\nadded `TypedFunc` with `TypedFunc::call` and `Func::wrap` for a faster\npath. At the time given the state of trampolines it was easiest to call\nWebAssembly code directly without any trampolines using the native ABI\nthat wasm used at the time. This is the original source of the native\nABI and it's persisted over time under the assumption that it's faster\nthan the array ABI due to keeping arguments in registers rather than\nspilling them to the stack.\n\nOver time, however, this design decision of using the native ABI has not\naged well. Trampolines have changed quite a lot in the meantime and it's\nno longer possible for the host to call wasm without a trampoline, for\nexample. Compilations nowadays maintain both native and array\ntrampolines for wasm functions in addition to host functions. There's a\nlarge split between `Func::new` and `Func::wrap`. Overall, there's quite\na lot of weight that we're pulling for the design decision of using the\nnative ABI.\n\nFunctionally this hasn't ever really been the end of the world.\nTrampolines aren't a known issue in terms of performance or code size.\nThere's no known faster way to invoke WebAssembly from the host (or\nvice-versa). One major downside of this design, however, is that\n`Func::new` requires Cranelift as a backend to exist. This is due to the\nfact that it needs to synthesize various entries in the matrix of ABIs\nwe have that aren't available at any other time. While this is itself\nnot the worst of issues it means that the C API cannot be built without\na compiler because the C API does not have access to `Func::wrap`.\n\nOverall I'd like to reevaluate given where Wasmtime is today whether it\nmakes sense to keep the native ABI trampolines. Sure they're supposed to\nbe fast, but are they really that much faster than the array-call ABI as\nan alternative? This commit is intended to measure this.\n\nThis commit removes the native ABI calling convention entirely. For\nexample `VMFuncRef` is now one pointer smaller. All of `TypedFunc` now\nuses `*mut ValRaw` for loads/stores rather than dealing with ABI\nbusiness. The benchmarks with this PR are:\n\n* `sync/no-hook/core - host-to-wasm - typed - nop` - 5% faster\n* `sync/no-hook/core - host-to-wasm - typed - nop-params-and-results` - 10% slower\n* `sync/no-hook/core - wasm-to-host - typed - nop` - no change\n* `sync/no-hook/core - wasm-to-host - typed - nop-params-and-results` - 7% faster\n\nThese numbers are a bit surprising as I would have suspected no change\nin both \"nop\" benchmarks as well as both being slower in the\nparams-and-results benchmarks. Regardless it is apparent that this is\nnot a major change in terms of performance given Wasmtime's current\nstate. In general my hunch is that there are more expensive sources of\noverhead than reads/writes from the stack when dealing with wasm values\n(e.g. trap handling, store management, etc).\n\nOverall this commit feels like a large simplification of what we\ncurrently do in `TypedFunc`:\n\n* The number of ABIs that Wasmtime deals with is reduced by one. ABIs\n are pretty much always tricky and having fewer moving parts should\n help improve the understandability of the system.\n* All of the `WasmTy` trait methods and `TypedFunc` infrastructure is\n simplified. Traits now work with simple `load`/`store` methods rather\n than various other flavors of conversion.\n* The multi-return-value handling of the native ABI is all gone now\n which gave rise to significant complexity within Wasmtime's Cranelift\n translation layer in addition to the `TypedFunc` backing traits.\n* This aligns components and core wasm where components always use the\n array ABI and now core wasm additionally will always use the array ABI\n when communicating with the host.\n\nI'll note that this still leaves a major ABI \"complexity\" with respect\nto native functions do not have a wasm ABI function pointer until\nthey're \"attached\" to a `Store` with a `Module`. That's required to\navoid needing Cranelift for creating host functions and that property is\nstill true today. This is a bit simpler to understand though now that\n`Func::new` and `Func::wrap` are treated uniformly rather than one being\nspecial-cased.\n\n* Fix miri unsafety\n\nprtest:full","shortMessageHtmlLink":"Remove the native ABI calling convention from Wasmtime (#8629)"}},{"before":null,"after":"1d11b265f98495f4e933bc82ea4332663f47788f","ref":"refs/heads/gh-readonly-queue/main/pr-8629-906ea01734cee6e611ffc37d7e227c351b4cc1d2","pushedAt":"2024-05-17T04:28:27.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"github-merge-queue[bot]","name":null,"path":"/apps/github-merge-queue","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9919?s=80&v=4"},"commit":{"message":"Remove the native ABI calling convention from Wasmtime (#8629)\n\n* Remove the native ABI calling convention from Wasmtime\n\nThis commit proposes removing the \"native abi\" calling convention used\nin Wasmtime. For background this ABI dates back to the origins of\nWasmtime. Originally Wasmtime only had `Func::call` and eventually I\nadded `TypedFunc` with `TypedFunc::call` and `Func::wrap` for a faster\npath. At the time given the state of trampolines it was easiest to call\nWebAssembly code directly without any trampolines using the native ABI\nthat wasm used at the time. This is the original source of the native\nABI and it's persisted over time under the assumption that it's faster\nthan the array ABI due to keeping arguments in registers rather than\nspilling them to the stack.\n\nOver time, however, this design decision of using the native ABI has not\naged well. Trampolines have changed quite a lot in the meantime and it's\nno longer possible for the host to call wasm without a trampoline, for\nexample. Compilations nowadays maintain both native and array\ntrampolines for wasm functions in addition to host functions. There's a\nlarge split between `Func::new` and `Func::wrap`. Overall, there's quite\na lot of weight that we're pulling for the design decision of using the\nnative ABI.\n\nFunctionally this hasn't ever really been the end of the world.\nTrampolines aren't a known issue in terms of performance or code size.\nThere's no known faster way to invoke WebAssembly from the host (or\nvice-versa). One major downside of this design, however, is that\n`Func::new` requires Cranelift as a backend to exist. This is due to the\nfact that it needs to synthesize various entries in the matrix of ABIs\nwe have that aren't available at any other time. While this is itself\nnot the worst of issues it means that the C API cannot be built without\na compiler because the C API does not have access to `Func::wrap`.\n\nOverall I'd like to reevaluate given where Wasmtime is today whether it\nmakes sense to keep the native ABI trampolines. Sure they're supposed to\nbe fast, but are they really that much faster than the array-call ABI as\nan alternative? This commit is intended to measure this.\n\nThis commit removes the native ABI calling convention entirely. For\nexample `VMFuncRef` is now one pointer smaller. All of `TypedFunc` now\nuses `*mut ValRaw` for loads/stores rather than dealing with ABI\nbusiness. The benchmarks with this PR are:\n\n* `sync/no-hook/core - host-to-wasm - typed - nop` - 5% faster\n* `sync/no-hook/core - host-to-wasm - typed - nop-params-and-results` - 10% slower\n* `sync/no-hook/core - wasm-to-host - typed - nop` - no change\n* `sync/no-hook/core - wasm-to-host - typed - nop-params-and-results` - 7% faster\n\nThese numbers are a bit surprising as I would have suspected no change\nin both \"nop\" benchmarks as well as both being slower in the\nparams-and-results benchmarks. Regardless it is apparent that this is\nnot a major change in terms of performance given Wasmtime's current\nstate. In general my hunch is that there are more expensive sources of\noverhead than reads/writes from the stack when dealing with wasm values\n(e.g. trap handling, store management, etc).\n\nOverall this commit feels like a large simplification of what we\ncurrently do in `TypedFunc`:\n\n* The number of ABIs that Wasmtime deals with is reduced by one. ABIs\n are pretty much always tricky and having fewer moving parts should\n help improve the understandability of the system.\n* All of the `WasmTy` trait methods and `TypedFunc` infrastructure is\n simplified. Traits now work with simple `load`/`store` methods rather\n than various other flavors of conversion.\n* The multi-return-value handling of the native ABI is all gone now\n which gave rise to significant complexity within Wasmtime's Cranelift\n translation layer in addition to the `TypedFunc` backing traits.\n* This aligns components and core wasm where components always use the\n array ABI and now core wasm additionally will always use the array ABI\n when communicating with the host.\n\nI'll note that this still leaves a major ABI \"complexity\" with respect\nto native functions do not have a wasm ABI function pointer until\nthey're \"attached\" to a `Store` with a `Module`. That's required to\navoid needing Cranelift for creating host functions and that property is\nstill true today. This is a bit simpler to understand though now that\n`Func::new` and `Func::wrap` are treated uniformly rather than one being\nspecial-cased.\n\n* Fix miri unsafety\n\nprtest:full","shortMessageHtmlLink":"Remove the native ABI calling convention from Wasmtime (#8629)"}},{"before":"881f11ffc9ac8f581cee151a71c3a20526ff00e7","after":"5e0d89e98e19e81e7ab3adca3e4cf27bb1b9b8fe","ref":"refs/heads/gh-pages","pushedAt":"2024-05-17T04:23:37.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"github-actions[bot]","name":null,"path":"/apps/github-actions","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/15368?s=80&v=4"},"commit":{"message":"Deploying to gh-pages from @ bytecodealliance/wasmtime@906ea01734cee6e611ffc37d7e227c351b4cc1d2 ๐Ÿš€","shortMessageHtmlLink":"Deploying to gh-pages from @ 906ea01 ๐Ÿš€"}},{"before":"906ea01734cee6e611ffc37d7e227c351b4cc1d2","after":null,"ref":"refs/heads/gh-readonly-queue/main/pr-8628-c73f8de85d61831ce1eb5ffd22e2cab6e4d57959","pushedAt":"2024-05-17T04:20:16.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"github-merge-queue[bot]","name":null,"path":"/apps/github-merge-queue","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9919?s=80&v=4"}},{"before":"c73f8de85d61831ce1eb5ffd22e2cab6e4d57959","after":"906ea01734cee6e611ffc37d7e227c351b4cc1d2","ref":"refs/heads/main","pushedAt":"2024-05-17T04:20:15.000Z","pushType":"merge_queue_merge","commitsCount":1,"pusher":{"login":"github-merge-queue[bot]","name":null,"path":"/apps/github-merge-queue","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9919?s=80&v=4"},"commit":{"message":"Use bytes for maximum size of linear memory with pooling (#8628)\n\n* Use bytes for maximum size of linear memory with pooling\n\nThis commit changes configuration of the pooling allocator to use a\nbyte-based unit rather than a page based unit. The previous\n`PoolingAllocatorConfig::memory_pages` configuration option configures\nthe maximum size that a linear memory may grow to at runtime. This is an\nimportant factor in calculation of stripes for MPK and is also a\ncoarse-grained knob apart from `StoreLimiter` to limit memory\nconsumption. This configuration option has been renamed to\n`max_memory_size` and documented that it's in terms of bytes rather than\npages as before.\n\nAdditionally the documented constraint of `max_memory_size` must be\nsmaller than `static_memory_bound` is now additionally enforced as a\nminor clean-up as part of this PR as well.\n\n* Review comments\n\n* Fix benchmark build","shortMessageHtmlLink":"Use bytes for maximum size of linear memory with pooling (#8628)"}},{"before":null,"after":"906ea01734cee6e611ffc37d7e227c351b4cc1d2","ref":"refs/heads/gh-readonly-queue/main/pr-8628-c73f8de85d61831ce1eb5ffd22e2cab6e4d57959","pushedAt":"2024-05-17T04:06:55.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"github-merge-queue[bot]","name":null,"path":"/apps/github-merge-queue","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9919?s=80&v=4"},"commit":{"message":"Use bytes for maximum size of linear memory with pooling (#8628)\n\n* Use bytes for maximum size of linear memory with pooling\n\nThis commit changes configuration of the pooling allocator to use a\nbyte-based unit rather than a page based unit. The previous\n`PoolingAllocatorConfig::memory_pages` configuration option configures\nthe maximum size that a linear memory may grow to at runtime. This is an\nimportant factor in calculation of stripes for MPK and is also a\ncoarse-grained knob apart from `StoreLimiter` to limit memory\nconsumption. This configuration option has been renamed to\n`max_memory_size` and documented that it's in terms of bytes rather than\npages as before.\n\nAdditionally the documented constraint of `max_memory_size` must be\nsmaller than `static_memory_bound` is now additionally enforced as a\nminor clean-up as part of this PR as well.\n\n* Review comments\n\n* Fix benchmark build","shortMessageHtmlLink":"Use bytes for maximum size of linear memory with pooling (#8628)"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAETk3-rgA","startCursor":null,"endCursor":null}},"title":"Activity ยท bytecodealliance/wasmtime"}