After being unsuccessful at getting lang/io working at p2k11, I decided to give it another shot at p2k12. There have been multiple upstream commits for OpenBSD compatibility, and the basic Io vm now works out of the box on OpenBSD i386. My port is based on one originally worked on by Eric Radman (and maybe earlier by bernd@).
A long-standing reason why this wasn't imported earlier was that the Io bus errored on amd64 inside snprintf during the regress tests. I spent all day yesterday tracking that down, determining that it was related to coroutine stack alignment (amd64 ABI requires 16-byte stack alignment), and figuring out where in the code to fix that. Unfortunately, getting a few of the addons that ship with it to compile is a pain. In particular the Socket extension uses libevent1 headers (e.g. evhttp.h), but uses functions that were not introduced until libevent2. Also, the Clutter extension requires some manual hacking to add include dirs and lib paths. The io executable does not link with pthread, but some of the addons do, so you need to use LD_PRELOAD=libpthread.so to use some of them (including the Socket extension, probably due to its use of libevent2). The other issue with the port is that it currently is not a multi-package, it's one big ball of wax with a ton of dependencies. I'm open to making it a multipackage, but packaging each addon separately is a more work than it is worth, so anyone who cares enough to request a multipackage better have a small number of subpackages in mind, and decide which addon goes in which subpackage. Tested on i386 and amd64, the only arches it supports due to the assembly coroutine code. Thanks to sthen@ for hosting the distfile. Thoughts/OKs? Jeremy
io.tar.gz
Description: application/tar-gz
