Cpp [Haiku]: Add OS detection macro __HAIKU__. Also documents the macro __APPLE__.
Testsuite [Protocols.WebSocket.SSLPort]: Reduce size of {R,D}SA keys in test. Fixes testsuite timeouts on old and slow machines.
Documentation [ADT.CircularList]: Added some cross-references.
Documentation [ADT.CircularList]: Fix AutoDoc markup error.
Documentation [SSL.Port]: Some documentation updates.
SSL.Port: Add set_accept_callback(). Also alters the accept callback API slightly to be more in line with that of Stdio.Port: * The accept callback now gets a single argument; the id as set by set_id(). * Installation of the internal accept callback (ie ssl_callback()) is now delayed until the first call of accept() if no external accept callback has been installed (ie with any of bind(), listen_fd() or set_accept_callback()). This allows for altering the context between binding and starting to accept connections.
Stdio.Port: Add set_accept_callback().
ADT.CircularList: Add force argument to add() and push_{front,back}(). This makes it possible to take advantage of it being circular.
EFUNs [NT] [AIX]: Attempt to support dates before 1970-01-01T00:00:00. gmtime(), localtime() and mktime() now attempt to support negative timestamps on NT and AIX. Fixes multiple testsuite failures.
Stdio.File: Add isatty().
System.TM [NT]: Use string_builder_strftime(). We now use the same implementation of strftime() on all platforms. Fixes issues with strftime() on NT not supporting eg %D, %e, %g, %G, %r, %T, %u and %V. Fixes testsuite failures on NT.
Parser.Tabular: Use Pike.DestructImmediate. The parser gets confused and may end up in an infinite loop if _checkpoint objects are not destructed when it expects them to be.
Process [Doc]: Fix AutoDoc markup issue.
Tools.AutoDoc.PikeObjects.EnumConstant: Reduce code duplication.
Process.run: Fix documentation typo
Process.run: Add example for redirecting output to stdout/stderr
Fixed syntax error.
Show fallthrough.
Stdio.InputStream: Add read_function() to the API. Fixes warnings in Standards.IIM.
Crypto.Hash: Deprecate use of negative lengths to hash().
Fix a couple of docs typos
Iterators [Compat]: Add 8.0::{Array,Mapping,Multiset,String}.Iterator This fixes compat for code that does stuff like #pike 8.0 multiset l = (< "foo" >); return Multiset.Iterator(l)->index(); // Return first element of l. We assume that noone does inherit on Array.Iterator et al.
Stdio: Added InputStream et al. These types can be used in places where files opened for reading are accepted.
8.0::Stdio: Make 7.8::Stdio happy. 7.8::Stdio inherits 8.0::Stdio.module, and expects to find stuff like _Stdio there. Inherit 8.1::Stdio.module so that 7.8::Stdio finds the expected symbols.
8.0::Stdio.FILE: Add missing symbol set_peek_file_before_read_callback(). Also mark it as optional and deprecated, and same for Stdio.File. Move 8.0::Stdio.File to module.pmod to avoid conflict with 8.0::Stdio.FILE on case-insensitive filesystems. Note that the symbol has been marked deprecated since Pike 7.8. Fixes issues where eg Stdio.stdout wasn't compatible with 8.0::Stdio.File.
Testsuite [7.8::Crypto]: Fix some tests.
Shuffler.Shuffle: The wrap callback may return zero.
Debug: added functions to generate perf map files
Testsuite: Fix some broken calls of predef::compile_string().
Crypto.HMAC: Fix some warnings.
Nettle.Hash: Adjust type of block_size() to match __builtin.Nettle.Hash.
Documentation [Protocols.HTTP]: Prefix StatusCode descriptions with code. This makes it easier to find out that eg Protocols.HTTP.HTTP_NOT_FOUND should be used to generate error code 404.
Protocols.HTTP: Updated the set of known status codes. The set of status codes should now be up to date with http://www.iana.org/assignments/http-status-codes/http-status-codes.txt . Also adds the enum StatusCode for grouping the status codes and autodoc markup with rfc references for all the symbols.
EFUNs: Improved integer types for several math functions. Improves the return types for predef::sqrt(), predef::min(), predef::max(), predef::limit(), predef::abs() and predef::sgn() when called with integer types.
Tools.AutoDoc: Improved support for array length information. Fixes support for parsing and rendering of array types like array(0..5:string).
Compiler: Adjust approach to lfun::create() fallback. Instead of having a fallback at lookup time, the compiler now adds lfun::create() as an alias for lfun::__create__() if there is no explicitly defined lfun::create(). This should be (much) more robust and backward-compatible. Fixes some fall-out from the #10086 changes.
Compiler: Add lfun::__create__(). This lfun is intended to hold the code previously inlined in lfun::create() for the implicit create syntax. Preparation for implementing the implicit create case(s) of #10086.
Parse new array type.
Misc: Fix incorrect syntax in autodoc
Make ASN.1 secure_der_decode always catch decoding errors and return 0 instead. Make leading zero in integer encodings an error in secure mode.
ADT.Sequence: Update to new iterator API.
Documentation [ADT.Sequence]: Remove remaining references to adapters. The module was renamed ADT.Sequence almost 20 years ago, so fix the remaining places that refer to it as an array adapter.
Parser.RCS: Update to new iterator API. Fixes some of #10085.
ADT.List: Updated to new iterator API. Fixes some of #10085.
ADT.CircularList: Update iterator to new API. Also adds testsuite and fixes some documentation errors.
Iterators: Add 8.0::get_iterator(). Add wrapper that implements the 8.0 and earlier iterator API. Also update the testsuite to match the current iterator behavior.
Sql.sql_result: Fix compilation error.
Iterators: Improve robustness of backward compatibility. Move backward compat detection code from compiler to predef::get_iterator(). Backward compatibility is now handled by wrapping old iterators with CompatIterator.
Sql.sql_result: Base this class on __builtin.Sql.Result. Reduces code-duplication.
ADT.Relation.Binary: Updated implementation of lfun::_get_iterator(). Also added some documentation.
Iterators: Changed iterator API. Runtime: * Iterators now start at the position before the first element. * foreach() calls lfun::_iterator_next() on entry. This means that the loop will skip the element the iterator was on (if any). * Removed lfun::`+(), lfun::`+=() and lfun::`!() from the builtin iterators to simplify the semantics. * Implementing just lfun::_iterator_next() is now sufficient to make a working iterator. Compiler: * The Pike compiler will add a wrapper lfun::_iterator_next() for code that uses the original API. TODO: * There are more iterators that need to be adjusted to the new API. Fixes some of #10085.
Documentation [Stdio.Readline]: Document {enable,get}_history().
Documentation [Stdio.Readline]: Add doc for set_{non,}blocking().
Documentation [Stdio.Readline]: Add doc for read() and write() et al.
Documentation [Readline]: Added an example of how to use.
7.8::Crypto.DSA: Stricter handling of zero. Fixes multiple warnings.
EFUNs: Restructuring of the sprintf() typechecker.
Pike: get_return_type() now supports the state mapping.
Pike: Support state mapping in low_check_call().
Remote: Stricter handling of zero.
Crypto.Password: Fix support for Django-style pbkdf2_sha256.
Compiler: Update code generator to support F_SSCANF_80.
Compiler: Updated prototypes for __handle_{sprintf,sscanf}_format(). The second argument may be UNDEFINED, so declare the function type accordingly, and do not complain if it is.
Compiler [Typechecker]: Changed API for apply_type_attribute() et al. They now get a mapping that they may use to keep state between arguments.
Added zero to piek methods that returns 0 in the src folder.
Crypto: Fix multiple warnings about passing of zero values.
Stdio: Add some missing prototypes to Stdio.NonblockingStream.
Updated types where documentation said 'or zero'.
Web.Api.Instagram: Allow post data to be zero. Fixes several compilation errors.
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 <access_token> by default. Also updates Web.Api.Github accordingly.
Stdio.FakeFile: Improved function types. This class needs to be compatible with both Stdio.BlockingFile and Stdio.NonblockingStream. Also fixes several broken prototypes in Stdio.NonblockingStream. Fixes several testsuite failures.
Geography.Country: Allow iso2 or fips10 code to be zero.
CommonLog: Fix type for callback function.
Image.GIF: Updated type for _render_block().
EFUNs: Improved type for sizeof() and strlen().
Protocols.HTTP: Allow async callbacks to be zero
Removed redundant and out of sync type declarations.
Protocols.HTTP: Allow callbacks to be zero
Stdio.File: Allow callbacks to be zero
Documentation [_Roxen.HeaderParser]: Improved some doc.
Program: Fixed some warnings with respect to defined().
Merge branch 'patches/support-mixed-in-count_memory' * patches/support-mixed-in-count_memory: GC: Support remaining types in Pike.count_memory().
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().
GC: Support remaining types in Pike.count_memory(). Users of Pike.count_memory() typically do not want to bother filtering its arguments, so perform filtering in count_memory() rather than throwing errors. Also adds support for counting memory for objects referenced via functions.
Documentation [SSL]: Fix typo in previous commit.
doc: fixing some autodoc markup
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.
Sql.Sql: Added query_db() to the API.
Mysql: Added query_db().
Mysql: Add query_db() and reset().
__builtin.Sql.Connection: Added query_db() and reset() to the API.
decode_value: Fix "Calling undefined function __INIT()" The autogenerated __INIT calling through to inherited __INITs should not be generated on decode_value, because it has already been recovered from the dump.
Added convenience function to load letsencrypt certificate.
Added String.bits to give the number of actually used character bits.
Added convenience function to drop process privileges.
CritBit: Fixed prototype for `[]=().
Doc [Nettle.BlockCipher16.KW]: Add note from RFC 6931. Also removes obsolete note about using the AEAD APIs. Minor code clean up.
SSL: Improved support for Edwards curves. Default to using Edwards curves for ECDH(E) if possible. Also adds experimental support for x448-curves analogous to the support for x25519-curves.
Bugfixed diff_namespaces. Added character encoding to render_xml.
Doc [Protocols.LysKOM]: Some minor changes.
Doc [Traditional]: More sections and move around stuff.
Doc [SSL.Packet]: Use Autodoc markup.
System.Memory: Updated API for lfun::`[]=() to current. It now no longer complains about getting the context. Removed support for assigning to ranges as it (AFAIK) never has worked, and there is no corresponding lfun. Fixes some testsuite failures.
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.
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.
Make it possible to not load dumped files.
System.TM: Support initialization with bignums. Fixes post-2038 support on ILP32 architectures with 64-bit time_t.
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.
Int: Make ninf visible.
Documentation [Array]: Improved doc for dwim_sort_func().
Backported fragment helper methods.
Protocols.TCP: Add autodoc everywhere
Protocols.TCP: Begin implementation of Happy Eyeballs (RFC 8305). Code formatting not sorted out, lots of bugs, this is not ready to use yet.
WebSocket: Provide a query_id() function to parallel Stdio.File
Doc [Thread]: Added some more notes about fallback classes.
Doc [Thread]: Removed broken reference.
Thread: Added MUTEX_SUPPORTS_SHARED_LOCKS recognition constant.
Doc [Thread]: Added description of the module.
Doc [Thread.Thread]: Improved doc for status().
Doc [Threads]: Ignore implementation details of fallbacks.
Doc [Thread.Condition]: Added a note about signalling.
Threads.MutexKey: Added timeout to upgrade().
Doc [Thread.Mutex]: Added note about shared locks.
Thread: Removed redundant and obsolete classes RWMutex and RWKey. Their functionality is provided by Thread.Mutex and Thread.MutexKey.
Doc [Image.ColorTable]: Fix markup typos.
Doc [Stdio]: Document some more constants.
Doc [Thread.MutexKey]: Fix some markup typos.
Doc: Fixed AutoDoc markup typo.
Doc [Builtin.__master]: Document the class.
Merge branch 'security/decode_value' into 8.0 * security/decode_value: decode_value(): Allow to restrict decoding to simple types
Merge branch 'security/decode_value' * security/decode_value: decode_value(): Allow to restrict decoding to simple types
decode_value(): Allow to restrict decoding to simple types The encoded value has quite a bit of control over our process. Allow to restrict decoding to primitive types by passing coding as -1.
MIME: Stricter types.
Doc [Ffmpeg]: Fixed some markup issues.
SSL.Constants: Remove obsolete (draft-only) constant.
Doc [SSL]: Adjusted some documentation.
Merge branch 'rosuav/http-multi-connect'
Charset: Strict types.
Protocols.DNS: Return host_to_ip to its former state of IPv4-only
Protocols.DNS: Add host_to_ips (plural) to parallel host_to_ip
Val.Range: Fix autodoc markup
EFUNs: Add __cast().
Runtime: Adjusted some more return types to include zero.
Runtime: Adjusted return types for lots of functions to include zero.
Doc [Crypto.DSA]: Fix typo.
Doc [Gmp.mpf]: Fix AutoDoc markup typo.
Protocols.DNS: Cleanup interface, allow arbitrary numbers of restargs.
Protocols.DNS: Add a resolver compatible generic_query().
Protocol.DNS: Windows has a hosts file too.
CPP: Added #elifdef and #elifndef from C2x.
Protocols.DNS: Extend rcode constant list.
DNS.client: Expose match_etc_hosts.
Improved documentation.
Implemented Promise variants of async lookup.
async_connect using promises.
Doc: Fix some documentation typos.
Shuffler: Add freerun parameter, to avoid bulkmode/TCP_CORK.
Crypto.DSA: Fix a few warnings.
Fixed warnings.
Image.ILBM: Remove $Id$
Image.X: Remove $Id$
Stdio.Buffer: Fix docs.
Shuffler: Update docs.
Shuffler: done_cb is called on every pause.
Shuffler: dup() the filedescriptor to avoid conflicts with a read-fd_box.
Stdio.Pipe: Add set_nonblocking_keep_callbacks() member.
Image.BMP: Remove $Id$
Shuffler: Support wrap_cb on array sources.
Debug: Add map_all_strings() to trace memory leaks.
Shuffler: Add autopause mode.
Fix typos.
Stdio.Buffer: Autocopy it when reallocing a locked buffer.
Shuffler: Add support for a single-byte source.
Shuffler: Add support for array sources.
Image.GIF: Remove $Id$
LFUNs: Update the types for lfun::`+(), lfun::``+() and lfun::`+=(). These lfuns are no longer called with multiple arguments, so update the types and documentation accordingly.
Fix typo.
Added set_text() to update the contents of a text node.
Master: Added predef::zero.
pgsql: Simplify SQL logging.
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.
Merge branch 'patches/bug10059' * patches/bug10059: Inotify: add_watch() now returns -1 on some failures.
Documentation: fix markup errors
Program.annotations: invert recursion flag to make more sense for the default case.
Documentation [LFUNs]: Added some compat notes.
Documentation [LFUNs]: Added some doc for the _iterator_*() lfuns.
Thread.RWMutex: Added current_locking_{thread,key}s().
ADT: Use new iterator LFUNs in more places.
EFUNs: Added efuns for accessing iterator state.
ADT.List: Use the new iterator LFUNs. Fixes multiple warnings on start.
Iterators: Use the new LFUN names. Fixes lots of warnings.
LFUNs: Support atomic get and set with lfun::`->=() and lfun::`[]=(). `->=() and `[]=() should now return the previous value. Also alters ::`->=() accordingly.
CHANGES: updates in preparation for release
Documentatation: Document lfun::_atomic_get_set(). Also adds FIXMEs for some undocumented lfuns.
EFUNs: Add predef::atomic_get_set().
Documentation [Sass]: Fixed AutoDoc mk II markup.
Documentation: Improved doc for search().
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.
Stdio.Buffer [search]: Support searching for substrings.
Stdio.Buffer: Added _search().
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.
Stdio.Buffer: added truncate()
Gettext: Prevent argument of textdomain from being empty
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.
Program: add Program.annotations() for retrieving annotations defined on a program.
More documentation of HeaderParser->feed
SSL.ServerConnection: Added API clarification.
Concurrent: Move handling of aggregated promises to AggregatePromise. This simplifies the code for promises that do not use aggregation, and avoids bugs when aggregation functions are used in combination with non-aggregation functions.
Concurrent.Future: Added try_get().
Concurrent.Future: Added query_{success,failure}_callbacks().
Concurrent.Promise: Refactored the dependency handling. Get rid of multiple cases of circular referencing via AggregateState. Removes the AggregateState class. The folding function no longer gets called with failure values. The successful array result no longer contains failed values. References between Promises and Futures should now strictly be only in the result notification direction. API-compatible, user level code should not notice any differences.
Val.Range: Fixed multiple warnings. Also adds some FIXMEs regarding the API.
Thread.Mutex: Improved behavior for {try_,}shared_lock(). If the current thread already holds a shared lock, a new one is created without waiting. This avoids some dead locks.
Threads.Mutex: Added {try_,}shared_lock().
Thread.RWMutex: Added try_{read,write}_lock(). Also adds Thread.RWKey()->try_upgrade().
Thread.Thread: Add gethrvtime().
Thread.RWKey: Added support for down- and upgrading write locks. Also fixes a build error.
Threads.RWMutex: Use the same Key class for both read and write. Reduces code duplication and complexity a fair bit.
Thread.RWMutex: Removed remnants of support for recursive locks.
Stdio.Fd: Convert read() into a PIKEFUN.
HTTP.Server: Expose filename_to_extension().
Stdio.Fd: This is now a PIKECLASS.
Documentation [Termios]: Minor namespace adjustment.
Thread: Mark simulated MutexKey objects for immediate destruction.
Move Markdown into Parser and leave a stub behind in Tools
markdown: Fix docs typos
markdown: Add very basic autodoc markup to Renderer
markdown: Carry attributes from the lexer to the renderer
markdown: Allow replacement of the lexers and parser
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).
HTTP.Server.Request: Add response member for log_cb.
MIME: Move decode_/encode_headerfield_params functions here.
Documentation [Stdio]: Fixed some typos.
HTTP: Add params_encode() and params_decode().
Val.Inet: Add >> and << operators modeled after PostgreSQL.
Arg: Document the help/usage system.
Thread.ResourceCount: Provide fallback implementation
Arg: Fix docs.
Crypto: Update bcrypt docs.
Documentation [_Stdio]: Added some doc.
Documentation [Stdio.Buffer]: Fixed markup typo.
Documentation [Stdio]: Document low-level classes.
Stdio.UDP: Added `_fd().
Documentation [Stdio.Port]: Improved doc for fd_factory().
Stdio.UDP: Added dup().
Stdio.UDP: Added support for write callbacks.
Stdio.UDP: Support the default destination in send().
Stdio.UDP: Adjust query_mtu() to account for headers.
Stdio: Added query_mtu() to Stdio.File and Stdio.UDP.
SSL.Connection: Filter duplicate DTLS packets.
Documentation [Stdio.UDP]: Improved doc for some constants.
SSL.DTLSState: Implemented sliding window for sequence numbers. Needed for DTLS (#10032).
SSL.Packet: Added seq_num to Packet. This is in preparation for implementing DTLS (#10032).
Documentation [Stdio.File]: Enabled some Autodoc markup.
Documentation: Fixed autodoc syntax for bcrypt_{hash,verify}(). Fixes #10022.
Crypt.Password: Support bcrypt hashing.
Inotify: Improved handling of invalid event callbacks. The events are now buffered until the callback becomes valid. Fixes #8042.
Operators: `|() now supports UNDEFINED with multisets. Fixes #10021.
Added JavaScript to cgrep
CHANGES: Added note about pty handling on NT. Fixes #10008.
ADT.OrderedMapping: Improve docs.
ADT.OrderedMapping: Fix duplicate entries, optimise and add substract.
Documentation [Stdio.Port]: Documented changed set_id(). #4312
pgsql: Toggle cache_autoprepared_statements default.
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().
Merge branch 'grubba/pty-handling' * grubba/pty-handling: Stdio.File: Added tcdrain() and tcsetsize().
Stdio.File: Added tcdrain() and tcsetsize(). It is now possible to set the window size for a pty or other terminal. Also adds documentation for them as well as tcflush() and tcsendbreak(), and moves it and the documentation for tc{get,set}attr() from Stdio.File to Stdio.Fd. Also some fixes to make the code work on systems with <sys/termios.h> but no <termios.h>, and preparation to make some of it work on NT. Fixes some of #10013.
Addressed code review issues Forward port from Pike 8.0 as noted in #10012.
Documentation [Standards.X509]: Fixed some typos. Fixes #10012.
Standard.X509: Make signature algorithms configurable
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.
Merge branch 'grubba/pty-handling' into 8.0 * grubba/pty-handling: Process.Process [NT]: Added modifier "conpty".
Merge branch 'grubba/pty-handling' * grubba/pty-handling: Process.Process [NT]: Added modifier "conpty".
Process.Process [NT]: Added modifier "conpty". This modifier associates a ConPTY with the new process without also setting any of stdin, stdout or stderr. Fixes #10008.
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.
Documentation [Stdio]: Even more PROP_TTY doc.
Merge branch 'grubba/pty-handling' * grubba/pty-handling: Documentation [Stdio]: Added some more notes regarding PROP_TTY.
Documentation [Stdio]: Added some more notes regarding PROP_TTY.
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(). ...
Merge branch 'grubba/pty-handling' * grubba/pty-handling: 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(). I/O [NT]: Reading from the console on NT may fail with ENOMEM. I/O [NT]: Restructured debug_fd_read() somewhat. I/O: Added fd_*-wrapper for openpty().
Process.create_process [NT]: First go at attempting to support ptys.
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.
Merge branch 'grubba/fdlib' into grubba/pty-handling-new * grubba/fdlib: (55 commits) I/O [NT]: Use read-write locking for fd_busy and fd_to_{socket,handle()}. I/O [NT]: Fixed typo. I/O [NT]: Avoid blocking on read from pipes with data. Added some paranoia System [NT]: Normalize the drive letter explicitly in normalize_path(). System [NT]: More normalize_path() fixes. Configure [Solaris]: Fixed quoting level issue. System [NT]: Fixed trailing slashes from normalize_path(). I/O [Solaris]: Fix getcwd() on Solaris. I/O [NT]: Fixed a few warnings. I/O [NT]: Moved bulk of normalize_path() to fdlib. System [NT]: Update normalize_path() to use UTF8. I/O [NT]: Get rid of DO_NOT_WARN(). 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). I/O [NT]: Fixed deadlock. I/O [NT]: Updated FD_DEBUG diagnostics. I/O [NT]: Survive invalid UTF-16 surrogate pairs. ...
Stdio: Added support for PROP_TTY to pipe().
Stdio: Some pty-handling cleanup. Add wrappers emulating missing libc functions.
Merge branch 'grubba/pty-handling' * grubba/pty-handling: Process [NT]: Support UTF-8 in create_process(). I/O [NT]: Added low_dwim_utf8_to_utf16().
Merge branch 'grubba/fdlib' into grubba/pty-handling * grubba/fdlib: (55 commits) I/O [NT]: Use read-write locking for fd_busy and fd_to_{socket,handle()}. I/O [NT]: Fixed typo. I/O [NT]: Avoid blocking on read from pipes with data. Added some paranoia System [NT]: Normalize the drive letter explicitly in normalize_path(). System [NT]: More normalize_path() fixes. Configure [Solaris]: Fixed quoting level issue. System [NT]: Fixed trailing slashes from normalize_path(). I/O [Solaris]: Fix getcwd() on Solaris. I/O [NT]: Fixed a few warnings. I/O [NT]: Moved bulk of normalize_path() to fdlib. System [NT]: Update normalize_path() to use UTF8. I/O [NT]: Get rid of DO_NOT_WARN(). 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). I/O [NT]: Fixed deadlock. I/O [NT]: Updated FD_DEBUG diagnostics. I/O [NT]: Survive invalid UTF-16 surrogate pairs. ...
SSL.Context: Fix autodoc typo
Merge branch 'grubba/pty-handling' * grubba/pty-handling: Stdio: Added support for PROP_TTY to pipe(). Stdio: Some pty-handling cleanup.
Fix documentation for next_prime
Fix function definition for next_prime and the documentation for next_prime and probably_prime_p
Fix docs formatting
Crypto.Password: Fixed verify() with NetBSD-style crypt_sha1 hashes. Fixes several testsuite failures. Also adds some related documentation.
Crypto.Password: Fixed some warnings.
Crypto.Password: Added support for NetBSD-style crypt_sha1().
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.
Documentation [Image.TIFF]: Enabled some doc.
ADT.List: Added _reverse().
MIME: Added decode_crypt64(). This is the inverse of encode_crypt64().
LFUNs: Added lfun::_reverse(). This is a function that is called by reverse() to generate a reversed object.
MIME: Added encode_crypt64(). This is an encoding similar to base64 that is used by several password hashing algorithms.
Documentation tweaks.
Added support for SHA-512-256, userhash and utf-8.
Added support for SHA-256 HTTP Digest
Reworkd HTTP Authentication quite a bit. Supports client and server.
Documentation [Charset]: Fixed markup typo.
Documentation [DVB]: Fixed some markup issues.
MIME: Added {de,en}code_base32{,hex}().
MIME: Added optional third argument to encode_base64{,url}(). The third argument controls use of padding.
Crypto.Password: Added support for PHPass Portable Hashes. Crypto.Password.hash() and Crypto.Password.verify() now know about $P$ et al. Also slightly stricter types and censoring of the password argument from backtraces.
Debugger: add WIP debugger pmod. The module contains: * High-level debugger logic, * breakpoint representation, * Debug Adapter Protocol object models, * a debug server handling communication between the debugger and an IDE via DAP There are numerous TODOs, among them being: * introduce autodoc-compliant documentation, * untangle debugger logic from the server, * extract the debugger interface that could be shared between other * interfaces - DAP,gdb, ...
Make Profiling.pmod doc reflect the real state of things.
Add "(?)" as the safe calling variant of "()"
Nettle.Hash: Fix typo in autodoc
ADT.CritBit.BigNumTree: Disable autodoc more robustly. CExtractor now actually errors about spurious @endclass directives, which means we need to use DOCSTART() and DOCEND() around them in {tree,iterator}_source.H as we define DOCSTART() to /* in bignumtree.cmod to disable autodoc generation.
__builtin.Nettle.Hash: crypt_php() is now API-compatible with crypt_hash().
__builtin.Nettle.Hash: Added crypt_php(). This is a password hashing algorithm compatible with PHP Portable Passwords (when used with Crypto.MD5).
Crypto.Password: Added support for PBKDF2 password hashes. These are hashes generated by Python PassLib and Phpass.
Thread.RWMutex: Support recursive locking.
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.
Pike: Move DestructImmediate to the Pike module.
Thread.ResourceCountKey: Make destruct immediate
Thread.Farm: Use Pike.ProxyFactory in ResultWrapper.
Merge branch 'grubba/sprintf-linebreak-mode-fixes' * grubba/sprintf-linebreak-mode-fixes: Sprintf: Cleanup linebreak mode.
Sprintf: Cleanup linebreak mode. The sprintf "%/s" and "%=s" modes now break at the column width (defaulting it to the field width) and not the field width. This makes it possible to use formats like eg "%;*-=s" (instead of "%*-=s") to not get every line padded to the full column width.
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.
Documentation [SSL]: Fixed typo.
Compiler [generators]: Added yield().
Documentation: Fixed some AutoDoc markup errors. The documentation for String.Replace et al should now be in the correct place again, and the documentation for System.Time et al should no longer get lost.
Thread.RWMutex: Added read/write mutexes.
Documentation [Traditional]: Added Compression chapter.
Documentation: Updated type for predef::types().
Documentation [Gmp]: Fixed markup issue.
Nettle: Added support for CMAC.
Documentation [Traditional]: Added chapter regarding introspection.
Documentation [Traditional]: Added chapter about cryptography.
Added change_namespace to move all elements from one namespace to a different one.
Better selection of quote charactes.
Significantly improved output.
Documentation [Traditional]: Some more Sql details.
__builtin.Sql.Result: Added a default implementation of eof(). This fixes an issue where eg _sprintf() throws errors for some drivers.
Merge branch 'patches/pike197' * patches/pike197: Mysql.Result: Update the index counter when fetching rows.
Mysql.Result: Update the index counter when fetching rows. Call Sql.Result::increment_index() at relevant places. Fixes testsuite failure. Fixes PIKE-197 (#8197).
Documentation [SQLite]: Fixed some AutoDoc markup issues.
Compiler: Warn about indexing of deprecated values.
Documentation [Traditional]: Extended the graphics chapters.
Dokumentation [Traditional]: Added chapter "Threads".
Documentation [Traditional]: Added some sections.
Documentation [Traditional]: Sectioned the DB access chapter.
Documentation [Traditional]: Added some structure to the I/O chapter.
Documentation [Traditional]: Move SQLite to the Database page.
Documentation: Move operators to the Operators chapter. They were hidden in the "The rest" chapter... Also adds some minimal documentation of the **-operator.
Documentation [Sybase]: Fixed broken AutoDoc markup. Fixes the inheritance graph for predef::...
Documentation [Mysql]: Fixed some Autodoc markup typos.
SSL.File: Add support for set_nodelay().
ADT.Stack: Added pop_to(). This is useful to undo an unknown number of push()es.
SSL.Constants: Renamed some EdDSA-related constants for consistency.
Merge branch 'tobij/fix-precompile-get-storage_2' * tobij/fix-precompile-get-storage_2: Tools.Standalone.precompile: Fix storage offset handling
Tools.Standalone.precompile: Fix storage offset handling Programs using their parent may store parent information in the beginning of ->storage, thus we need to add p->inherits[0].storage_offset when trying to reach an object's storage. The compiler/runtime correctly takes care of this in THIS, but the OBJ2_ and GET_..._STORAGE macros did not take this into account.
Locale: Reintroduce deprecated Charset alias This reverts commit f64cba1ff832383ac7a46b4bbe8a0264700de976. This reverts commit ffedb3787383db78beddce529eda0bde7e24d40b. In Pike 8.0.* and below, no deprecation warnings were issued by the compiler when accessing Locale.Charset, as the deprecated status of Locale.Charset was hidden from the compiler by a joinnode. In 8.1, the master will now issue deprecation warnings in such cases. Hence, re-adding the deprecated Locale.Charset alias seems like a good idea for users to have a good chance of noticing the deprecated status with an 8.1 release etc. before final removal of the alias in a future release.
Documentation [Web.Sass]: Make the doc appear in the correct place.
Documentation [Pike.InhibitDestruct]: Added some cross-references.
Sass: Create pike -x sass SCSS compilation tool.
Doc fix.
HTTP.Server.Request: Restore backward compatibility and fixes to Shuffler. Changes to HTTP.Server.Request: - Support set_mode() in HTTP.Server.Request to optionally enable Shuffler to output the data on the wire. Without setting it, it will revert to the old buffered-output method. - Reinstate write-timeout on HTTP.Server.Request, make sure it works in both classic and Shuffler modes. Changes to Shuffler: - Add automatic TCP_CORK support. - Clean up code duplication between shuffler and sendfile. - Move wrap_callback from a separate member to an optional argument to add_source(). - Add support for Stdio.Buffer. - Adding empty sources works consistently now. - Fix broken cornercases when adding strings or memory regions. - Fix dataloss when using non-blocking io on input files. - Support starting in a file at the spot where the filepointer is. - Add start/length arguments to the main Shuffle object, to skip and limit in the entire concatenated output (needed for HTTP-range support).
Pipe.Gzip: Moved and renamed to a more generic spot.
Documentation [Locale]: Some minor adjustments.
Gz.Pipe.Uncompress/Transmogrify: Add parent class and Uncompress pipe.
Gz: Put classes in separate files to lower memory footprint.
Stdio.Buffer: Stricter types. Use string(8bit) in more places.
Gz.Pipe.Compress: New non-blocking compression pipe.
Shuffler.Shuffle: Numerous fixes and add set_wrap_callback(). The fixes include: - Fixed broken end-of-stream detection for d_source_pikestream.c. - Reduce memory footprint of source-structs by half. - Fixed memory corruption issues because a memcpy was used on overlapping regions. - Eliminated all dynamic memory allocations in the shuffler. For file-descriptor based streams it still has a fixed overhead of 16KB per stream, for all other streams the overhead now is close to zero. Still TODO: - Reduce the memory overhead for fd-based streams by half; it uses double buffering now, it could trivially be reduced to use a single buffer.
HTTP.Server.Request: Use Shuffler to send and support sending chunked data.
FakePipe: Optimise and allow internal sockets to be destructed independently.
FakePipe: Numerous bugfixes; it actually works now. Fixes include: - Callback handling rationalised, fixed and optimised. - Eliminate double inheritance which caused subtle conflicts. - Changes the API to use ->other instead of ->get_other(). - Use single references to mux and cond variables.
SSL.Constants: Added some constants for RSA PSS signatures.
Crypto.ECC.Curve25519: Added pkcs_eddsa_id(). This is useful for finding the correct curve to use, given an eddsa_id, as it differs from the corresponding curve_id. Also updates some RFC references to reference RFC 8410.
Documentation [Nettle]: Fixed typo in doc.
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.
Documentation [SSL.Constants]: Updated AutoDoc.
SSL: Use SignatureScheme instead of array({Hash,Signature}Algorithm).
SSL: Renumbered HASH_* in preparation for using SignatureScheme.
SSL.Constants: Fixed typo.
SSL.constants: Added some entries from RFC 8422.
Standards.PKCS: Updated with references to RFC 8410.
Web.Api: Add and rewrite support for all Google APIs (past/present/future).
Tools.Standalone.precompile: Improved doc.
EFUNs: Add deprecated_typep() efun.
Compiler: export current_{line,file}
EFUNs: Add typeof_identifier() typeof_identifier(prog, identifier) returns the type of a named identifier in the program.
Compiler: Export state of no_deprecation_warnings ... in the active compilation to Pike.
Implemented MD5-sess algorithm.
Support verifying that the nonce used actually came from the server.
Added support for Digest MD5
Pike.ProxyFactory: Added new function. This is a factory for creating classes that act as a proxy for the specified program.
Master: Re-hook global constants on replace_master(). replace_master() sets the variable is_pike_master in the object that is to be the new master to 1. Catch this with a setter so that global functions implemented by the master are actually implemented by the active master. This mostly affects the test suite, which replaces and restores master objects several times.
Concurrent.Promise: Introduce delay() and optimise timeout().
Concurrent.Promis: Fix/optimise delay() and timeout().
Concurrent.Promise: Add delay() member to delay the future.
Toole.Standalone.test_pike: Complain about calls of handle_error().
System.Memory: Stricter types for p{read,write}*(). Also fixes the typo in the type for pread{16,32}n().
ADT: Protect even more lfuns.
EFUNs: get_iterator() now passes extra args to lfun::_get_iterator().
ADT: Protect lots of lfuns.
Testsuite: Protect lots of lfuns.
Pike.InhibitDestruct: New API for inhibiting destruction.
EFUNs: lfun::_destruct() may now inhibit explicit destruction. lfun::_destruct() returning 1 now causes the object to survive an explicit destruct() call. Note that the object will still be destructed if the destruct is for any other reason.
Runtime: Support arrays in program_from_svalue() et al. They now handle arrays in the same manner as inherit.
Documentation [Pike.Backend]: Improved markup. Pike.Backend and Pike.SmallBackend are now documented as classes (instead of as constants). This makes the documentation show up where people expect it.
Documentation [master]: Added some AutoDoc mk II markup.
Merge commit '722771973bd' into patches/lyslyskom22891031 * commit '722771973bd': (6177 commits) Verify that callablep responses are aligned with reality. ...
Merge branch 'grubba/thread-farm' * grubba/thread-farm: Thread.Farm: Added ResultWrapper.
Thread.Farm: Added ResultWrapper. This is a wrapper for the Result class to detect when the user loses its reference to it, in order to not lose reports of any errors from the worker threads.
Merge commit '2470270f500c728d10b8895314d8d8b07016e37b' into grubba/typechecker-automap * commit '2470270f500c728d10b8895314d8d8b07016e37b': (18681 commits) Removed the old typechecker. ...
Pike.Annotations: Added Override annotation. This annotation verifies that the annotated symbol also exists in one of the inherited programs.
Compiler: Call end_pass_identifier() for identifier annotations.
Concurrent.Future: Added wait(). This differs from get() in that it will not throw on failure.
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.
EFUNs: backtrace() now takes an optional argument. Calling backtrace() with an argument of 1 now causes it to return an array(LiveBacktraceFrame) instead of an array(BacktraceFrame).
Builtin.LiveBacktraceFrame: Initial implementation. NB: Some features are still missing.
Documentation [Concurrent]: Note where backend state isn't propagated.
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.
Documentation [Concurrent]: Added note about backend disabled mode.
Concurrent.Future: Added {get,set}_backend(). This makes it possible to have a custom Pike.Backend handle the callbacks for the Future.
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.
Merge branch 'marcus/exif_sanitization'
Merge branch 'marcus/exif_sanitization' into 8.0
Image: Add convenience functions applying EXIF decoding and rotation The functions Image.Dims.exif_get() and Image.exif_decode() work like Image.Dims.get() and Image._decode(), except that if the image happens to be JPEG the EXIF aware functions Image.Dims.exif_get_JPEG and Image.JPEG.exif_decode are used.
Image.Dims: Revert EXIF flipping of dimensions in get_JPEG Like for JPEG._decode, add a specific exif_get_JPEG which does the flipping instead.
Stdio: Buffer mode now uses ->write(Stdio.Buffer()) API As part of this change, the Stdio.Buffer()->__fd_set_output() API got replaced by Stdio.Buffer()->__set_on_write(), and users (File and SSL.File) have been adopted to use it.
GSSAPI: Autodoc typo fixes
Compiler: Fix autodoc typo
Documentation: Moved doc for {base,dir}name().
Documentation [Stdio.File]: Fixed some markup issues.
Master: Support __HAVE_COMPILER_NO_HANDLERS__. Implement support for handlers by overloading the CompilerEnvironment.
EFUNs [Master]: get_active_{compilation,error}_handler() moved to master. This is in preparation for moving all handler stuff to the master.
Master: Mark Describer objects for immediate destruction.
Documentation [Master]: Added some more doc.
AutoDoc: Added some support for parsing annotations.
Documentation [Master]: Added some minimal AutoDoc markup.
LFUNs: Added magic lfun ::_annotations().
Merge branch 'patches/pike156' into 8.0 * patches/pike156: EFUNs: Hide mutex keys and crypto contexts from backtraces.
Merge branch 'patches/pike156' * patches/pike156: EFUNs: Hide mutex keys and crypto contexts from backtraces.
EFUNs: Hide mutex keys and crypto contexts from backtraces. Having unexpected references to mutex keys may cause hangs and complaints about attempting to lock mutexes recursively. Fixes PIKE-156 (#8156).
EFUNs: Return an array(multiset) from predef::annotations(). A multiset is a more natural datatype for the set of annotations. NB: The low-level code still uses arrays; this will most likely be changed later.
EFUNs: Added m_add(). This function adds (as opposed to inserts) an element to a multiset. Also adds corresponding (fake) lfun::_m_add().
Make werror() (and by extension exit()) respect current locale This makes it possible to output non-ASCII text and still have it legible in all environments. write() still outputs binary data, and so will werror() and exit() in 8.0 compat mode. Also, restore master.pike.in to ISO-8859-1 encoding, which is the only one supported for the master, and remove the (now superfluous and) aribitrary use of string_to_utf8() for the copyright message.
EFUNs: m_clear() now supports multisets and objects. Adds LFUN _m_clear().
Merge branch '8.1' * 8.1: Thread.Condition: Improve docs. pgsql: Avoid excessive latency on frequent ping()s.
EFUNs: m_delete() now supports operation on multisets.
Thread.Condition: Improve docs.
Runtime: Adjusted API for lfun::_annotations(). The API for lfun::_annotations() now aligns better with the APIs for lfun::_indices(), lfun::_values() and lfun::_types(). Also adds some minimal documentation for some undocumented lfuns.
EFUNs: Added predef::annotations(). This function returns the annotations (if any) corresponding to the symbols returned by indices() on the same value. Also adds lfun::_annotations().
Pike.Annotations.Implements: Added initial implementation. This annotation causes the compiler to validate that the annotated class implements the specified API.
Compiler: Added Pike.Annotation. The compiler now calls end_pass() in any annotations on the program being compiled once each compiler pass.
Merge branch 'master' of https://github.com/mkrawczuk/Pike * 'master' of https://github.com/mkrawczuk/Pike: if -> else if Enable string import of single files. Throw error on failed import.
if -> else if
Merge branch 'buffer_mode_proposal_wip'
Stdio.File()->read: add optional offset argument and documentation
Stdio.File()->read(): advance buffer if possible This commit also removed Stdio.Buffer()->advance() because it is a bad API. It allows one to 'validate' uninitialized memory inside of Stdio.Buffer objects. Instead, we now try to advance the write offset in Buffer objects in Stdio.File()->read(), instead. This is done using a new internal API which can be extended to advance other buffer types in the future.
Stdio.Buffer: added allocate() and advance()
Added program.h to module.h
sprintf: Support floats in %p.
Documentation [Threads]: Some notes about interrupt() and kill().
Stdio.Buffer: Added support for escapes to read_cstring().
Fix refdoc typo.
Array.sum_arrays: Fix autodoc typo The function is called "sum_arrays", with a trailing "s", but the example in the documentation said "sum_array".
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.
Threads.Mutex: Added cond(). This creates a Thread.Condition bound to the mutex.
Parser.XML.Tree.XMLParser: Improved support for node factories. The node_factory() function(s) in unclosed element nodes (aka container nodes) will now be called to create the contained nodes. This allows for having different node factories in different parts of the XML-tree. CAVEAT EMPTOR: This changes the creation order for container nodes; they are now created BEFORE the contained nodes, previously they were created AFTER the contained nodes. Also fixes NULL-dereference in obscure case.
Threads.Cond: Validate that the expected mutex is used.
Fix copy-paste error in refdoc.
Cpp: Added some optional parameters to define_macro(). Renumber the CPP_MACRO_* values, so that the ones useful for users (CPP_MACRO_VARARGS and CPP_MACRO_KEEP_NL) come first. define_macro() now accepts two additional optional arguments; numargs and flags.
Cpp: Use less magic for __VERSION__ et al. __VERSION__, __MAJOR__, __MINOR__, __COUNTER__ and __DIR__ are now implemented with pike-level functions.
EFUNs: Added m_clear().
Cpp: Macro expansion failure is now indicated by returning 0.
CHANGES: Added note about inherit of CompilerEnvironment.
Cpp: Added cpp_error().
Documentation [Cpp]: Fix documentation markup error. Fixes remainder of LysLysKOM 22790861.
Cpp: Simplified base implementation of report(). The base implementation of CompilerEnvironment.CPP::report() now just calls CompilerEnvironment::report() in its parent. The handling of handler and compat_handler in report() is moved to the implementation in the master.
Whitespace changes.
EFUNs: Added get_active_compiler(). This function could be used to implement get_active_error_handler() and get_active_compilation_handler(). API clean up in preparation for moving handling of handlers to code written in Pike.
CompilerEnvironment: Added handle_import().
Compiler: Cleaned up the resolv() calling conventions. CompilerEnvironment()->PikeCompiler()->resolv() now takes a single argument, and looks up the current file and handlers from the PikeCompiler object, and then calls CompilerEnvironment()->resolv(). The actual calling of resolv() in the handlers is now performed by CompilerEnvironment()->resolv().
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.
Merge branch 'pike-modules/sass' into 8.1 * pike-modules/sass: Documentation [Sass]: Some clarifications regarding sass2scss(). Added method sass2scss to convert Sass syntax to SCSS syntax.
Documentation [Sass]: Some clarifications regarding sass2scss().
Added method sass2scss to convert Sass syntax to SCSS syntax.
Merge branch 'pike-modules/sass' into 8.0 * pike-modules/sass: Added the option "sass_syntax". Fixed broken indentation
Added the option "sass_syntax". This option will parse the input as having indented Sass syntax. This option only has effect in compile_string(). Also wrapped an unused argument in UNUSED().
ADT.Stack: Added peek().
Pike.get_runtime_info: Report the size of time_t too. Adds the entry "time_size" to the result from Pike.get_runtime_info().
MasterObject: Validate utf8_string contents in -rt mode.
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().
Merge branch 'patches/pike111' into 8.1 * patches/pike111: EFUNs: Support encoding to UTF-8 encoded UTF-16 in string_to_utf8().
EFUNs: Support encoding to UTF-8 encoded UTF-16 in string_to_utf8(). string_to_utf8() now supports the same extensions as utf8_to_string(). Fixes PIKE-111 (#8111).
CPP: fixed refdoc comment
Documentation: corrected documentation on set operators The operators |, &, - and ^ on arrays rely on the content having an ordering which is compatible with `==. Mention this in the documentation, as this will otherwise lead people to writte buggy code.
master: fixed refdoc comment
EFUNs: Rewrite of validate_utf8(). Changed validation approach in validate_utf8() to simplify the code, and make it easier to read/understand. Also adds some corresponding testsuite tests.
EFUNs: Added validate_utf8(). This efun checks whether a string is valid UTF-8 or not.
pgsql: Add streaming_typed_query() method to avoid emulate_bindings().
Debug.Rapidlog: New module for loggingfloods with minimal latency.
Simple code to support javascript
Efuns: Support little-endian input in string2hex().
sprintf: Officially support %p to display addresses.
pgsql: Eliminate rare deadlock on heavy interleaved queries tuned.
Merge branch 'grubba/fdlib' into 8.0 * grubba/fdlib: System [NT]: Update normalize_path() to use UTF8.
Merge branch 'grubba/fdlib' into 8.1 * grubba/fdlib: System [NT]: Update normalize_path() to use UTF8.
System [NT]: Update normalize_path() to use UTF8.
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(). ...
pgsql: affected_rows() now preserves as of yet unfetched rows.
Sql: Tighten up documentation.
__builtin.Sql.Result: Added increment_index().
MIME: Setter for message boundary prefix.
Sql: Formalise blocking nature of affected_rows(), improve docs.
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. ...
pgsql: Make affected_rows() and status_command_complete() wait for a meaningful result.
I/O [NT]: Use new low-level functions from Process.
Efuns: Use utf8_string in string_to_utf8() and utf8_to_string().
Crypto: Added some support for generating JWK Thumbprints. Cf RFC 7638.
Merge branch 'pike-modules/sass' into 8.1 * pike-modules/sass: Sass: Move module to Web.Sass. Sass: Hide the module when not available.
Sass: Move module to Web.Sass.
Merge branch 'pike-modules/sass' into 8.1 * pike-modules/sass: (79 commits) 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. Sass: Don't throw pike errors through the libsass layer. Sass: Error messages need to end with a line feed. Sass: Cleaned up documentation a bit. Sass: Fix building in a separate build tree. Sass: Generate config.h.in from acconfig.h. Sass: Removed obsolete stuff from Makefile.in. Sass: Removed quite a bit of stuff. ...
Sass: Cleaned up documentation a bit.
Merge github.com:poppa/pike-libsass into patches/pike89 * github.com:poppa/pike-libsass: (64 commits) [...]
Stdio.Stat: Added lfun::_equal().
Filesystem.Monitor: Add set_stable_time() function.
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.
Added Thread.Farm()->set_thread_name_cb() to help applications that monitor thread creation and termination for the purpose of tracking thread names.
Added convenience function to decrypt private key.
Documentation [Cpp]: Added some minimal documentation.
Cpp: Added C-implementation of a stack. This class is API-compatible with ADT.Stack, and is intended to be used by the preprocessor.
Documentation [Crypto.ECC]: Added reference to rfc.
Documentation: Document some more of the master.
Squashed 'vendor/libsass/' content from commit 6de5050 git-subtree-dir: vendor/libsass git-subtree-split: 6de5050d11a1789d9922eb24e2925047ecbb499b
Documentation [ADT.Stack]: Fixed some typos.
Stdio.File()->write: add documentation for buffer variant
Remove some stale code and update documentatin.
Somewhat more flexible opportunistic TLS implementation.
Documentation [Crypto.Password]: Fixed typo.
Improved type of Array.everynth
Merge commit '75c9d1806f1a69ca21c27a2c2fe1b4a6ea38e77e' into patches/pike63 * commit '75c9d1806f1a69ca21c27a2c2fe1b4a6ea38e77e': (19587 commits) ...
Put cp() in the global scope, as rm() and mv() are already there.
Fix documentation.
Improve docs.
Documentation: Restore the @namespace directives in master.pike. These were lost in the previous commit.
Fix typos and docs.
Filesystem.Monitor: Clean up rescheduling of backend_check().
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.
String.Buffer: Moved implementation. Moves implementation of String.Buffer from builtin.cmod to string_builder.cmod. Adds initialization of the module to happen before that of cpp. This will allow cpp.cmod to rely on String.Buffer to exist at compile time.
Deprecate RegGet*_76 and move RegGet* from efun to System.
Testsuite [Compiler]: Test indices() values() on programs. Symbols should only be listed once...
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.
strptime/strftime: Added at global level; rip out special strptime/strftime in Val.*.
Sql: Make big_typed_query fallback to big_query.
Sql.Connection: Fallback big_typed_query() to big_query(), and streamline docs.
pgsql: Readding primitive auto-reconnect logic.
Documentation [Nettle.BlockCipher]: Adjusted some references.
Sql.Promise: Add support for eventbased mapping of resultrows.
Sql.Connection: Fix docs and prototypes.
Sql: Fix several drivers to conform to new API.
HKDF rewrite. Should now be possible to use in TLS 1.3
Whitespace and doc fixes.
Always name the 4th argument of bind reuse_port instead of share
Debug.find_all_clones(): Fixed off by one issue. It now seems to work as intended also when include_subclasses is true.
MPI: Add documentation.
MPI: Document MPI typed arrays.
MPI: mark callback lfuns as protected in MPI typed arrays.
MPI: Declare function type explicitly in refdoc comments not providing the function signature produced function(:void), which was misleading.
MPI: Fix documentation for Init() and Finalize().
MPI: doc fix
Debug: Added find_all_clones().
Sql.sql_util.UnicodeWrapper: Inherit Sql.Result. This avoids code duplication for fetch_row_array() and enables the iterator API to work correctly.
Fix yarrow sources type.
Improved types.
Restore part of AmigaOS support.
Missed a typo.
Rip out final remains of OS2 and AmigaOS.
Equvivalent and equivalent are not equivalent.
Sql.sql_util.UnicodeWrapper: add fetch_row_array(). For compatibility with newer Sql.Result API.
We do not support OS/2
Documentation: Added doc for Builtin._take_over_initial_predefines().
Val.Timestamp,Date: Support strftime()/strptime().
JSON5: add flags to control quotation mark usage and identifier encoding in keys
Val.Range: Salvage SQL syntax for use in SQL subsystems.
Move to ISO date format to avoid mm/dd, dd/mm confusion.
Val.Range: Add !, <<, >>, isempty(), merge() and contains().
mktime: Clarify docs.
JSON5: new module, not quite complete (missing proper symbolic numbers.)
pgsql: Clarify docs.
Update GTK2 docs from source
GTK2: Update docs to clarify intended style now that destroy() isn't a method
Nettle: Fix AES128_CTR_DRBG on ILP32 architectures. 1L<<48 is zero on ILP32... Also some related ILP32 fixes for the reseed_interval getter/setter.
Convert Val to a directory and move the last pieces from builtin to it.
Moved out time-code from __builtin to Val. Reduces start overhead and prevents clobber of System.Time.
Documentation [Filesystem.Monitor]: Some clarifications.
TimeTZ: Add docs, finetune constructors.
Val.Timestamp: Polish docs.
Val.TimeTZ: More testsuite entries, docs and fixes.
Val.Time/Date: Small fixes, increased orthogonality of operators.
Enhance docs.
Change constants into inherited classes to make them show up in refdoc. Performance penalties?
Val.Timestamp et al: Moved the presence of the new types from the root to Val for now.
Timestamp/Date/Range/Inet: Operator orthogonality improved, testsuite expanded accordingly.
Timestamp/Date/Inet/Range: Documentation updates and fixes. Enhance orthogonality of the operators. Simplify the implementation of the operators (reduce codesize).
Timestamp/Date/Inet/Range: First stab at proper documentation.
Daylight 'savings' spelling corrections.
Sparse list of version support added.
Added SHA512/224 and SHA512/256
Range: Reuse Math.inf etc; Use NetUtils.
Add missing global types.
Val: Cleanup references.
Val.NaN: Move definitions from __builtin to Val to avoid circularities.
pgsql: Make use of the new Date/Time/Inet/Range datatypes to support them in binary transfer.
Val.nan: Introduce new Val values and native lightweight Date/Time/Inet/Range types.
Added some new 1.3 constants.
master: Added some minimal doc of describe_*().
Tumblr oauth URLs
Sql.Timebase: Adjust SQL-native types to support nanosecond resolution.
Sql: Add support for native Inet data type.
Concurrent: Transparent automatic backend enable/disable.
Sql: Add native support for Time, Date, Timestamp, Interval and TimeTZ types.
master: Document the resolver some more.
Back out the thin convenience wrapper hash and hash_hmac. Replacements: Crypto.hash(Crypto.SHA1, true)(x) -> Crypto.SHA1.hash(x) Crypto.hash(Crypto.SHA1) -> sprintf("%x", Crypto.SHA1.hash(x)) Crypto.hash_hmac(Crypto.SHA1,k)(x, true) -> Crypto.SHA1.HMAC(k)(x)
RC4 is alias for Arcfour
master: Added some documentation about the master filesystem.
Concurrent: Reduce stackdepth, minimise catch() breadth.
Concurrent: Slight optimisation and typo fix.
Promise: Update docs again.
Concurrent: Improve more docs.
Concurrent: Improve docs.
Concurrent: Add convenience variant to zip() and extend testsuite.
master: Added some documentation.
Stdio.Buffer: Support bignums in add_int{8,16,32}(). add_int8() and add_int16() now support getting called with a bignum. add_int32() with a bignum now ignores any bits outside the 32-bit range.
Promise: Replace Promise with Promise2, slightly updated interface. Most notable differences between HTTP.Promise2 and HTTP.Promise: - Less filling (20% smaller compiled object file). - Instead of two result objects, we simply have a single HTTP.Promise.Result object which is passed both on_success() and on_failure(). Why does the original separate this in a Promise.Success and Promise.Failure type? - Various code optimisations, that do not change the interface. - The Result object lacks the ok() method. What use was/is it? You should normally already know if you are a success or a failure callback. - The Result object returns the raw body through "data", and the decoded body through get() (to conform more to standard Future objects).
HTTP.Promise2: Offer get() instead of data in the Result object.
HTTP.Promise2: Proposed changes/optimisation/simplification of HTTP.Promise.
Crypto.Hash: Stricter string types.
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.
Concurrent: Clarify docs.
Concurrent: Add use_backend() to allow promises without a running backend.
Concurrent: Cleanup.
Concurrent.Promise: Reduce mutex contention, memory usage, simplify code, fix a few races.
Concurrent.Promise: Harmonise method names (failed -> failures).
Concurrent.Promise: Improve docs.
Concurrent.Promise: depend() fixes. Rename apply_fold() to fold(). Add first_completed(). Add min_failed(), max_failed(), any_results().
Concurrent: Add map_with() as an alias for flat_map().
Added support for automatic entropy underflow management.
Added minimal AES128 CTR DRBG random generator from NIST SP800-90Ar1
Compiler: Replaced resolv_program() with resolv_type(). The function resolv_program() (not to be confused with resolve_program()) is no longer used, so remove it. Move some inlined code from language.yacc to a function called resolv_type().
Sql.FutureResult: Rename raw_data -> data, and data -> get().
Sql.Promise: Improve docs.
Sql.Promise: New & improved interface.
Concurrent.Future: depend(),fold() and apply_fold(); interfacechange.
Sql.FutureResult: Polish docs and internals; uses status_command_complete instead of exception.
Add history pop function to Readline for Hilfe's benefit
Promise: Rename fold_finish() to apply_fold().
Promise: Fix docs.
Promise: Add depend(), fold() and fold_finish() methods.
Sql.FutureResult: Module was missing from the commits.
Fix docs.
Sql.Connection: Added missing methods (amongst others: asynchronous callbacks).
Sql.FutureResult: Add a Concurrent.Promise interface to Sql.Connection.
Doc fixes.
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.
SSL.File: Fix docs.
pgsql: Create proxy object to avoid circular references.
Thread.ResourceCount: New module to implement resource counters.
pgsql: Simplify and bolster the code by using Thread.ResourceCount.
Crypto.SCRAM: New module.
SSL.File: Implement query_fd().
pgsql: Update documentation.
Sql.Sql: Support error(void|int clear).
Nettle.Hash.HMAC: Fix non-default block_sizes(). Fall back to the default (generic) HMAC implementation if a non-standard block_size() is requested. Fixes [LysLysKOM 22249286]. Thanks to Stephen R. van den Berg <srb@cuci.nl> for reporting the issue. Also adds some related documentation.
pgsql: Update docs.
Debug.Inspect: Allow forced dumps.
pgsql: Rip out fundamentally flawed reconnect logic, make failures consistent.
Crypto.SCRAM: Made robust against rogue input and fix caching mechanism.
Crypto.SCRAM: Streamline API and update docs.
Crypto.SCRAM: Update docs.
Crypto.SCRAM: API updated, implemented serverside and testsuite.
Spelling fixes.
Change destroy() to _destruct().
Merge branch 'grubba/rename_lfun_destroy' into 8.1 * grubba/rename_lfun_destroy: Modules: Fixed logts of warnings. Testsuite: Updated for LFUN::_destruct(). Compiler: Don't complain about LFUN::destroy() in compat mode. Fix multiple warnings. Runtime: LFUN::destroy() has been renamed to _destruct(). Compiler: Rename LFUN::destroy() to LFUN::_destruct().
Modules: Fixed logts of warnings. More fall out from the LFUN::destroy ==> LFUN::_destruct rename.
Fix multiple warnings. LFUN::destroy() has been renamed to _destruct().
Compiler: Rename LFUN::destroy() to LFUN::_destruct(). As decided at Pike Conference 2017.
Add GL.GLSL and GL.GLSLUtil. This was a project by Per Hedbor that he intended to prepare for inclusion in Pike and shared as a separate repository on the pike-git server, albeit yet in the form of an external module. We have now performed the integration into Pike as a post_module.
Stdio.Buffer: Some type and documentation updates.
time: Clarify and correct documentation.
push_*: handle possible evaluation errors Always evaluate the macro arguments before incrementing the stack pointer.
Crypto.Checksum: Update docs.
crc32c: Add optional seed to chain invocations.
WhiteFish.Blobs: Minor code cleanup. Get rid of a cast by using a different function. Also some documentation cleanup.
Pike.Lazy: Improved typing. Also some documentation updates.
Documentation [Standards.PEM]: Some minor clarifications.
Have the #(#), #[#], #{#} documentation show up.
Added some helper methods to Crypto. string md5(string data, void|bool raw) string sha1(string data, void|bool raw) string sha256(string data, void|bool raw) These methods return a hexadecimal string unless `raw` is given. These methods are composed via the helper method `hash()`. string hmac_md5(string secret, string data) string hmac_sha1(string secret, string data) string hmac_sha256(string secret, string data) These methods return a hexadecimal string. These methods are composed via the helper method `hash_hmac()` which can be used to construct new hmac hashing functions.
Crypto.ECC.Curve25519.EdDSA: Fixed documentation.
Removed trailing spaces.
Fix docs typo in Image.Image()->make_ascii()
Crypto.ECC.Curve25519.EdDSA: Added jwk(). Support generating JWKs for Ed25519 keys.
Added missing documentation note of month_days
US date formatting, m/d/y.
Crypto.ECC.Curve.ECDSA: Support strings in set_private_key(). Convenience variant for setting the ECDSA private key from a binary string. Fixes testsuite failure.
__builtin.Nettle.Hash._HMAC.State: Implement jwk(). Web.encode_jwk() should now support generating JWKs for HMACs. Fixes remainder of PIKE-39 (#8039).
Crypto.ECC.Curve.ECDSA: Implemented jwk(). Support generation of JSON Web Keys (JWKs) from ECDSA objects. Fixes more of PIKE-39 (#8039).
Crypto.RSA: Implemented jwk(). Support generation of JSON Web Keys (JWKs) from RSA objects. Fixes some of PIKE-39 (#8039).
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 (#8039).
Protocols.DNS: Add support for CAA records. Certificate Authorities are actually required to check for them since this month as mandated by the CA/Browser Forum.
Mysql.result: Renamed seek() to low_seek(). This function performs absolute positioning (rather than the relative positioning of __builtin.Sql.Result()->seek()), and was shadowed by a generic (relative) implementation in previous versions of Pike. CAVEAT: Old code that used sql_res->master_res->seek() will break and need to be updated. Any such code will trigger warnings as master_res has been declared deprecated. It is also unlikely that any such code exists, since the function didn't comply with its documented behavior. Fixes some testsuite failures.
Stdio.File(): close() fixes. Unify low level calls close_fd() and close_fd_quietly() to reduce code duplication. Fix error handling in close_fd() and do_close_fd(). POSIX says that fds are closed on all errors except EINTR, where it is unspecified. Don't complain about close(2) failing with EBADF if it previously failed with EINTR. Ignore close(2) failing with ECONNRESET. This happens on eg FreeBSD when there is still data pending to be sent and the peer has already closed the connection. Fix documentation for the return value of close(). Potential fix for testsuite failures on FreeBSD.
Compat [__builtin.Sql.Result]: Added getter for master_sql. Fixes testsuite failure.
Crypto.ECC.Curve25519.EdDSA: Fixed API for set_private_key(). It now returns the current object.
Add extensible error handling in Protocols.DNS.server Some servers might want to report errors during other mechanisms than werror. By moving the error reporting to the new report_decode_error() method, it is easy to override that method and do something else. Likewise, some servers might want to not reply to malformed requests. Move that code to the new handle_decode_error() method.
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)...
Parser.PKCS: Added some support for PKCS#10.
Abstract lazy resolving into the Pike.Lazy module.
Gmp.mpz: Support negative exponents in `**() and ``**().
Nettle [Blowfish]: Don't throw errors in make_key(). Let make_key() generate a new key if the generated key isn't accepted by set_encrypt_key(). Fixes issue where eg Nettle.Blowfish()->make_key() intermittently threw errors due to the generated key being weak.
Fix spelling of 'necessary' in comments and docs
Last major release of Irix was in 1998 with support updates until 2006 and declared unsupported 2013. Remove support.
Fixed digest_info.
Pikedoc fixes.
Added short module description.
Documentation [Crypto]: Add more references to useful stuff. Mention MACs and AEADs. Make it easier to find some of the more popular modules (like AES.GCM and SHA1.HMAC). Also removes some references to obsolete algorithms.
Filesystem.Monitor: Added report(). This provides an API to simplify targeting tracing of the Filesystem.Monitor operation. Fixes PIKE-17 (#8017).
NTLM hash added
Reference Float.isnan from Math.nan
BSON: Added some minimal documentation.
Rename Debug.Peek to Debug.Inspect.
Manual: Extended the data types chapter with void & mixed. Added some elaboration on the difference between compile-time and run-time types, as well as some about the types void & mixed and how they are used. Fixes [bug 1656 (#1656)].
pgsql: Suppress errors if the server gets lost.
Fix autodoc reference.
Debug.Peek: New class for interactive debugging and live data inspection.
Filesystem.Monitor: Fixed some typos.
System.FSEvents: Fixed Autodoc mk II markup.
Linewrap
Stdio: filesystem_stat() on Linux should now set fstype.
Added Concurrent, and moved changes not in the next release to next beta.
Charset: Improved Autodoc mk II markup.
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.
Debug.Peek: Introduce Debug.globals and fix some cosmetics.
Add note about the added optional fields.
Revert MAC changes and fix MIME instead.
Standards.X509: Reduce code duplication. Use a common function for adding certificates in load_authorities(). Also some minor documentation updates.
Documentation [Crypto]: Fixed some references.
Documentation: Minor clarification.
Essentially white space changes.
Documented HMAC block size argument.
Stdio.Buffer: Fixed multiple issues with read_le_int(). The threshold for using io_read_number() instead of io_read_bignum() was off by one (on the safe side). Fixes broken use of mpz_import() in io_read_bignum(). Fixed typo in documentation.
Fixed documentation for Image.Color's HSV color space parser.
Decoding of negative integers was broken. Remove pike implementation completely and always use the C version.
Added basic little endian support to reading Stdio.Buffer.
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].
Add a little docs to Protocols.WebSocket
Add minimal autodoc as the create() signature changed in the inherit
search: Fixed end of range condition. Fixes testsuite failure.
8.0::Sql: Added some missing stuff. 8.0::Sql.Sql now seems to work.
5x faster encode_base64url() and 50% faster decode_base64url().
Crypto.ECC.Curve25519: Implement more of the standard API.
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.
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().
Nettle.Curve25519: Improved support for JOSE. Implements some parts of RFC 8037.
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.
Sql.sqlite: Added big_typed_query() et al. The SQLite glue should now use the same conventions as the others.
Documentation [MasterObject]: Documented some more stuff. Also restructures the markup a bit.
Documentation [Function]: Some Autodoc markup cleanup.
Sql.pgsql: Update to new Sql API. Inherit __builtin.Sql.Connection and __builtin.Sql.Result as appropriate.
Sql.mysql: Reduce code duplication somewhat.
Documentation [Sql.mysql]: Some minor updates.
Sql.Sql: Sql.Sql() is now a function and not a class. Now that __builtin.Sql.Connection exists and is used, the wrapper class should no longer be needed. The wrapper class has moved to 8.0::Sql.Sql.
Documentation [SQLite]: Fixed AutoDoc markup typo.
SQLite: Use __builtin.Sql. Also some AutoDoc markup adjustments.
Oracle: Use __builtin.Sql.
Odbc: Use __builtin.Sql.
Documentation [Nettle]: Fixed cut'n'paste typo.
Added a global on_failure to capture errors not handled in individual promises.
Fix docs typo
search: Added end argument for the string and array cases.
Protocols.HTTP.Server.Request: Added some AutoDoc markup.