@crumbcake Amazon did one better: > KF8 (also called AZW3) is basically a compiled ePub that has been compiled using a Palm database — https://wiki.mobileread.com/wiki/KF8 (“Palm database” as in the database format used by Palm PDAs, straight outta 1998)
I feel like the Cheney on the MTA algorithm might be more effort than it's worth. It's entirely black magic and abusing constructs in ways a compiler would never expect, and as such it can never be implemented portably. Hell even alloca isn't portable.
Cheney's algorithm on its own is fine (the from-tospace page flipping is pretty ingenious) but when you abuse the stack as in the Cheney on the MTA algorithm it seems like a recipe for arcane code that requires major revisions for every system it'll ever run on. It might be massively more efficient (I remember hearing about some CPU cache arcana that it exploits?) but like many optimizations I wonder if the maintenance burden would be more trouble than it's worth.
@alexandra It's obviously not the same a e s t h e t i c as using X directly, but SDL + Cairo + Pango seems pretty much like a portable version of using raw X (based off of your description, I haven't used X directly before).
@theruran@wolf480pl Well I just came up with a third option: vendor LibreTLS with the project. If my configure script detects libtls is installed, link directly to it. If it isn't installed, then compile and statically link in the LibreTLS. The best of both worlds: I don't have to suffer using OpenSSL's API, and people don't have to install LibreTLS system-wide if they don't want to.
@theruran Well think what you want (and I'm personally “meh” on the language itself) but the standard library for it is pretty solid and they're writing it from scratch which is respectable.
It has some of the more readable versions I've seen of many algorithms, I've already ~rewritten~ “used as a reference” a few parts of the stdlib so at the very least it's good for that :P
The main reason I ask is because most people use OpenSSL and won't have LibreTLS installed so that'll be an extra step, vs. linking directly to OpenSSL/LibreSSl will make it usable without installing anything extra on many *nix systems, but will also be a lot more work.
@wolf480pl Well, it wouldn't be particularly fun and a lot of work but I could probably get it working. The first step will be generating Ada imports from the OpenSSL headers so I'll see how hellish that turns out to be before deciding one way or the other.
I already have generated libtls imports and it's pretty nice so I'll probably end up writing a thick wrapper around those unless OpenSSL manages to somehow be better than expected.
@theruran Since *ssl use their own crypto primitives, if I was to use spark-nacl then I'd have to reimplement all of TLS (other than the cryptographic stuff) myself which is just a little bit beyond the scope of what I want to get into right now.
Especially since I'm currently on the sidelines watching Drew DeVault and a few other people writing cryptographic primitives and TLS implementations for Drew's new programming language, it's only reinforcing that it's nothing I want to be getting into right now.
Maybe at some point in the far future but for right now I'll be fine with linking to a system C library.
I dunno how I feel about it, it has some interesting aspects, although maybe it's a bit redundant with seemingly everyone releasing a new “C replacement” language these days