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