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

Attachment: io.tar.gz
Description: application/tar-gz

Reply via email to