Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

  > Rust could get things done in a beautiful way, if they 
  > just....stabilized it.
Hence the Rust 1.0 stable release on May 15th. :) http://blog.rust-lang.org/2015/02/13/Final-1.0-timeline.html


"Stable" but adding new features every 6 weeks... which will get used by library authors... which will put all users on a 6 week upgrade cycle.. yey?

Or your favorite library author just likes nightlies, which effectively forces you to run nightlies to keep up with bug fixes if he isn't maintaining a separate branch (and who has time for that noise).


  > "Stable" but adding new features every 6 weeks... which 
  > will get used by library authors... which will put all 
  > users on a 6 week upgrade cycle
Why would it force anyone to upgrade? If a library exists for Rust 1.0, and then a library author releases a new version of the library with Rust 1.1 features, the Rust 1.0 library does not cease to exist. And Cargo supports semantic versioning to make it easy for library authors to inform their users when a new release is backwards-incompatible, and automatically upgrade users to new minor releases of the lib when the user has opted into receiving them. Even if a library author breaks their own backcompat and does all new feature development on a new version of Rust, thereby requiring you to upgrade your own version of Rust in order to get new features, the worst case scenario is that you download a new Rust compiler and all your other code continues working (hence, backwards compatibility).

  > Or your favorite library author just likes nightlies,
  > which effectively forces you to run nightlies
If a sufficiently-popular lib exists only on nightlies, then there will exist demand from stable users for a lib of equivalent functionality that targets a stable release. Stability is a competitive advantage! And because Rust can release a new minor version every six weeks, the core developers can look at what popular libraries are using the nightly branch, determine which features that library can't live without, and then prioritize stabilizing those specific features for the next minor release. Six weeks later, that lib is suddenly using a stable release.


> If a library exists for Rust 1.0, and then a library author releases a new version of the library with Rust 1.1 features, the Rust 1.0 library does not cease to exist. And Cargo supports semantic versioning...

That's true, but it ignores the way modern software unfortunately works. Programmers are lazy, and maintaining multiple development branches takes work, so they will try not to do that if they can get away with it. How many bug fixes will get backported to Rust 1.0.x, or to the 1.0-supporting version of that library? Probably not very many. Most developers will just bump the major version every 6 weeks, because that's easier than worrying about stability.


I think this attitude is far too cynical. Library authors that care about their users don't break backcompat lightly, and they do backport bugfixes. The mantra "programmers are lazy" does not imply that programmers are inherently amateurs.


I think that isn't so much attitude as experience. That said, I will watch post May 15th and hope I am wrong, but I suspect despite the buzz some of the policies will be (broad adoption) language suicide.


  > I think that isn't so much attitude as experience
Experience with library ecosystems which lack proper versioning support, perhaps.

  > some of the policies will be (broad adoption) language 
  > suicide
What policies? How does this discussion at all concern any deficiencies that are unique to Rust?


So instead we end up with libraries on 1.0 for years because you can't break by upgrading.


I cannot express how amused I am at the silliness of this whole conversation, which is predicated on the absurd premise that users won't want to upgrade their versions of the compiler. What part of the phrase "backwards compatible" is lost on this crowd?




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

Search: