--- parser3/ChangeLog 2024/12/29 03:45:35 1.212 +++ parser3/ChangeLog 2026/10/05 02:05:16 1.244 @@ -1,3 +1,956 @@ +2026-10-05 moko + + * 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 + Bison + +2026-10-03 moko + + * tests/: 436.html, 462.html, results/436.processed, + results/462.processed: ", actual filename" tested (related to + feature #1299) + + * src/: classes/file.C, include/pa_file.h, main/pa_exec.C, + main/pa_file.C: avoid the duplicated ", actual filename + " when untainting did not change the original + (related to feature #1299) + + * tests/results/293.processed: test result updated after js + tainting tuning (related to feature #1301) + + * tests/: 462.html, results/462.processed: test for tuned json + tainting added (related to feature #1301) + + * src/main/untaint.C: json tainting tuned (implements feature + #1301) + +2026-10-02 moko + + * tests/: 461.html, results/461.processed: test for ^file:list[ + $.exception(true) ] feature added (related to feature #1084) + + * src/: classes/file.C, include/pa_dir.h, main/pa_dir.C: + ^file:list[no-such-directory] throws exception if + $.exception(true) is passed (implements feature #1084) + + * src/: include/pa_os.h, main/pa_os.C: pa_set_errno added which + sets errno as CRT functions for unix compatibility (related to + feature #1084) + + * src/: classes/file.C, include/pa_file.h, main/pa_file.C, + main/pa_request.C: path_cmp added with strncasecmp under Windows + (related to feature #1300) + +2026-10-01 moko + + * src/classes/file.C, tests/460.html, tests/results/460.processed: + ^file:diskpath[] added, returns full disk for web or relative + path; file:// and C:\ resolved as well, tests updated + (implemented feature #58) + + * tests/: 460.html, results/460.processed: tests for filenames + tainting and that path scheme should not be tainted (related to + feature #1299) + + * src/: include/pa_file.h, include/pa_request.h, main/pa_file.C, + main/pa_request.C: tainting check in file:// added for -f and + similar as well (related to feature #1299) + + * src/: include/pa_common.h, include/pa_file.h, + include/pa_string.h, main/pa_common.C, main/pa_file.C, + main/pa_string.C: file:// and others schemes should not be from + external sources aka tainted (related to feature #1299) + + * src/main/untaint.C: '\' is a path separator everywhere, tainting + updated (related to feature #1300) + + * src/targets/cgi/parser3.C: '\' as a path separator for config and + log options (related to feature #1300) + +2026-09-30 moko + + * tests/: 459.html, results/459.processed: tests added for '\' is a + path separator on all platforms (related to feature #1300) + + * src/main/: pa_file.C, pa_request.C: file://server/share/path + support under windows added (related to feature #1299) + + * src/include/: pa_file.h, pa_request.h, pa_request_info.h: + '/'-normalization documented (related to feature #1300) + + * src/: classes/file.C, include/pa_common.h, + include/pa_request_info.h, main/pa_common.C, main/pa_file.C, + main/pa_request.C, targets/apache/mod_parser3_core.C, + targets/cgi/parser3.C, targets/isapi/parser3isapi.C, + types/pa_vrequest.C: '\' was a path separator on Linux for file + path functions only, now for file operations as well; file names + are '/' separated internally, document root is also kept without + the trailing '/' (implements feature #1300) + + * src/include/pa_string.h: strrchr added + +2026-09-29 moko + + * tests/: 459.html, results/459.processed: tests for file functions + prefix checks added; file:// prefix tests (related to feature + #1299) + + * src/: classes/file.C, classes/table.C, classes/xdoc.C, + include/pa_file.h, include/pa_request.h, main/execute.C, + main/pa_file.C, main/pa_request.C, targets/cgi/parser3.C: all + file functions now check prefix, http:// and parser:// is + accepted only where allowed; file:// prefix added to specify OS + disk path (implements feature #1299) + +2026-09-28 moko + + * src/lib/ltdl/: configure.ac, ltdl.vcproj: ltdl: assertions now + disabled in a release build, NDEBUG added to MSVC release build + + * src/main/: pa_request.C, pa_xml_io.C: http:// and file:// must be + tested as prefixes, last rsplit(hpath, '/') documented as OK. + + * src/main/: pa_file.C, pa_request.C: regression: / should be + checked first (related to feature #941) + + * src/main/pa_file.C: whitespace + + * src/main/pa_request.C, tests/458.html, + tests/results/458.processed: comments and test for MSVC win64 + exception handling added + + * src/targets/cgi/parser3.vcproj: StackReserveSize changed to 40Mb + for MSVC, to allow full 3 levels of win64 Exception Handling + + * tests/450-curl.html: windows support + + * src/: main/pa_request.C, targets/cgi/parser3.vcproj: + StackReserveSize changed to 32Mb for MSVC, stack usage + calculations documented (inluding ~10Kb for win64 Exception + Handling) + +2026-09-27 moko + + * src/targets/: apache/mod_parser3_core.C, cgi/parser3.C, + isapi/parser3isapi.C: fixed ExceptionAddress output for Windows + x64 + + * src/lib/ltdl/ltdl.c: restored local libltdl patch "fixes for + Win32 and broken FreeBSD (issue #45)" which was list during ltdl + update + + * src/lib/ltdl/: lt__argz.h, ltdl.vcproj: Windows build fix + + * src/: classes/image.C, main/pa_file.C, main/pa_request.C: minor: + %.15g + double replaced with %s + pa_(u)itoa. + + * src/main/pa_dir.C: file related functions moved to pa_file + (related to feature #941) + + * src/main/pa_dir.C: file related functions moved to pa_file + (related to feature #941) + + * src/: include/Makefile.am, main/Makefile.am, include/pa_common.h, + include/pa_dir.h, include/pa_exec.h, include/pa_request.h, + main/main.vcproj, main/pa_charset.C, main/pa_common.C, + main/pa_dir.C, main/pa_http.C, main/pa_request.C, + targets/cgi/parser3.C, types/pa_vhashfile.C, include/pa_file.h, + main/pa_file.C: file related functions moved to pa_file (related + to feature #941) + + * src/lib/ltdl/m4/argz.m4: no longer used + + * aclocal.m4, compile, config.guess, config.sub, configure, + depcomp, install-sh, ltmain.sh, missing, + src/include/pa_config_auto.h.in, src/lib/ltdl/COPYING.LIB, + src/lib/ltdl/Makefile.am, src/lib/ltdl/README, + src/lib/ltdl/aclocal.m4, src/lib/ltdl/argz.c, + src/lib/ltdl/argz_.h, src/lib/ltdl/config-h.in, + src/lib/ltdl/configure, src/lib/ltdl/configure.ac, + src/lib/ltdl/lt__alloc.c, src/lib/ltdl/lt__argz.c, + src/lib/ltdl/lt__dirent.c, src/lib/ltdl/lt__strl.c, + src/lib/ltdl/lt_dlloader.c, src/lib/ltdl/lt_error.c, + src/lib/ltdl/ltdl.c, src/lib/ltdl/ltdl.h, src/lib/ltdl/slist.c, + src/lib/ltdl/libltdl/lt__alloc.h, + src/lib/ltdl/libltdl/lt__argz_.h, + src/lib/ltdl/libltdl/lt__dirent.h, + src/lib/ltdl/libltdl/lt__glibc.h, + src/lib/ltdl/libltdl/lt__private.h, + src/lib/ltdl/libltdl/lt__strl.h, + src/lib/ltdl/libltdl/lt_dlloader.h, + src/lib/ltdl/libltdl/lt_error.h, + src/lib/ltdl/libltdl/lt_system.h, src/lib/ltdl/libltdl/slist.h, + src/lib/ltdl/loaders/dld_link.c, src/lib/ltdl/loaders/dlopen.c, + src/lib/ltdl/loaders/dyld.c, src/lib/ltdl/loaders/load_add_on.c, + src/lib/ltdl/loaders/loadlibrary.c, + src/lib/ltdl/loaders/preopen.c, src/lib/ltdl/loaders/shl_load.c, + src/lib/ltdl/m4/libtool.m4, src/lib/ltdl/m4/ltargz.m4, + src/lib/ltdl/m4/ltdl.m4, src/lib/ltdl/m4/ltoptions.m4, + src/lib/ltdl/m4/ltsugar.m4, src/lib/ltdl/m4/ltversion.m4, + src/lib/ltdl/m4/lt~obsolete.m4: autotools regenerated with + autoconf 2.72 and automake 1.17, bundled libltdl updated to the + one from libtool 2.5.4 (autoreconf -fi under Debian 13) + + * tests/results/457.processed: test results updated after + recursion_limit_try_restore added (related to feature #1298) + + * src/main/pa_request.C: const uint changed to more correct int + + * src/: main/execute.C, types/pa_vmethod_frame.h: + SINGLE_METHOD_FRAME implemented to reduce execute() stack frame. + Without it, compiler reserves stack frame for each ot 8 parser + frame variants (related to feature #1293) + +2026-09-26 moko + + * tests/: 457.html, results/457.processed: test and it's results + updated after recursion_limit_try_restore added (related to + feature #1298) + + * src/: classes/op.C, include/pa_request.h, types/pa_vxdoc.C: + recursion_limit_try_restore added to even more improve endless + recursion handling (related to feature #1298) + + * tests/: 456.html, 457.html, results/456.processed, + results/457.processed: tests for EXECUTE_RECURSION_RESERVE added + (related to feature #1298) + + * src/: classes/op.C, include/pa_exception.h, include/pa_request.h, + main/pa_request.C: to improve endless recursion handling + EXECUTE_RECURSION_RESERVE was added and used (implements feature + #1298) + +2026-09-25 moko + + * tests/: 455.html, results/455.processed: test for + ^reflection:stack[$exception] added (related to feature #1145) + + * src/: classes/op.C, classes/reflection.C, include/pa_request.h, + main/pa_request.C: ^reflection:stack[$exception] now supported + within catch code (implements feature #1145) + + * src/main/pa_common.C: writing big files using chunks to bypass + Windows 2Gb limit (fixes bug #1297) + + * tests/: 453.html, 454.html, results/453.processed, + results/454.processed: tests for bug #1082 added: preserving the + original stack trace after handling a nested exception in catch; + reporting the correct stack trace for a new exception thrown from + finally. + + * tests/run_parser.sh: Moscow timezone is set by default (not + required to be set on test server) + + * src/: classes/op.C, include/pa_request.h, main/pa_request.C: work + with exception_trace redesigned, Request_context_save no longer + touches exception_trace (fixes bug #1082) + +2026-09-24 moko + + * tests/: 452.html, results/452.processed: checks for exception is + still hash compatible added (related to feature #1145) + + * src/: classes/op.C, include/pa_request.h, main/pa_request.C: + Exception_details is replaced with efficient VException, hash is + created only on demand (related to feature #1145) + + * src/: include/pa_symbols.h, main/pa_symbols.C: exceptions symbols + added (related to feature #1145) + + * src/types/pa_vhash.h: fhash-> hash() - a bit slower, but + simplifies inherihance (related to feature #1145) + +2026-09-20 moko + + * src/include/pa_config_fixed.h: Windows: librabbitmq TLS support + how-to added (related to feature #1288) + + * src/: classes/amqp.C, classes/classes.vcproj, main/pa_globals.C, + types/types.vcproj: precompiled rabbitmq added to win32 + + * src/: classes/amqp.C, types/pa_vamqp.h: warnings war (related to + feature #1288) + + * src/: classes/amqp.C, include/pa_config_fixed.h: WITHOUT_AMQP_SSL + feature added to avoid dependency on OpenSSL DLLs when TLS is not + required (related to feature #1288) + + * src/lib/ltdl/ltdl.vcproj: vs2026 warning war + + * src/lib/sdbm/sdbm.vcproj: vs 2026 warning war + + * src/: classes/xnode.C, lib/json/pa_json.C: vs 2026 warning war + + * src/include/pa_config_includes.h: vs warning war + + * src/main/compile.tab.C: vs2026 compilation fixes + + * src/: classes/amqp.C, classes/curl.C, classes/inet.C, + include/pa_config_includes.h, main/compile.tab.C: vs2026 + compilation fixes + + * src/main/compile.y: vs2026 build fixes + +2026-09-18 moko + + * src/main/pa_common.C: strrpbrk used once more + + * src/main/pa_dir.C: new code moved to the end + + * src/: include/pa_common.h, include/pa_dir.h, main/pa_common.C, + main/pa_dir.C, main/pa_exec.C, main/pa_request.C, + targets/cgi/parser3.C, targets/isapi/parser3isapi.C: strrpbrk, + rsplit for delims, is_os_absolute_path added and used (related to + feature #941) + + * src/: classes/amqp.C, include/pa_config_fixed.h: Add AMQP support + for Windows builds (related to feature #1288) + +2026-09-16 moko + + * src/classes/amqp.C: Bugfix: leftover unacked messages got stuck + after a listen-mode consume[] (related to feature #1288) + ---------------------------------------------------------------- + +2026-09-15 moko + + * src/: classes/amqp.C, classes/math.C, include/pa_int.h, + main/pa_int.C: Temp_amqp_consumer added for exceptions handling, + ulp_distance used and moved to pa_int (related to feature #1288) + + * src/classes/amqp.C: headers/arguments now processed in both + directions, no_ack -> ack as default changed (related to feature + #1288) + + * src/: classes/amqp.C, types/pa_vamqp.h: error handling and + $.auto_reconnect(N) option implemented (related to feature #1288) + + * src/classes/amqp.C: allow both [] and () delivery tag (related to + feature #1288) + + * src/classes/amqp.C: _consume - pull and listen more more clearly + separated; both have timeout(N) count(N) options (related to + feature #1288) + +2026-09-07 moko + + * tests/: 346-curl.html, 451-curl.html, results/346-curl.processed, + results/451-curl.processed: test for curl and file::load accept a + hash or array as a form field value (related to feature #1296) + + * src/: classes/curl.C, main/pa_http.C: curl and file::load accept + a hash or array as a form field value (implements multiple files + per field support, feature #1296) + +2026-07-19 moko + + * src/classes/curl.C: win32 compatibility (related to feature + #1295) + + * tests/: 450-curl.html, results/450-curl.processed: + $.resolve[^hash::create[]] test added (related to feature #1295) + + * tests/results/379-curl.processed: curl test results actualized + after ERRORBUFFER was used + + * src/classes/curl.C: check for empty hash added (related to + feature #1295) + + * src/lib/curl/curl.h: curl_slist + CURLOPT_RESOLVE added (related + to feature #1295) + + * tests/: 450-curl.html, results/450-curl.processed: tests for curl + $.resolve option added (related to feature #1295) + + * src/classes/curl.C: curl $.resolve[curl|parser] parser option + added to avoid getaddrinfo() curl thread creation; $.resolve[ + $.[domain.name][ip] or $.[domain.name:port][ip] ] curl option + also added (implements feature #1295) + + * src/classes/inet.C: pa_name2ip extracted to be used in curl.C + (related to feature #1295) + +2026-07-14 moko + + * src/: classes/curl.C, lib/curl/curl.h: CURLOPT_ERRORBUFFER used + to get more detailed error description (related to feature #1295) + +2026-07-11 moko + + * tests/: 030.html, results/030.processed: cookie $.expires(0) test + added (code coverage) + + * operators.txt: translation fixed + +2026-05-28 moko + + * src/include/pa_config_includes.h: warnings war + + * src/classes/classes.h: warnings war + + * src/include/pa_inline_hash.h: fix for old gcc + +2026-05-24 moko + + * src/main/pa_request.C, tests/httpd/041.txt, tests/httpd/042.txt, + tests/httpd/043.txt, tests/httpd/ok.log: more range check tests + added + +2026-05-06 moko + + * operators.ru.txt, operators.txt: ^int/double.++[] and + ^int/double.--[] documented (related to feature #1294) + + * tests/: 063.html, results/063.processed: test for + ^int/double.++[] and ^int/double.--[] added (related to feature + #1294) + + * src/classes/: double.C, int.C: ^int/double.++[] and + ^int/double.--[] added (adopted Sumo patch, implements feature + #1294) + + * src/main/main.vcproj: pa_inline_hash.h added (related to feature + #1293) + +2026-04-30 moko + + * src/include/pa_inline_hash.h: PA_PROBE_LIMIT added (related to + feature #1293) + + * src/include/pa_inline_hash.h: First lookup optimization added + (related to feature #1293) + + * src/include/pa_inline_hash.h: upgrade to linear-probing hash + (related to feature #1293) + +2026-04-25 moko + + * INSTALL, NEWS, README, buildall, src/classes/amqp.C, + src/classes/array.C, src/classes/bool.C, src/classes/classes.C, + src/classes/classes.h, src/classes/curl.C, src/classes/date.C, + src/classes/double.C, src/classes/file.C, src/classes/form.C, + src/classes/hash.C, src/classes/hashfile.C, src/classes/image.C, + src/classes/inet.C, src/classes/int.C, src/classes/json.C, + src/classes/mail.C, src/classes/math.C, src/classes/memcached.C, + src/classes/memory.C, src/classes/op.C, src/classes/reflection.C, + src/classes/regex.C, src/classes/response.C, + src/classes/string.C, src/classes/table.C, src/classes/void.C, + src/classes/xdoc.C, src/classes/xnode.C, src/classes/xnode.h, + src/include/pa_array.h, src/include/pa_base64.h, + src/include/pa_cache_managers.h, src/include/pa_charset.h, + src/include/pa_charsets.h, src/include/pa_common.h, + src/include/pa_config_fixed.h, src/include/pa_config_includes.h, + src/include/pa_dictionary.h, src/include/pa_dir.h, + src/include/pa_exception.h, src/include/pa_exec.h, + src/include/pa_globals.h, src/include/pa_hash.h, + src/include/pa_http.h, src/include/pa_inline_hash.h, + src/include/pa_int.h, src/include/pa_memory.h, + src/include/pa_opcode.h, src/include/pa_operation.h, + src/include/pa_os.h, src/include/pa_pool.h, + src/include/pa_random.h, src/include/pa_request.h, + src/include/pa_request_charsets.h, src/include/pa_request_info.h, + src/include/pa_sapi.h, src/include/pa_socks.h, + src/include/pa_sql_connection.h, + src/include/pa_sql_driver_manager.h, src/include/pa_stack.h, + src/include/pa_string.h, src/include/pa_stylesheet_connection.h, + src/include/pa_stylesheet_manager.h, src/include/pa_symbols.h, + src/include/pa_table.h, src/include/pa_threads.h, + src/include/pa_types.h, src/include/pa_uue.h, + src/include/pa_xml_exception.h, src/include/pa_xml_io.h, + src/lib/gd/gif.C, src/lib/gd/gif.h, src/lib/gd/gifio.C, + src/lib/md5/pa_md5.h, src/lib/md5/pa_md5c.c, + src/lib/memcached/pa_memcached.C, + src/lib/memcached/pa_memcached.h, src/lib/punycode/pa_idna.c, + src/lib/punycode/pa_idna.h, src/lib/sdbm/pa_file_io.C, + src/lib/sdbm/pa_strings.C, src/lib/smtp/comms.C, + src/lib/smtp/smtp.C, src/lib/smtp/smtp.h, src/main/compile.C, + src/main/compile.tab.C, src/main/compile.y, + src/main/compile_tools.C, src/main/compile_tools.h, + src/main/execute.C, src/main/pa_base64.C, + src/main/pa_cache_managers.C, src/main/pa_charset.C, + src/main/pa_charsets.C, src/main/pa_common.C, + src/main/pa_dictionary.C, src/main/pa_dir.C, + src/main/pa_exception.C, src/main/pa_exec.C, + src/main/pa_globals.C, src/main/pa_http.C, src/main/pa_int.C, + src/main/pa_memory.C, src/main/pa_os.C, src/main/pa_pool.C, + src/main/pa_random.C, src/main/pa_request.C, src/main/pa_socks.C, + src/main/pa_sql_driver_manager.C, src/main/pa_string.C, + src/main/pa_stylesheet_connection.C, + src/main/pa_stylesheet_manager.C, src/main/pa_symbols.C, + src/main/pa_table.C, src/main/pa_threads.C, src/main/pa_uue.C, + src/main/pa_xml_exception.C, src/main/pa_xml_io.C, + src/main/untaint.C, src/main/helpers/simple_folding.pl, + src/sql/pa_sql_driver.h, src/targets/apache/mod_parser3.c, + src/targets/apache/mod_parser3_core.C, + src/targets/apache/pa_httpd.h, src/targets/cgi/parser3.C, + src/targets/isapi/parser3isapi.C, src/types/pa_junction.h, + src/types/pa_method.h, src/types/pa_property.h, + src/types/pa_value.C, src/types/pa_value.h, src/types/pa_vamqp.h, + src/types/pa_varray.C, src/types/pa_varray.h, + src/types/pa_vbool.h, src/types/pa_vcaller_wrapper.h, + src/types/pa_vclass.C, src/types/pa_vclass.h, + src/types/pa_vcode_frame.h, src/types/pa_vconsole.h, + src/types/pa_vcookie.C, src/types/pa_vcookie.h, + src/types/pa_vdate.C, src/types/pa_vdate.h, + src/types/pa_vdouble.h, src/types/pa_venv.C, src/types/pa_venv.h, + src/types/pa_vfile.C, src/types/pa_vfile.h, src/types/pa_vform.C, + src/types/pa_vform.h, src/types/pa_vhash.C, src/types/pa_vhash.h, + src/types/pa_vhashfile.C, src/types/pa_vhashfile.h, + src/types/pa_vimage.C, src/types/pa_vimage.h, + src/types/pa_vint.h, src/types/pa_vjunction.C, + src/types/pa_vjunction.h, src/types/pa_vmail.C, + src/types/pa_vmail.h, src/types/pa_vmath.C, src/types/pa_vmath.h, + src/types/pa_vmemcached.C, src/types/pa_vmemcached.h, + src/types/pa_vmemory.h, src/types/pa_vmethod_frame.C, + src/types/pa_vmethod_frame.h, src/types/pa_vobject.C, + src/types/pa_vobject.h, src/types/pa_vregex.C, + src/types/pa_vregex.h, src/types/pa_vrequest.C, + src/types/pa_vrequest.h, src/types/pa_vresponse.C, + src/types/pa_vresponse.h, src/types/pa_vstateless_class.C, + src/types/pa_vstateless_class.h, + src/types/pa_vstateless_object.h, src/types/pa_vstatus.C, + src/types/pa_vstatus.h, src/types/pa_vstring.C, + src/types/pa_vstring.h, src/types/pa_vtable.C, + src/types/pa_vtable.h, src/types/pa_vvoid.C, + src/types/pa_vvoid.h, src/types/pa_vxdoc.C, src/types/pa_vxdoc.h, + src/types/pa_vxnode.C, src/types/pa_vxnode.h, + src/types/pa_wcontext.C, src/types/pa_wcontext.h, + src/types/pa_wwrapper.h: Copyright year updated, websites links + changed to https:// + + * src/include/pa_inline_hash.h: delete added (related to feature + #1293) + +2026-04-24 moko + + * src/: classes/reflection.C, main/pa_common.C, types/pa_method.h, + types/pa_vmethod_frame.h: inline-storage hash used to avoid + allocations for MethodFrame args and locals (imlpements feature + #1293) _stack uses for_each to avoid Iterator for + InlineHashString + + * src/include/: Makefile.am, pa_inline_hash.h: inline-storage hash + added to avoid allocations for MethodFrame args and locals + (related to feature #1293) + + * tests/: 337.html, 434.html, results/320.processed, + results/434.processed: test for ^A[v1;v2]=^array::create[v1;v2] + added (related to feature #1282) + + * src/classes/op.C: ^A[v1;v2]=^array::create[v1;v2] added + (implements feature #1282) + + * tests/: 447.html, results/447.processed: exceptions tests added + (related to feature #1286) + + * src/classes/reflection.C: native method exception added (related + to feature #1286) + + * src/main/execute.C: removes irrelevant lines from exception stack + trace when exception occur in array assigment (related to bug + #1165) + useless #define removed + + * src/: include/pa_request.h, main/compile.y: warnings war + +2026-04-23 moko + + * src/main/: compile.y, compile_tools.C, compile_tools.h: + maybe_append_simple_diving_code() is not related to + OPTIMIZE_BYTECODE_GET_ELEMENT__SPECIAL + +2026-03-01 moko + + * src/: classes/classes.C, classes/classes.h, classes/mail.C, + main/pa_request.C: configure_user removed, $MAIN:MAIL now + processed inside ^mail:send[] (implements feature #1290) + +2026-02-25 moko + + * tests/: 182.html, 182_dir/a7.p, results/182.processed: test for + array redefinition added + + * src/main/pa_request.C: array redefinition fixed + + * tests/: 182.html, results/182.processed: test for + ^reflection:classes[] order (related to feature #1289) + + * src/: classes/reflection.C, include/pa_request.h, + main/pa_request.C: classes now OrderedHashString, implements + feature #1289 + +2026-02-02 moko + + * tests/: 307.html, results/307.processed: more "junction used + outside of context" tests added + +2026-01-09 moko + + * src/classes/amqp.C: auto_delete is better false by default + (related to feature #1288) + + * src/classes/amqp.C: more methods bool args fixes, nowait removed + (related to feature #1288) + + * src/classes/amqp.C: nowait was mixed up with exclusive in consume + + * src/classes/amqp.C: amqp_basic_cancel added to consume, purge + returns purged messages count (related to feature #1288) + + * tests/: 449.html, results/449.processed, results/auto.p: test for + table size limit added (related to feature #1276) + + * src/classes/table.C: $MAIN:LIMITS.max_array_size now used to + limit table size; note: for append and insert operations only + (implements feature #1276) + +2026-01-08 moko + + * src/classes/amqp.C: addition to feature #1288: declare_exchange + + declare_queue = declare; delete_exchange + delete_queue = delete; + bind_queue -> bind; unbind_queue -> unbind; + purge, + info; + consume can be called without callback with optional $.count(N), + returns array of messages; + +2026-01-07 moko + + * tests/: 448.html, results/448.processed: avoid 500, show + exception where not supported + + * src/include/pa_int.h: warnings war + + * tests/: 422.html, results/422.processed: test updated after wide + int implemented (feature #1273) + + * src/main/pa_int.C: warnings war + + * src/classes/classes.vcproj: +amqp.C + + * src/classes/: int.C, string.C: warnings war + + * src/classes/: op.C: warnings war + + * src/: classes/op.C, main/pa_int.C: warnings war + + * src/types/pa_vdate.h: warnings war + + * src/main/pa_int.C: warnings war continues + + * src/: include/pa_int.h, main/pa_int.C, types/pa_vint.h: warnings + war + + * src/types/pa_vdate.C: reverted, format_double still required here + + * src/: include/pa_int.h, main/pa_int.C, types/pa_vmath.C: + format_double now supports wint, $math:int_max and $math:int_min + added, PA_WIDE_INT is finally enabled by default (implements + feature #1273) + + * tests/: 275.html, results/275.processed: preparing tests for int + extension + + * tests/: 424.html, results/424.processed: actualized and prepared + for wide int + +2026-01-06 moko + + * src/: classes/double.C, classes/int.C, classes/string.C, + include/pa_common.h, include/pa_int.h, include/pa_string.h, + main/execute.C, main/pa_common.C, main/pa_int.C, + types/pa_value.h, types/pa_vdate.C, types/pa_vdate.h, + types/pa_vdouble.h, types/pa_vint.h, types/pa_vmethod_frame.h, + types/pa_vstring.h: feature #1273 core implementation: + value::as_wint added, implemented for int/double/string, and used + where applicable; vint now holds pa_wint type; format_double + moved to pa_int + + * src/: include/pa_array.h, include/pa_string.h, main/main.vcproj: + pa_int includes tuning, vcproj updated (related to feature #1273) + + * src/main/pa_int.C: build fix + + * src/: include/Makefile.am, main/Makefile.am: pa_int.h/pa_int.C + added, another preparation for feature #1273 + + * src/: include/pa_array.h, include/pa_int.h, include/pa_string.h, + include/pa_types.h, main/pa_int.C, main/pa_string.C, + types/pa_vint.h: pa_int.h/pa_int.C added and all related code + moved there, pa_wint and related functions added, another + preparation for feature #1273 + +2025-12-17 moko + + * src/classes/json.C: optimization: String::Empty used and avoided + using passed length. + +2025-12-16 moko + + * src/classes/string.C: sync _int with _double, avoid int usage + (related to #1273) + +2025-12-08 moko + + * src/include/pa_memory.h: PA_CHECK_REGULAR_ALLOC_UNAVAILABLE + define added and used for OS X as well + +2025-11-30 moko + + * configure, configure.ac, src/include/pa_config_auto.h.in, + src/include/pa_config_fixed.h: int64_t added in preparation to + feature #1273 + +2025-11-22 moko + + * src/classes/amqp.C: delivery_tag changed from string to double + (related to feature #1288) + +2025-11-14 moko + + * src/types/pa_vstatus.C, tests/448.html, + tests/results/448.processed: $status:limit-cpu, + $status:limit-mem, $status:limit-nproc unlimited support added, + test added (related to feature #1280) + + * src/types/: pa_vstatus.C, pa_vstatus.h: r/w $status:limit-cpu, + $status:limit-mem, $status:limit-nproc added (implements feature + #1280) + +2025-11-12 moko + + * tests/results/: 323.processed, 421.processed: tests results + updated after amqp class added + +2025-11-08 moko + + * src/classes/amqp.C: tls support added, errors reporting improved + (related to feature #1288) + + * src/classes/amqp.C: tls support added (related to feature #1288) + + * src/classes/amqp.C: exceptions text now printed (related to + feature #1288) + + * src/classes/amqp.C: properties hash simplified (related to + feature #1288) + +2025-11-07 moko + + * src/classes/amqp.C: consume fixed (related to feature #1288) + + * src/classes/classes.C: + amqp class + + * buildall, configure, configure.ac, src/classes/Makefile.am, + src/include/pa_config_auto.h.in, src/targets/apache/Makefile.am, + src/targets/cgi/Makefile.am, src/types/Makefile.am: build scripts + updated for librabbitmq support (relates to feature #1288) + + * src/: classes/amqp.C, types/pa_vamqp.h: amqp class draft with + basic RabbitMQ C library (librabbitmq) support (partially + implements #1288) + +2025-10-05 moko + + * src/classes/: array.C, file.C, hash.C, image.C, json.C, op.C, + reflection.C, string.C: Optimization: valid_options optimized + where HashStringValue::Iterator used + + * tests/results/224.processed: test result updated after date + functions updated (related to #1287) + +2025-10-04 moko + + * operators.ru.txt, operators.txt: actualized + + * operators.ru.txt, operators.txt: actualized after #1285 and #1286 + + * tests/: 447.html, results/447.processed: tests for + ^reflection:override[$method] added (related to feature #1286) + + * tests/: 446.html, results/446.processed: tests for $n1 eq n2 + added (related to feature #1285) + + * src/classes/reflection.C: + ^reflection:override[$method[;$.to[class] $.name[another_name]]] + added (implements feature #1286) + + * src/main/execute.C: bugfix: when method is attached from another + class, it's junction_template is initialized with another class, + thus get_vjunction should be used (related to feature #1286) + + * src/classes/date.C: ^date:sql-string[], ^date:gmt-string[], + ^date:iso-string[] - static call now formats current date + (implements feature #1287) + +2025-10-01 moko + + * buildall: built-in mailreceive path actualized + +2025-09-01 moko + + * src/classes/math.C: old compilers support in ^math:eq + +2025-08-31 moko + + * tests/: 446.html, results/446.processed: tests for + ^math:eq(a;b[;max URL distance]) added (related to feature #1285) + + * src/classes/math.C: ^math:eq(a;b[;precision]) added (partly + implements #1285) + +2025-08-30 moko + + * operators.ru.txt, operators.txt: actualized + + * tests/: 230.html, results/230.processed: test for ^file.save + $.append(false|true) option added (related to feature #1284) + + * src/: classes/file.C, types/pa_vfile.C, types/pa_vfile.h: + ^file.save $.append(false|true) option added (implements feature + #1284) + +2025-08-16 moko + + * etc/auto.p.in: LIMIT max_array_size actualized + +2025-08-01 moko + + * src/: lib/gc/include/gc.h, main/pa_globals.C, main/pa_memory.C: + pa_GC_abort_func added and used (implements feature #1283) + + * src/include/: pa_array.h, pa_config_includes.h: + PA_DEBUG_DISABLE_GC mode fixed for sparse array + +2025-07-04 moko + + * src/main/pa_common.C: typo fixed (related to bug #1282) + + * src/main/pa_common.C: minor optimization + create_dir_for_file + checks for \ (related to bug #1282) + +2025-07-03 moko + + * src/main/pa_common.C: _wrename, _wrmdir и _wmkdir are now used + under Windows (fixes bug #1282) + + * src/main/pa_common.C: file:delete for UTF-8 files now works under + Windows (fixes bug #1282) + +2025-06-28 moko + + * src/targets/apache/mod_parser3.c: GCC 15 compatibility fixed by + Yavor Doganov + + * src/main/pa_charset.C: typo fixed (related to feature #1281) + + * src/: include/pa_charset.h, main/pa_charset.C: libxml 2.14 + compatibility fixed (implements feature #1281) + +2025-05-31 moko + + * src/main/pa_http.C: old gcc compilation fix (related to feature + #1277) + +2025-05-28 moko + + * src/: classes/array.C, include/pa_array.h: last + Array_iterator::key() removed (related to feature #1277) + +2025-05-27 moko + + * src/: classes/array.C, classes/table.C, include/pa_array.h, + types/pa_vstring.C, types/pa_vstring.h: VString::uitoa() added + and used (related to feature #1277) + +2025-05-26 moko + + * src/: classes/array.C, classes/curl.C, classes/hash.C, + classes/hashfile.C, classes/image.C, classes/table.C, + main/pa_request.C, main/pa_xml_io.C, types/pa_vconsole.h, + types/pa_venv.C, types/pa_vmail.C, types/pa_vregex.C, + types/pa_vrequest.C, types/pa_vresponse.C, types/pa_vstring.h: + VString(const char *avalue) added and used to optimize new + VString(*new String(i.key(), String::L_TAINTED)) (related to + feature #1277) + + * src/: classes/array.C, classes/curl.C, classes/file.C, + classes/hash.C, classes/image.C, classes/json.C, + classes/reflection.C, classes/xnode.C, include/pa_charset.h, + include/pa_hash.h, include/pa_http.h, include/pa_string.h, + main/pa_charsets.C, main/pa_http.C, main/pa_request.C, + main/pa_string.C, main/pa_xml_io.C, targets/cgi/pa_sapi_info.h, + types/pa_varray.C, types/pa_vform.C, types/pa_vhash.h, + types/pa_vhashfile.C, types/pa_vimage.C, types/pa_vmail.C, + types/pa_vmethod_frame.h, types/pa_vstatus.C, types/pa_vtable.C, + types/pa_vxnode.C: implements feature #1277 String::Body(const + char *abody) now explicit but HashString::put(const char *str, V + value) added for simplicity optimizations: HASH_PUT_CSTR used + where hash.put called several time during execution; caching + String::Body::uitoa used at all pash.put( calls. + +2025-05-25 moko + + * src/: include/pa_request.h, main/pa_request.C: minor opt (related + to feature #1277) + + * src/include/pa_hash.h: HASH_PUT_CSTR added (related to #1277) + + * src/: include/pa_string.h, main/pa_string.C: String::Body::uitoa + added for caching (related to feature #1277) + + * src/include/pa_string.h: optimized String:pos versions added + (without language + char *) (related to feature #1277) + +2025-05-24 moko + + * tests/: 445.html, results/445.processed: test for + ^hash.array[[keys|values]] added (related to feature #1274) + + * src/classes/hash.C: ^hash.array[[keys|values]] added (implements + feature #1274) + +2025-01-26 moko + + * src/include/pa_config_includes.h: synced with pa_config_auto.h.in + +2025-01-25 moko + + * configure.ac, src/include/pa_version.h: version 3.5.1 -> 3.5.2b + + * aclocal.m4, configure, src/include/pa_config_auto.h.in, + src/lib/ltdl/aclocal.m4, src/lib/ltdl/configure: aclocal && + autoheader && automake && autoconf + + * src/lib/ltdl/configure.ac: new autotools used + + * acsite.m4, configure.ac: new autotools warnings fixed + +2025-01-10 moko + + * tests/results/320.processed: test result updated after syslog + added + + * src/classes/op.C: minor MSVC fixes + + * src/lib/md5/pa_md5c.c: MSVC warnings fixed + + * operators.ru.txt, operators.txt: + + ^syslog[ident;message[;info|warning|error|debug]] + + * src/classes/op.C: + + ^syslog[ident;message[;info|warning|error|debug]] (implelents + feature #1270) + + * configure, configure.ac, src/include/pa_config_auto.h.in, + src/include/pa_version.h: 3.5.0 -> 3.5.1, syslog check + +2025-01-06 moko + + * src/include/pa_hash.h: own prime numbers (nearest primes to 5 * + 2^n) calculated and used + + * src/lib/md5/: pa_md5.h, pa_md5c.c: MD5 code now taken from + https://www.hadrons.org/software/libmd/ + 2024-12-28 moko * tests/httpd/run_tests.sh: for FreeBSD compatibility @@ -7082,15 +8035,13 @@ config_auto.h.in, config_fixed.h, configure, configure.ac, configure.in, lt__alloc.c, lt__dirent.c, lt__strl.c, lt_dlloader.c, lt_error.c, ltdl.c, ltdl.h, slist.c, - config/compile, config/config.guess, config/config.sub, - config/depcomp, config/install-sh, config/ltmain.sh, - config/missing, libltdl/lt__alloc.h, libltdl/lt__dirent.h, - libltdl/lt__glibc.h, libltdl/lt__private.h, libltdl/lt__strl.h, - libltdl/lt_dlloader.h, libltdl/lt_error.h, libltdl/lt_system.h, - libltdl/slist.h, loaders/dld_link.c, loaders/dlopen.c, - loaders/dyld.c, loaders/load_add_on.c, loaders/loadlibrary.c, - loaders/preopen.c, loaders/shl_load.c, m4/argz.m4, m4/libtool.m4, - m4/ltdl.m4, m4/ltoptions.m4, m4/ltsugar.m4, m4/ltversion.m4, + libltdl/lt__alloc.h, libltdl/lt__dirent.h, libltdl/lt__glibc.h, + libltdl/lt__private.h, libltdl/lt__strl.h, libltdl/lt_dlloader.h, + libltdl/lt_error.h, libltdl/lt_system.h, libltdl/slist.h, + loaders/dld_link.c, loaders/dlopen.c, loaders/dyld.c, + loaders/load_add_on.c, loaders/loadlibrary.c, loaders/preopen.c, + loaders/shl_load.c, m4/argz.m4, m4/libtool.m4, m4/ltdl.m4, + m4/ltoptions.m4, m4/ltsugar.m4, m4/ltversion.m4, m4/lt~obsolete.m4: libtool updated to version 2.4.2 * configure.in: preparation for new libtool