-
-
Notifications
You must be signed in to change notification settings - Fork 200
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix!: Clean error message when trying to access a graph that has been saved with a newer or an older version of the package, graph_version()
returns an object of class "package_version"
#832
Conversation
e9944c8
to
fd87401
Compare
This changes the type of the object returned by the public and documented
So this is a breaking change. Of course, the string-based versioning that we used previously is problematic. But if change it, is it not better to use a plain integer, which is easy to compare either in R or C? At the moment there is both R and C code that deals with format versions. The format version isn't really exposed much to users, it's use is primarily technical. Thus I'm not sure that there's any benefit in using multi-part versioning. What multi-part versioning could achieve is a version bump that keeps the format interpretable by older igraph. While not inconceivable, that is an unusual situation. What information could be added to the format that can be ignored by older versions without loss? The UUID that was added is one example (though its purpose is not 100% clear to me). Another example would be a cache, similar to the one we use in the C core. A cache can be extended in the future, to store more kinds of information, so even a three-part versioning might be useful for it. But do we want to save the cache when saving graphs? Well, is it possible at all to exclude parts of R object when serializing them to a file, or is it mandatory to include everything? Sorry about thinking aloud while writing. Yes, perhaps you're right and there's potential value in a multi-part format version after all. We may never use the second part, but keeping the door open for is the smart thing to do. The disadvantage is the difficulty in handling from C. Maybe it's good to fix at least the number of parts? |
a40ea48
to
36c97ae
Compare
36c97ae
to
37f6a16
Compare
I'm not in love with the three-part version, the version "0.8.0" is meaningless and has only been introduced for igraph 1.0.0 (the version that gained the environment component). The |
ceea50b
to
90ec0b6
Compare
I backported the tests to the released version of igraph. This PR now shows how the behavior has improved over igraph 1.4.3. |
graph_version()
returns an object of class "package_version"
Closes #830