Dear all,

I would just like to ask what is the motivation behind the recent surge of "standardization", i.e. modifying the HelenOS native API to reflect some external so-called standards.

I mean, most of the changes are obviously fine and maybe even beneficial (the clean up of the headers and whatnot), but other changes raise some questions, for example:

* Why do we have to have qsort() and qsort_r()? It's 2017, shouldn't we
  strive for our basic API to be always reentrant and thread-safe?

* Why should ftell() return a long instead of a off64_t? What is the
  reason for using a signed type when semantically the offset (from the
  beginning of the file) is always non-negative? And why do we want to
  limit the type to 32 bits on 32 bit platforms?

I always though that our "doctrine" gives us the liberty to ditch or slightly alter parts of the so-called standards that are stupid, outdated or otherwise violating the best software engineering practices of our time (while at the same time keeping our native API similar to existing APIs where the syntactical or semantic differences can be neglected in practice).

Are you porting some large piece of software to HelenOS? If so and you really need to replicate blunders of decades-old APIs in HelenOS, may I suggest you take the alternative path: Rename our native API symbols to non-clashing names and implement the replicas of the foreign broken APIs in separate optional libraries that do not force the brokenness to everything in HelenOS?


M.D.

_______________________________________________
HelenOS-devel mailing list
[email protected]
http://lists.modry.cz/listinfo/helenos-devel

Reply via email to