release notes: Almost fully immersed in the Guile 2 world now -- oop ack! (or rather, XML-oop, XML-ack! :-D) [sigh, grep the 'net for Bill the Cat, you youngins...] {anyone want to draw me a |non-infringing| logo is welcome!} README excerpt: Mixp is a Guile interface to expat, James Clark's XML Parser, originally written by Thierry Bézecourt. This release of Mixp is available under the terms of the GNU GPL v3 (or later); see COPYING. It has been tested with Guile 1.4, 1.8, 2.0, and libexpat 2.2.6. NEWS excerpt: - 0.8 | 2020-10-22 - bug fix: use ‘GCMALLOC’, not ‘malloc’ Regression introduced in Mixp 0.6 (released 2012-01-25). - backward-incompatible change in ‘(mixp utils) xml->tree’ The proc ‘(mixp utils) xml->tree’ no longer sets the ‘unparsed-entity-decl’ handler. This is in prepraration for the eventual dropping of ‘unparsed-entity-decl’ handler everywhere. - distribution now .tar.lz If you have GNU tar, you can use "tar xf" and it will DTRT. If not, you can use "lzip -dc TARBALL | tar xf -" to unpack. - new ‘(mixp expat)’ items - handlers ‘doctype-decl-start’, ‘doctype-decl-end’ These are called for doctype declarations: "". - handler ‘skipped-entity’ This is called in two situations: 1. An entity reference is encountered for which no declaration has been read *and* this is not an error. 2. An internal entity reference is read, but not expanded, because ‘default-handler’ has been used. - handler ‘entity-decl’ This is called for entity declarations: "". - procedure ‘get-feature-list’ This returns an alist of features, some of which a corresponding positive integer value. As a special case, the first feature is "EXPAT_VERSION". See (info "(mixp) Expat interface"). - procedure ‘get-attribute-info’ This returns attribute offset information in the form of a 2-D typed-array (u64), if the underlying ‘XML_GetAttributeInfo’ is available, else ‘#f’. See (info "(mixp) Expat misc"). - procedure ‘expat-version’ This returns the Expat version in various ways. - procedure ‘set-encoding’ This supports parser creation and setting the input encoding in two steps, as opposed to in one step, which may be useful when the encoding is not known at ‘parser-create’ time. - procedures ‘stop-parser’, ‘resume-parser’ It's possible to now to "suspend" a parse, w/ these procs. See test/x001 for example. - procedure ‘get-parsing-status’ This is useful to confirm that a parse is suspended, and to find out whether or not the last chunk is being processed. - procedure ‘set-hash-salt’ Apparently, people can DoS Expat by maliciously guessing (and poking) its internal hashing patterns. This procedure helps to mitigate against such abuse. - procedure ‘hget-one’ This returns the procedure set as a parser object's handler. See (info "(mixp) Expat handlers"). - support for error codes up through Expat 2.2.1 I.e., if the underlying libexpat is 2.2.1 or later, you might receive the error message ‘XML_ERROR_INVALID_ARGUMENT’, among any others. - planned retirement Three ‘(mixp expat)’ items WILL BE REMOVED by the time of the 1.0 release of Mixp (could be a year or more, realistically speaking). OTOH, it could be next release. Luckily, there is a migration path for all cases. Please do so as soon as possible. - procedure ‘geth’ This procedure returns an alist w/ all the named handlers as keys, which may or may not be what you want. You can use new proc ‘geth-one’ (see above) to find the same information, and package it in a more flexible manner (alist, plist, normal list, subset, etc). - handler ‘unparsed-entity-decl’ This is obsoleted by the new handler ‘entity-decl’ (see above) both in Mixp and in the underlying Expat. Be sure to avoid specifying both at the same time, as ‘unparsed-entity-decl’ will take precedence over ‘entity-decl’. - alist support for ‘hset!’ Taking an alist is convenient for the implementation, but inconvenient for the user, typically requiring ‘quasiquote’ and abundant ‘unquote’ gymnastics. As of this release, ‘hset!’ also takes a plist, so support for taking an alist can be deprecated. If your code currently does: (hset! my-parser `((element-start . ,handle-elem-start) (element-end . ,handle-elem-end))) you should change it to read: (hset! my-parser 'element-start handle-elem-start 'element-end handle-elem-end) As you can see, less hair this way. - nice coding cookie for Guile 2 The "coding cookie" in test/x001 is now "iso-8859-1", which should be friendlier to Guile 2. - bug report email address changed It is now , which should have a better chance and higher quality of response for technical questions than the previous one. - doc improvements - ‘set-base’ The type of the second arg BASE is now documented. - ‘set-param-entity-parsing’ Proc ‘set-param-entity-parsing’ takes argument CODE, which is now documented. - misc upgrades The top node now includes a detailed node listing and copyright information for PDF output. The bug report email address is now documented. Copying info is now presented in a standard way. - nicer output for "make check TRACE=1" The ‘character-data’ blocks w/ solely linefeed ("\n") are now displayed that way instead of directly (w/ a linefeed char). This is easier on the eyes. - miscellaneous changes for Guile 2 This is the first release for which the development environment is completely transitioned to Guile 2 (2.0.13, to be precise). Lots of slogging w/ ‘GUILE_WARN_DEPRECATED=detailed’, IOW. [Insert curmudgeonly rant, here.] If you find other warnings, please report them as bugs. Note, however, that we still roll w/ ‘GUILE_AUTO_COMPILE=0’, so any problems you see w/ that aspect of Guile 2, please save for the next release, when we plan to brave those waters sul serio. (OTOH, it can't hurt to raise issues, as long as someone can clear the earwax and be nudged to DTRT -- fingers crossed!) - bootstrap/maintenance tools upgraded: Guile-BAUX 20200129.1051.1679aca GNU gnulib 2020-10-19 23:37:09 GNU texinfo 6.7 GNU Automake 1.16.2 GNU Autoconf 2.69c GNU Guile 2.0.13 as before: (none) tarball, sig in dir: http://download.savannah.nongnu.org/releases/mixp/ -- Thien-Thi Nguyen ----------------------------------------------- (defun responsep (query) ; (2020) Software Libero (pcase (context query) ; = Dissenso Etico (`(technical ,ml) (correctp ml)) ...)) 748E A0E8 1CB8 A748 9BFA --------------------------------------- 6CE4 6703 2224 4C80 7502