Nettle.Hash: Fix AutoDoc syntax for balloon(). Also adds some related headerfile/lib paranoia.
Crypto.ECC: Add curves GOST_GC256B and GOST_GC512A.
Documentation [System] [NT]: Fix markup syntax error.
EFUNs: Use pike_strptime() to implement predef::strptime(). predef::strptime() should now exist on all platforms (ie including NT).
Documentation [ADT.CircularList]: Fix AutoDoc markup error.
Documentation [SSL.Port]: Some documentation updates.
Stdio.Port: Add set_accept_callback().
Tools.AutoDoc.PikeObjects.EnumConstant: Reduce code duplication.
Fix a couple of docs typos
Stdio: Added InputStream et al. These types can be used in places where files opened for reading are accepted.
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.
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.
Misc: Fix incorrect syntax in autodoc
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.
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.
EFUNs: Restructuring of the sprintf() typechecker.
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.
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.
Program: Fixed some warnings with respect to defined().
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.
doc: fixing some autodoc markup
Doc [Nettle.BlockCipher16.KW]: Add note from RFC 6931. Also removes obsolete note about using the AEAD APIs. Minor code clean up.
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.
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.
Backported fragment helper methods.
Protocols.TCP: Begin implementation of Happy Eyeballs (RFC 8305). Code formatting not sorted out, lots of bugs, this is not ready to use yet.
Doc [Thread]: Removed broken reference.
Doc [Thread]: Added description of the module.
Doc [Threads]: Ignore implementation details of fallbacks.
Doc [Image.ColorTable]: Fix 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
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.
Doc [Ffmpeg]: Fixed some markup issues.
Merge branch 'rosuav/http-multi-connect'
Protocols.DNS: Add host_to_ips (plural) to parallel host_to_ip
Val.Range: Fix autodoc markup
Improved documentation.
Implemented Promise variants of async lookup.
Image.ILBM: Remove $Id$
Image.X: Remove $Id$
Shuffler: done_cb is called on every pause.
Shuffler: dup() the filedescriptor to avoid conflicts with a read-fd_box.
Image.BMP: Remove $Id$
Image.GIF: Remove $Id$
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.
Documentation [LFUNs]: Added some doc for the _iterator_*() lfuns.
Iterators: Use the new LFUN names. Fixes lots of warnings.
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.
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.
Val.Range: Fixed multiple warnings. Also adds some FIXMEs regarding the API.
Thread.RWMutex: Added try_{read,write}_lock(). Also adds Thread.RWKey()->try_upgrade().
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.
Stdio.Fd: Convert read() into a PIKEFUN.
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.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: Add very basic autodoc markup to Renderer
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).
MIME: Move decode_/encode_headerfield_params functions here.
Documentation [Stdio]: Fixed some typos.
Thread.ResourceCount: Provide fallback implementation
Documentation [Stdio.Buffer]: Fixed markup typo.
Documentation [Stdio]: Document low-level classes.
Stdio.UDP: Support the default destination in send().
Documentation [Stdio.File]: Enabled some Autodoc markup.
Documentation: Fixed autodoc syntax for bcrypt_{hash,verify}(). Fixes #10022.
Crypt.Password: Support bcrypt hashing.
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.
Stdio: Some pty-handling cleanup. Add wrappers emulating missing libc functions.
Crypto.Password: Fixed verify() with NetBSD-style crypt_sha1 hashes. Fixes several testsuite failures. Also adds some related documentation.
Documentation [Image.TIFF]: Enabled some doc.
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.
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.
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.
Thread.ResourceCountKey: Make destruct immediate
Thread.Farm: Use Pike.ProxyFactory in ResultWrapper.
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: 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.
Nettle: Added support for CMAC.
Better selection of quote charactes.
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.
Documentation [Mysql]: Fixed some Autodoc markup typos.
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.
Doc fix.
Gz: Put classes in separate files to lower memory footprint.
Gz.Pipe.Compress: New non-blocking compression pipe.
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 [SSL.Constants]: Updated AutoDoc.
Web.Api: Add and rewrite support for all Google APIs (past/present/future).
Concurrent.Promise: Introduce delay() and optimise timeout().
EFUNs: get_iterator() now passes extra args to lfun::_get_iterator().
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.
Merge commit '722771973bd' into patches/lyslyskom22891031 * commit '722771973bd': (6177 commits) Verify that callablep responses are aligned with reality. ...
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. ...
Compiler: Call end_pass_identifier() for identifier annotations.
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.
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.
Compiler: Fix autodoc typo
Documentation [Stdio.File]: Fixed some markup issues.
Master: Support __HAVE_COMPILER_NO_HANDLERS__. Implement support for handlers by overloading the CompilerEnvironment.
Master: Mark Describer objects for immediate destruction.
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: m_clear() now supports multisets and objects. Adds LFUN _m_clear().
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 'buffer_mode_proposal_wip'
Stdio.File()->read: add optional offset argument and documentation
Fix refdoc typo.
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: Macro expansion failure is now indicated by returning 0.
CHANGES: Added note about inherit of CompilerEnvironment.
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.
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.
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().
Pike.get_runtime_info: Report the size of time_t too. Adds the entry "time_size" to the result from Pike.get_runtime_info().
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
EFUNs: Added validate_utf8(). This efun checks whether a string is valid UTF-8 or not.
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.
Efuns: Use utf8_string in string_to_utf8() and utf8_to_string().
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) [...]
Added Thread.Farm()->set_thread_name_cb() to help applications that monitor thread creation and termination for the purpose of tracking thread names.
Squashed 'vendor/libsass/' content from commit 6de5050 git-subtree-dir: vendor/libsass git-subtree-split: 6de5050d11a1789d9922eb24e2925047ecbb499b
Stdio.File()->write: add documentation for buffer variant
Remove some stale code and update documentatin.
Merge commit '75c9d1806f1a69ca21c27a2c2fe1b4a6ea38e77e' into patches/pike63 * commit '75c9d1806f1a69ca21c27a2c2fe1b4a6ea38e77e': (19587 commits) ...
Fix typos and docs.
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.
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.Connection: Fallback big_typed_query() to big_query(), and streamline docs.
pgsql: Readding primitive auto-reconnect logic.
Documentation [Nettle.BlockCipher]: Adjusted some references.
Sql: Fix several drivers to conform to new API.
HKDF rewrite. Should now be possible to use in TLS 1.3
MPI: Add documentation.
MPI: Document MPI typed arrays.
MPI: Fix documentation for Init() and Finalize().
MPI: doc fix
Debug: Added find_all_clones().
Val.Timestamp,Date: Support strftime()/strptime().
Update GTK2 docs from source
Moved out time-code from __builtin to Val. Reduces start overhead and prevents clobber of System.Time.
Documentation [Filesystem.Monitor]: Some clarifications.
Change constants into inherited classes to make them show up in refdoc. Performance penalties?
Daylight 'savings' spelling corrections.
Val.nan: Introduce new Val values and native lightweight Date/Time/Inet/Range types.
Sql: Add native support for Time, Date, Timestamp, Interval and TimeTZ types.
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)
master: Added some documentation about the master filesystem.
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: Proposed changes/optimisation/simplification of HTTP.Promise.
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.Promise: Improve docs.
Concurrent.Promise: depend() fixes. Rename apply_fold() to fold(). Add first_completed(). Add min_failed(), max_failed(), any_results().
Added minimal AES128 CTR DRBG random generator from NIST SP800-90Ar1
Sql.Promise: New & improved interface.
Promise: Rename fold_finish() to apply_fold().
Promise: Fix docs.
Sql.FutureResult: Module was missing from the commits.
Sql.Connection: Added missing methods (amongst others: asynchronous callbacks).
Sql.FutureResult: Add a Concurrent.Promise interface to Sql.Connection.
Doc fixes.
SSL.File: Fix docs.
pgsql: Create proxy object to avoid circular references.
Thread.ResourceCount: New module to implement resource counters.
Crypto.SCRAM: New module.
pgsql: Update documentation.
Crypto.SCRAM: Streamline API and update docs.
Crypto.SCRAM: Update docs.
Crypto.SCRAM: API updated, implemented serverside and testsuite.
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.
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.
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.
Added missing documentation note of month_days
US date formatting, m/d/y.
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).
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.
Parser.PKCS: Added some support for PKCS#10.
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).
BSON: Added some minimal documentation.
Fix autodoc reference.
Added Concurrent, and moved changes not in the next release to next beta.
Documentation [Crypto]: Fixed some references.
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.
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.
8.0::Sql: Added some missing stuff. 8.0::Sql.Sql now seems to work.
Crypto.ECC.Curve25519: Implement more of the standard API.
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().
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.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.
SQLite: Use __builtin.Sql. Also some AutoDoc markup adjustments.
Odbc: Use __builtin.Sql.
Added a global on_failure to capture errors not handled in individual promises.
Protocols.HTTP.Server.Request: Added some AutoDoc markup.
Web: Added decode_jwk{,_set}(). These decode JOSE keys coded according to RFC 7515. Backported from Pike 8.1. Fixes PIKE-3 (#8003)
Web: Updated {en,de}code_jwt() to support HMAC signatures.
Crypto.ECC: Unified the APIs for Curve and Curve25519. new_scalar(), get_x() and get_y() now return coordinates in the preferred representation for the curve (ie either as a Gmp.mpz or as a string(8bit)). create(), set() and `*() accept that same value as argument. Added get_{x,y}_{num,str}() to get a specific representation. jose_name() now has a default implementation that returns UNDEFINED. Added default implementation of get_curve(). Curve25519 now has a Point subclass.
Web: Added decode_jwk{,_set}(). These decode JOSE keys coded according to RFC 7515.
Documentation updates
Crypto.ECC.Curve: Added some more support for JOSE. Added jose_name(), which returns the RFC 7518 name for the curve. It is now possible to initialize a Point from a JWK.
GTK2: POC implementation of Widget->drag_{source,dest}_set() Should be broadly coherent but may not work correctly
Parser.XML: node_to_struct() convenience function.
SocketIO/EngineIO: Packetised queues, increment protocol versions for both. SocketIO/EngineIO: Drop id parameter, it's better solved using inheritance. EngineIO: Prioritise PING/PONG messages.
Initial commit
Concurrent: Doc fixes and simplify code.
Fix some references.
SOAP: Use kebab-case for naming convention, clone arguments by value.
SOAP: SOAP glue functions including a limited wsdl parser.
Concurrent: Implement then() and other JavaScript APIs.
Fix doc prototype.
More narrow documentation.
Move Markdown code to Tools, as it is more of a tool than a module.
Revert EngineIO and SocketIO from 8.0 for now.
program.c: autodoc fix
Function: several doc fixes
Crypto [Nettle]: Inlined __builtin.Nettle.DH_Params into Crypto.DH. This is needed to break a circular Nettle-load time dependency. The problem was that __builtin.Nettle.DH_Params had a preprocessor dependency on Nettle.DH_Params, and __builtin.Nettle.DH_Params could sometimes get loaded while Nettle was still initializing.
ADT.Heap: Added low_pop(). This function is analogous to low_peek().
Stdio.Buffer [search]: Support searching for substrings.
String.Buffer [search]: Added lfun::_search().
Documentation: Documented optional further args to search(). Also fixes the types for search() and lfun::_search().
Documentation [Nettle]: Improved doc for Curve25519.
Nettle: Added support for Curve25519 and EdDSA25519. CAVEAT: API subject to change! Note that these have a different API than the other ECC curves due to a different low-level API.
Some Pike-doc fixes.
SocketIO: Streamline Universe API, events run in their own threads. Add onclose(), various cleanups.
SocketIO: Support creation of multiple Universes (Yes, we think BIG :-).
EngineIO/SocketIO: Improve documentation.
Documentation [cpp]: Fixed warning generated by example.
SSL.Constants: Added enum Extension. Fixes some documentation references.
Documented some of the new Randomness subsystem.
Stdio: Added enums File{Mode,Property}Flags. Also adds corresponding documentation. Fixes some broken documentation references.
Even more specific types of crypt in documentation.
Efuns: Renamed hash_7_8() to hash_8_0() for consistency. Also made the hash_*() types somewhat stricter.
Efuns: Fixed multiple issues with the new hash(). It now follows the same API as the old hash() (ie the second argument is a modulo). It now also has the same value range as the old hash (eg it no longer returns negative values), and returns the same value on both 32-bit and 64-bit platforms. As a side-effect this fixes a buffer read overrun when the second argument was larger than the length of the string. It no longer leaves droppings on the stack. Updated the testsuite.
Renamed 'hash' to 'hash_7_8' Hopefully it will not be used now (this is triggered by yet another person thinking it's a good string hashing function). The function is not really suitable for use. The returned values are higly likely to be the same for similar strings, something that is not optimal for hashing. Also added comments about what to use instead (hash_value or one of the cryptographic hash functions). It might make sense to add a hash() that actually works, perhaps siphash?
Just some Pike 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.
Protocols.HTTP.Promise: The arguments are now passes as an object of class Arguments for better type cheking and more coherent method signatures for the request methods. Also some refactoring. Web.Api.Api: Using Protocols.HTTP.Promise for the requests if available and applicable.
Protocols.HTTP.Query: Fixed an old bug (https://bugzilla.roxen.com/bugzilla/show_bug.cgi?id=7676) where basically the timeout in timed_async_fetch wasn't reset each new data read. This timeout had it's own property (data_timeout) which now is "deprecated" since the property "timeout" pretty much serves the same purpose, but on connection. So now timeout is the default value to use unless data_timeout is explicitly set, in which case that value will be used. Since there was no proper way to set a max time for the entire operation (well, that was by accident and not intention how the data_timeout in timed_async_fetch worked) the new property "maxtime" has been added. If this is set (default is 0=indefinetly) the request will be aborted after maxtime second even if data is still being read. So in short: data_timeout = 0 // unless explicitly set timeout = 120 // connection timeout, and then data read timeout maxtime = 0 // 0 = off, otherwise the entire operation must be done within maxtime seconds or else the request is aborted Protocols.HTTP.Session: Added some documentation Protocols.HTTP.Promise: New module which utilise the new Concurrent.Promise/Future stuff for HTTP requests. Internally uses Protcols.HTTP.Session for the actual HTTP stuff. Web.Api.Api: Now fetches data asynchronously when async calls are made. Concurrent: on_success and on_fail now returns the object being called so that they can be chained. Parser.Markdown: Fixed the #require macro directive.
Don't pretend jwa is a variable, to be consistent with name(), digest_size() etc.
Nettle: Added __builtin.Nettle.AE. This is Authenticated Encryption without Authenticated Data.
__builtin.Nettle.MAC: Added support for HMAC-based JWS signatures.
Crypto.ECC.Curve.ECDSA: Added support for jose_{sign,decode}().
Crypto.RSA: Add some support for JOSE JWS signatures.
Crypto.RSA: Some API changes for jose_sign(). Changed argument order and added defaults for the hash algorithm.
Nettle: Added BlockCipher16.KW. This is the AES Key Wrapping algorithm from RFC 3394.
Mysql: Use the new __builtin.Sql API.
There is no CVS id string in Hilfe anymore
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().
__builtin.Sql.Connection: Use variants for big_query() et al. This simplifies overloading by the various drivers.
Mysql: Moved and renamed Mysql.mysql_result to Mysql.mysql.Result. This is in preparation for allowing overloading of the Result class.
Sql: Deprecate mysql_result and mysqls_result. These two symbols are seldom used, and when used only used as types, in which case Sql.Result is essentially equivalent.
Sql: Added __builtin.Sql.{Connection,Result}. These will be the new base classes for the Sql API.
Use random_string instead of Crypto.Random.random_string
Documentation fixes.
Random: Updated some types and AutoDoc.
Documentation: Added note about some failure modes of rm().
Addressed code review issues
Revert "Added the Markdown module and the standalone pike_to_html.pike from 8.1." This reverts commit 2706a62c3c72b296a0c77b418f1e186c682c7ac5.
Added creation method raw to put binary data directly in an image object without adaptation.
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.
More documentation.
Added Fast random generator.
Added support for hardware random generator.
Update GTK2 docos
Added the Markdown module and the standalone pike_to_html.pike from 8.1.
Documentation.
Make random_seed() a noop and deprecate.
Remove now unused random() implementations.
Don't call f_random directly.
Sql: Added support for multiple results. Adds Sql.sql_result()->next_result().
Documentation
Move pike compat handling into the Testsuite object.
Nettle: Added block cipher mode ABC (Accumulated Block Chaining).
Nettle: Added block cipher mode IGE (Infinite Garble Extension).
Protocols.HTTP now takes 0.08 instead of 0.23s to load. Made Protocol.DNS, SSL and the Calendar module on-demand-loaded.
On this branch portable bytecode generation is not normally done This actually noticeably speeds up the compiler and also saves about 15% of RAM when starting hilfe. If the decode_value code is modified to free the portable bytecode _TWICE_. This will not be merged to 8.1 until I figure out _why_ that is. It should only need to be freed once, but I guess it's in the string table twice?
Documentation [Nettle]: Fixed some minor issues.
Crypto.RSA: Added pkcs_signature_algorithm_id() for PSS.
Removed remnants of Pike.Security
Don't clean up the stack in void functions.
Crypto.RSA: Fixed multiple typing errors. Values of type Crypto.RSA.LowState should be possible to assign to variables declared as Crypto.RSA.State without drowning in warnings... Also restores the default return value of name() to "RSA".
Crypto.RSA: Cleaned up RSASSA-PSS API. It is now possible to get a PSS signature object from an RSA state by indexing it with "PSS". Eg Crypto.RSA.State rsa = ...; string(8bit) sign = rsa->PSS->pkcs_sign(message, hash); int(0..1) ok = rsa->PSS->pkcs_verify(message, hash, sign); Also adds a corresponding symbol "PKCS1_5" for the traditional (and default) PKCS#1 1.5 style signatures.
Added a Markdown parser. This is a port of the Javascript Markdown parser Marked (https://github.com/chjj/marked). The Marked module only has one "static" method which is the only one needed to convert Markdown to HTML. There's also a shortcut to that method directly in the Markdown module (Parser.Markdown.marked()).
Updated documentation to mention that verify_certificate_chain also can return CERT_UNAUTHORIZED_CA and CERT_EXCEEDED_PATH_LENGTH.
Rename HASH_sha to HASH_sha1.
Crypto.DH.Parameters: Added generate_keypair(). Also: Crypto.DH.DHParams now uses Nettle.DH_Params if available.
SSL: Protocol version handling cleanup. The protocol version is now represented the same way everywhere; a 16-bit integer with the major (ie 3) in the high 8 bits, and the minor in the low 8 bits. Previously there was a mix between having a two element array, and just keeping track of the minor. Also strengthens the types of version variables in a few places.
SSL.Cipher: Support KeyExchange using ECDHE.
Nettle: Added Galois Counter Mode (GCM) This is in large parts a rewrite of the Pike 8.0 implementation.
Change CAMELLIA to Camellia to be consistent with other non-acronym ciphers.
Crypto: Added SHA 224, 384 and 512. Also adjusts the ASN.1 identifier for SHA256 to make Pike 8.0 happy.
SSL.Cipher: Enable support for TLS 1.2. This mainly adds some minimal support for TLS 1.2 signatures, with which all the requirements for TLS are fulfilled. Seems to interoperate with gnutls: - Description: (TLS1.2-PKIX)-(DHE-RSA-1024)-(CAMELLIA-256-CBC)-(SHA1) - Session ID: 52:93:96:96:50:69:6B:65:53:53:4C:33:00:00:00:1F - Ephemeral Diffie-Hellman parameters - Using prime: 1024 bits - Secret key: 1020 bits - Peer's public key: 1024 bits - Version: TLS1.2 - Key Exchange: DHE-RSA - Server Signature: RSA-SHA1 - Cipher: CAMELLIA-256-CBC - MAC: SHA1 - Compression: NULL - Handshake was completed
SSL.Cipher.KeyExchange: Added some Autodoc markup.
SSL: Made the packet size configurable. Setting the size to 1400 improves conditions when there are packet loss, as it avoids block-of-line for the integrity check of the TLS record. The tradeoff is more overhead.
SSL: The debug code now knows about SSL 2.0. SSL 2.0 constants may show up in HANDSHAKE_hello_v2 messages, so make sure the debug code can display them properly.
SSL: Add support for some CAMELLIA cipher suites.
Simplified some debug.
Backport from 8.1
Autodoc fix.
Inotify: Renamed get_fd() to query_fd(). Also removes some obsolete documentation.
Nettle: Let the IV be set through Nettle.Proxy (aka Crypto.Buffer).
Updated all references since the modules were moved from root namespace to the Web namespace
Moving Auth.pmod to Web.pmod/Auth.pmod and WebApi.pmod to Web.pmod/Api.pmod
Merge branch '8.1' into grubba/typechecker-mk3 * 8.1: (51 commits) Compiler [Types]: Got rid of my_describe_type(). Compiler [Types]: Fixed wide strings in nested types. Compiler [Types]: low_describe_type() now uses string_builder. string_builder_sprintf: Fixed '+' for floats. string_builder_sprintf: Added support for %T. Calendar.mkrules: Improved backward compat. Auth.OAuth.Client: Fixed AutoDoc markup issue. New modules for communicating with different (RESTful) web apis (including OAuth and OAuth2 client modules) . Documentation [%]: Added some clarifications and improved markup. Inotify: Minor code cleanup. Potential fix for [CID 1325796]. Inotify: Removed some debug output. Filesystem.Monitor [Inotify]: Improved support for blocking mode. Inotify: Don't reference count immediate circular references. Inotify: Removed some dead code. System.Inotify, Filesystem.Monitor: Updates to use new Inotify API. Inotify: Use fd_callback_boxes, internal event parsing. Search.Database.MySQL: Censor the SQL-url. Sql: Added censor_sql_url(). Search.Database.MySQL: Avoid long lived database connections. Inotify: Don't throw errors in rm_watch() on invalid watch descriptor. ...
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
Inotify: Removed some dead code.
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.
Standards.PKCS: Added support for decoding PKCS#8 private keys.
Protocols.HTTP2: Added Frame class.
7.8::GTK: The GTK1 module is no more...
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.
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.
Merge branch '8.1' into per/substrings
Stdio: Initial implementation of Stdio.FakePipe. This is a class that attempts to emulate a bi-directional pipe/socket, but without using any fds. The intended use is to simplify implementation of APIs that require emulation of sockets (like eg SSL.File).
Merge remote-tracking branch 'origin/8.1' into per/substrings
GTK1 is deprecated
Autodoc fixes.
ADT.TreeScheduler: Added scheduler from RFC 7540 section 5.3.
ADT.Scheduler: Keep Consumer()->offset up to date. This simplifies code that needs to check the priority of potentially inactive consumers.
ADT.Scheduler: First version. This is a data type intended to be used to distribute quanta of a resource fairly among a set of prioritized consumers.
Documentation: Removed duplicate doc for hash_7_4(). Also fixes some obsolete documentation references.
__builtin.Sql: Added module. This is intended to become the base module for the Sql modules.
Added gethrdtime().
Keep track of Session activity, so they can be removed when inactive, not just old.
docfix
documentation
typed_array documentation
First go at MPI bindings
Got rid of the @belongs
Made internal methods protected.
Compat [8.0]: Added some minimal doc about moved efuns.
Remove deprecated security system.
Moved _next, _prev and next_object to Debug.
Doc: Clarified the difference between LFUNs `==() and _equal().
Implement support for line_iterator on Gz.File.
Start moving debug code to the Debug module.
Fortuna.random_string(): No need to allocate more than the final string, as we only copy as many bytes from the last block as we need.
Documentation of CIPHER_SUITES
Odbc: big_typed_query() now knows about timestamps and dates.
Odbc: typed_result->fetch_row() now returns Val.null for NULL.
Compat: Fixed 8.0::Protocols.HTTP. Inheriting a directory module is not a good idea...
Compat: Compat with 7.8 is based on compat for 8.0. Also makes sure that 7.8::master() returns the 7.8-compatibility master object.
Compiler: Documented a few more #pragmas.
SSL.Cipher: KeyExchangeECDH now uses init_{server,client}(). Reverses the inheritance order for KeyExchangeECDH and KeyExchangeECDHE to reduce the code complexity a bit.
ADT.Bloom: Added Bloom filter class for integers
Crypto.ECC.Curve: Added LFUN::`==().
SSL.Cipher.KeyExchange: Changed API for client_key_exchange_packet(). It now returns the premaster secret, and fills in the packet data in the provided buffer. This change allows the corresponding function in SSL.ClientConnection to use SSL.Connection.derive_master_secret().
SSL.Cipher.KeyExchange: Introduced got_client_key_exchange(). Renames ke->server_derive_master_secret() to ke->got_client_key_exchange(), and changes it to return the premaster secret. This will reduce the amount of code duplication soon.
Document AUTHLEVEL a bit.
SSL: More KeyShare{EC,}DHE fixes for TLS 1.3.
SSL: Added KeyShare{EC,}DHE in preparation for TLS 0.3.
Compat: Added 8.0::Standards.PKCS.RSA.
Skeleton implementation of AARCH32 (ARM) machine code support To be extended, also into AARCH64 machine code generation Author: Arne Goedeke <el@laramies.com> Author: Tobias S. Josefowitz <tobij@tobij.de>
Documentation: 7.4::hash() is no more. Use hash_7_4() instead.
Added support for buffers to Crypto.X.hash() It now support the various buffer objects as the data source argument.
Rewrote get_uint, put_uint, get_var_string and get_fix_string.
put_var_string -> add_hstring
Fixed Crypto compat code.
Compat: Added some symbols from 8.0.
Reinstate legacy hash functions for the benefit of legacy network protocols.
Remove superfluous legacy compat support prior to 7.8.
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.
SSL.Cipher: Added KeyExchangeKRB (experimental). This is a tentative implementation of the RFC 2712 Kerberos-based key exchange. No interoperation tests have been performed, and the corresponding suites are not enabled.
Move deprecated code to compat. The compat resolver is broken, so this doesn't actually work.
Move deprecated code to compat. Something is wrong with the method overloading / variant, so generate_key compat is disabled.
Moved deprecated methods to compat.
Moved deprecated modules to compat.
Enhance Process.run() to be able to accept handler functions for stdout/stderr
Calendar: Added some more doc.
SSL.handshake: Support setting the minimum required version. The SSL 3.0 protocol can now be disabled by setting min_version in the context to SSL.Constants.PROTOCOL_TLS_1_0. Backported API from Pike 8.0. Note that the constants differ from Pike 8.0 and later, so use the provided symbolic values.
String.Buffer: completed the removal of addat
_Roxen: Fixed buffer overrun in http_decode_string(). Also increases the strictness of a few related testsuite tests.
Stdio.File: Fixed autodoc markup error.
TLS 1.3 renames NamedCurve into NamedGroup
Remove 7.6 compat files.
Fix autodoc formatting
Stdio.File: Added query_buffer_mode().
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.
Removed security system (on this branch)
Stdio.IOBuffer -> Stdio.Buffer (part 1)
Support initialization from calendar object.
Removed one level of indirection and inherit SSL.Port directly into SSLPort.
Added validation method and _sprintf.
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.
Added rewind_key, much like rewind_on_error, but not automatic. Also speed up read_cstring about a factor of two.
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.
Stdio.File: Some minor documentation updates.
Gdbm: Fixed some documentation typos.
Removed compat support for Pike 7.4.
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.
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.
Use Stdio.IOBuffer instead of ADT.struct
Revert to String.Buffer simplex. Lost functionality needs to be found in IOBuffer.
Remove String.Buffer.addat().