Diff for /parser3/ChangeLog between versions 1.245 and 1.249

version 1.245, 2026/10/12 02:05:39 version 1.249, 2026/11/09 02:05:17
Line 1 Line 1
   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  2026-10-11  moko
   
         * tests/: 467.html, results/467.processed: ^sse[] demo for          * tests/: 467.html, results/467.processed: ^sse[] demo for
Line 22 Line 419
   
 2026-10-10  moko  2026-10-10  moko
   
         * tests/redis/: config.p, ok.log: minor code cleanup in tests          * 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,          * tests/: 464.html, 465.html, 466.html, results/464.processed,
           results/465.processed, results/466.processed: tests for            results/465.processed, results/466.processed: tests for
Line 38 Line 436
   
         * src/classes/amqp.C: more correct amqp exception handling          * 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,          * src/: classes/amqp.C, lib/memcached/pa_memcached.C,
           lib/memcached/pa_memcached.h, types/pa_vmemcached.C: minor memory            lib/memcached/pa_memcached.h, types/pa_vmemcached.C: minor memory
           licks fixed, memcached get uses mget to avoid memory leak            licks fixed, memcached get uses mget to avoid memory leak

Removed from v.1.245  
changed lines
  Added in v.1.249


E-mail: