<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: soegaard</title><link>https://news.ycombinator.com/user?id=soegaard</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sun, 12 Apr 2026 10:53:13 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=soegaard" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by soegaard in "The Future of SCIP"]]></title><description><![CDATA[
<p>I misread it too.</p>
]]></description><pubDate>Fri, 27 Mar 2026 22:35:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=47549281</link><dc:creator>soegaard</dc:creator><comments>https://news.ycombinator.com/item?id=47549281</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47549281</guid></item><item><title><![CDATA[New comment by soegaard in "A 6502 disassembler with a TUI: A modern take on Regenerator"]]></title><description><![CDATA[
<p>Loved the examples!</p>
]]></description><pubDate>Tue, 24 Mar 2026 10:32:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=47500696</link><dc:creator>soegaard</dc:creator><comments>https://news.ycombinator.com/item?id=47500696</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47500696</guid></item><item><title><![CDATA[New comment by soegaard in "femtolisp: A lightweight, robust, scheme-like Lisp implementation"]]></title><description><![CDATA[
<p>This is pretty small.<p><a href="http://scheme.dk/blog/2006/12/self-evaluating-evaluator.html" rel="nofollow">http://scheme.dk/blog/2006/12/self-evaluating-evaluator.html</a></p>
]]></description><pubDate>Mon, 23 Feb 2026 19:57:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=47127855</link><dc:creator>soegaard</dc:creator><comments>https://news.ycombinator.com/item?id=47127855</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47127855</guid></item><item><title><![CDATA[New comment by soegaard in "Emulating Goto in Scheme with Continuations"]]></title><description><![CDATA[
<p>If you are into continuations, check Friedman's papers on ReadScheme.<p><a href="https://github.com/schemedoc/bibliography/blob/master/page6.md" rel="nofollow">https://github.com/schemedoc/bibliography/blob/master/page6....</a><p>In particular look at "Programming with Continuations", "Engines Build Process Abstractions" and "Continuations and Coroutines".</p>
]]></description><pubDate>Mon, 23 Feb 2026 19:23:00 +0000</pubDate><link>https://news.ycombinator.com/item?id=47127387</link><dc:creator>soegaard</dc:creator><comments>https://news.ycombinator.com/item?id=47127387</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47127387</guid></item><item><title><![CDATA[New comment by soegaard in "Hoot: Scheme on WebAssembly"]]></title><description><![CDATA[
<p><a href="https://docs.racket-lang.org/rkt-tree-widget/index.html" rel="nofollow">https://docs.racket-lang.org/rkt-tree-widget/index.html</a></p>
]]></description><pubDate>Sun, 08 Feb 2026 23:34:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=46939727</link><dc:creator>soegaard</dc:creator><comments>https://news.ycombinator.com/item?id=46939727</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46939727</guid></item><item><title><![CDATA[New comment by soegaard in "The WebRacket language is a subset of Racket that compiles to WebAssembly"]]></title><description><![CDATA[
<p>I need to study the stack-switching proposal in more detail.<p>However, I don't see an obvious way of attach and probe continuation marks to the continuations (including the current one).<p>I am not an expert in continuation marks, so I'll just link to this presentation by Matthew Flatt (which you probably already know).<p><a href="https://github.com/WebAssembly/meetings/blob/main/stack/2021/presentations/2021-5-17-flatt-racket-intermediate-language-control.pdf" rel="nofollow">https://github.com/WebAssembly/meetings/blob/main/stack/2021...</a></p>
]]></description><pubDate>Thu, 22 Jan 2026 13:13:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=46718797</link><dc:creator>soegaard</dc:creator><comments>https://news.ycombinator.com/item?id=46718797</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46718797</guid></item><item><title><![CDATA[New comment by soegaard in "The WebRacket language is a subset of Racket that compiles to WebAssembly"]]></title><description><![CDATA[
<p>Yes. I am following the Scheme tradition of representing immediate values as tagged pointers. And (ref i31) is the obvious choice when using WebAssembly.
I am happy you and the team added GC to WebAssembly.<p>Details on the representation.<p><a href="https://github.com/soegaard/webracket/blob/main/compiler.rkt#L3763" rel="nofollow">https://github.com/soegaard/webracket/blob/main/compiler.rkt...</a><p>I am more or less only using the linear memory for the JavaScript FFI.
FASL-encoded values are passed back and forth to JavaScript.</p>
]]></description><pubDate>Thu, 22 Jan 2026 12:59:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=46718663</link><dc:creator>soegaard</dc:creator><comments>https://news.ycombinator.com/item?id=46718663</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46718663</guid></item><item><title><![CDATA[New comment by soegaard in "The WebRacket language is a subset of Racket that compiles to WebAssembly"]]></title><description><![CDATA[
<p>> Is Racket bytecode different?<p>Changes to the bytecode representation were indeed rare also in Racket.<p>The Whalesong project was written as part of a dissertation - and when people graduate and get jobs, projects are often abandoned.</p>
]]></description><pubDate>Thu, 22 Jan 2026 12:46:56 +0000</pubDate><link>https://news.ycombinator.com/item?id=46718535</link><dc:creator>soegaard</dc:creator><comments>https://news.ycombinator.com/item?id=46718535</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46718535</guid></item><item><title><![CDATA[New comment by soegaard in "The WebRacket language is a subset of Racket that compiles to WebAssembly"]]></title><description><![CDATA[
<p>I am using a similar representation of immediates as Hoot and wasm_of_ocaml.<p>The representation is explained here:<p><a href="https://github.com/soegaard/webracket/blob/main/compiler.rkt#L3763" rel="nofollow">https://github.com/soegaard/webracket/blob/main/compiler.rkt...</a><p>Internally the compiler uses a series of passes implemented using Nanopass.<p><pre><code>    (generate-code
     (flatten-begin
      (closure-conversion
       (anormalize
        (categorize-applications
         (assignment-conversion
          (α-rename
           (explicit-case-lambda
            (explicit-begin
             (convert-quotations
              (infer-names
               (flatten-topbegin
                (parse
                 (unexpand
                  (topexpand stx)))))))))))))))

</code></pre>
The code generator is inspired by "Destination-driven Code Generation"
by Dybvig, Hieb and Butler. There are some differences however. The code
generator in the paper generates "flat" code (assembler) whereas I
generate nested Web Assembly instructions.<p>This approach generates reasonable code without having to implement
a register allocator. Also, I believe I saw a Wasm to Wasm compiler
that improved register allocation (maybe it was a switch for wasm-tools?).<p>If (when?) WebRacket becomes a success, we can always switch out individual passes.</p>
]]></description><pubDate>Thu, 22 Jan 2026 12:40:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=46718471</link><dc:creator>soegaard</dc:creator><comments>https://news.ycombinator.com/item?id=46718471</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46718471</guid></item><item><title><![CDATA[New comment by soegaard in "The WebRacket language is a subset of Racket that compiles to WebAssembly"]]></title><description><![CDATA[
<p>Maybe. My main problem is to get light-weight support for continuation marks.<p>If I need a CPS-pass for continuation marks, I might as well use it for continuations as well.<p>It would be great if it were possible to avoid a CPS-pass though.</p>
]]></description><pubDate>Thu, 22 Jan 2026 12:24:18 +0000</pubDate><link>https://news.ycombinator.com/item?id=46718340</link><dc:creator>soegaard</dc:creator><comments>https://news.ycombinator.com/item?id=46718340</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46718340</guid></item><item><title><![CDATA[New comment by soegaard in "The WebRacket language is a subset of Racket that compiles to WebAssembly"]]></title><description><![CDATA[
<p>I wouldn't say compiling full Racket to WebAssembly is impossible.
But I think the consensus is that one can't add a WebAssembly backend to the compiler in the same manner as the x86 and arm backends. These backends manipulate the stack in ways WebAssembly prohibits.<p>This forces an Racket implementation to make continuations explicit.
And that will most likely mean a WebAssembly backend will be slower than the native backends.</p>
]]></description><pubDate>Thu, 22 Jan 2026 00:08:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=46713502</link><dc:creator>soegaard</dc:creator><comments>https://news.ycombinator.com/item?id=46713502</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46713502</guid></item><item><title><![CDATA[New comment by soegaard in "The WebRacket language is a subset of Racket that compiles to WebAssembly"]]></title><description><![CDATA[
<p>Hi All,<p>It's still early days for the WebRacket project.<p>Racket is a <i>huge</i> language, so be patient wrt features.<p>To keep motivation high I decided to implement a subset that
can be used to built practical applications - and then extend
the supported features from there. Hopefully, this strategy
will also lead to some early adopters that can help me
prioritize which features to add.<p>Some features are simply "more of the same".
In this category falls more types of hash tables.
Supporting bignums are also a matter of just doing it.<p>Other features require more work. I have already done
some work on implementing modules in terms of linklets.
When linklets/modules work, we can reuse the existing
implementation of regular expressions.<p>Adding continuation marks and delimited continuations
require adding a CPS-pass. This is certainly doable.
Postponing it has been great though. Having a direct style
compiler means the generated code follows the structure
in the input source code. And that makes debugging easier.
Now that bugs have become rarer, it makes sense to look at CPS.<p>Enjoy.<p>/Jens Axel</p>
]]></description><pubDate>Thu, 22 Jan 2026 00:01:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=46713452</link><dc:creator>soegaard</dc:creator><comments>https://news.ycombinator.com/item?id=46713452</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46713452</guid></item><item><title><![CDATA[New comment by soegaard in "The WebRacket language is a subset of Racket that compiles to WebAssembly"]]></title><description><![CDATA[
<p>No, there is nothing in common with Whalesong.<p>Whalesong used the built-in bytecode compiler and compiled the bytecode to JavaScript. Reusing the bytecode compiler is in principle a good idea - but each time the bytecodes are changed, Whalesong needs to be updated.<p>And after the move to Chez Scheme as backend, the bytecode compiler is no longer a part of the main compilation path.</p>
]]></description><pubDate>Wed, 21 Jan 2026 23:45:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=46713307</link><dc:creator>soegaard</dc:creator><comments>https://news.ycombinator.com/item?id=46713307</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46713307</guid></item><item><title><![CDATA[New comment by soegaard in "Trump to impose tariffs on European nations over Greenland"]]></title><description><![CDATA[
<p>Nato - Article 2<p>The Parties will contribute toward the further development of peaceful and friendly international relations by strengthening their free institutions, by bringing about a better understanding of the principles upon which these institutions are founded, and by promoting conditions of stability and well-being. They will seek to eliminate conflict in their international economic policies and will encourage economic collaboration between any or all of them.</p>
]]></description><pubDate>Sat, 17 Jan 2026 17:51:00 +0000</pubDate><link>https://news.ycombinator.com/item?id=46660161</link><dc:creator>soegaard</dc:creator><comments>https://news.ycombinator.com/item?id=46660161</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46660161</guid></item><item><title><![CDATA[New comment by soegaard in "Racket v9.0"]]></title><description><![CDATA[
<p>A wonderful video!</p>
]]></description><pubDate>Mon, 24 Nov 2025 00:07:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=46028741</link><dc:creator>soegaard</dc:creator><comments>https://news.ycombinator.com/item?id=46028741</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46028741</guid></item><item><title><![CDATA[New comment by soegaard in "Racket v9.0"]]></title><description><![CDATA[
<p>From the Idris 2 documentation:<p><pre><code>    >> Can Idris 2 compile itself?
    > Yes, Idris 2 is implemented in Idris 2. By default, it targets Chez Scheme, 
    > so you can bootstrap from the generated Scheme code, as described in Section 
    > Getting Started.
</code></pre>
Also, check this talk:<p><a href="https://www.youtube.com/watch?v=h9YAOaBWuIk" rel="nofollow">https://www.youtube.com/watch?v=h9YAOaBWuIk</a></p>
]]></description><pubDate>Sun, 23 Nov 2025 18:14:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=46025886</link><dc:creator>soegaard</dc:creator><comments>https://news.ycombinator.com/item?id=46025886</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46025886</guid></item><item><title><![CDATA[New comment by soegaard in "Racket v9.0"]]></title><description><![CDATA[
<p>Go to racket-mode.com for the <i>very</i> nice Emacs-integration.</p>
]]></description><pubDate>Sun, 23 Nov 2025 18:10:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=46025855</link><dc:creator>soegaard</dc:creator><comments>https://news.ycombinator.com/item?id=46025855</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46025855</guid></item><item><title><![CDATA[New comment by soegaard in "Structure and Interpretation of Classical Mechanics (2014)"]]></title><description><![CDATA[
<p>I think, this is the best way of running the SICM programs.</p>
]]></description><pubDate>Tue, 28 Oct 2025 16:48:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=45735286</link><dc:creator>soegaard</dc:creator><comments>https://news.ycombinator.com/item?id=45735286</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45735286</guid></item><item><title><![CDATA[New comment by soegaard in "Practical Scheme"]]></title><description><![CDATA[
<p>Mock-up?</p>
]]></description><pubDate>Tue, 21 Oct 2025 13:29:26 +0000</pubDate><link>https://news.ycombinator.com/item?id=45655547</link><dc:creator>soegaard</dc:creator><comments>https://news.ycombinator.com/item?id=45655547</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45655547</guid></item><item><title><![CDATA[New comment by soegaard in "Show HN: Kent Dybvig's Scheme Machine in 400 Lines of C (Heap-Memory Model)"]]></title><description><![CDATA[
<p>Even MIT Scheme was used with SICP, the Scheme implementation
in the book is different from MIT Scheme.<p>MIT Scheme was for a long period one of the leading Scheme implementations.
It lacks support for Apple Silicon, so it is not as popular now, as it once was.<p><a href="https://www.gnu.org/software/mit-scheme/" rel="nofollow">https://www.gnu.org/software/mit-scheme/</a></p>
]]></description><pubDate>Mon, 06 Oct 2025 16:38:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=45493198</link><dc:creator>soegaard</dc:creator><comments>https://news.ycombinator.com/item?id=45493198</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45493198</guid></item></channel></rss>