- /* XXX this is _not_ designed to be fast */
+ /* XXX this is _not_ designed to be safe */
[0] https://github.com/Apple-FOSS-Mirror/Libc/blob/2ca2ae7464771...165 karma · joined April 10, 2015
- /* XXX this is _not_ designed to be fast */
+ /* XXX this is _not_ designed to be safe */
[0] https://github.com/Apple-FOSS-Mirror/Libc/blob/2ca2ae7464771... pc/ether82557.c: NullPointer = 0xFFFFFFFF, /* 82557 NULL pointer */
Or qget(): /*
* get next block from a queue, return null if nothing there
*/
if(b == nil){
q->state |= Qstarve;
iunlock(q);
return nil;
}
So null and nil pointers.It was always interesting to me; there were null-terminated strings and null-bytes [0], but nil pointers. And then, occasionally, null and NULL pointers.
[0] https://www.unix.com/man-page/plan9/2/strcat/
-ss
-ss
-ss
[0] https://www.amazon.com/Understanding-Linux-Kernel-Third-Daniel/dp/0596005652
[1] https://www.amazon.com/Linux-Kernel-Development-Robert-Love/dp/0672329468
-ss-ss
-ss
- Linus is super polite here;
- RedHat is IBM here;
- IBM is still bad, tho.
-ssP.S. Sad news.
A bit unrelated: Wow, I can barely tell what I've been up to 2 years ago; how do people remember things that happened some 30-40 years ago...
-ss
-ss
-ss
BTW I just found out that, apparently, C++ Builder is, sort of, still alive. The most recent release is "10.2 Tokyo / March 22, 2017". I thought it was dead for a decade or so.
-ss
-ss
/* Well... so... One can convert JSON to XML and apply XML schema verification. That's partly a joke :) */
-ss
Hmm, after a quick search I found a bunch of json-to-xml and xml-to-json converters, including libraries. E.g. JSON-Java library [0]. May be same things exist for .Net. Is this what you meant?
[0] https://github.com/stleary/JSON-java
-ss
-ss
-ss
-ss
But TIL that "too-ple" is more common [98 pts vs 43 pts], apparently.
-ss
It depends. A multi entry B1/B2 validity period may differ from 1 year (Belarus, Afghanistan, etc.) to 10 years [0]
And, yeah, I hold a very weak passport too.
[0] https://en.wikipedia.org/wiki/B_visa#Validity_period_and_dur...
-ss
-ss
-ss
LockOn [0] (formerly known as Flanker, IIRC) and DCS World (never played that one) look quite cool.
[0] https://en.wikipedia.org/wiki/Lock_On:_Modern_Air_Combat
[1] https://www.digitalcombatsimulator.com/en/
-ss
-ss
I think they actually consider it to be self-contained.
[UPD] But I haven't checked how NetBSD handled y2038. It might be that they didn't break the ABI. In some parts, I think, OpenBSD/FreeBSD/NetBSD just converted time_t to an unsigned 32-bit int.
-ss
Well, there are probably some subtle details which I'm missing, and may be you are totally right.
The way it looks to me is as follows: They are "happy to break kernel ABI compatibility" because the repository is monolithic - they break ABI, they immediately fix user space apps.
E.g. NetBSD time_t 64-bit commit: https://marc.info/?l=openbsd-cvs&m=137637321205010&w=2
They patched the kernel:
sys/kern : kern_clock.c kern_descrip.c kern_event.c
kern_exit.c kern_resource.c kern_subr.c
kern_synch.c kern_time.c sys_generic.c
syscalls.conf syscalls.master vfs_getcwd.c
vfs_syscalls.c vfs_vops.c
and fixed broken user space at the same time:...
sys/msdosfs : msdosfs_vnops.c
sys/netinet6 : in6.c nd6.c
sys/nfs : nfs_serv.c nfs_subs.c nfs_vnops.c xdr_subs.h
sys/ntfs : ntfs_vnops.c
sys/sys : _time.h _types.h dirent.h event.h resource.h
shm.h siginfo.h stat.h sysctl.h time.h types.h
vnode.h
sys/ufs/ext2fs : ext2fs_lookup.c
sys/ufs/ufs : ufs_vnops.c
...There is no "transitional" stage, when the kernel is already patched, but no user space apps are ready for those changes yet. It all happens at once.
-ss
> OpenBSD is year 2038 ready and will run well
> beyond Tue Jan 19 03:14:07 2038 UTC
OpenBSD 5.5 was released on May 1, 2014. While Linux is still "not quite there yet" y2038-wise. y2038 is a very complex issue, while it may look simple - time_t and clock_t should be 64-bit. This requires changes both on the kernel -- new sys-calls interfaces [stat()], new structures layouts [struct stat], new sizeof()-s, etc. -- and the user space sides. This, basically, means ABI breakage: newer kernels will not be able to run older user space binaries. So how did OpenBSD handle that? The reason why y2038 problem looked so simple to OpenBSD was a "monolithic repository". It's a self-contained system, with the kernel and user space built together out of a single repository. OpenBSD folks changed both user space and kernel space in "one shot".
IOW, a monolithic repository makes some things easier:
a) make a dramatic change to A
b) rebuild the world
c) see what's broken, patch it
d) while there are regressions or build breakages, goto (b)
e) commit everything
[0] http://www.openbsd.org/55.html?hn
[UPDATE: fixed spelling errors... umm, some of them]
-ss
Well, we are using Sourceforge... For one particular reason - free mailing list [for our open source project]. The code is on GitHub, but we want to do things the "old way" - send a patch to the mailing list, let people review it.
-ss
Or maybe they just wanted developers to be "less creative".
-ss