# 已知问题
## ecs的性能测试 不太满意， 
## schedule 多线程运行时会卡住
## 差 ExecGraph的多线程 测试用例的覆盖率
## 差 Query的异步迭代，Insert异步并行插入，提供一个异步的劈分方法？为世界矩阵的层脏做个异步多线程的测试用例
## 差 测试用例的覆盖率
## 差 文档
## 差 代码注释
## 需要构建一个Component的静态依赖图-转成位图集， 如果两个system检查在该图上可以并行，则同一个原型下的两个system也是可以并行的。构建2个图，一个普通的完全图，动态修改时加锁，里面的节点包括：System 运行集 原型-组件 单例资源 多例资源。在该图上分析依赖，如果两个system被明确指定了依赖，则在读写分析时发现循环时，遵循指定的依赖。还有一个System的依赖表（小的ComponentIndex加大的ComponentIndex为键，值为强制读写或弱读写），也是加锁操作。还有1个仅system的执行图，这个需要线程安全的添加边。

## 需要把执行图的图部分拆成单独的crate，这样静态依赖图和渲染图都可以重用这个图，同时也好检查是否循环引用。

## 优化原型名字的表达，类似use 模块。
## 可查看出整个world的原型内存状态。

## 测试get性能 去掉Queryer和Alteror Inserter， 去掉SafeVec， 提出pi_listener(将settle trait 放入pi_append_vec)
## ecs world 上提供mem_size
## 检查 world settle ，否则没法解释为啥get 和 iter慢, 也有可能是Mut慢？
## 单例和多例需要提供mem_size？


# v0.1.11 
## 已经支持异步system
## 新实现Local的SystemParm

# v0.2
## 增加World的tick
## 单例上加tick
## 多例上加tick
## 支持了Insert空原型，及alter从空原型变为有组件原型
## 增加Ticker， 支持查询组件is_changed
## 合并Added和Changed，常用的单组件改变查询的情况下，性能有提升
## 如果一个原型的Component被Ticker查询或有Changed过滤，则会在Column上增加Tick记录, 
## 增加Destroyed的entity，保留其Component，直到所以监听Destroyed的system都执行完毕再删除Entity
## 增加Removed<组件>, 原型上加remove_columns的监听
## 增加了ArchetypeInfo的查询对象，显示实体所在的原型及行
## 优化了Query.iter, 根据是否有脏监听过滤器分为三种情况迭代，iter_normal, iter_dirty, iter_dirtys，多个脏监听内部使用bitset去重

# v0.3
## ArcheypeWorldIndex ComponentIndex ColumnIndex Row 改成类型
## 将原型图节点拆成了原型组件节点
## 优化Query的CacheMapping，及alter的Mapping
## 优化SingleRes的init_state, 抽成多个函数，这样相同的T可以共用函数

# v0.4
## 有Changed或Removed的组件，全部原型上对应组件的Column和RemovedColumn都增加Tick记录，这样全局跟踪Tick，并根据该Tick来剔除已经读取过的变化，同时确保系统读取时不会丢失变化。同时，也会根据最旧的System的last_run，来尽量减少脏列表中Row的长度。
## 根据ComponentInfo及其world_index，优化了alter时计算相应原型的过程。

# v0.5
## 调整了alter的代码，将泛型部分分离
## 将alter改为立即执行，这样可以更好的复用，并且在一个system内可连续修改（要求修改后的原型也要被Query捕获）

# v0.6
## alter还是改为延迟，EntityEditor的alter为立即执行
## ComponentRemoved是一个SystemParam，可迭代出上次运行到这次的运行期间被删除的组件的实体

# v0.7
## 调整了Archetype和Column的关系， Column包含多个Archetype的Blob
## 优化了Query的get方法的性能

# v0.8
## SetDefault改为SetFromWorld
## 单例多例都提前downcast
## meta将单例多例资源记录关系，事件支持安全的读写，所以不记录关系
## 增加ComponentAdded和Changed
## 增加OrDefaultRef
