<?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: sinisterMage</title>
    <description>The latest articles on DEV Community by sinisterMage (@sinistermage).</description>
    <link>https://dev.to/sinistermage</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3171149%2Fadac32d5-ef23-4a7c-8d18-7fe3f8906dd4.jpg</url>
      <title>DEV Community: sinisterMage</title>
      <link>https://dev.to/sinistermage</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sinistermage"/>
    <language>en</language>
    <item>
      <title>W++ Compiles to WebAssembly: Building a Custom Language for the Browser</title>
      <dc:creator>sinisterMage</dc:creator>
      <pubDate>Wed, 04 Jun 2025 16:50:26 +0000</pubDate>
      <link>https://dev.to/sinistermage/w-compiles-to-webassembly-building-a-custom-language-for-the-browser-2887</link>
      <guid>https://dev.to/sinistermage/w-compiles-to-webassembly-building-a-custom-language-for-the-browser-2887</guid>
      <description>&lt;h2&gt;
  
  
  W++ Compiles to WebAssembly 🎉
&lt;/h2&gt;

&lt;p&gt;Hey everyone! I'm super excited to share that &lt;strong&gt;W++&lt;/strong&gt;, my custom scripting language, can now be compiled directly to &lt;strong&gt;WebAssembly&lt;/strong&gt; — and it runs in the browser!&lt;/p&gt;

&lt;h2&gt;
  
  
  What is W++?
&lt;/h2&gt;

&lt;p&gt;W++ is a Python-style scripting language I’ve been working on for fun, chaos, and learning. It compiles to .NET IL, and now... it also runs on the web thanks to WASM.&lt;/p&gt;

&lt;h2&gt;
  
  
  What’s New in the WASM Version?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;✅ No more Blazor or .NET runtime&lt;/li&gt;
&lt;li&gt;✅ Custom WASM bytecode generation using &lt;code&gt;wasm-encoder&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;✅ Pure WebAssembly — &lt;strong&gt;W++ compiles straight to WASM&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;✅ Works in Node.js &lt;em&gt;and&lt;/em&gt; the browser&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  But... HTML?
&lt;/h2&gt;

&lt;p&gt;Yes, technically there’s still a tiny bit of HTML and JavaScript glue to boot the WASM module (because browsers need it). But no frameworks, no shadow DOM, no Blazor overhead. Just pure WASM.&lt;/p&gt;

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

&lt;p&gt;I wanted to see if I could make a language truly &lt;em&gt;own the web&lt;/em&gt;, without depending on the usual tech stack. And maybe... just maybe... kill HTML in the process 😄&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo?
&lt;/h2&gt;

&lt;p&gt;You can check the GitHub repo here: &lt;a href="https://github.com/sinisterMage/WPlusPlusWASM" rel="noopener noreferrer"&gt;https://github.com/sinisterMage/WPlusPlusWASM&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The W++ compiler code&lt;/li&gt;
&lt;li&gt;A working WASM module generator&lt;/li&gt;
&lt;li&gt;Browser and Node.js runtimes&lt;/li&gt;
&lt;li&gt;A hilarious war on HTML&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What’s next?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;WASM support for more W++ features (loops, functions, etc.)&lt;/li&gt;
&lt;li&gt;Maybe some kind of GUI layer&lt;/li&gt;
&lt;li&gt;Pushing the limits of what W++ can do on the web&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Thanks for reading! I’d love to hear your thoughts, ideas, or memes about this project ❤️&lt;/p&gt;

</description>
      <category>webassembly</category>
      <category>programming</category>
      <category>showdev</category>
      <category>opensource</category>
    </item>
    <item>
      <title>I built my own scripting language and made it run in the browser — no HTML, no JS, just WebAssembly</title>
      <dc:creator>sinisterMage</dc:creator>
      <pubDate>Tue, 03 Jun 2025 18:39:34 +0000</pubDate>
      <link>https://dev.to/sinistermage/i-built-my-own-scripting-language-and-made-it-run-in-the-browser-no-html-no-js-just-1hop</link>
      <guid>https://dev.to/sinistermage/i-built-my-own-scripting-language-and-made-it-run-in-the-browser-no-html-no-js-just-1hop</guid>
      <description>&lt;p&gt;Hey Devs 👋&lt;/p&gt;

&lt;p&gt;I recently I did something kind of insane:&lt;/p&gt;

&lt;p&gt;I created my own scripting language called &lt;strong&gt;W++&lt;/strong&gt; — it has Python-style syntax, runs on .NET, supports entities, async, lambdas, and more...&lt;/p&gt;

&lt;p&gt;But I didn’t stop there.&lt;/p&gt;

&lt;p&gt;I decided to make it run in the browser. No HTML. No JS. No boilerplate. Just raw &lt;strong&gt;WebAssembly&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Introducing: 🌀 OOPSIEWASM
&lt;/h2&gt;

&lt;p&gt;OOPSIEWASM is an experimental playground that lets you:&lt;/p&gt;

&lt;p&gt;✅ Write W++ code directly in the browser&lt;br&gt;&lt;br&gt;
✅ Use &lt;code&gt;externcall()&lt;/code&gt; to draw on a &lt;code&gt;&amp;lt;canvas&amp;gt;&lt;/code&gt;&lt;br&gt;&lt;br&gt;
✅ Run it all via &lt;strong&gt;Blazor WebAssembly&lt;/strong&gt;, no JS required&lt;br&gt;&lt;br&gt;
✅ Dream of a world with &lt;em&gt;no HTML in DevTools&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;It’s real. It’s working. And it's probably the most chaotic thing I've ever built.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧪 Example
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;externcall("canvas", "drawText", "Hello from W++", 10, 50);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That line draws on a real HTML5 canvas — from W++, running in WASM.&lt;/p&gt;

&lt;h2&gt;
  
  
  🔗 Try It / Source
&lt;/h2&gt;

&lt;p&gt;🎮 Live playground &amp;amp; video:&lt;br&gt;
 &lt;a href="https://github.com/sinisterMage/WPlusPlusPlayground/blob/main/Recording%202025-06-03%20205424.mp4" rel="noopener noreferrer"&gt;https://github.com/sinisterMage/WPlusPlusPlayground/blob/main/Recording%202025-06-03%20205424.mp4&lt;/a&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  🧠 Source code (MIT):
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/sinisterMage/WPlusPlusPlayground" rel="noopener noreferrer"&gt;https://github.com/sinisterMage/WPlusPlusPlayground&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🛠 How it's built
&lt;/h2&gt;

&lt;p&gt;Written in C#&lt;/p&gt;

&lt;p&gt;JIT and interpreted backends&lt;/p&gt;

&lt;p&gt;Uses System.Reflection.Emit&lt;/p&gt;

&lt;p&gt;Renders to  via C# → JS interop&lt;/p&gt;

&lt;p&gt;Entire frontend: Blazor WebAssembly&lt;/p&gt;

&lt;h2&gt;
  
  
  🙋‍♂️ Why?
&lt;/h2&gt;

&lt;p&gt;Because I wanted to make something wild. Something alive in the browser.&lt;/p&gt;

&lt;p&gt;Something that says:&lt;/p&gt;

&lt;p&gt;“You don’t need to be older, funded, or famous to build something original.”&lt;/p&gt;

&lt;p&gt;Just a laptop, an idea, and obsession.&lt;/p&gt;

&lt;h2&gt;
  
  
  💬 Feedback?
&lt;/h2&gt;

&lt;p&gt;Would love your thoughts, questions, even critiques —&lt;br&gt;
and if you’ve ever built something like this or dreamed of running your own language in the browser… let’s talk!&lt;/p&gt;

&lt;p&gt;Thanks for reading ❤️&lt;/p&gt;

</description>
      <category>programming</category>
      <category>webassembly</category>
      <category>dotnet</category>
      <category>sideprojects</category>
    </item>
    <item>
      <title>I Built a Programming Language Called W++ — Yes, It Has a Mascot and a CLI Named "Ingot"</title>
      <dc:creator>sinisterMage</dc:creator>
      <pubDate>Fri, 16 May 2025 16:58:11 +0000</pubDate>
      <link>https://dev.to/sinistermage/call-for-contributors-help-evolve-the-language-of-chaos-1om4</link>
      <guid>https://dev.to/sinistermage/call-for-contributors-help-evolve-the-language-of-chaos-1om4</guid>
      <description>&lt;p&gt;So I made a programming language.&lt;br&gt;&lt;br&gt;
It’s chaotic, semi-serious, C#-powered, and somehow has reverse polymorphism. 😎&lt;/p&gt;

&lt;p&gt;Meet &lt;strong&gt;W++&lt;/strong&gt; — a scripting language designed for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🧠 Familiar syntax (JavaScript-ish)&lt;/li&gt;
&lt;li&gt;⚡ Compiles to .NET IL (so it runs FAST)&lt;/li&gt;
&lt;li&gt;🧬 OOP-style &lt;em&gt;entities&lt;/em&gt;, async/await, and sloth-powered memes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It’s built with &lt;code&gt;System.Reflection.Emit&lt;/code&gt;, has a CLI called &lt;code&gt;Ingot&lt;/code&gt;, and its official slogan is:  &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"At least we’re better than Visual Basic."&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I'm now looking for contributors and curious minds to help expand W++ — whether it's syntax features, runtime, VSCode integration, or just creative ideas!&lt;/p&gt;

&lt;p&gt;The GitHub repo:&lt;br&gt;&lt;br&gt;
🔗 &lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/sinisterMage" rel="noopener noreferrer"&gt;
        sinisterMage
      &lt;/a&gt; / &lt;a href="https://github.com/sinisterMage/WPlusPlus" rel="noopener noreferrer"&gt;
        WPlusPlus
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      A Python-style scripting language rewritten in Rust &amp;amp; LLVM. Faster, dumber, and more chaotic than ever.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;W++ 🦥&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://private-user-images.githubusercontent.com/127129175/443961356-e55dc88e-7ef0-4aa6-8d3e-fbb77c9aac08.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NzQ2NDkyODgsIm5iZiI6MTc3NDY0ODk4OCwicGF0aCI6Ii8xMjcxMjkxNzUvNDQzOTYxMzU2LWU1NWRjODhlLTdlZjAtNGFhNi04ZDNlLWZiYjc3YzlhYWMwOC5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwMzI3JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDMyN1QyMjAzMDhaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0wOTgwZWZkNmQ1Nzc5YmQxMTg5NDU0MDQ2ZGZjNmQyYWRhZjUxYzRjMDQ2NjViOGE4M2VmNWZkNjkyNDNhOTE2JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.avcDhRx8sYXeCdkTqfZyw_dVDKQ27SD8QIKWK4TSsys"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fprivate-user-images.githubusercontent.com%2F127129175%2F443961356-e55dc88e-7ef0-4aa6-8d3e-fbb77c9aac08.png%3Fjwt%3DeyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NzQ2NDkyODgsIm5iZiI6MTc3NDY0ODk4OCwicGF0aCI6Ii8xMjcxMjkxNzUvNDQzOTYxMzU2LWU1NWRjODhlLTdlZjAtNGFhNi04ZDNlLWZiYjc3YzlhYWMwOC5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwMzI3JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDMyN1QyMjAzMDhaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0wOTgwZWZkNmQ1Nzc5YmQxMTg5NDU0MDQ2ZGZjNmQyYWRhZjUxYzRjMDQ2NjViOGE4M2VmNWZkNjkyNDNhOTE2JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.avcDhRx8sYXeCdkTqfZyw_dVDKQ27SD8QIKWK4TSsys" alt="image"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/7324561114b30a7d2a0082c245b3ba75aacc5275427d531b366916584db7ed74/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5725324225324225323076322d4c4c564d253230506f77657265642d6f72616e67653f7374796c653d666c61742d737175617265266c6f676f3d72757374266c6f676f436f6c6f723d7768697465"&gt;&lt;img src="https://camo.githubusercontent.com/7324561114b30a7d2a0082c245b3ba75aacc5275427d531b366916584db7ed74/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5725324225324225323076322d4c4c564d253230506f77657265642d6f72616e67653f7374796c653d666c61742d737175617265266c6f676f3d72757374266c6f676f436f6c6f723d7768697465" alt="W++ LLVM"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/cc7dc90317cdad6112b15e4ee6f9a3e5abdad91e7ff2cb8be1890d8026e26710/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f57253242253242253230457874656e73696f6e2d52657375727265637465642d707572706c653f7374796c653d666c61742d737175617265266c6f676f3d676974687562266c6f676f436f6c6f723d7768697465"&gt;&lt;img src="https://camo.githubusercontent.com/cc7dc90317cdad6112b15e4ee6f9a3e5abdad91e7ff2cb8be1890d8026e26710/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f57253242253242253230457874656e73696f6e2d52657375727265637465642d707572706c653f7374796c653d666c61742d737175617265266c6f676f3d676974687562266c6f676f436f6c6f723d7768697465" alt="Extension: Resurrected"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/152aa2a37725b9fd554b28ff24d270f6071c67927a63e6d635a55c8e188e20c7/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d677265656e3f7374796c653d666c61742d737175617265"&gt;&lt;img src="https://camo.githubusercontent.com/152aa2a37725b9fd554b28ff24d270f6071c67927a63e6d635a55c8e188e20c7/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d677265656e3f7374796c653d666c61742d737175617265" alt="License"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Built with chaos. Forged by sloths. Rewritten in Rust.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;🧠 Welcome to W++ v2 — The LLVM Era&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;W++ v2 marks the full rebirth of the &lt;strong&gt;sloth-powered scripting language&lt;/strong&gt; you never asked for
The old C# interpreter has retired peacefully, and in its place rises a &lt;strong&gt;real compiler&lt;/strong&gt; — built with &lt;strong&gt;Rust&lt;/strong&gt;, targeting &lt;strong&gt;LLVM&lt;/strong&gt;, and powered by &lt;em&gt;questionable life choices&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;This isn’t just a rewrite. It’s a declaration that W++ is officially moving from “toy” to “terrifyingly functional.”&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;⚙️ What Makes v2 Different?&lt;/h2&gt;

&lt;/div&gt;
&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Old W++&lt;/th&gt;
&lt;th&gt;New W++ (v2)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;☠️ C# interpreter with async tears&lt;/td&gt;
&lt;td&gt;🦀 Rust + LLVM-backed compiler&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Heavy .NET runtime&lt;/td&gt;
&lt;td&gt;Native machine code, zero dependencies&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;JIT-ish execution&lt;/td&gt;
&lt;td&gt;True LLVM IR + optional JIT&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Managed chaos&lt;/td&gt;
&lt;td&gt;Unmanaged chaos&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;em&gt;Maybe&lt;/em&gt; portable&lt;/td&gt;
&lt;td&gt;Actually portable (Linux, macOS, FreeBSD)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;🧩 Core Features&lt;/h2&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;let&lt;/code&gt; declarations &amp;amp; expressions&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;print&lt;/code&gt; (via native &lt;code&gt;printf&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;if / else&lt;/code&gt;, &lt;code&gt;while&lt;/code&gt;, &lt;code&gt;for&lt;/code&gt;…&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/sinisterMage/WPlusPlus" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;Join the chaos. Add a PR. Help the sloth conquer modern computing.&lt;/p&gt;

</description>
      <category>csharp</category>
      <category>dotnet</category>
      <category>opensource</category>
      <category>funproject</category>
    </item>
  </channel>
</rss>
