* (autobuild) release number bumped to 8.0.1834 by export.pike * (autobuild) release number bumped to 8.0.1835 by export.pike * (grubba) Merge branch 'patches/bug10121' into 8.0 * patches/bug10121: Filesystem.System: Fix filtering in find(). * (autobuild) release number bumped to 8.0.1833 by export.pike * (autobuild) release number bumped to 8.0.1832 by export.pike * (grubba) Merge branch 'patches/checker' into 8.0 * patches/checker: Configure: Make --with-checker work again. * (autobuild) release number bumped to 8.0.1831 by export.pike * (autobuild) release number bumped to 8.0.1830 by export.pike * (grubba) Merge branch 'patches/bug10117' into 8.0 * patches/bug10117: System [NT]: Fix extraction of DWORDs from the registry. * (autobuild) release number bumped to 8.0.1829 by export.pike * (autobuild) release number bumped to 8.0.1828 by export.pike * (wressle) release number bumped to 8.0.1827 by export.pike * (wressle) release number bumped to 8.0.1826 by export.pike * (autobuild) release number bumped to 8.0.1825 by export.pike * (autobuild) release number bumped to 8.0.1824 by export.pike * (autobuild) release number bumped to 8.0.1823 by export.pike * (autobuild) release number bumped to 8.0.1822 by export.pike * (autobuild) release number bumped to 8.0.1821 by export.pike * (autobuild) release number bumped to 8.0.1820 by export.pike * (wressle) release number bumped to 8.0.1818 by export.pike * (wressle) release number bumped to 8.0.1819 by export.pike * (autobuild) release number bumped to 8.0.1816 by export.pike * (autobuild) release number bumped to 8.0.1817 by export.pike * (grubba) release number bumped to 8.0.1814 by export.pike * (grubba) release number bumped to 8.0.1815 by export.pike * (grubba) mkpackage: Follow symlinks when adding packages. * (grubba) release number bumped to 8.0.1812 by export.pike * (grubba) release number bumped to 8.0.1813 by export.pike * (autobuild) release number bumped to 8.0.1811 by export.pike * (autobuild) release number bumped to 8.0.1810 by export.pike * (grubba) Merge branch 'patches/bug10111' into 8.0 * patches/bug10111: Calendar.YMD: Survive timezone shift backwards at midnight far from UTC. * (autobuild) release number bumped to 8.0.1809 by export.pike * (autobuild) release number bumped to 8.0.1808 by export.pike * (grubba) Calendar.YMD: Fix rounding error. The merge only fixed the compat variant of Calendar.YMD... Fixes #10111. * (grubba) Merge branch 'patches/bug10111' into 8.0 * patches/bug10111: Calendar.YMD: Fix rounding error. * (grubba) Merge branch 'patches/bug10111' into 8.0 * patches/bug10111: Calendar.YMD: Survive timezone shift backward at midnight. * (autobuild) release number bumped to 8.0.1806 by export.pike * (autobuild) release number bumped to 8.0.1807 by export.pike * (grubba) Merge branch 'patches/gz-tts' into 8.0 * patches/gz-tts: Gz: Fix error handling in deflate initialized with a mapping. * (autobuild) release number bumped to 8.0.1805 by export.pike * (autobuild) release number bumped to 8.0.1804 by export.pike * (grubba) ADT.CircularList: Fix issues with copying data in allocate(). Also adds a corresponding test to the testsuite. Fixes [REPD-489]. * (autobuild) release number bumped to 8.0.1803 by export.pike * (autobuild) release number bumped to 8.0.1802 by export.pike * (grubba) ADT.CircularList: Improved handling of max_size() == 0. * (grubba) CHANGES: Added note about ADT.CircularList change. * (grubba) ADT.CircularList: Add force argument to add() and push_{front,back}(). This makes it possible to take advantage of it being circular. * (autobuild) release number bumped to 8.0.1801 by export.pike * (autobuild) release number bumped to 8.0.1800 by export.pike * (grubba) Sql.Sql: Use glob() rather than Regexp for wildcard matching. Fixes issue with errors from Regexp due to wide strings. * (autobuild) release number bumped to 8.0.1798 by export.pike * (autobuild) release number bumped to 8.0.1799 by export.pike * (tobij) CHANGES: Document low_lookup() fix * (tobij) Merge branch 'tobij/fix-array-low-lookup-int-overflow' into 8.0 * tobij/fix-array-low-lookup-int-overflow: Array: Fixed integer overflow in low_lookup() * (autobuild) release number bumped to 8.0.1796 by export.pike * (autobuild) release number bumped to 8.0.1797 by export.pike * (grubba) Backend [NT]: Fix detection of socket errors on NT. * (grubba) release number bumped to 8.0.1794 by export.pike * (grubba) release number bumped to 8.0.1795 by export.pike * (grubba) Stdio.File: Add isatty(). * (grubba) Merge branch 'grubba/fdlib' into 8.0 * grubba/fdlib: I/O [NT]: Support all fds in fd_fstat(). I/O [NT]: Add wrapper for isatty(2). I/O [NT]: Added dynamic lookup of symbols needed for pty handling. * (grubba) release number bumped to 8.0.1793 by export.pike * (grubba) release number bumped to 8.0.1792 by export.pike * (grubba) EFUNs [NT]: sync() now actually attempts to flush the filesystem buffers. * (autobuild) release number bumped to 8.0.1791 by export.pike * (autobuild) release number bumped to 8.0.1790 by export.pike * (grubba) Merge branch 'patches/nt-init-va_error-crash' into 8.0 * patches/nt-init-va_error-crash: Threads: Always allow NULL arg to pike_threads_{dis,}allow{,_ext}(). * (autobuild) release number bumped to 8.0.1789 by export.pike * (autobuild) release number bumped to 8.0.1788 by export.pike * (tobij) CHANGES: Document Nettle.IDEA fix * (tobij) Merge branch 'tobij/fix-idea_invert-dead-store-elim' into 8.0 * tobij/fix-idea_invert-dead-store-elim: Nettle.IDEA: Fix leak of key material to stack in idea_invert() * (wressle) release number bumped to 8.0.1787 by export.pike * (wressle) release number bumped to 8.0.1786 by export.pike * (grubba) Merge branch 'patches/bug10094' into 8.0 * patches/bug10094: Standards.IIM: Fix alignment of Photoshop 6 block scanner. * (grubba) release number bumped to 8.0.1785 by export.pike * (grubba) release number bumped to 8.0.1784 by export.pike * (grubba) Compiler: Add optional validation that %rsp is properly aligned. Add new generic configure option `--with-experimental` intended to be used to enable various experimental and/or debug code. Exactly what `--with-experimental` enables is NOT intended to be stable, and may be changed at any time. It may also have no effect at all. * (grubba) release number bumped to 8.0.1782 by export.pike * (grubba) release number bumped to 8.0.1783 by export.pike * (grubba) Compiler [Typechecker]: Survive mixed|void in pop_type_stack(). * (autobuild) release number bumped to 8.0.1781 by export.pike * (autobuild) release number bumped to 8.0.1780 by export.pike * (grubba) Compiler [Typechecker]: Fix common consequential error. Triggering a compilation error caused return statements for later functions declared as returning void in the same program to fail with: Must return a value for a non-void function. Expected: mixed. Got : void. * (wellhardh) release number bumped to 8.0.1778 by export.pike * (wellhardh) release number bumped to 8.0.1779 by export.pike * (jonasw) release number bumped to 8.0.1777 by export.pike * (jonasw) release number bumped to 8.0.1776 by export.pike * (tobij) Compiler [amd64]: Keep stack alignment before calling C code GCC 8 started to emit movaps instructions with (%RSP) as destination, leading to GPF in case it was not properly aligned. Backport of the remainder of the fix since it is now relevant. * (grubba) release number bumped to 8.0.1775 by export.pike * (grubba) release number bumped to 8.0.1774 by export.pike * (grubba) Bignum: Add missing definition of ulongest_to_svalue_no_free(). * (grubba) Runtime: Do no use frame_{set,get}_expendible(). * (grubba) release number bumped to 8.0.1773 by export.pike * (grubba) release number bumped to 8.0.1772 by export.pike * (tobij) Debug.generate_perf_map(): Handle memory locations > MAX_INT_TYPE * (marty) Debug.get_perf_map: minor bugfix for empty programs. * (marty) Add --with-mc-stack-frames configure option. (Currently X86-64 only.) This will enable frame pointers in machine code, thereby allowing e.g. Linux perf to unwind the stack and get proper stack traces including Pike functions. * (marty) Inline the F_CATCH opcode (on AMD64 so far). This is a prerequisite for MACHINE_CODE_STACK_FRAMES, since inter_return_opcode_F_CATCH will "inject" itself on the C stack when the first F_CATCH opcode is encountered (and won't vanish until inter return, which may occur in an outer Pike frame). * (el) Debug.get_program_layout: behave as documented * (tobij) Debug: added functions to generate perf map files * (autobuild) release number bumped to 8.0.1770 by export.pike * (autobuild) release number bumped to 8.0.1771 by export.pike * (grubba) Merge branch 'patches/bug10054' into 8.0 * patches/bug10054: Compiler [Typechecker]: compiler_discard_type() now leaves a marker. * (autobuild) release number bumped to 8.0.1769 by export.pike * (autobuild) release number bumped to 8.0.1768 by export.pike * (grubba) Crypto.DSA: Fix rejection of signatures with offset r and/or s. Fixes #10077. * (autobuild) release number bumped to 8.0.1766 by export.pike * (autobuild) release number bumped to 8.0.1767 by export.pike * (grubba) Mysql: Improved error handling for big_query() et al. Improves diagnostics to detect cause of [PI-153]. * (autobuild) release number bumped to 8.0.1765 by export.pike * (autobuild) release number bumped to 8.0.1764 by export.pike * (grubba) Merge branch 'patches/bug10084' into 8.0 * patches/bug10084: EFUNs: Fix support for reverse() on subranges of strings. * (autobuild) release number bumped to 8.0.1763 by export.pike * (autobuild) release number bumped to 8.0.1762 by export.pike * (unknown user) Avoid backtrace when fd is gone. Don't stringify missing data in readline_callback() but instead let the next callback handle EOF. * (autobuild) release number bumped to 8.0.1761 by export.pike * (autobuild) release number bumped to 8.0.1760 by export.pike * (tobij) Gz: Detect zlib 1.2.12 as working libz zlib 1.2.12 includes commit 0d36ec47f310478549c0864f215ab5c0114c49ba, Don't bother computing check value after successful inflateSync(). Because of that, it does no longer give a Z_DATA_ERROR which we used to expect, but instead a Z_STREAM_END. Adjusted the configure check to accept Z_STREAM_END for zlib >= 1.2.12. * (autobuild) release number bumped to 8.0.1759 by export.pike * (autobuild) release number bumped to 8.0.1758 by export.pike * (grubba) Concurrent.Promise: Disable debug output. * (autobuild) release number bumped to 8.0.1756 by export.pike * (autobuild) release number bumped to 8.0.1757 by export.pike * (grubba) Web.Api: Accept all 200-series result codes as success. Eg Github uses status code 202 on success. * (grubba) Web.Api: Authenticate with the Authorization header by default. Sending OAuth authorization information via query variables has been deprecated by RFC6750 (and others), and some endpoints (eg GitHub) do no longer support the old method. Switch to using Authorization: Bearer by default. Also updates Web.Api.Github accordingly. * (autobuild) release number bumped to 8.0.1754 by export.pike * (autobuild) release number bumped to 8.0.1755 by export.pike * (nilsson) Updated to Unicode 14.0.0 * (nilsson) Updated to Unicode 14.0.0 * (autobuild) release number bumped to 8.0.1753 by export.pike * (autobuild) release number bumped to 8.0.1752 by export.pike * (tobij) Standards.BSON: Improve robustness of BSON parser The BSON parser had a few issues with parsing size headers correctly that have been fixed in 8.1 as part of a refactor, but were still causing problems in 8.0. Thanks to Joshua Rogers for the report. * (grubba) release number bumped to 8.0.1750 by export.pike * (grubba) release number bumped to 8.0.1751 by export.pike * (grubba) Standards.EXIF: Improved robustness of IFD parser. This notably makes the IFD parser stop attempt to parse IFDs after the EXIF IFD. It seems that it is common for the EXIF IFD to not be followed by an IFD list terminator. Also adds some references to the EXIF 2.2 standard. * (autobuild) release number bumped to 8.0.1749 by export.pike * (autobuild) release number bumped to 8.0.1748 by export.pike * (grubba) Runtime: Fix leak of type stack marks when dispatching variants. Some obscure variant functions caused the variant dispatcher to leak marks on the type stack. * (autobuild) release number bumped to 8.0.1747 by export.pike * (autobuild) release number bumped to 8.0.1746 by export.pike * (grubba) Merge branch 'patches/support-mixed-in-count_memory' into 8.0 * patches/support-mixed-in-count_memory: GC: Support remaining types in Pike.count_memory(). * (grubba) Merge branch 'patches/amd64-broken-debug-F_XOR_INT' into 8.0 * patches/amd64-broken-debug-F_XOR_INT: Compiler [amd64]: Fix indexing out of bounds for F_XOR_INT --with-debug. * (autobuild) release number bumped to 8.0.1744 by export.pike * (autobuild) release number bumped to 8.0.1745 by export.pike * (grubba) Merge branch 'patches/ssl-heartbeat-fix' into 8.0 * patches/ssl-heartbeat-fix: SSL.Constants: Fix typo in value for HEARTBEAT_MODE_peer_no_allowed_to_send. * (autobuild) release number bumped to 8.0.1743 by export.pike * (autobuild) release number bumped to 8.0.1742 by export.pike * (nilsson) unbug doesn't matter. * (autobuild) release number bumped to 8.0.1741 by export.pike * (autobuild) release number bumped to 8.0.1740 by export.pike * (william) release number bumped to 8.0.1738 by export.pike * (william) release number bumped to 8.0.1739 by export.pike * (grubba) Documentation [SSL]: Fix typo in previous commit. * (autobuild) release number bumped to 8.0.1736 by export.pike * (autobuild) release number bumped to 8.0.1737 by export.pike * (william) doc: fixing some autodoc markup * (autobuild) release number bumped to 8.0.1734 by export.pike * (autobuild) release number bumped to 8.0.1735 by export.pike * (william) CHANGES: updated changes * (grubba) release number bumped to 8.0.1732 by export.pike * (grubba) release number bumped to 8.0.1733 by export.pike * (grubba) Sql.mysql: Clean up backport. The Mysql module in Pike 8.0 does not handle an argument value of UNDEFINED identically to as if the corresponding argument was omitted. Fixes list_{dbs,tables}() with omitted wild card argument. Also fixes an obscure special case in list_fields(). * (autobuild) release number bumped to 8.0.1731 by export.pike * (autobuild) release number bumped to 8.0.1730 by export.pike * (grubba) Sql.mysql: Clean up character set handling. Adds helper functions fix_{query,result}_charset() that contain code that used to be in the QUERY_BODY() macro. This makes the code quite a bit easier to read. Adds charset wrappers to list_{dbs,tables,fields}() that previously changed behavior depending on what the send_charset was. Remove some now obsoleted character set handling from Mysql.SqlTable. Potential fix for intermittent failures for Mysql.SqlTable to handle tables with wide characters in the table name. * (autobuild) release number bumped to 8.0.1729 by export.pike * (autobuild) release number bumped to 8.0.1728 by export.pike * (william) mktestsuite: explicitly provide debug flags for benefit of BSD m4 * (autobuild) release number bumped to 8.0.1726 by export.pike * (autobuild) release number bumped to 8.0.1727 by export.pike * (william) fix another source of problems with 7.8 compat SSL testsuite we can't assume that because the send buffer is empty, no more data can be expected. should still identify problems, as test will either succeed or fail by the backend countdown timing out. * (autobuild) release number bumped to 8.0.1725 by export.pike * (autobuild) release number bumped to 8.0.1724 by export.pike * (william) testsuite: allow a bit longer for data to drain. back ported from main SSL testsuite. * (autobuild) release number bumped to 8.0.1723 by export.pike * (autobuild) release number bumped to 8.0.1722 by export.pike * (william) Changelog: getting ready for a release * (grubba) Sql.Sql: Added query_db() to the API. * (grubba) Mysql: Added query_db(). * (grubba) Sql.mysql: Added reset(). * (nilsson) Update year. * (autobuild) release number bumped to 8.0.1721 by export.pike * (autobuild) release number bumped to 8.0.1720 by export.pike * (grubba) Merge branch 'patches/gtk2-main_iteration' into 8.0 * patches/gtk2-main_iteration: GTK2: Fixed a few more uses of g_main_iteration(). * (grubba) GTK2: Inhibit warnings from glib 2.36 and later. glib 2.36 deprecated some stuff that the gtk-2 headerfiles use. So set GLIB_VERSION_MIN_REQUIRED to a version prior to GLIB_VERSION_2_36 to inhibit the deprecation warnings. * (autobuild) release number bumped to 8.0.1719 by export.pike * (autobuild) release number bumped to 8.0.1718 by export.pike * (nilsson) Updated copyright. * (nilsson) Whitelist mkexpert from #pike directive. * (nilsson) Fix Unicode test. * (nilsson) Updated year, just in time. * (autobuild) release number bumped to 8.0.1717 by export.pike * (autobuild) release number bumped to 8.0.1716 by export.pike * (grubba) Merge branch 'patches/mariadb-conc-509' into 8.0 * patches/mariadb-conc-509: Configure [Mysql]: Survive MariaDB Connector/C 3.2.1 and later (CONC-509). * (grubba) release number bumped to 8.0.1715 by export.pike * (grubba) release number bumped to 8.0.1714 by export.pike * (grubba) Merge branch 'patches/bug10058' into 8.0 * patches/bug10058: Configure: Improved exit(3C) C99 check. * (grubba) release number bumped to 8.0.1712 by export.pike * (grubba) release number bumped to 8.0.1713 by export.pike * (grubba) Merge branch 'patches/bug10058' into 8.0 * patches/bug10058: Configure: Changed approach to autoconf 2.59 C99 kludge. * (grubba) release number bumped to 8.0.1710 by export.pike * (grubba) release number bumped to 8.0.1711 by export.pike * (grubba) Merge branch 'patches/bug10058' into 8.0 * patches/bug10058: Configure: Fix some quoting issues. * (grubba) Merge branch 'patches/bug10058' into 8.0 * patches/bug10058: Configure: Improved support for C99 with autoconf 2.59 and earlier. * (grubba) Merge branch 'patches/bug10074' into 8.0 * patches/bug10074: Nettle.CCM: Fix handling of authenticated data of lengths 14-0xfeff. * (autobuild) release number bumped to 8.0.1709 by export.pike * (autobuild) release number bumped to 8.0.1708 by export.pike * (grubba) Merge branch 'patches/bug10075' into 8.0 * patches/bug10075: Standards.ASN1.Decode: Set error mode on Stdio.Buffer. Prevent infinite loops when decoding incomplete data. * (grubba) release number bumped to 8.0.1707 by export.pike * (grubba) release number bumped to 8.0.1706 by export.pike * (grubba) Concurrent: Fix syntax to be compatible with Pike 8.0.886 and earlier. Modules in Pike 8.0 need to be syntax-compatible with all released versions of Pike 8.0 (or at least Pike 8.0.232 and later). * (autobuild) release number bumped to 8.0.1705 by export.pike * (autobuild) release number bumped to 8.0.1704 by export.pike * (grubba) Nettle.CCM: Fix NULL-deref in digest(). Fixes issue reported in LysLysKOM 25080935. Fixes #10072. enter the commit message for your changes. Lines starting * (autobuild) release number bumped to 8.0.1702 by export.pike * (autobuild) release number bumped to 8.0.1703 by export.pike * (grubba) Configure: Change the looping method for PIKE_PARSE_PREFIXES. Some shells complained about unmatched back-quotes. * (grubba) Configure: Even more fixes for autoconf 2.71. Autoconf 2.71 seems to have changed the set value for $ac_test_CFLAGS from "set" to "y". Fixes lost options from CFLAGS. * (grubba) release number bumped to 8.0.1701 by export.pike * (grubba) release number bumped to 8.0.1700 by export.pike * (grubba) Configure: Support autoconf 2.59 again. * (grubba) Configure: More autoconf 2.71 fixes. * (grubba) Configure: Some support for autoconf 2.71 and later. * (autobuild) release number bumped to 8.0.1699 by export.pike * (autobuild) release number bumped to 8.0.1698 by export.pike * (grubba) Merge branch 'patches/bug10070' into 8.0 * patches/bug10070: Threads.Condition: Fix wait() with sub-second timeout. * (grubba) release number bumped to 8.0.1697 by export.pike * (grubba) release number bumped to 8.0.1696 by export.pike * (grubba) EFUNs: describe_backtrace() now reports cpu time --with-profiling. * (grubba) Pike.BacktraceFrame: Add field total_time --with-profiling. * (grubba) release number bumped to 8.0.1695 by export.pike * (grubba) release number bumped to 8.0.1694 by export.pike * (grubba) Merge branch 'grubba/fix-image-tiff-decoding' into 8.0 * grubba/fix-image-tiff-decoding: Configure [cross-compiling]: Support third argument to AC_CHECK_SIZEOF. * (grubba) Merge branch 'grubba/fix-image-tiff-decoding' into 8.0 * grubba/fix-image-tiff-decoding: Image.TIFF: Fix Linuxism; prefer INT_MAX to MAX_INT. * (autobuild) release number bumped to 8.0.1693 by export.pike * (autobuild) release number bumped to 8.0.1692 by export.pike * (tobij) CHANGES: Document Image.TIFF fixes * (tobij) Merge branch 'tobij/fix-image-tiff-decoding' into 8.0 * tobij/fix-image-tiff-decoding: Image.TIFF: Improved size checks in image decoding * (autobuild) release number bumped to 8.0.1691 by export.pike * (autobuild) release number bumped to 8.0.1690 by export.pike * (nilsson) Backported more compact attribute rendering. * (autobuild) release number bumped to 8.0.1689 by export.pike * (autobuild) release number bumped to 8.0.1688 by export.pike * (grubba) Updated to tzdata2021e. * (nilsson) Fixe requests where range is 0- * (grubba) release number bumped to 8.0.1687 by export.pike * (grubba) release number bumped to 8.0.1686 by export.pike * (grubba) Mysql [Configure]: Fix detection of OpenSSL 1.1.x and later. * (grubba) Revert "Compiler: Make print_tree() available also --without-debug." This reverts commit 7727ebe17330b686d10257653299ff5efa3db0c8. * (autobuild) release number bumped to 8.0.1685 by export.pike * (autobuild) release number bumped to 8.0.1684 by export.pike * (grubba) Compiler: Make print_tree() available also --without-debug. * (autobuild) release number bumped to 8.0.1683 by export.pike * (autobuild) release number bumped to 8.0.1682 by export.pike * (grubba) Runtime: Fix some issues in *_AGGREGATE_ARRAY. * The type_field was not set properly when the initial estimated size was 0. This caused memory leaks under some circumstances. Fixes leak of "z" from code like: cpp("#define Y() y\n#define X(x) x(z)\nX(Y)\n"); * The items moved from the stack to the aggregated array were not registered with dmalloc. * Improved consistency checks. * (autobuild) release number bumped to 8.0.1680 by export.pike * (autobuild) release number bumped to 8.0.1681 by export.pike * (grubba) SSL.File: Fix erroneous timeouts. Backends may return 0 early in some circumstances when multiple threads are using the backend concurrently. This is triggered by the testsuite, and caused erroneous timeouts which terminated connections. * (autobuild) release number bumped to 8.0.1678 by export.pike * (autobuild) release number bumped to 8.0.1679 by export.pike * (grubba) SSL.File: Fix "Failed to close SSL connection: Success". * (grubba) Build [Configure]: Prefer autoconf 2.69. Avoid using autoconf 2.71. * (autobuild) release number bumped to 8.0.1677 by export.pike * (autobuild) release number bumped to 8.0.1676 by export.pike * (grubba) Protocols.LDAP.client: Set the timeout for ldaps connections. LDAP connections secured with TLS/SSL now timeout if the server does not respond within 10 seconds. This fixes issues where LDAP connections used to hang indefinitely when the LDAP server did not respond. Fixes [CMS-741]. * (grubba) SSL.File: Add {query,set}_timeout(). This adds an API to set an optional timeout to be used for blocking operations. When the timeout expires it is handled as if the peer sent a fatal internal error alert. * (grubba) SSL.File: Detect connection closed by peer in direct_write(). If the connection is closed by the peer while running the backend during direct_write(), it is now signalled with as an EPIPE failure (just as it already was if it was closed before running the backend). Improves error detection in eg connect(). * (grubba) SSL.Connection: Change API of handle_alert() and make it visible. handle_alert() is useful to eg simulate external alerts, so make it easier to use. * (autobuild) release number bumped to 8.0.1675 by export.pike * (autobuild) release number bumped to 8.0.1674 by export.pike * (marcus) Compiler [Typechecker]: Workaround for gcc optimization of signed overflow The expression "(min1 > max2) && (min1 > max2 + 1)" got optimized into "(min1 > max2 + 1)" by gcc, because of min1 is larger than max2 + 1, then it clearly must be larger than max2 as well... Except when max2 + 1 is a signed overflow. So explicitly check for that instead and hope gcc doesn't optimize away that check as well... * (autobuild) release number bumped to 8.0.1673 by export.pike * (autobuild) release number bumped to 8.0.1672 by export.pike * (marcus) configure: Move gmp check to after searching for library paths This prevents the flags provided by pkg-config from upsetting the very delicate ordering interdependency between library path and include path. * (autobuild) release number bumped to 8.0.1671 by export.pike * (autobuild) release number bumped to 8.0.1670 by export.pike * (marcus) Process.create_process: Avoid looping around closefrom() when errno is ENOSYS glibc 2.34 has the closefrom() function, but it can set errno to ENOSYS if the kernel does not implement the close_range syscall. In this case, calling closefrom() again and again is not going to make the kernel magically sprout a new syscall, so just give up. * (marcus) Builtin: Use 64-bit version of time_t in current glibc This functionality exists in glibc releases starting with 2.34. * (grubba) System.TM: Support initialization with bignums. Fixes post-2038 support on ILP32 architectures with 64-bit time_t. * (autobuild) release number bumped to 8.0.1668 by export.pike * (autobuild) release number bumped to 8.0.1669 by export.pike * (marcus) CHANGES: Document crypt bugfix * (marcus) crypt: NUL-terminate the salt string * (autobuild) release number bumped to 8.0.1666 by export.pike * (autobuild) release number bumped to 8.0.1667 by export.pike * (tobij) CHANGES: Document Concurrent changes * (tobij) Concurrent: Fix Future()->timeout() call_callback() may use call_out(cb, 0, ...) to call a callback. This means that if we call multiple callbacks wie call_callback(), they mæy be executed in arbitrary order. The implementation of Future()->timeout() was subject to races in this regard, leading to the Future returned by ->timeout() to resolve with 0 instead of the result or instead of rejecting with the same reason as the original Promise/Future was rejected before the timeout triggered. Using less abstractions, we save on such races, Future objects, and even lambdas while getting arguably eaiser to read code. * (el) Concurrent: Handle possible backend change in timeout() Concurrent.Future()->timeout() could fail to remove the call_out if the backend of the corresponding Promise is changed after calling timeout(). * (autobuild) release number bumped to 8.0.1665 by export.pike * (autobuild) release number bumped to 8.0.1664 by export.pike * (grubba) Export: Retry git push and git pull on ssh failure. Attempt to improve robustness against intermittent network issues. Fixes #10065. * (autobuild) release number bumped to 8.0.1663 by export.pike * (autobuild) release number bumped to 8.0.1662 by export.pike * (nilsson) Allow armour tokens to be prefixed by whitespace * (autobuild) release number bumped to 8.0.1661 by export.pike * (autobuild) release number bumped to 8.0.1660 by export.pike * (nilsson) Backported fragment helper methods. * (nilsson) Backported trim_all_whites alias trim. * (autobuild) release number bumped to 8.0.1659 by export.pike * (autobuild) release number bumped to 8.0.1658 by export.pike * (grubba) Merge branch 'patches/run_autoconfig' into 8.0 * patches/run_autoconfig: run_autoconfig: Add some paranoia. run_autoconfig: Generate stamp-h.in also when no AC_CONFIG_HEADER. * (autobuild) release number bumped to 8.0.1657 by export.pike * (autobuild) release number bumped to 8.0.1656 by export.pike * (tobij) Merge branch 'security/decode_value' into 8.0 * security/decode_value: decode_value(): rec_restore_value() now also values -1 codec * (autobuild) release number bumped to 8.0.1655 by export.pike * (autobuild) release number bumped to 8.0.1654 by export.pike * (tobij) CHANGES: Document Image.JPEG changes * (tobij) Merge branch 'tobij/fix-image-jpeg-decoding' into 8.0 * tobij/fix-image-jpeg-decoding: Image.JPEG: Do not over-allocate img->img * (autobuild) release number bumped to 8.0.1653 by export.pike * (autobuild) release number bumped to 8.0.1652 by export.pike * (tobij) Merge branch 'bugfix/multiset_cmp_leaks' into 8.0 * bugfix/multiset_cmp_leaks: sort(): Unset recovery contexts in proper order * (autobuild) release number bumped to 8.0.1651 by export.pike * (autobuild) release number bumped to 8.0.1650 by export.pike * (grubba) Compiler [Typechecker]: Fix erroneous deprecation warning in obscure case. Fixes [REP-60]. * (autobuild) release number bumped to 8.0.1649 by export.pike * (autobuild) release number bumped to 8.0.1648 by export.pike * (unknown user) Unschedule already scheduled maintenance when new frequency is "Never". * (autobuild) release number bumped to 8.0.1647 by export.pike * (autobuild) release number bumped to 8.0.1646 by export.pike * (erik) release number bumped to 8.0.1644 by export.pike * (erik) release number bumped to 8.0.1645 by export.pike * (autobuild) release number bumped to 8.0.1643 by export.pike * (autobuild) release number bumped to 8.0.1642 by export.pike * (tobij) CHANGES: Document decode_value() changes * (tobij) Merge branch 'security/decode_value' into 8.0 * security/decode_value: decode_value(): Allow to restrict decoding to simple types * (autobuild) release number bumped to 8.0.1641 by export.pike * (autobuild) release number bumped to 8.0.1640 by export.pike * (autobuild) release number bumped to 8.0.1638 by export.pike * (autobuild) release number bumped to 8.0.1639 by export.pike * (autobuild) release number bumped to 8.0.1636 by export.pike * (autobuild) release number bumped to 8.0.1637 by export.pike * (el) Merge branch 'bugfix/multiset_cmp_leaks' into 8.0 * (autobuild) release number bumped to 8.0.1634 by export.pike * (autobuild) release number bumped to 8.0.1635 by export.pike * (autobuild) release number bumped to 8.0.1633 by export.pike * (autobuild) release number bumped to 8.0.1632 by export.pike * (autobuild) release number bumped to 8.0.1631 by export.pike * (autobuild) release number bumped to 8.0.1630 by export.pike * (autobuild) release number bumped to 8.0.1629 by export.pike * (autobuild) release number bumped to 8.0.1628 by export.pike * (autobuild) release number bumped to 8.0.1627 by export.pike * (autobuild) release number bumped to 8.0.1626 by export.pike * (autobuild) release number bumped to 8.0.1624 by export.pike * (autobuild) release number bumped to 8.0.1625 by export.pike * (autobuild) release number bumped to 8.0.1623 by export.pike * (autobuild) release number bumped to 8.0.1622 by export.pike * (autobuild) release number bumped to 8.0.1621 by export.pike * (autobuild) release number bumped to 8.0.1620 by export.pike * (autobuild) release number bumped to 8.0.1619 by export.pike * (autobuild) release number bumped to 8.0.1618 by export.pike * (autobuild) release number bumped to 8.0.1617 by export.pike * (autobuild) release number bumped to 8.0.1616 by export.pike * (autobuild) release number bumped to 8.0.1614 by export.pike * (autobuild) release number bumped to 8.0.1615 by export.pike * (autobuild) release number bumped to 8.0.1613 by export.pike * (autobuild) release number bumped to 8.0.1612 by export.pike * (autobuild) release number bumped to 8.0.1611 by export.pike * (autobuild) release number bumped to 8.0.1610 by export.pike * (autobuild) release number bumped to 8.0.1609 by export.pike * (autobuild) release number bumped to 8.0.1608 by export.pike * (autobuild) release number bumped to 8.0.1607 by export.pike * (autobuild) release number bumped to 8.0.1606 by export.pike * (autobuild) release number bumped to 8.0.1605 by export.pike * (autobuild) release number bumped to 8.0.1604 by export.pike * (autobuild) release number bumped to 8.0.1603 by export.pike * (autobuild) release number bumped to 8.0.1602 by export.pike * (autobuild) release number bumped to 8.0.1600 by export.pike * (autobuild) release number bumped to 8.0.1601 by export.pike * (autobuild) release number bumped to 8.0.1599 by export.pike * (autobuild) release number bumped to 8.0.1598 by export.pike * (autobuild) release number bumped to 8.0.1596 by export.pike * (autobuild) release number bumped to 8.0.1597 by export.pike * (unknown user) Add more header files to avoid errors due to implicitly declared functions. * (autobuild) release number bumped to 8.0.1594 by export.pike * (autobuild) release number bumped to 8.0.1595 by export.pike * (autobuild) release number bumped to 8.0.1593 by export.pike * (autobuild) release number bumped to 8.0.1592 by export.pike * (autobuild) release number bumped to 8.0.1591 by export.pike * (autobuild) release number bumped to 8.0.1590 by export.pike * (autobuild) release number bumped to 8.0.1589 by export.pike * (autobuild) release number bumped to 8.0.1588 by export.pike * (autobuild) release number bumped to 8.0.1587 by export.pike * (autobuild) release number bumped to 8.0.1586 by export.pike * (autobuild) release number bumped to 8.0.1585 by export.pike * (autobuild) release number bumped to 8.0.1584 by export.pike * (autobuild) release number bumped to 8.0.1582 by export.pike * (autobuild) release number bumped to 8.0.1583 by export.pike * (autobuild) release number bumped to 8.0.1581 by export.pike * (autobuild) release number bumped to 8.0.1580 by export.pike * (autobuild) release number bumped to 8.0.1579 by export.pike * (autobuild) release number bumped to 8.0.1578 by export.pike * (autobuild) release number bumped to 8.0.1577 by export.pike * (autobuild) release number bumped to 8.0.1576 by export.pike * (autobuild) release number bumped to 8.0.1575 by export.pike * (autobuild) release number bumped to 8.0.1574 by export.pike * (autobuild) release number bumped to 8.0.1572 by export.pike * (autobuild) release number bumped to 8.0.1573 by export.pike * (grubba) Testsuite: Increase paranoia for pow() overflow tests. Avoid dumping the full result of the pow() operation in the case where int erroneously succeedes. * (autobuild) release number bumped to 8.0.1571 by export.pike * (autobuild) release number bumped to 8.0.1570 by export.pike * (autobuild) release number bumped to 8.0.1568 by export.pike * (autobuild) release number bumped to 8.0.1569 by export.pike * (autobuild) release number bumped to 8.0.1567 by export.pike * (autobuild) release number bumped to 8.0.1566 by export.pike * (autobuild) release number bumped to 8.0.1565 by export.pike * (autobuild) release number bumped to 8.0.1564 by export.pike * (autobuild) release number bumped to 8.0.1563 by export.pike * (autobuild) release number bumped to 8.0.1562 by export.pike * (autobuild) release number bumped to 8.0.1561 by export.pike * (autobuild) release number bumped to 8.0.1560 by export.pike * (autobuild) release number bumped to 8.0.1559 by export.pike * (autobuild) release number bumped to 8.0.1558 by export.pike * (autobuild) release number bumped to 8.0.1557 by export.pike * (autobuild) release number bumped to 8.0.1556 by export.pike * (autobuild) release number bumped to 8.0.1555 by export.pike * (autobuild) release number bumped to 8.0.1554 by export.pike * (autobuild) release number bumped to 8.0.1553 by export.pike * (autobuild) release number bumped to 8.0.1552 by export.pike * (autobuild) release number bumped to 8.0.1551 by export.pike * (autobuild) release number bumped to 8.0.1550 by export.pike * (autobuild) release number bumped to 8.0.1548 by export.pike * (autobuild) release number bumped to 8.0.1549 by export.pike * (autobuild) release number bumped to 8.0.1547 by export.pike * (autobuild) release number bumped to 8.0.1546 by export.pike * (autobuild) release number bumped to 8.0.1544 by export.pike * (autobuild) release number bumped to 8.0.1545 by export.pike * (autobuild) release number bumped to 8.0.1543 by export.pike * (autobuild) release number bumped to 8.0.1542 by export.pike * (autobuild) release number bumped to 8.0.1541 by export.pike * (autobuild) release number bumped to 8.0.1540 by export.pike * (autobuild) release number bumped to 8.0.1539 by export.pike * (autobuild) release number bumped to 8.0.1538 by export.pike * (autobuild) release number bumped to 8.0.1537 by export.pike * (autobuild) release number bumped to 8.0.1536 by export.pike * (autobuild) release number bumped to 8.0.1535 by export.pike * (autobuild) release number bumped to 8.0.1534 by export.pike * (wellhardh) release number bumped to 8.0.1532 by export.pike * (wellhardh) release number bumped to 8.0.1533 by export.pike * (autobuild) release number bumped to 8.0.1531 by export.pike * (autobuild) release number bumped to 8.0.1530 by export.pike * (autobuild) release number bumped to 8.0.1529 by export.pike * (autobuild) release number bumped to 8.0.1528 by export.pike * (autobuild) release number bumped to 8.0.1527 by export.pike * (autobuild) release number bumped to 8.0.1526 by export.pike * (autobuild) release number bumped to 8.0.1524 by export.pike * (autobuild) release number bumped to 8.0.1525 by export.pike * (autobuild) release number bumped to 8.0.1523 by export.pike * (autobuild) release number bumped to 8.0.1522 by export.pike * (autobuild) release number bumped to 8.0.1521 by export.pike * (autobuild) release number bumped to 8.0.1520 by export.pike * (autobuild) release number bumped to 8.0.1519 by export.pike * (autobuild) release number bumped to 8.0.1518 by export.pike * (autobuild) release number bumped to 8.0.1516 by export.pike * (autobuild) release number bumped to 8.0.1517 by export.pike * (autobuild) release number bumped to 8.0.1514 by export.pike * (autobuild) release number bumped to 8.0.1515 by export.pike * (autobuild) release number bumped to 8.0.1512 by export.pike * (autobuild) release number bumped to 8.0.1513 by export.pike * (autobuild) release number bumped to 8.0.1511 by export.pike * (autobuild) release number bumped to 8.0.1510 by export.pike * (autobuild) release number bumped to 8.0.1508 by export.pike * (autobuild) release number bumped to 8.0.1509 by export.pike * (autobuild) release number bumped to 8.0.1506 by export.pike * (autobuild) release number bumped to 8.0.1507 by export.pike * (autobuild) release number bumped to 8.0.1505 by export.pike * (autobuild) release number bumped to 8.0.1504 by export.pike * (autobuild) release number bumped to 8.0.1503 by export.pike * (autobuild) release number bumped to 8.0.1502 by export.pike * (autobuild) release number bumped to 8.0.1501 by export.pike * (autobuild) release number bumped to 8.0.1500 by export.pike * (autobuild) release number bumped to 8.0.1499 by export.pike * (autobuild) release number bumped to 8.0.1498 by export.pike * (autobuild) release number bumped to 8.0.1497 by export.pike * (autobuild) release number bumped to 8.0.1496 by export.pike * (autobuild) release number bumped to 8.0.1494 by export.pike * (autobuild) release number bumped to 8.0.1495 by export.pike * (autobuild) release number bumped to 8.0.1492 by export.pike * (autobuild) release number bumped to 8.0.1493 by export.pike * (autobuild) release number bumped to 8.0.1490 by export.pike * (autobuild) release number bumped to 8.0.1491 by export.pike * (autobuild) release number bumped to 8.0.1489 by export.pike * (autobuild) release number bumped to 8.0.1488 by export.pike * (autobuild) release number bumped to 8.0.1487 by export.pike * (autobuild) release number bumped to 8.0.1486 by export.pike * (autobuild) release number bumped to 8.0.1484 by export.pike * (autobuild) release number bumped to 8.0.1485 by export.pike * (autobuild) release number bumped to 8.0.1483 by export.pike * (autobuild) release number bumped to 8.0.1482 by export.pike * (autobuild) release number bumped to 8.0.1481 by export.pike * (autobuild) release number bumped to 8.0.1480 by export.pike * (autobuild) release number bumped to 8.0.1479 by export.pike * (autobuild) release number bumped to 8.0.1478 by export.pike * (autobuild) release number bumped to 8.0.1476 by export.pike * (autobuild) release number bumped to 8.0.1477 by export.pike * (autobuild) release number bumped to 8.0.1475 by export.pike * (autobuild) release number bumped to 8.0.1474 by export.pike * (autobuild) release number bumped to 8.0.1472 by export.pike * (autobuild) release number bumped to 8.0.1473 by export.pike * (autobuild) release number bumped to 8.0.1471 by export.pike * (autobuild) release number bumped to 8.0.1470 by export.pike * (autobuild) release number bumped to 8.0.1469 by export.pike * (autobuild) release number bumped to 8.0.1468 by export.pike * (autobuild) release number bumped to 8.0.1467 by export.pike * (autobuild) release number bumped to 8.0.1466 by export.pike * (srb) pgsql: Ease out of early destructs. * (autobuild) release number bumped to 8.0.1465 by export.pike * (autobuild) release number bumped to 8.0.1464 by export.pike * (autobuild) release number bumped to 8.0.1462 by export.pike * (autobuild) release number bumped to 8.0.1463 by export.pike * (autobuild) release number bumped to 8.0.1460 by export.pike * (autobuild) release number bumped to 8.0.1461 by export.pike * (autobuild) release number bumped to 8.0.1459 by export.pike * (autobuild) release number bumped to 8.0.1458 by export.pike * (autobuild) release number bumped to 8.0.1457 by export.pike * (autobuild) release number bumped to 8.0.1456 by export.pike * (autobuild) release number bumped to 8.0.1455 by export.pike * (autobuild) release number bumped to 8.0.1454 by export.pike * (autobuild) release number bumped to 8.0.1453 by export.pike * (autobuild) release number bumped to 8.0.1452 by export.pike * (autobuild) release number bumped to 8.0.1451 by export.pike * (autobuild) release number bumped to 8.0.1450 by export.pike * (autobuild) release number bumped to 8.0.1448 by export.pike * (autobuild) release number bumped to 8.0.1449 by export.pike * (autobuild) release number bumped to 8.0.1447 by export.pike * (autobuild) release number bumped to 8.0.1446 by export.pike * (autobuild) release number bumped to 8.0.1445 by export.pike * (autobuild) release number bumped to 8.0.1444 by export.pike * (autobuild) release number bumped to 8.0.1443 by export.pike * (autobuild) release number bumped to 8.0.1442 by export.pike * (autobuild) release number bumped to 8.0.1441 by export.pike * (autobuild) release number bumped to 8.0.1440 by export.pike * (autobuild) release number bumped to 8.0.1439 by export.pike * (autobuild) release number bumped to 8.0.1438 by export.pike * (srb) pgsql: Verify objects are still live at these points. * (autobuild) release number bumped to 8.0.1437 by export.pike * (autobuild) release number bumped to 8.0.1436 by export.pike * (autobuild) release number bumped to 8.0.1435 by export.pike * (autobuild) release number bumped to 8.0.1434 by export.pike * (autobuild) release number bumped to 8.0.1433 by export.pike * (autobuild) release number bumped to 8.0.1432 by export.pike * (autobuild) release number bumped to 8.0.1431 by export.pike * (autobuild) release number bumped to 8.0.1430 by export.pike * (srb) Complex _sprintfs in destructed objects fixated. * (autobuild) release number bumped to 8.0.1428 by export.pike * (autobuild) release number bumped to 8.0.1429 by export.pike * (autobuild) release number bumped to 8.0.1427 by export.pike * (autobuild) release number bumped to 8.0.1426 by export.pike * (srb) pgsql: Exceptions in backtrace protection. * (srb) Thread: Protect against exceptions in backtraces. * (autobuild) release number bumped to 8.0.1425 by export.pike * (autobuild) release number bumped to 8.0.1424 by export.pike * (autobuild) release number bumped to 8.0.1423 by export.pike * (autobuild) release number bumped to 8.0.1422 by export.pike * (marcus) Testsuite: Relax upper bound of gethrtime() test On macos Big Sur, the sleep(2.0) call can overshoot the target by 0.12-0.15 s if the system is otherwise idle (this is presumably related to the "napping" feature). This is not really an error since sleep only guarantees that _at least_ the requested time will elapse. Adjust the upper bound of the accepted interval to be T+0.2, but keep the lower bound at T-0.1. * (srb) pgsql: Catch even more double traps. * (grubba) release number bumped to 8.0.1421 by export.pike * (grubba) release number bumped to 8.0.1420 by export.pike * (srb) pgsql: Attempt to avoid double traps. * (autobuild) release number bumped to 8.0.1418 by export.pike * (autobuild) release number bumped to 8.0.1419 by export.pike * (autobuild) release number bumped to 8.0.1416 by export.pike * (autobuild) release number bumped to 8.0.1417 by export.pike * (autobuild) release number bumped to 8.0.1415 by export.pike * (autobuild) release number bumped to 8.0.1414 by export.pike * (autobuild) release number bumped to 8.0.1413 by export.pike * (autobuild) release number bumped to 8.0.1412 by export.pike * (autobuild) release number bumped to 8.0.1411 by export.pike * (autobuild) release number bumped to 8.0.1410 by export.pike * (autobuild) release number bumped to 8.0.1409 by export.pike * (autobuild) release number bumped to 8.0.1408 by export.pike * (autobuild) release number bumped to 8.0.1407 by export.pike * (autobuild) release number bumped to 8.0.1406 by export.pike * (autobuild) release number bumped to 8.0.1405 by export.pike * (autobuild) release number bumped to 8.0.1404 by export.pike * (autobuild) release number bumped to 8.0.1403 by export.pike * (autobuild) release number bumped to 8.0.1402 by export.pike * (autobuild) release number bumped to 8.0.1401 by export.pike * (autobuild) release number bumped to 8.0.1400 by export.pike * (autobuild) release number bumped to 8.0.1399 by export.pike * (autobuild) release number bumped to 8.0.1398 by export.pike * (autobuild) release number bumped to 8.0.1397 by export.pike * (autobuild) release number bumped to 8.0.1396 by export.pike * (srb) pgsql: Simplify code. * (autobuild) release number bumped to 8.0.1394 by export.pike * (autobuild) release number bumped to 8.0.1395 by export.pike * (autobuild) release number bumped to 8.0.1393 by export.pike * (autobuild) release number bumped to 8.0.1392 by export.pike * (autobuild) release number bumped to 8.0.1391 by export.pike * (autobuild) release number bumped to 8.0.1390 by export.pike * (autobuild) release number bumped to 8.0.1389 by export.pike * (autobuild) release number bumped to 8.0.1388 by export.pike * (autobuild) release number bumped to 8.0.1387 by export.pike * (autobuild) release number bumped to 8.0.1386 by export.pike * (autobuild) release number bumped to 8.0.1385 by export.pike * (autobuild) release number bumped to 8.0.1384 by export.pike * (grubba) release number bumped to 8.0.1383 by export.pike * (grubba) release number bumped to 8.0.1382 by export.pike * (grubba) release number bumped to 8.0.1381 by export.pike * (grubba) release number bumped to 8.0.1380 by export.pike * (autobuild) release number bumped to 8.0.1378 by export.pike * (autobuild) release number bumped to 8.0.1379 by export.pike * (autobuild) release number bumped to 8.0.1377 by export.pike * (autobuild) release number bumped to 8.0.1376 by export.pike * (autobuild) release number bumped to 8.0.1375 by export.pike * (autobuild) release number bumped to 8.0.1374 by export.pike * (autobuild) release number bumped to 8.0.1373 by export.pike * (autobuild) release number bumped to 8.0.1372 by export.pike * (autobuild) release number bumped to 8.0.1371 by export.pike * (autobuild) release number bumped to 8.0.1370 by export.pike * (autobuild) release number bumped to 8.0.1369 by export.pike * (autobuild) release number bumped to 8.0.1368 by export.pike * (autobuild) release number bumped to 8.0.1367 by export.pike * (autobuild) release number bumped to 8.0.1366 by export.pike * (autobuild) release number bumped to 8.0.1365 by export.pike * (autobuild) release number bumped to 8.0.1364 by export.pike * (tobij) Merge branch 'tobij/fix-image-x-decoding' into 8.0 * tobij/fix-image-x-decoding: Image.X: Improved size checks better detect malformed Images * (autobuild) release number bumped to 8.0.1362 by export.pike * (autobuild) release number bumped to 8.0.1363 by export.pike * (autobuild) release number bumped to 8.0.1361 by export.pike * (autobuild) release number bumped to 8.0.1360 by export.pike * (autobuild) release number bumped to 8.0.1358 by export.pike * (autobuild) release number bumped to 8.0.1359 by export.pike * (autobuild) release number bumped to 8.0.1356 by export.pike * (autobuild) release number bumped to 8.0.1357 by export.pike * (autobuild) release number bumped to 8.0.1355 by export.pike * (autobuild) release number bumped to 8.0.1354 by export.pike * (autobuild) release number bumped to 8.0.1352 by export.pike * (autobuild) release number bumped to 8.0.1353 by export.pike * (srb) pgsql: Clip _sprintf() in destructed objects. * (autobuild) release number bumped to 8.0.1351 by export.pike * (autobuild) release number bumped to 8.0.1350 by export.pike * (autobuild) release number bumped to 8.0.1348 by export.pike * (autobuild) release number bumped to 8.0.1349 by export.pike * (el) Merge branch 'arne/fix-decode-value-memory-errors' into 8.0 * (srb) pgsql: Attempt at preventing exceptions during backtrace display. * (srb) pgsql: Make CALL return faster. * (srb) pgsql: Cater for exotic error case. * (srb) pgsql: Avoid recursive errors in case of async destruct. * (srb) pgsql: Use DefaultBackend instead SmallBackend. * (autobuild) release number bumped to 8.0.1347 by export.pike * (autobuild) release number bumped to 8.0.1346 by export.pike * (autobuild) release number bumped to 8.0.1345 by export.pike * (autobuild) release number bumped to 8.0.1344 by export.pike * (tobij) Merge branch 'tobij/fix-image-xwd-decoding' into 8.0 * tobij/fix-image-xwd-decoding: Image.XWD: Further improve size check * (grubba) EFUNs: Use mallinfo2(3C) if available. Fixes warnings on versions of Linux where mallinfo(3C) has been deprecated. * (autobuild) release number bumped to 8.0.1343 by export.pike * (autobuild) release number bumped to 8.0.1342 by export.pike * (autobuild) release number bumped to 8.0.1340 by export.pike * (autobuild) release number bumped to 8.0.1341 by export.pike * (grubba) Merge branch 'tobi/fix-image-x-decoding' into 8.0 * tobi/fix-image-x-decoding: Image.X: Fix calls of alloca(). * (autobuild) release number bumped to 8.0.1339 by export.pike * (autobuild) release number bumped to 8.0.1338 by export.pike * (autobuild) release number bumped to 8.0.1336 by export.pike * (autobuild) release number bumped to 8.0.1337 by export.pike * (autobuild) release number bumped to 8.0.1335 by export.pike * (autobuild) release number bumped to 8.0.1334 by export.pike * (jonasw) release number bumped to 8.0.1332 by export.pike * (jonasw) release number bumped to 8.0.1333 by export.pike * (autobuild) release number bumped to 8.0.1331 by export.pike * (autobuild) release number bumped to 8.0.1330 by export.pike * (autobuild) release number bumped to 8.0.1329 by export.pike * (autobuild) release number bumped to 8.0.1328 by export.pike * (autobuild) release number bumped to 8.0.1327 by export.pike * (autobuild) release number bumped to 8.0.1326 by export.pike * (autobuild) release number bumped to 8.0.1324 by export.pike * (autobuild) release number bumped to 8.0.1325 by export.pike * (autobuild) release number bumped to 8.0.1322 by export.pike * (autobuild) release number bumped to 8.0.1323 by export.pike * (autobuild) release number bumped to 8.0.1320 by export.pike * (autobuild) release number bumped to 8.0.1321 by export.pike * (tobij) CHANGES: Document Image.{ILBM,X,XWD} fixes * (tobij) Merge branch 'tobij/fix-image-ilbm-decoding' into 8.0 * (tobij) Merge branch 'tobij/fix-image-x-decoding' into 8.0 * tobij/fix-image-x-decoding: Image.X: Guard alloca() with check_c_stack() Image.X: Remove $Id$ * (tobij) Merge branch 'tobij/fix-image-xwd-decoding' into 8.0 * tobij/fix-image-xwd-decoding: Image.XWD: Improve size checks to better detect malformed images Image.XWD: Remove $Id$ * (tobij) Merge branch 'tobij/fix-image-tim-decoding_2' into 8.0 * tobij/fix-image-tim-decoding_2: Image.TIM: Improve size checks to better detect malformed TIMs * (autobuild) release number bumped to 8.0.1319 by export.pike * (autobuild) release number bumped to 8.0.1318 by export.pike * (autobuild) release number bumped to 8.0.1316 by export.pike * (autobuild) release number bumped to 8.0.1317 by export.pike * (autobuild) release number bumped to 8.0.1315 by export.pike * (autobuild) release number bumped to 8.0.1314 by export.pike * (autobuild) release number bumped to 8.0.1312 by export.pike * (autobuild) release number bumped to 8.0.1313 by export.pike * (autobuild) release number bumped to 8.0.1311 by export.pike * (autobuild) release number bumped to 8.0.1310 by export.pike * (autobuild) release number bumped to 8.0.1308 by export.pike * (autobuild) release number bumped to 8.0.1309 by export.pike * (autobuild) release number bumped to 8.0.1307 by export.pike * (autobuild) release number bumped to 8.0.1306 by export.pike * (autobuild) release number bumped to 8.0.1305 by export.pike * (autobuild) release number bumped to 8.0.1304 by export.pike * (tobij) Merge branch 'tobij/fix-image-psd-packbits-decoding' into 8.0 * tobij/fix-image-psd-packbits-decoding: Image.PSD: Improve size checks Image.PSD: Remove $Id$ * (autobuild) release number bumped to 8.0.1303 by export.pike * (autobuild) release number bumped to 8.0.1302 by export.pike * (autobuild) release number bumped to 8.0.1300 by export.pike * (autobuild) release number bumped to 8.0.1301 by export.pike * (autobuild) release number bumped to 8.0.1299 by export.pike * (autobuild) release number bumped to 8.0.1298 by export.pike * (autobuild) release number bumped to 8.0.1297 by export.pike * (autobuild) release number bumped to 8.0.1296 by export.pike * (autobuild) release number bumped to 8.0.1295 by export.pike * (autobuild) release number bumped to 8.0.1294 by export.pike * (autobuild) release number bumped to 8.0.1292 by export.pike * (autobuild) release number bumped to 8.0.1293 by export.pike * (autobuild) release number bumped to 8.0.1291 by export.pike * (autobuild) release number bumped to 8.0.1290 by export.pike * (autobuild) release number bumped to 8.0.1288 by export.pike * (autobuild) release number bumped to 8.0.1289 by export.pike * (autobuild) release number bumped to 8.0.1287 by export.pike * (autobuild) release number bumped to 8.0.1286 by export.pike * (tobij) Merge branch 'tobij/fix-image-bmp-decoding' into 8.0 * tobij/fix-image-bmp-decoding: Image.BMP: Fix typo: '&&' is the operator in demand * (autobuild) release number bumped to 8.0.1285 by export.pike * (autobuild) release number bumped to 8.0.1284 by export.pike * (tobij) Merge branch 'tobij/fix-image-bmp-decoding' into 8.0 * tobij/fix-image-bmp-decoding: Image.BMP: Error on images with less than two dimensions * (tobij) Merge branch 'tobij/fix-image-tim-decoding' into 8.0 * tobij/fix-image-tim-decoding: Image.TIM: Add more size checks to better detect malformed TIMs * (tobij) Merge branch 'tobij/fix-image-pcx-decoding' into 8.0 * tobij/fix-image-pcx-decoding: Image.PCX: Further improve size checks for monochromatic PCX Image.PCX: Relax overzealous size check * (autobuild) release number bumped to 8.0.1283 by export.pike * (autobuild) release number bumped to 8.0.1282 by export.pike * (autobuild) release number bumped to 8.0.1281 by export.pike * (autobuild) release number bumped to 8.0.1280 by export.pike * (tobij) Merge branch 'tobij/fix-image-psd-decoding' into 8.0 * tobij/fix-image-psd-decoding: Image.PSD: Fix size check * (autobuild) release number bumped to 8.0.1279 by export.pike * (autobuild) release number bumped to 8.0.1278 by export.pike * (autobuild) release number bumped to 8.0.1277 by export.pike * (autobuild) release number bumped to 8.0.1276 by export.pike * (autobuild) release number bumped to 8.0.1275 by export.pike * (autobuild) release number bumped to 8.0.1274 by export.pike * (autobuild) release number bumped to 8.0.1273 by export.pike * (autobuild) release number bumped to 8.0.1272 by export.pike * (autobuild) release number bumped to 8.0.1271 by export.pike * (autobuild) release number bumped to 8.0.1270 by export.pike * (autobuild) release number bumped to 8.0.1269 by export.pike * (autobuild) release number bumped to 8.0.1268 by export.pike * (tobij) CHANGES: Document Image.{BMP,PCX,PSD,XCF} fixes * (tobij) Merge branch 'tobij/fix-image-xcf-decoding' into 8.0 * tobij/fix-image-xcf-decoding: Image.XCF: Properly initialize layer mask Image.XCF: Remove $Id$ * (tobij) Merge branch 'tobij/fix-image-psd-decoding' into 8.0 * tobij/fix-image-psd-decoding: Image.PSD: Improve detecion of malformed PSD images Image.PSD: Remove $Id$ * (tobij) Merge branch 'tobij/fix-image-pcx-decoding' into 8.0 * tobij/fix-image-pcx-decoding: Image.PCX: Improved detection of malformed PCX images Image.PCX: Remove $Id$ * (tobij) Merge branch 'tobij/fix-image-bmp-decoding' into 8.0 * tobij/fix-image-bmp-decoding: Image.BMP: Improve detection of malformed BMP images Image.BMP: Remove $Id$ * (tobij) Merge branch 'tobij/fix-image-tim-decoding' into 8.0 * tobij/fix-image-tim-decoding: Image.TIM: Further improve detection of malformed TIMs * (autobuild) release number bumped to 8.0.1266 by export.pike * (autobuild) release number bumped to 8.0.1267 by export.pike * (autobuild) release number bumped to 8.0.1265 by export.pike * (autobuild) release number bumped to 8.0.1264 by export.pike * (autobuild) release number bumped to 8.0.1262 by export.pike * (autobuild) release number bumped to 8.0.1263 by export.pike * (autobuild) release number bumped to 8.0.1261 by export.pike * (autobuild) release number bumped to 8.0.1260 by export.pike * (autobuild) release number bumped to 8.0.1258 by export.pike * (autobuild) release number bumped to 8.0.1259 by export.pike * (autobuild) release number bumped to 8.0.1256 by export.pike * (autobuild) release number bumped to 8.0.1257 by export.pike * (autobuild) release number bumped to 8.0.1255 by export.pike * (autobuild) release number bumped to 8.0.1254 by export.pike * (autobuild) release number bumped to 8.0.1253 by export.pike * (autobuild) release number bumped to 8.0.1252 by export.pike * (autobuild) release number bumped to 8.0.1251 by export.pike * (autobuild) release number bumped to 8.0.1250 by export.pike * (autobuild) release number bumped to 8.0.1248 by export.pike * (autobuild) release number bumped to 8.0.1249 by export.pike * (autobuild) release number bumped to 8.0.1247 by export.pike * (autobuild) release number bumped to 8.0.1246 by export.pike * (autobuild) release number bumped to 8.0.1245 by export.pike * (autobuild) release number bumped to 8.0.1244 by export.pike * (srb) Stdio.Buffer: Do not optimise the buffer to empty if there are subbuffers. * (autobuild) release number bumped to 8.0.1242 by export.pike * (autobuild) release number bumped to 8.0.1243 by export.pike * (tobij) CHANGES: Document Image.{GIF,PNG,TGA,TIF,WBF} fixes * (tobij) Merge branch 'tobij/fix-image-png-decoding' into 8.0 * tobij/fix-image-png-decoding: Image.PNG: Improve size check to better detect malformed PNGs Image.PNG: Remove $Id$ * (tobij) Merge branch 'tobij/fix-image-wbf-decoding' into 8.0 * tobij/fix-image-wbf-decoding: Image.WBF: Properly compute size Image.WBF: Remove $Id$ * (tobij) Merge branch 'tobij/fix-image-gif-lzw-bits' into 8.0 * (tobij) Merge branch 'tobij/fix-image-gif-lzw-clearcode' into 8.0 * tobij/fix-image-gif-lzw-clearcode: Image.GIF: clearcode cannot be extended upon in the dict * (tobij) Merge branch 'tobij/fix-image-tga-decoding' into 8.0 * tobij/fix-image-tga-decoding: Image.TGA: Update pointer to new Image's storage Image.TGA: Check various TGA header values more thoroughly Image.TGA: Remove $Id$ * (tobij) Merge branch 'tobij/fix-image-tim-decoding' into 8.0 * tobij/fix-image-tim-decoding: Image.TIM: Improve detection of malformed TIM images Image.TIM: Remove $Id$ * (autobuild) release number bumped to 8.0.1240 by export.pike * (autobuild) release number bumped to 8.0.1241 by export.pike * (autobuild) release number bumped to 8.0.1238 by export.pike * (autobuild) release number bumped to 8.0.1239 by export.pike * (autobuild) release number bumped to 8.0.1236 by export.pike * (autobuild) release number bumped to 8.0.1237 by export.pike * (tobij) CHANGES: Document build/find_stack_direction() fix * (tobij) Merge branch 'tobij/fix-find-stack-direction-inlining' into 8.0 * tobij/fix-find-stack-direction-inlining: Build [Configure]: Prevent inling of find_stack_direction() Build [Configure]: Remove $Id$ * (autobuild) release number bumped to 8.0.1235 by export.pike * (autobuild) release number bumped to 8.0.1234 by export.pike * (autobuild) release number bumped to 8.0.1233 by export.pike * (autobuild) release number bumped to 8.0.1232 by export.pike * (autobuild) release number bumped to 8.0.1230 by export.pike * (autobuild) release number bumped to 8.0.1231 by export.pike * (grubba) release number bumped to 8.0.1229 by export.pike * (grubba) release number bumped to 8.0.1228 by export.pike * (autobuild) release number bumped to 8.0.1227 by export.pike * (autobuild) release number bumped to 8.0.1226 by export.pike * (autobuild) release number bumped to 8.0.1225 by export.pike * (autobuild) release number bumped to 8.0.1224 by export.pike * (autobuild) release number bumped to 8.0.1223 by export.pike * (autobuild) release number bumped to 8.0.1222 by export.pike * (autobuild) release number bumped to 8.0.1221 by export.pike * (autobuild) release number bumped to 8.0.1220 by export.pike * (grubba) README: Updated year and URLs. * (grubba) Calendar.TZnames: Updated expert system. * (autobuild) release number bumped to 8.0.1219 by export.pike * (autobuild) release number bumped to 8.0.1218 by export.pike * (autobuild) release number bumped to 8.0.1217 by export.pike * (autobuild) release number bumped to 8.0.1216 by export.pike * (autobuild) release number bumped to 8.0.1215 by export.pike * (autobuild) release number bumped to 8.0.1214 by export.pike * (autobuild) release number bumped to 8.0.1213 by export.pike * (autobuild) release number bumped to 8.0.1212 by export.pike * (autobuild) release number bumped to 8.0.1211 by export.pike * (autobuild) release number bumped to 8.0.1210 by export.pike * (autobuild) release number bumped to 8.0.1209 by export.pike * (autobuild) release number bumped to 8.0.1208 by export.pike * (autobuild) release number bumped to 8.0.1207 by export.pike * (autobuild) release number bumped to 8.0.1206 by export.pike * (grubba) release number bumped to 8.0.1205 by export.pike * (grubba) release number bumped to 8.0.1204 by export.pike * (autobuild) release number bumped to 8.0.1202 by export.pike * (autobuild) release number bumped to 8.0.1203 by export.pike * (autobuild) release number bumped to 8.0.1201 by export.pike * (autobuild) release number bumped to 8.0.1200 by export.pike * (nilsson) Fix typo. * (nilsson) Added set_text() to update the contents of a text node. * (autobuild) release number bumped to 8.0.1199 by export.pike * (autobuild) release number bumped to 8.0.1198 by export.pike * (grubba) release number bumped to 8.0.1197 by export.pike * (grubba) release number bumped to 8.0.1196 by export.pike * (autobuild) release number bumped to 8.0.1194 by export.pike * (autobuild) release number bumped to 8.0.1195 by export.pike * (autobuild) release number bumped to 8.0.1193 by export.pike * (autobuild) release number bumped to 8.0.1192 by export.pike * (autobuild) release number bumped to 8.0.1191 by export.pike * (autobuild) release number bumped to 8.0.1190 by export.pike * (autobuild) release number bumped to 8.0.1188 by export.pike * (autobuild) release number bumped to 8.0.1189 by export.pike * (autobuild) release number bumped to 8.0.1187 by export.pike * (autobuild) release number bumped to 8.0.1186 by export.pike * (grubba) release number bumped to 8.0.1185 by export.pike * (grubba) release number bumped to 8.0.1184 by export.pike * (autobuild) release number bumped to 8.0.1183 by export.pike * (autobuild) release number bumped to 8.0.1182 by export.pike * (grubba) release number bumped to 8.0.1181 by export.pike * (grubba) release number bumped to 8.0.1180 by export.pike * (autobuild) release number bumped to 8.0.1179 by export.pike * (autobuild) release number bumped to 8.0.1178 by export.pike * (autobuild) release number bumped to 8.0.1177 by export.pike * (autobuild) release number bumped to 8.0.1176 by export.pike * (autobuild) release number bumped to 8.0.1174 by export.pike * (autobuild) release number bumped to 8.0.1175 by export.pike * (autobuild) release number bumped to 8.0.1172 by export.pike * (autobuild) release number bumped to 8.0.1173 by export.pike * (autobuild) release number bumped to 8.0.1171 by export.pike * (autobuild) release number bumped to 8.0.1170 by export.pike * (grubba) release number bumped to 8.0.1168 by export.pike * (grubba) release number bumped to 8.0.1169 by export.pike * (autobuild) release number bumped to 8.0.1167 by export.pike * (autobuild) release number bumped to 8.0.1166 by export.pike * (autobuild) release number bumped to 8.0.1165 by export.pike * (autobuild) release number bumped to 8.0.1164 by export.pike * (autobuild) release number bumped to 8.0.1162 by export.pike * (autobuild) release number bumped to 8.0.1163 by export.pike * (autobuild) release number bumped to 8.0.1161 by export.pike * (autobuild) release number bumped to 8.0.1160 by export.pike * (autobuild) release number bumped to 8.0.1158 by export.pike * (autobuild) release number bumped to 8.0.1159 by export.pike * (autobuild) release number bumped to 8.0.1157 by export.pike * (autobuild) release number bumped to 8.0.1156 by export.pike * (autobuild) release number bumped to 8.0.1155 by export.pike * (autobuild) release number bumped to 8.0.1154 by export.pike * (autobuild) release number bumped to 8.0.1153 by export.pike * (autobuild) release number bumped to 8.0.1152 by export.pike * (jonasw) release number bumped to 8.0.1151 by export.pike * (jonasw) release number bumped to 8.0.1150 by export.pike * (autobuild) release number bumped to 8.0.1149 by export.pike * (autobuild) release number bumped to 8.0.1148 by export.pike * (srb) pgsql: Simplify SQL logging. * (autobuild) release number bumped to 8.0.1147 by export.pike * (autobuild) release number bumped to 8.0.1146 by export.pike * (wellhardh) release number bumped to 8.0.1145 by export.pike * (wellhardh) release number bumped to 8.0.1144 by export.pike * (autobuild) release number bumped to 8.0.1142 by export.pike * (autobuild) release number bumped to 8.0.1143 by export.pike * (marcus) block_allocator: Remove unused alignment functionality * (autobuild) release number bumped to 8.0.1141 by export.pike * (autobuild) release number bumped to 8.0.1140 by export.pike * (jonasw) release number bumped to 8.0.1139 by export.pike * (jonasw) release number bumped to 8.0.1138 by export.pike * (autobuild) release number bumped to 8.0.1136 by export.pike * (autobuild) release number bumped to 8.0.1137 by export.pike * (grubba) Changes: Added some missing underlining. * (grubba) Changes: Added note about Inotify.Instance()->add_watch() API change. Fixes #10059. * (grubba) Inotify: add_watch() now returns -1 on some failures. This is to simplify differentiation between failures due to the filesystem being in flux (eg races), and failures due to resource limits. Fixes race condition (time of check, time of use) in Filesystem.Monitor.basic.InotifyMonitor()->register_path(). Fixes #10059. * (autobuild) release number bumped to 8.0.1134 by export.pike * (autobuild) release number bumped to 8.0.1135 by export.pike * (marcus) dlmalloc: Only use locks in a threaded pike * (marcus) Build: Workaround for by-content merge of _master_location Apple's linker performs by-content merges of string constants in the magical "cstring" section. We do not want this to happen to _master_location since we modify it later, which would also modify any merged strings. The "cstring" section is only supposed to contain values following C string syntax, i.e. any number of non-NUL bytes followed by a single NUL byte. So actually _master_location should already be disqualified from placement in this section since it has MAXPATHLEN NUL bytes at the end instead of just one. However, in the case of const char[] variables initialized from a string literal there is a bug/misfeature in gcc that it only considers the literal, not the initialized variable as a whole. Thus, we need to add at least one of the extra NUL bytes to the string literal for gcc to do the right thing. This does not change the actual variable value in any way. * (autobuild) release number bumped to 8.0.1133 by export.pike * (autobuild) release number bumped to 8.0.1132 by export.pike * (marcus) I/O: Don't use mallocing getcwd with USE_DL_MALLOC The returned memory would be allocated by the wrong allocator, causing an abort when it is freed. * (marcus) Build: Prevent malloc macro from expanding in ATTRIBUTE((malloc)) * (grubba) release number bumped to 8.0.1131 by export.pike * (grubba) release number bumped to 8.0.1130 by export.pike * (grubba) Calendar: tzdata/pacificnew and tzdata/systemv are no more. * (autobuild) release number bumped to 8.0.1129 by export.pike * (autobuild) release number bumped to 8.0.1128 by export.pike * (grubba) Updated to tzdata2021a. * (autobuild) release number bumped to 8.0.1127 by export.pike * (autobuild) release number bumped to 8.0.1126 by export.pike * (grubba) CritBit: Fixed stack inconsistency issues in _m_delete(). cb_delete() did not always set the output value. _m_delete() now survives a gc() being triggered during cb_delete(). * (el) ADT.CritBit: use after free in iterator The tree iterator keeps the tree root node but did not update it when the tree was modified during iteration. This could lead to access in freed memory. * (autobuild) release number bumped to 8.0.1125 by export.pike * (autobuild) release number bumped to 8.0.1124 by export.pike * (marcus) install_module: Remove destination before copy if it is a file This prevents overwriting executable binaries, something which confuses the code signing logic on macOS. * (marcus) Backend: Fix timed wait on backend_signal The timeout argument to co_wait_interpreter_timeout is relative, not absolute. * (autobuild) release number bumped to 8.0.1123 by export.pike * (autobuild) release number bumped to 8.0.1122 by export.pike * (marcus) Build: Fix macOS check for visibility attribute * (marcus) I/O [macOS]: Include for openpty * (marcus) Build [Configure]: Blacklist chroot on macOS The prototype is not available with _POSIX_C_SOURCE. * (marcus) Backport configure fixes from 8.1 * (marcus) Java [JNI/FFI]: Use ffi_closure_alloc() and ffi_closure_free() * (grubba) Java [JNI/FFI]: Use ffi_prep_closure_loc() if available. Fixes deprecation warning. ffi_prep_closure() is marked as deprecated in libffi 3.3. FIXME: Change the code to use ffi_closure_alloc() et al? * (marty) Build: Look for libs in /opt/local. Useful with MacPorts libs. * (marcus) Installer: Optimize hash update on macOS * (marcus) Installer: Fix signature hashes on macOS after updating master cookie * (autobuild) release number bumped to 8.0.1121 by export.pike * (autobuild) release number bumped to 8.0.1120 by export.pike * (tobij) [build] Use pattern rules for rules with additional deps Suffix rules (according to GNU make at least) cannot have dependencies of their own, old versions of GNU make ignored such dependencies, current versions of GNU make warn about them (and ignore them), and future versions of GNU make are announced to treat them as non-suffix rules, i.e. .c.o: foo.h would describe a rule to build .c.o from foo.h. GNU make claims that pattern rules are what needs to be used in case such rules have dependencies, so we shall give that a try. * (autobuild) release number bumped to 8.0.1119 by export.pike * (autobuild) release number bumped to 8.0.1118 by export.pike * (william) release number bumped to 8.0.1116 by export.pike * (william) release number bumped to 8.0.1117 by export.pike * (autobuild) release number bumped to 8.0.1115 by export.pike * (autobuild) release number bumped to 8.0.1114 by export.pike * (william) Changes: one last change * (william) configure: add stdlib.h to nonblocking test (if we have it). Hopefully fixes configuration failure on latest darwin due to implicit definition of exit() * (autobuild) release number bumped to 8.0.1112 by export.pike * (autobuild) release number bumped to 8.0.1113 by export.pike * (william) release number bumped to 8.0.1111 by export.pike * (william) release number bumped to 8.0.1110 by export.pike * (william) master: add missing brace from previous commit * (william) Documentation: fix markup errors * (william) release number bumped to 8.0.1108 by export.pike * (william) release number bumped to 8.0.1109 by export.pike * (william) configure: add a more targeted path inclusion * (william) configure: add --with-exclude-site-prefixes option which excludes a path from being used for bin/lib/incudes * (william) fix module dumping when installing in a temporary root (as when staging during packaging) * (autobuild) release number bumped to 8.0.1107 by export.pike * (autobuild) release number bumped to 8.0.1106 by export.pike * (william) Changes: document SSL.File read behavior change * (william) SSL: update testsuite to reflect new read() behavior, and also permit certain tests to run a bit longer to prevent unnecessary failures on some systems. * (william) SSL.File: if there's received data yet to be read, allow it to be returned, regardless of whether the connection is open. * (jonasw) release number bumped to 8.0.1104 by export.pike * (jonasw) release number bumped to 8.0.1105 by export.pike * (grubba) Configure: Remove /opt/local from default search path. /opt/local on MacOS X can contain libraries that conflict with and are incompatible with the system libraries (eg libiconv.dylib). This has a tendency to break stuff. If you need /opt/local, please use --with-site-prefixes. Fixes linking with MariaDB and MySQL. * (autobuild) release number bumped to 8.0.1103 by export.pike * (autobuild) release number bumped to 8.0.1102 by export.pike * (tobij) Merge branch 'tobij/fix-standards-uri-sprintf-cache' into 8.0 * tobij/fix-standards-uri-sprintf-cache: Standards.URI: make __hash() invariant to case of hostname Standards.URI: Never use the input string as string representation * (tobij) Merge branch 'tobij/fix-standards-uri-sprintf-cache' into 8.0 * tobij/fix-standards-uri-sprintf-cache: Standards.URI: Make string representation canonical again * (tobij) CHANGES: Document URI fix * (william) build: add common pkgsrc locations * (william) release number bumped to 8.0.1100 by export.pike * (william) release number bumped to 8.0.1101 by export.pike * (william) Changes: changes * (william) SSL: fix protocol hangs when non-blocking callbacks are set before handshake completes. * (autobuild) release number bumped to 8.0.1099 by export.pike * (autobuild) release number bumped to 8.0.1098 by export.pike * (william) rusage: reinitialize mach clock service after fork() on darwin * (william) PollDeviceBackend: fs_event setting for kqueue got moved out of the PollDeviceBackend block. fs_event callbacks are (currently) specific to kqueue backends. * (grubba) CritBit [bignum]: Added detection of broken gmp header files. Fixes issues with the system libgmp on some versions of Solaris. * (wellhardh) release number bumped to 8.0.1096 by export.pike * (wellhardh) release number bumped to 8.0.1097 by export.pike * (william) release number bumped to 8.0.1095 by export.pike * (william) release number bumped to 8.0.1094 by export.pike * (william) release number bumped to 8.0.1093 by export.pike * (william) release number bumped to 8.0.1092 by export.pike * (william) Administrivia: update some copyright dates found by release checks * (william) CHANGES: updates in preparation for release * (jonasw) release number bumped to 8.0.1091 by export.pike * (jonasw) release number bumped to 8.0.1090 by export.pike * (william) build: silence GL deprecation warning and fix a missing definition error on Darwin * (autobuild) release number bumped to 8.0.1089 by export.pike * (autobuild) release number bumped to 8.0.1088 by export.pike * (tobij) CHANGES: Document Concurrent.Promise fix * (tobij) Concurrent: Explicit error on executor rejection failure This is not perfect (as we currently have no way of properly chaining errors), but this should provide more helpful error messages to developers who somehow manage to throw in the executor after finalising the promise some other way. * (tobij) Concurrent: Catch executor throwing and convert to rejection There is arguably little reason to use the executor 'API' if not for it doing this. * (autobuild) release number bumped to 8.0.1087 by export.pike * (autobuild) release number bumped to 8.0.1086 by export.pike * (grubba) Testsuite [Concurrent.Promise]: Fix broken promise. init_promise() creates a promise and gets its future. The Concurrent.results() - empty test throws away both. This caused the gc to generate complaints about broken promises. Fixes erroneous testsuite output. * (grubba) Testsuite [Stdio.Buffer]: Removed some search() tests. These variants of search() are only valid in Pike 8.1 and later. Fixes several testsuite failures. * (grubba) Documentation: Improved doc for search(). * (autobuild) release number bumped to 8.0.1085 by export.pike * (autobuild) release number bumped to 8.0.1084 by export.pike * (grubba) Merge branch 'patches/bug10057' into 8.0 * patches/bug10057: Protocols.DNS: Fixed some typos. * (grubba) Merge branch 'patches/bug10057' into 8.0 * patches/bug10057: Protocols.DNS: Improved error handling when calling async callbacks. * (autobuild) release number bumped to 8.0.1083 by export.pike * (autobuild) release number bumped to 8.0.1082 by export.pike * (grubba) Merge branch 'patches/bug10056' into 8.0 * patches/bug10056: Protocols.HTTP.Server.Request: Use Stdio.Buffer to buffer input. * (autobuild) release number bumped to 8.0.1081 by export.pike * (autobuild) release number bumped to 8.0.1080 by export.pike * (grubba) Stdio.Buffer: Reduce run-time argument strictness in _search(). Searching for values that aren't possible isn't an error, so avoid the precompiler generating errors for such parameters. Fixes testsuite failure searching for character -1. * (grubba) Typesystem: Add tInt{7,8,16}bit. Also adds some use of them. * (nilsson) Return -1 when failing to find a hit with search(Stdio.Buffer). * (nilsson) Some search(Stdio.Buffer) tests. Results doesn't match documentation it appears. * (grubba) Stdio.Buffer [search]: Support searching for substrings. * (grubba) Stdio.Buffer [search]: _search() now behaves as documented. Return UNDEFINED instead of -1 on failure (as -1 is a valid result). * (grubba) Stdio.Buffer: Added _search(). * (grubba) Stdio.Buffer [search]: Support specifying the end position. It is now possible to inform the Stdio.Buffer lfun::_search() that it shouldn't scan past a certain position. Also removes an unused variable. * (el) Stdio.Buffer: added truncate() * (grubba) Concurrent.Promise: Fix recursive mutex lock errors. Do not call callbacks while holding the mutex lock. Fixes multiple testsuite failures. * (autobuild) release number bumped to 8.0.1079 by export.pike * (autobuild) release number bumped to 8.0.1078 by export.pike * (grubba) Concurrent.Promise: Fixed race-condition in finalise(). The API for finalise() raced with on_{success,failure}(), as new callbacks could get registered after finalise() was called, but before the state was updated. Fixes #10055. * (grubba) CHANGES: Added note about Concurrent.Promise fix. Fixes #10055. * (autobuild) release number bumped to 8.0.1077 by export.pike * (autobuild) release number bumped to 8.0.1076 by export.pike * (marcus) Gettext: Prevent argument of textdomain from being empty * (marcus) strftime: Remove non-standard conversions %k and %l from doc and testsuite These are not part of any C standard, not even C2x. Thus libc can not be expected to implement them. * (autobuild) release number bumped to 8.0.1074 by export.pike * (autobuild) release number bumped to 8.0.1075 by export.pike * (grubba) release number bumped to 8.0.1072 by export.pike * (grubba) release number bumped to 8.0.1073 by export.pike * (autobuild) release number bumped to 8.0.1070 by export.pike * (autobuild) release number bumped to 8.0.1071 by export.pike * (tobij) CHANGES: Document Tools.Standalone.httpserver directory traversal * (tobij) Merge branch 'tobij/fix-http-server-path-escape' into 8.0 * tobij/fix-http-server-path-escape: Tools.Standalone.httpserver: Fix directory traversal vulnerability * (autobuild) release number bumped to 8.0.1069 by export.pike * (autobuild) release number bumped to 8.0.1068 by export.pike * (grubba) Concurrent.AggregateState: Added CAVEAT LECTOR. * (grubba) Concurrent.Promise: Improved behavior for CONCURRENT_DEBUG. Don't store raw backtraces, they may contain references to stuff that the user doesn't expect to get extra references. * (grubba) Concurrent.Future: Added try_get(). * (grubba) Concurrent.Future: Added query_{success,failure}_callbacks(). * (grubba) Concurrent.AggregateState: Protect create(). * (autobuild) release number bumped to 8.0.1066 by export.pike * (autobuild) release number bumped to 8.0.1067 by export.pike * (unknown user) CHANGES: Document fix in Standards.EXIF.get_properties(). * (unknown user) Fix broken detection of EXIF section when multiple 0xE1 app markers were present in the file. * (grubba) release number bumped to 8.0.1064 by export.pike * (grubba) release number bumped to 8.0.1065 by export.pike * (autobuild) release number bumped to 8.0.1063 by export.pike * (autobuild) release number bumped to 8.0.1062 by export.pike * (grubba) Merge branch 'patches/is220' into 8.0 * patches/is220: Tools.Standalone.features: Added check for SQLite. * (autobuild) release number bumped to 8.0.1061 by export.pike * (autobuild) release number bumped to 8.0.1060 by export.pike * (grubba) Merge branch 'patches/bug10051' into 8.0 * patches/bug10051: Protocols.DNS.async_client: Survive NULL callbacks. * (autobuild) release number bumped to 8.0.1059 by export.pike * (autobuild) release number bumped to 8.0.1058 by export.pike * (srb) Make Thread.THREAD_ABORTED visible. * (autobuild) release number bumped to 8.0.1056 by export.pike * (autobuild) release number bumped to 8.0.1057 by export.pike * (grubba) release number bumped to 8.0.1054 by export.pike * (grubba) release number bumped to 8.0.1055 by export.pike * (grubba) release number bumped to 8.0.1053 by export.pike * (grubba) release number bumped to 8.0.1052 by export.pike * (grubba) EFUNs: Do not throw errors on validation failure in crypt(). The glibc crypt() implementation in RHEL 8 apparently sometimes performs misguided "validation" of the salt even for "$6$" and fails with EINVAL instead of actually validating the password. Throwing an error on validation failure is not what existing code expects, so just return a failure instead in this case. Fixes #10050. See also https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=714219 * (marcus) __builtin.Nettle.Hash.SCRAM: Validate incoming nonce and make it 7bit Also remove lots of superfluous softcasts. * (marcus) __builtin.Nettle.Hash.SCRAM: Don't reuse "nonce" for other crap This fixes some warnings. Also, remove crazy reuse of variable "r" in server_1(). * (grubba) release number bumped to 8.0.1051 by export.pike * (grubba) release number bumped to 8.0.1050 by export.pike * (grubba) __builtin.Nettle.Hash: Fixed warning. * (grubba) release number bumped to 8.0.1049 by export.pike * (grubba) release number bumped to 8.0.1048 by export.pike * (tobij) CHANGES: Document array item type confusion fix * (tobij) Merge branch 'tobij/fix-array-search-destructed-conversion' into 8.0 * tobij/fix-array-search-destructed-conversion: Array: array_search() may not change needle's type * (grubba) release number bumped to 8.0.1047 by export.pike * (grubba) release number bumped to 8.0.1046 by export.pike * (autobuild) release number bumped to 8.0.1045 by export.pike * (autobuild) release number bumped to 8.0.1044 by export.pike * (autobuild) release number bumped to 8.0.1043 by export.pike * (autobuild) release number bumped to 8.0.1042 by export.pike * (autobuild) release number bumped to 8.0.1041 by export.pike * (autobuild) release number bumped to 8.0.1040 by export.pike * (autobuild) release number bumped to 8.0.1039 by export.pike * (autobuild) release number bumped to 8.0.1038 by export.pike * (autobuild) release number bumped to 8.0.1037 by export.pike * (autobuild) release number bumped to 8.0.1036 by export.pike * (grubba) __builtin.Nettle.Hash.SCRAM: Fix security issue in server_3(). The password was not validated properly if the syntax was valid, but not the nonce. * (autobuild) release number bumped to 8.0.1035 by export.pike * (autobuild) release number bumped to 8.0.1034 by export.pike * (grubba) Merge branch 'patches/bug10033-fallout' into 8.0 * patches/bug10033-fallout: Protocols.HTTP.Server: Fixed bug in Request()->update_mime_var(). * (autobuild) release number bumped to 8.0.1032 by export.pike * (autobuild) release number bumped to 8.0.1033 by export.pike * (srb) pgsql: When destructing the connection, discard pending statements. * (autobuild) release number bumped to 8.0.1030 by export.pike * (autobuild) release number bumped to 8.0.1031 by export.pike * (srb) pgsql: Terminate early if the processloop has already folded. * (autobuild) release number bumped to 8.0.1028 by export.pike * (autobuild) release number bumped to 8.0.1029 by export.pike * (srb) pgsql: Skip already imploded portals. * (autobuild) release number bumped to 8.0.1027 by export.pike * (autobuild) release number bumped to 8.0.1026 by export.pike * (srb) pgsql: Release portals that had background-exceptions during bind. * (srb) pgsql: resync() in a destructed connection must end gracefully. * (autobuild) release number bumped to 8.0.1025 by export.pike * (autobuild) release number bumped to 8.0.1024 by export.pike * (srb) pgsql: Catch very fast resync responses. * (autobuild) release number bumped to 8.0.1022 by export.pike * (autobuild) release number bumped to 8.0.1023 by export.pike * (marcus) Fix some gratuitous rounding to double with long-double-precision * (autobuild) release number bumped to 8.0.1021 by export.pike * (autobuild) release number bumped to 8.0.1020 by export.pike * (marcus) JSON: Fix floating point literals with long-double-precision * (marcus) BSON: Fix floating point decoding tests * (marcus) Compiler: Fix floating point literals with long-double-precision * (marcus) sprintf: Fix output of high-precision floats * (marcus) 7.6::Calendar: Fix failures with PIKE_MODULE_RELOC * (grubba) Thread: Mark simulated MutexKey objects for immediate destruction. * (marcus) Master: Fix program_path_to_name with PIKE_MODULE_RELOC * (autobuild) release number bumped to 8.0.1018 by export.pike * (autobuild) release number bumped to 8.0.1019 by export.pike * (marcus) Backend.PollBackend: Signal read events on POLLHUP * (marcus) CritBit: Fix FloatTree with 128bit floats * (marcus) Master: Fixes for combine_path removal of .. breaking PIKE_MODULE_RELOC * (autobuild) release number bumped to 8.0.1017 by export.pike * (autobuild) release number bumped to 8.0.1016 by export.pike * (tobij) SSL.Context: Honour int(0..1) return type in offers_tickets() * (tobij) SSL.ServerConnection: Fix typo session->ticket_expiration_time should be session->ticket_expiry_time * (tobij) SSL.Context: Context commits to tickets via offers_tickets() In certain situations, i.e. after receiving an empty Session Ticket extension (client supports, but does not yet have a ticket), by including the Session Ticket extension in the server hello commits us to providing a ticket later. As SSL.Context would simply return 0 in encode_ticket() when use_cache was zero (not the default), we used to break the protocol on such occasions. Instead, we now use SSL.Context()->offers_tickets() to signal whether Session Tickets should be supported on the connection (and whether the Context commits to encoding a session as ticket later on). * (autobuild) release number bumped to 8.0.1015 by export.pike * (autobuild) release number bumped to 8.0.1014 by export.pike * (srb) pgsql: Autoconvert to UTF-8 for types as CITEXT. * (srb) pgsql: Only wait for queries that have not closed their portals yet. * (autobuild) release number bumped to 8.0.1013 by export.pike * (autobuild) release number bumped to 8.0.1012 by export.pike * (srb) pgsql: Do not retry indefinitely. * (autobuild) release number bumped to 8.0.1010 by export.pike * (autobuild) release number bumped to 8.0.1011 by export.pike * (marcus) YP: Check for actual functions, not just headers * (marcus) hash_svalue: Fix hashing of 128 bit floats * (autobuild) release number bumped to 8.0.1009 by export.pike * (autobuild) release number bumped to 8.0.1008 by export.pike * (marcus) Testsuite [SSL]: Set version range before calling get_suites * (marcus) Testsuite [SSL]: Skip tests requiring threads if not available * (marcus) Sql.postgres: Only inherit Sql.pgsql if it exists * (marcus) Protocols.WebSocket: Skip WebSocket.test if no threads * (marcus) Debug.Inspect: Mark as requiring threads * (marcus) Pike.Watchdog: Fix problems when without threads * (marcus) Thread.Condition: Backport fallback implementation from 8.1 This is needed by Concurrent. Thread.Condition: Fix edge case in fallback implementation * (marcus) Thread.ResourceCount: Provide fallback implementation * (marcus) Thread.Queue: Fix broken fallback implementation of try_read() * (marcus) Thread.Queue: Provide fallback implementation of peek_array() * (autobuild) release number bumped to 8.0.1007 by export.pike * (autobuild) release number bumped to 8.0.1006 by export.pike * (marcus) Threads: Move #ifdef so that we get Pike_interpreter_pointer even without threads * (nilsson) Fix compilation issue with f_gethrdtime without threads. Don't know if the result makes sense though. * (nilsson) Pike_interpreter.thread_state is not present when compiling without threads. * (nilsson) IMUTEX_T isn't defined when compiling without threads. * (nilsson) Fix syntax error when compiling without threads. * (autobuild) release number bumped to 8.0.1005 by export.pike * (autobuild) release number bumped to 8.0.1004 by export.pike * (srb) pgsql: Use sql_result instead of Result. * (autobuild) release number bumped to 8.0.1003 by export.pike * (autobuild) release number bumped to 8.0.1002 by export.pike * (srb) pgsql: Speed up resync(). * (srb) pgsql: Speed up resync() again (using textonly-queries). * (srb) pgsql: Release a portal only once (destructor becomes a no-op). * (autobuild) release number bumped to 8.0.1001 by export.pike * (autobuild) release number bumped to 8.0.1000 by export.pike * (grubba) Runtime: Fix gdb_backtrace() when --without-threads. * (autobuild) release number bumped to 8.0.999 by export.pike * (autobuild) release number bumped to 8.0.998 by export.pike * (srb) pgsql: Avoid a closemux mutex race in parallel queries. * (srb) Concurrent: Add CONCURRENT_DEBUG to get more meaningful broken-promises. * (autobuild) release number bumped to 8.0.997 by export.pike * (autobuild) release number bumped to 8.0.996 by export.pike * (srb) pgsql: Wait till completion on database connection reset. * (autobuild) release number bumped to 8.0.994 by export.pike * (autobuild) release number bumped to 8.0.995 by export.pike * (srb) Update CHANGES. * (srb) pgsql: Synchronous resync() and fix portalstack for text-multiqueries. * (autobuild) release number bumped to 8.0.993 by export.pike * (autobuild) release number bumped to 8.0.992 by export.pike * (grubba) Merge branch 'patches/bug10035' into 8.0 * patches/bug10035: SQLite.ResObj: Survive sqlite3_column_name() returning NULL. * (autobuild) release number bumped to 8.0.991 by export.pike * (autobuild) release number bumped to 8.0.990 by export.pike * (grubba) C API: Export callablep(). * (autobuild) release number bumped to 8.0.989 by export.pike * (autobuild) release number bumped to 8.0.988 by export.pike * (grubba) Testsuite [Parser.XML]: Updated entity test to comply with reality. * (autobuild) release number bumped to 8.0.987 by export.pike * (autobuild) release number bumped to 8.0.986 by export.pike * (nilsson) Fixed broken entity serialization. * (autobuild) release number bumped to 8.0.985 by export.pike * (autobuild) release number bumped to 8.0.984 by export.pike * (grubba) CHANGES: Added note about Standards.JSON.encode(). Fixes #10026. * (grubba) Merge branch 'patches/bug10026' into 8.0 * patches/bug10026: Modules: Make fast_check_threads_etc() useable from modules. * (grubba) Merge branch 'patches/bug10026' into 8.0 * patches/bug10026: Standards.JSON: Release the interpreter lock every now and then. * (autobuild) release number bumped to 8.0.983 by export.pike * (autobuild) release number bumped to 8.0.982 by export.pike * (grubba) Standards.X509: Use old syntax for compatibility. Modules in Pike 8.0 need to be syntax-compatible with all released versions of Pike 8.0 (or at least Pike 8.0.232 and later). Fixes #10024. * (autobuild) release number bumped to 8.0.981 by export.pike * (autobuild) release number bumped to 8.0.980 by export.pike * (grubba) Standards.URI: Updated list of unsafe characters to RFC 3986. Fixes some of [PIKE-4]. * (grubba) Inotify: Improved handling of invalid event callbacks. The events are now buffered until the callback becomes valid. Fixes #8042. * (autobuild) release number bumped to 8.0.979 by export.pike * (autobuild) release number bumped to 8.0.978 by export.pike * (grubba) Merge branch 'patches/bug10020' into 8.0 * patches/bug10020: Search.Filter.HTML: Fix title always being set to "". * (autobuild) release number bumped to 8.0.976 by export.pike * (autobuild) release number bumped to 8.0.977 by export.pike * (grubba) Merge branch 'patches/bug10020' into 8.0 * patches/bug10020: Search.Filter.HTML: Return the first . * (autobuild) release number bumped to 8.0.974 by export.pike * (autobuild) release number bumped to 8.0.975 by export.pike * (grubba) CHANGES: Added note about pty handling on NT. Fixes #10008. * (autobuild) release number bumped to 8.0.972 by export.pike * (autobuild) release number bumped to 8.0.973 by export.pike * (grubba) Merge branch 'patches/bug10016' into 8.0 * patches/bug10016: Stdio.Buffer.RewindKey: LFUNs should not be private. * (autobuild) release number bumped to 8.0.971 by export.pike * (autobuild) release number bumped to 8.0.970 by export.pike * (srb) pgsql: Toggle cache_autoprepared_statements default. * (autobuild) release number bumped to 8.0.968 by export.pike * (autobuild) release number bumped to 8.0.969 by export.pike * (grubba) Merge branch 'grubba/pty-handling' into 8.0 * grubba/pty-handling: I/O [NT]: Fixed typo. Stdio [NT]: Fixed compilation error when no struct termios. Diagnostics [NT]: Fixed multiple issues with FD_DEBUG. I/O [NT]: Enable some termios functions on NT. I/O [NT]: Implemented TIOCGWINSZ and TIOCSWINSZ ioctls. I/O: Make termios code dependent on presence of tcgetattr(). Stdio: Fix get_all_args() call to support Pike 8.0 and earlier. Stdio.File: Added tcdrain() and tcsetsize(). * (autobuild) release number bumped to 8.0.967 by export.pike * (autobuild) release number bumped to 8.0.966 by export.pike * (grubba) Documentation [Standards.X509]: Fixed some typos. Fixes #10012. * (srb) pgsql: Simplify error handling for users. * (srb) pgsql: Simplify code. * (srb) pgsql: Disentangle potentially shared empty arrays. * (srb) Document pgsql changes. * (autobuild) release number bumped to 8.0.964 by export.pike * (autobuild) release number bumped to 8.0.965 by export.pike * (tobij) Standards.X509: options can be a bool Check if it is a mapping before accessing it as such. * (tobij) CHANGES: Document signature algorithm change * (tobij) Standard.X509: Make signature algorithms configurable * (tobij) SSL: Do not accept MD2, MD5 and SHA1 signatures any longer Web browsers and others have distrusted SHA1 a long while ago, MD2 and MD5 are at this point simply dangerous to support. However, we now support configuration of supported signature algorithms via @[SSL.Context] in case any use case simply needs to support older signature algorithms. * (autobuild) release number bumped to 8.0.963 by export.pike * (autobuild) release number bumped to 8.0.962 by export.pike * (kg) release number bumped to 8.0.960 by export.pike * (kg) release number bumped to 8.0.961 by export.pike * (autobuild) release number bumped to 8.0.959 by export.pike * (autobuild) release number bumped to 8.0.958 by export.pike * (grubba) Merge branch 'grubba/pty-handling' into 8.0 * grubba/pty-handling: Process.Process [NT]: Added modifier "conpty". * (autobuild) release number bumped to 8.0.957 by export.pike * (autobuild) release number bumped to 8.0.956 by export.pike * (grubba) CHANGES: Added note about Stdio.PROP_TTY. * (grubba) Merge branch 'grubba/pty-handling' into 8.0 * grubba/pty-handling: Build [Linux]: openpty(3BSD) may be hidden in libutil. * (autobuild) release number bumped to 8.0.955 by export.pike * (autobuild) release number bumped to 8.0.954 by export.pike * (srb) Document pgsql changes. * (srb) pgsql: Cast integers to floats, when floats are desired. * (srb) pgsql: Avoid output_to() race on large requests. * (srb) pgsql: Cater for destructed objects. * (srb) pgsql: Do not pass along strings with NUL characters in UTF-8. * (srb) pgsql: 08P01 is a protocol error that is fatal. * (grubba) Merge branch 'grubba/pty-handling' into 8.0 * grubba/pty-handling: I/O [NT]: Fixed typo. Documentation [Stdio]: Added some more notes regarding PROP_TTY. * (autobuild) release number bumped to 8.0.953 by export.pike * (autobuild) release number bumped to 8.0.952 by export.pike * (grubba) Merge branch 'grubba/pty-handling' into 8.0 * grubba/pty-handling: I/O [NT]: Make Stdio.PROP_TTY indicate availability of ptys. * (grubba) Merge branch 'grubba/pty-handling' into 8.0 * grubba/pty-handling: (23 commits) I/O [NT]: Fixed typo in FD_DEBUG code. I/O [NT]: Updated note. I/O [NT]: Added some notes about pty handling. I/O [NT]: More pty handling fixes. I/O [NT]: Keep track of processes using ConPTY slaves. I/O [NT]: Do not attempt to read too much data from ptys. I/O [NT]: Changed calling convention for close_pty(). I/O [NT]: debug_fd_openpty() now returns ENOTSUPP when no ConPTY. I/O [NT]: Fixed some issues with debug_fd_openpty(). Process [NT]: Fix process creation. I/O [NT]: More debug_fd_openpty() fixes: I/O [NT]: Fixed multiple isses with debug_fd_openpty(). I/O [NT]: Adjusted preprocessor conditionals. I/O [NT]: Fixed typo. I/O [NT]: Fixed some issues with debug_fd_openpty(). Process [NT]: Fixed some typos in recent commits. Process.create_process [NT]: First go at attempting to support ptys. I/O [NT]: Make Pike_NT_* available to the rest of Pike. Process[NT]: Switch to using STARTUPINFOEXW. I/O [NT]: Added debug_fd_openpty(). ... * (autobuild) release number bumped to 8.0.950 by export.pike * (autobuild) release number bumped to 8.0.951 by export.pike * (tobij) README: 2017 -> 2020 * (tobij) CHANGES: Document Parser.HTML fix * (tobij) Merge branch 'tobij/fix-html-parser-svalue-stack' into 8.0 * tobij/fix-html-parser-svalue-stack: Parser.HTML: Be more conservative with stack use * (autobuild) release number bumped to 8.0.949 by export.pike * (autobuild) release number bumped to 8.0.948 by export.pike * (grubba) Merge branch 'grubba/pty-handling' into 8.0 * grubba/pty-handling: Process [NT]: Fixed typo in previous commit. Process [NT]: Support UTF-8 in create_process(). I/O [NT]: Added low_dwim_utf8_to_utf16(). I/O [NT]: Fixed some typos. I/O [NT]: Added dynamic lookup of symbols needed for pty handling. I/O [NT]: Added fallbacks for some stuff needed for pty handling. Build [Stdio]: Make systems without termios.h (ie NT) happy again. Stdio: Make Coverity happy. [CID 1457890] Stdio: Fixed some inverted tests in my_openpty(). Stdio: Removed extraneous and broken #include of <pty.h>. Stdio: Added support for PROP_TTY to pipe(). Stdio: Some pty-handling cleanup. * (autobuild) release number bumped to 8.0.946 by export.pike * (autobuild) release number bumped to 8.0.947 by export.pike * (grubba) Merge branch 'grubba/fdlib' into 8.0 * grubba/fdlib: I/O [NT]: Use read-write locking for fd_busy and fd_to_{socket,handle()}. * (autobuild) release number bumped to 8.0.944 by export.pike * (autobuild) release number bumped to 8.0.945 by export.pike * (tobij) Graphics.Graph: Prevent dumping of create_graph.pike "Resolves" an issue with incorrect dumping of this module. * (bortas) release number bumped to 8.0.943 by export.pike * (bortas) release number bumped to 8.0.942 by export.pike * (tobij) SSL.File: Signal errors during handshake via close callback We relatively recently stopped claiming that a connection was peer_closed when in fact we gave up on the SSL connection with a fatal alert. This caused us to signal some errors via the write callback instead. This restores the old signalling behaviour by checking for local_fatal state in some places we only checked for peer_closed before. * (tobij) SSL: Fix ticket_enabled logic a little bit In practice this ought to have little effect though, as to accept a ticket we also need to be in STATE_wait_for_ticket anyway. * (tobij) SSL: Do not purge sessions for crudely closed connections Not negotiating the close at the TLS level is in spec, and should not lead to sessions being purged. * (bortas) release number bumped to 8.0.940 by export.pike * (bortas) release number bumped to 8.0.941 by export.pike * (tobij) SSL.Context: Fix autodoc typo * (autobuild) release number bumped to 8.0.938 by export.pike * (autobuild) release number bumped to 8.0.939 by export.pike * (kg) release number bumped to 8.0.937 by export.pike * (kg) release number bumped to 8.0.936 by export.pike * (autobuild) release number bumped to 8.0.935 by export.pike * (autobuild) release number bumped to 8.0.934 by export.pike * (kg) release number bumped to 8.0.933 by export.pike * (kg) release number bumped to 8.0.932 by export.pike * (autobuild) release number bumped to 8.0.931 by export.pike * (autobuild) release number bumped to 8.0.930 by export.pike * (tobij) SSL: Only accept wildcards for one level * in CN / SubjectAlternativeName:dNS is supposed to only match one level of the hostname, i.e. *.example.com matches foo.example.com but not www.foo.example.com. * (autobuild) release number bumped to 8.0.929 by export.pike * (autobuild) release number bumped to 8.0.928 by export.pike * (unknown user) Let client code detect support for new Search.Utils.Logger constructor, and simplify whitespace generation. * (autobuild) release number bumped to 8.0.926 by export.pike * (autobuild) release number bumped to 8.0.927 by export.pike * (grubba) Merge branch 'patches/pike224' into 8.0 * patches/pike224: Master: Fix issue where describe_string() could lengthen the output. * (kg) Search.Utils.Logger: Added support for specifying indentation width when creating a Logger instance. [WS-581] * (grubba) release number bumped to 8.0.924 by export.pike * (grubba) release number bumped to 8.0.925 by export.pike * (grubba) Merge branch 'grubba/fdlib' into 8.0 * grubba/fdlib: I/O [NT]: Fixed typo. * (grubba) release number bumped to 8.0.922 by export.pike * (grubba) release number bumped to 8.0.923 by export.pike * (grubba) Merge branch 'grubba/fdlib' into 8.0 * grubba/fdlib: I/O [NT]: Avoid blocking on read from pipes with data. Added some paranoia * (autobuild) release number bumped to 8.0.920 by export.pike * (autobuild) release number bumped to 8.0.921 by export.pike * (tobij) CHANGES: Document System.openlog() fix. * (tobij) Merge branch 'tobij/fix-syslog-ident' into 8.0 * tobij/fix-syslog-ident: System: ident pointer may be accessed after openlog() returned * (autobuild) release number bumped to 8.0.918 by export.pike * (autobuild) release number bumped to 8.0.919 by export.pike * (bortas) Re-add the extra arguments to next_prime for compatibility, but deprecate them * (bortas) Fix documentation for next_prime * (bortas) Fix function definition for next_prime and the documentation for next_prime and probably_prime_p * (autobuild) release number bumped to 8.0.917 by export.pike * (autobuild) release number bumped to 8.0.916 by export.pike * (nilsson) Stop adding Transfer-Encoding: 0. * (autobuild) release number bumped to 8.0.915 by export.pike * (autobuild) release number bumped to 8.0.914 by export.pike * (kg) Merge branch 'patches/pike234' into 8.0 * patches/pike234: Protocols.HTTP.Server.Request: Added http header 'Transfer-Encoding'. * (autobuild) release number bumped to 8.0.913 by export.pike * (autobuild) release number bumped to 8.0.912 by export.pike * (grubba) Merge branch 'patches/lyslyskom23729673' into 8.0 * patches/lyslyskom23729673: Backend: Improved fix for busy-wait on short call_outs (< 1ms) and poll. * (autobuild) release number bumped to 8.0.911 by export.pike * (autobuild) release number bumped to 8.0.910 by export.pike * (srb) Document changes. * (srb) pgsql: Closed portals should shut down the connection. * (srb) pgsql: Track back deadlock, explicitly release lock, speeds up code. * (grubba) Merge branch 'patches/pike195' into 8.0 * patches/pike195: Protocols.HTTP: Use Protocols.DNS.async_host_to_ip(). * (autobuild) release number bumped to 8.0.909 by export.pike * (autobuild) release number bumped to 8.0.908 by export.pike * (kg) Merge branch 'patches/pike229' into 8.0 * patches/pike229: SqlTools: Improve support for Pike 8.0. * (autobuild) release number bumped to 8.0.906 by export.pike * (autobuild) release number bumped to 8.0.907 by export.pike * (tobij) CHANGES: Document SSL session ticket backport * (tobij) SSL.ClientConnection: Fix session ticket support The server signals reuse of the session by echoing the session_id we provide (as well as by a shortened handshake/server hello). Presence of the session ticket extension informs of the server's intention to send a new session ticket (or replace an existing one), hence tickets_enabled does not need to be true (and apparently rarely is) when we resume sessions based on tickets with other SSL implementations on the server side. * (grubba) SSL.clientConnection: Session tickets (RFC 4507 and RFC 5077). Client side support for session tickets. Implementation only verified against itself. Backported from 95ad6e4388b6576d7012110efe0edb3479a8422f by Tobias Josefowitz. * (grubba) SSL.ServerConnection: Session tickets (RFC 4507 and RFC 5077). Server side support for session tickets. Note that the default ticket encoding is to use the session_id, it thus uses server side state. The ticket encoding can be changed by overriding {en,de}code_ticket() in SSL.Context. Implementation verified against OpenSSL's s_client. Backported from 372b2a05d05fa0d0e052e6634d2acf8d03629ed4 by Tobias Josefowitz. * (autobuild) release number bumped to 8.0.904 by export.pike * (autobuild) release number bumped to 8.0.905 by export.pike * (grubba) Merge branch 'patches/lyslyskom23710530' into 8.0 * patches/lyslyskom23710530: Nettle.MAC.State: Guard against improper initialization. * (autobuild) release number bumped to 8.0.903 by export.pike * (autobuild) release number bumped to 8.0.902 by export.pike * (kg) release number bumped to 8.0.900 by export.pike * (kg) release number bumped to 8.0.901 by export.pike * (grubba) release number bumped to 8.0.899 by export.pike * (grubba) release number bumped to 8.0.898 by export.pike * (autobuild) release number bumped to 8.0.897 by export.pike * (autobuild) release number bumped to 8.0.896 by export.pike * (autobuild) release number bumped to 8.0.895 by export.pike * (autobuild) release number bumped to 8.0.894 by export.pike * (autobuild) release number bumped to 8.0.893 by export.pike * (autobuild) release number bumped to 8.0.892 by export.pike * (grubba) Merge branch 'patches/pike227' into 8.0 * patches/pike227: Cleanup [ADT.List]: Do not free memory that is in use before gc(1) has run. * (tobij) ADT.List: Do not put struct pike_list_structs into the GC Backport from Pike master. Fixes Pike.count_memory() getting stuck in a loop on ADT.List. NB: The comments about inline markers below are not relevant to Pike 8.0. Original commit message from Pike master follows: Since the GC was changed to use inline markers, all items fed into the GC must comply with a certain memory layout - containing GC_MARKER_MEMBERS at the beginning of their region. struct pike_list_struct does not, and cannot easily be made to because struct List_struct (storage of ADT.List) and struct pike_list_struct need to stay compatible because the former is used to store sentinels being used as the latter type. While we lose reporting from the GC about issues in ADT.List's inner structure, GC checking of struct pike_list_structs seems to not be functionally required. On the upside, the GC no longer writes beyond or into struct pike_list_structs which did not reserve the memory areas for use by the GC. * (autobuild) release number bumped to 8.0.891 by export.pike * (autobuild) release number bumped to 8.0.890 by export.pike * (grubba) Merge branch 'patches/pike226' into 8.0 * patches/pike226: Pike.count_memory: Empty mc_complete before reuse. * (autobuild) release number bumped to 8.0.889 by export.pike * (autobuild) release number bumped to 8.0.888 by export.pike * (bortas) Add "->?" as the safe indexing variant of "->" This was earlier covered by "?->", but this is inconsistent with the "[?" index variant and the future "(?" program indexing variant. Usage of "?->" will start emitting a deprication warning is some future major version of Pike. Manual backport from master: 19582df85018fdb488de25c340bfa1efc44becd0, because the conflict was too big to bother with cherry-pick. * (tobij) Optimizer: Be more careful when optimizing away assignments Checking for SCOPE_SCOPED is too agressive, check for SCOPE_SCOPE_USED instead. * (bortas) release number bumped to 8.0.887 by export.pike * (bortas) release number bumped to 8.0.886 by export.pike * (kg) release number bumped to 8.0.885 by export.pike * (kg) release number bumped to 8.0.884 by export.pike * (grubba) Updated to tzdata2019c. * (grubba) Merge branch 'grubba/exception-handling' into 8.0 * grubba/exception-handling: Runtime: Improved robustness of pop_n_elems() some more. * (autobuild) release number bumped to 8.0.883 by export.pike * (autobuild) release number bumped to 8.0.882 by export.pike * (grubba) Merge branch 'grubba/exception-handling' into 8.0 * grubba/exception-handling: Runtime: Improved robustness of pop_n_elems(). * (grubba) Merge remote-tracking branch 'origin/grubba/exception-handling' into 8.0 * origin/grubba/exception-handling: Runtime: Improved robustness of pike_throw() some more. Runtime: Improved robustness of pike_throw(). * (grubba) Merge branch 'patches/pike221' into 8.0 * patches/pike221: Compiler: object->program_id only exists --with-debug. * (grubba) Merge branch 'patches/pike221' into 8.0 * patches/pike221: Compiler: Make get_name_of_function() survive destructed functions. Compiler: Improved robustness of placeholder activation. * (autobuild) release number bumped to 8.0.881 by export.pike * (autobuild) release number bumped to 8.0.880 by export.pike * (grubba) Thread.ResourceCountKey: Survive being used with old pike binaries. Old pike 8.0 binaries do not have Pike.DestructImmediate, and it is not meaningful to attempt to kludge around it, as the corresponding program flag is not propagated with them anyway. * (grubba) Pike: Move DestructImmediate to the Pike module. * (marcus) Thread.ResourceCountKey: Make destruct immediate * (autobuild) release number bumped to 8.0.878 by export.pike * (autobuild) release number bumped to 8.0.879 by export.pike * (grubba) SSL.File: Flush data before regarding the connection closed. * (autobuild) release number bumped to 8.0.877 by export.pike * (autobuild) release number bumped to 8.0.876 by export.pike * (grubba) SSL.Connection: Improved diagnostics when handshaking. * (autobuild) release number bumped to 8.0.874 by export.pike * (autobuild) release number bumped to 8.0.875 by export.pike * (grubba) SSL.File: Return EPIPE frome write() if the peer has closed the connection. * (autobuild) release number bumped to 8.0.872 by export.pike * (autobuild) release number bumped to 8.0.873 by export.pike * (grubba) Testsuite [Thread.ResourceCount]: Improved robustness. In general objects are not guaranteed to get destructed immediately on losing their references, so destruct the ResourceCountKey explicitly. NB: In Pike 7.1 and later ResourceCountKey inherits Pike.DestructImmediate, and thus will get immediate destruction. * (grubba) SSL.File: query_{suite,version}() now both return -1 when unknown. Fixes some testsuite failures. * (autobuild) release number bumped to 8.0.871 by export.pike * (autobuild) release number bumped to 8.0.870 by export.pike * (grubba) SSL.File: Only call the write_callback if it exists... * (grubba) SSL.Session: Initialize cipher_suite to SSL_invalid_suite. This makes it easy to see whether the handshake has completed successfully. * (marcus) Mysql: Fix check for my_bool It seems that version numbering gets all screwy when MariaDB is added to the mix, so can't really use it to check for features or quirks... Explicitly test for existence of my_bool instead. * (marcus) Mysql: Fix compilation error with MySQL 8 * (grubba) SSL.Connection: Only set peer_closed when the peer actually has closed. * (grubba) Testsuite [SSL]: Ignore version check after handshake failure. * (grubba) SSL.Constants: Added SSL_invalid_suite. * (grubba) Merge branch 'patches/pike216' into 8.0 * patches/pike216: Protocols.HTTP: Keep proxy CONNECT and request headers separate. Protocols.HTTP: Remove line breaks from base64 basic auth tokens * (autobuild) release number bumped to 8.0.869 by export.pike * (autobuild) release number bumped to 8.0.868 by export.pike * (grubba) SSL.File: Adjusted some state macros. SSL_HANDSHAKING is now terminated when the connection has entered the CONNECTION_local_fatal state. SSL_INTERNAL_WRITING now requires there to not be any write errors. * (grubba) Configure [NetBSD]: Search for paxctl. Attempt to use paxctl to alter the PaX flags for the pike binary to allow for generation of machine code. Note that paxctl on NetBSD and Linux are incompatible. * (grubba) SSL.File: Improved diagnostics in SSL3_DEBUG mode. * (grubba) SSL.File: The write callback must not be called during handshaking. Fixes several testsuite failures. * (grubba) SSL.File: Call the write_callback when pending write error. * (kg) release number bumped to 8.0.867 by export.pike * (kg) release number bumped to 8.0.866 by export.pike * (bortas) release number bumped to 8.0.864 by export.pike * (bortas) release number bumped to 8.0.865 by export.pike * (tobij) Merge branch 'tobij/backend-fixes' into 8.0 * tobij/backend-fixes: Error handling: Added LOW_SET_ONERROR() for !PIKE_DEBUG. * (grubba) Merge branch 'grubba/backend-fixes' into 8.0 * grubba/backend-fixes: Backend: Fixed issue in error handling. Error handling: Added LOW_SET_ONERROR(). * (autobuild) release number bumped to 8.0.863 by export.pike * (autobuild) release number bumped to 8.0.862 by export.pike * (grubba) Merge branch 'patches/pike211' into 8.0 * patches/pike211: Master: Avoid adding end of line padding in describe_backtrace(). * (autobuild) release number bumped to 8.0.860 by export.pike * (autobuild) release number bumped to 8.0.861 by export.pike * (grubba) Merge branch 'patches/pike210' into 8.0 * patches/pike210: Stdio.Buffer: Fix type for _sprintf(). * (autobuild) release number bumped to 8.0.859 by export.pike * (autobuild) release number bumped to 8.0.858 by export.pike * (bortas) release number bumped to 8.0.857 by export.pike * (bortas) release number bumped to 8.0.856 by export.pike * (autobuild) release number bumped to 8.0.854 by export.pike * (autobuild) release number bumped to 8.0.855 by export.pike * (grubba) Merge branch 'patches/pike202' into 8.0 * patches/pike202: Pike.FakeObject: Store the description of the original object. * (grubba) Merge branch 'patches/pike204' into 8.0 * patches/pike204: Image.Image: Support count_memory() for images. * (autobuild) release number bumped to 8.0.853 by export.pike * (autobuild) release number bumped to 8.0.852 by export.pike * (grubba) Merge branch 'patches/github36' into 8.0 * patches/github36: Calendar.Language: Fixed spelling for spanish septiembre. * (autobuild) release number bumped to 8.0.850 by export.pike * (autobuild) release number bumped to 8.0.851 by export.pike * (grubba) Updated to tzdata2019b. * (autobuild) release number bumped to 8.0.849 by export.pike * (autobuild) release number bumped to 8.0.848 by export.pike * (grubba) Merge branch 'patches/pike198' into 8.0 * patches/pike198: Protocols.HTTP [do_async_proxied_method]: Use the correct callback. Protocols.HTTP: Set the Host header for proxied requests. Protocols.HTTP [do_async_proxied_method]: Check whether CONNECT failed. * (autobuild) release number bumped to 8.0.847 by export.pike * (autobuild) release number bumped to 8.0.846 by export.pike * (tobij) sybase: Use ABI suffixes when looking for sybase lib dir * (tobij) Odbc: Use ABI suffixes when looking for ODBC lib dir * (tobij) Merge branch 'tobij/aclocal-check-abi-dir' into 8.0 * tobij/aclocal-check-abi-dir: Configure: PIKE_CHECK_ABI_DIR now ignores executables * (grubba) release number bumped to 8.0.845 by export.pike * (grubba) release number bumped to 8.0.844 by export.pike * (grubba) Merge branch 'grubba/aclocal-check-abi-dir' into 8.0 * grubba/aclocal-check-abi-dir: Configure: Fixed typo in PIKE_CHECK_ABI_DIR(). * (grubba) encode_value: Fixed encoding bug for some variant functions. A stray number was added to the identifier reference table. This caused the decoder to become confused. Fixes dumping errors for Web.SocketIO. * (tobij) Nettle: Fix typo * (tobij) CHANGES: Document Crypto.ECC working with Nettle 3.5 * (marcus) Nettle: Support nettle 3.5 (cherry picked from commit 9af7432bf2a5eec7cb1db10ca3009c2f70279bab) (cherry picked from commit 47ea46b8c0c7dcd270fe2d87577edfdacd5cc668) * (grubba) Merge branch 'patches/pike196' into 8.0 * patches/pike196: Tools.Standalone.test_pike: Do not close stdin. * (autobuild) release number bumped to 8.0.843 by export.pike * (autobuild) release number bumped to 8.0.842 by export.pike * (grubba) Protocols.HTTP.Query: Survive destruction by request_fail callback. Fixes [WS-524]. * (autobuild) release number bumped to 8.0.841 by export.pike * (autobuild) release number bumped to 8.0.840 by export.pike * (grubba) release number bumped to 8.0.838 by export.pike * (grubba) release number bumped to 8.0.839 by export.pike * (autobuild) release number bumped to 8.0.837 by export.pike * (autobuild) release number bumped to 8.0.836 by export.pike * (grubba) Compiler: Increase paranoia of the implements and is_compatible caches. implements() and is_compatible() should now survive if their low-level implementations release the interpreter lock. Fixes [PIKE-192]. * (autobuild) release number bumped to 8.0.834 by export.pike * (autobuild) release number bumped to 8.0.835 by export.pike * (tobij) Merge branch 'tobij/fix-inttree-values-sig' into 8.0 * tobij/fix-inttree-values-sig: CritBit: Fix signature of _values() in IntTree. * (autobuild) release number bumped to 8.0.833 by export.pike * (autobuild) release number bumped to 8.0.832 by export.pike * (grubba) release number bumped to 8.0.830 by export.pike * (grubba) release number bumped to 8.0.831 by export.pike * (autobuild) release number bumped to 8.0.828 by export.pike * (autobuild) release number bumped to 8.0.829 by export.pike * (grubba) release number bumped to 8.0.827 by export.pike * (grubba) release number bumped to 8.0.826 by export.pike * (autobuild) release number bumped to 8.0.824 by export.pike * (autobuild) release number bumped to 8.0.825 by export.pike * (srb) Stdio.File: Support openat with a single argument. Also fixes: - Avoid a SEGV when supplied with a single argument. - Synchronise low level implementation with pike level by setting the default mask to 0777 everywhere. * (srb) pgsql: Eliminate race for db connections still open at program exit. * (autobuild) release number bumped to 8.0.823 by export.pike * (autobuild) release number bumped to 8.0.822 by export.pike * (grubba) Image.Image: Fixed stack underflow in create(..., "grey"). * (grubba) release number bumped to 8.0.820 by export.pike * (grubba) release number bumped to 8.0.821 by export.pike * (grubba) Merge branch 'patches/pike189' into 8.0 * patches/pike189: Thread.MutexKey: Added _sprintf(). * (autobuild) release number bumped to 8.0.819 by export.pike * (autobuild) release number bumped to 8.0.818 by export.pike * (grubba) release number bumped to 8.0.817 by export.pike * (grubba) release number bumped to 8.0.816 by export.pike * (grubba) Protocols.DNS: Survive Stdio.UDP()->bind() failing with EACCES. This can apparently happen for usually unprivileged ports on both NT and Solaris 11. Fixes [PIKE-185]. * (autobuild) release number bumped to 8.0.815 by export.pike * (autobuild) release number bumped to 8.0.814 by export.pike * (grubba) Updated to tzdata2019a. * (autobuild) release number bumped to 8.0.813 by export.pike * (autobuild) release number bumped to 8.0.812 by export.pike * (bortas) release number bumped to 8.0.811 by export.pike * (bortas) release number bumped to 8.0.810 by export.pike * (autobuild) release number bumped to 8.0.809 by export.pike * (autobuild) release number bumped to 8.0.808 by export.pike * (grubba) Concurrent: Fixed syntax error in recent backport. * (autobuild) release number bumped to 8.0.807 by export.pike * (autobuild) release number bumped to 8.0.806 by export.pike * (srb) Concurrent.Promise: Introduce delay() and optimise timeout(). * (autobuild) release number bumped to 8.0.805 by export.pike * (autobuild) release number bumped to 8.0.804 by export.pike * (grubba) Builtin: Fixed mktime_zone() when localtime is in dst. Adds variant using timezone/altzone (eg Solaris). Fixes the fallback implementation (using gmtime(3F)) to not drift by an hour when the local time zone has tm_isdst == 1. * (autobuild) release number bumped to 8.0.803 by export.pike * (autobuild) release number bumped to 8.0.802 by export.pike * (grubba) Concurrent: Default global_on_failure() to master()->handle_error(). This reduces risk of lost error messages from Concurrent.Promise el al. * (grubba) Concurrent.Pomise: Improved diagnostics for broken promises. The Promise has typically already been destructed when the backtrace is described, so ensure that it at least is present in the message. Fixes [PIKE-181]. * (autobuild) release number bumped to 8.0.801 by export.pike * (autobuild) release number bumped to 8.0.800 by export.pike * (jonasw) release number bumped to 8.0.798 by export.pike * (jonasw) release number bumped to 8.0.799 by export.pike * (grubba) Concurrent.Future: Events may still occur after the timeout. Fixes spurious complaint "Promise has already been finalised." when a promise with a timeout is fullfilled after the timeout has triggered. Fixes [PIKE-177]. * (autobuild) release number bumped to 8.0.797 by export.pike * (autobuild) release number bumped to 8.0.796 by export.pike * (jonasw) release number bumped to 8.0.794 by export.pike * (jonasw) release number bumped to 8.0.795 by export.pike * (autobuild) release number bumped to 8.0.792 by export.pike * (autobuild) release number bumped to 8.0.793 by export.pike * (grubba) Merge branch 'grubba/calendar-default-tz-7.8' into 8.0 * grubba/calendar-default-tz-7.8: Calendar.Timezone: Document the timezone file format. Calendar.Timezone: Use the symlink target as timezone candidate. Calendar.Timezone: Fixed bug in handling of multi-line tz-files. Calendar.Timezone: Add support for /etc/timezone (Linux). Calendar.Timezone: Scan time zone files in a deterministic order. * (grubba) Calendar.TZnames: Updated time zone expert system. The expert system should now be up to date with tzdata2018i. Fixes [PIKE-174]. * (grubba) Merge branch 'patches/pike174' into 8.0 * patches/pike174: Calendar.mkexpert: Changed selection heuristic. Calendar.mkexpert: Adjusted indentation of result. Calendar: Added script to (re-)generate the time zone expert system. * (autobuild) release number bumped to 8.0.791 by export.pike * (autobuild) release number bumped to 8.0.790 by export.pike * (bortas) release number bumped to 8.0.789 by export.pike * (bortas) release number bumped to 8.0.788 by export.pike * (grubba) Merge branch 'patches/lyslyskom23259124' into 8.0 * patches/lyslyskom23259124: Testsuite: Added test of [LysLysKOM 23258037]. Compiler: Fix issue related to [LysLysKOM 23259124]. Compiler: Fix issue with mixing automap and splice. * (autobuild) release number bumped to 8.0.786 by export.pike * (autobuild) release number bumped to 8.0.787 by export.pike * (tobij) Merge branch 'tobij/http-proxy-headers' into 8.0 * tobij/http-proxy-headers: Protocols.HTTP: Use supplied headers for proxied HTTP * (tobij) Merge branch 'patches/lyslyskom23152065' into 8.0 * patches/lyslyskom23152065: Filesystem.Tar: Reorder operations in extract_bits() * (autobuild) release number bumped to 8.0.784 by export.pike * (autobuild) release number bumped to 8.0.785 by export.pike * (agehall) release number bumped to 8.0.782 by export.pike * (agehall) release number bumped to 8.0.783 by export.pike * (autobuild) release number bumped to 8.0.781 by export.pike * (autobuild) release number bumped to 8.0.780 by export.pike * (wellhardh) release number bumped to 8.0.779 by export.pike * (wellhardh) release number bumped to 8.0.778 by export.pike * (autobuild) release number bumped to 8.0.777 by export.pike * (autobuild) release number bumped to 8.0.776 by export.pike * (grubba) Merge branch 'grubba/optimize-array-allocation' into 8.0 * grubba/optimize-array-allocation: Optimizer [array]: Keep UNDEFINED values. * (autobuild) release number bumped to 8.0.775 by export.pike * (autobuild) release number bumped to 8.0.774 by export.pike * (grubba) Merge branch 'patches/lyslyskom22891031' into 8.0 * patches/lyslyskom22891031: Runtime: apply_svalue() on integers no longer returns zero. * (grubba) Debug: Fixed type for dump_program_tables(). * (autobuild) release number bumped to 8.0.772 by export.pike * (autobuild) release number bumped to 8.0.773 by export.pike * (grubba) Merge branch 'patches/pike169' into 8.0 * patches/pike169: Image.GIF: Use a string_builder instead of the stack. * (autobuild) release number bumped to 8.0.771 by export.pike * (autobuild) release number bumped to 8.0.770 by export.pike * (kg) release number bumped to 8.0.769 by export.pike * (kg) release number bumped to 8.0.768 by export.pike * (autobuild) release number bumped to 8.0.767 by export.pike * (autobuild) release number bumped to 8.0.766 by export.pike * (kg) release number bumped to 8.0.765 by export.pike * (kg) release number bumped to 8.0.764 by export.pike * (autobuild) release number bumped to 8.0.763 by export.pike * (autobuild) release number bumped to 8.0.762 by export.pike * (grubba) Merge branch 'patches/pike173' into 8.0 * patches/pike173: Protocols.HTTP.Server.Request: Fixed typo. * (autobuild) release number bumped to 8.0.760 by export.pike * (autobuild) release number bumped to 8.0.761 by export.pike * (grubba) Concurrent: Moved some initialization code to __INIT(). This fixes an issue with the variable callout not being initialized properly in classes that have inherited Concurrent. Fixes some of the issues in [WS-404]. * (autobuild) release number bumped to 8.0.759 by export.pike * (autobuild) release number bumped to 8.0.758 by export.pike * (grubba) Concurrent.Future: Added wait(). This differs from get() in that it will not throw on failure. * (autobuild) release number bumped to 8.0.757 by export.pike * (autobuild) release number bumped to 8.0.756 by export.pike * (grubba) Concurrent.Promise: Fix handling of rejections. The global rejection callback (installed via Concurrent.on_failure()) must not be called before the user has had a chance to register custom rejection callbacks (via Concurrent.Future()->on_failure()). Calling of the global rejection callback is now deferred until the Promise is destructed. Fixes erroneous reporting of unhandled Promise errors. * (grubba) Concurrent.Promise: Reduce number of complaints. Don't complain about dropping promises that have no corresponding future on the floor. As the promises have no future, nobody is affected by them not being fulfilled. * (autobuild) release number bumped to 8.0.754 by export.pike * (autobuild) release number bumped to 8.0.755 by export.pike * (grubba) Documentation [Concurrent]: Note where backend state isn't propagated. * (grubba) Concurrent.Future: Added promise_factory(). This makes propagating state to new Promises easier. New Promises are now created with the same backend as the Promise they originated from. * (autobuild) release number bumped to 8.0.752 by export.pike * (autobuild) release number bumped to 8.0.753 by export.pike * (grubba) Documentation [Concurrent]: Added note about backend disabled mode. * (grubba) Concurrent.Future: Reduce references. There's no point in having the timeout call_out after the Promise has been fulfilled, so remove it (if any). * (grubba) Concurrent.Future: Added {get,set}_backend(). This makes it possible to have a custom Pike.Backend handle the callbacks for the Future. * (grubba) Concurrent.Future: Added internal function call_callback(). This makes it possible to adjust the way that callbacks are called via overloading. The typical use case is for wanting callbacks to be called by some other thread than the backend. * (autobuild) release number bumped to 8.0.751 by export.pike * (autobuild) release number bumped to 8.0.750 by export.pike * (marcus) Merge branch 'marcus/exif_sanitization' into 8.0 * (autobuild) release number bumped to 8.0.748 by export.pike * (autobuild) release number bumped to 8.0.749 by export.pike * (grubba) Tools.Standalone.autodoc_to_html: Fixed typo. * (grubba) Tools.Standalone.autodoc_to_html: Improved rendering of <ol> and <ul>. The renderers for <ol> and <ul> now share code. The <ol> renderer now survives without <text>-nodes. Improved rendering of <ol> and <ul> when both <li>-nodes with name attributes and <text>-nodes are present. * (rosuav) Fix a couple of docs typos * (autobuild) release number bumped to 8.0.747 by export.pike * (autobuild) release number bumped to 8.0.746 by export.pike * (grubba) Merge branch 'patches/lyslyskom22997909' into 8.0 * patches/lyslyskom22997909: Testsuite: Updated expected result accordingly... * (grubba) Merge branch 'patches/lyslyskom22997909' into 8.0 * patches/lyslyskom22997909: Testsuite: Adjusted #line directives. * (autobuild) release number bumped to 8.0.745 by export.pike * (autobuild) release number bumped to 8.0.744 by export.pike * (tobij) Process.run: Accept empty string in modifiers as stdin Restores behaviour as of 7.8. Fixes [LysLysKOM 23099651]. Thanks to Per Cederqvist for the report. * (autobuild) release number bumped to 8.0.743 by export.pike * (autobuild) release number bumped to 8.0.742 by export.pike * (grubba) Updated to tzdata2018i. * (grubba) Calendar.mkrules: Increase INF_YEAR from 2050 to 2150. Recent tzdata files (2018i) contain entries past 2050 (eg for Iran). * (autobuild) release number bumped to 8.0.740 by export.pike * (autobuild) release number bumped to 8.0.741 by export.pike * (grubba) Updated CHANGES. * (autobuild) release number bumped to 8.0.739 by export.pike * (autobuild) release number bumped to 8.0.738 by export.pike * (bortas) CHANGES: Added missing entries since the last release * (autobuild) release number bumped to 8.0.736 by export.pike * (autobuild) release number bumped to 8.0.737 by export.pike * (bortas) CHANGES: Catalan typo fix * (bortas) Calendar: December is called Desembre in Catalan This fixes pikelang/Pike#16 reported by davidtapia * (autobuild) release number bumped to 8.0.735 by export.pike * (autobuild) release number bumped to 8.0.734 by export.pike * (grubba) Thread: Added workaround for mutexkeys ending up in backtraces. Thread.Queue et al should now survive their controlling MutexKey having ended up in a backtrace. Fixes [PIKE-157]. * (grubba) Merge branch 'patches/pike156' into 8.0 * patches/pike156: EFUNs: Hide mutex keys and crypto contexts from backtraces. * (autobuild) release number bumped to 8.0.733 by export.pike * (autobuild) release number bumped to 8.0.732 by export.pike * (grubba) Updated to tzdata2018g. * (autobuild) release number bumped to 8.0.730 by export.pike * (autobuild) release number bumped to 8.0.731 by export.pike * (srb) pgsql: Autoterminate dangling database connections at program exit. * (autobuild) release number bumped to 8.0.728 by export.pike * (autobuild) release number bumped to 8.0.729 by export.pike * (grubba) Thread.ResourceCount: Fixed mutex handling. * (srb) pgsql: Avoid excessive latency on frequent ping()s. * (srb) Thread.Condition: Improve docs. * (autobuild) release number bumped to 8.0.727 by export.pike * (autobuild) release number bumped to 8.0.726 by export.pike * (grubba) Merge branch 'patches/pike148' into 8.0 * patches/pike148: Protocols.HTTP.Session: Don't attempt to reuse SessionQuery objects. Protocols.HTTP.Session: Improved thread-safety. * (autobuild) release number bumped to 8.0.724 by export.pike * (autobuild) release number bumped to 8.0.725 by export.pike * (grubba) Testsuite: Fixed backport incompatibility. * (autobuild) release number bumped to 8.0.723 by export.pike * (autobuild) release number bumped to 8.0.722 by export.pike * (grubba) Merge branch 'patches/lyslyskom22997909' into 8.0 * patches/lyslyskom22997909: Testsuite: Test low_get_line() some more. Runtime: Fix file name in backtraces. Compiler: Keep track of the file name... * (autobuild) release number bumped to 8.0.720 by export.pike * (autobuild) release number bumped to 8.0.721 by export.pike * (grubba) Configure [64-bit] [Solaris]: Fix search path for pkg-config. Solaris 11.4 provides a single pkg-config binary, which by default searches in /usr/lib/pkgconfig/ and /usr/share/pkgconfig/. Unfortunately, /usr/lib/pkgconfig/ contains information for the 32-bit packages (64-bit d:o is in /usr/lib/64/pkgconfig/). This issue caused eg 32-bit headers for libffi to be used, causing a SIGSEGV in ffi_closure_unix64_inner() due to the differing sizes of ffi_closure in 32-bit and 64-bit abi. * (autobuild) release number bumped to 8.0.719 by export.pike * (autobuild) release number bumped to 8.0.718 by export.pike * (grubba) Configure: Restore template for HAVE_INFNAN. This was lost in the obsolete /proc API merge. * (grubba) EFUNs: Fixed reference leak in types(). * (grubba) Image.FreeType: Support recent versions of libfreetype. Recent versions of libfreetype no longer provide the freetype-config script, so attempt to use pkg-config before freetype-config. Fixes [PIKE-146]. * (grubba) Build [Configure]: Make result of PIKE_PKG_CONFIG easier to detect. * (grubba) Merge branch 'patches/pike144' into 8.0 * patches/pike144: Core: Do not use the obsolete (~20 years) ioctl /proc API. * (grubba) Merge branch 'patches/pike141' into 8.0 * patches/pike141: Master: Multiple describe_backtrace() fixes. * (grubba) Mailmap: Added some entries for Mateusz Krawczuk. * (bortas) CHANGES: bug fixes header * (bortas) CHANGES: New release, new header * (grubba) Merge branch 'patches/pike140' into 8.0 * patches/pike140: Thread.Queue [Paranoia]: Attempt to work around glibc bugs. * (wressle) release number bumped to 8.0.717 by export.pike * (wressle) release number bumped to 8.0.716 by export.pike * (grubba) Merge branch 'patches/pike140' into 8.0 * patches/pike140: Thread.Queue [Paranoia]: Broadcast the changed state. * (wressle) release number bumped to 8.0.715 by export.pike * (wressle) release number bumped to 8.0.714 by export.pike * (grubba) SSL.File: Do not close automatically on write error. The internal ssl_write_callback() would call shutdown() on write error, which would cause the object to enter one of the closed states, without the user actually having closed the file. This in turn caused errors like "Not open.\n" from functions like read() and set_nonblocking(). Potential fix for [PIKE-138]. * (wellhardh) release number bumped to 8.0.712 by export.pike * (wellhardh) release number bumped to 8.0.713 by export.pike * (wressle) release number bumped to 8.0.711 by export.pike * (wressle) release number bumped to 8.0.710 by export.pike * (grubba) combine_path: Fixed corner case (take 2). The previous "fix" broke handling of paths starting with "./" in cases other than "./../". Fixes [PIKE-137] some more. * (grubba) combine_path: Fixed corner case. combine_path() on strings starting with "./../" used to gain one directory level. Eg: Old behavior: > combine_path(".", "../foo"); (1) Result: "../foo" > combine_path("./..", "foo"); (2) Result: "foo" > combine_path("./../foo"); (3) Result: "foo" New (fixed) behavior: > combine_path(".", "../foo"); (1) Result: "../foo" > combine_path("./..", "foo"); (2) Result: "../foo" > combine_path("./../foo"); (3) Result: "../foo" Fixes [PIKE-137]. * (grubba) Merge branch 'patches/lyslyskom22936192' into 8.0 * patches/lyslyskom22936192: ADT.History: Support encode_value()/decode_value(). * (grubba) Nettle: Fixed compilation issue with Nettle 3.1.1. It helps if you actually include the header file that you are using... * (grubba) Build [Inotify]: Added missing setting of CONFIG_HEADERS. Fixes dependencies for inotify_config.h and testauite failure. * (grubba) Postgres: Drop support for Postgres 7.1 and earlier. (2) Stage 2: Do not attempt to include Postgres-internal header files. * (grubba) Postgres: Drop support for Postgres 7.1 and earlier. (1) Stage 1: Remove HAVE_PG72. * (tobij) Compiler [amd64]: Document stack alignment fix in CHANGES * (tobij) Compiler [amd64]: Keep stack alignment before calling C code GCC 8 started to emit movaps instructions with (%RSP) as destination, leading to GPF in case it was not properly aligned. * (grubba) release number bumped to 8.0.709 by export.pike * (grubba) release number bumped to 8.0.708 by export.pike * (grubba) Protocols.HTTP.Query [Solaris]: Survive EADDRINUSE. On Solaris 11 Stdio.File()->connect() often fails with EADDRINUSE. If this happens, retry the connection. Potential fix for [PIKE-136]. * (grubba) Protocols.WebSocket: Potential fix for [PIKE-135]. Fixes error: Indexing the NULL value with "set_nonblocking". * (wressle) release number bumped to 8.0.707 by export.pike * (wressle) release number bumped to 8.0.706 by export.pike * (unknown user) Fix refdoc typo. * (jonasw) release number bumped to 8.0.705 by export.pike * (jonasw) release number bumped to 8.0.704 by export.pike * (bortas) release number bumped to 8.0.703 by export.pike * (bortas) release number bumped to 8.0.702 by export.pike * (grubba) CHANGES: Added notes about recent changes. * (grubba) Protocols.WebSocket.Connection: Use send_raw() in connect(). Avoid messing directly with the send buffer from connect(). * (grubba) Protocols.WebSocket: Improved HTTP header camel-case consistency. * (grubba) Testsuite [Protocols.WebSocket]: Added a basic testsuite. Test the initial HTTP handshaking. * (grubba) Protocols.WebSocket: Improved compliance with RFC 6455 4.1. Backport from Pike 8.1: Client: * Generate an actually random nonce for the Sec-WebSocket-Key header. * Validate that the Sec-WebSocket-Accept header received from the server matches the Sec-WebSocket-Key that was sent. Server: * Validate that the request method is "GET". * Validate that the Sec-WebSocket-Key header is syntactically correct. Both: * Validate use of the Connection and Upgrade headers. * Validate the Sec-WebSocket-Version header. * (grubba) Protocols.WebSocket: Added low_{connect,websocket_accept}(). Backport from Pike 8.1: This breaks out the generation of WebSocket HTTP headers to separate functions, which makes the modules easier to instrument for testing. Also adds the symbolic constant websocket_version. * (grubba) release number bumped to 8.0.701 by export.pike * (grubba) release number bumped to 8.0.700 by export.pike * (unknown user) Fix copy-paste error in refdoc. * (grubba) release number bumped to 8.0.699 by export.pike * (grubba) release number bumped to 8.0.698 by export.pike * (grubba) Merge branch 'patches/pike129' into 8.0 * patches/pike129: Stdio.UDP [NT]: Fix wait() failing with ENOTSOCK on NT. * (grubba) release number bumped to 8.0.696 by export.pike * (grubba) release number bumped to 8.0.697 by export.pike * (grubba) Merge branch 'pike-modules/sass' into 8.0 * pike-modules/sass: Sass: Another attempt at finding libc++. * (grubba) release number bumped to 8.0.695 by export.pike * (grubba) release number bumped to 8.0.694 by export.pike * (grubba) Merge branch 'pike-modules/sass' into 8.0 * pike-modules/sass: Sass [MacOS X]: Attempt to link with both C++ runtimes. * (grubba) CHANGES: Added note about _disable_threads() fix. * (grubba) Merge branch 'patches/pike126' into 8.0 * patches/pike126: Threads: Fixed call of lock_pike_compiler() in threads_disable(). * (grubba) release number bumped to 8.0.692 by export.pike * (grubba) release number bumped to 8.0.693 by export.pike * (bortas) release number bumped to 8.0.691 by export.pike * (bortas) release number bumped to 8.0.690 by export.pike * (grubba) release number bumped to 8.0.689 by export.pike * (grubba) release number bumped to 8.0.688 by export.pike * (grubba) release number bumped to 8.0.687 by export.pike * (grubba) release number bumped to 8.0.686 by export.pike * (agehall) Guard against null dereference and ensure proper write callback triggering. * (jonasw) release number bumped to 8.0.684 by export.pike * (jonasw) release number bumped to 8.0.685 by export.pike * (grubba) release number bumped to 8.0.683 by export.pike * (grubba) release number bumped to 8.0.682 by export.pike * (grubba) Merge branch 'patches/pike124' into 8.0 * patches/pike124: Runtime [is_le]: Fix broken inlined is_eq() for functions. * (grubba) release number bumped to 8.0.681 by export.pike * (grubba) release number bumped to 8.0.680 by export.pike * (grubba) Merge branch 'patches/pike122' into 8.0 * patches/pike122: Parser.XML.Tree: Declare low_clone() as optional. * (grubba) release number bumped to 8.0.678 by export.pike * (grubba) release number bumped to 8.0.679 by export.pike * (bortas) release number bumped to 8.0.676 by export.pike * (bortas) release number bumped to 8.0.677 by export.pike * (grubba) release number bumped to 8.0.675 by export.pike * (grubba) release number bumped to 8.0.674 by export.pike * (jonasw) release number bumped to 8.0.673 by export.pike * (jonasw) release number bumped to 8.0.672 by export.pike * (grubba) CHANGES: Cosmetic change. * (grubba) CHANGES: Added note about inherit of CompilerEnvironment. * (grubba) CHANGES: Added note about support for OpenJDK 10. * (grubba) CHANGES: Added note about extract_autodoc. * (grubba) CHANGES: Added note about Filesystem.Monitor. * (grubba) CHANGES: Added note about fixed race-condition. * (grubba) CHANGES: Added some notes about Sass-related fixes. * (tobij) Protocols.HTTP: Eventually finish HTTP responses over SSL Due to incorrect accounting of sent bytes, we never successfully finished HTTP responses when using Protocols.HTTP.Server.SSLPort(). Instead, on success, we left connections pending until timeout. Thanks to Stefan Gluszek <stefang@opera.com> for the report. * (jonasw) release number bumped to 8.0.671 by export.pike * (jonasw) release number bumped to 8.0.670 by export.pike * (tobij) Hilfe: Autodoc fix By "ungrouping" strings and a class, we get AutoDoc for the whole Hilfe.pmod! * (grubba) Merge branch 'patches/lyslyskom22790861' into 8.0 * patches/lyslyskom22790861: Tools.Standalone.extract_autodoc: Terminate on failure. * (jonasw) release number bumped to 8.0.668 by export.pike * (jonasw) release number bumped to 8.0.669 by export.pike * (tobij) Threads: Don't set THREAD_ABORTED in CALL_WITH_ERROR_HANDLING() * (tobij) Fuse: Return -ENOSYS in case a Fuse operation errors on Pike level To achieve this, call_with_interpreter() now catches errors and passes them on for handling. * (tobij) Fuse: Switch to using the "fuse_main()" API The way we used to use libfuse was somehow first "deprecated" and then entirely removed from their repository on GitHub. Unfortunately, the old API worked really elegantly for us (since libfuse calls us from threads that it created on its own), and with the "fuse_main()" API we require quite a bit of very verbose extra legwork, but what can you do. The old way of using libfuse also triggered a bug (SEGFAULT) in libfuse starting with at least version 2.9.2, while the new "fuse_main()" use does not. * (grubba) Merge branch 'patches/pike120' into 8.0 * patches/pike120: Runtime [Threads] [RACE]: Fixed loss of Pike_interpreter_pointer. * (grubba) Compiler: Support inherit of CompilerEnvironment. Fix some bugs triggered in the supporter subsystem when executing in an inherited CompilerEnviroment. * (grubba) release number bumped to 8.0.667 by export.pike * (grubba) release number bumped to 8.0.666 by export.pike * (jonasw) release number bumped to 8.0.665 by export.pike * (jonasw) release number bumped to 8.0.664 by export.pike * (stewa) release number bumped to 8.0.663 by export.pike * (stewa) release number bumped to 8.0.662 by export.pike * (marcus) [ppc64] Save r2 instead of clobbering it This fixes compilation errors with gcc 7.3.0. * (grubba) release number bumped to 8.0.660 by export.pike * (grubba) release number bumped to 8.0.661 by export.pike * (grubba) Merge branch 'pike-modules/sass' into 8.0 * pike-modules/sass: Documentation [Sass]: Some clarifications regarding sass2scss(). Added method sass2scss to convert Sass syntax to SCSS syntax. * (bortas) release number bumped to 8.0.659 by export.pike * (bortas) release number bumped to 8.0.658 by export.pike * (nilsson) Moved up recent threads changes. * (marty) release number bumped to 8.0.657 by export.pike * (marty) release number bumped to 8.0.656 by export.pike * (grubba) Merge branch 'patches/pike116' into 8.0 * patches/pike116: Filesystem.Monitor: Fix NULL-dereference in bump(). * (marty) release number bumped to 8.0.654 by export.pike * (marty) release number bumped to 8.0.655 by export.pike * (unknown user) Added notes on Thread.Farm changes. * (unknown user) Clear references to current job in thread farm directly after execution to avoid delayed deallocation. * (el) Thread.Farm: pass exceptions to provide_error In case an exception was thrown, the value of err ended up being the Result object, while the error got lost. * (jonasw) release number bumped to 8.0.652 by export.pike * (jonasw) release number bumped to 8.0.653 by export.pike * (grubba) Merge branch 'pike-modules/sass' into 8.0 * pike-modules/sass: Added the option "sass_syntax". Fixed broken indentation * (grubba) Merge branch 'pike-modules/sass' into 8.0 * pike-modules/sass: Sass: Reworded an error message. Sass: Refactored error handling. Sass: Keep the stack clean. Sass: Add missing files to .gitignore * (grubba) release number bumped to 8.0.650 by export.pike * (grubba) release number bumped to 8.0.651 by export.pike * (tobij) Sass: Add missing files to .gitignore * (grubba) Protocols.HTTP.Query: Fix HEAD with keep-alive. data() for HEAD requests attempted to read the (non-existant) contents, which caused it to hang until the other end closes the connection due to eg time out. * (marcus) Build [Java]: Make find_java_home.sh work with OpenJDK 10 * (grubba) release number bumped to 8.0.649 by export.pike * (grubba) release number bumped to 8.0.648 by export.pike * (grubba) CHANGES: Added note about UTF8 and Mysql. * (grubba) CHANGES: Added note about Postgresql 10. * (grubba) CHANGES: Added note about detection of Java on Ubuntu 18.04. * (grubba) Build [Postgres]: Detect Postgres 10.x and later. * (grubba) Build [Java]: Detect JAVA_HOME on Ubuntu 18.04. Ubuntu 18.04 has removed the jre and architecture directory levels in the path to libjvm. Ubuntu 16.04/x86_64: /usr/lib/jvm/default-java/jre/lib/amd64/server Ubuntu 18.04/x86_64: /usr/lib/jvm/default-java/lib/server * (grubba) release number bumped to 8.0.647 by export.pike * (grubba) release number bumped to 8.0.646 by export.pike * (jonasw) release number bumped to 8.0.645 by export.pike * (jonasw) release number bumped to 8.0.644 by export.pike * (grubba) release number bumped to 8.0.642 by export.pike * (grubba) release number bumped to 8.0.643 by export.pike * (grubba) CHANGES: Added note about tzdata2018e. Also shuffles some entries around. * (bortas) release number bumped to 8.0.641 by export.pike * (bortas) release number bumped to 8.0.640 by export.pike * (srb) pgsql: reset_dbsession() drains the pending error messages as well. * (grubba) release number bumped to 8.0.638 by export.pike * (grubba) release number bumped to 8.0.639 by export.pike * (grubba) Updated to tzdata2018e. * (srb) pgsql: Release lock on collision with another thread on the same portal. * (wellhardh) release number bumped to 8.0.637 by export.pike * (wellhardh) release number bumped to 8.0.636 by export.pike * (srb) Update CHANGES. * (srb) Gmp.mpq: Ensure a leading zero for numbers between -1.0 and 1.0. * (grubba) release number bumped to 8.0.635 by export.pike * (grubba) release number bumped to 8.0.634 by export.pike * (srb) pgsql: Simplify code; clear stmtifkey always. * (stewa) release number bumped to 8.0.633 by export.pike * (stewa) release number bumped to 8.0.632 by export.pike * (srb) pgsql: Improve _sprintf() formatting. * (srb) pgsql: Delay started() lock release to prevent early unlock by sendcmd(). * (grubba) Merge branch 'patches/pike111' into 8.0 * patches/pike111: Sql.mysql / Mysql.SqlTable: Use UTF-8 encoded UTF-16 in a couple of other applicable cases. Sql.mysql: Use/support UTF-8 encoded UTF-16. Testsuite [utf8_to_string]: Fixed typo. EFUNs: Support encoding to UTF-8 encoded UTF-16 in string_to_utf8(). * (srb) pgsql: Make replenishrows() wait until the query has properly started. * (grubba) CHANGES: Added note about Pike.identify_cycle(). Also some minor shuffling of existing entries. * (grubba) Pike.identify_cycle: Fix various issues with LFUNs throwing errors. LFUNs used by mapping operations may throw errors; this caused identify_loop_visit_leave() to also throw errors. The rest of the identify_cycle code was not happy about this and * Forgot to unlock the mc_mutex. This caused all following calls to Pike.identify_cycle() and Pike.count_memory() to hang. * Leaked memory. The above issues are now avoided by instead using the addresses of objects as indices in the affected mapping. It also fixes the issue with hangs if there are objects with lfuns calling Pike.identify_cycle() or Pike.count_memory(). Fixes [PIKE-106]. * (bortas) release number bumped to 8.0.630 by export.pike * (bortas) release number bumped to 8.0.631 by export.pike * (marcus) Update CHANGES. * (marcus) [ppc32/ppc64] Enable OPCODE_INLINE_RETURN * (erik) release number bumped to 8.0.629 by export.pike * (erik) release number bumped to 8.0.628 by export.pike * (srb) pgsql: Fix regression error in adaptive buffer refill. sizeof(Thread.Queue()) is not equal to Thread.Queue()->size(). Fixes the calculation for adaptive buffer refills. Without this fix, it *will* result in hung queries, but only if the number of rows returned exceeds 1024. * (srb) pgsql: Missing declaration in debugging mode. * (srb) pgsql: Fix unitialised mode regression from last commit. * (nilsson) Let the test program accept SSL 3.0 connections. * (srb) pgsql: Disentangle concurrent stash flushes explicitly. - Solves the last remaining one-deadlock-per-month problem. - Speeds up the critical path with regard to stash-flushing. * (grubba) release number bumped to 8.0.626 by export.pike * (grubba) release number bumped to 8.0.627 by export.pike * (grubba) Build [Stdio.Buffer]: Fixed a few warnings. * (wellhardh) release number bumped to 8.0.625 by export.pike * (wellhardh) release number bumped to 8.0.624 by export.pike * (srb) pgsql: Extra diagnostics and release all locks upon async query termination. * (marcus) [ppc64] Add support for ELF V2 ABI (ppc64le) * (bortas) CHANGES: rel 12 is out * (bortas) release number bumped to 8.0.623 by export.pike * (bortas) release number bumped to 8.0.622 by export.pike * (tobij) Revert "Stdio: Fix debug code." This actually triggers the Pike_fatal() from within the Stdio testsuite now, so apparently this was not quite the fix you were hoping for. This reverts commit 9271a86a1cd90b2dd969e2b929590695e244d4ab. * (el) GTK2: prevent GTK from changing the process locale Pike is currently not able to run with any locate other than "C". If the process locale is changed the compiler and probably other parts of Pike will misbehave. The long-term plan should be to fix those parts of Pike which depend on certain locale. * (srb) pgsql: Add optional communicationslog per filedescriptor for debugging. * (srb) Stdio.Buffer: Centralise bufferconstants. * (srb) pgsql: Guard against async destructs. * (srb) Stdio: Fix debug code. * (srb) pgsql: Avoid lock recursion and a deadlock. * (srb) Stdio.Buffer: Decrease system call overhead. * (srb) Stdio.Buffer: Eliminates race condition from read_cstring(). In addition it makes read_cstring(): - Restartable after buffer changes from range_error(). - Call range_error(0) just like sscanf(). - Faster. The race condition occurred after a pause due to range_error(), the subsequent io_rewind() at the end could not rewind far enough. * (srb) Stdio.Buffer: Simplify code, centralise locked_move check. * (grubba) release number bumped to 8.0.621 by export.pike * (grubba) release number bumped to 8.0.620 by export.pike * (srb) pgsql: Accomodate for sscanf() using range_error(0). * (srb) pgsql: Return data even after the local backend has died. * (grubba) release number bumped to 8.0.619 by export.pike * (grubba) release number bumped to 8.0.618 by export.pike * (grubba) Merge branch 'grubba/fdlib' into 8.0 * grubba/fdlib: System [NT]: Normalize the drive letter explicitly in normalize_path(). * (grubba) release number bumped to 8.0.617 by export.pike * (grubba) release number bumped to 8.0.616 by export.pike * (grubba) Merge branch 'grubba/fdlib' into 8.0 * grubba/fdlib: System [NT]: More normalize_path() fixes. * (grubba) release number bumped to 8.0.615 by export.pike * (grubba) release number bumped to 8.0.614 by export.pike * (grubba) Merge branch 'grubba/fdlib' into 8.0 * grubba/fdlib: Configure [Solaris]: Fixed quoting level issue. System [NT]: Fixed trailing slashes from normalize_path(). * (grubba) release number bumped to 8.0.613 by export.pike * (grubba) release number bumped to 8.0.612 by export.pike * (bortas) release number bumped to 8.0.610 by export.pike * (bortas) release number bumped to 8.0.611 by export.pike * (grubba) Merge branch 'grubba/fdlib' into 8.0 * grubba/fdlib: I/O [Solaris]: Fix getcwd() on Solaris. * (nilsson) Line wrap to 80 columns. * (bortas) release number bumped to 8.0.609 by export.pike * (bortas) release number bumped to 8.0.608 by export.pike * (srb) Thread.ResourceCount: Drop superfluous argument. * (srb) pgsql: Eliminate rare deadlock on heavy interleaved queries tuned. * (grubba) Merge branch 'grubba/fdlib' into 8.0 * grubba/fdlib: I/O [NT]: Fixed a few warnings. I/O [NT]: Moved bulk of normalize_path() to fdlib. * (tobij) ADT.CritBit.BigNumTree: off by one error (removed) Due to an off-by-one error the last limb of bignums was never compared. This resulted (sometimes) in bignums comparing equal inside of the tree. * (grubba) Merge branch 'grubba/fdlib' into 8.0 * grubba/fdlib: System [NT]: Update normalize_path() to use UTF8. * (grubba) release number bumped to 8.0.606 by export.pike * (grubba) release number bumped to 8.0.607 by export.pike * (grubba) Merge branch 'grubba/fdlib' into 8.0 * grubba/fdlib: I/O [NT]: Get rid of DO_NOT_WARN(). * (grubba) Merge branch 'grubba/fdlib' into 8.0 * grubba/fdlib: I/O [NT]: Added some more FD_DEBUG. I/O [NT]: Fixed typo in FD_DEBUG code. Build [NT]: Always use or own implementation of _dosmaperr(). Build [NT]: Improved support for MSVC 2010 (aka MSC 1600). * (grubba) Merge branch 'grubba/fdlib' into 8.0 * grubba/fdlib: I/O [NT]: Fixed deadlock. I/O [NT]: Updated FD_DEBUG diagnostics. I/O [NT]: Survive invalid UTF-16 surrogate pairs. * (grubba) CHANGES: Added notes about various minor fixes. * (grubba) CHANGES: Added some notes about the new I/O layer on NT. * (grubba) Merge branch 'grubba/fdlib' into 8.0 * grubba/fdlib: (36 commits) I/O [NT]: Updated FD_DEBUG diagnostics. I/O [NT]: Moved FD_SETSIZE definition to global.h. I/O [NT]: Use new low-level functions from Process. I/O [NT]: Added some assertions. I/O [NT]: Added serialization of access to fd handles. I/O [NT]: Use the new low-level functions. I/O [NT]: Added some low-level fd handling functions. Build [NT]: Fix typo of EACCES. I/O [NT]: Document some internal data structures. Stdio: Cleanup File()->truncate(). Configure: Moved tests for truncate64() and ftruncate64(). Stdio [NT]: Fixed warning on NT. Stdio [NT]: Added detection constant __HAVE_UTF8_FS__. I/O [NT]: Added note about the intent of fdlib. Stdio [NT]: Update get_dir() to accept/return UTF8. Stdio [NT]: Cleanup filesystem_stat(). Stdio [NT]: Clean up getcwd(). I/O [NT]: Added fd_get_current_dir_name(). Configure: Check for getwd() and get_current_dir_name(). Stdio [NT]: Clean up cd(). ... * (srb) Update CHANGES. * (srb) pgsql: Eliminate rare deadlock on heavy interleaved queries. * (grubba) release number bumped to 8.0.604 by export.pike * (grubba) release number bumped to 8.0.605 by export.pike * (grubba) Merge branch 'pike-modules/sass' into 8.0 * pike-modules/sass: Sass: Survive old libsass. * (grubba) release number bumped to 8.0.603 by export.pike * (grubba) release number bumped to 8.0.602 by export.pike * (srb) pgsql: 8.1-ism corrected. * (grubba) CHANGES: Moved entry to the correct segment. * (grubba) CHANGES: Added note about Concurrent.results() fix. * (grubba) CHANGES: Added a note about Web.Sass. * (grubba) CHANGES: Some more Filesystem.Monitor fixes. * (srb) Update CHANGES. * (srb) pgsql: Cater for empty start conditions. * (srb) Update CHANGES for pgsql. * (srb) pgsql: Drain portal queue deterministically. * (srb) pgsql: affected_rows() now preserves as of yet unfetched rows. * (srb) pgsql: Stall fetching rows if they are not being consumed yet. * (grubba) release number bumped to 8.0.601 by export.pike * (grubba) release number bumped to 8.0.600 by export.pike * (grubba) Testsuite [MIME]: Fix test of boundary_prefix. * (grubba) release number bumped to 8.0.598 by export.pike * (grubba) release number bumped to 8.0.599 by export.pike * (grubba) Merge branch 'pike-modules/sass' into 8.0 * pike-modules/sass: Configure [Sass]: Link with -lstdc++. * (grubba) release number bumped to 8.0.597 by export.pike * (grubba) release number bumped to 8.0.596 by export.pike * (grubba) Merge branch 'patches/pike84' into 8.0 * patches/pike84: Protocols.HTTP.Query: Do not wait for close() to complete. * (kg) MIME: Setter for message boundary prefix. * (erik) release number bumped to 8.0.595 by export.pike * (erik) release number bumped to 8.0.594 by export.pike * (grubba) Merge branch 'pike-modules/sass' into 8.0 * pike-modules/sass: (91 commits) Sass: Use ONERROR to free sass contexts on error. Sass: Unlink stale JMPBUF. Sass: Fixed indentation. Added some tests for Sass compilation errors. Just some cleanup of a simple test. Transfered "ownership" of error message from libsass to Pike. Fixed stupid Emacs indentation.:wq Testsuite [Sass]: Fixed detection of Web.Sass some more. Testsuite [Sass]: Updated testsuite to the moved module. Sass: Move module to Web.Sass. Sass: Hide the module when not available. Install: Added Tools.Sass to the feature list. Testsuite [Sass]: Check that Tools.Sass is available. Sass: Hide the s8 symbol. Sass: Use HAVE_LIBSASS instead of HAVE_SASS_H. Sass: Clean up configure script. Sass: Clean up acheader.h. Sass: Removed redundant cast. Sass: Adjusted debug message. Sass: Fixed a few C99-isms. ... * (srb) pgsql: Make affected_rows() and status_command_complete() wait for a meaningful result. * (srb) pgsql: Drain portal queue to completion. * (srb) pgsql: Report correct affected_rows() for INSERTs. * (marcus) run_autoconfig: Fix localdir when relative and not "./" Also touch aclocal.m4 to force make export to regenerate configure scripts. * (marcus) export.pike: Fix fix_configure This was broken in multiple ways: * Did not consider timestamp on aclocal.m4 * Did not consider post_modules * Did not check configure scripts directly under modules or post_modules * When fixing modules, it looked for the configure scripts in the build directory rather than the source directory * Did not use the run_autoconfig wrapper This has caused xenofarm to export snapshots with out of date configure scripts. * (wellhardh) release number bumped to 8.0.593 by export.pike * (wellhardh) release number bumped to 8.0.592 by export.pike * (grubba) I/O [NT]: Moved FD_SETSIZE definition to global.h. FD_SETSIZE as defined by <WinSock2.h> defaults to 64 on NT. Fixes [PIKE-100]. * (ponost) Differentiate private symbols. * (nilsson) Syntax fixes. * (wellhardh) release number bumped to 8.0.591 by export.pike * (wellhardh) release number bumped to 8.0.590 by export.pike * (nilsson) Fix commands having priority over code. LysKOM 22552693. * (grubba) release number bumped to 8.0.589 by export.pike * (grubba) release number bumped to 8.0.588 by export.pike * (grubba) Merge branch 'patches/pike90' into 8.0 * patches/pike90: Stdio [NT]: Fixed single byte buffer overrun in mv() on NT. * (grubba) Updated to tzdata2018d. * (grubba) release number bumped to 8.0.587 by export.pike * (grubba) release number bumped to 8.0.586 by export.pike * (stefang) Protocols.HTTP: Remove line breaks from base64 basic auth tokens * (stewa) release number bumped to 8.0.585 by export.pike * (stewa) release number bumped to 8.0.584 by export.pike * (stewa) release number bumped to 8.0.582 by export.pike * (stewa) release number bumped to 8.0.583 by export.pike * (marty) Concurrent.results: Handle an empty argument array properly. Previously code such as: Concurrent.Future f2 = Concurrent.results(({})); f2->on_success(lambda(array(string) a) { werror("success: %O.\n", a); }) ->on_failure(lambda(mixed err) { werror (describe_backtrace(err)); }); ... would lead to a backtrace because the future was destructed prematurely. * (wellhardh) release number bumped to 8.0.580 by export.pike * (wellhardh) release number bumped to 8.0.581 by export.pike * (bill) Protocols.HTTP.Server: help ensure data is sent when using HTTPS * (stewa) release number bumped to 8.0.579 by export.pike * (stewa) release number bumped to 8.0.578 by export.pike * (stewa) Filesystem.Monitor: Fixed trace message * (stewa) release number bumped to 8.0.576 by export.pike * (stewa) release number bumped to 8.0.577 by export.pike * (marty) Filesystem.Monitor: Add set_stable_time() function. * (marty) Filesystem.Monitor: Fix race condition on file deletion. This fixes a race that could occur on rapid exists => delete => exists transitions, where the directory monitor never noticed the change but the sub monitor was removed from the monitor lookup mapping. The directory monitor is now notified on sub-monitor release. * (marty) Filesystem.Monitor/inotify: Fix incorrect creation of new monitors. Monitors were created using monitor() on the top level rather than using Monitor::monitor(), which prevented the symlinks' overridden DefaultMonitor from setting the correct state on newly created monitors. We now force a check on the directory monitor instead, which will pick up the new file instantly and create the sub monitor. * (nilsson) Document HeaderParser fix. * (nilsson) Fix leaked testsuite constant. * (nilsson) Fix the throw_error flag which failed on correct input. * (unknown user) Added Thread.Farm()->set_thread_name_cb() to help applications that monitor thread creation and termination for the purpose of tracking thread names. * (nilsson) Some sort of handling of multiple header of the same kind. Does not introduce any new arrays, as to keep it somewhat compatible with existing code. * (marty) release number bumped to 8.0.574 by export.pike * (marty) release number bumped to 8.0.575 by export.pike * (marty) Filesystem.Monitor: Only multiply by file_interval_factor when path isn't a dir for sure. Previously monitors on non-existing paths could get very long poll intervals, which led to unexpected effects in Inotify mode, where the scan time typically is high but Inotify isn't able to watch the non-existing path. * (wellhardh) release number bumped to 8.0.572 by export.pike * (wellhardh) release number bumped to 8.0.573 by export.pike * (bortas) release number bumped to 8.0.570 by export.pike * (bortas) release number bumped to 8.0.571 by export.pike * (bortas) CHANGES: Fix typo * (stewa) release number bumped to 8.0.568 by export.pike * (stewa) release number bumped to 8.0.569 by export.pike * (wellhardh) release number bumped to 8.0.567 by export.pike * (wellhardh) release number bumped to 8.0.566 by export.pike * (grubba) Revert "Filesystem.Monitor: don't auto monitor paths that don't exist." This reverts commit a23b99eaeac4369f23689cea204b1aa7edf57835. * (www) release number bumped to 8.0.564 by export.pike * (www) release number bumped to 8.0.565 by export.pike * (bill) Filesystem.Monitor: don't auto monitor paths that don't exist. This should mitigate a race condition with inotify causing short lived directory monitors to remain indefinitely. * (stewa) release number bumped to 8.0.563 by export.pike * (stewa) release number bumped to 8.0.562 by export.pike * (grubba) CHANGES: Added nore about Unicode.normalize() optimization. * (grubba) Merge branch 'patches/pike79' into 8.0 * patches/pike79: Unicode: Optimize normalize() in NFC mode on 8-bit strings. * (grubba) CHANGES: Added note about Stdio.Terminfo. * (grubba) Merge branch 'patches/terminfo' into 8.0 * patches/terminfo: Terminfo: Support Ncurses 6 format. * (srb) pgsql: Fix infinite loop in optimisation of native NUMERIC types. * (stewa) release number bumped to 8.0.561 by export.pike * (stewa) release number bumped to 8.0.560 by export.pike * (grubba) Exit: Reorder the cleanup code somewhat. exit_mc() calls exit_interleave_mutex(), which in turn calls {init,exit}_threads_disable(), both of which mess with the Pike_compile_cond. As the Pike_compile_cond is destroyed by cleanup_pike_compiler() (called by cleanup_program()), make sure that exit_mc() is called prior to cleanup_program(). Fixes issues on exit on some architectures and build options. Potential fix for [PIKE-78]/[LysLysKOM 22448381]. * (grubba) Merge branch 'patches/pike62' into 8.0 * patches/pike62: Threads: threads_disable() needs to lock the pike compiler too. * (grubba) Web [JOSE]: Fixed UTF-8 round trip. Fixes [PIKE-76]. * (stewa) release number bumped to 8.0.559 by export.pike * (stewa) release number bumped to 8.0.558 by export.pike * (grubba) release number bumped to 8.0.557 by export.pike * (grubba) release number bumped to 8.0.556 by export.pike * (grubba) WhiteFish.Blob: Increased leniency in Blob::merge(). Duplicate hits entries for the max values are expected and are NOT a sign of corruption. * (grubba) WhiteFish.Blob: Fixed bug in add(). The max offset for hits in the body was erroneously set to 0x3fff rather than 0xbfff. Improves phrase searching in larger documents. Also adds some internal documentation about the encoding format. * (marty) release number bumped to 8.0.554 by export.pike * (marty) release number bumped to 8.0.555 by export.pike * (grubba) Merge branch 'patches/pike63' into 8.0 * patches/pike63: Tools.Shoot.CallOut: Fixed fallout from OPT_EXTERNAL_DEPEND. * (wellhardh) release number bumped to 8.0.553 by export.pike * (wellhardh) release number bumped to 8.0.552 by export.pike * (grubba) Merge branch 'patches/pike63' into 8.0 * patches/pike63: Sql.mysql: localtime(0)->timesone is not a constant expression. * (wellhardh) release number bumped to 8.0.550 by export.pike * (wellhardh) release number bumped to 8.0.551 by export.pike * (grubba) Merge branch 'patches/pike63' into 8.0 * patches/pike63: Compiler: Apply of OPT_EXTERNAL_DEPEND results in OPT_NOT_CONST. * (grubba) Revert "CHANGES: Added note about compiler fix." The change that this note is about has been reverted. This reverts commit 43f46afaeef79573114ace7b9cc2527e8ab4c780. * (grubba) Revert "Compiler: Reduce constant folding of '.'." This change had several unintended consequences. This reverts commit e86ee2f842b5cbe1ef56104f7104a1dec944dbc1. * (grubba) WhiteFish: Detect some common corruption in Blob::merge(). A common blob corruption issue is that the blob has had a sequence of space (0x20) characters appended. Detect this class of corruption by ending parsing uppon encountering duplicate hits entries (ie usually 0x2020, 0x2020). This should clean up erroneous hits for document 0x20202020. * (grubba) WhiteFish: Fixed seqencing issue in wf_buffer_r{int,short}(). The |-operator is not a sequencing point in C. Fixes potential integer decoding issues in wf_buffer. * (wellhardh) release number bumped to 8.0.549 by export.pike * (wellhardh) release number bumped to 8.0.548 by export.pike * (grubba) CHANGES: Added note about compiler fix. * (grubba) Compiler: Reduce constant folding of '.'. Constant folding of indexing of OPT_EXTERNAL_DEPEND expressions is typically not a good idea... Fixes [PIKE-63]. * (srb) Fix typos and docs. * (grubba) CHANGES: Updated with the latest Filesystem.Monitor fixes. * (grubba) CHANGES: Added some vertical white space. * (grubba) Filesystem.Monitor: Reschedule backend_check after register_path. If the newly registered monitor ends up at the head of the monitor_queue, the backend_check() call_out likely needs to be rescheduled. Fixes [PIKE-65]. * (grubba) Filesystem.Monitor: Fix rescheduling by adjust_monitor(). adjust_monitor() didn't reschedule the backend_check() call_out if the adjusted monitor already was at the head of monitor_queue. This caused polls to be delayed in some common cases. Fixes [PIKE-64]. * (grubba) Filesystem.Monitor: Clean up rescheduling of backend_check(). * (grubba) Filesystem.Monitor: Remove co_id == 1 special case. The special case is no longer used as it was broken, so there's no need to keep the code around. * (grubba) Merge branch 'patches/pike61' into 8.0 * patches/pike61: Master: Increased paranoia when indexing modules. * (srb) pgsql: Wireformat NUMERIC type fixes and finetuning. * (srb) Update CHANGES. * (srb) pgsql: Support binary transport of the NUMERIC type. * (nilsson) Less verbose * (srb) strftime: SunOS does not understand %F, take it out of the testsuite. * (srb) Concurrent: Various improvements, bugfixes, backported from 8.1. Add map_with() as an alias for flat_map(). Reduce lock contention and cleanup superfluous catches. Clarify docs. Free callbacks after use, frees memory and references. Add convenience variant to zip() and extend testsuite. Transparent automatic backend enable/disable. * (srb) pgsql: Float decimal precision minima from IEE-754 spec. * (srb) pgsql: Reduce float decimal precision to the real minimum. * (wellhardh) release number bumped to 8.0.547 by export.pike * (wellhardh) release number bumped to 8.0.546 by export.pike * (srb) pgsql: Make sure natural float numbers have no .0 attached. * (srb) Updated CHANGES. * (srb) Sql: Make big_typed_query fallback to big_query. * (srb) pgsql: Make sure all database errors end up as exceptions. * (nilsson) Fixed typos in reverse() * (grubba) release number bumped to 8.0.544 by export.pike * (grubba) release number bumped to 8.0.545 by export.pike * (grubba) release number bumped to 8.0.542 by export.pike * (grubba) release number bumped to 8.0.543 by export.pike * (grubba) Updated to 2018c. * (srb) pgsql: Readding primitive auto-reconnect logic. * (grubba) CHANGES: Added notes about some recent changes. * (grubba) Merge branch 'patches/pike60' into 8.0 * patches/pike60: Compiler: Fixed type leak in get_argument_type(). * (grubba) Merge branch 'patches/pike58' into 8.0 * patches/pike58: Crypto.Hash: Censor the password argument in crypt_hash(). * (wellhardh) release number bumped to 8.0.541 by export.pike * (wellhardh) release number bumped to 8.0.540 by export.pike * (grubba) Merge branch 'patches/pike56' into 8.0 * patches/pike56: Backend: Fixed backend_do_call_outs() some more, * (wellhardh) release number bumped to 8.0.539 by export.pike * (wellhardh) release number bumped to 8.0.538 by export.pike * (grubba) Merge branch 'patches/pike56' into 8.0 * patches/pike56: Backend: Fix race-condition in backend_do_call_outs(). * (srb) Whitespace and doc fixes. * (grubba) CHANGES: Added note about Debug.find_all_clones(). Also some reordering. * (grubba) release number bumped to 8.0.537 by export.pike * (grubba) release number bumped to 8.0.536 by export.pike * (grubba) Debug.find_all_clones(): Fixed off by one issue. It now seems to work as intended also when include_subclasses is true. * (grubba) Debug.find_all_clones(): Fixed stack pollution. Debug.find_all_clones() is an efun, so it must follow the strict pike stack calling conventions. * (wellhardh) release number bumped to 8.0.535 by export.pike * (wellhardh) release number bumped to 8.0.534 by export.pike * (grubba) Debug: Added find_all_clones(). * (wellhardh) release number bumped to 8.0.532 by export.pike * (wellhardh) release number bumped to 8.0.533 by export.pike * (grubba) CHANGES: Added note about Search.Database.MySQL fix. * (marty) Search.MySQL: Fix splitting of blobs. When an existing blob reached its size limit, the overflow blob(s) got lost. Potential fix for [PIKE-52]. * (grubba) Merge branch 'patches/trie' into 8.0 * patches/trie: ADT.Trie: Reduce verbosity of lfun::_sprintf(). * (marty) release number bumped to 8.0.530 by export.pike * (marty) release number bumped to 8.0.531 by export.pike * (nilsson) 2017 -> 2018 * (nilsson) Note about trailer headers fix. * (nilsson) Set chunked encoding trailer header value to the actual value. * (srb) Missed a typo. * (srb) Equvivalent and equivalent are not equivalent. * (nilsson) Cleanup and typo fix. * (grubba) CHANGES: Added note about Calendar.TimeRanges.NullTimeRange. * (grubba) Merge branch 'patches/calendar-hash' into 8.0 * patches/calendar-hash: Calendar.TimeRanges.NullTimeRange: Added lfun::__hash(). * (srb) System.TM: Fix prototype for strftime(). * (srb) pgsql: Swallow multiple EOF marks in final data rows in fetch_row_array(). Depending on timing when the query finishes, there can be multiple internal EOF rows. * (srb) Update CHANGES. * (nilsson) Don't leak when calling TM->strftime * (bortas) release number bumped to 8.0.528 by export.pike * (bortas) release number bumped to 8.0.529 by export.pike * (bortas) CHANGES: Clean up for release * (nilsson) Backport Image.Image mode grey fix. * (bortas) release number bumped to 8.0.526 by export.pike * (bortas) release number bumped to 8.0.527 by export.pike * (grubba) CHANGES: Updated with current changes. * (srb) mktime: Testsuite isdst should not be set to 1 unless the current timezone is known. * (srb) mktime: Clarify docs. * (nilsson) mktime: Aftermath fixes. Got rid of args to mktime_zone error. Fixed use of uninitialized value. Indent (pretend) class local function. Removed unused set_zone. struct tm requires time_stuff. Got rid of (now unused) fname argument too. * (srb) System.TM: Fix _sprintf() returntype. * (srb) mktime: Improve timezone support, increase performance, bugfixes. System.TM: Properly fixed, code reuse with mktime(). Extended testsuite for both. Reduced memory footprint. * (srb) pgsql: Clarify docs. * (jonasw) release number bumped to 8.0.524 by export.pike * (jonasw) release number bumped to 8.0.525 by export.pike * (srb) Additional testsuites with regard to mktime/gmtime. * (srb) mktime: Only need to clear memory once. * (srb) Enhance docs. * (srb) Daylight 'savings' spelling corrections. * (nilsson) Corrected glGenTextures type. * (srb) pgsql: Minor optimisations. * (srb) pgsql: Support binary transfer IEEE float formats. * (srb) Update CHANGES. * (anders) release number bumped to 8.0.523 by export.pike * (anders) release number bumped to 8.0.522 by export.pike * (kg) release number bumped to 8.0.520 by export.pike * (kg) release number bumped to 8.0.521 by export.pike * (srb) Update CHANGES. * (srb) pgsql: Migrate user callbacks to the DefaultBackend as soon as it has started. * (grubba) Compiler: Improved variant robustness. Perform a more lenient scan for the previous definition of a variant in the second pass. Should fix issues with not finding variants in the second pass, causing the fatal "Internal error: Not allowed to add more identifiers during second compiler pass." * (grubba) Crypto.Hash: Stricter string types. * (grubba) Crypto.Hash.SCRAM: Moved class. Move Crypto.SCRAM to __builtin.Nettle.Hash()->SCRAM analogous to other similar APIs. Crypto.SCRAM(Crypto.SHA256) is now Crypto.SHA256.SCRAM(). Also updates the testsuite and Sql.pgsql_util accordingly. * (grubba) Crypto.Hash: Stricter types. * (kg) release number bumped to 8.0.519 by export.pike * (kg) release number bumped to 8.0.518 by export.pike * (srb) Crypto.SCRAM: Casting blues. * (srb) pgsql: Use a minithread to start up the query instead of call_out(). * (srb) pgsql: Prohibit running queries in the local_backend again. * (anders) release number bumped to 8.0.517 by export.pike * (anders) release number bumped to 8.0.516 by export.pike * (srb) pgsql: Rely on block boundaries to release locks. * (grubba) Merge branch 'patches/glibc-2.26' into 8.0 * patches/glibc-2.26: Yp [glibc 2.26]: Support using libtirpc. * (kg) release number bumped to 8.0.515 by export.pike * (kg) release number bumped to 8.0.514 by export.pike * (nilsson) 2016 -> 2017 * (srb) Concurrent: Improve docs. * (srb) Concurrent: Improve docs. * (srb) pgsql: Missing variable index because we do not inherit. * (stewa) release number bumped to 8.0.513 by export.pike * (stewa) release number bumped to 8.0.512 by export.pike * (grubba) Merge branch 'patches/sendfile' into 8.0 * patches/sendfile: Sendfile: Improved support for TLS/SSL. * (srb) pgsql: Missing variable. * (srb) Sql.sql_result: index variable (un)used consistently in prototype. * (srb) pgsql: Fix fetch_row_array(). * (grubba) Merge branch 'patches/mariadb-10.2' into 8.0 * patches/mariadb-10.2: Mysql: Support MariaDB 10.2 headerfiles. * (srb) pgsql: Do not throw errors inside the callback-backend, they get lost. * (liin) release number bumped to 8.0.511 by export.pike * (liin) release number bumped to 8.0.510 by export.pike * (srb) Doc fixes. * (srb) Paint over some PikeParser bugs during make doc. * (srb) Update CHANGES. * (grubba) SSL.File: Added support for set_buffer_mode(). Adds support for user provided buffers in both directions. Updates the {read,write,close}_callbacks to the current conventions of Stdio.File (this includes defaulting the callback_id to this_object()). Also adds some corresponding tests to the testsuite. * (srb) pgsql: Add diagnostics. * (srb) Update CHANGES. * (srb) pgsql: Create proxy object to avoid circular references. * (srb) Crypto.SCRAM: New module. * (srb) pgsql: Simplify and bolster the code by using Thread.ResourceCount. * (srb) Thread.ResourceCount: New module to implement resource counters. * (srb) pgsql: Make SSL fix 8.0 compatible. * (srb) pgsql: Fix SSL method in combination with Stdio.Buffer. * (srb) SSL.File: Implement query_fd(). * (srb) pgsql: Eliminate connectfail() backreferences. * (grubba) Updated to 2017c. * (grubba) Tools.Standalone.check_http: Add support for option --expect. Support matching against the response status line. * (grubba) Tools.Standalone.check_http: Allow redirect responses. Some HTTP-servers only ever return redirects... Fixes [PIKE-44]. * (srb) pgsql: Run _lost callbacks on TCP-resets. * (srb) pgsql: Update docs. * (srb) Debug.Inspect: Allow forced dumps. * (srb) pgsql: Rip out fundamentally flawed reconnect logic, make failures consistent. * (srb) Update CHANGES. * (grubba) Calendar: Updated mkrules filter to latest set of tzdata files. * (srb) pgsql: Still allow empty or unspecified credentials. * (srb) pgsql: Slightly reduce memory footprint of the SCRAM-algorithm. * (srb) pgsql: Make syntax 8.0 compatible. * (srb) pgsql: Make salted-password-cache threadsafe. * (srb) Updated CHANGES. * (srb) pgsql: Postgresql 10 scram-SHA256 authentication support. * (srb) MIME: Support trailing \n epilogues on MIME parts. * (srb) Revert "pgsql: Signal EOF first, to avoid deadlock on object destruction." This reverts commit f342376c815d0f060e69fb3aba761e817c9583a1. The race has instead been fixed correctly by: pgsql: Cater for race during asynchronous destruction of bufcon. * (srb) Updated CHANGES. * (srb) pgsql: Cater for race during asynchronous destruction of bufcon. * (srb) pgsql: Inline the various big_query() variants. * (srb) Spelling fixes. * (srb) pgsql: Signal EOF first, to avoid deadlock on object destruction. * (srb) Updated CHANGES. * (grubba) Build: Fixed syntax error --with-dmalloc. * (grubba) CHANGES: Updated with current changes. * (bortas) release number bumped to 8.0.509 by export.pike * (bortas) release number bumped to 8.0.508 by export.pike * (bortas) CHANGES: Made new header for release 12 and moved some CHANGES done since build 498 to it. * (srb) CHANGES updated. * (srb) HTTP.Query: Support skipping chunked options. * (srb) HTTP.Query: timed_async_fetch() failed to skip the header. * (el) Stdio.Buffer()->trim(): fixed possible memcpy on overlapping regions trim() will move data inside of the buffer regardless of the number of wasted bytes. In those cases src and dst of the memcpy() call may overlap. * (srb) time: Clarify and correct documentation. * (srb) pgsql: Suppress 'File not open' output on stderr for query_fd(). * (el) push_*: handle possible evaluation errors Always evaluate the macro arguments before incrementing the stack pointer. * (el) Stdio.Buffer: fixed growth strategy Unless trim() was called manually or unless the buffer was empty, the growth strategy would never reuse empty space at the beginning of the buffer. Instead, it would always allocate more space. The code now works as described in the comment. When at least half of the buffer space in the beginning of the allocated region is unused, the data is moved to the front before new memory is being allocated. * (el) push_string(): handle OOM errors correctly make_shared_string() may throw an error in OOM situation. If that happens here, we will end up having a corrupt svalue on the stack. * (el) Interpreter: set 'pc' to zero The tracing code is using this to decide if we are currently calling a pike function or not. * (grubba) Crypto.CCM: Fixed initialization of the iv. The initialization of the CCM iv lacked one level of indirection, and instead zapped the iv string fields (including the flags field), which caused free_string() to later unlink the unshared iv string from the string hash table, which in turn triggered a fatal. * (grubba) Protocols.LDAP: Use SSL in blocking mode. SSL.File defaults to non-blocking mode and the LDAP module attempts syncronous blocking writes. Non-blocking mode causes these writes to eg fail with EAGAIN if the connection hasn't finished being negotiated before the first write. Fixes "LDAP write error: Resource temporarily unavailable". * (marcus) Image.PVR: Fix size check for twiddled images. Fixes [CID 1294661]. * (william) Image.SVG: fall back to pkg-config if one for the current arch isn't present. * (anders) Search.Utils: Updated debug string format. Synced with Roxen 6.1. * (liin) release number bumped to 8.0.507 by export.pike * (liin) release number bumped to 8.0.506 by export.pike * (grubba) Build [Whitefish]: Use the standard VPATH. Don't add the root source directory the VPATH as it causes eg buffer.o in the root source directory to inhibit building Whitefish's buffer.o. Potential fix for building issues on NT. * (william) smartlink: NetBSD uses the Darwin convention for rpath. * (william) smartlink: shift past -L arguments so that they aren't duplicated on the outgoing command-line. * (william) smartlink: support Darwin-style rpath * (william) smartlink: update the shell version of smartlink to include Darwin rpath * (rosuav) Support precompilation with Pike 8.1 * (grubba) HTTPLoop: Improved concurrency of log_as_array() and log_size(). Release the interpeter lock before locking the log_lock. * (grubba) Image.Image: Improved argument checking in apply_curve(). Non-integer array values lead to use of uninitialized curve values. Fixes [CID 1400857]. * (grubba) HTTPLoop: Get the log_lock before messing with log_head. Fixes unlikely race in cleanup code on accept(2) failing with EBADF. Fixes [CID 742665]. * (kg) Fixed a null pointer exception. * (kg) Disabled debug message. Disabled 'werror("Unknown segment marker: 0x%02x\n"' since it spams the log. * (stewa) release number bumped to 8.0.505 by export.pike * (stewa) release number bumped to 8.0.504 by export.pike * (stewa) release number bumped to 8.0.503 by export.pike * (stewa) release number bumped to 8.0.502 by export.pike * (grubba) release number bumped to 8.0.500 by export.pike * (grubba) release number bumped to 8.0.501 by export.pike * (kg) Removed trailing spaces. * (kg) Fixed bug in Monitor->update(). When checking if class was initialized code looked at the variable "next_pol", this behaviour caused a bug if a subclass set "next_pol" to 0. This resulted in poll every second. * (bortas) release number bumped to 8.0.499 by export.pike * (bortas) release number bumped to 8.0.498 by export.pike * (nilsson) You compare with equal(), not _equal(). * (bortas) release number bumped to 8.0.497 by export.pike * (bortas) release number bumped to 8.0.496 by export.pike * (grubba) CHANGES: Minor shuffling. * (cederp) Document the signal handler fix of 127b9080b in CHANGES * (bortas) release number bumped to 8.0.495 by export.pike * (bortas) release number bumped to 8.0.494 by export.pike * (grubba) WhiteFish.Blob: Fixed warning. * (cederp) Invoke signal handlers in the correct process after fork When using fork() from Pike, the child needs to have its own pipe to send pending signals over. If it is shared with the parent, either the child or the parent may receive the signal. Close the pipe and create a new one in the child after a fork. Do the same for the process wait info. * (grubba) CHANGES: Added some notes about WhiteFish. * (grubba) WhiteFish: Added some paranoia. Make sure that the read position is never past the write position. * (grubba) WhiteFish.Blob: Added some more consistency checks. * (grubba) WhiteFish.Blob: Validate input a bit more in merge(). Corrupted inputs corrupted the result even more... * (bortas) release number bumped to 8.0.492 by export.pike * (bortas) release number bumped to 8.0.493 by export.pike * (grubba) Testsuite [WhiteFish]: Added some tests of _WhiteFish.Blob and Blobs. * (grubba) WhiteFish.Blob: Added some implementation notes. WhiteFish.Blob()->data() calls exit_blob_struct() directly, which means that the struct needs to have been cleared when exit_blob_struct() gets called when the object is freed, or it will attempt to access/free stale pointers. Also fixes KR-style function declaration and a warning about unused arguments. * (grubba) WhiteFish.ResultSet: Fixed multiple memory leaks. * (grubba) WhiteFish.ResultSet: Fixed operations to work as documented. Fixes issues with merging of empty sets. Fixes rank calculation on intersection of sets. Fixes multiple testsuite failures. * (grubba) Testsuite [WhiteFish]: Hook into normal testsuite. * (grubba) Testsuite [WhiteFish]: Updated some tests to reality. * (stewa) release number bumped to 8.0.490 by export.pike * (stewa) release number bumped to 8.0.491 by export.pike * (grubba) release number bumped to 8.0.489 by export.pike * (grubba) release number bumped to 8.0.488 by export.pike * (bortas) CHANGES: Fixed spello * (grubba) CHANGES: Updated with all changes since 8.0.466. Also rewords, reorders and regroups several entries. * (grubba) release number bumped to 8.0.486 by export.pike * (grubba) release number bumped to 8.0.487 by export.pike * (nilsson) Minor fixes * (nilsson) Quick summary of latest changes. * (grubba) mkpackage: Fix propagation of extra platform test error code. Reorder the assignments of EXIT and EXITCODE, so that the assignment of EXIT doesn't clear $? before it is used for the assignment of EXITCODE. Fixes [PIKE-40]. * (el) CHANGES: document Stdio.Buffer bugfixes * (bortas) CHANGES: Fresh template for next release * (bortas) release number bumped to 8.0.485 by export.pike * (bortas) release number bumped to 8.0.484 by export.pike * (el) Stdio.Buffer: added more missing io_trigger_output calls add_padding() and add_bignum() did not trigger the fd output callback. * (el) Stdio.Buffer: trigger fd output in add_int*() and input_from() The add_int family of methods and input_from() did not trigger a call to the fd output function, which could result in write() never being called when using Stdio.File buffer mode. * (grubba) Testsuite [Crypto]: Test JWK-codec. * (grubba) Crypto.ECC.Curve.ECDSA: Added get_point(). * (grubba) __builtin.Nettle.ECC_Curve.Point: Added _equal(). * (grubba) Web: decode_jwk() now returns an ECDSA object for private keys. * (grubba) __builtin.Nettle.Hash._HMAC.State: Implement jwk(). Web.encode_jwk() should now support generating JWKs for HMACs. Fixes remainder of [PIKE-39]. * (grubba) Crypto.ECC.Curve.ECDSA: Implemented jwk(). Support generation of JSON Web Keys (JWKs) from ECDSA objects. Fixes more of [PIKE-39]. * (grubba) Crypto.RSA: Implemented jwk(). Support generation of JSON Web Keys (JWKs) from RSA objects. Fixes some of [PIKE-39]. * (grubba) Web [Crypto]: Added encode_jwk(). This is the reverse of Web.decode_jwk(). Note that no actual encodings are generated yet. Fixes some of [PIKE-39]. * (grubba) Search.Database.MySQL: Added some optional consistency checks. Defining SEARCH_DB_CONSISTENCY_CHECKS will now cause the module to perform some extra SQL queries to make sure that the modified entries are consistent. * (grubba) Search.Database.MySQL: Fixed truncation of word_hit.hits. word_hit.hits should now lose its padding on the last write. Also some related code cleanup. * (grubba) Search.Database.MySQL: Fixed bugs in store_to_db(). Work around for MySQL/MariaDB interpreting INSERT('ABC', 3, 3, 'DEF') as equivalent to just 'ABC' (and NOT 'ABCDEF'). Note that INSERT('ABCX', 3, 3, 'DEF') does result in 'ABCDEF'. Also some code clean up to reduce the number of special cases. * (grubba) release number bumped to 8.0.483 by export.pike * (grubba) release number bumped to 8.0.482 by export.pike * (grubba) release number bumped to 8.0.480 by export.pike * (grubba) release number bumped to 8.0.481 by export.pike * (grubba) release number bumped to 8.0.479 by export.pike * (grubba) release number bumped to 8.0.478 by export.pike * (kg) release number bumped to 8.0.477 by export.pike * (kg) release number bumped to 8.0.476 by export.pike * (grubba) release number bumped to 8.0.475 by export.pike * (grubba) release number bumped to 8.0.474 by export.pike * (grubba) Mysql: Fixed typo in mysql_config detection. * (grubba) release number bumped to 8.0.473 by export.pike * (grubba) release number bumped to 8.0.472 by export.pike * (grubba) Build [Mysql]: Fix issues with detection if mariadb_config. Potential fix for build system issues [PIKE-35]. * (grubba) release number bumped to 8.0.471 by export.pike * (grubba) release number bumped to 8.0.470 by export.pike * (tobij) System.Inotify: Compilefix, can't check for inotify_config.h * (grubba) Sql.sqlite: Throw an error in list_fields() if no such table. Fixes testsuite failures. * (grubba) Standards.PKCS: Fixed decoding of PKCS#8 public keys. The public key data is for some reason kept in a BIT STRING (and not in an OCTET STRING)... * (grubba) Parser.PKCS: Added some support for PKCS#10. * (agehall) The id variable will be overridden by the local variable, so the id passed to onopen() will be the Stdio.File object which seems wrong. * (grubba) Compiler: Improve recovery after some syntax errors. Recovers from issue where the compiler context could come out of sync due to syntax errors in nested classes. This could in turn lead to various obscure errors, some of which were fatal. * (grubba) Runtime: Make sure that all types have markers at cleanup time. Fixes fatal "Didn't find gc marker as expected" for some leaked types. * (grubba) _Roxen.HeaderParser: Fixed leak of mapping in feed(). The mapping intended to hold the parsed headers from feed() leaked if the HTTP headers were malformed. * (grubba) Compiler [cpp]: Fixed memory leak. * (grubba) GC: Don't attempt to get gc markers when the gc isn't active. Fixes NULL-dereferences when running count_memory() --with-dmalloc. * (rosuav) Fix spelling of 'necessary' in comments and docs * (nilsson) release number bumped to 8.0.468 by export.pike * (nilsson) release number bumped to 8.0.469 by export.pike * (grubba) Thread: Fix disable_threads issue in thread_create(). If disable_threads() was performed while a different thread was spawning a new thread, the thread spawning the new thread wouldn't wait for threads to be reenabled before returning. Potential fix for [PIKE-18]. * (grubba) Revert "Threads: Check threads_disabled state after co_wait_interpreter()." These checks were redundant as they are already performed by pike_wait_interpreter() (as called by co_wait_interpreter()). The cause for [PIKE-18] is thus something else. This reverts commit 9401e482048bc7bb168feab49185d9af9554e06e. * (grubba) Revert "Threads: Fixed infinite wait on threads_disabled." This reverts commit 5502c8e6d65c223ebeeaf6058066e5ef757167fe. * (grubba) Threads: Fixed infinite wait on threads_disabled. Fixes some fall out from the [PIKE-18] fix. * (grubba) Threads: Check threads_disabled state after co_wait_interpreter(). Some other thread may disable threads while we're waiting in co_wait_interpreter(), in which case we must wait for them to be enabled again before proceeding. Potential fix for [PIKE-18]. * (bortas) release number bumped to 8.0.466 by export.pike * (bortas) release number bumped to 8.0.467 by export.pike * (bortas) release number bumped to 8.0.465 by export.pike * (bortas) release number bumped to 8.0.464 by export.pike * (el) Stdio.Buffer: fix unread() The documentation promises that unread() will always succeed until new data is added to the buffer. This contract was broken when the new growth strategy was added by commit 2c4241823. That commit added a possible trim to every read operation, which would try to shrink the buffer and make a future unread() fail. Also, the max_waste check contained a typo, which made it always succeed. This issue does not affect rewind keys. * (srb) pgsql: Document implementation decision. * (nilsson) Survive wide string log message. * (nilsson) Do not leak on regexp compilation error. * (bill) Housekeeping: add new files to .gitignore * (bill) Inotify: not all dirents have d_type. * (grubba) Filesystem.Monitor: Survive transient files. Automatically created monitors for paths that are deleted before the monitor has initialized are now removed instead of being kept until the next time the path is created and deleted. Fixes infinite loops on directory deletion some more. * (grubba) Filesystem.Monitor [Inotify]: Fixed infinite loop. Creating new monitors for deleted files or directories is not a good idea... Fixes testsuite failures on Linux. * (nilsson) Bugfix for Binary of non-zero subtype. * (grubba) Filesystem.Monitor: Added report(). This provides an API to simplify targeting tracing of the Filesystem.Monitor operation. Fixes [PIKE-17]. * (marcus) Fix portability issues in sscanf with binary float * extract_{float,double}_{be,le} should return FLOAT_TYPE, which is the type of the field the value will get assigned to, rather than float/double. In particular, casting the value to a float on a system where FLOAT_TYPE is double is a bad idea if float is not IEEE compatible, and thus has unknown precision. * INT64 is an optional type, so the endianness reversal code can not depend on its existence. * (nilsson) Use DOUBLE_IS define for code handling doubles. * (marcus) [ppc64] Fix F_NEG_NUMBER * (grubba) CHANGES: Reformatted and added some points. Changes since Pike 8.0.438 (release 9) should now be up to date. * (nilsson) Document BSON changes * (grubba) CHANGES: Some more Filesystem.Monitor updates. * (grubba) Filesystem.Monitor [InotifyMonitor]: Improved handling of race. Handle the case where Inotify notifies about a file that has been deleted and then resurrected without its parent directory having been updated in the interval. This is apparently an operation characteristic of the MacOS X Finder. Improves notification times for the above case. Fixes [PIKE-16]. * (bill) Java: detect system installation of JavaVM framework on OSX * (nilsson) Working decoding of binary subtype 0x02. * (nilsson) Binary subtype is unsigned. Zero length binary is allowed. * (nilsson) BSON time can be negative. * (bortas) release number bumped to 8.0.463 by export.pike * (bortas) release number bumped to 8.0.462 by export.pike * (grubba) Nettle.Hash: Check proper initialization in crypt_hash(). Fixes NULL-deref in Nettle.Hash()->crypt_hash(). Thanks to Thomas Gusenleitner <tomgusi@gmail.com> for the report. Fixes [LysLysKOM 22137102]/[Pike mailinglist 14721]. * (grubba) Build: Survive platforms with SOCK_*, but without accept4(2). The pike_sock_flags enum became empty on the above platforms (like eg NetBSD). * (grubba) Revert "build: removed unused enum that evaluates to empty on NetBSD." This reverts commit 5ca5bed0553acee59db65699e0547fb63db809a3. The enum as such is not used, but its values are... Fixes compilation errors on Solaris and other platforms without accept4(2). * (bill) CHANGES: changes * (srb) build: Drop accidental space. * (bill) build: NetBSD has bswap(16|32|64) in libc, so we should avoid redefining them. * (bill) build: removed unused enum that evaluates to empty on NetBSD. * (srb) Rename Debug.Peek to Debug.Inspect. * (srb) pgsql: Clean up transient error/warning messages. * (srb) pgsql: Support multiset binary literals and avoid copying Stdio.Buffer() bindings. * (srb) pgsql: Recognise all generic BEGIN/START commands. * (grubba) Freetype: Improved detection of freetype-config. freetype-config wasn't found when ac_tool_prefix is set, but no prefixed freetype-config exists. * (grubba) Configure [GTK2]: Use PIKE_PROG_PKG_CONFIG. * (grubba) Configure: Attempt to detect the tool prefix depending on ABI. Improves detection of pkg-config. * (grubba) Configure: Added PIKE_CHECK_FILE_ABI(). Some code cleanup. * (william) CHANGES: describe SQLite bug fix for string bindings. * (nilsson) Added fallthrough comment. * (bill) SQLite: allow (<"somebinarydata">) as bind value to use blob datatype. * (bill) SQLite: don't bind 8 bit strings as blobs. * (bill) misc: remove executable bit * (srb) Document pgsql CHANGES. * (bortas) release number bumped to 8.0.460 by export.pike * (bortas) release number bumped to 8.0.461 by export.pike * (srb) pgsql: Support spurious syncs in a stashed queue. * (grubba) release number bumped to 8.0.459 by export.pike * (grubba) release number bumped to 8.0.458 by export.pike * (srb) pgsql: Omit qportals on CancelRequest connections, eliminates interference. * (srb) pgsql: Suppress errors if the server gets lost. * (srb) pgsql: Improve debugging log. * (srb) pgsql: Stashflushmode is now managed consistently. * (nilsson) Fix warning. * (grubba) release number bumped to 8.0.456 by export.pike * (grubba) release number bumped to 8.0.457 by export.pike * (grubba) Filesystem.Monitor: Reduce initialization latency. * (grubba) Build [FSEvents]: Fixed regeneration of fsevent_config.h.in. * (el) Stdio.Buffer: fixed typo in previous commit * (el) Stdio.Buffer: fixed integer overflow in read_json() If the decoded JSON is larger than INT_MAX, it could not be correctly decoded from a buffer. * (el) JSON: fix integer overflow in decode() Due to a typo, a variable had the wrong type which could lead to truncation on 64bit systems. This could lead to out-of-bounds reads when parsing large JSON data (longer than INT_MAX bytes). * (grubba) release number bumped to 8.0.455 by export.pike * (grubba) release number bumped to 8.0.454 by export.pike * (grubba) Filesystem.Monitor: Fixed symlink issue with Inotify. * (grubba) Filesystem.Monitor.symlinks: Added some diagnostics. * (srb) Document Debug.Peek feature. * (srb) Debug.Peek: New class for interactive debugging and live data inspection. * (srb) pgsql: Do not mess with the portal stack on cancellations. * (srb) pgsql: Accellerate BEGIN/COMMIT statements: forgot 3rd parameter to enable it. * (grubba) release number bumped to 8.0.453 by export.pike * (grubba) release number bumped to 8.0.452 by export.pike * (srb) pgsql: Suppress spurious message if there are no pending messages. * (grubba) CHANGES: Added some notes about Filesystem.Monitor. * (grubba) Filesystem.Monitor: Improved diagnostics. Fixes some double messages with FILESYSTEM_MONITOR_DEBUG. * (grubba) Filesystem.Monitor: Removed some obsolete code. * (grubba) Filesystem.Monitor: Improved robustness in adjust_monitor(). When using acceleration, adjust_monitor() may get called with monitors not on the monitor queue (typically due to deletions, and both polled and accelerated checks). Fixes [Pike-15#comment=89-766]/[LysLysKOM 22120285]. * (grubba) Filesystem.Monitor: Fixed some typos. * (grubba) Filesystem.Monitor: Improved polling heuristic in update(). * (grubba) Filesystem.Monitor: Reschedule the poll earlier on demand. Don't wait for the full old poll interval if we know that we need to check earlier than it expires. Reduces poll (and notification) delays in some circumstances. * (grubba) Filesystem.Monitor: Scan accelerated monitors too. Both the Inotify and FSEvents APIs claim that they support notifications on eg network file systems, and while they will succeed in notifying on changes performed by the local host on such file systems, they will not on changes performed by other hosts. To avoid missing such changes such monitors need to be actively scanned too. Fixes [Pike-15]. * (grubba) Filesystem.Monitor: Removed some dead and obsolete code. This disabled code was intended to support separate backends with EventStreamMonitor, but was broken and recently rendered obsolete by proper support. * (srb) Document pgsql changes. * (srb) pgsql: Short circuit prepared statement-cache race. * (srb) pgsql: Trim in-flight portal stack aware of transactions in progress. * (srb) pgsql: Accellerate BEGIN/COMMIT statements. * (srb) pgsql: Disentangle portal-sync race for concurrent db-errors. * (srb) pgsql: Avoid dangling portals on errors. * (srb) pgsql: Preserve initial errormessage for multiple failures in one transaction. * (srb) pgsql: Cater for an unopened portal in case of a parsing error. * (srb) pgsql: Flush out unseen error/warning messages upon connection close. * (grubba) CHANGES: Fixed Concurrent example. User-level code should typically receive Concurrent.Future objects (not Concurrent.Promise objects). Use the usual naming convention (renamed connection() to connect()). Also some other minor fixes for changes since Pike 8.0.438. * (bortas) release number bumped to 8.0.450 by export.pike * (bortas) release number bumped to 8.0.451 by export.pike * (srb) pgsql: Break up query to allow more parallelism. * (srb) pgsql: Move sync point before parsing, to avoid race. * (nilsson) Typo. * (nilsson) Added Concurrent, and moved changes not in the next release to next beta. * (agehall) Prevent SIGSEGV when attempting to create rewind keys on the buffers returned by read_buffer(). * (agehall) BSON Binary data is not null terminated. * (marty) Filesystem.Monitor: Fix EventStreamMonitor to work with other backends. * (grubba) Search.Filter.HTML: More work arounds for Parser.HTML leak. This changes a few more callbacks to returning the empty array instead of returning zero. Work around for [PIKE-14]. * (grubba) Inotify: Improved initialization in add_watch(). Make sure that the backend is woken up after scheduling the artifical initialization events. Otherwise they may stay pending indefinitely. * (grubba) ADT.Heap: Survive the same Element being pushed multiple times. Calling push() with an Element already present on the heap is now equivalent to calling adjust() with the same element. Previously the heap got corrupted in the above case. * (grubba) Search.Filter.HTML: Work around for Parser.HTML leak. This changes a few callbacks to returning the empty array instead of returning zero. Work around for [PIKE-14]. * (grubba) Parser.HTML: Fixed stack leak. When a parser tag or container callback returned zero, there were some cases where the zero didn't get popped from the stack. This could cause the parser to run out of stack for large documents. Fixes [PIKE-14]. * (grubba) release number bumped to 8.0.449 by export.pike * (grubba) release number bumped to 8.0.448 by export.pike * (tobij) Builtin: random(mapping) no longer exposes PIKE_T_FREE to Pike Off by one error caused random(mapping) to return elements from the mapping's freelist. Fixes [LysLysKOM 22108453] reported by Per Cederqvist. Thanks! * (grubba) Search.Database.MySQL: Fixed race condition on update. Data was retained between different critical zones. * (nilsson) Whitespace change. * (grubba) release number bumped to 8.0.446 by export.pike * (grubba) release number bumped to 8.0.447 by export.pike * (grubba) release number bumped to 8.0.444 by export.pike * (grubba) release number bumped to 8.0.445 by export.pike * (anders) release number bumped to 8.0.442 by export.pike * (anders) release number bumped to 8.0.443 by export.pike * (grubba) release number bumped to 8.0.441 by export.pike * (grubba) release number bumped to 8.0.440 by export.pike * (bortas) release number bumped to 8.0.438 by export.pike * (bortas) release number bumped to 8.0.439 by export.pike * (bortas) release number bumped to 8.0.436 by export.pike * (bortas) release number bumped to 8.0.437 by export.pike * (srb) pgsql: By default serialise portal use; avoids unexpected parallelism. * (grubba) CHANGES: Added notes about some minor fixed bugs. * (grubba) CHANGES: Added notes about some building issues. * (grubba) CHANGES: Added note about some typing changes. * (grubba) CHANGES: Added note about smartlink. * (grubba) CHANGES: Added note about mkpackage. * (grubba) CHANGES: Added note about variant dispatcher change. * (grubba) CHANGES: Added notes about GL, GLUT & GTK2 support for Quartz/Darwin. * (srb) pgsql: Updated CHANGES. * (srb) pgsql: Add instrumentation to aid in diagnosing raceconditions. * (srb) pgsql: Increase parallelism, inhibits rare deadlocks. * (srb) pgsql: Make _sync wait for executions instead of just parsing. * (william) Protocols.HTTP: allow connection reuse when server is a hostname. * (grubba) release number bumped to 8.0.435 by export.pike * (grubba) release number bumped to 8.0.434 by export.pike * (grubba) release number bumped to 8.0.433 by export.pike * (grubba) release number bumped to 8.0.432 by export.pike * (nilsson) Only include ECC_Curve if we have any curve implemented. * (grubba) release number bumped to 8.0.430 by export.pike * (grubba) release number bumped to 8.0.431 by export.pike * (cederp) Callbacks [debug]: Fix typo in mask in check_callback_chain(). Fixes infinite loop in circularity detection. Thanks to Per Cederqvist <cederp@opera.com> for the report and patch. Fixes [LysLysKOM 22087722]. * (grubba) Build [Gdbm]: Support building with gdbm 1.13. Fixes obscure compilation error when building with gdbm 1.13 due to a symbol clash with the symbol "fatal" used as an argument in the macro defintion of gdbm_set_errno(). Thanks to Andrew Kosteltsev for the report (in G+). * (grubba) release number bumped to 8.0.429 by export.pike * (grubba) release number bumped to 8.0.428 by export.pike * (nilsson) Added #pike. * (grubba) release number bumped to 8.0.427 by export.pike * (grubba) release number bumped to 8.0.426 by export.pike * (bortas) release number bumped to 8.0.424 by export.pike * (bortas) release number bumped to 8.0.425 by export.pike * (grubba) release number bumped to 8.0.423 by export.pike * (grubba) release number bumped to 8.0.422 by export.pike * (grubba) Build [Mapping]: Removed extraneous and conflicting prototype. Fixes linking issues on NT. * (grubba) Backend.PollDeviceBackend: Make set_signal_event_callback() optional. Fixes "Warning: An expression of type function({ Backend = object(implements _static_modules.Builtin()->DefaultBackendClass) } : void) cannot be assigned to a variable of type function({ Backend = object(implements _static_modules.Builtin()->Backend) } : void)." Thanks to Per Cederqvist <cederp@opera.com> for the report. Fixes [LysLysKOM 22067696]. * (grubba) Master: Fix range for bool type. Makes sure that 0 is part of the range for the bool type. Fixes [PIKE-8]. * (grubba) CHANGES: Added note about Thread.Mutex. * (grubba) Thread.Mutex: Force a thread yield on mutex unlock. Attempt to avoid starvation of threads waiting on mutexes. Fixes [PIKE-12]. * (william) GTK2: Add objective-c switch before doing header checks that would fail without it. (Darwin) * (william) GTK2: GDK_DISPLAY() is only available on systems with gdkx.h (X11) * (william) smartlink: don't override MACOSX_DEPLOYMENT_TARGET if it's been specified. this should prevent "compiled against version x but linking against version y" warnings. * (rosuav) Support GDK Quartz by probing for headers instead of assuming * (william) GLUT: just do all of the -framework GLUT tests first before deciding whether to test for non Quartz GLUT. * (william) GTK2: add -x objective-c for Darwin added to end because the configure tests seem to clobber the various cflags variables. * (grubba) Build [GLUT]: Fixed header file filename typo. * (william) GLUT: perform lib checks in proper order for Quartz GLUT * (william) GLUT: Prefer Quartz GLUT when present (OSX). * (william) GL: Prefer Quartz GL on systems that have it (OSX) * (william) GLUT: Prefer GLUT framework on OSX over X11 GL installation. * (kg) release number bumped to 8.0.421 by export.pike * (kg) release number bumped to 8.0.420 by export.pike * (nilsson) Fix sort order. Needed for correct lookup. * (grubba) Web.decode_jwk: Relax the variant type check somewhat. Work around for variant dispatcher bug in older Pike 8.0. * (grubba) Runtime [Variant dispatcher]: Improve string range checking. Fixes mismatches due to the lazy string range (eg string(8bit)) exceeding the typed string range (eg string(7bit)) for narrow strings. * (grubba) Web.encode_jws(): Make the media_type argument optional. RFC 7515 4.1.9 says that the header field "typ" is optional, so make it possible to generate such JWSes. * (grubba) CHANGES: Added note about {en,de}code_jws(). * (grubba) Web: Added {en,de}code_jws(). These simplify handling of JWSes other than JWTs. Also cleans up {en,de}code_jwt() by using the new functions. Also fixes a typo in the type for decode_jwt(). * (grubba) CHANGES: Added entry about updated Web.decode_jwk(). * (grubba) Web.decode_jwk: Added support for decoding of symmetric keys. Decoding of JWK encoded keys for SHA256/HMAC, etc is now supported. Also adds some convenience variants. * (grubba) mkpackage: Support multiple sub-packages with the same name. Gnu-tar doesn't like being asked to extract the same file multiple times from the same tar-file. It claims that the second file doesn't exist in the archive. This can happen when a sub-package has been replaced with a fixed version. * (grubba) Charset: Fixed typos in GSM-03.38 table. Two characters had the wrong encoding. Also adds table for GSM-03.38-ext and updates some references. * (bortas) release number bumped to 8.0.419 by export.pike * (bortas) release number bumped to 8.0.418 by export.pike * (nilsson) More correct description of the socket fail fix. * (bortas) release number bumped to 8.0.417 by export.pike * (bortas) release number bumped to 8.0.416 by export.pike * (bortas) Document Protocols.HTTP.Query bugfix * (bortas) Rephrased changes a bit. * (grubba) CHANGES: Added notes about some of the recent changes. * (bortas) New CHANGES header for this months release * (jonasw) release number bumped to 8.0.415 by export.pike * (jonasw) release number bumped to 8.0.414 by export.pike * (bortas) release number bumped to 8.0.413 by export.pike * (bortas) release number bumped to 8.0.412 by export.pike * (nilsson) Don't hang if we are unable to open a socket. * (grubba) Updated to 2017a. * (liin) release number bumped to 8.0.411 by export.pike * (liin) release number bumped to 8.0.410 by export.pike * (grubba) Arg & ADT.Struct: Survive use by old (ie 8.0.232) pike binaries. Prior to Pike 8.0.368 the new-style argument checking in ::_indices() was broken. Roxen 6.0.130 uses a Pike 8.0.232 binary with current modules. Fixes [PIKE-6]. * (grubba) Protocols.HTTP.do_async_proxied_method: Fix timeout handling. The HTTP timeout was lost during TLS negotiation. Fixes [PIKE-7]. * (grubba) Protocols.HTTP.Query: Added {init,remove}_async_timeout(). Some code clean up in preparation for fixing [PIKE-7]. * (grubba) Protocols.HTTP: Support connecting to proxies via https. * (grubba) release number bumped to 8.0.409 by export.pike * (grubba) release number bumped to 8.0.408 by export.pike * (liin) release number bumped to 8.0.407 by export.pike * (liin) release number bumped to 8.0.406 by export.pike * (bortas) release number bumped to 8.0.405 by export.pike * (bortas) release number bumped to 8.0.404 by export.pike * (bortas) CHANGES: Fix spelling misstakes. * (bortas) release number bumped to 8.0.403 by export.pike * (bortas) release number bumped to 8.0.402 by export.pike * (jonasw) release number bumped to 8.0.401 by export.pike * (jonasw) release number bumped to 8.0.400 by export.pike * (william) build: smartlink chooses better deployment options on new releases OSX, should help with C++ library compatibility * (grubba) CHANGES: Some layout fixes. * (grubba) CHANGES: Added some notes about recent changes. * (nilsson) Document System.TM fix. * (bortas) release number bumped to 8.0.398 by export.pike * (bortas) release number bumped to 8.0.399 by export.pike * (nilsson) The range for tm struct mday is 1..31, so initialize to 1, not 0. * (grubba) Web: Added decode_jwk{,_set}(). These decode JOSE keys coded according to RFC 7515. Backported from Pike 8.1. Fixes [PIKE-3] * (nilsson) Added #pike * (grubba) Web: Updated {en,de}code_jwt() to support HMAC signatures. * (jonasw) release number bumped to 8.0.397 by export.pike * (jonasw) release number bumped to 8.0.396 by export.pike * (bortas) CHANGES: Add entry for Protocols.DNS bugfix * (hungerf3) Protocols.DNS: Fix decoding of LOC RRs. * (jonasw) release number bumped to 8.0.394 by export.pike * (jonasw) release number bumped to 8.0.395 by export.pike * (grubba) Mysql.SqlTable: Added _sizeof(). sizeof() on an SqlTable now returns the (cached) number of rows in the table. * (jonasw) release number bumped to 8.0.393 by export.pike * (jonasw) release number bumped to 8.0.392 by export.pike * (grubba) Build [VCDiff]: iostream wants __dso_handle from crtbeginS.o. Fixes [bug 7827]/[PIKE-2]. * (jonasw) release number bumped to 8.0.391 by export.pike * (jonasw) release number bumped to 8.0.390 by export.pike * (nilsson) It's 2017. * (grubba) Configure: Potential fix for dynamic modules on FreeBSD 10.1. The LDSHARED test attempted to link the shared object with crt1.o, which failed due to relocation errors. As we don't want to link with the startup files anyway, make sure to ask gcc to not do it. * (grubba) CHANGES: Added some notes about recent changes. * (grubba) Build: Fixed compilation error on systems without readdir_r(2). * (bortas) CHANGES: Header for new release. * (grubba) String.Buffer: Allocate a constant program id. * (grubba) Stdio.Buffer: Allocate a constant program id. * (bortas) release number bumped to 8.0.389 by export.pike * (bortas) release number bumped to 8.0.388 by export.pike * (grubba) Compiler: Improved backward compat for ::_indices() et al. Removes the deprecation warning when using the old-style syntax. The return value for ::`->=() is no longer void. * (nilsson) Fixed a surprise-deprecation. * (grubba) CHANGES: Fixed typo. * (nilsson) Fix typo * (bortas) CHANGES: Fixed some typos. * (jonasw) release number bumped to 8.0.386 by export.pike * (jonasw) release number bumped to 8.0.387 by export.pike * (nilsson) Fix fallout from improved types on ::`[]= and ::_indices * (unknown user) Use push_text() consistently. * (unknown user) Add _sprintf() to Thread.Mutex() that prints current locking thread. Switch to hex-based thread IDs in _sprintf() for Thread.Thread() for easier reading. * (grubba) Web.decode_jwt: Assume JWT if no type set in header. Fixes decoding of JWTs from Google OpenIDConnect. * (bortas) release number bumped to 8.0.385 by export.pike * (bortas) release number bumped to 8.0.384 by export.pike * (nilsson) Note about the empty string addition bug. * (kg) release number bumped to 8.0.382 by export.pike * (kg) release number bumped to 8.0.383 by export.pike * (grubba) Preprocessor: Fixed SIGSEGV on invalid macro expansion. * (kg) release number bumped to 8.0.381 by export.pike * (kg) release number bumped to 8.0.380 by export.pike * (marty) release number bumped to 8.0.378 by export.pike * (marty) release number bumped to 8.0.379 by export.pike * (grubba) mkpackage: Added kludge for [bug 7826]. Make sure that the first string in the mkdirhier loop has the correct character range by preloading the initial non-empty string. Needed by the Roxen build system. * (jonasw) release number bumped to 8.0.377 by export.pike * (jonasw) release number bumped to 8.0.376 by export.pike * (grubba) Strings [`+]: Fixed handling of empty string. Don't propagate the min range from the empty string when adding strings. Code that triggered the bug: string res = ""; foreach(a, string segment) { res += segment + "/"; // Adds "" + segment + "/". // res here got min set to 0 (kept from ""). // ... } This caused string_has_null() to return true for the above string res. Fixes [bug 7826]. * (grubba) Strings: Backported STRING_CHECKED_MASK from Pike 8.1. Get rid of magic numeric constant ~15 in string handling. * (kg) release number bumped to 8.0.374 by export.pike * (kg) release number bumped to 8.0.375 by export.pike * (grubba) SSL.Cipher: More ECC-related fixes. * (grubba) SSL.Cipher: Fixed debug output. * (bortas) Moved CHANGE entries for things that didn't make it in time for rel 6. * (grubba) CHANGES: Pike 8.0.370 is Pike 8.0 release 6. Adds header for the next set of entries. * (grubba) SSL [Client]: Support disabling of some ECC curves via Context. Fixes remainder of [bug 7825]. * (grubba) SSL: Survive Context()->ecc_curves being empty. Fixes some more of [bug 7825]. * (grubba) Crypto.ECC: Survive use with old Pike 8.0 binaries. Fixes some of [bug 7825]. * (nilsson) Backported XML serialization charset fix. * (nilsson) Late update about the XML parser fix. * (bortas) release number bumped to 8.0.372 by export.pike * (bortas) release number bumped to 8.0.373 by export.pike * (grubba) MasterObject: Survive older pike 8.0 binaries. DefaultCompilerEnvironment->lock() doesn't exist in older versions of Pike 8.0. Potential fix for such binaries failing with recent master.pike. * (ponost) Fixed the bug (I think) that didn't print out the Pike version and extraction date in the refdoc when Tools.AutoDoc.FLAG_NO_DYNAMIC is set. E.g. fixes the refdoc on the Pike site. Did some more aesthetical fixes to the refdoc, mainly for mobiles. * (ponost) Changed the "hamburger" in mobile mode. Added the image copying stuff in module_modref in the Makefile since that most likely will fail since the image dir in this case i empty. This should be fixed properly, but I know too little about the confusing syntax in the makefile. * (nilsson) Bugfix decoding of UTF-8 encoded BOM. * (grubba) CHANGES: Added note about VCDiff. * (marty) VCDiff.Decoder: Fix argument type for decode_chunk(). * (grubba) Testsuite: Fix warning caused by ::`->() now returning void. * (bortas) release number bumped to 8.0.371 by export.pike * (bortas) release number bumped to 8.0.370 by export.pike * (srb) Moved CHANGES to the correct section. * (bortas) release number bumped to 8.0.369 by export.pike * (bortas) release number bumped to 8.0.368 by export.pike * (srb) Update CHANGES for last pgsql fix. * (srb) pgsql: Reconnect logic was broken, works reliably now. * (marty) Tools.Standalone.make_wxs: Fix argument order to Standards.UUID.make_version3. * (bill) GL: Don't try to include multiple gl.h. MacOSX can have 2 GL installations: native and XQuartz. Prefer native to prevent compile errors. * (grubba) Msql: Fixed some compilation issues. * (grubba) CHANGES: Added some more changes since 8.0.358. * (grubba) Runtime: Fixed multiple argument checking bugs in ::`->() et al. The new-style argument checks were broken in several places. * (grubba) Compiler: Fixed type for F_MAGIC_SET_INDEX. Fixes [LysLysKOM 21920033]. * (grubba) Compiler: Fixed the types for ::_indices() et al. The types now match the documentation. * (nilsson) Added Nettle.version() * (grubba) Stdio: Survive setsockopt(SO_REUSEPORT) failing with EINVAL. The Linux emulation layer in MS Windows 10 behaves this way. Fixes [LysLysKOM 21915643]. * (bill) CHANGES: pmar_install fix * (bill) pmar installer: MD5 hash function has moved. * (jonasw) release number bumped to 8.0.366 by export.pike * (jonasw) release number bumped to 8.0.367 by export.pike * (grubba) Updated to tzdata2015j. * (grubba) Calendar [mkrules]: Updated default set of files to use. * (el) CHANGES: moved json fix into the right place This did not make it into release 5. * (ponost) Fixed quotation of non-highlighted @code blocks * (kg) release number bumped to 8.0.364 by export.pike * (kg) release number bumped to 8.0.365 by export.pike * (grubba) CHANGES: Pike 8.0.358 is Pike 8.0 release 5. Adds header for the next set of entries. Also removes a redundant entry. * (jonasw) release number bumped to 8.0.363 by export.pike * (jonasw) release number bumped to 8.0.362 by export.pike * (nilsson) Don't rebuild json.c all the time. * (el) Updated CHANGELOG * (el) Standards.JSON: fixed makefile dependency The makefile was missing a dependency on the generated source files. * (el) Standards.JSON.decode: fixed handling of some unicode chars The set of legal unicode chars was too narrow. This resulted in unicode chars slightly below the surrogate range to be not accepted as valid in json strings. * (grubba) Tools.Standalone.git_export_autodoc: Install images in modref/images/ too. * (grubba) Tools.Standalone.git_export_autodoc: Include the modref javascript. * (jonasw) release number bumped to 8.0.361 by export.pike * (jonasw) release number bumped to 8.0.360 by export.pike * (ponost) Major redesign of the refdoc. Also removed some obsolete stuff. * (bortas) release number bumped to 8.0.358 by export.pike * (bortas) release number bumped to 8.0.359 by export.pike * (jonasw) release number bumped to 8.0.357 by export.pike * (jonasw) release number bumped to 8.0.356 by export.pike * (nilsson) Check for the correct ECC symbols. * (nilsson) Fixed escape issue. * (nilsson) Fix issues with missing ECC curves. * (nilsson) Fix issues with missing ECC curves. * (anders) release number bumped to 8.0.355 by export.pike * (anders) release number bumped to 8.0.354 by export.pike * (bortas) release number bumped to 8.0.353 by export.pike * (bortas) release number bumped to 8.0.352 by export.pike * (el) Protocols.WebSocket: parse variables early enough The previous commit (3fd041a5500a) parsed the variables after the websocket request callback had been called. This commit calls the websocket request callback after parsing the query string. * (srb) pgsql: Revert portal purge change, race condition was elsewhere. * (srb) pgsql: Fix typo. * (srb) pgsql: Release started statements upon destruct. * (srb) pgsql: Stop at the first non-object portal. * (srb) pgsql: Even wipe the portal list if you start with portal==0. * (bortas) release number bumped to 8.0.351 by export.pike * (bortas) release number bumped to 8.0.350 by export.pike * (nilsson) Updated URLs and year. * (el) CHANGES: updated with websocket changes * (el) Revert "WebSocket: Call either http_cb or ws_cb, not both, at the proper moment." This reverts commit 7ce9c4aeb1723031b438d029aea55f8be336f9d6. * (el) Revert "Protocols.HTTP.Query: parse_variables() accepts zero arguments (again)." This reverts commit 49e98a8e52bf3d4af593cca2274280b6248f80fd. * (el) WebSocket: finish the extension support revert Some changes had not been reverted * (nilsson) Revert EngineIO and SocketIO from 8.0 for now. * (nilsson) Revert EngineIO and SocketIO from 8.0 for now. * (bortas) CHANGES: Optimization fix * (bortas) CHANGES: New timezone data * (grubba) Updated to tzdata2016i. * (jonasw) release number bumped to 8.0.348 by export.pike * (jonasw) release number bumped to 8.0.349 by export.pike * (grubba) release number bumped to 8.0.346 by export.pike * (grubba) release number bumped to 8.0.347 by export.pike * (bortas) release number bumped to 8.0.345 by export.pike * (bortas) release number bumped to 8.0.344 by export.pike * (grubba) CHANGES: Added some more entries about recent changes. * (jonasw) release number bumped to 8.0.343 by export.pike * (jonasw) release number bumped to 8.0.342 by export.pike * (tobij) System: remove OPT_TRY_OPTIMIZE from gethostname() Nowadays, the hostname of a system cannot be considered constant. Especially not if it gets persisted in dumped programs. * (grubba) release number bumped to 8.0.340 by export.pike * (grubba) release number bumped to 8.0.341 by export.pike * (grubba) Testsuite [mapping]: Test mapping type field masks. * (grubba) Mappings: Update the type masks when emptying the mapping. Fixes testsuite failure where two empty mappings weren't equal() due to having non-overlapping type masks. * (grubba) release number bumped to 8.0.338 by export.pike * (grubba) release number bumped to 8.0.339 by export.pike * (marty) map_delete: Match rehash test with new size calculation. This avoids unnecessary rehashing that would occur on each m_delete in a mapping having between x-(x/16)+8 and x entries, where x is any power of 2. * (grubba) Updated to tzdata2016h. * (grubba) encode_value: Use MAPPING_FLAG_NO_SHRINK. The mapping with encoded values is intentionally allocated with medium sized hashtable. Shrinking it due to use of map_delete() is just a waste of cpu. Attempts to improve performance of encode_value() for objects, programs and functions a bit more. * (grubba) Mapping: Added flag MAPPING_FLAG_NO_SHRINK. This is a flag that disables shrinking of the mapping_data hashtable when the number of elements goes below the MIN_LINK_LENGTH threshold. It is intended to be used by code that has mappings with a high rotation of content (ie lots of mixed insertions and deletions). * (grubba) Mapping: Don't rehash in vain. The non-empty mapping hashsize never shrinks below AVG_LINK_LENGTH, so save some cpu cycles by not attempting to shrink it further. Attempts to improve performance of encode_value() for objects, programs and functions. * (srb) WebSocket: Revert out deflate code, leave options, upward compatible with 8.1. * (grubba) release number bumped to 8.0.337 by export.pike * (grubba) release number bumped to 8.0.336 by export.pike * (grubba) Standards.BSON: Fixed circular dependency. This fixes failures loading the module when it had been partially dumped. Fixes [Bug 7806]. * (grubba) MasterObject: RESOLV_DEBUG should now work again. Running indices (or values()) on directory nodes is not a good idea, as that forces them to load all of their content, which is likely to cause strange errors. * (nilsson) Testsuite fixes * (nilsson) Added note about curve change for Nettle. * (nilsson) By default, don't build SECP192R1 and SECP224R1. * (grubba) ADT.Heap: Added low_pop(). This function is analogous to low_peek(). * (anders) release number bumped to 8.0.335 by export.pike * (anders) release number bumped to 8.0.334 by export.pike * (srb) pgsql: Fix race when connections are closing and receive new commands. * (srb) pgsql: Guard against asynchronous destructs. * (srb) pgsql: Drop callbacks for real, code got lost between commit juggling. * (srb) pgsql: Cater for callbacks waiting for mutex while being destructed. * (srb) pgsql: Eliminate hanging selects. * (srb) pgsql: Drop callbacks on destruct of conxion, force short close. * (jonasw) release number bumped to 8.0.332 by export.pike * (jonasw) release number bumped to 8.0.333 by export.pike * (srb) pgsql: Fix portal-race for multiple queries in flight on a single descriptor. * (srb) pgsql: Drop termination lock even on exceptions. Prevent cancelquery() from starting the statemachine. This was responsible for the majority of the exceptions. * (anders) release number bumped to 8.0.331 by export.pike * (anders) release number bumped to 8.0.330 by export.pike * (srb) pgsql: Guard local backend against exceptions. When pgsql objects where destructed forcibly, the pgsql-local backend sometimes died due to attempted accesses in destructed objects. * (anders) release number bumped to 8.0.329 by export.pike * (anders) release number bumped to 8.0.328 by export.pike * (grubba) release number bumped to 8.0.327 by export.pike * (grubba) release number bumped to 8.0.326 by export.pike * (grubba) release number bumped to 8.0.325 by export.pike * (grubba) release number bumped to 8.0.324 by export.pike * (el) Protocols.HTTP.Session: ignore malformed expiry dates in cookies * (grubba) release number bumped to 8.0.323 by export.pike * (grubba) release number bumped to 8.0.322 by export.pike * (srb) Protocols.HTTP.Query: parse_variables() accepts zero arguments (again). * (grubba) release number bumped to 8.0.321 by export.pike * (grubba) release number bumped to 8.0.320 by export.pike * (el) Interpreter: enable gdb_backtraces() even without debug The gdb_backtraces() functions are _very_ useful when debugging crashes, in order to understand which pike code triggered a certain issue. On amd64 they result in around 3K bytes of extra code size. * (srb) Gz: Added lost reference to Gz.clone(). * (srb) WebSocket/EngineIO/SocketIO: Simplify specifying options per packet. * (marty) release number bumped to 8.0.319 by export.pike * (marty) release number bumped to 8.0.318 by export.pike * (grubba) SSL [ECC]: Fixed multiple typos. Fixes broken ECC_CURVES lookup table. * (srb) EngineIO: Drop named inherits. binary frames, make compression overridable. * (srb) WebSocket: Fix missing options checks. * (srb) SocketIO: Streamline Universe API, events run in their own threads. Add onclose(), various cleanups. * (jonasw) release number bumped to 8.0.316 by export.pike * (jonasw) release number bumped to 8.0.317 by export.pike * (srb) EngineIO: Drop named inherits. * (srb) SocketIO: Streamline Universe API, events run in their own threads. * (srb) SocketIO: Support creation of multiple Universes (Yes, we think BIG :-). * (srb) WebSocket: Clear the RSV1 bit after decompression. * (srb) Protocols: Tune default compressionparameters for speed. * (srb) EngineIO: Rename options to lower visibility outside the class. * (srb) EngineIO: Use ADT.Queue get/put in favour of deprecated read/write. * (srb) WebSocket: Support for permessage-deflate compression. * (srb) Gz.deflate: Add clone() method; allows for testing compression. Gz.File: Support setting the window_size in setparams(). Gz: Support Z_BLOCK and Z_FULL_FLUSH. * (srb) EngineIO: Tune deflate compressionparameters. * (srb) EngineIO: Close race during socket upgrades eliminated. * (srb) SocketIO: Use variant to enforce compile-time checks. * (srb) Gz.deflate: Fixed prototype (optional argument: window_size). * (nilsson) Fix for missing SECP curves. * (srb) EngineIO: Close race during destruction. * (srb) EngineIO/SocketIO: Improve documentation. * (grubba) Nettle: Probe for the SECP curves. Some versions of RedHat have censored the weaker curves (secp_192r1 abd secp_224r1), so we need to survive this. Thanks to Martin Bähr <mbaehr+pike@realss.com> for the report. Fixes [LysLysKOM 21863021]. * (srb) EngineIO: Prevent race if destruction and upgrade cross each other. * (srb) EngineIO/SocketIO: Rename API to more closely follow the upstream naming conventions. Add events per namespace: on(), off(). * (tobij) Process.create_process: Be more stern if read() fails with EINTR Turns out you can get interrupted in read() more than 16 times under cerrtain workloads. * (grubba) release number bumped to 8.0.315 by export.pike * (grubba) release number bumped to 8.0.314 by export.pike * (srb) SocketIO/EngineIO: Define PDT() debugging macro. Define DUSERERROR() macro. Throw proper errors with backtraces. Link statically as far as possible. Provide sid and lastrequest members on SocketIO.Server. Pass up ERROR messages from the protocol. * (grubba) release number bumped to 8.0.312 by export.pike * (grubba) release number bumped to 8.0.313 by export.pike * (srb) SocketIO: Make it thread safe, and simplify the API. * (srb) EngineIO: Make it threadsafe(r), and fix a protocol issue with mixed content. * (srb) SocketIO: Extra debugging, fix ack callback. * (grubba) release number bumped to 8.0.311 by export.pike * (grubba) release number bumped to 8.0.310 by export.pike * (grubba) Compiler: Object variables declared as mixed may contain this... Don't reference count direct cyclic references via mixed variables. Fixes [LysLysKOM 21860701]/[Pike mailinglist 14570]. * (srb) SocketIO: Turn off debugging. * (srb) Clean-room basic Socket.IO implementation. Namespaces are supported. Events belong in the next layer. Rooms belong even one layer further up. * (srb) EngineIO: _sprintf() includes protocol revision. Add lastrequest member. Consolidate setting callbacks to a single function. Binary frames have their type in binary sometimes too. Run the close_cb just prior to shutting down the write channel. Use the faster sprintf in favour of Buffers for %c%s type situations. Add accessible close() method. Avoid circular references in id. Close Transport without destructing. Tie up dangling refences when closing is forced. * (grubba) release number bumped to 8.0.309 by export.pike * (grubba) release number bumped to 8.0.308 by export.pike * (marty) Stdio.FakeFile: Improved sendfile compatibility. * (grubba) release number bumped to 8.0.307 by export.pike * (grubba) release number bumped to 8.0.306 by export.pike * (srb) Clean-room Engine.IO implementation. * (srb) WebSocket: Call either http_cb or ws_cb, not both, at the proper moment. * (grubba) release number bumped to 8.0.304 by export.pike * (grubba) release number bumped to 8.0.305 by export.pike * (grubba) Compiler [master]: Improved thread-safety. Cast to program and cast to object should now be thread-safe. Fixes some more of [bug 7783]. * (grubba) release number bumped to 8.0.303 by export.pike * (grubba) release number bumped to 8.0.302 by export.pike * (rosuav) GTK2: Fix return value of get_gravity * (rosuav) Reference correct function in docs * (grubba) SSL.Constants: Fixed typo in name of constant. * (grubba) Compiler [master]: Improved thread-safety. Protect against the same file being compiled concurrently in multiple threads. Fixes some more of [bug 7783]. * (grubba) Compiler: Added CompilerEnvironment()->lock(). This is a class that exposes the compiler internal lock. Fixes some of [bug 7783]. * (srb) WebSocket: Parse query variables. * (jonasw) release number bumped to 8.0.301 by export.pike * (jonasw) release number bumped to 8.0.300 by export.pike * (grubba) Compiler: Fixed broken range optimization. The range operator was lost in the expression A = (A + B)[low..high]; due to a fallthrough. Fixes [bug 7780]. * (anders) release number bumped to 8.0.299 by export.pike * (anders) release number bumped to 8.0.298 by export.pike * (nilsson) Encode array elements sequentially. * (nilsson) Refer to the HeaderParser as Protocols.HTTP.Server.HeaderParser instead. * (anders) release number bumped to 8.0.297 by export.pike * (anders) release number bumped to 8.0.296 by export.pike * (el) CHANGES: some more reordering * (bortas) release number bumped to 8.0.295 by export.pike * (bortas) release number bumped to 8.0.294 by export.pike * (bortas) Reordered the naewest changes a bit. * (grubba) CHANGES: Added some more entries about recent changes. * (grubba) Compiler [cpp]: Fixed stringify operator on strings with quotes. * (bortas) release number bumped to 8.0.293 by export.pike * (bortas) release number bumped to 8.0.292 by export.pike * (el) Protocols.WebSocket: fixed handling of truncated frames When small frames were not fully in the receive buffer, the frame parsing could get confused. * (jonasw) release number bumped to 8.0.291 by export.pike * (jonasw) release number bumped to 8.0.290 by export.pike * (grubba) Standards.EXIF: Improved robustness. Some EXIF files apparently terminate the attribute list chain with an empty block with no next pointer at the end of the EXIF IFD. Fixes [bug 7761]. * (nilsson) Don't support infinite looping in exif data. * (nilsson) Allow for only specific tags to be parsed and the rest ignored. * (nilsson) Reuse the tag parsing loop. * (nilsson) Confine the EXIF parsing in its JFIF segment. * (nilsson) Converted if-train to switch. * (nilsson) Object Orient harder. Keep offset and byteorder internal to the file object. * (nilsson) Abort if the tag type can't be parsed. * (nilsson) Properly parse JPEG headers instead of just brute force scanning first 100 bytes. This avoids false positives or parsing EXIF data in other than APP1 segments, and more importantly finds EXIF data that is further than 100 bytes from the start of the file (e.g. after ICC profile). * (nilsson) Removed trailing spaces. * (anders) release number bumped to 8.0.288 by export.pike * (anders) release number bumped to 8.0.289 by export.pike * (grubba) MasterObject: describe_string() now shows some of the end of the string. * (jonasw) release number bumped to 8.0.286 by export.pike * (jonasw) release number bumped to 8.0.287 by export.pike * (nilsson) Adjust to current _Roxen behavior. We may chose to reverse this later. * (jonasw) release number bumped to 8.0.285 by export.pike * (jonasw) release number bumped to 8.0.284 by export.pike * (anders) _WhiteFish: Fixed wrong signedness and following compile warnings The missing signed declaration caused failure to return hits in some cases of phrase search. * (grubba) Runtime: Improved handling of handle_error() failing at cleaup time. handle_error() throwing errors at cleanup time now generates a "Error in handle_error in master object!" with a meaningful backtrace instead of a "No error recovery context.". * (grubba) Runtime: exit_on_error() should only exit on actual errors. Survive eg THREAD_EXIT being thrown while handling an error. * (grubba) Threads.Condition: Potential fix for double free. In some circumstances there can appear mutex keys that lock mutexes that have already been freed. One potential case creating such mutexkeys is when the mutex has been destructed while being used in a cond wait. Throw an error instead of locking the freed mutex in the above case. * (bortas) release number bumped to 8.0.283 by export.pike * (bortas) release number bumped to 8.0.282 by export.pike * (nilsson) Note about HeaderParser * (nilsson) Added documentation. * (nilsson) Backport changes from 8.1. * (poppanator) Refdoc: Fixed a Pike doc error in Nettle.Sign. * (grubba) Protocols.LDAP: Support passing an SSL.Context to get_connection(). Sometimes the default SSL.Context isn't appropriate, so support passing a custom one along to Protocols.LDAP.client(). * (grubba) CPP: Fixed broken error handling. * (nilsson) Use %d when reading into int, as opposed to INT_TYPE. * (grubba) Updated to tzdata2016f. * (rosuav) GTK: Fix docs typo * (grubba) release number bumped to 8.0.280 by export.pike * (grubba) release number bumped to 8.0.281 by export.pike * (grubba) Crypto.ECC [JWT]: Zero-pad short signature integers. Makes sure that the signature generated by jose_sign() always has the same length for a given Curve. Likely to fix intermittent testsuite failures where jose signatures fail to verify. * (grubba) release number bumped to 8.0.278 by export.pike * (grubba) release number bumped to 8.0.279 by export.pike * (bortas) release number bumped to 8.0.277 by export.pike * (bortas) release number bumped to 8.0.276 by export.pike * (grubba) release number bumped to 8.0.275 by export.pike * (grubba) release number bumped to 8.0.274 by export.pike * (grubba) mkpackage: Reorder the contents somewhat. Make sure that the $EXTRA_PLATFORM_TEST file (if any) comes after the install script in the generated tar file, so that it becomes part of $CONTENTS when the installer is executed. Fixes issue where the $EXTRA_PLATFORM_TEST file wasn't extracted. Fixes [bug 7740] some more. * (grubba) release number bumped to 8.0.273 by export.pike * (grubba) release number bumped to 8.0.272 by export.pike * (grubba) mkpackage: Added EXTRA_PLATFORM_TEST. This is intended to be a script to test that the destination platform has sufficient prerequisites installed. Also makes the install script return the exit code from the installer. Preparation for fixing [bug 7740]. * (nilsson) Updated copyright for unicode database. * (grubba) release number bumped to 8.0.270 by export.pike * (grubba) release number bumped to 8.0.271 by export.pike * (grubba) Roxen: Improved argument checking in make_http_headers(). Ensure that the formatted headers are valid. Fixes the entire class of bugs that [bug 7737] represents. * (wellhardh) release number bumped to 8.0.268 by export.pike * (wellhardh) release number bumped to 8.0.269 by export.pike * (jonasw) release number bumped to 8.0.266 by export.pike * (jonasw) release number bumped to 8.0.267 by export.pike * (grubba) System [NT]: Fixed resolver recursion. Fixes various obscure failures with modules randomly failing to compile. * (grubba) release number bumped to 8.0.264 by export.pike * (grubba) release number bumped to 8.0.265 by export.pike * (grubba) Build [Postgres]: Some more path search diagnostics improvements. * (grubba) release number bumped to 8.0.263 by export.pike * (grubba) release number bumped to 8.0.262 by export.pike * (grubba) Build [Configure]: Hide some irrelevant output. Hides the output from type when it fails to find binaries. * (grubba) Build [Postgres]: Improved diagnostics for the path search. Adds a bit of logging to config.log. This should make it easier to find out why it sometimes doesn't find the include files. * (grubba) Oracle: Support Oracle 12. * (anders) release number bumped to 8.0.260 by export.pike * (anders) release number bumped to 8.0.261 by export.pike * (grubba) Calendar.Timezone: Increase INF_YEAR from 2050 to 2100. The timezone definitions have started containing years beyond 2050 (eg the Egypt rule set has rules up to year 2055). Fixes testsuite failures. * (grubba) Updated to tzdata2016e. * (grubba) combine_path: Survive string_builder without NUL-terminations. The string_builder API no longer maintains NUL-termination of the buffer. This caused combine_path_nt() et al to fail intermittently due to reading past the buffer end. Also adds a corresponding test. Fixes [bug 7723]. * (jonasw) release number bumped to 8.0.259 by export.pike * (jonasw) release number bumped to 8.0.258 by export.pike * (grubba) Testsuite [Standards.URI]: Added some more tests. * (grubba) Standards.URI: Improved handling of non-paths in combine_uri_path(). This avoids prefixing the path with a slash in eg: Standards.URI("<foo@example.com>", "mailto:<bar@example.com>"); * (grubba) Standards.URI: Avoid triggering the DWIM... * (grubba) Standards.URI: Survive base URI's without authority sections. Fixes "Bad argument 1 to sizeof()." for eg Standards.URI("<foo@example.com>", "mailto:<bar@example.com>"); * (anders) release number bumped to 8.0.257 by export.pike * (anders) release number bumped to 8.0.256 by export.pike * (bortas) release number bumped to 8.0.255 by export.pike * (bortas) release number bumped to 8.0.254 by export.pike * (grubba) CHANGES: Updated with some changes since Pike 8.0.240 (release 3). * (grubba) _Roxen.HeaderParser: Inverted meaning of last argument to feed(). This makes the default value follow the usual calling conventions where UNDEFINED is equivalent to a left out value. * (jonasw) release number bumped to 8.0.253 by export.pike * (jonasw) release number bumped to 8.0.252 by export.pike * (holmgren) Documentation breakage When preparing a new Debian package of 8.0.240, I noticed that some documentation disappeared, apparently due to the following. The error in Nettle.Sign is already corrected but not the others, AFAICT, and I'm guessing that @exp should be @expr. Patch below, which I home someone can apply right away. ERROR: <Invalid error container: Tools.AutoDoc.AutoDocError(SourcePosition(File: /build/pike8.0-8.0.240/src/modules/Gmp/mpz_glue.c, lines: 668..668), "DocParser", "@exp cannot be used like this: @exp{ ... @}")> ERROR: <Invalid error container: Tools.AutoDoc.AutoDocError(SourcePosition(File: /build/pike8.0-8.0.240/lib/modules/__builtin.pmod/Nettle.pmod/Sign.pike, lines: 102..102), "DocParser", "@item is not allowed inside @array (allowed children are: @elem)")> ERROR: <Invalid error container: Tools.AutoDoc.AutoDocError(SourcePosition(File: /build/pike8.0-8.0.240/lib/modules/Crypto.pmod/ECC.pmod, lines: 286..286), "DocParser", "@item is not allowed inside @array (allowed children are: @elem)")> ERROR: <Invalid error container: Tools.AutoDoc.AutoDocError(SourcePosition(File: /build/pike8.0-8.0.240/lib/modules/Crypto.pmod/RSA.pmod, lines: 368..368), "DocParser", "@item is not allowed inside @array (allowed children are: @elem)")> * (nilsson) Fixed a warning. * (jonasw) release number bumped to 8.0.251 by export.pike * (jonasw) release number bumped to 8.0.250 by export.pike * (gmalachowski) Allow preservation of case in headers in HeaderParser. This is needed when acting as a proxy sine some servers treat headers as case-sensitive. * (grubba) Runtime [Multisets]: Fixed assertion failure. Lookup with objects with lfun::`<() et al in non-empty multisets containing non-comparable items (not objects or functions) could cause assertion failures. * (anders) release number bumped to 8.0.249 by export.pike * (anders) release number bumped to 8.0.248 by export.pike * (anders) release number bumped to 8.0.247 by export.pike * (anders) release number bumped to 8.0.246 by export.pike * (agehall) Better typing in functionn signatures. Patch from frigolit@frigolit.net * (agehall) Added client mode for WebSocket module. * (agehall) Added WebSocket ports to the known port numbers. * (grubba) release number bumped to 8.0.245 by export.pike * (grubba) release number bumped to 8.0.244 by export.pike * (nilsson) Fix error message. * (grubba) Filesystem.Monitor: Potential fix for [bug 7684]. Avoid recursive mutex locks from destroy() by only locking on explicit destruct(). * (bortas) Start changelog for release 4 * (grubba) Optimizer: Fixed special case whenn optimizing logical and. * (grubba) Optimizer: Fixed special case when optimizing logical or. * (grubba) Filesystem.Monitor: Fixed typo in FILESYSTEM_MONITOR_DEBUG. * (grubba) Filesystem.Monitor: Don't propagate all errors. Errors thrown by check() on deletion could cause other deletion notifications to be lost, as the errors were rethrown before the rest of the notifications were handled. Those errors are now instead sent directly to the master. * (grubba) Filesystem.Monitor: Improved FILESYSTEM_MONITOR_DEBUG diagnostics. * (grubba) Filexyxtem.Monitor: Got rid of update_monitor(). The function didn't work, and if it had worked it would've messed with the internal state of monitors and caused stuff to break. * (grubba) Filesystem.Monitor: Improved error handling somewhat. Errors were hidden in some cases. * (grubba) Parser.RCS: Added feature detection constant "max_revisions_supported". * (marty) Parser.RCS: Bugfix in create(). * (marty) Parser.RCS: Add optional max_revisions parameter to the API. * (wellhardh) release number bumped to 8.0.242 by export.pike * (wellhardh) release number bumped to 8.0.243 by export.pike * (bortas) release number bumped to 8.0.241 by export.pike * (bortas) release number bumped to 8.0.240 by export.pike * (grubba) CHANGES: Added note about JOSE. * (nilsson) Noted some SSL fixes. * (nilsson) Don't pretend jwa is a variable, to be consistent with name(), digest_size() etc. * (bortas) release number bumped to 8.0.238 by export.pike * (bortas) release number bumped to 8.0.239 by export.pike * (bortas) More CHANGES. * (grubba) __builtin.Nettle.MAC: Fixed some warnings. * (grubba) Crypto.None: Added the plaintext algorithm. * (grubba) Crypto.AE: Added class. * (grubba) Nettle: Added __builtin.Nettle.AE. This is Authenticated Encryption without Authenticated Data. * (grubba) __builtin.Nettle.Hash [HMAC]: Somewhat stricter type for `jwa(). Also adds some documentation. * (grubba) __builtin.Nettle.MAC: Added support for HMAC-based JWS signatures. * (grubba) Documentation [__builtin.Nettle.Sign]: Improved JOSE doc. * (nilsson) Implemented HMAC jwa with a little less code. * (wellhardh) release number bumped to 8.0.237 by export.pike * (wellhardh) release number bumped to 8.0.236 by export.pike * (grubba) __builtin.Nettle.Hash [HMAC]: Implement init(). The init() function in the HMAC State object now actually works as documented. * (el) cpp: correctly handle unterminated strings in macro arguments Previously, when passing an unterminated string as an argument to a macro with 'stringify'-flag, the code would read past the end of the string. This could result in out of bounds memory access. * (wellhardh) release number bumped to 8.0.235 by export.pike * (wellhardh) release number bumped to 8.0.234 by export.pike * (grubba) Inotify: Fixed typo in previous commit. * (grubba) Inotify: Simulate events for directory content at watch creation. This reduces the race window for tracking directory content. It also simplifies code that does such tracking. Also updates Filesystem.Monitor.basic accordingly. * (grubba) Documentation [Crypto.RSA]: Fixed cut and paste error. * (grubba) __builtin.Nettle.Sign: Added JOSE default implementation. Fixes some warnings in SSL.Context. Adds default implementation of jose_{sign,decode}() for signature algorithms that JOSE doesn't support (eg Crypto.DSA). * (grubba) Web: Added {en,de}code_jwt(). Fixes most of [bug 7671]. * (nilsson) Test HMAC jwa constants. * (nilsson) SHA256 is assumed due to Nettle version requirements. SHA384 and SHA512 are not. * (grubba) Testsuite [Crypto]: Added some tests of JOSE JWS. Test vectors taken from RFC 7515 A.2.1 and A.3.1. * (grubba) Crypto.ECC.Curve.ECDSA: Added support for jose_{sign,decode}(). * (grubba) Crypto.RSA: Some API changes for jose_sign(). Changed argument order and added defaults for the hash algorithm. * (grubba) Documentation [RSA]: Minor doc change for jose_decode(). * (grubba) Crypto.RSA: Add some support for JOSE JWS signatures. * (grubba) MIME: Improved types for {en,de}code_base64url(). * (grubba) Crypto: Added algorithm identifiers from JWA (RFC 7518:3.1). Fixes some of [bug 7671]. * (grubba) Compiler: Fixed extraneous entries on type mark stack. pop_type() restores the stack mark when done (which often isn't what you want or expect...). * (grubba) Apple.Keychain: Don't validate the certificates here. Many of the certificates in the default keychain files are expired or unsuitable for use with TLS, but may be useful for other stuff, so leave it to the user to perform validation. Also improves the parser and diagnostics somewhat. * (grubba) Standards.X509: Added X509_VALIDATION_DEBUG. The above macro is intended to be used to debug why certificates fail to validate, without drowning in other debug. Also adds some more stuff to TBSCertificate()->_sprintf(). * (grubba) Standards.X509 [MacOS X]: Try a few more keychain files. It seems the files "X509Anchors" and "X509Certificates" are obsolete, and have been replaced by "SystemRootCertificates.keychain" and "SystemCACertificates.keychain". Also makes sure to validate the certificates from Apple.Keychain. * (ponost) Web.Api.Api: Fixed so that POST actions actually works. It now also tries to detect if a file is being uploaded. This works by looking at the parameter values and if a value contains "filename=..." a multipart message will be created. So in short this would look something like: string file = "the-file.png"; string data = Stdio.read_file(file); mapping params = ([ "the_file_param" : "filename=" + file ]); api->post("method/endpoint", params, data); * (grubba) Standards.X509: load_authorities() now knows about ca-bundle.crt. The certificate bundle file seems to have been split up and had a change of names in RHEL 7. Fixes validation of SSL certificates on RHEL 7. * (grubba) Standards.X509: load_authorities() now knows about Apple.Keychain. Improves likelyhood that the SSL root certificates will be found on MacOS X. * (grubba) Apple.Keychain: Added initial parser of Keychain files. CAVEAT: This is a VERY limited implementation, and is only intended to be used to extract root certificates from "/Library/Keychains/X509Anchors". * (wellhardh) release number bumped to 8.0.233 by export.pike * (wellhardh) release number bumped to 8.0.232 by export.pike * (marcus) Tools.Shoot: Add an optional prepare function to create test vectors This removes the need to put huge constants into the test program, greatly reducing the memory requirements to run the benchmarks. * (nilsson) No need to call cast_to_int here. * (nilsson) Deprecated the cast_to_* functions in documentation also, and not just types. * (nilsson) Fix typo * (grubba) release number bumped to 8.0.231 by export.pike * (grubba) release number bumped to 8.0.230 by export.pike * (nilsson) Don't use ECC whith unknown point format. * (nilsson) Null ciphers are still allowed, just not SSL_null_with_null_null. * (nilsson) Null ciphers are still allowed, just not SSL_null_with_null_null. * (stewa) release number bumped to 8.0.229 by export.pike * (stewa) release number bumped to 8.0.228 by export.pike * (nilsson) Fix reversed tests. * (grubba) Build [Parser.XML]: Use correct storage class. * (marcus) GTK1: Define G_INLINE_FUNC as static inline if it works This is a workaround for glib 1.2 being incompatible with newer versions of GCC. The default definition of G_INLINE_FUNC is "extern inline" if the compiler is GCC. However, GCC now treats "extern inline" according to the C99 definition, and no longer in the old custom way. Thus "static inline" needs to be used on all compilers that support it, including GCC. See also: https://bugzilla.gnome.org/show_bug.cgi?id=315437 * (grubba) Updated to tzdata2016c. * (grubba) Build [Linux]: Don't link with libbind. Libbind is obsolete since many years back, and contains symbols that conflict with libc. Fixes use of getaddrinfo() on FC4. * (wellhardh) release number bumped to 8.0.227 by export.pike * (wellhardh) release number bumped to 8.0.226 by export.pike * (ponost) Web.Api.Api: When running async the requests gets stored so that they can be forcefully closed if something goes wrong. The public method "close_connections()" will close all open connections. * (bill) SSL.File: check that stream exists before attempting to remove callbacks. * (ponost) Web.Api.Api: If running async and the response isn't 200 the callback is now called anyway. If the response status is 301 or 302 the response headers is sent to the callback, otherwise 0 is send to the callback which is the same as if an error occured (this will happen if the request timed out or instance). * (grubba) release number bumped to 8.0.224 by export.pike * (grubba) release number bumped to 8.0.225 by export.pike * (bortas) CHANGES: Fix typo. * (bortas) release number bumped to 8.0.222 by export.pike * (bortas) release number bumped to 8.0.223 by export.pike * (grubba) release number bumped to 8.0.221 by export.pike * (grubba) release number bumped to 8.0.220 by export.pike * (nilsson) More bugfixes. * (grubba) CHANGES: Added some more entries. * (wellhardh) release number bumped to 8.0.218 by export.pike * (wellhardh) release number bumped to 8.0.219 by export.pike * (rosuav) IRC: Fix cascaded failure in error handling * (grubba) Compiler [ia32]: Align the stack on a 16-byte boundary. Fixes SIGSEGV on calling functions that use SSE2 opcodes. * (grubba) Sql.sql_array_result: Fixed multiple issues. Some of the functions in Sql.sql_result assemed that they were in Sql.sql_object_result. This broke eg next_result(). * (grubba) CHANGES: Some changes since Pike 8.0.182 (rel 2). * (srb) pgsql: Ensure queries have been fully started before closing the fd. * (grubba) Runtime [ia32]: low_hashmem() needs to support small nbytes. When compiling --with-abi=32 low_hashmem_ia32_crc32() may get called with an nbytes value of 16 (when hashing the opcode table). Fixes fatal error in the above case. * (grubba) Build [Configure]: Second attempt at fixing --with-abi. The previous patch broke the AC_CHECK_SIZEOF-tests when using a non-default ABI. * (grubba) Build [Configure]: Strip arguments from REALCC et al. Fixes compiler propagation to sub-configures when eg compiling --with-abi. * (bortas) Thread.Farm: Fix documentation typo. * (grubba) Compiler: Work around for broken 32-bit code generator in gcc 4.8.5. Gcc 4.8.5 in 32-bit mode compiled the initialization loop for the byte code relabel section to xmms opcodes that caused a SIGSEGV. Assume 2-complement integers and use memset to initialize instead. * (grubba) Stdio: Survive getaddrinfo() not liking decimal services. Fixes failures like "Invalid service '48008'" on eg FC4 when attempting to connect to a port. Also reduces buffer size from ~30 times needed to just ~3 times. * (erik) release number bumped to 8.0.217 by export.pike * (erik) release number bumped to 8.0.216 by export.pike * (grubba) Compiler: Survive alias getting replaced by constant in second pass. * (unknown user) Better filtering of directory paths before instantiating a monitor from a subdirectory. This likely fixes a backtrace seen in check_monitor() where the caller assumed a new monitor object was created. Also harden check_monitor() from such invalid dereferencing. * (erik) release number bumped to 8.0.215 by export.pike * (erik) release number bumped to 8.0.214 by export.pike * (unknown user) Reporting of deleted subdirectories failed for accelerated monitors since adjust_monitor() for submonitors was a no-op. We now check them immediately. * (unknown user) Fix bit flags logic error. * (erik) release number bumped to 8.0.213 by export.pike * (erik) release number bumped to 8.0.212 by export.pike * (unknown user) Test for System.FSEvents.EventStream instead since System.FSEvents is always present. * (jonasw) release number bumped to 8.0.211 by export.pike * (jonasw) release number bumped to 8.0.210 by export.pike * (unknown user) Report feature flags for System.FSEvents and System.Inotify. * (unknown user) Need to register EventStream-accelerated monitors in register_path() before calling check() since that may trigger callbacks to code which expects to find all monitors there. (Same thing was already done in the Inotify class.) * (grubba) Runtime: Unfinished programs may need their parents. When indexing out a program constant, make it into a function pointer also if the resulting program hasn't finished compiling. Thanks to Per Cederqvist <cederp@opera.com> for the report and test case. Fixes [bug 7664]. * (el) Protocols.HTTP.Query: handle empty responses in more places The previous commit did not handle empty responses in async_fetch with timeout or in data(). * (el) Protocols.HTTP.Query: correctly handle response length According to the RFC, the content-length header field ought to be used only if the status code is not 1xx, 204 or 304; the response is not to a HEAD request and the transfer encoding is identity. This is a first attempt to improve the handling of some cases, in particular it lets Query correctly handle the special status codes. * (el) Protocols.HTTP.Query: always send content-length While sending a content-length header is optional for empty requests, some http servers (lighthttpd) always respond with an 411 error code if the content-length header is missing. * (grubba) release number bumped to 8.0.209 by export.pike * (grubba) release number bumped to 8.0.208 by export.pike * (grubba) Odbc: Improved scanning for header file directory. The header file directory scan didn't search for any standard ODBC header files... * (grubba) release number bumped to 8.0.207 by export.pike * (grubba) release number bumped to 8.0.206 by export.pike * (grubba) release number bumped to 8.0.205 by export.pike * (grubba) release number bumped to 8.0.204 by export.pike * (grubba) Build [Java]: Find <jni.h> on current Solaris. Current Solaris hides <jni.h> in /usr/jdk/instances/[version]/include with an (indirect) symlink to the latest version named /usr/jdk/latest. * (grubba) release number bumped to 8.0.203 by export.pike * (grubba) release number bumped to 8.0.202 by export.pike * (rosuav) Fix spelling of composite[d]_changed signal * (rosuav) Fix GTK2.SourceBuffer undo/redo signal names * (grubba) release number bumped to 8.0.200 by export.pike * (grubba) release number bumped to 8.0.201 by export.pike * (grubba) release number bumped to 8.0.199 by export.pike * (grubba) release number bumped to 8.0.198 by export.pike * (erik) release number bumped to 8.0.197 by export.pike * (erik) release number bumped to 8.0.196 by export.pike * (grubba) release number bumped to 8.0.195 by export.pike * (grubba) release number bumped to 8.0.194 by export.pike * (grubba) Build: Try using readelf(1) from GNU binutils as well. * (grubba) Build [Solaris]: Improved library ABI check. The symbol table being 32-bit could confuse the library ABI check into believing that the archive had a 32-bit ABI. Also adds some extra checks with elffile and elfdump. Fixes issues configuring on Solaris 11/amd64, where library directories could get lost. * (grubba) release number bumped to 8.0.193 by export.pike * (grubba) release number bumped to 8.0.192 by export.pike * (nilsson) Fixed iterator _sizeof * (grubba) release number bumped to 8.0.191 by export.pike * (grubba) release number bumped to 8.0.190 by export.pike * (grubba) Filesystem.Monitor: Fixed handling of delayed delete notification. * (grubba) Filesystem.Monitor: Fix stable_data_change() for accellerated monitors. The stable_data_change() notification was lost with the accellerated monitors if it was on a preexisting file that was younger than the stable time. This adds a paranoia call_out loop to avoid losing track of the event. * (grubba) release number bumped to 8.0.189 by export.pike * (grubba) release number bumped to 8.0.188 by export.pike * (ph) Addressed code review issues * (simonb) TURBO2-1409: Allow extra intermediates in certificate chains Some servers send extraneous intermediate certificates that aren't used to validate the leaf certificate. The Pike implementation of this was quite to the letter of RFC5280/5246, which does say that each cert has to be signed by the next certificate in the chain. Only require that the certificates are in order, but ignore extra certificates we didn't need to verify the leaf certificate. * (ph) Ignore elliptic_curves extension in ServerHello. It is never supposed to be there, but some servers do send it. * (erik) release number bumped to 8.0.186 by export.pike * (erik) release number bumped to 8.0.187 by export.pike * (grubba) SSL: Prefer AEAD suites to CBC suites of double the key length. This makes eg AES128/GCM to be preferred to AES256/CBC. * (grubba) GTK2: Use safe_apply_svalue() instead of apply_svalue() for now. Throwing Pike-exceptions through the GTK layer is not a good idea... FIXME: The exceptions probably instead ought to be converted to the GTK equivalent and back. Fixes [LysLysKOM 21653937]. * (grubba) Roxen: Added decoding of surrogates to http_decode_string(). Some javascript code sends %u-encoded surrogate pairs. * (grubba) ADT.Heap: Added low_peek(). * (erik) release number bumped to 8.0.185 by export.pike * (erik) release number bumped to 8.0.184 by export.pike * (bortas) release number bumped to 8.0.182 by export.pike * (bortas) release number bumped to 8.0.183 by export.pike * (grubba) GC: Fixed typo in type declaration for gc(). It should now accept being called without arguments again. Thanks to Jeff Hungerford <hungerf3-roxen3@house.ofdoom.com> for the report. Fixes [Pike mailinglist 14512]/[LysLysKOM 21651115]. * (grubba) CHANGES [GC]: Added some notes about the handling of weak references. * (grubba) GC [mappings]: Added do_gc_weak_mapping(). It is now possible to request a quick gc of a mapping with weak references. * (grubba) CHANGES: Updated with most changes since 8.0.164. Also adds note about the compiler no longer disabling all other threads. * (srb) Update CHANGES documenting the recent pgsql bugfixes. * (srb) pgsql: Move real close into the destructor. Also destruct the conxion object directly, to make sure that the filedescriptors actually get closed. * (srb) pgsql: Zero connection object only in the main thread. * (srb) pgsql: Sharpen and weed termination mutexes. * (bortas) release number bumped to 8.0.180 by export.pike * (bortas) release number bumped to 8.0.181 by export.pike * (marty) release number bumped to 8.0.178 by export.pike * (marty) release number bumped to 8.0.179 by export.pike * (marty) ADT.Heap: Update pos of bumped entry in remove(). This fixes an inconsistency issue that would sometimes arise after remove operations. * (srb) Revert "pgsql: Kludge around clone race in Pike core." This reverts commit f339d7f8c91c995295fd74d52d95a6518b3a61fa. The kludge should not be needed anymore due to a checked in fix in the Pike compiler. * (grubba) Runtime: Potential race condition fix. Wait for the compiler to complete before complaining about attempts to clone unfinished programs. Thanks to Jeff Hungerford <hungerf3-roxen3@house.ofdoom.com> for the report. Potential fix for [Pike mailinglist 14495]/[LysLysKOM 21645192] * (grubba) Image.Colortable: Use explicit casts. Use explicit casts from unsigned char to int to avoid warnings about space factor overflows. Fixes [CID 742699], [CID 742700] and [CID 742701]. * (srb) pgsql: Delay close always to avoid thread races in destructed objects. * (srb) pgsql: Kludge around clone race in Pike core. As reported by Jeff Hungerford: When there is: - No connection at present. - Two or more threads try to open an initial connection to the database simultaneously. You can trigger this: Attempting to clone an unfinished program /usr/local/pike/8.0.175/lib/modules/Sql.pmod/Sql.pike:342: Sql.Sql()->create("localhost:5432","foo","bar","CENSORED",UNDEFINED) This could be caused by a race in the Pike-core class-cloning code which is not racefree when two threads try to instantiate the same object at roughly the same instant. This patch attempts a workaround to detect the race and loop until it finishes without problems. It would be better if this could be fixed in the Pike-core. * (grubba) Compiler: Fixed potential NULL-deref. Fixes [CID 742541] and [CID 742542]. * (grubba) Stdio: Fixed support for second argument to set_buffer(). Fixes [CID 1353480]. * (srb) pgsql: Sync destruction of objects with natural thread termination. * (grubba) Multiset.Iterator: Fixed potential NULL-dereference. Fixes [CID 742519]. * (grubba) Compiler: Fixed potential NULL-deref on broken cast. Fixes [CID 742529]. * (stewa) release number bumped to 8.0.176 by export.pike * (stewa) release number bumped to 8.0.177 by export.pike * (grubba) Testsuite [Nettle]: Updated vectors for SSL3_* to FIPS 202. Fixes a few testsuite failures with recent Nettle. * (rosuav) Permit GTK2.TextIter objects to be passed as signal parameters * (rosuav) GTK2: Fix method name linkage * (rosuav) GTK2: Fix typo * (grubba) Testsuite [Crypto]: Updated vectors for SSL3_* to FIPS 202. Fixes quite a few testsuite failures with recent Nettle. * (srb) pgsql: Callback race with object destruction. * (srb) pgsql: Catch destruct races. * (srb) pgsql: Do not rethrow MAGICTERMINATE. * (srb) pgsql: Check for destructed object first, before examining members. * (srb) pgsql: Shortcut to close descriptors when in a destructed object. * (srb) pgsql: Simplify code. * (srb) pgsql: Expedite filedescriptor close when leaving scope. * (srb) Sql: Chain explicit destructs to the low-level driver. * (srb) pgsql: Protect against execution in destructed objects. * (srb) pgsql: Improve error messages. * (srb) pgsql: Terminate threads when connections are idle. * (marty) release number bumped to 8.0.175 by export.pike * (marty) release number bumped to 8.0.174 by export.pike * (marty) SSL.File: zero stream callbacks in ssl_close_callback. This breaks circularities that caused fds to be left open until the next GC run under some circumstances. * (grubba) Standards.URI: Support userinfo containing '@'. It is not uncommon for the user string to be an email adress... * (wellhardh) release number bumped to 8.0.172 by export.pike * (wellhardh) release number bumped to 8.0.173 by export.pike * (grubba) Filesystem.Monitor: Improved thread safety. ADT.Heap is NOT thread-safe (especially not pop()), so use a Thread.Mutex to control access to the monitor_queue. Potential fix for [bug 7644] (where the top element becomes zero instead of an ADT.Heap()->Element). * (grubba) release number bumped to 8.0.171 by export.pike * (grubba) release number bumped to 8.0.170 by export.pike * (agehall) conn is sometimes undefined when internal_poll() is called causing future attempts to schedule the poll to not do anything. * (wellhardh) release number bumped to 8.0.169 by export.pike * (wellhardh) release number bumped to 8.0.168 by export.pike * (grubba) CHANGES: Added note about fixes for Solaris 11. * (grubba) Build [Nettle]: Survive without <nettle/knuth-lfib.h>. We don't use anything from this file, and it isn't installed by the Solaris 11 package of nettle (library/security/nettle@3.1.1-5.12.0.0.0.90.0). Fixes building on Solaris 11. * (grubba) Build [Freetype]: Fix use of sigsetjmp. The freetype header files include <setjmp.h>, but aren't sufficiently POSIX/XOPEN to enable the typedefs for sigjmp_buf on Solaris 11. Include global.h early to ensure that the required magic defines are enabled before the system header files are included. Fixes build on Solaris 11. * (nilsson) Bugfixed example code. Added header for new changes. * (grubba) Filesystem.Monitor [Inotify]: Don't attempt inotify on nonexisting paths. Inotify will always fail if the monitored path doesn't exist. Fixes complaint about attempting to monitor nonexistent paths. * (marty) release number bumped to 8.0.166 by export.pike * (marty) release number bumped to 8.0.167 by export.pike * (grubba) Build [Gmp]: Try using pkg-config to find gmp and mpfr. Solaris 11 installs the header files for gmp and mpfr in sub- directories of /usr/include/, but it also installs corresponding pkg-config files. Use pkg-config to adjust the search paths so that the following configure tests can find the header files. * (grubba) Filesystem.Monitor: Improved robustness. It seems ADT.Heap()->peek() sometimes can index the NULL value (cf [bug 7644]). The most likely cause is that the last element of the heap was removed by a different thread during the call. Inhibit propagation of the error to the caller. Work around for [bug 7644]. * (grubba) ADT.Heap: Added _sprintf(). This should make it easier to find the cause for [bug 7644]. * (bortas) release number bumped to 8.0.164 by export.pike * (bortas) release number bumped to 8.0.165 by export.pike * (bortas) Revert "Added the Markdown module and the standalone pike_to_html.pike from 8.1." This reverts commit 2706a62c3c72b296a0c77b418f1e186c682c7ac5. * (grubba) Filesystem.Monitor [Inotify]: Improved support for symlinked directories. Directories reached via symlinks need to be monitored too... * (grubba) Filesystem.Monitor [Inotify]: Reduce the number of complaints. The inotify kernel subsystem has a maximum number of concurrent watchpoints (controlled via /proc/sys/fs/inotify/max_user_watches). With the default at just 8192 it is not hard to run out of watchpoints, at which point the subsystem will start to complain. With this change only every ~100th failure of this type will be logged to stderr. * (grubba) Filesystem.Monitor [Inotify]: Always monitor explicitly added paths. Fixes issue with symlinked root directories not being monitored. * (bortas) release number bumped to 8.0.162 by export.pike * (bortas) release number bumped to 8.0.163 by export.pike * (grubba) Updated to tzdata2016a. * (el) Build: make precompile dependencies optional The in-tree module makefiles are also used when building external modules. In that case, the precompiler and corresponding stamp file are missing. Use the wildcard command to make these dependencies optional. * (grubba) Oracle: Use Sql.sql_array_result and NOT sql.sql_result. Sql.sql_result is a base class, and no longer implements all the actual result handling. * (marty) release number bumped to 8.0.160 by export.pike * (marty) release number bumped to 8.0.161 by export.pike * (grubba) Filesystem.Monitor [Inotify]: Don't reinstate deleted MF_AUTO. In some circumstances an already removed MF_AUTO InotifyMonitor could be reinstated when the monitor was switched to polling mode. * (wellhardh) release number bumped to 8.0.158 by export.pike * (wellhardh) release number bumped to 8.0.159 by export.pike * (nilsson) Fixed SQLite with non-ascii paths. * (marty) release number bumped to 8.0.156 by export.pike * (marty) release number bumped to 8.0.157 by export.pike * (grubba) Documentation [HTTPAccept]: Fix all references to HTTPLoop. HTTPLoop installs itself as HTTPAccept, so fix the documentation to reflect this. Thanks to Eiichiro ITANI <emu@ceres.dti.ne.jp> for the report. * (unknown user) Make glob expansion result stable and use a scoring strategy to prioritize words when expansion result is capped (typically 100 in internal use). * (nilsson) release number bumped to 8.0.155 by export.pike * (nilsson) release number bumped to 8.0.154 by export.pike * (grubba) Nettle: Inhibit build of SHA3 submodule with old Nettle. Old (prior to 3.2) Nettle had a broken implementation of SHA3. * (grubba) Protocols.HTTP: do_async_method() no longer resets the timeouts. Setting the query timeouts to something else than the default (120 seconds) should now work again. Fixes some of [bug 7635]. * (marty) release number bumped to 8.0.153 by export.pike * (marty) release number bumped to 8.0.152 by export.pike * (unknown user) Add flag for optional auto-globbing words (outside of phrases) in search queries. * (marty) release number bumped to 8.0.151 by export.pike * (marty) release number bumped to 8.0.150 by export.pike * (rosuav) Update GTK2.Notebook docos * (rosuav) Update GTK2 docos * (rosuav) Document the way to remove GTK2.Entry icons * (rosuav) GTK2: Break out G_TYPE_ENUM handling to a special case. Actual enumerations are subtypes of enum, so the equality check in the generic handler doesn't catch them. Prevents assertion failures in signal handlers. * (rosuav) Clean up whitespace in advance of cherry-pick * (erik) release number bumped to 8.0.149 by export.pike * (erik) release number bumped to 8.0.148 by export.pike * (ponost) Added the posibility to define the HTTP request timeout in async queries. Fixed a typo in pike_to_html.pike * (ponost) Added the Markdown module and the standalone pike_to_html.pike from 8.1. * (nilsson) Fix an issue where EC client certificate would overwrite EC KE on server side. * (jonnyr) Make the Pike SSL code work with APNS push server which uses client certificates. * (kevinor) TURBO2-1398: Allow disabling of wrapping of describe_backtrace output. The wrapping can add lots of spaces to the end of lines to pad them, resulting in enormous backtrace files in some circumstances. * (ph) F_LOOP: Use <= 0, not == 0 * (el) Protocols.Websocket.Request: call ::parse_request Call ::parse_request() for WebSocket requests, too. parse_request parses not_query and other information, which is useful to have in WebSocket requests, aswell. * (el) cpp: fix out of bounds read * (grubba) Compiler: Fixed internal compiler error with implicit lambdas. Implicit lambdas do not have a declared return type, so use the push_compiler_frame variant for lambdas. Thanks to Chris Angelico <rosuav@gmail.com> for the report and test case. Fixes [bug 7616]/[LysLysKOM 21578942]. * (grubba) Odbc: Corrected symbol name in header file. The second argument to push_sqlwchar() is the length in characters, not the number of bytes. * (nilsson) Updated year to 2016. * (nilsson) Added #pike * (grubba) CHANGES: Fixed some typos. * (rosuav) Fix typos in CHANGES * (bortas) release number bumped to 8.0.146 by export.pike * (bortas) release number bumped to 8.0.147 by export.pike * (bortas) Changes * (grubba) Tools.Standalone.precompile: Fixed storage for *_program_fun_num. The storage modifier used for *_program_fun_num is now controlled by DEFAULT_CMOD_STORAGE. * (srb) pgsql: Clear out cruft and fix reconnect reporting. * (srb) pgsql: Tear down result objects if the connection breaks. * (srb) pgsql: Clear all callbacks on destruct. * (nilsson) Fixed DH validation performance bugs. * (grubba) SSL: Backported client cert fix from Pike 8.1. Thanks to Jonny Rein Eriksen <jonnyr@opera.com> for the report. * (marty) release number bumped to 8.0.145 by export.pike * (marty) release number bumped to 8.0.144 by export.pike * (marty) EXIF: Avoid trying to read a negative amount of ascii characters. Some EXIF ascii tags apparently have a zero tag_count value. * (marty) release number bumped to 8.0.143 by export.pike * (marty) release number bumped to 8.0.142 by export.pike * (nilsson) release number bumped to 8.0.140 by export.pike * (nilsson) release number bumped to 8.0.141 by export.pike * (srb) pgsql: waitforauthready sometimes has been destructed already. * (marty) Filesystem.Monitor: Always perform EventStream operations from the backend thread. Paths added from a non-backend thread would not trigger any events, because only the backend thread monitors its CFRunLoop event stuff. * (wellhardh) release number bumped to 8.0.139 by export.pike * (wellhardh) release number bumped to 8.0.138 by export.pike * (ph) Avoid having tons of "unused variable" warnings in all .cmod code. At least to some extent. It would probably be much better never to have any *_inh_num around, and just, when the code needs it, use the svalue directly. * (srb) pgsql: Avoid race condition for parallel queries, do not reset counters. * (srb) pgsql: Account for serverside closed connections. * (grubba) Threads: Complain about attempts to start invalid thread functions. Thanks to Stephen R. van den Berg <srb@cuci.nl> for the report. Fixes [LysLysKOM 21546354]. * (wellhardh) release number bumped to 8.0.137 by export.pike * (wellhardh) release number bumped to 8.0.136 by export.pike * (grubba) Toold.Standalone.check_http: Some certificate handling fixes. * (srb) strerror() cosmetic fix. * (srb) pgsql: Avoid race during failed connects. * (srb) pgsql: Some warnings are fatal and require a reconnect. * (srb) pgsql: Terminate threads when connections are idle. * (grubba) SSL.Connection: Fixed some warnings. * (grubba) Protocols.HTTP: Set the status code on async failure. * (grubba) SSL.Connection: Code clean up and improved robustness. * (grubba) SSL.Connection: Perform a case-insensitive hostname check. * (grubba) SSL.Connection: Unify the server_name check with cert check. * (grubba) SSL.Connection: Fixed typo. * (grubba) Protocols.HTTP: Verify the https certificate hostname when enabled. * (grubba) SSL.Connection: Added server_name validation against cert. cert_data->server_name_verified will be set to 1 on success, 0 on failure, and be UNDEFINED on unknown (ie server_name not set). * (grubba) SSL: Support compression on the client. For some reason this piece of code was missing. * (nilsson) Added description. * (nilsson) Fix leaked constants. * (nilsson) Stop supporting compression by default. * (grubba) System: Added workaround in get_inet_addr() for bugs in MacOS X. The call getaddrinfo("hostname", "0", AI_NUMERICSERV, &res) causes a NULL-dereference in libsystem_info.dylib:mdns_addrinfo(). Apple bug radar 13058317. Potential fix for [bug 7599]. * (grubba) SSL.Context: TLS 1.1 and before don't support hashes other than md5 and sha1. Improves interoperation with some versions of OpenSSL. * (wellhardh) release number bumped to 8.0.134 by export.pike * (wellhardh) release number bumped to 8.0.135 by export.pike * (grubba) Parser._RCS.tokenize: Minor code cleanup. * (grubba) Parser._RCS.tokenize: Use {BEGIN,DO,END}_AGGREGATE_ARRAY(). tokenize() could run out of Pike-stack when parsing files with MANY revisions. Fixes [bug 7604]. * (marty) Filesystem.Monitor: Add testsuite. * (marty) Filesystem.Monitor: Check newly registered EventStream monitors. Fixes a bug where monitors weren't registered recursively until parent monitors were notified for the first time. * (wellhardh) release number bumped to 8.0.133 by export.pike * (wellhardh) release number bumped to 8.0.132 by export.pike * (grubba) ADT.Heap: Improved robustness. Make sure to invalidate Element()->pos for elements not on the Heap. Potential fix for [bug 7555:5]. * (ponost) Added an example of how to use an OAuth2 derived module * (grubba) Parser.XML.Tree: Fixed handling of namespaced attributes some more. Also adds some more tests. COMPAT WARNING: Attribute namespaces starting with "xml" (except for "xmlns") are now handled just like any other attribute namespaces. This means that eg the attribute "xml:lang" will be expanded to "http://www.w3.org/XML/1998/namespacelang" in the mapping returned by get_attributes(), and not kept as "xml:lang" when namespace handling is enabled. * (grubba) Parser.XML.Tree: Fixed probable copy-paste typo. * (grubba) Parser.XML.Tree: Added some more (disabled) name space debug. * (grubba) Testsuite [Parser.XML.Tree]: Added some more namespace tests. * (grubba) Parser.XML.Tree: Increased strictness of namespace parser. * (grubba) Parser.XML: Added some default required namespaces. The xml: and xmlns: namespaces are defined in http://www.w3.org/TR/REC-xml-names/ . Fixes some of [bug 7591]. * (grubba) Standards.PKCS: Fixed warning with old Nettle. Fixes [bug 7588]. * (jonasw) release number bumped to 8.0.130 by export.pike * (jonasw) release number bumped to 8.0.131 by export.pike * (grubba) SSL.Session: Fixed some warnings. * (grubba) release number bumped to 8.0.128 by export.pike * (grubba) release number bumped to 8.0.129 by export.pike * (grubba) Tools.Standalone.check_http: Cosmetic fix. * (grubba) Tools.Standalone.check_http: Added some SSL/TLS certificate validation. * (grubba) Tools.Standalone.check_http: Report the runtime. * (grubba) Tools.Standalone.check_http: Report the timeout value. * (grubba) Tools.Standalone.check_http: Fixed typo. * (grubba) Revert "We can just use Gz.compress and Gz.uncompress as we are not streaming." This reverts commit e4ce863fc0554af603453bf980f321ff21584976. Unfortunately we are streaming... COMPRESSION_deflate now interoperates again. * (grubba) release number bumped to 8.0.126 by export.pike * (grubba) release number bumped to 8.0.127 by export.pike * (grubba) Tools.Standalone.check_http: Added new tool. This tool can be used to check http/https connectivity to a host. * (grubba) Protocols.HTTP: Keep track of the SSL/TLS session. * (grubba) SSL.State: Improved interop with gnutls. The encrypt-then-mac mode now interoperates with gnutls 3.4.6. * (nilsson) GCM works again. * (grubba) Build [Nettle]: Survive shadowing with older nettle. Correct erroneous configuration results. A typical cause of such is shadowing a more recent system nettle with an older local version, where configure will find headerfiles belonging to the system version if the header files aren't present in the (intended) older version. * (marty) release number bumped to 8.0.125 by export.pike * (marty) release number bumped to 8.0.124 by export.pike * (nilsson) Don't utf-8 decode the entire torrent. * (rosuav) Improve docs of GTK callback functions * (jonasw) release number bumped to 8.0.123 by export.pike * (jonasw) release number bumped to 8.0.122 by export.pike * (grubba) Mysql: Restore the SIGPIPE signal handler. Potential fix for [bug 7582]. * (grubba) Runtime: Added low-level API restore_signal_handler(). This function is intended to be used by modules that use libraries that zap some known signal handlers. A typical example is the MariaDB native client, which zaps the SIGPIPE handler unconditionally on each new connection object. Also removes some obsolete PIKE_EXTRA_DEBUG. * (grubba) Documentation [Stdio.sendfile]: Document risk of SIGPIPE. Make sure that users of sendfile() are aware of [bug 7582] behavior. * (grubba) decode_value: Fixed crash after "Got unfinished program". The argument order was swapped in an error callback. * (marcus) Compiler [ppc64]: Fix potential overflow in ADD_CALL * (marty) Filesystem.Monitor: Let inotify monitors fallback to poll if file doesn't exist. * (grubba) Tools.Standalone.precompile: Improved compat with semi-old Pike. * (marty) release number bumped to 8.0.121 by export.pike * (marty) release number bumped to 8.0.120 by export.pike * (marty) Filesystem.Monitor: Avoid double notifications on changed files. We'll now avoid registering monitors on individual files and instead expand the path of notified files on the callback. This will also reduce the number of watchers in directory trees with many more files than dirs. Also: notify stable_data_change instantly on IN_CLOSE_WRITE events. * (grubba) Tools.Standalone.precompile: Improve support for old Pikes. The UNUSED() macro is reasonably recent... * (ph) Fixed crash (infinite loop allocating ram) in Image.JPEG.decode When decoding markers, if there were more than two of a single type (as an example when an image contains a 1.2Mb ICC profile) the code got stuck in an infinite loop instead of progressing. * (ph) Modern GCC:s are more picky about macro argument expansion (space required) * (ph) thread_local is now a keyword in C++ * (nilsson) Added PIKE_DEBUG around code that shouldn't happen. * (agehall) release number bumped to 8.0.119 by export.pike * (agehall) release number bumped to 8.0.118 by export.pike * (marty) Filesystem.Monitor: Reduce FSEvents coalescing window to 1 second. * (marty) FSEvents: Add a few missing constants. * (marty) Filesytem.Monitor: Enable file-level notification for FSEvents. * (agehall) release number bumped to 8.0.117 by export.pike * (agehall) release number bumped to 8.0.116 by export.pike * (marty) Filesystem.Monitor: Destruct monitors explicitly. * (marty) Filesystem.Monitor: Avoid backtrace in canonic_path when path doesn't exist. * (marty) CFRunLoop: Don't throw errors on kevent failure. * (marty) CFRunLoop: Set pdb->event_count correctly in noteEvents. kevent returns the number of events placed in the eventlist. Previously, pdb->event_count was always set to POLL_SET_SIZE, so previous events could be picked up again by pdb_low_backend_once if the number of events was lower than in the previous round. * (nilsson) Backported encode/decode base64url * (nilsson) Backport from 8.1 * (nilsson) Backport from 8.1 * (bortas) Add VCDiff to CHANGES. * (marcus) ppc64: Fix compilation error in disassembler * (grubba) master: compile_file() now knows about cpp() soft failures. cpp() returns zero on failing #require. Don't propagate the zero the compiler. * (bortas) CHANGES: Web.Auth and Web.Api * (bortas) Revert "Don't suggest writing files in /." This reverts commit 5d07baf3780523d7fb8c2117aa9c63fd2fd19dfe. * (bortas) Don't suggest writing files in /. * (bortas) Give the reader something other than word sallad to go on for ZXID. * (bortas) Removed redundant word. * (bortas) Tried to deconfuse the GTKâ=GTK2|GTK1 situation. * (nilsson) Fixed warning. * (nilsson) Dumped PV can't be decoded correctly, so don't dump it. * (marcus) sparc: Load interpreter pointer in low_ins_call as it may have been forgotten * (grubba) Inotify: Renamed get_fd() to query_fd(). Also removes some obsolete documentation. * (grubba) Testsuite [Inotify]: Updated testsuite to new API. * (nilsson) Added #pike * (grubba) encode_value: Improved support for variant dispatchers. The variant dispatcher often replaces the reference id to the terminating function, which instead gets the reference id that the variant dispatcher would have gotten otherwise. This fixes broken encoding where the terminating function's reference id was taken by the next function that was encoded, which in turn caused decode_value() to fail with "Bad function identifier offset". * (grubba) release number bumped to 8.0.115 by export.pike * (grubba) release number bumped to 8.0.114 by export.pike * (grubba) Stdio.UDP: Increased paranoia in bind(). Fixes handling of close(2) failure. * (grubba) Image.Color: Added rebeccapurple from CSS Color Module Level 4. cf https://drafts.csswg.org/css-color/. * (grubba) decode_value(): Fixed memory leak on unfinished programs --with-debug. The decoder state wasn't freed on exit if the decoder tables contained unfinished programs when compiled --with-debug. * (ponost) Updated all references since the modules were moved from root namespace to the Web namespace * (ponost) Moving Auth.pmod to Web.pmod/Auth.pmod and WebApi.pmod to Web.pmod/Api.pmod * (grubba) Standards.PKCS: Removed some more resolver circularities. Breaks circularity Crypto.RSA ==> Standards.PKCS ==> Standards.PKCS.RSA ==> Crypto.RSA with a fix analogous to the earlier fix for ECDSA. Also probably fixes the same issue for DSA. * (grubba) Standards.PKCS: Minor changes. Changed indexing method for the circularity work around to the dynamic module indexing operator. Changed case of the dynamically looked up symbol to better match its static name. * (grubba) string_builder_sprintf: Fixed '+' for floats. The floating point renderer used the wrong flag to indicate that a sign was always wanted. Also adds some comments about what string_builder_sprintf() supports. * (grubba) string_builder_sprintf: Added support for %T. This adds a simple way to render a pike_type to a string_buffer. * (grubba) Auth.OAuth.Client: Fixed AutoDoc markup issue. * (ponost) New modules for communicating with different (RESTful) web apis (including OAuth and OAuth2 client modules) . Implemented APIs are (that is, you can authenticate against them and all have basic methods for doing generic get, post, put and so on requests) * Facebook * Github * Google * Analuytics * Plus * Instagram * LinkedIn * Twitter * (grubba) Documentation [%]: Added some clarifications and improved markup. Fixes [LysLysKOM 21477516] reported by Per Cederqvist. Thanks. * (grubba) Inotify: Minor code cleanup. Potential fix for [CID 1325796]. * (grubba) Inotify: Removed some debug output. * (grubba) Filesystem.Monitor [Inotify]: Improved support for blocking mode. check() now also checks any InotifyMonitors. * (grubba) Inotify: Don't reference count immediate circular references. The event callback is often a function in the same object as the Inotify instance, so avoid having it reference counted in that case. * (grubba) Inotify: Removed some dead code. * (grubba) System.Inotify, Filesystem.Monitor: Updates to use new Inotify API. System.Inotify.Instance now inherits _Instance directly. This simplifies the code and caused some functions to become redundant. Filesystem.Monitor now has some support for Inotify in blocking mode. * (grubba) Inotify: Use fd_callback_boxes, internal event parsing. Inotify instances are now hooked directly into the backend, so the need to expose an fd object is gone. Parsing of the event stream is now buffered and parsed internally. Also fixes minor bug on close. * (grubba) Search.Database.MySQL: Censor the SQL-url. Also some minor code cleanup. * (grubba) Sql: Added censor_sql_url(). * (grubba) Search.Database.MySQL: Avoid long lived database connections. The automatic reconnection of Mysql connections has been disabled by default for several years, so cached database connections may very well become stale. The connection is now established when needed. Fixes errors like "big_query(): Query ... failed (MySQL server has gone away)". * (grubba) Inotify: Don't throw errors in rm_watch() on invalid watch descriptor. The watch descriptor may already have been implicitly invalidated, and the corresponding IN_IGNORED not received and handled yet. As the end result of calling rm_watch() in either case is that the watch descriptor is invalid, it doesn't make sense to throw an error. * (grubba) Filesystem.Monitor: Improved robustness. check_all() now survives check() throwing errors. Also updates the comments about Inotify and its automatic invalidation of watch descriptors. * (grubba) Filesystem.Monitor [Inotify]: Use the watchdescriptor to look up the monitor. The path in an inotify event is usually just a single path segment, and can typically not be used to look up the corresponding monitor. This reduces the number of cases where a full monitor scan is performed to negligible. Also adds some handling of the IN_IGNORED event, which indicates that a watchdescriptor has become invalid. * (grubba) Filesystem.Monitor [FSEvents]: Make sure that check() doesn't terminate early. As FSEvents only notifies on directories, and we don't have accellerated monitors in the monitor_queue, we need to ensure that the monitors one level down are also notified. Also adds some (dead) placeholder code for handling switching of the backend in the FSEvents case. * (grubba) Filesystem.Monitor [FSEvents]: Added INHIBIT_EVENTSTREAM_MONITOR. This #define turns of FSEvents accelleration. * (grubba) Filesystem.Monitor [FSEvents]: Make sure that stable_data_change() works. Also adds some more MON_WERR(). * (grubba) Filesystem.Monitor [FSEvents]: Ensure that the backend is in CF-mode. Also disables use of FSEvents when other backends than the primary (Pike.DefaultBackend) are in use. * (grubba) Filesystem.Monitor [Inotify]: Improved robustness. rm_watch() often complains about unknown descriptors, even though they seem to be correct (Linux 3.17.2). Add a work-around. * (grubba) Filesystem.Monitor.debug: Added get_monitors(). * (grubba) Filesystem.Monitor.symlinks: Inherit DefaultMonitor. This means that the symlinks class (and debug class) now take advantage of accellerated monitors. * (grubba) Filesystem.Monitor: Added DefaultMonitor. This class alias simplifies other code by reducing the need for preprocessor checks. * (grubba) Filesystem.Monitor [Inotify]: Fixed calling of stable_data_change(). The calling of stable_data_change() got lost when accellerated paths were removed from the polling heap. * (grubba) Filesystem.Monitor [Inotify]: Added INHIBIT_INOTIFY_MONITOR. This #define turns off Inotify accelleration. * (grubba) Filesystem.Monitor [Inotify]: Fixed initialization. Inotify seems not to notify on preexisting paths, so help it along. * (grubba) Filesystem.Monitor [Inotify]: Fixed calling of stable_data_change(). The calling of stable_data_change() got lost when accellerated paths were removed from the polling heap. * (grubba) Filesystem.Monitor: Fixed call of unregister_path(). LFUN::destroy() was in the wrong class, and the logic was inverted in unregister_path(). Also adds FILESYSTEM_MONITOR_DEBUG and MON_WERR(). * (grubba) Updated to tzdata2015g. * (grubba) Filesystem.Monitor: Don't filter paths with ".."... Using Filesystem.Monitor with a relative path is common. * (grubba) Filesystem.Monitor: Fixed some issues in the Inotify case. Fixes [bug 7570]. * (grubba) Standards.PKCS.ECDSA: Fixed typo in function name. Also reduces risk of resolver issues. * (nilsson) Solve recursive resolver issue. * (nilsson) Set x86_get_cpuid response order to eax,ebx,edx,ecx in all cases. * (grubba) Type-checker: Fixed typo in handling of NOT-types. This could cause incremental writes (and likely core-dumps) anywhere in the 32-bit address space, but was unlikely to be triggered in practice due to NOT-types not being available at Pike level. * (grubba) Protocols.DNS: Reduce race-condition window in do_query(). When executing do_query() in another thread than the backend thread, there was a risk that the answer would be received and handled by the backend thread before the retry call_out was installed. This could cause do_query() to fail with "Lookup in destructed object." Potential fix for [bug 7460]. * (grubba) Standards.X509: parse_private_key() now knows about PKCS#8. * (grubba) Standards.PKCS: parse_private_key (PKCS#8) now supports EC. Added support for parsing of PKCS#8 EC private keys (cf RFC 5915 section 1). * (grubba) Standards.PKCS.ECDSA: Added variant of parse_ec_parameters(). When parsing ASN.1 it is not unusual to have the ASN.1 objects rather than their DER representation. * (grubba) autodoc_to_split_html: Output UTF-8 Fixes "cannot output wide strings" in git export mode. Also adds a corresponding meta tag for good measure. * (grubba) autodoc_to_html: Output UTF-8. Fixes "cannot output wide strings". Also adds a corresponding meta tag for good measure. * (grubba) Tools.AutoDoc: Fixed several xml character encoding issues. The MirarDocParser module generated XML declared as UTF-8, but containing ISO-8859-1. The autodoc joiner had similar problems. ProcessXML now assumes that files that contain valid UTF-8 are written in UTF-8, and all other files are in ISO-8859-1. * (grubba) Tools.Standalone.autodoc_to_html: Take advantage of the RFC redirect. Reduce knowledge about the site structure at http://pike.lysator.liu.se/ by taking advantage of the automatic RFC redirect at the site. * (nilsson) Support linking direct to RFC anchor. * (grubba) release number bumped to 8.0.113 by export.pike * (grubba) release number bumped to 8.0.112 by export.pike * (grubba) Documentation [Protocols.LDP]: Added some RFC markup. * (grubba) Documentation [Standards.PKCS]: Minimal history of PKCS. * (grubba) Standards.PKCS: Added support for decoding PKCS#8 private keys. * (nilsson) Removed CHACH20-POLY1305 [sic] from SSL additions. * (grubba) release number bumped to 8.0.110 by export.pike * (grubba) release number bumped to 8.0.111 by export.pike * (nilsson) Disable chacha20-poly1305 until we managed to interoperate with another implementation. * (nilsson) Warning fixes from 8.1 * (grubba) Filesystem.Monitor: API fix for EventStreamMonitor()->check(). * (grubba) Filesystem.Monitor: Refactored the accellerated filesystem monitors. This is to improve compatibility with older code, and to support extending the monitor system to monitor virtual files (like eg http URLs), and also to reduce the complexity of the code. Also fixes issue with Inotify not supporting monitoring of non-existing paths. * (grubba) Filesystem.Monitor: Survive an empty monitor_queue in check(). Preparation for only having polled monitors in the monitor_queue. Currently monitors and monitor_queue always have the same size, but with filesystem event systems there's no need to poll the event monitored files by hand, so leave the monitor queue for the paths that the event system doesn't support. * (grubba) Filesystem.Monitor: Improved robustness in release(). * (grubba) Filesystem.Monitor: set_backend() now knows about Inotify. * (grubba) Filesystem.Monitor: Use ADT.Heap()->remove(). * (grubba) Filesystem.Monitor: Added adjust_monitor(). * (grubba) Filesystem.Monitor [Inotify]: Fixed indentation. * (grubba) Filesystem.Monitor: Added check_all(). * (grubba) release number bumped to 8.0.108 by export.pike * (grubba) release number bumped to 8.0.109 by export.pike * (grubba) Cpp: Rename some of the hashtable functions. This is to avoid clashes with other libraries (in particular mariadb-connector-c 2.2 which has (and uses) a hash_insert()). Fixes [bug 7560]. * (grubba) Revert "Mysql: Link to the MariaDB libs twice." This approach didn't work. This reverts commit ae230d718d5a0a8c7484e8cf22c1fac54b0c1090. * (grubba) release number bumped to 8.0.107 by export.pike * (grubba) release number bumped to 8.0.106 by export.pike * (grubba) Mysql: Link to the MariaDB libs twice. This is an attempt to work around MariaDB having symbols (like 'hash_insert') that clash with the same symbols in Pike. Potential fix for crash on Solaris 10. * (grubba) ADT.Heap: 2nd try at fixing the NULL-deref. * (marty) Filesystem.Monitor: Add explanatory comment. * (marty) Filesystem.Monitor: Import files marked as stable immediately. * (grubba) release number bumped to 8.0.105 by export.pike * (grubba) release number bumped to 8.0.104 by export.pike * (grubba) ADT.Heap: Fixed NULL-deref. Fixes "Indexing the NULL value with "value".". * (grubba) Mysql: Added work-around for misconfigured MariaDBs. The MariaDB C-Connector configuration files can confuse themselves, and forget to add -liconv to the list of libraries even though required. * (grubba) release number bumped to 8.0.103 by export.pike * (grubba) release number bumped to 8.0.102 by export.pike * (grubba) Doc: Fixed documentation of random(float). Fixes [LysLysKOM 21443522] reported by Per Cederqvist. Thanks. * (grubba) Filesystem.Monitor: Use the new ADT.Heap adjust() API. Improve performance by using the new ADT.Heap adjust() API. * (grubba) ADT.Heap: Added ADT.Heap.Element. This adds one level of indirection, but is needed to get a reasonable performance in code that needs to call adjust(). Also corresponding updates to ADT.Priority_queue. Also removes the LFUN::`==() operator from ADT.Priority_queue.elem, as it doesn't serve any purpose. * (el) block_allocator: fixed a bug in ba_sort_free_list This could possibly happen after syntax errors when freeing the compiler data. * (grubba) Threads: Added support for setting a thread time quanta. This is mostly intended to be used to identify code that inhibits other threads from running. * (el) Threads: Mutex()->lock() needs to survive cleanup on exit. In some cases lfun::destroy() calls lock() in a mutex. If this happens during cleanup on exit phase, Pike_interpreter.thread_state->thread_obj is already NULL. * (grubba) Multisets: No need to call rb_fatal without PIKE_DEBUG. * (grubba) Testsuite [Standards.JSON]: UNDEFINED is encoded as null. FIXME: This change is likely to have compatibility issues. Add a compat module! * (grubba) Threads: this_thread() needs to survive cleanup on exit. There apparently are some lfun::destroy() that call this_thread() at a time when Pike_interpreter.thread_state->thread_obj is NULL. * (nilsson) Without PIKE_DEBUG rb_fatal is just Pike_fatal and takes the error message as first argument. Conflicts: src/rbtree.c * (ph) Encode UNDEFINED as null It makes more sense than 0 * (mgawron) MT-1208: Fixes in pike8. * Prevent adding binary ints to output stream when header values are ints. * Don't try to call tell() on a parameters mapping. Seek in m->file instead. * (mgawron) MT-1211: Follow-up fix after MT-1208 (' ' interpreted as "32"). * (grubba) SSL.Constants: Adjusted some symbol names. Make sure that the names of the KRB5 export suites actually contain "export". * (ph) Backported locked check fix for Stdio.Buffer from 8.1 * (grubba) GTK2: GdkPixbufSimpleAnim {s,g}et_loop() require GTK 2.18 or later. * (grubba) release number bumped to 8.0.100 by export.pike * (grubba) release number bumped to 8.0.101 by export.pike * (nilsson) Support #[#] style string quoting in Pike tokenizer. * (nilsson) Support #[#] style string quoting in Pike tokenizer. * (nilsson) Test some oddly placed white spaces in preprocessor string quoting. * (nilsson) Support #[#] style string quoting in Pike tokenizer. * (nilsson) Don't crash in images with zero color range. * (grubba) Documentation [MIME]: Use the new RFC reference markup. * (grubba) Documentation [MIME]: Use the new RFC reference markup. * (grubba) Tools.Autodoc: Added markup for references to RFCs. * (grubba) Thread.Thread [Documentation]: Adjusted return type of thread function. The return value of the thread function is relevant (as it is returned by wait())... Fixes [LysLysKOM 21410113] reported by Per Cederqvist. Thanks. Also adjusted the declared type of create() somewhat so that it requires a thread function (ie the compiler will now complain if it is called without arguments). * (grubba) release number bumped to 8.0.98 by export.pike * (grubba) release number bumped to 8.0.99 by export.pike * (grubba) SSL.Context: Default to the FFDHE2048 group. Changes the default DHE group from MODP group 24 to FFDHE2048. This makes SMACKTest (http://smacktest.com/) happy, and reduces the risk of precalculated attacks against the MODP group. * (ph) Added basic WebP support to 8.0 Image.ANY.decode * (ph) Fixed decoding of WebP images with alpha * (grubba) Updated to tzdata2015f. * (grubba) Updated to tzdata2015e. * (grubba) GTK2: Fixed invalid shift in encode_truecolor_generic(). Make sure to widen the value before shifting it. Fixes [CID 1294562]. * (grubba) ADT.Heap: Shrink the value array on remove(). * (grubba) Documentation [ADT.Heap]: Added some cross-references. * (grubba) ADT.Heap: Added remove(). * (grubba) GTK2: GdkPixbufSimpleAnim requires GTK 2.8 or later. * (grubba) Testsuite [Process]: Added workaround for Linux kernel bug. wait(2) et al in Linux 3.15 - 3.18 are not thread safe, and a blocking wait() can hang when a different thread reaps the same process (eg via a signal handler). Fixes intermittent testsuite failures on Linux 3.15 - 3.18. * (grubba) Testsuite [Inotify]: Fixed the filesystem cleanup some more. * (grubba) Testsuite: Survive CRNL-mode in new-style literal strings. * (grubba) Testsuite [Stdio.Buffer]: Updated testsuite to new buffer strategy. * (grubba) Pike.identify_cycle: Fixed global variable overwrite. Pike.identify_cycle() uses a mapping internally, and insert into mappings can call Pike code (via LFUN:__hash()), which could have a different thread also start messing with the same variables. This fixes the multi-thread case, but there's still a problem if it starts to recurse (ie LFUN::__hash() calling Pike.identify_cycle() or Pike_count_memory()). * (grubba) Build [no threads]: Added missing dummy macro. * (unknown user) Tweak OS X 64-bit compilation by not specifying old optimization flags when the defaults are better (+3% on average on pike -x benchmark on MBP Core i7). Also avoid -read_only_relocs since it's not applicable on 64-bit ABI. * (unknown user) Switch from finite() to isfinite() since the former is flagged as deprecated on OS X. * (unknown user) Improve forkd debug. * (el) Stdio.Buffer: removed C99ism * (el) Compiler: fixed a NULL-dereference If a variable was undefined, indexing it with ?-> would lead to a segfault during compilation. * (ph) Fixed an issue with output_to to non-files (eg, ssl). This bug was created by the new code that allows the buffer to shrink. * (ph) Added Stdio.Buffer as a type * (ph) Added the PixbufSimpleAnimation class. * (ph) Implemented GDK2.PixbufLoader * (ph) Added gboolean type. * (ph) Fixed circular reference in Protocols.HTTP.Server.Request The OutputBuffer class has references to the parent object, i.e., the request object. This creates a circular dependency that is not cleared without a gc(). This meant, especially using the old Stdio.Buffer code that never actually shrunk the size of the buffer, that a webserver using this code would apear to leak a lot of data, especially when sending large replies as strings, buffers for all the data sent would stay around until the next gc(), which can be a rather long time. * (ph) Added two missing functions to GTK2.Notebook * (ph) Rewrote buffer growth strategy It is now 1.625x old size instead of 2.0 x old size + bytes_added, with some exception. Also added a shrink strategy, by default it's close to the reverse: If more than 61.5% of the buffer is empty space, shrink it down (1/1.625). (cherry picked from commit 917184b64444098f8b84c79cdd1de89ccaa467f6) Conflicts: src/modules/_Stdio/buffer.cmod * (grubba) SSL.Constants: Added ALPN protocol identifiers. * (grubba) SSL.File: Added query_application_protocol(). This is needed for protocols using ALPN. * (el) Compiler [amd64]: reload sp_reg after call into c code The stack pointer needs to be reloaded after calling F_LOOP. Otherwise, since the F_LOOP opcode function changes the stack pointer, it might be overwritten with the wrong value before calling a subsequent opcode function. * (el) Protocols.HTTP/pgsql: fixed possible call of the NULL value a?->b() is equivalent to (a && a->b)(). In order to make the call optional, a?->b && a->b() has to be used, instead. * (grubba) Testsuite: Added some tests of new-style literal strings. * (grubba) release number bumped to 8.0.96 by export.pike * (grubba) release number bumped to 8.0.97 by export.pike * (grubba) SSL.Cipher: It is possible to have ChaCha20 without ChaCha20.POLY1305. * (el) preprocessor: fixed two bugs when processing literal strings The 'new' syntax for literal strings had these two bugs. 1) Unterminated strings were not correctly handled, resulting in out of bounds reads. Note: cpp_error does not throw, it simply prints an error message. 2) Newlines inside literal strings did not increment the current line number, which resulted in incorrect information in e.g. error messages. * (grubba) release number bumped to 8.0.94 by export.pike * (grubba) release number bumped to 8.0.95 by export.pike * (grubba) SSL.ClientConnection: Support ALPN being accepted. Fixes [LysLysKOM 21365565]. * (grubba) release number bumped to 8.0.92 by export.pike * (grubba) release number bumped to 8.0.93 by export.pike * (ph) added "v" as a swedish "vacation day" event type * (marty) free -> free_string in pike_mysql_set_options. Fixes incorrect free that would occur when "mysql_charset_name" is provided in the options mapping. * (grubba) SSL.Context: Fixed warning about unused variable. * (grubba) Unicode 8.0.0. * (grubba) Oracle: Added some paranoia. Fixes loss of reference if unicode_to_string() throws an error. * (grubba) Oracle: dbresultinfo neither uses nor needs its parent. Fixes "Parent lost, cannot clone program.". * (grubba) Oracle: Fixed bug in macro ORACLE_UNICODE_DECODE(). It helps if you send the correct number of arguments... * (grubba) Oracle: Fixed typo in error generation. Fixes fatal error on connection errors. * (grubba) unicode_to_string: Support UTF8LE without BOM. Adds an optional second argument to unicode_to_string() to specify the default byte order (an initial BOM in the input string overrides this argument). * (grubba) string_to_unicode: Support outputting UTF8LE. Adds an optional second argument to string_to_unicode() to specify the wanted byte order. * (grubba) Oracle: Now compiles with ORACLE_DEBUG again. * (grubba) Oracle: PROGRAM_NEEDS_PARENT is needed to access the parent during destruct. Fixes fatal error during destruction of the result object. * (grubba) Oracle: Fixed truncated error messages. * (grubba) release number bumped to 8.0.90 by export.pike * (grubba) release number bumped to 8.0.91 by export.pike * (grubba) Mysql: Fixed compilation issue triggered by the recent changes. * (grubba) release number bumped to 8.0.89 by export.pike * (grubba) release number bumped to 8.0.88 by export.pike * (grubba) Backend [MacOS X]: Fixed compilation --with-debug. The macros {HIDE,REVEAL}_GLOBAL_VARIABLES() are a pure lexical construct, and MUST be balanced in the same block. * (grubba) Oracle: Fixed several warnings. Adjusts several types to match what the OCI functions in Oracle 11 expect. * (grubba) Oracle: Fixed quite a few warnings about unused parameters. * (grubba) Debug.memory_usage(): Added kludge for Linux libc. The fields in struct mallinfo in Linux libc (as of glibc 2.20) are declared as int, and will thus overflow into negative when the values get larger than 0x3fffffff. This commit interprets negative mallinfo values as 32-bit unsigned values. * (grubba) Oracle: Improved support for recent versions of Oracle. Search for libclntsh in addition to libcommon. Also adds support for Gentoo-style installation, which doesn't have an /etc/oratab, but instead has a file in /etc/env.d/. * (grubba) Oracle: Fixed some compilation issues. Fixes some typos, a C9x-ism and an uninitialized variable. * (grubba) Parser.C: Improved diagnostics from group(). Don't drop the grouping stack on the floor if there are missing ungroupings. Fixes loss of initial code in precompiler if braces are missing at the end of classes. * (grubba) Git: Added mailmap to handle some obsolete addresses. * (stewa) Enable dynamic fetch for CLOBs and BLOBs when using static bugger to work around segv problem * (stewa) Enable static buffers to avoid two task communication failure with oracle 11 * (stewa) Replaced magic hard coded value with define * (grubba) Oracle: Cosmetic cleanup. * (grubba) Oracle: Return LOBs as objects. * (grubba) Oracle: Support unicode error messages. * (grubba) Oracle: Perform queries in unicode mode with OCI 9 and later. When OCI supports UTF16 (Oracle 9 and later) switch to performing queries and retrieving results in unicode mode. * (stewa) Oracle: Disable POLLING_FETCH This is a workaround for Oracle bug 4523125: intermittent "ORA-03106: fatal two-task communication protocol error" with Oracle 10.2.0.2 and earlier. * (stewa) Oracle: Increase BLOCKSIZE to 8KB. This reduces the overhead for large variable-length records somewhat. * (stewa) Oracle: Added commit function to connection object. * (grubba) FreeType: Fix compilation with Freetype 2.6. * (marty) count_memory: avoid visiting refs at all in negative lookahead mode. * (grubba) Build [debug]: Fixed some uninitialized pointers. * (grubba) count_memory: Return early when visiting strings and lookahead >= 0. Similar fix to the one for the case where lookahead < 0, but not as general. * (grubba) Build: Fixed C9x-ism in previous commit. * (marty) count_memory: return early when visiting non-internal things and lookahead < 0. This avoids allocating entries in the mc_marker hash table for each referred thing of e.g. a mapping or multiset. Seems to improve performance by a factor 8-10 when doing Pike.count_memory (-1, m) where m is a relatively large mapping. * (grubba) SSL [SNI]: Match against specific globs before the fallback glob. Fixes glob cert matching when there also are fallback ("*") certificates. * (grubba) Mysql: Fixed use of mysql_real_connect(). It seems the #define of HAVE_MYSQL_REAL_CONNECT was lost during an edit of the configure script some time ago. This fixes linking with modern mysql client libraries, where the variable mysql_unix_port has become internal. * (el) Fixed typo in previous commit * (el) enumerate(): fixed integer overflow handling This change fixes two bugs 1) the overflow checks were incorrect, because signed integers do not overflow 2) when overflow was actually detected, the code fell back to the slow path (using f_add) with the last array element as the new start value, which led to wrong results * (grubba) GSSAPI: Use modern headerfiles in preference to old. Prefer <gssapi/gssapi.h> to <gssapi.h>, etc. Fixes warnings with some implementations of gssapi. * (marty) Set type_field of the destination array in assign_array_level*(). * (grubba) Added gethrdtime(). * (grubba) Threads: Keep track of the time spent with threads disabled. * (grubba) Inotify [testsuite]: Attempt to survive without testdir. * (grubba) Stdio [testsuite]: Attempt to recover from Inotify droppings. * (grubba) Inotify [testsuite]: Clean up after testing. The Inotify testsuite left droppings in /tmp/ after finishing. These caused the testsuite to fail after having run a few times. * (grubba) Process.create_process [doc]: Improved documentation. Make it clearer that the "cwd" parameter is affected by "chroot". * (grubba) Process.create_process [doc]: Added some clarifications. Make it clearer that the process callback function is called in a signal handler context. Fixes [LysLysKOM 21312841]. * (grubba) Configure: Attempt to support non-POSIX file(1). Some implementations of file(1) default to not following symbolic links, and just say that the file is a symbolic link. This is usually not what we want (or expect), so detect the broken behaviour and attempt to work around it. Fixes lost -R directives on Solaris 8 and BSD file 4.07. * (grubba) Tools.AutoDoc.PikeParser: Support the version scope syntax. The syntax 7.8::Crypto.RSA rsa = 7.8::Crypto.RSA(); is valid and useful, so make sure that the AutoDoc parser understands it. Fixes [LysLysKOM 21309217]. Thanks to Per Cederqvist <cederp@opera.com> for the report. * (tobij) f_zero_type: cleanup * (tobij) destructedp, zero_type: detect trampolines referencing destructed objects * (tobij) IS_DESTRUCTED(): fix brackets. Sorry about that. * (tobij) IS_DESTRUCTED(): only detect LFUN_CALL as destructed in trampolines * (tobij) IS_DESTRUCTED(): detect trampolines in destructed objects * (ph) SSL.Constants.CertificatePair: Be rather permissive. Allow the certificates to be specified in the reverse order. This is the order stunnel wants, and out of six different .der files from three different authorities three are reversed to begin with. So, I think it makes sense to just reverse the order when needed. * (grubba) Compiler: Improved stack robustness against compiler errors. Some syntax errors leave droppings on the stack, and this could confuse other code. Fixes fatal "yyparse() left 2 droppings on the stack!" for a testsuite test. * (grubba) Stdio.Port: Added some missing documentation of query_fd(). Also moved the implementation to be closer to the rest of the functions. * (grubba) SSL: Improved robustness of the async_tls_close test. The test is run four times in succession, and attempted to use the same (fixed) port number every time. This would cause the test to fail if something else already had claimed the port (unlikely), or if the OS had a too long grace period (common). The test now lets the OS allocate a port. Also adds a timeout if the TLS connection doesn't wake up when the port is closed. This should fix intermittent testsuite failures on several platforms, where the testsuite watchdog killed the SSL testsuite. * (el) Stdio.Buffer: io_ensure_malloced: use size_t type for 'bytes' input parameter. Also adds an overflow check. * (el) Stdio.Buffer: use round_up*() functions to enlarge buffer. Fixes an infinity loop due to overflow. Also changed the round_up*() functions to return 0 on overflow and made 1 the next power of two after 0. * (grubba) Nettle.ChaCha20.POLY1305 [testsuite]: Updated to RFC 7539. Updated testvector to the one from RFC 7539 section 2.8.2, and deleted the (incompatible) one from draft-agl-tls-chacha20poly1305-04. Added detection of the draft implementation. * (tobij) Stdio.Buffer: undo erroneous change of allocation behaviour * (tobij) Stdio.Buffer: throw on realloc() failures * (tobij) Stdio.Buffer(): add_padding() now adds padding. * (tobij) Stdio.Buffer(): Don't allow negative padding to be added. * (grubba) Testsuite: Fixed typo in log message. * (grubba) Tools.Install: _PGSql is no more. There's no point in searching for a module that has been obsoleted and removed... * (grubba) Configure: Fixed svalue size test. * (grubba) release number bumped to 8.0.87 by export.pike * (grubba) release number bumped to 8.0.86 by export.pike * (grubba) Multisets: Improved handling of unorderable values. Fixes [bug 7494]. It's not a good idea to pretend that values that don't have an order relation do... Fixes a bug that was introduced ~4 years ago. * (jonasw) release number bumped to 8.0.84 by export.pike * (jonasw) release number bumped to 8.0.85 by export.pike * (grubba) Image.PCX: Added missing break. Fixes [CID 742629]. Decoding of single-bitplane pcx files always failed. * (nilsson) Don't leak dsa_params bignums on parameter errors. * (tobij) Stdio.Buffer: less leaking of rewind structs * (rosuav) Tidy up parenthesis usage around UNLIKELY() condition * (grubba) release number bumped to 8.0.82 by export.pike * (grubba) release number bumped to 8.0.83 by export.pike * (grubba) Stdio.sendfile: Ensure that the initial seek doesn't fail. Fixes [CID 742461]. * (grubba) release number bumped to 8.0.81 by export.pike * (grubba) release number bumped to 8.0.80 by export.pike * (grubba) VCDiff: We need to link the module with stdc++. Also adds a minimal README. * (grubba) release number bumped to 8.0.79 by export.pike * (grubba) release number bumped to 8.0.78 by export.pike * (grubba) I/O [NT]: Fixed some more typos. * (grubba) I/O [NT]: More typos fixed. * (grubba) release number bumped to 8.0.76 by export.pike * (grubba) release number bumped to 8.0.77 by export.pike * (grubba) I/O [NT]: Fixed a few warnings. * (grubba) I/O [NT]: Fixed a few typos in a recent commit. * (grubba) Crypto.RSA: Fixed some more warnings with old Nettle. Fixes remainder of [bug 7469] and [bug 7477]. * (grubba) release number bumped to 8.0.75 by export.pike * (grubba) release number bumped to 8.0.74 by export.pike * (grubba) I/O [NT]: Fixed some races and bugs in fd_pipe(). * (grubba) I/O [NT]: Added multiple fd range checks. Fixes [bug 7476]. * (grubba) release number bumped to 8.0.72 by export.pike * (grubba) release number bumped to 8.0.73 by export.pike * (unknown user) Silence a ton of warnings in clang since the UNUSED() family of macros now depend on HAVE_FUNCTION_ATTRIBUTES being available, and the configure test refused to set that if it detected __declspec before. * (unknown user) Silence more compiler warnings by restoring the UNUSED() family of macros. If this change exposes any invalid attributes, please remove them specifically instead. * (grubba) Crypto.DSA: Fixed warning with old Nettle. Fixes some of [bug 7469]. * (grubba) Crypto.RSA: Fixed warnings with old Nettle. Fixes remainder of [bug 7469]. * (nilsson) const produces warning. * (grubba) Stdio.Port: Optional symbols should be optional... * (grubba) release number bumped to 8.0.70 by export.pike * (grubba) release number bumped to 8.0.71 by export.pike * (grubba) Tools.Install: Accept constant-less programs as existing. Fixes detection of Crypto.ECC.Curve in features(). * (ph) Handle session being destructed when callback is called. * (grubba) Image.PNG: Protect against integer overflows. Fixes [CID 1294669]. * (marty) release number bumped to 8.0.68 by export.pike * (marty) release number bumped to 8.0.69 by export.pike * (grubba) Image.JPEG: Fixed ref-count bug in _decode(). Also fixes lost type field for images with comments. * (grubba) Image.ColorTable: Fixed multiple bugs in `-(). * Fixed two (unlikely) memory leaks on double rehash. * Fixed copying of the new colortable on rehash. * Fixed rehash halting the copying of the flat colortable on rehash. * Removed redundant clearing of zeroed memory. Fixes [CID 742693]. * (grubba) Type-checker: Fixed typos in match_type_svalue() for AND. Fixes [CID 1294635]. * (grubba) Stdio.Buffer: Fixed integer overflow. Fixes [CID 1294563]. * (grubba) Image.Font: Fixed range check. Fixes [CID 742685]. * (nilsson) Fix negative seek. * (grubba) Export: Fixed typo in previous commit. * (grubba) Export: Added some more fields to buildid.txt. * (nilsson) Add some breaks as a minor optimization. CID 742607 * (nilsson) Use signed to allow for error condition return value from file_size. CID 742680 * (nilsson) Adressed dereferencing null. CID 1294604 * (nilsson) Adressed dereferencing null. CID 1294601 * (nilsson) Fix out of bounds read. CID 1294651 * (nilsson) Fix dereference before null check. CID 1294655 * (nilsson) Backport of Bz2 from 8.1 * (nilsson) Ensure bytes is not null rather than looking at args. Not an issue. CID 1294626. * (grubba) Parser.XML: Fixed some parser bugs. Fixes [CID 742608], [CID 742609], [CID 742610] and [CID 742612]. * (grubba) Bz2.Deflate: Fix NULL-deref on UNDEFINED. Fixes [CID 1294603]. * (grubba) Type checker: Fixed minor bug in match_type_svalue() for strings. All strings matched the type string(zero) instead of just the empty string. Fixes [CID 1294694]. * (grubba) release number bumped to 8.0.66 by export.pike * (grubba) release number bumped to 8.0.67 by export.pike * (grubba) Image: Fixed typo in factor 1/2 scaling. For odd-width source images, the left-most line of pixels had the blue-channel in the green-channel, and zeros in the blue-channel. Fixes [CID 1294692]. * (grubba) release number bumped to 8.0.64 by export.pike * (grubba) release number bumped to 8.0.65 by export.pike * (grubba) Gmp.mpf: Fixed NULL-deref. Fixes [CID 1294612]. NULL-dereferenced on UNDEFINED. * (grubba) Gmp.mpq: Fixed NULL-deref. Fixes [CID 1294617]. NULL was dereferenced on UNDEFINED. * (grubba) Bz2: Fixed NULL dereference in read(). Fixes [CID 1294629]. NULL was dereferenced on read(UNDEFINED). * (grubba) Build: Removed extraneous nesting level. Fixes [CID 1294691]. * (grubba) Updated to tzdata2015c. * (grubba) Sql.Sql: res_obj_to_array() now knows about next_result(). Fixes issue where data and errors were lost when on multiple results. Caveat: This also means that all the mappings in the array returned by query() et al don't necessarily have the same fields. * (grubba) Sql.sql_result: Added some more doc for next_result(). * (grubba) Nettle: Fixes for Nettle 3.1. * (grubba) Odbc: list_tables() now seems to work. * (grubba) Odbc: Added support for the next_result() API. * (grubba) Sql: Added support for multiple results. Adds Sql.sql_result()->next_result(). * (nilsson) Revert "Give less data to the alert_callback to avoid adding new data to buffered data." This reverts commit 8a7572836d757ccdc9b48bb29f85c681fcabbf85. * (grubba) SSL.Constants: Reduce estimated strength of RC4 to 38 bits. * (grubba) SSL.Context: Reduce aggressivity of purge_session() for <= TLS 1.2. In TLS 1.2 and earlier it is possible to have multiple concurrent connections using the same session. In particular there may be a concurrent connection performing session resumption handshaking at the same time as the session is being purged. Fixes "Internal server error: Bad argument 1 to sizeof()." in __builtin.Nettle.Hash() called via Connection.hash_messages(), which was often triggered by Google Chrome. * (grubba) Build [NT]: Reenable the configure cache by default for WIN32. Running uncached configure with rntcl et al takes considerable time... * (nilsson) Simplify RSA signature and at the same time fix a bug preventing non-byte RSA key sizes. * (grubba) Export: gzip enters interactive mode if the destination exists. This can cause the export to hang and/or fail. * (nilsson) Simplified queue_write a bit. * (nilsson) Give less data to the alert_callback to avoid adding new data to buffered data. * (nilsson) Size check was broken and didn't return an alert properly (though would break later as no data was added). * (nilsson) Don't process any more handshake packages once handshake is completed. * (grubba) Protocols.DNS: Remove the retry call_out on done. Fixes remainder of [bug 6285]. * (grubba) Image.JPEG: Support multiple markers of the same type. decode_headers() and _decode() now return a "marker" mapping with arrays when there are multiple markers of the same type. encode() now supports the same format for the "marker" mapping in the options argument. Fixes some of [bug 6601]. * (jkrajewski) DO-1260: Don't throw error when closing already closed SSL stream. It fixes yet another scenario when a SSL.File instance throws "File not open" error during abrupt close. * (ph) Optimized has_index for mappings and multiset It is now way faster for mappings (in testing about 2x) and somewhat faster for multisets. Since our developers have a tendency to write if(has_index(map,key)) instead of if(mapping[key]) this can be a noticeable gain. * (grubba) release number bumped to 8.0.62 by export.pike * (grubba) release number bumped to 8.0.63 by export.pike * (grubba) SSL.ClientConnection: Renegotiate with the same SNI as before. * (grubba) SSL.ClientConnection: Avoid reusing sessions with different SNI. * (grubba) Math: Adjusted the types for max() and min(). typeof(max(0,0)) returned string... Fixes [bug 6941]. * (grubba) release number bumped to 8.0.60 by export.pike * (grubba) release number bumped to 8.0.61 by export.pike * (grubba) I/O [NT]: Reading from the console on NT may fail with ENOMEM. Reading from the console on NT uses system buffers of limited size (nominal limit 64K, in practice 26608 or 31004 bytes), and will fail with ERROR_NOT_ENOUGH_MEMORY if an attempt is made to read more data than the limit. Fixes interactive Hilfe terminating with "Terminal closed." on start on NT. * (grubba) Runtime: Fixed over optimization of F_APPEND_MAPPING. F_APPEND_MAPPING now has the same special cases as F_APPEND_ARRAY. Fixes obj->map += ([ x:y ]) and obj["map"] += ([ x:y ]) when obj has lfun::`->=() and/or lfun::`[]=(). * (grubba) release number bumped to 8.0.58 by export.pike * (grubba) release number bumped to 8.0.59 by export.pike * (grubba) Build [configure]: AC_MODULE_INIT now checks the OS. This causes PIKE_FUNCS_NEED_DECLS to be set up correctly in all modules, and should fix various compilation problems on NT. In Pike 7.8 and earlier these settings were propagated via the configure cache. * (grubba) Build: Moved OS checking code to aclocal.m4. * (grubba) release number bumped to 8.0.56 by export.pike * (grubba) release number bumped to 8.0.57 by export.pike * (grubba) Runtime: Fixed over optimization in F_APPEND_ARRAY. Setters expect to be called when the corresponding variable is modified... This behaviour caused Roxen's test-suite to fail due to change triggers not being called. * (grubba) release number bumped to 8.0.55 by export.pike * (grubba) release number bumped to 8.0.54 by export.pike * (nilsson) const gives warnings. * (grubba) Fixed fall-out from warning about the symbol 'const'. * (grubba) Lexer: auto and const are likely to become keywords. * (grubba) Stdio.File: Fixed multiple issues in buffered mode. Seems to fix the issues detected by socktest.pike in mode 2. * (nilsson) Closer to working with Stdio.Buffer. * (grubba) Updated to tzdata2015b. * (grubba) release number bumped to 8.0.52 by export.pike * (grubba) release number bumped to 8.0.53 by export.pike * (grubba) Build: Removed dependance on Makefile for cmods in modules. This caused the build process to require a pike to be installed to be able to build pike, and thus broke source-dists. * (grubba) Build [Nettle]: Make sure that some more symbols are defined. Include <nettle/nettle-meta.h> instead of <nettle/nettle-types.h>. This makes sure that nettle_hash_{digest,update}_func are defined. Fixes compilation issues on NT. * (grubba) release number bumped to 8.0.51 by export.pike * (grubba) release number bumped to 8.0.50 by export.pike * (grubba) Nettle: Make sure that the nettle types are defined before use. Fixes compilation issues with ancient versions of Nettle. * (grubba) Revert "windows: need stdint.h for uint*" This commit had various side-effects... This reverts commit 2d30d343e05f1145f441bdea25c3114558b94a34. * (grubba) Build: Removed dependance on Makefile for cmods in modules. This caused the build process to require a pike to be installed to be able to build pike, and thus broke source-dists. * (grubba) release number bumped to 8.0.49 by export.pike * (grubba) release number bumped to 8.0.48 by export.pike * (grubba) BSON: Use INT8 instead of int8_t. This is needed on platforms that don't have int8_t. Fixes some compilation issues on NT. * (grubba) Build: Removed dependance on Makefile for cmods. This caused the build process to require a pike to be installed to be able to build pike, and thus broke source-dists. * (grubba) release number bumped to 8.0.47 by export.pike * (grubba) release number bumped to 8.0.46 by export.pike * (grubba) Testsuite [BSON]: Check some more data types. * (grubba) BSON: Survive platforms without INT64. * (grubba) BSON: Cleanup lookup_svalue() somewhat. Fixes fatal about using a freed svalue. * (grubba) BSON: Use INT{32,64} instead of int{32,64}_t. This is needed on platforms that don't have int{32,64}_t. Fixes some compilation issues on NT. * (grubba) release number bumped to 8.0.45 by export.pike * (grubba) release number bumped to 8.0.44 by export.pike * (unknown user) Fix negated test that broke native sendfile() for Stdio.File objects. * (grubba) release number bumped to 8.0.42 by export.pike * (grubba) release number bumped to 8.0.43 by export.pike * (grubba) Nettle: Survive nettle without memxor3(). * (grubba) GTK2: Survive gtk 2.6. * (grubba) Build [NT]: We need to check the OS in modules too. The pike_cv_sys_os configure variable no longer propagates down to the modules (since the configure cache no longer is active by default), so we need to check the OS by hand. Fixes issue on NT where LIBS didn't get populated properly. * (grubba) release number bumped to 8.0.41 by export.pike * (grubba) release number bumped to 8.0.40 by export.pike * (grubba) Debug: Added some forward compatibility symbols. These efuns have all moved to the Debug module in Pike 8.1, and are not available as efuns there. * (nilsson) Remove stray variable. * (nilsson) Prevent infinite loop of 0 data. * (nilsson) Prevent infinite loops when decoding incomplete data. * (el) ADT.CritBit: dont mark create OPT_TRY_OPTIMIZE create() is not without side effects * (grubba) Odbc: Censor the db password in backtraces. * (ph) O(n) instead of O(n^2) in HTTP.Query.PseudoFile.read Also fixed it for the case where there is no content-length header. * (aberjak) Standards.URI->passwd references changed to Standards.URI->password The Standards.URI module has no field called "passwd". The code didn't backtrace but this part of the conditional sentence was always evaluated to "false". * (kevinor) TURBO2-942: Add Stdio.Buffer support to Gz.inflate * (ph) encode_value: Slightly faster encode of large integers. Also, do not remember items with only 1 reference, they are rather unlikely to show up again later on (objects notwithstanding, and they are handled in another case). This saves a lot of CPU time when a large array of fairly unique strings are encoded. * (grubba) Testsuite [SSL]: Fixed some erroneous failures. * (grubba) SSL.File: Fixed potential hang in is_open(). * (grubba) Odbc: Fixed a few warnings. * (el) Stdio.File()->set_buffer_mode: set the correct write cb Setting this to __fd_set_output in the out buffer results in Stdio.File()->write() being called with (some) of the buffer content, which will in turn be readded to the out buffer. This can lead to data being written to the socket in the wrong order. * (el) Testsuite: added a socket test in buffer mode This test currently does not terminate. Also replaced all constant strings by random strings. * (el) Testsuite: added test for SSL.File()->is_open() in blocking mode It never returns. * (nilsson) release number bumped to 8.0.38 by export.pike * (nilsson) release number bumped to 8.0.39 by export.pike * (nilsson) Update year. * (nilsson) Added #pike generation. * (nilsson) Autodoc fix. * (nilsson) BSON module can't be dumped. * (grubba) Postgres: Improved error message. Thanks to Petter Larsson <petterl@home.se> for the suggestion. Fixes [bug 3107]. * (nilsson) Fix for Nettle without ECC * (grubba) Postgres: Fixed some reference-counting issues. Each successful call (returning a result set) of big_query() caused one reference to the connection object to be lost. The result object would reference freed memory if the connection object was destructed before it. Potential fix for [bug 6464] (and probably others). * (grubba) Filesystem.Tar: Survive existing paths with restricted permissions. extract() now attempts to temporarily alter permissions for existing directories and files if they are likely to cause the extraction to fail. The typical case is a write-protected directory or file in a tar file which is extracted on top of an earlier extraction. This earlier caused extract() to fail with "Failed to create \"xx\": Permission denied." or similar. Fixes [bug 7350]. * (grubba) Odbc: Forward ported push_numeric() from Pike 7.8. push_numeric() used APIs that are only available in Pike 8.1 and later. Fixes compilation errors. * (grubba) SSL.ClientConnection: Improved handling of version upgrades. Send an ALERT_protocol_version if the server attempts a higher protocol version than we asked for (instead of silently down- grading to the original version). * (el) Stdio.Buffer: trigger write cb when adding to empty buffer When the buffer was empty and a new string was added to it, the write callback was not triggered. * (grubba) Java [NT]: Improved dll-search for jvm. In some installations "HKCU\SOFTWARE\JavaSoft\Java Runtime Environment" exists but doesn't contain a JVM, so retry with the corresponding HKLM key in that case. Fixes testsuite issue in Roxen's build farm. * (ph) Fixed optimization of X = X+y again. The softcast that is automatically installed by the "+=" style operators caused the optimization to be disabled. * (nilsson) Fix for the RSA padding check. * (grubba) Odbc: Push an INT64 instead of a SQLBIGINT. They're usually the same, but in some circumstances the latter may be a struct of the same size. Fixes compilation issues on RHEL 5/x86. * (grubba) Odbc: Use the typedefs instead of the struct tags. The <sqltypes.h> header file doesn't declare struct tagSQLGUID when GUID_DEFINED is defined, so use the typedef instead. Do the same for the rest of the related structs just in case. Fixes compilation on NT. * (grubba) Stdio.Sendfile: Don't attempt nonblocking I/O on plain files. Potential fix for "This file does not support nonblocking operation." in Stdio.Sendfile->writer_done(). * (grubba) Odbc: Added some more space for decimal values. Floating point and fixed point values needed additional space for the leading zero and decimal characters. * (grubba) Compiler [amd64]: Fix bug in F_FOREACH. The initial foreach counter may be set to non-zero when foreach goes over a ranged array. If the initial foreach counter is larger than the size of the array F_FOREACH started indexing outside the array. Fixes [bug 7426]. FIXME: Is there a corresponding problem with negative ranges? * (grubba) Odbc: big_typed_query() now knows about UUID values. * (grubba) Odbc: big_typed_query() now knows about time values. * (grubba) Odbc: big_typed_query() now knows about timestamps and dates. * (tobij) Stdio.exece(): Don't give away refs to members from the env mapping Because it's not too good in the case we fail to exec(), at least. * (grubba) Odbc: big_typed_query() now knows about numeric/decimal values. * (grubba) Odbc: Code cleanup in typed_result()->fetch_row(). * (grubba) Odbc: big_typed_query() now knows about floating point values. * (grubba) Odbc: big_typed_query() now knows about integer types. * (grubba) Odbc: Added support for value factories. Adds some more fields to struct field_info. These are intended to be used to convert binary data from the SQL server to appropriate values to in turn be returned by typed_result()->fetch_row(). * (grubba) Odbc: Default the field type to SQL_C_CHAR in odbc_fix_fields(). This allows for removing the fix-up loop at the end of odbc_fix_fields(). * (grubba) Odbc: typed_result->fetch_row() now returns Val.null for NULL. * (grubba) Odbc: Emulate bindings in big_typed_query(). * (grubba) Odbc: Added big_typed_query(). Note that the typed_result objects that this function returns still behave as the untyped result objects. This will be fixed soon. * (grubba) Odbc: Added typed_result. This class will be used to implement {,big_}typed_query(). * (el) Testsuite: test ++ and -- on UNDEFINED * (el) Interpreter: fix handling of UNDEFINED in ++ and -- This is done by always using the slow path for integer 0, which could be undefined. It would be nicer to have a svalue equivalent to get_pointer_if_this_type to check the subtype, but not all lvalues are svalues, so that wont work, either. * (grubba) Sql.tds: Added some missing TDS_CONV_WERRORs. * (grubba) Updated to tzdata2015a. * (grubba) ODBC: Got rid of temporary arrays in odbc_fix_fields(). This reduces the complexity of the code somewhat, and allows for adding more stuff to struct field_info. * (grubba) ODBC: odbc_fix_fields() now knows about the remaining SQL_SS_* types. * (grubba) ODBC: odbc_fix_fields() now knows about SQL_SS_UDT. * (grubba) ODBC: odbc_fix_fields() now knows about SQL_GUID. * (grubba) ODBC: Odbc.odbc_result is now Odbc.odbc.result. This allows for overloading of the result class, and is in preparation for implementing big_typed_query(). * (agehall) Added UTF-8 decoding of indices in BSON structures. * (grubba) Gmp.mpz: Support import/export from reversed network byte order. * (grubba) ODBC: Unifdef SQL_WCHAR. SQL_WCHAR has been available in all ODBC implementations for the last 10 years. * (el) Protocols.HTTP.Query: make sure connections are in nonblocking mode When connections are reused (either Stdio.File or SSL.File) they are initially in blocking mode. Make sure to switch the file object to nonblocking mode before calling is_open(). * (grubba) ODBC: Fixed typo in comment. * (grubba) SQL.tds: Fixed support for fetching negative NUMERIC and DECIMAL. * (grubba) ODBC: Allow space for a sign character in numeric fields. Fixes failure to fetch negative values in MSSQL NUMERIC(1,0) fields. * (grubba) Runtime: o_append_mapping() now cares about setters. Fixes testsuite test of F_APPEND_MAPPING. * (grubba) Interpreter: object_index_no_free() et al now return the type. * (grubba) Interpreter: lvalue_to_svalue_no_free() now returns the type of lvalue. * (grubba) Optimizer: Handle more cases of CLEAR_{,N_}LOCAL. This improves the code generated by the previous commit. * (grubba) Compiler: Clear local variables on pop. Local variables may get reused after pop, and such code expects getting clean variables. This also reduces the lifetime for various locks and similar to the expected range. Note that this reduces the quality of the generated code somewhat. * (grubba) Compiler: Fixed over-optimization of initialization to false. This optimization may only be done when the value being assigned actually is a zero. Also adds a corresponding diagnostic. * (grubba) Testsuite: Fixed typo in test of __INIT with zero. * (grubba) Sql.tds: Added support for SYBFLTN. This is the type used by MSSQL for fields declared "float" or "real". * (grubba) Sql.tds: Added support for SYBUNIQUE. This is the type used by MSSQL for fields declared "uniqueidentifier". * (grubba) Sql.tds: Added support for SYBDECIMAL. This is the type used by MSSQL for fields declared "decimal". * (el) Testsuite: initialization bug Variables which are initialized with objects that are logically false, end up being 0. This happens for instance whith Val.null and Val.false. * (grubba) ZXID: Survive zxid from before 20121020-142800. The number of arguments to zxid_parse_cgi() changed in version 20121020-142800. * (marty) release number bumped to 8.0.37 by export.pike * (marty) release number bumped to 8.0.36 by export.pike * (el) Testsuite: added test for a regression This worked fine before F_APPEND_MAPPING has been added. * (el) Testsuite: added testcase for undefined variables in sscanf The value of variables declared in sscanf calls is undefined if the sscanf call does not actually happen. It is impossible to detect this at compile time, so generating an error in cases where they are incorrectly used is not an option. The behavior proposed by this testcase is to always initialize them to UNDEFINED. Thanks to Chris Angelico for bringing this issue up and providing a testcase. * (el) Testsuite: fixed syntax error * (grubba) SSL.Cipher.KeyExchange: Require server_key_exchange for {EC,}DHE. Inspired by similar bug in LibreSSL. * (el) gdb_backtraces: do not use Pike_sp Pike_interpreter_pointer is not the correct one when printing the stack of a thread, which is not swapped in. It can even be NULL, when no thread is swapped in, which will lead to gdb_backtrace() to segfault. This happens when debugging deadlock situations. * (el) equal: allow comparing objects with getters setters/getters are marked as variables with special run_time_type. object_equal_p() did not handle that case and ended up calling low_is_equal with type PIKE_T_GET_SET which would lead to a fatal. This change makes object_equal_p() ignore getters. * (grubba) Graphics.Graph.create_graph: Fixed legend color box border. The bottom left corner was off by one pixel to the right. Fixes [bug 1826]. * (grubba) Graphics.Graph.create_graph: Cleaned up some code. * (nilsson) Changed curve() into get_curve() to be consistent with the other methods, and to properly mask the get_curve() in Nettle.ECC_Curve.ECDSA. * (grubba) Testsuite [Nettle]: Updated to new ECC API. FIXME: Crypto.ECC.Curve and Crypto.ECC.Curve.Point ought to implement LFUN::_equal() and/or LFUN::`==(). * (grubba) SSL.Cipher: Updated ECDH(E) key exchanges to new ECC API. * (grubba) Nettle.ECC_Curve: Curve-multiplication now returns Points. NB: This is not backward compatible with previous releases of Pike 8.0. * (grubba) Nettle.ECC_Curve: Added some documentation. * (grubba) __builtin.Nettle.ECC_Curve: Some indentation changes. * (grubba) __builtin.Nettle.ECC_Curve.Point: Use parent reference to size(). * (grubba) __builtin.Nettle: Moved Point to ECC_Curve.Point. This will allow for using parent references in ECC_Curve.Point. * (nilsson) A surgical introduction of the ECC Point object. What really should happen is that ECC Curve operations generate Point objects instead of gmp arrays. Then all x/y variables should be replaced with Point objects in Cipher. * (nilsson) Bugfixes and support for serialization. * (grubba) Nettle.ECC: Added initial implementation of Curve.Point. This is to simplify handling of points on ECC curves. Currently the code is sufficient to perform ECDSA, but eg encode and decode would be nice. TODO: Other code needs to be updated to accept Points. * (nilsson) ECC_Curve.Point can now deserialize x9.62 curve points. * (srb) pgsql: Drop unnamedstatementkey even if destroyed randomly. * (tobij) Standards.IIM: Locale.Charset -> Charset * (grubba) Precompiler: Fixed typo in generated output. * (grubba) Precompiler: Fix support for recent Pike 7.8. Pike 7.8.594 and later have TYPEOF() et al, but not set_program_id_to_id(). * (grubba) Protocols.LDAP: Attempt to pin connections to the same server. When using replication and DNS-round-robin for LDAP, it is common that the servers in the rotation aren't 100% identical, so attempt to have successive connections go to the same LDAP server if possible, otherwise higher level protocols (eg incremental updates) may be broken. Fixes [bug 7406]. Also improves support for IPv6. * (grubba) Testsuite [SSL]: Test client certificates for all versions of SSL/TLS. * (grubba) Testsuite [SSL]: Improved robustness of test_ssl_connection(). test_ssl_connnection() now survives getting multiple suites where the first argument is an unsupported suite. This previously led to getting complaints about not getting the expected suite. * (grubba) Standards.PKCS: Added some identifiers from RFC 4055. Also adds some RFC references. * (grubba) SSL.ServerConnection: Extract the public key from the client cert. This is needed to be able to validate the certificate verify message. * (grubba) SSL.ServerConnection: Fixed NULL-deref. There's no key exchange in progress at STATE_wait_for_verify time. * (grubba) SSL.ClientConnection: Send client certificate verify packet. Update certificate_verify_packet() and reenable the related code. Also fixes several FIXME's regarding the dual use of the certificate_state variable. It is now strictly used only for the server certificates. Client-side support for client certificates should now work. * (grubba) Testsuite [SSL]: Fixed some erroneous failures. The server_ctx list of suites needs to be restored after the Suite-B tests. Otherwise the server will select a different suite than the testsuite expects. * (grubba) Testsuite [SSL]: Use same DN for the RSA certs as for the others. The RSA cert is created via a different taste of the Standards.PKCS.Certificate.build_distinguished_name() than the DSA and ECDSA certs. Reorder the fields to make sure that the exact same DN is generated in both cases. Fixes issue where SSL.Context()->find_cert_issuer() either didn't find the RSA certs, or didn't found only the RSA certs. * (grubba) Testsuite: Added some tests of client certificates. * (bill) Nettle: build successfully on Windows * (bill) build: modules that invoke pike for building should now be able to do so. * (grubba) Crypto.DH: Renamed the DLDHE constants to FFDHE for clairity. The DLDHE draft has been renamed FFDHE. As these constants aren't yet used anywhere, rename them accordingly. Also updates the references for the constants to the latest drafts where they are defined. * (grubba) SSL [DHE]: Validate the Ys received from the peer. This is required by the current FFDHE draft, and is needed to protect the connection from MITM attacks. Also changes some alerts from unexpected_message to handshake_failure as required by the same draft. * (cederp) Handle read errors in Protocols.LysKOM.Raw. If there is a network outage, con->read() will return 0 (not the empty string) after a (long) while. Treat that properly by calling connection_lost() in that case as well. Fixed a backrace in conwrite by returning 0 if the connection is closed. (cherry picked from commit 7cdea47d8c28017dbdbff49607c811ca0472000c) * (srb) pgsql: Explicitly dislodge read mutex upon fd close. * (grubba) Compiler: Fixed some NULL-dereferences. expr4 nonterminals can be NULL for eg undeclared variables. Thanks to Jakub Krajewski <jkrajewski@opera.com> for the report. Fixes [Pike mailinglist 14323]. * (grubba) Master: Complain about inherited joinnodes and dirnodes. A common cause for this is an attempt to inherit a module that is a dirnode. Complaining at creation time makes it easier to find the mistake. * (grubba) Build: Yet another strdup() fix... * (grubba) Compiler: Fixed NULL-deref in tree optimizer. CAR for a F_*_EQ node may be NULL if the variable hasn't been declared. Fixes [bug 7397]. * (bill) windows: need stdint.h for uint* * (grubba) Windows: Improved robustness of strdup() workaround. * (grubba) Windows: Fixed memory leak. These malloc's were added in an attempt to track down a bug, and shouldn't have been in the previous commit. Also restores the mode bits on srs/main.c. * (bill) windows: calculate trailing/leading zeros (more) correctly. * (bill) windows: strdup is deprecated. * (grubba) Threads: Propagate thread abortion errors to wait(). A thread terminating by throwing an error now causes any corresponding wait() on it to rethrow the error (instead of just returning zero (0)). This simplifies detection of thread failures. * (grubba) Runtime: Renumbered the types for lvalue types. Stack types for values that aren't reference counted MUST NOT have bit 3 (8) set. Fixes type corruption bug for amd64 and T_SVALUE_PTR (and probably some others). * (bill) build: fix errors on Windows * (bill) build: more deattributification for Windows * (grubba) Build: Fixed building on non-WIN32. * (bill) build: fix uneven ifdefs * (bill) build: remove check for ssize_t and add check for io.h * (tobij) Nettle: be a bit better at providing pike_nettle_hash_update_func * (bill) build: attempting to work around Windows unhappiness. May not stand. * (bill) build: change visibility for Windows build * (grubba) Stdio.Buffer: Use ptrdiff_t instead of ssize_t. ptrdiff_t is C89, while ssize_t is POSIX. As we support some non-POSIX architectures, use the more portable type. * (bill) build: get COM working on Windows. * (bill) build: Windows buildability fixes. * (bill) build: starting to get CritBit working on windows. * (bill) build: more windows fixes * (bill) build: executable extension is not required (nor desireable) when building under Windows. * (bill) build: complete removal of --enable-dll option in order to build successfully on Windows. * (bill) build: help build on Windows * (bill) build: more fixes for windows. * (ph) Minimal optimization of mov_imm_reg * (marcus) Stdio.Buffer: Fix alignment problem in io_append_{short,int}_uc * (grubba) Compiler [amd64]: Fixed F_*CALL_BUILTIN* --with-debug. The use of ins_debug_instr_prologue() zapped ARG1_REG for at least F_MARK_CALL_BUILTIN. * (marcus) NetUtils: Ignore interfaces which are not up * (marcus) Testsuite: Handle endianness dependency in hash_7_0() * (marcus) Calendar: Increase fuzz in deltat test * (ph) Stop re-generating the prime table each build Since the list of the first X primes rather seldom change in this universe, keep it as a constant file instead. * (grubba) Build: Fixed warning in version.c. * (el) Testsuite: remove tests that expect random_seed to work * (grubba) Crypto.DH.DLDHE2048: Now with the correct value... * (grubba) Crypto.DH: Added DLDHE2048 from the latest FF-DHE draft. * (grubba) Compiler [amd64]: Fixed code generator for INC/DEC. Fixes [bug 7384]. * (grubba) SSL.Connection: Received fatal alerts now invalidate the session. * (nilsson) Don't crash on lazy initialized string buffers. * (grubba) Calendar: Fixed deltat calculation and tables. Also adds some tests. * (el) Configure: fixed test for __attribute__ support va_start and other macros expect the va_list as first argument. This test only produced warnings with most compilers, which is why this problem was never fixed. * (srb) pgsql: Use close callback to reliably react to remote closes. * (srb) pgsql: Improve backtraces in debugging mode. * (nilsson) Make cast() protected. * (grubba) Calendar.YMD: Improved dwim_time(). dwim-time() now knows about ISO 9601 timestamps with colons. Fixes [roxen.com #23993]. * (nilsson) Abort processing when fatal package is sent. * (nilsson) Fix a crash. * (grubba) SSL: Protected some create()s. * (el) Image.PNG: handle extra IDAT data more gracefully * (grubba) Testsuite: Test SSL session resumption. * (grubba) SSL.ClientConnection: Use a plain Session if none is provided. This avoids extraneous caching of client side sessions in a cache where they will never be looked up. * (grubba) SSL.Session: Default to creation with empty id. This is useful for client-side SSL, where there typically isn't a useful sessionid at start. * (nilsson) OO more. * (nilsson) UUID v4 is essentially just an random string, so let's use random string directly instead. * (grubba) SSL.File: Improved API for resuming sessions somewhat. * (grubba) SSL.Context: Ensure that session identifiers are unique. Now uses Standards.UUID to generate the session identifiers. This works around a bug in the testsuite where session identifiers apparently could be reused. * (grubba) SSL.Context: purge_session() now works client-side too. * (srb) SSL.ClientConnection: Added missing constant. * (grubba) SSL.File: Don't purge sessions on close notify failure. When closing the connection it is common that the peer has closed the connection directly after sending its close notification packet without waiting for a corresponding close notification from us. This is to be expected, and is not a reason for us to purge the session. * (grubba) SSL.File: Added API for resuming sessions. * (grubba) SSL.ClientConnection: Added some support for resuming sessions. * (grubba) SSL.ClientConnection: Keep track of the session identity. * (el) Image.ANY: fix use after free * (el) Image.PNG: do length check before checking for IEND * (el) Image.GIF: Fix leak Cloning of Image objects can throw exceptions. Push the colortable to the stack early, to prevent it from leaking in case of an error. * (el) Image.GIF: sanity check maxcode * (grubba) Protocols.LDAP: Corrected doc for client(). * (grubba) Testsuite: Fixed some state machine bugs in the SSL testsuite. In some cases the when both the client and server have emptied their send buffers, the last packet of data from the client may still be in transit, so wait for all data to arrive at the server before closing the server side of the connection. Fixes issue with getting spurious truncated data in the SSL testsuite. Also fixes bug where client->connect() detecting an expected handshaking failure caused the threaded test to backtrace. * (grubba) Testsuite: Added test of Stdio.Buffer()->_sprintf(). * (srb) pgsql: Timeout queries only when needed. * (grubba) Stdio.Buffer: LFUN::_sprintf() must not have side effects! sprintf("%s", buf) and sprintf("%q", buf) had the side effect of emptying the buffer (which is not what you expect when you use them for debug output...). * (srb) pgsql: FETCH is eligible for parallelisation too. * (srb) pgsql: Make better use of the Stdio.Buffer add/add_ints API. * (srb) pgsql: Case insensitive regexps, but more readable. * (srb) pgsql: Simplify regexps, add docs. * (srb) pgsql: Make SET synchronous to avoid surprises with subsequent queries. * (srb) pgsql: Using howmuch with a sizeof compare of the Buffer does not work. howmuch is the amount we need extra. It does not relate to the amount already in the Buffer. To prevent a race/deadlock we need extra signaling. * (srb) pgsql: Cannot use add_hint() here, the types have already been set in stone. * (srb) pgsql: Check for the desired buffer size before returning. * (srb) pgsql: Avoid race during buffer fill/read. * (marty) release number bumped to 8.0.34 by export.pike * (marty) release number bumped to 8.0.35 by export.pike * (srb) pgsql: Preserve type information if PG_DEBUG is defined. * (grubba) Master: Removed erroneous mutex. This mutex has survived since ~2000, and seems to never have been useful. In Pike 8.0 and later it could cause a deadlock, due to locking order together with the compilers internal mutex as used by decode_value(): Legend: CM: master()->compilation_mutex (now removed). IM: The compilers internal mutex. Thread 1: Thread 2: Notes: ---------------------------------------------------------- decode_value() compile() Lock IM. low_cast_to_program() findprog() low_findprog() CM->lock() Lock CM. compile() Wait for IM. low_cast_to_program() findprog() low_findprog() CM->lock() Wait for CM. This bug wasn't triggered before Pike 8.0 as then the compiler forced threads to be disabled on entry. FIXME: Do we need to retain the symbol "master()->compilation_mutex"? Fixes [bug 7366]. * (srb) pgsql: Slight speedup in column processing. * (ph) The buffer_error_program only takes one argument. This could probably be handled better. * (ph) Significantly faster encoding of integers > INT32_MAX. This version is about 200 times faster. * (srb) Fix some more docs. * (srb) Doc fixes. * (srb) pgsql: Docs tuned. * (srb) pgsql: /*semi*/final for efficiency. * (srb) Workaround c?-> bug. * (srb) pgsql: Off-by-one error. * (srb) pgsql: Rebalance threads, cut away some fat and unnecessary mutexes. The benchmark performance is now within spitting distance of the old pgsql driver for the unbatched single queries. For large batches (>20), the new driver beats everyone pants down. For single batches (==1), the new driver is about 2% slower than the old 7.8 version. * (srb) pgsql: reconnect robustness improved. * (srb) pgsql: Coalesce packets to reduce overhead. * (srb) pgsql: Only assign _portalname once, small regressionfix. * (grubba) Standards.URI: Support rel being absolute in combine_uri_path(). Roxen.fix_relative() calls combine_uri_path() with an empty base and an absolute rel to get rid of path segments with "." and "..". Fixes Roxen.fix_relative() getting a doubled initial "/". Also adds a related FIXME in reparse_uri(). * (grubba) Build: Rerun the precompiler when it has been changed. Adds a dependency for the generated files on Tools.Standalone.precompile. Also rewrites the Makefile rules to not use explicit dependencies in implicit rules, as they seem to be ignored by at least gnu-make. * (grubba) precompile: Make sure to clamp the integer range correctly. Fixes issue with Stdio.Buffer()->read_int32() having the type function(:int(0..-1)). Fixes [LysLysKOM 21057425]/[Pike mailinglist 14286]. NB: This bug also caused low_describe_type() to loop infinitely when describing the return type. * (srb) Update CHANGES. * (srb) pgsql: Disappearing filedescriptors need to be reported later sometimes. * (srb) This kludges around a parser bug in Pike 8.1. It's a bit difficult to create an isolated testcase out of this. Somebody please look into this. Without this patch, the following test results in the error below: > object b=Sql.pgsql(""); /usr/local/pike/8.1.0/lib/modules/Sql.pmod/pgsql.pike:696:switch(): Conditional expression is void. * (srb) pgsql: Pull two Stdio.Buffers apart. * (grubba) Image.SVG: Fixed leak on error in _decode(). The options mapping could leak in serveral error conditions. Also adjusts some related error messages. * (grubba) SSL.ServerConnection: Fixed support for resuming sessions. It's not a good idea to send the CCS packet twice... * (marcusc) Delay setup of backend wakeup pipe. This delays the wakeup pipe until after the backend is actually used. The main reason is that after fork() all copies of the process always have the same wakeup pipe. Waiting until the first use of the backend makes wake_up_backend() useful again in forked processes (as long as the backend has not been used before the fork). Fixes a bug in turboproxy, we use a master backend system where all modules are loaded and partially initializes in a 'master' backend, and new backends are then forked of from the master as needed. * (srb) pgsql: Be less destructive, signal then clear instead. * (srb) pgsql: Move direct multiset to a permanent pmod. * (srb) pgsql: Recouple mutexes for optimum performance. * (srb) pgsql: Remove cruft and decouple one shortmux. * (srb) pgsql: Merge shortlived mutexes to improve cache-locality. * (srb) pgsql: Improve debugging output. * (srb) pgsql: Eliminate parsing race for very fast servers. * (srb) pgsql: Discard data on portals that have already been closed. * (srb) pgsql: Set preparedname earlier to eliminate a race with fast servers. * (srb) pgsql: Show filedescriptor in %O. * (srb) pgsql: Do not bother to close unnamed statements. * (grubba) Build: simple_describe_multiset() is only used in PIKE_DEBUG. * (srb) pgsql: Move method closer to the data. * (srb) pgsql: Cleanup & ensure gotdatarowdesc runs at most once per query. * (marty) release number bumped to 8.0.33 by export.pike * (marty) release number bumped to 8.0.32 by export.pike * (frigolit) Don't print errors for WSAEACCES when ports are reserved in Windows. * (grubba) precompile: Allow UNDEFINED for voidable arguments. * (grubba) precompile: Added some newlines in the generated code. * (srb) pgsql: Destroy condition instead of the mutex for stability. * (srb) pgsql: Eliminate prepbuffer race (signal before wait and duplicate entries). * (srb) pgsql: Eliminate race while flushing output buffer. * (grubba) Build: Fixed some warnings in CritBit. * (grubba) precompile: Reduce warnings in the generated code. * (grubba) Build: Added PIKE_UNUSED_ATTRIBUTE. * (grubba) Build: Fixed warnings about unused arguments in threads.c. * (grubba) Manual: Updated the compatibility chapter. * (grubba) SSL.Cipher [ecdh]: Added note about point validation. There are attacks against ECDH/ECDHE that are based on providing points that aren't on the negotiated curve, so add an explicit note that the received points are validated in point_mul(). * (grubba) Nettle.ECC_Curve: Improved documentation about point_mul(). Added note that point_mul() validates that the coordinate is valid for the curve. * (srb) Internal types only: enum -> macros. * (srb) Update docs. * (srb) pgsql: Properly terminate the connection if the database does not exist. * (grubba) Updated C-level documentation of callbacks. * (srb) pgsql: Cosmetics. * (srb) pgsql: Release all locks early upon error. * (srb) pgsql: Connects failing due to insufficient resources handled more gracefully. * (srb) pgsql: Improve backtrace clarity of PGassist. * (srb) pgsql: Finetuned behaviour upon initial connection failure. * (srb) pgsql: Delay accepting a commit until all portals have completed. * (el) rename aligned_alloc to xalloc_aligned C11 defines aligned_alloc. This can lead to all kinds of confusion, so lets rename our internal function. * (el) Strings: silence a warning Using a function instead of a macro takes care of casting the first argument to a signed type, which silences a warning when the macro was used with unsigned types. * (srb) pgsql: Notify callers early when connections are not possible. * (srb) pgsql: Close race between a parse in progress and a Sync. * (srb) pgsql: Improve debugging output and release all locks upon error. * (srb) pgsql: Reset session urgently and deadlockfree. * (grubba) SSL.Connection: Fixed race condition with alert callbacks. to_write() could get called with the pending alert before the alert callback had determined what to do about the alert. This caused the http to https redirect fallback in Roxen to fail, due to to_write() having closed the stream before the callback could steal it. * (grubba) Process.spawn_pike: Added launcher argument. * (srb) pgsql: Reset prepared statement numbering upon cache invalidation. * (srb) pgsql: Slow down driver even further. Statements eligible to be automatically preparsed and kept in the statement cache have to be parsed synchronously too to prevent accidental reordering of parsing order. * (grubba) Updated to tzdata2014j. * (nilsson) Use Stdio.Buffer instead of ADT.struct. Fixes a bug where the code was stepping back in the buffer by reducing index, which isn't supported anymore in ADT.struct. * (marty) SNMP: Re-fix the lookup table sent to simple_der_decode. * (grubba) ZXID: Renamed internal function to avoid namespace conflicts. * (grubba) ZXID: Fixed some memory leaks on Session destruct. * (srb) protected -> private where it makes sense. * (ph) Fundamental properties of empty strings corrected. An empty string: - IS lowercase - IS uppercase 'STRING_IS_LOWERCASE' means the same string will be returned for lower_case(str), and 'STRING_IS_UPPERCASE' means the same string will be returned for upper_case(str). Having this be wrong for the empty string is not really a good idea, since when strings are constructed using += the bits will not be set correctly if you start with the empty string. Also note: All code using string ranges really needs a special case for the empty string, since its range of characters, when checked using check_string_range, will be 0..255 (loose check), or -MAX_INT32..MAX_INT32 (non-loose check). This is done correctly in the 'string_has_null' function, which is what is supposed to be used to check if strings contain null characters. * (srb) English grammar fix. * (srb) Elaborate error message about NULs in the string. * (srb) Fundamental properties of empty strings corrected. An empty string: - is NOT lowercase. - is NOT uppercase. - does NOT have a minimum and maximum equal to zero. * (srb) Fix formatcheck to accomodate for the optional 2nd argument. * (marty) Standards.ASN1.Decode.simple_der_decode requires combined tag ids in "types". * (grubba) Build: Fixed some warnings about freeing static memory. * (srb) Add documentation about the custom backend. * (grubba) Configure: Improved handling of empty ABI directories. * (srb) pgsql: Reduce the number of dynamically created threads. This patch pushes most of the dynamically created threads into the running local_backend. It specifically does not push the gotdatarowdesc one to avoid deadlocks. * (srb) Avoid ?-> operator for now. * (srb) pgsql: Run callbacks in a separate thread to keep session afloat. * (srb) Doc fixes. * (srb) Fix docs. * (srb) Fix code to match docs. * (srb) pgsql: #require required. * (srb) pgsql: #require Thread.Thread. * (srb) pgsql: Slow down driver by default, async parsing only on request. * (srb) Stricter types. * (srb) pgsql: Updated CHANGES. * (srb) pgsql: Support Val.null. * (srb) pgsql: Missed a spot where a portal could be undefined. * (srb) pgsql: Make statusfunctions wait until the connection has been established. The driver has survived moderate testing in production servers (Roxen), it is ready for production release. * (srb) pgsql.resync interface fixed. * (srb) pgsql: finetuning, cleanup, improved error response behaviour. * (srb) pgsql: Support PostgreSQL 9.4 authentication quirks. * (srb) Stdio.Buffer: Support offset parameter for add_hstring/read_hstring. * (srb) pgsql: Fixed reconnect behaviour, fixed textqueries, eliminated one race. All issues eliminated. I will run it in production servers as of now. * (srb) Stdio.Buffer: Support all types for add_hstring. * (srb) Sql.pgsql: New and improved full threaded version. Lower latencies, increased parallelism, theoretical elimination of all race conditions, simplified code, uses Stdio.Buffer, no C-helper anymore, less filling. As a new feature, introduces: send_row(), fetch_row_array() for increased efficiency, set_result_callback() and set_result_array_callback() for event driven database queries. * (srb) pgsql: Further finetuning, fix normal query() race condition, thread safe. Make the result object threadsafe (e.g. calling fetch_fields() and fetch_row() simultaneously from multiple threads on the same result object is supported). * (grubba) Build: Fixed warning about setjmp clobbering yyerrstatus. * (grubba) Build: Added configure option --enable-werror. The configure option --enable-werror now adds -Werror to the set of WARN flags. * (grubba) SANE: Fixed all warnings. * (grubba) Xenofarm: Fixed broken Makefile. * (erik) release number bumped to 8.0.31 by export.pike * (erik) release number bumped to 8.0.30 by export.pike * (grubba) Standards.JSON: Allow \' in strings. Some JSON encoders (eg ZXID) add extraneous escaping of single quotes in strings. * (grubba) Build [Nettle]: Fixed all remaining warnings with Nettle 2.7.1/gcc 4.7.3. * (grubba) ZXID: Added Session()->get_auth_info(). An explicit getter is needed when proxying via Remote. * (grubba) Testsuite [ssl]: Test the negotiated protocol version. Test cipher-suite driven protocol downgrade for all client/server combinations. Test that the negotiated SSL/TLS version is the expected version. * (grubba) Nettle: Use cpp to remove some dead code in the ILP32 case. This section of code isn't reached in the ILP32 case, as asize then can't reach above 0xffffffffUL which is needed to reach the code. Also reorders the code for easier use of cpp. * (nilsson) Address some warnings. * (ph) release number bumped to 8.0.28 by export.pike * (ph) release number bumped to 8.0.29 by export.pike * (ph) release number bumped to 8.0.26 by export.pike * (ph) release number bumped to 8.0.27 by export.pike * (grubba) Compiler: Fixed the NULL-deref some more. * (grubba) Compiler: Fixed NULL-deref. Fixes [LysLysKOM 21034222]. * (srb) push_integer() -> push_int(). * (grubba) ZXID: Added version(). * (grubba) ZXID: Added configuration option "IPPORT". * (grubba) ZXID: Changed arguments to authenticate(). Recent versions of the zxid library have an extra parameter "uri_path" that they want from the request. To avoid needing to pass this argument via enviroment variables, we now use some lower level functions. Fixes "null or empty cgi->uri_path=(null) qs(...) programming error". * (el) Testsuite: very basic test of F_APPEND_MAPPING * (el) F_APPEND_MAPPING: overwrite existing entries. The new append mapping opcode did not overwrite existing entries in the destructive case (when the mapping had only "1" reference). * (nilsson) Avoid using %O for 8-bit strings. * (nilsson) Don't spam the console with random data. * (ph) release number bumped to 8.0.25 by export.pike * (ph) release number bumped to 8.0.24 by export.pike * (grubba) Testsuite [ssl]: Fixed some special cases. The certificates used by the testsuite don't support the KE_dh_rsa and KE_ecdh_rsa suites in TLS 1.1 and earlier. This means that the corresponding deprecated suites will fail even after protocol version downgrade. Fixes [LysLysKOM 21032408]. * (nilsson) No longer scratch area. Fixed Pike case. * (grubba) Testsuite: Test cipher-suite driven downgrade. The full suite is now run when the minimum protocol version is SSL 3.0 for both client and server, and the maximum protocol version is the same for client and server. This allows testing of downgrading to older protocol versions due to the only common cipher suite being removed in the common protocol version. Also shortens "expected" to "exp" in lots of places to get past the m4 4096 byte limit. * (grubba) SSL.ServerConnection: Improved protocol fallback. Some cipher suites have been removed in later versions of TLS. If the client and server versions both were recent, but had no common ciphers that weren't removed in the negotiated version of TLS, the handshake used to fail. Now we instead try downgrading to older versions of TLS to see if there's a common implemented suite then. This fixes one of the common reasons for clients attempting protocol downgrades on connection failure. * (grubba) SSL.File: Added query_version(). Added function to query the protocol version in use. * (grubba) Optimizer [treeopt]: Support operator call short-hand. A short-hand notation may now be used to match operator calls. Eg the following fragment: F_APPLY(F_CONSTANT[TYPEOF($$->u.sval) == T_FUNCTION] [SUBTYPEOF($$->u.sval) == FUNCTION_BUILTIN] [$$->u.sval.u.efun->function == f_ge], F_ARG_LIST(X, Y)) can now be written as: F_GE(X, Y) * (el) Gdbm: fix testsuite Calling ->create() to open the database after close() is not supported anymore. Change the testsuite to reflect that. * (el) Gdbm: typo in error message * (grubba) Optimizer [treeopt]: Cleaned up parser somewhat. * (nilsson) Fixed error message. * (grubba) ZXID: Added check for zxid_cgi.uri_path. * (nilsson) backzone has been added * (ph) Fixed for(i;i<x;i++); crash The code will no longer generate invalid F_LT/GT etc nodes when asked to, instead it will generate a function call to the correct efun. I still do not know why this worked in pike 7.8. Next step: Make treeopt.in F_LT match CALL(&f_lt,ARGS(...)) * (grubba) release number bumped to 8.0.23 by export.pike * (grubba) release number bumped to 8.0.22 by export.pike * (grubba) Build [win32]: Some compilers (eg cl) don't like __attribute__. * (grubba) ZXID: Some more forward compat. The variable zx_debug was renamed to errmac_debug on 2013-11-13. The fields wsp_localpdp_obl_req and wsc_localpdp_obl_accept in struct zxid_conf are no longer strings but arrays. These changes seem to be sufficient to be able to link against current libzxid. * (grubba) ZXID: Some support for ZXID 1.19 and later. Some fields in struct zxid_conf changed names in ZXID 1.19:2013-12-04. * (marty) Fix bug where the write callback could be dropped if 0 bytes were written. * (ph) gmp.h defines c++ things if compiling with a c++ compiler. However, pike include files have to be included inside an extern "C". So, use extern "C++" when including gmp.h from pike includes. * (nilsson) Updated touch syntax. From Magnus Holmgren * (grubba) release number bumped to 8.0.21 by export.pike * (grubba) release number bumped to 8.0.20 by export.pike * (grubba) ZXID: More build fixes. Missed a few spots... * (grubba) release number bumped to 8.0.18 by export.pike * (grubba) release number bumped to 8.0.19 by export.pike * (grubba) ZXID: Fixed some build issues. One use of parent_storage() was missed when the API was changed. Some places where missed when the precompiler started prefixing symbols with the module name. * (grubba) release number bumped to 8.0.16 by export.pike * (grubba) release number bumped to 8.0.17 by export.pike * (grubba) Build: Improved support for --disable-binary. Don't attempt to make depend in post_modules when cross-compiling or --disable-binary, since a fresh pike is needed to generate the sources there. Fixes issues with source dists generated with --disable-binary and an old system pike, where broken files would show up in the resulting archive and not be regenerated on actual build. * (ph) Added minimal argument checking to cast() * (ph) Changed cast in Gmp.mpz from private to protected. * (grubba) release number bumped to 8.0.14 by export.pike * (grubba) release number bumped to 8.0.15 by export.pike * (grubba) Stdio: Fix compilation issues on OSes without dirfd(3C). Some operating systems (like eg Solaris 10) do not have dirfd(3C). Fallback to indexing the DIR with dd_fd or d_fd to get the fd. * (grubba) Stdio: Fix linking issues with static libgmp. Linking of Pike failed with "undefined reference to `__gmpz_import'" when libgmp was a static library (due to the Gmp module being linked into the pike binary before the _Stdio module). This fixes the issue by also linking _Stdio with libgmp. * (rosuav) Hilfe: Reference correct variable name in guard * (grubba) release number bumped to 8.0.12 by export.pike * (grubba) release number bumped to 8.0.13 by export.pike * (grubba) Gdbm: Fixed minor leak on exit. The Gdbm.Iterator program leaked on exit. * (grubba) Tools.*.features: Fixed some feature checks. Adds "Crypto.AES.GCM" and "Crypto.ECC.Curve" to Tools.Install.features. Replaces the check for (the nonexistant) "Crypto.GCM" with "Crypto.AES.GCM" in Tools.Standalone.features. * (grubba) Backend: Added some C-level documentation. All PMOD_EXPORTed functions in the backend should now have some (minimal) documentation. * (grubba) Backend: Make a few more internal functions static. This makes several CFRUNLOOP-related functions static. * (grubba) Backend: Added some linebreaks. Also rephrases some fatal errors. * (el) hash_value: fix hashing of trampolines Two trampolines are equal if there are the same function and created in the same scope. This patch makes sure hash_svalue is compatible and trampolines can now be reliably used as hash keys. Thanks to Stefan Gluszek <stefang@opera.com> for reporting this issue. * (grubba) Updated to tzdata2014i. * (grubba) Nettle.MAC: Added some function pointer casts to reduce warnings. Gcc complains about function pointer variables with arguments wanting void * being assigned with functions wanting specific struct pointers. Typical example: A pike_nettle_hash_update_func variable being assigned to umac64_update, which will be complained about because the former has a void * as the first argument, and the latter a struct umac64_ctx *. * (el) Nettle: compat with nettle < 2.7 the second argument of nettle_random_func was changed (along with many other parameters) to size_t. Use the compat type pike_nettle_size_t. * (el) Standards.JSON: fix -Wuninitialized warnings GCC complains about the variables m and a to be used uninitialized. This is not correct, so we silence the warning. * (el) Standards.JSON: fix a ragel file Commit 623497f223629c11556479c1f49b665a96a7e136 changed json_parser.c and json_parser.rl inconsistently. I assume the compiled one was actually tested, so this commit makes sure the .rl file compile into the same code as before this commit. * (el) Standards.JSON: keep the validation flag in a local variable * (el) Nettle.BlockCipher: make sure block_size is positive * (grubba) SSL.Constants: Minor documentation change. * (el) Fix -Wglobbered warnings. One of them was actually legitimate. * (grubba) Standards.URI: Reduce DWIM. Fixes issues with Roxen. * (el) FSEvents: misplaced ifdef * (grubba) Calendar: Added some more doc. * (ph) release number bumped to 8.0.11 by export.pike * (ph) release number bumped to 8.0.10 by export.pike * (ph) Updated char tests * (ph) Allow character constants of any size * (ph) Bignumns always exists, step 1. Always include gmp.h, it always exists now. * (nilsson) Limit character constants to four bytes to be 32 bit architecture compatible. * (grubba) Nettle.DES: Added notes about some temporary leaks. * (nilsson) Different Nettle libs have very different limits on the different DSA parameters. Attempt harder to provoke illegal parameters. * (nilsson) Always generate compile time error when divide by zero. * (nilsson) Adjusted tests for new key size. * (grubba) Nettle.DES{,3}: Fixed parity in make_key(). Fixes semi-infinite loop in make_key() (loop on bad parity), that tended to run out of Pike stack. * (nilsson) Allow for even lower precision in the test. * (nilsson) Adjustable precision. * (nilsson) Fix for systems without ECC. * (ph) Survive if Stdio.Buffer is compiled with an old precompile This removes some of the tests if the compilation is done using a precompile.pike that lacks support for mapping sub-struct members to pike variables. Or, as the tests were done previously, if the new precompiler was run using a pike that lacks support for prefix-cpp mode. * (ph) Added explicit defines for some precompile features * (ph) Use the feature flag instead of api_version. * (grubba) GTK2: gtk_scale_{add_mark,clear_marks}() were added in GTK 2.16. Fixes linking issues with old gtk. * (ph) Fixed the name of the rewind_on_error and rewind_key functions * (grubba) Oracle: Updated to the new parent_storage() API. * (grubba) Oracle: Removed fallback code for Pike 7.1. * (nilsson) Survive some missing hashes and ciphers. * (nilsson) When assignment runs code you'll get weird bugs like this. * (nilsson) Nettle 2.0 have 489 bits as minimum key size. * (grubba) smartlink [sh]: Support Linux kernel 3 and later... * (nilsson) Fix for systems without ECC * (nilsson) Fix for systems without SHA384 or SHA512 * (nilsson) Fix for systems without ECC * (ph) release number bumped to 8.0.9 by export.pike * (ph) release number bumped to 8.0.8 by export.pike * (ph) Fixed the libsane configure test * (el) Testsuite: test object _sprintf handling in sprintf() * (nilsson) Added Crypto.Random changes. * (nilsson) Mostly word wrapping. * (nilsson) Backports * (grubba) Stdio.Fd: Fixed minor race in write(). There were some (uncommon) cases where the backend poll flags weren't reset after a successful write. * (grubba) Stdio.Buffer: Fixed some documentation typos. * (el) sprintf: fix last argument handling with _sprintf lfuns Since I broke this in 7fdf942f6b5344b7d52c141441913f283661006a, sprintf did not properly keep track of the last argument when calling _sprintf lfuns. * (grubba) Tools.Standalone.autodoc_to_html: Improved robustness. Fixed NULL-deref in output_from_type(). * (el) String.Buffer: completed the removal of addat * (grubba) Tools.Standalone.git_export_autodoc: Improved robustness. * (grubba) Stdio.Buffer: Use the correct macro... * (grubba) Build: Fixed some typos in pervious commit. * (grubba) Build: SOL_TCP is called IPPROTO_TCP in Solaris. Fixes compilation issues on Solaris 11. * (grubba) Tools.Standalone.git_export_autodoc: Speed up repeated runs. Persisting of the export state for commits lacking documentation was lost in the non-doc detection commit. This caused some commits lacking documentation to be reprocessed every run of the extractor, and slowed down such runs from completing in a few seconds to taking ~ an hour. * (grubba) SSL: Added some notes about destroy(). * (grubba) _Roxen: Fixed buffer overrun in http_decode_string(). Also increases the strictness of a few related testsuite tests. * (grubba) Calendar: Added some further tzdata files. The tzdata directory should now be fully in sync with the tzdata2014h dist. * (grubba) Updated to tzdata2014h. * (grubba) Calendar.mkrules: Added some more files to ignore. * (grubba) Image.PNG: Fixed leak of arrays in __decode(). * (grubba) Stdio.File: Fixed autodoc markup error. * (grubba) Testsuite: SSL 3.0 doesn't support ECC... * (grubba) SSL.Session: Survive the client asking for ECC without curves. * (grubba) SSL.ClientConnection: Don't send extensions in SSL 3.0. SSL 3.0 doesn't have the concept of protocol extensions, so don't send any. In the ServerConnection case, we assume that a client that has sent extensions will accept extensions regardless of the negotiated protocol version. * (nilsson) Some backports from 8.1 * (nilsson) Removed a few GMP tests. * (grubba) Ignore generated file wnotify_config.h.in. * (grubba) SSL.File: Fix several issues in destroy(). destroy() still had several workarounds for the old backend approach (with update_internal_state() et al), when attempting to close the connection. Remove the workarounds and update the code to the new backend approach. Fixes issue with destroy() hanging in the local backend/throwing errors due to non-existant local backend. Also fixes a "Cannot access variables in destructed object." when a read_callback destructs the SSL.File object. Thanks to Tobias S. Josefowitz <tobij@tobij.de> for the report. Fixes [LysLysKOM 21005505]. * (grubba) SSL.File: Propagate fatal alerts to close and write callbacks. SSL did not call the close_callback on SSL.File()s that connect outgoing and abort the handshake by sending fatal alerts to the server. Fatal alerts generated locally (ie due to broken data from peer) are now signalled on the close and write callbacks with errno set to ECONNABORTED and fatal alerts received from the peer have errno set to ECONNRESET. Thanks to Tobias S. Josefowitz <tobij@tobij.de> for the report. Tentative fix for [LysLysKOM 21005266]. * (nilsson) Make TLS 1.0 loweset default TLS in Pike 8.0 too. * (grubba) ADT.struct: Added missing deprecated symbols buffer and index. * (grubba) Stdio.Buffer: Fixed return type for sprintf(). * (grubba) Stdio.Buffer: Added try_output(). * (grubba) Wnotify: Use the canonical case for WIN32 header files. * (grubba) Wnotify: Added missing template for FindFirstChangeNotification(). Fixes (re-)generation of wnotify_config.h. Also remove wnotify_config.h from version control, since it is generated from acconfig.h. * (nilsson) Fixed warning. (cherry picked from commit 0994f941f38b9b5361a653bf01b9453bd3500e7c) * (cederp) set_priority(): Use SCHED_IDLE for priority "lowest". On systems with sched_setscheduler and where SCHED_IDLE is defined, use it when setting the priority to "lowest". (cherry picked from commit 23e8e5699409887476005611ec6e6ce341a87f00) * (cederp) set_priority(): simplify code. Simplify an expression by removing a multiply-by-0 part of an expression. (cherry picked from commit f91b7e2e5519ca66700fee7ddc56f3e7b2c764a9) * (cederp) set_priority(): Fix going from realtime to normal priorities. The following code sequence (and many others) used to fail on systems that have both the sched_setscheduler() and setpriority() syscalls: set_priority("realtime"); set_priority("lower"); The first call would set the policy to SCHED_FIFO. The second call would not touch the policy, but just use setpriority(). The result is that the process continues to run with realtime priority. Fix by ensuring that the code calls both sched_setscheduler() and setpriority() when SCHED_OTHER is in effect. At the same time, reorganize the code somewhat to be more readable. (cherry picked from commit 48aa6ad98e390fb68e2055fa67f951e5fb32159f) * (cederp) set_priority(): add "normal" as a priority. This makes it possible to return to the default priority in a documented way. (cherry picked from commit 2d3e79777cd88b5c708447fba1b68783136539a0) * (cederp) Indent preprocessor directives in set_priority(). (cherry picked from commit 56a199cd3f0d7b2866e59e4562c23d8c4449b6e4) * (cederp) set_priority(): Raise an error on unsupported priorities. Previously, the were handled as "normal". (cherry picked from commit 1f8eb4566cc6b5e23e1d7084ec3d4f30f739145a) * (grubba) Mysql: Improved library detection. MariaDB is often installed without the mariadb client library (but with the mysql client library), so search for the mysql client library if the mariadb client library can't be found. Also adds searching for reentrant versions of the client libraries. Fixes compilation issues on machines with MariaDB server but not MariaDB client. * (grubba) Image.PNG: Minor change. Use the proper SET_SVALUE_ macro instead of accessing the fields directly. * (ph) Two somewhat related fixes to the PNG decoder 1: Handle any number of PNG chunks (up to the available memory) 2: Stop decoding once the IEND chunk has been processed. This fixes opera bug TURBO2-767: Crash when decoding http://extrafahaz.hu/fotok/image052e.png The image in the bug has a lot of data appended after the IEND chunk, and in total after decoding there was 339017 chunks. Since the decoder used the stack to build the array this meant that it had a tendency ran out of stack space, and caused fairly random crashes. Fixed by simply avoiding the stack, instead an array is built directly. Also, the PNG format says that the file ends after the IEND chunk, the decoder now enforces that, which makes the file decode significantly faster (now ~60 chunks instead of 339k). * (srb) Stdio.Buffer: Fix NOP call. * (grubba) Stdio.Buffer: Handle UNDEFINED nbytes in input_from(). The nbytes argument may be UNDEFINED (typically when the once argument has been specified). Handle it as if nbytes hasn't been specified. Thanks to Stephen R. van den Berg <srb@cuci.nl> for the report. Fixes some of [LysLysKOM 20998397]/[Pike mailinglist 14064]. * (unknown user) Fix warning message, and list Pike version in comment to help troubleshooting precompile issues. * (grubba) _Roxen: Fixed bug in http_decode_string(). Due to forward patching... * (nilsson) Fixed warning. * (grubba) _Roxen: http_decode_string() now supports wide strings. Wide strings may show up in URLs in eg tag attributes. Fixes [bug 7318]. * (el) Stdio: typo in documentation Buffer does not start with a vowel anymore. * (ph) The instruction names are only used in debug mode. Saves about 7k binary and 4k bss. * (ph) PIKE_NEW_MULTISETS is anything but. Also, it is not used * (grubba) SSL.Constants: Moved implementation notes to separate file. Also adds some notes about the workings of SSL.File. * (grubba) Nettle: Reference the programs being inherited. Make sure that there's a local symbol in the parent for the programs that we inherit. Otherwise the parent_identifier in the generated inherit may point back to some later override. This happens frequently when inheriting the State class. This fixes infinite recursion in eg Program.all_inherits() when called with several of the Crypto and Nettle classes. * (nilsson) Removed some old compat code. * (grubba) Stdio.File: Pass ::write to Stdio.Buffer::output_to() et al. This fixes infinite recursion when using Stdio.FILE with output buffers. * (grubba) Stdio.Buffer: output_to() et al now support functions. This reduces the need for proxy objects in higher level code using Stdio.Buffer internally. Also adds support for subtyped objects and multiple inheritance of Stdio.Fd et al. * (el) block_allocator: use Valgrind macros in the right order When sorting the free list during ba_walk(), the Valgrind macros were used in the wrong order. This led to spurious Valgrind warnings. * (grubba) Stdio.File: Disconnect the old output buffer properly. * (grubba) Stdio.File: Added query_buffer_mode(). * (grubba) Stdio.File: Name space cleanups. Multiple symbols in Stdio.File are now protected: * {in,out}buffer * ___{read,write,close,read_oob,write_oob,fs_event}_callback * ___id Moved the {read,write}_callback_t types to the Stdio module proper. Also adds a do {} while(0) wrapper to the CHECK_OPEN() macro. * (unknown user) Fix "make bin_export" on OS X to not include phantom resource fork file. * (unknown user) Fixed yet another Clang warning. * (unknown user) Fix compile errors in emulated accept4() added in 236e8efea9. * (unknown user) Fix a bunch of Clang warnings. * (el) CHANGES: one typo * (el) Nettle: moved rsa_unpad() to nettle.cmod rsa_unpad() does not actually depend on hogweed and is used without it. This fixes the Crypto module when compiled with old nettle versions (without hogweed). * (el) Mysql.list_fields(): support more field flags * (ph) Some changes to CHANGES. Mainly rewording things, added some notes about Stdio.Buffer * (nilsson) release number bumped to 8.0.6 by export.pike * (nilsson) release number bumped to 8.0.7 by export.pike * (grubba) Stdio.File: Support buffering in write(). Stdio.File()->write() now buffers in the output buffer if there is one, and then to the actual fd. * (nilsson) Simplified debug a bit. data is always an array here. * (nilsson) Re-add early exit if not a full write was accepted. This is most often an optimazation. * (nilsson) No need to limit data to write here. * (nilsson) While any data can be sent, continue sending. * (nilsson) Don't corrupt send counter on error. * (nilsson) Fixed output_to nbytes feature for non-file objects. * (nilsson) io_rewind is already applied in io_call_write. Don't do it again in output_to. * (ph) Stdio.Buffer now works on 32bit systems * (ph) Optimized case for array += ({..}) when refs==2. This was sort of done before, but it first assigned the lvalue to 0, then assigned it back to the array once done. This new version is about 2x faster, improving the "append array" benchmark by about 60%. * (ph) Added a simple append_mapping instruction. Much like append_array, but for mappings. This speeds up the append mapping benchmark by about (currently) 1000x. However, that is somewhat misleading since the refs optimization is not done currently since the wrong assignment operator ends up being used. Even when that is fixed the speedup should is still more than 2x, however. * (nilsson) Whitespace changes * (ph) Removed MAX_FD configure test It only returns the current max anyway, which is usually smaller than the max if you are running as root, and can also be changed at any time at runtime. Instead, use sysconf(_SC_OPEN_MAX) when available if needed, and as a last resort a hardcoded value (on Windows), but as a secondary change all uses except two was removed: o Stdio.get_all_active_fd - On systems without /dev/fd and /proc/self/fd. o On NT, the size of FD_SET is now set to a hardcoded value (64k). The rewrite of get_all_active_fd also speeds it up a lot. Not that it is a frequently used function. * (ph) Do not test each and every file in ABI dirs Once we know that the directory fulfills the search conditions, stop running file on the files. Saves about 30 seconds on a full configure run for me. * (ph) Fixed a few typos * (ph) Whitespace changes only * (nilsson) Silence release script warnings. * (grubba) Stdio.File: More race fixes in connect() [bug 7293]. It seems the backend on Linux sometimes may trigger before the connect(2) is done with POLLIN and a state where read(2) fails with ENOTCONN. Reduce the race condition by inhibiting backend callbacks on the fd during connect(2). * (marty) install.pike: Update CXX smartlink path to installed path as well. * (nilsson) Fix typos. * (ph) Avoid getting the precompile output twice in the same file Sometimes pike crashes when exiting (mainly with cleanup on exit enabled). If so, it might be that the precompiler already genereated output. When the next pike is then tried we get the precompile output multiple times in the generated file * (ph) static X -> protected X in autodocs * (ph) Change from 10 to 0.5 second timeout in OOB testing. If we have not received the data we are sending to ourselves in .5 seconds it is higly unlikely we will get it any time in the next 9.5 seconds. * (ph) Added note about this:: to CHANGES * (ph) Unified the automatic bash selection We already did select bash in the toplevel makefile to run configure if desired, we now set the CONFIG_SHELL variable there as well. This makes the test in configure.in 100% instead of 99.9% redundant. * (ph) Added "this" to the list of predefined strings * (nilsson) Fix warnings * (nilsson) Destruct the mutex after we stopped using it. * (nilsson) Don't leak at exit. * (nilsson) Stdio.IOBuffer -> Stdio.Buffer (part 2) * (nilsson) Stdio.IOBuffer -> Stdio.Buffer (part 1) * (nilsson) Now even workier. * (nilsson) Don't fail twice. * (grubba) Java: Fixed compilation issues with JNIs not having UNUSED(). Many (most?) <jni.h> header files don't define UNUSED(), so the macro doesn't always exist as we've undefined it before including <jni.h>. Use the new PIKE_UNUSED() macro instead. * (grubba) Build: Added macro PIKE_UNUSED to avoid name-clash. * (grubba) Stdio.File: Fixed race condition in nonblocking connect(). Potential fix for [bug 7293]. * (nilsson) _Image_WebP now compiles. * (grubba) IOBuffer: Propagate read errors in input_from(). input_from() now returns -1 on read error. Also minor optimization to avoid extra read(2) call when reading a multiple of 4096 bytes. * (ph) Commited forgotten support function * (ph) [precompiler] Use the correct types for classes and objects This includes programs in the cmod file and external programs. This makes the typechecker less odd, as an example the IOBuffer class functions that return an IOBuffer will not give warnings along the lines of "object of type IOBuffer can not be returned from a function returning object(IOBuffer=__Stdio()->IOBuffer)". You can also use any object type as arguments and return types, although you still have to use object(X.Y) in most places due to the parser. * (ph) Stricter types for Image.WebP. * (ph) Stricter types in buffer.cmod * (ph) Removed the a-bit-too-generic PROG_BUFFER_ID. * (nilsson) Reworked some of the debug code. * (nilsson) Only attempt to import PEM CERTIFICATE parts. * (nilsson) Somewhat more unwieldy parts interface for single messages, but easier for e.g. certificate chains. * (nilsson) Clean up debug code a bit. * (nilsson) this_program:: -> this:: * (ph) Do not count programs without storage as gmp.mpz objects. * (grubba) Optimizer: Fixed over-optimization of F_ASSIGN_SELF nodes. F_ASSIGN_SELF nodes weren't marked as OPT_ASSIGNMENT, so they could sometimes be removed by the optimizer. Also fixes some related optimizer and type-checker issues. Thanks to Chris Angelico <rosuav@gmail.com> for the report. Fixes [LysLysKOM 20983743]. * (ph) [precompiler] Generate the various *_num variables conditionally. If default_cmod_storage is allowed to default to static, and the variables are not used, do not generate them at all. This rather significantly shrinks the init functions for large classes, and saves 8 bytes of ram per function at least. * (ph) Support this::x for variables in this object. This is equivalent to this_program::x, but shorter to write. And, incidentally, more logical and more like other languages. * (marcusc) Don't backtrace when local_backend is missing. * (ph) Also support objects that inherit mpz objects as inherit 0 as mpz objects. * (nilsson) Simple testcase for secure_der_decode. * (nilsson) No, I had it right the first time. (Though DSA wasn't.) * (nilsson) Verify that no additional payload is hidden in ASN.1 structures. * (nilsson) No parameters means one element less, not a Null element. * (nilsson) No parameters means one element less, not a Null element. * (nilsson) Support dates beyond 2050. * (nilsson) Support initialization from calendar object. * (nilsson) Added GeneralizedTime. * (nilsson) Fixed warning. * (nilsson) Fixed warning. * (nilsson) We don't test for C89 functions anymore. * (grubba) Stdio.File: Support buffering in read(). Stdio.File()->read() now reads from the input buffer if there is one, and then from the actual fd. * (nilsson) All deprecated last. * (nilsson) Corrected comment. * (nilsson) Make make_key_usage_flags internal for now. * (nilsson) Removed one level of indirection and inherit SSL.Port directly into SSLPort. * (rosuav) Document Program.all_inherits and give an example * (nilsson) Added validation method and _sprintf. * (nilsson) Tidy up the signature verification a little. * (nilsson) Set keyAgreement flag on ECDSA certificates. * (nilsson) Verify DH parameters. * (grubba) Stdio.Fd: Map _errno. Make it possible to set the errno for a Stdio.File from Pike code. Also added some minimal documentation for the other mapped fields in Stdio.Fd, as well as moving the documentation for the low-level functions from Stdio.File to Stdio.Fd. * (grubba) Stdio.File: Support UNDEFINED as the first argument to read(). * (grubba) Compiler: Improved diagnostics. The fatal "Internal error: Not allowed to add more identifiers during second compiler pass" now informs about what the identifier was. * (nilsson) NPN is removed. ALPN is added. * (grubba) SSL.Cipher: Improved debug message. * (ph) Added rewind_key, much like rewind_on_error, but not automatic. Also speed up read_cstring about a factor of two. * (ph) Added read_hint and add_hint They read and add integers encoded like hstrings, first a length then the number. * (ph) Survive the SSL.File read callback closing the file. * (tobij) Stdio.IOBuffer.UnwindKey: allow explicit ->rewind() * (ph) Added Stdio.IOBuffer::rewind_on_error. Use this function to cause the buffer to be rewound to the location it was at when the function was called if the object it returs goes out of scope. * (el) Stdio.IOBuffer: bad return type of add_int32() * (rosuav) De-hackify (slightly) the GTK2 constants guard * (rosuav) Typo fixes in GTK2.ScrolledWindow docs * (nilsson) Don't print out connection close. * (grubba) Runtime: Added check and fallback for accept4(2). accept4(2) is a system call available on current Linux and many BSDs, that allows for setting the close-on-exec and non-blocking flags on the resulting fd. * (nilsson) Pad non-pkcs signatures to key size. * (nilsson) Removed debug. * (nilsson) Pre-commit c-t. * (nilsson) Moved the compat generate_key into the deprecated section. * (nilsson) Some refactoring. * (nilsson) Continue to read if there is more than Stdio.DATA_CHUNK_SIZE data available. * (grubba) SSL.File: Preparations for adding the new IOBuffer APIs. This renames read_buffer to user_read_buffer and adds (unused for now) user_write_buffer. This is to make it clearer to see on which side of the encryption the buffers are. * (grubba) Stdio.File: Some minor documentation updates. * (el) Protocols.WebSocket: use Stdio.IOBuffer * (el) Stdio.File: removed notify() This API has never been completed and does not work as advertised. Also, dnotify has has been superseded by inotify in 2005 which is supported as System.Inotify. * (ph) Fixed branch * (ph) Fixed error in F_SIZEOF_LOCAL_STRING when the argument is not actually a string * (ph) Added F_SIZEOF_STRING and F_SIZEOF_LOCAL_STRING We really should pass on the type to the code generator instead, I think. There should also be a "#pragma promise_correct_types" or something that would guarantee that the types are correct, and crash and burn if they are not. The generated code would be significantly smaller and faster. * (ph) Do not warn about deprecations in 7.8-compat * (ph) Added more direct mapping to seek. Also added SEEK_DATA and SEEK_HOLE support if they are supported by the OS (solaris, freebsd, linux). In order to keep compatibility the SEEK_<whatever> constants are actually strings. Deprecated the old seek( offset, multiplier, adder ) version of seek (which was, according to the documentation, obsolete before year 2000). * (ph) Added F_NOT amd64 edition. * (grubba) Strings: Added comment. * (nilsson) The TLS padding extension is implemented. The actual extension ID is still undecided, but doesn't matter. * (grubba) SSL.Constants: Converted list of RFCs into a checklist. This is to make it easier to keep track of what has been implemented or not. FIXME: Should we move this to a separate file (eg implementation-notes.txt)? * (grubba) Gdbm: Fixed some documentation typos. * (nilsson) &x[0] -> x * (grubba) SSL.File: Use an IOBuffer as read_buffer too. Switches from using a String.Buffer to an Stdio.IOBuffer for read_buffer. * (ph) Added read_sint for read signed integer. The reverse might be more obvious (read_int for signed, read_uint for unsigned), but at least it exists now. Also fixed so that add_int works for all negative numbers, and optimized it rather significantly for bignums (it no longer creates a string copy of the bignum value). Also added a simple add_padding() function to add a few bytes of data set to a specific value (basically memset) * (grubba) IOBuffer: Use add_ref(). * (nilsson) Removed compat support for Pike 7.4. * (tobij) signal_handler: don't "randomly" change errno in receive_sigchild() * (grubba) Parser.HTML: Added mode quote_stapling(). This is a compatibility mode with the Pike 7.8 and earlier Parser.HTML. Do not use if you can avoid it. * (grubba) Parser.HTML: Reduce pushing of empty strings. The empty string was pushed before and after every quoted attribute. This delays pushing of the empty string until after the attribute value has been parsed and it was empty. This avoids having to call f_add() for every quoted attribute to concatenate the strings. * (grubba) SSL.Constants: Encrypt-then-MAC is now RFC 7366. Updated reference. Also adds a note about the "Prohibit RC4" draft. * (grubba) SSL.File: Use only nonblocking operations internally. Always keep the internal stream in nonblocking mode to eliminate any risk of hanging in eg IOBuffer()->output_to(). * (ph) Do not show compile errors for tests testing compile errors. * (ph) Updated the Parser.HTML testsuite It now assumes that ending a quote also ends the argument (or attribute name). We are still very far from a true HTML5 parser, but at least this makes parsing live websites somewhat possible (as an example, yandex.ru had <tag style=...id=...>) * (ph) Fixed signed/unsigned warning * (ph) Allow adding chunks bigger than 2^32 at a time using add() and friends. Also, instead of saying you are trying to read too much when reading -<whatever> bytes using read or try_read you will now get an error indicating you are reading a negative number of bytes, which is hard. I guess it might unread(), but that would be highly unexpected. * (ph) Fixed the read and write callback types. This makes them more usable in strict_types mode. Since the types are now so long they use a typedef. * (ph) No, actually, it is not reached. This saves a few bytes of binary size. :) * (ph) Do not trigger the write callback again when nothing is written This saves the user from checking sizeof(buffer) before doing buffer->output_to(...) * (grubba) IOBuffer: Added try_read(). This is an analogue to Stdio.File()->read(). * (grubba) mkpeep: Fixed warning. * (marty) Win32: Map ERROR_DIRECTORY to ENOTDIR. Fixes [Bug 7271]. * (srb) Simplify code, speed up fast path. * (srb) Eliminate add_short from testsuite. * (grubba) IOBuffer: Fixed fatal "Invalid io_rewind_on_error nesting". The value in io->locked_move was off by one. * (ph) Revert "IOBuffer: Optimise and fix range checks." This reverts commit 91460a41b2b68b9d745827a07b6762adc99e3ed9. This introduced several errors, including some that causes buffer overruns. It also made the code biger on average (just check using size). Please do not change the math unless you are very certain it will work. Also, please trust the compiler, both to unroll loops even if it does not make sense and to optimize obvious comparisons, yes? Obvious example: check_avail_mul suddenly is pointless. The whole idea with that function is to _safely_ check if A*B is bigger than the buffer. Consider A*B >being > NATIVE_INT_MAX. * (srb) We object to objekt. * (srb) IOBuffer.cstring to parse \0 terminated C-strings. * (srb) IOBuffer: Optimise and fix range checks. Eliminates some of the recursions. * (ph) Also removed add_short * (ph) Added a few more amd64 opcodes, the comparisons. This adds support for F_EQ, F_NE, F_LE, F_GE, G_LT and F_GT. They could be better, it would be simple to add floats, as an example, especially in F_EQ and F_NE (they /almost/ work for floats, nan complicates things however). * (nilsson) Removed add_byte. We have add_int8. * (nilsson) Fixed the decoder callback prototype and the Sequence decode_primitive (is this every called?) * (nilsson) Better debug. * (nilsson) Added some __deprecated__ * (nilsson) Remove redundant check. * (grubba) SSL.File: Use an IOBuffer to buffer write()'s. This changes the write_buffer implementation from using an array(string) to using IOBuffer. Caveat: It is unknown whether this is dead-lock free in threaded blocking mode. * (nilsson) We apparently don't need the end_decode_constructed callback. * (nilsson) Use Stdio.IOBuffer instead of ADT.struct * (nilsson) Unused local variable. * (marcusc) Workaround for precompiler issue in IOBuffer. The precompiler generates invalid code and fails to compile when PRECOMPILE_API_VERSION < 5. Generated code ends up inside the #ifdef-clause. * (ph) Improved performance in output_to noticeably Also, do not crash if other threads use the buffer while output_to has been called. It was very very intentionally not threaded. If we _need_ thread support (say, we want to support writing to blocking files in the background) the buffer class has to be rewritten quite a lot. Most importantly it can not allow anyone to touch it while the other thread is using the memory, which in turn means that it has to be refcounted, and operations on it while refs > 1 will have to be a big no-no, or copy all data. It is rather hard to use the buffer if it behaves like that, mainly when it is used as an output buffer for a file (it is assumed that the add functions are called to add output then, and if the writing is done in a thread it will be likely to cause issues) Hence the total lack of THREADS_ALLOW in the buffer object. The alternative is to locking to all buffer functions. Or, I guess, we could just leave it as is and hope nobody does antything "mean". Alternatively, use the kernel async_write code on linux, that would make output_to nonblocking even for blocking files on that platform, and hopefully the memory will be copied when the system call returns, and it is thus safe to change it. The main issue with output_to + write + threads is that the threads are enabled before the system call has copied the data, and you will thus get a spurious error if the buffer is reallocated in another thread. * (ph) Make compile errors in tests display the correct line. * (ph) Since IOBuffer::_size_object now show the actual memory used a test had to be changed * (ph) When we know the types we can optimize pop and friends. Use that. * (grubba) IOBuffer: Improved support for threading in output_to(). * (grubba) Precompiler: Make the object subtype available. For object arguments the subtype (ie inherit number) is now made available as <name>_inh_num. Piggy-backs on the recent format version bump. * (nilsson) Don't allow the GNU TLS workaround to remove all certificates. * (ph) As it turns out io_trigger_output is inlined in every location using io_append. Fixed that. * (ph) Saved 200 bytes binary size and made the code faster. One lesson learned: pop_n_elems is rather big. * (ph) Use the get-memobj-pointer function and some other cleanups. The compiled code is now 20% smaller. * (ph) Added the function 'get_memory_object_memory'. It is used to get the length, address and size shift of a memory/buffer object storage. * (ph) Removed unused function That does not compile with a C++ compiler, incidentally * (ph) Let end quotes actually end arguments. This disallows the somewhat strange concatenation of arguments by using different quote character that was allowed before, but is HTML compatible. <a href="test"foo=bar> is to be considered two arguments. * (el) Stdio.IOBuffer: wrong return type of read_int32 * (grubba) IOBuffer: Support file objects with overloaded write(). FIXME: Support subtyped file objects? * (srb) Remove String.Buffer.addat(). * (srb) Revert to String.Buffer simplex. Lost functionality needs to be found in IOBuffer. * (srb) The compiler will do this implicitly. * (srb) Compilerhints. * (srb) Fix typos. * (srb) Fixed, so drop note. * (srb) Improve glue with libpq. * (grubba) IOBuffer: Use ptrdiff_t instead of ssize_t. ptrdiff_t is C89, while ssize_t is POSIX. As we support some non-POSIX architectures, use the more portable type. * (tobij) Revert "precompile: new nonstatic flag" That sort of breaks with older precompiles... This reverts commit f7f9f93cb2ea4d1ba6cd429eb111844b54a347d9. * (tobij) precompile: new nonstatic flag * (grubba) Build: More precompiler DEFAULT_CMOD_STORAGE fixes. Some symbols that need to not be static: backend.cmod:Backend_program builin.cmod:f_backtrace() iterators.cmod: f_get_iterator() Some symbols that were forward declared: post_modules/Nettle/cipher.cmod:f_Nettle_DES3_fix_parity() post_modules/Shuffler/shuffler.cmod:Shuffler_program * (grubba) Gmp: Fix compilation issue with the new precompiler. The DEFAULT_CMOD_STORAGE macro defaults to "static" with the new precompiler, but in Gmp eg the *_program constants are cross-referenced between different cmod files, and so must not be declared static. * (ph) Added a few read_int<size>() functions for common int sizes. * (ph) Moved some common code to functions. Also use the new "map variable from structures" support to remove two getters. * (ph) Allow the mapping of variables from inside structures added using CVAR. This is done by simply writing the name of the structure followed by "." and then the member name. Bumped PRECOMPILE_API_VERSION by one. This shows a somewhat irritating shortcomong of api_version, however: This kind of variables are supported even when cpp prefix support is not. * (grubba) Revert "Store new malloced value instead." This reverts commit a9693064380ac62005cdd28f22b447902644a72f. As mentioned in [LysLysKOM 20949405] (which probably hasn't been exported correctly to the mailinglist yet): The old code looks correct to me. * Restore s->s->len to the value it had when s->s was allocated (aka s->malloced). * Reallocate s->s with the new (now known) final length. The question does however arise whether the code is correct on realloc failure. * (grubba) IOBuffer: Fixed string leak. Also fixes some potential related leaks. * (srb) Shuffle elements around so that IOBuffer can access it easier. * (srb) Export unlink_pike_string. * (srb) Silence warnings. * (srb) Giant kludge to support 2^32-1 unsigned values. * (srb) Resistance is futile, ye shall be assimilated. String.Buffer on steroids; embraces and extends IOBuffer. * (srb) Store new malloced value instead. * (srb) NUL terminate shared strings in just a single spot. * (srb) Correct calculation for string sizes. * (srb) Nobody needs this function. * (srb) Faster code. * (grubba) IOBuffer: Propagate errno to the file object on error. * (grubba) IOBuffer: Return -1 from output_to() on write error. * (grubba) IOBuffer: Fixed some AutoDoc markup issues. * (grubba) IOBuffer: Survive cyclic arrays. * (grubba) IOBuffer: Fixed warning. * (grubba) IOBuffer: Fixed compilation error --with-rtldebug. * (grubba) SSL: Fixed typo in comment. * (ph) Fixed autodoc error * (ph) IOBuffer: Added some more tests and fixed errors found At least almost all functions in IOBuffer have some basic tests now.. * (ph) Fixed IOBuffer.add_int * (ph) Fixed tests for IOBuffer to actually do something * (ph) IOBuffer: Cleanup of some code. * (ph) Some IOBuffer work o Made all (I think) functions atomic. Either they work or they do nothing (except throw an error or return 0). o One minor optimization to avoid copies when strings/system.memory object etc are added to an empty buffer. Unless you add more data the buffer is just moved to point to the object that was just added. The malloced buffer is still kept around, however. o Added a very very basic testsuite for IOBuffer. More to come. * (ph) This sleep does not seem to be needed on modern linuxes. This makes the socktest about 20x faster. * (ph) Ignore response_and_finish if the FD has been closed * (nilsson) Make the code a bit smaller. * (nilsson) Fail signatures with the wrong size. This may be a compatibility issue. * (nilsson) Tests for the RSA-padding bug in pkcs_verify. * (grubba) IOBuffer: Some documentation fixes. * (nilsson) Added some references to PKCS#1 * (grubba) Optimizer: Syntax cleanup of some rules. * (grubba) Optimizer: Added more rules for negation and complement. * (nilsson) Signatures needs to be padded to the full size. * (nilsson) Always make the certificate the default certificate. * (grubba) IOBuffer: Improved error recovery for read_h{string,buffer}(). Don't advance the buffer pointers if there's not enough data. NB: Not a 100% robust. It will fail if io_avail() throws errors, or if the holerith length is negative or too large. * (ph) Disable the "new" constants for now. These seem to be Gnome1 only. * (ph) Some documentation tweaks * (el) Valgrind: suppress some warnings * (el) block_allocator: do not keep empty pages around In certain cases the block allocator kept around free pages. This happened with markers used by the gc. * (rosuav) Enable more GTK2 constants * (rosuav) GTK2 docs: Add a space to the warning messages to make the output easier to parse * (rosuav) Add property list for GTK2.CellRendererSpin * (rosuav) Fix warnings on GTK2 docs generation * (rosuav) Fix the documented inheritance for GTK2.CellRendererSpin * (nilsson) Added get_certificates(). * (ph) Fixed call_out test * (rosuav) Check in the two new images created by 127f45 * (ph) Fixed autodoc syntax error * (ph) Allow "read only once" more for input_from in IOBuffer. * (ph) The id in callbacks now defaults to the Stdio.File object Note that this is never saved anywehere in this case, it is just that if the id is 0 the object is used. inputbuffering in blocking mode now mostly works. The line_iterator now works (but is highly inefficient) in buffered mode. * (ph) Removed stdin/stderr/stdout variables in the 7.8 compat stdio. Keeping them generates about 100 lines of warnings when the file is compiled due to incompatible types for everything different between Fd_ref and Fd, more or less * (nilsson) Only generate keys when none are supplied. Call add_cert on the correct object. * (nilsson) Don't crash on missing certificates. * (nilsson) buffer isn't a member of the new ADT.struct * (nilsson) expf, expl, floorf and floorl are C89, so assume they exists. * (nilsson) Allow add_cert private key to be a DER encoded string. * (nilsson) Improved non-crashing abilities. * (nilsson) Check that key in CertificatePair is set. * (nilsson) perror test is not used. * (ph) Include a constant in Stdio.Port for reuseport and fastopen support. Especially SO_REUSEPORT needs different code if it is supported than when it is not. * (nilsson) signal is C89, so assume it exists. * (nilsson) strerror is C89 , so assume it exists. * (grubba) Updated to tzdata2014g. * (nilsson) setlocale is C89, so assume it exists. * (nilsson) setbuf and setvbuf are C89, so assume they exists. * (nilsson) perror is C89 and 4.3BSD (and the result of this test isn't used). * (nilsson) localtime, gmtime and mktime are C89 and 4.3BSD, so assume they exists * (nilsson) getenv is C89 and 4.3BSD, so assume it exists * (nilsson) isgraph is C89 and 4.3BSD, so assume it exists. * (nilsson) strcoll is C89 and 4.3BSD, so assume it exists. * (nilsson) clock is C89, so assume it exists. * (nilsson) Fixed warnings. * (nilsson) Fixed a few warnings. * (nilsson) port.h is included by global.h * (nilsson) Complete reversal. Give all the port macros arguments. * (nilsson) Compile fix. * (nilsson) Rearrange a bit. * (nilsson) Moved the WIDE_* macros to stralloc since they have nothing to do with portability. * (nilsson) ldexp is C89 and 4.3BSD * (nilsson) frexp is C89 and 4.3BSD * (nilsson) vsnprintf is C89 * (nilsson) strchr is C89 and 4.3BSD * (nilsson) memchr is C89 and 4.3BSD * (nilsson) Don't cast memcmp void* arguments. * (nilsson) Deduplication. * (nilsson) Tiny optimization. * (nilsson) memcmp is C89 and 4.3BSD * (nilsson) memmem isn't used. * (nilsson) Don't cast memmove void* arguments. * (nilsson) memmove is C89 and 4.3BSD * (ph) Allow setting and unsetting buffers for each direction * (nilsson) Don't cast memcpy void* arguments. * (nilsson) Don't cast memset void* argument. * (ph) Fixed return type of Function.uncurry. * (ph) Added buffered asynchronous I/O mode to Stdio.File In this mode the input and output is kept in buffers in the file object. Adding data to the output buffer will write it to the filedescriptor, and the read callback will receive the input buffer as its argument. The write callback will have the output buffer as a second argument, but most of the time this can be ignored since you keep the buffer object around. The write callback will only be called if the buffer needs more data, so if you implement a range_error function in the buffer that refills the buffer it will only be called once that callback returns 0. * (ph) Added Function.uncurry. It is sort of the reverse of Function.curry. * (nilsson) memcpy is C89 and 4.3BSD * (nilsson) bcopy was deprecated 2001. * (nilsson) memset is C89 and 4.3BSD * (nilsson) STRNLEN fallback isn't used anywhere. * (nilsson) This fallback never worked. * (nilsson) strtod is C89 * (nilsson) strtol is C89 and 4.3BSD * (nilsson) We are not actually using HAVE_WORKING_STRTOL anywhere anymore. * (nilsson) time is C89 and 4.3BSD * (nilsson) Actually use VSNPRINTF. * (nilsson) BSD function index is deprecated from 2001, removed 2008. * (nilsson) Removed remaining isspace * (ph) Slightly bigger reads from the source file. * (ph) Avoid reading too much when doing range requests * (ph) Correctly update the box events when reading/writing from files * (grubba) encode_value: Simplify the handling of the variant dispatcher. Removed special case code in two places that compensated for each other. * (ph) Fixed the type for bind * (ph) Use Stdio.IOBuffer for output. * (ph) Stdio.IOBuffer.intput/output from fd can now take the amount to process This is better for SSL files, where you can write any amount of data. * (ph) Forward the share argument to bind * (ph) Allow port sharing when the OS support it. This allows several processes to bind to the same port. When doing so connections will be assigned evenly to them. * (ph) Added a one-entry cache for http_date * (ph) Forward the share option to _Stdio.Port.bind from Stdio.Port.bind * (ph) Added share option to SSLPort as well * (nilsson) Robustness. * (nilsson) Building without issapce has not worked since 1999 * (nilsson) Building without vfprintf has not worked since 2003. * (nilsson) Removed some unused tests. * (nilsson) Silence warnings. * (grubba) Build: Support other make(1) than GNU-make. This also helps when building source dists. * (grubba) IOBuffer: Use apply_current() to call range_error(). This gets rid of a dynamic lookup and a reference on the string "range_error". It also improves the odds that IOBuffer will support being inherited multiple times, as well as private inherit. * (ph) Exploit the newest features of IOBuffer * (ph) Added add_ints() method to IOBuffer. * (nilsson) It hasn't been possible to compile Pike without strncmp since 2003. Remove port code for it. * (nilsson) Call rint instead of RINT. * (ph) Some tweaks to Stdio.IOBuffer: o The various functions that add data now return the buffer o It is now possible to overload the range_error method. This can be used to fill the buffer on demand. * (ph) Added support for SO_REUSEPORT when available * (rosuav) Change the GTK2.Toolbar example images to use non-deprecated (and actually implemented) APIs * (rosuav) Partly fix GTK2 image generation * (rosuav) Fix inverted condition resulting in spurious warnings * (rosuav) Update GTK2 docs based on source files (including the additional options) * (rosuav) Add more options for GTK2 doc generation. This causes docs to be generated for every possible class, whether it's available on your system or not. This seems preferable to having some classes arbitrarily left undocumented. * (rosuav) Add more GTK2 versions to configure.in and friends * (ph) ADT.struct removal, stage 1: Use Stdio.IOBuffer internally * (ph) Added _encode and _decode to Stdio.IOBuffer * (ph) Some changes to Stdio.IOBuffer: o Set error mode now accepts a program to throw on error o Relaxed argument types (for now) * (ph) Correctly throw buffer error in error mode * (ph) Added some more functionality to Stdio.IOBuffer o input_from(file), output_to(file) -- async or sync file-IO. o add and crete now supports the other buffer objects * (grubba) Debug: Added Debug.describe_encoded_value(). This is a tool to describe encode_value()ed datastructures, and especially dumped programs/objects. It does not need (or use) a codec. * (nilsson) release number bumped to 8.0.5 by export.pike * (nilsson) release number bumped to 8.0.4 by export.pike * (nilsson) Fixed doc inherit. * (nilsson) Subgroup order is calculated in Parameters if left out as an argument. * (nilsson) Reference .Cipher without prefix. * (nilsson) Select DH group based on symmetric key strength. * (nilsson) Allow the precision of probably_prime_p to be variable. * (nilsson) Fixed tests. * (ph) Only do pop_n_elems when there are more than 2 pop_value in a row. * (ph) For now -- Give up entirely doing / and % with negative integers x86 is round-to-0, and pike expects round-to-negative-infinity. This can be fixed in the opcodes, but it is somewhat harder than simply ignoring it for now. :) * (ph) Do not remove *_int pop_n_elems if the number of elements to pop is 0. * (ph) Added Stdio.IOBuffer.write_to(Stdio.Stream). * (ph) Fixed some issues with +/- int and re-enabled F_MOD_INT. * (grubba) Compiler [amd64]: Fixed code generator for F_RSH_INT. The wrong label was used. * (ph) Added a few more x86-64 opcodes F_XOR / F_XOR_INT F_DIVIDE_INT / F_MOD_INT and a partial implementation of F_POP_N_ELEMS. * (nilsson) Corrected name of MODPGroup23 * (ph) Added x86_64 support for F_MOD The divide instruciton also does mod. But for negative numbers pike is somewhat different. So, be rather restrictive. * (ph) Added F_DIVIDE * (grubba) Compiler: Added a few more peep-engine rules. * (ph) Unified some code. Added F_MULTIPLY. Fixed an issue in F_LSH_INT. * (ph) Added F_COMPL. Fixed F_AND_INT * (grubba) Testsuite: Some notes about the sprintf() type tests. Also changes the expected return type for sprintf("%c\n", Stdio) from string to sprintf_result. This is due to (string & sprintf_result) == sprintf_result * (ph) Also generate *_INT for -1, 0, 1 and 0x7ffffffff * (ph) Do the negative shift check first in <<. It was somewhat confusing to get bignum errors. * (ph) Fixed F_LSH_INT. * (ph) More simple LSH_OVERFLOW. * (ph) Added x86-64 version of R_LHS_INT * (grubba) Builtin: Stricter type for int2char(). Fixes the testsuite test: sprintf("%O", typeof(sprintf("%c", 1023))) == "string(1023..1023)" * (grubba) Debug: Changed trace flag for check_call_svalue(). This moves tracing of check_call_svalue() from using l_flag (aka optimizer_debug()) to using trace_level (aka predef::trace()). The rationale for this is that check_call_svalue() is used by the runtime (via the variant dispatcher), and not by the compiler. Tracing of check_call_svalue() is (as before) enabled at level 3. * (grubba) Optimizer: Added some integer overflow paranoia. * (ph) Fixed non-int f_negate case * (ph) Added a few more opcodes F_NEGATE F_LSH F_AND_INT F_OR_INT F_RSH_INT F_SUBTRACT_INT * (ph) Added a few more opcodes to do constant integer arithmentcs. * (grubba) Bin: Fixed a few warnings. Converted from using static to using protected. * (grubba) Search.Database.MySQL: Don't used DELAYED queries. The DELAYED query modifier is: * Not supported with InnoDB tables. This causes failures with MySQL versions (eg 5.5) where InnoDB (and not MyISAM) is default. * Ignored in MySQL 5.6. * Deprecated in MySQL 5.6.6. Fixes [bug 7255]. * (ph) Reset the result types, clearing zero_type * (nilsson) One more RUNPIKE to silence. * (nilsson) Silenced depend target override warning and some other chattiness. * (nilsson) No need to print out the RUNPIKE args. * (ph) Slightly shorter F_RSH It is uncommon enough to do >> with values >= 64 to use the C version. * (ph) Silence type warning when Crypto.ECC.Curve is missing (old nettle) filter() seems to get the return type wrong. * (ph) Added F_AND, F_OR and F_RSH opcodes * (nilsson) filter tests. * (nilsson) Fixed direct cast calls. * (nilsson) On second thought, this is so obscure that we shouldn't probably do it at all. * (grubba) Calendar: Improved dwim_time() for ISO-8601 dates. Also adds some corresponding testsuite tests. FIXME: Ought to have tests for all the patterns in dwim_{day,time}(). * (nilsson) Fixed the indexing-fallback-code of map on objects. * (nilsson) Use pike_sizeof instead if _sizeof. * (ph) Ignore the generated file * (ph) Added a PCHARP version of the json parser. Also added a new flag: JSON_FIRST_VALUE. If this is set data after a value is ignored. * (ph) Added read_json method. It will read the first json value on the stream and return it. * (rosuav) GTK2 docs formatting fix * (rosuav) GTK2: Update Scale docs based on source file * (rosuav) Represent G_TYPE_POINTER as an integer to prevent segfaults * (rosuav) Ensure something's pushed for every argument to a GTK2 signal callback * (nilsson) Fixed direct calls to cast. * (nilsson) Fixed direct call of cast. * (nilsson) Fixed direct call of cast. * (ph) The IOBuffer documentation now extracts * (ph) Moved __builtin.IOBuffer to Stdio.IOBuffer (for now) * (ph) Changed PCHARP ptr to be a void*. * (ph) Added a new sscanf low-level API: It is now possible to sscanf using pcharp formats/strings. This makes it possible to call sscanf on partial strings and similar tricks. * (ph) [autodoc] Some toplevel documentatioon for Cache. * (nilsson) IOBuffer documentation fixes. * (nilsson) Hook xmalloc, xrealloc and xstrdup up to the wrapper function. This makes dmalloc compile again. * (grubba) Cyclic: Change to a power of two hash table. The hash table used by BEGIN_CYCLIC() et al now has a size that is a power of 2, so that we can avoid the modulo operation. The hash function is also modified somewhat to improve its entropy. * (grubba) SSL: Fix lost close packets. Removed some erroneous code. * (ph) Let pike_sizeof return INT_TYPE, not INT32. * (ph) Do not crash if the argument list is malformed * (ph) Added a simple I/O buffer. This is a work in progress. It is intended to be used as a buffer while reading and writing from files. It is also intended as a replacement for ADT.struct (note, lowercase struct). * (srb) Use [..] lfun instead. * (grubba) Charset: Minor adjustment of the ISO-IR-129 table. According to Appendix I.7 of T.101, the characters MG 63 (aka 5/15) and MG 64 (aka 7/15) are equivalent: Either of the two equivalent codings established in Recommendation T.101 (code table position 5/15 or 7/15) for the Filled Mosaic character is acceptable in a string of characters from Repertoire 5. Also later in the same appendix: MG63 Filled Mosaic 1,2,3,4,5,6 (also equivalent to MG64 T.101 DSIII) Presumably the character MG 63 is intended for use in GR 0 (where 7/15 is reserved for DEL). * (nilsson) Serialize TBSCertificate by storing the Sequence and regenerate the other fields. * (srb) Update doc. * (srb) Prototype and doc fixes. * (grubba) sscanf: Improved error messages. Got rid of all "Error in sscanf format string." error messages, and replaced them with more specific error messages. * (grubba) Revert "dwim_time() should know how to parse ISO 8601 timestamps." This patch had the opposite effect of the intended... This reverts commit ad369b17e9f784b0632f0939adbbbab47385f0ab. * (srb) Support < and > operators. * (srb) Simplify code. * (srb) Support assigning characters which don't fit within the current shift size. * (grubba) Charset: Added ISO-IR-129 (Videotex mosaic characters). This adds the mosaic characters from the CCITT T.101 Data Syntax III supplement in an encoding compatible with the MODE7GX.TTF font. * (srb) Reduce heap fragmentation even more. * (srb) Document features. * (srb) Reorder to reduce memory fragmentation. * (srb) Fix prototype, and do not second-guess the user for optimum size. * (nilsson) Less crashy String.Builder. * (nilsson) Readded the CPP test of #if constant and moved the String.Buffer test to the other String.Buffer tests. * (srb) Update CHANGES. * (srb) Simplify code, make the buffer itself non-optional. * (srb) Add forced security wipe to cut() method. * (srb) Repair and cleanup declarations. * (srb) Add non-trivial Buffer tests to testsuite. * (srb) Yes, memcmp() compares using unsigned char comparisons. * (srb) Fix length calculations in cut(). * (srb) Optimise clear() for speed. * (srb) Support == operator. * (nilsson) Fixed compilation with dmalloc. * (nilsson) Fixed test that broke with Kevins fix. * (nilsson) Tests for String.Buffer []= and cut. * (nilsson) Silence warnings, mostly with useless null inits. * (nilsson) Tests for __COUNTER__ * (srb) Improve fast-path and eliminate some minor cruft. * (srb) Ensure NUL termination on new Buffer. * (nilsson) Missed get_all_args conformity checkin. * (nilsson) Fixed warning. * (ph) Stricter return types for cast. This, if nothing else, makes the documentation cleaner. * (ph) Fixed an issue with the connect argument parsing * (ph) Added the __COUNTER__ macro. Who knows, someone might find a use for it. * (ph) How did that happen? * (ph) How did that happen? * (ph) Note about TCP_FASTCONNECT * (ph) Added variant of connect with three arguments * (ph) Added support for TCP_FASTOPEN (server and client) The server support is always enabled if possible, on the client side it is enabled if you pass an additional argument to connect (see the documentation). * (srb) Update String.Buffer documentation. * (grubba) Cyclic: Improved thread-awareness. Don't use CYCLICs originating from other threads, as there's no way of knowing whether they are valid or not. Also default the local cyclic ret value to the existing cyclic ret if found. * (srb) Update CHANGES for new String.Buffer methods. * (srb) Correct prototype. * (srb) Add new member functions [] and cut(). * (srb) Add stack_revroll(). * (srb) Eliminate duplicate code. * (srb) Improve spacing conciseness. * (srb) Eliminate superfluous type check. * (srb) You missed a spot. Adhere to the crazy indentation. * (srb) WebSocket forgot to pass on the id to Stdio. * (srb) Database creation doesn't work with bound parameters. * (grubba) Compiler: Added some missing END_CYCLIC(). All execution branches from a BEGIN_CYCLIC() must either END_CYCLIC() or throw an error before DECLARE_CYCLIC() falls out of scope. Potential fix for [LysLysKOM 20940558] (Pike developer list). * (ph) [autodoc] Added some linebreaks * (grubba) Build: Fixed C9x-ism. * (grubba) SANE: pike_types.h is needed for literal_type_string. * (nilsson) More consistent use of error macros. * (grubba) Postgres: Survive Postgresql 9.3.3. * (grubba) Runtime: Improved the hash function for cycle detection. Xor is better for mixing bits than or... FIXME: We probably ought to consider a 2^n table size here. * (ph) [autodoc] List the drivers in Sql.Sql.create * (ph) [autodoc] Some rewording * (ph) [autodoc] Document PDF.PDFgen create method * (ph) [autodoc] Removed import autodoc comment in Pango. It was the only documented thing in the module * (ph) [autodoc] Some reformatting. * (ph) [autodoc] Added note about extract_locale to the Locale module. * (nilsson) Consistent formatting of function name parameter to get_all_args * (ph) Added note about the Shuffler to Pipe.Pipe. * (ph) [autodoc] Minimal pointers in Image module toplevel doc * (ph) [autodoc] Fixed erronous commit * (ph) [autodoc] Added Calendar documentation from the FAQ. It is actually rather useful. But very hard to find * (nilsson) Added cast to Identifier * (nilsson) Use cast instead of _encode. * (ph) [autodoc] Added some minimal documentation to the Cache module * (ph) [autodoc] Added some minimal information about the Arg module * (ph) Some minor documentation tweaks. It has been a while since the classes were called Gz_deflate and Gz_inflate. * (ph) Separate out operators from the normal methods in the refdoc. * (ph) These functions are not really varargs. * (ph) Count _decode and _encode as lfuns. * (ph) Include file name and line in errors. * (ph) Fixed a few autodoc syntax errors. * (ph) Use __restrict with gcc on the pike_interpreter This produces the same code as const, but avoids lying to the compiler. Fixed an issue with gcc 3.4, which over-optimized a bit (specifically, pip->stack_pointer was not re-read between function calls, which seems odd given that it is not pip->stack_pointer that was const...) * (nilsson) Added test for #pike 8.0 * (nilsson) Added codec to ASN1 objects. * (grubba) SSL: Improved support for renegotiation. * (nilsson) Pike 7.2 was released 2002. Stop supporting compat for it. * (nilsson) Pike 7.2 was released 2002. Stop supporting compat for it. * (nilsson) Added note on environment mapping. * (nilsson) Remove some module_magic remnants. * (nilsson) Wrap some comments. * (nilsson) This started giving deprecation errors 11 years ago. * (nilsson) Now that we have character ranges in strings, use that for type errors from get_all_args. * (nilsson) Fixed warning. * (el) block_allocator: fix ba_walk() and improve valgrind support Blocks in the free list are now marked as free while the callback is running. This helps detecting invalid accesses. Also fixed a bug in the free list sort. * (el) silence some warnings * (ph) >> now works with negative LHS again. * (nilsson) While having lfun::cast as private WORKS JUST FINE, it also allows us to get rid of some argument checking. As protected we can't do that. * (grubba) Stdio.Stat: Make casting work again. lfun::cast() was declared private, which: * Disables it (as lfuns must be protected or public). * Breaks code that inherits Stdio.Stat, overloads cast(), and wants to call ::cast() (eg Sitebuilder.SBStat). * (grubba) Runtime: Fixed some broken type checks. NB: There's a difference between the C-types "int" and "INT_TYPE"... * (grubba) Nettle.BlockCipher16.CCM8: Fixed documentation reference. * (el) pike_types: avoid the extra static storage * (el) Gmp: get rid of warning * (el) Whitefish: fixed init_*_struct and exit_*_struct prototypes * (el) block_allocator: do not round up powers of 2 The family of round_up* functions rounds up to the next power of two. This made most block allocators initial areas twice as big as intended. * (el) Fixed some warnings about unused parameters * (el) Pike cleanup: fix double free Static strings created with the MAKE_CONST_STRING macros need not be manually freed. In DO_PIKE_CLEANUP mode they are freed automatically, or else they are intentionally leaked on program exit. * (grubba) AutoDoc: Classes may have submodules... In some circumstances classes can contain submodules. One example being Nettle.BlockCipher()->CBC. The documentation for such submodules was lost in the HTML-generation step. * (nilsson) Improved type checking. * (nilsson) Fixed autoconf induced PACKAGE_* warnings. * (nilsson) Fixed #pragma clang warnings. * (nilsson) Remove unused function zap_placeholder. * (nilsson) Fixed signedness warning. Why is array size signed? * (nilsson) Added testcase * (nilsson) Added void to zero argument functions. * (nilsson) Corrected init_rs and free_rs arguments. * (nilsson) Added void to zero argument functions. * (nilsson) Added const to master_file_location. * (ph) Removed a significant amount of warnings (about 20 lines per file) by not generating 8bit op 8bit -> 32bit overflow macros. They are not used, anyway * (ph) Now compiles with the bytecode interpreter * (kevinor) TURBO2-711: Fix URI path combining for empty base URI path. * (grubba) FreeType: Stricter type checking for Face::create(). The font filename is a narrow string, and the face number must not be negative. * (grubba) FreeType: Fixed documentation typo. * (bill) Image.Freetype: allow use of faces beyond position 0 in font files. * (grubba) encode_value: Improved support for variant functions. Variant functions weren't dumped correctly if they were overloading inherited non-variant functions. Fixes remaining issue with the dumping of Crypto.RSA.State. * (grubba) encode_value: Don't regard the variant dispatcher as a CFUN. The variant dispatcher is a CFUN that may show up in pure Pike programs, so don't fallback to the C-program encodings when the only CFUN is the variant dispatcher. Potentially fixes dumping problems with Crypto.RSA.State (where generate_key() is a variant function). * (grubba) Compiler: Added low_is_variant_dispatcher(). This function is useful when you have an identifier that might be a variant dispatcher, but you don't know of a corresponding reference. * (grubba) decode_value: Removed some dead code. The macros getdata() and getdata3() are no more. * (ph) Added missing space. * (ph) Describe some of the lfun methods more intuitively As an example, _indices() -> indices(type arg) * (ph) Include the documentation for create, if any, in the class documentation * (tobij) Postgres: fix one more literal_X_string issue * (ph) Crypto.DSA -> Crypto.DSA.State * (ph) These softcasts generated "is noop" warning * (grubba) Compiler: Improved soundness of the op-assign optimizer. Avoid the risk of converting expressions like a[i] += i++; into the equivalent of tmp = a[i] + i++; a[i] = tmp; * (tobij) fix two more literal_X_string issues * (tobij) fix one more literal_X_string issue * (nilsson) Some limit-crossing tests we apparently need. * (nilsson) Shortened some error messages. * (nilsson) Less noise when running the testsuite. Strings are truncated to 4k in the output. * (ph) Fixed two errors with literal_X_string usage. * (nilsson) Improved cast method. * (nilsson) Fixed casting bug. * (nilsson) Fixed warnings. * (nilsson) Now works with dmalloc again. * (nilsson) Reuse the new type pike strings where possible and easy. * (nilsson) Improved cast. * (nilsson) Fixed some GMP tests. * (ph) Added F_UNDEFINEDP as an opcode Also added a convenience SVAL(X) macro that returns the offset to different parts of the svalue X values from the base register. Also added some usage of the SVAL function in a few places. Chagned to 32-bit arithmetics for types in a few locations. It saves on code size, if nothing else (no REX prefix unless R8.. is used) * (ph) Checking using tst_reg32 is not optimal in branch_if_non_zero. * (ph) Automatically convert cmp_reg[32](reg,0) to test_reg(reg). * (ph) Fixed F_ADD, also disabled the int+int optimization in it. Most cases are already caught by the ADD_INTS opcode. At least if people type their code. Switched a few cmp(reg,PIKE_T_INT) to test(reg). * (ph) Fixed a few missing debug prologues. * (ph) Fixed bug in F_UNDEFINEDP * (ph) Reintroduced missing test before using private globals. * (ph) Added F_UNDEFINEDP and F_DESTRUCTEDP. These are the same as the functions with the same name, but lends themselves to inlining. * (nilsson) Deprecate cast_to_int, cast_to_string and cast_to_float. * (tobij) precompile: use (array(string)) cast instead of map+lambda. * (nilsson) Updated cast methods in src also. * (nilsson) Disable the most problematic opcodes. * (grubba) Updated to tzdata2014f. Also removed some obsolete files (solar8[789]) and added zone1970.tab. The tzdata directory should now be fully in sync with the tzdata2014f dist. * (tobij) ->cast() in Parser.C.Token is no longer accessible. Thus no fun with some_array->cast() automapping in the CMOD precompiler. * (grubba) Testsuite: Added code-generator test. This test fails if F_ASSIGN_PRIVATE_TYPED_GLOBAL_AND_POP doesn't pop. * (ph) Added INC,ADD, DEC and SUBTRACT These are inlined when both arguments are integers. It would be fairly to do for floats as well. DIV/MOD/AND/MULT etc would be fairly easy to add as well, but most require some more decoding of the intel instruction reference manual. * (ph) Added a few more global variable opcodes. Gotta catch em all! This time: PRIVATE_IF_DIRECT_GLOBAL and ASSIGN_PRIVATE_IF_DIRECT_GLOBAL These will fetch or assign a global variable if the currently executing program is the program the object is cloned from. These are only slightly slower than the F_PRIVATE_GLOBAL family of opcodes, and the overhead if the global is not actually private is minimal. Missing: [ASSIGN_]PRIVATE_IF_DIRECT_TYPED_GLOBAL[_AND_POP] and ASSIGN_PRIVATE_IF_DIRECT_GLOBAL_AND_POP. * (nilsson) Only give the basic type names to cast() to avoid post processing in cast(). * (nilsson) Make illegal casts throw exception. * (nilsson) Returning UNDEFINED from cast() now produces an exception. * (nilsson) Don't call cast directly. * (nilsson) Added more protected. * (nilsson) Use variant to support multiple constructors. Serialize correctly. Added more protected. Removed some 8bit strings. * (ph) Changes to CHANGES * (ph) Moved a few modules around in the traditional refdoc We really should update this file completely, I think * (ph) Removed a few non-existing overloaded operators * (ph) Fixed autodoc syntax error * (ph) Avoid dropping the toplevel operator documentation. Also, changed format for getters/setters somewhat. * (ph) Did some overhauling of the Gdbm module o Gdbm.gdbm is now known as Gdbm.DB o Added support for iteration over gdbm objects o Added overloading of _m_delete, _indices and _values. o Added some more documentation * (ph) Override write and werror in hilfe The overriden version uses readline->write to actually print the data. This is rather convenient when writing asyncronous code in hilfe, newlines are handled correctly and it interacts fairly well with the input system. The overriding is intentionally using add_constant to also override debug output in modules that are loaded after hilfe is started. * (grubba) SSL.Constants: Added some more constants. * (grubba) SSL.Constants: ALPN is now RFC 7301. * (nilsson) Fix cut-n-paste error. * (nilsson) Less crazy coding style. * (grubba) Compiler [amd64]: Fixed a few typos. The code generator for F_ASSIGN_PRIVATE_TYPED_GLOBAL_AND_POP was broken (generated code for F_ASSIGN_PRIVATE_TYPED_GLOBAL) due to a cut-n-paste miss. This caused some code in Roxen to fail. Fixes [LysLysKOM 20929878]. * (nilsson) Less zero_type. * (nilsson) Use has_index instead of zero_type * (nilsson) Added protected and private. * (grubba) Compiler: Fixed memory leak. The F_*_EQ optimizer leaked types. * (nilsson) Make _sprintf protected. * (nilsson) AbstractParser actually abstract now. * (nilsson) Default to mark create as protected, not static. * (nilsson) Better MD5 * (nilsson) Hide snmp_errlist * (ph) Removed CLEAR_2_LOCAL & CLEAR_4_LOCAL, added CLEAR_N_LOCAL This simplifies things a bit, and reduces codesize at times. The record I have seen while running the testsuite was a clear_n_local(23). * (nilsson) static is now deprecated, as per the very long term plan. * (nilsson) static -> protected * (nilsson) private implies protected * (nilsson) How did that get away? * (ph) Added F_CLEAR_4_LOCALS opcode. I see a need for a CLEAR_N_LOCALS one instead. * (grubba) Compiler: Added some CALL_*_N peephole rules. * (grubba) Compiler: Added some trivial peep-hole optimizer rules. * (ph) Added lvalue version of lexical_local * (ph) Added F_LEXICAL_LOCAL amd64 edition * (ph) Removed a bunch of commented out misleading debug (copy paste much? :) * (nilsson) Better typing. * (el) Protocols.WebSocket: make the stream and parser available * (nilsson) hash_7_4 is not deprecated. * (nilsson) Fix a crash. * (ph) Added note about F_ASSIGN_SELF in docode.c * (ph) Missed one side-effect * (ph) Merged redundant comments. * (ph) Fixed an issue with the removal of += When you did things like a[i++] += 10; the code was (more or less) converted to a[i++] = [typeof(a[])](a[i++]+10); which was not what you really wanted. Solved by adding a new opcode that is used for the specific case where the LHS in the assignment has side effects. Also, in this somewhat uncommon case automap is now no longer supported. Note that things like a[i++] = a[i]+b[i] is not using this new opcode, only += and friends use it. * (ph) For ease of debugging: Have the "token" field in node_s be enum Pike_codes This helps a lot when developing in the compiler. Currently only happens when PIKE_DEBUG is enabled. * (ph) Fixed some more cases of automap on the left side of an assignment. It more or less works as one would expect now. * (grubba) SSL: Updated to the new Crypto.Sign API. * (grubba) Crypto.Sign: Added sub-class State. This makes the Crypto.Sign API to behave closer to the other Crypto APIs. This affects code that uses Crypto.RSA and Crypto.DSA (which now are modules and not classes). Crypto.ECC.Curve.ECDSA is currently unmodified. * (grubba) Standards.PKCS: Updated to the new Crypto.Sign API. * (grubba) Crypto.Sign: Fixed indent. * (grubba) Crypto.RSA: Improved robustness of compat generate_key(). * (grubba) Crypto.RSA: Break compilation circularity. There's a circularity between Crypto.RSA and Standards.PKCS.RSA. * (ph) Optimized branch optimization somewhat. * (ph) Removed F_IDENTIFIER: It was never generated. This lessens the confusion and code-duplication somewhat. * (ph) Added machinecode verison of F_LOCAL_LOCAL_INDEX Specifically, this optimizes array[int]. Also includes incomplete f_branch_if_type_is_not. * (ph) For now: Add automatic softcast nodes for += with friends The actual assignment was never typechecked before. So now everything works like it used to again. * (ph) Unified formatting slightly * (ph) Added F_ASSIGN_PRIVATE_TYPED_GLOBAL[_AND_POP]. This completes the suite of private global opcodes. * (ph) Found some more F_X_EQ instances. * (ph) Dropped the separate opcodes for +=, *= etc This actually generates, on average, better code. It also removes a rather significant chunk of duplicated code. * (ph) Added "deprecated" to the list of hilfe type modifiers. * (ph) Fixed support for automap in assignments. This was handled in a somewhat so-so manner in += and friends. Specifically, it ignored the [*] on the LHS and just assigned the variable to the result of the automap. So, x[*]+=10; was transformed to x = x[*] + 10; It also only worked for += with friends, not =, so x[*] = x[*] + 1 did not work. Now a new opcode is used that assigns array elements individually. This means that this works: | array x = ({1,2,3}); | array y = x; | | x[*] += 10; | x==y; // will now be true, was previously false. Of course, this actually changes how automap works. The assignment is currently only done on the toplevel, x[*][*] = x[*][*]+1 still works just fine, but it has some similarities with the previous situation, the arrays in the toplevel array will be swapped, not altered. this will be fixed soonish(tm) * (ph) Removed overloading of non-existent operators * (ph) Changed back to using apply(current_object,function). The name of the C-function seems to change between f_cq__decode and f_cq__Image_WebP_decode randomly. There is no obvious pattern, at least * (ph) Forgot to fix one occurence of `!=. * (grubba) Image.PSD: Minor cleanup. Added psd_read_schar() analogous to psd_read_uchar(). * (ph) Added F_PRIVATE_TYPED_GLOBAL. Much like PRIVATE_GLOBAL, but handles typed svalues (everything but int, function and object). No assign yet. * (grubba) Doc: Reduced verbosity. * (grubba) Doc: Improved robustness of extractor change detector. Use git diff instead of git show. This means that meerges now will be handled correctly. * (grubba) Doc: Do a full scan in a few more cases. This should be essentially like the old extractor, but still retaining most of the increase in speed. * (ph) git_export_autodoc now detects non-documentation commits This speeds up extraction significantly * (nilsson) Let's hide 7.6:: and 7.8:: as well in traditional mode. * (nilsson) OO a bit more. * (nilsson) Looks like we forgot to deprecate spider when we introduced deprecated. Oops. * (nilsson) Fixed typo. * (ph) Fixed documentation syntax error * (ph) Dropped 7.0 hiding support in the traditional manual. Unless I am incorrect this list should have included 7.6 and 7.8 as well * (ph) When resolving addresses, first try with forced numberic hosts Also, give the numericport hint when the port is numeric. * (grubba) SSL: Increased session reuse paranoia. Don't reuse sessions which differ from what a newly negotiated session would be. This fixes potential cross-site attacks and similar. * (ph) Added a note about the lfun list in the autodoc parser * (ph) Some minor tweaks to the autodoc format o Getters and setters are now automatically convereted to variables in the documentation. If there is only a getter or only a setter a suitable note is added. o Drop documentation for non-existing lfuns, they only confuse things. * (ph) Pass on the position more often * (ph) There is such a function as error. * (nilsson) Use variant. * (nilsson) Fixed stderr messages. * (nilsson) Remove Pike 7.0 support. We now only support post-2000 code. * (nilsson) Use Yabu.DB to fix deprecation warning. * (ph) It turns out that low_split is used from the testsuite. Make it visible externally again. * (ph) Mostly whitespace changes * (ph) Use the existing low-level tokenizer for Parser.C.split This is significantly faster, and the code was already there anyway. * (ph) Comment and whitespace changes * (ph) Do not emit private assign for alias identifiers Fixes the remaining new crashers in the testsuite * (ph) Removed some stray debug * (ph) Fixed reference leak in Image.WebP.decode The image object only had one reference, but had two copies in the result mapping. Also somewhat lower-level handling of things in decode(). Mainly because it made it much easier to debug things. * (ph) Reduced the number of type rules somewhat * (ph) Removed some type * tests * (ph) Removed support for *-syntax without actually changing the grammar much This is basically step 1 of the *==array syntax removal, the easy part. Since there is no need to start renumbering things in the rules. * (ph) Updated Yabu testsuite to use Yabu.DB * (ph) Read somewhat fewer bytes Mainly, this saves four bytes of code size for each branch_when_{eq,ne}. * (ph) Avoid letting PIKE_T_FREE have bit 4 set. * (ph) Do not allow assignment of private variables in destructed objects. * (ph) Verify ENTRY_PROLOGUE_SIZE size. * (ph) Revert "Keep pike_fp->current_storage up to date in pike functions." This reverts commit 9129e401d0db1703a938794d2d61d73b4b214992. * (ph) Keep pike_fp->current_storage up to date in pike functions. This speeds up global variable accesses quite a lot. * (ph) Some more static on functions Also added convenience functions to check if an svalue is a reference type. * (ph) Fixed "hilfe arrow up" crash. The code crashed when assigning a private global variable that was either an integer or float with bit 8 set. * (ph) Limit lvalue-creation for a = function(a,...) to the case when there is at least one more argument. * (grubba) Stdio.sendfile: Fixed use before set. Fixes "Indexing the NULL value with \"call_out\".", when Stdio.sendfile(({""}), 0, -1, -1, 0, simulated_file, cb, ...). Also fixes issue where the trailers weren't sent if there was no source file, no headers and a non-empty file length. Fixes [bug 7230]. * (ph) Autodoc fix * (ph) Added Yabu documentation Also renamed db -> DB and lookup -> LookupDB * (ph) Check for destruction of object before allowing access to globals * (nilsson) Fixed an invariance vaguely pointed out by Niels. * (nilsson) Move 7.4 test to 7.4 testsuite. * (nilsson) Don't test for 0.6 anymote. * (nilsson) Updated from 0.6 to 7.0 * (nilsson) Remove Pike 0.6 support. * (nilsson) Remove Pike 0.6 support. * (nilsson) Fix Pike 7.0 compatibility issues. * (nilsson) Removed unused variable. * (nilsson) Remove Pike 0.5 support. * (nilsson) Expose class extension as Extension for typing. Fixes compilation error. * (nilsson) Cap compatibility mode to lowest supported. * (nilsson) Added ; * (grubba) SSL.state: Fixed type for compress(). * (grubba) Gz: Stricter string types. All the string types in the module are now declared as 8-bit strings. Removed some now redundant documentation warnings about wide strings. * (grubba) Standards.ASN1: Removed the TeletexString type. This ASN.1 string type was encoded according to T.51/T.61, and was not handled properly by other software at the time (~1995) when it was in use. * (el) cpp(): added documentation * (grubba) SSL.File: Improved robustness of close handling. The close_state is now set correctly even when there's a pending close_errno and the peer closes the connection. * (grubba) Mappings: Fixed assertion. Ensure that there are at least as many keypairs as buckets in created mappings. Fixes fatal "Pretty mean hashtable there buster!". * (ph) Revert "Changed fast_call_threads_etc handling with valgrind" This reverts commit 1c4cf54199bd51903bc071a5aceff11e40c00222. Needs more work, currently it is causing crashes. * (ph) More compact type checks, no need to do a cmp, & is enough now. * (ph) Added missing variable * (nilsson) Correctly check the fragment size in the different stages of decoding. * (nilsson) Stop operating directly on packet->fragment. * (ph) Optimize assign_X_and_pop + push_X to just assign_X * (ph) Generate more compact code for int+int. * (ph) Added a few benchmarks to check the last optimization * (ph) Removed some #if 0:ed code Fixes a warning when compiling with debug. * (ph) Optimized access to private/final global variables Especially the machine code version is now significantly faster, it will simply read the variable directly from the known byte offset instead of calling a function that resolves it in the vtable. Gives about a 20x speedup of trivial code along the lines of globala = globala + globalb; Also tried to disable some of the optimizations that causes lvalues to be generated instead of the desired global/assign_global opcodes. For now this is only done if the global variabeles are known to not be arrays, multiset, strings, mapping or objects, since those optimizations are needed to quickly append things to arrays (and mappings/multiset, but that is less common. It is also needed for destructive modifications of strings, something that is even less common). * (ph) Save a few bytes of code size for each free_svalue 8-bit constants generates smaller code. * (ph) Only set IDENTIFIER_NO_THIS_REF for object and function variables * (ph) Changed fast_call_threads_etc handling with valgrind Instead of disabling it entirely, clear it at function entry. This gets rid of the uninitialized value, and slows things down less than not doing the optimization. * (ph) Added CALL_LFUN<X>, useful when the number of arguments is known * (ph) Hide the REG_<X> macros/enums. It is just too easy to accidentally write REG_RBX instead of P_REG_RBX. This causes rather hard to find bugs in the generated code. * (marcus) _Charset: Correct forms of arabic characters in IBM encodings This brings the selection of presentation forms in line with what is published on http://www-01.ibm.com/software/globalization/g11n-res.html Thanks to Chris Angelico for discovering the issue. * (marcus) _Charset: Fix box drawing characters for IBM character encodings RFC 1345 incorrectly assigns code points with LIGHT/HEAVY strokes when they should actually use SINGLE/DOUBLE strokes instead. Thanks to Chris Angelico for discovering the issue. * (nilsson) Stop sending the protocol version around so much. * (grubba) Thread.Queue: Added FIXME. The Thread.Queue API ought to be extended to be compatible with ADT.Queue. * (grubba) SSL.File: Removed some redundant tests in read(). * (nilsson) A bit more modernization. * (nilsson) Prettier. * (ph) Removed Calendar_I. It has been deprecated since before Jul 2000 (the first time it was included in the main pike tree). * (ph) Added some (very very) minimal documentation to Protocols.X * (ph) Fixed typo in autodoc * (grubba) SSL.File: Added some documentation cross references. * (nilsson) ke_method isn't used outside the select_cipher_suite function. * (nilsson) Updated with latest changes. * (ph) Added basic documentation to Standards.FIPS10_4 * (ph) Documented Protocols.Ports and added simple /etc/services reading. We should probably update the port list any decade now * (nilsson) Move ke_factory to CipherSpec. * (nilsson) Set ke_method before it is used. * (nilsson) Fixed documentation and trimmed code of set_compression_method. * (ph) Removed Standards.CIFF. It could parse CIFF (nowdays mostly called camera raw:s) from a specific model (Canon d30). Partly. But no image decoding was done, and it can not parse any files generated by another camera, or even a d30 with an updated firmware. * (nilsson) Make heartbleed probing optional and default off. * (nilsson) Hide and document marginal_size * (nilsson) Fixed type * (grubba) SSL.Session: Keep track of the protocol version. SSL.Cipher.CipherSpec::verify() needs the version in the session object to be up to date (or it will break with TLS 1.2 or higher). Fixes interoperability with https://google.com/. * (nilsson) Less code. * (nilsson) Zero size fragments are not allowed for handshake, alert and changecipherspec packets. * (nilsson) Fail when uncompressed packet > 2^14 bytes * (nilsson) We can just use Gz.compress and Gz.uncompress as we are not streaming. * (nilsson) Unknown packet type is a fatal error. * (grubba) SSL.File: Fail read() on ALERT. read() now fails with EIO if the peer has aborted the connection with a fatal alert. Also sets errno to EAGAIN in nonblocking read() if no data available and not closed by peer. * (grubba) SSL.File: Fail write() on ALERT. write() now fails with EIO if the peer has aborted the connection with a fatal alert. * (grubba) SSL.File: Improved backend robustness. Don't bother running the backend if the peer has aborted the connection. * (nilsson) Debug cleanup. * (nilsson) Fixed time invariance issues when decoding the premaster secret. * (nilsson) Stop creating RSA objects we don't use in RSA key exchange. Some code style changes. * (grubba) Testsuite: Don't test so many SSL suites in threaded mode. Testing just the basic set of suites should be sufficient in threaded blocking mode (as long as the corresponding nonblocking test tests all the suites). * (grubba) Testsuite: Keep better track of skipped SSL tests. * (grubba) SSL.File: Improved robustness of closed state. Fixes remaining bug in threaded blocking mode testsuite. * (grubba) Testsuite: Test SSL.File in threaded blocking mode. The main SSL.File testsuite now tests all suites in both nonblocking callback mode and threaded blocking mode. * (grubba) SSL.File: Fixed potential hang in blocking read(). The remote close packet may already have been received, in which case no read callback is installed anymore, and the local backend would hang. Also updates the documentation to mention that blocking read and write in concurrent threads now is supported. * (grubba) Paranoia: Use guaranteed_memset() to CLEAR_ON_EXIT. * (grubba) Shuffler: Fixed typo in documentation. * (nilsson) Redid make legal * (nilsson) Updated from gnu.org * (grubba) Image: Fixed a few documentation typos. * (grubba) SSL.File: Show the connection state in lfun::_sprintf(%O). * (grubba) SSL.File: Got rid of unused argument. The called_from_real_backend arguemnt is no longer used, so there's no need to keep it around and up to date. * (grubba) SSL.Connection: Added lfun::_sprintf(). * (nilsson) Added standards cross references. * (nilsson) We are typically only calling sign/verify once a connection, so just do the implementation selection during that call. * (nilsson) Improved some comments. * (ph) Some tweaks to the overwiev Fuse documentation * (ph) Documentation tweaks for Shuffler We should probably use this in at least Protocols.HTTP.Server, to test the code if nothing else.. * (ph) Aded GLUT absolutely minimal autodoc This is generated automatically, but if GLUT is not installed on the computer the generation is skipped. Thus, also check in the generated file. * (ph) Added basic documentation to Image.WebP. * (nilsson) Someone didn't test their changes. * (nilsson) Make default signature hash more explicit. * (ph) Added a few notes about what PCX is. * (ph) Actually document Image.WBMP. Perhaps a few years to late. * (ph) Added a few notes about what ILBM is. * (ph) Moved general format description from encode() to the module * (ph) Added a few notes about what an AVS file actually is. * (ph) Moved all _Image_JPEG documentation to Image.JPEG. * (ph) Added a few more format notes Also removed some trailing whitespaces * (ph) Documented the mission-critical Image.DSI module (Dream SNES image format) * (ph) Moved _Regexp_PCRE documentation to Regexp.PCRE. Also mark up code segments in the documentation with @code. * (ph) Fixed XPM documentation, it is now visible Also constified a constant and removed a comment. * (nilsson) Moved hash selection to the signer object. * (grubba) SSL.File: Removed some obsolete debug checks. The current Pike backends support multiple concurrent threads running the backend, so there's no purpose in these thread checks anymore. * (grubba) SSL.File: Removed some dead code. * (grubba) SSL.File: Stricter type for backend_once(). * (grubba) SSL.File: Removed some now ignored arguments. The two last arguments to RUN_MAYBE_BLOCKING() are no longer used, so there's no point in having them. * (grubba) SSL.File: Changed backend handling. The backend to use (real/local) now strictly depends on blocking/ nonblocking mode. This means that creation of the local backend can be (and has been) moved to set_blocking{,_keep_callbacks}(). This reduces the number of short-lived backends used by SSL in a typical nonblocking backend-driven application down to ~ zero. * (ph) More documentation for Image.XCF and Image.PSD. * (nilsson) Decomplex the lookup function a bit. * (nilsson) More static. * (nilsson) filesystem isn't used. * (nilsson) Synchronized port struct with socket.c * (nilsson) Remove aap_malloc and aap_free * (nilsson) Updated documentation for set_cipher_suite * (ph) Non-bignum support has been removed * (ph) Added some documentation to the Arg module The rest of the documentation is now extracted as well. * (ph) Removed pike 7.5 (I think?) support and added some documentation. * (ph) Do not try to parse the received data as HTTP variables. Fixes a crasher that occurs at times, and the parsing did not make any sense anyway. * (ph) Removed prestate and supports from HTTPLoop.RequestObject They were never exactly part of any standard. * (ph) Add locking support to FUSE. Also implement the nano-second version of utime. * (ph) Added nano-second resolution file-timestamp support to stat * (grubba) Documentation: Added some crossreferences for *.secure(). * (ph) Removed some redundant debug that debugs that pike can call functions correctly. * (ph) Added a few OBJECT_CLEAR_ON_EXIT clears. Images, String.Buffer objects and Gmp.mpz objects now honor the flag for not only the object structure, but also the data in the object. * (grubba) Gmp.mpz: Propagate CLEAR_ON_EXIT to bignums. Creating a bignum from a String.secure()d string now causes the bignum to be Object.secure()d. * (grubba) Object: Added secure(). This function sets the OBJECT_CLEAR_ON_EXIT flag on the provided object (analogous to String.secure() and STRING_CLEAR_ON_EXIT). Also fixes the documented type of String.secure(). * (grubba) Runtime: Added flag to clear objects on free. The PROGRAM_CLEAR_STORAGE flag now sets the new object flag OBJECT_CLEAR_ON_EXIT (analogous to STRING_CLEAR_ON_EXIT) at clone time. * (grubba) Runtime: Added flags field for objects. * (grubba) SSL.File: Removed some now dead code. * (nilsson) More internal documentation of rsa_pad. * (nilsson) Optimized rsa_unpad a bit. * (nilsson) More serious attempt at constant time RSA unpadding. * (nilsson) Improved RSA en/decrypt test a bit. * (grubba) CHANGES: Updated the segments about Crypto and SSL. Splitted the combined segment into one about SSL and one about Crypto and Nettle changes. Combined, reworded and extended several items. * (ph) Now compiles again. Use TYPEOF to get type (cherry picked from commit 9aac72417207bd7fce31a99530e18843150a7565) * (grubba) String: Added filter_non_unicode(). Make string_filter_non_unicode() available as String.filter_non_unicode(). Also fixes related typo in CHANGES. * (grubba) SSL.File: Revamped handling of errno. Splits cb_errno into {read,write,close}_errno, which in turn are used to update local_errno depending on which of {read,write,close,renegotiate}() et al was called. Removes the now obsolete FIX_ERRNOS() macro. Also removes a direct call of close_callback() from ssl_close_callback(). * (nilsson) On systems with RDRND random will not be deterministic or depend on random_seed(). * (grubba) SSL.File: The got_extra_read_call_out state is no more. The extra read call_out has been fully replaced by the internal_poll() call_out, so remove the last remnants of it. * (grubba) SSL.File: update_internal_state() is no more. As update_internal_state() has become a noop, there's no need to keep it around anymore. * (grubba) SSL.File: Improved handling of user callbacks in set_backend(). Any pending callbacks now migrate to the new backend. Also clears pending callbacks on shutdown(). * (ph) Strengtened the return type of glob() * (ph) Removed very redundant size_shift debug test * (ph) Moved pike_get_interpreter_pointer to threads.c * (ph) Fixed changelog URL in CHANGES * (grubba) SSL.File: Move read_callback setting to read(). The stream read_callback is now set (to ssl_read_callback) whenever the read buffer isn't full, and cleared when it is. This reduces the complexity and cleans up the semantics of where and when the stream read_callback is changed. Also makes similar changes to the handling of the stream close_callback. This means that the function update_internal_state() is now a noop. * (grubba) Nettle.BufferedCipher: Fixed bug in unpad(). The new unpad() padding checker didn't survive the case where the padding consisted of a single byte. * (grubba) Nettle.BufferedCipher: Support larger padding in unpad(). Support padding larger than the cipher block size. Support padding larger than 127 bytes on architectures with signed char. The above are needed to interoperate with GnuTLS (which often uses quite long padding). Also attempts to make the padding checking code more time-invariant. * (ph) Moved random() note * (ph) Added notes about some more changes * (tobij) [Fuse] remove redundant code around call_with_interpreter() Fixes compilation, and removes unneccessary code. * (ph) Merged the const-marked pike_interpreter_pointer branch. We now lie to the compiler about the const:ness of the Pike_interpreter_pointer variable. Most code now pretends that that variable is constant (it's not, really, it's constant /per thread/, but not globally, however, the only code that writes to it and expects anything but the same value each time it is read is in thread.c) This saves a lot of code when using the stack multiple times in a function, and should be safe enough, albeit somewhat unconventional. If nothing else the binary size shrunk by about 5%. This _will_ cause issues if pike is compiled with link-time optimization. A better solution would be an actual thread local pointer, which is const marked. Or, perhaps the best solution, having the whole pike_interpreter_struct structure be thread local. At least on x86_64 accessing thread-local data is just about as fast as accessing global data. * (ph) Added change entry for the new syntax. Sorry for the messed up commit message previously, it happened since the character # starts a comment in commit messages. * (ph) Added a new string syntax They will all start and end a literal string. A literal string can contain any characters except the end sequence. The main usecase is writing code in a string. As an example: string test = #{ This is a literal string. They can contain any characters, no de-quoting is done at all. So, as an example, foo "bar" 'gazonk' \ Valid quote sequences are #{, #( and #[. They are ended by # followed by }, ) and ], respectively. So, you can use the two other quotes inside the string, if you want to, like: Also, no preprocessing is done inside the string. The main usecase for these strings is to write code in code. * (marty) Support REQUEST_GETNEXT by allowing callback to return a different OID. Previously, the API only supported returning the requested OID, which made it impossible for the callback to return the "next" OID (the one actually used in REQUEST_GETNEXT requests). * (grubba) SSL.File: Move write_callback setting to queue_write(). The stream write_callback is now set (to ssl_write_callback) whenever the write_buffer isn't empty, and cleared when it is. This reduces the complexity and cleans up the semantics of where and when the stream write_callback is changed.