[rust-dev] Deprecating rustpkg

Matthew Frazier leafstormrush at gmail.com
Tue Jan 28 03:23:09 PST 2014


On 01/28/2014 04:33 AM, Lee Braiden wrote:
> On 28/01/14 08:36, György Andrasek wrote:
>> I never quite understood the problem `rustpkg` was meant to solve. For
>> building Rust code, `rustc --out-dir build` is good enough. For
>> running tests and benchmarks, `rustc` is good enough. For downloading
>> things, I still need to feed it a github address, which kinda takes
>> away any value it could have over `git clone` or git submodules.
>>
>> What I would actually need from a build system, i.e. finding
>> {C,C++,Rust} libraries, building {C,C++,Rust} libraries/executables
>> and linking them to said {C,C++,Rust} libraries, it doesn't do. It
>> also doesn't bootstrap rustc.
>
> I agree with this.  What I'd want is much more like apt (add
> repositories, update lists of available packages from those
> repositories, manage priorities between repositories, say that one
> repository should be preferred over another for a particular package,
> working in specific prefixes (/usr/local, /usr, /,
> ~/Projects/something-requiring-old-libs), but rust-specific and platform
> independent.

Have you ever used Composer <https://getcomposer.org/>? I know that 
Jordi Boggiano, one of the authors, has been involved with the Rust 
community in the past. Some Composer features that I think are critical 
for the new Rust package manager include:

- Tags and branches are automatically recognized from git to create 
versions.

- Version specifiers aren't just limited to "this version exactly," but 
allow you to match on a range of versions (though Semantic Versioning is 
encouraged).

- Packages have vendor prefixes (like rust/flate or 
leafstorm/mycoollibrary) to help avoid name conflicts and allow for 
forking, but these aren't linked to the way packages are retrieved.

- There's a central repository, but it's really easy to add random git 
repositories to the composer.json, or to create your own repositories 
for internal use.

- It automatically generates a lock file that allows you to reinstall 
exactly the same versions of the dependencies across machines.

- Everything is installed per-project, so no conflicts across projects. 
(Though the new rustpkg may want to not do this exactly because of 
compile times.)

If I had more time and more Rust experience, I would be interested in 
implementing a Composer-like package manager for Rust. Unfortunately I 
have little of both. :-(
-- 
Thanks,
Matthew Frazier
http://leafstorm.us


More information about the Rust-dev mailing list