Hacker News new | past | comments | ask | show | jobs | submit login

> A more reasonable position is that it is a bug if your program crashes with the latest version of a library

This makes sense for actively maintained code.

There are a lot of pieces of software that aren't actively maintained but that don't exhibit any breaking bugs and people continue to rely on them. If the libraries that these pieces of software ever make breaking changes, either (a) someone has to step up and start maintaining the software again, (b) an older version of the library must be installed, or (c) the software dropped, annoying a lot of people who still depend on the tool.

What macOS has is .frameworks, which let you version shared dynamic libraries. When building a project against a framework, one can either choose to build against a specific version or (more commonly) leave the version unspecified and use the latest. No fuss, no muss.




> When building a project against a framework...

That still implies active maintenance, ie doing new builds.

If it's assumed to work with the "latest version", but then breaks in the future, it is a decision outside of the build itself as to which version of the library it should link up with.

The only thing that should be baked into the software is which specific version of the dynamic lib it was compatible with, then externally the system can determine which most-recent version of the library is still compatible.


> then externally the system can determine which most-recent version of the library is still compatible

This is great until a more recent version of a library still has the same interface but a completely different behaviour or seriously breaking bug in the implementation.


That's exactly what I'm talking about. That compatibility information is what needs to be captured, and is outside any future preference that the program was originally built to.

Instead, most automatic systems just blindly say "this version number is newer, so use that" and break everything. Programs were built to a specific version which worked, and only those versions compatible to that specific version should be used.




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: