selected project news
Pre-alpha abi upgrade: struct __dirent now perfectly matches the NTFS
path component length. This brings support of NTFS directory entries
consisting of 255 utf-16 characters of the (little-endian) form
zzzzyyyy yyxxxxxx, of which the respective utf-8 representation form
is 1110zzzz 10yyyyyy 10xxxxxx.
Framework-specific interfaces now include __fs_tmpfile() and
__fs_tmpdir(), providing a quick and safe way to create a temporary
file (or directory) that are only visible to the calling process.
Following testing in diverse environment, the framework now supports
directory listing of mapped network volumes that do not provide a
per-entry, 64-bit file-id.
Having addressed a rare corner-case in __psx_poll(), the framework's
poll() implementation now passes even the most extreme tests with zero
More interoperability, and a ding alarm! With support added to the
framework's public API in general, and __psx_init() in particular,
win32 applications may now load a sysroot'ed framework loader library
and subsequently invoke all of its public interfaces. It is the
application's responsibility to obtain the address of all interfaces
of interest, for instance by passing an interface name and the loader's
hmodule, as returned by the system's library-loading function,
The framework's ntux utility now provides a simple chmod utility, which
sole aim at the present is to enable directory propagation alongside
a posix permission scheme.
The midipix port of gdb is now fully functional. The target-specific
bits were all written from scratch, are clean, and use framework-specific
interfaces that are exposed by libc (via mmglue) as its backend.
The midipix port of ld now supports generation of mdso import libraries
on the fly. Passing /path/to/libfoo.so to the linker now results in the
exact same binary as passing -lfoo.
The framework's path resolution algorithm now disallows path arguments
which begin with a backslash, preventing any and all ambiguity between
a root-relative path and a winnt server share notation. Use of backslashes
in the middle of a path argument is permitted the same way as before.
Further progress with the framework's /proc virtual file system, and
initial support of /proc/registry.
When absent from the physical file system, /etc/resolv.conf is now
generated on the fly based on registry settings.
Added the /dev/net virtual file system, supporting notation of the form
/dev/net/server/share and a non-hanging virtual /dev/net/server.
Framework-specific interfaces now include __fs_rpath(), __fs_apath(),
__fs_npath(), and __fs_dpath(), providing a robust method to determine
a file-descriptor's underlying path in root-relative notation (/foo/bar),
file-system absolute location (/dev/fs/c/foo/bar), native tool notation
(c:/foo/bar), or device-driver notation (\Device\Harddisk0\foo\bar),
The ntapi library now provides low-level debug interfaces.
The toolchain and psxscl now seamlessly support SEH exception handling,
which can be used by C++, ObjC, and other front-ends. The exception
filter resides in psxscl, which means that changes and additional
functionality in the translation layer between the system's SEH
mechanism and the compiler-provided exception handling (libstdc++ or
otherwise) does not require a rebuild of the toolchain or any of the
mdso and midipix-specific custom import libraries: finalized the abi,
adding proper .linkonce support.
Completed initial work on sbpython2/sbpython3, thereby providing an a
clean, external, sofort-based method for (cross-)building the Python
Finished overhaul of mpackage, the midipix distro bits.
Completed overhaul of the sofort build system, now supporting custom
configuration, generic build- and host-related tests, and a variety of
enhanced tests to detect target properties.
slibtool now fully supports suffixed suffixes (used by OSX).
Added support for advisory file locking.
important recent additions to the framework's extended interfaces (xfi),
as well as the framework's internals, include: path conversion functions,
fixed-sized, cached buffer regions, temporary ofd objects, API-based
shared objects, object directory getdents support, and many more.
sysv message queues are now completed and integrated within the framework.
similar to the implementation of sysv semaphores, the sysv message queues
are composed of ntctty as the backend, ntapi as the client-side component,
and psxscl as the system call translation layer around the latter.
sysv semaphores are now complete and integrated with ntctty as a
backend, ntapi as the client-side component, and psxscl as a translation
layer around the latter. providing a rarely-used, yet required interface,
the sysv semaphore implementation demonstrate ntctty's power as an
extensible subsystem. the midipix sysv semaphores are fast, robust,
and correctly support SEM_UNDO across execve(2) invocations.
known as the 'midipix dso scanvenger',
is now complete and fully functional.
import libraries generated by mdso do not use the .idata section,
but rather the custom sections .dsometa (library headers), .dsosyms
(__imp_foo), and .dsostrs ("foo"). the use of custom sections makes
it possible for the loader (libpsxscl.so) to be in full charge of
path-independent library loading, and also allows marking a library
as a system library, thereby ensuring its loading from the operating
system's designated library directory (aka %system32%).
with the implementation of
pe_load_framework_loader(), the statically linked part of the framework's
loader is now complete. in a top-level framework process, the loader (libpsxscl.so)
is found according to the logic that was recently described on the
it's all relative!
the dynamic loader functions in libpemagine, which are responsible for loading
the framework's loader at process initialization, are now complete and working.
The implementation is based on a clean, framework-neutral API/ABI, and could
thus easily be used in a variety of execution environments.
we now have a mailing list!
many thanks to daurnimator for providing the daemon and helping set up the
slibtool: a surrogate libtool
implementation, written in C
is working very nicely not only for this project, but also for all other
supported targets (linux, bsd, etc.); build once, use with all native and cross
compilation of libtool-based packages. slibtool alpha has now been
and is currently at version
sofort: portable software
is out! the project provides a fast-and-skinny build system, along with a
thread-safe and very powerful argument vector parser and usage screen generator.
this project has already generated the skeleton for four different
midipix-related tools (perk, mdso, apimagic, and elfbites).
internal release, a working bash, colorful bugs, and lots of fun. for links to
the internal tarballs please join the project's freenode irc channel (#midipix).