📌更新日志
记录 tinyCoroLab 课程全部资源的版本更新日志
⚠️tinyCoro、tinyCoroLab 和 tinyCoroLabDoc 的版本号命名一致,实验者在做某版本的 tinyCoroLab 时请切换至对应版本的 tinyCoroLabDoc
[v1.2] - 2025-06-06
新增功能
为文档新增tinyCoro Bonus Lab,用户可以根据该实验进一步拓展优化自己的tinyCoro
为文档新增tinyCoro 悬赏令,用户可根据自身兴趣向作者的tinyCoro贡献代码
lab5a由选做实验升级为正式实验,实验解析制作中
添加并行计算模块,用户可利用tinyCoroLab提供的API进行并行计算,具体代码可见include/coro/parallel/parallel.hpp,使用样例可见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 更简单了:
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 版本正式发布
[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 版本正式发布
[v1.2] - 2025-06-06
变更详情
参照tinyCoro的变更详情。
[v1.1] - 2025-04-09
主要变更
为 lab2b 新增的子任务添加任务书。
[v1.0] - 2025-04-01
主要变更
1.0 版本正式发布
Last updated