<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
  xmlns:atom="http://www.w3.org/2005/Atom"
  xmlns:content="http://purl.org/rss/1.0/modules/content/"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:media="http://search.yahoo.com/mrss/">
  <channel>
    <title>Grayworth News</title>
    <link>https://grayworth.com/news</link>
    <description>Commercial product announcements, runtime milestones and benchmark qualifications for Gray.</description>
    <language>en-us</language>
    <atom:link href="https://grayworth.com/news/feed.xml" rel="self" type="application/rss+xml"/>
    <lastBuildDate>Sun, 26 Jul 2026 13:00:00 GMT</lastBuildDate>
    <item>
      <title>Grayworth opens Gray commercial preview</title>
      <link>https://grayworth.com/news/gray-commercial-preview</link>
      <guid isPermaLink="true">https://grayworth.com/news/gray-commercial-preview</guid>
      <pubDate>Sun, 26 Jul 2026 09:00:00 GMT</pubDate>
      <dc:creator>Grayworth Engineering</dc:creator>
      <category>Company</category>
      <description>Grayworth has opened a controlled commercial preview for Gray, its integrated server language and runtime, with production service migrations.</description>
      <media:content url="https://grayworth.com/news/media/gray-commercial-preview-16x9.png" type="image/png" width="1600" height="900"/>
      <content:encoded><![CDATA[
        <p>Grayworth now brings production server applications onto Gray through a hands-on commercial migration program.</p>
        <figure><img src="https://grayworth.com/news/media/gray-commercial-preview-16x9.png" alt="A polished white foil arrow crossing an octagonal frame on a dark Grayworth studio background."><figcaption>Grayworth’s commercial preview pairs the Gray runtime with hands-on production migration engineering.</figcaption></figure>
        <h2>Gray is available for production migrations</h2><p>Grayworth has opened commercial access to Gray through a hands-on preview for production server applications. Customers bring an existing API, worker, gateway or data service; Grayworth moves that workload into Gray and supports the deployment through cutover.</p><p>The engagement is designed around working software rather than a language demonstration. Grayworth establishes the current service contract, recreates it in Gray, validates response and failure behavior, and runs the new service under production-shaped pressure before traffic moves.</p><p>Gray is developed and commercially published by Grayworth. The same team owns the language, virtual machine, native backend, networking stack, database path, developer tools and release process.</p><h2>One product across the server path</h2><p>Gray combines Live, Adaptive and Static execution with <code>HTTP/1.1</code>, <code>HTTP/2</code>, <code>WebSocket</code>, TLS, structured tasks, readiness-driven PostgreSQL, JSON, classes, packages, a formatter and a language server. Eligible typed code can lower through Gray’s versioned native runtime ABI while unsupported code retains VM fallback.</p><p>That vertical design lets Grayworth tune the application language and the pressure-critical runtime together. A database wait, connection deadline, worker replacement or native transition is part of one product contract rather than an integration assembled separately for every service.</p><p>Adaptive mode provides the production replacement path. Gray compiles a candidate, waits until the new worker is ready, publishes it, and drains the previous worker while preserving in-flight work.</p><h2>How a customer engagement runs</h2><p>The first step is a workload review: application boundaries, traffic shape, dependencies, data contracts, deployment topology and the result the customer needs. Grayworth then defines the migration plan and the production acceptance criteria.</p><p>During implementation, the original service remains available. Grayworth builds the Gray version, exercises correctness and failure cases, records corrected latency and resources, and prepares a side-by-side cutover with a rollback path.</p><p>The finished engagement includes the Gray application, deployment guidance, a reproducible operating record and direct runtime support. The product roadmap is tied to the workload the customer is actually shipping.</p><h2>Commercial access starts with the service</h2><p>Grayworth is accepting server applications where integrated HTTP, TLS, JSON and PostgreSQL can replace meaningful runtime assembly or pressure cost. Production APIs, internal services, gateways and workers are the strongest starting points.</p><p>Teams can begin through the commercial preview page with the current stack, service shape and performance or deployment goal. Grayworth scopes and prices the engagement directly.</p>
        <p><a href="https://grayworth.com/news/gray-commercial-preview">Read on Grayworth News</a></p>
      ]]></content:encoded>
    </item>
    <item>
      <title>Gray completes three-hour HTTP qualification</title>
      <link>https://grayworth.com/news/gray-formal-http-qualification</link>
      <guid isPermaLink="true">https://grayworth.com/news/gray-formal-http-qualification</guid>
      <pubDate>Sun, 26 Jul 2026 09:20:00 GMT</pubDate>
      <dc:creator>Grayworth Engineering</dc:creator>
      <category>Benchmarks</category>
      <description>Gray completed one-hour plaintext, JSON and PostgreSQL route gates with exact delivery checks and zero measured steady-state RSS or descriptor growth.</description>
      <media:content url="https://grayworth.com/news/media/gray-formal-http-qualification-16x9.png" type="image/png" width="1600" height="900"/>
      <content:encoded><![CDATA[
        <p>Three sequential one-hour gates delivered 49,997.81 plaintext requests/s, 39,993.57 JSON requests/s and 3,999.85 PostgreSQL requests/s.</p>
        <figure><img src="https://grayworth.com/news/media/gray-formal-http-qualification-16x9.png" alt="A Grayworth benchmark chart showing achieved rates for plaintext, JSON and PostgreSQL over three one-hour qualifications."><figcaption>The formal route matrix ran plaintext, JSON and PostgreSQL for one hour each with corrected latency and resource sampling.</figcaption></figure>
        <h2>Three routes completed the full hour</h2><p>Gray’s Static-mode route matrix completed three sequential one-hour qualifications: plaintext HTTP, native JSON and a parameterized PostgreSQL query. The complete run lasted 10,858 seconds, including warmup, settling and transition work between routes.</p><p>The runner performed an exact-response preflight before each load phase. During the hour it preserved <code>wrk2</code>’s corrected-latency output, sampled the Gray process after connection ramp, and failed the route if delivery, response status, process health, memory growth or file-descriptor growth violated policy.</p><p>Plaintext achieved 49,997.81 requests/s against 50,000 requested. Corrected p50 was 1.34 ms, p99 was 7.00 ms and p99.9 was 23.87 ms.</p><h2>JSON held the same operating shape</h2><p>The JSON route encoded a new response for every request through Gray’s native JSON path. It achieved 39,993.57 requests/s against 40,000 requested, or 99.984% delivery.</p><p>Corrected p50 was 1.31 ms, p99 was 4.09 ms and p99.9 was 17.30 ms. The Gray process remained at 10,316 KiB RSS across all 358 steady-state samples, with 262 open file descriptors and zero measured growth.</p><p>The plaintext process produced the same resource result: 10,284 KiB RSS in every steady-state sample and no descriptor growth.</p><h2>PostgreSQL exposed the queue</h2><p>The original PostgreSQL route delivered 3,999.85 requests/s against 4,000 requested with flat resources, but corrected p99 reached 802.82 ms and p99.9 reached 1.55 seconds. The route delivered the work; it did not deliver an acceptable tail.</p><p>That result identified a blocking architecture in the first database path. Each synchronous query occupied a reactor worker until <code>libpq</code> returned, allowing requests to queue even while CPU remained available.</p><p>Grayworth subsequently replaced that path with readiness-driven <code>libpq</code> and compiler-hidden handler continuations. The later continuation qualification is reported as a separate product milestone rather than being substituted into this original record.</p><h2>The record is reproducible</h2><p>The report records the Gray binary SHA-256, application and runner hashes, execution mode, duration, requested rates, connection count, CPU topology, database configuration and all route summaries. The publication renderer refuses incomplete or tampered matrices.</p><p>This is a same-host Gray product qualification, not an official TechEmpower result or a universal language ranking. Its purpose is to establish sustained delivery, corrected latency and resource stability for the declared applications and environment.</p><p>The raw comparison data, methodology and route report remain linked so readers can inspect the result behind the headline.</p>
        <p><a href="https://grayworth.com/news/gray-formal-http-qualification">Read on Grayworth News</a></p>
      ]]></content:encoded>
    </item>
    <item>
      <title>Gray ships compiler-hidden PostgreSQL continuations</title>
      <link>https://grayworth.com/news/gray-postgresql-continuations</link>
      <guid isPermaLink="true">https://grayworth.com/news/gray-postgresql-continuations</guid>
      <pubDate>Sun, 26 Jul 2026 09:40:00 GMT</pubDate>
      <dc:creator>Grayworth Engineering</dc:creator>
      <category>Runtime</category>
      <description>Gray handlers can now suspend synchronous-looking PostgreSQL calls on socket readiness, preserving direct code without occupying general task workers.</description>
      <media:content url="https://grayworth.com/news/media/gray-postgresql-continuations-16x9.png" type="image/png" width="1600" height="900"/>
      <content:encoded><![CDATA[
        <p>A 30-second database qualification delivered 7,961.48 requests/s with p99 4.60 ms, 164 simultaneous suspended handlers and zero general task workers.</p>
        <figure><img src="https://grayworth.com/news/media/gray-postgresql-continuations-16x9.png" alt="Gray source code beside a four-stage flow from HTTP handler suspension through libpq readiness and continuation resume."><figcaption>Gray keeps database calls in direct source order while the compiler and runtime suspend and resume the HTTP handler around socket readiness.</figcaption></figure>
        <h2>Database waits disappear from handler syntax</h2><p>Gray HTTP handlers can now call PostgreSQL in direct source order while the compiler and runtime preserve the suspended continuation. The source reads like a synchronous query, but the reactor is released whenever the database socket is not ready.</p><p>The application does not maintain a pending-request map, write a polling loop or assign every database wait to a general worker. Gray captures the handler state, associates it with the nonblocking <code>libpq</code> operation and resumes the exact continuation when the socket advances.</p><p>The result is a server model in which direct code and cooperative I/O are the same product feature rather than competing programming styles.</p><h2>Readiness runs through the whole connection lifecycle</h2><p>Connection creation uses <code>PQconnectStart</code> and <code>PQconnectPoll</code> rather than blocking the process. Query execution sends work nonblockingly, consumes input only when the database socket is ready and returns the connection to the pool after the complete result is decoded.</p><p>When all pool connections are occupied, new work waits in the Gray scheduler instead of failing immediately or consuming task-worker capacity. A cancellation discards the active connection and replaces it safely before another request can inherit uncertain protocol state.</p><p>Typed query failures resume through Gray’s normal error path. Live, Static and Adaptive modes preserve the same language behavior.</p><h2>The first qualification cleared 8,000 requested</h2><p>The Static fixture used PostgreSQL 16, a pool of 64 connections, four <code>wrk2</code> threads and 256 persistent HTTP connections. At 8,000 requested requests/s, Gray achieved 7,961.48 requests/s, or 99.519% delivery.</p><p>Corrected p50 was 1.43 ms, p99 was 4.60 ms and p99.9 was 8.74 ms. The sampler observed as many as 164 simultaneously suspended handlers and no general task workers.</p><p>After the run, active tasks and continuations returned to zero. RSS and file-descriptor counts remained within the gate’s declared limits.</p><h2>Failure behavior shipped with the fast path</h2><p>The protocol suite exercises overlapping database handlers in Live and Static modes, typed errors after suspension, independent <code>HTTP/2</code> multiplexing, automatic 404 and 500 responses, and Adaptive replacement while an old handler remains in flight.</p><p>Cancellation tests verify that unfinished database work cannot leak a connection back into the pool. Sanitizer builds cover the same ownership path, and the optimized suite proves the result through the actual HTTP reactor.</p><p>Real service capacity will still depend on query cost, database placement, schema, pool size and topology. What changed in Gray is the architecture: one waiting query no longer owns the HTTP reactor.</p>
        <p><a href="https://grayworth.com/news/gray-postgresql-continuations">Read on Grayworth News</a></p>
      ]]></content:encoded>
    </item>
    <item>
      <title>Gray native loops reach 25.918× VM speedup</title>
      <link>https://grayworth.com/news/gray-native-loop-jit</link>
      <guid isPermaLink="true">https://grayworth.com/news/gray-native-loop-jit</guid>
      <pubDate>Sun, 26 Jul 2026 10:00:00 GMT</pubDate>
      <dc:creator>Grayworth Engineering</dc:creator>
      <category>Compiler</category>
      <description>Gray's bounded x86-64 backend lowered a 100-million-iteration typed loop to native code while retaining cooperative cancellation safepoints.</description>
      <media:content url="https://grayworth.com/news/media/gray-native-loop-jit-16x9.png" type="image/png" width="1600" height="900"/>
      <content:encoded><![CDATA[
        <p>The same 100-million-iteration sum ran in a 210.511 ms median with native lowering and 5,456.099 ms with the Gray JIT disabled.</p>
        <figure><img src="https://grayworth.com/news/media/gray-native-loop-jit-16x9.png" alt="A Grayworth performance graphic comparing a 5,456.099 millisecond Gray VM loop with a 210.511 millisecond native loop."><figcaption>The native-loop diagnostic removed bytecode dispatch while retaining a generated cancellation safepoint on every backedge.</figcaption></figure>
        <h2>Native loops now preserve Gray semantics</h2><p>Gray’s x86-64 backend can lower typed loops, local mutation, integer comparisons and control flow into machine code through the documented native runtime ABI. Unsupported functions continue through verified VM fallback.</p><p>The backend does not accept a loop merely because it can encode a backward branch. Every generated backedge calls the runtime’s stop-token safepoint and returns a structured cancellation exit when work should stop.</p><p>That contract keeps native execution inside Gray’s structured task model. A hot loop can lose bytecode dispatch without becoming an uninterruptible island inside the process.</p><h2>The same loop ran 25.918 times faster</h2><p>The diagnostic computed an identical 100-million-iteration integer sum in fresh, CPU-pinned Gray processes. One policy enabled native lowering; the other disabled the JIT and executed the same function through the VM.</p><p>Seven accepted samples produced a 210.511 ms native median and a 5,456.099 ms VM median. Dividing those medians yields a 25.918× end-to-end improvement for this workload.</p><p>The measurement includes a stop-token safepoint on every loop backedge. The reported gain therefore includes the cost of retaining cancellation rather than benchmarking an unsafe stripped-down loop.</p><h2>Cancellation is part of the differential</h2><p>A dedicated test starts a typed loop with a nine-quintillion-iteration ceiling, waits 20 milliseconds, requests cancellation and requires a CancelledError. The test passes with native lowering enabled and with interpreter-only execution.</p><p>Live JIT, Live VM, Static JIT and Static VM produce the same result. <code>ASan</code> and <code>UBSan</code> builds exercise native relocation, generated frames, structured exits and the spawned-loop cancellation path.</p><p>The runtime ABI identifies exit kind, ABI version, source function and instruction. Native calls therefore preserve source-located errors and cancellation identity as execution returns to the VM.</p><h2>The benchmark marks backend progress</h2><p>This is a Gray-native-versus-Gray-VM diagnostic. It does not compare Gray with C++, Rust, Go or another compiler, and it does not claim that every Gray application becomes 25.918 times faster.</p><p>The result demonstrates that VM dispatch was the dominant cost in an eligible sustained loop and that Gray’s backend can remove it without changing the cancellation contract.</p><p>Broader value lowering, more native call paths and additional platform backends remain active compiler work. Each expansion keeps the same differential rule: native execution must match the VM before its speed is accepted.</p>
        <p><a href="https://grayworth.com/news/gray-native-loop-jit">Read on Grayworth News</a></p>
      ]]></content:encoded>
    </item>
  </channel>
</rss>
