<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hacker News: tracyspacy</title><link>https://news.ycombinator.com/user?id=tracyspacy</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Fri, 03 Jul 2026 05:47:20 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=tracyspacy" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by tracyspacy in "Rust sort_unstable_by with more complex closure unexpectedly shrunk binary"]]></title><description><![CDATA[
<p>I don't think the loop unrolling plays a big role here, I guess it was more an example. 
While post body contains control flow, it can be simple arithmetic operation instead and it will lead to the similar result, so not the control flow itself causing this.
But yeah, I also feel, that more complex closure blocks some optimizations here, thus quicksort having less instructions.
I suspect that complex closure was outlined to a separate fn, and not copied to quicksort anymore.</p>
]]></description><pubDate>Thu, 02 Jul 2026 19:30:00 +0000</pubDate><link>https://news.ycombinator.com/item?id=48766243</link><dc:creator>tracyspacy</dc:creator><comments>https://news.ycombinator.com/item?id=48766243</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48766243</guid></item><item><title><![CDATA[Rust sort_unstable_by with more complex closure unexpectedly shrunk binary]]></title><description><![CDATA[
<p>Thing I stumbled upon:<p>I added boolean argument and if statement inside sort_unstable_by closure:<p>```
//from<p>|&a, &b| compare(a, b)<p>//to<p>|&a, &b| if is_reverse { compare(b, a) } else { compare(a, b) }
```<p>I expected binary to grow slightly, but actually it became ca 1KB smaller.<p>I dug into with bloaty and found that the reason is: quicksort fn became 980 bytes smaller.<p>Still not sure why. Inlining looks same, quicksort just has fewer instructions.<p>target: arm-unknown-linux-gnueabihf<p>details: https://
pastebin.com/qJdTw49n<p>commit: https://github.com/tracyspacy/fli/commit/a87a98be77cc1972a53e6399716a227d1135e76b</p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=48761304">https://news.ycombinator.com/item?id=48761304</a></p>
<p>Points: 5</p>
<p># Comments: 2</p>
]]></description><pubDate>Thu, 02 Jul 2026 13:30:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=48761304</link><dc:creator>tracyspacy</dc:creator><comments>https://news.ycombinator.com/item?id=48761304</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48761304</guid></item><item><title><![CDATA[Fli -a tiny (18KB) easy to read file listing tool. Rust no_std and Libc]]></title><description><![CDATA[
<p>Why?<p>I have access to my raspberry pi zero via ssh only. As for me it is hard to differentiate types of files etc based on colors, I needed something more readable and clear like picture/icon or emoji as I ended up with etc. And I decided to build fli and since ls is obviosly preinstalled on almost any machine, the second requirement for fli as a complimentary tool, is to be tiny.<p>Readability: Nice readability thanks to use of emojis ( and ) instead of text coloring.<p>Size: Since rust std contributes heavily to binary size, this project is no_std + libc<p>Current binary size: M-series Mac 51KB , rpi zero 18KB.<p>Display options:<p>`fli` : short (name and type) not sorted output - direct stream, no heap allocation<p>`fli -s`: short (name and type) sorted by name output - uses heap allocation<p>`fli -l`: long (name, type, metadata ) not sorted output and fixed-sized alignment (20 chars for size and n_link) - direct stream, no heap allocation<p>`fli -l -s`: long (name, type, metadata ) sorted by name output and dynamic alignment - uses heap allocation.<p>`fli -l -S`: long (name, type, metadata ) sorted by size output and dynamic alignment - uses heap allocation.<p>GitHub repo: https://github.com/tracyspacy/fli</p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=48607567">https://news.ycombinator.com/item?id=48607567</a></p>
<p>Points: 4</p>
<p># Comments: 0</p>
]]></description><pubDate>Sat, 20 Jun 2026 08:54:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=48607567</link><dc:creator>tracyspacy</dc:creator><comments>https://news.ycombinator.com/item?id=48607567</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48607567</guid></item><item><title><![CDATA[18KB file listing tool in no_std Rust and Libc]]></title><description><![CDATA[
<p>Initial release of FLI - really tiny and fast (like a ) directory listing tool.<p><i>Initial Why:</i> need some easy readable <i>ls</i> like tool for rpi to use via ssh.
<i>Current Why:</i>  check if with Rust one can build core utils like tools faster and smaller.<p>- Size:
18K - RPI ZERO W 
51KB - Mac<p>- Default mode streams readdir() => stdout with zero heap allocation.<p>- Nice readabilty thx to ( and ) instead of text coloring<p>- Written in no_std rust + libc.<p>repo: https://github.com/tracyspacy/fli</p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=48480956">https://news.ycombinator.com/item?id=48480956</a></p>
<p>Points: 2</p>
<p># Comments: 0</p>
]]></description><pubDate>Wed, 10 Jun 2026 18:53:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=48480956</link><dc:creator>tracyspacy</dc:creator><comments>https://news.ycombinator.com/item?id=48480956</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48480956</guid></item><item><title><![CDATA[Lemmy Tray – Rust menu bar app that shows Lemmy posts without browser or account]]></title><description><![CDATA[
<p>Article URL: <a href="https://lemmy.ml/c/lemmy_tray">https://lemmy.ml/c/lemmy_tray</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=48178440">https://news.ycombinator.com/item?id=48178440</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Mon, 18 May 2026 11:56:27 +0000</pubDate><link>https://lemmy.ml/c/lemmy_tray</link><dc:creator>tracyspacy</dc:creator><comments>https://news.ycombinator.com/item?id=48178440</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48178440</guid></item><item><title><![CDATA[A menu bar app that shows Lemmy posts]]></title><description><![CDATA[
<p>A lightweight menu bar /system tray app written in Rust that fetches and displays Lemmy posts at a set interval.<p>Shows some additional info such as upvotes, downvotes, and comment count in the tray menu.<p>Built it to stay up to date with Lemmy without opening a browser. Planning to extend it as a mod tool to catch new posts in communities I moderate.<p>https://github.com/tracyspacy/lemmy-tray</p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=48149604">https://news.ycombinator.com/item?id=48149604</a></p>
<p>Points: 2</p>
<p># Comments: 0</p>
]]></description><pubDate>Fri, 15 May 2026 15:03:32 +0000</pubDate><link>https://news.ycombinator.com/item?id=48149604</link><dc:creator>tracyspacy</dc:creator><comments>https://news.ycombinator.com/item?id=48149604</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48149604</guid></item><item><title><![CDATA[Emulating Petzold's Code BCD decoder -logic gates are persistent tasks on a VM]]></title><description><![CDATA[
<p>I'm building a tiny embeddable VM in Rust, where the core primitive is a Task with its own state and executable bytecode instructions.<p>Recently I added new example: Implementation of Binary Coded Decimal decoder from Petzold's "Code" book — every logic gate (bits switch, inverters, AND gates) is a task carrying its own instructions.<p>It works simple : cargo run 1001 -> 9 and as output it will show AND gate with inputs and output<p>bcd-decoder: https://github.com/tracyspacy/spacydo/tree/main/examples/bcd-decoder<p>vm: https://github.com/tracyspacy/spacydo</p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47572462">https://news.ycombinator.com/item?id=47572462</a></p>
<p>Points: 2</p>
<p># Comments: 0</p>
]]></description><pubDate>Mon, 30 Mar 2026 10:09:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=47572462</link><dc:creator>tracyspacy</dc:creator><comments>https://news.ycombinator.com/item?id=47572462</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47572462</guid></item><item><title><![CDATA[Logic gates as persistent stateful tasks – a BCD decoder built on a VM]]></title><description><![CDATA[
<p>I'm building a tiny embeddable VM in Rust, where the core primitive is a Task with its own state and executable bytecode instructions.<p>Recently I added new example: Implementation of Binary Coded Decimal decoder from Petzold's "Code" book — every logic gate (bits switch, inverters, AND gates) is a task carrying its own instructions.<p>It works simple : cargo run 1001 -> 9 and as output it will show AND gate with inputs and output<p>bcd-decoder: https://github.com/tracyspacy/spacydo/tree/main/examples/bcd-decoder</p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47230700">https://news.ycombinator.com/item?id=47230700</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Tue, 03 Mar 2026 10:56:15 +0000</pubDate><link>https://news.ycombinator.com/item?id=47230700</link><dc:creator>tracyspacy</dc:creator><comments>https://news.ycombinator.com/item?id=47230700</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47230700</guid></item><item><title><![CDATA[Show HN:Logic gates as persistent stateful tasks – a BCD decoder built on a VM]]></title><description><![CDATA[
<p>I'm building a tiny embeddable VM in Rust, where the core primitive is a Task with its own state and executable bytecode instructions.<p>Recently I added new example: Implementation of Binary Coded Decimal decoder from Petzold's "Code" book — every logic gate (bits switch, inverters, AND gates) is a task carrying its own instructions.<p>It works simple : cargo run 1001  -> 9 and as output it will show AND gate with inputs and output<p>bcd-decoder: https://github.com/tracyspacy/spacydo/tree/main/examples/bcd-decoder</p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47222959">https://news.ycombinator.com/item?id=47222959</a></p>
<p>Points: 2</p>
<p># Comments: 0</p>
]]></description><pubDate>Mon, 02 Mar 2026 19:34:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=47222959</link><dc:creator>tracyspacy</dc:creator><comments>https://news.ycombinator.com/item?id=47222959</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47222959</guid></item><item><title><![CDATA[My journey from a todo app to a VM where tasks are stateful executable programs]]></title><description><![CDATA[
<p># How it all started?<p>Sometimes, there are moments when you feel loosing control over your life, when there is to much on a plate and all this overwhelms you, makes you anxious.
For me, solution always was to use kind of "get things done" tools, to organize myself. I tried various todo apps, even bought a paper todo, but this wasn't enough this time. Every restriction in functionality, every missed feature made me feel I'm loosing control again. 
And one moment I gave up and decided it is time to make my own tool and make it right (in my understanding), i.e a todo that is highly customazible and instead of hardcoded features can have any you want.
Despite todo is an anecdote and there are thousands of them, same as with an edit tool https://devblogs.microsoft.com/commandline/edit-is-now-open-source/ it is quite a challenging task to make a good one.<p># Design/Concept<p>Luckily, I had 2 weeks of winter holidays and I decided to invest this time into a project. I thought a lot on how to make a todo that potentially have any possible feature that anyone can simply add just when they need it. My solution was a Virtual Machine with persistent storage + Tasks that have their own executable instructions. So in this design any todo app could be a simple wrapper around i/o and all functionality would be powered by the VM.<p># Problems/Complexity<p>Creation of a working VM is a complex task for sure.
I will not mention every problem I faced during last months, but will just list some features I implemented to solve them:<p>- NaN-boxing — All stack values are 64-bit (u64) encoding 6 distinct types (Null, Boolean(TRUE_VAL,FALSE_VAL), STRING_VAL, CALLDATA_VAL, U32_VAL, MEM_SLICE_VAL (offset: 25 bits, size: 25 bits)).<p>- InlineVec — Fixed-size array-backed vector implementation used for stack, control stack, call stack, and jump stack with specified limits.<p>- Dynamic Memory/Heap — growable Vec heap, memory slices use 25-bit offset and 25-bit size fields (limited by MEM_SLICE_VAL).<p>- Definite Loops — DO…LOOP 2 nested loops only possible for now.<p>- Conditional jump - IF..THEN 2 nested IF..THEN statements only possible for now.<p>- Custom binary encoding/decoding implementation.<p># Current state<p>My Virtual Machine is still in it's early days and may miss some important instructions, but it can be already used for a todo app demo with programmable tasks.
All operations — from simple CRUD to the tasks' own instructions — are executed by the VM.
The concept is, that any kind of automation or workflow can be enabled by task instructions executed by the VM, rather than hardcoded functions in the app - exactly what I wanted to achieve initially!
There are 4 demo task instructions that are not a part of the todo code, but instead are in toml file which could be updated any time with a new one:<p>- <i>chain</i> - Creates next task once when another is completed. Removes calldata after call - called once<p>- <i>either</i> - Sets complete if either one or another task is completed + deletes not completed task<p>- <i>destructable</i> - task self destructs when it’s status set to complete<p>- <i>hide</i> - Keeps task hidden while specified task’s status is not complete.<p>https://github.com/tracyspacy/spacydo/tree/main/examples/todo<p>When I added the todo example, I realized, that the originally hardcoded states in the VM were a limitation. If I would make them generic (which I did), the VM would serve more than just todo apps: new use cases such as tasks orchestration and even state machines became possible.
I added a finite state machine primitive example as well - a traffic light - where task is a simple state machine which has own state transition rules in executable calldata.<p>https://github.com/tracyspacy/spacydo/tree/main/examples/traffic_light<p>I'm still working on this project alone and struggle to get other people involved to help me stabilize and finalize the VM.<p>Anyway, this journey is interesting and insightful, and I'm curious what comes next.</p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47179642">https://news.ycombinator.com/item?id=47179642</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Fri, 27 Feb 2026 12:15:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=47179642</link><dc:creator>tracyspacy</dc:creator><comments>https://news.ycombinator.com/item?id=47179642</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47179642</guid></item><item><title><![CDATA[Spacydo: State machine example with own calldata for state transition rules]]></title><description><![CDATA[
<p>In this example Traffic Light task is a simple state machine which has it's own state transition rules in calldata that executes by vm on each task's instructions call.<p>VM has persistent storage, so state is persistent across calls<p>Calldata logic: check task's state -> transit to next -> save. State transition rule: 0(Green)->1(Yellow)->2(Red)->0(Green).<p>examples code: https://github.com/tracyspacy/spacydo/blob/main/examples/traffic_light</p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47140675">https://news.ycombinator.com/item?id=47140675</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Tue, 24 Feb 2026 18:25:16 +0000</pubDate><link>https://news.ycombinator.com/item?id=47140675</link><dc:creator>tracyspacy</dc:creator><comments>https://news.ycombinator.com/item?id=47140675</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47140675</guid></item><item><title><![CDATA[After a month my tiny VM in Rust can power todo app with programmable workflows]]></title><description><![CDATA[
<p>A month ago I shared my winter holiday project - Task Engine VM , since then there is some progress that I suppose worth to share.<p>What's new:<p>- NaN-boxing — All stack values are 64-bit (u64) encoding 6 distinct types (Null, Boolean(TRUE_VAL,FALSE_VAL), STRING_VAL, CALLDATA_VAL, U32_VAL, MEM_SLICE_VAL (offset: 25 bits, size: 25 bits)).<p>- InlineVec — Fixed-size array-backed vector implementation used for stack, control stack, call stack, and jump stack with specified limits.<p>- Dynamic Memory/Heap — growable Vec heap; memory slices use 25-bit offset and 25-bit size fields (limited by MEM_SLICE_VAL).<p>- Zero dependencies —Custom binary encoding/decoding implementation.<p>Furthermore I added an example to stresstest VM - a todo app with programmable tasks.<p>In this example, all todo operations — from simple CRUD to tasks own instructions — are executed by a virtual machine.<p>The concept is that any kind of automation or workflow can be enabled by task instructions executed by the VM, rather than hardcoded functions in the app. It’s close to the concept of rules engines.<p>There are 4 demo task instructions:<p>- chain - Creates next task once when another completes. Removes calldata after call - called once<p>- either - Sets complete if either one or another task is completed + deletes not completed task (see gif)<p>- destructable - task self destructs when it’s status set to complete<p>- hide - Keeps task hidden while specified task’s status is not complete.<p>It is possible to add your own instructions to calldata.toml and use them within todo example:<p>cargo run -- add <TASK_TITLE > -calldata <INSTRUCTION_NAME> <PARAMETERS><p>todo example : https://github.com/tracyspacy/spacydo/tree/main/examples/todo<p>vm repo: https://github.com/tracyspacy/spacydo</p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47013612">https://news.ycombinator.com/item?id=47013612</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Sat, 14 Feb 2026 11:19:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=47013612</link><dc:creator>tracyspacy</dc:creator><comments>https://news.ycombinator.com/item?id=47013612</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47013612</guid></item><item><title><![CDATA[SpacyDo Task Engine virtual machine example: todo with programmable tasks]]></title><description><![CDATA[
<p>In this example, all todo operations — from simple CRUD to tasks own instructions — are executed by a virtual machine.<p>The concept is that any kind of automation or workflow can be enabled by task instructions executed by the VM, rather than hardcoded functions in the app. It’s close to the concept of rules engines.<p>There are 4 demo task instructions:<p>- *chain* - Creates next task once when another completes. Removes calldata after call - called once
- *either* - Sets complete if either one or another task is completed + deletes not completed task (see gif)
- *destructable* - task self destructs when it’s status set to complete
- *hide* - Keeps task hidden while specified task’s status is not complete.<p>It is possible to add your own instructions to calldata.toml and use them within todo example:<p>cargo run -- add <TASK_TITLE > -calldata <INSTRUCTION_NAME> <PARAMETERS><p>demo gif: https://lemmy.ml/pictrs/image/674bea85-d6b0-40d7-ba7f-dd1c10649aee.gif<p>repo: https://github.com/tracyspacy/spacydo<p>todo example : https://github.com/tracyspacy/spacydo/tree/main/examples/todo</p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47004379">https://news.ycombinator.com/item?id=47004379</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Fri, 13 Feb 2026 16:15:45 +0000</pubDate><link>https://news.ycombinator.com/item?id=47004379</link><dc:creator>tracyspacy</dc:creator><comments>https://news.ycombinator.com/item?id=47004379</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47004379</guid></item><item><title><![CDATA[New comment by tracyspacy in "Task engine VM – for tasks with executable instructions (progress update)"]]></title><description><![CDATA[
<p>It's an experimental approach to ordinary todos. There are plenty of good tools like taskwarrior, but their features are hardcoded task body is huge — you either dig through hundreds of features to find what you need, or something you need is too niche, so it will make no sense to hard code it for devs. 
So, I decided to try a different approach as an experiment: keep the task model super simple (id,title, status,calldata), but let tasks have executable instructions.
That way almost any custom behavior becomes possible — tasks depending on other tasks, tasks modifying other tasks or creating  new ones, recurring, self-deleting tasks, task that monitoring new tasks creation and creates alert task, or increase priority of older tasks etc. 
The tradeoff is complexity for flexibility, like vim/helix vs zed or atom.
To make that work a tiny virtual machine is needed and a set of opcodes. So this vm can be a basis for some todo app.</p>
]]></description><pubDate>Sun, 01 Feb 2026 19:31:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=46848638</link><dc:creator>tracyspacy</dc:creator><comments>https://news.ycombinator.com/item?id=46848638</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46848638</guid></item><item><title><![CDATA[New comment by tracyspacy in "Task engine VM – for tasks with executable instructions (progress update)"]]></title><description><![CDATA[
<p>duplicating link to a repo since it is not clickable in body:
<a href="https://github.com/tracyspacy/spacydo" rel="nofollow">https://github.com/tracyspacy/spacydo</a></p>
]]></description><pubDate>Sun, 01 Feb 2026 16:52:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=46847451</link><dc:creator>tracyspacy</dc:creator><comments>https://news.ycombinator.com/item?id=46847451</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46847451</guid></item><item><title><![CDATA[Task engine VM – for tasks with executable instructions (progress update)]]></title><description><![CDATA[
<p>The core idea is Minimal task model + programmable behaviour — a small core that enables unlimited features, since each task can carry executable scripts.<p>Recent updates:<p>- VM now uses NaN-boxing technique.<p>- All stack values are 64-bit (u64) but encode 5 distinct types:
    Boolean, String, CallData, U32, and MemSlice (25-bit offset + 25-bit size).<p>- Added InlineVec — a vector-like structure backed by a fixed-size array. The VM stack, control stack, call stack, and jump stack now use it with defined limits.
- VM has memory now (heap). Memory is simple Vec<u64>, grows dynamically, but technically length is restricted by mem_slice_val format: 25 bits payload for offset and size<p>Project is still in absolutely early stage.<p>Repo is here: https://github.com/tracyspacy/spacydo</p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=46847422">https://news.ycombinator.com/item?id=46847422</a></p>
<p>Points: 4</p>
<p># Comments: 3</p>
]]></description><pubDate>Sun, 01 Feb 2026 16:49:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=46847422</link><dc:creator>tracyspacy</dc:creator><comments>https://news.ycombinator.com/item?id=46847422</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46847422</guid></item><item><title><![CDATA[New comment by tracyspacy in "[dead]"]]></title><description><![CDATA[
<p>I've been building a bytecode VM in Rust and recently implemented NaN boxing for value representation. Sharing here for anyone interested.<p>I needed all VM values (booleans, integers, string pool indices, bytecode references) to fit in 64 bits (stack is Vec<u64>).
My implementation encodes 5 distinct types using a 3-bit tag and 32-bit payload, all within a single u64. It also has 15 unused bits, they may be used later for types expansion.<p>I'm using a 64-bit layout:
- Bits 63-51: Quiet NaN signature (0x7FFC...)
- Bits 50-18: 32-bit payload (integers, string pool indices, etc.)
- Bits 17-3: Unused/ (15 bits)
- Bits 2-0: 3-bit type tag</p>
]]></description><pubDate>Thu, 08 Jan 2026 10:58:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=46539612</link><dc:creator>tracyspacy</dc:creator><comments>https://news.ycombinator.com/item?id=46539612</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46539612</guid></item><item><title><![CDATA[Implementing NaN Boxing in a Stack-Based VM]]></title><description><![CDATA[
<p>## My Implementation<p>I'm using a 64-bit layout:<p>- Bits 63-51: Quiet NaN signature (0x7FFC...)<p>- Bits 50-18: 32-bit payload (integers, string pool indices, etc.)<p>- Bits 17-3: Unused/ (15 bits)<p>- Bits 2-0: 3-bit type tag<p>So it allows me to have 5 tagged types: `TRUE_VAL`, `FALSE_VAL`, `STRING_VAL`, `CALLDATA_VAL`, `U32_VAL`<p>This is for a domain-specific VM I'm building for programmable task management (think "Vim for todo apps" - small core with scriptable behaviors). The VM is stack-based with:<p>- String pooling & instructions pooling (indices stored as NaN-boxed values) 
- Call stack for task instructions execution.<p>code is here : https://github.com/tracyspacy/spacydo/blob/main/src/values.rs</p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=46529383">https://news.ycombinator.com/item?id=46529383</a></p>
<p>Points: 5</p>
<p># Comments: 0</p>
]]></description><pubDate>Wed, 07 Jan 2026 17:31:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=46529383</link><dc:creator>tracyspacy</dc:creator><comments>https://news.ycombinator.com/item?id=46529383</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46529383</guid></item><item><title><![CDATA[New comment by tracyspacy in "[dead]"]]></title><description><![CDATA[
<p>## Implementation Details<p>I'm using a 64-bit layout:<p>- Bits 63-51: Quiet NaN signature (0x7FFC...)
- Bits 50-18: 32-bit payload (integers, string pool indices, etc.)
- Bits 17-3: Unused/ (15 bits)
- Bits 2-0: 3-bit type tag<p>So it allows me to have 5 tagged types: `TRUE_VAL`, `FALSE_VAL`, `STRING_VAL`, `CALLDATA_VAL`, `U32_VAL`<p>This is for a domain-specific VM I'm building for programmable task management (think "Vim for todo apps" - small core with scriptable behaviors). The VM is stack-based with:<p>- String pooling (indices stored as NaN-boxed values)
- Instruction pooling (bytecode reuse)
- Call stack for task instructions execution.</p>
]]></description><pubDate>Wed, 07 Jan 2026 17:07:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=46529020</link><dc:creator>tracyspacy</dc:creator><comments>https://news.ycombinator.com/item?id=46529020</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46529020</guid></item><item><title><![CDATA[New comment by tracyspacy in "Task engine VM where tasks can contain own executable instructions"]]></title><description><![CDATA[
<p>Here is my winter holiday project. Current scope and known issues are listed in readme, so thoughts and ideas on them are welcome ^_^</p>
]]></description><pubDate>Sat, 03 Jan 2026 15:33:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=46477808</link><dc:creator>tracyspacy</dc:creator><comments>https://news.ycombinator.com/item?id=46477808</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46477808</guid></item></channel></rss>