I’ve uploaded a binary package for MacOSX 10.9+. Also, I’ve built pkgsrc binary packages for NetBSD, Darwin, Solaris/Illumos/SmartOS and Linux (EL6/EL7) for use with pkg_add.
Binaries: http://bill.welliver.org/dist/pike/pkgsrc/ pkgsrc make package: http://bill.welliver.org/dist/pike/pkgsrc/pike8.0.tar.gz Once we have a final release, I’ll update the homebrew formula. As always, comments and suggestions are welcome! Bill > On Aug 1, 2017, at 7:53 PM, Peter Bortas <[email protected]> wrote: > > Pike 8.0.466 beta/release candidate: > > https://pike.lysator.liu.se/pub/pike/beta/8.0.466/Pike-v8.0.466.tar.gz > > Other builds: > > > https://pike.lysator.liu.se/pub/pike/beta/8.0.466/Pike-v8.0.466-Darwin-15.4.0-x86_64-macports > > https://pike.lysator.liu.se/pub/pike/beta/8.0.466/Pike-v8.0.466-win32-oldlibs.msi > > Last months release candidate never got promoted to release, so the > changes is very similar. > > Changes since Pike 8.0.438 (release 9) > ---------------------------------------------------------------------- > > New Features > ------------ > > o Concurrent > > The Concurrent module simplifies asynchronous code by synchronizing > events in different ways. As an example the connect() function shown > below will respond with a Concurrent.Future object that at some point > will represent either a connected socket or a failure. > > Concurrent.Future connect(string host, int port) > { > Stdio.File con = Stdio.File(); > Concurrent.Promise p = Concurrent.Promise(); > if( !con->async_connect(host, port, lambda(int success) > { > if(success) > p->success(con); > else > p->failure("Failed to connect to "+host+":"+port+"\n"); > })) > { > p->failure("Failed to open socket.\n"); > } > return p->future(); > } > > The returned future can then be used in various ways. > > // On success, call make_request(con, query). On failure call > // werror(msg). > connect(host, port) > ->on_failure(werror) > ->on_success(make_request, query); > > // On success, call make_request(con, query1) followed by > // make_request(resp, query2), where resp is the return value from > // make_reqest. > connect(host, port) > ->then(make_request, werror, query1) > ->then(make_request, werror, query2); > > // Call bridge_ports(con1, con2) when both connections are > // established. > Concurrent.all(connect(host1, port1), connect(host2, port2)) > ->then(bridge_ports, failure); > > // Call make_request(con) once either of the connections are > // established. > Concurrent.race(connect(host1, port1), connect(host2, port2)) > ->then(make_requet, query); > > o Debug.Inspect > > Allows for interactive debugging and live data structure inspection > in both single- and multi-threaded programs. > > Example: > In the program you'd like to inspect, insert the following one-liner: > Debug.Inspect("/tmp/test.pike"); > > Then start the program and keep it running. > Next you create a /tmp/test.pike with the following content: > void create() { > werror("Only once per modification of test.pike\n"); > } > > int main() { > werror("This will run every iteration\n"); > werror("By returning 1 here, we disable the stacktrace dumps\n"); > return 0; > } > > > void destroy() { > werror("destroy() runs just as often as create()\n"); > } > > Whenever you edit /tmp/test.pike, it will automatically reload > the file. > > Bug fixes > --------- > > o ADT.Heap > > Fixed heap corruption when the same object is pushed more than > once. It will now be considered as calling adjust(). > > o FSEvents > > EventStreamMonitor now works with other backends. > > o Filesystem.Monitor > > - Reduced initialization latency. > > - Changed the polling heuristic. > > This is intended to reduce poll (and notification) delays in > some circumstances. > > - Improved robostness of adjust_monitor(). > > - Removed some dead and obsolete code. > > - Scan accelerated monitors too. > > Both the Inotify and FSEvents APIs claim that they support > notifications on eg network file systems, and while they will > succeed in notifying on changes performed by the local host > on such file systems, they will not on changes performed by > other hosts. To avoid missing such changes these monitors > need to be actively scanned too. > > - Fixed lost acceleration with InotifyMonitor > > Recover from race-condition where when a file was repeatedly > created and deleted, acceleration was lost. > > - Fixed symlink issue with InotifyMonitor. > > - Added support for more fine-grained tracing of monitors. > > o Inotify > > Addressed an issue where the backend might be stuck in pending > indefinitely. > > o mappings > > Fixed an off by one error in random(mapping) that randomly caused > values of type PIKE_T_FREE from the freelist to be exposed to Pike. > > o Nettle.Hash > > Fixed NULL-dereference in Nettle.Hash()->crypt_hash(). > > o Parser.HTML > > Fixed a condition where Pike would run out of stack space for large > documents. > > o Search > > Fixed a race condition when updating the database. > > o Sql.pgsql > > - Sped up BEGIN/COMMIT statements. > > - Preserve the initial error message in case of multiple error messages > during the same transaction. > > - Flush out unseen error messages upon connection close to stderr. > > - Closed a prepared-statement-cache race when the same statement > is offered multiple times before it finalises the cache entry. > > - Fix sync errors with the database in case of multiple running > statements on a single connection that generate multiple errors. > > - Eliminate spurious sync errors on pipe-lined transactions > (multiple transactions in flight on a single file descriptor). > > - CancelRequests (to cancel running queries) caused sync errors with > the database when multiple queries were in flight. > > - Eliminate transient error messages on database restarts. > > o Sql.SQLite > > When using query bindings, strings are now always stored as strings; > previously, 8-bit strings were stored as binary objects (BLOBs) and > wide strings were stored as unicode strings, which caused 8-bit strings > to be unequal (and thus not returned) when used in a standard string query. > > Binary values may be stored as BLOBs using bindings by wrapping the > binary string in a multiset. For example, to store the value "myBinary" > as a BLOB value using a binding, use: (<"myBinary">). > > o Standards.BSON > > - Fixed incorrect encoding/decoding of Binary data. > > - Bugfixes for the decoding of Binary values of subtype 2, Binary > values of subtypes above 0x7f and Datetime values with negative > values. > > o Standards.JSON > > Fixed integer overflow in decode() on 64-bit platforms. > > o Stdio.Buffer > > - Fixed a crash when attempting to create a rewind key on a buffer > returned by read_buffer(). > > - Fixed integer overflow in read_json(). > > Building > -------- > > o Configure > > Attempt to detect the tool prefix depending on ABI. > > Improves detection of pkg-config. > > o Java > > Detect system installation of JavaVM framework on MacOS X. > > o Stdio > > Improved support for NetBSD. > > Regards, > -- > Peter Bortas
