Why some types in posix.system are exposed in posix lib and some are not?

In posix, I can access Kevent like posix.Kevent or posix.system.Kevent, but for system types like EVFILT I can only get it posix.system.EVFILT.

So why not expose all the system types into posix? or why not keep all the system types in posix.system?

0.16 gutted std.posix as std.Io is now the preffered platform agnostic api

The reason is why some things are not exposed through std.posix is because they are not POSIX.

POSIX, is a standard for operating systems, some implementers of it are: Linux, BSD, macOS, etc.
Among other things, it defines the interface and operations the operating system provides to user applications.
std.posix is an API implementation to interact with POSIX systems, but also an adapter API for non POSIX systems e.g. Windows.

POSIX is limited in scope, OS’s can provide their own variations and extensions, they often do. std.posix.system is that OS specific API.

Then why Kevent type be exposed in Posix? Isn’t it OS specific, only in BSD?

sometimes the std just messed up, it happens.

std.Io doesn’t support Kqueue yet in 0.16 I think? That’s why I go to the lower level std.posix.

https://codeberg.org/ziglang/zig/src/branch/master/lib/std/Io/Kqueue.zig

the kqueue implementation is wip and not in a useable state