<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Joshua Ogunlade</title>
    <description>The latest articles on DEV Community by Joshua Ogunlade (@joshua_ogunlade_cc523592b).</description>
    <link>https://dev.to/joshua_ogunlade_cc523592b</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4073826%2Fa4d331c4-1fdb-4e36-83dc-38c4fb9474b2.png</url>
      <title>DEV Community: Joshua Ogunlade</title>
      <link>https://dev.to/joshua_ogunlade_cc523592b</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/joshua_ogunlade_cc523592b"/>
    <language>en</language>
    <item>
      <title>QTCC</title>
      <dc:creator>Joshua Ogunlade</dc:creator>
      <pubDate>Tue, 11 Aug 2026 23:20:32 +0000</pubDate>
      <link>https://dev.to/joshua_ogunlade_cc523592b/qtcc-3mg2</link>
      <guid>https://dev.to/joshua_ogunlade_cc523592b/qtcc-3mg2</guid>
      <description>&lt;h3&gt;
  
  
  The compiler behind Quart.
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;QTCC is the native compiler and toolchain for Quart.&lt;/strong&gt; It is designed to make systems programming feel direct without making developers manually manage the machinery underneath.&lt;/p&gt;

&lt;p&gt;Write Quart. Let QTCC handle the rest.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Quart source
     ↓
   QTCC
     ↓
 QTIR / QTUA
     ↓
 native machine code
     ↓
 FASM / object files
     ↓
    LLD
     ↓
 executable / DLL
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Why QTCC?
&lt;/h2&gt;

&lt;p&gt;Native development shouldn't require developers to become experts in their platform's entire build ecosystem.&lt;/p&gt;

&lt;p&gt;QTCC's job is to understand the program and the target, then automatically handle the complicated parts of compilation and linking.&lt;/p&gt;

&lt;p&gt;Instead of manually configuring:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;compilers&lt;/li&gt;
&lt;li&gt;assemblers&lt;/li&gt;
&lt;li&gt;linkers&lt;/li&gt;
&lt;li&gt;library paths&lt;/li&gt;
&lt;li&gt;object files&lt;/li&gt;
&lt;li&gt;platform-specific options&lt;/li&gt;
&lt;li&gt;DLL/shared-library configuration&lt;/li&gt;
&lt;li&gt;target-specific build settings&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;QTCC aims to make the toolchain itself responsible for those decisions.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;quart build
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's the goal.&lt;/p&gt;

&lt;h2&gt;
  
  
  Built for Quart
&lt;/h2&gt;

&lt;p&gt;QTCC is not a generic compiler frontend. It is being designed alongside the Quart language and its execution model.&lt;/p&gt;

&lt;p&gt;Quart gives developers high-level abstractions when they want them while still allowing direct access to memory and platform functionality when they need it.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const a = 78
let b = 89

let ptr = @rawLoc(a)
let num = *ptr
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or when you need to go all the way down to a platform API:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;extern proc[WriteFile]:
    [win32x64=WriteFile]:(usize, length, usize)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;QTCC's responsibility is to make both levels work within the same toolchain.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cross-platform by design
&lt;/h2&gt;

&lt;p&gt;QTCC is being built around the idea that &lt;strong&gt;cross-platform development should not mean manually maintaining a pile of platform-specific build configurations.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The compiler knows the target.&lt;/p&gt;

&lt;p&gt;The compiler knows the architecture.&lt;/p&gt;

&lt;p&gt;The compiler knows what the program requires.&lt;/p&gt;

&lt;p&gt;It should therefore be able to select and configure the appropriate native toolchain automatically.&lt;/p&gt;

&lt;p&gt;The long-term target is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Windows
Linux
Android
Web
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;with platform-specific machinery hidden behind the Quart toolchain wherever possible.&lt;/p&gt;

&lt;h2&gt;
  
  
  No build configuration maze
&lt;/h2&gt;

&lt;p&gt;A new Quart project should not begin with a wall of configuration files.&lt;/p&gt;

&lt;p&gt;The intended experience is closer to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;my-project/
├── src/
└── libs/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;quart init &lt;span class="nb"&gt;.&lt;/span&gt;
quart build
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;QTCC determines what is required and coordinates the compilation pipeline.&lt;/p&gt;

&lt;p&gt;The goal isn't to remove control.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The goal is to make control available when you want it instead of forcing it on you when you don't.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Low-level when you need it
&lt;/h2&gt;

&lt;p&gt;QTCC doesn't try to prevent developers from reaching the machine.&lt;/p&gt;

&lt;p&gt;Quart can work directly with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;pointers&lt;/li&gt;
&lt;li&gt;raw memory&lt;/li&gt;
&lt;li&gt;external procedures&lt;/li&gt;
&lt;li&gt;native libraries&lt;/li&gt;
&lt;li&gt;platform APIs&lt;/li&gt;
&lt;li&gt;assembly&lt;/li&gt;
&lt;li&gt;object files&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can stay productive at the language level, or drop down into the machinery when your application actually requires it.&lt;/p&gt;

&lt;p&gt;That makes QTCC suitable for the same kind of software where you'd normally reach for a systems language.&lt;/p&gt;

&lt;h2&gt;
  
  
  The native toolchain
&lt;/h2&gt;

&lt;p&gt;QTCC is designed to work with existing low-level tooling rather than reinventing every piece of the native toolchain.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;QTCC
  │
  ├── FASM
  │     └── assembly → object code
  │
  └── LLD
        └── object files → final binary
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This allows QTCC to focus on what it actually needs to own:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;understanding Quart and producing the correct native program.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Compiler architecture
&lt;/h2&gt;

&lt;p&gt;QTCC is being developed around several compiler stages, including:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Tokenizer
   ↓
Parser
   ↓
AST
   ↓
Lowering
   ↓
QTIR
   ↓
QTUA / backend
   ↓
Object generation
   ↓
Linking
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The architecture is intentionally being developed so that platform-specific code generation does not leak throughout the entire compiler.&lt;/p&gt;

&lt;h2&gt;
  
  
  Designed to grow
&lt;/h2&gt;

&lt;p&gt;QTCC is not intended to stop at producing simple executables.&lt;/p&gt;

&lt;p&gt;The toolchain is being built toward:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;native executables&lt;/li&gt;
&lt;li&gt;object files&lt;/li&gt;
&lt;li&gt;DLLs/shared libraries&lt;/li&gt;
&lt;li&gt;cross-platform compilation&lt;/li&gt;
&lt;li&gt;platform APIs through &lt;code&gt;extern&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;optimized release builds&lt;/li&gt;
&lt;li&gt;debugging support&lt;/li&gt;
&lt;li&gt;Quart's standard library&lt;/li&gt;
&lt;li&gt;future self-hosting&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Eventually, QTCC itself can become a Quart program.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;QTCC
  ↓
compiles Quart
  ↓
Quart implementation of QTCC
  ↓
QTCC compiles itself
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Status
&lt;/h2&gt;

&lt;p&gt;🚧 &lt;strong&gt;QTCC is actively under development.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The compiler is currently being developed alongside Quart, and major pieces of the native pipeline are still evolving.&lt;/p&gt;

&lt;p&gt;Current work includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;[x] Core language compilation&lt;/li&gt;
&lt;li&gt;[ ] &lt;code&gt;if&lt;/code&gt; / &lt;code&gt;else&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;[ ] Pointer operations&lt;/li&gt;
&lt;li&gt;[ ] &lt;code&gt;extern&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;[ ] Object generation&lt;/li&gt;
&lt;li&gt;[ ] DLL generation&lt;/li&gt;
&lt;li&gt;[ ] &lt;code&gt;.obj&lt;/code&gt; generation&lt;/li&gt;
&lt;li&gt;[ ] Cross-platform toolchain&lt;/li&gt;
&lt;li&gt;[ ] Standard library&lt;/li&gt;
&lt;li&gt;[ ] Self-hosting&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The architecture will continue to change as Quart matures.&lt;/p&gt;

&lt;h2&gt;
  
  
  The philosophy
&lt;/h2&gt;

&lt;p&gt;QTCC follows a simple idea:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;The compiler should handle the machinery so the developer can focus on the program.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You shouldn't need to understand five different build systems to compile a 200-line application.&lt;/p&gt;

&lt;p&gt;You shouldn't need to manually hunt down incompatible dependencies.&lt;/p&gt;

&lt;p&gt;You shouldn't need to configure machinery you didn't create just because you wanted to use it.&lt;/p&gt;

&lt;p&gt;But when you &lt;strong&gt;do&lt;/strong&gt; need the machinery, Quart should let you reach it.&lt;/p&gt;

&lt;p&gt;That's QTCC.&lt;/p&gt;




&lt;h2&gt;
  
  
  Part of the Quart ecosystem
&lt;/h2&gt;

&lt;p&gt;QTCC is one component of the larger Quart ecosystem.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                QUART
                  │
        ┌─────────┼─────────┐
        │         │         │
       QTCC      Yaki      QBot
     Compiler   Renderer   Assistant
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Quart&lt;/strong&gt; — the programming language&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;QTCC&lt;/strong&gt; — the compiler and native toolchain&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Yaki&lt;/strong&gt; — graphics and rendering infrastructure&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;QBot&lt;/strong&gt; — the development assistant&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal is a complete development environment where the language, compiler, tooling and runtime are designed to work together.&lt;/p&gt;




&lt;h2&gt;
  
  
  Contributing
&lt;/h2&gt;

&lt;p&gt;QTCC is being developed as an open project.&lt;/p&gt;

&lt;p&gt;Compiler development, language design, backend work, optimization, tooling, documentation and testing are all welcome areas for contribution.&lt;/p&gt;

&lt;p&gt;If you're interested in compilers, systems programming, language design or native toolchains, you're welcome here.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;QTCC is being built from the ground up.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;GitHub Link:&lt;br&gt;
&lt;strong&gt;&lt;a href="https://github.com/joshuaogunlade903-cpu/QTCC.git" rel="noopener noreferrer"&gt;https://github.com/joshuaogunlade903-cpu/QTCC.git&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>quart</category>
      <category>compiler</category>
      <category>language</category>
    </item>
  </channel>
</rss>
