and then sometimes you need something super-scalable and lean. I am still not a big fan of NoSQL, I like my indexes automatically maintained and my data normalized, thank you. But there is something to be said for the auto-sharding of AWS DynanoDB if you know you are going to need something that really screams.
(And the SimpleDB pricing model can not be beat, but it may not be around for much longer, and the programming model is still not as good as SQL)
If your want lean storage for data, RDBMS might not be the winner (assuming that is the only criteria).
while libcitadel as base and many parts of citadel already embrace object oriented designs,tihs is an interesting read:
http://libcello.org/learn/cello-vs-cpp-vs-objc
They had it in 2013, as _snprintf, requiring <stdio.h>. They also have wide versions of the function.
_snprintf wouldn't terminate the string on error. So I guess that doesn't count.
afairk they had that for quiet a while.
anno 2015: strncpy() still doesn't guarantee null termination, on *any*
platform
It doesn't guarantee bounds-safety if you pass the wrong size parameter, either. I suppose you're supposed to use it after calloc() or memset() and pass size-1...
A Python re-write of any of it would be interesting. Prolly not gonna happen, but it would be fun for me.
I guess I have never tried calling any of the Citadel libraries with ctypes yet. I should probably give that a try. I don't think I will muck about on my live system however :-) Easy / Queasy install to the rescue.
@ax25 I guess there is not much in there realy usefull for python. The client api doesn't use libcitadels abstractions, which, if, then would probably be a good thing to use in python or swig.
Another nice thing I've just found:
https://www.madoko.net/ A system for doing markdown documentations & presentations with latex backends written in...
Koka:
http://www.rise4fun.com/koka/tutorial