޸ʷб

------------------------------------------------------------------------
495) 2015.8.13
495.1) feature: acl_msg.c ļУԽ־ϢļУͬʱֿ
Ļ

494) 2015.7.7
494.1) bugfix: acl_urlcode.c к acl_url_decode 봮Ƿʱпڴ
494.2) samples/dgate: ֮ǰдһ DNS ѯӼ

493) 2015.6.28
493.1) compile: ֧ VC x64 ±ʹ
493.2) workaroud: Ϊ˷ֹ acl_define_win32.h н FD_SETSIZE õĹ
½64λ¶ջVC ʱĬ϶ջΪ1MB FD_SETSIZE Ϊ 40000

492) 2015.6.24
492.1) bugfix: acl_vstring.c  acl_vstring_init Ӧֹʹڴطʽ

491) 2015.6.21
491.1) feature: acl_dbuf_pool.c  acl_dbuf_pool_reset Է
ڴرظʹ
491.2) performance: acl_json.c  acl_json_rest ʹ acl_dbuf_pool_reset
ظʹûỰڴ

490) 2015.6.19
490.1) performance: acl_json.c/acl_vstring.c ֧ʹ ACL_DBUF_POOL ڴ
ڴ䣬Ӷ

489) 2015.6.12
489.1) bugfix: acl_vstream.c еĺ acl_vstream_loadfile2 ڷڴж
489.2) compile: 

488) 2015.5.25
488.1) performance: acl_dbuf_pool.c Żڴԭμ
һ
488.2) performance: acl_vstream.c Żacl_vstream_read ṩԤ
488.3) performance: acl_read_wait.c к acl_read_wait  linux ²
epoll

487) 2015.4.4
487.1) compile: acl_define_win32.h е socklen_t Ķԭʹú궨 #define
ʽʱΪЩ汾 VC ṩ˴Ͷ±뱨ڸΪ typedef 巽ʽ

------------------------------------------------------------------------
486) 2015.3.11
486.1) bugfix: ޸ acl_read_wait.c/acl_write_wait.c  WIN32 ƽ̨µ
select ʱؼ fd  FD_SETSIZE ĹϵΪ WIN32 µ fd_set ṹ弰
FD_XXX ʵԭ UNIX ͬ WIN32 µ fd ǲģпַܻǳ
ֵм fd < FD_SETSIZE пܻᵼ±ʵҲȫûбҪ

485) 2015.3.5
485.1) bugfix: acl_threads_server.c/acl_aio_server.c ˳ʱҪ֪ͨ
acl_master ԼǰãͬʱҪرǰ TCP ɷ(master_dispatch)

484) 2015.2.26
484.1) feature: acl_msg.c ˺ acl_msg_trace_enable õд
򾯸͵־ʱǷ¼ĵöջ

483) 2015.2.25
483.1) feature:  CRC17 Ĺϣ㷨 acl_hash_crc16

482) 2015.2.14
482.1) bugfix: acl_trace.c/acl_trace_info еı results ڵϵͳ
backtrace_symbols() Ӧͷţڴй©

481) 2015.2.10
481.1) bugfix: acl_master ܵ master_prefork ܻᵼ
master_maxproc ãԭ master_avail.c е master_prefork 
⣬޸ master_avail_event  master_prefork  0 ʱ
жǷҪ fork ӽ̣ BUG Ӱ̷ģ壬
ģ壨磺߳ ȣûӰ
481.2) bugfix: acl_single_server.c ̷ģĿгʱ˳ƴ

------------------------------------------------------------------------
480) 2015.2.2
480.1) feature: acl_vstring.c/vstring_extend ڴԶʱԭڴ淭
ķʽԭʼڴȽϴʱɺܴڴ˷ѣֲ redis-server еĲԣһ
Χڣ1MBʱʽ˷Χ 1MB Ϊλе

479) 2015.1.27
479.1) bugfix: acl_dbuf_pool.c ĺ acl_dbuf_pool_alloc() ڱȽʣ೤
 pool->block_size ĳʱõ pool->block_size ȼȥһϴ
ȣ޷(block_size Ϊ size_t ) 
עԭĴ﷽ʽΪ
pool->block_size - ((char*) pool->head->ptr - (char*) pool->head->buf) < length
ȷķʽΪ
pool->block_size < ((char*) pool->head->ptr - (char*) pool->head->buf) + length
ΪеζΪ޷ͣԵһֱ﷽ʽɱȽϷߵֵ

478) 2015.1.7
478.1) feature:  acl_is_blocking() ж׽ģʽǷģʽ

477) 2015.1.1
477.1) compile: ̿ʹ clang/clang++ ͨ

476) 2014.12.28
476.1) feature: win32 iocp ģʽ¿֧Ÿ acl_events.c еĺ
acl_event_new_kernelУĬֵΪ 50000ʹ߿ԸԼҪ޸ĳɸֵ
476.2) bugfix: win32 iocp ģ(events_iocp.c)ĺ stream_on_close УӦ
 fdp->event_read ǷΪָж

------------------------------------------------------------------------
475) 2014.12.13
475) bugfix: acl_json_util.c н JSON תΪַĺ acl_json_build
֧ĳЩ
476) featrue: acl_json_util.c ʽ JSON תΪַĺ
acl_json_building JSON ȽϴʱʹøúЧֹҪϵͳ
ǳڴռ·ڴʧ

474) 2014.12.8
474.1) feature: acl_trace.c еĺ acl_trace_info ˷ֹݹǶ׵Ĺ

473) 2014.12.6
473.1) feature: acl_msg.c е acl_msg_error/warn/fatal/panic ּ֧¼öջ

472) 2014.12.5
472.1) feature: acl_vstream.c ѭд(loop_writen)ֳ֧ʱдܣ
дʱ󣬻ÿдݳǷСҪдȣСдʱȴͬʱѭ
д֧ 64KB Ϊλд
472.2) feature: acl_threads_server.c ʹԶ˳
472.3) feature: acl_threads_server.c  TCP ӷַʽʱ˻㱨ַ
ϢֶΣԱڷַЩֶξַĲ

471) 2014.12.4
471.1) performance: acl_vstream.c Ż˶ (__sys_read) 
471.2) bugfix: acl_vstream.c дʱпܻѭ

470) 2014.12.2
470.1) bugfix: acl_vstream.c к __sys_read ı־λ sys_read_ready  0
Ӧ read_fn/fread_fn غ

469) 2014.11.30
469.1) bugfix: acl_aio_read.c е reactor IO ʽĺ acl_aio_enable_read
ڲĳпܲᴥص

468) 2014.11.29
468.1) bugfix: acl_sys_socket.c еĶ/дʱ timeout ã޸
468.2) workaround: acl_vstream.c е __sys_read ʱжϽ read_fn 

467) 2014.11.28
467.1) feature: acl_trace.c  acl_log_strace() öջ
־ļ
467.2) feature: acl_default_mallo.c  acl_default_set_memlimit,
acl_default_get_memlimit /÷ڴ󱨾ֵ

466) 2014.11.25
466.1) feature: acl_mystring.c  acl_find_blank_line Ӹ
вҿеλ
466.2) feature: acl_pthread_pool.c  acl_pthread_pool_idle
acl_pthread_pool_busy ֱõǰ̳߳еĿ߳æ߳
466.3) feature: acl_threads_server.c ģ嵱ӽ˳ʱȵӦ
صӦûصȾǷ˳

465) 2014.11.23
465.1) bugfix: acl_threads_server.c/acl_aio_server.c ģ壬 TCP
ַʽʱ acl_master reload ӽõĲ˳ӽ
 TCP ɷӶ¸ӽ˳

464) 2014.11.18
464.1) bugfix: snprintf.c  acl_secure_snprintf/acl_secure_vsnprintf ڵ
_vsnprintf_s ʱ󣬵贫 _TRUNCATE򵱻Сʱ

463) 2014.11.10
463.1) bugfix: acl_threads_server.c Կͻ IP ַȨ޵Ĵ̷
client_wakeup У master_threads2  core
463.2) feature: acl_threads_server.c  ACL_MASTER_SERVER_HANDSHAKE_FN
ķ ACL_MASTER_SERVER_ACCEPT_FN һЩϳʱĳʼ

462) 2014.11.8
462.1) bugfix: acl_json_util.c еĺ json_escape_append Ӧַ
'/' ת

461) 2014.11.7
461.1) feature: json ģ˹첼ͺֵ͵Ľӿ

------------------------------------------------------------------------
460) 2014.10.25
460.1) feature: acl_tcp_ctl.c ׽ѡĻȡ½ӿڣacl_get_tcp_solinger
acl_get_tcp_nodelay

459) 2014.10.24
459.1) bugfix: acl_aqueue.c  acl_aqueue_free ͷʱһָʹ

458) 2014.9.9
458.1) feature: acl_threads_server.c ̳߳طģ֧ͨ
(ioctl_thread_accept = 1)  on_accept ص̷̳߳ص߳д
458.2) feature: ¼ģ ACL_EVENT_ACCEPT/ACL_EVENT_CONNECT 
ACL_EVENT_READ/ACL_EVENT_WRITE ¼

457) 2014.9.6
457.1) ͷļʹ֮淶

456) 2014.9.2
456.1) acl_master ̵ master_spawn.c Уں master_delete_child У
 acl_binhash_find  NULL ʱԶ panicӶ acl_master ػ
쳣˳ָĳ warning

455) 2014.8.27
455.1) feature: acl_vstream.c ˼ IO ʱĴż¼λ

------------------------------------------------------------------------
454) 2014.8.20
454.1) feature: ACL_VSTREAM  objs_table Ա KEY-OBJECT 
ͨ acl_vstream_add_object/acl_vstream_get_object/acl_vstream_del_object


453) 2014.7.31
453.1) compile: FreeBSD9.2(64)ϱͨ

452) 2014.7.21
452.1)  master/template/acl_tmpl.c Ƶ stdlib/sys/unix/acl_core_limit.c
452.2) bugfix: acl_basename.c е acl_safe_basename()  BUG

451) 2014.7.7
451.1) acl_set_ugid.c/acl_set_eugid.c: ̲лûʱȡԶ
fatal Ḷ́Ǹһ߷ -1 ʾлûʧ

450) 2014.6.26
450.1) feature: acl_vstream.c  acl_vstream_gets_peek/acl_vstream_gets_nonl_peek
гƹܣ buf->maxlen > 0 ʱƽЧԱ
ͻͨһر𳤵ݶɱڴ
450.2) feature: acl_aio_read.c Զݵ󳤶

------------------------------------------------------------------------
449) 2014.6.23
449.1) acl_aio_server.c: ֮ǰܼԽӿ

448) 2014.6.20
448.1) acl_aio_server.c:  IP ַƹ

447) 2014.6.17
447.1) master/template: һ¸ģĴ
447.2) removed: ȥ acl_aio_app_main.c书ܺϲ acl_aio_server.c У
ȥ acl_app_main.h ͷļеĲִϲ acl_server_api.h 

446) 2014.6.13
446.1) upgrade: ȥ acl_ioctl_app_main.cģ齫 acl_threads_server.c
ȫ
446.2) deprecated:  acl_ioctl_server.c еĺΪڣҲᱻȥ
еĹȫ acl_threads_server.c ģ

445) 2014.6.3
445.1) performance: acl_pthread_pool.c, worker_wait() ̳߳߳
ʹ̳߳ƳĲ pthread_cond_timedwait ȴѭ棬ȿԼ
/ƳĴͬʱֿʹȴʱ̳߳˳

444) 2014.5.26
444.1) acl_scan_dir.c: ˴룬ڷصĿ¼ַУĸ
'/'  '\\' (win32)ԶȥβĿ¼ָ

443) 2014.5.20
443.1) feature: acl_master Է root ûУҪļ(main.cf)
 limit_privilege = 0

442) 2014.5.15
442.1) feature: acl_scan_dir.c Ӻ acl_scan_dir_next_name ḻһЩӿڵĹ

441) 2014.5.7
441.1) bugfix: acl_vstream.c  acl_vstream_ftell Ӧýжݼȥ
441.2) bugfix: acl_aqueue.c Ӧ֧޵ȴʽ

440) 2014.5.5
440.1) feature: acl_vstream.c/acl_file.c ֧ڱ׼ C е ftell ܣ
ǰļָļеλ

439) 2014.4.2
439.1) acl_vstream.c: ӵдʱܲĹϣʱȥ
Ϊڼд״̬ʱһϵͳãӰдЧ

438) 2014.4.1
438.1) bugfix: acl_vstream.c е __vstream_write дʱԭûгʱƣ
ͻȻܻʹ߶

437) 2014.3.27
437.1) bugfix: acl_ioctl_server.c е acl_event_set_check_inter ʱӦڵ
acl_ioctl_start ֮󣬷Ϊ ACL_EVENT δָֿ
437.2) feature: acl_aio_server.c ֧ master_dispatch ģϣ
 master_dispatch ģת㱨ǰ
437.3) bugfix: acl_transfer_fd.c У control_un Ķںڲ
̲߳ȫ
437.4) compile: acl_transfer_fd.c  *((int *) CMSG_DATA(cmptr)) = send_fd; 
÷ڸ߰汾 gcc ( -O2 Ͽأͬʱδʹ -fno-strict-aliasing) ʱᱨ
棬ķ˾

436) 2014.3.26
436.1) bugfix: acl_vstream_net.c  acl_vstream_accept_ex ʱж
ͷʽ
436.2) bugfix: acl_getpeername ͻӵ׽ʱĵַԣ
ǵжΪ׽ֺٵ acl_getsockname ȡ׽ּ·
436.3) bugfix: acl_transfer_fd.c  acl_read_fd() ڶȡ fd ʱӦ±ʾ
*recv_fd = *((int *) CMSG_DATA(cmptr));  *recv_fd = *CMSG_DATA(cmptr);
436.4) feature: acl_threads_server.c ģִ֧ɷȡ
ͻ˵ӣӦֻҪioctl_dispatch_addr = xxx 
436.5) app:  app/master_dispatch ׽ֽɷ

435) 2014.3.24
435.1) bugfix: acl_master ģ reload ļʱпܻᵼ² core
ļԭ acl_master_spawn жϽֱӲ core¼
ԵҪԭ master_conf.c  reload ʱԤƴ⣬ǣ
a)  acl_master_spawn н warning Ϣ core
b) ȥ master_conf.c  acl_master_avail_reset 
c)  master_avail.c е acl_master_avail_listen жǷҪ
ӽ

434) 2014.3.21
434.1) feature: acl_threads_server.c мڹرʱرյĻص

433) 2014.3.20
433.1) bugfix: events_epoll_thr.c ں event_disable_readwrite е
epoll_ctl ɾʱҲ뱣֤ĸstruct epoll_event*) ǿգڵͰ
 LINUX »

432) 2014.3.18
432.1) bugfix: events_pool_thr.c Ӧð acl_fdmap_add/acl_fdmap_del/acl_fdmap_ctx
Ĳ߳ڲ

431) 2014.2.27
431.1) workaround: event ¼УΪ˷ֹ64λת32λͶֵָ
ȫж

430) 2014.2.26
430.1) performance: events.h ķʽرգ32λϻ CPU


429) 2014.2.24
429.1) bugfix: events_epoll_thr.c лҪ¼Ӧüʱ
Ϊ˷̵ֹ߳߳ĺ event_enable_read ޸ fdtabs ͵
epoll_ctl/EPOLL_CTL_ADD ֮ event_disable_readwrite е
epoll_ctl/EPOLL_CTL_DEL Ҫ event_enable_read ִλ

------------------------------------------------------------------------

428) 2014.2.22
428.1) bugfix: events_iocp.c رδ״̬ɶ˿ WIN XP ´ BUGӦ
׽ֹرǰȡɶ˿״̬

427) 2014.2.21
427.1) bugfix: events_wmsg.c ڻصûн stream ԴݣӰ
 win32 Ϣ¼첽 IO 
427.2) bugfix: events_iocp.c رɶ˿ʱδ״̬Ӧǰͷ
صṹ(http://support.microsoft.com/kb/192800/zh-cn)
427.3) bugfix: acl_pthread_pool.c ߳ĲָԽ

------------------------------------------------------------------------

426) 2014.2.17
426.1) feature: acl_event.c Ӻ acl_event_set_check_inter
¼ѭ̽ȫּʱ

425) 2014.2.14
425.1) performance: acl_pthread_pool.c pthread_cond_signal 
pthread_mutex_unlock ֮󣬴Ӷ̵߳ȴ񱻴ʱ(Ϊ˷ֹ
߳˳󶨵߳δͷţ̳߳ضУ
ֻ߳ø)

424) 2014.2.8
424.1) feature: acl_pthread_pool.c̳߳е̳߳ʱȴʱи
1 ΪλʱƬ

423) 2014.2.6
423.1) feature:  gcc  vc һЩԿ

422) 2014.2.3
422.1) performance: events_kernel_thr.c ڵ event_loop ѭе
event_thr_prepare ʱ˼ʱڸ߲¿Чؼ
CPU ѭ
422.2) feature:  events_epoll_thr.cӶ epoll ĵ÷ʽ
events_kernel_thr.c а룬Աר epoll ʽŻ

421) 2014.1.25
421.1) workaround: ȥ acl_threads_server.c, acl_ioctl_server.c, 
acl_aio_server.c, acl_udp_server.c õļӹ(watchdog) ļ

420) 2014.1.24
420.1) performance: acl_pthread_pool.c ڴʱظʹѾ


419) 2014.1.23
419.1) performance: acl_pthread_pool.c ̳߳Żʽ
ʱȽָ̣߳߳̾ĸ

418) 2014.1.22
418.1) performance: acl_pthread_pool.c ̳߳Żÿ߳
УӶ֮߳ľ̳ͣ߳ȵ

417) 2014.1.20
417.1) workaround: ACL_DEF_THREADS_BATADD(acl_threads_params.h) ԭ
1 Ϊ 0Ӧµ̳߳ؿ(ȱʡ£̳߳طģ岻
ʽ)

416) 2014.1.19
416.1) performance: acl_pthread_pool.cԭ̳߳ͳһһ߳
Ϊÿ߳һ߳Ӷ֮߳ͻ
̳߳ص

------------------------------------------------------------------------

415) 2014.1.11
415.1) compile: ȥ ACL_MS_WINDOWS 궨壬WINDOWSͳһʹ WIN32
ʶ VC 뻷
415.2) compile: ֧ vc2008 

414) 2014.1.7
414.1) bugfix: ̳߳طģ (acl_threads_server.c) Ӧ acl_chroot_uid
֮ٵ set_core_limitʹӦóʱ core ļ

413) 2013.1.6
413.1) bugfix: ̳߳طģ (acl_threads_server.c) ¼ĴӦ
 pre_jail ǰӦ pre_jail صлõ¼Ϊ
413.2) feature: ̳߳طģ pre_jail ǰʹ acl_master ־¼
ֵĴ

412) 2013.12.31
412.1) bugfix: ޸һЩ json е bug

411) 2013.12.30
411.1) compatibility: json ģϵĽ˼

410) 2013.12.29
410.1) feature:  json 淶(www.json.org) json ʽ
ͬʱṩв

409) 2013.12.25-27
409.1) feature:  json ʽṩ˸Ĺ(磺ȡĳ
ǩ json ַ)

408) 2013.12.15
408.1) feature: acl_threads_server.c ģÿƲ ioctl_batadd,
Ƿʽ

407) 2013.12.13
407.1) feature: acl_pthread_pool.c,  acl_pthread_pool_alloc_job,
acl_pthread_pool_free_job, acl_pthread_pool_add_job(µ߳
Ľӿ)
407.2) feature: acl_threads_server.c, ӵ̳߳طģ
407.3) feature: event.c, acl_events.c, ɷǰɷĻص

------------------------------------------------------------------------

406) 2013.12.5
406.1) feature: Makefile ֧ solaris 

405) 2013.12.4
405.1) remove: ȥ event Ŀ¼µ events_kernel2.c  events_kernel3.c

404) 2013.11.26
404.1) feature: acl_json.c  acl_json_node_duplicate ڸһ JSON
һµ JSON У acl_json_create ڸһ JSON 
һȫ JSON 
404.2) feature: acl_json_util.c  acl_json_node_build ڸһ JSON
 JSON ַ

403) 2013.11.25
403.1) bugfix: acl_json_parse.cjson_val() ûת⴦

402) 2013.11.17
402.1) performance: acl_vstream.c__sys_read е sys_read_ready
Ϊ 1 ʱ򲻻ϵͳ API select жϳʱ̣Ӷһϵͳã
Ϊ sys_read_ready ־λ¼ģ(event_xxx) б
402.2) performance: acl_aio_server.c, acl_ioctl_server.c ģμ
Ʋmaster_status_notifyӽʱòǷ
acl_master ̻㱨ӽ̵״̬ master_prefork ԤҸ
ֵ > 1 ʱ master_status_notify Ϊ 0ӽ̲ acl_master 
̻㱨״̬ڼ acl_master ̵ĸ
402.3) performance: acl_vstream.c,  acl_vstream_readn УΪ read
뻺СʱԶ˫ʽ

401) 2013.11.7
401.1) bugfix: acl_vstream.c acl_vstream_ctl УƲΪ
ACL_VSTREAM_CTL_PATH ʱ stream->addr_peer ĸֵ⣨ bug ɸ
汾 gcc4.8.2 

400) 2013.11.6
400.1) compile: acl_msg.cں acl_last_serror() зֲ߳̾
߳޷ͷţᵼ valgrind 

------------------------------------------------------------------------
399) 2013.11.5
399.1) bugfix: events.cevent_thr_fire() ڵ disable_readwrite_fn
 fdp->stream = NULLֵ events_dog.c бʹɴ

398) 2013.11.3
398.1) acl_debug.c: ˲ıʾĵԱǩַ
ʽ: 1:1, 2:10, 3:8...  or 1:1; 2:10; 3:8...

397) 2013.11.2
397.1) feature: acl_master ģ master_debug û
ʹ acl ķʱ־

396) 2013.10.29
396.1) bugfix: acl_xml_util.c, acl_xml_tag_add() ڵ acl_token_tree_add
ʱӦõ ACL_TOKEN_F_STOPԭ ACL_TOKEN_F_PASS

395) 2013.10.20
395.1) compile: acl_aio_app_main.c, ڵ write ʱҪжϷֵ
ڸ߰汾 gcc ϱ

394) 2013.10.17
394.1) bugfix: acl_mylog.c, ͨ UDP ʽ¼־ʱΪ֮ǰ acl_vstream.c
עⲿӿڵĸı˲

393) 2013.10.15
393.1) feature: acl_aio_app_main.c/acl_ioctl_app_main.c, 
master_deny_banner ûԶܾӵϢ

392) 2013.10.12
392.1) feature: acl_pthread_pool.c  acl_pthread_pool_qlen ṩ
ǰ̳߳ضδ

391) 2013.10.7
391.1) performance: acl_vstream.c __vstream_sys_read Ķ̽
ŻΪ __sys_readûĻΪϵͳ read ڴַ
Ӷڵ acl_vstream_readn/acl_vstream_read ʱݵĶο

------------------------------------------------------------------------

390) 2013.10.1
390.1)  master ģµԴļŰһ
390.2) bugfix: events_select.c/events_select_thr.c ׽ּΪʱ
ߵʱ䵥λΪ룬Ҫ΢뼶 delay תΪ뼶

389) 2013.9.30
389.1) feature: acl_single_server.c, acl_ioctl_server.c, acl_aio_server.c
acl_udp_server.c ˿Իñؼ׽ӿ󼯺ϵĺ

388) 2013.9.27
388.1) events: ACL_EVENT_NOTIFY_RDWR/ACL_EVENT_NOTIFY_TIME ӿ
¶壬ڻص ACL_EVENTACL_VSTREAM Ӷû
ֱʹãΪӿڵ¶壬˺ܶ๦ģӦ޸ģҪ
ӰģУevent, master, aio, ioctl

387) 2013.9.26
387.1) feature: master ר UDP ķģ
acl_udp_server.c/acl_udp_params.h

386) 2013.9.22
386.1) feature: ACL_VSTREAM ֧ UDP ; acl_vstream_net.c 
acl_vstream_bind  UDP ģʽ
386.2) feature: ACL_VSTREAM  acl_vstream_set_local_addr,
acl_vstream_set_peer_addr
386.3) acl_vstream.c: acl_vstream_set_remote Ϊ acl_vstream_set_peer

385) 2013.9.21
385.1) Ż: ACL_VSTREAM н remote_addr, local_addr Ϊָ룬Ӷ
 ACL_VSTREAM 󴴽ʱĳߴС
385.2) feature: ACL_VSTREAM  struct sockaddr_in ͵ָ룬Ա
ڽ ACL_VSTREAM ֧ UDP 
385.3) feature: ACL_VSTREAM  acl_vstream_set_local,
acl_vstream_set_remote, acl_vstream_set_path 

384) 2013.9.13
384.1) compile: ˹ļ Makefile.dbʹøùļ룬ʹ
mysql ݿ⹦ܣʹ Makefile ļ룬 lib_acl.a Ϊɾ
(κε)

383) 2013.8.21
383.1) feature: master Է root Ҫû޸ acl_master 
ļ main.cf set_ugid = 0Ĭ¸ֵΪ 1

382) 2013.8.20
382.1) bugfix: acl_json_util.c::json_escape_append, acl_json_parse::json_tag
Ҫַת崦Ŀǰڽʱݲ֧ \u )

381) 2013.8.19
381.1) bugfix: acl_json_util.c::json_escape_append вӦ "{}[]" ЩַΪ
ַת

380) 2013.8.14
380.1) event: events_select/events_poll/events_kernel/events_iocp ʹ¼
ʱӸΪȷ

379) 2013.8.7
379.1) bugfix:  iocp ʽ²ͨ getpeername/getsockname 
Զ/صĵַͨ acl_vstream_accept_ex  setsockopt ã
׽еһЩԿͻн˴

378) 2013.7.23
378.1) feature: acl_aio_server.c, aio_accept_timer һò
aio_accept_timerֵ > 0 ʱڲһʱʱԽտͻ
ӣӶﵽ¼ȵĿ

377) 2013.7.18
377.1) performance: event/event_kernel_thr.c, Ż̷߳ʽ¼
ٶȣacl_master У¼ѡ kernel ʽʱҪ
ioctl_enable_dog ѡ
377.2) compile: linux32 gcc4 򿪱ѡ strict-aliasing rules ʱ
acl_sane_socket.c е SOCK_ADDR ͱתʱᱨ

376) 2013.7.15
376.1) lib_acl: ȥ svr ģ飬ģĹȫ thread/ µ̳߳ģ
(acl_pthread_pool_xxx) 棻ͬʱ޸ ioctl/ ģж svn ģ
滻Ϊ threead/ µ̳߳ģ

375) 2013.7.11
375.1) feature: acl_sane_socket.c,  acl_getsocktype Իõǰ
socket  TCP ׽ӿڻ UNIX ׽ӿ;
acl_getsockname/acl_getpeername ֧ UNIX ׽ӿ
375.2) feature: acl_sane_accept.c,  acl_accept ȽϷؽտͻ
ӣͬʱ TCP ׽ӿڼ UNIX ׽ӿ
375.3) master/template: һ acl_aio_server.c, acl_ioctl_server.c,
acl_single_server.c acl_multi_server.c, ڲͳһΪ acl_accept ʽ

374) 2013.7.7
374.1) bugfix: acl_vstream.h, Ϊ ACL_VSTREAM ед wbuf ȡ
дʱĲԣԻɺ ACL_VSTREAM_PUTC Ŀָ⣬ж
Ԥ wbuf ռ
374.2) master ܣΪ֧ͬһͬʱַ TCP  UNIX
׽ӿڻãĿǰģԴĬϵ UNIX ׽ӿڵ
accept 

373) 2013.6.25
373.1) compile:  gcc-4.6.3 µһЩ뾯

372) 2013.6.21
372.1) feature: acl_master ֧һļмַ(Ϊ TCP
׽ӿ׽ӿڻ)

371) 2013.6.21
371.1) feature: acl_master ֧ reload ʱ prefork޸ĵļУ
master_avail.c, master_service.c, master_spawn.c, master.h
371.2) acl_master_log.c: ־Ϣ״̬Դ

370) 2013.6.15
370.1) bugfix: acl_array.c->acl_array_prependеõ acl_array_succ_insert
Ӧõ acl_array_pred_insert BUG Ӱ쵽е acl_dlink, acl_iplink,
acl_access ĵط acl_aio_app_main.c/acl_ioctl_app_main.c йط
Ȩ޵ĵط
370.2)  acl_iplink.c еĺӳΪֱӵ acl_dlink.c еķ
370.3) samples/iplink: ڲ acl_iplink.c еغ

369) 2013.6.4
369.1) bugfix: acl_mylog.c->reopen_log е RETURN 궨Ӧ
thread_mutex_unlockԭ thread_mutex_lock 

368) 2013.5.27
368.1) bugfix: acl_json_parse.c: Щ֣硰\ĺֽڵֵתַ
ͬΪ 92Ҫݴж last_ch < 0 ҵǰ char Ϊ 92 ʱΪ
; acl_xml_parse.c Ҳ⣬޸

367) 2013.5.23
367.1) acl_json.c/acl_xml.c: ý󻺴ʱacl_json_node_reset 
acl_xml_node_reset е ACL_VSTRING_RESET Ӧõ ACL_VSTRING_TERMINATE

366) 2013.5.20
366.1) bugfix: acl_basename.c -> acl_safe_basename  3 ·޸ĵ

365) 2013.5.13
365.1) acl_ioctl_server.c:  acl_ioctl_server_main УҪ acl_ioctl_start
 proc_init ֮ǰԱӦ proc_init صһԶʱ

364) 2013.3.26
364.1) bugfix: acl_xml_parse.c->xml_parse_attr_val() е
if (ch == attr->quote) ʱӦ xml->curr_node->last_ch = ch;

363) 2013.3.24
363.1) bugfix: acl_vstream_net.c->acl_vstream_listen_ex() ׽ӿڵַ
ʱûж local_addr ֵ

362) 2013.2.26
362.1) bugfix: acl_dns.c, acl_dns_serror() зַϢʱѯʽ
362.2) bugfix: acl_dns.c, acl_dns_lookup() д ACL_DNS_REQ ʱֱ
δ

361) 2013.2.5
361.1) bugfix: acl_scan_dir.c, acl_scan_dir_open() ԭ acl_mymalloc
ڴ浼һЩδʼָĳ acl_mycalloc

360) 2013.1.29
360.1) bugfix: acl_vbuf_print.c, ¸ĵĴûдʽΪ %* 

359) 2013.1.26
359) performance: acl_vbuf_print.c е fmt ڴԭĶ̬Ϊ̶Ķջ
ڴ棬ʹ֮ߴԼ 80% ңɴڸú ACL_VSTRING еĸʽ
ܣfmt ڴ̶Ϊ 128 ֽڣ㹻֧ڵĻָȣ
 %{xxx}d ĲУ{xxx} Ϊ֣ 123Ϊг 128 ֽڳȵ
֣Դ˹̶ߴķʽǰȫЧģûʹùõ˳ 128 
ڳȵݣڲ fatal ûзǷ

358) 2013.1.22
358.1) bugfix: acl_single_server.c  single_server_wakeup ûн
Զ뱾صַ

357) 2012.12.31
357.1) feature: acl_ioctl_app_main.c, صָ:
__app_on_timeout/__app_on_close׽ӿӶʱرʱֱ


356) 2012.12.30
356.1) feature: acl_file.h, ˼ͨõĺ

356) 2012.12.28
356.1) compile: Makefile ı뿪 -pedantic ѡص BUG

355) 2012.12.27
355.1) performance: ACL_VSTREAM ṹŻ˸ʹýṹĳߴԭ 9K
Ϊڵֻ 800 ֽڣдʱڴĲ

354) 2012.12.3
354.1) bugfix: acl_events: event_limit() ڵ acl_open_limit() ʱ
һĬϵֵ½̴򿪵ļ޷
354.2) feature: acl_ioctl_server.c/acl_aio_server.c: ͻϵͳʱ
ԭǳ˳ڸΪóʱͨʱ

353) 2012.10.12
353.1) feature: xml/,
ӿڣacl_xml_getElementMeta/acl_xml_getEncoding/acl_xml_getType,
ȡ xml ʼֶεϢ

352) 2012.9.29
352.1) Ϊ˼ MAC OS Լֲ߳̾ڶ̬أ
 __thread ؼֱʶľֲͳһΪͨ acl_pthread_getspecific
Ⱥ

351) 2012.9.25
351.1)  MAC OS ͨ˴󲿷ʾ
351.2) ȥ code/ Ŀ¼һЩַתصĴ

350) 2012.8.26
350.1) feature: ACL_VSTREAM::flag һ־λACL_VSTREAM_FLAG_PREREAD,
 acl_vstream_can_read ʱжϴ˱־λ˴˱־λϵͳʾ
ݿɶʱúԤ

349) 2012.8.25
349.1) bugfix: acl_vstream.c н stream->sys_read_ready = 0; 
__vstream_sys_read ڣԱ֤һ

348) 2012.8.1
348.1) еĶʱӿڽ޸ģʹ֮
ԭĶʱһԶĹܣʱܱ첽¼
(ֻе첽˶ʱܣеĶʱŻῪƣ
)ڽԶܰÿʱ
Ӱ쵽ļУ
a) event: acl_events.c, acl_events.h, events_select.c, events_pool.c,
events_kernel.c, events_kernel2.c, events_kernel3.c, events_iocp.c,
events_wmsg.c, events_timer.c, events_alloc.c, events.c, events_select_thr.c,
events_poll_thr.c, events_kernel_thr.c, events_timer_thr.c
b) aio: acl_aio.c, acl_aio.h
c) master: master_spawn.c, master_wakeup.c, acl_single_server.c, acl_multi_server.c,
d) acl_trigger_server.c, acl_listener_server.c, unix_trigger.c
e) ioctl: acl_ioctl.c, acl_ioctl.h

347) 2012.7.27
347.1) acl_aio_read.c: acl_aio_enable_read() ˵ݹƣ
can_read_callback()  READ_SAFE_DISABLE 

346) 2012.7.25
346.1) acl_xml_util.c: ˶ '<'  '>' ת֧
346.2) acl_json_util.c: ˶ '{', '}', '[', ']' ת֧

345) 2012.7.23
345.1) bugfix: acl_xml_parse.cֵת '\' ʱУ
ACL_XML_ATTR ӳԱ backslash 
345.2) bugfix: acl_xml_util.c/acl_json_util.c ڴʱҲûдת '\' 

344) 2012.7.10
344.1) compile:  snprintf  WIN32 ʵΪڲʹ

343) 2012.7.2
343.1) bugfix: acl_aio_stream.c->close_astream() вûͷ acl_aio_open
дĸ
343.2) feature: acl_aio.h,  ACL_AIO_SET_TIMEOUT/ACL_AIO_SET_CTX
Կٵ첽ĳʱ/Ĳ

342) 2012.6.6
342.1) compile: event_epoll.h  #include <stdint.h> 
--liuhui (liuhui331234958@gmail.com)

341) 2012.6.4
341.1) bugfix: acl_ifconf.c  win32  acl_free_ifaddrs() һĴ
341.2) feature: acl_env.c  acl_getenv3()/3 ú win32 Ҫ acl_getenv ȫ
341.3) compile:  AS6/CS6 ϱͨ

340) 2012.5.26
340.1) bugfix: net/connect/acl_stream_connect.c: acl_stream_connect()/3 ֧
SUNOS5LINUXҪעͣӰĳmaster/framework/trigger/stream_trigger.c

340) 2012.5.10
340.1) bugfix: acl_aio_app_main.c/acl_ioctl_app_main.c ڵ
acl_access_permit ʱ IP:PORTʽӦ IP

339) 2012.4.17
339.1) feature: json/,  json ַĺӿ

338) 2012.4.15
338.1) feature: xml/,  xml ַĺӿ
338.2) samples: samples/xml/, ˹ xml ַĲ: build_xml2()

337) 2012.4.9
337.1) bugfix: ޸Ͳƥ

336) 2012.4.5 --- 2.1.2.8 release
336.1) bugfix: events.h еĺ SET_TIME ԭĶΪ
#define SET_TIME(x) {  \
        struct timeval _tv;  \
        gettimeofday(&_tv, NULL);  \
        (x) = ((unsigned long) _tv.tv_sec) * 1000000 + ((unsigned long) _tv.tv_usec);
\
}

ӦøΪ
#define SET_TIME(x) {  \
        struct timeval _tv;  \
        gettimeofday(&_tv, NULL);  \
        (x) = ((acl_int64) _tv.tv_sec) * 1000000 + ((acl_int64) _tv.tv_usec);
\
}
Ϊ32λ unsigned long Ҳ32λģԼ x ֵѾԽˣ
ʹøú¼еĶʱѭ

335) 2012.4.1
335.1) bugfix: acl_mem_slice.c  mem_slice_free 
thread_mutex_lock(__mem_slice_list_lock) ʱ __mem_slice_list_lock
Ѿ free_global_ctx бͷ

334) 2012.3.31
334.1) lib_acl/src/master/framework: ദδȫֱδʼֵ
 AS4/CS4 ϳ
334.2) bugfix: acl_mylog.c->acl_close_log() ڲͷ߳ʱظͷ߳
log->lock ڴ棬ڵ thread_mutex_destroy ʱѾڴԶͷŵ
334.3) acl_single_server.c: ־򿪵˳
 
333) 2012.3.27
333.1) bugfix: acl_mem_slice.c һڴй¶⣬Ȼֻһ

333.2) private_thread_mutex.c: һ thread_mutex_desotry 

332) 2012.3.26
332.1) acl_json.c: һ acl_json_alloc() 

331) 2012.3.24
331.1) acl_master: prefork ģʽĽԭǵӵʱŻԤ fork
ָķڸΪʱֱԤָķ

330) 2012.3.17
330.1) feature: acl_master ģ֧ prefork ģʽ, ֻҪļ
е master_prefork ó > 0 ֵ prefork ģʽ
330.2) feature: acl_read_wait/acl_write_wait ֧ UNIX ² poll ʽ
ж϶дʱ select ŵֿԺ׳ 1024 

329) 2012.3.14
329.1) bugfix: ȥ acl_ioctl_app_main.c еapp_client_idle_limit 
ѡʹ acl_ioctl_server.c е ioctl_rw_timeout ѡͻ
ӵĶʱͿгʱʱ䣬˵ͻϺĳʱʱĲһ

328) 2012.3.7
328.1) compile: ڱ붯̬ʱָ·÷£
make shared rpath=xxx; 붯̬
 make rpath=xxx; ͬʱ붯̬⼰̬

327) 2012.2.12
327.1) performance: acl_json.c, acl_fifo.c, acl_argv.c ͨڴض
Żڴ

326) 2012.2.11
326.1) performance: acl_xml.c, ͨڴطʽŻڴͷŹ
326.2) performance: acl_htable.c, ʹϣڴض󣬸Ϊ
ɲӿڴڴض

325) 2012.2.6
325.1) performance: aio/, Ż˷Ķ/д

324) 2012.1.10
324.1) feature: acl_aio_app_main.c ˽л֮ǰõĻص

323) 2012.1.8
323.1) feature: acl_ioctl_app_main.c ˽л֮ǰõĻص

322) 2011.11.28
322.1) acl_pthread_mutex.c: зڴĲ acl_mymalloc 滻ԭ
acl_dbuf_pool_alloc ԱڴڶʱڵĶѻ

321) 2011.11.26
321.1) acl_fhandle.c: ڲһЩãʹ֮ڴļʱԶ, 
 gid_server ǳ
321.2) acl_htable.c: ˱־λ ACL_HTABLE_FLAG_KEY_LOWER Ϊϣ
־֮һ˴˱ǣڲԶֵתΪСдʵֶԼֵ
ɾʱֵּСдĹ

320) 2011.11.19
320.1) bugfix: acl_json.c, json Ľ޸
320.2) feature: acl_json_util.c, acl_json_getElementsByTags ѯǩ֧ģʽ 
320.3) feature: acl_xml_util.c, acl_xml_getElementsByTags ѯǩ֧ģʽ 

319) 2011.10.23
319.1) json/:  json ݸʽʽ⣬Դ˼CԷߵ˹
C ǿ󣬿κ顣

318) 2011.10.8
318) acl_msg.c: δ־ȴ־¼ĺʱԭĬϲֱ
׼ϣ˿ãĬϲԴκβ

317) 2011.10.1
317.1) stdlib/ Ŀ¼µ acl_vstring.h, acl_vbuf.h, acl_vbuf_print.h
ͷļеĺ궨 Postfix ĳͻ

316) 2011.9.12
316.1) acl_pthread_t ¶Ϊ unsigned long 
316.2) acl_mem_slice.c: ̣߳ڴͷŵĻ

315) 2011.9.5
315.1) feature: acl_htmlcode.c ֧ &#xxx; ʽĽ

314) 2011.7.19
314.1) feature: acl_xml.c  acl_xml_add_tag ûԶķǱպϱǩ

313) 2011.7.18
313)  WIN32 ƽ̨µİ汾Դļ

312) 2011.6.29
312.1) acl_aio_read.c:  acl_aio_gets, acl_aio_gets_nonl, acl_aio_read,
acl_aio_readn ĸĶǳʱûĻصȡ
״̬ҵûݣûٴεЩʱܶЩ
ûеĻݴص޷ϵͳеݵĻص̣
ЩĿʼԳ״̬Ķ״̬

311) 2011.6.17
311.1) bugfix: acl_aio_server.c, acl_ioctl_server.c, acl_single_server.c,
acl_multi_server.c, acl_trigger_server.c, еʱصı int ͣ
Ϊ˵ acl_event_request_timer ȷʱҪ 1000000 ת 64 int ,
Щǰ acl_int64 ѱڽ 1000000 ʱҪ 64 λ
ͶԴ

310) 2011.6.13
310.1) bugfix: acl_doze.c, ߵʱ䵥λʵֵĲǺ뼶

309) 2011.6.10
309.1) acl_getopt.c: Ϊʹ fprintfܻᵼʹ VC2010 Ĺ
ڲ /MD ʽʱҪ´ͨڰе fprintf ĳ printf
 VC2010 ĹͲ´
#if !defined(VC2003) && !defined(VC6)
extern "C" { FILE _iob[3] = {__iob_func()[0], __iob_func()[1], __iob_func()[2]}; }
#endif

308) 2011.6.8
308.1) bugfix: acl_vstream.c, acl_vstream_readn_peek ⣬Ѿ޸򽫻
Ӱ acl_aio_read.c е acl_aio_readn 

307) 2011.5.31
307.1) feature: events/, aio/ ֶ֧ʱԱѭʹãûֻҪ
acl_event_keep_timer ɱ֤ acl_event_request_timer õĶʱԱѭ
ʹãĬ¶ʱֻʹôε

306) 2011.5.24
306.1) bugfix: acl_xml_util.c, acl_xml_getElementsByTags() е
acl_xml_getElementsByTagName() Ķ̬ûбͷ
306.2) bugfix: acl_xml.c, xml_iter_next/xml_iter_prev  do-while ѭ
жϽ parent == NULLж acl_xml_alloc()  XML 
Ч acl_xml_foreach_init() ʹõ XML Ч޸һ£ѭʼ
ж parent == xml->rootԴжǷ˳ѭ

305) 2011.5.19
305.1) bugfix: 2011.5.18  acl_vstream.c ޸Ȼʹ iocp 湤
ȴʹ win32 Ϣ⣬Իָ acl_vstream.c ֮ǰ״̬ͬʱΪ˱
iocp ⣬ iocp ڲ stream_on_close ǰ׽ӿڹر

304) 2011.5.18
304.1) bugfix: acl_vstream.c޸ acl_vstream_close() йر׽ӿӵ
˳Ϊʹ iocp Ϊ¼ʱرʱ events_iocp.c е
stream_on_closeúͷŵ fdp->event_read t  fdp->event_write 
׽ӿδرʱпܻᱻ iocp ʹʱֻе׽ӿڹرʱ
iocp Ųʹе IOCP_EVENT->overlapped ȳԱ
304.2) feature: acl_aio_connect.c¼Ϊ win32 Ϣʱ֧ӳʱܼ

303) 2011.5.17
303.1) bugfix: ʱľȸĳ΢뼶 events/ µ¼Ϊ
ȡѭ

302) 2011.5.16
302.1) feature: 붨ʱصĹܺеʱ侫뼶Ϊ΢뼶

301) 2011.5.13
301.1) compile:  StdAfx.h  include/ Ŀ¼Ƶ lib_acl/ Ŀ¼

300) 2011.5.10
300.1) feature: acl_pthread.c, acl_pthread_tls_get() Ա֤߳˳ʱ
ͷ̵߳ľֲӶ valgrind 鲻
300.2) feature: acl_init.c,  acl_main_thread_self() ߳
̵̺߳߳
300.3) bugfix: acl_pthread_mutex.c  acl_thread_mutex_init_once() ڴ
__header_key  __pool_key ʱдٽ˶ַ acl_pthread_key_create()
ٽ acl_pthread_key_create() ֵ˶ֵ

299) 2011.5.9
299.1) bugfix: acl_ioctl_server.c, ҪյĿͻԶ̵ַصַ

298) 2011.5.8
298.1) feature: acl_xml.c,  acl_xml_foreach_init, úԽĳ
Ϊһµ xml ĸб

297) 2011.5.7
297.1) feature: acl_xml.c,  acl_xml_getElementsByTags, úȡ
϶༶ǩ xml 㼯

296) 2011.5.6
296.1) bugfix: events_wmsg.c, ¼ʱҪر׽Ĵ,
Ӧõ DestroyWindow(),  CloseWindow()

295) 2011.4.28
295.1) bugfix:  UNIX/LINUX µ select  iocp ϵͳ⣬ĵ磺
select(win32), epoll, kqueue, devpoll, WSAAsyncSelect, Ƕܴһ
⣺ʹ socket ϵͳȻݣϵͳ⵽ӹرգп
ȷ͹رյ¼֪ͨ acl ¼֪ͨƼ첽IOһµ
֤¼ȣsocketϵͳʱҲȽݶ
ݶŴر¼رsocket.
Ӱļ
acl_vstream.c: acl_vstream_xxx_peek
acl_aio_read.c: __xxx_notify_callback

294) 2011.4.22
294.1) bugfix: acl_aio_read.c, acl_aio_readn() Ӧõ __readn_peek 
 __read_peek __read_peek е acl_vstream_read_peek  0
ʱӦ fatal
 
293) 2011.4.20--21
293.1) feature: acl_xml_code.c, acl_html_code.c, ˶ XML  HTML
ַת빦

392) 2011.4.19
392.1) bugfix: acl_xml.c, acl_xml_reset() Ӧð xml->curr_node
 NULLᵼڴ
392.2) feature: acl_xml_parse.c, Լݵ ">" ʾ
"/>" 
392.3) feature: acl_xml_util.c,  acl_xml_dump2  xml ת
ָ

391) 2011.4.18
391.1) feature: acl_vbuf_print.c, ֧ %zu, %zd 

390) 2011.4.17
390.1) acl_mem_slice.c: ֲ߳̾ acl_pthread_tls_get/set
Ϊ acl_pthread_get{set}specificӦò acl_pthread_tls_xxx
ͬʱʹֲ߳̾ڴʱͻ

389) 2011.4.12
389.1) performance: acl_xml.c,  acl_xml_reset, acl_xml_cache
Ӷʹ xml ظʹãҴ˽

388) 2011.4.11
388.1) Makefile: ÿԴͷļıʱ Makefile
ԶбԴļ
388.2) Makefile: ĬϽ mysql 

387) 2011.4.8
387) ޸˼ڸ߰汾GCCϵı

386) 2011.3.28
386.1) acl_aio_read.c: Ż첽Ĵ
386.2) acl_aio_stream.c: ǷĹܺ

385) 2011.3.25
385.1)  win32 ƽ̨ VC  release 汾ʱ assert ᱻŻ
ͳһ assert ޸ĳ acl_assert
385.2) ṩ acl_aio_create2 ӿڣ ACL_EVENT_WMSG Ϣ
첽 IO ʱָҪ󶨵Ϣֵ
385.3) acl_aio_read.c:  ACL_EVENT_WMSG ʱܻΪ
ݣǶײﵽʱᵼ޷ظӦãѭ̽
ĹܣеݶظӦ

384) 2011.3.19
384.1) acl_aio_listen.c:  acl_aio_listen/acl_aio_accept Ҫ
astream->flag |= ACL_AIO_FLAG_ISRD acl_aio_disable_read Լ


383) 2011.3.18
383.1) feature: events_wmsg.c ͨ SetWindowLongPtr/GetWindowLongPtr
 API ھ˽ֵ˽ֵԭֲ߳̾
Ĵȡʽ

382) 2011.3.16
382.1) bugfix: events_select_thr.c е IO ʱ

381) 2011.3.13
381.1) bugfix: event  WIN32 ĶʱڿܺķCPU߼
381.2) aio:  WIN32 ĶʱԲ event еĶʱ

380) 2011.3.12
381) feature: event/aio ģWIN32Ϣ֧֣ˣACL
첽¼漰첽IO֧: select, pool, epoll, kqueue, devpoll,
iocp, WIN32 GUI Ϣ
382) feature: event/aio ģWIN32Ķʱ֧

379) 2011.3.8
379.1) bugfix: events_kernel.c, events_iocp.c: ڵ event_disable_xxx
ʱҪδ״̬ڵ event_disable_read ʱҪж flag
־λǷ EVENT_FDTABLE_FLAG_WRITE, Ҫж flag Ƿ˱־
EVENT_FDTABLE_FLAG_ADD_WRITE, Էֹڶ/д״̬ʱǰ
380.1) private_vstream.c: POSTFIXеĳͻǰ׺

378) 2011.3.1
378.1) acl_aio_write.c: acl_aio_vfprintf(), ڲ acl_vstring_memcpy(),
úᵼ valgrind ˵ڴص޸Ϊ acl_vstring_memmove()

377) 2011.2.26-27
377.1) acl_aio: ǿݴԼ׳

376) 2011.2.23
376.1) feature: acl_ioctl_app_main.c, ˵ӵʱԤȵû
صĹ

375) 2011.2.17
375.1) feature: acl_mylog.c,  (TCP, UNIX) ־
ϣ´־

374) 2011.2.16
374.1) bugfix: acl_mylog.c, ̼߳־ʱΪģʽûм
ɳͻ

373) 2011.2.15
373.1) bugfix: acl_mylog.c, пܻɺѭǶ׵õ.
373.2) acl_aio_server.c: ˿Ʋ aio_quick_abort, ֵ
ļз 0 acl_master ˳ʱ aio ˳Ĭ
ֵ 0
373.3) acl_ioctl_server.c:  ioctl_quick_abort ĬֵΪ 1

372) 2011.2.14
372.1) bugfix: acl_mylog.c, Ҫ־еǰ׺ַÿոֿ
֧ syslog-ng  $PROGRAM 

371) 2011.2.9
371.1) feature: acl_mylog.c, ֧ syslog-ng ϼ¼־ʽ

370) 2011.1.27
370.1) bugfix: acl_vstring.c, acl_buffer_gets/acl_buffer_gets_nonl 
ûа \n ʱûнݲ \0

369) 2011.1.26
369.1) acl_mylog.c: ûǷ־м¼߳IDţĬ
¼

368) 2011.1.25
368.1) acl_mylog.c: ȥ־ pri(ʾȨ) ļ¼

367) 2011.1.24
367.1) feature:  acl_trace.c ڴӡжջϢĿļ
367.2) feature: acl_master ӽ̱лΪͨû core ļ,
Ӧأacl_masterķģ bool ͵ѡ£
ioctl_enable_core/aio_enable_core/trigger_enable_core/single_enable_core
/multi_enable_core
367.3) bugfix: acl_dbpool_mysql.c, ʧʱڴй¶

366) 2011.1.21
366.1) acl_init.c:  acl_version/1 ˵ǰACLİ汾
366.2) bugfix: acl_dbpool_mysql.c, ӵĹܺdb_before_connect


365) 2011.1.18
365.1) samples: master_notify, ģڽ acl_master 
쳣˳ϢϢ
365.1) master: ӽ쳣˳ʱϢ

364) 2011.1.10
364.1) feature: acl_dbpool.h, ݿ֮ǰĻصã
ûһЩ

363) 2010.12.31
363.1) bugfix: acl_dbpool_mysql.c, ڵ __dbpool_mysql_destroy ʱҪ
mysql_library_end(), ڴй¶
363.2) sample:  dbpool ûݿӳع
363.3) feature: db/mysql: MYSQLж϶ѯʧʱԹ

362) 2010.12.28
362.1) bugfix: ޸ src/unit_test ڴй¶

361) 2010.12.13
361.1) acl_xml_parse.c: acl_xml_parse Ϊ acl_xml_update Ӷʽ
ص
361.2) acl_base64.c: ԼӸı

360) 2010.12.7
360.1) feature: acl_vstring.c,  acl_vstring_memmove()/3 

359) 2010.11.29
359.1) feature:  acl_utf8_to_big5/acl_big5_to_utf8,
acl_utf8_to_unicode/acl_unicode_to_utf8,
acl_gb2312_to_big5/acl_big5_to_gb2312,
acl_hz_to_gb2312/acl_gb2312_to_hz ַת

358) 2010.11.16
358.1) bugfix: acl_array.c, acl_stack.c ʹ acl_foreach() 
ʱڲ, ΪʱȻһԪط

357) 2010.11.15
357.1) feature: ACL_ARGV(acl_argv.c/acl_argv.h),
ACL_ARRAY(acl_array.c/acl_array.h),
ACL_FIFO(acl_fifo.c/acl_fifo.h),
ACL_STACK(acl_stack.c/acl_stack.h)  push_back/push_front,
pop_back/pop_front ӿ
357.2) aio: ¹

356) 2010.11.2
356.1) compile: WIN32±ʱÿ̵.pdbļָ

355) 2010.10.28
355.1) bugfix: acl_base64.c, acl_vstring_base64.c, õĽ
Ϊ 128 ֽڵ, е char ֵ 128 ܻԽ
(һЩbase64ķǷпܻ), ڽ޸ĳ
255 ֽڵĽ
355.2) compile: StdAfx.h  #include <limit.h> Ϊͨõϵͳͷ

354) 2010.9.19
354.1) bugfix: acl_vstream.c, acl_vstream_gets_nonl() û
ACL_VSTREAM_FLAG_TAGYES / ACL_VSTREAM_FLAG_TAGNO ־λ

353) 2010.9.16
353.1) bugfix: acl_debug.c  acl_debug_end() ڳʱ
ͷڲڴ
353.2) acl_mystring.h:  strcasecmp ȺĲ궨

352) 2010.8.4
352.1) compile: ޸ AS3, AS4 ϵı

351) 2010.7.21
351.1) bugfix: acl_token_tree.c, acl_token_tree_create()  485 
 argv ڴûбͷ

350) 2010.7.11
350.1) xml: acl_xml_parse.c xml_parse_left_tag() ޸, Ըõ֧
<br/>  <br /> ʽ

349) 2010.6.9
349.1) ֧ gcc Ԥ뷽ʽ, ʹٶȴԼһ

348) 2010.6.8
348.1) ֧ vc2003 Ԥ뷽ʽʹٶȴ

347) 2010.6.27-7.6
347.1) feature:  xml Ŀ¼, ڽ xml  html ļ, ý
"״̬"ʽ, 򲿷ֽ, Ӷ֧ʽ
ʽͨѶ; ͬʱÿ⻹ṩ javascript ļ򵥲ѯ.
ע: Ŀǰÿ⻹ڵ֪:
a)  doctype ֲ֧
b)  xml ʼʱݽҪӸ๦

347.2) bugfix: acl_vstream.c 340 е snprintf ʱ ebuf δ
ʼ, ҿ valgrind ˴

347.3) acl_ring.c: acl_ring_detach , ԭὫĳ ring->succ 
ring->pred  NULL, ޸Ϊ acl_ring_init ֮һΪ, 
 ring->succ, ring->pred, ring->parent ΪԼ, ͬʱ ring->len  0

346) 2010.6.13
346.1) feature: code/acl_gbcode.c,  acl_gb2312_to_utf8()/4 
acl_utf8_to_gb2312()/4 , ַת

345) 2010.6.8
345.1) feature: acl_vstream.c, acl_vstream_unread ݳԶ
·ռԱ֤ܹȫŻ; acl_vstream_ungetc ͨڲ
 acl_vstream_unread ֤ݿ϶ܱд

344) 2010.5.6
344.1) feature: acl_vstream.c,  acl_vstream_unread ӶԷ
Ѿ·Ż

343) 2010.4.17
343.1) bugfix: events_poll.c/events_select_thr.c/events_poll_thr.c 
 342.1 ʾ⣬ͳһ޸

342) 2010.4.11
342.1) bugfix: events_select.c, event_loop() е event_prepare()  0
 eventp->fdcnt_ready > 0 ʱΪ goto TAG_DONE ֱ  for
ѭУ xmask/rmask/wmask δʼ޷Ԥ֪⣬
 goto TAG_DONE ǰĸֱʼ nready/xmask/rmask/wmask,
δʼѲ񣬿Ϊ goto Եʣ goto
ȷʵӦΪ:)

341) 2010.3.31
341.1) bugfix: events_epoll.h/events_kernel.c,  Linux £epoll
 EPOLL_CTL_DEL ʹ

340) 2010.3.24
340.1) feature: acl_htable.c,  ACL_HTABLE_FLAG_MSLOOK ־λ
ûͨ acl_htable_create ϣʱ򿪴˱־λ
вѯʱԶѯĽλ÷ȴλ
340.2)  acl_init.c WIN32ƽ̨µ ws2_32.lib 
wsock32.lib ֱãӶӦã

339) 2010.3.6--2010.3.17
339.1) feature: WIN32ƽ̨£event ¼ģ֧ iocp ӿڷʽ,
 ACL ¼ģ֧֡WIN32(vc2003)/LINUX/BSD/SOLARIS
ĸƽ̨µں˼߼IOʽ
339.2) samples:  http_aio 

338) 2010.3.5
338.1) bugfix: acl_dbpool_mysql.c->__dbpool_mysql_destroy() һڴ
й¶(acl_array_destroy(mysql_pool->handles, NULL))˴
ջԷ
338.2) acl_dns.c:  jaws  mod_http.so ģ飬ΪǶ̬أ
Ե dns_lookup_timeout() ַ jaws к mod_http.so ǲһ
ģ acl_dns.c ͨ acl_aio_cancel_timer() ȡʱʱ
޷ȡʱ԰ dns_lookup_timeout() ĵֱַӸ
ACL_DNS.lookup_timeout ͱ֤ mod_http.so пռ
 acl_aio_request_timer еĲַ֮ jaws пռڵ
acl_aio_cancel_timer еĲַ֮һµ

337) 2010.3.2
337.1) bugfix: events_kernel.c/events_kernel2.c/events_kernel3.c ĺ
event_loop()  EVENT_TEST_ERROR 룬ֳʱ
epoll/devpoll Щֵĳ״̬μÿԴ

336) 2010.2.23-2.24
336.1) performance: events_kernel.c һŻ˴: ڳʱ
ÿһȫɨķʽ; /дӷһУ
ǰһȫ(÷ʽʱӱȽ϶ʱÿ
¼ѭҪȫɨ飬鿴ЩҪ)
336.2) Ȼԭ events_kernel.cֻΪ events_kernel2.c,
events_kernel3.cԱ(˭֪Щأ)

335) 2010.2.11
335.1) acl_aio_read.c: acl_aio_enable_read() жϻֱӻص
ûĻص

334) 2010.2.9
334.1) bugfix: acl_dns.c, acl_add_dns_host() ڲӾ̬IPбʱ
д

333) 2010.2.8
333.1) feature: acl_dns.c 鹦

332) 2010.2.5
332.1) events_select.c, events_poll.c:  events_kernel.c еķʽ
д

331) 2010.2.4
331.1) bugfix: events_kernel.c ޸һЩBUGS, رʱɾ
ص
331.2) feature: acl_vstream.c  acl_vstream_call_close_handles()/1
ǰùرջصҪ events_kernels.c

330) 2010.1.25 -- 2010.2.3
330.1) event/: ֧ epoll/kqueue/devpoll ΪЧ¼棬
ԭ event_kernel.c Ϊ event_kernel2.c, µ¼Ϊ
event_kernel.c
330.2) bugfix: acl_access.c/acl_access_permit() ĵַΪ
IP:PORT/IP ʽ
330.3) acl_vstream.c: acl_vstream_close()  event_kernel.c 
֧ӳٹرչ
330.4) aio/: acl_aio.c, aio_callback.c һЩ֧
ACL_ASTREAM.stream ӳٹر; aio_callback.c һرջص
-1 ֹͣһرջص

329) 2010.1.24
329.1) aio/: acl_aio_disable_readwrite, acl_aio_disable_read,
acl_aio_disable_write һЩж

328) 2010.1.22
328.1) bugfix: acl_vstream.c, acl_vstream_readn_peek() ڲ
328.2) bugfix: acl_aio.c, acl_aio_open() ڶԼöСʱ
Ǵģԭǣif ((stream->type  ACL_VSTREAM_TYPE_LISTEN))
Ӧ if ((stream->type & ACL_VSTREAM_TYPE_LISTEN))ͬʱ
stream->read_buf ǿʱstream->read_buf_len ǲܱ޸ĵ

327) 2010.1.19
327.1) acl_pthread.h: ACL_PTHREAD_ONCE_INIT  solaris ҪΪ
{ PTHREAD_ONCE_INIT }, ֻſ solaris ʹ:
static acl_pthread_once_t once_control = ACL_PTHREAD_ONCE_INIT;
327.2) ƽ̨ϱͨ

326) 2010.1.18
326.1) acl_dns.c: ˻湦(ʹ acl_cache2.c еĺӿ)

325) 2010.1.17
325.1) acl_cache2.c: һЩܲ޸һЩ bugs
325.2) samples: cache2/

324) 2010.1.16
324.1)  acl_idns.c Ϊ acl_dns.c, acl_idns.h Ϊ acl_dns.h, 
ACL_DNS_EVENT Ϊ ACL_DNS_REQ
324.2)  acl_cache2.c ģ, úڲùϣƽ
ʽṩ acl_cahce.c (ùϣ˫Ϸʽ) Ч
ƻ

323) 2010.1.15
323.1) feature: acl_idns.c, 첽DNSѯܼعܺ; ú
֧DNSѯĶ̬ƽ⹦ܼDNSַЧУ
323.2) bugfix: rfc1035.c(squidԴ) ڲһܷڴй¶

323.3) samples: idns/ ʹDNS첽ѯDNS

322) 2010.1.14
322.1) acl_aio_connect.c: ˲߼ִ˳
322.2) master/template/: ģʹõ argv ޸ΪСд

321) 2010.1.13
321.1) bugfix: aio_callback.c, ڵùرջصʱֻҪһص
 -1 ӦֹͣʣĹرջص

320) 2010.1.7
320.1) bugfix: acl_pthread.c, ֲ߳̾洢ʽڴʱ,
Ϊڲõ˵㷨к acl_myxxx ڴ䷽ʽ
320.2) feature: private_fifo.c Ϊֲ߳̾ڴ˼ӿ
320.3) acl_vstream_popen.h: Ϊ win32 ƽ̨Զ̬طʽʹЩ
ӿڣǰ˵뵼־ ACL_API
320.4) win32 빤
320.5) acl_aio_listen.c: شʱԭֱ fatal, 
˯ 1 Ȼ

319) 2010.1.6
319.1) acl_aio_listen.c: ˳ʾ

318) 2010.1.5
318.1) feature: acl_mem_slice.c  acl_mem_slice_delay_destroy ӿ,
һ߳˳ʱԼڴƬ߳ռʱý˳̲߳
ӲͷűռڴֻͷŷռڴƬͬʱʣ౻ռڴƬһ
ȫֵĴͷڣ̵̻߳߳ acl_mem_slice_delay_destroy


317) 2010.1.4
317.1) bugfix:
acl_aio_read.c/acl_aio_write.c/acl_aio_connect.c/aio_callback.c, 
صľʱпܻΪݹǶ׶ɻصظã
ÿҪصʱ½صзʽⷢ

316) 2010.1.2
316.1) acl_aio.c: ˺ӿע; ޸˲ֽӿƣʹ֮׶
316.2) acl_aio.c:  acl_aio_enable_write ӿ

315) 2010.1.1
315.1) acl_aio.c: ޶ϴ޸ʱ acl_aio_read.c ӵһBUG
315.2) acl_aio.c:  acl_aio_enable_read 

314) 2009.12.31
314.1) acl_aio.c: һЩӿڣ˳
314.2) acl_array.c:  acl_array_clean/acl_array_destroy ڲиĶ

313) 2009.12.25
313.1) bugfix: acl_vstream.c ԷʽӦֳó

312) 2009.12.23
312.1) feature: acl_mem_slice.c Զڴջƣ
ﵽ涨ֵʱԶ(עҪ߳
ͷű̷߳ڴԴ)
312.2) compile: BSD ƽ̨ͨ

311) 2009.12.19-12.20
311.1) performance&feature: ֲ߳̾ڴͷź
ӿڣڶ߳̽ڴʱĳͻͣӶ˶߳
ڴ
311.2) acl_aio_server.c/acl_aio_app_main.c: ΪЧʣӿ

310) 2009.12.18
310.1) feature: acl_slice.c  acl_slice_pool_xxx ϵй

309) 2009.12.17
309.1) feature&performance:  acl_mem_slice.c, ӶԸЧڴ
Ƭͷڴ

308) 2009.12.16
308.1) performance: acl_vstream.c е __bfread_cnt_ready  __bfread_ready
ݿԭֽڿΪ鿽ЧʴߣܴӰ acl_aio_read()
 acl_aio_readn() Ҳ

307) 2009.12.12
307.1) bugfix: acl_sys_file.c е acl_file_fsize()/1  win32 ƽ̨,
ΪҪ64λļϵͳе nHigh << 32  nHigh Ϊ DWORD
ܲ32λ

306) 2009.12.10-12.11
306.1) feature: acl_pthread.c  acl_pthread_tls_get/acl_pthread_tls_set,
Ըزֲ߳̾, acl_pthread_tls_set_max/acl_pthread_tls_get_max,
/ acl_pthread_tls_get/acl_pthread_tls_set õֲ߳̾ļ
ֵΪϵͳֲ߳̾ӦļƣԿʹЩ
ͻЩ
306.2) acl ڲȥ __thread ʽʹֲ߳̾ķʽΪ
ʹ÷ʽڵӦö̬ acl ̬ʱᷢȷΪӦǾ̬ acl
̬ acl ̬򲻻⣩; ĿǰмԴļﻹ __thread
ʹ: zdb_dat_iter.c, zdb_key.c, acl_aio_app_main.c, acl_aio_server.c,
acl_ioctl_app_main.c, rfc1035.c, acl_meter_time.c, gettimeofday.c, Ӧʹ
ЩԴļĺʱһעⲻҪԶ̬ acl ̬ⷽʽʹ֮

305) 2009.12.9
305.1) feature: acl_pthread.c,  acl_pthread_tls_get, acl_pthread_tls_set
ӿڣͬʱ win32 ƽ̨µ acl_pthread_key_create, acl_pthread_getspecific,
acl_pthread_setspecific ӿڣ÷ʽ UNIX µ pthread_key_create,
pthread_getspecific, pthread_setspecific ͬ, Ϊ˱֤ƽ̨ʹ
acl_xxx ʽʹЩӿ

304) 2009.12.7-12.8
304.1) feature: acl_dll.c, ڶ̬ļ
304.2) bugifx: acl_netdb.c, acl_res.c res_util.c ڲõ inet_ntoa,
ú̷߳ǰȫ, ͳһ acl_inet_ntoa

303) 2009.12.6
303.1) acl_fifo.c: Щʵֵе

302) 2009.12.3
302.1) bugfix: acl_vstring_sprintf(), е fmt 64λʽַ(: llu)
VC6ʱȷʶ, ƽ̨: UNIXƽ̨ llu/lld,
WIN32ƽ̨ I64u/I64d. ûʹ acl_vstring_sprintf() ʱֻҪ
ʹͳһ llu/lld 
302.2) feature: acl_getenv_list() Իñ̵Ļ(ַ
ʾ, : name1=value1, name2=value2, name3=value3)

301) 2009.11.30--12.2
301.1) feature: acl_vstream_popen.c ͬʱ֧UNIXWIN32ƽ̨
301.2) feature: acl_env.c ͬʱ֧UNIXWIN32ƽ̨

300) 2009.11.27
300.1) feature: acl_sane_inet.c,  acl_ipv4_addr_valid()/1,
acl_ipv4_valid()/1 , ñжַǷЧ
300.2) acl_aio_connect.c: ˶ַЧԽжϹ

299) 2009.11.25
299.1) bugfix: acl_aio.c, acl_aio_iocp_close()/1  astream->stream = NULL ʱ,
Ӧ ACL_AIO_FLAG_IOCP_CLOSE ־λ, ڴй¶

298) 2009.11.24
298.1) acl_sane_socket.c:  acl_getsockname/acl_getpeername ȡõַʱ˿
Ҳӽȥ

297) 2009.11.23
297) ACL_ITER: ͨñĽӿڷ͵ const ޶ȡӶ
ӦòصĶ
297.2) acl_fifo.c:  acl_fifo_push()/2 ´ĶԪض, 
沢ö

296) 2009.11.22
296.1) bugfix: strcasestr.c, acl_strcasestr()/2 д bug
296.2) feature: acl_inet_listen.c, acl_inet_accept_ex д洢ͻ˵ַڴ
ipbuf ԭ洢 IP ַڿͬʱ洢˿ںˣ ipbuf 
洢: ip:port, : 192.168.0.1:80

295) 2009.11.20
295.1)  acl_dll.h ͷļ dll ֮䴫ݻ
295.2) acl_debug_malloc.c: һ½ӿڵ
295.3) bugfix: acl_aio_read.c, acl_aio_write.c,
READ_IOCP_CLOSE/WRITE_IOCP_CLOSE Ӧӱ־λ ACL_AIO_FLAG_IOCP_CLOSE

294) 2009.11.19
294.1) bugfix: acl_inet_listen.c ʧʱһڴй¶
294.2) bugfix: events_select_thr.c, event_enable_listen() ڲظʹ
ʱΪûظ ACL_VSTREAM.fdp, ÿ event_enable_listen() 
һξͻһ event_fdtable_alloc(), Ӷڴй¶.  bug Ӱ쵽
acl_ioctl.c, acl_ioctl_server.c ʹڴй¶. ϰ汾 acl  acl_master
µĶ߳ģܵӰ죬ķжµ acl 
򣬻ļе ioctl_event_mode ѡΪ poll/kernel ʽΪ
ֻӰ select ̷߳ʽ.

293) 2009.11.16-18
293.1) acl_msgio: Ʋ޸һЩ
293.2) bugfix: master/template/ Ŀ¼£acl_aio_server.c, aio_msg.c һЩ
Ϣݵ bug

292) 2009.11.15
292.1) ACL_VSTREAM  pid_t pid Ա

291) 2009.11.13
291.1) compile:  Debian Linux ƽ̨±ͨ

290) 2009.11.12
290.1) samples: win32 -- code_map, Ҫڲַӳ
290.2) samples: win32 -- connect, 첽Ӿ
290.3) acl_aio: һЩʹýӿڣͬʱ ACL_ITER 룬ʹ
Ϊ

289) 2009.11.10
289.1) feature: acl_file  acl_fprintf, acl_vfprintf
289.2) feature: code/ GBKַڲļת: acl_gbcode
289.3) samples: jt2ft ڲԼת

288) 2009.10.26
288.1) feature: acl_vstring  acl_buffer_gets_nonl()/3,
acl_buffer_gets()/3; stdlib/common/  acl_token_tree ģ
288.2) compile:  LINUX/FREEBSD/SOLARIS/WIN32 ƽ̨ͨ

287) 2009.10.20
287.1) bugfix: acl_bits_map.h е nmax Ϊ (unsigned int) -1 ʱõ
(mask)->data_len = 0, Ϊڼ㳤ʱ; acl_bits_map.h
עͲ̫ȷ
287.2) compile:  FreeBSD, Solaris, Windows ϱͨһЩֲ

286) 2009.10.18
286.1) bugfix: ACL_CFG_INT64_TABLE.*target ӦΪ acl_int64 Ͷ int 
286.2) compile: VC붯̬ʱlib_acl Ҫ IPHlpApi.Lib

285) 2009.9.30
285.1) feature: acl_xinetd_params.c/acl_xinetd_params.h, acl_master 
 acl_int64 ͵֧
285.2) bugfix: zdb/zdb_private.h,  KEY_INODE, KEY_OFF 

284) 2009.9.29
284.1) bugfix: acl_fhandle.c, ʹ߳ʱ⣬Ӧ
acl_thread_mutex_lock/acl_thread_mutex_unlock,
acl_pthread_mutex_lock/acl_pthread_mutex_unlock ʹãһЩطڻ
284.2) zdb: zdb.h 洢ṹ涨Ϊ4ֽڶ
284.3) acl_cache.c: ݴʱʱΪ0

283) 2009.9.27
283.1) bugfix: acl_non_blocking() ڲBSDƽ̨¿ܻ

282) 2009.9.25
282.1) zdb: Ϊ˱֤ zdb ݽṹ32λ64λϿֲ, ʹ
洢ṹ8ֽڶ룬Ӧòʽ֤
282.2) acl_slice: Ż SLICE2 ʽͷٶ

281) 2009.9.24
281.1) bugfix: acl_slice.c е ACL_SLICE_FLAG_GC2 㷨 BUG, ڴָԽ

280) 2009.9.23
280.1) feature: zdb_key.c,  zdb_key_init()/3 ӿڣʹӦԤȳʼ洢
280.2)  win32 ƽ̨µ BDB, OPENSSL ȥ

279) 2009.9.21
279.1) feature: db/zdb, ģһǳЧּ洢ϵͳ
279.2) bugfix: stdlib/sys/acl_sys_file.c, acl_file_fsize()/1 win32ƽ̨һ

278) 2009.9.20
278.1) feature: net/acl_ifconf.c, ԻUNIX/WIN32Ϣ

277) 2009.9.15
277.1) bugfix: acl_cache.c, acl_cache_free()/1 ͷŻʱü
 0 ޷ͷŶѭȡķǿƽü 0
277.2) feature: acl_vbuf_print.c, ֧ "%lld" ʽӶ acl_vstring.c Ҳ֧
"%lld" ʽ

276) 2009.9.11
276.1) feature: event/acl_timer.c ֧ͨõ ACL_ITER 
276.2) feature: ACL_ITER ֧ acl_iter_info()/2 ȡĳԱ

275) 2009.9.10
275.1) feature: ACL_DNS_DB ṹ˶ ACL_ITER ֧
275.2) acl_fhandle.c: acl_fhandle_init()/3  acl_fhandle_end() 
жϣֹ

274) 2009.9.9
274.1) comment: һЩע
274.2) acl_mask_addr.c: ˵Ԫ, unit_test/net/test_net_misc.c

273) 2009.9.8
273) feature: db/acl_dbsql.c, db/mysql/acl_dbmysql.c 
acl_dbmysql_select()/3, acl_dbmysql_free_result()/1, db/acl_dbpool.h 
 ACL_SQL_RES ṹʹͨõ ACL_ITER Բѯб

272) 2009.9.7
272.1) acl_iterator.h: ACL_ITER ṹһԱ dlen, ʹ߿
ôֵݴС

271) 2009.9.5
271.1) acl_iterator.h: ȥ ACL_ITER е iter_init()/2, ڸ
 iter_head()/2, iter_next()/2, iter_tail()/2, iter_prev()/2 ĸԱ
ֱۣûЩǲ֧ͨõı; 
ֻҪ iter_head()/2, iter_next()/2 ֧, 
iter_tail()/2, iter_prev()/2 ֧ǰͨ

270) 2009.9.1
270.1) bugfix: acl_fhandle.c  acl_fhandle_open ʧڼ¼Ϣʱ
һյַ
270.2) bugfix: acl_fseek()/3 û acl_file.h ͷļ

269) 2009.8.31
269.1) feature: acl_file.c,  acl_fseek()/3 ӿ

268) 2009.8.30
268.1) feature: stdlib/acl_file.c, רļĶд, ṩ
ANSI ׼ƵĽӿ

267) 2009.8.29
267.1)  ACL_ASTREAM ͶڲƳ acl_aio.h ͷļ, Ϊ
ʱҪһЩشͶ壬ƱػҪʵһЩ
Щʵ鷳ԽýṹĶ幫ӶЩķʣ
ṩ˷ʺ黹úʽϺãýýṹ巢仯

266) 2009.8.28
266.1) feature: acl_iterator.h, ж˸Ϊͨõĵʽ, 
stdlib/common/ ݽṹԷǳ򵥵ķʽôͨõ

266.2) sample: iterator/, ˺ܶʹõб

265) 2009.8.27
265.1) feature: acl_fhandle.c, acl_fhandle_open()/6 еĲ oflags һ־λ
ACL_FHANDLE_O_MKDIR ȷǷԶ鲢ڵĿ¼øñ־λ
һδļʱĿ¼ʱЩҪܽ
265.2) acl_htable/acl_binhash: ڱУɵ foreach() һ⣺ѭ
Ҫ break 򲻻˳ѭ, ԭǾɵ foreach() Ƕ for() ѭ
޸ acl_xxx_iter_head/acl_xxx_iter_next/acl_xxx_iter_tail/acl_xxx_iter_prev
 foreach() ͽǶһ for() ѭʹ߱ڱ break ѭ

264) 2009.8.26
264.1) bugfix: acl_fhandle.c, acl_fhandle_end() ڹرļǰӦ
صӦõĹرջص
264.2) acl_cache.c: ڵ acl_cache_create() ʱ free_fn صΪ,
ֻǸһʾʹ free_fn Ϊ
264.3) feature: acl_fhandle.c, acl_fhandle_init() һʹڲǷ;
ͬʱ acl_fhandle_open()  oflags ҲһǷ߳ı־λ ACL_FHANDLE_O_MLOCK

263) 2009.8.24
263.1) acl_lseek: ֧ Linux/Solaris ƽ̨µ64λ
263.2) bugfix: acl_fhandle.c ڼ¼־ʱһ

262) 2009.8.23
262.1) acl_mystring.c: acl_ui64toa_radix() ûWIN32Ķ
262.2) db/memdb: һЩڴЧʹõĵط

261) 2009.8.20
261.1) acl_slice: ޸˼ bug; acl_slice_free()/1 ֧ ACL_SLICE_FLAG_GC2,
ACL_SLICE_FLAG_GC3 ڴֱͷ,  acl_slice_free2()/2 ֧ͷŲ

260) 2009.8.19
260.1) bugfix: acl_slice ȥ ACL_SLICE_FLAG_GC_TIME2 㷨㷨ȱݵ

259) 2009.8.17--8.18
259.1) feature: stdlib/memory/acl_slice.c: һ ACL_SLICE_FLAG_LP64_ALIGN,
һЩӦ64λ½ֽڶ;
259.2) һĽĵط: acl_slice.c е ACL_SLICE_FLAG_MIN_TIME3 ڴʡ
ĸĽռ, Ҫ64λƽ̨Ͻռ8ֽڵָתΪռ4ֽڵ
10240000 ʱֿԽʡ39MB

258) 2009.8.12
258.1) feature: stdlib/memory/acl_slice.c: һµڴƬ㷨㷨
ЧʸߣͬʱڴռøС
258.2) feature: acl_mystring.c  acl_i64toa_radix()/4, acl_ui64toa_radix()/4 ,
תʱָͣLINUX²ԷִЧʻ snprintf
תʱ:)
258.3) stdlib/ Ŀ¼ڴйصԴļ stdlib/memory/ Ŀ¼

257) 2009.8.10
257.1) feature: stdlib/acl_fhandle.c, Ի򿪵ļ

256) 2009.8.7
256.1) bugfix: acl_vstream.c, Ϊ ACL_VSTREAM.path Ϊ
ACL_VSTREAM.remote_addr һãӶ acl_vstream_free()/1 ڲͷ
path ڽ ACL_VSTREAM.path Ϊ const char*, ԱǷͷ, 
bug Ӱʹ acl_vstream_free()/1 ĵط
: acl_master/framework/master_spawn.c: acl_master_spawn()->acl_vstream_free()/1,

255) 2009.8.6
255.1) acl_ring, acl_htable, acl_binhash, acl_fifo: ͳһ˱ķʷʽ,
ʹ̸ӼЧ
255.2) acl_ring: ȥûõظĺ

254) 2009.8.3
254.1) stdlib: acl_htable/acl_binhash/acl_fifo/acl_ring, ͳһ˱ʽ

253) 2009.7.31
253.1) stdlib: acl_htable.c, acl_binhash.c, acl_cache.c, acl_btree.c ڲ
 acl_slice_xxx 
253.2) private: ȥ htable.c, binhash.c
253.3) db/memdb: ʹ˽е htable.c, binhash.c, Ϊ acl_htable.c,
acl_binhash.c Ҳ֧ڴƬ,  memdb/ µĺֱʹù acl_htable.c,
acl_binhash.c.
253.4) ޸µ acl_htable.c ṩĽӿڲһµĵط

252) 2009.7.28
252.1) stdlib/acl_slice: һڴ㷨㷨ʵʱ
ЧʸߣҲð㷨Ӷʹõڴܹ챻գΨһȱ
΢һڴ棬Щ΢:)

251) 2009.7.26
251.1) private: ӸģҪΪ lib_acl ڲõһЩ
251.2)  stdlib/debug/ µ debug_htable.c ĺṹǰ
ǰ׺ӶVCµı뾯
251.3)  VC6 ±ͨ

250) 2009.7.24
250.1) stdlib/acl_slice: ޸еBUG:)
Ϊ˱֤ acl_slice ͨԣΪ˱֤64λ AVL ʹ acl_slice
ʱᱨ, ڲڴƬṹ
250.2) lib_acl Ѿ Redhat AS4/AS5(32/64), FreeBSD, VC2003/VC2008 ϱ벢ͨ

249) 2009.7.22
249.1) stdlib/acl_slice: ԽڴƬĹúڴ̶ȵڴ
ķͷʱǳЧҲڴƬ

248) 2009.7.18
248.1) db/memdb: ½ƣһĿܣĿǰڸÿõ
㷨Уַϣƹϣƽȶ(SUNavl)
248.2) samples/memdb:  valgrind ԣڴ©

247) 2009.7.3
247.1) acl_vstream: ACL_VSTREAM ṹȥ˶ rw_arg, ͬʱ
ACL_VSTREAM_CTL_RW_ARG ɾ,  ACL_VSTREAM_CTL_CACHE_SEEK ԭ 8 Ϊ 7,
 ACL_VSTREAM_CTL_CONTEXT ͬ ACL_VSTREAM_CTL_CTX; acl_vstream.c
 rw_arg Ĳ޸Ϊ context.

246) 2009.6.30
246.1) aio/, ioctl/, master/template/:  ACL_EVENT ĺӿ
246.2) master/template/: ģн¼λ÷ pre_init()
ǰ, Ӷⲿû ACL_EVENT 

245) 2009.6.27
245.1) acl_vstream: IO ˸ timeout ʱ

244) 2009.6.26
244.1) acl_vstream.c: ˼ʹõĺ, ͬʱдǻд

243) 2009.6.23
243.1) bugfix: acl_ioctl_app_main.c, acl_aio_app_main.c е
__deny_info ûȸʼֵᵼ coredump
243.2) ȥ acl_define_unix.h, acl_define_linux.h ͷ
ļ, Ӧÿʱͻ, : pthread_spinlock_t ҪͱȽϸ
243.3) performance: 
a) linux ƽ̨:
߳ʱ pthread_spinlock_t ļٶȴԼ pthread_mutex_t 2;
˫߳ʱ pthread_spinlock_t ļٶȴԼ 2-3
b) FreeBsd ƽ̨:
˫߳ʱ pthread_spinlock_t ļٶȴԼ 7-8

242) 2009.6.22
242.1) feature: һͷŵڴغ acl_dbuf_pool.c
242.2) feature: acl_pthread_mutex.c, ߳Ƕ׼ĺ
acl_thread_mutex_lock()/1, acl_thread_mutex_unlock()/2,
acl_thread_mutex_nested()/1, ĳ̶߳ĳһ߳
μʱأֹ
242.3) feature: src/master/template,  acl_ioctl_app_main.c,
acl_aio_app_main.c, ԸΪʹ÷

241) 2009.6.19
241.1) samples/cache/main.c:  bsd о

240) 2009.6.16
240.1)  gc Ĳ
240.2) ַȽϺ: strrncasecmp()/3, strrncmp()/3

239) 2009.5.12
239.1) bugfix: stdlib/common/acl_array.c, acl_array_clean()/2 ̬
Ϊʱͷʱڴָ뱻

238) 2009.4.28
238.1) feature: stdlib/common/acl_cache.c, ˾Ƽڹ
Ļغ;
238.2) samples: samples/cache/ һԻص

237) 2009.4.23
237.1) feature: acl_ring.h  ACL_RING_FIRST()/1, ACL_RING_LAST()/1,
ACL_RING_LAST_APPL()/3 õĺ; ͬʱ ACL_FIRST_APPL()/3 Ϊ
ACL_RING_FIRST_APPL()/3
237.2) feature: acl_xinetd_params.c е
acl_xinetd_params_int_table()/2, acl_xinetd_params_bool_table()/2,
acl_xinetd_params_str_table()/2 е cfg Ϊգ
½ĬֵиֵӶڵԹ

236) 2009.4.21
236.1) feature: acl_timer.c  acl_timer_walk()/3, Ӷʱ
жʱϢͬʱ ACL_TIMER_INFO ṹ acl_timer.h ļ
226.2) bugfix: acl_timer.c е acl_timer_free()/1 ڴй¶⣬ڸ
Ϊ acl_timer_free()/2, ûԼĻصûݶͷ
226.3) feature: acl_timer.c  acl_timer_size()/1 Իöʱ
ʱ

235) 2009.4.20
235.1) bugfix: win32 ƽ̨µ acl_pthread_cond_timedwait()/3 ʵִ
Posix 岻⣬еĵ: ʱֵӦǾʱ
ʱ䡣صļ޸: acl_pthread_cond.c, acl_pthread_pool.c, acl_aqueue.c
acl_workq.cBUGɻȷ֡

234) 2009.4.19
234.1) bugfix: getimeofday()/2, úģWIN32ƽ̨»þȷʱĹܣ
ΪڲʱӼģʱϳʱʱӼΪ㣬
ͻʱСʵʱصΣÿ1³ʼʱ
У׼Ḷ́ͲʱӼɵ

233) 2009.4.14
233.1) feature: ˻ýʱȫ··ĺ:
acl_process_path(), acl_getcwd(), ֧: win32, Linux/FreeBsd/Solaris
233.2) samples: process/ ӵ
233.3)  stdlib/ Ŀ¼ sys/ Ŀ¼һЩϵͳصĳĿ¼
233.4) acl_argv_split.c:   acl_argv_splitn()/3, acl_argv_splitn_append()/4


232) 2009.4.9
232.1) acl_sys_patch.c: ԭ win32 ƽ̨µ gettimeofday()/2 ʵֽ
win32 API "GetSystemTimeAsFileTime" API ľȲϸʵ
win32 ƽ̨µ gettimeofday ĺͨ GetSystemTimeAsFileTime ϵͳ
ʱӣʹ gettimeofday õʱȸϸ

231) 2009.4.7
231.1) events:  event_prepare()/1, event_fire()/1,
event_thr_prepare()/1, event_thr_fire()/1 ĸɸ¼ͬĲ
.

230) 2009.4.3
230.1) bugfix: ACL_VSTREAM ṹеַռӦΪ unsigned char*,
ԭΪ char*, ĳЩᵼʹøýṹһЩ, :
ACL_VSTREAM_GETC/acl_vstream_getc, ʹʱԷֵΪ ACL_VSTREAM_EOF
ʾͬʱֵΪֵַ ACL_VSTREAM->read_buf,
read_ptr ԭ(char*) Դк (char) -1, 
int  ch = ACL_VSTREAM_GETC(stream)/int ch = acl_vstream_getc(stream) 
 ch = -1 ( char Ϊ int ȻΪ -1), Դ (char)-1 ʵΪ
(unsigned char) 255, Ϊ int ȻΪ 255.
230.2) aio: һЩ̫Ķ壬޸

229) 2009.4.2
229.1) acl_set_error()/1: WIN32ƽ̨ϣAPIĴţͬʱ׼C
 errno 
229.2) bugfix: acl_vstring_strstr/acl_vstring_strcasestr/strcasestr һ
Եbug, ĳ²鲻;
229.3) feature:  acl_vstring_rstrstr/acl_vstring_rstrcasestr,
acl_rstrstr/acl_rstrcasestr ַԷشӺǰַ

228) 2009.4.1
228.1) net/connect/acl_timed_connect.c: ޸һСbug, ûгʼ err
228.2) net/connect: getsockopt ڲͬƽ̨вͬ壬Եڴ
ʱȽ鷳Щ Solaris ϣһ getsockopt ʱóֵ
ͨȫֵ errno ׽ֵ״̬;  Linux ϣڷʱerrno
ȴΪ EINPROGRESS, Ҫͨ getsockopt еóֵж;  win32ƽ̨
£ӱһڵļ˿ʱȴ޷̽ʧܵΣ
getsockopt ĳΪ0, ҽȫֵĴ0.  Ϊ˽Щƽ̨죬Ҫ
һ connect ֮ errno ţͬʱ getsockopt Ĵţж.

227) 2009.3.30
227.1) event: ˶ poll ֧
227.2) aio: ޸˲ֽӿ
227.3) net/connect: ޸˲BUG

226) 2009.3.11
226.1) acl_vstream_accept_ex()/4: һBUG׽Ӧȡ stream->type
226.2) samples: msg/, ˲TCP׽ӿڡUNIX׽ӿڡܵ첽
ӣ Linux ƽ̨ UNIX׽ӿ߳첽ܶǲģ֮ܵ
TCP׽ӿ 226.3) samples: dns/, DNSԵ;  FreeBSD ԹУ
߳ 첽гؿ죬IOܵ3-4;  Solaris10-x86ƽ̨£
߳첽еҲIOܵ1.5ҡ Linux ƽ̨µ̻߳д:)

225) 2009.3.10
225.1) event: kqueue ܲ; ޸ events_kernel.c еļ bug
225.2) samples/aio: ˸Linux/Solaris/FreeBSD ƽ̨״̬

224) 2009.3.9
224.1) event: ֧ FreeBSD ƽ̨µ kqueue
224.2) samepls/aio: йAIO

223) 2009.3.6
223.1) feature: acl_vstream.c, acl_vstream_fopen()/4 WIN32ƽ̨
ļʱԶ oflags  O_BINARY ־
223.2) feature: acl_vstream.c,  acl_vstream_fstat()/2 
acl_vstream_fsize()/1 ԷļϢļС
223.3) feature: acl_msg.c,  acl_last_serror()/0 Ըػ
ʾϢͬʱúڲֲ̰߳̾߳ȫ
223.4) feature: acl_vstream.c,  acl_vstream_fsync()/1, Խļ
ϵͳеֱͬӲ
223.5) acl_file_fstat()/2: ֧WIN32ƽ̨
223.6)  acl_sys_patch.c Ϊļ: acl_sys_patch.c, acl_sys_file.c
 acl_sys_socket.c
223.7) acl_pthread_pool.c: ظ߳10ʱ豨

222) 2009.3.5
222.1) feature:  acl_file_size()/1, acl_file_fsize()/1 
222.2)  acl_stat_t  typedef ͱ壬Ҫôͣ
ֻҪֱ"acl_stat_t sbuf;" ɣȻҲ:
"struct acl_stat sbuf;"
222.3) featur: acl_vstream_fflush()/1 ļʱԱ֤дӲ̣
WIN32ƽ̨ΪҪ

221) 2009.3.4
221.1) event: ֧ Solaris ƽ̨µ /dev/poll

220) 2009.3.3
220.1) event: ޸ events_kernel.c, events_select.c еһbug
220.2) master/template: acl_aio_server.c ģ socket Ľǿ

219) 2009.3.2
219.1) event: һ޸˼BUGݴ

218) 2009.3.1
218.1) event: events_select, events_kernel, ޸˼BUG

217) 2009.2.28
217.1)  epoll, devpoll ֧֣ͬʱ޸ event еһЩBUG

216) 2009.2.17-2009.2.26
216.1)  engine Ŀ¼Ϊ event; д event ¼ѭĵײܣ
һ nginx й¼ķʽ, ͬʱ postfix ԭһ
ʽʹ¼ѭƸɿЧʸߣͬʱչԸ.
(Ŀǰ֧ select ʽܿ콫֧ epoll, poll, kqueue, devpoll)
216.2) aio: ģŻһЩʹõĹ

215) 2009.2.16
215.1) acl_aio_server.c: Żӽ acl_master ֮ͨŻƣ
ͻӷǳƵʱͨ acl_master ֮ͨţ
̵ִЧʣҴ acl_master ͨŸ
215.2) Makefile: ֧ make -j n ʽı(n ʾCPU Makefile
Զʶ𣩣Ӷڶϵͳϴ˱ٶ

214) 2009.2.12
214.1) WIN32ƽ̨½ acl_project/unit_test/ ĵԪԽļ
ԶACLõԪ

213) 2009.2.11
213.1) net/connect/acl_inet_connect: Զ̵ַʱ԰󶨱
ĳĵַڶȽ
213.2) include/master/acl_master_type.h: ACL_CONFIG_INT_TABLE,
ACL_CONFIG_STR_TABLE, ACL_CONFIG_BOOL_TABLE 
stdlib/acl_xinetd_cfg.h еĽṹһ

212) 2009.1.18-2009.1.19
212.1) feature: acl_pthread.c,  acl_pthread_atexit_add()/2,
acl_pthread_atexit_remove()/2 û߳̿ͨ
/ɾֲ߳̾߳˳ʱصûͷֲ߳̾
ĺ
212.2) ޸ thread/ Ŀ¼Դڷ/ͷڴʱõײڴ
(acl_default_xxx), ǸΪͨõڴ acl_myxxx() Ĳʽ
ͬʱ stdlib/ Ŀ¼ local/ ģ飬ACLڲʹ
212.3) samples: thread_pool/ ֲ߳̾ĲԹ

211) 2009.1.13
211.1) acl_myflock: ͳһUNIX/WIN32ƽ̨½ӿڵõķʽ
211.2) proctl: ȥõ lockfile.c, lockfile.h, ޸˵
acl_myflock()/3 Ĳ
211.3) acl_mystring: ޸˼ַ

210) 2009.1.12
210.1) acl_vstream: ͷļ ACL_VSTREAM ṹеĳЩõĳԱ
ȥ
210.2) acl_aio_server, acl_ioctl_server, acl_single_server, acl_multi_server,
⼸ģֹʽԱӦýе

209) 2009.1.10
209.1) acl_vstream: ı acl_vstream_getc()/2 Ϊ acl_vstream_getc()/1,
ͬʱṩЧĺ ACL_VSTREAM_GETC()/1; ṩ˱׼
acl_vstream_printf()/n
209.2) acl_vstring_vstream: Ϊ acl_vstream ЩӿڵĸıӦ޸

208) 2009.1.9
208.1) bugfix: acl_ioctl_server.c, ԭ acl_master ضú, ÷
ģӽҪرռõͬرշʽΪرռ߳
¼ѭ̵߳пռ䲻ͬɳͻڽرĲڶʱ
УΪʱ¼ѭ߳̿ռͬģԲٻ
ͻ
208.2) feature: acl_vstring_vstream.c, ˽ ACL_VSTRING, ACL_VSTREAM
ϵĲ

207) 2009.1.8
207.1) feature: acl_htable ӿ acl_htable_capacity() 
acl_htable_size()
207.2) feature:  Postfix Ĵп readline.c, readline.h,
split_nameval.c  acl УΪ: acl_readline.c, readline.h
acl_split_nameval.c
207.3) acl_vstream: acl_vstream_fopen()/4 Ĳȥһ(rw_timeo),
Ϊ4Ϊļ˵дʱûʲô壻⣬ڴ
changes.txt ĵжںıʶ󽫲 acl_xxxx()/n, n ʾĸ
207.4) vc2003, vc2008 ļ©Դļ:
proctl/lockfile.c, lockfile.h, stdlib/acl_meter_time.c, stdlib/acl_meter_time.h

206) 2009.1.7
206.1) feature:  acl_aio_server, acl_multi_server ģھ
֧ضùܼܣ
206.2) acl_ioctl_server, acl_aio_server, acl_single_server,acl_multi_server
Щģ嶼֧ضܡ;
206.3) acl_ioctl_server, acl_aio_server, acl_multi_server: ʹЩ
ģķӽʱacl_master ʹ
acl_single_server ģķӽʱ, acl_master ޷
ģҪȴӽ˳ acl_master ſ

205) 2009.1.6
205.1) feature: acl_master ֧ӽ̱
205.2) acl_master: ֧ضùܵƣĿǰָ֧ùܵģУ
acl_ioctl_server, acl_single_server ģ壬ģҪٲԲ

204) 2009.1.4
204.1) bugfix: events_proc.c, events_thr.c еĺ event_loop() е
wait_ring, ready_ring Ǿֲ,  acl_event_disable_xxx
ʱ event_fdtable_free,  event_fdtable_free еڵú
acl_ring_detach ʱʱ˸дֲ
event_loop() ѭִʱڴǷ.
204.2) feature: acl_master ֧ļضܣӶ
ʵνĳ:)

203) 2008.12.30
203.1) doc: ͷļ޸˲ doxygen ע͹淶עͷ

202) 2008.12.29
202.1) feature: thread/acl_pthread_pool ˴̳߳صļ򵥺
acl_thread_pool_create
202.2) comment: acl_scan_dir.h ע

201) 2008.12.23
201.1) compile: acl_pthread_xxx  FreeBSD  WIN32 ƽ̨±

200) 2008.12.22
200.1) FreeBSD 6 ϱACL
200.2) bugfix: master/template/acl_ioctl_server.c: ʹ getopt() ǰΪʼ
getopt() еȫֱӶӰ˲, BSDϻᷢ
200.3) compile:  samples/ Ŀ¼µĹļ
200.4)  ACL Ϊ acl_project.2.0.1

199) 2008.12.20-12.21
199.1)  vc2008 ϱͨ
199.2) ֯VC2003ı빤
199.3) ֯VC6ı빤
199.4) һЩͷļע
199.5) thread: ̳߳ģ飬ȡϵ̳߳ģ (acl_workq)

198) 2008.12.12-12.16
198.1) comment: Ϊ doxygen ĵע
198.2) compile:  Redhat AS5 ϱͨ
198.3) acl_socket_init ʼʱUNIXƽ̨Զ signal(SIGPIPE, SIG_IGN)

197) 2008.12.8
197.1) feature: code/acl_urlcode.c,  url 뺯
197.2) samples: samples/urlcode/,  url Ĳ

196) 2008.12.2
196.1) acl_vstream.c: Ϊ˱Ϊ fseek λöɵĸãṩһ
ڿǷҪ fseek λû棬ͨ acl_vstream_ctl()
ñ־λ ACL_VSTREAM_CTL_CACHE_SEEK ﵽĿ.

195) 2008.12.1
195.1) performance: acl_vstream.c, acl_vstream_fseek() һִ
Ч, ֻҪݻڲδƻͿڵ fseek ʱͨƶ
ָλþظûݣӶٵϵͳõ
.

194) 2008.11.30
194.1) performance: acl_vstream.c, acl_vstream_fseek() ͨ
ִЧ
194.2) samples: vstream_fseek/, watchdog/, base64/

193) 2008.11.28
193.1) bugfix: proctl/proctl_service.c, proctl_service_exist()
жϷǷе, ÿWIN32Ч

192) 2008.11.23-11.24
192.1) feature: acl_chunk_chain.c, ļҪʵݿ
ĹܣڲԶݻ塢ȹܣԽתΪ

192.2) samples: chunk_chain, 

191) 2008.11.20
191.1) bugfix: proctl/acl_proctl.c, acl_proctl_child() 
acl_proctl_deamon_init() ڲڴ߳ʱӦ̵߳ĴΪ
detached ״̬Դй©

190) 2008.11.19
190.1) bugfix: proctl/acl_proctl.c, acl_proctl_deamon_init() ڴ
߳ʱûгʼ attr ߳޷
190.2) acl_define_win32.h: ΪӶVC6ļԣ˺ꡰif(_MSC_VER >= 1300)
Ծǲ winsock.h,  winsock2.h

189) 2008.11.18
189.1) feature: stdlib/debug/, ACLڴй©ڴԽķ

189.2) samples: debug_malloc/ ڴ
189.3) bugfix: acl_aio_read.c ԭڵ read_fn() ص strbuf
ǶʱȻܴڸûڵݱظõΣ
ڲõĲȡ strbuf ĻַݳȣȻ󽫸 strbuf
λ(ƻ)Ȼٵ read_fn() ԤȡõĻַ
ݳȴݽȥӶ׵رڵ read_fn() ڲĶεݹ
Ƕ׹̵ strbuf ݱظ

188) 2008.11.17
188.1) feature:  acl_mem_hook.c ӿڣʹ߿עԼڴ
ͷź

187) 2008.11.14
187.1) bugfix: acl_vstream.c, е __vstream_sys_readn() Ķʱ
WIN32ƽ̨Ǳ undef رյģWIN32ĳʱãڽWIN32ƽ̨
µĶʱܴ
187.2) feature: net/acl_tcp_ctl.c,  acl_tcp_so_linger() װû
ͨ˺õ׽ӿڹرʱǷص TIME_WAIT ״̬ĳ֣
Ե׽ӿƵش򿪹رʱЧؽԼTCPĶ˿ںţҲܲһ


186) 2008.11.13
186.1) thread/acl_pthread.c: WIN32ƽ̨£ûеacl_pthread_init()ʱ
ڲڴ߳ʱCREATE_SUSPENDEDĴģʽڴ߳бҪĳʼ
ɺResumeThread()´̣߳ӶԱ֤ʹûûе
acl_pthread_init()ǰȻ̵֤߳۰ȫԣûԤȵ
acl_pthread_init()ڲͨ߳ķʽⴴ߳ʱϵ
ȫ⡣

185) 2008.11.12
185.1) bugfix: stdlib/string/acl_mystring.c е acl_mystrline() bug,
ӶӰʹøú acl_xinetd_cfg.c Լ master еĶļ
Ĳ
185.2) feature: stdlib/common/acl_htable.c  acl_htable_last_errno() 
 acl_htable_set_errno() ʹӦÿжϲϣĴ״̬
Ŀǰڹϣʱ˴״̬. ΪACL_HTABLE_STAT_DUPLEX_KEY

184) 2008.11.10
184.1) thread:  acl_pthread_init()/acl_pthread_end() Ӷ
WIN32ƽ̨´߳ʱacl_pthread_creeateֵ RunThreadWrap()
ڲʹ߳̾Ŀܴڵĳͻ
184.2)  init/ ģ飬ҪACLڲĳʼ, ûֻҪһ
acl_init(), úڲͻԶйWIN32µSOCKETTHREADԼUNIXµsignal
˳ʼ

183) 2008.11.9
183.1) thread: һWIN32ƽ̨µPOSIX

182) 2008.11.8
182.1) thread/:  acl_pthread_join POSIX׼ĺͬʱ
acl_pthread_detach()

181) 2008.11.7
181.1) bugfix: acl_mystring.c->acl_mystrline() ڽ "\r\n" Ϊسзʱ
һBUGӶӰʹļĺķ(acl_xinetd_cfg.c)
181.2) performance: acl_mystring.c->acl_mystrline() ڲ־λʱ
ݵƶ(ãmemmove())޸ĳֻƶһεķʽ

180) 2008.11.6
180.1) bugfix: acl_aio_read.c, еĵ astream->read_fn() ֮Ӧ
 ACL_VSTRING_RESET() Էֹݱظ
180.2) performance: stdlib/charmap.h, ַתӳӶʹ
strcaseXXXӿ
180.3) net/dns: rfc1035 ģһƹʵ
180.4) stdlib/configure: ˷ļĲ

179) 2008.11.5
179.1) feature: acl_dlink.c, acl_dlink_lookup_larger() Բ
ڵĳֵн㼯; acl_dlink_lookup_lower() Բ
Сڵĳֵн㼯ϣڲ˳ҵģݽ
Ƚ϶ʱЧʻȽϵͣӦöĳɶֲ
179.2) performance: strcasecmp, strcasencmp, ˸Ч
179.3) bugfix: acl_aio_read.c, acl_aio_readn() УӦý
" astream->count = count; " ںʼ__readn_notify_callback() 
 "astream->read_fn"  "ACL_VSTRING_RESET(&astream->strbuf);"
Ա fatal 

178) 2008.11.3
178.1) feature: acl_dlink.c,  acl_dlink_lookup_range()Է
ѯĳΧݽǷ

177) 2008.10.31
177.1) feature: acl_dlink.c,  acl_dlink_delete_range() Է
شɾĳΧڵݽ
177.2) feature: acl_array.c,  acl_array_delete_range() Է
ɾĳ±귶Χ֮

176) 2008.10.27
176.1) feature: C99׼ֲ߳̾洢ԴֻҪڱǰ
꣺__thread ñͱΪһֲ߳̾磺ڲõֲ߳̾
static __thread int i = 0; ⲿõֲ߳̾ .c ļΪ
__thread int i; Ȼ .h ͷļextern __thread int i;
windows ´VC7ʼҲ֧C99׼ҪWIN32ԣҪڱǰ
__declspec(thread)Ϊʹõһԣ acl_define_win32.h нͳһΪ
__thread; UNIXµMakefileļGCCʱҪѡ-pedanticѡȥΪ
C89ı׼
176.2) samples: thread/ µ˵C89ֲ߳̾洢ʹ

175) 2008.10.26
175.1) feature: acl_dlink.c, ӿ acl_dlink_lookup2_by_item,
acl_dlink_lookup2, ڲѯݽʱͬʱȡøý±ֵ

174) 2008.10.21
174.1) feature: acl_sys_patch.c,  win32 µ gettimeofday ʵ
174.2) feature: acl_netdb.c, չһЩṹԱͬʱº
acl_netdb_refer_oper, acl_netdb_refer, acl_netdb_unrefer, acl_netdb_add_addr

173) 2008.10.17
173.1) feature: ̶߳ջռСùܣ漰ļУ
acl_pthread.c/h, acl_workq.c/h, acl_ioctl.c/h, acl_ioctl_server.c,
acl_ioctl_params.h
acl_pthread.c: acl_pthread_attr_setstacksize
acl_workq.c: acl_workq_set_stacksize
acl_ioctl.c/h: ACL_IOCTL_CTL_THREAD_STACKSIZE
acl_ioctl_server.c: acl_var_ioctl_stacksize
acl_ioctl_params.h: ACL_VAR_IOCTL_STACKSIZE, ACL_DEF_IOCTL_STACKSIZE

172) 2008.10.10
172.1) samples: һǳõHTTPͻ http_client/

171) 2008.10.9
171.1) workaround: VC6VC2003뻷µĹ̬֯
lib_acl.dll, lib_acl.lib, lib_acl_d.dll, lib_acl_d.lib ̬
lib_acl_vc6.lib, lib_acl_vc6d.lib, lib_acl_vc2003.lib, lib_acl_vc2003d.lib
ж̬VC2003ģVC6ʹ
171.2) samples: VC6 samples ̣ĿǰΪ˲Խ
(vstream.dsp, vstring.dsp)

170) 2008.10.8
170.1) master :  acl_tcp_defer_accept() ùܣʹ߿
ļָǷԿͻӲӳٽܹ, ޸ĵļ
master.h, master_ent.c, master_listen.c
170.2) acl_inet_listen.c: ȥĬϵ acl_tcp_defer_accept() ãʹ
Ҫʹô˹ܣԴ׽ӿںֹ

169) 2008.10.7
169.1) 룺VC 붯̬DEBUG汾ִгDEBUG汾ʱĬ
ӻ *.ilk ļڱʱõ·VC
ĬϵģЩ *.ilk ļпVCһBUGڹر
VCӵĹ
169.2) samples/proctld ģ޸
169.3) ACLɶ̬ӿʱʹACL̬ʱӦ
Ԥ壺ACL_DLL
169.4) include/stdlib/acl_define_win32.h: ΪVCԶԤ
Ԥѡ: WIN32, ڸļĬϴԤ壬ҲĬ
ΪVC

168) 2008.9.29
168.1) feature: ޸ͷļĺ壬 ACL_API 壬
DLLʽ, ԷʹACL⣬ӦDLLʽʹ
ACLʱҪһԤ꣺ACL_DLL

167) 2008.9.27
167.1) bugfix: events_proc.c,  select() ֵ -1,  error
Ϊ EINTR, Ҫأûн eventp->nested ָһε
event_loop() ʱ "if (eventp->nested++ > 0)" , BUGӰ
acl_master,  master ܵ aio ʵ

166) 2008.9.26
166.1) acl_vstream.h: ĵע͸ʽʹ֮ JAVA-DOC ʽ
166.2) acl_vstream.c:  acl_vstream_fhopen() ӿڣӶӼwin32
166.3) acl_myloc.c:  acl_log_fp() ӿ

165) 2008.9.22
165.1) mempool/acl_allocator.c: ˽ӿ acl_allocator_ctl() Է
ڴصĻС/ֽ

164) 2008.9.19
164.1) proctl:  acl_proctl_start_one()  acl_proctl_stop_one()
ĲڣвֻڲӦòڲ˫
164.2) compile: ˼ C++ Builder6 ϵı뾯
164.3) acl_hash.c:  crc64 ޸Ϊ acl_hash_crc64
164.4) ڸƽ̨ϱͨ
164.5) acl_aio_read/write: ڵ XXX_SAFE_IOCP Ӧٶ astream 
κβɲǷָĴ

163) 2008.9.18
163.1) proctl: ģڲȷЩ

162) 2008.9.11
162.1) acl_vstream: ֧׽ֵ writev ģʽұ֤ȫд
162.2) samples/vstream: ˼Ժ
162.3) samples/master/: ˼ Makefile ļ

161) 2008.9.10
161.1) ڴصĻСԴﵽ1MҲӦüӸؿһ
ǷҪڴĻ
161.2) acl_sys_patch.c: ֧׽ֵ writev ģʽ
161.3) acl_vstream.c: ֧׽ֵ writev ģʽ
161.4) acl_aio_write.c: ֧׽ֵ writev ģʽ

160) 2008.9.9
160.1) °汾 acl ڸƽ̨ϱͨ

159) 2008.9.4-9.8
159.1) engine/events_proc.c: ޸˼ Linux epoll صļBUG
 postfix м̳й epoll ش룬 postfix жԶд¼Ҫ
ǲͬʱĳ׽ڶдؼУʵ
event_disable_readwrite ӿڣ acl е events_proc.c ȴͬʱ
ͬһ׽ֽждأ event_disable_read, event_disable_write
ӿڣԭ postifx ей epoll ĵ acl оͻִ
Ѿʹ acl Էǳ֧ Linux µ epoll ã
ֻҪ lib_acl/src/engine/events_define.h е ACL_EVENTS_KERNEL
弴
159.2) aio/: ԭ acl еķ IO  aio ģڶĴʽ
ǵĳ׽ֵĶ¼ʱ㽫Ӷȥɺ
׽ӣʱĲ(ǶԲ
epoll Ƶķ)ڽ첽Ϊһֱɶ浽ӦҪرո
׽ֻȷֹΪֹacl_aio_write ģǶ״⣬Ϊ
һʱδǶײһ¶һӵ׽˵ڴﵽ
дǶײƺԺÿһдҪͨд¼мȻͨд
¼ʱĻصʽɣ󽵵˷дЧ(ʵ֤޸
BUGĺ󣬻 acl  webserver 2000ÿ룻 
acl_aio_listen ѭⲿӹܣ߲;  aio
ģش룬޸йؽӿ
159.3) acl_aio_create ʱͨ accept_max Ϊ1
ֵ׽ֽղӵܣʵֵ֤Ϊ1acl_vstream_listen
ļбȽСʱ(С64)пһĽӳ

158) 2008.9.1-9.3
158.1) socket performance: ڲԻ acl_aio_xxx дHTTPʱ
(Apache ab߲) ֳӵЧʷȶӵЧʵͣϸ
Ų飬ΪʱΪСݰϵͳԶ Nagle 㷨
Ӷһӳ٣Ϊ˱޸ acl_sane_accept, 
acl_sane_connect Զ TCP_NODELAY ԣ Nagle
ɵӳ(ȻпܻήһЩ)
158.2) net/acl_tcp_ctl.c: acl_tcp_nodelayӿڣԿ/ĳ׽ӿ
 TCP_NODELAY 
158.3) feature: ˳ЧʲԽӿڣstdlib/acl_meter_time.c, Ӷ
Ӧͨú ACL_METER_TIME("your info") ÿִкִʱ,
ڲԡ158.1)  Nagle ɵʱӳʱú˷ǳҪ
158.4) acl_fifo.c: ˸ĽӿڣͬʱṹͶͷļУ
ûջϷж
158.5) acl_aio: Ż˽ṹƣһЩҪζ̬Ķ̺ϲ
̬ڴĲ
158.6) acl_vstring: Ϊ acl_aio Ż acl_vstring_free_buf 
158.7) sample: fifo ˲

157) 2008.8.27
157.1) ڴ䣺Ϊ acl ̻ڴؽ¹ᵼЩ
ڴ׼ڴʱЩܴڴй¶
157.2) acl_vstream.c: еĻصͷź acl_myfree_fn ȥֱ
ڴͷŷʽ acl_array_delete_idx ĵ÷ close_fn ֮ǰ
ֹû close_fn ڲ acl_vstream_delete_close_handle ʱڴ
Ƿظͷ
157.3) samples/master/ioctl_echo, aio_echo: һ󣬵
ļû master_env ʱûж getenv()  NULL 

156) 2008.8.26
156.1) ڴ䣺½һЩ
156.2) 룺VC6ϳɹ룬ͬʱwin32ƽ̨µĵĿӺ׺
 lib_acl_vc6.lib, lib_acl_vc2003.lib, lib_acl_cb6.lib

155) 2008.8.23-25
155.1) ڴأ acl ڴؽ¹, ֮ص޸ļ
acl_malloc.c, acl_mylog.c, acl_allocator.c mem_pool.c, squid_allocator.c
vstring_pool.c, etc, Ŀ¼ mempool/ ڴΪ acl 
 stdlib/ µһģ
155.2) acl_stack.c: ½д, ˵ȹ
155.3) unit_test:  acl_stack ģĵԪ
155.4) master/aio, iotcl: ģ˲ڴصĹ

154) 2008.8.22
154.1) acl_mymalloc.c: acl_mymalloc(), acl_myfree() ȥ memset()
ĲòڴȽϴʱȽϺʱ
154.2) acl_allocator: ڴģ½
154.3) samples/mempool: ڴصĲ

154) 2008.8.21
154) acl_vstring.c: acl_vstring_sprintf_prepend һǱڵָBUG

153) 2008.8.20
153.1) acl_mylog.c: ļʱUNIXƽ̨¶ 򿪵ļ
acl_close_on_exec ܣԷ̵ֹļݸӽ
153.2) master : ʹӽ̿ͨûУӽл
ǰȽ acl_master ̵־ļм¼ӽлΪ
ͨûݺʹԼ־ļм¼
153.3) acl_master װӦڰװʱΪ˱֤лΪͨ
ûݵӽ̼¼־ var/log Ŀ¼ȨΪ 1777; װ
еķӷ conf/service/samples/ Ŀ¼

152) 2008.8.18
152.1)  acl_master ܣ޷־¼
м
152.2) feature: acl_master Ըļ(main.cf) е scan_subdir
ѡжǷҪ÷Ŀ¼µķ
152.3) feature: ÿļ master_env 
ʹ acl_master ̿Խûݸӽ
152.4)  samples/master/ µ

151) 2008.8.14
151.1) feature: acl_vstreamʹ ACL_VSTREAM_IN, ACL_VSTREAM_OUT,
ACL_VSTREAM_ERR WIN32ʹãҪʹЩ׼룬
Ҫǰ acl_vstream_init() гʼ
151.2) samples: ˲ ACL_VSTREAM --samples/vstream

150) 2008.8.12
150.1) bugfix: acl_ioctl.c е __on_thread_init  __on_thread_exit
ĲҴݸصĲ

149) 2008.8.7
149.1) ̹: ˸ƽ̨µı빤
149.2) experiment: avl 64λLINUX±ͨ
149.3) unit_test:  avl ĵԪ
149.4) compile: SUNOS-X86ϱͨ

148) 2008.7.30
148.1) samples: һ samples/master/ µļӣԱʹ

147) 2008.7.23
147.1) samples: Ӳ˴WIN32 FileDir ӣӼͳĿ¼
ֿԲAVL(ֲ OpenSolaris)

146) 2008.7.19
146.1) feature: acl_scan_dir ģƻõĽӿڣԷ
ûصԷͳ
146.1) samples: FileDir(win32) ɨĿ¼ĳWIN32ͳĿ¼

145) 2008.7.17
145.1) feature: proctl ģ˷ӽ˳ʱĻصص
145.2) feature: acl_scan_dir ģ acl_scan_stat() Էǳ
(׼ stat һ)ȡõǰɨļĿ¼Ϣ

144) 2008.7.15
144.1) feature: proctl/ WIN32ƽ̨иӽ̿Ƶģ飬֧
ֹͣĳз񣩡˳б̽⹦
144.2) feature: WIN32ƽ̨ļĹ
144.3) msg/acl_aqueue.c: acl_aqueue_pop_timedwait() ʱΪ0
ΣǰȫΪ0ڵȴֱȴĳأ
ڿԵʱ
144.4) compile:  VC2003, CB++, GCC ±ͨ

143) 2008.7.4
143.1) feature:  engine/acl_timer.c, ÿʵ˶ʱĹ

142) 2008.6.30
142.1) ˶㷨(DEBUG汾): acl_btree.c
142.2) WIN32ƽ̨µļ: acl_myflock.c
142.3) acl_vstream.c:  acl_file_ftruncate(), acl_file_truncate()

141) 2008.6.25
141.1) acl_vstring.c:  acl_vstring_memchracl_vstring_strcasestr
acl_vstring_strstracl_vstring_insertacl_vstring_prepend
acl_vstring_sprintf_prepend 
141.2) samples:  vstring Ժ

140) 2008.6.23
140.1) acl_vstream.c: WIN32ƽ̨ΪAPI֧APPENDģʽ
ACL_VSTREAM ṹһ־λڵûO_APPENDԱ֤
дʱļβд(__vstream_sys_writeʱ)(Ŀǰȫع淶
--ļβ)

139) 2008.6.18
139.1) acl_mystring.c:  strcasestr

138) 2008.6.17
138.1) acl_fifo.c/acl_fifo.h:  iterator 
138.2) samples:  ACL_FIFO 

137) 2008.6.4
137.1) 64λRedhat Linuxͨ
137.2) VCµĹļ

136) 2008.6.3
136.1) acl_mymalloc.h, acl_mymalloc.h: ˷ԵĽӿ, 
ͳһ޸ΪãԷʵļλ
136.2) master/, ioctl/: ̳߳ʼص߳˳ص
master/template/acl_ioctl_server.c: ģ̳߳ʼ߳˳
Ļص; samples/master/ioctl_echo/app_main.c(.h) Ҳ߳
ʼ߳˳Ļص
136.3) unit_test: stdlib/test_malloc.c, ڴʱ
ܷӡڵԴλ

135) 2008.5.29
135.1) acl_make_dirs.c: ȫ֧WIN32ƽ̨´Ŀ¼

134) 2008.5.5
134.1) feature:  master ܣȡĹýӿڣ
ӦÿԱȽϷضȡԼ
134.2) bugfix: acl_inet_listen() һѾĵַʱ־
¼ԭ bind() ־¼еĸ˳򲻶

133) 2008.4.30
133.1) bugfix: db/memdb/acl_mdt.c е acl_mdt_delete() һBUG
ȷɾ

132) 2008.4.29
132.1) feature: db/memdb,  acl_mdt_list ӿڿ˳гĳΧ
Ľ; acl_mdt_walk ˷Χ

131) 2008.4.28
131.1) bugfix: stdlib/acl_vstream.c, acl_vstream_probe_status() UNIX
ûн׽ӿΪģʽԻᵼµøúĵ
Ϊ db/null/ ӳصȱʡ̽ӵķʽ˴˺Ե
131.2) feature: db/ (ݿ)ӳģûԼԼ̽ģ
131.3) feature: db/ ֹǿƼӳӵĺ

130) 2008.4.24-4.25
130.1) performance: master еԶ̵߳ķŻ
ڶ߳¼ѭµӳ; Ķ֮صģ
engine/, ioctl/, master/template/acl_ioctl_server.c
130.2) feature: stdlib/commonһµCRC64㷨ɹԸ
Ͻ޸ṩ

129) 2008.4.23
129.1) feature: db/memdb̽ĳֵֶǷݱеĺ

128) 2008.4.21
128.1) BORLAND CBuilter6 ϱͨ
128.2) db/memdb: ؽӿڣʹø㣬Чʸ
128.3) bugfix: acl_vstream.c ж wbuf_size ĳʼֵȡΪ
sizeof(stream->wbuf_size) - 1ӦΪ sizeof(stream->wbuf)Ϊ˴
󽵵 acl_vstream_buffed_writen ЧʣдֽʱΪ
ϵͳĬϲ TCP_NODELAYԻܻӳ!
128.4) bugfix: db/ ӳмδ󣬽޸

127) 2008.4.19
127.1) bugfix: acl_sys_patch.c е acl_file_open WIN32µʵЩ
⣬½ 

126) 2008.4.17
126.1) bugfix: acl_vstream_fileno, ACL_VSTREAM_FILENO ô,
Ϊ֮ǰ ACL_VSTREAM еľ׽ּļ, 
ûн, Ѿ stream->type ͽ, ڷֱ
 ACL_VSTREAM_SOCK, ACL_VSTREAM_FILE ȡ׽ֻļ
126.2) stdlib/acl_vstream.c: ͨſ

125) 2008.4.16
125.1) db/memdb: ڴݿڲʹõACL_RING޸Ϊʹ
 MDB_RING, MDB_RING б ACL_RING ֶδӶڴռ;
ڴƣֶεԼӹ

124) 2008.4.15
124.1) examples: һСߣԽԴĸʽת:
UNIX, DOS, MAC ָʽ
124.2) С߽ acl ͳһתUNIXļʽ

123) 2008.4.9
123.1) db/null, ݿӳؿTCPӳؿ

122) 2008.4.3
122.1) ޸ڴݿ⣬ݽĿ¡, òѯ
һʱûõĻص̲߳ȫ

121) 2008.4.2
121.2) acl_define_linux.h:  g++
ʱ_GNU_SOURCEᱻԶ壬ظ _LARGEFILE64_SOURCE

120) 2008.3.29-4.1
120.1) ڴݿģ(db/memdb/)ָ֧Ĺϣϵѯ
ɾȥ˿ܻӰܵĶ̬鲿֣˫ʽӶ
ƶд˲ samples/memdb/
ڴݿģص㣺
1ͬһݲòͬĹؼֶν
2ֶ֧ݿݱ
3ӡѯɾǲùϣλʽ
4˫ȡ̬飬ɾʱ
5ӰڴռݽṹѹС(ЩҪŻѹĵط)

119) 2008.3.27
119.1) compiling: LINUXͨ

118) 2008.3.25
118.1) bugfix:  acl_aio_xxx УΪ첽дܻᱻǶ׵ãп
᷵ -1 ֵӶʹЩӦ磺http_chat_async.c ĶΪ
˴ͳһ acl_aio_read, acl_aio_readn, acl_aio_gets, acl_aio_gets_nonl,
acl_aio_writen, acl_aio_vfprintf, acl_aio_fprintfȺķֵΪ >=0
ЩĹ̲ӦЩֵжǷдɹӦӻصнжϣ
Ϊ첽д̶첽ģΪ˱ңѾЩķֵΪ void

117) 2008.3.20
117.1) °汾LINUX±ͨ
Linux£ҪMakefileļıѡ -Wno-long-long Ӷ֧
long long 

116) 2008.3.19
116.1) feature: ˶64λϵͳһЩ֧֣ͬʱ֧32λϵͳģ64λһЩ
޸ĵļУ
acl_define_linux.h, acl_define_win32.h, acl_mystring.h, acl_sys_patch.h,
acl_vstream.h, acl_define.h, acl_dlink.h, acl_msg.c, squid_allocator_tools.c,
acl_sys_patch.c, acl_vstream.c, acl_dlink.c, acl_mystring.c, acl_vstream_net.c,
116.2) feature: WIN32ƽ̨£ļĲֱWIN32APIӶִ֧ļ
дȲ֧LINUXƽ̨´ļĲ, Ҫ acl_define_linux.h ǰ
# define _LARGEFILE64_SOURCE
# define _FILE_OFFSET_BITS 64
 acl_vstream.c дļʱҪָ O_LARGEFILE 򿪲
116.3) comment: acl_mystring.h ˱Ƚϸͷļкӿע
116.4) ڲʹ snprintf ʱʹϵͳĬϵ snprintf, WIN32ƽ̨ _snprintf

115) 2008.2.20
115.1) bugfix: acl_dlink.c, acl_iplink.c, ֮ǰ begin = 0 ʱܽв

114) 2008.2.19
114.1) performance: acl_vstream.c У֮ǰδöַٺ궨

113) 2008.2.3
113.1) feature:  squid ķּ¼־ĺ acl_debug.c/acl_debug.h
113.2)  acl_argv_split.h ȥеĺϲ acl_argv.h 

112) 2008.2.2
112.1) feature:  acl_iplink ⣬޸Ϊ acl_dlink Ӷʹֿ㷨
ͨã acl_iplink  acl_dlink м̳

111) 2008.1.29
111.1) vc ļ޸:  debug Ŀ _d,  lib_acl.lib  debug 汾
Ϊ lib_acl_d.libǸ汾DEBUG汾:
lib_acl_d.lib, lib_acl_mysql_d.lib, lib_protocol_d.lib
RELEASE汾:
lib_acl.lib, lib_acl_mysql.lib, lib_protocol.lib

110) 2008.1.24
110.1) Bugfix: acl_ring.c,  acl_ring_append(), acl_ring_prepend() ,
² parent Ӧ ring,  entry->parent Ӧ ring,  Ӧ ring->parent,
ܱ֤н parent ָͬһ ring header, ڴǷԽ,
ڷ unix_trigger.c Ĺʱ, ΪڲԴ緢ʱ
 unix_trigger.c е __USE_TIMER, 򵱴ĴʱСÿڴ
׽ӿڵĳʱʱʱᷢڴԽ, ϵͳ valgrind Էǳ׷ִ,
Ϊҳ⣬ʱ䣬Ҳ˺ܶ·һżȻʹ˷
ıʲڴ acl_ring.c ж parent ô⡣Ǻǣѷ
BUGvalgrind is very good!

109) 2008.1.16
109.1) acl_vstream.c: ȫ̸ĳ׽ӿڵдֽֽܶ
109.2) acl_vstream.c: acl_vstream_xxx_ready ͵ĺʹ߼
109.3) acl_aio_read.c: Է ACL_EWOULDBLOCK, ACL_EAGAIN Ĵ
109.4) acl_aio_read.c: ʹ߼
109.5) acl_aio.c: acl_aio_open() ǿƽ׽תΪģʽ
109.6) acl_inet_listen.c: ӳٽյĹ(TCP_DEFER_ACCEPT)Ĭϵӳ accept
ʱΪ30롣

108) 2008.1.15
108.1) acl_dbpool_mysql.c: һЩ־ļ¼˿ãͨ acl_msg_verbose

107) 2008.1.10
107.1) acl_netdb_cache.c: DNS˳⣬޸

106) 2008.1.9
106.1) acl_htable.c: acl_htable_enter, acl_htable_enter_r ظKEYʱ
־棬ûӦظKEY򽫻ᵼڴй©

105) 2008.1.8
105.1) bugfix: acl_http_header.c->__add_request_item__add_cookie_itemжԱ
Ĵ洢ԭδظᵼڴй©HTTP⽫ӻACL
ȥҸòֺBUG޸ⲻһĿlib_protocol ṩ
õԸЭ鴦Ľ

104) 2008.1.7
104.1)  acl_define.h ļWIN32صĶΪһļ
acl_define_win32.h acl_define.h ͱȽˡ
עVC externC++ƣᵼ±
"fatal error C1045:  : ӹ淶Ƕ̫"
ˣ acl_define_xxx.h ļʱ extern "C" Щļȥˡ
GCCBC++ȴûⷽ⣬ǺǡBC++ҲбȽĵطڱʱ
뱣̵֤ģoption->Tlib->Page size ѡΪ 0x0020ֵΪ 0x0010
BC++ҲᱨһȽı£
[TLib Error] library too large, please restart with library page size 32
104.2) lib_acl/Makefile, Makefile.mysql: ˶MYSQLı֧
104.3) dist: һר acl_master ܵİװ.

103) 2008.1.5
103.1) acl_aio.c: ˴첽ȡ첽ܾĺ: acl_aio_handle();
103.2) acl_aio_server.c: acl_aio_server_handle()ӦںԼ
post_init()ֱͨ˺ȡ첽ܾ
103.2) acl_aio_server.c: bugfix,  acl_master ˳ʱڸģӽ̲˳
첽Ĺرء

102) 2007.12.30
102.1) acl_aio_read.c: ޸˼
102.2) acl_vstream.c: Ϊ acl_aio_ 첽ṩ˸Ľӿ
102.3) unix_trigger.c, inet_trigger.c, stream_trigger.c:  events_proc.c 
ʱIO¼ڳͻʱ޸򣬽ʱ¼Ķʱȥ
ֱIOĳʱ

101) 2007.12.25
101.1) master_status.c: master_status_event нacl_vstream_readn޸Ϊread
101.2) acl_aio.c: еĵtimeo_fn()ǰüķֹǰ쳣ر
101.3) acl_aio.c: رյıλ closing ͳһ nrefer 
101.4) acl_aio.c: Ϊļ̫ˣԽ˷ָֳɼСģļ

100) 2007.12.16
100.1) db/acl_dbsql.c, mysql/acl_dbmysql.c: صĲmy_row ӦMYSQL_ROW
Ϊ const void**, ԭΪ const void*, GCC±ʱ
100.2) msg/acl_aqueue.c, acl_aqueue_pop_timedwait ĵȴʱһΪUNIX
WIN32вͬ
100.3) protocol/, ΪHTTP_STATUS_״̬VCĳͻ޸HTTP_STATUS_
ΪHTTP_CHAT_

99) 2007.12.13
99.1) db/acl_dbpool.c: acl_dbpool_destroyһBUGڵٺ
Ӧٴظͷͬһڴ档

98) 2007.12.7
98.1) acl_define.h:  acl_unused 궨壬ӦñһЩʱľ

97) 2007.11.6
97.1) aio/acl_aio.c: ֹ©δرҪصش
ҪжǲǴIOӳ״̬
97.2) aio/acl_aio.c: õע˵ʹøӵ첽
⣬ΪÿȷʵȽϸ
97.3) feature: acl_netdb.c, һ ACL_DNS_DB ĺ
acl_netdb_addip

96) 2007.11.5
96.1) aio/acl_aio.c: ֤ʽдʧܴŵĴȷҼݸƽ̨
96.2) е errno, תΪ acl_last_error(),  strerror()
תΪ acl_last_strerror()Ӷ֤ƽֲ̨

96) 2007.11.3
96.1) net/listen/acl_inet_listen.c: acl_inet_listen():
if (nport <= 0) --> if (nport < 0), Ϊacl_msgio_listenݹĵַΪ
"127.0.0.1:0" ĸʽĿòϵͳԶ˿ں

95) 2007.11.2
95.1) ޸ protocol/ µĲֺ

94) 2007.11.28--11.30
94.1)  master/ ģ
94.2) Ѻô󾢲ҳ acl_master ޷ AS3.0 еԭ: 
acl_define.h ж HAS_DUPLEX_PIPE, ᵼ
master/framework/master_status.c е acl_master_status_init() 
 stdlib/iostuff/acl_duplex_pipe.c е acl_duplex_pipe() ʱԶ
 pipe() ģʽ.

93) 2007.11.27
93.1) һ¸ģλ
93.2) LINUXWINDOWSļ

92) 2007.11.26
92.1) stdlib/acl_msg.c, acl_mylog.c: ¼, ̺̺߳

91) 2007.11.25
91.1) db: ݿģ
91.2) thread: WIN32MYSQLʱ, pthread_xxx MYSQLĿ
ͻ, Խ thread/ µ pthread_xxx Ϊ acl_pthread_xxx

90) 2007.11.23
90.1) portable: Ŭ, ڽWINDOWS汾ACLUNIX汾ACLϲ:)

89) 2007.11.11--11.12
89.1) feature: add the trigger framework to acl_master.
89.2) example: samples/master/trigger/, add one example for trigger

88) 2007.9.11
88.1) example: samples/http_probe, һ̽HTTP״̬

87) 2007.9.10
87.1) bugfix: spool/acl_spool.c, ڴصʱԲж޸.
87.2) bugfix: proto/http/http_chat.c, HTTPЭĽմ޸.

86) 2007.8.30
86.1) performance: master/acl_master_listen.c: ׽ӿڵļ
main.cf е default_process_limit ֵ, ֵȽСʱᵼ¼׽ӿڵļ
ҲȽС, ӶӰ accept() , ͨ acl_master_listen.c 
Сļ֤ accept() .
87.2) bugfix: master/acl_aio_server.c->aio_server_wakeup() е acl_vstream_fdopen
еĶдʱʱӦΪ 0, Ϊڷģʽ׽ӿڵĶдʱʱ¼ѭ
ƽп, ֵ0,  stdlib/acl_vstream.c нIOʱ
һ select() ϵͳ, ⽫ӰģʽIO.

85) 2007.8.26
85.1) feature:  /dev/poll for solaris.
85.2) һ engine/ ¼ӿ, һЩײڲӿ, ʹ
ӷʹ¼ӿ(engine/events_define.h д ACL_EVENTS_KERNEL 
,  solaris ʹ /dev/oll  Linux Kernel2.6 ϰ汾ʹ
epoll).

84) 2007.8.23
84.1) portable: rebuilt on solaris.

83) 2007.8.22
83.1) feature: ־¼עắ, ҵ־¼,
stdlib/acl_msg.c, acl_msg.h; Ӳμ samples/master/spool_server/app_log.c.

82) 2007.8.21
82.1)  acl_aio_server.c ģ
82.1) performance: master/acl_spool_server.c
82.3) bugfix: engine/events_thr.c, events_proc.c йڶʱĴ޸

81) 2007.8.19
81.1) bugfix: engine/events_proc.c, Ϊ master/ Ҫ, ޸ events_proc.c,
 events_thr.c е events_disable_readwrite() ղ.
81.2) experiment: master/acl_aio_server.c, acl_aio_params.h, ˷⵽
master/ ģ.

80) 2007.8.14
80.1) µ engine/ µļܹ, Ķλѯٻ鶨λģʽ, 
ڽֲ MS Windows ʱӷͬʱ½.
80.2) ޸ĵļ: acl_events.c, events_proc.c, events_thr.c, acl_event.h
80.3) ļ: events_fdtable.c, events_fdtable.h
80.4) tagged as milestone

79) 2007.8.11
79.1) portable: ɹ acl ֲ Sun Solaris11 for x86.
79.2) bugfix: acl_vstream.c, event_thr.c, ޸й첽Ĵ

78) 2007.8.8
78.1) performance: acl_spool.c, acl_vstream.h/acl_vstream.c: ͨ ACL_VSTREAM
 acl_spool.c еڲʱ(ACL_SPOOL_CTX),  acl_spool_xxx ÿ
ùеķͷڴĴ. ( acl_aio.c е)
78.2) framework: samples/master/spool_server/, app_main.c/app_main.h, һ
˿ܽӿڵĵģʽ, Աûӷʹ.

77) 2007.8.7
77.1) bugfix: engine/event_proc.c

76) 2007.7.17
76.1) bugfix: acl_aio.c->acl_aio_connect() δԤ data_buf ڴռ
76.2) add on sample: һڸ߲WEB(samples/http_auto),
ӿWEBһֱָ߲, Ӷ˻½Ӳ
.

75) 2007.7.12
75.1) performance: һ̶ acl_aio.c 첽

74) 2007.7.11
74.1) feature:  Linux2.6  epoll ֧
74.2) performance: 첽IO(acl_aio.c, acl_vstream.c)
74.3) example: HTTP(webstar)ѹ, Դﵽ450Mbits/s,
12500 request/sec. (./ab -n 1000000 -c 5000 -k http://ip:8080/postfix/)

73) 2007.6.7
73.1) feature: acl_spool.c/acl_spool.h, acl_aio.c/acl_aio.h, 첽
ĵ̰߳汾, ֵ̰߳汾ĴԼǶ̰߳汾
1.5(ԭǲϵͳ̵߳Կ), Գμ:
sample/aio/. ̰߳汾: 41002 /; ̰߳汾: 26549 /.

72) 2007.5.29
72.1) bugfix: acl_htable.c/acl_htable.h, ڴ̼߳
, ѾµĽӿں

71) 2007.5.27
70.1) acl_htable.c/acl_htable.h: ˹ϣעṦܼ̰߳ȫ
70.2) ˹ϣ㷨 acl_hash.c, acl_hash.h 

70) 2007.5.21
70.1) acl_dbpool.c, acl_dbpool.h: ԶύĿùܼ⹦

69) 2007.5.20
69.1) acl_spool.c, acl_workq.c: һصĺӿ

68) 2007.5.11
68.1) feature: spool/acl_spool.c, acl_spool.h Ӻӿ
68.2) engine/acl_event.c acl_event.h, event_thr.c, event_proc.c: ޸ڲ
, һ, ͬʱʹ acl_event_request_timer/acl_event_cancel_timer ߱
̹߳.

67) 2007.5.7
67.1) bugfix: aio/acl_aio.c: acl_aio_read() дݵѶݳ.

66) 2007.4.16
66.1) ע: aio/acl_aio.h ͷļʹע

65) 2007.4.14--4.15
65.1) feature:  http/ Э...

65) 2007.4.11
65.1) bugfix: aio/acl_aio.c, acl_aio_readn() Ļصһ©ڴ.
64.2) feature:  http/ Э...

64) 2007.4.10
64.1) feature:  http/ Э...

63) 2007.4.9
63.1) feature: aio/acl_aio.c, stdlib/acl_vstream.c, 첽Nֽڵĺ.
63.1) feature: ʼ proto/http/ Э...

62) 2007.4.8
62.1) bugfix: engine/events_thr.c, ȥ select() ֮Գʱ趨.
62.2) util/aio/: ޸˺ӿڵĶ巽ʽ, ʹӿڵ÷ʽ.

61) 2007.4.7
61.1) 첽AIOڴй©, 첽첽IOĿ(util/aio/).
61.2) ṩ첽IO: samples/aio/.

60) 2007.4.6
60.1) ޶ master/acl_master_ent.c еһBUG: acl_free_master_ent() 
acl_array_destroy() ĵӦ acl_myfree((char *) serv) ֮ǰ.

59) 2007.4.5
59.1)  aio/ 첽IO, net/acl_vstream_aync.c 

58) 2007.4.1
58.1)  master/acl_spool_server.c, ÷ܻ spool/acl_spool.c
58.2)  engine/event_thr.c  timer  event_loop() ĵùϵ, ʹĴ
ֱѭ, Ӷ˶ģʽ select() ʱֵӰ

57) 2007.3.25
57.1) ݿӳص״̬¼־: util/spool/mysql/acl_dbpool_mysql.c
57.2)  mysql صͷļʵֶ̬: depends/
57.3) bugfix: ޸˼صĴ

56) 2007.3.24
56.1) feature: ˷Ӧÿܼݿӳؿ spool/.
56.2) example:  master/listener_server .
56.3) performance: ޸ event_thr.c->event_loop() ¼, ߳ĳͻ.

55) 2007.2.15
55.1) master/, net/ Ѿ:)
55.2)  app/master/ 鲢 samples/ .

54) 2007.2.14
54.1) feature: stdlib/acl_vstream.c, stdlib/acl_vstream.h,  acl_vstream_fprintf,
acl_vstream_vfprintf , 󷽱ʹ߽Ĵʽд.

53) 2007.2.13
53.1)  master/, trigger/, net/ Ŀ¼µһЩļ° acl/ACL 淶
ע: ⲿִܱͨ, δֽв.

52) 2007.2.3--2.4
52) unit_test: ش, ʹ
52.1) 淶ͳһ: ǰ aut_, ǰ AUT_
52.2) ѭ̵ĵ÷, ʹ.

51) 2007.1.27
51.1) feature: Ӳ listener_server.c/listener_params.h, ģΪ master פ̳ģĲ,
һַģ, ģͽ׽ӿڼ, ̳߳صķģͺܺõĽһ, Ѿ
ְ֧פʽĶ̶̷߳ģ; ͬʱģͻڽһ fork һ̵ģʽ
51.2) bugfix: event_proc.c/event_thr.c event_XXX_loop ¼ѭ timer Ĵ.

50)2006.10.20
50.1) app/squid/analog: һ־

49)2006.8.29
49.1) util/net/acl_vstream_async.c: ޶һBUG, Աڴͻ
49.2) util/stdlib: acl_mymalloc.c, acl_mymalloc.h, Ϊ˵ڴͷŵĺ(ͨ acl_mymalloc.h
н궨: #define DEBUG_FREE ش򿪼)

48) 2006.8.28
48.1) util/stdlib/acl_vstream.c: acl_vstream_gets_ready()/acl_vstream_gets_nonl_ready(), ʹ첽ͨ
ӷ, ʹ֮ʽʽܽһ, һACL_VSTREAM ͬʱͬ첽

48.2) util/net: acl_vstream_async.c/acl_vstream_async.h, Ϊ acl_vstream.c Ӹײṩ˽ӿڣԸ첽
ĲӼˣԭ첽еģʽµ첽еģʽ

47) 2006.8.25
47.1) util/net: acl_vstream_async.c/acl_vstream_async.h, ޸һBUG, ݼ acl_vstream_async.h .

46 ) 2006.8.11
46.1) util/servtmpl: acl_workq.c/acl_workq.h, йӳعܵĵ

45) 2006.7.28
45.1) util/code/, BASE64ʵַ

44) 2006.7.27
44.1) util/engine/acl_event.c, ˲ڵж
44.2) util/master/master_conf.c, ӷļ

43) 2006.7.24
43.1) app/weboe/: ڴй©, Ҿ˴ģʱѹԼƻԲ, ˵
ʽܿȶ.

42) 2006.7.23
42.1) ŻBUG޸, event_thr.c->event_thr_loop() Ŀ, ı dipatch_fn() ĺӿڲ,
ӶһЩӵ׳ͷŲ, Ҽ˼.
42.2) event_thr.c->event_thr_loop() ּĳһĳͻ.

41) 2006.7.11
41.1) ˲ʹܵõ

40) 2006.7.5
40.1) Bugfix: acl_vstream_async.c->__handle_line_data() Ȼһ, Ѿ

39) 2006.7.3 night
39.1) Feature: ͨ޸ __handle_line_data(), acl_vstream_async_buf_new() һִЧ,
ƶ.
39.2) Feature: ͨ acl_vstream_async_buf_new() Ĳб޸ __handle_line_data() 
һݵĳȵֵ, Ӷһ⻺.

38) 2006.7.2
38.1) Bugfix: ޸첽ͨſһ, 첽һеĺ: util/net/acl_vstream_async.c 
  __handle_line_data() .
38.2)  util/stdlib/acl_vstream.c, .h е acl_vstream_vstring_readn Ϊ:acl_vstream_vstring_append_readn

37) 2006.6.23
Feature: 첽ͨŵĽӿ: util/stdlib/acl_vstream.c, util/engine/acl_events.c,
util/net/acl_vstream_async.c.  ACL_VSTREMA ṹע: close_handle_lnk, Ա֤
رǰȵøѾڸע;  ACL_EVENT ṹ߳Ա
: lock_mutex, ڴ߳¼ѭи, ڽ͵¼ѭ, Ϊ
˸, Ӷʹ acl_vstream_async.c вڴ߳ĵ, ǽĵ acl_events.c.

36) 2006.6.15
Bugfix: ޶й̲߳ȫĺ: util/net/myaddinfo.c
Bugfix: util/net/acl_vstream_net.c еacl_vstream_connect() ڵ acl_vstream_fdopen()
ʱ˳д

35) 2006.6.13
̽: app/squid/probe

34) 2006.6.8
߳̿ⲿ.
Feature: ̶߳д, util/ipc/acl_thread_rwlock.c, acl_thread_rwlock.h
Feature: ǰڴDBøÿ

33) 2006.6.7
Bugfix: ޶Щڵ acl_vstream_fdopen() ʱĸ˳BUG!!!, ˺ô󾢲ҳ˴:(
Test: ̳߳ؿʵ(app/thread_server/server2, server3)

32) 2006.6.6
дһ߳̿ʵ(app/thread_server/server1)

31) 2006.6.4
Ϊ˱⺯ֿռͻ޸˴ĺкǰ ACL_ ǰ׺ͬʱ
Դǰ acl_ ǰ׺ˣĹΪ acl_project . ---zsx
ע acl  advanced c library Ӣļд.
     ʹ߾ʹ ACL_ ͷĺͣĺͲ֤ļԡ

30) 2006.5.30
Feature(debug status): 1) һ̳߳صĿ: servertmpl/workq.c, workq.h, worker.c, worker.h
Name: ȷԺ󽫱Ϊ : ACL(߼ C )

29) 2006.4.30
Portable: ѯеMakefileееıѡ -gdwarf  -gԼµ
Ҫ˰һʱ:(

28) 2005.12.14
Feature: 1) ṩһ vstream_fseek , ºЧʸ, Ұѵһ汾 vstream_fseek
Ϊ vstream_fseek2. ǿ˲Դ.

27) 2005.12.13
Feature: 1)  vstream_fseek 

26) 2005.10.24
Feature: 1)  util/stdlib/filedir/make_dirs.c ļ, ӶԴһ༶Ŀ¼

25) 2005.10.8
Bugfix: 1)  app/master/multi_proxy/multi_proxy.c , ڴļʱûнļָļ
Ľβ,  O_APPEND, ʹÿδļʱʹļָָļ.
Feature: 1)  app/master/master.c д master ̵ pid Ĺ, ʹ stop.sh
֮Ľűֹͣؽ.

24) 2005.9.27
Feature: 1)  multi_server.c ˼¼ϢĹ

23) 2005.9.26
Bugfix: 1) ޸ __proc(thread)__event_loop() еһ,  nowait != 0 ʱ, Ӧָ tvp
ֵӦΪָ, ᵼº select() Զȴ; 2) multi_server.c һ,
һ switch() ȱһ break.
Feature: 1) ޸ multi_proxy.c ļ, ʹøͨ:)

22) 2005.9.25
Feature: 1)  multi_server.c, ˶ʱĴ, ڴģʽĶʱǳмֵ.

21) 2005.9.22
Bugfix: 1) ߽ͨ(ûֱΪ2, 4, 4096, 8192)ʱ, ִ(multi_proxy)
˳, ϸ, Ƿ¼(event.c), ⲿͨú
event_disable_readwrite()رÿɶдʱ, Ϊ ..._event_loop() õʱδ
, Ͳ˲ͬ, Ӷɵ select() ʱصĴ: зǷ
,  EVENT Ľṹʱ,  ..._event_loop() еľֲ,
޸ĵļҪ: event.c, event.h

20) 2005.9.19
Portable: 20.1) can run on HP-UX

19) 2005.9.11
Workaround: 19.1) ʹ multi_server.c ܵĴ, 19.2) ޲ multi_server.c еļ
 bug

18) 2005.9.10
Workaround: 18.1) һЩʽ, ȥһһЩõı

17) 2005.9.9
Bugfix: 17.1) ޸ events.c еһ bug
Feature: 17.1) һԳ: single_proxy/

16) 2005.9.6
Workaround: 16.1) ֲ SUN ƽ̨, ޸˼

15) 2005.9.5
Feature: 15.1)  VSTREAM_STDIN, VSTREAM_STDOUT, VSTREAM_STDERR ׼

14) 2005.9.4
Workaround: 14.1) ʹ multi_server() ܿʹ
Bugfix: 14.1) ޸ servtmpl/event.c еһ bug: пõʱ, Ҫ
select() ҪʱȴʱΪ 0.

13) 2005.8.28
Workaround: 13.1) һЩдʽ, ͬʱ throttle_delay : ӽ̷
˳, ֹ̽ͣӦķʱΪ throttle_delay.

12) 2005.8.27
Workaround: 12.1) ȳɹ single_server ķģʽ:)

11) 2005.8.24
Workaround: 11.1) ޸ events.c/.h, ʹֽ֧̳֮صģʽ, ڽ̳ģʽ²ҪǷ
æ״̬; ̳߳ģʽҪǷæ״̬; 11.2)  util/master/ µļ,
ʵ˰פģʽ.

10) 2005.8.21
Bugfix: 10.1) ޸ xinetd_cfg.c еһ
Feature: 10.1)  xinetd_cfg.c/.h  xinetd_cfg_index(...) 
Workaround: 10.1)  master/ ⺯

9) 2005.8.15
Workaround: 9.1) ʹ master :) util/master/: master_vars.c, master_params.c,
master_params.h, master_conf.c, master_service.c, master.h, master_ent.c, master_avail.c,
master_sig.c, master_spawn.c, master_status.c,  master_wakeup.c

8) 2005.8.14
Workaround: 8.1)  master ɹ:), app/master/: master.c

7) 2005.8.9
Bugfic: 7.1) ޲һܻڴй©Ĵ, master_ent.c
Workaround: 7.1)  master/ Ŀ¼µļ, ʣ mail_flow.c ȼļδ.

6) 2005.8.8
Workaround: 6.1) ޸Ŀ¼ṹ,  stdlib/ Ŀ¼½ proc_specific/ Ŀ¼, Ŀ¼󽫴
ڽ̱ʱõĿ⺯, Щ⺯̲߳ȫ; 6.2)  watchdog ĳƶרŵ
ԳĿ¼(test_util/watchdog/),  test_util/inet/; 6.3) ޸ͷļ(cgi-rep.h 
cgi-util.h),  C++ õ֧.; 6.4)  master  (master/)

5) 2005.7.29
Feature: 5.1) 첽ӡ첽еĶʱ(΢첽SOCKET߱).
event.h, event.c, vstream_async.c, vstream_async.h, readline_async/, tcp_proxy/.

4) 2005.7.25
Feature: 4.1)  vstream.c ,  vstream_vstring_readn(), Ӷ vstring 
; 4.2)  vstream_async.c  vstream_async_gets(), ӶԽһΪ¼֪ͨ,
һʱŻ֪ͨӦó, ʵ˶ȡзģʽ.
Test: 4.1)  app/ Ŀ¼˹: readline_async/, ڲ첽ȡݵĿ⺯.

3) 2005.7.18
Workaround: 3.1) ޸ vstream_net.c/h ļ,  vstream_listen2 ޸Ϊ vstream_listen_ex, 
һ block_mode Ĳ, Ӷʹȫطģʽ; 3.2) vstream_async.c,  vstream_listen_ex
 NON_BLOCKING .

2) 2005.7.10
Workaround: 2.1) ¸д˸ Makefile ļ, Զӻȡ gcc 뻹 g++ ;
2.2) ޸ĸ .c  .h ļ,  g++ ʱĴ뾯, ʹ÷Ӧһ
Щ C++ ĳ.

1) 2005.7.9
Bugfix: ޶ servtmpl/events.c е BUG, 1.1) event_enable_write()  event_enable_read()
˷ֹһβδ״̬Ϊе; 1.2) event_loop() ǰʱû
нæ״̬.
