CINXE.COM

Golang Weekly Issue 548: April 2, 2025

<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>Golang Weekly Issue 548: April 2, 2025</title> <meta name="viewport" content="width=device-width, initial-scale=1" /> <link rel="stylesheet" href="/css/app.css"> <link rel="alternate" type="application/rss+xml" title="Golang Weekly" href="/rss/"> <link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600&display=swap" rel="stylesheet"> <link rel="shortcut icon" href="/favicon.png"> <meta name="facebook-domain-verification" content="lml32j8e8q00yrgpg4hs968ah31mxv" /> </head> <body class="go dom dom-go issues 548 issue go issue"> <header class="contained"> <nav> <div class="sitename" style="cursor: pointer" onclick="window.location.href='/'"><a href="/">Golang Weekly</a></div> <div class="items"> <a href="/issues" class="issues">Archives</a><span class="divider">|</span> <a href="/latest" class="latest">Latest</a><span class="nomobile"><span class="divider">|</span> <a href="/rss/">RSS</a></span> </div> </nav> </header> <main> <section class="contained"> <div class="nomobile"> <div class="subscribe_box" class=""> <form class="subscribe" action="/subscribe" method="POST"> <input type="email" placeholder="Want to subscribe? Enter your address here" class="email" name="yemail" id="email" /><button class="awesome" type="submit">Subscribe now &raquo;</button> <div class="smallprint">Easy to unsubscribe at any time. Your e-mail address <a href="https://cooperpress.com/spam.html">is safe</a> &mdash; here's <a href="https://cooperpress.com/legal/privacy/">our privacy policy.</a></div> <input type="hidden" name="_csrf" value="NGmhRdNQNIGdKdhHb-a8jtDUnzkZfEDq5ZpwqRlp-Mw" /> </form> </div> </div> <div class="pager"> <div class="prev"> <a href="/issues/547">&laquo; Prev</a> </div> <div class="center"> <!-- Issue 548 --> </div> <div class="next"> </div> </div> <div class="issue-html"> <!--[if (gte mso 9)|(IE)]> <table cellpadding="0" cellspacing="0" align="center" bgcolor="#ffffff" width="600"><tr><td valign="top" style="width: 600px;" bgcolor="#ffffff"><![endif]--> <table align="center" border="0" cellpadding="0" cellspacing="0" id="main" width="100%" style="table-layout: fixed; font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse; max-width: 600px; height: 100% !important; direction: ltr; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px;"> <tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse;"> <div id="content"> <!-- left/right splitbar --> <table class="el-splitbar" width="100%" cellpadding="0" cellspacing="0" style="border-collapse: collapse;"><tr> <td width="50%" align="left" style="padding-left: 4px; font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse;"><p style="font-size: 12px; color: #999999; text-transform: uppercase; line-height: 1.0em; margin-top: 0.8em; margin-bottom: 0.8em;">#​548 — April 2, 2025</p></td> <td width="50%" align="right" style="padding-right: 4px; font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse;"><p style="font-size: 12px; text-transform: uppercase; line-height: 1.0em; margin-top: 0.8em; margin-bottom: 0.8em;"><a target="_blank" href="https://golangweekly.com/link/167569/web" style="text-decoration: none; color: #0099b4;">Unsub</a>  |  <a target="_blank" href="https://golangweekly.com/link/167570/web" style="text-decoration: none; color: #0099b4;">Web Version</a></p></td> </tr></table> <table class="norss" id="together" width="100%" align="center" style="text-align: center; border-collapse: collapse; margin-top: 0; margin-right: 0; margin-bottom: 0; margin-left: 0;"> <tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse; margin-top: 0; margin-right: 0; margin-bottom: 0; margin-left: 0; padding-top: 0; padding-right: 0; padding-bottom: 0; padding-left: 0;"> <table align="center" style="margin-top: 4px; margin-bottom: 4px; border-collapse: collapse;"> <tr> <td style="vertical-align: middle; text-align: right; text-transform: uppercase; letter-spacing: -0.2px; font-weight: 500; color: #222; font-size: 0.9em; font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; line-height: 1.48em; border-collapse: collapse;">Together with </td> <td style="vertical-align: middle; text-align: left; font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse;"> <a target="_blank" href="https://golangweekly.com/link/167571/web" style="outline: none; text-decoration: none; color: #0099b4; border-top-width: 0; border-right-width: 0; border-bottom-width: 0; border-left-width: 0;"> <img src="https://res.cloudinary.com/cpress/image/upload/c_fill,g_auto,e_trim,w_820,h_100/e_make_transparent/co_white,e_outline:7/uq9yvkqtinkixhiq19mf.png" style="max-width: 160px; outline: none; height: auto; text-decoration: none; line-height: 100%; border-top-width: 0; border-right-width: 0; border-bottom-width: 0; border-left-width: 0;" width="160" alt="Blacksmith"> </a> </td> </tr> </table> </td></tr> </table> <table width="100%" cellpadding="0" cellspacing="0" style="border-collapse: collapse;"><tr><td style="height: 8px; font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse;"></td></tr></table> <!-- masthead --> <table width="100%" cellpadding="0" cellspacing="0" style="background-color: #6cd7f2; text-align: center; color: #003322; border-collapse: collapse;" class="el-masthead"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse; padding-top: 0; padding-right: 12px; padding-bottom: 0; padding-left: 12px;"><p style="font-size: 1.8em; font-weight: 600; line-height: 1.0em; margin-top: 0.8em; margin-bottom: 0.8em;">Go Weekly</p></td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" class="el-item item " style="border-collapse: collapse; margin-bottom: 5px;"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse; padding-top: 0px; padding-right: 15px; padding-bottom: 0px; padding-left: 15px;"> <p class="desc" style="color: #222; margin-top: 0.8em; margin-bottom: 0;"><span style="font-weight: 600; font-size: 1.2em !important; color: #000;" class="mainlink"><a target="_blank" href="https://golangweekly.com/link/167572/web" title="goperf.dev" style="text-decoration: none; color: #0099b4; border-bottom-width: 1px !important; border-bottom-color: #ddd !important; border-bottom-style: solid !important; font-size: 1.1em; line-height: 1.4em;">A Guide to Optimizing for High Performance in Go</a></span> — An in-progress collection of technical articles aimed at helping Go developers write faster, more efficient apps. The initial focus is on common patterns like <a target="_blank" href="https://golangweekly.com/link/167573/web" style="text-decoration: none; color: #0099b4; border-bottom-width: 1px !important; border-bottom-color: #ddd !important; border-bottom-style: solid !important;">object pooling</a>, <a target="_blank" href="https://golangweekly.com/link/167574/web" style="text-decoration: none; color: #0099b4; border-bottom-width: 1px !important; border-bottom-color: #ddd !important; border-bottom-style: solid !important;">struct field alignment</a>, and <a target="_blank" href="https://golangweekly.com/link/167575/web" style="text-decoration: none; color: #0099b4; border-bottom-width: 1px !important; border-bottom-color: #ddd !important; border-bottom-style: solid !important;">using worker pools</a>, with a guide to high-performance networking set to follow soon.</p> <p class="name" style="color: #5a5a5a; margin-top: 4px; margin-bottom: 0.8em; text-transform: uppercase; font-size: 12px; line-height: 1.2em;">Alexander Stavonin </p> </td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" class="el-item item " style="border-collapse: collapse; margin-bottom: 5px;"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse; padding-top: 0px; padding-right: 15px; padding-bottom: 0px; padding-left: 15px;"> <p class="desc" style="color: #222; margin-top: 0.8em; margin-bottom: 0;"><span style="font-weight: 600; font-size: 1.2em !important; color: #000;" class="mainlink"><a target="_blank" href="https://golangweekly.com/link/167576/web" title="go.dev" style="text-decoration: none; color: #0099b4; border-bottom-width: 1px !important; border-bottom-color: #ddd !important; border-bottom-style: solid !important; font-size: 1.05em;">Goodbye Core Types, Hello Go As We Know and Love It</a></span> — A look at Go’s evolving type system, revealing how the abstraction of <em>core types</em> (introduced with generics in Go 1.18) complicated otherwise straightforward language features, and how <a target="_blank" href="https://golangweekly.com/link/167577/web" style="text-decoration: none; color: #0099b4; border-bottom-width: 1px !important; border-bottom-color: #ddd !important; border-bottom-style: solid !important;">their removal in Go 1.25</a> is set to simplify both the spec and everyday coding. (Hacker News reactions <a target="_blank" href="https://golangweekly.com/link/167578/web" style="text-decoration: none; color: #0099b4; border-bottom-width: 1px !important; border-bottom-color: #ddd !important; border-bottom-style: solid !important;">here</a>.)</p> <p class="name" style="color: #5a5a5a; margin-top: 4px; margin-bottom: 0.8em; text-transform: uppercase; font-size: 12px; line-height: 1.2em;">Robert Griesemer (Go Core Team) </p> </td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" class="el-item item " style="border-collapse: collapse; margin-bottom: 5px;"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse; padding-top: 0px; padding-right: 15px; padding-bottom: 0px; padding-left: 15px;"> <a target="_blank" target="_blank" href="https://golangweekly.com/link/167571/web" style="text-decoration: none; color: #0099b4; border-bottom-width: 1px !important; border-bottom-color: #ddd !important; border-bottom-style: solid !important;"><img src="https://res.cloudinary.com/cpress/image/upload/c_limit,w_480,h_480,q_auto/copm/2f4c76ff.png" width="110" height="110" style="padding-top: 12px; padding-left: 12px; outline: none; height: auto; text-decoration: none; max-width: 100%; line-height: 100%; border-top-width: 0; border-right-width: 0; border-bottom-width: 0; border-left-width: 0;" align="right" alt="" class="som"></a> <p class="desc" style="color: #222; margin-top: 0.8em; margin-bottom: 0;"><span style="font-weight: 600; font-size: 1.2em !important; color: #000;" class="mainlink"><a target="_blank" href="https://golangweekly.com/link/167571/web" title="blacksmith.sh" style="text-decoration: none; color: #0099b4; border-bottom-width: 1px !important; border-bottom-color: #ddd !important; border-bottom-style: solid !important; font-size: 1.05em;">2X-40X Faster Docker Builds with Blacksmith</a></span> — With a one-line code change, Blacksmith can make your Docker builds incremental by mounting your Docker layer cache into your GitHub Actions runner. Blacksmith is used by 300+ companies like Ashby, Clerk, and Mintlify.</p> <p class="name" style="color: #5a5a5a; margin-top: 4px; margin-bottom: 0.8em; text-transform: uppercase; font-size: 12px; line-height: 1.2em;">Blacksmith <span style="text-transform: uppercase; margin-left: 4px; font-size: 0.9em; border-radius: 2px; background-color: #ffc; color: #885 !important; padding-top: 1px; padding-right: 4px; padding-bottom: 1px; padding-left: 4px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: #dd9; border-right-color: #dd9; border-bottom-color: #dd9; border-left-color: #dd9; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid;" class="tag-sponsor">sponsor</span></p> </td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" class="el-item item " style="border-collapse: collapse; margin-bottom: 5px;"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse; padding-top: 0px; padding-right: 15px; padding-bottom: 0px; padding-left: 15px;"> <p class="desc" style="color: #222; margin-top: 0.8em; margin-bottom: 0;"><span style="font-weight: 600; font-size: 1.2em !important; color: #000;" class="mainlink"><a target="_blank" href="https://golangweekly.com/link/167579/web" title="www.alexedwards.net" style="text-decoration: none; color: #0099b4; border-bottom-width: 1px !important; border-bottom-color: #ddd !important; border-bottom-style: solid !important; font-size: 1.05em;">When is it OK to Panic in Go?</a></span> — One of the <a target="_blank" href="https://golangweekly.com/link/167580/web" style="text-decoration: none; color: #0099b4; border-bottom-width: 1px !important; border-bottom-color: #ddd !important; border-bottom-style: solid !important;">Go proverbs</a> is “Don’t panic,” which isn’t just good life advice but also saying not to use <code>panic</code> for normal error handling. Alex explores <code>panic</code> and some times when you <em>should</em> use it.</p> <p class="name" style="color: #5a5a5a; margin-top: 4px; margin-bottom: 0.8em; text-transform: uppercase; font-size: 12px; line-height: 1.2em;">Alex Edwards </p> </td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" class="content el-md " style="border-collapse: collapse;"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse; padding-top: 0px; padding-right: 15px; padding-bottom: 0px; padding-left: 15px;"> <p style="margin-top: 0.6em; margin-bottom: 0.8em;"><strong style="font-weight: 600;">IN BRIEF:</strong></p> <ul> <li style="color: #222; line-height: 1.35em; margin-bottom: 12px; margin-left: 0px !important;"> <p style="margin-top: 0.6em; margin-bottom: 0.8em;"><a target="_blank" href="https://golangweekly.com/link/167581/web" style="text-decoration: none; color: #0099b4; font-weight: 500 !important; border-bottom-width: 1px; border-bottom-color: #ddd; border-bottom-style: solid;">Go 1.24.2</a> and 1.23.8 have been released including security fixes to <code>net/http</code>.</p> </li> <li style="color: #222; line-height: 1.35em; margin-bottom: 12px; margin-left: 0px !important;"> <p style="margin-top: 0.6em; margin-bottom: 0.8em;">Did you know the Go gopher, as designed by Renée French, is over 25 years old? 11 years ago, Rob Pike and Andrew Gerrand <a target="_blank" href="https://golangweekly.com/link/167582/web" style="text-decoration: none; color: #0099b4; font-weight: 500 !important; border-bottom-width: 1px; border-bottom-color: #ddd; border-bottom-style: solid;">told the story of Go's popular mascot</a> on the Go blog.</p> </li> <li style="color: #222; line-height: 1.35em; margin-bottom: 12px; margin-left: 0px !important;"> <p style="margin-top: 0.6em; margin-bottom: 0.8em;">📈 The <a target="_blank" href="https://golangweekly.com/link/167583/web" style="text-decoration: none; color: #0099b4; font-weight: 500 !important; border-bottom-width: 1px; border-bottom-color: #ddd; border-bottom-style: solid;">latest TIOBE index</a> of programming language popularity is out with Go moving up from 8th to 7th position.</p> </li> </ul> </td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" class="el-item item " style="border-collapse: collapse; margin-bottom: 5px;"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse; padding-top: 0px; padding-right: 15px; padding-bottom: 0px; padding-left: 15px;"> <p class="desc" style="color: #222; margin-top: 0.8em; margin-bottom: 0;"><span style="font-weight: 600; font-size: 1.2em !important; color: #000;" class="mainlink"><a target="_blank" href="https://golangweekly.com/link/167584/web" title="go.posthog.com" style="text-decoration: none; color: #0099b4; border-bottom-width: 1px !important; border-bottom-color: #ddd !important; border-bottom-style: solid !important; font-size: 1.05em;">The First Newsletter Dedicated to Product Engineers</a></span> — Learn strategies and tactics you need to succeed as a product engineer (and build products users love).</p> <p class="name" style="color: #5a5a5a; margin-top: 4px; margin-bottom: 0.8em; text-transform: uppercase; font-size: 12px; line-height: 1.2em;">PostHog <span style="text-transform: uppercase; margin-left: 4px; font-size: 0.9em; border-radius: 2px; background-color: #ffc; color: #885 !important; padding-top: 1px; padding-right: 4px; padding-bottom: 1px; padding-left: 4px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: #dd9; border-right-color: #dd9; border-bottom-color: #dd9; border-left-color: #dd9; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid;" class="tag-sponsor">sponsor</span></p> </td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" class="content el-md " style="border-collapse: collapse;"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse; padding-top: 0px; padding-right: 15px; padding-bottom: 0px; padding-left: 15px;"> <p style="margin-top: 0.6em; margin-bottom: 0.8em;">📺 <a target="_blank" href="https://golangweekly.com/link/167585/web" style="text-decoration: none; color: #0099b4; font-weight: 500 !important;">Go Concurrency from the Beginning</a> – A nifty 8 minute video quickly touring Go’s concurrency mechanisms using basic examples. <cite style="color: #444; text-transform: uppercase; font-size: 0.8em; font-style: normal; white-space: nowrap; line-height: 1.4em;">Living, Etc.</cite></p> <p style="margin-top: 0.8em; margin-bottom: 0.8em;">📄 <a target="_blank" href="https://golangweekly.com/link/167586/web" style="text-decoration: none; color: #0099b4; font-weight: 500 !important;">Building a Real-Time Notification System in Go with Postgres</a> <cite style="color: #444; text-transform: uppercase; font-size: 0.8em; font-style: normal; white-space: nowrap; line-height: 1.4em;">Ravi (Finly)</cite></p> <p style="margin-top: 0.8em; margin-bottom: 0.8em;">📄 <a target="_blank" href="https://golangweekly.com/link/167587/web" style="text-decoration: none; color: #0099b4; font-weight: 500 !important;">Interfacing with WebAssembly in Go</a> <cite style="color: #444; text-transform: uppercase; font-size: 0.8em; font-style: normal; white-space: nowrap; line-height: 1.4em;">David Desmarais-Michaud</cite></p> <p style="margin-top: 0.8em; margin-bottom: 0.8em;">📄 <a target="_blank" href="https://golangweekly.com/link/167588/web" style="text-decoration: none; color: #0099b4; font-weight: 500 !important;">Building a Network Vulnerability Scanner with Go</a> <cite style="color: #444; text-transform: uppercase; font-size: 0.8em; font-style: normal; white-space: nowrap; line-height: 1.4em;">Rez Moss (Sitepoint)</cite></p> <p style="margin-top: 0.8em; margin-bottom: 0.8em;">📄 <a target="_blank" href="https://golangweekly.com/link/167589/web" style="text-decoration: none; color: #0099b4; font-weight: 500 !important;">5 GitHub Actions Every Maintainer Needs to Know</a> <cite style="color: #444; text-transform: uppercase; font-size: 0.8em; font-style: normal; white-space: nowrap; line-height: 1.4em;">Finley and Davis (GitHub)</cite></p> </td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" class="el-heading" style="background-color: none !important; text-align: left; margin-top: 15px; color: #333333; border-collapse: collapse;"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse; padding-top: 0; padding-right: 0; padding-bottom: 0; padding-left: 0;"><p style="font-size: 1.6em !important; font-weight: 400 !important; text-transform: none !important; line-height: 1.4em; display: inline-block; border-bottom-width: 6px; border-bottom-color: #f4f4f4; border-bottom-style: solid; margin-top: 0.5em; margin-right: 0; margin-bottom: 0.5em; margin-left: 0;">🛠 Code &amp; Tools</p></td></tr></table> <table width="100%" class="el-fullwidthimage " cellpadding="0" cellspacing="0" style="border-collapse: collapse;"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse;"> <a target="_blank" href="https://golangweekly.com/link/167590/web" style="text-decoration: none; color: #0099b4;"><img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/nvevwakvvkh6vdq4w5wu.jpg" alt="" width="640" style="outline: none; height: auto; text-decoration: none; max-width: 100%; line-height: 100%; width: 100%; border-top-width: 0; border-right-width: 0; border-bottom-width: 0; border-left-width: 0;"></a> </td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" class="el-item item " style="border-collapse: collapse; margin-bottom: 5px;"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse; padding-top: 0px; padding-right: 15px; padding-bottom: 0px; padding-left: 15px;"> <p class="desc" style="color: #222; margin-top: 0.8em; margin-bottom: 0;"><span style="font-weight: 600; font-size: 1.2em !important; color: #000;" class="mainlink"><a target="_blank" href="https://golangweekly.com/link/167590/web" title="ls-lint.org" style="text-decoration: none; color: #0099b4; border-bottom-width: 1px !important; border-bottom-color: #ddd !important; border-bottom-style: solid !important; font-size: 1.05em;">Introducing ls-lint: A File Structure Linter</a></span> — Billing itself as an ‘extremely fast file and directory name linter’, ls-lint is a Go powered tool for enforcing some structure over a project’s filesystem and naming policies. <a target="_blank" href="https://golangweekly.com/link/167591/web" style="text-decoration: none; color: #0099b4; border-bottom-width: 1px !important; border-bottom-color: #ddd !important; border-bottom-style: solid !important;">GitHub repo.</a></p> <p class="name" style="color: #5a5a5a; margin-top: 4px; margin-bottom: 0.8em; text-transform: uppercase; font-size: 12px; line-height: 1.2em;">Lucas Löffel </p> </td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" class="el-item item " style="border-collapse: collapse; margin-bottom: 5px;"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse; padding-top: 0px; padding-right: 15px; padding-bottom: 0px; padding-left: 15px;"> <p class="desc" style="color: #222; margin-top: 0.8em; margin-bottom: 0;"><span style="font-weight: 600; font-size: 1.2em !important; color: #000;" class="mainlink"><a target="_blank" href="https://golangweekly.com/link/167592/web" title="github.com" style="text-decoration: none; color: #0099b4; border-bottom-width: 1px !important; border-bottom-color: #ddd !important; border-bottom-style: solid !important; font-size: 1.05em;">urfave/cli 3.1: A Declarative Way to Build Go CLI Apps</a></span> — The <a target="_blank" href="https://golangweekly.com/link/167593/web" style="text-decoration: none; color: #0099b4; border-bottom-width: 1px !important; border-bottom-color: #ddd !important; border-bottom-style: solid !important;">manual</a> outlines all of the key features, but think shell auto-completion, option parsing, help text, etc.</p> <p class="name" style="color: #5a5a5a; margin-top: 4px; margin-bottom: 0.8em; text-transform: uppercase; font-size: 12px; line-height: 1.2em;">Jeremy Saenz and Contributors </p> </td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" class="el-item item " style="border-collapse: collapse; margin-bottom: 5px;"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse; padding-top: 0px; padding-right: 15px; padding-bottom: 0px; padding-left: 15px;"> <p class="desc" style="color: #222; margin-top: 0.8em; margin-bottom: 0;"><span style="font-weight: 600; font-size: 1.2em !important; color: #000;" class="mainlink"><a target="_blank" href="https://golangweekly.com/link/167594/web" title="revive.run" style="text-decoration: none; color: #0099b4; border-bottom-width: 1px !important; border-bottom-color: #ddd !important; border-bottom-style: solid !important; font-size: 1.05em;">Revive 1.8: A Faster, Configurable, Flexible Linter for Go</a></span> — A drop-in replacement of golint that aims to provide a little more structure, configurability, and performance. It’s used by numerous large Go projects and libraries. The README on the <a target="_blank" href="https://golangweekly.com/link/167595/web" style="text-decoration: none; color: #0099b4; border-bottom-width: 1px !important; border-bottom-color: #ddd !important; border-bottom-style: solid !important;">GitHub repo</a> explains how it differs to <code>golint</code>.</p> <p class="name" style="color: #5a5a5a; margin-top: 4px; margin-bottom: 0.8em; text-transform: uppercase; font-size: 12px; line-height: 1.2em;">Minko Gechev </p> </td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" style="border-collapse: collapse;"><tr><td style="height: 12px; font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse;"></td></tr></table> <table width="100%" class="el-fullwidthimage " cellpadding="0" cellspacing="0" style="border-collapse: collapse;"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse;"> <a target="_blank" href="https://golangweekly.com/link/167596/web" style="text-decoration: none; color: #0099b4;"><img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/xlunhx4qypl7xtsq62sp.jpg" alt="" width="640" style="border-top-color: #dddddd; border-top-style: solid; border-bottom-color: #dddddd; border-bottom-style: solid; outline: none; height: auto; text-decoration: none; max-width: 100%; line-height: 100%; width: 100%; border-top-width: 3px; border-right-width: 0; border-bottom-width: 3px; border-left-width: 0;"></a> </td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" class="el-item item " style="border-collapse: collapse; margin-bottom: 5px;"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse; padding-top: 0px; padding-right: 15px; padding-bottom: 0px; padding-left: 15px;"> <p class="desc" style="color: #222; margin-top: 0.8em; margin-bottom: 0;"><span style="font-weight: 600; font-size: 1.2em !important; color: #000;" class="mainlink"><a target="_blank" href="https://golangweekly.com/link/167596/web" title="github.com" style="text-decoration: none; color: #0099b4; border-bottom-width: 1px !important; border-bottom-color: #ddd !important; border-bottom-style: solid !important; font-size: 1.05em;">asciigraph: ASCII Line Graph Rendering Library</a></span> — A longstanding library for rendering basic line graphs in ASCII text, such as at the terminal, all with no dependencies.</p> <p class="name" style="color: #5a5a5a; margin-top: 4px; margin-bottom: 0.8em; text-transform: uppercase; font-size: 12px; line-height: 1.2em;">Rohit Gupta </p> </td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" class="miniitem item " style="border-collapse: collapse;"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse; padding-top: 0px; padding-right: 15px; padding-bottom: 0px; padding-left: 15px;"> <p class="desc" style="color: #5a5a5a; line-height: 1.35em !important; margin-top: 8px; margin-right: 0px; margin-bottom: 6px; margin-left: 0px;"><span style="font-weight: 600; font-size: 1.0em; color: #000;"><a target="_blank" href="https://golangweekly.com/link/167597/web" style="text-decoration: none; color: #0099b4; font-size: 1.0em !important; font-weight: 500; border-bottom-width: 1px; border-bottom-color: #ddd; border-bottom-style: solid;">Prefixed UUIDs: A Package That Adds Type-Safe Prefixes to UUIDs</a></span> <br><span class="name" style="color: #5a5a5a; margin-top: 4px; text-transform: uppercase; font-size: 12px; line-height: 1.3em;">Khaja Minhajuddin</span> </p> </td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" class="content el-md releases flat" style="border-collapse: collapse;"><tr><td style="font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse; padding-top: 0px; padding-right: 15px; padding-bottom: 0px; padding-left: 15px;"> <ul style="padding-left: 0; margin-left: 0px; list-style-type: none; list-style-position: inside;"> <li style="color: #222; line-height: 1.35em; margin-bottom: 12px; margin-left: 0px !important;"> <p style="margin-top: 0.6em; margin-bottom: 0.8em;"><a target="_blank" href="https://golangweekly.com/link/167598/web" style="text-decoration: none; color: #0099b4; font-weight: 500 !important; border-bottom-width: 1px; border-bottom-color: #ddd; border-bottom-style: solid;">DoltgreSQL 1.51</a> – Version controlled Postgres-a-like with Git-like functionality.</p> </li> <li style="color: #222; line-height: 1.35em; margin-bottom: 12px; margin-left: 0px !important;"> <p style="margin-top: 0.6em; margin-bottom: 0.8em;"><a target="_blank" href="https://golangweekly.com/link/167599/web" style="text-decoration: none; color: #0099b4; font-weight: 500 !important; border-bottom-width: 1px; border-bottom-color: #ddd; border-bottom-style: solid;">Validator 10.26</a> – Value validations for structs and fields based on tags.</p> </li> <li style="color: #222; line-height: 1.35em; margin-bottom: 12px; margin-left: 0px !important;"> <p style="margin-top: 0.6em; margin-bottom: 0.8em;"><a target="_blank" href="https://golangweekly.com/link/167600/web" style="text-decoration: none; color: #0099b4; font-weight: 500 !important; border-bottom-width: 1px; border-bottom-color: #ddd; border-bottom-style: solid;">Buf 1.51</a> – Tool for working with Protocol Buffers.</p> </li> <li style="color: #222; line-height: 1.35em; margin-bottom: 12px; margin-left: 0px !important;"> <p style="margin-top: 0.6em; margin-bottom: 0.8em;"><a target="_blank" href="https://golangweekly.com/link/167601/web" style="text-decoration: none; color: #0099b4; font-weight: 500 !important; border-bottom-width: 1px; border-bottom-color: #ddd; border-bottom-style: solid;">Clickhouse Go 2.34</a> – Go driver for ClickHouse.</p> </li> <li style="color: #222; line-height: 1.35em; margin-bottom: 12px; margin-left: 0px !important;"> <p style="margin-top: 0.6em; margin-bottom: 0.8em;"><a target="_blank" href="https://golangweekly.com/link/167602/web" style="text-decoration: none; color: #0099b4; font-weight: 500 !important; border-bottom-width: 1px; border-bottom-color: #ddd; border-bottom-style: solid;">Colly 2.2</a> – Go scraper and crawler framework.</p> </li> </ul> </td></tr></table> <table width="100%" cellpadding="0" cellspacing="0" style="border-collapse: collapse;"><tr><td style="height: 18px; font-family: -apple-system,BlinkMacSystemFont,Helvetica,sans-serif; font-size: 15px; line-height: 1.48em; border-collapse: collapse;"></td></tr></table> </div> </td></tr> </table> <!--[if (gte mso 9)|(IE)]></td></tr></table><![endif]--> </div> <div class="pager"> <div class="prev"> <a href="/issues/547">&laquo; Prev</a> </div> <div class="center"> <!-- Issue 548 --> </div> <div class="next"> </div> </div> <div class="subscribe_box" class=""> <form class="subscribe" action="/subscribe" method="POST"> <input type="email" placeholder="Want to subscribe? Enter your address here" class="email" name="yemail" id="email" /><button class="awesome" type="submit">Subscribe now &raquo;</button> <div class="smallprint">Easy to unsubscribe at any time. Your e-mail address <a href="https://cooperpress.com/spam.html">is safe</a> &mdash; here's <a href="https://cooperpress.com/legal/privacy/">our privacy policy.</a></div> <input type="hidden" name="_csrf" value="NGmhRdNQNIGdKdhHb-a8jtDUnzkZfEDq5ZpwqRlp-Mw" /> </form> </div> </section> <img src="/open/548/web" /> </main> <script src="/js/app.js"></script> <script>(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)})(window,document,'script','//www.google-analytics.com/analytics.js','ga');ga('create','UA-32535004-16','golangweekly.com');ga('send', 'pageview'); </script> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10