tag:blogger.com,1999:blog-7844526396210378482.post6637551136078273578..comments2024-01-31T09:23:26.925+00:00Comments on Noel O'Blog: Nothing added but time - ABI and API stabilityNoel O'Boylehttp://www.blogger.com/profile/03288289351940689018noreply@blogger.comBlogger7125tag:blogger.com,1999:blog-7844526396210378482.post-30236237562397529112015-01-08T16:00:08.977+00:002015-01-08T16:00:08.977+00:00I see that while generating the compatibility repo...I see that while generating the compatibility report , the ACC report that <br />"ERROR: some errors occurred when compiling headers"<br /><br />Can these errors be ignored? I get the same tupe of output and when IO check the error logs , I see that it reports errors in boost.Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-7844526396210378482.post-73291938847883353422012-10-14T10:36:51.321+01:002012-10-14T10:36:51.321+01:00@Reinis: Thanks. I've updated the text.
@Andr...@Reinis: Thanks. I've updated the text.<br /><br />@Andrey: I did check the logs when running the checker. I've added note (2) above. The error message does not seem important. (I can send you if you are interested.)<br /><br />Regarding GCC 4.8.0, sure. :-) This was by accident, as my boss likes to compile pre-release versions of GCC.<br /><br />I'm aware of the upstream tracker, but I didn't link to it as it gives the impression that OB 2.3.1 was not ABI compataible with OB 2.3.0. On the tracker, OB 2.3.1 was not compiled with Eigen, and so is missing two classes.Noel O'Boylehttps://www.blogger.com/profile/03288289351940689018noreply@blogger.comtag:blogger.com,1999:blog-7844526396210378482.post-351467830534763962012-10-13T22:55:20.593+01:002012-10-13T22:55:20.593+01:00Hmm... Your log contains error messages (probably ...Hmm... Your log contains error messages (probably due to some headers are not self-compiled), so the output compatibility report may be incomplete. Could you please check your */log.txt files and then correct input XML-files (descriptors) to avoid errors? Probably you will need to add include_preamble sections to your input descriptors.<br /><br />Also GCC 4.8.0 is not yet officially supported by the tool.<br /><br />Upstream-Tracker page for OB: http://upstream-tracker.org/versions/openbabel.htmlandreyhttp://www.rosalab.com/noreply@blogger.comtag:blogger.com,1999:blog-7844526396210378482.post-91625915307705922712012-10-13T20:55:59.193+01:002012-10-13T20:55:59.193+01:00I think you got API and ABI backwards in the artic...I think you got API and ABI backwards in the article. We maintain stable API between 2.x releases (API can be extended tough) and stable ABI for 2.3.x.Reinishttps://www.blogger.com/profile/17645451346563994614noreply@blogger.comtag:blogger.com,1999:blog-7844526396210378482.post-8348072521504577102012-10-12T09:29:42.285+01:002012-10-12T09:29:42.285+01:00To be clear, we can extend the API in 2.x releases...To be clear, we can extend the API in 2.x releases. So we could add an optional parameter to a function, and pass extra information in. So that's one way we can and do change the API to fix bugs...Noel O'Boylehttps://www.blogger.com/profile/03288289351940689018noreply@blogger.comtag:blogger.com,1999:blog-7844526396210378482.post-78931495180525577022012-10-12T09:22:48.669+01:002012-10-12T09:22:48.669+01:00I think the ABI issue is just C/C++. Basically, it...I think the ABI issue is just C/C++. Basically, it means that if a Linux distro updates from OB 2.3.1 to OB 2.3.2 all other software that links to it (e.g. Avogadro) should still work. The rules regarding this are arcane (at least to me).<br /><br />Re API changes to fix bugs: I know what you mean; sometimes you need to get extra information to an object and have no obvious way to pass it in without extending the ABI. Well, we just squeeze that information in somehow, and work around the API; naturally it's not always the cleanest solution. However, if you know that Geoff won't let the patch go out in the next release, then it really spurs the imagination to do it somehow.<br /><br />It probably also helps that OB has a very flat structure, so that the information does not have to be passed through multiple layers.Noel O'Boylehttps://www.blogger.com/profile/03288289351940689018noreply@blogger.comtag:blogger.com,1999:blog-7844526396210378482.post-90777249618773129312012-10-12T09:01:40.348+01:002012-10-12T09:01:40.348+01:00Nice!
Partly due to you asking about it, the CDK ...Nice!<br /><br />Partly due to you asking about it, the CDK is more strict about API compatibility (not sure of ABI compat is applicable to Java?), but sometimes the only way to fix a bug is to change the API... we very much limit that, but it occasionally happens...<br /><br />How does OpenBabel handle that?<br /><br />EgonEgon Willighagenhttps://www.blogger.com/profile/07470952136305035540noreply@blogger.com