This is wonderful news! Thank you for taking on such an important and
difficult task!

I'm wondering will Cargo leverage one of Rust's amazing features, which is
that library symbols include the crate hash and version in their
name<https://github.com/mozilla/rust/wiki/Doc-crate-hashes#symbol-hashes>
.

This means that finally we have a language that can handle the following
case: lib A depends on lib B, which depends on lib C v1. Lib A now gets a
dep on lib D, which depends on lib C v2. With Rust we can just link all
this together without issues whereas with something like C++ you'd end up
very unhappy.

I'm hoping that Cargo will support such use cases and won't insist on just
one version of a dependency in the dependency tree, as package managers
commonly do.

On Mon Mar 17 2014 at 6:27:09 PM, Yehuda Katz <wyc...@gmail.com> wrote:

> Hello Rustlers,
>
> I'll be writing here more with more details soon. For now, a few quick
> comments:
>
>    - I'm really glad that Mozilla and the Rust team are prioritizing
>    package management. An open source language ecosystem really lives or dies
>    based on how easy it is to share code, and writing a world-class package
>    manager (as brson put it) takes time, especially when you account for the
>    inevitable and important iteration that comes from real-world usage.
>    - There's a lot about package management that's well-understood and
>    somewhat language agnostic. On the other hand, there are things that are
>    specific to native code or even more specific to Rust that a Rust package
>    manager need to account for. My goal is to use well-known best practices
>    for the former, and avoid reinventing the wheel, without losing track of
>    what makes Rust unique or different. Carl and I are both the creators of
>    the predominant Ruby package manager (bundler) and day-to-day production
>    users of Rust (really!) at the company we founded. We think that mix should
>    enable us to balance both of those priorities.
>    - Over the next month or two, we plan to prioritize getting to
>    regular, working milestones with Cargo. These milestones will not always
>    reflect our plan for the final workflow that we expect with Cargo, but
>    having real-world working code is very important when building something
>    the size and scope of Cargo. We plan to share design documents (both on the
>    internal architecture and expected workflows) as we work. We started work
>    10 days ago, and we already have a primitive "cargo" compiling one of our
>    libraries based on its Cargo manifest, but so far only via very simple
>    plumbing commands that don't reflect the actual workflow we intend.
>
> In general, some guiding principles for the project:
>
>    - It should be possible for new users of Rust to use Cargo to
>    experiment with Rust and its library ecosystem and have success quickly.
>    - Users of Cargo should get deterministic builds out of the box. If I
>    build an artifact on one machine, it should be possible to build that same
>    artifact on another machine with exactly the same source of every
>    dependency, and exactly the same options.
>    - Users of Cargo should be able to update dependencies with as minimal
>    impact on other dependencies as possible. If I update a utility library,
>    Cargo should avoid updates to other, unrelated libraries by design.
>    - Cargo should support cross-compilation out of the box. As long as
>    your version of Rust and its standard library are compiled for the expected
>    targets, a single line of configuration should be enough to get builds for
>    those targets
>    - Cargo should support the common lifecycle for packages: a package
>    starts out as a part of an existing project, moves to Github for easier
>    sharing across multiple projects and eventually the open source community,
>    and finally is published to a central repository with a version number.
>    This means that all three kinds of "sources" (local file system, github,
>    and central package repository) should be supported by the default
>    distribution of Cargo.
>
> We plan to publish more detail really soon, as well as more information on
> what we've already built.
>
> Please feel free to ask questions :)
>
> Yehuda Katz
> (ph) 718.877.1325
>
>
> On Mon, Mar 17, 2014 at 5:48 PM, Brian Anderson <bander...@mozilla.com>wrote:
>
>> Dearest Rustlers,
>>
>> Today I'm super-excited to announce that Mozilla has arranged to develop
>> a world-class package manager for Rust. Yehuda Katz and Carl Lerche, from
>> Tilde Inc., have previously built the popular Ruby package manager,
>> Bundler, and now they are going to build Rust's package manager, Cargo.
>> They are *experts* at the management of packages, and will deliver a tool
>> that builds off both their experience in Ruby and ours with pevious
>> iterations of rustpkg.
>>
>> The two of them will be talking about this project in more detail very
>> soon. Please welcome them into your hearts.
>>
>> Regards,
>> Brian
>> _______________________________________________
>> 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
>
_______________________________________________
Rust-dev mailing list
Rust-dev@mozilla.org
https://mail.mozilla.org/listinfo/rust-dev

Reply via email to