Swift 1.0 stable APIs + Rust 1.95 language features — Dev Signal
Dev Signal/Archive/Swift 1.0 stable APIs + Rust 1.95 language features
Swift 1.0 stable APIs + Rust 1.95 language features
Share:
Tool of the Week
Swift System Metrics hits 1.0 with stable API
Drop-in process monitoring for Swift services: CPU, memory, file descriptors collected via backend-agnostic metrics API, integrates with Prometheus and OpenTelemetry.
Eliminates custom instrumentation boilerplate for Swift backends. Enables production observability from first deploy without vendor lock-in or complex setup.
Replaces hand-rolled /proc parsing and custom metric collectors. Requires Swift 5.9+, Swift Metrics ecosystem, and ServiceLifecycle for lifecycle handling. Ready now—API is stable and shipping with Grafana dashboard template included.
“API-stable public interface”
“collects process-level system metrics like CPU utilization time and memory usage”
“Swift System Metrics runs on both Linux and macOS, providing a common API across platforms”
“can integrate Swift System Metrics into your service in just a few lines of code”
swiftobservabilitymetricsmonitoringotel
Dev Signal
Get issues like this in your inbox — free, 3x a week.
Quick Signals
Deno 2.7 stabilizes Temporal, adds Windows ARM builds
Temporal API moves out of unstable, Windows ARM gets native support, and subprocess spawning gets simpler APIs—but spawn functions still unstable.
Temporal is now production-ready without flags, ARM Windows developers eliminate emulation overhead, and Node.js compatibility fixes (worker threads, child_process, zlib) make migrating Node projects to Deno more viable.
Temporal replaces hand-rolled date arithmetic and timezone logic; spawn() functions replace Deno.Command() for simple cases but remain unstable—try now for dates, wait on spawn APIs until stabilized. Requires deno upgrade to 2.7.
“The Temporal API is now stable in Deno. The --unstable-temporal flag is no longer required.”
“Deno now provides official builds for Windows on ARM (aarch64-pc-windows-msvc)”
“The new Deno.spawn(), Deno.spawnAndWait(), and Deno.spawnAndWaitSync() functions are convenient shorthands for the existing Deno.Command API”
“These new APIs are currently marked as unstable, meaning that they may evolve over time until formally stabilised in the runtime.”
denotemporal-apinodejs-compatwindows-armrelease
add-mcp CLI installs MCP servers across all agents
Single command configures MCP servers for Claude Code, Cursor, VS Code, Codex, and others by auto-detecting your setup and writing config files.
Eliminates manual per-tool MCP configuration across fragmented editors and agents. Developers go from editing multiple config files to running `npx add-mcp` once per MCP server.
Enjoying Dev Signal? Get every issue in your inbox.
Free forever · 3 issues a week · One-click unsubscribe
3 issues a week · Free forever · 4,200+ developers
Replaces manual edits to Claude config, Cursor settings, VS Code extensions, and other agent configs. Requires supported agent already installed; requires MCP server URL or npm package name. Ready now—v1 released with 9 agents supported. Worth adopting immediately if you manage MCPs across multiple tools.
“add-mcp detects which coding agents and editors you're using and writes the correct configuration files for you”
“Every editor and coding agent uses its own config files, paths, and formats, and it doesn't look like that unification is coming anytime soon”
“Supports the following installation targets: claude-code, claude-desktop, codex, cursor, gemini-cli, goose, opencode, vscode, zed”
Rust stabilizes zeroed allocation and iterator fixes
New `Box::new_zeroed`, `Rc::new_zeroed`, `Arc::new_zeroed` APIs and specialized `Iterator::eq` for `TrustedLen` improve allocation patterns and comparison performance; `iter::Repeat::last` now panics instead of looping infinitely.
Zeroed allocations are now first-class without unsafe boilerplate; iterator specializations reduce unnecessary work for known-length iterators; fixing infinite loop in `Repeat::last` prevents silent hangs in production code.
Drop in replacement for manual zeroing via `vec![0; n]` or unsafe patterns. Requires Rust update to latest stable. Worth adopting immediately—these are additive stabilizations with no migration cost. The `Repeat::last` panic is breaking but fixes a correctness trap.
“Specialize Iterator::eq{_by} for TrustedLen iterators”
“iter::Repeat::last and count will now panic, rather than looping infinitely”
ruststdliballocationsiteratorsstabilization
Rust 1.95 stabilizes cfg_select and if-let guards
cfg_select! macro replaces cfg-if crate with compile-time config matching; if-let guards extend let chains into match expressions for pattern-based conditionals.
Eliminates external dependency for conditional compilation and reduces boilerplate in match expressions with combined pattern matching and guards. Workflow friction drops when config logic stays in stdlib.
cfg_select! replaces cfg-if; no dependencies required. if-let guards require no migration—opt-in syntax in existing match expressions. Ship now: both are stable and backward-compatible.
“cfg_select! macro that acts roughly similar to a compile-time match on cfgs”
“This fulfills the same purpose as the popular cfg-if crate, although with a different syntax”
“Rust 1.95 brings that capability into match expressions, allowing for conditionals based on pattern matching”
“the compiler will not currently consider the patterns matched in if let guards as part of the exhaustiveness evaluation of the overall match”
ruststdlibcfg-selectpattern-matchingrelease
Swift Configuration 1.0 unifies config sources
Type-safe, provider-agnostic configuration API eliminates scattered parsing logic by enforcing a single read pattern across multiple sources with clear precedence.
Removes coupling between application code and configuration sources, letting libraries accept config without dictating where it comes from. Enables hot-reload, secret redaction, and access logging without refactoring existing read calls.
Replaces ad-hoc env/file/arg parsing scattered across your codebase. Requires adding swift-configuration package and refactoring config access to use ConfigReader. Production-ready now—40+ PRs merged since October, API stable at 1.0. Worth adopting immediately for server apps and CLI tools.
“With the release of Swift Configuration 1.0, the library is production-ready to serve as a common API for reading configuration across the Swift ecosystem.”
“Since the initial release announcement in October 2025 over 40 pull requests have been merged, and its API stability provides a foundation to unlock community integrations.”
“This separation unlocks something powerful: libraries can now accept configuration without dictating the source, making them genuinely composable across different deployment environments.”
“Providers are checked in the order you specify: earlier providers override later ones, followed by your fallback defaults.”