<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: andrewbinstock</title><link>https://news.ycombinator.com/user?id=andrewbinstock</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sat, 25 Apr 2026 12:30:36 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=andrewbinstock" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by andrewbinstock in "Ask HN: What are you working on? (March 2025)"]]></title><description><![CDATA[
<p>A JVM written in go. [0] We're committed to a high-quality implementation that works reliably--so our test code is > 2.x the size of our production code. We can already run lots of classes, but the finished product won't be ready for alpha testing until, we hope!, end of this year.<p>[0] jacobin.org</p>
]]></description><pubDate>Mon, 31 Mar 2025 01:54:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=43529892</link><dc:creator>andrewbinstock</dc:creator><comments>https://news.ycombinator.com/item?id=43529892</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43529892</guid></item><item><title><![CDATA[New comment by andrewbinstock in "Jacobin: A more than minimal JVM written in Go"]]></title><description><![CDATA[
<p>Lead dev here. I gave a detailed reply earlier. Grep for "I've always thought of the JVM as magical technlogy" on this page and you'll find it.</p>
]]></description><pubDate>Thu, 24 Aug 2023 19:50:25 +0000</pubDate><link>https://news.ycombinator.com/item?id=37253724</link><dc:creator>andrewbinstock</dc:creator><comments>https://news.ycombinator.com/item?id=37253724</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37253724</guid></item><item><title><![CDATA[New comment by andrewbinstock in "Jacobin: A more than minimal JVM written in Go"]]></title><description><![CDATA[
<p>Lead dev here. It's been an amazing amount of work. I'd change the above adage to: Every 10% is 90% of the work!</p>
]]></description><pubDate>Thu, 24 Aug 2023 19:48:00 +0000</pubDate><link>https://news.ycombinator.com/item?id=37253698</link><dc:creator>andrewbinstock</dc:creator><comments>https://news.ycombinator.com/item?id=37253698</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37253698</guid></item><item><title><![CDATA[New comment by andrewbinstock in "Jacobin: A more than minimal JVM written in Go"]]></title><description><![CDATA[
<p>Lead dev here. Some very cool ideas in there. Will copy/paste this into our task tracker on YouTrack for further consideration. Much appreciated.</p>
]]></description><pubDate>Thu, 24 Aug 2023 19:46:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=37253684</link><dc:creator>andrewbinstock</dc:creator><comments>https://news.ycombinator.com/item?id=37253684</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37253684</guid></item><item><title><![CDATA[New comment by andrewbinstock in "Jacobin: A more than minimal JVM written in Go"]]></title><description><![CDATA[
<p>Thanks for your note. The package notes on Jacobin say that we strongly discourage folks from running it in its present form. There are enough features still to be implemented, that for anything but trivial classes, you won't have a good experience. TBH, we're about a year out (we think) from having a version we can solicit users to test.<p>Nonetheless, if you'd be kind enough to post the above error and the class you used into the GitHub Issues tracker [0], we'll definitely include it in our test suite and make sure whatever the problem is, it'll be corrected.<p>[0] <a href="https://github.com/platypusguy/jacobin/issues">https://github.com/platypusguy/jacobin/issues</a></p>
]]></description><pubDate>Thu, 24 Aug 2023 19:44:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=37253661</link><dc:creator>andrewbinstock</dc:creator><comments>https://news.ycombinator.com/item?id=37253661</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37253661</guid></item><item><title><![CDATA[New comment by andrewbinstock in "Inside the JVM: Arrays and how they differ from other objects"]]></title><description><![CDATA[
<p>Author here. Zero-length arrays are used in the narrow domain you mention. but they are rare in bread-and-butter Java programming. Given some of the other comments on this page, you can see that this aspect is new to multiple readers. And in my experience speaking to Java devs, the reaction of surprise is far more common than "of course, I use them."</p>
]]></description><pubDate>Thu, 24 Aug 2023 18:53:56 +0000</pubDate><link>https://news.ycombinator.com/item?id=37253045</link><dc:creator>andrewbinstock</dc:creator><comments>https://news.ycombinator.com/item?id=37253045</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37253045</guid></item><item><title><![CDATA[New comment by andrewbinstock in "Inside the JVM: Arrays and how they differ from other objects"]]></title><description><![CDATA[
<p>Author here. Thanks for your comment. It's sometimes a little difficult to know how deeply to go into the innards of the JVM before readers' eyes glaze over and they can't follow. I'll bear in mind for future articles in this series that I can/should go deeper than the present level.</p>
]]></description><pubDate>Thu, 24 Aug 2023 18:47:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=37252979</link><dc:creator>andrewbinstock</dc:creator><comments>https://news.ycombinator.com/item?id=37252979</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37252979</guid></item><item><title><![CDATA[New comment by andrewbinstock in "Inside the JVM: Arrays and how they differ from other objects"]]></title><description><![CDATA[
<p>Author here. This is simply a comment on the way that Java refers to the subarrays. I believe most developers would think of the first subarray as being referenced with [0], rather than with no index at all. That's all the comment was intended to point out.</p>
]]></description><pubDate>Thu, 24 Aug 2023 18:20:16 +0000</pubDate><link>https://news.ycombinator.com/item?id=37252641</link><dc:creator>andrewbinstock</dc:creator><comments>https://news.ycombinator.com/item?id=37252641</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37252641</guid></item><item><title><![CDATA[New comment by andrewbinstock in "Inside the JVM: Arrays and how they differ from other objects"]]></title><description><![CDATA[
<p>Author here. Your "correction" is wrong. All dimensions after the zero dimension are ignored by the JVM. This is explicitly stated in the JVM spec[0].The typecheck you're leaning on is a purely syntactical construct. Inside the JVM, the arrays function and are sized just as I described.<p>> Object having no size() method and arrays having therefore a length field is also confused. Arrays have distinct types (and classes, in the sense of getClass()), and therefore could very well have a size() method. It’s merely a stylistic choice of Java that they opted for the simpler .length syntax.<p>What's the "confused" part? Again, my description is accurate and you're simply saying that Java could have chosen a different way to do the same thing, but decided not to.<p>[0] <a href="https://docs.oracle.com/javase/specs/jvms/se16/html/jvms-6.html#jvms-6.5.multianewarray" rel="nofollow noreferrer">https://docs.oracle.com/javase/specs/jvms/se16/html/jvms-6.h...</a></p>
]]></description><pubDate>Thu, 24 Aug 2023 18:12:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=37252533</link><dc:creator>andrewbinstock</dc:creator><comments>https://news.ycombinator.com/item?id=37252533</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37252533</guid></item><item><title><![CDATA[New comment by andrewbinstock in "Jacobin: A more than minimal JVM written in Go"]]></title><description><![CDATA[
<p>Lead dev here. Yup, that's right. There are a few classes that we will be forced to implement in Go. We're fixated on keeping this number as low as possible, but Thread is one that is inescapable. Class is another inescapable one--if we're to support reflection, etc.</p>
]]></description><pubDate>Thu, 24 Aug 2023 17:46:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=37252204</link><dc:creator>andrewbinstock</dc:creator><comments>https://news.ycombinator.com/item?id=37252204</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37252204</guid></item><item><title><![CDATA[New comment by andrewbinstock in "Jacobin: A more than minimal JVM written in Go"]]></title><description><![CDATA[
<p>Thank you for such kind words!</p>
]]></description><pubDate>Thu, 24 Aug 2023 17:37:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=37252037</link><dc:creator>andrewbinstock</dc:creator><comments>https://news.ycombinator.com/item?id=37252037</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37252037</guid></item><item><title><![CDATA[New comment by andrewbinstock in "Jacobin: A more than minimal JVM written in Go"]]></title><description><![CDATA[
<p>That's a good question. I don't know enough about the new green threads to give you a definitive answer, but it's certainly something we'll examine closely.</p>
]]></description><pubDate>Thu, 24 Aug 2023 17:24:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=37251830</link><dc:creator>andrewbinstock</dc:creator><comments>https://news.ycombinator.com/item?id=37251830</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37251830</guid></item><item><title><![CDATA[New comment by andrewbinstock in "Jacobin: A more than minimal JVM written in Go"]]></title><description><![CDATA[
<p>Thanks for asking. I've always thought of the JVM as magical technlogy--I'm certainly not alone in that view. But in trying to learn more about it, I was greatly frustrated by the difficulty of reading the code base.<p>As you likely know, the Hotspot JVM is open source. But reading the code is very difficult, in part because it grew organically and in part because of its unusual design, in which many actions are buried deep at the end of a long series of function calls involving unexpected classes and unusual methods, etc.<p>This led me to thinking there would be value in a JVM written as a single cohesive codebase. And given that there is a 300+ page JVM specification and a reference implementation, I thought to myself, how long could this take? Two years later, and with help from two major contributors, we're still finding out! ;-)<p>Eventually, we hope, it will be a fun/interesting experience for users to pop open their Go IDE and watch a Java program execute--which is why we're intent on making sure it's written in 100% go.<p>In a larger context, Jacobin might eventually be useful as an embeddable JVM.</p>
]]></description><pubDate>Thu, 24 Aug 2023 17:22:20 +0000</pubDate><link>https://news.ycombinator.com/item?id=37251801</link><dc:creator>andrewbinstock</dc:creator><comments>https://news.ycombinator.com/item?id=37251801</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37251801</guid></item><item><title><![CDATA[New comment by andrewbinstock in "Jacobin: A more than minimal JVM written in Go"]]></title><description><![CDATA[
<p>Lead dev here. We've run a couple of benchmarks internally just for kicks. To create a fair comparison, you have to run the Hotspot JVM with the -Xint flag, which says interpret only. Right now our performance is anywhere from 15-25% of the speed of Hotspot with -Xint on small benchmarks. We figure that the use of go alone creates some  important portion of that overhead when compared with the C++ of the Hotspot JVM. We're guessing that a well-optimized Jacobin interpreter will eventually get to 50-60% of the Hotspot's -Xint speed.<p>But we first want to get feature parity, before pivoting to performance. When we have feature parity, we'll run the Computer Language Benchmarks and post the results. That'll be fun to see!</p>
]]></description><pubDate>Thu, 24 Aug 2023 16:45:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=37251170</link><dc:creator>andrewbinstock</dc:creator><comments>https://news.ycombinator.com/item?id=37251170</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37251170</guid></item><item><title><![CDATA[New comment by andrewbinstock in "Jacobin: A more than minimal JVM written in Go"]]></title><description><![CDATA[
<p>Author here: Long ago, when I got the domain, the project was going to be JAva COmpiler to BINary = Jacobin. And as the Jacobins were revolutionaries, it sort of fit the intended project. I don't recall whether Jacobin Magazine was in publication then or not TBH.</p>
]]></description><pubDate>Thu, 24 Aug 2023 16:32:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=37250941</link><dc:creator>andrewbinstock</dc:creator><comments>https://news.ycombinator.com/item?id=37250941</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37250941</guid></item><item><title><![CDATA[New comment by andrewbinstock in "Jacobin: A more than minimal JVM written in Go"]]></title><description><![CDATA[
<p>Author here. No threading currently. Once we have all the bytecodes executing, we will perforce be obliged to add threading. Starting with the heavier threading that Java pre-Loom uses.</p>
]]></description><pubDate>Thu, 24 Aug 2023 16:27:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=37250851</link><dc:creator>andrewbinstock</dc:creator><comments>https://news.ycombinator.com/item?id=37250851</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37250851</guid></item><item><title><![CDATA[New comment by andrewbinstock in "Jacobin: A more than minimal JVM written in Go"]]></title><description><![CDATA[
<p>Author here: Right now we're entirely focused on getting parity of functionality so that anything that runs on the Hotspot JVM runs similarly on Jacobin. There's still a lot of work to do to get there. However, once we do get there, we'll start working on performance.</p>
]]></description><pubDate>Thu, 24 Aug 2023 16:25:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=37250826</link><dc:creator>andrewbinstock</dc:creator><comments>https://news.ycombinator.com/item?id=37250826</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37250826</guid></item><item><title><![CDATA[New comment by andrewbinstock in "Jacobin: A more than minimal JVM written in Go"]]></title><description><![CDATA[
<p>Author here: Yeah, those were first attempts in other languages.</p>
]]></description><pubDate>Thu, 24 Aug 2023 16:19:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=37250732</link><dc:creator>andrewbinstock</dc:creator><comments>https://news.ycombinator.com/item?id=37250732</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37250732</guid></item><item><title><![CDATA[New comment by andrewbinstock in "US emissions fell 2.1% in 2019"]]></title><description><![CDATA[
<p>Completely agree. But I find that it happens not just on HN, but on other high-quality boards as well. (It would be improper of me to make the remark without confessing that I've done this a few times myself.)</p>
]]></description><pubDate>Wed, 08 Jan 2020 19:23:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=21994795</link><dc:creator>andrewbinstock</dc:creator><comments>https://news.ycombinator.com/item?id=21994795</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=21994795</guid></item><item><title><![CDATA[New comment by andrewbinstock in "People Who Do Not Exist Invade Facebook"]]></title><description><![CDATA[
<p>> American's 35+?<p>FB has >1 billion real users. So by the simplest arithmetic, the vast majority of its users cannot be American, regardless of age.</p>
]]></description><pubDate>Fri, 20 Dec 2019 22:17:58 +0000</pubDate><link>https://news.ycombinator.com/item?id=21847875</link><dc:creator>andrewbinstock</dc:creator><comments>https://news.ycombinator.com/item?id=21847875</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=21847875</guid></item></channel></rss>