{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":234798675,"defaultBranch":"main","name":"bevy","ownerLogin":"bevyengine","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2020-01-18T21:13:55.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/60047606?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1726783092.0","currentOid":""},"activityList":{"items":[{"before":"13ca08f32d5ef7d8e510034fa7664c6efeca7ff0","after":null,"ref":"refs/heads/gh-readonly-queue/main/pr-15266-40b05b211684461de7dcd3cc6a0cd503e85cd814","pushedAt":"2024-09-19T22:04:11.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":"40b05b211684461de7dcd3cc6a0cd503e85cd814","after":"13ca08f32d5ef7d8e510034fa7664c6efeca7ff0","ref":"refs/heads/main","pushedAt":"2024-09-19T22:04:10.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 ASCII art to custom mesh example (#15261) (#15266)\n\nAdded ASCII art to the custom mesh example, to clarify the ordering of\nthe triangle indices.\nFixes #15261.","shortMessageHtmlLink":"Add ASCII art to custom mesh example (#15261) (#15266)"}},{"before":"40b05b211684461de7dcd3cc6a0cd503e85cd814","after":null,"ref":"refs/heads/gh-readonly-queue/main/pr-15311-1b8c1c12429c18651f213bca6519dcaf376895a6","pushedAt":"2024-09-19T21:58:12.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":"1b8c1c12429c18651f213bca6519dcaf376895a6","after":"40b05b211684461de7dcd3cc6a0cd503e85cd814","ref":"refs/heads/main","pushedAt":"2024-09-19T21:58:11.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 int2ptr cast in `bevy_ptr::dangling_with_align` and remove `-Zmiri-permissive-provenance` in CI (#15311)\n\n# Objective\n\n- Remove an int2ptr cast in `bevy_ptr::dangling_with_align`\n- This is flagged by MIRI unless `-Zmiri-permissive-provenance` is used\n(like in CI)\n- Remove `-Zmiri-permissive-provenance` in CI\n\n## Solution\n\n- Create the raw pointer like\n[`std::ptr::without_provenance`](https://doc.rust-lang.org/stable/std/ptr/fn.without_provenance_mut.html)\ndoes, i.e. by starting from a null pointer.\n\n---------\n\nCo-authored-by: Alice Cecile \nCo-authored-by: François Mockers ","shortMessageHtmlLink":"Remove int2ptr cast in bevy_ptr::dangling_with_align and remove `-Z…"}},{"before":null,"after":"13ca08f32d5ef7d8e510034fa7664c6efeca7ff0","ref":"refs/heads/gh-readonly-queue/main/pr-15266-40b05b211684461de7dcd3cc6a0cd503e85cd814","pushedAt":"2024-09-19T21:47:48.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 ASCII art to custom mesh example (#15261) (#15266)\n\nAdded ASCII art to the custom mesh example, to clarify the ordering of\nthe triangle indices.\nFixes #15261.","shortMessageHtmlLink":"Add ASCII art to custom mesh example (#15261) (#15266)"}},{"before":"1b8c1c12429c18651f213bca6519dcaf376895a6","after":null,"ref":"refs/heads/gh-readonly-queue/main/pr-15315-612897becd415b7b982f58bd76deb719b42c9790","pushedAt":"2024-09-19T21:45: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":"612897becd415b7b982f58bd76deb719b42c9790","after":"1b8c1c12429c18651f213bca6519dcaf376895a6","ref":"refs/heads/main","pushedAt":"2024-09-19T21:45: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":"simplify std::mem references (#15315)\n\n# Objective\n- Fixes #15314\n\n## Solution\n\n- Remove unnecessary usings and simplify references to those functions.\n\n## Testing\n\nCI","shortMessageHtmlLink":"simplify std::mem references (#15315)"}},{"before":null,"after":"40b05b211684461de7dcd3cc6a0cd503e85cd814","ref":"refs/heads/gh-readonly-queue/main/pr-15311-1b8c1c12429c18651f213bca6519dcaf376895a6","pushedAt":"2024-09-19T21:41:35.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 int2ptr cast in `bevy_ptr::dangling_with_align` and remove `-Zmiri-permissive-provenance` in CI (#15311)\n\n# Objective\n\n- Remove an int2ptr cast in `bevy_ptr::dangling_with_align`\n- This is flagged by MIRI unless `-Zmiri-permissive-provenance` is used\n(like in CI)\n- Remove `-Zmiri-permissive-provenance` in CI\n\n## Solution\n\n- Create the raw pointer like\n[`std::ptr::without_provenance`](https://doc.rust-lang.org/stable/std/ptr/fn.without_provenance_mut.html)\ndoes, i.e. by starting from a null pointer.\n\n---------\n\nCo-authored-by: Alice Cecile \nCo-authored-by: François Mockers ","shortMessageHtmlLink":"Remove int2ptr cast in bevy_ptr::dangling_with_align and remove `-Z…"}},{"before":null,"after":"1b8c1c12429c18651f213bca6519dcaf376895a6","ref":"refs/heads/gh-readonly-queue/main/pr-15315-612897becd415b7b982f58bd76deb719b42c9790","pushedAt":"2024-09-19T21:28:31.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":"simplify std::mem references (#15315)\n\n# Objective\n- Fixes #15314\n\n## Solution\n\n- Remove unnecessary usings and simplify references to those functions.\n\n## Testing\n\nCI","shortMessageHtmlLink":"simplify std::mem references (#15315)"}},{"before":"612897becd415b7b982f58bd76deb719b42c9790","after":null,"ref":"refs/heads/gh-readonly-queue/main/pr-15237-106db47f69055affd9d4378c05c4b97f13be6bac","pushedAt":"2024-09-19T19:35: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":"106db47f69055affd9d4378c05c4b97f13be6bac","after":"612897becd415b7b982f58bd76deb719b42c9790","ref":"refs/heads/main","pushedAt":"2024-09-19T19:35:57.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":"AssetServer LoadState API consistency (#15237)\n\n# Objective\n\n- implements consistently named AssertServer methods for asset,\ndependency, and recursive dependency load states\n- returns relevant LoadState when required, including error information\nfor failed loads\n- resolves #15098\n\n## Solution\n\n- implement consistently named LoadState accessor methods:\n- load_state, dependency_load_state, recursive_dependency_load_state\n(return unwrapped load states)\n- get_load_state, get_dependency_load_state,\nget_recursive_dependency_load_state (return Option)\n- is_loaded, is_loaded_with_dependencies,\nis_loaded_with_recursive_dependencies (return bool)\n- adds AssetLoadError to DependencyLoadState::Failed and\nRecursiveDependencyLoadState::Failed\n\n## Testing\n\n- Added coverage to existing unit tests","shortMessageHtmlLink":"AssetServer LoadState API consistency (#15237)"}},{"before":null,"after":"612897becd415b7b982f58bd76deb719b42c9790","ref":"refs/heads/gh-readonly-queue/main/pr-15237-106db47f69055affd9d4378c05c4b97f13be6bac","pushedAt":"2024-09-19T19:18:47.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":"AssetServer LoadState API consistency (#15237)\n\n# Objective\n\n- implements consistently named AssertServer methods for asset,\ndependency, and recursive dependency load states\n- returns relevant LoadState when required, including error information\nfor failed loads\n- resolves #15098\n\n## Solution\n\n- implement consistently named LoadState accessor methods:\n- load_state, dependency_load_state, recursive_dependency_load_state\n(return unwrapped load states)\n- get_load_state, get_dependency_load_state,\nget_recursive_dependency_load_state (return Option)\n- is_loaded, is_loaded_with_dependencies,\nis_loaded_with_recursive_dependencies (return bool)\n- adds AssetLoadError to DependencyLoadState::Failed and\nRecursiveDependencyLoadState::Failed\n\n## Testing\n\n- Added coverage to existing unit tests","shortMessageHtmlLink":"AssetServer LoadState API consistency (#15237)"}},{"before":"106db47f69055affd9d4378c05c4b97f13be6bac","after":null,"ref":"refs/heads/gh-readonly-queue/main/pr-15309-55c84cc7226aac4fab3310b8e8281167f5c7c03b","pushedAt":"2024-09-19T18:32:36.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":"55c84cc7226aac4fab3310b8e8281167f5c7c03b","after":"106db47f69055affd9d4378c05c4b97f13be6bac","ref":"refs/heads/main","pushedAt":"2024-09-19T18:32:35.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 subtle/weird UB in the multi threaded executor (#15309)\n\n# Objective\n\n- The multithreaded executor has some weird UB related to stacked\nborrows and async blocks\n- See my explanation on discord\nhttps://discord.com/channels/691052431525675048/749335865876021248/1286359267921887232\n- Closes #15296 (can this be used to close PRs?)\n\n## Solution\n\n- Don't create a `&mut World` reference outside `async` blocks and then\ncapture it, but instead directly create it inside the `async` blocks.\nThis avoids it being captured, which has some weird requirement on its\nvalidity.\n\n## Testing\n\n- Added a regression test","shortMessageHtmlLink":"Fix subtle/weird UB in the multi threaded executor (#15309)"}},{"before":null,"after":"106db47f69055affd9d4378c05c4b97f13be6bac","ref":"refs/heads/gh-readonly-queue/main/pr-15309-55c84cc7226aac4fab3310b8e8281167f5c7c03b","pushedAt":"2024-09-19T18:16:14.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 subtle/weird UB in the multi threaded executor (#15309)\n\n# Objective\n\n- The multithreaded executor has some weird UB related to stacked\nborrows and async blocks\n- See my explanation on discord\nhttps://discord.com/channels/691052431525675048/749335865876021248/1286359267921887232\n- Closes #15296 (can this be used to close PRs?)\n\n## Solution\n\n- Don't create a `&mut World` reference outside `async` blocks and then\ncapture it, but instead directly create it inside the `async` blocks.\nThis avoids it being captured, which has some weird requirement on its\nvalidity.\n\n## Testing\n\n- Added a regression test","shortMessageHtmlLink":"Fix subtle/weird UB in the multi threaded executor (#15309)"}},{"before":"55c84cc7226aac4fab3310b8e8281167f5c7c03b","after":null,"ref":"refs/heads/gh-readonly-queue/main/pr-15260-7ad27f475988aa6a16e86256695ebf7c0745783e","pushedAt":"2024-09-19T17:00:42.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":"7ad27f475988aa6a16e86256695ebf7c0745783e","after":null,"ref":"refs/heads/gh-readonly-queue/main/pr-15295-28597e4082647b3b8c11a32903e1d011589970c0","pushedAt":"2024-09-19T17:00:42.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":"28597e4082647b3b8c11a32903e1d011589970c0","after":"55c84cc7226aac4fab3310b8e8281167f5c7c03b","ref":"refs/heads/main","pushedAt":"2024-09-19T17:00:40.000Z","pushType":"merge_queue_merge","commitsCount":2,"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":"Added `HeadlessPlugins` (#15203) (#15260)\n\nAdded a `HeadlessPlugins` plugin group, that adds more default\nfunctionality (like logging) than the `MinimumPlugins`. Fixes #15203\nChanged the headless example to use the new plugin group.\n\nI am not entirely sure if the list of plugins is correct. Are there ones\nthat should be added / removed?\n\n----\nThe `TerminalCtrlCHandlerPlugin` has interesting effects in the headless\nexample: Installing it a second time it will give a log message about\nskipping installation, because it is already installed. Ctrl+C will\nterminate the application in that case. However, _not_ installing it the\nsecond time (so only on the app that runs once) has the effect that the\napp that runs continuously cannot be stopped using Ctrl+C.\nThis implies that, even though the second app did not install the Ctrl+C\nhandler, it did _something_ because it was keeping the one from the\nfirst app alive.\nNot sure if this is a problem or issue, or can be labeled a wierd quirk\nof having multiple Apps in one executable.","shortMessageHtmlLink":"Added HeadlessPlugins (#15203) (#15260)"}},{"before":null,"after":"55c84cc7226aac4fab3310b8e8281167f5c7c03b","ref":"refs/heads/gh-readonly-queue/main/pr-15260-7ad27f475988aa6a16e86256695ebf7c0745783e","pushedAt":"2024-09-19T16:45:00.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":"Added `HeadlessPlugins` (#15203) (#15260)\n\nAdded a `HeadlessPlugins` plugin group, that adds more default\nfunctionality (like logging) than the `MinimumPlugins`. Fixes #15203\nChanged the headless example to use the new plugin group.\n\nI am not entirely sure if the list of plugins is correct. Are there ones\nthat should be added / removed?\n\n----\nThe `TerminalCtrlCHandlerPlugin` has interesting effects in the headless\nexample: Installing it a second time it will give a log message about\nskipping installation, because it is already installed. Ctrl+C will\nterminate the application in that case. However, _not_ installing it the\nsecond time (so only on the app that runs once) has the effect that the\napp that runs continuously cannot be stopped using Ctrl+C.\nThis implies that, even though the second app did not install the Ctrl+C\nhandler, it did _something_ because it was keeping the one from the\nfirst app alive.\nNot sure if this is a problem or issue, or can be labeled a wierd quirk\nof having multiple Apps in one executable.","shortMessageHtmlLink":"Added HeadlessPlugins (#15203) (#15260)"}},{"before":null,"after":"7ad27f475988aa6a16e86256695ebf7c0745783e","ref":"refs/heads/gh-readonly-queue/main/pr-15295-28597e4082647b3b8c11a32903e1d011589970c0","pushedAt":"2024-09-19T16:44:31.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 memory leak in world's command queue (#15295)\n\n# Objective\n\n- I was running miri locally to check the UB in #15276 and it detected\nan unrelated memory leak, due to the `RawCommandQueue` changes. (I\nprobably should have turned the leak detection off because we do\npurposely leak interned string labels and I assume that's why CI didn't\ndetect it.)\n\n## Solution\n\n- The memory allocated to `RawCommandQueue` needs to be manually\ndropped. This was being done for `bytes` and `cursor`, but was missed\nfor `panic_recovery`.\n\n## Testing\n\n- Ran miri locally and the related memory leaks errors when away.","shortMessageHtmlLink":"Fix memory leak in world's command queue (#15295)"}},{"before":"28597e4082647b3b8c11a32903e1d011589970c0","after":null,"ref":"refs/heads/gh-readonly-queue/main/pr-15304-fcfa60844a2d6e6baa9c33ba1319e33d4f5a0643","pushedAt":"2024-09-19T16:23:47.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":"fcfa60844a2d6e6baa9c33ba1319e33d4f5a0643","after":"28597e4082647b3b8c11a32903e1d011589970c0","ref":"refs/heads/main","pushedAt":"2024-09-19T16:23:46.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":"Cleanup legacy code from bevy_sprite (#15304)\n\n# Objective\n\n- Remove legacy stuff","shortMessageHtmlLink":"Cleanup legacy code from bevy_sprite (#15304)"}},{"before":null,"after":"28597e4082647b3b8c11a32903e1d011589970c0","ref":"refs/heads/gh-readonly-queue/main/pr-15304-fcfa60844a2d6e6baa9c33ba1319e33d4f5a0643","pushedAt":"2024-09-19T16:06:25.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":"Cleanup legacy code from bevy_sprite (#15304)\n\n# Objective\n\n- Remove legacy stuff","shortMessageHtmlLink":"Cleanup legacy code from bevy_sprite (#15304)"}},{"before":"fcfa60844a2d6e6baa9c33ba1319e33d4f5a0643","after":null,"ref":"refs/heads/gh-readonly-queue/main/pr-15294-3a66d88c83ec19927669a87733b1471c0838f58d","pushedAt":"2024-09-19T15:50:21.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":"3a66d88c83ec19927669a87733b1471c0838f58d","after":"fcfa60844a2d6e6baa9c33ba1319e33d4f5a0643","ref":"refs/heads/main","pushedAt":"2024-09-19T15:50:20.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 allocation in `get_short_name` (#15294)\n\n`ShortName` is lazily evaluated and does not allocate, instead providing\n`Display` and `Debug` implementations which write directly to a\nformatter using the original algorithm. When using `ShortName` in format\nstrings (`panic`, `dbg`, `format`, etc.) you can directly use the\n`ShortName` type. If you require a `String`, simply call\n`ShortName(...).to_string()`.\n\n# Objective\n\n- Remove the requirement for allocation when using `get_short_name`\n\n## Solution\n\n- Added new type `ShortName` which wraps a name and provides its own\n`Debug` and `Display` implementations, using the original\n`get_short_name` algorithm without the need for allocating.\n- Removed `get_short_name`, as `ShortName(...)` is more performant and\nergonomic.\n- Added `ShortName::of::` method to streamline the common use-case\nfor name shortening.\n\n## Testing\n\n- CI\n\n## Migration Guide\n\n### For `format!`, `dbg!`, `panic!`, etc.\n\n```rust\n// Before\npanic!(\"{} is too short!\", get_short_name(name));\n\n// After\npanic!(\"{} is too short!\", ShortName(name));\n```\n\n### Need a `String` Value\n\n```rust\n// Before\nlet short: String = get_short_name(name);\n\n// After\nlet short: String = ShortName(name).to_string();\n```\n\n## Notes\n\n`ShortName` lazily evaluates, and directly writes to a formatter via\n`Debug` and `Display`, which removes the need to allocate a `String`\nwhen printing a shortened type name. Because the implementation has been\nmoved into the `fmt` method, repeated printing of the `ShortName` type\nmay be less performant than converting it into a `String`. However, no\ninstances of this are present in Bevy, and the user can get the original\nbehaviour by calling `.to_string()` at no extra cost.\n\n---------\n\nCo-authored-by: Gino Valente <49806985+MrGVSV@users.noreply.github.com>","shortMessageHtmlLink":"Remove allocation in get_short_name (#15294)"}},{"before":"3a66d88c83ec19927669a87733b1471c0838f58d","after":null,"ref":"refs/heads/gh-readonly-queue/main/pr-15274-1bb8007dceb03f41b20317bb44fcdfec1d70513c","pushedAt":"2024-09-19T15:36:07.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":"1bb8007dceb03f41b20317bb44fcdfec1d70513c","after":"3a66d88c83ec19927669a87733b1471c0838f58d","ref":"refs/heads/main","pushedAt":"2024-09-19T15:36:06.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":"command based entry api with `EntityCommands::entry` (#15274)\n\n# Objective\n\nIt's convenient to be able to modify a component if it exist, and insert\na default value if it doesn't. You can already do most of this with\n`EntityCommands::insert_if_new`, and all of this using a custom command.\nHowever, that does not spark joy in my opinion.\n\nCloses #10669\n\n## Solution\n\nIntroduce a new commands type `EntityEntryCommands`, along with a method\nto access it, `EntityCommands::entry`.\n\n`EntityEntryCommands` exposes a subset of the entry API (`and_modify`,\n`or_insert`, etc), however it's not an enum so it doesn't allow pattern\nmatching. Also, `or_insert` won't return the component because it's all\nbased on commands.\n\n## Testing\n\nAdded a new test `entity_commands_entry`.\n\n---\n\n## Showcase\n\n```rust\ncommands\n .entity(player)\n .entry::()\n .and_modify(|mut lvl| lvl.0 += 1)\n .or_default();\n```\n\n---------\n\nCo-authored-by: Jan Hohenheim ","shortMessageHtmlLink":"command based entry api with EntityCommands::entry (#15274)"}},{"before":null,"after":"fcfa60844a2d6e6baa9c33ba1319e33d4f5a0643","ref":"refs/heads/gh-readonly-queue/main/pr-15294-3a66d88c83ec19927669a87733b1471c0838f58d","pushedAt":"2024-09-19T15:34:19.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 allocation in `get_short_name` (#15294)\n\n`ShortName` is lazily evaluated and does not allocate, instead providing\n`Display` and `Debug` implementations which write directly to a\nformatter using the original algorithm. When using `ShortName` in format\nstrings (`panic`, `dbg`, `format`, etc.) you can directly use the\n`ShortName` type. If you require a `String`, simply call\n`ShortName(...).to_string()`.\n\n# Objective\n\n- Remove the requirement for allocation when using `get_short_name`\n\n## Solution\n\n- Added new type `ShortName` which wraps a name and provides its own\n`Debug` and `Display` implementations, using the original\n`get_short_name` algorithm without the need for allocating.\n- Removed `get_short_name`, as `ShortName(...)` is more performant and\nergonomic.\n- Added `ShortName::of::` method to streamline the common use-case\nfor name shortening.\n\n## Testing\n\n- CI\n\n## Migration Guide\n\n### For `format!`, `dbg!`, `panic!`, etc.\n\n```rust\n// Before\npanic!(\"{} is too short!\", get_short_name(name));\n\n// After\npanic!(\"{} is too short!\", ShortName(name));\n```\n\n### Need a `String` Value\n\n```rust\n// Before\nlet short: String = get_short_name(name);\n\n// After\nlet short: String = ShortName(name).to_string();\n```\n\n## Notes\n\n`ShortName` lazily evaluates, and directly writes to a formatter via\n`Debug` and `Display`, which removes the need to allocate a `String`\nwhen printing a shortened type name. Because the implementation has been\nmoved into the `fmt` method, repeated printing of the `ShortName` type\nmay be less performant than converting it into a `String`. However, no\ninstances of this are present in Bevy, and the user can get the original\nbehaviour by calling `.to_string()` at no extra cost.\n\n---------\n\nCo-authored-by: Gino Valente <49806985+MrGVSV@users.noreply.github.com>","shortMessageHtmlLink":"Remove allocation in get_short_name (#15294)"}},{"before":null,"after":"3a66d88c83ec19927669a87733b1471c0838f58d","ref":"refs/heads/gh-readonly-queue/main/pr-15274-1bb8007dceb03f41b20317bb44fcdfec1d70513c","pushedAt":"2024-09-19T15:20:29.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":"command based entry api with `EntityCommands::entry` (#15274)\n\n# Objective\n\nIt's convenient to be able to modify a component if it exist, and insert\na default value if it doesn't. You can already do most of this with\n`EntityCommands::insert_if_new`, and all of this using a custom command.\nHowever, that does not spark joy in my opinion.\n\nCloses #10669\n\n## Solution\n\nIntroduce a new commands type `EntityEntryCommands`, along with a method\nto access it, `EntityCommands::entry`.\n\n`EntityEntryCommands` exposes a subset of the entry API (`and_modify`,\n`or_insert`, etc), however it's not an enum so it doesn't allow pattern\nmatching. Also, `or_insert` won't return the component because it's all\nbased on commands.\n\n## Testing\n\nAdded a new test `entity_commands_entry`.\n\n---\n\n## Showcase\n\n```rust\ncommands\n .entity(player)\n .entry::()\n .and_modify(|mut lvl| lvl.0 += 1)\n .or_default();\n```\n\n---------\n\nCo-authored-by: Jan Hohenheim ","shortMessageHtmlLink":"command based entry api with EntityCommands::entry (#15274)"}},{"before":"1bb8007dceb03f41b20317bb44fcdfec1d70513c","after":null,"ref":"refs/heads/gh-readonly-queue/main/pr-15292-2ae5a21009db00a48193a79962074c583dcb3821","pushedAt":"2024-09-19T01:03:39.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"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEu1tbvwA","startCursor":null,"endCursor":null}},"title":"Activity · bevyengine/bevy"}