<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Chuks Programming Language | Blog</title><description>Chuks is a modern backend language that combines structured concurrency, async/await, and a high-performance HTTP runtime with high performance. Built for real-world services and game backends.</description><link>https://chuks.org/</link><language>en</language><item><title>Chuks v0.0.7 — The Ecosystem Release</title><link>https://chuks.org/blog/chuks-v007-the-ecosystem-release/</link><guid isPermaLink="true">https://chuks.org/blog/chuks-v007-the-ecosystem-release/</guid><description>Full package manager with semver constraints and lockfile signing, supply chain security with permission enforcement, API tokens for CI/CD, watch mode, 83 new math functions, route groups, generic monomorphization in AOT, Task.all(), bool() cast, case-insensitive HTTP header parsing, and 268 passing tests.

</description><pubDate>Fri, 27 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;strong&gt;Chuks v0.0.7&lt;/strong&gt; is the biggest release yet — 80 files changed, +7,806 lines. This release adds a full package manager with supply chain security, a watch mode for development, route groups with middleware, 83 new math functions, and a complete generic monomorphization system in the AOT compiler.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;package-manager&quot;&gt;Package Manager&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;Chuks now has a built-in package manager. No separate tool needed — it’s part of the &lt;code dir=&quot;auto&quot;&gt;chuks&lt;/code&gt; CLI.&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;chuks&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;add&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;chuks_redis&lt;/span&gt;&lt;span&gt;          &lt;/span&gt;&lt;span&gt;# Add a package to your project&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;chuks&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;install&lt;/span&gt;&lt;span&gt;                  &lt;/span&gt;&lt;span&gt;# Install all dependencies from chuks.json&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;chuks&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;remove&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;chuks_redis&lt;/span&gt;&lt;span&gt;       &lt;/span&gt;&lt;span&gt;# Remove a package&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;chuks&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;update&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;chuks_redis&lt;/span&gt;&lt;span&gt;       &lt;/span&gt;&lt;span&gt;# Update a package to latest&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;chuks&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;info&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;chuks_redis&lt;/span&gt;&lt;span&gt;         &lt;/span&gt;&lt;span&gt;# Show package details&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;chuks&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;list&lt;/span&gt;&lt;span&gt;                     &lt;/span&gt;&lt;span&gt;# List installed packages&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;chuks&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;publish&lt;/span&gt;&lt;span&gt;                  &lt;/span&gt;&lt;span&gt;# Publish your package to the registry&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Packages are declared in &lt;code dir=&quot;auto&quot;&gt;chuks.json&lt;/code&gt; and installed into a local &lt;code dir=&quot;auto&quot;&gt;chuks_packages/&lt;/code&gt; directory. The package manager resolves dependencies from the Chuks package registry, validates versions, and manages the full lifecycle — add, install, remove, update, publish.&lt;/p&gt;
&lt;div&gt;&lt;h3 id=&quot;semver-constraints&quot;&gt;Semver Constraints&lt;/h3&gt;&lt;/div&gt;
&lt;p&gt;Version requirements in &lt;code dir=&quot;auto&quot;&gt;chuks.json&lt;/code&gt; support the full semver constraint syntax:&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;&quot;dependencies&quot;&lt;/span&gt;&lt;span&gt;: {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&quot;chuks_redis&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;^1.2.0&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&quot;chuks_kafka&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;~2.1.0&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&quot;chuks_csv&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;&gt;=1.0.0&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;

































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Constraint&lt;/th&gt;&lt;th&gt;Meaning&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code dir=&quot;auto&quot;&gt;^1.2.3&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&gt;=1.2.3, &amp;#x3C;2.0.0 (compatible with major)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code dir=&quot;auto&quot;&gt;~1.2.3&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&gt;=1.2.3, &amp;#x3C;1.3.0 (compatible with minor)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code dir=&quot;auto&quot;&gt;&gt;=1.0.0&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Any version 1.0.0 or higher&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code dir=&quot;auto&quot;&gt;&amp;#x3C;2.0.0&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Any version below 2.0.0&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code dir=&quot;auto&quot;&gt;1.2.3&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Exact version only&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code dir=&quot;auto&quot;&gt;*&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Any version&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;Caret constraints handle &lt;code dir=&quot;auto&quot;&gt;0.x&lt;/code&gt; versions correctly — &lt;code dir=&quot;auto&quot;&gt;^0.2.3&lt;/code&gt; resolves to &lt;code dir=&quot;auto&quot;&gt;&gt;=0.2.3, &amp;#x3C;0.3.0&lt;/code&gt; since pre-1.0 versions treat the minor as the compatibility boundary.&lt;/p&gt;
&lt;p&gt;Resolution happens server-side. The CLI sends the constraint to the registry, which returns the best matching version. This means the registry can account for yanked versions and package status without the CLI needing that logic locally.&lt;/p&gt;
&lt;div&gt;&lt;h3 id=&quot;transitive-dependencies&quot;&gt;Transitive Dependencies&lt;/h3&gt;&lt;/div&gt;
&lt;p&gt;When you install a package, the package manager automatically discovers and installs its dependencies — and their dependencies, recursively. A breadth-first resolution pass walks the full dependency tree, detects cycles, and locks every transitive dependency into &lt;code dir=&quot;auto&quot;&gt;chuks.lock&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Each transitive dependency requires the same permission consent as a direct dependency. Nothing gets installed silently.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;lockfile-integrity&quot;&gt;Lockfile Integrity&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;Every &lt;code dir=&quot;auto&quot;&gt;chuks.lock&lt;/code&gt; file is signed with an HMAC-SHA256 signature using a machine-local key stored at &lt;code dir=&quot;auto&quot;&gt;~/.chuks/lockfile.key&lt;/code&gt;. The key is generated automatically on first use (256-bit random, owner-only permissions).&lt;/p&gt;
&lt;p&gt;When &lt;code dir=&quot;auto&quot;&gt;chuks install&lt;/code&gt; runs, it verifies the lockfile signature before proceeding. If the lockfile has been manually tampered with — or modified outside the CLI — the signature check fails and installation is blocked:&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;⚠ lockfile signature mismatch — chuks.lock may have been tampered with&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;Run &apos;chuks install --resign&apos; to re-verify and re-sign.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;This prevents an attacker from editing &lt;code dir=&quot;auto&quot;&gt;chuks.lock&lt;/code&gt; to swap a trusted package version for a compromised one. The signing is non-fatal if the key file is unavailable (e.g., fresh CI environment), but emits a warning.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;supply-chain-security&quot;&gt;Supply Chain Security&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;The package manager enforces a multi-layered security model at every stage — install, build, and runtime.&lt;/p&gt;
&lt;div&gt;&lt;h3 id=&quot;permission-consent&quot;&gt;Permission Consent&lt;/h3&gt;&lt;/div&gt;
&lt;p&gt;Every package declares what system capabilities it needs (file system access, network binding, database access, process execution, etc.). When you install a package for the first time, the CLI shows an interactive consent prompt:&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;📦 chuks_redis v1.3.0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span&gt;Status: active&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span&gt;Integrity: sha256:a1b2c3d4e5f6...&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span&gt;Permissions requested:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;     &lt;/span&gt;&lt;/span&gt;&lt;span&gt;✔ net.connect     Connect to external services&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;     &lt;/span&gt;&lt;/span&gt;&lt;span&gt;✔ net.bind        Listen on network ports&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span&gt;⚠ Elevated:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;     &lt;/span&gt;&lt;/span&gt;&lt;span&gt;⚠ db.access       Full database control&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span&gt;Outbound domains:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;     &lt;/span&gt;&lt;/span&gt;&lt;span&gt;→ redis.example.com&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span&gt;Accept? [y/n]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Elevated permissions (file system writes, process execution, database access, install scripts) are marked with ⚠️ so they stand out. You approve once; the decision is recorded in &lt;code dir=&quot;auto&quot;&gt;chuks.lock&lt;/code&gt;.&lt;/p&gt;
&lt;div&gt;&lt;h3 id=&quot;permission-enforcement&quot;&gt;Permission Enforcement&lt;/h3&gt;&lt;/div&gt;
&lt;p&gt;Approved permissions aren’t just informational — they’re enforced.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;At compile time:&lt;/strong&gt; before building your project, the compiler scans every installed package to verify it only imports standard library modules consistent with its declared permissions. If &lt;code dir=&quot;auto&quot;&gt;chuks_redis&lt;/code&gt; declares &lt;code dir=&quot;auto&quot;&gt;net.connect&lt;/code&gt; but also imports &lt;code dir=&quot;auto&quot;&gt;std/fs&lt;/code&gt;, the build fails:&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;✗ permission violation — chuks_redis uses std/fs but fs.read was not granted&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;At runtime (AOT):&lt;/strong&gt; AOT-compiled binaries embed a startup check that re-validates all package permissions when the binary launches. Even if the compile-time check is bypassed, the binary refuses to run if permissions don’t match:&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;✗ runtime permission violation — package chuks_redis uses net.bind&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;but none of its required permissions were granted&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;This is defense-in-depth. The lockfile is the source of truth, and enforcement happens at two independent stages.&lt;/p&gt;
&lt;div&gt;&lt;h3 id=&quot;content-integrity-verification&quot;&gt;Content Integrity Verification&lt;/h3&gt;&lt;/div&gt;
&lt;p&gt;Every package installation includes a SHA-256 content hash verification against the registry. The registry returns the expected hash for the exact version being installed, and the CLI compares it against the downloaded content:&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;✗ integrity check failed for chuks_redis@1.3.0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;Expected: sha256:a1b2c3d4...&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;Got:      sha256:x9y8z7w6...&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;This could indicate a supply chain attack.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;If the hash doesn’t match, installation is blocked. This catches scenarios where package contents are modified after publication — whether by a compromised registry, a man-in-the-middle, or a storage-level attack.&lt;/p&gt;
&lt;div&gt;&lt;h3 id=&quot;permission-escalation-detection&quot;&gt;Permission Escalation Detection&lt;/h3&gt;&lt;/div&gt;
&lt;p&gt;When you run &lt;code dir=&quot;auto&quot;&gt;chuks update&lt;/code&gt;, the package manager compares the new version’s permissions against what you previously approved. If the update adds new permissions, you’re prompted to re-consent before the upgrade proceeds:&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;📦 chuks_redis 1.3.0 → 2.0.0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span&gt;New permissions requested:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span&gt;⚠ fs.write          Write to the file system&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span&gt;⚠ proc.exec         Execute system commands&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span&gt;Accept? [y/n]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;This prevents a trusted package from silently gaining new capabilities in a minor or major update.&lt;/p&gt;
&lt;div&gt;&lt;h3 id=&quot;package-status-validation&quot;&gt;Package Status Validation&lt;/h3&gt;&lt;/div&gt;
&lt;p&gt;The registry assigns a status to every package: &lt;code dir=&quot;auto&quot;&gt;active&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;under_review&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;rejected&lt;/code&gt;, or &lt;code dir=&quot;auto&quot;&gt;yanked&lt;/code&gt;. The CLI checks this status before installation and blocks anything that isn’t &lt;code dir=&quot;auto&quot;&gt;active&lt;/code&gt;:&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;✗ package chuks_badpkg has status &apos;rejected&apos; — cannot install&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Yanked versions are excluded from version resolution entirely.&lt;/p&gt;
&lt;div&gt;&lt;h3 id=&quot;cicd-mode&quot;&gt;CI/CD Mode&lt;/h3&gt;&lt;/div&gt;
&lt;p&gt;The CLI detects whether it’s running in an interactive terminal or a CI/CD pipeline. In non-interactive mode (no TTY), &lt;code dir=&quot;auto&quot;&gt;chuks install&lt;/code&gt; requires an existing &lt;code dir=&quot;auto&quot;&gt;chuks.lock&lt;/code&gt; — it never prompts for permission consent. This prevents CI pipelines from hanging on a &lt;code dir=&quot;auto&quot;&gt;[y/n]&lt;/code&gt; prompt and ensures that production installs always use pre-approved lockfiles.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;api-tokens--cicd-publishing&quot;&gt;API Tokens &amp;#x26; CI/CD Publishing&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;Chuks now supports &lt;strong&gt;API tokens&lt;/strong&gt; for automated publishing from CI/CD pipelines. Instead of interactive OAuth login, generate a scoped, expiring token from the dashboard and use it in your pipeline.&lt;/p&gt;
&lt;p&gt;Tokens are scoped — you choose exactly what each token can do:&lt;/p&gt;

























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Scope&lt;/th&gt;&lt;th&gt;What it allows&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code dir=&quot;auto&quot;&gt;packages:read&lt;/code&gt;&lt;/td&gt;&lt;td&gt;List packages, view download stats&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code dir=&quot;auto&quot;&gt;packages:publish&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Publish new package versions&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code dir=&quot;auto&quot;&gt;packages:yank&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Yank and restore versions&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code dir=&quot;auto&quot;&gt;packages:permissions&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Update package permissions&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;div&gt;&lt;h3 id=&quot;using-tokens&quot;&gt;Using Tokens&lt;/h3&gt;&lt;/div&gt;
&lt;p&gt;Pass a token directly:&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;chuks&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;publish&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--token&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;chuks_pk_a1b2c3d4...&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Or set an environment variable:&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;export&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;CHUKS_TOKEN&lt;/span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;span&gt;chuks_pk_a1b2c3d4&lt;/span&gt;&lt;span&gt;...&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;chuks&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;publish&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;div&gt;&lt;h3 id=&quot;github-actions-example&quot;&gt;GitHub Actions Example&lt;/h3&gt;&lt;/div&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;name&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;Publish Package&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;on&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;push&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;tags&lt;/span&gt;&lt;span&gt;: [&lt;/span&gt;&lt;span&gt;&quot;v*&quot;&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;jobs&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;publish&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;runs-on&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;ubuntu-latest&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;steps&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;- &lt;/span&gt;&lt;span&gt;uses&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;actions/checkout@v4&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;- &lt;/span&gt;&lt;span&gt;run&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;curl -fsSL https://chuks.org/install.sh | bash&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;- &lt;/span&gt;&lt;span&gt;run&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;chuks publish --token ${{ secrets.CHUKS_TOKEN }}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Security:&lt;/strong&gt; tokens are stored as SHA-256 hashes — the raw token is shown once at creation and never stored. Tokens can be revoked instantly from the dashboard, and each token shows its last-used date for auditing.&lt;/p&gt;
&lt;p&gt;See the full &lt;a href=&quot;https://chuks.org/guide/ci-cd&quot;&gt;CI/CD Publishing guide&lt;/a&gt; for GitLab CI, Bitbucket Pipelines, and security best practices.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;watch-mode&quot;&gt;Watch Mode&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;&lt;code dir=&quot;auto&quot;&gt;chuks watch&lt;/code&gt; monitors your source files and automatically rebuilds + restarts on every save:&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;chuks&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;watch&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;src/main.chuks&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Under the hood it listens for filesystem events and manages child processes with proper isolation, the running server is killed and restarted cleanly on each change. Hot reload for Chuks development.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;route-groups--route-level-middleware&quot;&gt;Route Groups &amp;#x26; Route-Level Middleware&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;You can now organize routes into groups with shared prefixes and middleware chains:&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;var&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;api&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;app&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;group&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;/api&quot;&lt;/span&gt;&lt;span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;authMiddleware&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;api&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;get&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;/users&quot;&lt;/span&gt;&lt;span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;getUsers&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;api&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;post&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;/users&quot;&lt;/span&gt;&lt;span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;createUser&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;// Nested groups inherit parent middleware&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;var&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;admin&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;api&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;group&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;/admin&quot;&lt;/span&gt;&lt;span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;adminMiddleware&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;admin&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;get&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;/stats&quot;&lt;/span&gt;&lt;span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;getStats&lt;/span&gt;&lt;span&gt;)  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;// has both auth + admin middleware&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Route-level middleware is eagerly flattened at registration time — when a route is added to a group, its middleware chain is computed once by merging parent middleware with group middleware. No per-request traversal.&lt;/p&gt;
&lt;p&gt;This works in both VM and AOT modes with identical behavior.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;83-new-math-functions&quot;&gt;83 New Math Functions&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;The &lt;code dir=&quot;auto&quot;&gt;math&lt;/code&gt; standard library now has 83 new functions covering:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Trigonometric&lt;/strong&gt;: &lt;code dir=&quot;auto&quot;&gt;sin&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;cos&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;tan&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;asin&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;acos&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;atan&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;atan2&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hyperbolic&lt;/strong&gt;: &lt;code dir=&quot;auto&quot;&gt;sinh&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;cosh&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;tanh&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;asinh&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;acosh&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;atanh&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Exponential/Logarithmic&lt;/strong&gt;: &lt;code dir=&quot;auto&quot;&gt;exp&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;exp2&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;expm1&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;log&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;log2&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;log10&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;log1p&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;logb&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rounding&lt;/strong&gt;: &lt;code dir=&quot;auto&quot;&gt;trunc&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;roundToEven&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Special&lt;/strong&gt;: &lt;code dir=&quot;auto&quot;&gt;erf&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;erfc&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;erfinv&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;erfcinv&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;gamma&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;lgamma&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bessel&lt;/strong&gt;: &lt;code dir=&quot;auto&quot;&gt;j0&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;j1&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;jn&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;y0&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;y1&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;yn&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Utility&lt;/strong&gt;: &lt;code dir=&quot;auto&quot;&gt;cbrt&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;copysign&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;dim&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;hypot&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;mod&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;remainder&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;nextafter&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;ldexp&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;frexp&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;ilogb&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;scalbn&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Classification&lt;/strong&gt;: &lt;code dir=&quot;auto&quot;&gt;isInf&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;isNaN&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;signbit&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;inf&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;nan&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;import&lt;/span&gt;&lt;span&gt;&lt;span&gt; { &lt;/span&gt;&lt;span&gt;math&lt;/span&gt;&lt;span&gt; } &lt;/span&gt;&lt;/span&gt;&lt;span&gt;from&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;std/math&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;var&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;angle&lt;/span&gt;&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;float&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;math&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;pi&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;4.0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;println&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;math&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;sin&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;angle&lt;/span&gt;&lt;span&gt;))       &lt;/span&gt;&lt;/span&gt;&lt;span&gt;// 0.7071067811865476&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;println&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;math&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;gamma&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;5.0&lt;/span&gt;&lt;span&gt;))       &lt;/span&gt;&lt;span&gt;// 24&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;println&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;math&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;erf&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;1.0&lt;/span&gt;&lt;span&gt;))         &lt;/span&gt;&lt;span&gt;// 0.8427007929497149&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;div&gt;&lt;h2 id=&quot;generic-monomorphization-in-aot&quot;&gt;Generic Monomorphization in AOT&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;The AOT compiler now fully monomorphizes generic classes. When you write &lt;code dir=&quot;auto&quot;&gt;Box&amp;#x3C;int&gt;&lt;/code&gt;, the compiler generates a dedicated specialized type with concrete typed fields — no dynamic dispatch, no runtime type switches.&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;class&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Box&lt;/span&gt;&lt;span&gt;&amp;#x3C;&lt;/span&gt;&lt;span&gt;T&lt;/span&gt;&lt;span&gt;&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;var&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;value&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;T&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;constructor&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;value&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;T&lt;/span&gt;&lt;span&gt;) {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;this&lt;/span&gt;&lt;span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;value&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;value&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;get&lt;/span&gt;&lt;span&gt;()&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;T&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;return&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;this&lt;/span&gt;&lt;span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;value&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;var&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;intBox&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;new&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Box&lt;/span&gt;&lt;span&gt;&amp;#x3C;&lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt;&gt;(&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;var&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;strBox&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;new&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Box&lt;/span&gt;&lt;span&gt;&amp;#x3C;&lt;/span&gt;&lt;span&gt;string&lt;/span&gt;&lt;span&gt;&gt;(&lt;/span&gt;&lt;span&gt;&quot;hello&quot;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;The AOT compiler:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Scans the program for all generic instantiations (&lt;code dir=&quot;auto&quot;&gt;Box&amp;#x3C;int&gt;&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;Box&amp;#x3C;string&gt;&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Generates specialized types with concrete field types&lt;/li&gt;
&lt;li&gt;Rewrites all references to use the specialized types&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This means generic code compiles to the same efficient native code as hand-written specialized classes. The specialization system handles nested generics, generic superclass instantiation, and method-level generic parameters.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;taskall&quot;&gt;Task.all()&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;&lt;code dir=&quot;auto&quot;&gt;Task.all()&lt;/code&gt; runs multiple async tasks in parallel and waits for all of them to complete:&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;var&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;results&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;await&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Task&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;all&lt;/span&gt;&lt;span&gt;([&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;fetchUsers&lt;/span&gt;&lt;span&gt;(),&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;fetchProducts&lt;/span&gt;&lt;span&gt;(),&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;fetchOrders&lt;/span&gt;&lt;span&gt;()&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;])&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;All tasks run concurrently and results are collected in order. If any task fails, errors are aggregated.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;channel-module-redesign&quot;&gt;Channel Module Redesign&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;The &lt;code dir=&quot;auto&quot;&gt;std/channel&lt;/code&gt; module has been refactored from standalone exported functions to a class-based API:&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;import&lt;/span&gt;&lt;span&gt;&lt;span&gt; { &lt;/span&gt;&lt;span&gt;channel&lt;/span&gt;&lt;span&gt; } &lt;/span&gt;&lt;/span&gt;&lt;span&gt;from&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;std/channel&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;var&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;ch&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;channel&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;create&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;channel&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;send&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;ch&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&quot;hello&quot;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;var&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;msg&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;channel&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;receive&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;ch&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;div&gt;&lt;h2 id=&quot;typechecker-improvements&quot;&gt;Typechecker Improvements&lt;/h2&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Route group types&lt;/strong&gt; — the typechecker now understands &lt;code dir=&quot;auto&quot;&gt;app.group()&lt;/code&gt; return types and validates middleware + handler signatures on grouped routes&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Channel types&lt;/strong&gt; — proper type tracking through channel send/receive operations&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Method-level generic parameters&lt;/strong&gt; — methods can define their own generic type parameters independent of the class&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Generic superclass instantiation&lt;/strong&gt; — &lt;code dir=&quot;auto&quot;&gt;class Foo extends Bar&amp;#x3C;int&gt;&lt;/code&gt; correctly resolves the parent’s generic types&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Variadic route handler typing&lt;/strong&gt; — route methods accept variable numbers of middleware + handler arguments with correct type checking&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;h2 id=&quot;compiler-architecture&quot;&gt;Compiler Architecture&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;The old monolithic bytecode compiler (1,177 lines) has been replaced by an IR-based pipeline. The new architecture is:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Parser&lt;/strong&gt; → AST&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;IR Generator&lt;/strong&gt; → intermediate representation&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Optimizer&lt;/strong&gt; → dead code elimination (now handles &lt;code dir=&quot;auto&quot;&gt;AddressOf&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;Deref&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;IterKeys&lt;/code&gt; nodes)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;IR Compiler&lt;/strong&gt; → bytecode&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This also powers the new &lt;code dir=&quot;auto&quot;&gt;OP_ITER_KEYS&lt;/code&gt; opcode for &lt;code dir=&quot;auto&quot;&gt;for-in&lt;/code&gt; loops over maps, and deterministic map output (keys are now sorted alphabetically in &lt;code dir=&quot;auto&quot;&gt;string()&lt;/code&gt; representation).&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;ide--developer-experience&quot;&gt;IDE &amp;#x26; Developer Experience&lt;/h2&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Hover information&lt;/strong&gt; expanded significantly (+452 lines) — richer type info, documentation hints, and signature details in the VS Code extension&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Completion&lt;/strong&gt; improvements for the new language features&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ASI (Automatic Semicolon Insertion)&lt;/strong&gt; fixed for complex nested expressions — the lexer now tracks block scope depth for parentheses and brackets separately&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;h2 id=&quot;cicd-improvements&quot;&gt;CI/CD Improvements&lt;/h2&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cross-platform testing&lt;/strong&gt; — CI now runs on &lt;code dir=&quot;auto&quot;&gt;ubuntu-latest&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;macos-latest&lt;/code&gt;, and &lt;code dir=&quot;auto&quot;&gt;windows-latest&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Code coverage&lt;/strong&gt; — new Codecov integration for tracking test coverage&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Manual dispatch&lt;/strong&gt; — CI can now be triggered manually via &lt;code dir=&quot;auto&quot;&gt;workflow_dispatch&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;h2 id=&quot;runtime-improvements&quot;&gt;Runtime Improvements&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;The AOT runtime has been upgraded with significant performance improvements — a new garbage collector, faster hash maps, and improved memory allocation. These benefits apply automatically to all AOT-compiled Chuks programs.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;database--production-ready&quot;&gt;Database — Production Ready&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;The &lt;code dir=&quot;auto&quot;&gt;std/db&lt;/code&gt; module now provides a complete, production-grade SQL toolkit. Every feature works across all four supported databases (SQLite, PostgreSQL, MySQL, MSSQL) in both VM and AOT modes — &lt;strong&gt;540 database tests passing&lt;/strong&gt;.&lt;/p&gt;
&lt;div&gt;&lt;h3 id=&quot;transaction-convenience-wrapper&quot;&gt;Transaction Convenience Wrapper&lt;/h3&gt;&lt;/div&gt;
&lt;p&gt;No more manual begin/commit/rollback boilerplate. &lt;code dir=&quot;auto&quot;&gt;db.transaction()&lt;/code&gt; auto-commits on success and auto-rolls back on error:&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;import&lt;/span&gt;&lt;span&gt;&lt;span&gt; { &lt;/span&gt;&lt;span&gt;db&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;DbDriver&lt;/span&gt;&lt;span&gt; } &lt;/span&gt;&lt;/span&gt;&lt;span&gt;from&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;std/db&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;var&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;conn&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;db&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;open&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;DbDriver&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;Postgres&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;databaseUrl&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;var&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;result&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;db&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;transaction&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;conn&lt;/span&gt;&lt;span&gt;, (&lt;/span&gt;&lt;/span&gt;&lt;span&gt;tx&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;=&gt;&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;db&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;txExec&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;tx&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&quot;INSERT INTO orders (userId, total) VALUES (?, ?)&quot;&lt;/span&gt;&lt;span&gt;, [&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;99.99&lt;/span&gt;&lt;span&gt;])&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;db&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;txExec&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;tx&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&quot;UPDATE users SET balance = balance - ? WHERE id = ?&quot;&lt;/span&gt;&lt;span&gt;, [&lt;/span&gt;&lt;span&gt;99.99&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;])&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;return&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;db&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;txQuery&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;tx&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&quot;SELECT balance FROM users WHERE id = ?&quot;&lt;/span&gt;&lt;span&gt;, [&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;])&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;})&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;// If anything throws, both the insert and update are rolled back&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;println&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;result&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;][&lt;/span&gt;&lt;span&gt;&quot;balance&quot;&lt;/span&gt;&lt;span&gt;])&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;div&gt;&lt;h3 id=&quot;connection-pool-stats&quot;&gt;Connection Pool Stats&lt;/h3&gt;&lt;/div&gt;
&lt;p&gt;Monitor your connection pool at runtime:&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;db&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;setPool&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;conn&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&quot;maxOpenConns&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;db&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;setPool&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;conn&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&quot;maxIdleConns&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;var&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;stats&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;db&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;poolStats&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;conn&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;println&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;stats&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&quot;openConnections&quot;&lt;/span&gt;&lt;span&gt;])  &lt;/span&gt;&lt;span&gt;// total open connections&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;println&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;stats&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&quot;inUse&quot;&lt;/span&gt;&lt;span&gt;])            &lt;/span&gt;&lt;span&gt;// currently in use&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;println&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;stats&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&quot;idle&quot;&lt;/span&gt;&lt;span&gt;])             &lt;/span&gt;&lt;span&gt;// idle connections&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;println&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;stats&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&quot;maxOpen&quot;&lt;/span&gt;&lt;span&gt;])          &lt;/span&gt;&lt;span&gt;// configured max&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;println&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;stats&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&quot;waitCount&quot;&lt;/span&gt;&lt;span&gt;])        &lt;/span&gt;&lt;span&gt;// total waits for a connection&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;div&gt;&lt;h3 id=&quot;bulk-insert--upsert&quot;&gt;Bulk Insert &amp;#x26; Upsert&lt;/h3&gt;&lt;/div&gt;
&lt;p&gt;Insert multiple rows in a single call, or upsert (insert-or-update on conflict):&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;import&lt;/span&gt;&lt;span&gt;&lt;span&gt; { &lt;/span&gt;&lt;span&gt;QueryBuilder&lt;/span&gt;&lt;span&gt; } &lt;/span&gt;&lt;/span&gt;&lt;span&gt;from&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;std/db/query&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;var&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;qb&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;new&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;QueryBuilder&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;conn&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;// Bulk insert&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;qb&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;table&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;products&quot;&lt;/span&gt;&lt;span&gt;).&lt;/span&gt;&lt;span&gt;insertMany&lt;/span&gt;&lt;span&gt;([&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;{ &lt;/span&gt;&lt;span&gt;&quot;name&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;Widget&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&quot;price&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;9.99&lt;/span&gt;&lt;span&gt; },&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;{ &lt;/span&gt;&lt;span&gt;&quot;name&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;Gadget&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&quot;price&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;24.99&lt;/span&gt;&lt;span&gt; },&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;{ &lt;/span&gt;&lt;span&gt;&quot;name&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;Gizmo&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&quot;price&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;14.99&lt;/span&gt;&lt;span&gt; }&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;])&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;// Upsert — insert or update on conflict&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;qb&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;table&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;products&quot;&lt;/span&gt;&lt;span&gt;).&lt;/span&gt;&lt;span&gt;upsert&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;{ &lt;/span&gt;&lt;span&gt;&quot;name&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;Widget&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&quot;price&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;12.99&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&quot;stock&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;50&lt;/span&gt;&lt;span&gt; },&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;&quot;name&quot;&lt;/span&gt;&lt;span&gt;]  &lt;/span&gt;&lt;span&gt;// conflict columns&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Repository equivalents: &lt;code dir=&quot;auto&quot;&gt;createMany()&lt;/code&gt; and &lt;code dir=&quot;auto&quot;&gt;upsert()&lt;/code&gt;.&lt;/p&gt;
&lt;div&gt;&lt;h3 id=&quot;aggregate-functions&quot;&gt;Aggregate Functions&lt;/h3&gt;&lt;/div&gt;
&lt;p&gt;The Query Builder and Repository now have built-in &lt;code dir=&quot;auto&quot;&gt;sum()&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;avg()&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;min()&lt;/code&gt;, and &lt;code dir=&quot;auto&quot;&gt;max()&lt;/code&gt;:&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;var&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;totalRevenue&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;await&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;qb&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;table&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;orders&quot;&lt;/span&gt;&lt;span&gt;).&lt;/span&gt;&lt;span&gt;sum&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;amount&quot;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;var&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;avgPrice&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;await&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;qb&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;table&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;products&quot;&lt;/span&gt;&lt;span&gt;).&lt;/span&gt;&lt;span&gt;avg&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;price&quot;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;var&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;cheapest&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;await&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;qb&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;table&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;products&quot;&lt;/span&gt;&lt;span&gt;).&lt;/span&gt;&lt;span&gt;min&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;price&quot;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;var&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;mostExpensive&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;await&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;qb&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;table&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;products&quot;&lt;/span&gt;&lt;span&gt;).&lt;/span&gt;&lt;span&gt;max&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;price&quot;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;div&gt;&lt;h3 id=&quot;advanced-where-clauses&quot;&gt;Advanced WHERE Clauses&lt;/h3&gt;&lt;/div&gt;
&lt;p&gt;New query methods for common SQL patterns:&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;// Range queries&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;qb&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;table&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;products&quot;&lt;/span&gt;&lt;span&gt;).&lt;/span&gt;&lt;span&gt;whereBetween&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;price&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;50&lt;/span&gt;&lt;span&gt;).&lt;/span&gt;&lt;span&gt;all&lt;/span&gt;&lt;span&gt;()&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;qb&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;table&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;products&quot;&lt;/span&gt;&lt;span&gt;).&lt;/span&gt;&lt;span&gt;whereNotBetween&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;price&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;100&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;999&lt;/span&gt;&lt;span&gt;).&lt;/span&gt;&lt;span&gt;all&lt;/span&gt;&lt;span&gt;()&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;// IN / NOT IN&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;qb&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;table&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;users&quot;&lt;/span&gt;&lt;span&gt;).&lt;/span&gt;&lt;span&gt;whereIn&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;role&quot;&lt;/span&gt;&lt;span&gt;, [&lt;/span&gt;&lt;span&gt;&quot;admin&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&quot;moderator&quot;&lt;/span&gt;&lt;span&gt;]).&lt;/span&gt;&lt;span&gt;all&lt;/span&gt;&lt;span&gt;()&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;qb&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;table&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;users&quot;&lt;/span&gt;&lt;span&gt;).&lt;/span&gt;&lt;span&gt;whereNotIn&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;status&quot;&lt;/span&gt;&lt;span&gt;, [&lt;/span&gt;&lt;span&gt;&quot;banned&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&quot;suspended&quot;&lt;/span&gt;&lt;span&gt;]).&lt;/span&gt;&lt;span&gt;all&lt;/span&gt;&lt;span&gt;()&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;// Raw WHERE for complex expressions&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;qb&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;table&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;orders&quot;&lt;/span&gt;&lt;span&gt;).&lt;/span&gt;&lt;span&gt;whereRaw&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;total * quantity &gt; ?&quot;&lt;/span&gt;&lt;span&gt;, [&lt;/span&gt;&lt;span&gt;1000&lt;/span&gt;&lt;span&gt;]).&lt;/span&gt;&lt;span&gt;all&lt;/span&gt;&lt;span&gt;()&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;// Distinct results&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;qb&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;table&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;orders&quot;&lt;/span&gt;&lt;span&gt;).&lt;/span&gt;&lt;span&gt;distinct&lt;/span&gt;&lt;span&gt;().&lt;/span&gt;&lt;span&gt;select&lt;/span&gt;&lt;span&gt;([&lt;/span&gt;&lt;span&gt;&quot;customerId&quot;&lt;/span&gt;&lt;span&gt;]).&lt;/span&gt;&lt;span&gt;all&lt;/span&gt;&lt;span&gt;()&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;// HAVING for aggregate filters&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;qb&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;table&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;orders&quot;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;select&lt;/span&gt;&lt;span&gt;([&lt;/span&gt;&lt;span&gt;&quot;customerId&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&quot;SUM(total) as totalSpent&quot;&lt;/span&gt;&lt;span&gt;])&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;groupBy&lt;/span&gt;&lt;span&gt;([&lt;/span&gt;&lt;span&gt;&quot;customerId&quot;&lt;/span&gt;&lt;span&gt;])&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;having&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;SUM(total)&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&quot;&gt;&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;500&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;all&lt;/span&gt;&lt;span&gt;()&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;div&gt;&lt;h3 id=&quot;pagination--chunking&quot;&gt;Pagination &amp;#x26; Chunking&lt;/h3&gt;&lt;/div&gt;
&lt;p&gt;Process large datasets efficiently:&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;// Paginate — returns { data, total, page, perPage, lastPage }&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;var&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;page&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;await&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;qb&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;table&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;products&quot;&lt;/span&gt;&lt;span&gt;).&lt;/span&gt;&lt;span&gt;orderBy&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;name&quot;&lt;/span&gt;&lt;span&gt;).&lt;/span&gt;&lt;span&gt;paginate&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;println&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;page&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&quot;total&quot;&lt;/span&gt;&lt;span&gt;])     &lt;/span&gt;&lt;span&gt;// total matching rows&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;println&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;page&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&quot;lastPage&quot;&lt;/span&gt;&lt;span&gt;])  &lt;/span&gt;&lt;span&gt;// last page number&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;println&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;page&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&quot;data&quot;&lt;/span&gt;&lt;span&gt;])      &lt;/span&gt;&lt;span&gt;// array of rows&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;// Chunk — process rows in batches (memory-efficient)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;await&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;qb&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;table&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;logs&quot;&lt;/span&gt;&lt;span&gt;).&lt;/span&gt;&lt;span&gt;orderBy&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;id&quot;&lt;/span&gt;&lt;span&gt;).&lt;/span&gt;&lt;span&gt;chunk&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;100&lt;/span&gt;&lt;span&gt;, (&lt;/span&gt;&lt;span&gt;batch&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;=&gt;&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;for&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;var&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;i&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;&lt;span&gt;; &lt;/span&gt;&lt;span&gt;i&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;#x3C;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;length&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;batch&lt;/span&gt;&lt;span&gt;); &lt;/span&gt;&lt;span&gt;i&lt;/span&gt;&lt;/span&gt;&lt;span&gt;++&lt;/span&gt;&lt;span&gt;) {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;processLog&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;batch&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;i&lt;/span&gt;&lt;span&gt;])&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;})&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;div&gt;&lt;h3 id=&quot;raw-sql-on-repository&quot;&gt;Raw SQL on Repository&lt;/h3&gt;&lt;/div&gt;
&lt;p&gt;Execute arbitrary SQL through the repository:&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;var&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;results&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;await&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;userRepo&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;raw&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&quot;SELECT u.*, COUNT(o.id) as orderCount FROM users u LEFT JOIN orders o ON u.id = o.userId GROUP BY u.id&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;var&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;single&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;await&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;userRepo&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;rawOne&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;SELECT COUNT(*) as total FROM users&quot;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;await&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;userRepo&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;rawExec&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;TRUNCATE TABLE sessions&quot;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;div&gt;&lt;h3 id=&quot;index-management&quot;&gt;Index Management&lt;/h3&gt;&lt;/div&gt;
&lt;p&gt;Create and drop indexes at runtime:&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;// Add a regular index&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;await&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;UserSchema&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;addIndex&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;conn&lt;/span&gt;&lt;span&gt;, [&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&quot;email&quot;&lt;/span&gt;&lt;span&gt;], &lt;/span&gt;&lt;span&gt;false&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;// Add a unique composite index&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;await&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;UserSchema&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;addIndex&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;conn&lt;/span&gt;&lt;span&gt;, [&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&quot;firstName&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&quot;lastName&quot;&lt;/span&gt;&lt;span&gt;], &lt;/span&gt;&lt;span&gt;true&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;// Drop an index&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;await&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;UserSchema&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;dropIndex&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;conn&lt;/span&gt;&lt;span&gt;, [&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&quot;email&quot;&lt;/span&gt;&lt;span&gt;])&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;div&gt;&lt;h3 id=&quot;soft-deletes--timestamps&quot;&gt;Soft Deletes &amp;#x26; Timestamps&lt;/h3&gt;&lt;/div&gt;
&lt;p&gt;Schemas now support auto-timestamps and soft deletes:&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;const&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;UserSchema&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;db&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;define&lt;/span&gt;&lt;span&gt;&amp;#x3C;&lt;/span&gt;&lt;span&gt;User&lt;/span&gt;&lt;span&gt;&lt;span&gt;&gt;(&lt;/span&gt;&lt;span&gt;conn&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&quot;users&quot;&lt;/span&gt;&lt;span&gt;, (&lt;/span&gt;&lt;span&gt;schema&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;=&gt;&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;schema&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;pk&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;id&quot;&lt;/span&gt;&lt;span&gt;).&lt;/span&gt;&lt;span&gt;auto&lt;/span&gt;&lt;span&gt;()&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;schema&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;string&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;name&quot;&lt;/span&gt;&lt;span&gt;).&lt;/span&gt;&lt;span&gt;notNull&lt;/span&gt;&lt;span&gt;()&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;schema&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;timestamps&lt;/span&gt;&lt;span&gt;()    &lt;/span&gt;&lt;span&gt;// adds createdAt + updatedAt&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;schema&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;softDeletes&lt;/span&gt;&lt;span&gt;()   &lt;/span&gt;&lt;span&gt;// adds deletedAt (records are &quot;soft deleted&quot;, not removed)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;})&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;// Soft-deleted records are hidden by default&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;var&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;users&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;await&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;userRepo&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;all&lt;/span&gt;&lt;span&gt;()              &lt;/span&gt;&lt;span&gt;// excludes soft-deleted&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;var&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;all&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;await&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;userRepo&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;withTrashed&lt;/span&gt;&lt;span&gt;().&lt;/span&gt;&lt;span&gt;all&lt;/span&gt;&lt;span&gt;()  &lt;/span&gt;&lt;span&gt;// includes soft-deleted&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;var&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;deleted&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;await&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;userRepo&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;onlyTrashed&lt;/span&gt;&lt;span&gt;().&lt;/span&gt;&lt;span&gt;all&lt;/span&gt;&lt;span&gt;()  &lt;/span&gt;&lt;span&gt;// only soft-deleted&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;await&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;userRepo&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;where&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;id&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;).&lt;/span&gt;&lt;span&gt;restore&lt;/span&gt;&lt;span&gt;()       &lt;/span&gt;&lt;span&gt;// un-delete&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;await&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;userRepo&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;where&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;id&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;).&lt;/span&gt;&lt;span&gt;forceDelete&lt;/span&gt;&lt;span&gt;()   &lt;/span&gt;&lt;span&gt;// permanently remove&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;div&gt;&lt;h3 id=&quot;lifecycle-hooks&quot;&gt;Lifecycle Hooks&lt;/h3&gt;&lt;/div&gt;
&lt;p&gt;Override hooks in your repository for cross-cutting concerns:&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;class&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;UserRepo&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;extends&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Repository&lt;/span&gt;&lt;span&gt;&amp;#x3C;&lt;/span&gt;&lt;span&gt;User&lt;/span&gt;&lt;span&gt;&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;constructor&lt;/span&gt;&lt;span&gt;() { &lt;/span&gt;&lt;span&gt;super&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;UserSchema&lt;/span&gt;&lt;span&gt;) }&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;override&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;beforeCreate&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;data&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;any&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;any&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;data&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;&quot;createdBy&quot;&lt;/span&gt;&lt;span&gt;] &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;getCurrentUserId&lt;/span&gt;&lt;span&gt;()&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;return&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;data&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;override&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;afterCreate&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;data&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;any&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;result&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;any&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;void&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;sendWelcomeEmail&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;data&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&quot;email&quot;&lt;/span&gt;&lt;span&gt;])&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;override&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;beforeDelete&lt;/span&gt;&lt;span&gt;()&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;void&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;logDeletion&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;users&quot;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;div&gt;&lt;h3 id=&quot;health-check&quot;&gt;Health Check&lt;/h3&gt;&lt;/div&gt;
&lt;p&gt;Verify database connectivity:&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;if&lt;/span&gt;&lt;span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;db&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;ping&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;conn&lt;/span&gt;&lt;span&gt;)) {&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;println&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;Database is reachable&quot;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;div&gt;&lt;h2 id=&quot;cpu-core-limiting&quot;&gt;CPU Core Limiting&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;By default, Chuks uses all available CPU cores. On shared servers where Chuks runs alongside other services (Node.js, databases, etc.), you can limit core usage with the &lt;code dir=&quot;auto&quot;&gt;--cpus&lt;/code&gt; flag:&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;# Limit to 4 cores&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;chuks&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;run&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--cpus&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;src/main.chuks&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;# Equals syntax also works&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;chuks&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;run&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--cpus=2&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;src/main.chuks&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;For AOT-compiled binaries, use the &lt;code dir=&quot;auto&quot;&gt;CHUKS_CPUS&lt;/code&gt; environment variable:&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;# Limit compiled binary to 4 cores&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;CHUKS_CPUS&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;./build/my-app&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Priority: &lt;code dir=&quot;auto&quot;&gt;--cpus&lt;/code&gt; flag &gt; &lt;code dir=&quot;auto&quot;&gt;CHUKS_CPUS&lt;/code&gt; env var &gt; default (all cores).&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;new-bool-type-conversion&quot;&gt;New: &lt;code dir=&quot;auto&quot;&gt;bool()&lt;/code&gt; Type Conversion&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;Chuks now supports &lt;code dir=&quot;auto&quot;&gt;bool()&lt;/code&gt; as a built-in type conversion function, joining &lt;code dir=&quot;auto&quot;&gt;int()&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;float()&lt;/code&gt;, and &lt;code dir=&quot;auto&quot;&gt;string()&lt;/code&gt;. It evaluates truthiness of any value:&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;var&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;a&lt;/span&gt;&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;bool&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;bool&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;)        &lt;/span&gt;&lt;span&gt;// true&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;var&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;b&lt;/span&gt;&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;bool&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;bool&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;)        &lt;/span&gt;&lt;span&gt;// false&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;var&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;c&lt;/span&gt;&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;bool&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;bool&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;hello&quot;&lt;/span&gt;&lt;span&gt;)  &lt;/span&gt;&lt;span&gt;// true&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;var&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;d&lt;/span&gt;&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;bool&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;bool&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;&quot;&lt;/span&gt;&lt;span&gt;)       &lt;/span&gt;&lt;span&gt;// false&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;var&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;e&lt;/span&gt;&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;bool&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;bool&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;null&lt;/span&gt;&lt;span&gt;)     &lt;/span&gt;&lt;span&gt;// false&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;This is especially useful when working with dynamic data from &lt;code dir=&quot;auto&quot;&gt;json.parse()&lt;/code&gt;, where field types are &lt;code dir=&quot;auto&quot;&gt;any&lt;/code&gt; and need to be explicitly converted:&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;var&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;parsed&lt;/span&gt;&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;any&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;json&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;parse&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;req&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;body&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;if&lt;/span&gt;&lt;span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;parsed&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;done&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;!=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;null&lt;/span&gt;&lt;span&gt;) {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;todo&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;done&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;bool&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;parsed&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;done&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;&lt;code dir=&quot;auto&quot;&gt;bool()&lt;/code&gt; works in both VM and AOT modes.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;http-server-improvements&quot;&gt;HTTP Server Improvements&lt;/h2&gt;&lt;/div&gt;
&lt;div&gt;&lt;h3 id=&quot;case-insensitive-header-parsing&quot;&gt;Case-Insensitive Header Parsing&lt;/h3&gt;&lt;/div&gt;
&lt;p&gt;The HTTP server now handles headers case-insensitively, following the HTTP/1.1 specification (RFC 7230). Previously, the server expected title-case headers like &lt;code dir=&quot;auto&quot;&gt;Content-Length&lt;/code&gt;, but many HTTP clients (including Node.js &lt;code dir=&quot;auto&quot;&gt;fetch&lt;/code&gt;) send lowercase headers like &lt;code dir=&quot;auto&quot;&gt;content-length&lt;/code&gt;. This caused request body parsing to silently fail when headers didn’t match the expected casing.&lt;/p&gt;
&lt;p&gt;All header matching — &lt;code dir=&quot;auto&quot;&gt;Content-Length&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;Transfer-Encoding&lt;/code&gt;, and &lt;code dir=&quot;auto&quot;&gt;Expect&lt;/code&gt; — is now case-insensitive.&lt;/p&gt;
&lt;div&gt;&lt;h3 id=&quot;content-length-edge-case-fix&quot;&gt;Content-Length Edge Case Fix&lt;/h3&gt;&lt;/div&gt;
&lt;p&gt;Fixed body parsing when &lt;code dir=&quot;auto&quot;&gt;Content-Length&lt;/code&gt; is the last header before the blank line separator. The header value parser previously relied on finding a &lt;code dir=&quot;auto&quot;&gt;\r&lt;/code&gt; delimiter after the value, which doesn’t exist for the final header. This caused the content length to be silently ignored, resulting in empty request bodies.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;aot-compiler-fixes&quot;&gt;AOT Compiler Fixes&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;This release includes several important fixes to the AOT (ahead-of-time) compiler that improve correctness and VM/AOT parity.&lt;/p&gt;
&lt;div&gt;&lt;h3 id=&quot;method-global-variable-shadowing&quot;&gt;Method Global Variable Shadowing&lt;/h3&gt;&lt;/div&gt;
&lt;p&gt;Methods that reference module-level global variables no longer incorrectly shadow them with local declarations. Previously, a method like:&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;var&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;hookLog&lt;/span&gt;&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;string&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;class&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;ItemRepo&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;extends&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Repository&lt;/span&gt;&lt;span&gt;&amp;#x3C;&lt;/span&gt;&lt;span&gt;Item&lt;/span&gt;&lt;span&gt;&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;override&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;beforeCreate&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;data&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;any&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;any&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;hookLog&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;hookLog&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;beforeCreate,&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;return&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;data&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;would generate a local variable inside each method body in the AOT output, meaning writes to &lt;code dir=&quot;auto&quot;&gt;hookLog&lt;/code&gt; were discarded when the method returned. The global was never modified. Now, the compiler detects that the variable is a known module-level global (not a new &lt;code dir=&quot;auto&quot;&gt;var&lt;/code&gt; declaration) and skips the local declaration — assignments target the module-level variable directly.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Intentional local shadows still work correctly.&lt;/strong&gt; If a method declares &lt;code dir=&quot;auto&quot;&gt;var hookLog = &quot;local&quot;&lt;/code&gt;, the explicit declaration scopes it to the method, so subsequent assignments reference the local as intended.&lt;/p&gt;
&lt;div&gt;&lt;h3 id=&quot;devirt-dispatch-type-assertion-fix&quot;&gt;Devirt Dispatch Type Assertion Fix&lt;/h3&gt;&lt;/div&gt;
&lt;p&gt;The devirtualization (devirt) dispatch system — which converts interface method calls into direct concrete-type calls for performance — had an issue with inferred return types. When a method returns &lt;code dir=&quot;auto&quot;&gt;any&lt;/code&gt; but the compiler’s inference pass determines it returns a closure, the devirt code incorrectly assumed the native method signature had that concrete return type and skipped the type assertion. This caused compilation errors at the native code generation stage.&lt;/p&gt;
&lt;p&gt;The fix restricts inferred-type usage in devirt to only “return this” patterns — where the method signature genuinely returns the concrete type — and leaves all other inferred types (closures, computed values) with proper type assertions.&lt;/p&gt;
&lt;div&gt;&lt;h3 id=&quot;array-literal-type-narrowing-fix&quot;&gt;Array Literal Type Narrowing Fix&lt;/h3&gt;&lt;/div&gt;
&lt;p&gt;Array literals containing maps (e.g. &lt;code dir=&quot;auto&quot;&gt;[{&quot;name&quot;: &quot;Alice&quot;}, {&quot;name&quot;: &quot;Bob&quot;}]&lt;/code&gt;) were incorrectly narrowed to a map-specific array type instead of &lt;code dir=&quot;auto&quot;&gt;[]any&lt;/code&gt;. The narrowed type is not assignable to &lt;code dir=&quot;auto&quot;&gt;[]any&lt;/code&gt; at the native code level, causing compilation failures at call sites expecting the broader type. The fix ensures map-element arrays always use the &lt;code dir=&quot;auto&quot;&gt;[]any&lt;/code&gt; representation.&lt;/p&gt;
&lt;div&gt;&lt;h3 id=&quot;closure-capture-aot-fix&quot;&gt;Closure Capture AOT Fix&lt;/h3&gt;&lt;/div&gt;
&lt;p&gt;Fixed a bug where AOT-compiled closures that capture variables from their enclosing scope could fail to properly capture certain variable types, particularly when the closure was used as a callback in class methods or event handlers. The compiled output now correctly captures all referenced variables regardless of their type.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;array-method-parity--new-methods&quot;&gt;Array Method Parity &amp;#x26; New Methods&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;This release brings full array method parity between the VM and AOT compiler, and adds three new methods.&lt;/p&gt;
&lt;div&gt;&lt;h3 id=&quot;new-methods&quot;&gt;New Methods&lt;/h3&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code dir=&quot;auto&quot;&gt;clear()&lt;/code&gt;&lt;/strong&gt; — removes all elements from an array (VM + AOT)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code dir=&quot;auto&quot;&gt;keys()&lt;/code&gt;&lt;/strong&gt; — returns an array of indices (VM + AOT)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code dir=&quot;auto&quot;&gt;flat()&lt;/code&gt; in AOT&lt;/strong&gt; — was VM-only, now works in both runtimes&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;var&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;nums&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; [&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;];&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;nums&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;clear&lt;/span&gt;&lt;span&gt;();&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;println&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;nums&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;length&lt;/span&gt;&lt;span&gt;); &lt;/span&gt;&lt;span&gt;// 0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;var&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;items&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; [&lt;/span&gt;&lt;span&gt;&quot;a&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&quot;b&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&quot;c&quot;&lt;/span&gt;&lt;span&gt;];&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;println&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;items&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;keys&lt;/span&gt;&lt;span&gt;()); &lt;/span&gt;&lt;span&gt;// [0, 1, 2]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;var&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;nested&lt;/span&gt;&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; [][]&lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; [[&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;], [&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;]];&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;println&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;nested&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;flat&lt;/span&gt;&lt;span&gt;()); &lt;/span&gt;&lt;span&gt;// [1, 2, 3, 4]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;div&gt;&lt;h3 id=&quot;callback-argument-fix&quot;&gt;Callback Argument Fix&lt;/h3&gt;&lt;/div&gt;
&lt;p&gt;Array callback methods (&lt;code dir=&quot;auto&quot;&gt;find&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;map&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;filter&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;forEach&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;some&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;every&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;reduce&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;flatMap&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;findIndex&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;findLast&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;findLastIndex&lt;/code&gt;) now consistently pass two arguments — &lt;code dir=&quot;auto&quot;&gt;(element, index)&lt;/code&gt; — in both VM and AOT. Previously the VM passed three arguments &lt;code dir=&quot;auto&quot;&gt;(element, index, array)&lt;/code&gt; while the AOT passed two, causing behavioral differences between runtimes.&lt;/p&gt;
&lt;p&gt;The callback signature is now &lt;code dir=&quot;auto&quot;&gt;(element, index?)&lt;/code&gt; — the index is always optional:&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;var&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;nums&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; [&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;];&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;// Simple — just the element&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;var&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;found&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;nums&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;find&lt;/span&gt;&lt;span&gt;((&lt;/span&gt;&lt;span&gt;val&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;bool&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&gt;&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;return&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;val&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&gt;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;});&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;// With index&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;nums&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;forEach&lt;/span&gt;&lt;span&gt;((&lt;/span&gt;&lt;span&gt;val&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;idx&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;=&gt;&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;println&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;idx&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&quot;:&quot;&lt;/span&gt;&lt;span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;val&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;});&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;// Reduce — (accumulator, element, index?)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;var&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;sum&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;nums&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;reduce&lt;/span&gt;&lt;span&gt;((&lt;/span&gt;&lt;span&gt;acc&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;val&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&gt;&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;return&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;acc&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;val&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;}, &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;div&gt;&lt;h2 id=&quot;numbers&quot;&gt;Numbers&lt;/h2&gt;&lt;/div&gt;









































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Metric&lt;/th&gt;&lt;th&gt;Count&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Files changed&lt;/td&gt;&lt;td&gt;80+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Lines added&lt;/td&gt;&lt;td&gt;7,806+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Lines removed&lt;/td&gt;&lt;td&gt;2,119+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Golden tests (VM + AOT)&lt;/td&gt;&lt;td&gt;268&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Database tests&lt;/td&gt;&lt;td&gt;540 (4 DBs × VM + AOT)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;New math functions&lt;/td&gt;&lt;td&gt;83&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;New CLI commands&lt;/td&gt;&lt;td&gt;9 (watch, add, install, remove, update, info, list, publish, publish —token)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Platforms supported&lt;/td&gt;&lt;td&gt;5 (macOS arm64/amd64, Linux arm64/amd64, Windows amd64)&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;</content:encoded><category>release</category><category>package-manager</category><category>generics</category><category>math</category></item><item><title>Chuks v0.0.6 — Benchmark Champion</title><link>https://chuks.org/blog/chuks-v006-benchmark-champion/</link><guid isPermaLink="true">https://chuks.org/blog/chuks-v006-benchmark-champion/</guid><description>AOT compiler fixes, typed benchmarks, and Chuks AOT ranked

</description><pubDate>Wed, 18 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;strong&gt;Chuks v0.0.6&lt;/strong&gt; polishes the AOT compiler and proves its performance story with comprehensive benchmarks. This release fixes edge cases, adds 22 new tests, and puts Chuks at the top of the leaderboard.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;1-in-warm-cache-benchmarks&quot;&gt;#1 in Warm-Cache Benchmarks&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;After converting the remaining benchmarks from &lt;code dir=&quot;auto&quot;&gt;any&lt;/code&gt;-typed to fully typed code, Chuks AOT now ranks &lt;strong&gt;#1 overall&lt;/strong&gt; in warm-cache benchmarks across 9 test categories — ahead of Go, Node.js, Python, Java, and C#.&lt;/p&gt;
&lt;p&gt;The warm-cache metric matters because it measures steady-state performance — how fast your code runs after JIT compilation, OS caches, and memory allocation have stabilized. This is what production servers experience.&lt;/p&gt;
&lt;div&gt;&lt;h3 id=&quot;compute-benchmarks-cold-start-wall-clock-time&quot;&gt;Compute Benchmarks (cold-start, wall-clock time)&lt;/h3&gt;&lt;/div&gt;































































































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Benchmark&lt;/th&gt;&lt;th&gt;Chuks VM&lt;/th&gt;&lt;th&gt;Chuks AOT&lt;/th&gt;&lt;th&gt;Java&lt;/th&gt;&lt;th&gt;Node.js&lt;/th&gt;&lt;th&gt;Bun&lt;/th&gt;&lt;th&gt;Python&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Fibonacci (fib(38))&lt;/td&gt;&lt;td&gt;0.276s&lt;/td&gt;&lt;td&gt;0.138s&lt;/td&gt;&lt;td&gt;0.079s&lt;/td&gt;&lt;td&gt;0.300s&lt;/td&gt;&lt;td&gt;0.223s&lt;/td&gt;&lt;td&gt;5.167s&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Matrix Multiply (200²)&lt;/td&gt;&lt;td&gt;0.132s&lt;/td&gt;&lt;td&gt;0.033s&lt;/td&gt;&lt;td&gt;0.031s&lt;/td&gt;&lt;td&gt;0.035s&lt;/td&gt;&lt;td&gt;0.027s&lt;/td&gt;&lt;td&gt;1.062s&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Prime Sieve (1M)&lt;/td&gt;&lt;td&gt;0.138s&lt;/td&gt;&lt;td&gt;0.035s&lt;/td&gt;&lt;td&gt;0.030s&lt;/td&gt;&lt;td&gt;0.029s&lt;/td&gt;&lt;td&gt;0.014s&lt;/td&gt;&lt;td&gt;0.134s&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Quicksort (100K)&lt;/td&gt;&lt;td&gt;0.222s&lt;/td&gt;&lt;td&gt;0.044s&lt;/td&gt;&lt;td&gt;0.034s&lt;/td&gt;&lt;td&gt;0.041s&lt;/td&gt;&lt;td&gt;0.044s&lt;/td&gt;&lt;td&gt;0.144s&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;String Concat (100K)&lt;/td&gt;&lt;td&gt;0.120s&lt;/td&gt;&lt;td&gt;0.034s&lt;/td&gt;&lt;td&gt;0.026s&lt;/td&gt;&lt;td&gt;0.022s&lt;/td&gt;&lt;td&gt;0.010s&lt;/td&gt;&lt;td&gt;0.023s&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Binary Trees (depth 16)&lt;/td&gt;&lt;td&gt;0.177s&lt;/td&gt;&lt;td&gt;0.059s&lt;/td&gt;&lt;td&gt;0.037s&lt;/td&gt;&lt;td&gt;0.038s&lt;/td&gt;&lt;td&gt;0.028s&lt;/td&gt;&lt;td&gt;0.597s&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;N-Body (500K steps)&lt;/td&gt;&lt;td&gt;0.147s&lt;/td&gt;&lt;td&gt;0.046s&lt;/td&gt;&lt;td&gt;0.054s&lt;/td&gt;&lt;td&gt;0.048s&lt;/td&gt;&lt;td&gt;0.037s&lt;/td&gt;&lt;td&gt;4.519s&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;OOP (100K objects)&lt;/td&gt;&lt;td&gt;0.140s&lt;/td&gt;&lt;td&gt;0.035s&lt;/td&gt;&lt;td&gt;0.027s&lt;/td&gt;&lt;td&gt;0.021s&lt;/td&gt;&lt;td&gt;0.011s&lt;/td&gt;&lt;td&gt;0.058s&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Map Operations (100K)&lt;/td&gt;&lt;td&gt;0.163s&lt;/td&gt;&lt;td&gt;0.046s&lt;/td&gt;&lt;td&gt;0.056s&lt;/td&gt;&lt;td&gt;0.040s&lt;/td&gt;&lt;td&gt;0.028s&lt;/td&gt;&lt;td&gt;0.057s&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;blockquote&gt;
&lt;p&gt;Cold-start times include ~130ms macOS page-cache overhead for compiled binaries. Warm-cache results below show the true computation cost.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div&gt;&lt;h3 id=&quot;warm-cache-results--chuks-aot-vs-go-median-of-3-user-time&quot;&gt;Warm-Cache Results — Chuks AOT vs Go (median of 3, user time)&lt;/h3&gt;&lt;/div&gt;









































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Benchmark&lt;/th&gt;&lt;th&gt;Chuks AOT&lt;/th&gt;&lt;th&gt;Go&lt;/th&gt;&lt;th&gt;Ratio&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Fibonacci (fib(38))&lt;/td&gt;&lt;td&gt;0.088s&lt;/td&gt;&lt;td&gt;0.084s&lt;/td&gt;&lt;td&gt;1.05x&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Matrix Multiply (200²)&lt;/td&gt;&lt;td&gt;0.006s&lt;/td&gt;&lt;td&gt;0.005s&lt;/td&gt;&lt;td&gt;1.2x&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Quicksort (100K)&lt;/td&gt;&lt;td&gt;0.007s&lt;/td&gt;&lt;td&gt;0.007s&lt;/td&gt;&lt;td&gt;1.0x&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Binary Trees (depth 16)&lt;/td&gt;&lt;td&gt;0.028s&lt;/td&gt;&lt;td&gt;0.028s&lt;/td&gt;&lt;td&gt;1.0x&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;N-Body (500K steps)&lt;/td&gt;&lt;td&gt;0.018s&lt;/td&gt;&lt;td&gt;0.018s&lt;/td&gt;&lt;td&gt;1.0x&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;5 of 9 benchmarks within 1.0–1.2x of Go. Chuks AOT ranked #1 overall by average position across all 9 benchmarks.&lt;/p&gt;
&lt;div&gt;&lt;h3 id=&quot;parallel-compute--prime-count-to-5m-4-workers&quot;&gt;Parallel Compute — Prime Count to 5M (4 workers)&lt;/h3&gt;&lt;/div&gt;















































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Runtime&lt;/th&gt;&lt;th&gt;Single&lt;/th&gt;&lt;th&gt;Parallel&lt;/th&gt;&lt;th&gt;Speedup&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Chuks AOT&lt;/td&gt;&lt;td&gt;111ms&lt;/td&gt;&lt;td&gt;40ms&lt;/td&gt;&lt;td&gt;2.8x&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Go&lt;/td&gt;&lt;td&gt;117ms&lt;/td&gt;&lt;td&gt;39ms&lt;/td&gt;&lt;td&gt;3.0x&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Java&lt;/td&gt;&lt;td&gt;129ms&lt;/td&gt;&lt;td&gt;49ms&lt;/td&gt;&lt;td&gt;2.6x&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Node.js&lt;/td&gt;&lt;td&gt;182ms&lt;/td&gt;&lt;td&gt;71ms&lt;/td&gt;&lt;td&gt;2.6x&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Bun.js&lt;/td&gt;&lt;td&gt;127ms&lt;/td&gt;&lt;td&gt;51ms&lt;/td&gt;&lt;td&gt;2.5x&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Python&lt;/td&gt;&lt;td&gt;7933ms&lt;/td&gt;&lt;td&gt;2661ms&lt;/td&gt;&lt;td&gt;3.0x&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;div&gt;&lt;h3 id=&quot;why-typed-code-matters&quot;&gt;Why Typed Code Matters&lt;/h3&gt;&lt;/div&gt;
&lt;p&gt;Two benchmarks (&lt;code dir=&quot;auto&quot;&gt;binary_trees&lt;/code&gt; and &lt;code dir=&quot;auto&quot;&gt;map_operations&lt;/code&gt;) were previously written with &lt;code dir=&quot;auto&quot;&gt;any&lt;/code&gt; types, which forced the AOT compiler to use dynamic dispatch. Converting them to explicit types unlocked the full optimization pipeline:&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;// Before (v0.0.5) — forces dynamic dispatch&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;var&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;node&lt;/span&gt;&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;any&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;createNode&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;depth&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;// After (v0.0.6) — direct struct access, zero overhead&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;var&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;node&lt;/span&gt;&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;TreeNode&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;createNode&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;depth&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;This isn’t just a benchmark trick — it’s the same performance difference your production code gets when you use typed variables instead of &lt;code dir=&quot;auto&quot;&gt;any&lt;/code&gt;.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;aot-compiler-fixes&quot;&gt;AOT Compiler Fixes&lt;/h2&gt;&lt;/div&gt;
&lt;div&gt;&lt;h3 id=&quot;nil-comparison-for-typed-pointer-fields&quot;&gt;Nil Comparison for Typed Pointer Fields&lt;/h3&gt;&lt;/div&gt;
&lt;p&gt;When a class had a property typed as another class (a pointer field), comparing it to &lt;code dir=&quot;auto&quot;&gt;null&lt;/code&gt; in AOT mode generated incorrect native code. The compiler was emitting the wrong comparison for reference types vs value types.&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;class&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Node&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;var&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;left&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Node&lt;/span&gt;&lt;span&gt;?&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;null&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;// This comparison now works correctly in AOT&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;if&lt;/span&gt;&lt;span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;node&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;left&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;!=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;null&lt;/span&gt;&lt;span&gt;) {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;// ...&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;div&gt;&lt;h3 id=&quot;windows-upgrade-fix&quot;&gt;Windows Upgrade Fix&lt;/h3&gt;&lt;/div&gt;
&lt;p&gt;The &lt;code dir=&quot;auto&quot;&gt;chuks upgrade&lt;/code&gt; command on Windows was failing with a gzip error because Windows releases are distributed as &lt;code dir=&quot;auto&quot;&gt;.zip&lt;/code&gt; files, not &lt;code dir=&quot;auto&quot;&gt;.tar.gz&lt;/code&gt;. The upgrade logic now detects the platform and uses the correct extraction method.&lt;/p&gt;
&lt;p&gt;Additionally, the Windows binary replacement strategy now uses a rename-to-&lt;code dir=&quot;auto&quot;&gt;.old&lt;/code&gt; approach to handle locked executables — a common issue when the running binary is the one being replaced.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;22-new-tests&quot;&gt;22 New Tests&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;New stability and edge-case tests covering:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Async pipelines&lt;/strong&gt; and try/closure patterns&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Boundary conditions&lt;/strong&gt; and deeply nested structures&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Class hierarchy&lt;/strong&gt; and complex inheritance&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Closure stress testing&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Concurrency patterns&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Data processing pipelines&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Error propagation&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Functional patterns&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Generic advanced patterns&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Interface comprehensive tests&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Real-world patterns&lt;/strong&gt; and recursion algorithms&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Scope isolation&lt;/strong&gt; and state management&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;String edge cases&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Type coercion&lt;/strong&gt; and type system stress&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;All &lt;strong&gt;157 tests&lt;/strong&gt; pass in both VM and AOT modes.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;numbers&quot;&gt;Numbers&lt;/h2&gt;&lt;/div&gt;





























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Metric&lt;/th&gt;&lt;th&gt;Count&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Golden tests (VM + AOT)&lt;/td&gt;&lt;td&gt;157&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;New tests added&lt;/td&gt;&lt;td&gt;22&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Benchmark categories&lt;/td&gt;&lt;td&gt;9&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Benchmark ranking&lt;/td&gt;&lt;td&gt;#1 overall (warm-cache)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Platforms supported&lt;/td&gt;&lt;td&gt;5 (macOS arm64/amd64, Linux arm64/amd64, Windows amd64)&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;</content:encoded><category>release</category><category>performance</category><category>aot</category></item><item><title>Chuks v0.0.5 — Production Hardening</title><link>https://chuks.org/blog/chuks-v005-production-hardening/</link><guid isPermaLink="true">https://chuks.org/blog/chuks-v005-production-hardening/</guid><description>Graceful shutdown, thread-safe concurrency, and the first official benchmarks. Chuks gets serious about production readiness.

</description><pubDate>Sun, 15 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;strong&gt;Chuks v0.0.5&lt;/strong&gt; is about reliability. This release fixes fundamental concurrency issues, adds graceful shutdown, and publishes the first official performance benchmarks.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;graceful-shutdown&quot;&gt;Graceful Shutdown&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;HTTP servers now handle &lt;code dir=&quot;auto&quot;&gt;SIGINT&lt;/code&gt; and &lt;code dir=&quot;auto&quot;&gt;SIGTERM&lt;/code&gt; correctly:&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;import&lt;/span&gt;&lt;span&gt;&lt;span&gt; { &lt;/span&gt;&lt;span&gt;createServer&lt;/span&gt;&lt;span&gt; } &lt;/span&gt;&lt;/span&gt;&lt;span&gt;from&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;std/http&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;function&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;main&lt;/span&gt;&lt;span&gt;() {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;var&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;app&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;createServer&lt;/span&gt;&lt;span&gt;()&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;app&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;get&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;/&quot;&lt;/span&gt;&lt;span&gt;, (&lt;/span&gt;&lt;span&gt;req&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;res&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;=&gt;&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;res&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;json&lt;/span&gt;&lt;span&gt;&lt;span&gt;({ &lt;/span&gt;&lt;span&gt;status&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&quot;ok&quot;&lt;/span&gt;&lt;span&gt; })&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;})&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;app&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;listen&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;8080&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;// Ctrl+C → graceful stop, no zombie processes&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;When you press Ctrl+C or send a termination signal:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The server stops accepting new connections&lt;/li&gt;
&lt;li&gt;In-flight requests complete&lt;/li&gt;
&lt;li&gt;The HTTP engine shuts down cleanly&lt;/li&gt;
&lt;li&gt;No zombie processes, no leaked tasks&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;&lt;h3 id=&quot;required-port-argument&quot;&gt;Required Port Argument&lt;/h3&gt;&lt;/div&gt;
&lt;p&gt;&lt;code dir=&quot;auto&quot;&gt;app.listen()&lt;/code&gt; now requires an explicit port — no more implicit default of 3000. If the port is already in use, you get a helpful error message with an &lt;code dir=&quot;auto&quot;&gt;lsof&lt;/code&gt; hint to find the conflicting process.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;concurrency-fixes&quot;&gt;Concurrency Fixes&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;Two critical concurrency issues were identified and fixed:&lt;/p&gt;
&lt;div&gt;&lt;h3 id=&quot;thread-safe-task-map&quot;&gt;Thread-Safe Task Map&lt;/h3&gt;&lt;/div&gt;
&lt;p&gt;The global task map used for tracking async tasks was not thread-safe. Under high concurrency, this caused data races and unpredictable behavior.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Fix&lt;/strong&gt;: Replaced the global map with a concurrent map, keyed by task ID. Each concurrent execution context now has isolated task tracking — no shared mutable state.&lt;/p&gt;
&lt;div&gt;&lt;h3 id=&quot;context-propagation&quot;&gt;Context Propagation&lt;/h3&gt;&lt;/div&gt;
&lt;p&gt;Async functions and &lt;code dir=&quot;auto&quot;&gt;spawn&lt;/code&gt; tasks weren’t inheriting the parent context correctly. This meant cancellation signals didn’t propagate to child tasks, and HTTP request contexts weren’t available inside async handler code.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Fix&lt;/strong&gt;: Both the VM and AOT paths now derive child contexts from the parent task, ensuring cancellation cascades correctly through the entire task tree.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;benchmark-results&quot;&gt;Benchmark Results&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;The first official CPU benchmarks are in:&lt;/p&gt;









































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Benchmark&lt;/th&gt;&lt;th&gt;Chuks AOT&lt;/th&gt;&lt;th&gt;Node.js&lt;/th&gt;&lt;th&gt;Python&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Fibonacci (35)&lt;/td&gt;&lt;td&gt;52ms&lt;/td&gt;&lt;td&gt;78ms&lt;/td&gt;&lt;td&gt;2,410ms&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;N-Body (500K)&lt;/td&gt;&lt;td&gt;68ms&lt;/td&gt;&lt;td&gt;92ms&lt;/td&gt;&lt;td&gt;8,120ms&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Quicksort (1M)&lt;/td&gt;&lt;td&gt;112ms&lt;/td&gt;&lt;td&gt;145ms&lt;/td&gt;&lt;td&gt;3,890ms&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Binary Trees (15)&lt;/td&gt;&lt;td&gt;89ms&lt;/td&gt;&lt;td&gt;105ms&lt;/td&gt;&lt;td&gt;1,250ms&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Prime Sieve (1M)&lt;/td&gt;&lt;td&gt;156ms&lt;/td&gt;&lt;td&gt;168ms&lt;/td&gt;&lt;td&gt;4,670ms&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;Chuks AOT matches or beats Node.js across all benchmarks. For typed scalar workloads (fibonacci, n-body, quicksort), it’s within striking distance of native compiled languages. Array-heavy benchmarks (binary trees, prime sieve) have a performance gap due to dynamic dispatch — a known ceiling we’re working to reduce.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;new-language-features&quot;&gt;New Language Features&lt;/h2&gt;&lt;/div&gt;
&lt;div&gt;&lt;h3 id=&quot;short-circuit-evaluation&quot;&gt;Short-Circuit Evaluation&lt;/h3&gt;&lt;/div&gt;
&lt;p&gt;&lt;code dir=&quot;auto&quot;&gt;&amp;#x26;&amp;#x26;&lt;/code&gt; and &lt;code dir=&quot;auto&quot;&gt;||&lt;/code&gt; now properly short-circuit:&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;var&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;result&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;false&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&amp;#x26;&amp;#x26;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;expensiveCall&lt;/span&gt;&lt;span&gt;() &lt;/span&gt;&lt;span&gt;// expensiveCall() is never executed&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;div&gt;&lt;h3 id=&quot;bitwise-operators&quot;&gt;Bitwise Operators&lt;/h3&gt;&lt;/div&gt;
&lt;p&gt;Full support for &lt;code dir=&quot;auto&quot;&gt;&amp;#x26;&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;|&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;^&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;~&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;&amp;#x3C;&amp;#x3C;&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;&gt;&gt;&lt;/code&gt; — in both VM and AOT:&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;var&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;flags&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;0b1010&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;|&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;0b0101&lt;/span&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;// 0b1111&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;var&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;masked&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;flags&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;#x26;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;0xFF&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;var&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;shifted&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&amp;#x3C;&amp;#x3C;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;          &lt;/span&gt;&lt;span&gt;// 256&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;div&gt;&lt;h3 id=&quot;string-escape-sequences&quot;&gt;String Escape Sequences&lt;/h3&gt;&lt;/div&gt;
&lt;p&gt;&lt;code dir=&quot;auto&quot;&gt;\n&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;\t&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;\r&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;\\&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;\&quot;&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;\0&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;\x41&lt;/code&gt; (hex), &lt;code dir=&quot;auto&quot;&gt;\u0041&lt;/code&gt; (unicode) — all standard escapes work.&lt;/p&gt;
&lt;div&gt;&lt;h3 id=&quot;null-safe-index-access&quot;&gt;Null-Safe Index Access&lt;/h3&gt;&lt;/div&gt;
&lt;p&gt;Indexing a &lt;code dir=&quot;auto&quot;&gt;null&lt;/code&gt; value now returns &lt;code dir=&quot;auto&quot;&gt;null&lt;/code&gt; instead of a fatal runtime error:&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;var&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;arr&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;null&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;println&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;arr&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;])   &lt;/span&gt;&lt;span&gt;// null (no crash)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;div&gt;&lt;h3 id=&quot;map-dot-notation-access&quot;&gt;Map Dot-Notation Access&lt;/h3&gt;&lt;/div&gt;
&lt;p&gt;Maps support dot-notation for reading and writing keys, and missing keys return &lt;code dir=&quot;auto&quot;&gt;null&lt;/code&gt;:&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;var&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;config&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; { &lt;/span&gt;&lt;span&gt;&quot;host&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;localhost&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&quot;port&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;6379&lt;/span&gt;&lt;span&gt; }&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;println&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;config&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;host&lt;/span&gt;&lt;span&gt;)       &lt;/span&gt;&lt;/span&gt;&lt;span&gt;// &quot;localhost&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;println&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;config&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;password&lt;/span&gt;&lt;span&gt;)   &lt;/span&gt;&lt;/span&gt;&lt;span&gt;// null (missing key)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;config&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;host&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;127.0.0.1&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;div&gt;&lt;h3 id=&quot;cryptosha1-builtin&quot;&gt;&lt;code dir=&quot;auto&quot;&gt;crypto.sha1&lt;/code&gt; Builtin&lt;/h3&gt;&lt;/div&gt;
&lt;p&gt;New SHA-1 hash function in the crypto standard library:&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;import&lt;/span&gt;&lt;span&gt;&lt;span&gt; { &lt;/span&gt;&lt;span&gt;crypto&lt;/span&gt;&lt;span&gt; } &lt;/span&gt;&lt;/span&gt;&lt;span&gt;from&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;std/crypto&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;var&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;hash&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;crypto&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;sha1&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;hello world&quot;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;println&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;hash&lt;/span&gt;&lt;span&gt;)  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;// &quot;2aae6c35c94fcfb415dbe95f408b9ce91ee846ed&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;div&gt;&lt;h3 id=&quot;trycatchfinally-fixes&quot;&gt;Try/Catch/Finally Fixes&lt;/h3&gt;&lt;/div&gt;
&lt;p&gt;&lt;code dir=&quot;auto&quot;&gt;try/catch&lt;/code&gt; now properly catches runtime errors. &lt;code dir=&quot;auto&quot;&gt;finally&lt;/code&gt; blocks with &lt;code dir=&quot;auto&quot;&gt;return&lt;/code&gt; work correctly. Error objects support &lt;code dir=&quot;auto&quot;&gt;code&lt;/code&gt; and &lt;code dir=&quot;auto&quot;&gt;data&lt;/code&gt; fields:&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;try&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;throw&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;new&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Error&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;validation failed&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&quot;VALIDATION_ERROR&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&quot;email field&quot;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;} &lt;/span&gt;&lt;span&gt;catch&lt;/span&gt;&lt;span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;e&lt;/span&gt;&lt;span&gt;) {&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;println&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;e&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;message&lt;/span&gt;&lt;span&gt;)  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;// &quot;validation failed&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;println&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;e&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;code&lt;/span&gt;&lt;span&gt;)     &lt;/span&gt;&lt;/span&gt;&lt;span&gt;// &quot;VALIDATION_ERROR&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;println&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;e&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;data&lt;/span&gt;&lt;span&gt;)     &lt;/span&gt;&lt;/span&gt;&lt;span&gt;// &quot;email field&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;} &lt;/span&gt;&lt;span&gt;finally&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;println&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;cleanup ran&quot;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;div&gt;&lt;h3 id=&quot;two-tier-builtin-system&quot;&gt;Two-Tier Builtin System&lt;/h3&gt;&lt;/div&gt;
&lt;p&gt;Built-in functions now have a deprecation mechanism. Old names continue to work with a warning, while new names follow consistent conventions.&lt;/p&gt;
&lt;div&gt;&lt;h3 id=&quot;build-progress-spinner&quot;&gt;Build Progress Spinner&lt;/h3&gt;&lt;/div&gt;
&lt;p&gt;&lt;code dir=&quot;auto&quot;&gt;chuks build&lt;/code&gt; now shows a visual spinner with phase messages during AOT compilation, giving feedback on each compilation stage.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;http-benchmarks&quot;&gt;HTTP Benchmarks&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;The first official HTTP benchmarks are in:&lt;/p&gt;
&lt;div&gt;&lt;h3 id=&quot;wrk-4-threads-100-connections-10s&quot;&gt;wrk (4 threads, 100 connections, 10s)&lt;/h3&gt;&lt;/div&gt;





































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Runtime&lt;/th&gt;&lt;th&gt;Req/s&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Chuks AOT&lt;/td&gt;&lt;td&gt;182,000&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Go (gnet)&lt;/td&gt;&lt;td&gt;176,000&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Bun&lt;/td&gt;&lt;td&gt;173,000&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Node.js&lt;/td&gt;&lt;td&gt;115,000&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Java (Javalin)&lt;/td&gt;&lt;td&gt;111,000&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Go (net/http)&lt;/td&gt;&lt;td&gt;84,000&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Python (Flask)&lt;/td&gt;&lt;td&gt;5,000&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;div&gt;&lt;h3 id=&quot;hey-100k-requests-200-concurrency&quot;&gt;hey (100K requests, 200 concurrency)&lt;/h3&gt;&lt;/div&gt;

































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Runtime&lt;/th&gt;&lt;th&gt;Req/s&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Chuks AOT&lt;/td&gt;&lt;td&gt;143,000&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Go (gnet)&lt;/td&gt;&lt;td&gt;142,000&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Bun&lt;/td&gt;&lt;td&gt;106,000&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Java (Javalin)&lt;/td&gt;&lt;td&gt;92,000&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Node.js&lt;/td&gt;&lt;td&gt;89,000&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Python (Flask)&lt;/td&gt;&lt;td&gt;4,000&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;div&gt;&lt;h2 id=&quot;numbers&quot;&gt;Numbers&lt;/h2&gt;&lt;/div&gt;





























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Metric&lt;/th&gt;&lt;th&gt;Count&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Golden tests (VM + AOT)&lt;/td&gt;&lt;td&gt;135&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;HTTP integration tests&lt;/td&gt;&lt;td&gt;60&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Async bridge tests&lt;/td&gt;&lt;td&gt;24&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Shutdown tests&lt;/td&gt;&lt;td&gt;12&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Concurrency bugs fixed&lt;/td&gt;&lt;td&gt;2 critical&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;</content:encoded><category>release</category><category>concurrency</category><category>performance</category></item><item><title>Chuks v0.0.4 — The HTTP Release</title><link>https://chuks.org/blog/chuks-v004-the-http-release/</link><guid isPermaLink="true">https://chuks.org/blog/chuks-v004-the-http-release/</guid><description>A major step forward — Fiber-like HTTP API, channels, typed request parsing, 127 golden tests, silent toolchain auto-installer, and the chuks upgrade command.

</description><pubDate>Fri, 13 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;strong&gt;Chuks v0.0.4&lt;/strong&gt; is the biggest release yet. The HTTP server gets a complete API overhaul, the testing infrastructure matures with 127 golden tests, and the toolchain gains self-update capabilities.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;highlights&quot;&gt;Highlights&lt;/h2&gt;&lt;/div&gt;
&lt;div&gt;&lt;h3 id=&quot;fiber-inspired-http-api&quot;&gt;Fiber-Inspired HTTP API&lt;/h3&gt;&lt;/div&gt;
&lt;p&gt;The HTTP server now has a rich, Express/Fiber-style API:&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;import&lt;/span&gt;&lt;span&gt;&lt;span&gt; { &lt;/span&gt;&lt;span&gt;createServer&lt;/span&gt;&lt;span&gt; } &lt;/span&gt;&lt;/span&gt;&lt;span&gt;from&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;std/http&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;function&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;main&lt;/span&gt;&lt;span&gt;() {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;var&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;app&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;createServer&lt;/span&gt;&lt;span&gt;()&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;app&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;get&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;/users/:id&quot;&lt;/span&gt;&lt;span&gt;, (&lt;/span&gt;&lt;span&gt;req&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;res&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;=&gt;&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;var&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;id&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;req&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;params&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;id&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;var&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;page&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;req&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;query&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;page&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;res&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;status&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;200&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;res&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;header&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;X-Request-Id&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&quot;abc123&quot;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;res&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;cookie&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;session&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&quot;xyz&quot;&lt;/span&gt;&lt;span&gt;&lt;span&gt;, { &lt;/span&gt;&lt;span&gt;httpOnly&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;/span&gt;&lt;span&gt;true&lt;/span&gt;&lt;span&gt; })&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;res&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;json&lt;/span&gt;&lt;span&gt;&lt;span&gt;({ &lt;/span&gt;&lt;span&gt;id&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;id&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;page&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;page&lt;/span&gt;&lt;span&gt; })&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;})&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;app&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;listen&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;8080&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;New response methods&lt;/strong&gt;: &lt;code dir=&quot;auto&quot;&gt;res.redirect()&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;res.type()&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;res.cookie()&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;res.clearCookie()&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;New request properties&lt;/strong&gt;: &lt;code dir=&quot;auto&quot;&gt;req.ip&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;req.hostname&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;req.protocol&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;req.secure&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;req.originalUrl&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;req.cookie&lt;/code&gt;&lt;/p&gt;
&lt;div&gt;&lt;h3 id=&quot;typed-request-body-parsing&quot;&gt;Typed Request Body Parsing&lt;/h3&gt;&lt;/div&gt;
&lt;p&gt;Parse incoming JSON directly into a typed structure:&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;dataType&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;CreateUser&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;name&lt;/span&gt;&lt;span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;string&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;email&lt;/span&gt;&lt;span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;string&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;app&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;post&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;/users&quot;&lt;/span&gt;&lt;span&gt;, (&lt;/span&gt;&lt;span&gt;req&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;res&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;=&gt;&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;var&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;user&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;req&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;parseBody&lt;/span&gt;&lt;span&gt;&amp;#x3C;&lt;/span&gt;&lt;span&gt;CreateUser&lt;/span&gt;&lt;span&gt;&gt;()&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;res&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;json&lt;/span&gt;&lt;span&gt;&lt;span&gt;({ &lt;/span&gt;&lt;span&gt;created&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;user&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;name&lt;/span&gt;&lt;span&gt; })&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;})&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;div&gt;&lt;h3 id=&quot;file-uploads&quot;&gt;File Uploads&lt;/h3&gt;&lt;/div&gt;
&lt;p&gt;Full multipart/form-data support with &lt;code dir=&quot;auto&quot;&gt;req.files&lt;/code&gt; and &lt;code dir=&quot;auto&quot;&gt;req.formData&lt;/code&gt;:&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;app&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;post&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;/upload&quot;&lt;/span&gt;&lt;span&gt;, (&lt;/span&gt;&lt;span&gt;req&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;res&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;=&gt;&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;var&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;file&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;req&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;files&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;println&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;file&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;filename&lt;/span&gt;&lt;span&gt;)   &lt;/span&gt;&lt;/span&gt;&lt;span&gt;// &quot;photo.jpg&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;println&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;file&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;extension&lt;/span&gt;&lt;span&gt;)  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;// &quot;.jpg&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;println&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;file&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;size&lt;/span&gt;&lt;span&gt;)       &lt;/span&gt;&lt;/span&gt;&lt;span&gt;// 1048576&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;res&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;json&lt;/span&gt;&lt;span&gt;&lt;span&gt;({ &lt;/span&gt;&lt;span&gt;uploaded&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;file&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;filename&lt;/span&gt;&lt;span&gt; })&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;})&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;div&gt;&lt;h3 id=&quot;channels&quot;&gt;Channels&lt;/h3&gt;&lt;/div&gt;
&lt;p&gt;First-class communication between concurrent tasks:&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;import&lt;/span&gt;&lt;span&gt;&lt;span&gt; { &lt;/span&gt;&lt;span&gt;Channel&lt;/span&gt;&lt;span&gt; } &lt;/span&gt;&lt;/span&gt;&lt;span&gt;from&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;std/channel&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;async&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;function&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;producer&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;ch&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Channel&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Task&lt;/span&gt;&lt;span&gt;&amp;#x3C;&lt;/span&gt;&lt;span&gt;void&lt;/span&gt;&lt;span&gt;&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;ch&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;send&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;hello&quot;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;ch&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;send&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;world&quot;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;ch&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;close&lt;/span&gt;&lt;span&gt;()&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;function&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;main&lt;/span&gt;&lt;span&gt;() {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;var&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;ch&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;new&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Channel&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;spawn&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;producer&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;ch&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;var&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;msg&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;ch&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;receive&lt;/span&gt;&lt;span&gt;()&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;println&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;msg&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;/span&gt;&lt;span&gt;// &quot;hello&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;div&gt;&lt;h3 id=&quot;default-parameters&quot;&gt;Default Parameters&lt;/h3&gt;&lt;/div&gt;
&lt;p&gt;Functions can now have default parameter values:&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;function&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;greet&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;name&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;string&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;World&quot;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;string&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;return&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;Hello, &quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;name&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;!&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;println&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;greet&lt;/span&gt;&lt;span&gt;())        &lt;/span&gt;&lt;span&gt;// Hello, World!&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;println&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;greet&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;Chuks&quot;&lt;/span&gt;&lt;span&gt;)) &lt;/span&gt;&lt;span&gt;// Hello, Chuks!&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;div&gt;&lt;h3 id=&quot;function-type-annotations&quot;&gt;Function Type Annotations&lt;/h3&gt;&lt;/div&gt;
&lt;p&gt;Arrow function type syntax in function signatures:&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;function&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;apply&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;value&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;transform&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;=&gt;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;return&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;transform&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;value&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;var&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;result&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;apply&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;, (&lt;/span&gt;&lt;span&gt;x&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;x&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;div&gt;&lt;h3 id=&quot;self-update-command&quot;&gt;Self-Update Command&lt;/h3&gt;&lt;/div&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;chuks&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;upgrade&lt;/span&gt;&lt;span&gt;              &lt;/span&gt;&lt;span&gt;# upgrade to latest&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;chuks&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;upgrade&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;0.0.3&lt;/span&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;# install a specific version&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;chuks&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;upgrade&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--list&lt;/span&gt;&lt;span&gt;       &lt;/span&gt;&lt;span&gt;# list all available versions&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Downloads the correct platform binary, extracts it, and atomically replaces the current executable. Handles macOS codesign and xattr automatically.&lt;/p&gt;
&lt;div&gt;&lt;h3 id=&quot;silent-toolchain-auto-installer&quot;&gt;Silent Toolchain Auto-Installer&lt;/h3&gt;&lt;/div&gt;
&lt;p&gt;When you run &lt;code dir=&quot;auto&quot;&gt;chuks build&lt;/code&gt; for the first time, Chuks automatically downloads and installs everything it needs. No prompts, no manual setup — it just works.&lt;/p&gt;
&lt;div&gt;&lt;h3 id=&quot;testing-infrastructure&quot;&gt;Testing Infrastructure&lt;/h3&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;127 golden tests&lt;/strong&gt; passing on both VM and AOT&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;60 HTTP integration tests&lt;/strong&gt; covering routes, middleware, uploads, error handling&lt;/li&gt;
&lt;li&gt;Tests run in parallel, comparing VM and AOT output for behavioral parity&lt;/li&gt;
&lt;li&gt;Nondeterministic tests (timestamps, random) handled gracefully&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;h2 id=&quot;bug-fixes&quot;&gt;Bug Fixes&lt;/h2&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;AOT scoping&lt;/strong&gt;: Variables declared inside &lt;code dir=&quot;auto&quot;&gt;if/else&lt;/code&gt; branches within loops now scoped correctly&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TCP fragmentation&lt;/strong&gt;: HTTP server correctly reassembles TCP segments split across network callbacks&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AOT type assertions&lt;/strong&gt;: Fixed invalid type assertions on &lt;code dir=&quot;auto&quot;&gt;Request.params&lt;/code&gt;/&lt;code dir=&quot;auto&quot;&gt;query&lt;/code&gt; struct fields&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Error handling&lt;/strong&gt;: &lt;code dir=&quot;auto&quot;&gt;finally&lt;/code&gt; block with &lt;code dir=&quot;auto&quot;&gt;return&lt;/code&gt; and &lt;code dir=&quot;auto&quot;&gt;throw-in-finally&lt;/code&gt; now behave correctly&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Map access&lt;/strong&gt;: Dot-notation access/set on maps works properly; missing keys return &lt;code dir=&quot;auto&quot;&gt;null&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;5 AOT transpiler limitations&lt;/strong&gt; resolved (string conversion, array references, bitwise operators)&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;h2 id=&quot;numbers&quot;&gt;Numbers&lt;/h2&gt;&lt;/div&gt;

























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Metric&lt;/th&gt;&lt;th&gt;Count&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Golden tests (VM + AOT)&lt;/td&gt;&lt;td&gt;127&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;HTTP integration tests&lt;/td&gt;&lt;td&gt;60&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;AOT divergences fixed&lt;/td&gt;&lt;td&gt;23 → 0&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;New commits&lt;/td&gt;&lt;td&gt;25&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;</content:encoded><category>release</category><category>http</category><category>testing</category></item><item><title>Chuks v0.0.3 — LSP, HTTP Enhancements &amp; Community Foundations</title><link>https://chuks.org/blog/chuks-v003-community-foundations/</link><guid isPermaLink="true">https://chuks.org/blog/chuks-v003-community-foundations/</guid><description>Rich LSP hover and completion docs, HTTP API enhancements, real-world edge-case fixes, and community infrastructure.

</description><pubDate>Sun, 08 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;strong&gt;Chuks v0.0.3&lt;/strong&gt; brings a major leap in developer experience with a rich Language Server, expands the HTTP API, squashes edge-case bugs, and lays the groundwork for community collaboration.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;lsp-server--rich-hover--completion-docs&quot;&gt;LSP Server — Rich Hover &amp;#x26; Completion Docs&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;The built-in Language Server now provides detailed hover documentation and completion item documentation for all built-in types, functions, keywords, and methods — no extension updates required.&lt;/p&gt;
&lt;div&gt;&lt;h3 id=&quot;hover-documentation&quot;&gt;Hover Documentation&lt;/h3&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;25+ built-in types&lt;/strong&gt; — &lt;code dir=&quot;auto&quot;&gt;int&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;float&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;string&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;bool&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;any&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;void&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;null&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;map&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;Error&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;HttpServer&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;Request&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;Response&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;Task&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;Context&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;Channel&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;dataType&lt;/code&gt;, and all numeric types (&lt;code dir=&quot;auto&quot;&gt;int8&lt;/code&gt;–&lt;code dir=&quot;auto&quot;&gt;uint64&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;byte&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;rune&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;float32&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;float64&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;20+ built-in functions&lt;/strong&gt; — &lt;code dir=&quot;auto&quot;&gt;println&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;print&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;length&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;append&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;delete&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;copy&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;clear&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;typeof&lt;/code&gt;, and more&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;35+ keywords&lt;/strong&gt; — &lt;code dir=&quot;auto&quot;&gt;var&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;const&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;function&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;class&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;interface&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;enum&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;if&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;else&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;for&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;while&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;return&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;try&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;catch&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;finally&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;throw&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;async&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;await&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;spawn&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;import&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;export&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;new&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;extends&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;implements&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;abstract&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;final&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;override&lt;/code&gt;, access modifiers, &lt;code dir=&quot;auto&quot;&gt;switch&lt;/code&gt;/&lt;code dir=&quot;auto&quot;&gt;case&lt;/code&gt;/&lt;code dir=&quot;auto&quot;&gt;default&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;break&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;continue&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;constructor&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Method/property docs&lt;/strong&gt; for &lt;code dir=&quot;auto&quot;&gt;string&lt;/code&gt; (14 methods), &lt;code dir=&quot;auto&quot;&gt;array&lt;/code&gt; (13), &lt;code dir=&quot;auto&quot;&gt;map&lt;/code&gt; (7), &lt;code dir=&quot;auto&quot;&gt;HttpServer&lt;/code&gt; (9), &lt;code dir=&quot;auto&quot;&gt;Request&lt;/code&gt; (8), &lt;code dir=&quot;auto&quot;&gt;Response&lt;/code&gt; (9), &lt;code dir=&quot;auto&quot;&gt;Task&lt;/code&gt; (8), &lt;code dir=&quot;auto&quot;&gt;Context&lt;/code&gt; (6) — with parameters, return types, examples, and categories&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;h3 id=&quot;completion-documentation&quot;&gt;Completion Documentation&lt;/h3&gt;&lt;/div&gt;
&lt;p&gt;All completion items (string, array, map, Task, Context, HttpServer, Request, Response methods) now include inline documentation sourced from the hover doc system.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;http-api-enhancements&quot;&gt;HTTP API Enhancements&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;New response and request capabilities:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Response&lt;/strong&gt;: &lt;code dir=&quot;auto&quot;&gt;redirect()&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;type()&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;cookie()&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;clearCookie()&lt;/code&gt; methods&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Request&lt;/strong&gt;: &lt;code dir=&quot;auto&quot;&gt;ip&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;originalUrl&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;protocol&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;hostname&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;secure&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;cookie()&lt;/code&gt; properties/methods&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code dir=&quot;auto&quot;&gt;parseBody(DataType)&lt;/code&gt;&lt;/strong&gt;: Typed HTTP request body parsing into dataType instances&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;app&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;post&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;/login&quot;&lt;/span&gt;&lt;span&gt;, (&lt;/span&gt;&lt;span&gt;req&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;res&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;=&gt;&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;var&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;creds&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;req&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;parseBody&lt;/span&gt;&lt;span&gt;&amp;#x3C;&lt;/span&gt;&lt;span&gt;LoginRequest&lt;/span&gt;&lt;span&gt;&gt;()&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;res&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;cookie&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;session&quot;&lt;/span&gt;&lt;span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;token&lt;/span&gt;&lt;span&gt;, { &lt;/span&gt;&lt;span&gt;httpOnly&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;/span&gt;&lt;span&gt;true&lt;/span&gt;&lt;span&gt; })&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;res&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;json&lt;/span&gt;&lt;span&gt;&lt;span&gt;({ &lt;/span&gt;&lt;span&gt;user&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;creds&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;email&lt;/span&gt;&lt;span&gt; })&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;})&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;div&gt;&lt;h2 id=&quot;bug-fixes&quot;&gt;Bug Fixes&lt;/h2&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code dir=&quot;auto&quot;&gt;req.params&lt;/code&gt; / &lt;code dir=&quot;auto&quot;&gt;req.query&lt;/code&gt;&lt;/strong&gt; now typed as &lt;code dir=&quot;auto&quot;&gt;map[string]string&lt;/code&gt; — indexing infers &lt;code dir=&quot;auto&quot;&gt;string&lt;/code&gt; automatically, no explicit annotation needed&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Index expression type inference&lt;/strong&gt; — indexing a &lt;code dir=&quot;auto&quot;&gt;map[K]V&lt;/code&gt; returns &lt;code dir=&quot;auto&quot;&gt;V&lt;/code&gt;, indexing an array returns the element type&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code dir=&quot;auto&quot;&gt;finally&lt;/code&gt; block&lt;/strong&gt; with &lt;code dir=&quot;auto&quot;&gt;return&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;throw-in-finally&lt;/code&gt;, and array reference semantics fixed&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AOT scoping&lt;/strong&gt; for variables declared inside &lt;code dir=&quot;auto&quot;&gt;if/else&lt;/code&gt; branches within loops&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;5 AOT transpiler limitations&lt;/strong&gt; resolved&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;20 real-world edge cases&lt;/strong&gt; added to the test suite&lt;/li&gt;
&lt;li&gt;All &lt;strong&gt;116 golden tests&lt;/strong&gt; pass in both VM and AOT modes&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;h2 id=&quot;architecture&quot;&gt;Architecture&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;The VS Code extension has been slimmed to LSP-only — all intelligence (hover, completion, definition, symbols, signature help, code actions) is served by the built-in LSP server. The extension only registers the LSP client, debug adapter, and ASI linting.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;community-infrastructure&quot;&gt;Community Infrastructure&lt;/h2&gt;&lt;/div&gt;
&lt;div&gt;&lt;h3 id=&quot;issue-templates&quot;&gt;Issue Templates&lt;/h3&gt;&lt;/div&gt;
&lt;p&gt;The &lt;a href=&quot;https://github.com/chuks-programming-language&quot;&gt;GitHub repository&lt;/a&gt; now includes structured issue templates:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Bug Reports&lt;/strong&gt; — Reproducible steps, expected vs actual behavior, platform info&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Feature Requests&lt;/strong&gt; — Describe the problem, propose a solution&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;General Feedback&lt;/strong&gt; — Share your experience with the language&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;h3 id=&quot;improved-readme&quot;&gt;Improved README&lt;/h3&gt;&lt;/div&gt;
&lt;p&gt;The project README now includes feature highlights with code examples, performance benchmarks, platform support matrix, and installation instructions for all platforms.&lt;/p&gt;</content:encoded><category>release</category><category>lsp</category><category>http</category></item><item><title>Chuks v0.0.2 — Hello, World</title><link>https://chuks.org/blog/chuks-v002-hello-world/</link><guid isPermaLink="true">https://chuks.org/blog/chuks-v002-hello-world/</guid><description>The first public release of the Chuks programming language. A modern backend language with dual execution modes, a high-performance HTTP server, and a growing standard library.

</description><pubDate>Sat, 07 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;We’re excited to announce &lt;strong&gt;Chuks v0.0.2&lt;/strong&gt; — the first public release of the Chuks programming language.&lt;/p&gt;
&lt;p&gt;Chuks is a modern, statically-typed backend language built for real-world services. It ships with two execution modes, a built-in HTTP server, and everything you need to start building APIs today.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;whats-in-this-release&quot;&gt;What’s in This Release&lt;/h2&gt;&lt;/div&gt;
&lt;div&gt;&lt;h3 id=&quot;dual-execution-vm-and-aot-compiler&quot;&gt;Dual Execution: VM and AOT Compiler&lt;/h3&gt;&lt;/div&gt;
&lt;p&gt;Chuks has two ways to run your code:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code dir=&quot;auto&quot;&gt;chuks run&lt;/code&gt;&lt;/strong&gt; — Interprets your code in a stack-based bytecode VM. Fast startup, great for development.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code dir=&quot;auto&quot;&gt;chuks build&lt;/code&gt;&lt;/strong&gt; — Compiles your Chuks code ahead-of-time to a native binary. Production-ready performance.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Both modes execute the same language with the same semantics.&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;hello.chuks&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;function&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;main&lt;/span&gt;&lt;span&gt;() {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;println&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;Hello from Chuks!&quot;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;div&gt;&lt;h3 id=&quot;core-language&quot;&gt;Core Language&lt;/h3&gt;&lt;/div&gt;
&lt;p&gt;The language ships with a rich feature set from day one:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Types&lt;/strong&gt;: &lt;code dir=&quot;auto&quot;&gt;int&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;float&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;string&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;bool&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;any&lt;/code&gt;, typed arrays &lt;code dir=&quot;auto&quot;&gt;[]T&lt;/code&gt;, typed maps &lt;code dir=&quot;auto&quot;&gt;map[K]V&lt;/code&gt;, nullable &lt;code dir=&quot;auto&quot;&gt;T?&lt;/code&gt;, union types &lt;code dir=&quot;auto&quot;&gt;T | U&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Classes&lt;/strong&gt;: constructors, inheritance, interfaces, abstract classes, generics, access modifiers&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Functions&lt;/strong&gt;: closures, arrow functions, default parameters, variadic arguments&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Control flow&lt;/strong&gt;: &lt;code dir=&quot;auto&quot;&gt;if/else&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;for&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;while&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;switch/case&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;try/catch/finally&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Concurrency&lt;/strong&gt;: &lt;code dir=&quot;auto&quot;&gt;async/await&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;spawn&lt;/code&gt; for lightweight concurrent tasks, &lt;code dir=&quot;auto&quot;&gt;Task.all()&lt;/code&gt;, channels, structured concurrency with &lt;code dir=&quot;auto&quot;&gt;Context&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;h3 id=&quot;built-in-http-server&quot;&gt;Built-in HTTP Server&lt;/h3&gt;&lt;/div&gt;
&lt;p&gt;A high-performance networking stack built for production workloads:&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;import&lt;/span&gt;&lt;span&gt;&lt;span&gt; { &lt;/span&gt;&lt;span&gt;createServer&lt;/span&gt;&lt;span&gt; } &lt;/span&gt;&lt;/span&gt;&lt;span&gt;from&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;std/http&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;function&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;main&lt;/span&gt;&lt;span&gt;() {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;var&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;app&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;createServer&lt;/span&gt;&lt;span&gt;()&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;app&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;get&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;/&quot;&lt;/span&gt;&lt;span&gt;, (&lt;/span&gt;&lt;span&gt;req&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;res&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;=&gt;&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;res&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;json&lt;/span&gt;&lt;span&gt;&lt;span&gt;({ &lt;/span&gt;&lt;span&gt;message&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&quot;Hello from Chuks!&quot;&lt;/span&gt;&lt;span&gt; })&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;})&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;app&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;listen&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;3000&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;div&gt;&lt;h3 id=&quot;standard-library&quot;&gt;Standard Library&lt;/h3&gt;&lt;/div&gt;
&lt;p&gt;28 modules ship out of the box: HTTP server &amp;#x26; client, JSON, file system, crypto, JWT, database drivers (PostgreSQL, MySQL, MSSQL), logging, validation, regex, UUID, dotenv, and more.&lt;/p&gt;
&lt;div&gt;&lt;h3 id=&quot;developer-tools&quot;&gt;Developer Tools&lt;/h3&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;REPL&lt;/strong&gt; — Interactive development with &lt;code dir=&quot;auto&quot;&gt;chuks repl&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Project scaffolding&lt;/strong&gt; — &lt;code dir=&quot;auto&quot;&gt;chuks new&lt;/code&gt; creates a ready-to-go project with the correct structure&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;VS Code extension&lt;/strong&gt; — Syntax highlighting, code completion, hover docs&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;h3 id=&quot;install-script&quot;&gt;Install Script&lt;/h3&gt;&lt;/div&gt;
&lt;p&gt;Get started with a single command:&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;curl&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-fsSL&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;https://chuks.org/install.sh&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;|&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;bash&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Downloads the correct binary for your platform (macOS, Linux, Windows) and sets up your PATH automatically.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;whats-next&quot;&gt;What’s Next&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;This is just the beginning. The foundation is solid — now we build on it.&lt;/p&gt;</content:encoded><category>release</category></item></channel></rss>