2.13.0-M1 包含:

[贡献相关文档]: ../../docs/contributing/README.md

- Core 新的 native 编译目标
- 支持修改好友备注
- Console 指令参数支持 vararg 和原生类型数组
- 大量[贡献相关文档]更新
- 一些问题修复

以下内容正在进行中, 将发布在 2.13.0-RC:

- Core 模拟测试框架
- 支持查看和修改好友分组
- Console 下载进度条

## mirai-core

### 不兼容变更

- 将 Ktor 嵌入 mirai-core 并且不公开 (#2096, #2084)
  > mirai 内部现在使用 Ktor 2.0 并且不公开.  
  > 所有曾经借由 mirai-core-api 获得 Ktor 依赖的用户都将需要显式定义 Ktor 依赖.
  > 但是这将会解决版本兼容问题. 用户可以任选 Ktor 1 或者 Ktor 2

- `Audio` 现在继承 `ConstrainSingle` (#2093)
  > 所以它将会只能单独作为内容存在于消息链中  
  > 这不会影响现在以正确逻辑编写的代码, 但可能影响一些边界情况

### 新特性

- mirai-core 新增 native 编译目标, 可编译为动态链接库或可执行文件 (#2048)
  > native 编译目标是 Kotlin/Native, 不依赖 JVM. 支持 macOS, Windows, Linux.  
  > 目前只可以使用 Kotlin/Native 开发. C API 的导出正计划中.

  特别感谢 @AdoptOSS 的帮助:
    - 优化 CI 配置 (#2110)
    - 实现 Windows 平台的 socket 请求 (#2121)
    - ECDH 的 OpenSSL 实现 (#2123, #2161)
- 支持修改好友备注 (#554, #2112)
  > `friend.remark` 由 `val` 变为 `var`, 修改时会触发 `FriendRemarkChangeEvent`.
- 在 `Image` 序列化时支持全部属性 (#2036 by @cssxsh)
  > 以前只会输出 `imageId`, 现在还会输出 `width` 等全部必要属性. 兼容旧版本, 在读取时会使用默认 `0` 值.

### 优化和修复

- 重写并检查了消息序列化的正确性 (#2159)
  > 它现在完全支持全平台.  
  > 修复了一些元素的序列化可能有不期望行为的问题, 例如在不应该有 `type` (`classDiscriminator`) 的时候有或相反.   
  > 正确支持并验证了 `@Contextual`.
  >
  > **这可能导致新的问题, 建议在试用本测试版时测试是否还能正常工作并及时反馈问题以避免正式版本仍有问题**
- 修复合并转发消息在 iOS 移动端显示错位的问题 (#2071)
- 更新贡献相关文档, 包括
    - mirai 项目组成
    - 构建多平台的 Core
    - 构建其他 JVM 项目
    - 基于新架构实现新消息协议支持
- 优化文档细节 (#2182 @2938137849)
- 更新依赖
    - Kotlin 1.7.10
    - kotlinx-serialization 1.3.3
    - kotlinx-coroutines 1.6.4
    - kotlinx-atomicfu 0.17.3
    - Ktor 2.1.0

## mirai-console

### 不兼容变更

- 新增 `CommandSenderOnMessage`, 修正 `CommandSender` 的部分扩展的行为 (#2105)

### 新特性

- 指令支持 vararg 和原生数组类型参数 (#1799, #1760 by @cssxsh)
- 新增其他客户端消息同步事件的指令发送者 `OtherClientCommandSenderOnMessageSync` (#1878, #1879 by @cssxsh, #2085)
