bevy/crates
Boxy 637a149910 unsafeify World::entities_mut (#4093)
# Objective
make bevy ecs a lil bit less unsound

## Solution
make unsound API unsafe so that there is an unsafe block to blame:

```rust
use bevy_ecs::prelude::*;

#[derive(Debug, Component)]
struct Foo(u8);

fn main() {
    let mut world = World::new();
    let e1 = world.spawn().id();
    let e2 = world.spawn().insert(Foo(2)).id();
    world.entities_mut().meta[0] = world.entities_mut().meta[1].clone();
    let foo = world.entity(e1).get::<Foo>().unwrap();
    // whoo i love having components i dont have
    dbg!(foo);
}
```

This is not _strictly_ speaking UB, however: 
- `Query::get_multiple` cannot work if this is allowed
- bevy_ecs is a pile of unsafe code whose soundness generally depends on the world being in a "correct" state with "no funny business" so it seems best to disallow this
- it is trivial to get bevy to panic inside of functions with safety invariants that have been violated (the entity location is not valid)
- it seems to violate what the safety invariant on `Entities::flush` is trying to ensure
2022-03-30 23:52:45 +00:00
..
bevy_app Prevent event from getting registered twice (#4258) 2022-03-20 21:54:10 +00:00
bevy_asset Bump Bevy to 0.7.0-dev (#4230) 2022-03-19 03:54:15 +00:00
bevy_audio Bump Bevy to 0.7.0-dev (#4230) 2022-03-19 03:54:15 +00:00
bevy_core Bump Bevy to 0.7.0-dev (#4230) 2022-03-19 03:54:15 +00:00
bevy_core_pipeline Compute Pipeline Specialization (#3979) 2022-03-23 00:27:26 +00:00
bevy_crevice Add a helper for storage buffers similar to UniformVec (#4079) 2022-03-22 21:23:50 +00:00
bevy_derive bevy_derive: Add derives for Deref and DerefMut (#4328) 2022-03-29 02:10:06 +00:00
bevy_diagnostic Bump Bevy to 0.7.0-dev (#4230) 2022-03-19 03:54:15 +00:00
bevy_dylib Bump Bevy to 0.7.0-dev (#4230) 2022-03-19 03:54:15 +00:00
bevy_dynamic_plugin Bump Bevy to 0.7.0-dev (#4230) 2022-03-19 03:54:15 +00:00
bevy_ecs unsafeify World::entities_mut (#4093) 2022-03-30 23:52:45 +00:00
bevy_ecs_compile_fail_tests Add get_multiple and get_multiple_mut APIs for Query and QueryState (#4298) 2022-03-30 19:16:48 +00:00
bevy_gilrs Bump Bevy to 0.7.0-dev (#4230) 2022-03-19 03:54:15 +00:00
bevy_gltf Mesh Skinning. Attempt #3 (#4238) 2022-03-29 18:31:13 +00:00
bevy_hierarchy Bump Bevy to 0.7.0-dev (#4230) 2022-03-19 03:54:15 +00:00
bevy_input Fix gamepad connection system ordering (#4313) 2022-03-29 22:39:21 +00:00
bevy_internal bevy_derive: Add derives for Deref and DerefMut (#4328) 2022-03-29 02:10:06 +00:00
bevy_log Bump Bevy to 0.7.0-dev (#4230) 2022-03-19 03:54:15 +00:00
bevy_macro_utils Bump Bevy to 0.7.0-dev (#4230) 2022-03-19 03:54:15 +00:00
bevy_math Bump Bevy to 0.7.0-dev (#4230) 2022-03-19 03:54:15 +00:00
bevy_pbr Fix animation: shadow and wireframe support (#4367) 2022-03-30 19:56:16 +00:00
bevy_reflect Bump Bevy to 0.7.0-dev (#4230) 2022-03-19 03:54:15 +00:00
bevy_render unsafeify World::entities_mut (#4093) 2022-03-30 23:52:45 +00:00
bevy_scene Bump Bevy to 0.7.0-dev (#4230) 2022-03-19 03:54:15 +00:00
bevy_sprite impl Reflect and Debug for Mesh2dHandle (#4368) 2022-03-30 19:56:17 +00:00
bevy_tasks CI runs cargo miri test -p bevy_ecs (#4310) 2022-03-25 00:26:07 +00:00
bevy_text ParamSet for conflicting SystemParam:s (#2765) 2022-03-29 23:39:38 +00:00
bevy_transform bevy_transform: Use Changed in the query for much faster transform_propagate_system (#4180) 2022-03-29 03:05:01 +00:00
bevy_ui ParamSet for conflicting SystemParam:s (#2765) 2022-03-29 23:39:38 +00:00
bevy_utils use error scope to handle errors on shader module creation (#3675) 2022-03-29 22:39:14 +00:00
bevy_window Bump Bevy to 0.7.0-dev (#4230) 2022-03-19 03:54:15 +00:00
bevy_winit Bump Bevy to 0.7.0-dev (#4230) 2022-03-19 03:54:15 +00:00