@haitchfive<p>Since some have asked why I'd bring up Rust when talking about <em>ual</em>, I want to clarify why I think this is relevant — especially for Rust developers interested in ownership, borrowing, generics, embedded systems, and language design. </p><p>Here are the key reasons why <em>ual</em> should probably be of interest to the Rust community, or at the very least to Rust leaders and Rust designers, even if that's not immediately obvious to new Rust developers: </p> <p><strong>1. An Explicit Alternative to Ownership and Borrowing (No Lifetimes Needed)</strong> </p><ul><li>ual proposes an ownership and borrowing system that is <strong>fully explicit</strong> and doesn't rely on lifetimes.<br></li><li>Ownership is treated as a <strong>relationship between containers and values</strong>, not something inferred by the compiler.<br></li><li>Borrowing is <strong>explicit and scoped in code</strong>, so there’s <strong>no hidden inference</strong> or guessing what the borrow checker wants.<br></li><li>You can <strong>see exactly when a value moves, is borrowed, or is returned</strong>, instead of it being deduced from subtle rules.<br></li><li>For Rust developers who are used to working around lifetime issues or fighting the borrow checker, ual offers <strong>a visible, container-based model that may be simpler in some contexts</strong>.<br></li></ul> <p><strong>2. Container-Centric Genericity as a Lightweight Alternative to Traits</strong> </p><ul><li>Rust’s trait system is powerful but can be <strong>complex and heavy</strong>, especially for embedded systems or low-overhead code.<br></li><li>ual focuses on <strong>generic algorithms operating on containers (stacks)</strong> rather than individual type parameters.<br></li><li>It uses <strong>explicit type-switching and <code>bring</code> operations</strong> instead of abstract trait bounds and impls.<br></li><li>This allows <strong>reusable, type-safe algorithms</strong> without needing to engage with the full machinery of Rust's generics.<br></li><li>For embedded and systems developers who often find traits overkill for simple cases, this is <strong>a fresh alternative to achieve reuse safely and explicitly</strong>.<br></li></ul> <p><strong>3. Borrowing Slices, Made Explicit and Visual</strong> </p><ul><li>Rust slices (<code>&[T]</code>, <code>&mut [T]</code>) are powerful but frequently cause <strong>borrowing and lifetime headaches</strong> in complex code.<br></li><li>ual introduces <strong>borrowed stack segments</strong>, which are fully explicit in code and scope:<br><ul><li>You <strong>clearly mark and control</strong> what part of a container is borrowed.<br></li><li>You <strong>explicitly see</strong> what’s borrowed and for how long — no guesswork, no inference.<br></li><li>Mutability and read-only access are <strong>controlled through syntax and scopes</strong>, avoiding subtle conflicts.<br></li></ul></li><li>This is <strong>directly relevant to Rust devs</strong> frustrated by slice-related borrow checker issues, offering <strong>a more visual and controlled borrowing model</strong>.<br></li></ul> <p><strong>4. A Philosophical Cousin to Rust — Explicitness, Safety, and Responsibility</strong> </p><ul><li>Like Rust, ual is concerned with <strong>memory safety, resource correctness, and predictable control of side effects</strong>.<br></li><li>ual emphasizes <strong>making everything explicit</strong> — no hidden drops, no implicit borrowing, no magic.<br></li><li>Safety is treated as an <strong>ethical responsibility</strong>, not just a technical constraint, which aligns with Rust’s philosophy but makes the <strong>mechanics visible and teachable</strong>.<br></li><li>If you care about Rust’s focus on <strong>preventing errors by design and explicit resource handling</strong>, ual explores <strong>similar goals through a different lens</strong>.<br></li></ul> <p><strong>5. Embedded Systems Focus — Shared Goals, Different Answers</strong> </p><ul><li>Rust has a strong embedded systems community focused on <strong>safe, low-level control</strong> and <strong>resource-constrained environments</strong>.<br></li><li>ual is designed from the start for <strong>embedded and resource-conscious systems</strong>, with:<br><ul><li>Explicit stack management for <strong>predictable resource use</strong>.<br></li><li>Minimal runtime, aligned with <strong>no_std-like constraints</strong>.<br></li><li>Safety guarantees without introducing heavy compile-time machinery that can be difficult in embedded contexts.<br></li></ul></li></ul><p><strong>- For embedded Rust developers pushing against compile-time limits or seeking alternatives for resource handling, ual may <strong>offer new ways of thinking about ownership and control</strong>. </strong></p><p><strong>B... But... What the $%·$% does ual have to do with Rust?</strong> </p><p>Because <em>ual</em> aims to address <strong>some of the same fundamental problems Rust does</strong> — ownership, borrowing, generics, resource safety, embedded programming — but <strong>through a model based on explicit containers and stack flows</strong>. </p><p>For Rust developers who: </p><ul><li>Care about <strong>ownership and borrowing</strong> but are curious about alternatives to lifetimes.<br></li><li>Have struggled with <strong>complex traits and generics</strong>, especially in embedded contexts.<br></li><li>Want to explore <strong>explicit slice/borrowing models</strong> that avoid hidden inference.<br></li><li>Value <strong>explicitness, responsibility, and safety</strong> in system design.<br></li><li>Work in <strong>embedded systems</strong> and care about <strong>resource efficiency and control</strong>.<br></li></ul><p>— ual is <strong>highly relevant</strong>, even if its design is very different. </p><p>If any Rustaceans are interested in discussing these ideas — how they compare, where they overlap, and where they differ — I’m happy to talk!</p><p>I am: h (AT) ual.fi</p><p><a href="https://oldbytes.space/tags/ual" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>ual</span></a> <a href="https://oldbytes.space/tags/rustlang" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>rustlang</span></a></p>