note one thing - I never said they would ONLY be in the POSIX module. I think I've said it several times that they would be aliased from other places (I mentioned the top-level and other places too). If you'd feel better, copy abs/ceil anywhere you want and alias it in the POSIX module - I really don't care and the exact placement wasn't at all the subject of the idea. The idea was to create a clean namespace partitioning that makes it easy for people to find the functions they might need and which might be defined in this or that standard.
/ Marek Habersack (Grendel)
Previous text:
2002-09-04 13:47: Subject: argv[0]?
sleep and abs in Pike has nothing in common with the corresponding POSIX functions except for the names. Those functions might have aliases in a POSIX module, but since they doesn't actually use the libc implementations it should be clearly stated that they're only aliases. (And I don't see any point in having other variants in a POSIX module that really use the libc implementations, since they only would work less well in Pike.)
acos and ceil belongs in a math module if anything. As above, they might be in a POSIX module too for completeness sake, but not only there. Besides, I actually don't see any real point in removing such functions from the top level since they are well known and have the same names and behavior in many languages.(*)
As for chmod and chown, I think they firstly belong in the Stdio module along with mv, cp (already there), symlink etc. Sure, they are riddled with platform specific idiosyncrasies but so is actually almost all the rest of the fairly low level filesystem routines in that module. They do exist even on FAT filesystems and do what they're supposed to as far as applicable. I'd like to have a higher level filesystem interface in the Filesystem module, and a cleaner file stream interface in, say, a Stream module.
exec would firsthand belong in the Process module, but it could also stay on the top level for similar reasons like acos and ceil above.
So among the examples you mentioned I only see that crypt should be moved and not copied to a POSIX module. I lump crypt together with getpwent, chroot, syslog and other miscellaneous OS routines which have some sort of standard through POSIX. So it'd be good to move them there and let the System module contain higher level functions like get_all_users instead.
*) I don't think that it's a goal in itself to have as few identifiers as possible at the top level. It's a very attractive namespace; it should be used with caution of course, but nevertheless it should still be _used_.
/ Martin Stjernholm, Roxen IS