Tried some programs that used to work:

First program:

    src/main.rs:65:11: 65:19 error: no method named `join` found for type `collections::vec::Vec<&str>` in the current scope
    src/main.rs:65     sline.join("")                              // return string
OK, what happened to ".join", and who had the great idea of taking it out?

Second program:

    $ cargo build
    An unknown error occurred

    To learn more, run the command again with --verbose.
OK, must rerun because of useless message.

    $ cargo --verbose build
    Invalid arguments.

    Usage:
        cargo  [...]
        cargo [options]
Note that the "Usage" message doesn't say where to put the options if there's a commmand. So we have to guess:

    $ cargo build --verbose
    Failed to parse registry's information for: chrono

    Caused by:
      the given version requirement is invalid
The version requirement in the cargo.toml file under [dependencies] is

    chrono="*"
which, according to this manual [1] is valid.

I used to like Rust, but after years of stuff breaking with each new release, I don't use it for anything serious.

[1] http://doc.crates.io/specifying-dependencies.html

Rust has not removed an API since 1.0. Your code is extremely old and predates stability.

Yes, star dependencies were removed like a year ago, for semver issues. They went through multiple release cycles of warnings.

Rust has not removed an API since 1.0. Your code is extremely old and predates stability.

That code worked through at least Rust 1.2. So, yes, Rust has removed an API since 1.0. That code was compiling in December 2016.

Yes, star dependencies were removed like a year ago, for semver issues. They went through multiple release cycles of warnings.

From the Cargo manual [1]:

    Wildcard requirements

    Wildcard requirements allow for any version where the wildcard is positioned.

    *, 1.* and 1.2.* are examples of wildcard requirements.

    * := >=0.0.0
    1.* := >=1.0.0 <2.0.0
    1.2.* := >=1.2.0 <1.3.0
Apparently, nobody bothered to update the manual after removing the feature.

[1] http://doc.crates.io/specifying-dependencies.html

TL;DR Animats's errors were attempting to compile code from a more recent version of Rust on 1.2, or something similar. When I attempted to reproduce, I got the same errors on 1.2, and no errors on 1.17. Rust does not guarantee forward compatibility, code that compiles on 1.17 will not necessarily compile on 1.2 (of course, that would mean no new features).

I attempted to reproduce your report by downloading the 1.2 compiler and compiling this code in both versions. Here is what I got:

---

First, the Vec.join report. I attempted to compile a crate with this body on both versions:

    fn main() {
        let v: Vec<&str> = vec!["hello, ", "world"];
        v.join("");
    }
On 1.2 this failed to compile with exactly the error you stated. This isn't surprising to me since I recall us adding .join to Vec several months after the 1.2 release. So you certainly weren't compiling that code on 1.2.

In contrast, on 1.17, this code compiled just fine. This is exactly what I expected, since I use vec.join all the time on vectors of string slices.

In conclusion, I was unable to reproduce this bug.

---

Second, the Cargo star dependencies report. Manishearth is wrong, we disallow those dependencies from being uploaded to crates.io, but end users are allowed to use them just fine (strongly recommended that you don't, though!).

To attempt to reproduce, I built a crate with this dependencies section:

    [dependencies]
    chrono="*"
On 1.2, I got exactly the error you stated. I don't know what the source of it is, but I know that star dependencies are risky because they imply indefinite forward compatibility, which is impossible to guarantee.

On 1.17, this successfully resolved to the 0.3.0 version of chrono, which compiled just fine.

Once again, I was unable to reproduce your bug report.

---

If you have any more bug reports, please post them on https://github.com/rust-lang/rust . And you can check which version of the compiler you're using with `rustc --version` (supported since before 1.0).