I'm pleased to announce the release of the first stable version of the DUB package manager. Stable in this case means that the API, the command line interface and the package recipe format will only receive fully backwards compatible changes and additions for a while.

This release also adds support for single-file packages, which can be used for conveniently writing small scripts and applications. It supports a shebang line, so that directly executing the script on Posix systems also works (using chmod +x):

#!/usr/bin/env dub
/+ dub.sdl:
    name "colortest"
    dependency "color" version="~>0.0.3"

void main()
    import std.stdio : writefln;
    import std.experimental.color.conv;
    import std.experimental.color.hsx;
    import std.experimental.color.rgb;
    auto yellow = RGB!("rgb", float)(1.0, 1.0, 0.0);
    writefln("Yellow in HSV: %s", yellow.convertColor!(HSV!()));

Instead of a separate file, the contents of the package recipe file go into a specially formatted comment within the source code itself. The comment must be the first token in the D file (apart from the optional shebang line) and must be of the form /+ dub.(json/sdl): ... +/ where "..." is a place holder for the actual recipe contents.

The main (high-level) priority for the upcoming versions will be adding C family language build support (starting with C/C++ and ObjC). There is a draft for how such support might look like, for anyone interested in discussing this in prior: https://github.com/dlang/dub/wiki/DEP5

BTW, we now have almost 800 public packages in the registry, covering more and more application areas. The growth is not exponential, but very steady.

Full change log: