3 ms·
I've mixed opinions over the recent breakages I've witnessed in OpenSSL. On one hand, I absolutely hate a library which breaks its API (I think lack of stabili
by kakwa_ 6y ago
I've mixed opinions over the recent breakages I've witnessed in OpenSSL.
On one hand, I absolutely hate a library which breaks its API (I think lack of stability in interfaces is one of the bigger bane of the software industry and causes numerous issues down the line).
But in the specific case with OpenSSL, the breakages are legitimate imho. Most of the breakages I have seen are to clean-up interfaces and have a clear boundary between OpenSSL internals and items controlled by third party apps.
Concretely, they are switching from an API which exposed the internal structures directly to a getter/setter pattern.
Example in from one of my project:
old:
ts_response->tst_info->serial
new:
TS_TST_INFO_get_serial(TS_RESP_get_tst_info(ts_response))
Breaking APIs is always a balancing act, it's not something which must happen willy-nilly, but it's sometimes a necessary evil, and in the specific case of OpenSSL, if the project wants to go forward and improve in quality and stability, they are kind of forced to do it, it's just a bit regrettable that better design decisions had not be made from the start.
- ensiferum 6y agoI'm not even talking about clear cut API breakage. I'm talking about that if I do #include <openssl.h> and build against the 1.2.x system installed OpenSSL I will get thousands of errors from headers internal to OpenSSL.
- fanf2 6y agoThere's no such thing as OpenSSL 1.2 2018-09-11: 1.1.1-> 1.1.2 https://github.com/openssl/openssl/commit/a4a90a8a3bdcb9336b5c9c15da419e99a87bc6ed https://github.com/openssl/openssl/commit/a4a90a8a3bdcb9336b... 2018-09-27: 1.1.2 -> 3.0.0 https://github.com/openssl/openssl/commit/3a63dbef15b62b121c5df8762f8cb915fb06b27a https://github.com/openssl/openssl/commit/3a63dbef15b62b121c... There weren't any releases numbered 1.1.2
- ensiferum 6y agoSorry you're right I mixed up the version numbers. It was 1.1.x that I wanted to upgrade to from 1.0.x