更新日志
===============================

2022-12-14
-------------------------------

- 移除各分支上的 K210 开发板支持，仅保留 ``k210`` 分支作为原先 ``ch8`` 分支的镜像支持 K210 。

2022-10-08
-------------------------------

- 将各分支的 rustsbi-qemu 的版本更新到 701e891，支持 QEMU 7.1.0 版本。

2022-10-02
-------------------------------

- 更新 VMware虚拟机镜像至 Ubuntu22.04 ，内置 QEMU7.0.0 版本。同时，还更新了各章节的 Docker 相关文件。

2022-01-02
-------------------------------

- 第一章更新完成，Rust 版本升级至 ``nightly-2022-01-01`` ， ``asm`` 和 ``global_asm`` 特性已稳定，相关的宏可在 ``core::arch`` 中找到。更新了作者和版权信息，版本暂定 ``3.6.0-alpha.1`` 。

2021-11-20
-------------------------------

- 更新1~9章，添加第八章（同步互斥），原第八章（外设）改为第九章。

2021-10-20
-------------------------------

- 旧版的 3.5.0 文档及代码（全七章）已经发布在 `这里 <https://github.com/rcore-os/rCore-Tutorial-v3/releases/tag/v3.5.0>`_ 。目前开始在主分支上更新新版的文档和代码。

2021-03-15
-------------------------------

- 增加了在做实验的时候打补丁继承上一章节修改的 :ref:`教程 <inherit-last-ch-changes>` 。
  
2021-03-09
-------------------------------

- 将所有分支的 RustSBI 版本更新为 [81d53d8] 的 0.2.0-alpha.1 ，主要是在 Qemu 平台上支持非法指令的转发，目前可以正确处理带有非法指令的应用程序了。参考 ch2 分支上的测例 ``00hello_world.rs`` 。


2021-03-07
-------------------------------

- 在各章分支的链接脚本中加入了 ``.srodata/.sbss/.sdata`` 。

2021-03-06
-------------------------------

- 文档第一版初稿（全七章）完成！
- 修复了框架中基于 Qemu 平台运行却仍需要下载 kflash.py 工具的问题。

2021-03-05
-------------------------------

- 第三章练习中增加了对于 ``sys_gettime`` 语义在教程和测例中差异的相关说明。
- 修正了第四章练习中 mmap 系统调用语义中的一处错误。


2021-03-03
-------------------------------

- 更新了第四章练习题。
- 为方便调试，提供了 riscv64 gcc 工具链的下载链接。
- 将文档渲染改为宽屏模式。

2021-02-28
-------------------------------

修复了 ch3-coop 分支在 Rust 版本更新后无法成功运行的问题。

2021-02-27
-------------------------------

完善了 ``easy-fs`` ：

- 订正了 ``easy-fs`` 块缓存层的实现，移除了 ``dirty`` 子模块。
- 支持二级间接块索引，使得支持的单个文件最大容量从 :math:`94\text{KiB}` 变为超过 :math:`8\text{MiB}` 。调整了单个 ``DiskInode`` 大小为 128 字节。
- 在新建一个索引节点的时候不再直接分配一二级间接索引块，而是完全按需分配。
- 将 ``easy-fs`` 的测试和应用程序打包的函数分离到另一个名为 ``easy-fs-fuse`` 的 crate 中。

从 ch7 开始：

- 出于后续的一些需求， ``sys_exec`` 需要支持命令行参数，为此shell程序 ``user_shell`` 中需要相应增加一些解析功能，内核中 ``sys_exec`` 的实现也需要进行修改。新增了应用 ``cmdline_args`` 来打印传入的命令行参数。
- 新增了应用 cat 工具可以读取一个文件的全部内容。
- 在shell程序中支持通过 ``<`` 和 ``>`` 进行简单的输入/输出重定向，为此在内核中新增了一个 ``sys_dup`` 系统调用。 

另外，在所有章节分支新增了 docker 支持来尽可能降低环境配置的时间成本，详见 :ref:`使用 Docker 环境 <link-docker-env>` 。

2021-02-20
-------------------------------

第六章文档完成。

2021-02-16
-------------------------------

第五章文档完成。

2021-02-13
-------------------------------

将 ch2-ch6 的 build.rs 中的对齐需求修改为刚好合适。

2021-02-09
-------------------------------

在每一章的引言处加入了本章的代码树改动概况。

2021-02-08
-------------------------------

将 K210 开发板的烧写工具 ``kflash.py`` 从项目中移除。

2021-02-07
-------------------------------

将所有分支的 RustSBI 更新为最新的 0.1.1 版本[3257d899]， **不加任何改动** 直接放在项目中。这导致 qemu 和 k210 两个平台的内核入口点变得不同，目前根据 RustSBI 的默认配置，qemu 平台上的内核入口点为 ``0x80200000`` ，而 k210 平台上为了提高烧写速度则为 ``0x80020000`` 。

前几个章节应用放置在内存中的位置也需要对应进行修改：

- 第二章应用的起始地址变为 ``0x80400000`` ；
- 第三章应用的起始地址变为 ``0x80400000`` 。

文档稍后更新。
