<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: kscarlet</title><link>https://news.ycombinator.com/user?id=kscarlet</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Fri, 05 Jun 2026 03:51:19 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=kscarlet" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by kscarlet in "Elixir v1.20: Now a gradually typed language"]]></title><description><![CDATA[
<p>These mean nothing. The C/C++ implementations use SIMD intrinsic while Lisp doesn't (it should have used sb-simd).</p>
]]></description><pubDate>Thu, 04 Jun 2026 23:29:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=48406076</link><dc:creator>kscarlet</dc:creator><comments>https://news.ycombinator.com/item?id=48406076</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48406076</guid></item><item><title><![CDATA[New comment by kscarlet in "Don't Build Your Own Lisp"]]></title><description><![CDATA[
<p>That's what the author means. She know what she's talking about.</p>
]]></description><pubDate>Thu, 04 Jun 2026 04:22:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=48393805</link><dc:creator>kscarlet</dc:creator><comments>https://news.ycombinator.com/item?id=48393805</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48393805</guid></item><item><title><![CDATA[New comment by kscarlet in "Why Janet? (2023)"]]></title><description><![CDATA[
<p>> A small but illustrative example: given a live running clisp program, I can click on a UI element to inspect both the live object and the underlying code in the IDE. I can even copy and paste UI elements!<p>I agree GUI is awkward in Emacs/SLIME. I think the reason is there isn't a standardized GUI framework across the Lisp world. Otherwise people can make SLIME support it.<p>> If I wanted to use slime-fancy to inspect a class, what I get is a dead list of raw text that I have to awkwardly interact with.<p>This part I do not agree. Nowadays "text" in Emacs/SLIME is far from "raw text", there's button that respond to hover, with right click context menu, and can be copy and pasted. I recall some small quirks (like objects in inspector are not presentations) but the only reason they aren't fixed (yet) is nobody get bothered enough. There's rarely any fundamental limitation. After all, it wouldn't be fare to call LispWorks UI "dead pixels".<p>BTW I once wrote yet another over ambitious project < <a href="https://github.com/neomacs-project/neomacs" rel="nofollow">https://github.com/neomacs-project/neomacs</a> > but it doesn't go anywhere either. People do not care enough, Emacs is good enough.</p>
]]></description><pubDate>Wed, 03 Jun 2026 21:47:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=48390598</link><dc:creator>kscarlet</dc:creator><comments>https://news.ycombinator.com/item?id=48390598</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48390598</guid></item><item><title><![CDATA[New comment by kscarlet in "Why Janet? (2023)"]]></title><description><![CDATA[
<p>Can you tell a bit more about what is missing from Emacs SLIME when compared to LispWorks?</p>
]]></description><pubDate>Wed, 03 Jun 2026 07:27:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=48380990</link><dc:creator>kscarlet</dc:creator><comments>https://news.ycombinator.com/item?id=48380990</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48380990</guid></item><item><title><![CDATA[New comment by kscarlet in "Don't Build Your Own Lisp"]]></title><description><![CDATA[
<p>I don't see any comments on Kernel in the post. I didn't waste my time reading the book, but the post criticizes <i>unhygiene</i> F-expr, which is known to be awful and is exactly what Kernel aims to solve and supersede (via <i>hygiene</i> F-expr).</p>
]]></description><pubDate>Wed, 03 Jun 2026 07:19:32 +0000</pubDate><link>https://news.ycombinator.com/item?id=48380946</link><dc:creator>kscarlet</dc:creator><comments>https://news.ycombinator.com/item?id=48380946</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48380946</guid></item><item><title><![CDATA[New comment by kscarlet in "C extensions, portability, and alternative compilers"]]></title><description><![CDATA[
<p>Not directly. Every "extensions" listed above cannot be implemented as user libraries, that's why these back and forth process between implementation extensions and portability user libraries need to happen to reach a de-facto standard. Otherwise the user libraries become de-facto standard themselves, like ASDF the build system, Trivia the pattern matcher...<p>But I think the power dynamics is crucial. In the Lisp ecosystem the users have great power, (and there are dozens of implementations,) so it's not like one or two implementation decides what everyone is gonna use and everyone just lives with it.</p>
]]></description><pubDate>Tue, 26 May 2026 18:16:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=48283572</link><dc:creator>kscarlet</dc:creator><comments>https://news.ycombinator.com/item?id=48283572</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48283572</guid></item><item><title><![CDATA[New comment by kscarlet in "C extensions, portability, and alternative compilers"]]></title><description><![CDATA[
<p>I think the Common Lisp ecosystem sets a good example of how a dozen of implementations move ahead together. Implementations experiment with extensions, the really useful ones get implemented multiple times, and some portability library emerges as de-facto standard if it's good enough. You can watch the result in <a href="https://portability.cl/" rel="nofollow">https://portability.cl/</a>, the language is evolving like never before even if the standard committee has dissolved nearly 40 years ago!</p>
]]></description><pubDate>Mon, 25 May 2026 22:17:26 +0000</pubDate><link>https://news.ycombinator.com/item?id=48272588</link><dc:creator>kscarlet</dc:creator><comments>https://news.ycombinator.com/item?id=48272588</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48272588</guid></item><item><title><![CDATA[New comment by kscarlet in "Hyperpolyglot Lisp: Common Lisp, Racket, Clojure, Emacs Lisp"]]></title><description><![CDATA[
<p><p><pre><code>  (defparameter *a* '(1 2 3))
  (setf (car *a*) 3)
</code></pre>
And this is undefined behavior because it mutates literal constant. I stopped reading further. The CL column is so bad.</p>
]]></description><pubDate>Tue, 19 May 2026 06:10:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=48189820</link><dc:creator>kscarlet</dc:creator><comments>https://news.ycombinator.com/item?id=48189820</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48189820</guid></item><item><title><![CDATA[New comment by kscarlet in "The Emacsification of Software"]]></title><description><![CDATA[
<p>"Lisp Curse" is really a myth, or at least, it completely fails to apply to the Common Lisp community.  <a href="https://applied-langua.ge/posts/lisp-curse-redemption-arc.html" rel="nofollow">https://applied-langua.ge/posts/lisp-curse-redemption-arc.ht...</a></p>
]]></description><pubDate>Sat, 16 May 2026 01:10:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=48155854</link><dc:creator>kscarlet</dc:creator><comments>https://news.ycombinator.com/item?id=48155854</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48155854</guid></item><item><title><![CDATA[New comment by kscarlet in "Show HN: Zuckerman – minimalist personal AI agent that self-edits its own code"]]></title><description><![CDATA[
<p>Why? Many Lisp systems and Common Lisp in particular have great hot reloading capability, from redefining functions to UPDATE-INSTANCE-FOR-REDEFINED-CLASS to update the states.</p>
]]></description><pubDate>Mon, 02 Feb 2026 03:40:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=46852156</link><dc:creator>kscarlet</dc:creator><comments>https://news.ycombinator.com/item?id=46852156</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46852156</guid></item><item><title><![CDATA[New comment by kscarlet in "Serious Lisp Written in Go"]]></title><description><![CDATA[
<p>Very nice.<p>p.s. (I hate to point this out), there seems to be a name collision with <a href="https://lisperator.net/slip/" rel="nofollow">https://lisperator.net/slip/</a></p>
]]></description><pubDate>Thu, 08 Jan 2026 00:17:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=46535267</link><dc:creator>kscarlet</dc:creator><comments>https://news.ycombinator.com/item?id=46535267</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46535267</guid></item><item><title><![CDATA[New comment by kscarlet in "A Basic Just-In-Time Compiler (2015)"]]></title><description><![CDATA[
<p>> As to the actual difference between JIT vs. AOT... it may just come down to accounting. That is, on whether you can always exclude the compilation time/cost from the overall program execution time/cost or not. If so, you're compiling ahead of (execution) time. If not, you're compiling during execution time.<p>Well, this includes what I refer to as "on-the-fly" AOT, like SBCL, CCL, Chez Scheme... Even ECL can be configured to work this way. As I mentioned in another comment, people in those circles do not refer to these as "JIT" at all, instead saying "I wish my implementation was JIT instead of on-the-fly AOT"!</p>
]]></description><pubDate>Sat, 03 Jan 2026 16:44:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=46478683</link><dc:creator>kscarlet</dc:creator><comments>https://news.ycombinator.com/item?id=46478683</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46478683</guid></item><item><title><![CDATA[New comment by kscarlet in "A Basic Just-In-Time Compiler (2015)"]]></title><description><![CDATA[
<p>They generate native machine code.</p>
]]></description><pubDate>Sat, 03 Jan 2026 04:36:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=46472834</link><dc:creator>kscarlet</dc:creator><comments>https://news.ycombinator.com/item?id=46472834</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46472834</guid></item><item><title><![CDATA[New comment by kscarlet in "A Basic Just-In-Time Compiler (2015)"]]></title><description><![CDATA[
<p>In that sense almost every compiled Lisp/Scheme implementation, GHC, etc. or any other interactive programming system, count as JIT. But virtually nobody in those circles refer to such implementations as JIT. Instead, people says "I wish our implementation was JIT to benefit from all those optimizations it enables"!</p>
]]></description><pubDate>Sat, 03 Jan 2026 03:53:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=46472630</link><dc:creator>kscarlet</dc:creator><comments>https://news.ycombinator.com/item?id=46472630</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46472630</guid></item><item><title><![CDATA[New comment by kscarlet in "A Basic Just-In-Time Compiler (2015)"]]></title><description><![CDATA[
<p>It seems that JIT is overloaded with at least 2 meaning.<p>The canonical definition of JIT is "compilation <i>during</i> execution of a program". Usually, a program is being interpreted first, then switches to compiled code in the middle of execution. This is <i>not</i> what this article does.<p>What this article does is sometimes called on-the-fly AOT, or just on-the-fly compilation. I'd prefer not overloading the term "JIT".</p>
]]></description><pubDate>Sat, 03 Jan 2026 03:15:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=46472461</link><dc:creator>kscarlet</dc:creator><comments>https://news.ycombinator.com/item?id=46472461</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46472461</guid></item><item><title><![CDATA[New comment by kscarlet in "Extensibility: The "100% Lisp" Fallacy"]]></title><description><![CDATA[
<p>I guess this case is workable similar to struct redefintion. There can be a condition and a CONTINUE restart, which makes instances of the removed constructor obsolete.</p>
]]></description><pubDate>Fri, 02 Jan 2026 11:20:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=46463706</link><dc:creator>kscarlet</dc:creator><comments>https://news.ycombinator.com/item?id=46463706</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46463706</guid></item><item><title><![CDATA[New comment by kscarlet in "Extensibility: The "100% Lisp" Fallacy"]]></title><description><![CDATA[
<p>I don't find any good idea in [1].<p>> 1. The function and variable namespaces have been collapsed into a single namespace.<p>Lisp-N, package system and homoiconic macro is a local optimum (IMO practically much better than Scheme, but I digress) for variable capture issue in metaprogramming. Now it's saying let's bring back the footguns and also you have to write lst instead of list. Please, no.<p>> 2. ...adds a layer on top of CLOS<p>How about a library? Why a new standard?<p>> 3. Common Lisp 3 supports case-sensitive symbols.<p>This I can relate.<p>> 4. Common Lisp 3 supports native threads.
> 5. Common Lisp 3 supports tail recursion elimination.<p>Practically not a problem for today's CL. There's nothing to fix.<p>> Meanwhile proper typing should be introduced out of the box, like in Coalton[3], for example.<p>Are you saying Coalton as an embedded language should be introduced out of the box? I'm afraid it may quickly earn similar reputation as LOOP and FORMAT. Or are you saying the whole language should adopt Coalton-like typed semantics? Then I don't think it's even possible for large part of the language, especially when you take interactivity into account. What happens when a function gets redefined with different type? Worse, how about CHANGE-CLASS and UPDATE-INSTANCE-FOR-REDEFINED-CLASS?<p>> Also, pattern matching should be the part of the language, not some external library [4].<p>Why not? Common Lisp as a living and extensible language now evolves by adopting de-facto standard (trivia for pattern matching, bt for native threads, usocket for network, ASDF for build system, etc). Why need a committee or other form of authority to prescribe what everyone gets to use when we have a maximally democratic process?</p>
]]></description><pubDate>Fri, 02 Jan 2026 06:46:15 +0000</pubDate><link>https://news.ycombinator.com/item?id=46462093</link><dc:creator>kscarlet</dc:creator><comments>https://news.ycombinator.com/item?id=46462093</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46462093</guid></item><item><title><![CDATA[New comment by kscarlet in "Common Lisp SDK for the Datastar Hypermedia Framework"]]></title><description><![CDATA[
<p>wookie is built on cl-async, so my hope is that it's more tractable to write proper async SSE handler. But I haven't looked at whether it's possible to keep open connection asyncly.</p>
]]></description><pubDate>Fri, 02 Jan 2026 01:09:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=46460224</link><dc:creator>kscarlet</dc:creator><comments>https://news.ycombinator.com/item?id=46460224</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46460224</guid></item><item><title><![CDATA[New comment by kscarlet in "Common Lisp SDK for the Datastar Hypermedia Framework"]]></title><description><![CDATA[
<p>> Each SSE connection blocks one worker for its entire duration.<p>Have you tried wookie? Such extreme case of blocking the event loop... negates any benefit of async processing.</p>
]]></description><pubDate>Thu, 01 Jan 2026 16:32:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=46455374</link><dc:creator>kscarlet</dc:creator><comments>https://news.ycombinator.com/item?id=46455374</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46455374</guid></item><item><title><![CDATA[New comment by kscarlet in "An attempt to articulate Forth's practical strengths and eternal usefulness"]]></title><description><![CDATA[
<p>Well written in general. However:<p>>  C++ has method override but it's not the same: you cannot change the behavior of how addition works on two 64-bit integers (such as treating them both as fixed-point numbers).<p>Wouldn't you just create a 1-field struct/class and override all the arithmetic operators? Or if you're less fixated about using the same operator (like me as a Lisper), invent a method called ADD and use that.<p>> Changing addition to work on "bignum"s (numbers that have arbitrarily large precision) is a good usecase of overriding the addition operation.<p>I don't see this as something unique to Forth compared to other languages, even C++.</p>
]]></description><pubDate>Wed, 17 Dec 2025 11:23:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=46300741</link><dc:creator>kscarlet</dc:creator><comments>https://news.ycombinator.com/item?id=46300741</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46300741</guid></item></channel></rss>