<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: kuruczgy</title><link>https://news.ycombinator.com/user?id=kuruczgy</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sat, 18 Apr 2026 12:46:01 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=kuruczgy" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by kuruczgy in "Lean proved this program correct; then I found a bug"]]></title><description><![CDATA[
<p>> It’s important to note that this is the Lean runtime that has a bug, not the Lean kernel, which is the part that actually does the verification (aka proving). [1] So it’s not even immediately clear what this bug would really apply to<p>Well, Lean is written in Lean, so I am pretty sure a runtime bug like this could be exploited to prove `False`. Yes, since the kernel is written in C++, technically it's not the part affected by this bug, but since you cannot use the Lean kernel without the Lean compiler, this difference does not matter.</p>
]]></description><pubDate>Tue, 14 Apr 2026 04:12:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=47761147</link><dc:creator>kuruczgy</dc:creator><comments>https://news.ycombinator.com/item?id=47761147</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47761147</guid></item><item><title><![CDATA[New comment by kuruczgy in "Litex: The First Formal Language Learnable in 1-2 Hours"]]></title><description><![CDATA[
<p>So Litex is not based on Type Theory I gather. How are proofs represented and checked?</p>
]]></description><pubDate>Sat, 27 Sep 2025 06:54:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=45393685</link><dc:creator>kuruczgy</dc:creator><comments>https://news.ycombinator.com/item?id=45393685</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45393685</guid></item><item><title><![CDATA[New comment by kuruczgy in "The bloat of edge-case first libraries"]]></title><description><![CDATA[
<p>Well, if your language has a sufficiently strong type system (namely, dependent types), you can take <i>proofs</i> of some properties as arguments. Example in Lean:<p><pre><code>  def clamp (value min max : Float) {H : min < max} : Float := ...</code></pre></p>
]]></description><pubDate>Sun, 21 Sep 2025 06:15:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=45320478</link><dc:creator>kuruczgy</dc:creator><comments>https://news.ycombinator.com/item?id=45320478</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45320478</guid></item><item><title><![CDATA[New comment by kuruczgy in "A parser for TypeScript types, written in TypeScript types"]]></title><description><![CDATA[
<p>TypeScript (the types part) absolutely does have ternary operators: <a href="https://www.typescriptlang.org/docs/handbook/2/conditional-types.html" rel="nofollow">https://www.typescriptlang.org/docs/handbook/2/conditional-t...</a></p>
]]></description><pubDate>Mon, 04 Aug 2025 06:55:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=44782789</link><dc:creator>kuruczgy</dc:creator><comments>https://news.ycombinator.com/item?id=44782789</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44782789</guid></item><item><title><![CDATA[New comment by kuruczgy in "The upcoming GPT-3 moment for RL"]]></title><description><![CDATA[
<p>> but language models frequently outperform us in reasoning<p>what<p>99% of the time their reasoning is laughable. Or even if their reasoning is on the right track, they often just ignore it in the final answer, and do the stupid thing anyway.</p>
]]></description><pubDate>Sun, 13 Jul 2025 13:24:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=44550291</link><dc:creator>kuruczgy</dc:creator><comments>https://news.ycombinator.com/item?id=44550291</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44550291</guid></item><item><title><![CDATA[New comment by kuruczgy in "Teal – A statically-typed dialect of Lua"]]></title><description><![CDATA[
<p>Thanks for the detailed answer! I just wish the website was more upfront about this. I cannot find anything about "soundness" on the front page or in the docs.<p>I think you could basically copy your comment into an FAQ section or something on the front page.</p>
]]></description><pubDate>Fri, 16 May 2025 14:40:00 +0000</pubDate><link>https://news.ycombinator.com/item?id=44006064</link><dc:creator>kuruczgy</dc:creator><comments>https://news.ycombinator.com/item?id=44006064</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44006064</guid></item><item><title><![CDATA[New comment by kuruczgy in "Teal – A statically-typed dialect of Lua"]]></title><description><![CDATA[
<p>> Your type system cannot be sound. It's going to have escape hatches and exceptions because that's how dynamic languages roll.<p>I think you could prove that you can't construct a sound & complete type system for Lua. But just saying "Your type system cannot be sound" by itself is definitely wrong. I don't understand why people are throwing out both soundness & completeness, instead of at least retaining one (and I think the choice here is pretty obvious, a sound but incomplete type system is much more useful than an unsound one).<p>From Flow's website[1] (a type checker for JavaScript):<p>> Flow tries to be as sound and complete as possible. But because JavaScript was not designed around a type system, Flow sometimes has to make a tradeoff. When this happens Flow tends to favor soundness over completeness, ensuring that code doesn't have any bugs.<p>I don't understand why other type systems for dynamically typed languages cannot strive for that, and in particular I am pretty salty at TypeScript for explicitly not caring about soundness.<p>[1]: <a href="https://flow.org/en/docs/lang/types-and-expressions/#toc-soundness-and-completeness" rel="nofollow">https://flow.org/en/docs/lang/types-and-expressions/#toc-sou...</a></p>
]]></description><pubDate>Fri, 16 May 2025 05:22:00 +0000</pubDate><link>https://news.ycombinator.com/item?id=44002070</link><dc:creator>kuruczgy</dc:creator><comments>https://news.ycombinator.com/item?id=44002070</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44002070</guid></item><item><title><![CDATA[New comment by kuruczgy in "Teal – A statically-typed dialect of Lua"]]></title><description><![CDATA[
<p>How confident are you in the soundness of the type system?<p>Also, are there any Lua constructs that are difficult/impossible to type?<p>Is type checking decidable? (Is the type system Turing complete?)</p>
]]></description><pubDate>Fri, 16 May 2025 03:21:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=44001539</link><dc:creator>kuruczgy</dc:creator><comments>https://news.ycombinator.com/item?id=44001539</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44001539</guid></item><item><title><![CDATA[New comment by kuruczgy in "Demonstrably Secure Software Supply Chains with Nix"]]></title><description><![CDATA[
<p>Yes you are right, what I am proposing is not a solution by itself, it's just a way to be reasonably confident that _if you audit the code_, that's going to be the actual logic running on your computer.<p>(I don't get the value of your AST checksumming idea over just checksumming the source text, which is what almost all distro packages do. I think the number of changes that change the code but not the AST are negligible. If the code (and AST) is changed, you have to audit the diff no matter what.)<p>The more interesting question that does not have a single good answer is how to do the auditing. In almost all cases right now the only metric you have is "how much you trust upstream", in very few cases is actually reading through all the code and changes viable. I like to look at how upstream does their auditing of changes, e.g. how they do code review and how clean is their VCS history (so that _if_ you discover something fishy in the code, there is a clean audit trail of where that piece of code came from).</p>
]]></description><pubDate>Mon, 12 May 2025 20:01:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=43966906</link><dc:creator>kuruczgy</dc:creator><comments>https://news.ycombinator.com/item?id=43966906</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43966906</guid></item><item><title><![CDATA[New comment by kuruczgy in "Demonstrably Secure Software Supply Chains with Nix"]]></title><description><![CDATA[
<p>Actually this is not quite true, in the xz hack part of the malicious code was in generated files only present in the release tarball.<p>When I personally package stuff using Nix, I go out of my way to build everything from source as much as possible. E.g. if some repo contains checked in generated files, I prefer to delete and regenerate them. It's nice that Nix makes adding extra build steps like this easy. I think most of the time the motivation for having generated files in repos (or release tarballs) is the limitations of various build systems.</p>
]]></description><pubDate>Mon, 12 May 2025 18:20:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=43966027</link><dc:creator>kuruczgy</dc:creator><comments>https://news.ycombinator.com/item?id=43966027</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43966027</guid></item><item><title><![CDATA[Porting Lean to the ESP32-C3 RISC-V Microcontroller]]></title><description><![CDATA[
<p>Article URL: <a href="https://kuruczgy.com/blog/2024/07/31/lean-esp32/">https://kuruczgy.com/blog/2024/07/31/lean-esp32/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=41117855">https://news.ycombinator.com/item?id=41117855</a></p>
<p>Points: 2</p>
<p># Comments: 0</p>
]]></description><pubDate>Wed, 31 Jul 2024 10:23:47 +0000</pubDate><link>https://kuruczgy.com/blog/2024/07/31/lean-esp32/</link><dc:creator>kuruczgy</dc:creator><comments>https://news.ycombinator.com/item?id=41117855</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41117855</guid></item><item><title><![CDATA[New comment by kuruczgy in "RISC-V Emulator for Sophgo SG2000 SoC (Pine64 Oz64 / Milk-V Duo S)"]]></title><description><![CDATA[
<p>Espressif's QEMU branch has support for the esp32-c3: <a href="https://github.com/espressif/qemu">https://github.com/espressif/qemu</a></p>
]]></description><pubDate>Sun, 07 Jul 2024 11:11:16 +0000</pubDate><link>https://news.ycombinator.com/item?id=40896741</link><dc:creator>kuruczgy</dc:creator><comments>https://news.ycombinator.com/item?id=40896741</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40896741</guid></item><item><title><![CDATA[New comment by kuruczgy in "Git from the Bottom Up (2022)"]]></title><description><![CDATA[
<p>Looks very promising. I was planning on writing something similar in the past, it's astonishing to me how little people who use git daily actually understand it. Interactive rebasing, for example, is a foreign concept to most, while in my opinion it's a central tool for using git. The fundamentals are also important, again I don't know how people use git daily without actually knowing for example what a commit is. (People have fuzzy concepts like it's a diff (bad), some sort of compressed snapshot (slightly better), but very few have the correct mental model of "a commit is a reference to N parents, a tree, plus some metadata, and the commit hash is simply the hash of all these combined".)<p>Looking forward to sharing this with colleagues. On one hand I am excited because I think this bottom-up approach is the correct way of understanding git, on the other hand I am afraid that they will think it's difficult to understand and just not bother. (Again I can't fathom how programmers, who you know, learned programming, which is quite a steep learning curve in itself for first time, shy away from learning git properly, a tool that's just as important to their daily work as whatever programming language they are using.)</p>
]]></description><pubDate>Sun, 10 Mar 2024 09:57:45 +0000</pubDate><link>https://news.ycombinator.com/item?id=39657964</link><dc:creator>kuruczgy</dc:creator><comments>https://news.ycombinator.com/item?id=39657964</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39657964</guid></item><item><title><![CDATA[A formally verified R-tree implementation]]></title><description><![CDATA[
<p>Article URL: <a href="https://kuruczgy.com/blog/2023/11/12/verified-rtree/">https://kuruczgy.com/blog/2023/11/12/verified-rtree/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=38255561">https://news.ycombinator.com/item?id=38255561</a></p>
<p>Points: 2</p>
<p># Comments: 0</p>
]]></description><pubDate>Mon, 13 Nov 2023 21:19:58 +0000</pubDate><link>https://kuruczgy.com/blog/2023/11/12/verified-rtree/</link><dc:creator>kuruczgy</dc:creator><comments>https://news.ycombinator.com/item?id=38255561</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38255561</guid></item><item><title><![CDATA[Theorem Proving in Coq]]></title><description><![CDATA[
<p>Article URL: <a href="https://kuruczgy.com/blog/2023/06/18/theorem-proving-in-coq/">https://kuruczgy.com/blog/2023/06/18/theorem-proving-in-coq/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=36490811">https://news.ycombinator.com/item?id=36490811</a></p>
<p>Points: 2</p>
<p># Comments: 0</p>
]]></description><pubDate>Tue, 27 Jun 2023 09:42:45 +0000</pubDate><link>https://kuruczgy.com/blog/2023/06/18/theorem-proving-in-coq/</link><dc:creator>kuruczgy</dc:creator><comments>https://news.ycombinator.com/item?id=36490811</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36490811</guid></item><item><title><![CDATA[New comment by kuruczgy in "[dead]"]]></title><description><![CDATA[
<p>I am the author, feedback welcome.</p>
]]></description><pubDate>Sun, 23 Oct 2022 16:16:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=33308053</link><dc:creator>kuruczgy</dc:creator><comments>https://news.ycombinator.com/item?id=33308053</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=33308053</guid></item></channel></rss>