ib-update
July 4, 2026 · View on GitHub
- Rust: ib-update-rs
- .NET: Ib.Update.NET
- C++: ib-update-cpp
ib-update-rs
A lightweight library for software update.
Features:
- Lightweight
- Based on
nyquest, can use either platform-native HTTP client orreqwest. - 333 KiB on
x86_64-pc-windows-msvcwith HTTPS update checking.
- Based on
- Supported update sources:
- GitHub Releases
- Semantic Versioning handling.
- Optional pre-release update.
- Provide both sync/async APIs.
- Optional support for retrying multiple servers under unstable networks.
Usage:
// cargo add ib-update --features blocking
// cargo add nyquest-preset --features blocking
fn main() {
nyquest_preset::register();
let info = ib_update::github::UpdateConfig::builder()
.owner("owner")
.repo("repo")
.current_version(env!("CARGO_PKG_VERSION"))
.build_blocking()
.check()
.expect("failed to check for updates");
if info.has_update() {
println!("New version {} is available!", info.latest().tag);
}
}
Ib.Update.NET
Usage:
using System;
using Ib.Update;
try
{
var updater = new GitHubUpdater("Chaoses-Ib", "IbEverythingExt", "v0.1");
var release = await updater.CheckForNewRelease();
if (release is null)
{
Console.WriteLine("No new release");
return;
}
Console.WriteLine($"{release.TagName}, published at {release.PublishedAt}");
}
catch (Octokit.ApiException e)
{
Console.WriteLine(e.Message);
}
ib-update-cpp
Usage:
#include <IbUpdate/GitHubUpdater.hpp>
#include <iostream>
int main() {
try {
GitHubUpdater updater{ "Chaoses-Ib", "IbEverythingExt", "v0.1" };
YAML::Node release = updater.check_for_new_release();
if (release.IsNull()) {
std::cout << "No new release\n";
return;
}
std::cout << release["tag_name"].as<std::string>()
<< ", published at " << release["published_at"].as<std::string>()
<< '\n';
}
catch (std::runtime_error& e) {
std::cout << e.what() << '\n';
}
}