<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel>
<title>Hew Engineering Journal</title><link>https://hew.sh/blog</link><description>Language design, engineering articles and releases from Hew.</description><language>en</language>
<atom:link href="https://hew.sh/rss.xml" rel="self" type="application/rss+xml"/>
<item><title>Hew 0.6.2: safer values, steadier services</title><link>https://hew.sh/blog/2026/10/release-v062</link><guid isPermaLink="true">https://hew.sh/blog/2026/10/release-v062</guid><description>Edit parsed configuration without changing its source value, then see how Hew 0.6.2 carries the same actor reference across local and remote services.</description><pubDate>Wed, 21 Oct 2026 01:48:41 GMT</pubDate></item>
<item><title>Hew 0.6.1: typed configuration and confined services</title><link>https://hew.sh/blog/2026/10/release-v061</link><guid isPermaLink="true">https://hew.sh/blog/2026/10/release-v061</guid><description>Check deployment settings at build time, reuse generic closures and give an actor access to one directory.</description><pubDate>Fri, 16 Oct 2026 18:00:00 GMT</pubDate></item>
<item><title>A tour of Hew 0.6: files, concurrent work and services</title><link>https://hew.sh/blog/2026/10/hew-06-language-tour</link><guid isPermaLink="true">https://hew.sh/blog/2026/10/hew-06-language-tour</guid><description>Start with a small file tool, then follow the language features that let it grow into a service with owned resources, workers and typed protocols.</description><pubDate>Fri, 16 Oct 2026 15:00:00 GMT</pubDate></item>
<item><title>Hew 0.6.0: concurrent work with ordinary calls</title><link>https://hew.sh/blog/2026/10/release-v060</link><guid isPermaLink="true">https://hew.sh/blog/2026/10/release-v060</guid><description>Build a small file tool with fork, await and typed failures, then see what changes when work suspends or is cancelled.</description><pubDate>Wed, 14 Oct 2026 13:00:00 GMT</pubDate></item>
<item><title>Closing the Gaps: std Imports Compile Native, HashMap Indexing, and Idiomatic Examples</title><link>https://hew.sh/blog/2026/06/2026-06-02-stdlib-imports-and-the-shippable-surface</link><guid isPermaLink="true">https://hew.sh/blog/2026/06/2026-06-02-stdlib-imports-and-the-shippable-surface</guid><description>A run of fixes that make the v0.5 surface something a real program can lean on — std.fs and std.encoding.json reaching native codegen, m[k] indexing on HashMap, by-value generic methods, and a language guide so the examples actually model idiomatic Hew.</description><pubDate>Tue, 02 Jun 2026 10:00:00 GMT</pubDate></item>
<item><title>Two ways to be generic: monomorphisation, and the day abstract types lowered without one</title><link>https://hew.sh/blog/2026/05/deepdive-generics-lowering-mono-to-witness</link><guid isPermaLink="true">https://hew.sh/blog/2026/05/deepdive-generics-lowering-mono-to-witness</guid><description>How Hew lowers generics, told as the evolution it actually was — from stamping out one mangled LLVM function per instantiation, through unifying dispatch under a single call authority, to representing an abstract type parameter directly in MIR so a generic body can lower once even when its type is never made concrete.</description><pubDate>Sat, 30 May 2026 16:00:00 GMT</pubDate></item>
<item><title>Abstract type parameters with value witnesses, and a receive ABI that can borrow</title><link>https://hew.sh/blog/2026/05/2026-05-30-value-witness-generics-and-borrowing-receive</link><guid isPermaLink="true">https://hew.sh/blog/2026/05/2026-05-30-value-witness-generics-and-borrowing-receive</guid><description>Generics that lower without a concrete type yet, an actor receive path that takes a non-owning borrow of the message, and the smaller control-flow pieces — const globals, bare loop, break/continue — I&apos;d been putting off.</description><pubDate>Sat, 30 May 2026 10:00:00 GMT</pubDate></item>
<item><title>No GC, no double-free: ownership, copy-on-write strings, and fail-loud traps</title><link>https://hew.sh/blog/2026/05/deepdive-ownership-cow-strings-and-traps</link><guid isPermaLink="true">https://hew.sh/blog/2026/05/deepdive-ownership-cow-strings-and-traps</guid><description>How Hew&apos;s memory model actually works underneath — single ownership with compiler-inserted drops, strings as copy-on-write refcounted values over a header-aware allocator, and arithmetic that traps with distinct exit codes instead of wrapping silently.</description><pubDate>Fri, 29 May 2026 10:00:00 GMT</pubDate></item>
<item><title>String Becomes Copy-on-Write and the Last Legacy Dispatch Path Is Retired</title><link>https://hew.sh/blog/2026/05/2026-05-28-29-cow-strings-and-collection-cutover</link><guid isPermaLink="true">https://hew.sh/blog/2026/05/2026-05-28-29-cow-strings-and-collection-cutover</guid><description>Two days on ownership — retiring the old HashMap/HashSet dual-dispatch, turning `string` into a copy-on-write refcounted value, and adding `&amp;T` borrow markers that fail closed when you try to clone the wrong way.</description><pubDate>Thu, 28 May 2026 10:00:00 GMT</pubDate></item>
<item><title>Collections get a real ABI, closures get capture inference, and dispatch goes through one authority</title><link>https://hew.sh/blog/2026/05/2026-05-26-27-layout-witnesses-closures-and-resolved-calls</link><guid isPermaLink="true">https://hew.sh/blog/2026/05/2026-05-26-27-layout-witnesses-closures-and-resolved-calls</guid><description>Two days on the substrate under generic data structures — what a layout descriptor actually carries, why the closure checker now infers move vs borrow, and the moment I noticed three different pieces of the compiler each had their own opinion about how a method call lowers.</description><pubDate>Tue, 26 May 2026 18:00:00 GMT</pubDate></item>
<item><title>Hardening the Seams Instead of Adding Surface</title><link>https://hew.sh/blog/2026/05/2026-05-24-25-fail-closed-and-the-check-gates</link><guid isPermaLink="true">https://hew.sh/blog/2026/05/2026-05-24-25-fail-closed-and-the-check-gates</guid><description>Two days of making the compiler refuse to lie — fail-closed gates that reject unsupported shapes at compile time, a memory-safety sweep through the runtime, and a `hew check` that finally runs the real pipeline.</description><pubDate>Sun, 24 May 2026 10:00:00 GMT</pubDate></item>
<item><title>Talking between nodes: the CBOR wire envelope and a SWIM cluster that gossips</title><link>https://hew.sh/blog/2026/05/deepdive-distribution-cbor-and-swim</link><guid isPermaLink="true">https://hew.sh/blog/2026/05/deepdive-distribution-cbor-and-swim</guid><description>The distributed substrate for v0.5 — replacing a hand-rolled binary wire format with a CBOR envelope described by a CDDL schema, deleting 2,498 lines of wire.rs, and giving the cluster a phi-accrual failure detector that adapts instead of a fixed timeout. Plus cross-node sends that stay type-checked.</description><pubDate>Sat, 23 May 2026 10:00:00 GMT</pubDate></item>
<item><title>Generators get a state machine, the cluster learns to gossip, and the wire format flips to CBOR</title><link>https://hew.sh/blog/2026/05/2026-05-22-23-generators-the-cluster-and-the-wire</link><guid isPermaLink="true">https://hew.sh/blog/2026/05/2026-05-22-23-generators-the-cluster-and-the-wire</guid><description>Two dense days grouped together — generator lowering finally has a state record and cross-yield liveness, the SWIM detector goes phi-accrual, and I delete the 2498-line hand-built wire format in favour of a CBOR envelope with a CDDL schema.</description><pubDate>Fri, 22 May 2026 18:00:00 GMT</pubDate></item>
<item><title>State as a type: how machine declarations become tagged-union dispatch</title><link>https://hew.sh/blog/2026/05/deepdive-machines-state-as-a-type</link><guid isPermaLink="true">https://hew.sh/blog/2026/05/deepdive-machines-state-as-a-type</guid><description>The machine construct in detail — what the front end checks before a single instruction is emitted, how a state declaration becomes a tagged-union LLVM layout, and why I&apos;d rather reject an illegal transition at compile time than catch it at runtime. Includes the parts that don&apos;t fully work yet.</description><pubDate>Fri, 22 May 2026 10:00:00 GMT</pubDate></item>
<item><title>Generic Enums End-to-End and the Day for and while Finally Lower</title><link>https://hew.sh/blog/2026/05/2026-05-21-generic-enums-and-the-loops-that-drive-them</link><guid isPermaLink="true">https://hew.sh/blog/2026/05/2026-05-21-generic-enums-and-the-loops-that-drive-them</guid><description>Generic enum values now make it all the way to LLVM, so I get to delete the not-yet-supported guard that&apos;s been standing in for them. Match over payload-bearing variants works, and for and while loops lower to real control flow for the first time.</description><pubDate>Thu, 21 May 2026 22:00:00 GMT</pubDate></item>
<item><title>State Machines Reach Codegen and Closures Become First-Class Values</title><link>https://hew.sh/blog/2026/05/2026-05-20-machines-lower-and-pipes-become-expressions</link><guid isPermaLink="true">https://hew.sh/blog/2026/05/2026-05-20-machines-lower-and-pipes-become-expressions</guid><description>Machine declarations used to type-check and then stop — no runtime behaviour. Now they lower all the way through to native code. Plus pipe-form closures, a canonical pointer spelling, and a TCP-as-Stream bridge.</description><pubDate>Wed, 20 May 2026 10:00:00 GMT</pubDate></item>
<item><title>Supervisors That Wire Themselves and Crash Hooks With Real Trap Codes</title><link>https://hew.sh/blog/2026/05/2026-05-19-supervisors-and-the-failure-model</link><guid isPermaLink="true">https://hew.sh/blog/2026/05/2026-05-19-supervisors-and-the-failure-model</guid><description>A supervisor declaration now lowers to a spawn-and-wire bootstrap that returns a typed pid, and a crash hook can finally see the trap code that killed a child. The bottom half is real; the top half is where I am today. Underneath, int and uint are gone and module-qualified calls like math.sqrt resolve.</description><pubDate>Tue, 19 May 2026 10:00:00 GMT</pubDate></item>
<item><title>Sends are method calls, crashes carry codes: the actor and supervision model</title><link>https://hew.sh/blog/2026/05/deepdive-actor-supervision-model</link><guid isPermaLink="true">https://hew.sh/blog/2026/05/deepdive-actor-supervision-model</guid><description>A walk down the actor stack in v0.5. Why I deleted the `&lt;-` send operator, how a method call lowers to spawn/send/ask through an execution context, and how supervision fires `#[on(crash)]` with the real trap code.</description><pubDate>Tue, 19 May 2026 10:00:00 GMT</pubDate></item>
<item><title>WASM parity for free, almost: four targets from one MIR and the seams that weren&apos;t free</title><link>https://hew.sh/blog/2026/05/deepdive-wasm-parity-from-one-mir</link><guid isPermaLink="true">https://hew.sh/blog/2026/05/deepdive-wasm-parity-from-one-mir</guid><description>Native and wasm32 share the same MIR and the same textual LLVM IR — they only diverge at the TargetMachine. That makes most of WASM support genuinely free. This is about the parts that weren&apos;t — traps, blocking recv, timers, and a use-after-free that only exists on WASM.</description><pubDate>Tue, 19 May 2026 10:00:00 GMT</pubDate></item>
<item><title>From Parse Tree to Running Actor</title><link>https://hew.sh/blog/2026/05/2026-05-18-actors-that-actually-run</link><guid isPermaLink="true">https://hew.sh/blog/2026/05/2026-05-18-actors-that-actually-run</guid><description>Actors stopped being syntax today. I wired actor method calls down to spawn/send/ask, made init and the on(start)/on(stop) hooks fire at the right moments, and threaded an execution context through the whole thing so the reply channel has somewhere to live.</description><pubDate>Mon, 18 May 2026 10:00:00 GMT</pubDate></item>
<item><title>Retiring the C++ Backend and Teaching the Compiler to Monomorphise</title><link>https://hew.sh/blog/2026/05/2026-05-17-one-backend-and-the-shape-of-generics</link><guid isPermaLink="true">https://hew.sh/blog/2026/05/2026-05-17-one-backend-and-the-shape-of-generics</guid><description>The day the pipeline became Rust top to bottom — over fifteen hundred C++/MLIR files deleted, and generics finally grew a spine through the IR ladder.</description><pubDate>Sun, 17 May 2026 20:00:00 GMT</pubDate></item>
<item><title>Decide in MIR, carry in nothing: why we deleted the MLIR backend before shipping a binary</title><link>https://hew.sh/blog/2026/05/deepdive-why-we-replaced-mlir-with-llvm-ir</link><guid isPermaLink="true">https://hew.sh/blog/2026/05/deepdive-why-we-replaced-mlir-with-llvm-ir</guid><description>The backend cutover for v0.5 — the borrowed-String double-free that took six revisions to kill, why each revision grew the C++ walker registry, and how I convinced myself it was safe to delete a 1,568-file MLIR subtree and lower straight from MIR to LLVM IR.</description><pubDate>Sun, 17 May 2026 10:00:00 GMT</pubDate></item>
<item><title>Making integers honest and making failure loud: widths, records, and trap-on-overflow</title><link>https://hew.sh/blog/2026/05/2026-05-16-numbers-records-and-the-trap-floor</link><guid isPermaLink="true">https://hew.sh/blog/2026/05/2026-05-16-numbers-records-and-the-trap-floor</guid><description>Today the value layer stops being vague. I gave integers real widths and platform-sized isize/usize, wired records all the way through with auto-derived markers, and made arithmetic that overflows trap instead of silently lying.</description><pubDate>Sat, 16 May 2026 18:30:00 GMT</pubDate></item>
<item><title>Deleting the Send Operator to Make the Actor Model Honest</title><link>https://hew.sh/blog/2026/05/2026-05-15-the-surface-cutover</link><guid isPermaLink="true">https://hew.sh/blog/2026/05/2026-05-15-the-surface-cutover</guid><description>First day of the v0.5 rewrite. I tore out the `&lt;-` send operator and the spawn-lambda form, and spent the rest of the day deciding what the actor and machine surface should look like before a single line of it lowers to a binary.</description><pubDate>Fri, 15 May 2026 18:00:00 GMT</pubDate></item>
<item><title>Launching Hew</title><link>https://hew.sh/blog/2026/05/launching-hew</link><guid isPermaLink="true">https://hew.sh/blog/2026/05/launching-hew</guid><description>Hew puts actor state, supervision, protocol shape, and cleanup into the compiler instead of scattering them across conventions.</description><pubDate>Sun, 10 May 2026 12:00:00 GMT</pubDate></item>
<item><title>The Double-Free and the Sized Integers</title><link>https://hew.sh/blog/2026/05/v040-design-decisions</link><guid isPermaLink="true">https://hew.sh/blog/2026/05/v040-design-decisions</guid><description>Two breaking changes in v0.4.0 that were really just cleaning up things I should have gotten right earlier — explicit teardown for resource types, and int uniformity in the stdlib.</description><pubDate>Thu, 07 May 2026 12:00:00 GMT</pubDate></item>
<item><title>Releasing v0.4.0 — LSP goto-definition, stdlib fixes, and WASM coverage</title><link>https://hew.sh/blog/2026/05/release-v040</link><guid isPermaLink="true">https://hew.sh/blog/2026/05/release-v040</guid><description>LSP transitive goto-definition, module search-path documentation, eval WASM coverage, URL percent-encoding, and a binary-safe fs.try_read_bytes.</description><pubDate>Fri, 01 May 2026 12:00:00 GMT</pubDate></item>
<item><title>The JIT REPL Can Survive a Crash Now</title><link>https://hew.sh/blog/2026/04/jit-repl-crash-survivability</link><guid isPermaLink="true">https://hew.sh/blog/2026/04/jit-repl-crash-survivability</guid><description>The in-process JIT path was fast but had no floor — any bug in generated code killed the session. Here&apos;s what we did about it.</description><pubDate>Wed, 29 Apr 2026 10:00:00 GMT</pubDate></item>
<item><title>Comments Are Not Optional</title><link>https://hew.sh/blog/2026/04/comments-are-not-optional</link><guid isPermaLink="true">https://hew.sh/blog/2026/04/comments-are-not-optional</guid><description>The formatter was silently dropping inline comments — not crashing, not warning, just eating them. Seven variants of the same missing flush call, and how wiring LSP formatting shook them all out.</description><pubDate>Sun, 26 Apr 2026 10:00:00 GMT</pubDate></item>
<item><title>Hardening the Standard Library&apos;s Error Paths</title><link>https://hew.sh/blog/2026/04/stdlib-error-paths</link><guid isPermaLink="true">https://hew.sh/blog/2026/04/stdlib-error-paths</guid><description>After making the compiler fail-closed, the same scrutiny hit the stdlib — thirty commits fixing sentinel values that lied, parsers with no depth limits, and a mutex that silently swallowed messages.</description><pubDate>Sat, 18 Apr 2026 10:00:00 GMT</pubDate></item>
<item><title>Making the Compiler Fail Closed</title><link>https://hew.sh/blog/2026/04/making-the-compiler-fail-closed</link><guid isPermaLink="true">https://hew.sh/blog/2026/04/making-the-compiler-fail-closed</guid><description>The v0.3.0 codegen hardening in detail — what the AST fallback was hiding, how it hid it, and why removing it uncovered a range loop signedness bug I had no idea existed.</description><pubDate>Fri, 10 Apr 2026 10:00:00 GMT</pubDate></item>
<item><title>Releasing v0.3.0 — Structural Bounds, In-Process REPL, and Stdlib Depth</title><link>https://hew.sh/blog/2026/04/release-v030</link><guid isPermaLink="true">https://hew.sh/blog/2026/04/release-v030</guid><description>Structural trait bounds now work without explicit impl declarations. Plus an in-process REPL, Rc&lt;T&gt;, typed network errors, SMTP one-shot helpers, and a large stdlib surface expansion.</description><pubDate>Mon, 06 Apr 2026 16:00:00 GMT</pubDate></item>
<item><title>Releasing v0.2.2 — Observer Discovery, Reply Channel Fix, WebSocket Server</title><link>https://hew.sh/blog/2026/03/release-v022</link><guid isPermaLink="true">https://hew.sh/blog/2026/03/release-v022</guid><description>hew-observe auto-discovers running programs over unix sockets. Plus a codegen fix that eliminated a class of actor crashes, and WebSocket server support in the stdlib.</description><pubDate>Sun, 29 Mar 2026 18:00:00 GMT</pubDate></item>
<item><title>Releasing v0.2.1 — One Binary, Hardened Runtime</title><link>https://hew.sh/blog/2026/03/release-v021</link><guid isPermaLink="true">https://hew.sh/blog/2026/03/release-v021</guid><description>hew-codegen is gone: the compiler is a single binary now. Plus a major runtime hardening pass, generic channels, and 562 E2E tests.</description><pubDate>Mon, 23 Mar 2026 16:00:00 GMT</pubDate></item>
<item><title>Wiring the QUIC Mesh</title><link>https://hew.sh/blog/2026/03/wiring-the-quic-mesh</link><guid isPermaLink="true">https://hew.sh/blog/2026/03/wiring-the-quic-mesh</guid><description>How the Node API actually works — QUIC transport, distributed reply channels, and cross-node service discovery. The language surface shipped in v0.1.9; the runtime took another four days.</description><pubDate>Mon, 16 Mar 2026 00:00:00 GMT</pubDate></item>
<item><title>Releasing v0.2.0 — Named Receivers and Generic impl Blocks</title><link>https://hew.sh/blog/2026/03/release-v020</link><guid isPermaLink="true">https://hew.sh/blog/2026/03/release-v020</guid><description>The self keyword is gone: actors use this, impl methods use named receivers, and generic impl&lt;T&gt; blocks finally work.</description><pubDate>Thu, 12 Mar 2026 16:00:00 GMT</pubDate></item>
<item><title>Teaching an LLM a Language It Has Never Seen</title><link>https://hew.sh/blog/2026/03/teaching-an-llm-a-language-it-has-never-seen</link><guid isPermaLink="true">https://hew.sh/blog/2026/03/teaching-an-llm-a-language-it-has-never-seen</guid><description>Fine-tuning a 4B parameter model to write valid Hew code, using the compiler as the test suite and a 780M iGPU as the training rig.</description><pubDate>Thu, 12 Mar 2026 00:00:00 GMT</pubDate></item>
<item><title>MicroGPT — From 1,092 Lines to 677</title><link>https://hew.sh/blog/2026/03/microgpt-from-1092-to-677-lines</link><guid isPermaLink="true">https://hew.sh/blog/2026/03/microgpt-from-1092-to-677-lines</guid><description>Most of the gaps microgpt found got fixed within the week. Here&apos;s the refactoring sequence — commit by commit — and how close the output matches Python.</description><pubDate>Tue, 10 Mar 2026 00:00:00 GMT</pubDate></item>
<item><title>What MicroGPT Found — 13 Bugs and 340 Lines of Workarounds</title><link>https://hew.sh/blog/2026/03/what-microgpt-found</link><guid isPermaLink="true">https://hew.sh/blog/2026/03/what-microgpt-found</guid><description>The point of porting a real program isn&apos;t to have a GPT. It&apos;s to find out where your language breaks. MicroGPT found 13 compiler issues and revealed that 31% of the code was working around language gaps.</description><pubDate>Mon, 09 Mar 2026 00:00:00 GMT</pubDate></item>
<item><title>Porting Karpathy&apos;s MicroGPT to Hew</title><link>https://hew.sh/blog/2026/03/porting-microgpt-to-hew</link><guid isPermaLink="true">https://hew.sh/blog/2026/03/porting-microgpt-to-hew</guid><description>I needed a real program to stress-test the compiler. A 120-line GPT turned into 1,092 lines of Hew, and a third of those lines were working around compiler bugs.</description><pubDate>Sun, 08 Mar 2026 00:00:00 GMT</pubDate></item>
<item><title>Releasing v0.1.9 — FreeBSD Support</title><link>https://hew.sh/blog/2026/03/release-v019</link><guid isPermaLink="true">https://hew.sh/blog/2026/03/release-v019</guid><description>No new language features — just making Hew build and run on FreeBSD, which meant writing a kqueue poller and unifying the linker flags.</description><pubDate>Sat, 07 Mar 2026 16:00:00 GMT</pubDate></item>
<item><title>Wire Types and Distributed Actors</title><link>https://hew.sh/blog/2026/03/distributed-actors</link><guid isPermaLink="true">https://hew.sh/blog/2026/03/distributed-actors</guid><description>How Hew&apos;s wire types, remote spawning, and cluster formation came together across seven implementation phases — and where distributed supervision still falls short.</description><pubDate>Sat, 07 Mar 2026 08:00:00 GMT</pubDate></item>
<item><title>Releasing v0.1.8 — Literal Coercion, Indirect Enums, and LLVM 22</title><link>https://hew.sh/blog/2026/03/release-v018</link><guid isPermaLink="true">https://hew.sh/blog/2026/03/release-v018</guid><description>The type system does more work so you do less — range-checked literal coercion, recursive enums, and generators that use real coroutines.</description><pubDate>Fri, 06 Mar 2026 00:00:00 GMT</pubDate></item>
<item><title>LSP, Tree-Sitter, and Editor Support</title><link>https://hew.sh/blog/2026/03/lsp-tree-sitter-and-editor-support</link><guid isPermaLink="true">https://hew.sh/blog/2026/03/lsp-tree-sitter-and-editor-support</guid><description>The LSP, the tree-sitter grammar, the TextMate regex soup, and the six-repo pipeline I have to remember to run every time a keyword changes.</description><pubDate>Thu, 05 Mar 2026 00:00:00 GMT</pubDate></item>
<item><title>Releasing v0.1.7 — Debugging and Collection Ergonomics</title><link>https://hew.sh/blog/2026/03/release-v017</link><guid isPermaLink="true">https://hew.sh/blog/2026/03/release-v017</guid><description>Two features and a Docker fix — you can finally step through Hew programs in a debugger.</description><pubDate>Wed, 04 Mar 2026 00:00:00 GMT</pubDate></item>
<item><title>Releasing v0.1.6 — State Machines, Wire System, and a Lot of Cleanup</title><link>https://hew.sh/blog/2026/03/release-v016</link><guid isPermaLink="true">https://hew.sh/blog/2026/03/release-v016</guid><description>What started as &quot;add machine types&quot; turned into 64 PRs, a wire system redesign, and 1,344 lines removed from codegen.</description><pubDate>Tue, 03 Mar 2026 16:00:00 GMT</pubDate></item>
<item><title>State Machines and Duration Literals</title><link>https://hew.sh/blog/2026/03/state-machines-and-duration-literals</link><guid isPermaLink="true">https://hew.sh/blog/2026/03/state-machines-and-duration-literals</guid><description>Actors keep reinventing state machines badly, so I gave them a real one. Also, duration literals so you can stop counting nanosecond zeroes.</description><pubDate>Tue, 03 Mar 2026 08:00:00 GMT</pubDate></item>
<item><title>The Package Manager and Ecosystem Libraries</title><link>https://hew.sh/blog/2026/03/the-package-manager-and-ecosystem</link><guid isPermaLink="true">https://hew.sh/blog/2026/03/the-package-manager-and-ecosystem</guid><description>I didn&apos;t want &quot;cool language, no libraries&quot; to be anyone&apos;s first impression, so I built a package manager, a registry, and six libraries before v0.1.0.</description><pubDate>Mon, 02 Mar 2026 00:00:00 GMT</pubDate></item>
<item><title>Building the Website and the Playground</title><link>https://hew.sh/blog/2026/03/building-the-website-and-playground</link><guid isPermaLink="true">https://hew.sh/blog/2026/03/building-the-website-and-playground</guid><description>How the website and playground came together — two syntax highlighting pipelines, the Rust frontend compiled to WASM, and why breaking the grammar breaks everything at once.</description><pubDate>Sun, 01 Mar 2026 00:00:00 GMT</pubDate></item>
<item><title>Releasing v0.1.5 — Static Linking and Benchmarks</title><link>https://hew.sh/blog/2026/02/release-v015</link><guid isPermaLink="true">https://hew.sh/blog/2026/02/release-v015</guid><description>I wrote some algorithm examples, profiled the generated code, and discovered the codegen had problems I&apos;d been ignoring.</description><pubDate>Fri, 27 Feb 2026 16:00:00 GMT</pubDate></item>
<item><title>Type System Improvements After the Initial Release</title><link>https://hew.sh/blog/2026/02/the-type-system-gets-real</link><guid isPermaLink="true">https://hew.sh/blog/2026/02/the-type-system-gets-real</guid><description>The type checker kept rejecting programs that worked fine at runtime. Here&apos;s what it took to fix that — literal coercion, casts, bytes, indirect enums, and array-to-Vec.</description><pubDate>Fri, 27 Feb 2026 08:00:00 GMT</pubDate></item>
<item><title>Releasing v0.1.4 — False Warnings, Over-Engineering, and Windows</title><link>https://hew.sh/blog/2026/02/release-v014</link><guid isPermaLink="true">https://hew.sh/blog/2026/02/release-v014</guid><description>False warnings, deleted abstractions, and a Windows build that finally works. Five releases in three days.</description><pubDate>Thu, 26 Feb 2026 00:00:00 GMT</pubDate></item>
<item><title>Releasing v0.1.3 — Packaging and Signing Fixes</title><link>https://hew.sh/blog/2026/02/release-v013</link><guid isPermaLink="true">https://hew.sh/blog/2026/02/release-v013</guid><description>I actually tried installing what I built. Most of it was broken.</description><pubDate>Wed, 25 Feb 2026 16:00:00 GMT</pubDate></item>
<item><title>Releasing v0.1.2 — Build System Fixes</title><link>https://hew.sh/blog/2026/02/release-v012</link><guid isPermaLink="true">https://hew.sh/blog/2026/02/release-v012</guid><description>A small one — two build system fixes that only matter if you&apos;re packaging Hew, not writing it.</description><pubDate>Wed, 25 Feb 2026 12:00:00 GMT</pubDate></item>
<item><title>Tagging v0.1.0 and Building the Release Pipeline</title><link>https://hew.sh/blog/2026/02/tagging-v010</link><guid isPermaLink="true">https://hew.sh/blog/2026/02/tagging-v010</guid><description>I removed the alpha suffix and immediately had to build a release pipeline that could actually ship the thing.</description><pubDate>Wed, 25 Feb 2026 08:00:00 GMT</pubDate></item>
<item><title>Releasing v0.1.1 — Codegen Fixes and FFI Linking</title><link>https://hew.sh/blog/2026/02/release-v011</link><guid isPermaLink="true">https://hew.sh/blog/2026/02/release-v011</guid><description>The first release worked well enough to reveal the next layer of problems. This one fixes them.</description><pubDate>Tue, 24 Feb 2026 00:00:00 GMT</pubDate></item>
<item><title>Releasing v0.1.0 — Initial Public Release</title><link>https://hew.sh/blog/2026/02/release-v010</link><guid isPermaLink="true">https://hew.sh/blog/2026/02/release-v010</guid><description>Removed the alpha suffix, ran the pipeline, watched it turn green. That&apos;s v0.1.0.</description><pubDate>Mon, 23 Feb 2026 00:00:00 GMT</pubDate></item>
<item><title>Fixing Generics and Adding Verification</title><link>https://hew.sh/blog/2026/02/seeing-inside-the-machine</link><guid isPermaLink="true">https://hew.sh/blog/2026/02/seeing-inside-the-machine</guid><description>Fixing generic monomorphization collisions, wiring codegen to the type checker, adding MLIR verification, and building IR visualization tools.</description><pubDate>Sat, 21 Feb 2026 00:00:00 GMT</pubDate></item>
<item><title>Pre-Alpha Syntax Cleanup</title><link>https://hew.sh/blog/2026/02/the-shape-of-the-language</link><guid isPermaLink="true">https://hew.sh/blog/2026/02/the-shape-of-the-language</guid><description>Removing seven syntax forms, adding named arguments, fixing the formatter, and collapsing three crates into one before tagging v0.1.0-alpha.</description><pubDate>Fri, 20 Feb 2026 00:00:00 GMT</pubDate></item>
<item><title>Running Valgrind on Everything</title><link>https://hew.sh/blog/2026/02/trusting-the-memory</link><guid isPermaLink="true">https://hew.sh/blog/2026/02/trusting-the-memory</guid><description>Systematic memory validation with valgrind — from 1,800 bytes definitely lost to zero, fixing reply channel leaks, supervisor cleanup, and a nested shutdown double-free.</description><pubDate>Thu, 19 Feb 2026 16:00:00 GMT</pubDate></item>
<item><title>Closing the Gaps</title><link>https://hew.sh/blog/2026/02/finishing-what-you-started</link><guid isPermaLink="true">https://hew.sh/blog/2026/02/finishing-what-you-started</guid><description>Walking through the Hew pipeline to fix broken tail calls, unregistered defer, SQL injection in the stdlib, duration literals stuck at the lexer, and 120 new tests.</description><pubDate>Thu, 19 Feb 2026 12:00:00 GMT</pubDate></item>
<item><title>Replacing FlatBuffers with MessagePack</title><link>https://hew.sh/blog/2026/02/ripping-out-the-plumbing</link><guid isPermaLink="true">https://hew.sh/blog/2026/02/ripping-out-the-plumbing</guid><description>Ripping out FlatBuffers, splitting the standard library namespace, adding a package manager, and building an export macro system.</description><pubDate>Thu, 19 Feb 2026 08:00:00 GMT</pubDate></item>
<item><title>Grammar Tooling and the MLIR Dialect Overhaul</title><link>https://hew.sh/blog/2026/02/the-website-becomes-the-language</link><guid isPermaLink="true">https://hew.sh/blog/2026/02/the-website-becomes-the-language</guid><description>Building a TextMate grammar, replacing LLVM IR with typed Hew dialect ops, and debugging a Tailwind naming collision.</description><pubDate>Tue, 17 Feb 2026 00:00:00 GMT</pubDate></item>
<item><title>Testing the Language on Myself</title><link>https://hew.sh/blog/2026/02/rough-edges-and-real-users</link><guid isPermaLink="true">https://hew.sh/blog/2026/02/rough-edges-and-real-users</guid><description>Writing fifteen programs from scratch to find UX problems, then fixing error messages, adding else-if chains, and killing false positives.</description><pubDate>Sun, 15 Feb 2026 17:00:00 GMT</pubDate></item>
<item><title>Generators and Actor Mailboxes</title><link>https://hew.sh/blog/2026/02/generators-across-boundaries</link><guid isPermaLink="true">https://hew.sh/blog/2026/02/generators-across-boundaries</guid><description>Spec v0.6.1 added three generator forms to Hew, including one that streams values across actor boundaries through the mailbox.</description><pubDate>Sun, 15 Feb 2026 14:00:00 GMT</pubDate></item>
<item><title>Removing Six Syntax Redundancies</title><link>https://hew.sh/blog/2026/02/one-way-to-do-it</link><guid isPermaLink="true">https://hew.sh/blog/2026/02/one-way-to-do-it</guid><description>The v0.6.0 spec revision removed six redundancies and three dead-end features without adding anything new.</description><pubDate>Sun, 15 Feb 2026 11:00:00 GMT</pubDate></item>
<item><title>How Fast Is It, Actually</title><link>https://hew.sh/blog/2026/02/benchmarks-ci-and-whats-next</link><guid isPermaLink="true">https://hew.sh/blog/2026/02/benchmarks-ci-and-whats-next</guid><description>Benchmarking Hew against gcc -O2, setting up CI, and adding generators to the spec.</description><pubDate>Sun, 15 Feb 2026 08:00:00 GMT</pubDate></item>
<item><title>Throwing Away the First Compiler</title><link>https://hew.sh/blog/2026/02/the-mlir-pivot</link><guid isPermaLink="true">https://hew.sh/blog/2026/02/the-mlir-pivot</guid><description>Why Hew ended up with two compilers — the Rust/Inkwell attempt, the pivot to C++/MLIR, and rebuilding the pipeline in 12 hours.</description><pubDate>Sat, 14 Feb 2026 16:00:00 GMT</pubDate></item>
<item><title>Three Spec Revisions in Three Days</title><link>https://hew.sh/blog/2026/02/making-hew-writable</link><guid isPermaLink="true">https://hew.sh/blog/2026/02/making-hew-writable</guid><description>Three major spec revisions driven by implementation and user testing — ownership rethink, messaging overhaul, and syntax consolidation.</description><pubDate>Sat, 14 Feb 2026 08:00:00 GMT</pubDate></item>
<item><title>Building the Actor Runtime</title><link>https://hew.sh/blog/2026/02/actors-all-the-way-down</link><guid isPermaLink="true">https://hew.sh/blog/2026/02/actors-all-the-way-down</guid><description>From one-thread-per-actor to M:N work-stealing — designing Hew&apos;s actor runtime, mailboxes, and supervision trees.</description><pubDate>Fri, 13 Feb 2026 00:00:00 GMT</pubDate></item>
<item><title>From cargo init to a Running Compiler</title><link>https://hew.sh/blog/2026/02/first-light</link><guid isPermaLink="true">https://hew.sh/blog/2026/02/first-light</guid><description>Building Hew&apos;s lexer, parser, type checker, IR, and C codegen in under two hours. Fibonacci printed 55.</description><pubDate>Thu, 12 Feb 2026 16:00:00 GMT</pubDate></item>
<item><title>Writing a Spec Before Writing Code</title><link>https://hew.sh/blog/2026/02/day-zero</link><guid isPermaLink="true">https://hew.sh/blog/2026/02/day-zero</guid><description>Hew started with a 394-line specification, a 1,076-line gap analysis, and four research documents — before any compiler code existed.</description><pubDate>Thu, 12 Feb 2026 08:00:00 GMT</pubDate></item>
</channel></rss>