mirror of
https://gitlab.com/sortix/sortix.git
synced 2023-02-13 20:55:38 -05:00
Document POSIX divergence.
This commit is contained in:
parent
9650bbd776
commit
a6603dffd9
2 changed files with 61 additions and 0 deletions
|
@ -6,6 +6,7 @@ DOCUMENTS:=\
|
||||||
cross-development \
|
cross-development \
|
||||||
obsolete-stuff \
|
obsolete-stuff \
|
||||||
porting-guide \
|
porting-guide \
|
||||||
|
posix-divergence \
|
||||||
user-guide \
|
user-guide \
|
||||||
welcome \
|
welcome \
|
||||||
|
|
||||||
|
|
60
doc/posix-divergence
Normal file
60
doc/posix-divergence
Normal file
|
@ -0,0 +1,60 @@
|
||||||
|
POSIX Divergence
|
||||||
|
================
|
||||||
|
|
||||||
|
The Sortix operating system cares about compatibility with existing software and
|
||||||
|
maintaining such software by purging obsolete stuff from the system. Sortix
|
||||||
|
recognizes the POSIX standard as valuable and embraces it rather than fighting
|
||||||
|
it. Nonetheless, we don't implement standards for the sake of standards, but for
|
||||||
|
the benefits we get from complying. Sometimes the standard mandates something
|
||||||
|
that is broken or we can do considerably better. In those cases it's best to
|
||||||
|
diverge and fix the design mistakes properly - but we must not forget there is
|
||||||
|
a considerable compatibility cost we must pay. Don't diverge unless there is a
|
||||||
|
good reason to and compatibility and an upgrade path must be considered.
|
||||||
|
|
||||||
|
That said, Sortix has diverged from full POSIX compliance in the hope such
|
||||||
|
decisions would be for the better. This document attempts to list where Sortix
|
||||||
|
has intentionally diverged from POSIX 2008. See doc/obsolete-stuff for a more
|
||||||
|
detailed rationale of why the interfaces are absent or scheduled for removal.
|
||||||
|
Mind that Sortix doesn't fully intend to implement the XSI option and violations
|
||||||
|
of that isn't listed here.
|
||||||
|
|
||||||
|
It is worth noting that some particular interfaces scheduled for removal will
|
||||||
|
likely take a very long time to phase out and wholly remove.
|
||||||
|
|
||||||
|
Mandated by POSIX but not implemented in Sortix
|
||||||
|
----
|
||||||
|
* getpgrp is not implemented.
|
||||||
|
* <strings.h> has been merged into <string.h>.
|
||||||
|
* Numerous namespace violations (will be fixed or documented here).
|
||||||
|
* Numerous missing features (will be fixed or documented here).
|
||||||
|
|
||||||
|
Obsolescent in POSIX but not implemented in Sortix
|
||||||
|
----
|
||||||
|
* gets is not implemented (obsolescent in POSIX).
|
||||||
|
* tmpnam is not implemented (obsolescent in POSIX).
|
||||||
|
|
||||||
|
Mandated by POSIX and scheduled for Sortix removal
|
||||||
|
----
|
||||||
|
* select is scheduled for removal.
|
||||||
|
* struct timeval is scheduled for removal.
|
||||||
|
* times, <sys/times.h> is scheduled for removal.
|
||||||
|
|
||||||
|
Obsolescent in POSIX and scheduled for Sortix removal
|
||||||
|
---
|
||||||
|
* asctime and asctime_r are scheduled for removal (obsolescent in POSIX).
|
||||||
|
* ctime, ctime_r are scheduled for removal (obsolescent in POSIX).
|
||||||
|
* utime, <utime.h> are scheduled for removal (obsolescent in POSIX).
|
||||||
|
|
||||||
|
Timestamps
|
||||||
|
----------
|
||||||
|
|
||||||
|
The time_t values given by clock_gettime(CLOCK_REALTIME, ...) (and other system
|
||||||
|
interfaces built upon that) are the number of actual seconds that has passed
|
||||||
|
since 1970-01-01 00:00:00 UTC. This includes leap seconds, unlike the timestamps
|
||||||
|
mandated by POSIX. This has the advantage that time_t values are unambiguously
|
||||||
|
translate to a particular date and time and back and that the values are
|
||||||
|
continuous and adding an internal to a time_t value actually delays by that
|
||||||
|
interval. This has the unfortunate consequence that translating to and from
|
||||||
|
POSIX time requires subtracting the number of leap seconds that has occured for
|
||||||
|
that time value. The standard library needs to get some utility functions for
|
||||||
|
doing such conversion.
|
Loading…
Add table
Add a link
Reference in a new issue