Skip to content

v0.4.0

Choose a tag to compare

@devlooped-bot devlooped-bot released this 15 Aug 05:49
· 13 commits to main since this release

Skip the NuGet feed when tool@version is already cached, so a warm native tool starts in tens of milliseconds.

Cached exact versions

Like dnx's GetBestPackageVersionAsync, an exact version is the answer:

ndnx stop@2.1.0 -- --help
ndnx stop --version 2.1.0 -- --help

If that package is already in the global packages folder, ndnx does not query the feed. RID-specific hops (stopstop.win-x64) use the same installed check.

Unspecified version or @* still resolve latest from the feed, same as dnx.

Startup time

Cold start is download + launch. Cached start is launch only, with an exact version so neither runner has to resolve latest.

Tool Runner Cold (download → start) Cached (start)
stop@2.1.0 (native AOT) dnx 5.6 s 563 ms
ndnx 5.6 s 33 ms
dotnetsay@1.0.0 (framework-dependent) dnx 4.6 s 585 ms
ndnx 4.8 s 51 ms

win-x64, .NET SDK 11.0.100-preview.6, isolated NUGET_PACKAGES, source https://pkg.kzu.app/index.json. Cold is the median of 3 empty-cache runs. Cached is the median of 10 runs after one seed.

Gzip v3 feeds

HttpClient now enables automatic decompression, so gzip-compressed NuGet v3 indexes (including static Sleet feeds such as https://pkg.kzu.app/index.json) parse instead of failing with 0x1F is an invalid start of a value.

Docs

The readme now shows side-by-side dnx / ndnx / dotnet dnx examples, shared cache and flags, and the timings above.

Sponsors

The following sponsors made this release possible: @clarius, @MFB-Technologies-Inc, @sandrock, @drivenet, @Keflon, @tbolon, @kfrancis, @rbnswartz, @jfoshee, @Mrxx99, @eajhnsn1, @Jonathan-Hickey, @KenBonny, @SimonCropp, @agileworks-eu, @arsdragonfly, @vezel-dev, @ChilliCream, @4OTC, @DominicSchell, @adalon, @torutek, @mccaffers, @SeikaLogiciel, @wizardness, @eska-gmbh, @geodata-no.

Thanks 💜