<?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: jj</title>
    <description>The latest articles on DEV Community by jj (@youthx).</description>
    <link>https://dev.to/youthx</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%2F4123759%2F7ea26cc8-c778-4489-9f12-e6e9face5f04.jpg</url>
      <title>DEV Community: jj</title>
      <link>https://dev.to/youthx</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/youthx"/>
    <language>en</language>
    <item>
      <title>Aphelion Editor - A free node-based video / VFX editor</title>
      <dc:creator>jj</dc:creator>
      <pubDate>Mon, 21 Sep 2026 05:21:16 +0000</pubDate>
      <link>https://dev.to/youthx/aphelion-editor-a-free-node-based-video-vfx-editor-5f0g</link>
      <guid>https://dev.to/youthx/aphelion-editor-a-free-node-based-video-vfx-editor-5f0g</guid>
      <description>&lt;h2&gt;
  
  
  Introducing Aphelion Editor: An Open-Source Node-Based Video Editor
&lt;/h2&gt;

&lt;p&gt;I’ve been working on &lt;strong&gt;Aphelion Editor&lt;/strong&gt;, an open-source, node-based video editing application built around the idea that editing video should feel more programmable, visual, and flexible.&lt;/p&gt;

&lt;p&gt;Instead of organizing everything around a traditional timeline, Aphelion lets you build your video processing pipeline using nodes.&lt;/p&gt;

&lt;p&gt;You connect inputs, effects, transforms, tracking, audio, and output nodes together to describe how your final video should be produced.&lt;/p&gt;

&lt;p&gt;GitHub: &lt;a href="https://github.com/aphelion-engine/aphelion-editor" rel="noopener noreferrer"&gt;https://github.com/aphelion-engine/aphelion-editor&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I Built It
&lt;/h2&gt;

&lt;p&gt;Most video editors are incredibly capable, but their workflows are usually centered around timelines, tracks, layers, and panels.&lt;/p&gt;

&lt;p&gt;I wanted to experiment with something different.&lt;/p&gt;

&lt;p&gt;What if editing a video felt closer to building a shader graph, Blender node tree, or visual program?&lt;/p&gt;

&lt;p&gt;That idea became Aphelion.&lt;/p&gt;

&lt;p&gt;The goal is not just to make another basic video editor. I want Aphelion to eventually become a serious node-based environment for compositing, effects, motion graphics, tracking, audio processing, automation, and general video production.&lt;/p&gt;

&lt;h2&gt;
  
  
  How It Works
&lt;/h2&gt;

&lt;p&gt;Aphelion represents a project as a graph.&lt;/p&gt;

&lt;p&gt;A simple workflow might look something like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Video Input
    |
    v
Transform
    |
    v
Color Correction
    |
    v
Sharpen
    |
    v
Video Output
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;More complex projects can branch, combine multiple sources, reuse processing chains, and expose parameters that can be animated over time.&lt;/p&gt;

&lt;p&gt;This makes the structure of an effect much easier to see.&lt;/p&gt;

&lt;p&gt;Instead of hunting through several menus to figure out what is happening to a clip, you can follow the graph.&lt;/p&gt;

&lt;h2&gt;
  
  
  Current Features
&lt;/h2&gt;

&lt;p&gt;Aphelion already includes a growing set of editing and compositing functionality.&lt;/p&gt;

&lt;p&gt;Some of the current features include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Node-based project graphs&lt;/li&gt;
&lt;li&gt;Video input and decoding&lt;/li&gt;
&lt;li&gt;Audio decoding and playback support&lt;/li&gt;
&lt;li&gt;Frame-by-frame evaluation&lt;/li&gt;
&lt;li&gt;Image and video processing nodes&lt;/li&gt;
&lt;li&gt;Animatable numeric and slider properties&lt;/li&gt;
&lt;li&gt;Keyframing&lt;/li&gt;
&lt;li&gt;Point tracking&lt;/li&gt;
&lt;li&gt;Planar tracking work&lt;/li&gt;
&lt;li&gt;Exposure controls&lt;/li&gt;
&lt;li&gt;Horizontal and vertical flipping&lt;/li&gt;
&lt;li&gt;Frame offsets&lt;/li&gt;
&lt;li&gt;Playback speed controls&lt;/li&gt;
&lt;li&gt;Source FPS handling&lt;/li&gt;
&lt;li&gt;Video fitting modes&lt;/li&gt;
&lt;li&gt;Media metadata probing&lt;/li&gt;
&lt;li&gt;Plugin support&lt;/li&gt;
&lt;li&gt;Project validation&lt;/li&gt;
&lt;li&gt;A custom &lt;code&gt;.aph&lt;/code&gt; project format&lt;/li&gt;
&lt;li&gt;A growing built-in node library&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The editor is written primarily in &lt;strong&gt;Python&lt;/strong&gt; using &lt;strong&gt;PyQt6&lt;/strong&gt;, with NumPy, OpenCV, FFmpeg-based media tooling, and other libraries handling the heavier media processing work.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tracking
&lt;/h2&gt;

&lt;p&gt;One area I’ve been spending a lot of time on is tracking.&lt;/p&gt;

&lt;p&gt;Aphelion currently has point-tracking infrastructure that can follow features through a sequence of frames.&lt;/p&gt;

&lt;p&gt;The longer-term goal is to make tracking data reusable throughout the graph.&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;Video Input
     |
     +------&amp;gt; Point Tracker
     |             |
     |             v
     |        Tracking Data
     |             |
     v             v
Transform &amp;lt;---------
     |
     v
Output
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That opens the door to things like automatically attaching text to objects, stabilizing footage, following faces or objects, masking moving regions, and driving effect parameters from tracked motion.&lt;/p&gt;

&lt;h2&gt;
  
  
  Audio Is Part of the Graph Too
&lt;/h2&gt;

&lt;p&gt;Video editing is not only about frames.&lt;/p&gt;

&lt;p&gt;Aphelion's evaluation system can carry synchronized audio alongside video, allowing nodes and playback systems to work with both.&lt;/p&gt;

&lt;p&gt;Internally, evaluated media can contain a video frame along with an audio sample slice associated with that frame.&lt;/p&gt;

&lt;p&gt;That architecture should eventually allow dedicated audio nodes for things like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Gain&lt;/li&gt;
&lt;li&gt;EQ&lt;/li&gt;
&lt;li&gt;Compression&lt;/li&gt;
&lt;li&gt;Filtering&lt;/li&gt;
&lt;li&gt;Mixing&lt;/li&gt;
&lt;li&gt;Audio-reactive effects&lt;/li&gt;
&lt;li&gt;Waveform visualization&lt;/li&gt;
&lt;li&gt;Automation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I want audio to feel like a first-class part of the editor rather than something bolted onto the side.&lt;/p&gt;

&lt;h2&gt;
  
  
  Plugins
&lt;/h2&gt;

&lt;p&gt;Another major goal is extensibility.&lt;/p&gt;

&lt;p&gt;Aphelion includes a plugin system so that the node library does not have to be limited to whatever ships with the editor.&lt;/p&gt;

&lt;p&gt;Eventually, I want developers to be able to create their own nodes for things like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="nd"&gt;@node&lt;/span&gt;
&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;MyEffect&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;process&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;frame&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;intensity&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="c1"&gt;# custom processing
&lt;/span&gt;        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;frame&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That could include effects, generators, AI tools, codecs, analysis nodes, automation tools, custom UI controls, and more.&lt;/p&gt;

&lt;p&gt;A video editor gets dramatically more interesting once users can extend it themselves.&lt;/p&gt;

&lt;h2&gt;
  
  
  Performance Is One of the Biggest Challenges
&lt;/h2&gt;

&lt;p&gt;Building the UI was not the hardest part.&lt;/p&gt;

&lt;p&gt;Making a node-based video editor actually play video smoothly is.&lt;/p&gt;

&lt;p&gt;A graph may contain several expensive operations for every frame:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;decode
 -&amp;gt; resize
 -&amp;gt; transform
 -&amp;gt; tracking
 -&amp;gt; blur
 -&amp;gt; color correction
 -&amp;gt; compositing
 -&amp;gt; preview
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;At 60 FPS, that entire pipeline has roughly 16 milliseconds to complete if you want real-time playback.&lt;/p&gt;

&lt;p&gt;Python makes prototyping incredibly fast, but it also means I have to be careful about where processing happens.&lt;/p&gt;

&lt;p&gt;I’ve been working on things like caching, prefetching, asynchronous media decoding, lower-resolution previews, reducing unnecessary graph evaluation, and moving expensive operations into optimized native libraries.&lt;/p&gt;

&lt;p&gt;Long-term, I also want to explore GPU-backed processing.&lt;/p&gt;

&lt;p&gt;There is a lot of optimization work left to do, but honestly, that is one of the parts of the project I find most interesting.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Project Format
&lt;/h2&gt;

&lt;p&gt;Aphelion projects use a dedicated &lt;code&gt;.aph&lt;/code&gt; project format.&lt;/p&gt;

&lt;p&gt;A project stores information such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Nodes&lt;/li&gt;
&lt;li&gt;Connections&lt;/li&gt;
&lt;li&gt;Node properties&lt;/li&gt;
&lt;li&gt;Media references&lt;/li&gt;
&lt;li&gt;Animation data&lt;/li&gt;
&lt;li&gt;Project configuration&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The graph is also validated when projects are opened to help catch invalid or broken connections before evaluation.&lt;/p&gt;

&lt;p&gt;The format is still evolving as the editor grows.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where I Want to Take Aphelion
&lt;/h2&gt;

&lt;p&gt;There is still a huge amount I want to build.&lt;/p&gt;

&lt;p&gt;Some of the areas I’m interested in include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GPU-accelerated effects&lt;/li&gt;
&lt;li&gt;Better real-time playback&lt;/li&gt;
&lt;li&gt;Advanced compositing&lt;/li&gt;
&lt;li&gt;Masks and rotoscoping&lt;/li&gt;
&lt;li&gt;Motion tracking&lt;/li&gt;
&lt;li&gt;Better planar tracking&lt;/li&gt;
&lt;li&gt;Motion graphics&lt;/li&gt;
&lt;li&gt;Text and typography tools&lt;/li&gt;
&lt;li&gt;Audio processing nodes&lt;/li&gt;
&lt;li&gt;Proxy media&lt;/li&gt;
&lt;li&gt;Render queues&lt;/li&gt;
&lt;li&gt;Background rendering&lt;/li&gt;
&lt;li&gt;Custom node scripting&lt;/li&gt;
&lt;li&gt;More plugin APIs&lt;/li&gt;
&lt;li&gt;Color grading tools&lt;/li&gt;
&lt;li&gt;LUT support&lt;/li&gt;
&lt;li&gt;Hardware encoding and decoding&lt;/li&gt;
&lt;li&gt;Improved caching&lt;/li&gt;
&lt;li&gt;Optical flow&lt;/li&gt;
&lt;li&gt;Time remapping&lt;/li&gt;
&lt;li&gt;Expressions&lt;/li&gt;
&lt;li&gt;More advanced animation tools&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ultimately, I want Aphelion to sit somewhere between a video editor, compositor, and visual programming environment.&lt;/p&gt;

&lt;h2&gt;
  
  
  Open Source
&lt;/h2&gt;

&lt;p&gt;Aphelion is open source, and that is a major part of the project.&lt;/p&gt;

&lt;p&gt;I want people to be able to dig into the code, experiment with the architecture, build nodes, improve performance, fix bugs, and shape where the editor goes.&lt;/p&gt;

&lt;p&gt;There are a lot of interesting problems involved in building something like this: media decoding, caching, graph evaluation, synchronization, rendering, UI architecture, tracking, audio, plugins, and performance.&lt;/p&gt;

&lt;p&gt;If any of those areas sound interesting, contributions are welcome.&lt;/p&gt;

&lt;p&gt;GitHub:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/aphelion-engine/aphelion-editor" rel="noopener noreferrer"&gt;https://github.com/aphelion-engine/aphelion-editor&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Download from the Website:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://aphelion-community.com" rel="noopener noreferrer"&gt;https://aphelion-community.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The project is still early, but it has reached the point where it is becoming something much bigger than the original experiment.&lt;/p&gt;

&lt;p&gt;I’m excited to keep pushing it forward.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>news</category>
      <category>showdev</category>
      <category>software</category>
    </item>
    <item>
      <title>Introducing Sere: a compiled language with Python-like syntax and systems-level power</title>
      <dc:creator>jj</dc:creator>
      <pubDate>Mon, 14 Sep 2026 02:07:22 +0000</pubDate>
      <link>https://dev.to/youthx/introducing-sere-a-compiled-language-with-python-like-syntax-and-systems-level-power-4pg7</link>
      <guid>https://dev.to/youthx/introducing-sere-a-compiled-language-with-python-like-syntax-and-systems-level-power-4pg7</guid>
      <description>&lt;p&gt;Today I’m launching &lt;strong&gt;Sere&lt;/strong&gt;, a compiled programming language built around a simple idea:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Python-like readability shouldn’t mean giving up native performance, static typing, or low-level control.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Sere is designed to feel familiar and lightweight while still giving you the kinds of capabilities you’d normally reach for C++, Rust, or Zig to get.&lt;/p&gt;

&lt;p&gt;A basic Sere program looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;i32&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;hello from sere&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can define structs and methods without much ceremony:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;struct&lt;/span&gt; &lt;span class="n"&gt;Point&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;i32&lt;/span&gt;
    &lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;i32&lt;/span&gt;

    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;length_sq&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;i32&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;i32&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;p&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Point&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;length_sq&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Under the hood, Sere is a native compiled language built on LLVM.&lt;/p&gt;

&lt;p&gt;That means you can go from readable high-level code to actual native binaries:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;sere main.sere &lt;span class="nt"&gt;-o&lt;/span&gt; main.exe
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can also inspect LLVM IR or generated assembly:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;sere &lt;span class="nt"&gt;--emit-llvm&lt;/span&gt; main.sere &lt;span class="nt"&gt;-o&lt;/span&gt; main.ll
sere &lt;span class="nt"&gt;--emit-asm&lt;/span&gt; main.sere &lt;span class="nt"&gt;-o&lt;/span&gt; main.s
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Built for more than scripting
&lt;/h2&gt;

&lt;p&gt;Sere isn’t meant to be “Python with a compiler.”&lt;/p&gt;

&lt;p&gt;The goal is to support real systems-level work while keeping the syntax approachable.&lt;/p&gt;

&lt;p&gt;That includes explicit memory control:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;owned&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Unique&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i32&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;unique&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i32&lt;/span&gt;&lt;span class="p"&gt;](&lt;/span&gt;&lt;span class="mi"&gt;42&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;owned&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;

&lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;i32&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;load&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;owned&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Raw pointers are available when you actually need them:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;ptr&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Ptr&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i32&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;alloc&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i32&lt;/span&gt;&lt;span class="p"&gt;]()&lt;/span&gt;

&lt;span class="nf"&gt;store&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ptr&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;123&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;ptr&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="nf"&gt;free&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ptr&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And the language includes modern features like enums and pattern matching:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;enum&lt;/span&gt; &lt;span class="n"&gt;Message&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;Quit&lt;/span&gt;
    &lt;span class="nc"&gt;Move&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;i32&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;i32&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;handle&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;msg&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Message&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;void&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;match&lt;/span&gt; &lt;span class="n"&gt;msg&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;case&lt;/span&gt; &lt;span class="n"&gt;Message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Quit&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;bye&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

        &lt;span class="n"&gt;case&lt;/span&gt; &lt;span class="n"&gt;Message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Move&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
            &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;moving to &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;, &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Tooling matters too
&lt;/h2&gt;

&lt;p&gt;I don’t want Sere to be one of those languages where the compiler exists but the developer experience feels like 2008.&lt;/p&gt;

&lt;p&gt;Sere already has tooling for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;syntax highlighting&lt;/li&gt;
&lt;li&gt;diagnostics&lt;/li&gt;
&lt;li&gt;hover information&lt;/li&gt;
&lt;li&gt;go to definition&lt;/li&gt;
&lt;li&gt;rename&lt;/li&gt;
&lt;li&gt;VS Code integration&lt;/li&gt;
&lt;li&gt;project builds&lt;/li&gt;
&lt;li&gt;library packaging&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Libraries can be packaged into &lt;code&gt;.slib&lt;/code&gt; files and imported into other Sere projects:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;sere init-lib mathlib
sere pack
&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 python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;mathlib&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;i32&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;mathlib&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Native interoperability is also a major part of the project. Sere is being built with C and C++ interop in mind rather than pretending the existing native ecosystem doesn’t exist.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Sere is trying to be
&lt;/h2&gt;

&lt;p&gt;The goal is not to replace Python, C++, or Rust.&lt;/p&gt;

&lt;p&gt;It’s to explore a different balance between them.&lt;/p&gt;

&lt;p&gt;I want Sere to be a language where this feels normal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;items&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;item&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;items&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;item&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;while this is still possible:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="nb"&gt;buffer&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Ptr&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;u8&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;alloc&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;u8&lt;/span&gt;&lt;span class="p"&gt;](&lt;/span&gt;&lt;span class="mi"&gt;1024&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;High-level when you want it.&lt;/p&gt;

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

&lt;p&gt;Without turning every program into a wall of syntax.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sere is still early
&lt;/h2&gt;

&lt;p&gt;Sere is actively being developed, and I’m not going to pretend otherwise.&lt;/p&gt;

&lt;p&gt;There are still bugs, missing features, compiler edge cases, and parts of the ecosystem that need a lot more work.&lt;/p&gt;

&lt;p&gt;But the language is at a point where people can actually download it, write code, compile native programs, build libraries, and experiment with the design.&lt;/p&gt;

&lt;p&gt;That’s why I’m launching it publicly now.&lt;/p&gt;

&lt;p&gt;I want feedback while the language is still flexible enough to change.&lt;/p&gt;

&lt;p&gt;If something is confusing, awkward, broken, or just a terrible language-design decision, I want to hear about it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try Sere
&lt;/h2&gt;

&lt;p&gt;Website:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://sere-lang.com" rel="noopener noreferrer"&gt;https://sere-lang.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;GitHub:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/Sere-Language/sere" rel="noopener noreferrer"&gt;https://github.com/Sere-Language/sere&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Sere is open source, and contributors are welcome.&lt;/p&gt;

&lt;p&gt;If you’re interested in compilers, LLVM, programming language design, systems programming, or just trying new languages, I’d love for you to give it a shot and tell me what you think.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Python-like syntax. Native compilation. Systems-level control.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That’s the direction I’m building Sere toward.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>opensource</category>
      <category>news</category>
      <category>showdev</category>
    </item>
  </channel>
</rss>
