UpdateChecker API ​
The UpdateChecker module provides functionality to check for new releases of the library and manage version information.
Overview ​
This module runs a background check against the GitHub API to see if a newer version of Logly is available. It is enabled by default in Config but can be disabled.
Quick Reference: Method Aliases ​
| Full Method | Alias(es) | Description |
|---|---|---|
setEnabled() | enable() | Enable update checking |
isEnabled() | is_enabled() | Check if update checking is enabled |
resetState() | reset(), clear_state() | Reset update checker state |
checkForUpdates() | check(), update() | Check for available updates |
Types ​
Version ​
Version information structure.
zig
pub const Version = struct {
major: u8,
minor: u8,
patch: u8,
pre_release: ?[]const u8,
build_metadata: ?[]const u8,
pub fn toString(self: Version, allocator: Allocator) ![]u8;
pub fn compare(self: Version, other: Version) i8;
pub fn isNewerThan(self: Version, other: Version) bool;
};UpdateInfo ​
Information about an available update.
zig
pub const UpdateInfo = struct {
current_version: Version,
latest_version: Version,
release_url: []const u8,
release_notes: ?[]const u8,
published_at: ?i64,
is_prerelease: bool,
};UpdateCheckerStats ​
Statistics for update checker operations.
zig
pub const UpdateCheckerStats = struct {
checks_performed: std.atomic.Value(u64),
updates_found: std.atomic.Value(u64),
check_errors: std.atomic.Value(u64),
last_check_timestamp: std.atomic.Value(i64),
};Functions ​
checkForUpdates(allocator: std.mem.Allocator, global_console_display: bool) ?std.Thread ​
Checks for updates in a background thread. Runs only once per process lifecycle.
- Returns: A thread handle if the check was started,
nullotherwise. - Behavior:
- Fetches the latest release tag from GitHub.
- Compares it with the current version.
- Logs an INFO message if a newer version is found.
- Fails silently on network errors.
getCurrentVersion() Version ​
Returns the current version of the library.
getLatestVersion(allocator: std.mem.Allocator) !Version ​
Fetches the latest version from GitHub API synchronously.
isUpdateAvailable(allocator: std.mem.Allocator) !bool ​
Returns true if a newer version is available.
getUpdateInfo(allocator: std.mem.Allocator) !?UpdateInfo ​
Returns detailed information about available update, or null if up-to-date.
Configuration ​
Controlled via Config.check_for_updates.
zig
var config = logly.Config.default();
config.check_for_updates = false; // Disable update checkAliases ​
| Alias | Method |
|---|---|
check | checkForUpdates |
version | getCurrentVersion |
latest | getLatestVersion |
hasUpdate | isUpdateAvailable |
Example ​
zig
const logly = @import("logly");
const UpdateChecker = logly.UpdateChecker;
pub fn main() !void {
var gpa = std.heap.GeneralPurposeAllocator(.{}){};
defer _ = gpa.deinit();
const allocator = gpa.allocator();
// Check current version
const current = UpdateChecker.getCurrentVersion();
std.debug.print("Current version: {d}.{d}.{d}\n", .{
current.major, current.minor, current.patch
});
// Check for updates
if (try UpdateChecker.isUpdateAvailable(allocator)) {
if (try UpdateChecker.getUpdateInfo(allocator)) |info| {
defer allocator.free(info.release_url);
std.debug.print("New version available: {d}.{d}.{d}\n", .{
info.latest_version.major,
info.latest_version.minor,
info.latest_version.patch,
});
std.debug.print("Download: {s}\n", .{info.release_url});
}
}
// Or use background check (default behavior)
if (UpdateChecker.checkForUpdates(allocator)) |thread| {
thread.detach(); // Let it run in background
}
}Configuration Options ​
| Option | Type | Default | Description |
|---|---|---|---|
check_for_updates | bool | true | Enable automatic update checking |
update_check_interval_hours | u64 | 24 | Hours between checks |
show_update_notification | bool | true | Show notification when update available |
Recent Changes ​
v0.1.7 ​
- Updated examples and version references to the latest release (
0.1.7).
v0.1.6 ​
- Fixed a telemetry compilation issue: Resolved a compile-time error in the telemetry module (OTLP exporter) by removing an unnecessary discard of the
selfparameter inwriteOtlpSpan. This ensures the telemetry feature compiles cleanly across targets and prevents build failures when telemetry is enabled.
See Also ​
- Update Checker Guide - Usage patterns
- Version API - Version information
- Configuration Guide - Full configuration options
