forked from acl-dev/acl
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathchanges.txt
155 lines (114 loc) · 5.8 KB
/
changes.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
41) 2017.2.9
41.1) bugfix: fiber.c 中,fiber_init 函数应该必须保证 __sys_errno 为 NULL 时
被调用,否则会引起一些静态初始化需要 __sys_errno 的使用
40) 2017.1.23
40.1) workaround: 协程号统一改成无符号 32 位整数
39) 2017.1.12
39.1) bugfix: 协程在双通模式下,如果写时堵塞会导致读也堵塞,是因为延迟关闭
及事件设置不合理
38) 2017.1.5
38.1) bugfix: fiber.c 中函数 acl_fiber_killed 中的判断有误
37) 2016.12.31
37.1) feature: 增加 acl_fiber_signal 函数,允许协程给其它协程发送唤醒信号
36) 2016.12.27
36.1) bugfix: fiber.cpp 中 kill 方法需将 f_ 成员置 NULL,防止嵌套访问非法地址
36.2) feature: fiber.cpp 允许将当前运行的协程与 fiber 类对象绑定(只需在构造
函数中将构造参数设为 true),从而可以方便使用类 fiber 中的方法
35) 2016.12.19
35.1) feature: fiber.c 中有关协程局部变量的接口调整,更符合实际应用场景
35.2) bugfix: fiber.c 中当协程退出时,协程局部变量的对象未释放造成内存泄露
35.3) sample: samples/fiber_local,该示例用于测试协程局部变量
34) 2016.12.16
34.1) bugfix: hook_net.c, hook_io.c, event_epoll.c 其中因为 hook 了很多系统的
API,当个别应用在 main 函数执行前需要调用这些 API 时可能会因为 hook 操作还未
进行而造成函数指针为 NULL,从而导致程序崩溃
33) 2016.12.8
33.1) bugfix: hook_net.c 中,当非协程模式下,hook epoll 相关 API 应该加以区别
32) 2016.12.3
32.1) feature: acl_fiber_kill 可以支持因调用 acl_fiber_sleep, acl_fiber_sem,
acl_fiber_mutex_lock 而阻塞的协程
31) 2016.11.28
31.1) feature: fiber.cpp 中,fiber 类增加了 kill 和 killed 方法用来”杀死“协程
和判断指定协程是否已经退出
30) 2016.11.27
30.1) bugfix: fiber.c 中函数 acl_fiber_create 中存在运行时内存增长问题,即
__thread_fiber->fibers 对象在 realloc 过程中内存不断增长,因为 __thread_fier->size
计算方法有问题
29) 2016.11.24
29.1) feature: 增加 acl_fiber_kill 接口用来通知指定协程退出
28) 2016.10.31
28.1) feature: fiber.c 中实现了 __i386__ 下 SETJMP,LONGJMP 的汇编方式,从
libdill 借鉴而来
27) 2016.10.19
27.1) bugfix: fiber_io.c 中的 __thread_fiber->loop_fn 没有赋初值
26) 2016.9.25
26.1) feature: 增加 acl_fiber_post_event 函数,在每次事件循环过程中可以调用由
该函数设置的回调函数
25) 2016.9.22
25.1) 函数改名: acl_fiber_stop --> acl_fiber_schedule_stop,
acl::fiber::stop --> acl::fiber::schedule_stop
24) 2016.9.21
24.1) bugfix: hook_io.c 中的 writev() 函数应该调用 fiber_writev()
23) 2016.9.1
23.1) feature: 支持 C++11 功能,使用 lambda 表达式创建协程更加方便简洁
------------------------------------------------------------------------------
22) 2016.8.25
22.1) feature: hook_io.c 中提供了单独的 fiber_xxx IO 接口
21) 2016.8.17
21.1) performance: fiber.c 中函数 fiber_alloc 在创建协程栈时使用 malloc 代替了
原来的 calloc,避免内存提交,仅使用虚存,从而有效控制了协程的实际占用内存大小
21.2) bugfix: hook_io.c 中的 read 等读函数只有当读返回 < 0 时才需要设置 errno
21.3) bugfix: fiber_io.c, acl_fiber_delay 函数需要合理设置 ev->timeout 值
21.4) performance: hook_net.c 中 hook 的系统 accept API 优化了接收连接的顺序,
从而使 accept 速度更快
20) 2016.8.16
20.1) portable: fiber.c 中增强了 SETJMP 汇编代码移植性
19) 2016.8.10
19.1) performance&feature: 允许使用 setjmp/longjmp 进行栈的跳转,性能更好
18) 2016.8.7
18.1) feature: fiber.c 中在 acl_fiber_schedule 结束前自动将 acl_var_hook_sys_api
置 0,从而恢复系统 API 调用过程
17) 2016.8.5
17.1) feature: hook_io.c 中增加系统 API sleep 的 hook 函数
16) 2016.8.4
16.1) bugfix: hook_net.c 中的 gethostbyname_r 在解析域名时的地址所用字节序有误
--- found by 陈晓勇
15) 2016.7.28
15.1) bugfix: hook_net.c 中的 poll/epoll_wait 对于超时的计数有误,会导致超时
时间提前
14) 2016.7.26
14.1) feature: hook_net.c 中的 connect 函数增加了出错处理
13) 2016.7.22
13.1) bugfix: poll/epoll_wait API 的超时值设置的不对
13.1) performance: fiber.c 中 acl_fiber_yield 函数首先判断是否有待处理协程,
然后再决定是否需要切换协程上下文,从而减少上下文的切换次数
12) 2016.7.14
12.1) feature: hook_net.c 增加了 epoll 的 hook 支持
11) 2016.7.9
11.1) feature: fiber_sem.c 增加协程信号量
10) 2016.6.22
10.1) feature: fiber_server.c 服务模块支持空闲超时退出及处理连接数达上限退出
9) 2016.6.21
9.1) feature: 将非 socket 类型的 fd 采用同步模式
9.2) feature: master_fiber.c 支持 dispatch 方式获得客户端连接
8) 2016.6.19
8.1) feature: 增加了 FIBER 锁功能
8.2) feature: 增加 fiber_server.c 模块,可由 acl_master 服务器框架控制
7) 2016.6.18
7.1) feature: 增加了 FIBER_CHANNEL 用于协程间的交互通信
6) 2016.6.15
6.1) feature: 增加定时器功能 -- fiber_create_timer()
5) 2016.6.14
5.1) feature: hook 了 errno 所依赖的函数 __errno_location,从而使 errno 针对
每个协程是安全的
4) 2016.6.11
4.1) valgrind: 增加编译开关以防止 valgrind 工具对 swapcontext 跳转的误报
3) 2016.6.9
3.1) performance: fiber_schedule.c,由星形切换改为环形切换,从而提升了上下文件
切换的效率 --- by [email protected]
2) 2016.6.5
2.1) feature: 将 fiber_schedule.c, fiber_io.c 中的全局静态变量调整为线程局部
变量,为实现多线程化协程做准备
1) 2016.6.4
1.1) 当前的协程支持 hook: read/redv/redv/recvfrom/recvmsg,
write/writev/send/sendto/sendmsg, poll/select/sleep/gethostbyname/gethostbyname_r