Hi Manuel, I must say that on a conceptual point of view I like the approach, keeping one's libraries up to date is the only way to go, however I am afraid that you are glossing over certain details here:
- you assume that the source code is available, this is a problem if I am using a 3rd party library for which I only get the binary and THEY have not migrated yet; how can I use library X (released in 0.9 and 0.10) and library Y (released in 0.11 and 0.12) in the same project ? Smaller milestones make it a smoother process to upgrade at the individual level but larger milestones help multiple people/corporations coordinate. - you assume that I can actually upgrade; I work at a large software company, with over 5,000 employees now, and this apply a *large* source code base. A migration entails an extensive test phase of the target software/version following by a careful migration of a few pilot products simply because migrating costs a lot and migrating to a "flawed" version just to rollback the migration is a cost sink. As a result though, this creates inertia. Internally we are *always* in the middle of several migrations (compiler, 3rd party libraries, in-house middleware, ...) and the larger ones take years. Because of this, once again we need some coordination: we just cannot afford to migrate every 6 months (not enough testing time). This means that while it would not prevent Rust from migrating every 6 months, we would still be expecting fixes to previous releases for a year or two. The former means that 6 months might a little *too* fast pace for industrial projects, the latter means that on top of defining releases schedule the Rust team will also have to provide a clear plan for support of "older" versions (how long, what kind of bugs, ...) and the number of branches impacted may grow quickly: 6 months releases + 2 years support means at least 4 branches, maybe 5 if we count the one being developed (and 2 years is nothing fancy, as support goes). -- Matthieu On Sun, Nov 24, 2013 at 11:49 AM, Manuel <ma.adam...@gmail.com> wrote: > I had the following idea to approach language evolution: > > Problem: > Languages try to be backward compatible by stabilizing, and only slowly > deprecating old features. This results in a language which does not evolve. > Some different takes about this: > C++: adds new features but does not fix problems, and often does not > remove obsolete features resulting in, well, C++. > Python: Minor versions which add new features, big version jump from 2 to > 3 to make backward incompatible changes. The resulting incompatibility was > a big problem, almost 5 years after the release of 3.0 (December 3rd, > 2008) people are still using 2.x. Rust seems to follow a similar > approach, devs are already defering features to 2.0 to stabilize. > Other languages simply do not evolve at all and are replaced. > > My idea to improve this situation would be to add a version tag in every > main crate, something like "#ver 0.10". For each version jump the compiler > would fix the code automatically, and convert it to the current language > specification. When the library/code is multiple versions behind the > conversions could be applied successively. This can be done in a lot of > cases, see python 2to3 script and even Google did this for go with the tool > gofix during development. With this change not updated libraries would > still be usable in rust. To simplify updating libraries the compiler could, > on demand, print out a report of problematic parts and propose fixes. Some > things can not be fixed with an automatic approach, for these cases a > classic deprecation mechanism or something else could still be used. > > Advantages: > Kind of backward compatibility to old code bases. > Rust can evolve and stay streamlined at the same time. > Compiler does not have to deal with deprecation mechanism, because you can > remove, and change things instantly. > > When this would be in place i think it would be best to release > incompatible updates often, but with only a few changes. Every six months > for example. > > > What do you think about this? > > Manuel > > > > _______________________________________________ > Rust-dev mailing list > Rust-dev@mozilla.org > https://mail.mozilla.org/listinfo/rust-dev > >
_______________________________________________ Rust-dev mailing list Rust-dev@mozilla.org https://mail.mozilla.org/listinfo/rust-dev