<?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: Ignacio Peña</title>
    <description>The latest articles on DEV Community by Ignacio Peña (@ignacio_pea_15fb9bb8f993).</description>
    <link>https://dev.to/ignacio_pea_15fb9bb8f993</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%2F1886276%2F5583ea8f-0272-4e47-a4a2-792cd4dec046.png</url>
      <title>DEV Community: Ignacio Peña</title>
      <link>https://dev.to/ignacio_pea_15fb9bb8f993</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ignacio_pea_15fb9bb8f993"/>
    <language>en</language>
    <item>
      <title>Tempo v1.0.0: We Built a Systems Language That Actually Replaces C</title>
      <dc:creator>Ignacio Peña</dc:creator>
      <pubDate>Sat, 21 Jun 2025 22:16:38 +0000</pubDate>
      <link>https://dev.to/ignacio_pea_15fb9bb8f993/tempo-v100-we-built-a-systems-language-that-actually-replaces-c-4i3d</link>
      <guid>https://dev.to/ignacio_pea_15fb9bb8f993/tempo-v100-we-built-a-systems-language-that-actually-replaces-c-4i3d</guid>
      <description>&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;p&gt;After building a real-time OS and hitting the limitations of C, we created Tempo - a systems programming language with memory safety, deterministic execution, and zero overhead. It's not a toy - we're using it to build AtomicOS.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;Every few months, someone announces a "C killer" that turns out to be either:&lt;br&gt;
Too high-level for real systems programming&lt;br&gt;
Too complex (looking at you, Rust)&lt;br&gt;
Missing critical features like inline assembly&lt;br&gt;
Just... not actually replacing C&lt;br&gt;
We were building AtomicOS, a deterministic real-time security OS, and kept running into C's fundamental issues:&lt;br&gt;
Memory unsafety is baked into the language&lt;br&gt;
Undefined behavior everywhere&lt;br&gt;
No way to guarantee execution time&lt;br&gt;
The preprocessor is a footgun factory&lt;/p&gt;
&lt;h2&gt;
  
  
  Enter Tempo v1.0.0
&lt;/h2&gt;

&lt;p&gt;Instead of complaining, we built the language we needed. Here's what makes Tempo different:&lt;/p&gt;
&lt;h2&gt;
  
  
  1. Structs That Actually Work for Systems Programming
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;struct DMADescriptor @packed @align(16) {&lt;br&gt;
    buffer: raw_ptr&amp;lt;int8&amp;gt;,&lt;br&gt;
    size: int32,&lt;br&gt;
    flags: int32,&lt;br&gt;
    next: ptr&amp;lt;DMADescriptor&amp;gt;&lt;br&gt;
}&lt;/code&gt;&lt;br&gt;
Real memory layout control. No hidden padding. No surprises.&lt;/p&gt;
&lt;h2&gt;
  
  
  2. A Pointer System That Makes Sense
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;// Safe by default - bounds checked at compile time&lt;br&gt;
function process_buffer(data: ptr&amp;lt;int8, 256&amp;gt;) {&lt;br&gt;
    for i in 0..256 {&lt;br&gt;
        data[i] = transform(data[i]);  // Can't overflow!&lt;br&gt;
    }&lt;br&gt;
}&lt;br&gt;
// Explicit unsafe when you need it&lt;br&gt;
function mmio_read(addr: int32) -&amp;gt; int32 {&lt;br&gt;
    let p: raw_ptr&amp;lt;int32&amp;gt; = addr as raw_ptr&amp;lt;int32&amp;gt;;&lt;br&gt;
    return *p;&lt;br&gt;
}&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  3. Inline Assembly as a First-Class Feature
&lt;/h2&gt;

&lt;p&gt;`@interrupt&lt;br&gt;
function timer_handler() {&lt;br&gt;
    asm volatile("push eax");&lt;br&gt;
    asm volatile("push ebx");&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;tick_count = tick_count + 1;

// Send EOI to PIC
outb(0x20, 0x20);

asm volatile("pop ebx");
asm volatile("pop eax");
asm volatile("iret");
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;}`&lt;br&gt;
No more writing separate assembly files and hoping your calling conventions match!&lt;/p&gt;
&lt;h2&gt;
  
  
  4. Deterministic by Design
&lt;/h2&gt;

&lt;p&gt;Every loop must be bounded. Every operation has known timing:&lt;br&gt;
&lt;code&gt;function process_packets(packets: ptr&amp;lt;Packet, 64&amp;gt;) @wcet(6400) {&lt;br&gt;
    for i in 0..64 @wcet(100) {&lt;br&gt;
        if packets[i].valid {&lt;br&gt;
            handle_packet(&amp;amp;packets[i]);&lt;br&gt;
        }&lt;br&gt;
    }&lt;br&gt;
}&lt;/code&gt;&lt;br&gt;
The compiler proves this function completes in 6400 cycles or less.&lt;/p&gt;
&lt;h2&gt;
  
  
  Real-World Usage
&lt;/h2&gt;

&lt;p&gt;This isn't theoretical. We're building an entire OS with Tempo:&lt;br&gt;
Boot loader ✅&lt;br&gt;
Interrupt handlers ✅&lt;br&gt;
Memory management ✅&lt;br&gt;
Process scheduler ✅&lt;br&gt;
Device drivers ✅&lt;br&gt;
Network stack 🚧&lt;br&gt;
Check out our kernel written entirely in Tempo: kernel_in_tempo.tempo&lt;/p&gt;
&lt;h2&gt;
  
  
  Performance
&lt;/h2&gt;

&lt;p&gt;Tempo compiles to the same assembly you'd write by hand:&lt;br&gt;
&lt;code&gt;function add(a: int32, b: int32) -&amp;gt; int32 {&lt;br&gt;
    return a + b;&lt;br&gt;
}&lt;/code&gt;&lt;br&gt;
Compiles to:&lt;br&gt;
&lt;code&gt;add:&lt;br&gt;
    mov eax, [esp+4]&lt;br&gt;
    add eax, [esp+8]&lt;br&gt;
    ret&lt;/code&gt;&lt;br&gt;
No runtime. No hidden allocations. No surprises.&lt;br&gt;
Getting Started&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git clone https://github.com/ipenas-cl/AtomicOS.git
cd AtomicOS
make build/tempo_compiler
# Write your first Tempo program
echo 'function main() -&amp;gt; int32 { return 42; }' &amp;gt; hello.tempo
./build/tempo_compiler hello.tempo hello.s
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  The Future
&lt;/h2&gt;

&lt;p&gt;Tempo v1.0.0 is just the beginning. We're working on:&lt;br&gt;
Generic types (without the complexity)&lt;br&gt;
Async/await for interrupt-driven I/O&lt;br&gt;
Formal verification integration&lt;br&gt;
ARM and RISC-V backends&lt;/p&gt;

&lt;h2&gt;
  
  
  Join Us!
&lt;/h2&gt;

&lt;p&gt;We need contributors! Whether you're interested in:&lt;br&gt;
Compiler development&lt;br&gt;
Language design&lt;br&gt;&lt;br&gt;
Systems programming&lt;br&gt;
Documentation&lt;br&gt;
Building cool stuff with Tempo&lt;br&gt;
There's a place for you in the project.&lt;br&gt;
🌐 Website: &lt;a href="https://ipenas-cl.github.io/AtomicOS/tempo/" rel="noopener noreferrer"&gt;https://ipenas-cl.github.io/AtomicOS/tempo/&lt;/a&gt;&lt;br&gt;
💻 GitHub: &lt;a href="https://github.com/ipenas-cl/AtomicOS" rel="noopener noreferrer"&gt;https://github.com/ipenas-cl/AtomicOS&lt;/a&gt;&lt;br&gt;
💬 Discussions: &lt;a href="https://github.com/ipenas-cl/AtomicOS/discussions" rel="noopener noreferrer"&gt;https://github.com/ipenas-cl/AtomicOS/discussions&lt;/a&gt;&lt;br&gt;
Let's build the future of systems programming together!&lt;/p&gt;

&lt;h1&gt;
  
  
  tempo #systemsprogramming #memorysafety #rustlang #clang #opensource
&lt;/h1&gt;

</description>
    </item>
    <item>
      <title>Building a Security-First OS from Scratch: AtomicOS Journey</title>
      <dc:creator>Ignacio Peña</dc:creator>
      <pubDate>Fri, 20 Jun 2025 23:26:52 +0000</pubDate>
      <link>https://dev.to/ignacio_pea_15fb9bb8f993/building-a-security-first-os-from-scratch-atomicos-journey-3lb7</link>
      <guid>https://dev.to/ignacio_pea_15fb9bb8f993/building-a-security-first-os-from-scratch-atomicos-journey-3lb7</guid>
      <description>&lt;h2&gt;
  
  
  Why Another Operating System?
&lt;/h2&gt;

&lt;p&gt;Most hobby OS projects implement "security" with simple XOR operations. I wanted to prove we could do better - implementing real cryptographic primitives and hardware-enforced security from day one.&lt;/p&gt;

&lt;p&gt;Meet &lt;strong&gt;AtomicOS&lt;/strong&gt;: a security-first operating system that actually implements AES-128 encryption, SHA-256 hashing, and introduces a deterministic programming language called Tempo.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Philosophy: Security &amp;gt; Stability &amp;gt; Performance
&lt;/h2&gt;

&lt;p&gt;In Spanish, we say: &lt;em&gt;"Seguridad primero, luego estabilidad y luego performance"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This principle guided every design decision. While most OS projects optimize for speed, AtomicOS deliberately sacrifices performance for security. Here's why that matters.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Technical Achievements
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Real Cryptography (Not XOR!)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="c1"&gt;// What most hobby OS do:&lt;/span&gt;
&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="s"&gt;"encrypt"&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;uint8_t&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;uint8_t&lt;/span&gt; &lt;span class="n"&gt;key&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;len&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;^=&lt;/span&gt; &lt;span class="n"&gt;key&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;  &lt;span class="c1"&gt;// This is NOT encryption!&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;// What AtomicOS does:&lt;/span&gt;
&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;aes128_encrypt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;const&lt;/span&gt; &lt;span class="kt"&gt;uint8_t&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;plaintext&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;const&lt;/span&gt; &lt;span class="kt"&gt;uint8_t&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;key&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;uint8_t&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;ciphertext&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// Real AES with:&lt;/span&gt;
    &lt;span class="c1"&gt;// - S-boxes (256-byte substitution table)&lt;/span&gt;
    &lt;span class="c1"&gt;// - MixColumns transformation&lt;/span&gt;
    &lt;span class="c1"&gt;// - Key expansion with round constants&lt;/span&gt;
    &lt;span class="c1"&gt;// - 10 rounds of processing&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The implementation includes the full AES S-box, proper key scheduling, and all the transformations required by the standard.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Memory Management Unit (MMU)
&lt;/h3&gt;

&lt;p&gt;AtomicOS implements a complete MMU with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;2-level paging (Page Directory + Page Tables)&lt;/li&gt;
&lt;li&gt;4KB page size&lt;/li&gt;
&lt;li&gt;Hardware-enforced protection&lt;/li&gt;
&lt;li&gt;Virtual memory mapping
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Memory layout&lt;/span&gt;
&lt;span class="mh"&gt;0x00000000&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mh"&gt;0x003FFFFF&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Kernel&lt;/span&gt; &lt;span class="n"&gt;Space&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="n"&gt;MB&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="mh"&gt;0x00400000&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mh"&gt;0xBFFFFFFF&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;User&lt;/span&gt; &lt;span class="n"&gt;Space&lt;/span&gt;
&lt;span class="mh"&gt;0xC0000000&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mh"&gt;0xFFFFFFFF&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Kernel&lt;/span&gt; &lt;span class="n"&gt;Mirror&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Higher&lt;/span&gt; &lt;span class="n"&gt;Half&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3. Tempo: A Deterministic Language
&lt;/h3&gt;

&lt;p&gt;The most unique aspect is Tempo, a programming language where every function has a guaranteed Worst-Case Execution Time (WCET).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function calculate(x: int32, y: int32): int32 wcet 30 {
    let result = x * 2 + y;
    if result &amp;gt; 100 {
        return 100;
    }
    return result;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The compiler analyzes the code and verifies it will execute within 30 CPU cycles. If it can't guarantee this, compilation fails.&lt;/p&gt;

&lt;h2&gt;
  
  
  Building the Kernel
&lt;/h2&gt;

&lt;p&gt;The kernel evolution went through several versions:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;v0.1-0.2&lt;/strong&gt;: Performance-focused (failed security tests)&lt;br&gt;
&lt;strong&gt;v0.3&lt;/strong&gt;: Complete rewrite with security first&lt;br&gt;
&lt;strong&gt;v0.4&lt;/strong&gt;: Added MMU for hardware protection&lt;/p&gt;

&lt;p&gt;Here's the boot sequence:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;; Multiboot header for GRUB
section .multiboot
    dd 0x1BADB002              ; Magic number
    dd 0x00000000              ; Flags
    dd 0xE4524FFE              ; Checksum

; Entry point
section .text
global _start
_start:
    cli                        ; Disable interrupts
    mov esp, stack_top         ; Set up stack
    call kernel_main           ; Jump to C code
    hlt                       ; Halt if kernel returns
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Security Features Implemented
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Stack Protection
&lt;/h3&gt;

&lt;p&gt;Every function uses stack canaries to detect buffer overflows:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;function&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;__asm__&lt;/span&gt; &lt;span class="k"&gt;volatile&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;""&lt;/span&gt; &lt;span class="o"&gt;:::&lt;/span&gt; &lt;span class="s"&gt;"memory"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;  &lt;span class="c1"&gt;// Memory barrier&lt;/span&gt;
    &lt;span class="c1"&gt;// Function code&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;canary&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="n"&gt;expected&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="c1"&gt;// Stack smashing detected!&lt;/span&gt;
        &lt;span class="n"&gt;panic&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Memory Safety
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Bounds checking on all operations&lt;/li&gt;
&lt;li&gt;Guard pages before and after allocations&lt;/li&gt;
&lt;li&gt;Secure wiping (3-pass with different patterns)&lt;/li&gt;
&lt;li&gt;W^X enforcement (memory is either writable OR executable, never both)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Access Control
&lt;/h3&gt;

&lt;p&gt;Every operation has a security context:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="k"&gt;typedef&lt;/span&gt; &lt;span class="k"&gt;struct&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kt"&gt;uint32_t&lt;/span&gt; &lt;span class="n"&gt;uid&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;           &lt;span class="c1"&gt;// User ID&lt;/span&gt;
    &lt;span class="kt"&gt;uint32_t&lt;/span&gt; &lt;span class="n"&gt;gid&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;           &lt;span class="c1"&gt;// Group ID&lt;/span&gt;
    &lt;span class="kt"&gt;uint32_t&lt;/span&gt; &lt;span class="n"&gt;capabilities&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;  &lt;span class="c1"&gt;// Capability bits&lt;/span&gt;
    &lt;span class="kt"&gt;uint32_t&lt;/span&gt; &lt;span class="n"&gt;ring_level&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;    &lt;span class="c1"&gt;// 0=kernel, 3=user&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="n"&gt;security_context_t&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Testing the OS
&lt;/h2&gt;

&lt;p&gt;You can run AtomicOS yourself:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Clone the repository&lt;/span&gt;
git clone https://github.com/ipenas-cl/AtomicOs.git
&lt;span class="nb"&gt;cd &lt;/span&gt;AtomicOs

&lt;span class="c"&gt;# Build AtomicOS v0.4 with MMU&lt;/span&gt;
make &lt;span class="nt"&gt;-f&lt;/span&gt; Makefile.v4

&lt;span class="c"&gt;# Run in QEMU&lt;/span&gt;
./run_mmu.sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Lessons Learned
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Security is expensive&lt;/strong&gt; - Every security check adds cycles&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Perfect is the enemy of good&lt;/strong&gt; - Start with basics, iterate&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hardware is your friend&lt;/strong&gt; - MMU provides real protection&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Honesty matters&lt;/strong&gt; - Don't claim "military-grade" without proof&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  What's Next?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;[ ] Ring 0/3 privilege separation&lt;/li&gt;
&lt;li&gt;[ ] Tempo standard library&lt;/li&gt;
&lt;li&gt;[ ] Network stack (with security first!)&lt;/li&gt;
&lt;li&gt;[ ] File system (with encryption)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Try It Yourself
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;🎥 &lt;a href="https://youtu.be/gEeNHAh9NIM" rel="noopener noreferrer"&gt;Watch the Demo&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;💻 &lt;a href="https://github.com/ipenas-cl/AtomicOs" rel="noopener noreferrer"&gt;Browse the Code&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;🌐 &lt;a href="https://ipenas-cl.github.io/AtomicOs/" rel="noopener noreferrer"&gt;Visit the Website&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;AtomicOS proves that hobby OS projects can implement real security features. It's not production-ready, but it's honest about what it is: an educational project that doesn't cut corners on security.&lt;/p&gt;

&lt;p&gt;Remember: &lt;em&gt;"No exploits, no crashes, no lies."&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Have questions about OS development or security? Drop a comment below or reach out on &lt;a href="https://github.com/ipenas-cl" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;!&lt;/em&gt;&lt;/p&gt;

</description>
      <category>osdev</category>
      <category>security</category>
      <category>lowlevel</category>
      <category>assembly</category>
    </item>
  </channel>
</rss>
