# 📌更新日志

记录 tinyCoroLab 课程全部资源的版本更新日志

> **⚠️tinyCoro、tinyCoroLab 和 tinyCoroLabDoc 的版本号命名一致，实验者在做某版本的 tinyCoroLab 时请切换至对应版本的 tinyCoroLabDoc**

## [tinyCoro](https://github.com/sakurs2/tinyCoro)

#### \[v1.2] - 2025-06-06

**新增功能**

* 为文档新增tinyCoro Bonus Lab，用户可以根据该实验进一步拓展优化自己的tinyCoro
* 为文档新增tinyCoro 悬赏令，用户可根据自身兴趣向作者的tinyCoro贡献代码
* lab5a由选做实验升级为正式实验，实验解析制作中
* 添加并行计算模块，用户可利用tinyCoroLab提供的API进行并行计算，具体代码可见[include/coro/parallel/parallel.hpp](https://github.com/sakurs2/tinyCoroLab/blob/master/include/coro/parallel/parallel.hpp)，使用样例可见[examples/parallel\_calc.cpp](https://github.com/sakurs2/tinyCoroLab/blob/master/examples/parallel_calc.cpp)
* 添加基于ubuntu系统的CI流水线，用户可在tinyCoroLab的README中查看关于CI流水线的使用
* 重构IO模块的代码组织结构，便于后续拓展更多IO支持

#### \[io\_uring update] - 2025-05-03

**新增功能**

* io\_uring现已支持`IOSQE_FIXED_FILE`优化，通过配置文件内配置项开启

#### 变更详情

对于针对某个IO需要频繁读写的场景，对其相应的sqe开启`IOSQE_FIXED_FILE`选项可以使得io\_uring不需要对文件描述符做额外的检查工作，从而提升性能，经测试benchmark性能可以提升10%\~20%。

关于`IOSQE_FIXED_FILE`优化的具体实现采用了动态分配`FIXED_FILE`并更新的策略，这部分实现读者可以从`uring_proxy.hpp`文件获取，建议读者先了解`io_uring_register_files()`的用法。

#### \[v1.1] - 2025-04-09

**主要变更**

1.0 版本 scheduler 的设计存在诸多缺陷，在短期运行工作模式下 context 完成所有任务后会立刻停止（因为 scheduler 会在 context 启动后立刻调用`notify_stop`通知其停止，context 收到该信号在处理完所有任务后立刻停止），这导致 context 运行中无法安全的将任务派发给 scheduler，因为 scheduler 可能会把任务派发给已经停止的 context，总之，这种设计很怪异且不合理。

1.1 版本移除了工作模式这一概念，重新设计了 scheduler 对 context 的交互逻辑，现在用户使用 tinyCoro 更简单了：

```cpp
schduler::init();
submit_to_scheduler(func());
// repeat submit...
// scheduler::start(); don;t need this
scheduler::loop();
```

在提交完所有任务后只需要调用`scheduler::loop`，**scheduler 便会启动所有 context 然后等待 context 全部完成任务后再统一下发送停止信号，这样哪怕某个 context 先运行完毕也会处于阻塞态而不是停止，因为未来 scheduler 很可能向其派发新的任务**，基于此，用户可以放心的在协程任务中调用`submit_to_scheduler`。

除此外，所有测试以及样例代码中 scheduler 的运行全部采用上述代码逻辑。

#### \[v1.0] - 2025-04-01

**主要变更**

* 1.0 版本正式发布

## [tinyCoroLab](https://github.com/sakurs2/tinyCoroLab)

#### \[v1.2] - 2025-06-06

#### 变更详情

参照tinyCoro的变更详情。

#### \[io\_uring update] - 2025-05-03

#### 变更详情

参照tinyCoro的变更详情。

#### \[v1.1] - 2025-04-09

**主要变更**

* 为 lab2b 新增了一个子任务用来实现 tinyCoro1.1 版本新增的功能，并为 lab2b 新增测试样例
* 主页移除了关于运行模式的介绍，取而代之的是新的 scheduler 的设计思路

#### \[v1.0] - 2025-04-01

**主要变更**

* 1.0 版本正式发布

## [tinyCoroLabDoc](https://github.com/sakurs2/tinyCoroLabDoc)

#### \[v1.2] - 2025-06-06

#### 变更详情

参照tinyCoro的变更详情。

#### \[v1.1] - 2025-04-09

**主要变更**

为 lab2b 新增的子任务添加任务书。

#### \[v1.0] - 2025-04-01

**主要变更**

* 1.0 版本正式发布


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://sakurs2.gitbook.io/tinycorolab-docs/updatelog.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
