social.tchncs.de is one of the many independent Mastodon servers you can use to participate in the fediverse.
A friendly server from Germany – which tends to attract techy people, but welcomes everybody. This is one of the oldest Mastodon instances.

Administered by:

Server stats:

3.8K
active users

#compiler

7 posts6 participants2 posts today
iX Magazin<p>heise+ | Umbau des TypeScript-Compilers: Microsoft erfindet TypeScript in Go neu</p><p>Microsoft plant einen radikalen Umbau des TypeScript-Compilers: Eine Portierung nach Go soll seine Performance verzehnfachen und den Speicherbedarf reduzieren. </p><p><a href="https://www.heise.de/hintergrund/Umbau-des-TypeScript-Compilers-Microsoft-erfindet-TypeScript-in-Go-neu-10343015.html?wt_mc=sm.red.ho.mastodon.mastodon.md_beitraege.md_beitraege&amp;utm_source=mastodon" rel="nofollow noopener noreferrer" translate="no" target="_blank"><span class="invisible">https://www.</span><span class="ellipsis">heise.de/hintergrund/Umbau-des</span><span class="invisible">-TypeScript-Compilers-Microsoft-erfindet-TypeScript-in-Go-neu-10343015.html?wt_mc=sm.red.ho.mastodon.mastodon.md_beitraege.md_beitraege&amp;utm_source=mastodon</span></a></p><p><a href="https://social.heise.de/tags/Compiler" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Compiler</span></a> <a href="https://social.heise.de/tags/GoogleGo" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>GoogleGo</span></a> <a href="https://social.heise.de/tags/IT" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>IT</span></a> <a href="https://social.heise.de/tags/Softwareentwicklung" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Softwareentwicklung</span></a> <a href="https://social.heise.de/tags/TypeScript" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>TypeScript</span></a> <a href="https://social.heise.de/tags/news" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>news</span></a></p>
xorox<p>Rust was initially written in OCaml, but later, the Rust compiler was rewritten in Rust itself. This process is known as self-hosting, where a language can compile its own compiler.</p><p><a href="https://mastodon.social/tags/rust" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>rust</span></a> <a href="https://mastodon.social/tags/compiler" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>compiler</span></a> <a href="https://mastodon.social/tags/rust" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>rust</span></a>-compiler</p>
Curated Hacker News<p>Meta II a syntax-oriented compiler writing language (1964)</p><p><a href="https://dl.acm.org/citation.cfm?doid=800257.808896" rel="nofollow noopener noreferrer" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">dl.acm.org/citation.cfm?doid=8</span><span class="invisible">00257.808896</span></a></p><p><a href="https://mastodon.social/tags/compiler" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>compiler</span></a> <a href="https://mastodon.social/tags/meta" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>meta</span></a></p>
KDAB<p>Clazy is an <a href="https://techhub.social/tags/opensource" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>opensource</span></a> compiler plugin which allows <a href="https://techhub.social/tags/clang" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>clang</span></a> to understand Qt semantics. You get more than 50 Qt-related <a href="https://techhub.social/tags/compiler" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>compiler</span></a> warnings, ranging from unneeded memory allocations to misusage of API. Learn more on <a href="https://www.kdab.com/clazy-video/" rel="nofollow noopener noreferrer" translate="no" target="_blank"><span class="invisible">https://www.</span><span class="">kdab.com/clazy-video/</span><span class="invisible"></span></a> <a href="https://techhub.social/tags/QtDev" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>QtDev</span></a> <a href="https://techhub.social/tags/Cpp" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Cpp</span></a><br><a href="https://www.kdab.com/clazy-video/" rel="nofollow noopener noreferrer" translate="no" target="_blank"><span class="invisible">https://www.</span><span class="">kdab.com/clazy-video/</span><span class="invisible"></span></a></p>
Chris Bohn<p>This is some frackin' dark <a href="https://techhub.social/tags/compiler" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>compiler</span></a> magic.<br><a href="https://godbolt.org/z/6ans5YGnW" rel="nofollow noopener noreferrer" translate="no" target="_blank"><span class="invisible">https://</span><span class="">godbolt.org/z/6ans5YGnW</span><span class="invisible"></span></a></p><p>When I pay attention, I'm used to seeing `-Os` nibble at the edges to make the program's footprint smaller -- remove dead code, remove functions that don't get called, inline called-once functions, etc.</p><p>I'm not surprised that it was able to achieve some amazing compression given the structure of the `switch` statements (and the pattern of values in the nested array) -- but wow. It replaced both 34-entry jump tables with a single 34-element array, and replaced the nested array with code to compute the array's elements. When I say it like that, it seems (as I said) not surprising, but it's still frickin' amazing.</p><p>(For those wondering why I use this implementation instead of the commented-out simpler implementation, it's starter code for an assignment in which students need to scan a matrix keypad, replacing the library call -- giving them this in the starter code gets better results than giving them the simpler version in the starter code.)</p>
Anoncheg<p><a href="https://techhub.social/tags/dailyreport" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>dailyreport</span></a> <a href="https://techhub.social/tags/rust" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>rust</span></a> <a href="https://techhub.social/tags/linux" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>linux</span></a> <a href="https://techhub.social/tags/gentoo" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>gentoo</span></a> <a href="https://techhub.social/tags/opensource" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>opensource</span></a> <a href="https://techhub.social/tags/compiler" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>compiler</span></a><br><a href="https://techhub.social/tags/security" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>security</span></a><br>I compiled Rust from sources with alternative compiler<br> Mrustc (C++) without any binary blobs.</p><p>As you may know Rust compiler distributed as Rust sources<br> meant to be build by older "snapshot" of itself. Which<br> violate open source paradigm.</p><p>I was able to solve this in Gentoo GNU/Linux OS with<br> reproducible way. First I compile Rust 1.74 version and<br> then in chain I compile all versions to 1.84.</p><p>All steps took approximately 8 hours, but after it is fast<br> to compile new version, without blobs.<br>蠡</p>
Brian Swetland<p>Dusting off my little 32bit RISC ISA aimed at being extremely friendly for emulators and toolchains and human inspection.</p><p>Unlike RISC-V the instruction encoding is tuned for software ease of implementation and understanding, not worrying about 16bit encodings, wider-than-32bit machines, etc.</p><p>It does try to match RV32I in functionality so that if you generate these instructions but with the RV32 immediate width constraints, the mapping is almost always 1:1.</p><p><a href="https://chaos.social/tags/projects" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>projects</span></a> <a href="https://chaos.social/tags/compiler" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>compiler</span></a> <a href="https://chaos.social/tags/softrisc32" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>softrisc32</span></a></p>
Felix 🇺🇦🚴‍♂️🇨🇦🇬🇱🇩🇰🇲🇽🇵🇦 🇪🇺<p>Can jank beat Clojure's error reporting?</p><p><a href="https://jank-lang.org/blog/2025-03-28-error-reporting/" rel="nofollow noopener noreferrer" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">jank-lang.org/blog/2025-03-28-</span><span class="invisible">error-reporting/</span></a></p><p><a href="https://norden.social/tags/clojure" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>clojure</span></a> <a href="https://norden.social/tags/jank" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>jank</span></a> <a href="https://norden.social/tags/compiler" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>compiler</span></a> <a href="https://norden.social/tags/programmingLanguages" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>programmingLanguages</span></a></p>
CryogenicNighthawk<p>Time to set aside the cross <a href="https://4d2.social/tags/compiler" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>compiler</span></a> for a while and switch to <a href="https://4d2.social/tags/house" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>house</span></a> and <a href="https://4d2.social/tags/garden" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>garden</span></a> projects.</p><p>I should be working on mixing rice hulls into the soil of our raised garden beds, but I worked on the open source energy monitoring project. Made progress, but it's not tracking our usage yet.</p><p>Tomorrow I hope I can get some rice hulls in between working for the <span class="h-card" translate="no"><a href="https://social.coop/@coopartisans" class="u-url mention" rel="nofollow noopener noreferrer" target="_blank">@<span>coopartisans</span></a></span>, meeting with my local elected representative, and helping cook meals for this week.</p>
Bread80<p>Adding array definitions to the <a href="https://mstdn.social/tags/Quiche" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Quiche</span></a> <a href="https://mstdn.social/tags/Compiler" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Compiler</span></a></p><p>An array boils down to a bounds and an element type. For multidimensional arrays the 'inner' element type is itself an array definition.</p><p>The parser for this works recursively which gives an elegantly simple solution (although the actual code is a little gnarly given the syntaxes). Parsing the bounds is parsing a type definition (of a suitable enumerable type). Parsing the element type means parsing another array definition.</p>
Dr. Brian Callahan<p>A new <a href="https://bsd.network/tags/blog" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>blog</span></a> post appears!</p><p>I built a native GCC 14.2.0 for Mac OS X 10.4 Tiger PowerPC.</p><p><a href="https://briancallahan.net/blog/20250329.html" rel="nofollow noopener noreferrer" target="_blank"><span class="invisible">https://</span><span class="ellipsis">briancallahan.net/blog/2025032</span><span class="invisible">9.html</span></a></p><p><a href="https://bsd.network/tags/macos" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>macos</span></a> <a href="https://bsd.network/tags/macosx" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>macosx</span></a> <a href="https://bsd.network/tags/tiger" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>tiger</span></a> <a href="https://bsd.network/tags/powerpc" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>powerpc</span></a> <a href="https://bsd.network/tags/power" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>power</span></a> <a href="https://bsd.network/tags/unix" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>unix</span></a> <a href="https://bsd.network/tags/bsd" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>bsd</span></a> <a href="https://bsd.network/tags/freebsd" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>freebsd</span></a> <a href="https://bsd.network/tags/openbsd" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>openbsd</span></a> <a href="https://bsd.network/tags/netbsd" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>netbsd</span></a> <a href="https://bsd.network/tags/dragonflybsd" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>dragonflybsd</span></a> <a href="https://bsd.network/tags/linux" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>linux</span></a> <a href="https://bsd.network/tags/solaris" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>solaris</span></a> <a href="https://bsd.network/tags/illumos" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>illumos</span></a> <a href="https://bsd.network/tags/gcc" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>gcc</span></a> <a href="https://bsd.network/tags/llvm" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>llvm</span></a> <a href="https://bsd.network/tags/clang" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>clang</span></a> <a href="https://bsd.network/tags/compiler" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>compiler</span></a> <a href="https://bsd.network/tags/compilers" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>compilers</span></a> <a href="https://bsd.network/tags/assembler" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>assembler</span></a> <a href="https://bsd.network/tags/linker" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>linker</span></a> <a href="https://bsd.network/tags/toolchain" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>toolchain</span></a> <a href="https://bsd.network/tags/freesoftware" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>freesoftware</span></a> <a href="https://bsd.network/tags/opensource" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>opensource</span></a> <a href="https://bsd.network/tags/gnu" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>gnu</span></a></p>
Bread80<p>And that's the self tests for enumeration declarations passing.</p><p><a href="https://mstdn.social/tags/quiche" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>quiche</span></a> <a href="https://mstdn.social/tags/compiler" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>compiler</span></a> <a href="https://mstdn.social/tags/z80" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>z80</span></a></p>
Klaus Frank<p>OH: "I wish my compiler was as autistic as you. [That would have prevented a lot of incidents and hard to debug issues]"</p><p><a href="https://chaos.social/tags/autism" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>autism</span></a> <a href="https://chaos.social/tags/oh" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>oh</span></a> <a href="https://chaos.social/tags/compiler" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>compiler</span></a> <a href="https://chaos.social/tags/backhandedCompliments" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>backhandedCompliments</span></a></p>
The Last Psion | Alex<p><strong>HIVEMIND:</strong> Does anyone have a copy of the TopSpeed Pascal 3.10 compiler?</p><p>I've discovered something. I can't unsee it. So now I have to follow it through.</p><blockquote><p>The [TopSpeed] Pascal compiler could also be used to develop software for the Psion series 3 in a roundabout way if used with the PSION s3 SDK, as the environment allowed you to develop Pascal code with C code, headers and libraries you could get functional s3 apps by linking the Pascal code with the required C headers/libs and then compiling everything with the PSION SDK, in rare cases needing a little bit of glue C code.</p></blockquote><p>Source: <a href="http://www.edm2.com/index.php/TopSpeed_Pascal" rel="nofollow noopener noreferrer" translate="no" target="_blank"><span class="invisible">http://www.</span><span class="ellipsis">edm2.com/index.php/TopSpeed_Pa</span><span class="invisible">scal</span></a></p><p>Does anyone have a copy of TopSpeed Pascal? I need to try writing Pascal software for <a href="https://oldbytes.space/tags/EPOC16" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>EPOC16</span></a>. The documentation would be really handy, too.</p><p><a href="https://oldbytes.space/tags/retrocomputing" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>retrocomputing</span></a> <a href="https://oldbytes.space/tags/compilers" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>compilers</span></a> <a href="https://oldbytes.space/tags/retrodev" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>retrodev</span></a> <a href="https://oldbytes.space/tags/compiler" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>compiler</span></a> <a href="https://oldbytes.space/tags/askfedi" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>askfedi</span></a> <a href="https://oldbytes.space/tags/psion" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>psion</span></a> <a href="https://oldbytes.space/tags/pascal" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>pascal</span></a></p>
Bread80<p>I'm making a start on user types in the compiler. Basic type synonyms and typed pointers can now be declared. I want to work on the declarations code and data structures first, so I can't yet instantiate these types but can use them in other type declarations.</p><p><a href="https://mstdn.social/tags/Quiche" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Quiche</span></a> <a href="https://mstdn.social/tags/Pascal" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Pascal</span></a> <a href="https://mstdn.social/tags/Compiler" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Compiler</span></a> <a href="https://mstdn.social/tags/Z80" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Z80</span></a> <a href="https://mstdn.social/tags/Delphi" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Delphi</span></a></p>
Scripter :verified_flashing:<p>Microsoft beerdigt TypeScript – und erfindet es in Go neu: Warum? | heise online<br /><a href="https://www.heise.de/blog/Microsoft-beerdigt-TypeScript-und-erfindet-es-in-Go-neu-Warum-10317343.html" target="_blank" rel="nofollow noopener noreferrer" translate="no"><span class="invisible">https://www.</span><span class="ellipsis">heise.de/blog/Microsoft-beerdi</span><span class="invisible">gt-TypeScript-und-erfindet-es-in-Go-neu-Warum-10317343.html</span></a> <a href="https://social.tchncs.de/tags/Microsoft" class="mention hashtag" rel="tag">#<span>Microsoft</span></a> <a href="https://social.tchncs.de/tags/TypeScript" class="mention hashtag" rel="tag">#<span>TypeScript</span></a> <a href="https://social.tchncs.de/tags/Compiler" class="mention hashtag" rel="tag">#<span>Compiler</span></a> <a href="https://social.tchncs.de/tags/Golang" class="mention hashtag" rel="tag">#<span>Golang</span></a></p>
Jan :rust: :ferris:<p>Red Green Syntax Trees - an Overview | by Will Speak (aka Plingdollar):</p><p><a href="https://willspeak.me/2021/11/24/red-green-syntax-trees-an-overview.html" rel="nofollow noopener noreferrer" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">willspeak.me/2021/11/24/red-gr</span><span class="invisible">een-syntax-trees-an-overview.html</span></a></p><p><a href="https://floss.social/tags/Parser" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Parser</span></a> <a href="https://floss.social/tags/Compiler" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Compiler</span></a> <a href="https://floss.social/tags/DataStructure" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>DataStructure</span></a></p>
Ayan Shafqat<p>My first GCC commit! 🎉</p><p>Although my first C compiler was Borland Turbo C, GCC has always offered a better programming experience. My journey with GCC started in the late '90s, back when Red Hat was a rad startup, The Matrix was blowing minds, and Rage Against the Machine was blasting through boombox.</p><p>After decades of using the GCC toolchain, I now find myself contributing to its codebase. Excited to share my first commit to the GCC project, adding a few intrinsic functions to arm_acle.h.</p><p>Huge thanks to everyone on the GCC team for their support!</p><p>🔗 <a href="https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=f4f7216c56fe2f67c72db5b7c4afa220725f3ed1" rel="nofollow noopener noreferrer" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">gcc.gnu.org/git/?p=gcc.git;a=c</span><span class="invisible">ommit;h=f4f7216c56fe2f67c72db5b7c4afa220725f3ed1</span></a></p><p><a href="https://hachyderm.io/tags/gcc" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>gcc</span></a> <a href="https://hachyderm.io/tags/compiler" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>compiler</span></a> <a href="https://hachyderm.io/tags/opensource" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>opensource</span></a> <a href="https://hachyderm.io/tags/aarch64" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>aarch64</span></a> <a href="https://hachyderm.io/tags/arm" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>arm</span></a></p>
Curated Hacker News<p>Show HN: Online Python Compiler with Libraries</p><p><a href="https://cliprun.com/online-python-compiler-with-libraries" rel="nofollow noopener noreferrer" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">cliprun.com/online-python-comp</span><span class="invisible">iler-with-libraries</span></a></p><p><a href="https://mastodon.social/tags/compiler" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>compiler</span></a> <a href="https://mastodon.social/tags/python" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>python</span></a></p>
Gea-Suan Lin<p>Python 3.14 的 tail-call interpreter 的效能提升來自於繞過 LLVM 的 regression bug</p><p>前幾天 Python 圈子蠻熱鬧的一個主題:「Performance of the Python 3.14 tail-call interpreter」。 Python 3.14 實作了 tail-call interpreter (是個 opt-in 參數),結果官方測試發現效能在 benchmark 時有巨大的提升 (9%~15%),但文章作者覺得不合理,交叉測試了許多 case 後發現這是因為 LLVM 的 regression bug 導致 computed gotos 比較慢,…</p><p><a href="https://blog.gslin.org/archives/2025/03/14/12304/python-3-14-%e7%9a%84-tail-call-interpreter-%e7%9a%84%e6%95%88%e8%83%bd%e6%8f%90%e5%8d%87%e4%be%86%e8%87%aa%e6%96%bc%e7%b9%9e%e9%81%8e-llvm-%e7%9a%84-regression-bug/" rel="nofollow noopener noreferrer" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">blog.gslin.org/archives/2025/0</span><span class="invisible">3/14/12304/python-3-14-%e7%9a%84-tail-call-interpreter-%e7%9a%84%e6%95%88%e8%83%bd%e6%8f%90%e5%8d%87%e4%be%86%e8%87%aa%e6%96%bc%e7%b9%9e%e9%81%8e-llvm-%e7%9a%84-regression-bug/</span></a></p><p><a href="https://abpe.org/tags/bug" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>bug</span></a> <a href="https://abpe.org/tags/call" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>call</span></a> <a href="https://abpe.org/tags/compiler" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>compiler</span></a> <a href="https://abpe.org/tags/computed" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>computed</span></a> <a href="https://abpe.org/tags/gotos" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>gotos</span></a> <a href="https://abpe.org/tags/interpreter" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>interpreter</span></a> <a href="https://abpe.org/tags/llvm" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>llvm</span></a> <a href="https://abpe.org/tags/performance" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>performance</span></a> <a href="https://abpe.org/tags/python" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>python</span></a> <a href="https://abpe.org/tags/python3" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>python3</span></a> <a href="https://abpe.org/tags/regression" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>regression</span></a> <a href="https://abpe.org/tags/speed" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>speed</span></a> <a href="https://abpe.org/tags/tail" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>tail</span></a> <a href="https://abpe.org/tags/TailCall" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>TailCall</span></a></p>