<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Featherweight Go · HackerPapers discussions</title><link>https://hackerpaper.kaipfister.de/p/2005.11710/</link><description>Collected HN comments and submissions linking this paper.</description><language>en</language><lastBuildDate>Mon, 02 Nov 2026 11:16:22 GMT</lastBuildDate><atom:link href="https://hackerpaper.kaipfister.de/p/2005.11710/feed.xml" rel="self" type="application/rss+xml" /><item><title>Featherweight Go — mentioned by typical182</title><link>https://news.ycombinator.com/item?id=49135090</link><guid isPermaLink="false">urn:hackerpapers:mention:2005.11710:49135090</guid><pubDate>Sat, 01 Aug 2026 15:05:35 GMT</pubDate><description>&lt;p&gt;&amp;gt; it finally took convincing Philip Wadler (of Haskell and Java generics fame) to help. Without that lucky break [...] Go probably still wouldn&amp;#x27;t have generics. Small correction, I think: My understanding is the core Go team was already well on its way to doing generics before Philip Wadler became involved, though he and his colleagues were later very helpful. From Wadler&amp;#x27;s &amp;quot;Featherweight Go&amp;quot; paper [1] (the first draft of which seems to have been uploaded to arxiv.org circa May 2020): Recently, the Go team mooted a design to extend Go with generics [Taylor and Griesemer 2019], and Rob Pike…&lt;/p&gt;&lt;p&gt;&lt;a href="https://hackerpaper.kaipfister.de/p/2005.11710/"&gt;Paper and discussion history&lt;/a&gt;. A mention is not an endorsement.&lt;/p&gt;</description><category>cs.PL</category></item><item><title>Featherweight Go — mentioned by gr_norm</title><link>https://news.ycombinator.com/item?id=44177781</link><guid isPermaLink="false">urn:hackerpapers:mention:2005.11710:44177781</guid><pubDate>Wed, 04 Jun 2025 06:37:40 GMT</pubDate><description>&lt;p&gt;&amp;gt; I&amp;#x27;m not interested in what &amp;quot;PL (programming language) people&amp;quot; have to say about it. They dislike all generic/parametric polymorphism implementations except their pet language that no one uses. That&amp;#x27;s strange. I seem to recall the PL community invented the generics system for Java [0,1]. Actually, I&amp;#x27;m pretty sure Philip Wadler had to show them how to work out contravariance correctly. And topically to this thread, Rob Pike asked for his help again designing the generics system for Go [2,3]. A number of mistakes under consideration were curtailed as a result, detailed in that LWN article.…&lt;/p&gt;&lt;p&gt;&lt;a href="https://hackerpaper.kaipfister.de/p/2005.11710/"&gt;Paper and discussion history&lt;/a&gt;. A mention is not an endorsement.&lt;/p&gt;</description><category>cs.PL</category></item><item><title>Featherweight Go — mentioned by riwsky</title><link>https://news.ycombinator.com/item?id=42278699</link><guid isPermaLink="false">urn:hackerpapers:mention:2005.11710:42278699</guid><pubDate>Sat, 30 Nov 2024 01:36:06 GMT</pubDate><description>&lt;p&gt;Are we just ignoring when they invited Philip “Featherweight Java” Wadler to help them design Go generics? https://arxiv.org/abs/2005.11710 Or that Robert Griesemer literally is a language PhD, whose thesis was supervised by a little fellow by the name of “Niklaus Wirth”? https://www.research-collection.ethz.ch/handle/20.500.11850/...&lt;/p&gt;&lt;p&gt;&lt;a href="https://hackerpaper.kaipfister.de/p/2005.11710/"&gt;Paper and discussion history&lt;/a&gt;. A mention is not an endorsement.&lt;/p&gt;</description><category>cs.PL</category></item><item><title>Featherweight Go — mentioned by 38</title><link>https://news.ycombinator.com/item?id=37556600</link><guid isPermaLink="false">urn:hackerpapers:mention:2005.11710:37556600</guid><pubDate>Mon, 18 Sep 2023 14:29:53 GMT</pubDate><description>&lt;p&gt;&amp;gt; Most anything in software can easily end up Turing-complete though. not really, if you actually pay attention when youre designing the type system: https://arxiv.org/pdf/2005.11710.pdf&lt;/p&gt;&lt;p&gt;&lt;a href="https://hackerpaper.kaipfister.de/p/2005.11710/"&gt;Paper and discussion history&lt;/a&gt;. A mention is not an endorsement.&lt;/p&gt;</description><category>cs.PL</category></item><item><title>Featherweight Go — mentioned by foldr</title><link>https://news.ycombinator.com/item?id=35498273</link><guid isPermaLink="false">urn:hackerpapers:mention:2005.11710:35498273</guid><pubDate>Sat, 08 Apr 2023 22:28:53 GMT</pubDate><description>&lt;p&gt;Which proposal would you rather had been adopted instead? It&amp;#x27;s strange to describe the current implementation has &amp;quot;half thought&amp;quot;. A lot of work was done to make sure it was correct: https://arxiv.org/pdf/2005.11710.pdf It&amp;#x27;s probably one of the most carefully thought through generics implementations in a mainstream programming language. &amp;gt;It&amp;#x27;s not rocket science, there are 100s of languages with Generics, including languages with many orders of magnitude more than the adoption Go has. It&amp;#x27;s easy to add generics but not so easy to get it right (see e.g. Java&amp;#x27;s soundness issues, the total mess of…&lt;/p&gt;&lt;p&gt;&lt;a href="https://hackerpaper.kaipfister.de/p/2005.11710/"&gt;Paper and discussion history&lt;/a&gt;. A mention is not an endorsement.&lt;/p&gt;</description><category>cs.PL</category></item><item><title>Featherweight Go — mentioned by Laremere</title><link>https://news.ycombinator.com/item?id=31419825</link><guid isPermaLink="false">urn:hackerpapers:mention:2005.11710:31419825</guid><pubDate>Wed, 18 May 2022 06:29:55 GMT</pubDate><description>&lt;p&gt;Philip Walder, who contributed to the design of Haskell (according to wikipedia, haven&amp;#x27;t dug deep here) worked with the Go developers on a PL theory underpinning for Go&amp;#x27;s generics: https://arxiv.org/abs/2005.11710 So, in fact, industry didn&amp;#x27;t ignore PL theory and research at all.&lt;/p&gt;&lt;p&gt;&lt;a href="https://hackerpaper.kaipfister.de/p/2005.11710/"&gt;Paper and discussion history&lt;/a&gt;. A mention is not an endorsement.&lt;/p&gt;</description><category>cs.PL</category></item><item><title>Featherweight Go — mentioned by throwaway34241</title><link>https://news.ycombinator.com/item?id=30530187</link><guid isPermaLink="false">urn:hackerpapers:mention:2005.11710:30530187</guid><pubDate>Wed, 02 Mar 2022 17:43:33 GMT</pubDate><description>&lt;p&gt;&amp;gt; I&amp;#x27;m not sure what the difference is with regards to pointers. In C# most objects are &amp;#x27;class&amp;#x27; objects, which are implicitly passed by pointer, although some are &amp;#x27;struct&amp;#x27; objects passed by value. In Go rather than making the decision once at the type level, the decision to pass by value or pointer is made explicitly every time an object is used. &amp;gt; I&amp;#x27;m not sure that Go really had anything to figure out or invent If you look at the discussions for Go (which started as early as 2009 [1]) [2] [3] [4] [5] generics seems as big or a bigger project as the other improvements made to the language over…&lt;/p&gt;&lt;p&gt;&lt;a href="https://hackerpaper.kaipfister.de/p/2005.11710/"&gt;Paper and discussion history&lt;/a&gt;. A mention is not an endorsement.&lt;/p&gt;</description><category>cs.PL</category></item><item><title>Featherweight Go — mentioned by mseepgood</title><link>https://news.ycombinator.com/item?id=29582884</link><guid isPermaLink="false">urn:hackerpapers:mention:2005.11710:29582884</guid><pubDate>Thu, 16 Dec 2021 19:44:56 GMT</pubDate><description>&lt;p&gt;&amp;gt; Is it a better bet to move on and go full Rust If you don&amp;#x27;t like generics you shouldn&amp;#x27;t use Rust. You can&amp;#x27;t escape them in Rust. The designers repeated the mistake of C++ and made it a language feature kitchen sink. It&amp;#x27;s an unholy mess. You&amp;#x27;ll find yourself constantly fighting the borrow checker. Type signatures are littered with lifetime annotations. The type system is Turing complete because they didn&amp;#x27;t analyze it before implementing it. Go&amp;#x27;s generics were formally validated [1]. Rust&amp;#x27;s compile time is slow, and the &amp;#x27;async&amp;#x27; story is sad. Async functions are colored and infect everything.…&lt;/p&gt;&lt;p&gt;&lt;a href="https://hackerpaper.kaipfister.de/p/2005.11710/"&gt;Paper and discussion history&lt;/a&gt;. A mention is not an endorsement.&lt;/p&gt;</description><category>cs.PL</category></item><item><title>Featherweight Go — HN submission</title><link>https://news.ycombinator.com/item?id=29562617</link><guid isPermaLink="false">urn:hackerpapers:submission:2005.11710:29562617</guid><pubDate>Wed, 15 Dec 2021 06:01:21 GMT</pubDate><description>&lt;p&gt;Featherweight Go [pdf]&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;1 point; 0 discussion replies on HN. &lt;a href="https://hackerpaper.kaipfister.de/p/2005.11710/"&gt;Paper and source history&lt;/a&gt;. A submission is not an endorsement.&lt;/p&gt;</description><category>cs.PL</category></item><item><title>Featherweight Go — mentioned by mseepgood</title><link>https://news.ycombinator.com/item?id=28904255</link><guid isPermaLink="false">urn:hackerpapers:mention:2005.11710:28904255</guid><pubDate>Mon, 18 Oct 2021 11:16:40 GMT</pubDate><description>&lt;p&gt;&amp;gt; Rob was opposing generics from the start. That&amp;#x27;s simply not true. &amp;gt; he was firmly saying no. I&amp;#x27;m sure you cannot find a single instance where he firmly says no to generics. He wrote in the FAQ that Go might get generics one day and that they are continuing to think about it. Here he is arguing in favor of generics: https://www.reddit.com/r/golang/comments/jditu9/what_do_gene... And he was the one who invited Phil Wadler to help with the generics design. From the Featherweight Go paper: &amp;quot;Rob Pike wrote Wadler to ask: Would you be interested in helping us get polymorphism right (and/or…&lt;/p&gt;&lt;p&gt;&lt;a href="https://hackerpaper.kaipfister.de/p/2005.11710/"&gt;Paper and discussion history&lt;/a&gt;. A mention is not an endorsement.&lt;/p&gt;</description><category>cs.PL</category></item><item><title>Featherweight Go — mentioned by mseepgood</title><link>https://news.ycombinator.com/item?id=27964434</link><guid isPermaLink="false">urn:hackerpapers:mention:2005.11710:27964434</guid><pubDate>Mon, 26 Jul 2021 19:46:30 GMT</pubDate><description>&lt;p&gt;&amp;gt; purely for ideological reasons There are no ideological reasons. https://github.com/golang/go/commit/dd64f86e0874804d0ec5b713... &amp;quot;Generics may well come at some point.&amp;quot; https://golang.org/doc/faq#generics &amp;quot;A language proposal implementing a form of generic types has been accepted for inclusion in the language. If all goes well it will be available in the Go 1.18 release.&amp;quot; One of the language designers explaining the motivation for adding parametric polymorphism to Go: https://www.youtube.com/watch?v=RIvL2ONhFBI&amp;amp;t=1064s Explaining the benefits of generics…&lt;/p&gt;&lt;p&gt;&lt;a href="https://hackerpaper.kaipfister.de/p/2005.11710/"&gt;Paper and discussion history&lt;/a&gt;. A mention is not an endorsement.&lt;/p&gt;</description><category>cs.PL</category></item><item><title>Featherweight Go — mentioned by siraben</title><link>https://news.ycombinator.com/item?id=27165173</link><guid isPermaLink="false">urn:hackerpapers:mention:2005.11710:27165173</guid><pubDate>Sat, 15 May 2021 13:45:57 GMT</pubDate><description>&lt;p&gt;I&amp;#x27;m studying programming language semantics and papers like these are quite valuable in understanding type systems of real languages, see also Featherweight Java[0] and Featherweight Go[1]. At first it looks like a lot to take in, but when you start with far simpler type systems like typed arithmetic expressions and simply-typed lambda calculus, you see the same definitions and metatheorems (properties about the type system) appear over and over again (including in this paper). In particular, the pieces you see repeated are: - the terms and types of the language - the values (a subset of…&lt;/p&gt;&lt;p&gt;&lt;a href="https://hackerpaper.kaipfister.de/p/2005.11710/"&gt;Paper and discussion history&lt;/a&gt;. A mention is not an endorsement.&lt;/p&gt;</description><category>cs.PL</category></item><item><title>Featherweight Go — mentioned by lfnoise</title><link>https://news.ycombinator.com/item?id=26911803</link><guid isPermaLink="false">urn:hackerpapers:mention:2005.11710:26911803</guid><pubDate>Fri, 23 Apr 2021 06:57:03 GMT</pubDate><description>&lt;p&gt;Philip Wadler ? https://arxiv.org/abs/2005.11710&lt;/p&gt;&lt;p&gt;&lt;a href="https://hackerpaper.kaipfister.de/p/2005.11710/"&gt;Paper and discussion history&lt;/a&gt;. A mention is not an endorsement.&lt;/p&gt;</description><category>cs.PL</category></item><item><title>Featherweight Go — mentioned by mauricioc</title><link>https://news.ycombinator.com/item?id=26094561</link><guid isPermaLink="false">urn:hackerpapers:mention:2005.11710:26094561</guid><pubDate>Wed, 10 Feb 2021 20:48:45 GMT</pubDate><description>&lt;p&gt;Since type erasure was mentioned, it&amp;#x27;s worth noting that Philip Wadler (of Haskell fame) was involved both in the design of Java generics [0] and of Go generics [1]. (Perhaps I should clarify that I don&amp;#x27;t have a strong opinion on type erasure.) [0] https://homepages.inf.ed.ac.uk/wadler/gj/Documents/gj-oopsla... [1] https://arxiv.org/abs/2005.11710&lt;/p&gt;&lt;p&gt;&lt;a href="https://hackerpaper.kaipfister.de/p/2005.11710/"&gt;Paper and discussion history&lt;/a&gt;. A mention is not an endorsement.&lt;/p&gt;</description><category>cs.PL</category></item><item><title>Featherweight Go — mentioned by mseepgood</title><link>https://news.ycombinator.com/item?id=25753041</link><guid isPermaLink="false">urn:hackerpapers:mention:2005.11710:25753041</guid><pubDate>Tue, 12 Jan 2021 20:27:10 GMT</pubDate><description>&lt;p&gt;&amp;gt; My understanding from the “Featherweight Go” paper https://arxiv.org/abs/2005.11710 is that generic types will not simply be a synonym for interface{} The `any` constraint is a synonym for the `interface{}` constraint.&lt;/p&gt;&lt;p&gt;&lt;a href="https://hackerpaper.kaipfister.de/p/2005.11710/"&gt;Paper and discussion history&lt;/a&gt;. A mention is not an endorsement.&lt;/p&gt;</description><category>cs.PL</category></item><item><title>Featherweight Go — mentioned by fanf2</title><link>https://news.ycombinator.com/item?id=25751723</link><guid isPermaLink="false">urn:hackerpapers:mention:2005.11710:25751723</guid><pubDate>Tue, 12 Jan 2021 19:03:56 GMT</pubDate><description>&lt;p&gt;My understanding from the “Featherweight Go” paper https://arxiv.org/abs/2005.11710 is that generic types will not simply be a synonym for interface{} because the compiler will be able to monomorphize them - they do not require dynamic dispatch like interfaces.&lt;/p&gt;&lt;p&gt;&lt;a href="https://hackerpaper.kaipfister.de/p/2005.11710/"&gt;Paper and discussion history&lt;/a&gt;. A mention is not an endorsement.&lt;/p&gt;</description><category>cs.PL</category></item><item><title>Featherweight Go — mentioned by throwaway34241</title><link>https://news.ycombinator.com/item?id=25003214</link><guid isPermaLink="false">urn:hackerpapers:mention:2005.11710:25003214</guid><pubDate>Thu, 05 Nov 2020 23:22:10 GMT</pubDate><description>&lt;p&gt;&amp;gt; It&amp;#x27;s complicated and there was miscommunication but it forms part of the pattern. It looks like from that thread that the Go team was never on board with certain technical aspects of how dep was implemented. Obviously there are trade offs so it&amp;#x27;s hard to determine what answer is &amp;quot;right&amp;quot;, but opposing a design for technical reasons is still pretty different than pure &amp;quot;not invented here syndrome&amp;quot;. The dep author in that thread says part of the reason he did not make a proposal was he was worried &amp;quot;what negative community consequences (wasted work/goodwill) a misfire proposal might have.&amp;quot; But…&lt;/p&gt;&lt;p&gt;&lt;a href="https://hackerpaper.kaipfister.de/p/2005.11710/"&gt;Paper and discussion history&lt;/a&gt;. A mention is not an endorsement.&lt;/p&gt;</description><category>cs.PL</category></item><item><title>Featherweight Go — mentioned by gstipi</title><link>https://news.ycombinator.com/item?id=23799919</link><guid isPermaLink="false">urn:hackerpapers:mention:2005.11710:23799919</guid><pubDate>Sat, 11 Jul 2020 05:58:34 GMT</pubDate><description>&lt;p&gt;&amp;gt; And Go people&amp;#x27;s common refusal to look much further, and especially not into academia.. I don&amp;#x27;t think that&amp;#x27;s a fair statement, given Phil Wadler&amp;#x27;s formal work on generics in Go - &amp;quot;Featherweight Go&amp;quot; (https://arxiv.org/abs/2005.11710) - which is acknowledged here: https://blog.golang.org/generics-next-step&lt;/p&gt;&lt;p&gt;&lt;a href="https://hackerpaper.kaipfister.de/p/2005.11710/"&gt;Paper and discussion history&lt;/a&gt;. A mention is not an endorsement.&lt;/p&gt;</description><category>cs.PL</category></item><item><title>Featherweight Go — mentioned by pjmlp</title><link>https://news.ycombinator.com/item?id=23714198</link><guid isPermaLink="false">urn:hackerpapers:mention:2005.11710:23714198</guid><pubDate>Thu, 02 Jul 2020 15:18:35 GMT</pubDate><description>&lt;p&gt;Ah, the irony, &amp;quot;Featherweight Go&amp;quot; https://arxiv.org/abs/2005.11710 -- Proc. ACM Program. Lang., Vol. 1, No. OOPSLA It appears Go needs PhDs after all.&lt;/p&gt;&lt;p&gt;&lt;a href="https://hackerpaper.kaipfister.de/p/2005.11710/"&gt;Paper and discussion history&lt;/a&gt;. A mention is not an endorsement.&lt;/p&gt;</description><category>cs.PL</category></item><item><title>Featherweight Go — mentioned by djur</title><link>https://news.ycombinator.com/item?id=23548230</link><guid isPermaLink="false">urn:hackerpapers:mention:2005.11710:23548230</guid><pubDate>Wed, 17 Jun 2020 05:52:40 GMT</pubDate><description>&lt;p&gt;The Featherweight Go paper also just recently came out, which is an important step: https://arxiv.org/abs/2005.11710&lt;/p&gt;&lt;p&gt;&lt;a href="https://hackerpaper.kaipfister.de/p/2005.11710/"&gt;Paper and discussion history&lt;/a&gt;. A mention is not an endorsement.&lt;/p&gt;</description><category>cs.PL</category></item><item><title>Featherweight Go — mentioned by mikelward</title><link>https://news.ycombinator.com/item?id=23544324</link><guid isPermaLink="false">urn:hackerpapers:mention:2005.11710:23544324</guid><pubDate>Tue, 16 Jun 2020 21:21:17 GMT</pubDate><description>&lt;p&gt;If this follows the monomorphic approach described in Featherweight Go [1][2], they will at least avoid problems caused by type erasure and avoid too much runtime overhead. 1. https://arxiv.org/abs/2005.11710 2. https://news.ycombinator.com/item?id=23368453&lt;/p&gt;&lt;p&gt;&lt;a href="https://hackerpaper.kaipfister.de/p/2005.11710/"&gt;Paper and discussion history&lt;/a&gt;. A mention is not an endorsement.&lt;/p&gt;</description><category>cs.PL</category></item><item><title>Featherweight Go — mentioned by mseepgood</title><link>https://news.ycombinator.com/item?id=23457349</link><guid isPermaLink="false">urn:hackerpapers:mention:2005.11710:23457349</guid><pubDate>Mon, 08 Jun 2020 15:28:52 GMT</pubDate><description>&lt;p&gt;Here&amp;#x27;s the corresponding paper: https://arxiv.org/abs/2005.11710&lt;/p&gt;&lt;p&gt;&lt;a href="https://hackerpaper.kaipfister.de/p/2005.11710/"&gt;Paper and discussion history&lt;/a&gt;. A mention is not an endorsement.&lt;/p&gt;</description><category>cs.PL</category></item><item><title>Featherweight Go — HN submission</title><link>https://news.ycombinator.com/item?id=23368453</link><guid isPermaLink="false">urn:hackerpapers:submission:2005.11710:23368453</guid><pubDate>Sun, 31 May 2020 10:04:32 GMT</pubDate><description>&lt;p&gt;Featherweight Go&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;252 points; 160 discussion replies on HN. &lt;a href="https://hackerpaper.kaipfister.de/p/2005.11710/"&gt;Paper and source history&lt;/a&gt;. A submission is not an endorsement.&lt;/p&gt;</description><category>cs.PL</category></item><item><title>Featherweight Go — HN submission</title><link>https://news.ycombinator.com/item?id=23310101</link><guid isPermaLink="false">urn:hackerpapers:submission:2005.11710:23310101</guid><pubDate>Tue, 26 May 2020 12:09:45 GMT</pubDate><description>&lt;p&gt;Featherweight Go (A generics design for Go)&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;4 points; 0 discussion replies on HN. &lt;a href="https://hackerpaper.kaipfister.de/p/2005.11710/"&gt;Paper and source history&lt;/a&gt;. A submission is not an endorsement.&lt;/p&gt;</description><category>cs.PL</category></item></channel></rss>
