--- parser3/ChangeLog 2026/10/05 02:05:16 1.244 +++ parser3/ChangeLog 2026/11/09 02:05:17 1.249 @@ -1,5 +1,580 @@ +2026-11-05 moko + + * operators.ru.txt, operators.txt: ^mail:parse[string|file] added + (related to feature #1318) + + * src/types/pa_vmail.C: fix for libgmime + + * buildall: fix shipped glib build under modern Linux + + * src/: classes/mail.C, types/pa_vmail.C, types/pa_vmail.h: + ^mail:parse[string|file] added (implements feature #1318) + +2026-11-04 moko + + * operators.ru.txt, operators.txt: actualized + + * src/: classes/math.C, lib/md5/Makefile.am, lib/md5/md5.vcproj, + lib/md5/pa_xxhash.c, lib/md5/pa_xxhash.h: + ^math:xxhash[method;string|file;options] added (implements + feature #1314) + +2026-11-03 moko + + * tests/: 345.html, results/345.processed: file:move / file:rmdir + tests added (related to feature #1317) + + * operators.ru.txt, operators.txt: actualized + + * src/: classes/file.C, include/pa_file.h, main/pa_file.C: + ^file:rmdir[dir-name; $.exception(false) ] added (related to + feature #1317) + + * src/main/: pa_file.C, pa_os.C: the existing file is replaced + under Windows (contributed by G_Z, implements feature #1317) + + * tests/: 478.html, results/478.processed: single-bytes charset + string functions test added (related to feature #7) + + * tests/: 185.html, results/185.processed: more ^string.right() + tests (related to feature #7) + + * src/main/pa_string.C: fix right behavour on truncated UTF-8 - + make it similar to mid (related to feature #7) + + * tests/: 185.html, results/185.processed: long UTF-8 tests + (related to feature #7) + + * src/: classes/string.C, include/pa_string.h, main/pa_string.C: + ^string.right(n) optimized, length calculation removed from left + and min (implements feature #7) + +2026-11-02 moko + + * tests/: 207.html, results/207.processed: min/max tests added + (related to feature #1316) + + * src/classes/math.C: ^math:min(n1;n2;...) and ^math:max(n1;n2;...) + added (implements feature #1316) + +2026-11-01 moko + + * tests/: 185.html, 477.html, results/185.processed, + results/477.processed: rpos UTF-8 and pos/rpos Windows-1251 tests + added (related to feature #1180) + + * src/: classes/string.C, include/pa_string.h, main/pa_string.C: + ^string.rpos[substing] added (implements feature #1180) + +2026-10-31 moko + + * src/classes/op.C: fix_line_breaks called for process code if + requied as compiler treats \r as part of the name (implements + feature #850) + +2026-10-30 moko + + * tests/: 475.html, httpd/response-timeout/site/config.p: tests + tuned a bit (reduce memory requirements) + + * src/: main/pa_http.C, targets/cgi/parser3.C: non-blocking reading + for the request on 503 error to avoid connection reset (related + to feature #1312) + + * tests/httpd/code-cache/run_tests.sh: FreeBSD tune + + * tests/httpd/code-cache/run_tests.sh: tuned for FreeBSD + + * tests/httpd/max-connections/run_tests.sh: FreeBSD fixes + + * tests/httpd/max-connections/run_tests.sh: adopted for FreeBSD + + * tests/httpd/response-timeout/run_tests.sh: fixed in parser3 + + * src/main/pa_globals.C: libxml errors for threads fixed + + * tests/httpd/response-timeout/run_tests.sh: test tune for FreeBSD + + * src/main/pa_http.C: option if no cloexit + + * tests/httpd/response-timeout/: run_tests.sh, site/hang.sh: minor + updates + + * tests/httpd/response-timeout/: ok.log, run_tests.sh, + site/config.p, site/detach.sh, site/hang.sh: $response:timeout + httpd tests (related to feature #1312) + +2026-10-29 moko + + * src/main/pa_threads.C: FreeBSD fix + + * src/: include/pa_socks.h, main/pa_http.C, main/pa_socks.C: + connect also can be interrupted - pa_sock_connect added (related + to feature #1312) + + * tests/httpd/max-connections/: ok.log, run_tests.sh, + site/config.p: $HTTPD.max-connections test added (related to + feature #1312) + + * tests/: 475.html, results/475.processed: $response:timeout test + added (related to feature #1312) + + * configure.ac, src/include/pa_config_auto.h.in, + src/include/pa_config_includes.h, src/main/pa_threads.C: more + FreeBSD fixes + + * src/main/pa_os.C: FreeBSD fixes + + * src/: include/pa_config_includes.h, include/pa_os.h, + include/pa_version.h, main/pa_os.C, main/pa_threads.C: FreeBSD + timers support + + * configure.ac: +FreeBSD timers support + + * src/include/pa_version.h: response-timeout added to parser + features list + + * configure.ac: rt required for timer_create on older linux + + * src/: classes/op.C, include/pa_os.h, main/pa_os.C, + main/pa_xml_io.C: interruption tuned (related to feature #1312) + + * buildall: avoid aclocal + +2026-10-28 moko + + * configure.ac: gettid check fixed + + * src/: include/pa_exec.h, main/pa_exec.C, main/pa_http.C, + targets/cgi/parser3.C: exec children are now also kill on + response timeout (related to feature #1312) + + * src/: classes/op.C, include/pa_exception.h, main/pa_request.C: + Interrupted exception should be uncatchable, as recoursion + (related to feature #1312) + + * src/: include/pa_request.h, main/execute.C, main/pa_request.C, + targets/cgi/parser3.C, types/pa_vmethod_frame.C: request: + finterrupted added, if fskip was overwritten, the next set_skip() + restores SKIP_INTERRUPTED from it (related to feature #1213) + + * src/: include/pa_globals.h, main/pa_globals.C, main/pa_request.C, + targets/cgi/pa_sapi_info.h, targets/cgi/parser3.C: + RequestController optmized out (related to feature #1312) + + * src/: classes/op.C, classes/websocket.C, include/pa_os.h, + include/pa_sapi.h, main/execute.C, main/pa_os.C, + main/pa_sql_driver_manager.C, main/pa_stylesheet_manager.C, + targets/apache/mod_parser3_core.C, targets/cgi/pa_sapi_info.h, + targets/cgi/parser3.C, targets/isapi/parser3isapi.C, + types/pa_vresponse.C, types/pa_vresponse.h: $response:timeout + implemented, Linux only (related to feature #1312) + +2026-10-27 moko + + * operators.ru.txt, operators.txt, src/targets/cgi/parser3.C: + sigpipe handler now empty and $MAIN:SIGPIPE(1) ignored: it was + not called in cgi mode anyway, as parser does not write anything + until all code is executed, but it was called in ^exec if called + program ignore stdin. Not SIG_IGN, as the ignored signal is + inherited by the executed programs (related to feature #1312) + + * src/targets/cgi/parser3.C: pa_log now uses open/single + write/close insead of fopen/fwrite/fclose (as they async signal + safe) (related to feature #1312) + +2026-10-26 moko + + * src/targets/cgi/parser3.C: logging for 503 errors added (related + to feature #1312) + + * src/: include/pa_http.h, main/pa_http.C, main/pa_request.C, + targets/cgi/pa_sapi_info.h, targets/cgi/parser3.C, + types/pa_vstatus.C: $HTTPD.max-connections added (implements + feature #1312) + +2026-10-25 moko + + * tests/: 474.html, results/474.processed: more tests for json + $.distinct[all] + + * src/classes/json.C: replaced linar free key search with binary + search for $.distinct[all] + + * src/classes/image.C: Measure_budget added to limit the work a + measured file can require + +2026-10-23 moko + + * etc/auto.p.in: $LIMITS commented to allow their specification + from outside when using default auto.p + + * src/: include/pa_os.h, include/pa_request.h, main/pa_request.C, + types/pa_vclass.C, types/pa_vclass.h, + types/pa_vstateless_class.C, types/pa_vstateless_class.h, + types/pa_vvoid.h: thread safety for @conf: THREAD_LOCAL specified + where should be, CONF_OPTION used for bool values, + SYMBOLS_CACHING used only for native methods names to aboid + Symbols modifications in threads. + + * buildall: avoid autotools calls when checked from git (related to + feature #1268) + + * src/lib/gd/: gif.h, gifio.C: multithreading support, upstream + changes (related to feature #1268) + + * etc/auto.p.in, src/include/pa_request.h, src/main/pa_request.C, + src/types/pa_vclass.C, src/types/pa_vclass.h: @mime-types[] + replaced with @GET_MIME-TYPES[] for better compatibility (related + to feature #1311) + + * tests/473.html: @mime-types[] -> @GET_MIME-TYPES[] (related to + feature #1311) + + * tests/: 464.html, 465.html, results/464.processed, + results/465.processed: $response:started tested (related to + feature #1306) + + * tests/: 473.html, results/473.processed: test for @mime-types[] + added (related to feature #1311) + + * etc/auto.p.in, src/include/pa_request.h, src/main/pa_request.C: + optimization: $MAIN:MIME-TYPES is replaced with @mime-types[], + which is called only if needed (implements feature #1311) + + * src/main/pa_http.C: recycle headers buffer if nothing left + +2026-10-22 moko + + * src/: classes/op.C, types/pa_vclass.h: MAIN native methods are + cached in a singleton + + * src/types/pa_vregex.C: minor tuning + + * src/types/: pa_vregex.C, pa_vregex.h: compiled regexe patterns + are now cached and can be reused: in a loop, by the other threads + and by the next httpd requests + + * buildall: cmake check added + + * configure.ac: cmake builds .a, not .la + + * buildall: avoid extra 16Kb stack memory clear (increases memory + consumption when many threads) + +2026-10-19 moko + + * src/: include/pa_exception.h, include/pa_memory.h, + main/pa_exception.C, main/pa_memory.C, main/pa_xml_exception.C, + targets/apache/mod_parser3_core.C, targets/cgi/parser3.C, + targets/isapi/parser3isapi.C: Temp_gc_references added and used + + * src/main/pa_http.C: increase listen queue as websocket support + was added + + * src/targets/cgi/parser3.C: minor logging fixes + + * src/: classes/inet.C, classes/reflection.C, include/pa_common.h, + lib/smtp/smtp.C, main/execute.C, main/pa_common.C, main/pa_dir.C, + main/pa_exception.C, main/pa_globals.C, main/pa_int.C, + main/pa_random.C, main/pa_request.C, main/pa_string.C, + main/pa_xml_exception.C, targets/apache/mod_parser3_core.C, + targets/cgi/pa_sapi_info.h, targets/cgi/parser3.C, + targets/isapi/parser3isapi.C, types/pa_vdate.C, + types/pa_vdouble.h, types/pa_vmail.C: pa_snprintf and + pa_vsnprintf are now called explicitly, snprintf/vsnprintf macros + removed only Windows _vsnprintf needs size-1, thus "+1 for faulty + snprintfs" removed. + +2026-10-18 moko + + * src/: include/pa_socks.h, main/pa_socks.C: hopefully final turing + for EINTR handling + + * src/: include/pa_socks.h, main/pa_http.C, main/pa_socks.C, + main/pa_websocket.C: EINTR handling tuned once again + + * src/: include/pa_socks.h, main/pa_http.C, main/pa_os.C, + main/pa_socks.C, main/pa_websocket.C: pa_sock_recv / pa_sock_send + added to continue if interruped (usually by GC) + +2026-10-17 moko + + * tests/httpd/websocket-app/: config.p, index.html, run_server.sh: + websocket demo added (related to feature #1310) + + * tests/httpd/site/config.p: comment tuned + + * tests/httpd/: 044.txt, ok.log, site/config.p, site/form.html: + testing the $form is refilled after the POST is read + + * src/types/: pa_vform.C, pa_vform.h: the POST content should be + checked in refill confition, as is read after @conf, where $form + can be accessed (for query string only) + +2026-10-16 moko + + * src/classes/amqp.C: repair channel tuned: the new channel gets a + new number as the deliveries the broker has sent on the dead one + may still be in the library's buffers (related to feature #1288) + + * tests/results/: 323.processed, 421.processed: tests results + updated after websocket class was added (related to feature + #1310) + + * src/: classes/form.C, classes/websocket.C, include/pa_request.h, + main/pa_request.C, main/pa_websocket.C: post_max_size moved to + request:configure_admin and used in websocket as well, warnings + war (related to feature #1310) + + * src/: classes/Makefile.am, classes/classes.vcproj, + include/Makefile.am, lib/md5/Makefile.am, lib/md5/md5.vcproj, + main/Makefile.am, main/main.vcproj: project files updates for + websocket (RFC 6455) support (related to feature #1310) + + * src/: classes/classes.C, classes/math.C, classes/websocket.C, + include/pa_http.h, include/pa_request.h, include/pa_socks.h, + include/pa_websocket.h, lib/md5/pa_sha1.C, lib/md5/pa_sha1.h, + lib/md5/pa_sha2.c, lib/md5/pa_sha2.h, main/pa_http.C, + main/pa_request.C, main/pa_socks.C, main/pa_websocket.C, + targets/cgi/pa_sapi_info.h, targets/cgi/parser3.C, + types/pa_vresponse.C, types/pa_vresponse.h: websocket (RFC 6455) + support added (implements feature #1310) sha1 code moved to + lib/md5. + +2026-10-15 moko + + * src/classes/response.C, src/include/pa_request.h, + src/main/pa_request.C, tests/464.html, tests/465.html, + tests/466.html, tests/467.html, tests/468.html, + tests/results/468.processed: ^response:send[] -> + response:stream[] (related to feature #1306) + +2026-10-14 moko + + * src/: include/pa_http.h, include/pa_socks.h, main/pa_http.C, + main/pa_socks.C: select -> poll + + * tests/results/: 175.processed, 180.processed, 195.processed, + 298.processed, 380.processed: try-catch-comment whitespace tuned + + * tests/memcached/: 001.html, ok.log: tests for array support in + memcached:mget added (related to feature #1309) + + * src/classes/memcached.C: memcached:mget - array support added + (implements feature #1309) + + * tests/: 468.html, results/468.processed, results/auto.p: many + more tests for get_element/get_element4call added (related to + feature #1307) + +2026-10-13 moko + + * src/: classes/json.C, classes/op.C, classes/reflection.C, + include/pa_request.h, include/pa_string.h, main/pa_request.C, + main/untaint.C, types/pa_vresponse.C, types/pa_vresponse.h: + $response:untaint added, it allows to change response data + untainting lang (implements feature #1308) get_untaint_lang + renamed to String::name2lang, String::lang2name added + + * src/: include/pa_request.h, main/pa_request.C: cleanup: response + untainting lang can't be changed since Temp_lang removal (#1091), + thus save/restore no longer required + + * src/types/pa_vresponse.C: VResponse joins "open key class list" + (related to feature #1307) + + * tests/: memcached/003.html, memcached/ok.log, redis/006.html, + redis/ok.log: more tests for key/method priority added + + * src/types/: pa_varray.h, pa_vconsole.h, pa_vcookie.C, pa_venv.C, + pa_vform.C, pa_vhash.h, pa_vhashfile.h, pa_vmemcached.C, + pa_vredis.h, pa_vrequest.C, pa_vstateless_class.h, pa_vstatus.C, + pa_vstring.h, pa_vtable.C, pa_vtable.h: + MAYBE_GET_SPECIAL_OR_METHOD and MAYBE_GET_SPECIAL added ans used + to avoid OPTIMIZE_BYTECODE_GET_ELEMENT__SPECIAL defines; used in + memcached and hashfile to allow keys with method names + +2026-10-11 moko + + * tests/: 467.html, results/467.processed: ^sse[] demo for + ^response:send[] added (related to feature #1306) + + * tests/httpd/: run_tests.cmd, run_tests.ps1: + run_tests.cmd/run_tests.ps1 added to test httpd under Windows + + * src/main/: pa_common.C, pa_dir.C, pa_file.C: pa_utf16_encode no + longer throws exception on bad UTF-8 to avoid undesired file + functions exceptions under Windows (errno is set instead) + + * tests/httpd/: ok.log, run_tests.sh, site/config.p, + site/run_server.sh: httpd run_tests.sh now runs/stops parser + webserver, default auto.p used + + * etc/auto.p.in: $CHARSETS fully commented to allow redefinition in + tests + + * src/main/pa_http.C: socket timeout used not only under windows, + but also in linux threaded mode, where alarm is not available + +2026-10-10 moko + + * tests/: memcached/001.html, memcached/config.p, memcached/ok.log, + redis/config.p, redis/ok.log: minor code cleanup in tests + + * tests/: 464.html, 465.html, 466.html, results/464.processed, + results/465.processed, results/466.processed: tests for + ^response:send[part] added (related to feature #1306) + + * src/: classes/response.C, include/pa_request.h, + main/pa_request.C: ^response:send[part] added (implements feature + #1306) + + * src/: include/pa_request.h, main/pa_request.C, + targets/apache/mod_parser3_core.C, targets/cgi/parser3.C, + targets/isapi/parser3isapi.C: header_only param optimized out + + * src/classes/amqp.C: more correct amqp exception handling + + * tests/memcached/: 001.html, 002.html, config.p, ok.log, + run_tests.sh: memcached tests commited + + * src/: classes/amqp.C, lib/memcached/pa_memcached.C, + lib/memcached/pa_memcached.h, types/pa_vmemcached.C: minor memory + licks fixed, memcached get uses mget to avoid memory leak + + * src/targets/cgi/parser3.C: pooled fix for memcached + + * src/: classes/amqp.C, classes/memcached.C, classes/redis.C, + types/pa_vamqp.h, types/pa_vmemcached.h, types/pa_vredis.h: amqp, + redis, memcached are now Pooled - to close connection if no + release was called + +2026-10-09 moko + + * tests/: 463.html, results/463.processed: tests for a constructor + called as a method of a created object + + * src/: classes/hashfile.C, types/pa_vhashfile.C, + types/pa_vhashfile.h, types/pa_vimage.h, types/pa_vmemcached.C, + types/pa_vregex.C: more checks for a constructor called as a + method of a created object + + * operators.ru.txt, operators.txt: amqp and redis documented + (related to feature #1288 and #1304) + + * src/: classes/amqp.C, types/pa_vamqp.h: warning war: + librabbitmq>0.12 by default, PA_AMQP_COMPAT added for older + versions (related to feature #1288) + + * src/: classes/classes.vcproj, include/pa_config_fixed.h, + lib/pcre/pcre_internal.vcproj, main/main.vcproj, + main/pa_globals.C, targets/apache/ApacheModuleParser3.vcproj, + targets/apache/ApacheModuleParser3Core.vcproj, + targets/cgi/parser3.vcproj, targets/isapi/parser3isapi.vcproj, + types/types.vcproj: msvc: hiredis added, pcre2 added under + windows (related to feature #1304) + + * buildall: pcre jit is not used anyway + + * tests/redis/: 001.html, 002.html, 003.html, 004.html, 005.html, + config.p, ok.log, run_tests.sh: tests for redis integration added + (related to feature #1304) + + * src/: classes/redis.C, types/pa_vredis.h: redis SSL support + added, similar to AMQP (related to feature #1304) + +2026-10-08 moko + + * configure.ac: WITH_AMQP_SSL check tuned + + * src/classes/amqp.C, src/include/pa_config_auto.h.in, + src/include/pa_config_fixed.h, src/include/pa_version.h, + configure.ac: +WITH_REDIS_SSL, WITHOUT_AMQP_SSL -> WITH_AMQP_SSL + + * buildall: use gmake under FreeBSD + + * configure.ac: configure: Checks for libraries moved before + features as redis require -lm on FreeBSD + +2026-10-07 moko + + * tests/460.html: sort added + + * tests/results/425.processed: PCRE2 10.44 -> PCRE2 10.49 + + * src/: classes/file.C, include/pa_version.h, + targets/cgi/parser3.C, targets/isapi/parser3isapi.C, + types/pa_venv.C: PARSER_VERSION_WITH_FEATURES added and used + (implements feature #1305) + + * buildall: --with-amqp, --with-redis added, --with-pic now by + default, gc: libatomic_ops-7.6.2 -> libatomic_ops-7.10.0, + gc-8.0.4 -> gc-8.2.12, pcre2-10.44 -> pcre2-10.49 gc, pcre, + rabbitmq-c, hiredis - now all in lib folder (related to feature + #1268) + + * src/classes/redis.C: redis file commands prefix changed to f- + (related to feature #1304) + + * configure.ac: hiredis is build without libtool (related to + feature #1304) + + * configure.ac: amqp_ssl_socket.h check added to defune + WITHOUT_AMQP_SSL (related to feature #1288) + + * src/classes/redis.C: file- prefix implemented to get file result + from any redis command (related to feature #1304) + + * src/classes/: amqp.C, file.C, redis.C: more headers reoder and + cleanup + + * src/classes/redis.C: headers cleanup and reorder (related to + feature #1304) + + * configure: autoreconf after redis was added (related to feature + #1304) + + * tests/results/: 323.processed, 421.processed: tests results + updated after redis class was added (related to feature #1304) + + * buildall, configure.ac: --with-redis option added to enable redis + support using hiredis (related to feature #1304) + + * src/: classes/Makefile.am, classes/classes.C, + classes/classes.vcproj, classes/redis.C, + include/pa_config_auto.h.in, targets/apache/Makefile.am, + targets/cgi/Makefile.am, types/Makefile.am, types/pa_vredis.h: + class with redis support added (implements feature #1304) + +2026-10-06 moko + + * src/types/pa_vtable.C: compile fix with FEATURE_GET_ELEMENT4CALL + undefined + + * tests/httpd/code-cache/: ok.log, run_tests.sh, site/cached.p, + site/config.p, site/extend.p, site/late.p, site/tests.p: tests + for code caching in httpd mode (related to feature #1302) + + * tests/: 182.html, results/182.processed: test for + ^reflection:used[] added (related to feature #1303) + + * tests/results/415.processed: actualized after Bison upgrade + 2026-10-05 moko + * src/classes/reflection.C: ^reflection:used[] added, list of + @USE-d files (implements feature #1303) + + * src/: include/Makefile.am, include/pa_code_cache.h, + include/pa_request.h, main/Makefile.am, main/compile.C, + main/compile.y, main/compile_tools.h, main/main.vcproj, + main/pa_code_cache.C, main/pa_request.C, targets/cgi/parser3.C, + types/pa_vstateless_class.C: code caching implemented for httpd + mode: it records and then replays the compilation using the + cached methods (implements feature #1302), pa_code_cache.h/.C + added + * src/main/compile.tab.C: updated with Bison 3.8.2 from Debian 13 * src/main/compile.y: define parse.error verbose used for newer @@ -65,6 +640,10 @@ * src/main/untaint.C: '\' is a path separator everywhere, tainting updated (related to feature #1300) + * tests/console/: ok.log, run_tests.sh, 001/config.p, 001/lib.p, + 001/page.html, 002/auto.p, 002/page.html: tests for args handling + in console mode (related to feature #1300) + * src/targets/cgi/parser3.C: '\' as a path separator for config and log options (related to feature #1300)